@tipp/ui 2.10.0 → 2.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/app/index.js +8 -8
  2. package/dist/app/platform/edit-coaching-time.js +8 -8
  3. package/dist/app/platform/edit-service-type.js +8 -8
  4. package/dist/app/platform/goal-manage-card-edit.js +8 -8
  5. package/dist/app/platform/on-offline-radio-card.js +8 -8
  6. package/dist/app/platform/reservation-card.js +8 -8
  7. package/dist/app/platform/session-card.js +8 -8
  8. package/dist/app/roleplay/index.cjs +362 -428
  9. package/dist/app/roleplay/index.cjs.map +1 -1
  10. package/dist/app/roleplay/index.js +19 -18
  11. package/dist/app/roleplay/parts/content.cjs +281 -290
  12. package/dist/app/roleplay/parts/content.cjs.map +1 -1
  13. package/dist/app/roleplay/parts/content.js +15 -14
  14. package/dist/app/roleplay/parts/header.cjs +1 -1
  15. package/dist/app/roleplay/parts/header.cjs.map +1 -1
  16. package/dist/app/roleplay/parts/header.js +1 -1
  17. package/dist/app/roleplay/parts/score-summary.cjs +32 -46
  18. package/dist/app/roleplay/parts/score-summary.cjs.map +1 -1
  19. package/dist/app/roleplay/parts/score-summary.js +2 -1
  20. package/dist/app/roleplay/parts/score-trend-section.cjs +16 -15
  21. package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -1
  22. package/dist/app/roleplay/parts/score-trend-section.js +9 -10
  23. package/dist/app/roleplay/parts/script-transcript.cjs +29 -37
  24. package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -1
  25. package/dist/app/roleplay/parts/script-transcript.js +2 -1
  26. package/dist/app/roleplay/parts/section-nav.cjs +3 -2
  27. package/dist/app/roleplay/parts/section-nav.cjs.map +1 -1
  28. package/dist/app/roleplay/parts/section-nav.js +1 -1
  29. package/dist/app/roleplay/parts/session-replay-dialog.cjs +39 -47
  30. package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -1
  31. package/dist/app/roleplay/parts/session-replay-dialog.js +3 -2
  32. package/dist/app/roleplay/parts/speech-share-bar.cjs +2171 -0
  33. package/dist/app/roleplay/parts/speech-share-bar.cjs.map +1 -0
  34. package/dist/app/roleplay/parts/speech-share-bar.d.cts +9 -0
  35. package/dist/app/roleplay/parts/speech-share-bar.d.ts +9 -0
  36. package/dist/app/roleplay/parts/speech-share-bar.js +96 -0
  37. package/dist/app/roleplay/parts/speech-share-bar.js.map +1 -0
  38. package/dist/app/roleplay/parts/step-summary.cjs +2 -2
  39. package/dist/app/roleplay/parts/step-summary.cjs.map +1 -1
  40. package/dist/app/roleplay/parts/step-summary.js +1 -1
  41. package/dist/app/roleplay/rp-session-detail.cjs +362 -428
  42. package/dist/app/roleplay/rp-session-detail.cjs.map +1 -1
  43. package/dist/app/roleplay/rp-session-detail.js +19 -18
  44. package/dist/{chunk-6YIKOYBQ.js → chunk-2XDAK4B7.js} +5 -73
  45. package/dist/chunk-2XDAK4B7.js.map +1 -0
  46. package/dist/{chunk-U2EAXN3Y.js → chunk-A32HLL53.js} +4 -4
  47. package/dist/{chunk-3UGBMKSQ.js → chunk-AS3JVRQ3.js} +2 -2
  48. package/dist/{chunk-NKW6BO5R.js → chunk-DIISQDYA.js} +4 -3
  49. package/dist/chunk-DIISQDYA.js.map +1 -0
  50. package/dist/{chunk-N242VJOP.js → chunk-IIZ7I7NS.js} +5 -5
  51. package/dist/{chunk-2TOASXPK.js → chunk-MD64AUR6.js} +8 -8
  52. package/dist/chunk-MD64AUR6.js.map +1 -0
  53. package/dist/{chunk-LRNO4W2P.js → chunk-NSDVLCCW.js} +5 -5
  54. package/dist/{chunk-EHDUKUML.js → chunk-RNGEVYY5.js} +12 -72
  55. package/dist/chunk-RNGEVYY5.js.map +1 -0
  56. package/dist/{chunk-XM4GWPXC.js → chunk-RZW6FVML.js} +18 -12
  57. package/dist/chunk-RZW6FVML.js.map +1 -0
  58. package/dist/{chunk-T7LKMJVA.js → chunk-SZAU7YP3.js} +4 -4
  59. package/dist/{chunk-O332K3SW.js → chunk-UK3LP7VH.js} +2 -2
  60. package/dist/{chunk-QMAINJ4G.js → chunk-VM2PEQLQ.js} +2 -2
  61. package/dist/chunk-VM2PEQLQ.js.map +1 -0
  62. package/dist/chunk-W72CR2TG.js +71 -0
  63. package/dist/chunk-W72CR2TG.js.map +1 -0
  64. package/dist/{chunk-EBFQFOUQ.js → chunk-WVY3C64M.js} +3 -3
  65. package/dist/chunk-WVY3C64M.js.map +1 -0
  66. package/dist/{chunk-SOKGYD5B.js → chunk-YFR3HXSV.js} +2 -2
  67. package/dist/index.js +8 -8
  68. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +3 -3
  69. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +2 -2
  70. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +5 -5
  71. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +6 -6
  72. package/dist/molecules/curriculumV2/CurriculumContents/index.js +8 -8
  73. package/dist/molecules/curriculumV2/index.js +8 -8
  74. package/dist/molecules/index.js +8 -8
  75. package/package.json +1 -1
  76. package/src/app/roleplay/parts/content.tsx +3 -3
  77. package/src/app/roleplay/parts/header.tsx +1 -1
  78. package/src/app/roleplay/parts/score-summary.tsx +4 -57
  79. package/src/app/roleplay/parts/score-trend-section.tsx +19 -9
  80. package/src/app/roleplay/parts/script-transcript.tsx +9 -64
  81. package/src/app/roleplay/parts/section-nav.tsx +3 -2
  82. package/src/app/roleplay/parts/speech-share-bar.tsx +54 -0
  83. package/src/app/roleplay/parts/step-summary.tsx +2 -4
  84. package/dist/chunk-2TOASXPK.js.map +0 -1
  85. package/dist/chunk-6YIKOYBQ.js.map +0 -1
  86. package/dist/chunk-EBFQFOUQ.js.map +0 -1
  87. package/dist/chunk-EHDUKUML.js.map +0 -1
  88. package/dist/chunk-NKW6BO5R.js.map +0 -1
  89. package/dist/chunk-QMAINJ4G.js.map +0 -1
  90. package/dist/chunk-XM4GWPXC.js.map +0 -1
  91. /package/dist/{chunk-U2EAXN3Y.js.map → chunk-A32HLL53.js.map} +0 -0
  92. /package/dist/{chunk-3UGBMKSQ.js.map → chunk-AS3JVRQ3.js.map} +0 -0
  93. /package/dist/{chunk-N242VJOP.js.map → chunk-IIZ7I7NS.js.map} +0 -0
  94. /package/dist/{chunk-LRNO4W2P.js.map → chunk-NSDVLCCW.js.map} +0 -0
  95. /package/dist/{chunk-T7LKMJVA.js.map → chunk-SZAU7YP3.js.map} +0 -0
  96. /package/dist/{chunk-O332K3SW.js.map → chunk-UK3LP7VH.js.map} +0 -0
  97. /package/dist/{chunk-SOKGYD5B.js.map → chunk-YFR3HXSV.js.map} +0 -0
@@ -2920,9 +2920,11 @@ function CoachingPanel({ skills }) {
2920
2920
  )) }) });
2921
2921
  }
2922
2922
 
2923
- // src/app/roleplay/parts/score-summary.tsx
2923
+ // src/app/roleplay/parts/speech-share-bar.tsx
2924
2924
  var import_jsx_runtime63 = require("react/jsx-runtime");
2925
- function SpeechShareBar({ share }) {
2925
+ function SpeechShareBar({
2926
+ share
2927
+ }) {
2926
2928
  const isOvertalking = share.userPct > SPEECH_OVERTALK_THRESHOLD;
2927
2929
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes7.Box, { children: [
2928
2930
  /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { align: "center", justify: "between", mb: "1", children: [
@@ -2931,10 +2933,9 @@ function SpeechShareBar({ share }) {
2931
2933
  {
2932
2934
  as: "span",
2933
2935
  style: {
2934
- fontSize: "0.75rem",
2935
2936
  color: isOvertalking ? "var(--red-11)" : "var(--accent-11)"
2936
2937
  },
2937
- variant: "body",
2938
+ variant: "caption",
2938
2939
  weight: "medium",
2939
2940
  children: [
2940
2941
  "\uB0B4 \uBC1C\uD654\uB7C9 ",
@@ -2943,20 +2944,11 @@ function SpeechShareBar({ share }) {
2943
2944
  ]
2944
2945
  }
2945
2946
  ),
2946
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2947
- Typo,
2948
- {
2949
- as: "span",
2950
- color: "gray",
2951
- style: { fontSize: "0.75rem" },
2952
- variant: "body",
2953
- children: [
2954
- "\uC0C1\uB300 ",
2955
- share.partnerPct,
2956
- "%"
2957
- ]
2958
- }
2959
- )
2947
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Typo, { as: "span", color: "gray", variant: "caption", children: [
2948
+ "\uC0C1\uB300 ",
2949
+ share.partnerPct,
2950
+ "%"
2951
+ ] })
2960
2952
  ] }),
2961
2953
  /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2962
2954
  import_themes23.Flex,
@@ -2978,18 +2970,12 @@ function SpeechShareBar({ share }) {
2978
2970
  )
2979
2971
  }
2980
2972
  ),
2981
- isOvertalking ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2982
- Typo,
2983
- {
2984
- as: "p",
2985
- mt: "1",
2986
- style: { fontSize: "0.75rem", color: "var(--red-11)" },
2987
- variant: "body",
2988
- children: "\uC0C1\uB300\uC758 \uB9D0\uC744 \uB354 \uB4E3\uACE0 \uC9C8\uBB38\xB7\uACBD\uCCAD\uC758 \uBE44\uC911\uC744 \uB192\uC5EC \uBCF4\uC138\uC694"
2989
- }
2990
- ) : null
2973
+ isOvertalking ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "p", color: "red", mt: "1", variant: "caption", children: "\uC0C1\uB300\uC758 \uB9D0\uC744 \uB354 \uB4E3\uACE0 \uC9C8\uBB38\xB7\uACBD\uCCAD\uC758 \uBE44\uC911\uC744 \uB192\uC5EC \uBCF4\uC138\uC694" }) : null
2991
2974
  ] });
2992
2975
  }
2976
+
2977
+ // src/app/roleplay/parts/score-summary.tsx
2978
+ var import_jsx_runtime64 = require("react/jsx-runtime");
2993
2979
  function ScoreSummary({
2994
2980
  detail,
2995
2981
  report,
@@ -2998,18 +2984,18 @@ function ScoreSummary({
2998
2984
  var _a;
2999
2985
  const scoreValue = (_a = detail.totalScore) != null ? _a : report.totalScore;
3000
2986
  const comment = report.comment;
3001
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2987
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
3002
2988
  import_themes24.Grid,
3003
2989
  {
3004
2990
  align: "start",
3005
2991
  columns: comment ? { initial: "1", md: "minmax(0, 240px) 1fr" } : "1",
3006
2992
  gap: "5",
3007
2993
  children: [
3008
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Card, { variant: "surface", children: [
3009
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { align: "center", direction: "column", gap: "2", py: "3", children: [
3010
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uC885\uD569 \uC810\uC218" }),
3011
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { align: "baseline", gap: "1", children: [
3012
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2994
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Card, { variant: "surface", children: [
2995
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_themes23.Flex, { align: "center", direction: "column", gap: "2", py: "3", children: [
2996
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uC885\uD569 \uC810\uC218" }),
2997
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_themes23.Flex, { align: "baseline", gap: "1", children: [
2998
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3013
2999
  Typo,
3014
3000
  {
3015
3001
  as: "span",
@@ -3023,18 +3009,18 @@ function ScoreSummary({
3023
3009
  children: scoreValue != null ? scoreValue : "\u2014"
3024
3010
  }
3025
3011
  ),
3026
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "span", color: "gray", mono: true, variant: "subtitle", children: "/100" })
3012
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Typo, { as: "span", color: "gray", mono: true, variant: "subtitle", children: "/100" })
3027
3013
  ] })
3028
3014
  ] }),
3029
- speechShare ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
3030
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_themes40.Separator, { my: "3", size: "4" }),
3031
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SpeechShareBar, { share: speechShare })
3015
+ speechShare ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
3016
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_themes40.Separator, { my: "3", size: "4" }),
3017
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SpeechShareBar, { share: speechShare })
3032
3018
  ] }) : null
3033
3019
  ] }),
3034
- comment ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
3035
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: "\uC885\uD569 \uBD84\uC11D" }),
3036
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_themes7.Box, { style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "p", variant: "body", children: comment }) }),
3037
- report.deduction ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
3020
+ comment ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
3021
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: "\uC885\uD569 \uBD84\uC11D" }),
3022
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_themes7.Box, { style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Typo, { as: "p", variant: "body", children: comment }) }),
3023
+ report.deduction ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
3038
3024
  import_themes7.Box,
