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