@tipp/ui 2.10.1 → 2.10.3

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 (190) hide show
  1. package/dist/app/index.js +63 -63
  2. package/dist/app/platform/coach-question-list.js +27 -27
  3. package/dist/app/platform/contents-card.js +27 -27
  4. package/dist/app/platform/curriculum-card.js +2 -2
  5. package/dist/app/platform/edit-coaching-time.js +49 -49
  6. package/dist/app/platform/edit-service-type.js +49 -49
  7. package/dist/app/platform/goal-manage-card-edit.js +50 -50
  8. package/dist/app/platform/goal-manage-card-read.js +27 -27
  9. package/dist/app/platform/on-offline-radio-card.js +49 -49
  10. package/dist/app/platform/report-card.js +27 -27
  11. package/dist/app/platform/reservation-card.js +50 -50
  12. package/dist/app/platform/session-card.js +50 -50
  13. package/dist/app/platform/session-review-simple-read.js +27 -27
  14. package/dist/app/platform/userInfos/coaching-customer-info/index.js +29 -29
  15. package/dist/app/platform/userInfos/coaching-customer-info/large.js +27 -27
  16. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +27 -27
  17. package/dist/app/platform/userInfos/coaching-customer-info/small.js +26 -26
  18. package/dist/app/platform/userInfos/session-user-info-detail.js +26 -26
  19. package/dist/app/platform/userInfos/utils.js +26 -26
  20. package/dist/app/roleplay/index.cjs +348 -423
  21. package/dist/app/roleplay/index.cjs.map +1 -1
  22. package/dist/app/roleplay/index.js +64 -63
  23. package/dist/app/roleplay/parts/analysis-section.js +26 -26
  24. package/dist/app/roleplay/parts/coaching-panel.js +27 -27
  25. package/dist/app/roleplay/parts/content.cjs +266 -279
  26. package/dist/app/roleplay/parts/content.cjs.map +1 -1
  27. package/dist/app/roleplay/parts/content.js +60 -59
  28. package/dist/app/roleplay/parts/header.cjs +2 -2
  29. package/dist/app/roleplay/parts/header.cjs.map +1 -1
  30. package/dist/app/roleplay/parts/header.js +27 -27
  31. package/dist/app/roleplay/parts/score-summary.cjs +32 -46
  32. package/dist/app/roleplay/parts/score-summary.cjs.map +1 -1
  33. package/dist/app/roleplay/parts/score-summary.js +28 -27
  34. package/dist/app/roleplay/parts/score-trend-section.cjs +1 -1
  35. package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -1
  36. package/dist/app/roleplay/parts/score-trend-section.js +53 -53
  37. package/dist/app/roleplay/parts/script-transcript.cjs +29 -37
  38. package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -1
  39. package/dist/app/roleplay/parts/script-transcript.js +28 -27
  40. package/dist/app/roleplay/parts/section-nav.cjs +3 -2
  41. package/dist/app/roleplay/parts/section-nav.cjs.map +1 -1
  42. package/dist/app/roleplay/parts/section-nav.js +27 -27
  43. package/dist/app/roleplay/parts/session-replay-dialog.cjs +39 -47
  44. package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -1
  45. package/dist/app/roleplay/parts/session-replay-dialog.js +29 -28
  46. package/dist/app/roleplay/parts/speech-share-bar.cjs +2171 -0
  47. package/dist/app/roleplay/parts/speech-share-bar.cjs.map +1 -0
  48. package/dist/app/roleplay/parts/speech-share-bar.d.cts +9 -0
  49. package/dist/app/roleplay/parts/speech-share-bar.d.ts +9 -0
  50. package/dist/app/roleplay/parts/speech-share-bar.js +96 -0
  51. package/dist/app/roleplay/parts/speech-share-bar.js.map +1 -0
  52. package/dist/app/roleplay/parts/step-detail.js +26 -26
  53. package/dist/app/roleplay/parts/step-summary.cjs +2 -2
  54. package/dist/app/roleplay/parts/step-summary.cjs.map +1 -1
  55. package/dist/app/roleplay/parts/step-summary.js +30 -30
  56. package/dist/app/roleplay/rp-session-detail.cjs +348 -423
  57. package/dist/app/roleplay/rp-session-detail.cjs.map +1 -1
  58. package/dist/app/roleplay/rp-session-detail.js +64 -63
  59. package/dist/atoms/index.js +61 -61
  60. package/dist/{chunk-O332K3SW.js → chunk-2H635UNE.js} +2 -2
  61. package/dist/{chunk-RBU2TRYY.js → chunk-3FVDFMKP.js} +9 -9
  62. package/dist/{chunk-U2EAXN3Y.js → chunk-3ZJVSSAA.js} +7 -7
  63. package/dist/{chunk-X3TBEGPA.js → chunk-54GRMFDC.js} +4 -4
  64. package/dist/{chunk-FJEDSUGU.js → chunk-66SUBB2N.js} +5 -5
  65. package/dist/{chunk-SOKGYD5B.js → chunk-6UWQKH6U.js} +2 -2
  66. package/dist/{chunk-QMAINJ4G.js → chunk-77J4AZEO.js} +6 -6
  67. package/dist/chunk-77J4AZEO.js.map +1 -0
  68. package/dist/{chunk-WYHDQK2S.js → chunk-A5AZWTXV.js} +7 -7
  69. package/dist/{chunk-3DZIX4CE.js → chunk-AHAGCAQR.js} +7 -7
  70. package/dist/{chunk-3UGBMKSQ.js → chunk-AS3JVRQ3.js} +2 -2
  71. package/dist/{chunk-NKW6BO5R.js → chunk-DIISQDYA.js} +4 -3
  72. package/dist/chunk-DIISQDYA.js.map +1 -0
  73. package/dist/{chunk-DPMDQA3O.js → chunk-EXMCCYI2.js} +4 -4
  74. package/dist/{chunk-D4U2ZV2A.js → chunk-H533TE6M.js} +4 -4
  75. package/dist/{chunk-V7KAHLW2.js → chunk-HNAZV4MI.js} +5 -5
  76. package/dist/{chunk-CGLDFUOY.js → chunk-JTVBWQJW.js} +4 -4
  77. package/dist/{chunk-CUS3ORMD.js → chunk-K4QH4R3O.js} +4 -4
  78. package/dist/{chunk-C4INJWFV.js → chunk-KQIUOEBS.js} +4 -4
  79. package/dist/{chunk-EJXZXUD2.js → chunk-L4KGHM2H.js} +10 -10
  80. package/dist/{chunk-OUDDTPEN.js → chunk-NVBAOOAT.js} +4 -4
  81. package/dist/{chunk-ZE36DFOC.js → chunk-OBJA26HX.js} +7 -7
  82. package/dist/{chunk-32WIS4L7.js → chunk-PBKV2YMF.js} +9 -9
  83. package/dist/chunk-PBKV2YMF.js.map +1 -0
  84. package/dist/{chunk-LRNO4W2P.js → chunk-PS525SZS.js} +5 -5
  85. package/dist/{chunk-VBXZIIUA.js → chunk-PVDHXFLT.js} +4 -4
  86. package/dist/{chunk-4GH4R4VJ.js → chunk-QOVPEQS3.js} +4 -4
  87. package/dist/{chunk-5IGBFB67.js → chunk-QVGQBTSJ.js} +10 -10
  88. package/dist/{chunk-CBYIPRND.js → chunk-RBWD6IKY.js} +4 -4
  89. package/dist/{chunk-OPIVSYLN.js → chunk-RJ7XSZ2V.js} +4 -4
  90. package/dist/{chunk-WLKK5L3P.js → chunk-RJN4QT5J.js} +7 -7
  91. package/dist/{chunk-EHDUKUML.js → chunk-RNGEVYY5.js} +12 -72
  92. package/dist/chunk-RNGEVYY5.js.map +1 -0
  93. package/dist/{chunk-N242VJOP.js → chunk-RPQWRKBW.js} +5 -5
  94. package/dist/{chunk-YHP75Y5K.js → chunk-RZW6FVML.js} +2 -2
  95. package/dist/{chunk-YHP75Y5K.js.map → chunk-RZW6FVML.js.map} +1 -1
  96. package/dist/{chunk-ISSUGCCY.js → chunk-SX46O67F.js} +4 -4
  97. package/dist/{chunk-JCZXPONS.js → chunk-TDWMI7ZT.js} +3 -3
  98. package/dist/{chunk-74PR3ZWJ.js → chunk-UAUA3PMP.js} +4 -4
  99. package/dist/{chunk-NK6S7ZMB.js → chunk-UMLYWHB2.js} +4 -4
  100. package/dist/{chunk-Q2FDF2AB.js → chunk-V4QYGHOJ.js} +7 -7
  101. package/dist/chunk-W72CR2TG.js +71 -0
  102. package/dist/chunk-W72CR2TG.js.map +1 -0
  103. package/dist/{chunk-SQ3FYBJT.js → chunk-WJ35Y2IU.js} +2 -2
  104. package/dist/{chunk-EBFQFOUQ.js → chunk-WVY3C64M.js} +3 -3
  105. package/dist/chunk-WVY3C64M.js.map +1 -0
  106. package/dist/{chunk-N3FMP27I.js → chunk-XMZYZJTH.js} +4 -4
  107. package/dist/{chunk-LK2H4QTJ.js → chunk-YYVSUTXO.js} +4 -4
  108. package/dist/{chunk-GA6W62DO.js → chunk-ZIHVLMT5.js} +4 -4
  109. package/dist/{chunk-6YIKOYBQ.js → chunk-ZQLHRK36.js} +8 -76
  110. package/dist/chunk-ZQLHRK36.js.map +1 -0
  111. package/dist/context/index.js +1 -1
  112. package/dist/index.js +112 -112
  113. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +8 -8
  114. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +6 -6
  115. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +2 -2
  116. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +2 -2
  117. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +1 -1
  118. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +3 -3
  119. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +11 -11
  120. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +2 -2
  121. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +12 -12
  122. package/dist/molecules/curriculumV2/CurriculumContents/index.js +14 -14
  123. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +1 -1
  124. package/dist/molecules/curriculumV2/index.js +16 -16
  125. package/dist/molecules/description-json-render.js +2 -2
  126. package/dist/molecules/dynamic-field.js +3 -3
  127. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +3 -3
  128. package/dist/molecules/dynamic-form-editor-field-list-panel.js +2 -2
  129. package/dist/molecules/dynamic-form-editor-issues-panel.js +2 -2
  130. package/dist/molecules/dynamic-form-editor-preview-panel.js +6 -6
  131. package/dist/molecules/dynamic-form-editor.js +11 -11
  132. package/dist/molecules/dynamic-form.js +4 -4
  133. package/dist/molecules/expand-table/index.js +1 -1
  134. package/dist/molecules/index.js +40 -40
  135. package/dist/molecules/learning-post.js +3 -3
  136. package/dist/molecules/stepper.js +2 -2
  137. package/dist/molecules/tag-selector.js +3 -3
  138. package/dist/molecules/time-select.js +1 -1
  139. package/dist/molecules/training-info-guideline.js +1 -1
  140. package/dist/utils/index.js +3 -3
  141. package/package.json +1 -1
  142. package/src/app/roleplay/parts/content.tsx +3 -3
  143. package/src/app/roleplay/parts/header.tsx +3 -2
  144. package/src/app/roleplay/parts/score-summary.tsx +4 -57
  145. package/src/app/roleplay/parts/score-trend-section.tsx +1 -1
  146. package/src/app/roleplay/parts/script-transcript.tsx +9 -64
  147. package/src/app/roleplay/parts/section-nav.tsx +3 -2
  148. package/src/app/roleplay/parts/speech-share-bar.tsx +54 -0
  149. package/src/app/roleplay/parts/step-summary.tsx +2 -4
  150. package/dist/chunk-32WIS4L7.js.map +0 -1
  151. package/dist/chunk-6YIKOYBQ.js.map +0 -1
  152. package/dist/chunk-EBFQFOUQ.js.map +0 -1
  153. package/dist/chunk-EHDUKUML.js.map +0 -1
  154. package/dist/chunk-NKW6BO5R.js.map +0 -1
  155. package/dist/chunk-QMAINJ4G.js.map +0 -1
  156. /package/dist/{chunk-O332K3SW.js.map → chunk-2H635UNE.js.map} +0 -0
  157. /package/dist/{chunk-RBU2TRYY.js.map → chunk-3FVDFMKP.js.map} +0 -0
  158. /package/dist/{chunk-U2EAXN3Y.js.map → chunk-3ZJVSSAA.js.map} +0 -0
  159. /package/dist/{chunk-X3TBEGPA.js.map → chunk-54GRMFDC.js.map} +0 -0
  160. /package/dist/{chunk-FJEDSUGU.js.map → chunk-66SUBB2N.js.map} +0 -0
  161. /package/dist/{chunk-SOKGYD5B.js.map → chunk-6UWQKH6U.js.map} +0 -0
  162. /package/dist/{chunk-WYHDQK2S.js.map → chunk-A5AZWTXV.js.map} +0 -0
  163. /package/dist/{chunk-3DZIX4CE.js.map → chunk-AHAGCAQR.js.map} +0 -0
  164. /package/dist/{chunk-3UGBMKSQ.js.map → chunk-AS3JVRQ3.js.map} +0 -0
  165. /package/dist/{chunk-DPMDQA3O.js.map → chunk-EXMCCYI2.js.map} +0 -0
  166. /package/dist/{chunk-D4U2ZV2A.js.map → chunk-H533TE6M.js.map} +0 -0
  167. /package/dist/{chunk-V7KAHLW2.js.map → chunk-HNAZV4MI.js.map} +0 -0
  168. /package/dist/{chunk-CGLDFUOY.js.map → chunk-JTVBWQJW.js.map} +0 -0
  169. /package/dist/{chunk-CUS3ORMD.js.map → chunk-K4QH4R3O.js.map} +0 -0
  170. /package/dist/{chunk-C4INJWFV.js.map → chunk-KQIUOEBS.js.map} +0 -0
  171. /package/dist/{chunk-EJXZXUD2.js.map → chunk-L4KGHM2H.js.map} +0 -0
  172. /package/dist/{chunk-OUDDTPEN.js.map → chunk-NVBAOOAT.js.map} +0 -0
  173. /package/dist/{chunk-ZE36DFOC.js.map → chunk-OBJA26HX.js.map} +0 -0
  174. /package/dist/{chunk-LRNO4W2P.js.map → chunk-PS525SZS.js.map} +0 -0
  175. /package/dist/{chunk-VBXZIIUA.js.map → chunk-PVDHXFLT.js.map} +0 -0
  176. /package/dist/{chunk-4GH4R4VJ.js.map → chunk-QOVPEQS3.js.map} +0 -0
  177. /package/dist/{chunk-5IGBFB67.js.map → chunk-QVGQBTSJ.js.map} +0 -0
  178. /package/dist/{chunk-CBYIPRND.js.map → chunk-RBWD6IKY.js.map} +0 -0
  179. /package/dist/{chunk-OPIVSYLN.js.map → chunk-RJ7XSZ2V.js.map} +0 -0
  180. /package/dist/{chunk-WLKK5L3P.js.map → chunk-RJN4QT5J.js.map} +0 -0
  181. /package/dist/{chunk-N242VJOP.js.map → chunk-RPQWRKBW.js.map} +0 -0
  182. /package/dist/{chunk-ISSUGCCY.js.map → chunk-SX46O67F.js.map} +0 -0
  183. /package/dist/{chunk-JCZXPONS.js.map → chunk-TDWMI7ZT.js.map} +0 -0
  184. /package/dist/{chunk-74PR3ZWJ.js.map → chunk-UAUA3PMP.js.map} +0 -0
  185. /package/dist/{chunk-NK6S7ZMB.js.map → chunk-UMLYWHB2.js.map} +0 -0
  186. /package/dist/{chunk-Q2FDF2AB.js.map → chunk-V4QYGHOJ.js.map} +0 -0
  187. /package/dist/{chunk-SQ3FYBJT.js.map → chunk-WJ35Y2IU.js.map} +0 -0
  188. /package/dist/{chunk-N3FMP27I.js.map → chunk-XMZYZJTH.js.map} +0 -0
  189. /package/dist/{chunk-LK2H4QTJ.js.map → chunk-YYVSUTXO.js.map} +0 -0
  190. /package/dist/{chunk-GA6W62DO.js.map → chunk-ZIHVLMT5.js.map} +0 -0