3039
3025
  {
3040
3026
  pl: "3",
@@ -3046,12 +3032,12 @@ function ScoreSummary({
3046
3032
  borderRadius: "var(--radius-2)"
3047
3033
  },
3048
3034
  children: [
3049
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
3035
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
3050
3036
  Typo,
3051
3037
  {
3052
3038
  as: "p",
3039
+ color: "amber",
3053
3040
  mono: true,
3054
- style: { color: "var(--amber-11)" },
3055
3041
  variant: "body",
3056
3042
  weight: "medium",
3057
3043
  children: [
@@ -3061,11 +3047,11 @@ function ScoreSummary({
3061
3047
  ]
3062
3048
  }
3063
3049
  ),
3064
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
3050
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3065
3051
  Typo,
3066
3052
  {
3067
3053
  as: "p",
3068
- style: { color: "var(--amber-11)" },
3054
+ color: "amber",
3069
3055
  variant: "body",
3070
3056
  children: report.deduction.basis
3071
3057
  }
@@ -3081,6 +3067,7 @@ function ScoreSummary({
3081
3067
 
3082
3068
  // src/app/roleplay/parts/score-trend-section.tsx
3083
3069
  var import_react68 = require("react");
3070
+ var import_date_fns4 = require("date-fns");
3084
3071
 
3085
3072
  // src/molecules/expand-table/index.tsx
3086
3073
  var import_react_table2 = require("@tanstack/react-table");
@@ -3090,7 +3077,7 @@ var import_themes53 = require("@radix-ui/themes");
3090
3077
  // src/molecules/expand-table/row.tsx
3091
3078
  var import_react_table = require("@tanstack/react-table");
3092
3079
  var import_react41 = require("react");
3093
- var import_jsx_runtime64 = require("react/jsx-runtime");
3080
+ var import_jsx_runtime65 = require("react/jsx-runtime");
3094
3081
  function Row(props) {
3095
3082
  const { row, ExpandComp, gridTemplateColumns, getRowStyle, getCellStyle } = props;
3096
3083
  const [open, setOpen] = (0, import_react41.useState)(false);
@@ -3109,8 +3096,8 @@ function Row(props) {
3109
3096
  }
3110
3097
  return baseCls.join(" ");
3111
3098
  }, [ExpandComp, props.onRowClick]);
3112
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: rowClassName, children: [
3113
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3099
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: rowClassName, children: [
3100
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3114
3101
  "button",
3115
3102
  {
3116
3103
  className: "tr",
@@ -3123,7 +3110,7 @@ function Row(props) {
3123
3110
  var _a, _b, _c;
3124
3111
  const autoSize = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.autoSize;
3125
3112
  const justifyContent = ((_b = cell.column.columnDef.meta) == null ? void 0 : _b.align) || props.defaultAlign;
3126
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
3113
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
3127
3114
  "div",
3128
3115
  {
3129
3116
  className: "td",
@@ -3134,7 +3121,7 @@ function Row(props) {
3134
3121
  }, (getCellStyle == null ? void 0 : getCellStyle(row.original)) || {}),
3135
3122
  children: [
3136
3123
  (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()),
3137
- ((_c = cell.column.columnDef.meta) == null ? void 0 : _c.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3124
+ ((_c = cell.column.columnDef.meta) == null ? void 0 : _c.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3138
3125
  cell.column.columnDef.meta.OpenBtn,
3139
3126
  {
3140
3127
  data: row.original,
@@ -3150,12 +3137,12 @@ function Row(props) {
3150
3137
  },
3151
3138
  `tr_${row.id}`
3152
3139
  ),
3153
- ExpandComp ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Collapse, { open, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "expand-comp-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ExpandComp, { row }) }) }) : null
3140
+ ExpandComp ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Collapse, { open, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "expand-comp-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ExpandComp, { row }) }) }) : null
3154
3141
  ] }, `tr-wrapper_${row.id}`);
3155
3142
  }
3156
3143
 
3157
3144
  // src/molecules/expand-table/index.tsx
3158
- var import_jsx_runtime65 = require("react/jsx-runtime");
3145
+ var import_jsx_runtime66 = require("react/jsx-runtime");
3159
3146
  var sortButtonColorMapper = {
3160
3147
  card: {
3161
3148
  selected: "var(--iris-10)",
@@ -3236,7 +3223,7 @@ function ExpandTable(props) {
3236
3223
  const helpCompRender = (0, import_react42.useCallback)(
3237
3224
  (rowLength) => {
3238
3225
  if (isLoading) {
3239
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3226
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3240
3227
  import_themes23.Flex,
3241
3228
  {
3242
3229
  align: "center",
@@ -3244,12 +3231,12 @@ function ExpandTable(props) {
3244
3231
  justify: "center",
3245
3232
  p: "5",
3246
3233
  width: "100%",
3247
- children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes50.Spinner, {})
3234
+ children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_themes50.Spinner, {})
3248
3235
  }
3249
3236
  );
3250
3237
  }
3251
3238
  if (rowLength === 0) {
3252
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "tr", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes23.Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder");
3239
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "tr", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_themes23.Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder");
3253
3240
  }
3254
3241
  return null;
3255
3242
  },
@@ -3259,9 +3246,9 @@ function ExpandTable(props) {
3259
3246
  if (!data) return 0;
3260
3247
  return Math.ceil(data.length / pageSize);
3261
3248
  }, [data, pageSize]);
3262
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: `expand-table-wrapper ${variant}${slim ? " slim" : ""}`, children: [
3263
- /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "expand-table", style: tableStyle, children: [
3264
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3249
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `expand-table-wrapper ${variant}${slim ? " slim" : ""}`, children: [
3250
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "expand-table", style: tableStyle, children: [
3251
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3265
3252
  "div",
3266
3253
  {
3267
3254
  className: "tr",
@@ -3272,36 +3259,36 @@ function ExpandTable(props) {
3272
3259
  const sortedState = header.column.getIsSorted();
3273
3260
  const justifyContent = ((_a = header.column.columnDef.meta) == null ? void 0 : _a.align) || defaultAlign;
3274
3261
  if (sortable) {
3275
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
3262
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
3276
3263
  "button",
3277
3264
  {
3278
3265
  onClick: header.column.getToggleSortingHandler(),
3279
3266
  style: { cursor: "pointer" },
3280
3267
  type: "button",
3281
3268
  children: [
3282
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Typo, { as: "div", variant: "body", children: (0, import_react_table2.flexRender)(
3269
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Typo, { as: "div", variant: "body", children: (0, import_react_table2.flexRender)(
3283
3270
  header.column.columnDef.header,
3284
3271
  header.getContext()
3285
3272
  ) }),
3286
- /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
3273
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
3287
3274
  import_themes23.Flex,
3288
3275
  {
3289
3276
  direction: "column",
3290
3277
  style: { marginLeft: "var(--space-2)" },
3291
3278
  children: [
3292
- sortedState === false && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3279
+ sortedState === false && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3293
3280
  TriangleArrowDownIcon,
3294
3281
  {
3295
3282
  color: sortButtonColorMapper[variant].unselected
3296
3283
  }
3297
3284
  ),
3298
- sortedState === "asc" && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3285
+ sortedState === "asc" && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3299
3286
  TriangleArrowUpIcon,
3300
3287
  {
3301
3288
  color: sortButtonColorMapper[variant].selected
3302
3289
  }
3303
3290
  ),
3304
- sortedState === "desc" && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3291
+ sortedState === "desc" && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3305
3292
  TriangleArrowDownIcon,
3306
3293
  {
3307
3294
  color: sortButtonColorMapper[variant].selected
@@ -3314,7 +3301,7 @@ function ExpandTable(props) {
3314
3301
  }
3315
3302
  ) }, header.id);
3316
3303
  }
3317
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Typo, { as: "div", variant: "body", children: (0, import_react_table2.flexRender)(
3304
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Typo, { as: "div", variant: "body", children: (0, import_react_table2.flexRender)(
3318
3305
  header.column.columnDef.header,
3319
3306
  header.getContext()
3320
3307
  ) }) }, header.id);
@@ -3322,8 +3309,8 @@ function ExpandTable(props) {
3322
3309
  },
3323
3310
  headerGroup.id
3324
3311
  )) }),
3325
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes53.ScrollArea, { className: "tbody", children: helpCompRender(rowModels.rows.length) || rowModels.rows.map((row) => {
3326
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3312
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_themes53.ScrollArea, { className: "tbody", children: helpCompRender(rowModels.rows.length) || rowModels.rows.map((row) => {
3313
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3327
3314
  Row,
3328
3315
  {
3329
3316
  ExpandComp,
@@ -3338,7 +3325,7 @@ function ExpandTable(props) {
3338
3325
  );
3339
3326
  }) })
3340
3327
  ] }),
3341
- showPagination ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes23.Flex, { justify: "end", pt: "4", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
3328
+ showPagination ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_themes23.Flex, { justify: "end", pt: "4", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
3342
3329
  Pagination,
3343
3330
  {
3344
3331
  count: pageCount,
@@ -3351,13 +3338,13 @@ function ExpandTable(props) {
3351
3338
  }
3352
3339
 
3353
3340
  // src/molecules/navigation.tsx
3354
- var import_jsx_runtime66 = require("react/jsx-runtime");
3341
+ var import_jsx_runtime67 = require("react/jsx-runtime");
3355
3342
 
3356
3343
  // src/molecules/date-picker/index.tsx
3357
3344
  var import_react43 = require("react");
3358
3345
  var import_react_datepicker = __toESM(require("react-datepicker"), 1);
3359
3346
  var import_locale = require("date-fns/locale");
3360
- var import_jsx_runtime67 = require("react/jsx-runtime");
3347
+ var import_jsx_runtime68 = require("react/jsx-runtime");
3361
3348
  var DatePicker = (0, import_react43.forwardRef)(
3362
3349
  (props, ref) => {
3363
3350
  const _a = props, { fullWidth } = _a, rest = __objRest(_a, ["fullWidth"]);
@@ -3388,7 +3375,7 @@ var DatePicker = (0, import_react43.forwardRef)(
3388
3375
  setIsMonthDropdownOpen
3389
3376
  }));
3390
3377
  }, [isMonthDropdownOpen, isYearDropdownOpen, props]);
3391
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_themes23.Flex, { p: "0", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3378
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_themes23.Flex, { p: "0", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3392
3379
  import_react_datepicker.default,
3393
3380
  __spreadProps(__spreadValues({
3394
3381
  dateFormat: "yyyy/MM/dd h:mm aa",
@@ -3436,19 +3423,19 @@ function DropdownSelector({
3436
3423
  });
3437
3424
  }
3438
3425
  }, [isOpen]);
3439
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Popover.Root, { modal: true, onOpenChange, open: isOpen, children: [
3440
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Button, { className: "react-datepicker_dropdown_header", variant: "ghost", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Heading2, { variant: "heading4", weight: "regular", children: [
3426
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Popover.Root, { modal: true, onOpenChange, open: isOpen, children: [
3427
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Button, { className: "react-datepicker_dropdown_header", variant: "ghost", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Heading2, { variant: "heading4", weight: "regular", children: [
3441
3428
  selectedValue,
3442
3429
  suffix
3443
3430
  ] }) }) }),
3444
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Popover.Content, { side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3431
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Popover.Content, { side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3445
3432
  import_themes7.Box,
3446
3433
  {
3447
3434
  maxHeight: "200px",
3448
3435
  overflowY: "auto",
3449
3436
  ref: scrollContainerRef,
3450
3437
  style: { scrollbarWidth: "none" },
3451
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_themes23.Flex, { direction: "column", gap: "1", children: options.map((item) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3438
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_themes23.Flex, { direction: "column", gap: "1", children: options.map((item) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3452
3439
  Button,
3453
3440
  {
3454
3441
  className: "react-datepicker_dropdown_item",
@@ -3462,7 +3449,7 @@ function DropdownSelector({
3462
3449
  e.preventDefault();
3463
3450
  },
3464
3451
  variant: "transparent",
3465
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Typo, { weight: item === selectedValue ? "bold" : void 0, children: [
3452
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Typo, { weight: item === selectedValue ? "bold" : void 0, children: [
3466
3453
  item,
3467
3454
  suffix
3468
3455
  ] })
@@ -3493,8 +3480,8 @@ var getRenderCustomHeader = (props) => {
3493
3480
  } = props;
3494
3481
  const year = date ? new Date(date).getFullYear() : "-";
3495
3482
  const month = date ? new Date(date).getMonth() + 1 : "-";
3496
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_themes23.Flex, { align: "center", justify: "between", pl: "2", pr: "2", children: [
3497
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3483
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_themes23.Flex, { align: "center", justify: "between", pl: "2", pr: "2", children: [
3484
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3498
3485
  IconButton,
3499
3486
  {
3500
3487
  className: "react-datepicker_dropdown_header",
@@ -3502,11 +3489,11 @@ var getRenderCustomHeader = (props) => {
3502
3489
  onClick: decreaseMonth,
3503
3490
  type: "button",
3504
3491
  variant: "ghost",
3505
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_icons2.ChevronLeftIcon, {})
3492
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_icons2.ChevronLeftIcon, {})
3506
3493
  }
3507
3494
  ),
3508
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_themes23.Flex, { gap: "3", children: [
3509
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3495
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_themes23.Flex, { gap: "3", children: [
3496
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3510
3497
  DropdownSelector,
3511
3498
  {
3512
3499
  isOpen: isYearDropdownOpen,
@@ -3520,7 +3507,7 @@ var getRenderCustomHeader = (props) => {
3520
3507
  suffix: "\uB144"
3521
3508
  }
3522
3509
  ),
3523
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3510
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3524
3511
  DropdownSelector,
3525
3512
  {
3526
3513
  isOpen: isMonthDropdownOpen,
@@ -3535,7 +3522,7 @@ var getRenderCustomHeader = (props) => {
3535
3522
  }
3536
3523
  )
3537
3524
  ] }),
3538
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3525
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
3539
3526
  IconButton,
3540
3527
  {
3541
3528
  className: "react-datepicker_dropdown_header",
@@ -3543,7 +3530,7 @@ var getRenderCustomHeader = (props) => {
3543
3530
  onClick: increaseMonth,
3544
3531
  type: "button",
3545
3532
  variant: "ghost",
3546
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_icons2.ChevronRightIcon, {})
3533
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_icons2.ChevronRightIcon, {})
3547
3534
  }
3548
3535
  )
3549
3536
  ] });
@@ -3554,12 +3541,12 @@ var getRenderCustomHeader = (props) => {
3554
3541
  // src/molecules/dot-navigation.tsx
3555
3542
  var import_react44 = require("react");
3556
3543
  var import_react_icons3 = require("@radix-ui/react-icons");
3557
- var import_jsx_runtime68 = require("react/jsx-runtime");
3544
+ var import_jsx_runtime69 = require("react/jsx-runtime");
3558
3545
 
3559
3546
  // src/molecules/stepper.tsx
3560
3547
  var import_react45 = require("react");
3561
3548
  var import_themes54 = require("@radix-ui/themes");
3562
- var import_jsx_runtime69 = require("react/jsx-runtime");
3549
+ var import_jsx_runtime70 = require("react/jsx-runtime");
3563
3550
  var StepContext = (0, import_react45.createContext)({
3564
3551
  active: false,
3565
3552
  completed: false,
@@ -3569,20 +3556,20 @@ var StepContext = (0, import_react45.createContext)({
3569
3556
  // src/molecules/tag-selector.tsx
3570
3557
  var import_react46 = require("react");
3571
3558
  var import_react_icons4 = require("@radix-ui/react-icons");
3572
- var import_jsx_runtime70 = require("react/jsx-runtime");
3559
+ var import_jsx_runtime71 = require("react/jsx-runtime");
3573
3560
 
3574
3561
  // src/molecules/learning-post.tsx
3575
- var import_jsx_runtime71 = require("react/jsx-runtime");
3562
+ var import_jsx_runtime72 = require("react/jsx-runtime");
3576
3563
 
3577
3564
  // src/molecules/force-refresh.tsx
3578
3565
  var import_react_icons5 = require("@radix-ui/react-icons");
3579
- var import_jsx_runtime72 = require("react/jsx-runtime");
3566
+ var import_jsx_runtime73 = require("react/jsx-runtime");
3580
3567
 
3581
3568
  // src/molecules/date-picker/date-picker-button.tsx
3582
3569
  var import_react47 = require("react");
3583
3570
  var import_date_fns2 = require("date-fns");
3584
3571
  var import_clsx29 = require("clsx");
3585
- var import_jsx_runtime73 = require("react/jsx-runtime");
3572
+ var import_jsx_runtime74 = require("react/jsx-runtime");
3586
3573
 
3587
3574
  // src/molecules/time-select.tsx
3588
3575
  var import_react48 = require("react");
@@ -3609,34 +3596,34 @@ for (const opt of AI_CALLOUT_ICON_OPTIONS) {
3609
3596
  }
3610
3597
 
3611
3598
  // src/molecules/time-select.tsx
3612
- var import_jsx_runtime74 = require("react/jsx-runtime");
3599
+ var import_jsx_runtime75 = require("react/jsx-runtime");
3613
3600
 
3614
3601
  // src/molecules/radio-button-card.tsx
3615
3602
  var import_react49 = require("react");
3616
- var import_jsx_runtime75 = require("react/jsx-runtime");
3603
+ var import_jsx_runtime76 = require("react/jsx-runtime");
3617
3604
  var RadioCardContext = (0, import_react49.createContext)({});
3618
3605
 
3619
3606
  // src/molecules/download-card.tsx
3620
3607
  var import_react_icons6 = require("@radix-ui/react-icons");
3621
- var import_jsx_runtime76 = require("react/jsx-runtime");
3608
+ var import_jsx_runtime77 = require("react/jsx-runtime");
3622
3609
 
3623
3610
  // src/molecules/ghost-post.tsx
3624
- var import_jsx_runtime77 = require("react/jsx-runtime");
3611
+ var import_jsx_runtime78 = require("react/jsx-runtime");
3625
3612
 
3626
3613
  // src/molecules/curriculumV2/curriculum-context.tsx
3627
3614
  var import_react50 = require("react");
3628
- var import_jsx_runtime78 = require("react/jsx-runtime");
3615
+ var import_jsx_runtime79 = require("react/jsx-runtime");
3629
3616
  var CurriculumContext = (0, import_react50.createContext)(
3630
3617
  void 0
3631
3618
  );
3632
3619
 
3633
3620
  // src/molecules/curriculumV2/curriculum-sub-nav.tsx
3634
3621
  var import_react51 = require("react");
3635
- var import_jsx_runtime79 = require("react/jsx-runtime");
3622
+ var import_jsx_runtime80 = require("react/jsx-runtime");
3636
3623
 
3637
3624
  // src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx
3638
3625
  var import_react52 = require("react");
3639
- var import_jsx_runtime80 = require("react/jsx-runtime");
3626
+ var import_jsx_runtime81 = require("react/jsx-runtime");
3640
3627
 
3641
3628
  // src/molecules/curriculumV2/CurriculumContents/curriculum-review.tsx
3642
3629
  var import_react55 = require("react");
@@ -3647,88 +3634,88 @@ var import_react53 = require("react");
3647
3634
  var import_formik = require("formik");
3648
3635
  var import_lodash_es = require("lodash-es");
3649
3636
  var Yup = __toESM(require("yup"), 1);
3650
- var import_jsx_runtime81 = require("react/jsx-runtime");
3637
+ var import_jsx_runtime82 = require("react/jsx-runtime");
3651
3638
  var CurriculumReviewContext = (0, import_react53.createContext)(void 0);
3652
3639
 
3653
3640
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.tsx
3654
- var import_jsx_runtime82 = require("react/jsx-runtime");
3641
+ var import_jsx_runtime83 = require("react/jsx-runtime");
3655
3642
 
3656
3643
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.tsx
3657
- var import_jsx_runtime83 = require("react/jsx-runtime");
3644
+ var import_jsx_runtime84 = require("react/jsx-runtime");
3658
3645
 
3659
3646
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.tsx
3660
- var import_jsx_runtime84 = require("react/jsx-runtime");
3647
+ var import_jsx_runtime85 = require("react/jsx-runtime");
3661
3648
 
3662
3649
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.tsx
3663
- var import_jsx_runtime85 = require("react/jsx-runtime");
3650
+ var import_jsx_runtime86 = require("react/jsx-runtime");
3664
3651
 
3665
3652
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.tsx
3666
- var import_jsx_runtime86 = require("react/jsx-runtime");
3653
+ var import_jsx_runtime87 = require("react/jsx-runtime");
3667
3654
 
3668
3655
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.tsx
3669
3656
  var import_react54 = require("react");
3670
3657
 
3671
3658
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.tsx
3672
- var import_jsx_runtime87 = require("react/jsx-runtime");
3659
+ var import_jsx_runtime88 = require("react/jsx-runtime");
3673
3660
 
3674
3661
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.tsx
3675
- var import_jsx_runtime88 = require("react/jsx-runtime");
3662
+ var import_jsx_runtime89 = require("react/jsx-runtime");
3676
3663
 
3677
3664
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.tsx
3678
- var import_jsx_runtime89 = require("react/jsx-runtime");
3665
+ var import_jsx_runtime90 = require("react/jsx-runtime");
3679
3666
 
3680
3667
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.tsx
3681
- var import_jsx_runtime90 = require("react/jsx-runtime");
3668
+ var import_jsx_runtime91 = require("react/jsx-runtime");
3682
3669
 
3683
3670
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.tsx
3684
- var import_jsx_runtime91 = require("react/jsx-runtime");
3671
+ var import_jsx_runtime92 = require("react/jsx-runtime");
3685
3672
 
3686
3673
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.tsx
3687
- var import_jsx_runtime92 = require("react/jsx-runtime");
3674
+ var import_jsx_runtime93 = require("react/jsx-runtime");
3688
3675
 
3689
3676
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.tsx
3690
- var import_jsx_runtime93 = require("react/jsx-runtime");
3677
+ var import_jsx_runtime94 = require("react/jsx-runtime");
3691
3678
 
3692
3679
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.tsx
3693
- var import_jsx_runtime94 = require("react/jsx-runtime");
3680
+ var import_jsx_runtime95 = require("react/jsx-runtime");
3694
3681
 
3695
3682
  // src/molecules/curriculumV2/CurriculumContents/curriculum-review.tsx
3696
- var import_jsx_runtime95 = require("react/jsx-runtime");
3683
+ var import_jsx_runtime96 = require("react/jsx-runtime");
3697
3684
 
3698
3685
  // src/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.tsx
3699
3686
  var import_react56 = require("react");
3700
- var import_jsx_runtime96 = require("react/jsx-runtime");
3687
+ var import_jsx_runtime97 = require("react/jsx-runtime");
3701
3688
 
3702
3689
  // src/molecules/curriculumV2/CurriculumContents/curriculum-file-download.tsx
3703
3690
  var import_react57 = require("react");
3704
- var import_jsx_runtime97 = require("react/jsx-runtime");
3691
+ var import_jsx_runtime98 = require("react/jsx-runtime");
3705
3692
 
3706
3693
  // src/molecules/curriculumV2/CurriculumContents/index.tsx
3707
- var import_jsx_runtime98 = require("react/jsx-runtime");
3694
+ var import_jsx_runtime99 = require("react/jsx-runtime");
3708
3695
 
3709
3696
  // src/molecules/curriculumV2/CurriculumSidebar/index.tsx
3710
3697
  var import_react58 = require("react");
3711
3698
 
3712
3699
  // src/molecules/curriculumV2/CurriculumSidebar/Items/section-title.tsx
3713
- var import_jsx_runtime99 = require("react/jsx-runtime");
3700
+ var import_jsx_runtime100 = require("react/jsx-runtime");
3714
3701
 
3715
3702
  // src/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-sidebar-item-wrapper.tsx
3716
- var import_jsx_runtime100 = require("react/jsx-runtime");
3703
+ var import_jsx_runtime101 = require("react/jsx-runtime");
3717
3704
 
3718
3705
  // src/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.tsx
3719
- var import_jsx_runtime101 = require("react/jsx-runtime");
3706
+ var import_jsx_runtime102 = require("react/jsx-runtime");
3720
3707
 
3721
3708
  // src/molecules/curriculumV2/CurriculumSidebar/Items/section-item.tsx
3722
- var import_jsx_runtime102 = require("react/jsx-runtime");
3709
+ var import_jsx_runtime103 = require("react/jsx-runtime");
3723
3710
 
3724
3711
  // src/molecules/curriculumV2/CurriculumSidebar/sidebar-item.tsx
3725
- var import_jsx_runtime103 = require("react/jsx-runtime");
3712
+ var import_jsx_runtime104 = require("react/jsx-runtime");
3726
3713
 
3727
3714
  // src/molecules/curriculumV2/CurriculumSidebar/index.tsx
3728
- var import_jsx_runtime104 = require("react/jsx-runtime");
3715
+ var import_jsx_runtime105 = require("react/jsx-runtime");
3729
3716
 
3730
3717
  // src/molecules/curriculumV2/curriculum-v2-layout.tsx
3731
- var import_jsx_runtime105 = require("react/jsx-runtime");
3718
+ var import_jsx_runtime106 = require("react/jsx-runtime");
3732
3719
 
3733
3720
  // src/molecules/dynamic-form.tsx
3734
3721
  var import_react60 = require("react");
@@ -3738,26 +3725,26 @@ var import_themes55 = require("@radix-ui/themes");
3738
3725
 
3739
3726
  // src/context/dynamic-form-context.tsx
3740
3727
  var import_react59 = require("react");
3741
- var import_jsx_runtime106 = require("react/jsx-runtime");
3728
+ var import_jsx_runtime107 = require("react/jsx-runtime");
3742
3729
  var DynamicFormContext = (0, import_react59.createContext)(null);
3743
3730
 
3744
3731
  // src/molecules/dynamic-field.tsx
3745
- var import_jsx_runtime107 = require("react/jsx-runtime");
3732
+ var import_jsx_runtime108 = require("react/jsx-runtime");
3746
3733
 
3747
3734
  // src/molecules/dynamic-form.tsx
3748
- var import_jsx_runtime108 = require("react/jsx-runtime");
3735
+ var import_jsx_runtime109 = require("react/jsx-runtime");
3749
3736
 
3750
3737
  // src/molecules/one-on-one-guide-list.tsx
3751
3738
  var import_react61 = require("react");
3752
- var import_jsx_runtime109 = require("react/jsx-runtime");
3739
+ var import_jsx_runtime110 = require("react/jsx-runtime");
3753
3740
 
3754
3741
  // src/molecules/description-json-render.tsx
3755
- var import_jsx_runtime110 = require("react/jsx-runtime");
3742
+ var import_jsx_runtime111 = require("react/jsx-runtime");
3756
3743
 
3757
3744
  // src/molecules/training-info-guideline.tsx
3758
3745
  var import_react62 = require("react");
3759
3746
  var import_react_icons8 = require("@radix-ui/react-icons");
3760
- var import_jsx_runtime111 = require("react/jsx-runtime");
3747
+ var import_jsx_runtime112 = require("react/jsx-runtime");
3761
3748
 
3762
3749
  // src/molecules/dynamic-form-editor.tsx
3763
3750
  var import_react65 = require("react");
@@ -3765,26 +3752,26 @@ var import_react65 = require("react");
3765
3752
  // src/molecules/dynamic-form-editor-field-editor-panel.tsx
3766
3753
  var import_react63 = require("react");
3767
3754
  var import_themes56 = require("@radix-ui/themes");
3768
- var import_jsx_runtime112 = require("react/jsx-runtime");
3755
+ var import_jsx_runtime113 = require("react/jsx-runtime");
3769
3756
 
3770
3757
  // src/molecules/dynamic-form-editor-field-list-panel.tsx
3771
3758
  var import_react64 = require("react");
3772
3759
  var import_themes57 = require("@radix-ui/themes");
3773
- var import_jsx_runtime113 = require("react/jsx-runtime");
3760
+ var import_jsx_runtime114 = require("react/jsx-runtime");
3774
3761
 
3775
3762
  // src/molecules/dynamic-form-editor-issues-panel.tsx
3776
- var import_jsx_runtime114 = require("react/jsx-runtime");
3763
+ var import_jsx_runtime115 = require("react/jsx-runtime");
3777
3764
 
3778
3765
  // src/molecules/dynamic-form-editor-preview-panel.tsx
3779
- var import_jsx_runtime115 = require("react/jsx-runtime");
3766
+ var import_jsx_runtime116 = require("react/jsx-runtime");
3780
3767
 
3781
3768
  // src/molecules/dynamic-form-editor.tsx
3782
- var import_jsx_runtime116 = require("react/jsx-runtime");
3769
+ var import_jsx_runtime117 = require("react/jsx-runtime");
3783
3770
 
3784
3771
  // src/molecules/autocomplete-textfield.tsx
3785
3772
  var import_react66 = require("react");
3786
3773
  var import_themes58 = require("@radix-ui/themes");
3787
- var import_jsx_runtime117 = require("react/jsx-runtime");
3774
+ var import_jsx_runtime118 = require("react/jsx-runtime");
3788
3775
  var AutocompleteTextfield = (0, import_react66.forwardRef)(
3789
3776
  (_a, ref) => {
3790
3777
  var _b = _a, {
@@ -3910,8 +3897,8 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3910
3897
  const item = listRef.current.children[highlightedIndex];
3911
3898
  item.scrollIntoView({ block: "nearest" });
3912
3899
  }, [highlightedIndex]);
3913
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(import_themes58.Box, { position: "relative", style: { width: "100%" }, children: [
3914
- /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
3900
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(import_themes58.Box, { position: "relative", style: { width: "100%" }, children: [
3901
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
3915
3902
  TextField.Root,
3916
3903
  __spreadProps(__spreadValues({
3917
3904
  "aria-activedescendant": open && highlightedIndex >= 0 ? `${listboxId}-option-${highlightedIndex}` : void 0,
@@ -3937,12 +3924,12 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3937
3924
  value: inputValue
3938
3925
  }, rest), {
3939
3926
  children: [
3940
- slotLeft && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TextField.Slot, { side: "left", children: slotLeft }),
3941
- slotRight && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TextField.Slot, { side: "right", children: slotRight })
3927
+ slotLeft && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TextField.Slot, { side: "left", children: slotLeft }),
3928
+ slotRight && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TextField.Slot, { side: "right", children: slotRight })
3942
3929
  ]
3943
3930
  })
3944
3931
  ),
3945
- /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
3932
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
3946
3933
  DropdownMenu.Root,
3947
3934
  {
3948
3935
  modal: false,
@@ -3954,7 +3941,7 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3954
3941
  },
3955
3942
  open,
3956
3943
  children: [
3957
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3944
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
3958
3945
  "span",
3959
3946
  {
3960
3947
  "aria-hidden": "true",
@@ -3969,7 +3956,7 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3969
3956
  }
3970
3957
  }
3971
3958
  ) }),
3972
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3959
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
3973
3960
  DropdownMenu.Content,
3974
3961
  {
3975
3962
  align: "start",
@@ -3986,7 +3973,7 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3986
3973
  padding: 0,
3987
3974
  width: "var(--radix-dropdown-menu-trigger-width)"
3988
3975
  },
3989
- children: filtered.length === 0 && emptyMessage !== null ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_themes58.Box, { px: "2", py: "2", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Typo, { color: "gray", children: emptyMessage }) }) : /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3976
+ children: filtered.length === 0 && emptyMessage !== null ? /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_themes58.Box, { px: "2", py: "2", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Typo, { color: "gray", children: emptyMessage }) }) : /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
3990
3977
  "ul",
3991
3978
  {
3992
3979
  id: listboxId,
@@ -3995,7 +3982,7 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3995
3982
  style: { listStyle: "none", margin: 0, padding: 0 },
3996
3983
  children: filtered.map((option, index) => {
3997
3984
  const isHighlighted = index === highlightedIndex;
3998
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3985
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
3999
3986
  "li",
4000
3987
  {
4001
3988
  "aria-selected": isHighlighted,
@@ -4014,7 +4001,7 @@ var AutocompleteTextfield = (0, import_react66.forwardRef)(
4014
4001
  backgroundColor: isHighlighted ? "var(--accent-3)" : "transparent",
4015
4002
  transition: "background-color 80ms"
4016
4003
  },
4017
- children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Typo, { variant: "body", children: option.label })
4004
+ children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Typo, { variant: "body", children: option.label })
4018
4005
  },
4019
4006
  option.value
4020
4007
  );
@@ -4041,7 +4028,7 @@ var import_renderers = require("echarts/renderers");
4041
4028
  var import_components = require("echarts/components");
4042
4029
 
4043
4030
  // src/charts/horizontal-bar-chart.tsx
4044
- var import_jsx_runtime118 = require("react/jsx-runtime");
4031
+ var import_jsx_runtime119 = require("react/jsx-runtime");
4045
4032
 
4046
4033
  // src/charts/chart-theme.json
4047
4034
  var chart_theme_default = {
@@ -4192,7 +4179,7 @@ var EchartDefaultProps = {
4192
4179
  };
4193
4180
 
4194
4181
  // src/app/roleplay/chart/session-chart.tsx
4195
- var import_jsx_runtime119 = require("react/jsx-runtime");
4182
+ var import_jsx_runtime120 = require("react/jsx-runtime");
4196
4183
  function unwrapDefault(mod) {
4197
4184
  let current = mod;
4198
4185
  while (current !== null && typeof current === "object" && "default" in current) {
@@ -4252,7 +4239,7 @@ function Chart(_a) {
4252
4239
  };
4253
4240
  return deepMerge(baseOption, optionProp);
4254
4241
  }, [optionProp]);
4255
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { ref, style: { width: "100%", height: "100%" }, children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
4242
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { ref, style: { width: "100%", height: "100%" }, children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4256
4243
  ReactEChartsCore,
4257
4244
  __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, EchartDefaultProps), {
4258
4245
  echarts,
@@ -4301,7 +4288,7 @@ function useTokenColors(vars) {
4301
4288
  }
4302
4289
  setResolved(next);
4303
4290
  }, [key]);
4304
- const probe = /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
4291
+ const probe = /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4305
4292
  "span",
4306
4293
  {
4307
4294
  "aria-hidden": true,
@@ -4313,15 +4300,20 @@ function useTokenColors(vars) {
4313
4300
  }
4314
4301
 
4315
4302
  // src/app/roleplay/parts/score-trend-section.tsx
4316
- var import_jsx_runtime120 = require("react/jsx-runtime");
4303
+ var import_jsx_runtime121 = require("react/jsx-runtime");
4304
+ function formatDateOnly(iso) {
4305
+ const d = new Date(iso);
4306
+ if (Number.isNaN(d.getTime())) return iso;
4307
+ return (0, import_date_fns4.format)(d, "M/d");
4308
+ }
4317
4309
  function Section4({
4318
4310
  title,
4319
4311
  desc,
4320
4312
  children
4321
4313
  }) {
4322
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("section", { children: [
4323
- /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_themes7.Box, { mb: "3", children: [
4324
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4314
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("section", { children: [
4315
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes7.Box, { mb: "3", children: [
4316
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4325
4317
  Heading2,
4326
4318
  {
4327
4319
  size: { initial: "4", md: "5" },
@@ -4330,14 +4322,14 @@ function Section4({
4330
4322
  children: title
4331
4323
  }
4332
4324
  ),
4333
- desc ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: desc }) }) : null
4325
+ desc ? /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: desc }) }) : null
4334
4326
  ] }),
4335
4327
  children
4336
4328
  ] });
4337
4329
  }
4338
4330
  function AttemptCell({ row }) {
4339
4331
  const d = row.original;
4340
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
4332
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4341
4333
  Typo,
4342
4334
  {
4343
4335
  as: "span",
@@ -4353,11 +4345,11 @@ function AttemptCell({ row }) {
4353
4345
  );
4354
4346
  }
4355
4347
  function DateCell({ row }) {
4356
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: formatDate(row.original.createdAt) });
4348
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: formatDateOnly(row.original.createdAt) });
4357
4349
  }
4358
4350
  function ScoreCell({ row }) {
4359
4351
  var _a;
4360
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4352
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4361
4353
  Typo,
4362
4354
  {
4363
4355
  as: "span",
@@ -4371,9 +4363,9 @@ function ScoreCell({ row }) {
4371
4363
  function DeltaCell({ row }) {
4372
4364
  const { delta } = row.original;
4373
4365
  if (delta === null) {
4374
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: "\u2014" });
4366
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: "\u2014" });
4375
4367
  }
4376
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: delta > 0 ? `+${delta}` : `${delta}` });
4368
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: delta > 0 ? `+${delta}` : `${delta}` });
4377
4369
  }
4378
4370
  function ScoreTrendSection({
4379
4371
  history
@@ -4451,43 +4443,45 @@ function ScoreTrendSection({
4451
4443
  const columns = (0, import_react68.useMemo)(() => {
4452
4444
  const h = (0, import_react_table2.createColumnHelper)();
4453
4445
  return [
4446
+ // autoSize 컬럼에선 size가 최소폭으로 동작(1fr로 늘어남). 모바일(iPhone SE 375px,
4447
+ // 가용 ≈343px)에서 grid 최소폭 합이 화면을 넘지 않도록 작게 잡는다.
4454
4448
  h.display({
4455
4449
  id: "attempt",
4456
4450
  header: "\uD68C\uCC28",
4457
- size: 120,
4458
- meta: { autoSize: true, align: "left" },
4451
+ size: 116,
4452
+ meta: { align: "left" },
4459
4453
  cell: AttemptCell
4460
4454
  }),
4461
4455
  h.display({
4462
4456
  id: "date",
4463
4457
  header: "\uB0A0\uC9DC",
4464
- size: 130,
4458
+ size: 76,
4465
4459
  meta: { align: "left" },
4466
4460
  cell: DateCell
4467
4461
  }),
4468
4462
  h.display({
4469
4463
  id: "score",
4470
4464
  header: "\uCD1D\uC810",
4471
- size: 80,
4465
+ size: 64,
4472
4466
  meta: { align: "right" },
4473
4467
  cell: ScoreCell
4474
4468
  }),
4475
4469
  h.display({
4476
4470
  id: "delta",
4477
4471
  header: "\uBCC0\uD654",
4478
- size: 80,
4479
- meta: { align: "right" },
4472
+ size: 64,
4473
+ meta: { autoSize: true, align: "left" },
4480
4474
  cell: DeltaCell
4481
4475
  })
4482
4476
  ];
4483
4477
  }, []);
4484
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4478
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4485
4479
  Section4,
4486
4480
  {
4487
- desc: `\uAC19\uC740 \uC2DC\uB098\uB9AC\uC624 \uCD5C\uADFC ${ordered.length}\uD68C\uCC28 \uCD1D\uC810 \uBCC0\uD654`,
4481
+ desc: `\uB3D9\uC77C \uB864\uD50C\uB808\uC789 \uCD5C\uADFC ${ordered.length}\uD68C\uCC28 \uCD1D\uC810 \uBCC0\uD654`,
4488
4482
  title: "\uCD1D\uC810 \uCD94\uC774",
4489
- children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_themes23.Flex, { direction: "column", gap: "4", children: [
4490
- /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
4483
+ children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes23.Flex, { direction: "column", gap: "4", children: [
4484
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4491
4485
  "div",
4492
4486
  {
4493
4487
  "aria-label": "\uCD1D\uC810 \uCD94\uC774 \uB77C\uC778 \uCC28\uD2B8",
@@ -4495,17 +4489,18 @@ function ScoreTrendSection({
4495
4489
  style: { position: "relative", width: "100%", height: 200 },
4496
4490
  children: [
4497
4491
  probe,
4498
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Chart, { option })
4492
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Chart, { option })
4499
4493
  ]
4500
4494
  }
4501
4495
  ),
4502
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_themes7.Box, { className: "rp-expand-table", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4496
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { className: "rp-expand-table", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4503
4497
  ExpandTable,
4504
4498
  {
4505
4499
  columns,
4506
4500
  data: rows,
4507
4501
  getRowStyle: (d) => d.isCurrent ? { background: "var(--accent-a2)" } : {},
4508
4502
  showPagination: false,
4503
+ slim: true,
4509
4504
  variant: "sprite"
4510
4505
  }
4511
4506
  ) })
@@ -4516,33 +4511,33 @@ function ScoreTrendSection({
4516
4511
 
4517
4512
  // src/app/roleplay/parts/section-nav.tsx
4518
4513
  var import_react69 = require("react");
4519
- var import_jsx_runtime121 = require("react/jsx-runtime");
4514
+ var import_jsx_runtime122 = require("react/jsx-runtime");
4520
4515
  var NAV_ICONS = {
4521
- "score-summary": /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4522
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "m12 14 4-4" }),
4523
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M3.34 19a10 10 0 1 1 17.32 0" })
4516
+ "score-summary": /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_jsx_runtime122.Fragment, { children: [
4517
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("path", { d: "m12 14 4-4" }),
4518
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("path", { d: "M3.34 19a10 10 0 1 1 17.32 0" })
4524
4519
  ] }),
4525
- strengths: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }),
4526
- improvements: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4527
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: "12", cy: "12", r: "9" }),
4528
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: "12", cy: "12", r: "5" }),
4529
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: "12", cy: "12", r: "1.5" })
4520
+ strengths: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }),
4521
+ improvements: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_jsx_runtime122.Fragment, { children: [
4522
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("circle", { cx: "12", cy: "12", r: "9" }),
4523
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("circle", { cx: "12", cy: "12", r: "5" }),
4524
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("circle", { cx: "12", cy: "12", r: "1.5" })
4530
4525
  ] }),
4531
- "score-trend": /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4532
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M3 3v18h18" }),
4533
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "m19 8-5 5-4-4-4 4" })
4526
+ "score-trend": /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_jsx_runtime122.Fragment, { children: [
4527
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("path", { d: "M3 3v18h18" }),
4528
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("path", { d: "m19 8-5 5-4-4-4 4" })
4534
4529
  ] }),
4535
- "step-summary": /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z" }),
4536
- "step-detail": /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4537
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "8", x2: "21", y1: "6", y2: "6" }),
4538
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "8", x2: "21", y1: "12", y2: "12" }),
4539
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "8", x2: "21", y1: "18", y2: "18" }),
4540
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M3 6h.01M3 12h.01M3 18h.01" })
4530
+ "step-summary": /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("path", { d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z" }),
4531
+ "step-detail": /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_jsx_runtime122.Fragment, { children: [
4532
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("line", { x1: "8", x2: "21", y1: "6", y2: "6" }),
4533
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("line", { x1: "8", x2: "21", y1: "12", y2: "12" }),
4534
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("line", { x1: "8", x2: "21", y1: "18", y2: "18" }),
4535
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("path", { d: "M3 6h.01M3 12h.01M3 18h.01" })
4541
4536
  ] }),
4542
- coaching: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })
4537
+ coaching: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })
4543
4538
  };
4544
4539
  function NavIcon({ children }) {
4545
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4540
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4546
4541
  "svg",
4547
4542
  {
4548
4543
  "aria-hidden": "true",
@@ -4562,12 +4557,13 @@ function NavIcon({ children }) {
4562
4557
  function StepMetricBadge({ step }) {
4563
4558
  const scoreText = stepScoreText(step);
4564
4559
  if (scoreText !== null) {
4565
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4560
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4566
4561
  Typo,
4567
4562
  {
4568
4563
  as: "span",
4564
+ color: "gray",
4569
4565
  mono: true,
4570
- style: { flexShrink: 0, color: "var(--gray-11)" },
4566
+ style: { flexShrink: 0 },
4571
4567
  variant: "body",
4572
4568
  weight: "medium",
4573
4569
  children: scoreText
@@ -4576,7 +4572,7 @@ function StepMetricBadge({ step }) {
4576
4572
  }
4577
4573
  const gradeLabel = stepGradeLabel(step);
4578
4574
  if (gradeLabel !== null) {
4579
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4575
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4580
4576
  Typo,
4581
4577
  {
4582
4578
  as: "span",
@@ -4619,8 +4615,8 @@ function scrollToId(id) {
4619
4615
  function SectionNav({ items, steps }) {
4620
4616
  const activeId = useScrollSpy(items.map((i) => i.id));
4621
4617
  const stepDetailActive = activeId === "step-summary" || activeId === "step-detail";
4622
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { asChild: true, className: "rp-section-nav", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("aside", { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes7.Box, { children: [
4623
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4618
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { asChild: true, className: "rp-section-nav", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("aside", { children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { children: [
4619
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4624
4620
  Typo,
4625
4621
  {
4626
4622
  as: "p",
@@ -4634,9 +4630,9 @@ function SectionNav({ items, steps }) {
4634
4630
  children: "\uBAA9\uCC28"
4635
4631
  }
4636
4632
  ),
4637
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: items.map((item) => {
4633
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: items.map((item) => {
4638
4634
  const active = activeId === item.id;
4639
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4635
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4640
4636
  "button",
4641
4637
  {
4642
4638
  "aria-current": active ? "true" : void 0,
@@ -4650,9 +4646,9 @@ function SectionNav({ items, steps }) {
4650
4646
  } : void 0,
4651
4647
  type: "button",
4652
4648
  children: [
4653
- /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes23.Flex, { align: "center", gap: "2", style: { minWidth: 0 }, children: [
4654
- NAV_ICONS[item.id] ? /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(NavIcon, { children: NAV_ICONS[item.id] }) : null,
4655
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4649
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { align: "center", gap: "2", style: { minWidth: 0 }, children: [
4650
+ NAV_ICONS[item.id] ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(NavIcon, { children: NAV_ICONS[item.id] }) : null,
4651
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4656
4652
  Typo,
4657
4653
  {
4658
4654
  as: "span",
@@ -4663,8 +4659,8 @@ function SectionNav({ items, steps }) {
4663
4659
  }
4664
4660
  )
4665
4661
  ] }),
4666
- typeof item.score === "number" ? /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Typo, { as: "span", mono: true, style: { flexShrink: 0 }, variant: "body", children: [
4667
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4662
+ typeof item.score === "number" ? /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Typo, { as: "span", mono: true, style: { flexShrink: 0 }, variant: "body", children: [
4663
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4668
4664
  Typo,
4669
4665
  {
4670
4666
  as: "span",
@@ -4676,7 +4672,7 @@ function SectionNav({ items, steps }) {
4676
4672
  children: item.score
4677
4673
  }
4678
4674
  ),
4679
- /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Typo, { as: "span", style: { color: "var(--gray-9)" }, variant: "body", children: [
4675
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Typo, { as: "span", style: { color: "var(--gray-9)" }, variant: "body", children: [
4680
4676
  "/",
4681
4677
  item.max
4682
4678
  ] })
@@ -4685,8 +4681,8 @@ function SectionNav({ items, steps }) {
4685
4681
  }
4686
4682
  ) }, item.id);
4687
4683
  }) }) }),
4688
- steps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes7.Box, { mt: "3", pt: "3", style: { borderTop: "1px solid var(--gray-4)" }, children: [
4689
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { pb: "1", px: "3", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4684
+ steps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { mt: "3", pt: "3", style: { borderTop: "1px solid var(--gray-4)" }, children: [
4685
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { pb: "1", px: "3", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4690
4686
  Typo,
4691
4687
  {
4692
4688
  as: "span",
@@ -4698,9 +4694,9 @@ function SectionNav({ items, steps }) {
4698
4694
  children: "\uB2E8\uACC4\uBCC4 \uC810\uC218"
4699
4695
  }
4700
4696
  ) }),
4701
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: steps.map((step) => {
4697
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: steps.map((step) => {
4702
4698
  const ratio = stepRatio(step);
4703
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4699
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4704
4700
  "button",
4705
4701
  {
4706
4702
  className: "rp-jump-btn",
@@ -4709,8 +4705,8 @@ function SectionNav({ items, steps }) {
4709
4705
  },
4710
4706
  type: "button",
4711
4707
  children: [
4712
- /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
4713
- /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4708
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
4709
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4714
4710
  Typo,
4715
4711
  {
4716
4712
  as: "span",
@@ -4718,19 +4714,19 @@ function SectionNav({ items, steps }) {
4718
4714
  truncate: true,
4719
4715
  variant: "body",
4720
4716
  children: [
4721
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4717
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4722
4718
  Typo,
4723
4719
  {
4724
4720
  as: "span",
4721
+ color: "gray",
4725
4722
  mono: true,
4726
- style: { color: "var(--gray-11)" },
4727
4723
  variant: "body",
4728
4724
  weight: "medium",
4729
4725
  children: stepCode(step)
4730
4726
  }
4731
4727
  ),
4732
4728
  " ",
4733
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4729
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4734
4730
  Typo,
4735
4731
  {
4736
4732
  as: "span",
@@ -4742,9 +4738,9 @@ function SectionNav({ items, steps }) {
4742
4738
  ]
4743
4739
  }
4744
4740
  ),
4745
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(StepMetricBadge, { step })
4741
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(StepMetricBadge, { step })
4746
4742
  ] }),
4747
- ratio !== null ? /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { mt: "1", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Progress, { color: stepColor(step), size: "1", value: ratio * 100 }) }) : null
4743
+ ratio !== null ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mt: "1", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Progress, { color: stepColor(step), size: "1", value: ratio * 100 }) }) : null
4748
4744
  ]
4749
4745
  }
4750
4746
  ) }, step.key);
@@ -4754,14 +4750,14 @@ function SectionNav({ items, steps }) {
4754
4750
  }
4755
4751
 
4756
4752
  // src/app/roleplay/parts/step-detail.tsx
4757
- var import_jsx_runtime122 = require("react/jsx-runtime");
4753
+ var import_jsx_runtime123 = require("react/jsx-runtime");
4758
4754
  function RubricField({
4759
4755
  label,
4760
4756
  value
4761
4757
  }) {
4762
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { children: [
4763
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: label }),
4764
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", variant: "body", children: value }) })
4758
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes7.Box, { children: [
4759
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: label }),
4760
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "p", variant: "body", children: value }) })
4765
4761
  ] });
4766
4762
  }
4767
4763
  function StepDetail({
@@ -4772,14 +4768,14 @@ function StepDetail({
4772
4768
  const ratio = stepRatio(step);
4773
4769
  const scoreText = stepScoreText(step);
4774
4770
  const gradeLabel = stepGradeLabel(step);
4775
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { id: `step-${step.key}`, style: { scrollMarginTop }, children: [
4776
- /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", mb: "1", children: [
4777
- /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { style: { minWidth: 0 }, children: [
4778
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "span", color: "gray", mono: true, variant: "body", children: stepCode(step) }),
4779
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", variant: "subtitle", weight: "bold", children: step.label })
4771
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes7.Box, { id: `step-${step.key}`, style: { scrollMarginTop }, children: [
4772
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", mb: "1", children: [
4773
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes7.Box, { style: { minWidth: 0 }, children: [
4774
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "span", color: "gray", mono: true, variant: "body", children: stepCode(step) }),
4775
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "p", variant: "subtitle", weight: "bold", children: step.label })
4780
4776
  ] }),
4781
- /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { align: "end", direction: "column", gap: "1", style: { flexShrink: 0 }, children: [
4782
- scoreText !== null ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4777
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes23.Flex, { align: "end", direction: "column", gap: "1", style: { flexShrink: 0 }, children: [
4778
+ scoreText !== null ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
4783
4779
  Typo,
4784
4780
  {
4785
4781
  as: "span",
@@ -4790,7 +4786,7 @@ function StepDetail({
4790
4786
  children: scoreText
4791
4787
  }
4792
4788
  ) : null,
4793
- gradeLabel !== null ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4789
+ gradeLabel !== null ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
4794
4790
  Typo,
4795
4791
  {
4796
4792
  as: "span",
@@ -4810,16 +4806,16 @@ function StepDetail({
4810
4806
  ) : null
4811
4807
  ] })
4812
4808
  ] }),
4813
- ratio !== null ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mb: "3", mt: "2", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Progress, { color: stepColor(step), size: "2", value: ratio * 100 }) }) : null,
4814
- step.description ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mb: "3", mt: ratio !== null ? "0" : "2", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: step.description }) }) : null,
4815
- /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { direction: "column", gap: "0", children: [
4816
- step.basis || step.issue ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { pb: "3", style: { borderBottom: "1px solid var(--gray-a4)" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
4817
- step.basis ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(RubricField, { label: "\uADFC\uAC70", value: step.basis }) : null,
4818
- step.issue ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(RubricField, { label: "\uC544\uC26C\uC6B4 \uC810", value: step.issue }) : null
4809
+ ratio !== null ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { mb: "3", mt: "2", children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Progress, { color: stepColor(step), size: "2", value: ratio * 100 }) }) : null,
4810
+ step.description ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { mb: "3", mt: ratio !== null ? "0" : "2", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: step.description }) }) : null,
4811
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes23.Flex, { direction: "column", gap: "0", children: [
4812
+ step.basis || step.issue ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { pb: "3", style: { borderBottom: "1px solid var(--gray-a4)" }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
4813
+ step.basis ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(RubricField, { label: "\uADFC\uAC70", value: step.basis }) : null,
4814
+ step.issue ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(RubricField, { label: "\uC544\uC26C\uC6B4 \uC810", value: step.issue }) : null
4819
4815
  ] }) }) : null,
4820
- step.improve || step.example || step.idealExample ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { pt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
4821
- step.improve ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(RubricField, { label: "\uAC1C\uC120\uC810", value: step.improve }) : null,
4822
- step.example ? /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4816
+ step.improve || step.example || step.idealExample ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { pt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
4817
+ step.improve ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(RubricField, { label: "\uAC1C\uC120\uC810", value: step.improve }) : null,
4818
+ step.example ? /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
4823
4819
  import_themes7.Box,
4824
4820
  {
4825
4821
  p: "2",
@@ -4828,7 +4824,7 @@ function StepDetail({
4828
4824
  background: "var(--accent-a2)"
4829
4825
  },
4830
4826
  children: [
4831
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4827
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
4832
4828
  Typo,
4833
4829
  {
4834
4830
  as: "p",
@@ -4838,11 +4834,11 @@ function StepDetail({
4838
4834
  children: "\uC608\uC2DC \uC2A4\uD06C\uB9BD\uD2B8"
4839
4835
  }
4840
4836
  ),
4841
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", style: { color: "var(--accent-11)" }, variant: "body", children: step.example }) })
4837
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "p", style: { color: "var(--accent-11)" }, variant: "body", children: step.example }) })
4842
4838
  ]
4843
4839
  }
4844
4840
  ) : null,
4845
- step.idealExample ? /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4841
+ step.idealExample ? /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
4846
4842
  import_themes7.Box,
4847
4843
  {
4848
4844
  p: "2",
@@ -4851,8 +4847,8 @@ function StepDetail({
4851
4847
  background: "var(--gray-a2)"
4852
4848
  },
4853
4849
  children: [
4854
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uBAA8\uBC94 \uC608\uC2DC" }),
4855
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4850
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uBAA8\uBC94 \uC608\uC2DC" }),
4851
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
4856
4852
  Typo,
4857
4853
  {
4858
4854
  as: "p",
@@ -4871,7 +4867,7 @@ function StepDetail({
4871
4867
  }
4872
4868
 
4873
4869
  // src/app/roleplay/parts/step-radar.tsx
4874
- var import_jsx_runtime123 = require("react/jsx-runtime");
4870
+ var import_jsx_runtime124 = require("react/jsx-runtime");
4875
4871
  function StepRadar({ steps }) {
4876
4872
  const { colors, probe } = useTokenColors({
4877
4873
  accent: ["--accent-9", "#5b5bd6"],
@@ -4920,7 +4916,7 @@ function StepRadar({ steps }) {
4920
4916
  }
4921
4917
  ]
4922
4918
  };
4923
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
4919
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
4924
4920
  "div",
4925
4921
  {
4926
4922
  "aria-label": "\uD3C9\uAC00 \uB2E8\uACC4 \uB808\uC774\uB354 \uCC28\uD2B8",
@@ -4936,23 +4932,23 @@ function StepRadar({ steps }) {
4936
4932
  },
4937
4933
  children: [
4938
4934
  probe,
4939
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { style: { width: "100%", maxWidth: 300, height: 280 }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Chart, { option }) })
4935
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { style: { width: "100%", maxWidth: 300, height: 280 }, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Chart, { option }) })
4940
4936
  ]
4941
4937
  }
4942
4938
  );
4943
4939
  }
4944
4940
 
4945
4941
  // src/app/roleplay/parts/step-summary.tsx
4946
- var import_jsx_runtime124 = require("react/jsx-runtime");
4942
+ var import_jsx_runtime125 = require("react/jsx-runtime");
4947
4943
  function Section5({
4948
4944
  title,
4949
4945
  desc,
4950
4946
  children
4951
4947
  }) {
4952
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("section", { children: [
4953
- /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes7.Box, { mb: "3", children: [
4954
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Typo, { as: "p", variant: "subtitle", weight: "bold", children: title }),
4955
- desc ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: desc }) }) : null
4948
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("section", { children: [
4949
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes7.Box, { mb: "3", children: [
4950
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Typo, { as: "p", variant: "subtitle", weight: "bold", children: title }),
4951
+ desc ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: desc }) }) : null
4956
4952
  ] }),
4957
4953
  children
4958
4954
  ] });
@@ -4960,14 +4956,14 @@ function Section5({
4960
4956
  function StepSummary({ steps }) {
4961
4957
  if (steps.length === 0) return null;
4962
4958
  const radarReady = steps.every((s) => stepRatio(s) !== null);
4963
- const desc = radarReady ? "\uB300\uD654 \uB2E8\uACC4\uBCC4 \uD3C9\uAC00 \uACB0\uACFC\uB97C \uB808\uC774\uB354\uB85C \uC694\uC57D\uD569\uB2C8\uB2E4." : "\uB300\uD654 \uB2E8\uACC4\uBCC4 \uD3C9\uAC00 \uACB0\uACFC\uC785\uB2C8\uB2E4.";
4964
- const list = /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_themes23.Flex, { direction: "column", children: steps.map((step, i) => {
4959
+ const desc = "\uB300\uD654 \uB2E8\uACC4 \uBCC4\uB85C \uB098\uC758 \uAC15\uC57D\uC810\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC5B4\uC694.";
4960
+ const list = /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes23.Flex, { direction: "column", children: steps.map((step, i) => {
4965
4961
  const ratio = stepRatio(step);
4966
4962
  const scoreText = stepScoreText(step);
4967
4963
  const gradeLabel = stepGradeLabel(step);
4968
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes7.Box, { children: [
4969
- i > 0 && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_themes40.Separator, { size: "4" }),
4970
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
4964
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes7.Box, { children: [
4965
+ i > 0 && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes40.Separator, { size: "4" }),
4966
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
4971
4967
  "button",
4972
4968
  {
4973
4969
  className: "rp-rubric-scroll-btn",
@@ -4984,9 +4980,9 @@ function StepSummary({ steps }) {
4984
4980
  textAlign: "left"
4985
4981
  },
4986
4982
  type: "button",
4987
- children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes23.Flex, { direction: "column", gap: "1", children: [
4988
- /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
4989
- /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
4983
+ children: /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes23.Flex, { direction: "column", gap: "1", children: [
4984
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
4985
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
4990
4986
  Typo,
4991
4987
  {
4992
4988
  as: "span",
@@ -4995,12 +4991,12 @@ function StepSummary({ steps }) {
4995
4991
  variant: "body",
4996
4992
  weight: "medium",
4997
4993
  children: [
4998
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
4994
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
4999
4995
  Typo,
5000
4996
  {
5001
4997
  as: "span",
4998
+ color: "gray",
5002
4999
  mono: true,
5003
- style: { color: "var(--gray-11)" },
5004
5000
  variant: "body",
5005
5001
  weight: "medium",
5006
5002
  children: stepCode(step)
@@ -5011,9 +5007,9 @@ function StepSummary({ steps }) {
5011
5007
  ]
5012
5008
  }
5013
5009
  ),
5014
- /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes23.Flex, { align: "center", gap: "2", style: { flexShrink: 0 }, children: [
5015
- scoreText !== null ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Typo, { as: "span", mono: true, variant: "body", weight: "bold", children: scoreText }) : null,
5016
- gradeLabel !== null ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
5010
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes23.Flex, { align: "center", gap: "2", style: { flexShrink: 0 }, children: [
5011
+ scoreText !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Typo, { as: "span", mono: true, variant: "body", weight: "bold", children: scoreText }) : null,
5012
+ gradeLabel !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
5017
5013
  Typo,
5018
5014
  {
5019
5015
  as: "span",
@@ -5026,13 +5022,13 @@ function StepSummary({ steps }) {
5026
5022
  ) : null
5027
5023
  ] })
5028
5024
  ] }),
5029
- ratio !== null ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_themes7.Box, { style: { flex: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Progress, { color: stepColor(step), size: "1", value: ratio * 100 }) }) : null
5025
+ ratio !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { style: { flex: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Progress, { color: stepColor(step), size: "1", value: ratio * 100 }) }) : null
5030
5026
  ] })
5031
5027
  }
5032
5028
  )
5033
5029
  ] }, step.key);
5034
5030
  }) });
5035
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Section5, { desc, title: "\uD3C9\uAC00 \uB2E8\uACC4 \uC694\uC57D", children: radarReady ? /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
5031
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Section5, { desc, title: "\uD3C9\uAC00 \uB2E8\uACC4 \uC694\uC57D", children: radarReady ? /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
5036
5032
  import_themes24.Grid,
5037
5033
  {
5038
5034
  align: "center",
@@ -5040,14 +5036,14 @@ function StepSummary({ steps }) {
5040
5036
  gap: "6",
5041
5037
  children: [
5042
5038
  list,
5043
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(StepRadar, { steps })
5039
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(StepRadar, { steps })
5044
5040
  ]
5045
5041
  }
5046
5042
  ) : list });
5047
5043
  }
5048
5044
 
5049
5045
  // src/app/roleplay/parts/content.tsx
5050
- var import_jsx_runtime125 = require("react/jsx-runtime");
5046
+ var import_jsx_runtime126 = require("react/jsx-runtime");
5051
5047
  function Content9({
5052
5048
  detail,
5053
5049
  report,
@@ -5070,46 +5066,46 @@ function Content9({
5070
5066
  ...showStepDetail ? [{ id: "step-detail", label: "\uB2E8\uACC4\uBCC4 \uC0C1\uC138 \uBD84\uC11D" }] : [],
5071
5067
  ...skills.length > 0 ? [{ id: "coaching", label: "\uC989\uC2DC \uC801\uC6A9 \uC2A4\uD0AC" }] : []
5072
5068
  ];
5073
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
5069
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5074
5070
  import_themes24.Grid,
5075
5071
  {
5076
5072
  align: "start",
5077
5073
  columns: { initial: "1", md: "minmax(0, 1fr) 224px" },
5078
5074
  gap: "7",
5079
5075
  children: [
5080
- /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes23.Flex, { direction: "column", gap: "7", children: [
5081
- report.frameworkTitle !== null || report.frameworkDescription !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes7.Box, { children: [
5082
- report.frameworkTitle !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Heading2, { size: "5", weight: "bold", children: report.frameworkTitle }) : null,
5083
- report.frameworkDescription !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { mt: report.frameworkTitle !== null ? "2" : "0", children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Typo, { as: "p", variant: "body", children: report.frameworkDescription }) }) : null
5076
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_themes23.Flex, { direction: "column", gap: "7", children: [
5077
+ report.frameworkTitle !== null || report.frameworkDescription !== null ? /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_themes7.Box, { children: [
5078
+ report.frameworkTitle !== null ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Heading2, { size: "5", weight: "bold", children: report.frameworkTitle }) : null,
5079
+ report.frameworkDescription !== null ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { mt: report.frameworkTitle !== null ? "2" : "0", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Typo, { as: "p", variant: "body", children: report.frameworkDescription }) }) : null
5084
5080
  ] }) : null,
5085
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "score-summary", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(ScoreSummary, { detail, report, speechShare }) }),
5086
- strengths.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "strengths", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
5081
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "score-summary", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(ScoreSummary, { detail, report, speechShare }) }),
5082
+ strengths.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "strengths", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
5087
5083
  AnalysisSection,
5088
5084
  {
5089
- desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \uC798\uD55C \uC810",
5085
+ desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \uAC00\uC7A5 \uB3CB\uBCF4\uC778 \uAC15\uC810\uB4E4\uC774\uC5D0\uC694.",
5090
5086
  items: strengths,
5091
5087
  title: "\uAC15\uC810",
5092
5088
  tone: "good"
5093
5089
  }
5094
5090
  ) }) : null,
5095
- improvements.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "improvements", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
5091
+ improvements.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "improvements", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
5096
5092
  AnalysisSection,
5097
5093
  {
5098
- desc: "\uB2E4\uC74C \uC2DC\uB3C4\uC5D0\uC11C \uBCF4\uC644\uD560 \uC810",
5094
+ desc: "\uB2E4\uC74C\uC5D0 \uBCF4\uC644\uD55C\uB2E4\uBA74 \uB354 \uB098\uC740 \uACB0\uACFC\uB97C \uC5BB\uC744 \uC218 \uC788\uC744 \uAC70\uC5D0\uC694.",
5099
5095
  items: improvements,
5100
5096
  title: "\uAC1C\uC120\uC810",
5101
5097
  tone: "bad"
5102
5098
  }
5103
5099
  ) }) : null,
5104
- showTrend ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "score-trend", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(ScoreTrendSection, { history }) }) : null,
5105
- showStepSummary ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "step-summary", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(StepSummary, { steps }) }) : null,
5106
- showStepDetail ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "step-detail", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
5100
+ showTrend ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "score-trend", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(ScoreTrendSection, { history }) }) : null,
5101
+ showStepSummary ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "step-summary", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(StepSummary, { steps }) }) : null,
5102
+ showStepDetail ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "step-detail", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
5107
5103
  Section2,