@@ -18,12 +18,15 @@ import {
18
18
  import {
19
19
  Select
20
20
  } from "./chunk-YXMB4MCM.js";
21
- import {
22
- Checkbox
23
- } from "./chunk-ZCGH6TJ3.js";
24
21
  import {
25
22
  IconButton
26
23
  } from "./chunk-7RJYF5L3.js";
24
+ import {
25
+ Card
26
+ } from "./chunk-RP2RGCAW.js";
27
+ import {
28
+ Checkbox
29
+ } from "./chunk-ZCGH6TJ3.js";
27
30
  import {
28
31
  Typo
29
32
  } from "./chunk-L4QQGIYQ.js";
@@ -33,9 +36,6 @@ import {
33
36
  import {
34
37
  Button
35
38
  } from "./chunk-2LCH3PDF.js";
36
- import {
37
- Card
38
- } from "./chunk-RP2RGCAW.js";
39
39
  import {
40
40
  ChevronDownIcon,
41
41
  ChevronUpIcon,
@@ -686,4 +686,4 @@ function DynamicFormEditorFieldEditorPanel(props) {
686
686
  export {
687
687
  DynamicFormEditorFieldEditorPanel
688
688
  };
689
- //# sourceMappingURL=chunk-3DZIX4CE.js.map
689
+ //# sourceMappingURL=chunk-AHAGCAQR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ScriptTranscript
3
- } from "./chunk-EHDUKUML.js";
3
+ } from "./chunk-RNGEVYY5.js";
4
4
  import {
5
5
  computeSpeechShare,
6
6
  isLengthClose
@@ -163,4 +163,4 @@ function SessionReplayDialog({
163
163
  export {
164
164
  SessionReplayDialog
165
165
  };
166
- //# sourceMappingURL=chunk-3UGBMKSQ.js.map
166
+ //# sourceMappingURL=chunk-AS3JVRQ3.js.map
@@ -71,8 +71,9 @@ function StepMetricBadge({ step }) {
71
71
  Typo,
72
72
  {
73
73
  as: "span",
74
+ color: "gray",
74
75
  mono: true,
75
- style: { flexShrink: 0, color: "var(--gray-11)" },
76
+ style: { flexShrink: 0 },
76
77
  variant: "body",
77
78
  weight: "medium",
78
79
  children: scoreText
@@ -227,8 +228,8 @@ function SectionNav({ items, steps }) {
227
228
  Typo,
228
229
  {
229
230
  as: "span",
231
+ color: "gray",
230
232
  mono: true,
231
- style: { color: "var(--gray-11)" },
232
233
  variant: "body",
233
234
  weight: "medium",
234
235
  children: stepCode(step)
@@ -261,4 +262,4 @@ function SectionNav({ items, steps }) {
261
262
  export {
262
263
  SectionNav
263
264
  };
264
- //# sourceMappingURL=chunk-NKW6BO5R.js.map
265
+ //# sourceMappingURL=chunk-DIISQDYA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/roleplay/parts/section-nav.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport { Box, Flex, Progress, Typo } from '../../../atoms';\nimport type { RpReportStep } from '../utils/report-parse';\nimport {\n stepCode,\n stepColor,\n stepGradeLabel,\n stepRatio,\n stepScoreText,\n stepVars,\n} from '../utils/session-utils';\n\nexport interface SectionNavItem {\n id: string;\n label: string;\n score?: number | null;\n max?: number;\n}\n\nexport interface SectionNavProps {\n items: SectionNavItem[];\n steps: RpReportStep[];\n}\n\nconst NAV_ICONS: Record<string, React.ReactNode> = {\n 'score-summary': (\n <>\n <path d=\"m12 14 4-4\" />\n <path d=\"M3.34 19a10 10 0 1 1 17.32 0\" />\n </>\n ),\n strengths: (\n <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\" />\n ),\n improvements: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n </>\n ),\n 'score-trend': (\n <>\n <path d=\"M3 3v18h18\" />\n <path d=\"m19 8-5 5-4-4-4 4\" />\n </>\n ),\n 'step-summary': (\n <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\" />\n ),\n 'step-detail': (\n <>\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <path d=\"M3 6h.01M3 12h.01M3 18h.01\" />\n </>\n ),\n coaching: <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />,\n};\n\nfunction NavIcon({ children }: { children: React.ReactNode }): React.ReactElement {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"13\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n style={{ flexShrink: 0 }}\n viewBox=\"0 0 24 24\"\n width=\"13\"\n >\n {children}\n </svg>\n );\n}\n\nfunction StepMetricBadge({ step }: { step: RpReportStep }): React.ReactElement | null {\n const scoreText = stepScoreText(step);\n if (scoreText !== null) {\n return (\n <Typo\n as=\"span\"\n color=\"gray\"\n mono\n style={{ flexShrink: 0 }}\n variant=\"body\"\n weight=\"medium\"\n >\n {scoreText}\n </Typo>\n );\n }\n const gradeLabel = stepGradeLabel(step);\n if (gradeLabel !== null) {\n return (\n <Typo\n as=\"span\"\n mono\n style={{ flexShrink: 0, color: stepVars(step).fg }}\n variant=\"body\"\n weight=\"medium\"\n >\n {gradeLabel}\n </Typo>\n );\n }\n return null;\n}\n\nfunction useScrollSpy(ids: string[]): string | null {\n const [activeId, setActiveId] = useState<string | null>(null);\n const watchKey = ids.join(',');\n\n useEffect(() => {\n const els = ids\n .map((id) => document.getElementById(id))\n .filter((el): el is HTMLElement => el !== null);\n if (els.length === 0) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n const visible = entries\n .filter((e) => e.isIntersecting)\n .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n if (visible[0]) setActiveId(visible[0].target.id);\n },\n { rootMargin: '0px 0px -72% 0px', threshold: 0 }\n );\n els.forEach((el) => {\n observer.observe(el);\n });\n return () => {\n observer.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- watchKey가 ids 변경을 대표한다\n }, [watchKey]);\n\n return activeId;\n}\n\nfunction scrollToId(id: string): void {\n document.getElementById(id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n}\n\nexport function SectionNav({ items, steps }: SectionNavProps): React.ReactElement {\n const activeId = useScrollSpy(items.map((i) => i.id));\n const stepDetailActive = activeId === 'step-summary' || activeId === 'step-detail';\n\n return (\n <Box asChild className=\"rp-section-nav\">\n <aside>\n <Box>\n <Typo\n as=\"p\"\n color=\"gray\"\n style={{\n paddingLeft: 'calc(var(--space-3) + 2px)',\n paddingBottom: 'var(--space-1)',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n 목차\n </Typo>\n <Box asChild>\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {items.map((item) => {\n const active = activeId === item.id;\n return (\n <li key={item.id}>\n <button\n aria-current={active ? 'true' : undefined}\n className=\"rp-nav-btn\"\n onClick={() => {\n scrollToId(item.id);\n }}\n style={\n active\n ? {\n borderLeftColor: 'var(--accent-9)',\n background: 'var(--accent-a2)',\n }\n : undefined\n }\n type=\"button\"\n >\n <Flex align=\"center\" gap=\"2\" style={{ minWidth: 0 }}>\n {NAV_ICONS[item.id] ? (\n <NavIcon>{NAV_ICONS[item.id]}</NavIcon>\n ) : null}\n <Typo\n as=\"span\"\n truncate\n variant=\"body\"\n weight={active ? 'medium' : 'regular'}\n >\n {item.label}\n </Typo>\n </Flex>\n {typeof item.score === 'number' ? (\n <Typo as=\"span\" mono style={{ flexShrink: 0 }} variant=\"body\">\n <Typo\n as=\"span\"\n style={{\n color: active ? 'var(--gray-12)' : 'var(--gray-11)',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n {item.score}\n </Typo>\n <Typo as=\"span\" style={{ color: 'var(--gray-9)' }} variant=\"body\">\n /{item.max}\n </Typo>\n </Typo>\n ) : null}\n </button>\n </li>\n );\n })}\n </ul>\n </Box>\n\n {steps.length > 0 && (\n <Box mt=\"3\" pt=\"3\" style={{ borderTop: '1px solid var(--gray-4)' }}>\n <Box pb=\"1\" px=\"3\">\n <Typo\n as=\"span\"\n style={{\n color: stepDetailActive ? 'var(--gray-12)' : 'var(--gray-10)',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n 단계별 점수\n </Typo>\n </Box>\n <Box asChild>\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {steps.map((step) => {\n const ratio = stepRatio(step);\n return (\n <li key={step.key}>\n <button\n className=\"rp-jump-btn\"\n onClick={() => {\n scrollToId(`step-${step.key}`);\n }}\n type=\"button\"\n >\n <Flex align=\"center\" gap=\"2\" justify=\"between\">\n <Typo\n as=\"span\"\n style={{ minWidth: 0 }}\n truncate\n variant=\"body\"\n >\n <Typo\n as=\"span\"\n color=\"gray\"\n mono\n variant=\"body\"\n weight=\"medium\"\n >\n {stepCode(step)}\n </Typo>{' '}\n <Typo\n as=\"span\"\n style={{ color: 'var(--gray-9)' }}\n variant=\"body\"\n >\n {step.label}\n </Typo>\n </Typo>\n <StepMetricBadge step={step} />\n </Flex>\n {ratio !== null ? (\n <Box mt=\"1\">\n <Progress color={stepColor(step)} size=\"1\" value={ratio * 100} />\n </Box>\n ) : null}\n </button>\n </li>\n );\n })}\n </ul>\n </Box>\n </Box>\n )}\n </Box>\n </aside>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -7,6 +7,9 @@ import {
7
7
  import {
8
8
  Heading
9
9
  } from "./chunk-USGOLLYO.js";
10
+ import {
11
+ Badge
12
+ } from "./chunk-BK74U562.js";
10
13
  import {
11
14
  Box
12
15
  } from "./chunk-4Y5BEXVN.js";
@@ -20,9 +23,6 @@ import {
20
23
  ArrowRightIcon,
21
24
  TimerIcon
22
25
  } from "./chunk-VOME2TE7.js";
23
- import {
24
- Badge
25
- } from "./chunk-BK74U562.js";
26
26
 
27
27
  // src/app/platform/curriculum-card.tsx
28
28
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -96,4 +96,4 @@ function CurriculumCard(props) {
96
96
  export {
97
97
  CurriculumCard
98
98
  };
99
- //# sourceMappingURL=chunk-DPMDQA3O.js.map
99
+ //# sourceMappingURL=chunk-EXMCCYI2.js.map
@@ -1,12 +1,12 @@
1
+ import {
2
+ Card
3
+ } from "./chunk-RP2RGCAW.js";
1
4
  import {
2
5
  Typo
3
6
  } from "./chunk-L4QQGIYQ.js";
4
7
  import {
5
8
  Flex
6
9
  } from "./chunk-25HMMI7R.js";
7
- import {
8
- Card
9
- } from "./chunk-RP2RGCAW.js";
10
10
 
11
11
  // src/molecules/dynamic-form-editor-issues-panel.tsx
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -36,4 +36,4 @@ function DynamicFormEditorIssuesPanel(props) {
36
36
  export {
37
37
  DynamicFormEditorIssuesPanel
38
38
  };
39
- //# sourceMappingURL=chunk-D4U2ZV2A.js.map
39
+ //# sourceMappingURL=chunk-H533TE6M.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  DynamicForm
3
- } from "./chunk-SQ3FYBJT.js";
3
+ } from "./chunk-WJ35Y2IU.js";
4
+ import {
5
+ Card
6
+ } from "./chunk-RP2RGCAW.js";
4
7
  import {
5
8
  Typo
6
9
  } from "./chunk-L4QQGIYQ.js";
7
10
  import {
8
11
  Flex
9
12
  } from "./chunk-25HMMI7R.js";
10
- import {
11
- Card
12
- } from "./chunk-RP2RGCAW.js";
13
13
 
14
14
  // src/molecules/dynamic-form-editor-preview-panel.tsx
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -25,4 +25,4 @@ function DynamicFormEditorPreviewPanel(props) {
25
25
  export {
26
26
  DynamicFormEditorPreviewPanel
27
27
  };
28
- //# sourceMappingURL=chunk-V7KAHLW2.js.map
28
+ //# sourceMappingURL=chunk-HNAZV4MI.js.map
@@ -7,6 +7,9 @@ import {
7
7
  import {
8
8
  Grid
9
9
  } from "./chunk-EGEQY3KT.js";
10
+ import {
11
+ Card
12
+ } from "./chunk-RP2RGCAW.js";
10
13
  import {
11
14
  Box
12
15
  } from "./chunk-4Y5BEXVN.js";
@@ -19,9 +22,6 @@ import {
19
22
  import {
20
23
  Button
21
24
  } from "./chunk-2LCH3PDF.js";
22
- import {
23
- Card
24
- } from "./chunk-RP2RGCAW.js";
25
25
 
26
26
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.tsx
27
27
  import { useCallback, useMemo, useState } from "react";
@@ -98,4 +98,4 @@ var review_question_radio_default = ReviewQuestionRadio;
98
98
  export {
99
99
  review_question_radio_default
100
100
  };
101
- //# sourceMappingURL=chunk-CGLDFUOY.js.map
101
+ //# sourceMappingURL=chunk-JTVBWQJW.js.map
@@ -4,6 +4,9 @@ import {
4
4
  import {
5
5
  Heading
6
6
  } from "./chunk-USGOLLYO.js";
7
+ import {
8
+ Badge
9
+ } from "./chunk-BK74U562.js";
7
10
  import {
8
11
  Box
9
12
  } from "./chunk-4Y5BEXVN.js";
@@ -22,9 +25,6 @@ import {
22
25
  import {
23
26
  AspectRatio
24
27
  } from "./chunk-EAXUQEO5.js";
25
- import {
26
- Badge
27
- } from "./chunk-BK74U562.js";
28
28
  import {
29
29
  __spreadProps,
30
30
  __spreadValues
@@ -160,4 +160,4 @@ function LearningPost(props) {
160
160
  export {
161
161
  LearningPost
162
162
  };
163
- //# sourceMappingURL=chunk-CUS3ORMD.js.map
163
+ //# sourceMappingURL=chunk-K4QH4R3O.js.map
@@ -16,6 +16,9 @@ import {
16
16
  import {
17
17
  Heading
18
18
  } from "./chunk-USGOLLYO.js";
19
+ import {
20
+ Card
21
+ } from "./chunk-RP2RGCAW.js";
19
22
  import {
20
23
  BulletText
21
24
  } from "./chunk-75EY7LBP.js";
@@ -25,9 +28,6 @@ import {
25
28
  import {
26
29
  Button
27
30
  } from "./chunk-2LCH3PDF.js";
28
- import {
29
- Card
30
- } from "./chunk-RP2RGCAW.js";
31
31
  import {
32
32
  Pencil1Icon
33
33
  } from "./chunk-VOME2TE7.js";
@@ -141,4 +141,4 @@ function SessionCard(props) {
141
141
  export {
142
142
  SessionCard
143
143
  };
144
- //# sourceMappingURL=chunk-C4INJWFV.js.map
144
+ //# sourceMappingURL=chunk-KQIUOEBS.js.map
@@ -7,15 +7,21 @@ import {
7
7
  import {
8
8
  toast
9
9
  } from "./chunk-LNPFV5BJ.js";
10
- import {
11
- Inset
12
- } from "./chunk-XQOL7UBI.js";
13
10
  import {
14
11
  Grid
15
12
  } from "./chunk-EGEQY3KT.js";
13
+ import {
14
+ Inset
15
+ } from "./chunk-XQOL7UBI.js";
16
16
  import {
17
17
  Heading
18
18
  } from "./chunk-USGOLLYO.js";
19
+ import {
20
+ Card
21
+ } from "./chunk-RP2RGCAW.js";
22
+ import {
23
+ Badge
24
+ } from "./chunk-BK74U562.js";
19
25
  import {
20
26
  Box
21
27
  } from "./chunk-4Y5BEXVN.js";
@@ -31,16 +37,10 @@ import {
31
37
  import {
32
38
  Button
33
39
  } from "./chunk-2LCH3PDF.js";
34
- import {
35
- Card
36
- } from "./chunk-RP2RGCAW.js";
37
40
  import {
38
41
  ArrowRightIcon,
39
42
  Cross1Icon
40
43
  } from "./chunk-VOME2TE7.js";
41
- import {
42
- Badge
43
- } from "./chunk-BK74U562.js";
44
44
  import {
45
45
  __spreadProps,
46
46
  __spreadValues
@@ -225,4 +225,4 @@ function ReservationCard(props) {
225
225
  export {
226
226
  ReservationCard
227
227
  };
228
- //# sourceMappingURL=chunk-EJXZXUD2.js.map
228
+ //# sourceMappingURL=chunk-L4KGHM2H.js.map
@@ -4,12 +4,12 @@ import {
4
4
  import {
5
5
  RadioGroup
6
6
  } from "./chunk-SA7AYYQS.js";
7
- import {
8
- Flex
9
- } from "./chunk-25HMMI7R.js";
10
7
  import {
11
8
  Card
12
9
  } from "./chunk-RP2RGCAW.js";
10
+ import {
11
+ Flex
12
+ } from "./chunk-25HMMI7R.js";
13
13
 
14
14
  // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.tsx
15
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -34,4 +34,4 @@ var review_question_satisfaction_option_default = ReviewQuestionSatisfisRadio;
34
34
  export {
35
35
  review_question_satisfaction_option_default
36
36
  };
37
- //# sourceMappingURL=chunk-OUDDTPEN.js.map
37
+ //# sourceMappingURL=chunk-NVBAOOAT.js.map
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-TFJJKM3W.js";
4
4
  import {
5
5
  Header
6
- } from "./chunk-QMAINJ4G.js";
6
+ } from "./chunk-77J4AZEO.js";
7
7
  import {
8
8
  SessionReplayDialog
9
- } from "./chunk-3UGBMKSQ.js";
9
+ } from "./chunk-AS3JVRQ3.js";
10
10
  import {
11
11
  Content
12
- } from "./chunk-32WIS4L7.js";
12
+ } from "./chunk-PBKV2YMF.js";
13
13
  import {
14
14
  computeSpeechShare
15
15
  } from "./chunk-4YAA25AV.js";
@@ -22,6 +22,9 @@ import {
22
22
  import {
23
23
  Heading
24
24
  } from "./chunk-USGOLLYO.js";
25
+ import {
26
+ Card
27
+ } from "./chunk-RP2RGCAW.js";
25
28
  import {
26
29
  Box
27
30
  } from "./chunk-4Y5BEXVN.js";
@@ -31,9 +34,6 @@ import {
31
34
  import {
32
35
  Flex
33
36
  } from "./chunk-25HMMI7R.js";
34
- import {
35
- Card
36
- } from "./chunk-RP2RGCAW.js";
37
37
 
38
38
  // src/app/roleplay/rp-session-detail.tsx
39
39
  import { useMemo, useState } from "react";
@@ -139,4 +139,4 @@ function RpSessionDetail({
139
139
  export {
140
140
  RpSessionDetail
141
141
  };
142
- //# sourceMappingURL=chunk-ZE36DFOC.js.map
142
+ //# sourceMappingURL=chunk-OBJA26HX.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  StepSummary
3
- } from "./chunk-EBFQFOUQ.js";
3
+ } from "./chunk-WVY3C64M.js";
4
4
  import {
5
5
  ScoreSummary
6
- } from "./chunk-6YIKOYBQ.js";
6
+ } from "./chunk-ZQLHRK36.js";
7
7
  import {
8
8
  ScoreTrendSection
9
- } from "./chunk-YHP75Y5K.js";
9
+ } from "./chunk-RZW6FVML.js";
10
10
  import {
11
11
  SectionNav
12
- } from "./chunk-NKW6BO5R.js";
12
+ } from "./chunk-DIISQDYA.js";
13
13
  import {
14
14
  StepDetail
15
15
  } from "./chunk-KJPBBBVK.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-7MXY3D3Z.js";
23
23
  import {
24
24
  CoachingPanel
25
- } from "./chunk-GA6W62DO.js";
25
+ } from "./chunk-ZIHVLMT5.js";
26
26
  import {
27
27
  Separator
28
28
  } from "./chunk-HYITAA4J.js";
@@ -82,7 +82,7 @@ function Content({
82
82
  strengths.length > 0 ? /* @__PURE__ */ jsx(Box, { id: "strengths", style: { scrollMarginTop }, children: /* @__PURE__ */ jsx(
83
83
  AnalysisSection,
84
84
  {
85
- desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \uC798\uD55C \uC810",
85
+ desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \uAC00\uC7A5 \uB3CB\uBCF4\uC778 \uAC15\uC810\uB4E4\uC774\uC5D0\uC694.",
86
86
  items: strengths,
87
87
  title: "\uAC15\uC810",
88
88
  tone: "good"
@@ -91,7 +91,7 @@ function Content({
91
91
  improvements.length > 0 ? /* @__PURE__ */ jsx(Box, { id: "improvements", style: { scrollMarginTop }, children: /* @__PURE__ */ jsx(
92
92
  AnalysisSection,
93
93
  {
94
- desc: "\uB2E4\uC74C \uC2DC\uB3C4\uC5D0\uC11C \uBCF4\uC644\uD560 \uC810",
94
+ desc: "\uB2E4\uC74C\uC5D0 \uBCF4\uC644\uD55C\uB2E4\uBA74 \uB354 \uB098\uC740 \uACB0\uACFC\uB97C \uC5BB\uC744 \uC218 \uC788\uC744 \uAC70\uC5D0\uC694.",
95
95
  items: improvements,
96
96
  title: "\uAC1C\uC120\uC810",
97
97
  tone: "bad"
@@ -102,7 +102,7 @@ function Content({
102
102
  showStepDetail ? /* @__PURE__ */ jsx(Box, { id: "step-detail", style: { scrollMarginTop }, children: /* @__PURE__ */ jsx(
103
103
  Section,
104
104
  {
105
- desc: "\uB300\uD654 \uD504\uB808\uC784\uC6CC\uD06C \uB2E8\uACC4\uBCC4 \uD3C9\uAC00 \uACB0\uACFC\uC785\uB2C8\uB2E4.",
105
+ desc: "\uC774\uBC88 \uB300\uD654\uC758 \uB354 \uB098\uC544\uC9C8 \uC218 \uC788\uB294 \uBC29\uD5A5\uC744 \uC54C\uB824\uB4DC\uB9B4\uAC8C\uC694.",
106
106
  title: "\uB2E8\uACC4\uBCC4 \uC0C1\uC138 \uBD84\uC11D",
107
107
  children: /* @__PURE__ */ jsx(Flex, { direction: "column", children: steps.map((step, i) => /* @__PURE__ */ jsxs(Box, { children: [
108
108
  i > 0 ? /* @__PURE__ */ jsx(
@@ -128,4 +128,4 @@ function Content({
128
128
  export {
129
129
  Content
130
130
  };
131
- //# sourceMappingURL=chunk-32WIS4L7.js.map
131
+ //# sourceMappingURL=chunk-PBKV2YMF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/roleplay/parts/content.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Box, Flex, Grid, Heading, Separator, Typo } from '../../../atoms';\nimport type { RpSessionDetailData, RpSessionHistoryItem } from '../types';\nimport type { RpReport } from '../utils/report-parse';\nimport { hasStepSignal } from '../utils/session-utils';\nimport type { SpeechShare } from '../utils/session-utils';\nimport { AnalysisSection, Section } from './analysis-section';\nimport { CoachingPanel } from './coaching-panel';\nimport { ScoreSummary } from './score-summary';\nimport { ScoreTrendSection } from './score-trend-section';\nimport { SectionNav } from './section-nav';\nimport type { SectionNavItem } from './section-nav';\nimport { StepDetail } from './step-detail';\nimport { StepSummary } from './step-summary';\n\nexport interface ContentProps {\n detail: RpSessionDetailData;\n report: RpReport;\n history: RpSessionHistoryItem[];\n speechShare: SpeechShare | null;\n scrollMarginTop: string;\n}\n\nexport function Content({\n detail,\n report,\n history,\n speechShare,\n scrollMarginTop,\n}: ContentProps): React.ReactElement {\n const { steps, skills, strengths, improvements } = report;\n const scoreValue = detail.totalScore ?? report.totalScore;\n\n const showTrend = history.length > 1;\n const showStepSummary = steps.length > 0 && steps.some(hasStepSignal);\n const showStepDetail = steps.length > 0;\n\n const navItems: SectionNavItem[] = [\n { id: 'score-summary', label: '종합 점수', score: scoreValue, max: 100 },\n ...(strengths.length > 0 ? [{ id: 'strengths', label: '강점' }] : []),\n ...(improvements.length > 0 ? [{ id: 'improvements', label: '개선점' }] : []),\n ...(showTrend ? [{ id: 'score-trend', label: '총점 추이' }] : []),\n ...(showStepSummary ? [{ id: 'step-summary', label: '평가 단계 요약' }] : []),\n ...(showStepDetail ? [{ id: 'step-detail', label: '단계별 상세 분석' }] : []),\n ...(skills.length > 0 ? [{ id: 'coaching', label: '즉시 적용 스킬' }] : []),\n ];\n\n return (\n <Grid\n align=\"start\"\n columns={{ initial: '1', md: 'minmax(0, 1fr) 224px' }}\n gap=\"7\"\n >\n <Flex direction=\"column\" gap=\"7\">\n {report.frameworkTitle !== null || report.frameworkDescription !== null ? (\n <Box>\n {report.frameworkTitle !== null ? (\n <Heading size=\"5\" weight=\"bold\">\n {report.frameworkTitle}\n </Heading>\n ) : null}\n {report.frameworkDescription !== null ? (\n <Box mt={report.frameworkTitle !== null ? '2' : '0'}>\n <Typo as=\"p\" variant=\"body\">\n {report.frameworkDescription}\n </Typo>\n </Box>\n ) : null}\n </Box>\n ) : null}\n\n <Box id=\"score-summary\" style={{ scrollMarginTop }}>\n <ScoreSummary detail={detail} report={report} speechShare={speechShare} />\n </Box>\n\n {strengths.length > 0 ? (\n <Box id=\"strengths\" style={{ scrollMarginTop }}>\n <AnalysisSection\n desc=\"이번 세션에서 가장 돋보인 강점들이에요.\"\n items={strengths}\n title=\"강점\"\n tone=\"good\"\n />\n </Box>\n ) : null}\n\n {improvements.length > 0 ? (\n <Box id=\"improvements\" style={{ scrollMarginTop }}>\n <AnalysisSection\n desc=\"다음에 보완한다면 더 나은 결과를 얻을 수 있을 거에요.\"\n items={improvements}\n title=\"개선점\"\n tone=\"bad\"\n />\n </Box>\n ) : null}\n\n {showTrend ? (\n <Box id=\"score-trend\" style={{ scrollMarginTop }}>\n <ScoreTrendSection history={history} />\n </Box>\n ) : null}\n\n {showStepSummary ? (\n <Box id=\"step-summary\" style={{ scrollMarginTop }}>\n <StepSummary steps={steps} />\n </Box>\n ) : null}\n\n {showStepDetail ? (\n <Box id=\"step-detail\" style={{ scrollMarginTop }}>\n <Section\n desc=\"이번 대화의 더 나아질 수 있는 방향을 알려드릴게요.\"\n title=\"단계별 상세 분석\"\n >\n <Flex direction=\"column\">\n {steps.map((step, i) => (\n <Box key={step.key}>\n {i > 0 ? (\n <Separator\n mb=\"6\"\n size=\"4\"\n style={{ marginTop: 'calc(var(--space-9) * 1.6)' }}\n />\n ) : null}\n <StepDetail scrollMarginTop={scrollMarginTop} step={step} />\n </Box>\n ))}\n </Flex>\n </Section>\n </Box>\n ) : null}\n\n {skills.length > 0 ? (\n <Box id=\"coaching\" style={{ scrollMarginTop }}>\n <CoachingPanel skills={skills} />\n </Box>\n ) : null}\n </Flex>\n\n <SectionNav items={navItems} steps={showStepDetail ? steps : []} />\n </Grid>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,12 +1,12 @@
1
- import {
2
- start_review_default
3
- } from "./chunk-LK2H4QTJ.js";
4
1
  import {
5
2
  ReviewQuestion_default
6
- } from "./chunk-SOKGYD5B.js";
3
+ } from "./chunk-6UWQKH6U.js";
7
4
  import {
8
5
  complete_review_default
9
6
  } from "./chunk-NVRVOTWZ.js";
7
+ import {
8
+ start_review_default
9
+ } from "./chunk-YYVSUTXO.js";
10
10
  import {
11
11
  CurriculumReviewProvider,
12
12
  useCurriculumReviewContext
@@ -86,4 +86,4 @@ var CurriculumReviewSteps_default = CurriculumReviewSteps;
86
86
  export {
87
87
  CurriculumReviewSteps_default
88
88
  };
89
- //# sourceMappingURL=chunk-LRNO4W2P.js.map
89
+ //# sourceMappingURL=chunk-PS525SZS.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ Avatar
3
+ } from "./chunk-GPZXD762.js";
1
4
  import {
2
5
  Typo
3
6
  } from "./chunk-L4QQGIYQ.js";
@@ -7,9 +10,6 @@ import {
7
10
  import {
8
11
  CheckIcon
9
12
  } from "./chunk-VOME2TE7.js";
10
- import {
11
- Avatar
12
- } from "./chunk-GPZXD762.js";
13
13
 
14
14
  // src/molecules/stepper.tsx
15
15
  import { createContext, Children, useContext, useMemo } from "react";
@@ -166,4 +166,4 @@ var Stepper = {
166
166
  export {
167
167
  Stepper
168
168
  };
169
- //# sourceMappingURL=chunk-VBXZIIUA.js.map
169
+ //# sourceMappingURL=chunk-PVDHXFLT.js.map
@@ -10,15 +10,15 @@ import {
10
10
  import {
11
11
  TextField
12
12
  } from "./chunk-6NPTJBFE.js";
13
+ import {
14
+ Card
15
+ } from "./chunk-RP2RGCAW.js";
13
16
  import {
14
17
  Flex
15
18
  } from "./chunk-25HMMI7R.js";
16
19
  import {
17
20
  Button
18
21
  } from "./chunk-2LCH3PDF.js";
19
- import {
20
- Card
21
- } from "./chunk-RP2RGCAW.js";
22
22
  import {
23
23
  __spreadValues
24
24
  } from "./chunk-CRTRMMJ7.js";
@@ -142,4 +142,4 @@ function GoalManageCardEdit(props) {
142
142
  export {
143
143
  GoalManageCardEdit
144
144
  };
145
- //# sourceMappingURL=chunk-4GH4R4VJ.js.map
145
+ //# sourceMappingURL=chunk-QOVPEQS3.js.map
@@ -7,15 +7,21 @@ import {
7
7
  import {
8
8
  Grid
9
9
  } from "./chunk-EGEQY3KT.js";
10
- import {
11
- Collapse
12
- } from "./chunk-NFDQJVFA.js";
13
10
  import {
14
11
  Heading
15
12
  } from "./chunk-USGOLLYO.js";
16
13
  import {
17
14
  IconButton
18
15
  } from "./chunk-7RJYF5L3.js";
16
+ import {
17
+ Card
18
+ } from "./chunk-RP2RGCAW.js";
19
+ import {
20
+ Collapse
21
+ } from "./chunk-NFDQJVFA.js";
22
+ import {
23
+ Badge
24
+ } from "./chunk-BK74U562.js";
19
25
  import {
20
26
  Box
21
27
  } from "./chunk-4Y5BEXVN.js";
@@ -28,9 +34,6 @@ import {
28
34
  import {
29
35
  Button
30
36
  } from "./chunk-2LCH3PDF.js";
31
- import {
32
- Card
33
- } from "./chunk-RP2RGCAW.js";
34
37
  import {
35
38
  ChevronDownIcon,
36
39
  ChevronUpIcon,
@@ -38,9 +41,6 @@ import {
38
41
  RocketIcon,
39
42
  TrashIcon
40
43
  } from "./chunk-VOME2TE7.js";
41
- import {
42
- Badge
43
- } from "./chunk-BK74U562.js";
44
44
  import {
45
45
  __spreadValues
46
46
  } from "./chunk-CRTRMMJ7.js";
@@ -162,4 +162,4 @@ function GoalManageCardRead(props) {
162
162
  export {
163
163
  GoalManageCardRead
164
164
  };
165
- //# sourceMappingURL=chunk-5IGBFB67.js.map
165
+ //# sourceMappingURL=chunk-QVGQBTSJ.js.map
@@ -4,15 +4,15 @@ import {
4
4
  import {
5
5
  Select
6
6
  } from "./chunk-YXMB4MCM.js";
7
+ import {
8
+ Card
9
+ } from "./chunk-RP2RGCAW.js";
7
10
  import {
8
11
  Typo
9
12
  } from "./chunk-L4QQGIYQ.js";
10
13
  import {
11
14
  Flex
12
15
  } from "./chunk-25HMMI7R.js";
13
- import {
14
- Card
15
- } from "./chunk-RP2RGCAW.js";
16
16
 
17
17
  // src/molecules/dynamic-form-editor-field-list-panel.tsx
18
18
  import { useMemo } from "react";
@@ -103,4 +103,4 @@ function DynamicFormEditorFieldListPanel(props) {
103
103
  export {
104
104
  DynamicFormEditorFieldListPanel
105
105
  };
106
- //# sourceMappingURL=chunk-CBYIPRND.js.map
106
+ //# sourceMappingURL=chunk-RBWD6IKY.js.map
@@ -12,15 +12,15 @@ import {
12
12
  import {
13
13
  Heading
14
14
  } from "./chunk-USGOLLYO.js";
15
+ import {
16
+ Card
17
+ } from "./chunk-RP2RGCAW.js";
15
18
  import {
16
19
  Box
17
20
  } from "./chunk-4Y5BEXVN.js";
18
21
  import {
19
22
  Flex
20
23
  } from "./chunk-25HMMI7R.js";
21
- import {
22
- Card
23
- } from "./chunk-RP2RGCAW.js";
24
24
 
25
25
  // src/app/platform/userInfos/coaching-customer-info/large.tsx
26
26
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -61,4 +61,4 @@ function CoachingCustomerInfoLarge({
61
61
  export {
62
62
  CoachingCustomerInfoLarge
63
63
  };
64
- //# sourceMappingURL=chunk-OPIVSYLN.js.map
64
+ //# sourceMappingURL=chunk-RJ7XSZ2V.js.map
@@ -7,18 +7,18 @@ import {
7
7
  import {
8
8
  Grid
9
9
  } from "./chunk-EGEQY3KT.js";
10
- import {
11
- Box
12
- } from "./chunk-4Y5BEXVN.js";
13
- import {
14
- Typo
15
- } from "./chunk-L4QQGIYQ.js";
16
10
  import {
17
11
  Callout
18
12
  } from "./chunk-EIKFXUNC.js";
19
13
  import {
20
14
  Card
21
15
  } from "./chunk-RP2RGCAW.js";
16
+ import {
17
+ Box
18
+ } from "./chunk-4Y5BEXVN.js";
19
+ import {
20
+ Typo
21
+ } from "./chunk-L4QQGIYQ.js";
22
22
  import {
23
23
  BellIcon
24
24
  } from "./chunk-VOME2TE7.js";
@@ -84,4 +84,4 @@ var review_question_text_default = ReviewQuestionText;
84
84
  export {
85
85
  review_question_text_default
86
86
  };
87
- //# sourceMappingURL=chunk-WLKK5L3P.js.map
87
+ //# sourceMappingURL=chunk-RJN4QT5J.js.map