5108
5104
  {
5109
- desc: "\uB300\uD654 \uD504\uB808\uC784\uC6CC\uD06C \uB2E8\uACC4\uBCC4 \uD3C9\uAC00 \uACB0\uACFC\uC785\uB2C8\uB2E4.",
5105
+ desc: "\uC774\uBC88 \uB300\uD654\uC758 \uB354 \uB098\uC544\uC9C8 \uC218 \uC788\uB294 \uBC29\uD5A5\uC744 \uC54C\uB824\uB4DC\uB9B4\uAC8C\uC694.",
5110
5106
  title: "\uB2E8\uACC4\uBCC4 \uC0C1\uC138 \uBD84\uC11D",
5111
- children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes23.Flex, { direction: "column", children: steps.map((step, i) => /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes7.Box, { children: [
5112
- i > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
5107
+ children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes23.Flex, { direction: "column", children: steps.map((step, i) => /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_themes7.Box, { children: [
5108
+ i > 0 ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
5113
5109
  import_themes40.Separator,
5114
5110
  {
5115
5111
  mb: "6",
@@ -5117,22 +5113,22 @@ function Content9({
5117
5113
  style: { marginTop: "calc(var(--space-9) * 1.6)" }
5118
5114
  }
5119
5115
  ) : null,
5120
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(StepDetail, { scrollMarginTop, step })
5116
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(StepDetail, { scrollMarginTop, step })
5121
5117
  ] }, step.key)) })
5122
5118
  }
5123
5119
  ) }) : null,
5124
- skills.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "coaching", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(CoachingPanel, { skills }) }) : null
5120
+ skills.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { id: "coaching", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(CoachingPanel, { skills }) }) : null
5125
5121
  ] }),
5126
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(SectionNav, { items: navItems, steps: showStepDetail ? steps : [] })
5122
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(SectionNav, { items: navItems, steps: showStepDetail ? steps : [] })
5127
5123
  ]
5128
5124
  }
5129
5125
  );
5130
5126
  }
5131
5127
 
5132
5128
  // src/app/roleplay/parts/header.tsx
5133
- var import_jsx_runtime126 = require("react/jsx-runtime");
5129
+ var import_jsx_runtime127 = require("react/jsx-runtime");
5134
5130
  function PdfIcon() {
5135
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5131
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5136
5132
  "svg",
5137
5133
  {
5138
5134
  "aria-hidden": "true",
@@ -5145,16 +5141,16 @@ function PdfIcon() {
5145
5141
  viewBox: "0 0 24 24",
5146
5142
  width: "13",
5147
5143
  children: [
5148
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("path", { d: "M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z" }),
5149
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("path", { d: "M14 3v5h5" }),
5150
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("path", { d: "M12 12v5" }),
5151
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("path", { d: "M9.5 14.5 12 17l2.5-2.5" })
5144
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("path", { d: "M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z" }),
5145
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("path", { d: "M14 3v5h5" }),
5146
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("path", { d: "M12 12v5" }),
5147
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("path", { d: "M9.5 14.5 12 17l2.5-2.5" })
5152
5148
  ]
5153
5149
  }
5154
5150
  );
5155
5151
  }
5156
5152
  function VideoIcon3() {
5157
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5153
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5158
5154
  "svg",
5159
5155
  {
5160
5156
  "aria-hidden": "true",
@@ -5167,8 +5163,8 @@ function VideoIcon3() {
5167
5163
  viewBox: "0 0 24 24",
5168
5164
  width: "13",
5169
5165
  children: [
5170
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("rect", { height: "12", rx: "2", width: "13", x: "2", y: "6" }),
5171
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("path", { d: "m15 10 6-3v10l-6-3z" })
5166
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("rect", { height: "12", rx: "2", width: "13", x: "2", y: "6" }),
5167
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("path", { d: "m15 10 6-3v10l-6-3z" })
5172
5168
  ]
5173
5169
  }
5174
5170
  );
@@ -5193,7 +5189,7 @@ function Header({
5193
5189
  });
5194
5190
  };
5195
5191
  const replayActive = hasScript && hasReplayMedia;
5196
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_themes7.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5192
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_themes7.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5197
5193
  import_themes23.Flex,
5198
5194
  {
5199
5195
  align: { md: "start" },
@@ -5201,16 +5197,16 @@ function Header({
5201
5197
  gap: "4",
5202
5198
  justify: "between",
5203
5199
  children: [
5204
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_themes7.Box, { style: { minWidth: 0 }, children: [
5205
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_themes23.Flex, { align: "center", gap: "2", mb: "2", wrap: "wrap", children: [
5206
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Badge, { color: "neutral", size: "small", variant: "soft", children: statusLabelOf(detail.status) }),
5207
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Typo, { as: "span", style: { color: "var(--gray-11)" }, variant: "body", children: [
5200
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes7.Box, { style: { minWidth: 0 }, children: [
5201
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes23.Flex, { align: "center", gap: "2", mb: "2", wrap: "wrap", children: [
5202
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Badge, { color: "neutral", size: "small", variant: "soft", children: statusLabelOf(detail.status) }),
5203
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Typo, { as: "span", color: "gray", variant: "body", children: [
5208
5204
  detail.trainingSessionNum,
5209
5205
  "\uD68C\uCC28",
5210
5206
  detail.characterTitle ? ` \xB7 ${detail.characterTitle}` : ""
5211
5207
  ] })
5212
5208
  ] }),
5213
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
5209
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5214
5210
  Heading2,
5215
5211
  {
5216
5212
  size: { initial: "5", md: "7" },
@@ -5219,13 +5215,13 @@ function Header({
5219
5215
  children: (_a = detail.scenarioTitle) != null ? _a : "\uB864\uD50C\uB808\uC789 \uC138\uC158"
5220
5216
  }
5221
5217
  ),
5222
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Typo, { as: "p", color: "gray", mono: true, mt: "1", variant: "body", children: [
5218
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Typo, { as: "p", color: "gray", mono: true, mt: "1", variant: "body", children: [
5223
5219
  formatDate(detail.createdAt),
5224
5220
  " \xB7 ",
5225
5221
  formatDuration(detail.trainingTime)
5226
5222
  ] })
5227
5223
  ] }),
5228
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5224
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5229
5225
  import_themes23.Flex,
5230
5226
  {
5231
5227
  gap: "2",
@@ -5233,7 +5229,7 @@ function Header({
5233
5229
  style: { flexShrink: 0 },
5234
5230
  wrap: "wrap",
5235
5231
  children: [
5236
- onResolveMediaUrl ? /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5232
+ onResolveMediaUrl ? /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5237
5233
  Button,
5238
5234
  {
5239
5235
  color: "gray",
@@ -5244,11 +5240,11 @@ function Header({
5244
5240
  type: "button",
5245
5241
  variant: "outline",
5246
5242
  children: [
5247
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(PdfIcon, {}),
5248
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
5243
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(PdfIcon, {}),
5244
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
5249
5245
  ]
5250
5246
  }
5251
- ) : /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
5247
+ ) : /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5252
5248
  Button,
5253
5249
  {
5254
5250
  asChild: Boolean(pdfHref),
@@ -5258,16 +5254,16 @@ function Header({
5258
5254
  title: pdfHref ? void 0 : "\uC0B0\uCD9C\uBB3C \uC5C6\uC74C",
5259
5255
  type: "button",
5260
5256
  variant: "outline",
5261
- children: pdfHref ? /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("a", { href: pdfHref, rel: "noopener noreferrer", target: "_blank", children: [
5262
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(PdfIcon, {}),
5263
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
5264
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("span", { children: [
5265
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(PdfIcon, {}),
5266
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
5257
+ children: pdfHref ? /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("a", { href: pdfHref, rel: "noopener noreferrer", target: "_blank", children: [
5258
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(PdfIcon, {}),
5259
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
5260
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("span", { children: [
5261
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(PdfIcon, {}),
5262
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
5267
5263
  ] })
5268
5264
  }
5269
5265
  ),
5270
- hasScript ? /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
5266
+ hasScript ? /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5271
5267
  Button,
5272
5268
  {
5273
5269
  color: "gray",
@@ -5278,8 +5274,8 @@ function Header({
5278
5274
  type: "button",
5279
5275
  variant: "outline",
5280
5276
  children: [
5281
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(VideoIcon3, {}),
5282
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "\uC601\uC0C1" })
5277
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(VideoIcon3, {}),
5278
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { style: { whiteSpace: "nowrap" }, children: "\uC601\uC0C1" })
5283
5279
  ]
5284
5280
  }
5285
5281
  ) : null
@@ -5295,66 +5291,7 @@ function Header({
5295
5291
  var import_react70 = require("react");
5296
5292
 
5297
5293
  // src/app/roleplay/parts/script-transcript.tsx
5298
- var import_jsx_runtime127 = require("react/jsx-runtime");
5299
- function SpeechShareBar2({ share }) {
5300
- const isOvertalking = share.userPct > SPEECH_OVERTALK_THRESHOLD;
5301
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes7.Box, { children: [
5302
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes23.Flex, { align: "center", justify: "between", mb: "1", children: [
5303
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5304
- Typo,
5305
- {
5306
- as: "span",
5307
- style: {
5308
- fontSize: "0.75rem",
5309
- color: isOvertalking ? "var(--red-11)" : "var(--accent-11)"
5310
- },
5311
- variant: "body",
5312
- weight: "medium",
5313
- children: [
5314
- "\uB0B4 \uBC1C\uD654\uB7C9 ",
5315
- share.userPct,
5316
- "%"
5317
- ]
5318
- }
5319
- ),
5320
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Typo, { as: "span", color: "gray", style: { fontSize: "0.75rem" }, variant: "body", children: [
5321
- "\uC0C1\uB300 ",
5322
- share.partnerPct,
5323
- "%"
5324
- ] })
5325
- ] }),
5326
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5327
- import_themes23.Flex,
5328
- {
5329
- style: {
5330
- height: 6,
5331
- borderRadius: "var(--radius-1)",
5332
- overflow: "hidden",
5333
- background: "var(--gray-4)"
5334
- },
5335
- children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5336
- import_themes7.Box,
5337
- {
5338
- style: {
5339
- width: `${share.userPct}%`,
5340
- background: isOvertalking ? "var(--red-9)" : "var(--accent-9)"
5341
- }
5342
- }
5343
- )
5344
- }
5345
- ),
5346
- isOvertalking ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5347
- Typo,
5348
- {
5349
- as: "p",
5350
- mt: "1",
5351
- style: { fontSize: "0.75rem", color: "var(--red-11)" },
5352
- variant: "body",
5353
- children: "\uC0C1\uB300\uC758 \uB9D0\uC744 \uB354 \uB4E3\uACE0 \uC9C8\uBB38\xB7\uACBD\uCCAD\uC758 \uBE44\uC911\uC744 \uB192\uC5EC \uBCF4\uC138\uC694"
5354
- }
5355
- ) : null
5356
- ] });
5357
- }
5294
+ var import_jsx_runtime128 = require("react/jsx-runtime");
5358
5295
  function ScriptTranscript({
5359
5296
  lines,
5360
5297
  partnerName,
@@ -5364,31 +5301,30 @@ function ScriptTranscript({
5364
5301
  onSeek
5365
5302
  }) {
5366
5303
  const activeIndex = canSync ? lines.reduce((acc, line, i) => line.startMs <= currentMs ? i : acc, -1) : -1;
5367
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes23.Flex, { direction: "column", gap: "2", style: { minWidth: 0 }, children: [
5368
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes7.Box, { children: [
5369
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
5370
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Typo, { as: "span", variant: "body", weight: "bold", children: "\uB300\uD654 \uC2A4\uD06C\uB9BD\uD2B8" }),
5371
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5304
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_themes23.Flex, { direction: "column", gap: "2", style: { minWidth: 0 }, children: [
5305
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_themes7.Box, { children: [
5306
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
5307
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Typo, { as: "span", variant: "body", weight: "bold", children: "\uB300\uD654 \uC2A4\uD06C\uB9BD\uD2B8" }),
5308
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5372
5309
  Typo,
5373
5310
  {
5374
5311
  as: "span",
5375
5312
  color: "gray",
5376
- style: { fontSize: "0.75rem", flexShrink: 0 },
5377
- variant: "body",
5378
- children: canSync ? "\uC7AC\uC0DD \uC704\uCE58\uC5D0 \uB9DE\uCDB0 \uD45C\uC2DC" : "\uD0C0\uC784\uB77C\uC778 \uBE44\uB3D9\uAE30"
5313
+ variant: "caption",
5314
+ children: canSync ? "" : "\uD0C0\uC784\uB77C\uC778 \uAE30\uB2A5 \uC0AC\uC6A9 \uBD88\uAC00"
5379
5315
  }
5380
5316
  )
5381
5317
  ] }),
5382
- partnerName ? /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Typo, { as: "p", color: "gray", mt: "1", style: { fontSize: "0.75rem" }, variant: "body", children: [
5318
+ partnerName ? /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Typo, { as: "p", color: "gray", mt: "1", variant: "body", children: [
5383
5319
  "\uC0C1\uB300 \xB7 ",
5384
5320
  partnerName
5385
5321
  ] }) : null,
5386
- speechShare ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_themes7.Box, { mt: "2", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(SpeechShareBar2, { share: speechShare }) }) : null
5322
+ speechShare ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_themes7.Box, { mt: "2", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SpeechShareBar, { share: speechShare }) }) : null
5387
5323
  ] }),
5388
- lines.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: "\uB300\uD654 \uC2A4\uD06C\uB9BD\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) : /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_themes7.Box, { style: { maxHeight: 440, overflowY: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_themes23.Flex, { direction: "column", gap: "1", children: lines.map((line, i) => {
5324
+ lines.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: "\uB300\uD654 \uC2A4\uD06C\uB9BD\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) : /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_themes7.Box, { style: { maxHeight: 440, overflowY: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_themes23.Flex, { direction: "column", gap: "1", children: lines.map((line, i) => {
5389
5325
  const isUser = line.speaker === "user";
5390
5326
  const isActive = i === activeIndex;
5391
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
5327
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
5392
5328
  import_themes23.Flex,
5393
5329
  {
5394
5330
  align: "start",
@@ -5404,47 +5340,45 @@ function ScriptTranscript({
5404
5340
  background: isActive ? "var(--accent-a3)" : "transparent"
5405
5341
  },
5406
5342
  children: [
5407
- canSync ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5343
+ canSync ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5408
5344
  Typo,
5409
5345
  {
5410
5346
  as: "span",
5411
5347
  mono: true,
5412
5348
  style: {
5413
5349
  color: isActive ? "var(--accent-11)" : "var(--gray-9)",
5414
- fontSize: "0.75rem",
5415
5350
  flexShrink: 0,
5416
5351
  minWidth: 32,
5417
5352
  lineHeight: "1.7"
5418
5353
  },
5419
- variant: "body",
5354
+ variant: "caption",
5420
5355
  children: formatTimestamp(line.startMs)
5421
5356
  }
5422
5357
  ) : null,
5423
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5358
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5424
5359
  Typo,
5425
5360
  {
5426
5361
  as: "span",
5427
5362
  style: {
5428
5363
  color: isUser ? "var(--accent-11)" : "var(--gray-11)",
5429
- fontSize: "0.8125rem",
5430
5364
  flexShrink: 0,
5431
5365
  minWidth: 28,
5432
5366
  lineHeight: "1.7",
5433
- fontWeight: 700,
5434
5367
  whiteSpace: "nowrap"
5435
5368
  },
5436
5369
  variant: "body",
5370
+ weight: "bold",
5437
5371
  children: isUser ? "\uB098" : "\uC0C1\uB300"
5438
5372
  }
5439
5373
  ),
5440
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
5374
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5441
5375
  Typo,
5442
5376
  {
5443
5377
  as: "span",
5378
+ color: "gray",
5379
+ highContrast: isActive,
5444
5380
  style: {
5445
- fontSize: "0.875rem",
5446
- lineHeight: "1.7",
5447
- color: isActive ? "var(--gray-12)" : "var(--gray-11)"
5381
+ lineHeight: "1.7"
5448
5382
  },
5449
5383
  variant: "body",
5450
5384
  weight: isActive ? "medium" : void 0,
@@ -5460,7 +5394,7 @@ function ScriptTranscript({
5460
5394
  }
5461
5395
 
5462
5396
  // src/app/roleplay/parts/session-replay-dialog.tsx
5463
- var import_jsx_runtime128 = require("react/jsx-runtime");
5397
+ var import_jsx_runtime129 = require("react/jsx-runtime");
5464
5398
  function resolveUrl(raw, disp, resolver) {
5465
5399
  return __async(this, null, function* () {
5466
5400
  if (!raw) return void 0;
@@ -5520,14 +5454,14 @@ function SessionReplayDialog({
5520
5454
  setCurrentMs(el.currentTime * 1e3);
5521
5455
  }
5522
5456
  };
5523
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Dialog.Root, { onOpenChange, open, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Dialog.Content, { maxWidth: "1040px", title: "\uC138\uC158 \uB2E4\uC2DC\uBCF4\uAE30", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
5457
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Dialog.Root, { onOpenChange, open, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Dialog.Content, { maxWidth: "1040px", title: "\uC138\uC158 \uB2E4\uC2DC\uBCF4\uAE30", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
5524
5458
  import_themes24.Grid,
5525
5459
  {
5526
5460
  columns: { initial: "1", md: "minmax(0, 1fr) minmax(0, 1.05fr)" },
5527
5461
  gap: "5",
5528
5462
  mt: "2",
5529
5463
  children: [
5530
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_themes7.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
5464
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
5531
5465
  Tabs.Root,
5532
5466
  {
5533
5467
  onValueChange: (v) => {
@@ -5535,11 +5469,11 @@ function SessionReplayDialog({
5535
5469
  },
5536
5470
  value: tab,
5537
5471
  children: [
5538
- /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Tabs.List, { children: [
5539
- hasVideo ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Tabs.Trigger, { value: "video", children: "\uC601\uC0C1" }) : null,
5540
- hasAudio ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Tabs.Trigger, { value: "audio", children: "\uC624\uB514\uC624" }) : null
5472
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(Tabs.List, { children: [
5473
+ hasVideo ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Tabs.Trigger, { value: "video", children: "\uC601\uC0C1" }) : null,
5474
+ hasAudio ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Tabs.Trigger, { value: "audio", children: "\uC624\uB514\uC624" }) : null
5541
5475
  ] }),
5542
- hasVideo ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Tabs.Content, { value: "video", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5476
+ hasVideo ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Tabs.Content, { value: "video", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5543
5477
  import_themes7.Box,
5544
5478
  {
5545
5479
  mt: "3",
@@ -5548,7 +5482,7 @@ function SessionReplayDialog({
5548
5482
  overflow: "hidden",
5549
5483
  background: "var(--gray-3)"
5550
5484
  },
5551
- children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5485
+ children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5552
5486
  "video",
5553
5487
  {
5554
5488
  controls: true,
@@ -5564,7 +5498,7 @@ function SessionReplayDialog({
5564
5498
  )
5565
5499
  }
5566
5500
  ) }) : null,
5567
- hasAudio ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Tabs.Content, { value: "audio", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_themes7.Box, { mt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5501
+ hasAudio ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Tabs.Content, { value: "audio", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { mt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5568
5502
  "audio",
5569
5503
  {
5570
5504
  controls: true,
@@ -5581,7 +5515,7 @@ function SessionReplayDialog({
5581
5515
  ]
5582
5516
  }
5583
5517
  ) }),
5584
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
5518
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5585
5519
  ScriptTranscript,
5586
5520
  {
5587
5521
  canSync,
@@ -5598,25 +5532,25 @@ function SessionReplayDialog({
5598
5532
  }
5599
5533
 
5600
5534
  // src/app/roleplay/rp-session-detail.tsx
5601
- var import_jsx_runtime129 = require("react/jsx-runtime");
5535
+ var import_jsx_runtime130 = require("react/jsx-runtime");
5602
5536
  function RpSessionDetailSkeleton() {
5603
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { py: "6", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_themes23.Flex, { direction: "column", gap: "6", children: [
5604
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_themes7.Box, { children: [
5605
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Heading2, { size: "7", children: "\uB864\uD50C\uB808\uC789 \uC138\uC158 \uC81C\uBAA9 \uB85C\uB529 \uC911" }) }),
5606
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { mt: "2", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Typo, { as: "p", variant: "body", children: "\uB0A0\uC9DC \xB7 \uC18C\uC694 \uC2DC\uAC04\uC774 \uB85C\uB529\uB418\uB294 \uC601\uC5ED\uC785\uB2C8\uB2E4" }) }) })
5537
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes7.Box, { py: "6", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_themes23.Flex, { direction: "column", gap: "6", children: [
5538
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_themes7.Box, { children: [
5539
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Heading2, { size: "7", children: "\uB864\uD50C\uB808\uC789 \uC138\uC158 \uC81C\uBAA9 \uB85C\uB529 \uC911" }) }),
5540
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes7.Box, { mt: "2", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Typo, { as: "p", variant: "body", children: "\uB0A0\uC9DC \xB7 \uC18C\uC694 \uC2DC\uAC04\uC774 \uB85C\uB529\uB418\uB294 \uC601\uC5ED\uC785\uB2C8\uB2E4" }) }) })
5607
5541
  ] }),
5608
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("section", { children: [
5609
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Heading2, { size: "5", children: "\uC885\uD569 \uC810\uC218" }) }),
5610
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { mt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Card, { variant: "surface", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes23.Flex, { align: "center", direction: "column", gap: "2", py: "3", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Heading2, { size: "7", children: "00" }) }) }) }) })
5542
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("section", { children: [
5543
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Heading2, { size: "5", children: "\uC885\uD569 \uC810\uC218" }) }),
5544
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes7.Box, { mt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Card, { variant: "surface", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes23.Flex, { align: "center", direction: "column", gap: "2", py: "3", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Heading2, { size: "7", children: "00" }) }) }) }) })
5611
5545
  ] }),
5612
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("section", { children: [
5613
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Heading2, { size: "5", children: "\uD3C9\uAC00 \uC9C0\uD45C \uC694\uC57D" }) }),
5614
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { mt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes23.Flex, { direction: "column", gap: "3", children: [0, 1, 2].map((i) => /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Typo, { as: "p", variant: "body", children: "\uD3C9\uAC00 \uC9C0\uD45C \uD56D\uBAA9\uC774 \uB85C\uB529\uB418\uB294 \uC911\uC785\uB2C8\uB2E4" }) }, i)) }) })
5546
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("section", { children: [
5547
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Heading2, { size: "5", children: "\uD3C9\uAC00 \uC9C0\uD45C \uC694\uC57D" }) }),
5548
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes7.Box, { mt: "3", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes23.Flex, { direction: "column", gap: "3", children: [0, 1, 2].map((i) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes41.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Typo, { as: "p", variant: "body", children: "\uD3C9\uAC00 \uC9C0\uD45C \uD56D\uBAA9\uC774 \uB85C\uB529\uB418\uB294 \uC911\uC785\uB2C8\uB2E4" }) }, i)) }) })
5615
5549
  ] })
5616
5550
  ] }) });
5617
5551
  }
5618
5552
  function AnalyzingState() {
5619
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
5553
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
5620
5554
  import_themes23.Flex,
5621
5555
  {
5622
5556
  align: "center",
@@ -5630,9 +5564,9 @@ function AnalyzingState() {
5630
5564
  textAlign: "center"
5631
5565
  },
5632
5566
  children: [
5633
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Heading2, { size: { initial: "4", md: "5" }, weight: "bold", children: "AI \uBD84\uC11D \uC911\uC785\uB2C8\uB2E4" }),
5634
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { mt: "2", style: { maxWidth: "480px" }, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Typo, { as: "p", variant: "body", children: "\uB300\uD654\uC640 \uC0B0\uCD9C\uBB3C\uC740 \uC800\uC7A5\uB418\uC5C8\uACE0, AI\uAC00 \uC9C0\uD45C\uBCC4 \uADFC\uAC70\uC640 \uCF54\uCE6D\uC744 \uC0DD\uC131\uD558\uB294 \uC911\uC785\uB2C8\uB2E4." }) }),
5635
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_themes7.Box, { mt: "4", style: { width: "100%", maxWidth: "280px" }, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Progress, { size: "2", value: 66 }) })
5567
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Heading2, { size: { initial: "4", md: "5" }, weight: "bold", children: "AI \uBD84\uC11D \uC911\uC785\uB2C8\uB2E4" }),
5568
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes7.Box, { mt: "2", style: { maxWidth: "480px" }, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Typo, { as: "p", variant: "body", children: "\uB300\uD654\uC640 \uC0B0\uCD9C\uBB3C\uC740 \uC800\uC7A5\uB418\uC5C8\uACE0, AI\uAC00 \uC9C0\uD45C\uBCC4 \uADFC\uAC70\uC640 \uCF54\uCE6D\uC744 \uC0DD\uC131\uD558\uB294 \uC911\uC785\uB2C8\uB2E4." }) }),
5569
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_themes7.Box, { mt: "4", style: { width: "100%", maxWidth: "280px" }, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Progress, { size: "2", value: 66 }) })
5636
5570
  ]
5637
5571
  }
5638
5572
  );
@@ -5658,11 +5592,11 @@ function RpSessionDetail({
5658
5592
  const hasScript = script !== null && script !== void 0;
5659
5593
  const isAnalyzing = detail.status === "analyzing";
5660
5594
  if (isLoading) {
5661
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(RpSessionDetailSkeleton, {});
5595
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(RpSessionDetailSkeleton, {});
5662
5596
  }
5663
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_themes7.Box, { py: "6", children: [
5664
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_themes23.Flex, { direction: "column", gap: { initial: "5", md: "7" }, children: [
5665
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5597
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_themes7.Box, { py: "6", children: [
5598
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_themes23.Flex, { direction: "column", gap: { initial: "5", md: "7" }, children: [
5599
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
5666
5600
  Header,
5667
5601
  {
5668
5602
  detail,
@@ -5673,7 +5607,7 @@ function RpSessionDetail({
5673
5607
  onResolveMediaUrl
5674
5608
  }
5675
5609
  ),
5676
- isAnalyzing ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(AnalyzingState, {}) : /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5610
+ isAnalyzing ? /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(AnalyzingState, {}) : /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
5677
5611
  Content9,
5678
5612
  {
5679
5613
  detail,
@@ -5684,7 +5618,7 @@ function RpSessionDetail({
5684
5618
  }
5685
5619
  )
5686
5620
  ] }),
5687
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
5621
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
5688
5622
  SessionReplayDialog,
5689
5623
  {
5690
5624
  detail,