@tipp/ui 2.8.0 → 2.10.0

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 (568) hide show
  1. package/dist/app/index.cjs +49 -4
  2. package/dist/app/index.cjs.map +1 -1
  3. package/dist/app/index.js +98 -97
  4. package/dist/app/platform/coach-question-list.cjs +49 -4
  5. package/dist/app/platform/coach-question-list.cjs.map +1 -1
  6. package/dist/app/platform/coach-question-list.js +33 -32
  7. package/dist/app/platform/contents-card.cjs +49 -4
  8. package/dist/app/platform/contents-card.cjs.map +1 -1
  9. package/dist/app/platform/contents-card.js +33 -32
  10. package/dist/app/platform/curriculum-card.cjs +49 -4
  11. package/dist/app/platform/curriculum-card.cjs.map +1 -1
  12. package/dist/app/platform/curriculum-card.js +5 -4
  13. package/dist/app/platform/edit-coaching-time.cjs +49 -4
  14. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  15. package/dist/app/platform/edit-coaching-time.js +80 -79
  16. package/dist/app/platform/edit-service-type.cjs +49 -4
  17. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  18. package/dist/app/platform/edit-service-type.js +81 -80
  19. package/dist/app/platform/goal-manage-card-edit.cjs +49 -4
  20. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  21. package/dist/app/platform/goal-manage-card-edit.js +80 -79
  22. package/dist/app/platform/goal-manage-card-read.cjs +49 -4
  23. package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
  24. package/dist/app/platform/goal-manage-card-read.js +33 -32
  25. package/dist/app/platform/on-offline-radio-card.cjs +49 -4
  26. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  27. package/dist/app/platform/on-offline-radio-card.js +80 -79
  28. package/dist/app/platform/report-card.cjs +49 -4
  29. package/dist/app/platform/report-card.cjs.map +1 -1
  30. package/dist/app/platform/report-card.js +33 -32
  31. package/dist/app/platform/reservation-card.cjs +49 -4
  32. package/dist/app/platform/reservation-card.cjs.map +1 -1
  33. package/dist/app/platform/reservation-card.js +81 -80
  34. package/dist/app/platform/session-card.cjs +49 -4
  35. package/dist/app/platform/session-card.cjs.map +1 -1
  36. package/dist/app/platform/session-card.js +83 -82
  37. package/dist/app/platform/session-review-simple-read.cjs +49 -4
  38. package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
  39. package/dist/app/platform/session-review-simple-read.js +33 -32
  40. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +49 -4
  41. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
  42. package/dist/app/platform/userInfos/coaching-customer-info/index.js +36 -35
  43. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +49 -4
  44. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
  45. package/dist/app/platform/userInfos/coaching-customer-info/large.js +33 -32
  46. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +49 -4
  47. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
  48. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +33 -32
  49. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +49 -4
  50. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
  51. package/dist/app/platform/userInfos/coaching-customer-info/small.js +33 -32
  52. package/dist/app/platform/userInfos/session-user-info-detail.cjs +49 -4
  53. package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
  54. package/dist/app/platform/userInfos/session-user-info-detail.js +33 -32
  55. package/dist/app/platform/userInfos/utils.cjs +49 -4
  56. package/dist/app/platform/userInfos/utils.cjs.map +1 -1
  57. package/dist/app/platform/userInfos/utils.js +32 -31
  58. package/dist/app/roleplay/chart/session-chart.cjs +351 -0
  59. package/dist/app/roleplay/chart/session-chart.cjs.map +1 -0
  60. package/dist/app/roleplay/chart/session-chart.d.cts +16 -0
  61. package/dist/app/roleplay/chart/session-chart.d.ts +16 -0
  62. package/dist/app/roleplay/chart/session-chart.js +14 -0
  63. package/dist/app/roleplay/index.cjs +5706 -0
  64. package/dist/app/roleplay/index.cjs.map +1 -0
  65. package/dist/app/roleplay/index.d.cts +4 -0
  66. package/dist/app/roleplay/index.d.ts +4 -0
  67. package/dist/app/roleplay/index.js +182 -0
  68. package/dist/app/roleplay/index.js.map +1 -0
  69. package/dist/app/roleplay/parts/analysis-section.cjs +2178 -0
  70. package/dist/app/roleplay/parts/analysis-section.cjs.map +1 -0
  71. package/dist/app/roleplay/parts/analysis-section.d.cts +17 -0
  72. package/dist/app/roleplay/parts/analysis-section.d.ts +17 -0
  73. package/dist/app/roleplay/parts/analysis-section.js +97 -0
  74. package/dist/app/roleplay/parts/analysis-section.js.map +1 -0
  75. package/dist/app/roleplay/parts/coaching-panel.cjs +2191 -0
  76. package/dist/app/roleplay/parts/coaching-panel.cjs.map +1 -0
  77. package/dist/app/roleplay/parts/coaching-panel.d.cts +8 -0
  78. package/dist/app/roleplay/parts/coaching-panel.d.ts +8 -0
  79. package/dist/app/roleplay/parts/coaching-panel.js +95 -0
  80. package/dist/app/roleplay/parts/coaching-panel.js.map +1 -0
  81. package/dist/app/roleplay/parts/content.cjs +4683 -0
  82. package/dist/app/roleplay/parts/content.cjs.map +1 -0
  83. package/dist/app/roleplay/parts/content.d.cts +15 -0
  84. package/dist/app/roleplay/parts/content.d.ts +15 -0
  85. package/dist/app/roleplay/parts/content.js +174 -0
  86. package/dist/app/roleplay/parts/content.js.map +1 -0
  87. package/dist/app/roleplay/parts/header.cjs +2300 -0
  88. package/dist/app/roleplay/parts/header.cjs.map +1 -0
  89. package/dist/app/roleplay/parts/header.d.cts +13 -0
  90. package/dist/app/roleplay/parts/header.d.ts +13 -0
  91. package/dist/app/roleplay/parts/header.js +96 -0
  92. package/dist/app/roleplay/parts/header.js.map +1 -0
  93. package/dist/app/roleplay/parts/score-summary.cjs +2276 -0
  94. package/dist/app/roleplay/parts/score-summary.cjs.map +1 -0
  95. package/dist/app/roleplay/parts/score-summary.d.cts +12 -0
  96. package/dist/app/roleplay/parts/score-summary.d.ts +12 -0
  97. package/dist/app/roleplay/parts/score-summary.js +96 -0
  98. package/dist/app/roleplay/parts/score-summary.js.map +1 -0
  99. package/dist/app/roleplay/parts/score-trend-section.cjs +3686 -0
  100. package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -0
  101. package/dist/app/roleplay/parts/score-trend-section.d.cts +14 -0
  102. package/dist/app/roleplay/parts/score-trend-section.d.ts +14 -0
  103. package/dist/app/roleplay/parts/score-trend-section.js +168 -0
  104. package/dist/app/roleplay/parts/score-trend-section.js.map +1 -0
  105. package/dist/app/roleplay/parts/script-transcript.cjs +2288 -0
  106. package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -0
  107. package/dist/app/roleplay/parts/script-transcript.d.cts +15 -0
  108. package/dist/app/roleplay/parts/script-transcript.d.ts +15 -0
  109. package/dist/app/roleplay/parts/script-transcript.js +96 -0
  110. package/dist/app/roleplay/parts/script-transcript.js.map +1 -0
  111. package/dist/app/roleplay/parts/section-nav.cjs +2433 -0
  112. package/dist/app/roleplay/parts/section-nav.cjs.map +1 -0
  113. package/dist/app/roleplay/parts/section-nav.d.cts +15 -0
  114. package/dist/app/roleplay/parts/section-nav.d.ts +15 -0
  115. package/dist/app/roleplay/parts/section-nav.js +96 -0
  116. package/dist/app/roleplay/parts/section-nav.js.map +1 -0
  117. package/dist/app/roleplay/parts/session-replay-dialog.cjs +2598 -0
  118. package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -0
  119. package/dist/app/roleplay/parts/session-replay-dialog.d.cts +14 -0
  120. package/dist/app/roleplay/parts/session-replay-dialog.d.ts +14 -0
  121. package/dist/app/roleplay/parts/session-replay-dialog.js +97 -0
  122. package/dist/app/roleplay/parts/session-replay-dialog.js.map +1 -0
  123. package/dist/app/roleplay/parts/step-detail.cjs +2311 -0
  124. package/dist/app/roleplay/parts/step-detail.cjs.map +1 -0
  125. package/dist/app/roleplay/parts/step-detail.d.cts +9 -0
  126. package/dist/app/roleplay/parts/step-detail.d.ts +9 -0
  127. package/dist/app/roleplay/parts/step-detail.js +96 -0
  128. package/dist/app/roleplay/parts/step-detail.js.map +1 -0
  129. package/dist/app/roleplay/parts/step-radar.cjs +463 -0
  130. package/dist/app/roleplay/parts/step-radar.cjs.map +1 -0
  131. package/dist/app/roleplay/parts/step-radar.d.cts +8 -0
  132. package/dist/app/roleplay/parts/step-radar.d.ts +8 -0
  133. package/dist/app/roleplay/parts/step-radar.js +14 -0
  134. package/dist/app/roleplay/parts/step-radar.js.map +1 -0
  135. package/dist/app/roleplay/parts/step-summary.cjs +2651 -0
  136. package/dist/app/roleplay/parts/step-summary.cjs.map +1 -0
  137. package/dist/app/roleplay/parts/step-summary.d.cts +8 -0
  138. package/dist/app/roleplay/parts/step-summary.d.ts +8 -0
  139. package/dist/app/roleplay/parts/step-summary.js +101 -0
  140. package/dist/app/roleplay/parts/step-summary.js.map +1 -0
  141. package/dist/app/roleplay/rp-session-detail.cjs +5703 -0
  142. package/dist/app/roleplay/rp-session-detail.cjs.map +1 -0
  143. package/dist/app/roleplay/rp-session-detail.d.cts +17 -0
  144. package/dist/app/roleplay/rp-session-detail.d.ts +17 -0
  145. package/dist/app/roleplay/rp-session-detail.js +179 -0
  146. package/dist/app/roleplay/rp-session-detail.js.map +1 -0
  147. package/dist/app/roleplay/types.cjs +19 -0
  148. package/dist/app/roleplay/types.cjs.map +1 -0
  149. package/dist/app/roleplay/types.d.cts +42 -0
  150. package/dist/app/roleplay/types.d.ts +42 -0
  151. package/dist/app/roleplay/types.js +2 -0
  152. package/dist/app/roleplay/types.js.map +1 -0
  153. package/dist/app/roleplay/utils/report-parse.cjs +285 -0
  154. package/dist/app/roleplay/utils/report-parse.cjs.map +1 -0
  155. package/dist/app/roleplay/utils/report-parse.d.cts +57 -0
  156. package/dist/app/roleplay/utils/report-parse.d.ts +57 -0
  157. package/dist/app/roleplay/utils/report-parse.js +8 -0
  158. package/dist/app/roleplay/utils/report-parse.js.map +1 -0
  159. package/dist/app/roleplay/utils/report-parse.test.cjs +491 -0
  160. package/dist/app/roleplay/utils/report-parse.test.cjs.map +1 -0
  161. package/dist/app/roleplay/utils/report-parse.test.d.cts +2 -0
  162. package/dist/app/roleplay/utils/report-parse.test.d.ts +2 -0
  163. package/dist/app/roleplay/utils/report-parse.test.js +237 -0
  164. package/dist/app/roleplay/utils/report-parse.test.js.map +1 -0
  165. package/dist/app/roleplay/utils/session-utils.cjs +204 -0
  166. package/dist/app/roleplay/utils/session-utils.cjs.map +1 -0
  167. package/dist/app/roleplay/utils/session-utils.d.cts +38 -0
  168. package/dist/app/roleplay/utils/session-utils.d.ts +38 -0
  169. package/dist/app/roleplay/utils/session-utils.js +46 -0
  170. package/dist/app/roleplay/utils/session-utils.js.map +1 -0
  171. package/dist/atoms/bullet-text.cjs +29 -2
  172. package/dist/atoms/bullet-text.cjs.map +1 -1
  173. package/dist/atoms/bullet-text.js +3 -2
  174. package/dist/atoms/dialog.cjs +29 -2
  175. package/dist/atoms/dialog.cjs.map +1 -1
  176. package/dist/atoms/dialog.js +3 -2
  177. package/dist/atoms/ellipsis-tooltip.cjs +29 -2
  178. package/dist/atoms/ellipsis-tooltip.cjs.map +1 -1
  179. package/dist/atoms/ellipsis-tooltip.js +3 -2
  180. package/dist/atoms/field-error-wrapper.cjs +29 -2
  181. package/dist/atoms/field-error-wrapper.cjs.map +1 -1
  182. package/dist/atoms/field-error-wrapper.js +3 -2
  183. package/dist/atoms/heading.cjs +29 -2
  184. package/dist/atoms/heading.cjs.map +1 -1
  185. package/dist/atoms/heading.d.cts +2 -0
  186. package/dist/atoms/heading.d.ts +2 -0
  187. package/dist/atoms/heading.js +2 -1
  188. package/dist/atoms/index.cjs +49 -4
  189. package/dist/atoms/index.cjs.map +1 -1
  190. package/dist/atoms/index.js +67 -66
  191. package/dist/atoms/list.cjs +29 -2
  192. package/dist/atoms/list.cjs.map +1 -1
  193. package/dist/atoms/list.js +3 -2
  194. package/dist/atoms/pagination.cjs +29 -2
  195. package/dist/atoms/pagination.cjs.map +1 -1
  196. package/dist/atoms/pagination.js +3 -2
  197. package/dist/atoms/typo.cjs +29 -2
  198. package/dist/atoms/typo.cjs.map +1 -1
  199. package/dist/atoms/typo.d.cts +2 -0
  200. package/dist/atoms/typo.d.ts +2 -0
  201. package/dist/atoms/typo.js +2 -1
  202. package/dist/chunk-2TOASXPK.js +131 -0
  203. package/dist/chunk-2TOASXPK.js.map +1 -0
  204. package/dist/chunk-36W7VD2Z.js +13 -0
  205. package/dist/chunk-36W7VD2Z.js.map +1 -0
  206. package/dist/{chunk-7XMPNH2X.js → chunk-3DZIX4CE.js} +8 -8
  207. package/dist/chunk-3UGBMKSQ.js +166 -0
  208. package/dist/chunk-3UGBMKSQ.js.map +1 -0
  209. package/dist/{chunk-XFFVIWAD.js → chunk-47QYYEMG.js} +2 -2
  210. package/dist/{chunk-VVJEXKCB.js → chunk-4GH4R4VJ.js} +6 -6
  211. package/dist/chunk-4YAA25AV.js +161 -0
  212. package/dist/chunk-4YAA25AV.js.map +1 -0
  213. package/dist/{chunk-MTESLX7K.js → chunk-5IGBFB67.js} +12 -12
  214. package/dist/chunk-5QIT4URV.js +87 -0
  215. package/dist/chunk-5QIT4URV.js.map +1 -0
  216. package/dist/{chunk-LXL7GJUM.js → chunk-5RIAIE2J.js} +3 -3
  217. package/dist/{chunk-R43F6ZWT.js → chunk-64DSUMXA.js} +2 -2
  218. package/dist/{chunk-C2FRAZT2.js → chunk-6OT5OYGM.js} +2 -2
  219. package/dist/chunk-6YIKOYBQ.js +185 -0
  220. package/dist/chunk-6YIKOYBQ.js.map +1 -0
  221. package/dist/{chunk-6Q26H64H.js → chunk-74PR3ZWJ.js} +6 -6
  222. package/dist/{chunk-IA4WXGVH.js → chunk-75EY7LBP.js} +2 -2
  223. package/dist/chunk-7MXY3D3Z.js +84 -0
  224. package/dist/chunk-7MXY3D3Z.js.map +1 -0
  225. package/dist/{chunk-77YN5S26.js → chunk-AELKCD6B.js} +3 -3
  226. package/dist/{chunk-L5WSNVSD.js → chunk-AHYOAFOU.js} +3 -3
  227. package/dist/{chunk-6JPGF4MB.js → chunk-AT5PAJLW.js} +2 -2
  228. package/dist/{chunk-P6YCD2AV.js → chunk-C4INJWFV.js} +9 -9
  229. package/dist/{chunk-SGJBQKUD.js → chunk-C6HO3IGE.js} +2 -2
  230. package/dist/{chunk-7NBGSPZU.js → chunk-CBYIPRND.js} +5 -5
  231. package/dist/{chunk-UIMDXYPP.js → chunk-CGLDFUOY.js} +6 -6
  232. package/dist/{chunk-DUXYDGHX.js → chunk-CUS3ORMD.js} +6 -6
  233. package/dist/{chunk-UILGIMXL.js → chunk-D4U2ZV2A.js} +5 -5
  234. package/dist/{chunk-PRLNOTMV.js → chunk-DPMDQA3O.js} +6 -6
  235. package/dist/chunk-EBFQFOUQ.js +138 -0
  236. package/dist/chunk-EBFQFOUQ.js.map +1 -0
  237. package/dist/chunk-EHDUKUML.js +183 -0
  238. package/dist/chunk-EHDUKUML.js.map +1 -0
  239. package/dist/{chunk-6XASFDTI.js → chunk-EJXZXUD2.js} +15 -15
  240. package/dist/{chunk-QFSMOKC6.js → chunk-FAL6S2XK.js} +2 -2
  241. package/dist/{chunk-GMEGTXIV.js → chunk-FJEDSUGU.js} +5 -5
  242. package/dist/{chunk-WLG6GG26.js → chunk-G3KQN32M.js} +3 -3
  243. package/dist/chunk-GA6W62DO.js +101 -0
  244. package/dist/chunk-GA6W62DO.js.map +1 -0
  245. package/dist/{chunk-72ZC7DBY.js → chunk-GNB4A34H.js} +2 -2
  246. package/dist/{chunk-KEFAYPBO.js → chunk-IRFNKOKQ.js} +4 -4
  247. package/dist/{chunk-5BIICWFT.js → chunk-ISSUGCCY.js} +6 -6
  248. package/dist/{chunk-PZDN6K6R.js → chunk-JCZXPONS.js} +4 -4
  249. package/dist/{chunk-7TRT4QTP.js → chunk-K4RZTENM.js} +2 -2
  250. package/dist/{chunk-Z54XTEAF.js → chunk-KDS7OQOY.js} +2 -2
  251. package/dist/chunk-KJPBBBVK.js +142 -0
  252. package/dist/chunk-KJPBBBVK.js.map +1 -0
  253. package/dist/{chunk-YXFHD2PY.js → chunk-L4QQGIYQ.js} +24 -3
  254. package/dist/chunk-L4QQGIYQ.js.map +1 -0
  255. package/dist/{chunk-YCV3HR4J.js → chunk-LAGJDIVU.js} +2 -2
  256. package/dist/{chunk-3UJEOHQT.js → chunk-LK2H4QTJ.js} +6 -6
  257. package/dist/{chunk-UHAMISMF.js → chunk-LRNO4W2P.js} +4 -4
  258. package/dist/{chunk-5FLPPHUZ.js → chunk-MQKIIIBW.js} +2 -2
  259. package/dist/{chunk-6YPAN4D3.js → chunk-N242VJOP.js} +5 -5
  260. package/dist/{chunk-PWUCBBQP.js → chunk-N3FMP27I.js} +6 -6
  261. package/dist/{chunk-NIMF5FJI.js → chunk-NK6S7ZMB.js} +6 -6
  262. package/dist/chunk-NKW6BO5R.js +264 -0
  263. package/dist/chunk-NKW6BO5R.js.map +1 -0
  264. package/dist/{chunk-IIA2BVJI.js → chunk-NVRVOTWZ.js} +3 -3
  265. package/dist/{chunk-GTTZJ2Y7.js → chunk-O332K3SW.js} +4 -4
  266. package/dist/{chunk-LCR5R743.js → chunk-OOM522XP.js} +2 -2
  267. package/dist/{chunk-FIQJUO66.js → chunk-OPIVSYLN.js} +5 -5
  268. package/dist/{chunk-SQZVLRUH.js → chunk-OUDDTPEN.js} +5 -5
  269. package/dist/chunk-OUP3VFXG.js +1 -0
  270. package/dist/chunk-OUP3VFXG.js.map +1 -0
  271. package/dist/{chunk-URSBI6BQ.js → chunk-OW2QNTK3.js} +3 -3
  272. package/dist/{chunk-GBT2BBZS.js → chunk-P2H3VCIB.js} +3 -3
  273. package/dist/{chunk-TF3RLGKA.js → chunk-P4DJ5F6Z.js} +4 -4
  274. package/dist/{chunk-YWLFDIBP.js → chunk-PAUEQXYG.js} +2 -2
  275. package/dist/{chunk-XOCVP6IW.js → chunk-Q2FDF2AB.js} +8 -8
  276. package/dist/{chunk-VFWRW7TA.js → chunk-QLNAAZJX.js} +2 -2
  277. package/dist/{chunk-C5CEDLV6.js → chunk-QLOYGKKM.js} +2 -2
  278. package/dist/chunk-QMAINJ4G.js +190 -0
  279. package/dist/chunk-QMAINJ4G.js.map +1 -0
  280. package/dist/{chunk-DDYPJWZV.js → chunk-RBU2TRYY.js} +10 -10
  281. package/dist/{chunk-FFGGO6E4.js → chunk-RRC4WFG3.js} +2 -2
  282. package/dist/{chunk-5SXTL6NO.js → chunk-RWJUXAFY.js} +2 -2
  283. package/dist/{chunk-BZVA4RGI.js → chunk-S4MEMFKG.js} +2 -2
  284. package/dist/{chunk-PTUL6MDB.js → chunk-SINRU2A6.js} +2 -2
  285. package/dist/{chunk-UA2HDDD4.js → chunk-SOKGYD5B.js} +6 -6
  286. package/dist/{chunk-BZCUF5K6.js → chunk-SQ3FYBJT.js} +5 -5
  287. package/dist/chunk-T7LKMJVA.js +142 -0
  288. package/dist/chunk-T7LKMJVA.js.map +1 -0
  289. package/dist/chunk-TFJJKM3W.js +261 -0
  290. package/dist/chunk-TFJJKM3W.js.map +1 -0
  291. package/dist/{chunk-5FXPD4NE.js → chunk-U2EAXN3Y.js} +7 -7
  292. package/dist/{chunk-B7SKF5RD.js → chunk-U7HF53KK.js} +4 -4
  293. package/dist/{chunk-YIVIBIK2.js → chunk-USGOLLYO.js} +24 -3
  294. package/dist/chunk-USGOLLYO.js.map +1 -0
  295. package/dist/{chunk-Z2U2YQOG.js → chunk-USL6PICI.js} +2 -2
  296. package/dist/chunk-UXAEOCOH.js +150 -0
  297. package/dist/chunk-UXAEOCOH.js.map +1 -0
  298. package/dist/{chunk-DHP7LYK7.js → chunk-UXH2XIB2.js} +2 -2
  299. package/dist/{chunk-U5LZO2EI.js → chunk-V7KAHLW2.js} +6 -6
  300. package/dist/{chunk-VYUQXEXS.js → chunk-VBXZIIUA.js} +5 -5
  301. package/dist/{chunk-IYAN33WP.js → chunk-VVWQZK5L.js} +3 -3
  302. package/dist/{chunk-DBXQFZBB.js → chunk-WLKK5L3P.js} +8 -8
  303. package/dist/chunk-WTS75RUC.js +1 -0
  304. package/dist/chunk-WTS75RUC.js.map +1 -0
  305. package/dist/{chunk-ANFQJ6YW.js → chunk-WYHDQK2S.js} +9 -9
  306. package/dist/{chunk-RVHE3UVN.js → chunk-X3TBEGPA.js} +6 -6
  307. package/dist/chunk-XM4GWPXC.js +236 -0
  308. package/dist/chunk-XM4GWPXC.js.map +1 -0
  309. package/dist/{chunk-AEDSRBBB.js → chunk-XWHBJY5V.js} +3 -3
  310. package/dist/{chunk-SHFN2BOB.js → chunk-ZGTGEBQX.js} +2 -2
  311. package/dist/context/dynamic-form-context.cjs +49 -4
  312. package/dist/context/dynamic-form-context.cjs.map +1 -1
  313. package/dist/context/dynamic-form-context.js +5 -4
  314. package/dist/context/index.cjs +49 -4
  315. package/dist/context/index.cjs.map +1 -1
  316. package/dist/context/index.js +5 -4
  317. package/dist/index.cjs +51 -4
  318. package/dist/index.cjs.map +1 -1
  319. package/dist/index.css +76 -0
  320. package/dist/index.d.cts +1 -0
  321. package/dist/index.d.ts +1 -0
  322. package/dist/index.js +161 -157
  323. package/dist/molecules/autocomplete-textfield.cjs +29 -2
  324. package/dist/molecules/autocomplete-textfield.cjs.map +1 -1
  325. package/dist/molecules/autocomplete-textfield.js +3 -2
  326. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs +49 -4
  327. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs.map +1 -1
  328. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +14 -13
  329. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs +29 -2
  330. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs.map +1 -1
  331. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +3 -2
  332. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs +29 -2
  333. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs.map +1 -1
  334. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +10 -9
  335. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs +49 -4
  336. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs.map +1 -1
  337. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +4 -3
  338. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs +29 -2
  339. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs.map +1 -1
  340. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +5 -4
  341. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs +29 -2
  342. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs.map +1 -1
  343. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +5 -4
  344. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs +29 -2
  345. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs.map +1 -1
  346. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +5 -4
  347. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs +29 -2
  348. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs.map +1 -1
  349. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +6 -5
  350. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs +49 -4
  351. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs.map +1 -1
  352. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +4 -3
  353. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs +49 -4
  354. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs.map +1 -1
  355. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +18 -17
  356. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs +49 -4
  357. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs.map +1 -1
  358. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +5 -4
  359. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs +29 -2
  360. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
  361. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +3 -2
  362. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs +29 -2
  363. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
  364. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +3 -2
  365. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs +49 -4
  366. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
  367. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +20 -19
  368. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +49 -4
  369. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
  370. package/dist/molecules/curriculumV2/CurriculumContents/index.js +23 -22
  371. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs +29 -2
  372. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs.map +1 -1
  373. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +3 -2
  374. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs +29 -2
  375. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs.map +1 -1
  376. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +4 -3
  377. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs +29 -2
  378. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs.map +1 -1
  379. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.js +3 -2
  380. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs +29 -2
  381. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
  382. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +8 -7
  383. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs +29 -2
  384. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs.map +1 -1
  385. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +6 -5
  386. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs +49 -4
  387. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
  388. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +4 -3
  389. package/dist/molecules/curriculumV2/index.cjs +49 -4
  390. package/dist/molecules/curriculumV2/index.cjs.map +1 -1
  391. package/dist/molecules/curriculumV2/index.js +33 -32
  392. package/dist/molecules/date-picker/date-picker-button.cjs +49 -4
  393. package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
  394. package/dist/molecules/date-picker/date-picker-button.js +5 -4
  395. package/dist/molecules/date-picker/index.cjs +49 -4
  396. package/dist/molecules/date-picker/index.cjs.map +1 -1
  397. package/dist/molecules/date-picker/index.js +4 -3
  398. package/dist/molecules/description-json-render.cjs +29 -2
  399. package/dist/molecules/description-json-render.cjs.map +1 -1
  400. package/dist/molecules/description-json-render.js +5 -4
  401. package/dist/molecules/download-card.cjs +29 -2
  402. package/dist/molecules/download-card.cjs.map +1 -1
  403. package/dist/molecules/download-card.js +3 -2
  404. package/dist/molecules/dynamic-field.cjs +49 -4
  405. package/dist/molecules/dynamic-field.cjs.map +1 -1
  406. package/dist/molecules/dynamic-field.js +7 -6
  407. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +29 -2
  408. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -1
  409. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +5 -4
  410. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +29 -2
  411. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -1
  412. package/dist/molecules/dynamic-form-editor-field-list-panel.js +4 -3
  413. package/dist/molecules/dynamic-form-editor-issues-panel.cjs +29 -2
  414. package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -1
  415. package/dist/molecules/dynamic-form-editor-issues-panel.js +4 -3
  416. package/dist/molecules/dynamic-form-editor-preview-panel.cjs +49 -4
  417. package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -1
  418. package/dist/molecules/dynamic-form-editor-preview-panel.js +10 -9
  419. package/dist/molecules/dynamic-form-editor.cjs +49 -4
  420. package/dist/molecules/dynamic-form-editor.cjs.map +1 -1
  421. package/dist/molecules/dynamic-form-editor.js +16 -15
  422. package/dist/molecules/dynamic-form.cjs +49 -4
  423. package/dist/molecules/dynamic-form.cjs.map +1 -1
  424. package/dist/molecules/dynamic-form.js +8 -7
  425. package/dist/molecules/expand-table/index.cjs +29 -2
  426. package/dist/molecules/expand-table/index.cjs.map +1 -1
  427. package/dist/molecules/expand-table/index.js +5 -4
  428. package/dist/molecules/force-refresh.cjs +29 -2
  429. package/dist/molecules/force-refresh.cjs.map +1 -1
  430. package/dist/molecules/force-refresh.js +3 -2
  431. package/dist/molecules/form/form.cjs +49 -4
  432. package/dist/molecules/form/form.cjs.map +1 -1
  433. package/dist/molecules/form/form.js +4 -3
  434. package/dist/molecules/form/index.cjs +49 -4
  435. package/dist/molecules/form/index.cjs.map +1 -1
  436. package/dist/molecules/form/index.js +4 -3
  437. package/dist/molecules/ghost-post.cjs +29 -2
  438. package/dist/molecules/ghost-post.cjs.map +1 -1
  439. package/dist/molecules/ghost-post.js +3 -2
  440. package/dist/molecules/index.cjs +49 -4
  441. package/dist/molecules/index.cjs.map +1 -1
  442. package/dist/molecules/index.js +76 -75
  443. package/dist/molecules/learning-post.cjs +49 -4
  444. package/dist/molecules/learning-post.cjs.map +1 -1
  445. package/dist/molecules/learning-post.js +6 -5
  446. package/dist/molecules/navigation.cjs +29 -2
  447. package/dist/molecules/navigation.cjs.map +1 -1
  448. package/dist/molecules/navigation.js +3 -2
  449. package/dist/molecules/one-on-one-guide-list.cjs +49 -4
  450. package/dist/molecules/one-on-one-guide-list.cjs.map +1 -1
  451. package/dist/molecules/one-on-one-guide-list.js +5 -4
  452. package/dist/molecules/stepper.cjs +29 -2
  453. package/dist/molecules/stepper.cjs.map +1 -1
  454. package/dist/molecules/stepper.js +4 -3
  455. package/dist/molecules/tag-selector.cjs +29 -2
  456. package/dist/molecules/tag-selector.cjs.map +1 -1
  457. package/dist/molecules/tag-selector.js +5 -4
  458. package/dist/molecules/time-select.js +3 -2
  459. package/dist/molecules/training-info-guideline.cjs +49 -4
  460. package/dist/molecules/training-info-guideline.cjs.map +1 -1
  461. package/dist/molecules/training-info-guideline.js +6 -5
  462. package/dist/utils/clamp-style.cjs +37 -0
  463. package/dist/utils/clamp-style.cjs.map +1 -0
  464. package/dist/utils/clamp-style.d.cts +13 -0
  465. package/dist/utils/clamp-style.d.ts +13 -0
  466. package/dist/utils/clamp-style.js +8 -0
  467. package/dist/utils/clamp-style.js.map +1 -0
  468. package/dist/utils/index.cjs +11 -0
  469. package/dist/utils/index.cjs.map +1 -1
  470. package/dist/utils/index.d.cts +1 -0
  471. package/dist/utils/index.d.ts +1 -0
  472. package/dist/utils/index.js +10 -6
  473. package/package.json +28 -2
  474. package/src/app/roleplay/chart/session-chart.tsx +185 -0
  475. package/src/app/roleplay/index.ts +8 -0
  476. package/src/app/roleplay/parts/analysis-section.tsx +98 -0
  477. package/src/app/roleplay/parts/coaching-panel.tsx +101 -0
  478. package/src/app/roleplay/parts/content.tsx +146 -0
  479. package/src/app/roleplay/parts/header.tsx +168 -0
  480. package/src/app/roleplay/parts/score-summary.tsx +158 -0
  481. package/src/app/roleplay/parts/score-trend-section.tsx +255 -0
  482. package/src/app/roleplay/parts/script-transcript.tsx +190 -0
  483. package/src/app/roleplay/parts/section-nav.tsx +299 -0
  484. package/src/app/roleplay/parts/session-replay-dialog.tsx +168 -0
  485. package/src/app/roleplay/parts/step-detail.tsx +173 -0
  486. package/src/app/roleplay/parts/step-radar.tsx +80 -0
  487. package/src/app/roleplay/parts/step-summary.tsx +149 -0
  488. package/src/app/roleplay/rp-session-detail.tsx +176 -0
  489. package/src/app/roleplay/types.ts +61 -0
  490. package/src/app/roleplay/utils/report-parse.test.ts +268 -0
  491. package/src/app/roleplay/utils/report-parse.ts +443 -0
  492. package/src/app/roleplay/utils/session-utils.ts +215 -0
  493. package/src/atoms/heading.tsx +19 -3
  494. package/src/atoms/typo.tsx +19 -3
  495. package/src/constrant/trainingLog.dummy.json +1 -0
  496. package/src/utils/clamp-style.ts +17 -0
  497. package/src/utils/index.ts +2 -1
  498. package/dist/chunk-U7PMCTVQ.js +0 -1
  499. package/dist/chunk-YIVIBIK2.js.map +0 -1
  500. package/dist/chunk-YXFHD2PY.js.map +0 -1
  501. /package/dist/{chunk-U7PMCTVQ.js.map → app/roleplay/chart/session-chart.js.map} +0 -0
  502. /package/dist/{chunk-7XMPNH2X.js.map → chunk-3DZIX4CE.js.map} +0 -0
  503. /package/dist/{chunk-XFFVIWAD.js.map → chunk-47QYYEMG.js.map} +0 -0
  504. /package/dist/{chunk-VVJEXKCB.js.map → chunk-4GH4R4VJ.js.map} +0 -0
  505. /package/dist/{chunk-MTESLX7K.js.map → chunk-5IGBFB67.js.map} +0 -0
  506. /package/dist/{chunk-LXL7GJUM.js.map → chunk-5RIAIE2J.js.map} +0 -0
  507. /package/dist/{chunk-R43F6ZWT.js.map → chunk-64DSUMXA.js.map} +0 -0
  508. /package/dist/{chunk-C2FRAZT2.js.map → chunk-6OT5OYGM.js.map} +0 -0
  509. /package/dist/{chunk-6Q26H64H.js.map → chunk-74PR3ZWJ.js.map} +0 -0
  510. /package/dist/{chunk-IA4WXGVH.js.map → chunk-75EY7LBP.js.map} +0 -0
  511. /package/dist/{chunk-77YN5S26.js.map → chunk-AELKCD6B.js.map} +0 -0
  512. /package/dist/{chunk-L5WSNVSD.js.map → chunk-AHYOAFOU.js.map} +0 -0
  513. /package/dist/{chunk-6JPGF4MB.js.map → chunk-AT5PAJLW.js.map} +0 -0
  514. /package/dist/{chunk-P6YCD2AV.js.map → chunk-C4INJWFV.js.map} +0 -0
  515. /package/dist/{chunk-SGJBQKUD.js.map → chunk-C6HO3IGE.js.map} +0 -0
  516. /package/dist/{chunk-7NBGSPZU.js.map → chunk-CBYIPRND.js.map} +0 -0
  517. /package/dist/{chunk-UIMDXYPP.js.map → chunk-CGLDFUOY.js.map} +0 -0
  518. /package/dist/{chunk-DUXYDGHX.js.map → chunk-CUS3ORMD.js.map} +0 -0
  519. /package/dist/{chunk-UILGIMXL.js.map → chunk-D4U2ZV2A.js.map} +0 -0
  520. /package/dist/{chunk-PRLNOTMV.js.map → chunk-DPMDQA3O.js.map} +0 -0
  521. /package/dist/{chunk-6XASFDTI.js.map → chunk-EJXZXUD2.js.map} +0 -0
  522. /package/dist/{chunk-QFSMOKC6.js.map → chunk-FAL6S2XK.js.map} +0 -0
  523. /package/dist/{chunk-GMEGTXIV.js.map → chunk-FJEDSUGU.js.map} +0 -0
  524. /package/dist/{chunk-WLG6GG26.js.map → chunk-G3KQN32M.js.map} +0 -0
  525. /package/dist/{chunk-72ZC7DBY.js.map → chunk-GNB4A34H.js.map} +0 -0
  526. /package/dist/{chunk-KEFAYPBO.js.map → chunk-IRFNKOKQ.js.map} +0 -0
  527. /package/dist/{chunk-5BIICWFT.js.map → chunk-ISSUGCCY.js.map} +0 -0
  528. /package/dist/{chunk-PZDN6K6R.js.map → chunk-JCZXPONS.js.map} +0 -0
  529. /package/dist/{chunk-7TRT4QTP.js.map → chunk-K4RZTENM.js.map} +0 -0
  530. /package/dist/{chunk-Z54XTEAF.js.map → chunk-KDS7OQOY.js.map} +0 -0
  531. /package/dist/{chunk-YCV3HR4J.js.map → chunk-LAGJDIVU.js.map} +0 -0
  532. /package/dist/{chunk-3UJEOHQT.js.map → chunk-LK2H4QTJ.js.map} +0 -0
  533. /package/dist/{chunk-UHAMISMF.js.map → chunk-LRNO4W2P.js.map} +0 -0
  534. /package/dist/{chunk-5FLPPHUZ.js.map → chunk-MQKIIIBW.js.map} +0 -0
  535. /package/dist/{chunk-6YPAN4D3.js.map → chunk-N242VJOP.js.map} +0 -0
  536. /package/dist/{chunk-PWUCBBQP.js.map → chunk-N3FMP27I.js.map} +0 -0
  537. /package/dist/{chunk-NIMF5FJI.js.map → chunk-NK6S7ZMB.js.map} +0 -0
  538. /package/dist/{chunk-IIA2BVJI.js.map → chunk-NVRVOTWZ.js.map} +0 -0
  539. /package/dist/{chunk-GTTZJ2Y7.js.map → chunk-O332K3SW.js.map} +0 -0
  540. /package/dist/{chunk-LCR5R743.js.map → chunk-OOM522XP.js.map} +0 -0
  541. /package/dist/{chunk-FIQJUO66.js.map → chunk-OPIVSYLN.js.map} +0 -0
  542. /package/dist/{chunk-SQZVLRUH.js.map → chunk-OUDDTPEN.js.map} +0 -0
  543. /package/dist/{chunk-URSBI6BQ.js.map → chunk-OW2QNTK3.js.map} +0 -0
  544. /package/dist/{chunk-GBT2BBZS.js.map → chunk-P2H3VCIB.js.map} +0 -0
  545. /package/dist/{chunk-TF3RLGKA.js.map → chunk-P4DJ5F6Z.js.map} +0 -0
  546. /package/dist/{chunk-YWLFDIBP.js.map → chunk-PAUEQXYG.js.map} +0 -0
  547. /package/dist/{chunk-XOCVP6IW.js.map → chunk-Q2FDF2AB.js.map} +0 -0
  548. /package/dist/{chunk-VFWRW7TA.js.map → chunk-QLNAAZJX.js.map} +0 -0
  549. /package/dist/{chunk-C5CEDLV6.js.map → chunk-QLOYGKKM.js.map} +0 -0
  550. /package/dist/{chunk-DDYPJWZV.js.map → chunk-RBU2TRYY.js.map} +0 -0
  551. /package/dist/{chunk-FFGGO6E4.js.map → chunk-RRC4WFG3.js.map} +0 -0
  552. /package/dist/{chunk-5SXTL6NO.js.map → chunk-RWJUXAFY.js.map} +0 -0
  553. /package/dist/{chunk-BZVA4RGI.js.map → chunk-S4MEMFKG.js.map} +0 -0
  554. /package/dist/{chunk-PTUL6MDB.js.map → chunk-SINRU2A6.js.map} +0 -0
  555. /package/dist/{chunk-UA2HDDD4.js.map → chunk-SOKGYD5B.js.map} +0 -0
  556. /package/dist/{chunk-BZCUF5K6.js.map → chunk-SQ3FYBJT.js.map} +0 -0
  557. /package/dist/{chunk-5FXPD4NE.js.map → chunk-U2EAXN3Y.js.map} +0 -0
  558. /package/dist/{chunk-B7SKF5RD.js.map → chunk-U7HF53KK.js.map} +0 -0
  559. /package/dist/{chunk-Z2U2YQOG.js.map → chunk-USL6PICI.js.map} +0 -0
  560. /package/dist/{chunk-DHP7LYK7.js.map → chunk-UXH2XIB2.js.map} +0 -0
  561. /package/dist/{chunk-U5LZO2EI.js.map → chunk-V7KAHLW2.js.map} +0 -0
  562. /package/dist/{chunk-VYUQXEXS.js.map → chunk-VBXZIIUA.js.map} +0 -0
  563. /package/dist/{chunk-IYAN33WP.js.map → chunk-VVWQZK5L.js.map} +0 -0
  564. /package/dist/{chunk-DBXQFZBB.js.map → chunk-WLKK5L3P.js.map} +0 -0
  565. /package/dist/{chunk-ANFQJ6YW.js.map → chunk-WYHDQK2S.js.map} +0 -0
  566. /package/dist/{chunk-RVHE3UVN.js.map → chunk-X3TBEGPA.js.map} +0 -0
  567. /package/dist/{chunk-AEDSRBBB.js.map → chunk-XWHBJY5V.js.map} +0 -0
  568. /package/dist/{chunk-SHFN2BOB.js.map → chunk-ZGTGEBQX.js.map} +0 -0
@@ -0,0 +1,4683 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
10
+ var __getProtoOf = Object.getPrototypeOf;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
38
+ var __export = (target, all) => {
39
+ for (var name in all)
40
+ __defProp(target, name, { get: all[name], enumerable: true });
41
+ };
42
+ var __copyProps = (to, from, except, desc) => {
43
+ if (from && typeof from === "object" || typeof from === "function") {
44
+ for (let key of __getOwnPropNames(from))
45
+ if (!__hasOwnProp.call(to, key) && key !== except)
46
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
47
+ }
48
+ return to;
49
+ };
50
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
51
+ // If the importer is in node compatibility mode or this is not an ESM
52
+ // file that has been converted to a CommonJS file using a Babel-
53
+ // compatible transform (i.e. "__esModule" has not been set), then set
54
+ // "default" to the CommonJS "module.exports" for node compatibility.
55
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
56
+ mod
57
+ ));
58
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
59
+
60
+ // src/app/roleplay/parts/content.tsx
61
+ var content_exports = {};
62
+ __export(content_exports, {
63
+ Content: () => Content8
64
+ });
65
+ module.exports = __toCommonJS(content_exports);
66
+
67
+ // src/atoms/alert-dialog.tsx
68
+ var import_themes2 = require("@radix-ui/themes");
69
+ var import_clsx2 = require("clsx");
70
+ var import_react2 = require("react");
71
+
72
+ // src/utils/resolve-color.ts
73
+ var SEMANTIC_COLOR_MAP = {
74
+ error: "red",
75
+ neutral: "gray",
76
+ success: "green",
77
+ accent: void 0
78
+ };
79
+ var CUSTOM_COLOR_MAP = {
80
+ black: { className: "tipp-accent-black", fallbackColor: "gray" }
81
+ };
82
+ var isSemanticColor = (color) => color !== void 0 && color in SEMANTIC_COLOR_MAP;
83
+ var isCustomColor = (color) => color !== void 0 && color in CUSTOM_COLOR_MAP;
84
+ var resolveColor = (color) => {
85
+ if (isCustomColor(color)) {
86
+ const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];
87
+ return { color: fallbackColor, className };
88
+ }
89
+ if (isSemanticColor(color)) {
90
+ return { color: SEMANTIC_COLOR_MAP[color] };
91
+ }
92
+ return { color };
93
+ };
94
+
95
+ // src/theme/theme-provider.tsx
96
+ var import_react = require("react");
97
+ var import_themes = require("@radix-ui/themes");
98
+ var import_clsx = require("clsx");
99
+ var import_jsx_runtime = require("react/jsx-runtime");
100
+ var ThemeAccentContext = (0, import_react.createContext)(void 0);
101
+
102
+ // src/atoms/alert-dialog.tsx
103
+ var import_jsx_runtime2 = require("react/jsx-runtime");
104
+ var Content = (0, import_react2.forwardRef)((props, ref) => {
105
+ const _a = props, { className, color } = _a, rest = __objRest(_a, ["className", "color"]);
106
+ const themeAccent = (0, import_react2.useContext)(ThemeAccentContext);
107
+ const { className: colorClassName } = (0, import_react2.useMemo)(
108
+ () => resolveColor(color != null ? color : themeAccent),
109
+ [color, themeAccent]
110
+ );
111
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
112
+ import_themes2.AlertDialog.Content,
113
+ __spreadProps(__spreadValues({
114
+ ref
115
+ }, rest), {
116
+ className: (0, import_clsx2.clsx)(colorClassName, className)
117
+ })
118
+ );
119
+ });
120
+ Content.displayName = "AlertDialog.Content";
121
+ var AlertDialog = __spreadProps(__spreadValues({}, import_themes2.AlertDialog), {
122
+ Content
123
+ });
124
+
125
+ // src/atoms/aspect-ratio.tsx
126
+ var import_themes3 = require("@radix-ui/themes");
127
+
128
+ // src/atoms/avatar.tsx
129
+ var import_themes4 = require("@radix-ui/themes");
130
+ var import_clsx3 = require("clsx");
131
+ var import_react3 = require("react");
132
+ var import_jsx_runtime3 = require("react/jsx-runtime");
133
+ var Avatar = (0, import_react3.forwardRef)(
134
+ (props, ref) => {
135
+ const _a = props, { children, size, variant = "soft", color, className } = _a, rest = __objRest(_a, ["children", "size", "variant", "color", "className"]);
136
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
137
+ const getOriginalSize = (0, import_react3.useCallback)((value) => {
138
+ switch (value) {
139
+ case "small":
140
+ return "1";
141
+ case "medium":
142
+ return "2";
143
+ case "large":
144
+ return "3";
145
+ case "full":
146
+ return "4";
147
+ default:
148
+ return "3";
149
+ }
150
+ }, []);
151
+ const radixSize = (0, import_react3.useMemo)(() => {
152
+ if (typeof size === "string") {
153
+ return getOriginalSize(size);
154
+ }
155
+ if (typeof size === "object") {
156
+ const map = {};
157
+ let key;
158
+ for (key in size) {
159
+ map[key] = size[key] && getOriginalSize(size[key]);
160
+ }
161
+ return map;
162
+ }
163
+ }, [getOriginalSize, size]);
164
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
165
+ import_themes4.Avatar,
166
+ __spreadProps(__spreadValues({}, rest), {
167
+ className: (0, import_clsx3.clsx)(colorClassName, className),
168
+ color: radixColor,
169
+ ref,
170
+ size: radixSize,
171
+ variant,
172
+ children
173
+ })
174
+ );
175
+ }
176
+ );
177
+ Avatar.displayName = "Avatar";
178
+
179
+ // src/atoms/badge.tsx
180
+ var import_themes5 = require("@radix-ui/themes");
181
+ var import_clsx4 = require("clsx");
182
+ var import_react4 = require("react");
183
+ var import_jsx_runtime4 = require("react/jsx-runtime");
184
+ var Badge = (0, import_react4.forwardRef)(
185
+ (props, ref) => {
186
+ const _a = props, { size = "small", color = "accent", className } = _a, rest = __objRest(_a, ["size", "color", "className"]);
187
+ const radixSize = (0, import_react4.useMemo)(() => {
188
+ switch (size) {
189
+ case "small":
190
+ return "1";
191
+ case "medium":
192
+ return "2";
193
+ case "large":
194
+ return "3";
195
+ default:
196
+ return "1";
197
+ }
198
+ }, [size]);
199
+ const { color: radixColor, className: colorClassName } = (0, import_react4.useMemo)(
200
+ () => resolveColor(color),
201
+ [color]
202
+ );
203
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
204
+ import_themes5.Badge,
205
+ __spreadProps(__spreadValues({}, rest), {
206
+ className: (0, import_clsx4.clsx)(colorClassName, className),
207
+ color: radixColor,
208
+ ref,
209
+ size: radixSize
210
+ })
211
+ );
212
+ }
213
+ );
214
+ Badge.displayName = "Badge";
215
+
216
+ // src/atoms/blockquote.tsx
217
+ var import_themes6 = require("@radix-ui/themes");
218
+ var import_clsx5 = require("clsx");
219
+ var import_react5 = require("react");
220
+ var import_jsx_runtime5 = require("react/jsx-runtime");
221
+ var Blockquote = (0, import_react5.forwardRef)((props, ref) => {
222
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
223
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
224
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
225
+ import_themes6.Blockquote,
226
+ __spreadProps(__spreadValues({}, rest), {
227
+ className: (0, import_clsx5.clsx)(colorClassName, className),
228
+ color: radixColor,
229
+ ref
230
+ })
231
+ );
232
+ });
233
+ Blockquote.displayName = "Blockquote";
234
+
235
+ // src/atoms/box.tsx
236
+ var import_themes7 = require("@radix-ui/themes");
237
+
238
+ // src/atoms/button.tsx
239
+ var import_react6 = require("react");
240
+ var import_themes8 = require("@radix-ui/themes");
241
+ var import_clsx6 = require("clsx");
242
+
243
+ // src/utils/convert-button-size.ts
244
+ var convertSizeStr = (size) => {
245
+ switch (size) {
246
+ case "small":
247
+ return "1";
248
+ case "medium":
249
+ return "2";
250
+ case "large":
251
+ return "3";
252
+ default:
253
+ return "2";
254
+ }
255
+ };
256
+ var convertSizeResponse = (size) => {
257
+ if (typeof size === "string" || typeof size === "undefined") {
258
+ return convertSizeStr(size);
259
+ }
260
+ const radixSize = {};
261
+ let key = "initial";
262
+ for (key in size) {
263
+ radixSize[key] = convertSizeStr(size[key]);
264
+ }
265
+ return radixSize;
266
+ };
267
+ var convertSize = (size) => {
268
+ if (typeof size === "string") {
269
+ return convertSizeStr(size);
270
+ }
271
+ return convertSizeResponse(size);
272
+ };
273
+
274
+ // src/atoms/button.tsx
275
+ var import_jsx_runtime6 = require("react/jsx-runtime");
276
+ var Button = (0, import_react6.forwardRef)(
277
+ (props, ref) => {
278
+ const _a = props, { size, style, variant, color } = _a, restProps = __objRest(_a, ["size", "style", "variant", "color"]);
279
+ const radixSize = (0, import_react6.useMemo)(() => {
280
+ return convertSize(size);
281
+ }, [size]);
282
+ const radixVariant = (0, import_react6.useMemo)(() => {
283
+ if (variant === "transparent") return "ghost";
284
+ return variant;
285
+ }, [variant]);
286
+ const { color: radixColor, className: colorClassName } = (0, import_react6.useMemo)(
287
+ () => resolveColor(color),
288
+ [color]
289
+ );
290
+ const className = (0, import_react6.useMemo)(() => {
291
+ return (0, import_clsx6.clsx)(props.className, colorClassName, {
292
+ transparent: variant === "transparent"
293
+ });
294
+ }, [props.className, colorClassName, variant]);
295
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
296
+ import_themes8.Button,
297
+ __spreadProps(__spreadValues({
298
+ style,
299
+ type: "button",
300
+ variant: radixVariant
301
+ }, restProps), {
302
+ className,
303
+ color: radixColor,
304
+ ref,
305
+ size: radixSize
306
+ })
307
+ );
308
+ }
309
+ );
310
+ Button.displayName = "Button";
311
+
312
+ // src/atoms/call-out.tsx
313
+ var import_themes9 = require("@radix-ui/themes");
314
+ var import_clsx7 = require("clsx");
315
+ var import_react7 = require("react");
316
+ var import_jsx_runtime7 = require("react/jsx-runtime");
317
+ var Root = (0, import_react7.forwardRef)((props, ref) => {
318
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
319
+ const { color: radixColor, className: colorClassName } = (0, import_react7.useMemo)(
320
+ () => resolveColor(color),
321
+ [color]
322
+ );
323
+ const appliedColor = colorClassName ? void 0 : radixColor;
324
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
325
+ import_themes9.Callout.Root,
326
+ __spreadProps(__spreadValues({}, rest), {
327
+ className: (0, import_clsx7.clsx)(colorClassName, className),
328
+ color: appliedColor,
329
+ ref
330
+ })
331
+ );
332
+ });
333
+ Root.displayName = "Callout.Root";
334
+ var Callout = __spreadProps(__spreadValues({}, import_themes9.Callout), {
335
+ Root
336
+ });
337
+
338
+ // src/atoms/card.tsx
339
+ var import_react8 = require("react");
340
+ var import_themes10 = require("@radix-ui/themes");
341
+ var import_jsx_runtime8 = require("react/jsx-runtime");
342
+ var Card = (0, import_react8.forwardRef)(
343
+ (props, forwardedRef) => {
344
+ const _a = props, { borderDisable, borderRadius, error } = _a, rest = __objRest(_a, ["borderDisable", "borderRadius", "error"]);
345
+ const borderInsetClassName = (0, import_react8.useMemo)(() => {
346
+ if (!borderDisable) return "";
347
+ const { left, right, top, bottom } = borderDisable;
348
+ return [
349
+ left && "disable-inset-left",
350
+ right && "disable-inset-right",
351
+ top && "disable-inset-top",
352
+ bottom && "disable-inset-bottom"
353
+ ].filter(Boolean).join(" ");
354
+ }, [borderDisable]);
355
+ const errorClsName = (0, import_react8.useMemo)(() => {
356
+ return error ? " error" : "";
357
+ }, [error]);
358
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
359
+ import_themes10.Card,
360
+ __spreadProps(__spreadValues({
361
+ variant: "surface"
362
+ }, rest), {
363
+ className: `${borderInsetClassName}${errorClsName} ${rest.className || ""}`,
364
+ "data-radius": borderRadius,
365
+ ref: forwardedRef
366
+ })
367
+ );
368
+ }
369
+ );
370
+ Card.displayName = "Card";
371
+
372
+ // src/atoms/check-box.tsx
373
+ var import_themes11 = require("@radix-ui/themes");
374
+ var import_clsx8 = require("clsx");
375
+ var import_react9 = require("react");
376
+ var import_jsx_runtime9 = require("react/jsx-runtime");
377
+ var Checkbox = (0, import_react9.forwardRef)(
378
+ (props, ref) => {
379
+ const _a = props, { size = "medium", color, className } = _a, rest = __objRest(_a, ["size", "color", "className"]);
380
+ const radixSize = (0, import_react9.useMemo)(() => {
381
+ switch (size) {
382
+ case "small":
383
+ return "1";
384
+ case "medium":
385
+ return "2";
386
+ case "large":
387
+ return "3";
388
+ }
389
+ }, [size]);
390
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
391
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
392
+ import_themes11.Checkbox,
393
+ __spreadProps(__spreadValues({}, rest), {
394
+ className: (0, import_clsx8.clsx)(colorClassName, className),
395
+ color: radixColor,
396
+ ref,
397
+ size: radixSize
398
+ })
399
+ );
400
+ }
401
+ );
402
+ Checkbox.displayName = "Checkbox";
403
+
404
+ // src/atoms/check-box-card.tsx
405
+ var import_themes12 = require("@radix-ui/themes");
406
+ var import_clsx9 = require("clsx");
407
+ var import_react10 = require("react");
408
+ var import_jsx_runtime10 = require("react/jsx-runtime");
409
+ var Root2 = (0, import_react10.forwardRef)((props, ref) => {
410
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
411
+ const { color: radixColor, className: colorClassName } = (0, import_react10.useMemo)(
412
+ () => resolveColor(color),
413
+ [color]
414
+ );
415
+ const appliedColor = colorClassName ? void 0 : radixColor;
416
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
417
+ import_themes12.CheckboxCards.Root,
418
+ __spreadProps(__spreadValues({}, rest), {
419
+ className: (0, import_clsx9.clsx)(colorClassName, className),
420
+ color: appliedColor,
421
+ ref
422
+ })
423
+ );
424
+ });
425
+ Root2.displayName = "CheckboxCards.Root";
426
+ var CheckboxCards = __spreadProps(__spreadValues({}, import_themes12.CheckboxCards), {
427
+ Root: Root2
428
+ });
429
+
430
+ // src/atoms/check-box-group.tsx
431
+ var import_themes13 = require("@radix-ui/themes");
432
+ var import_clsx10 = require("clsx");
433
+ var import_react11 = require("react");
434
+ var import_jsx_runtime11 = require("react/jsx-runtime");
435
+ var Root3 = (0, import_react11.forwardRef)((props, ref) => {
436
+ const _a = props, { children, size = "medium", color, className } = _a, rest = __objRest(_a, ["children", "size", "color", "className"]);
437
+ const groupSize = (0, import_react11.useMemo)(() => {
438
+ switch (size) {
439
+ case "small":
440
+ return "1";
441
+ case "large":
442
+ return "3";
443
+ case "medium":
444
+ default:
445
+ return "2";
446
+ }
447
+ }, [size]);
448
+ const { className: colorClassName } = (0, import_react11.useMemo)(
449
+ () => resolveColor(color),
450
+ [color]
451
+ );
452
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
453
+ import_themes13.CheckboxGroup.Root,
454
+ __spreadProps(__spreadValues({}, rest), {
455
+ className: (0, import_clsx10.clsx)(colorClassName, className),
456
+ ref,
457
+ size: groupSize,
458
+ children
459
+ })
460
+ );
461
+ });
462
+ Root3.displayName = "CheckboxGroup.Root";
463
+ var CheckboxGroup = {
464
+ Root: Root3,
465
+ Item: import_themes13.CheckboxGroup.Item
466
+ };
467
+
468
+ // src/atoms/code.tsx
469
+ var import_themes14 = require("@radix-ui/themes");
470
+ var import_clsx11 = require("clsx");
471
+ var import_react12 = require("react");
472
+ var import_jsx_runtime12 = require("react/jsx-runtime");
473
+ var Code = (0, import_react12.forwardRef)(
474
+ (props, ref) => {
475
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
476
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
477
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
478
+ import_themes14.Code,
479
+ __spreadProps(__spreadValues({}, rest), {
480
+ className: (0, import_clsx11.clsx)(colorClassName, className),
481
+ color: radixColor,
482
+ ref
483
+ })
484
+ );
485
+ }
486
+ );
487
+ Code.displayName = "Code";
488
+
489
+ // src/atoms/container.tsx
490
+ var import_themes15 = require("@radix-ui/themes");
491
+
492
+ // src/atoms/data-list.tsx
493
+ var import_themes16 = require("@radix-ui/themes");
494
+ var import_clsx12 = require("clsx");
495
+ var import_react13 = require("react");
496
+ var import_jsx_runtime13 = require("react/jsx-runtime");
497
+ var Label = (0, import_react13.forwardRef)((props, ref) => {
498
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
499
+ const { color: radixColor, className: colorClassName } = (0, import_react13.useMemo)(
500
+ () => resolveColor(color),
501
+ [color]
502
+ );
503
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
504
+ import_themes16.DataList.Label,
505
+ __spreadProps(__spreadValues({}, rest), {
506
+ className: (0, import_clsx12.clsx)(colorClassName, className),
507
+ color: radixColor,
508
+ ref
509
+ })
510
+ );
511
+ });
512
+ Label.displayName = "DataList.Label";
513
+ var DataList = __spreadProps(__spreadValues({}, import_themes16.DataList), {
514
+ Label
515
+ });
516
+
517
+ // src/atoms/dialog.tsx
518
+ var RadixDialog = __toESM(require("@radix-ui/react-dialog"), 1);
519
+ var import_react_icons = require("@radix-ui/react-icons");
520
+ var import_themes20 = require("@radix-ui/themes");
521
+ var import_react17 = require("react");
522
+
523
+ // src/theme/portal-provider.tsx
524
+ var import_react14 = require("react");
525
+ var import_jsx_runtime14 = require("react/jsx-runtime");
526
+ var PortalContext = (0, import_react14.createContext)(
527
+ null
528
+ );
529
+
530
+ // src/atoms/heading.tsx
531
+ var import_themes17 = require("@radix-ui/themes");
532
+ var import_clsx13 = require("clsx");
533
+ var import_react15 = require("react");
534
+
535
+ // src/utils/map-with-responsive.ts
536
+ var mapWithResponsive = (args) => {
537
+ const { value, mapFn } = args;
538
+ if (typeof value === "string") {
539
+ return mapFn(value);
540
+ }
541
+ ;
542
+ if (typeof value === "object") {
543
+ const newObj = {};
544
+ let key;
545
+ for (key in value) {
546
+ newObj[key] = mapFn(value[key]);
547
+ }
548
+ return newObj;
549
+ }
550
+ return value;
551
+ };
552
+
553
+ // src/utils/clamp-style.ts
554
+ var clampStyle = (lines) => ({
555
+ display: "-webkit-box",
556
+ WebkitBoxOrient: "vertical",
557
+ WebkitLineClamp: lines,
558
+ lineClamp: lines,
559
+ overflow: "hidden"
560
+ });
561
+
562
+ // src/utils/mono-style.ts
563
+ var MONO_STYLE = {
564
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
565
+ fontVariantNumeric: "tabular-nums"
566
+ };
567
+
568
+ // src/atoms/heading.tsx
569
+ var import_themes18 = require("@radix-ui/themes");
570
+ var import_jsx_runtime15 = require("react/jsx-runtime");
571
+ var mapVariant = (variant) => {
572
+ switch (variant) {
573
+ case "heading1":
574
+ return "7";
575
+ case "heading2":
576
+ return "6";
577
+ case "heading3":
578
+ return "5";
579
+ case "heading4":
580
+ return "4";
581
+ case "heading5":
582
+ return "3";
583
+ default:
584
+ return void 0;
585
+ }
586
+ };
587
+ function Heading2(props) {
588
+ const _a = props, {
589
+ size,
590
+ children,
591
+ variant,
592
+ color,
593
+ className,
594
+ mono,
595
+ clamp,
596
+ style
597
+ } = _a, rest = __objRest(_a, [
598
+ "size",
599
+ "children",
600
+ "variant",
601
+ "color",
602
+ "className",
603
+ "mono",
604
+ "clamp",
605
+ "style"
606
+ ]);
607
+ const { color: radixColor, className: colorClassName } = (0, import_react15.useMemo)(
608
+ () => resolveColor(color),
609
+ [color]
610
+ );
611
+ const radixSize = (0, import_react15.useMemo)(() => {
612
+ return variant ? mapWithResponsive({
613
+ value: variant,
614
+ mapFn: mapVariant
615
+ }) : size;
616
+ }, [size, variant]);
617
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
618
+ import_themes17.Heading,
619
+ __spreadProps(__spreadValues({}, rest), {
620
+ className: (0, import_clsx13.clsx)(colorClassName, className),
621
+ color: radixColor,
622
+ size: radixSize,
623
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
624
+ children
625
+ })
626
+ );
627
+ }
628
+
629
+ // src/atoms/icon-button.tsx
630
+ var import_react16 = require("react");
631
+ var import_clsx14 = require("clsx");
632
+ var import_themes19 = require("@radix-ui/themes");
633
+
634
+ // src/utils/convert-icon-button-size.ts
635
+ var convertSizeStr2 = (size) => {
636
+ switch (size) {
637
+ case "small":
638
+ return "1";
639
+ case "medium":
640
+ return "2";
641
+ case "large":
642
+ return "4";
643
+ default:
644
+ return "2";
645
+ }
646
+ };
647
+ var convertSizeResponse2 = (size) => {
648
+ if (typeof size === "string" || typeof size === "undefined") {
649
+ return convertSizeStr2(size);
650
+ }
651
+ const radixSize = {};
652
+ let key = "initial";
653
+ for (key in size) {
654
+ radixSize[key] = convertSizeStr2(size[key]);
655
+ }
656
+ return radixSize;
657
+ };
658
+ var convertSize2 = (size) => {
659
+ if (typeof size === "string") {
660
+ return convertSizeStr2(size);
661
+ }
662
+ return convertSizeResponse2(size);
663
+ };
664
+
665
+ // src/atoms/icon-button.tsx
666
+ var import_jsx_runtime16 = require("react/jsx-runtime");
667
+ var IconButton = (0, import_react16.forwardRef)(
668
+ (props, ref) => {
669
+ const _a = props, { size, style, variant, color } = _a, restProps = __objRest(_a, ["size", "style", "variant", "color"]);
670
+ const radixSize = (0, import_react16.useMemo)(() => {
671
+ return convertSize2(size);
672
+ }, [size]);
673
+ const radixVariant = (0, import_react16.useMemo)(() => {
674
+ if (variant === "transparent") return "ghost";
675
+ return variant;
676
+ }, [variant]);
677
+ const { color: radixColor, className: colorClassName } = (0, import_react16.useMemo)(
678
+ () => resolveColor(color),
679
+ [color]
680
+ );
681
+ const className = (0, import_react16.useMemo)(() => {
682
+ return (0, import_clsx14.clsx)(props.className, colorClassName, {
683
+ transparent: variant === "transparent"
684
+ });
685
+ }, [props.className, colorClassName, variant]);
686
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
687
+ import_themes19.IconButton,
688
+ __spreadProps(__spreadValues({
689
+ style,
690
+ type: "button",
691
+ variant: radixVariant
692
+ }, restProps), {
693
+ className,
694
+ color: radixColor,
695
+ ref,
696
+ size: radixSize
697
+ })
698
+ );
699
+ }
700
+ );
701
+ IconButton.displayName = "IconButton";
702
+
703
+ // src/atoms/dialog.tsx
704
+ var import_jsx_runtime17 = require("react/jsx-runtime");
705
+
706
+ // src/atoms/dropdown-menu.tsx
707
+ var import_themes21 = require("@radix-ui/themes");
708
+ var import_react18 = require("react");
709
+ var import_jsx_runtime18 = require("react/jsx-runtime");
710
+ var DropdownMenuContext = (0, import_react18.createContext)({});
711
+ var Content3 = (0, import_react18.forwardRef)((props, ref) => {
712
+ const _a = props, { isNavigation, className, color } = _a, rest = __objRest(_a, ["isNavigation", "className", "color"]);
713
+ const { color: contextColor } = (0, import_react18.useContext)(DropdownMenuContext);
714
+ const themeAccent = (0, import_react18.useContext)(ThemeAccentContext);
715
+ const { color: radixColor, className: colorClassName } = (0, import_react18.useMemo)(
716
+ () => {
717
+ var _a2;
718
+ return resolveColor((_a2 = color != null ? color : contextColor) != null ? _a2 : themeAccent);
719
+ },
720
+ [color, contextColor, themeAccent]
721
+ );
722
+ const appliedColor = colorClassName ? void 0 : radixColor;
723
+ const contentClassName = (0, import_react18.useMemo)(() => {
724
+ const cls = isNavigation ? "dropdown-navigation" : "";
725
+ return [cls, colorClassName, className].filter(Boolean).join(" ");
726
+ }, [isNavigation, colorClassName, className]);
727
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
728
+ import_themes21.DropdownMenu.Content,
729
+ __spreadProps(__spreadValues({
730
+ ref
731
+ }, rest), {
732
+ className: contentClassName,
733
+ color: appliedColor
734
+ })
735
+ );
736
+ });
737
+ Content3.displayName = "DropdownMenu.Content";
738
+ var Trigger2 = (0, import_react18.forwardRef)(
739
+ (_a, ref) => {
740
+ var _b = _a, { asChild: _asChild } = _b, props = __objRest(_b, ["asChild"]);
741
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_themes21.DropdownMenu.Trigger, __spreadValues({ ref }, props));
742
+ }
743
+ );
744
+ Trigger2.displayName = "DropdownMenu.Trigger";
745
+ function Root5(props) {
746
+ const _a = props, { color } = _a, rest = __objRest(_a, ["color"]);
747
+ const value = (0, import_react18.useMemo)(() => ({ color }), [color]);
748
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownMenuContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_themes21.DropdownMenu.Root, __spreadValues({}, rest)) });
749
+ }
750
+ Root5.displayName = "DropdownMenu.Root";
751
+ var DropdownMenu = __spreadProps(__spreadValues({}, import_themes21.DropdownMenu), {
752
+ Root: Root5,
753
+ Content: Content3,
754
+ Trigger: Trigger2
755
+ });
756
+
757
+ // src/atoms/em.tsx
758
+ var import_themes22 = require("@radix-ui/themes");
759
+
760
+ // src/atoms/flex.tsx
761
+ var import_themes23 = require("@radix-ui/themes");
762
+
763
+ // src/atoms/grid.tsx
764
+ var import_themes24 = require("@radix-ui/themes");
765
+
766
+ // src/atoms/hover-card.tsx
767
+ var import_themes25 = require("@radix-ui/themes");
768
+ var import_clsx15 = require("clsx");
769
+ var import_react19 = require("react");
770
+ var import_jsx_runtime19 = require("react/jsx-runtime");
771
+ var Content4 = (0, import_react19.forwardRef)((props, ref) => {
772
+ const _a = props, { className, color } = _a, rest = __objRest(_a, ["className", "color"]);
773
+ const themeAccent = (0, import_react19.useContext)(ThemeAccentContext);
774
+ const { className: colorClassName } = (0, import_react19.useMemo)(
775
+ () => resolveColor(color != null ? color : themeAccent),
776
+ [color, themeAccent]
777
+ );
778
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
779
+ import_themes25.HoverCard.Content,
780
+ __spreadProps(__spreadValues({
781
+ ref
782
+ }, rest), {
783
+ className: (0, import_clsx15.clsx)(colorClassName, className)
784
+ })
785
+ );
786
+ });
787
+ Content4.displayName = "HoverCard.Content";
788
+ var HoverCard = __spreadProps(__spreadValues({}, import_themes25.HoverCard), {
789
+ Content: Content4
790
+ });
791
+
792
+ // src/atoms/inset.tsx
793
+ var import_themes26 = require("@radix-ui/themes");
794
+
795
+ // src/atoms/kbd.tsx
796
+ var import_themes27 = require("@radix-ui/themes");
797
+
798
+ // src/atoms/link.tsx
799
+ var import_themes28 = require("@radix-ui/themes");
800
+ var import_clsx16 = require("clsx");
801
+ var import_react20 = require("react");
802
+ var import_themes29 = require("@radix-ui/themes");
803
+ var import_jsx_runtime20 = require("react/jsx-runtime");
804
+
805
+ // src/atoms/popover.tsx
806
+ var import_themes30 = require("@radix-ui/themes");
807
+ var import_clsx17 = require("clsx");
808
+ var import_react21 = require("react");
809
+ var import_jsx_runtime21 = require("react/jsx-runtime");
810
+ var Content5 = (0, import_react21.forwardRef)((props, ref) => {
811
+ const _a = props, { className, color } = _a, rest = __objRest(_a, ["className", "color"]);
812
+ const themeAccent = (0, import_react21.useContext)(ThemeAccentContext);
813
+ const { className: colorClassName } = (0, import_react21.useMemo)(
814
+ () => resolveColor(color != null ? color : themeAccent),
815
+ [color, themeAccent]
816
+ );
817
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
818
+ import_themes30.Popover.Content,
819
+ __spreadProps(__spreadValues({
820
+ ref
821
+ }, rest), {
822
+ className: (0, import_clsx17.clsx)(colorClassName, className)
823
+ })
824
+ );
825
+ });
826
+ Content5.displayName = "Popover.Content";
827
+ var Popover = __spreadProps(__spreadValues({}, import_themes30.Popover), {
828
+ Content: Content5
829
+ });
830
+
831
+ // src/atoms/progress.tsx
832
+ var import_themes31 = require("@radix-ui/themes");
833
+ var import_clsx18 = require("clsx");
834
+ var import_react22 = require("react");
835
+ var import_jsx_runtime22 = require("react/jsx-runtime");
836
+ var Progress = (0, import_react22.forwardRef)((props, ref) => {
837
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
838
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
839
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
840
+ import_themes31.Progress,
841
+ __spreadProps(__spreadValues({}, rest), {
842
+ className: (0, import_clsx18.clsx)(colorClassName, className),
843
+ color: radixColor,
844
+ ref
845
+ })
846
+ );
847
+ });
848
+ Progress.displayName = "Progress";
849
+
850
+ // src/atoms/quote.tsx
851
+ var import_themes32 = require("@radix-ui/themes");
852
+
853
+ // src/atoms/radio.tsx
854
+ var import_themes33 = require("@radix-ui/themes");
855
+ var import_clsx19 = require("clsx");
856
+ var import_react23 = require("react");
857
+ var import_jsx_runtime23 = require("react/jsx-runtime");
858
+ var Radio = (0, import_react23.forwardRef)((props, ref) => {
859
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
860
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
861
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
862
+ import_themes33.Radio,
863
+ __spreadProps(__spreadValues({}, rest), {
864
+ className: (0, import_clsx19.clsx)(colorClassName, className),
865
+ color: radixColor,
866
+ ref
867
+ })
868
+ );
869
+ });
870
+ Radio.displayName = "Radio";
871
+
872
+ // src/atoms/radio-cards.tsx
873
+ var import_themes34 = require("@radix-ui/themes");
874
+ var import_clsx20 = require("clsx");
875
+ var import_react24 = require("react");
876
+ var import_jsx_runtime24 = require("react/jsx-runtime");
877
+ var Root6 = (0, import_react24.forwardRef)((props, ref) => {
878
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
879
+ const { color: radixColor, className: colorClassName } = (0, import_react24.useMemo)(
880
+ () => resolveColor(color),
881
+ [color]
882
+ );
883
+ const appliedColor = colorClassName ? void 0 : radixColor;
884
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
885
+ import_themes34.RadioCards.Root,
886
+ __spreadProps(__spreadValues({}, rest), {
887
+ className: (0, import_clsx20.clsx)(colorClassName, className),
888
+ color: appliedColor,
889
+ ref
890
+ })
891
+ );
892
+ });
893
+ Root6.displayName = "RadioCards.Root";
894
+ var RadioCards = __spreadProps(__spreadValues({}, import_themes34.RadioCards), {
895
+ Root: Root6
896
+ });
897
+
898
+ // src/atoms/radio-group.tsx
899
+ var import_themes35 = require("@radix-ui/themes");
900
+ var import_clsx21 = require("clsx");
901
+ var import_react25 = require("react");
902
+ var import_jsx_runtime25 = require("react/jsx-runtime");
903
+ var Root7 = (0, import_react25.forwardRef)((props, ref) => {
904
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
905
+ const { color: radixColor, className: colorClassName } = (0, import_react25.useMemo)(
906
+ () => resolveColor(color),
907
+ [color]
908
+ );
909
+ const appliedColor = colorClassName ? void 0 : radixColor;
910
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
911
+ import_themes35.RadioGroup.Root,
912
+ __spreadProps(__spreadValues({}, rest), {
913
+ className: (0, import_clsx21.clsx)(colorClassName, className),
914
+ color: appliedColor,
915
+ ref
916
+ })
917
+ );
918
+ });
919
+ Root7.displayName = "RadioGroup.Root";
920
+ var RadioGroup = __spreadProps(__spreadValues({}, import_themes35.RadioGroup), {
921
+ Root: Root7
922
+ });
923
+
924
+ // src/atoms/scroll-area.tsx
925
+ var import_themes36 = require("@radix-ui/themes");
926
+
927
+ // src/atoms/section.tsx
928
+ var import_themes37 = require("@radix-ui/themes");
929
+
930
+ // src/atoms/segmented-control.tsx
931
+ var import_themes38 = require("@radix-ui/themes");
932
+
933
+ // src/atoms/select.tsx
934
+ var import_themes39 = require("@radix-ui/themes");
935
+ var import_clsx22 = require("clsx");
936
+ var import_react26 = require("react");
937
+ var import_jsx_runtime26 = require("react/jsx-runtime");
938
+ var SelectContext = (0, import_react26.createContext)({
939
+ error: false
940
+ });
941
+ var Content6 = (0, import_react26.forwardRef)((props, ref) => {
942
+ const _a = props, { className, isNavigation, color } = _a, rest = __objRest(_a, ["className", "isNavigation", "color"]);
943
+ const { error, color: contextColor } = (0, import_react26.useContext)(SelectContext);
944
+ const themeAccent = (0, import_react26.useContext)(ThemeAccentContext);
945
+ const { color: radixColor, className: colorClassName } = (0, import_react26.useMemo)(
946
+ () => {
947
+ var _a2;
948
+ return resolveColor((_a2 = color != null ? color : contextColor) != null ? _a2 : themeAccent);
949
+ },
950
+ [color, contextColor, themeAccent]
951
+ );
952
+ const appliedColor = colorClassName ? void 0 : radixColor;
953
+ const cls = (0, import_react26.useMemo)(() => {
954
+ const etc = isNavigation ? "nav-select" : "";
955
+ const errorCls = error ? "tipp-error" : "";
956
+ return (0, import_clsx22.clsx)(etc, errorCls, colorClassName, className);
957
+ }, [className, colorClassName, error, isNavigation]);
958
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
959
+ import_themes39.Select.Content,
960
+ __spreadProps(__spreadValues({
961
+ position: "popper"
962
+ }, rest), {
963
+ className: cls,
964
+ color: appliedColor,
965
+ ref
966
+ })
967
+ );
968
+ });
969
+ Content6.displayName = "Select.Content";
970
+ var Trigger3 = (0, import_react26.forwardRef)((props, ref) => {
971
+ const _a = props, { className, color } = _a, rest = __objRest(_a, ["className", "color"]);
972
+ const { error, color: contextColor } = (0, import_react26.useContext)(SelectContext);
973
+ const { color: radixColor, className: colorClassName } = (0, import_react26.useMemo)(
974
+ () => resolveColor(color != null ? color : contextColor),
975
+ [color, contextColor]
976
+ );
977
+ const appliedColor = colorClassName ? void 0 : radixColor;
978
+ const cls = (0, import_react26.useMemo)(() => {
979
+ const errorCls = error ? "error" : "";
980
+ return (0, import_clsx22.clsx)(errorCls, colorClassName, className);
981
+ }, [className, colorClassName, error]);
982
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
983
+ import_themes39.Select.Trigger,
984
+ __spreadProps(__spreadValues({}, rest), {
985
+ className: cls,
986
+ color: appliedColor,
987
+ ref
988
+ })
989
+ );
990
+ });
991
+ Trigger3.displayName = "Select.Trigger";
992
+ function Root8(props) {
993
+ const _a = props, { error, color } = _a, rest = __objRest(_a, ["error", "color"]);
994
+ const value = (0, import_react26.useMemo)(() => ({ error, color }), [error, color]);
995
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_themes39.Select.Root, __spreadValues({}, rest)) });
996
+ }
997
+ Root8.displayName = "Select.Root";
998
+ var Select = __spreadProps(__spreadValues({}, import_themes39.Select), {
999
+ Root: Root8,
1000
+ Trigger: Trigger3,
1001
+ Content: Content6
1002
+ });
1003
+
1004
+ // src/atoms/separator.tsx
1005
+ var import_themes40 = require("@radix-ui/themes");
1006
+
1007
+ // src/atoms/skeleton.tsx
1008
+ var import_themes41 = require("@radix-ui/themes");
1009
+
1010
+ // src/atoms/strong.tsx
1011
+ var import_themes42 = require("@radix-ui/themes");
1012
+
1013
+ // src/atoms/switch.tsx
1014
+ var import_themes43 = require("@radix-ui/themes");
1015
+ var import_clsx23 = require("clsx");
1016
+ var import_react27 = require("react");
1017
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1018
+ var Switch = (0, import_react27.forwardRef)((props, ref) => {
1019
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
1020
+ const { color: radixColor, className: colorClassName } = resolveColor(color);
1021
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1022
+ import_themes43.Switch,
1023
+ __spreadProps(__spreadValues({}, rest), {
1024
+ className: (0, import_clsx23.clsx)(colorClassName, className),
1025
+ color: radixColor,
1026
+ ref
1027
+ })
1028
+ );
1029
+ });
1030
+ Switch.displayName = "Switch";
1031
+
1032
+ // src/atoms/tab-nav.tsx
1033
+ var import_themes44 = require("@radix-ui/themes");
1034
+ var import_clsx24 = require("clsx");
1035
+ var import_react28 = require("react");
1036
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1037
+ var Root9 = (0, import_react28.forwardRef)((props, ref) => {
1038
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
1039
+ const { className: colorClassName } = (0, import_react28.useMemo)(
1040
+ () => resolveColor(color),
1041
+ [color]
1042
+ );
1043
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1044
+ import_themes44.TabNav.Root,
1045
+ __spreadProps(__spreadValues({}, rest), {
1046
+ className: (0, import_clsx24.clsx)(colorClassName, className),
1047
+ ref
1048
+ })
1049
+ );
1050
+ });
1051
+ Root9.displayName = "TabNav.Root";
1052
+ var TabNav = __spreadProps(__spreadValues({}, import_themes44.TabNav), {
1053
+ Root: Root9
1054
+ });
1055
+
1056
+ // src/atoms/tabs.tsx
1057
+ var import_themes45 = require("@radix-ui/themes");
1058
+ var import_clsx25 = require("clsx");
1059
+ var import_react29 = require("react");
1060
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1061
+ var Root10 = (0, import_react29.forwardRef)((props, ref) => {
1062
+ const _a = props, { color, className } = _a, rest = __objRest(_a, ["color", "className"]);
1063
+ const { className: colorClassName } = (0, import_react29.useMemo)(
1064
+ () => resolveColor(color),
1065
+ [color]
1066
+ );
1067
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1068
+ import_themes45.Tabs.Root,
1069
+ __spreadProps(__spreadValues({}, rest), {
1070
+ className: (0, import_clsx25.clsx)(colorClassName, className),
1071
+ ref
1072
+ })
1073
+ );
1074
+ });
1075
+ Root10.displayName = "Tabs.Root";
1076
+ var Tabs = __spreadProps(__spreadValues({}, import_themes45.Tabs), {
1077
+ Root: Root10
1078
+ });
1079
+
1080
+ // src/atoms/text-area.tsx
1081
+ var import_themes46 = require("@radix-ui/themes");
1082
+ var import_react30 = require("react");
1083
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1084
+ var TextArea = (0, import_react30.forwardRef)(
1085
+ (props, ref) => {
1086
+ const _a = props, { error, style, className } = _a, rest = __objRest(_a, ["error", "style", "className"]);
1087
+ const fieldStyle = (0, import_react30.useMemo)(() => {
1088
+ if (!error) return style;
1089
+ const errorStyle = {
1090
+ boxShadow: "inset 0 0 0 var(--text-area-border-width) var(--error-11)"
1091
+ };
1092
+ return __spreadValues(__spreadValues({}, style || {}), errorStyle);
1093
+ }, [error, style]);
1094
+ const classNameStr = error ? `error ${className}` : className;
1095
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1096
+ import_themes46.TextArea,
1097
+ __spreadProps(__spreadValues({}, rest), {
1098
+ className: classNameStr,
1099
+ ref,
1100
+ style: fieldStyle
1101
+ })
1102
+ );
1103
+ }
1104
+ );
1105
+ TextArea.displayName = "TextArea";
1106
+
1107
+ // src/atoms/typo.tsx
1108
+ var import_themes47 = require("@radix-ui/themes");
1109
+ var import_clsx26 = require("clsx");
1110
+ var import_react31 = require("react");
1111
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1112
+ var Typo = (0, import_react31.forwardRef)(
1113
+ (props, ref) => {
1114
+ const _a = props, {
1115
+ size,
1116
+ variant,
1117
+ children,
1118
+ color,
1119
+ className,
1120
+ mono,
1121
+ clamp,
1122
+ style
1123
+ } = _a, rest = __objRest(_a, [
1124
+ "size",
1125
+ "variant",
1126
+ "children",
1127
+ "color",
1128
+ "className",
1129
+ "mono",
1130
+ "clamp",
1131
+ "style"
1132
+ ]);
1133
+ const { color: radixColor, className: colorClassName } = (0, import_react31.useMemo)(
1134
+ () => resolveColor(color),
1135
+ [color]
1136
+ );
1137
+ const radixSize = (0, import_react31.useMemo)(() => {
1138
+ if (size !== void 0) return size;
1139
+ if (variant === void 0) return "2";
1140
+ return mapWithResponsive({
1141
+ value: variant,
1142
+ mapFn: (variantValue) => {
1143
+ switch (variantValue) {
1144
+ case "caption":
1145
+ return "1";
1146
+ case "subtitle":
1147
+ return "3";
1148
+ case "body":
1149
+ default:
1150
+ return "2";
1151
+ }
1152
+ }
1153
+ });
1154
+ }, [size, variant]);
1155
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1156
+ import_themes47.Text,
1157
+ __spreadProps(__spreadValues({}, rest), {
1158
+ className: (0, import_clsx26.clsx)(colorClassName, className),
1159
+ color: radixColor,
1160
+ ref,
1161
+ size: radixSize,
1162
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
1163
+ children
1164
+ })
1165
+ );
1166
+ }
1167
+ );
1168
+ Typo.displayName = "Typo";
1169
+
1170
+ // src/atoms/text-field.tsx
1171
+ var import_themes48 = require("@radix-ui/themes");
1172
+ var import_react32 = require("react");
1173
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1174
+ var Root11 = (0, import_react32.forwardRef)((props, ref) => {
1175
+ const _a = props, { error, style, className } = _a, rest = __objRest(_a, ["error", "style", "className"]);
1176
+ const fieldStyle = (0, import_react32.useMemo)(() => {
1177
+ if (!error) return style;
1178
+ const errorStyle = {
1179
+ boxShadow: "inset 0 0 0 var(--text-field-border-width) var(--error-11)"
1180
+ };
1181
+ return __spreadValues(__spreadValues({}, style || {}), errorStyle);
1182
+ }, [error, style]);
1183
+ const classNameStr = error ? `error ${className}` : className;
1184
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1185
+ import_themes48.TextField.Root,
1186
+ __spreadValues({
1187
+ className: classNameStr,
1188
+ ref,
1189
+ style: fieldStyle
1190
+ }, rest)
1191
+ );
1192
+ });
1193
+ Root11.displayName = "TextField.Root";
1194
+ var TextField = { Root: Root11, Slot: import_themes48.TextField.Slot };
1195
+
1196
+ // src/atoms/tooltip.tsx
1197
+ var import_themes49 = require("@radix-ui/themes");
1198
+ var import_clsx27 = require("clsx");
1199
+ var import_react34 = require("react");
1200
+
1201
+ // src/context/ui-state-provider.tsx
1202
+ var import_react33 = require("react");
1203
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1204
+ var UIStateContext = (0, import_react33.createContext)({
1205
+ isMobile: false
1206
+ });
1207
+
1208
+ // src/atoms/tooltip.tsx
1209
+ var import_jsx_runtime34 = require("react/jsx-runtime");
1210
+
1211
+ // src/atoms/collapse.tsx
1212
+ var import_react35 = require("react");
1213
+ var import_jsx_runtime35 = require("react/jsx-runtime");
1214
+ function Collapse(props) {
1215
+ const { children, closedHeight = "0" } = props;
1216
+ const [open, setOpen] = (0, import_react35.useState)(() => {
1217
+ return props.open || props.defaultOpen || false;
1218
+ });
1219
+ (0, import_react35.useEffect)(() => {
1220
+ if (props.open === void 0) return;
1221
+ setOpen(props.open);
1222
+ }, [props.open]);
1223
+ const ref = (0, import_react35.useRef)(null);
1224
+ (0, import_react35.useEffect)(() => {
1225
+ if (!ref.current) return;
1226
+ ref.current.style.maxHeight = open ? `${ref.current.scrollHeight}px` : closedHeight;
1227
+ }, [closedHeight, open]);
1228
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "tipp-collapse", ref, children });
1229
+ }
1230
+
1231
+ // src/atoms/spinner.tsx
1232
+ var import_themes50 = require("@radix-ui/themes");
1233
+
1234
+ // src/atoms/pagination.tsx
1235
+ var import_react36 = require("react");
1236
+
1237
+ // src/icon.ts
1238
+ var import_react_icons2 = require("@radix-ui/react-icons");
1239
+
1240
+ // src/icons/phone-ring.tsx
1241
+ var React20 = __toESM(require("react"), 1);
1242
+ var import_jsx_runtime36 = require("react/jsx-runtime");
1243
+ var PhoneRingIcon = React20.forwardRef(
1244
+ (_a, forwardedRef) => {
1245
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1246
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
1247
+ "svg",
1248
+ __spreadProps(__spreadValues({
1249
+ fill: "none",
1250
+ height: "16",
1251
+ viewBox: "0 0 16 16",
1252
+ width: "16",
1253
+ xmlns: "http://www.w3.org/2000/svg"
1254
+ }, props), {
1255
+ ref: forwardedRef,
1256
+ children: [
1257
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1258
+ "path",
1259
+ {
1260
+ d: "M7.7207 8.94603C6.98877 8.2141 6.41082 7.3865 5.98686 6.50348C5.95039 6.42753 5.93216 6.38955 5.91815 6.34149C5.86837 6.17072 5.90413 5.96102 6.00769 5.81639C6.03683 5.77569 6.07165 5.74087 6.14128 5.67124C6.35424 5.45828 6.46072 5.3518 6.53033 5.24473C6.79287 4.84094 6.79287 4.32038 6.53033 3.91658C6.46072 3.80951 6.35424 3.70303 6.14128 3.49007L6.02257 3.37137C5.69885 3.04764 5.53699 2.88578 5.36315 2.79786C5.01743 2.62299 4.60914 2.62299 4.26342 2.79786C4.08958 2.88578 3.92772 3.04764 3.604 3.37137L3.50798 3.46739C3.18536 3.79 3.02405 3.95131 2.90086 4.17062C2.76415 4.41398 2.66586 4.79194 2.66669 5.07106C2.66744 5.32261 2.71624 5.49452 2.81382 5.83835C3.33828 7.68611 4.32781 9.42969 5.78242 10.8843C7.23704 12.3389 8.98062 13.3285 10.8284 13.8529C11.1722 13.9505 11.3441 13.9993 11.5957 14C11.8748 14.0009 12.2528 13.9026 12.4961 13.7659C12.7154 13.6427 12.8767 13.4814 13.1993 13.1588L13.2954 13.0627C13.6191 12.739 13.7809 12.5771 13.8689 12.4033C14.0437 12.0576 14.0437 11.6493 13.8689 11.3036C13.7809 11.1297 13.6191 10.9679 13.2954 10.6442L13.1767 10.5255C12.9637 10.3125 12.8572 10.206 12.7501 10.1364C12.3464 9.87386 11.8258 9.87386 11.422 10.1364C11.3149 10.206 11.2084 10.3125 10.9955 10.5255C10.9259 10.5951 10.891 10.6299 10.8503 10.659C10.7057 10.7626 10.496 10.7984 10.3252 10.7486C10.2772 10.7346 10.2392 10.7163 10.1632 10.6799C9.28023 10.2559 8.45262 9.67796 7.7207 8.94603Z",
1261
+ fill: color
1262
+ }
1263
+ ),
1264
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1265
+ "path",
1266
+ {
1267
+ d: "M9.33335 4.22765C10.4699 4.62936 11.3707 5.53016 11.7724 6.66671M9.97701 2.33337C11.7004 2.93456 13.0655 4.2997 13.6667 6.02305M7.7207 8.94603C6.98877 8.2141 6.41082 7.3865 5.98686 6.50348C5.95039 6.42753 5.93216 6.38955 5.91815 6.34149C5.86837 6.17072 5.90413 5.96102 6.00769 5.81639C6.03683 5.77569 6.07165 5.74087 6.14128 5.67124C6.35424 5.45828 6.46072 5.3518 6.53033 5.24473C6.79287 4.84094 6.79287 4.32038 6.53033 3.91658C6.46072 3.80951 6.35424 3.70303 6.14128 3.49007L6.02257 3.37137C5.69885 3.04764 5.53699 2.88578 5.36315 2.79786C5.01743 2.62299 4.60914 2.62299 4.26342 2.79786C4.08958 2.88578 3.92772 3.04764 3.604 3.37137L3.50798 3.46739C3.18536 3.79 3.02405 3.95131 2.90086 4.17062C2.76415 4.41398 2.66586 4.79194 2.66669 5.07106C2.66744 5.32261 2.71624 5.49452 2.81382 5.83835C3.33828 7.68611 4.32781 9.42969 5.78242 10.8843C7.23704 12.3389 8.98062 13.3285 10.8284 13.8529C11.1722 13.9505 11.3441 13.9993 11.5957 14C11.8748 14.0009 12.2528 13.9026 12.4961 13.7659C12.7154 13.6427 12.8767 13.4814 13.1993 13.1588L13.2954 13.0627C13.6191 12.739 13.7809 12.5771 13.8689 12.4033C14.0437 12.0576 14.0437 11.6493 13.8689 11.3036C13.7809 11.1297 13.6191 10.9679 13.2954 10.6442L13.1767 10.5255C12.9637 10.3125 12.8572 10.206 12.7501 10.1364C12.3464 9.87386 11.8258 9.87386 11.422 10.1364C11.3149 10.206 11.2084 10.3125 10.9955 10.5255C10.9259 10.5951 10.891 10.6299 10.8503 10.659C10.7057 10.7626 10.496 10.7984 10.3252 10.7486C10.2772 10.7346 10.2392 10.7163 10.1632 10.6799C9.28023 10.2559 8.45262 9.67796 7.7207 8.94603Z",
1268
+ stroke: color,
1269
+ strokeLinecap: "round",
1270
+ strokeWidth: "1.5"
1271
+ }
1272
+ )
1273
+ ]
1274
+ })
1275
+ );
1276
+ }
1277
+ );
1278
+ PhoneRingIcon.displayName = "ArrowUpIcon";
1279
+
1280
+ // src/icons/up.tsx
1281
+ var React21 = __toESM(require("react"), 1);
1282
+ var import_jsx_runtime37 = require("react/jsx-runtime");
1283
+ var TriangleArrowUpIcon = React21.forwardRef(
1284
+ (_a, forwardedRef) => {
1285
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1286
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1287
+ "svg",
1288
+ __spreadProps(__spreadValues({
1289
+ fill: "none",
1290
+ height: "7",
1291
+ viewBox: "0 0 8 7",
1292
+ width: "8",
1293
+ xmlns: "http://www.w3.org/2000/svg"
1294
+ }, props), {
1295
+ ref: forwardedRef,
1296
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1297
+ "path",
1298
+ {
1299
+ d: "M0.891555 6.1875L7.10845 6.1875C7.80261 6.1875 8.1771 5.37328 7.72534 4.84623L4.6169 1.21971C4.29263 0.841403 3.70737 0.841403 3.3831 1.21971L0.274659 4.84623C-0.177095 5.37328 0.197393 6.1875 0.891555 6.1875Z",
1300
+ fill: color
1301
+ }
1302
+ )
1303
+ })
1304
+ );
1305
+ }
1306
+ );
1307
+ TriangleArrowUpIcon.displayName = "ArrowUpIcon";
1308
+
1309
+ // src/icons/down.tsx
1310
+ var React22 = __toESM(require("react"), 1);
1311
+ var import_jsx_runtime38 = require("react/jsx-runtime");
1312
+ var TriangleArrowDownIcon = React22.forwardRef(
1313
+ (_a, forwardedRef) => {
1314
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1315
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1316
+ "svg",
1317
+ __spreadProps(__spreadValues({
1318
+ fill: "none",
1319
+ height: "7",
1320
+ viewBox: "0 0 8 7",
1321
+ width: "8",
1322
+ xmlns: "http://www.w3.org/2000/svg"
1323
+ }, props), {
1324
+ ref: forwardedRef,
1325
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1326
+ "path",
1327
+ {
1328
+ d: "M7.10844 0.8125H0.891554C0.197392 0.8125 -0.177096 1.62672 0.274659 2.15377L3.3831 5.78029C3.70737 6.1586 4.29263 6.1586 4.6169 5.78029L7.72534 2.15377C8.1771 1.62672 7.80261 0.8125 7.10844 0.8125Z",
1329
+ fill: color
1330
+ }
1331
+ )
1332
+ })
1333
+ );
1334
+ }
1335
+ );
1336
+ TriangleArrowDownIcon.displayName = "ArrowDownIcon";
1337
+
1338
+ // src/icons/mic.tsx
1339
+ var React23 = __toESM(require("react"), 1);
1340
+ var import_jsx_runtime39 = require("react/jsx-runtime");
1341
+ var MicIcon = React23.forwardRef(
1342
+ (_a, forwardedRef) => {
1343
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1344
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
1345
+ "svg",
1346
+ __spreadProps(__spreadValues({
1347
+ fill: "none",
1348
+ height: "16",
1349
+ viewBox: "0 0 12 16",
1350
+ width: "12",
1351
+ xmlns: "http://www.w3.org/2000/svg"
1352
+ }, props), {
1353
+ ref: forwardedRef,
1354
+ children: [
1355
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
1356
+ "path",
1357
+ {
1358
+ clipRule: "evenodd",
1359
+ d: "M9.15383 8.15726H9.17422V7.79011V3.71671H9.17378C9.14572 1.93538 7.69297 0.5 5.90497 0.5C4.11696 0.5 2.66421 1.93538 2.63616 3.71671H2.63577V3.75606C2.63575 3.76044 2.63574 3.76483 2.63574 3.76923C2.63574 3.77362 2.63575 3.77801 2.63577 3.78239V7.79011V8.15726H2.65615C2.83862 9.78997 4.22357 11.0593 5.90499 11.0593C7.58642 11.0593 8.97136 9.78997 9.15383 8.15726Z",
1360
+ fill: color,
1361
+ fillRule: "evenodd"
1362
+ }
1363
+ ),
1364
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
1365
+ "path",
1366
+ {
1367
+ d: "M1.30707 7.51038C1.30707 8.87401 2.61826 12.2831 5.90497 12.2831M5.90497 12.2831V15.4999M5.90497 12.2831C8.8595 11.9148 10.0284 10.8351 10.5203 7.51038M5.90497 15.4999H4.05182M5.90497 15.4999H7.81056",
1368
+ stroke: color,
1369
+ strokeLinecap: "round",
1370
+ strokeWidth: "1.2"
1371
+ }
1372
+ )
1373
+ ]
1374
+ })
1375
+ );
1376
+ }
1377
+ );
1378
+ MicIcon.displayName = "MicIcon";
1379
+
1380
+ // src/icons/camera.tsx
1381
+ var React24 = __toESM(require("react"), 1);
1382
+ var import_jsx_runtime40 = require("react/jsx-runtime");
1383
+ var CameraIcon = React24.forwardRef(
1384
+ (_a, forwardedRef) => {
1385
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1386
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
1387
+ "svg",
1388
+ __spreadProps(__spreadValues({
1389
+ fill: "none",
1390
+ height: "16",
1391
+ ref: forwardedRef,
1392
+ viewBox: "0 0 16 16",
1393
+ width: "16",
1394
+ xmlns: "http://www.w3.org/2000/svg"
1395
+ }, props), {
1396
+ children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
1397
+ "path",
1398
+ {
1399
+ d: "M1.41176 2C0.470588 2 0 2.46222 0 3.38667C0 4.31111 0 11.2444 0 12.1689C0 13.0933 0.470588 13.5556 0.941176 13.5556C1.41176 13.5556 9.88235 13.5556 10.8235 13.5556C11.7647 13.5556 11.7647 13.0933 11.7647 12.1689C11.7647 11.5595 11.7647 10.9502 11.7647 10.6056C11.7647 10.4478 11.8926 10.32 12.0504 10.32H12.1689C12.2126 10.32 12.2557 10.33 12.2949 10.3493L14.1176 11.2444L15.5883 11.9667C15.7782 12.06 16 11.9218 16 11.7103V3.86745C16 3.6507 15.768 3.51238 15.577 3.61479C14.6546 4.10924 12.5222 5.23556 12.2353 5.23556C12.1353 5.23556 12.0821 5.23556 12.0502 5.23556C11.8924 5.23556 11.7647 5.10789 11.7647 4.95009C11.7647 4.51892 11.7647 3.71688 11.7647 3.38667C11.7647 2.92444 11.2941 2 10.3529 2C9.41177 2 2.35294 2 1.41176 2Z",
1400
+ fill: color
1401
+ }
1402
+ )
1403
+ })
1404
+ );
1405
+ }
1406
+ );
1407
+ CameraIcon.displayName = "CameraIcon";
1408
+
1409
+ // src/icons/camera-disabled.tsx
1410
+ var React25 = __toESM(require("react"), 1);
1411
+ var import_jsx_runtime41 = require("react/jsx-runtime");
1412
+ var CameraDisabledIcon = React25.forwardRef(
1413
+ (_a, forwardedRef) => {
1414
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1415
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
1416
+ "svg",
1417
+ __spreadProps(__spreadValues({
1418
+ fill: "none",
1419
+ height: "16",
1420
+ ref: forwardedRef,
1421
+ viewBox: "0 0 16 16",
1422
+ width: "16",
1423
+ xmlns: "http://www.w3.org/2000/svg"
1424
+ }, props), {
1425
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
1426
+ "path",
1427
+ {
1428
+ clipRule: "evenodd",
1429
+ d: "M0 3.3872C0 2.4624 0.470588 2 1.41176 2H10.3529C11.2941 2 11.7647 2.9248 11.7647 3.3872V4.95122C11.7647 5.10908 11.8924 5.2368 12.0502 5.2368H12.2353C12.5222 5.2368 14.6546 4.11005 15.577 3.61542C15.768 3.51296 16 3.65133 16 3.86817V11.714C16 11.9256 15.7782 12.0638 15.5883 11.9706L12.2949 10.3525C12.2557 10.3332 12.2126 10.3232 12.1689 10.3232H12.0504C11.8926 10.3232 11.7647 10.451 11.7647 10.6089V12.1728C11.7647 13.0976 11.7647 13.56 10.8235 13.56H0.941176C0.470588 13.56 0 13.0976 0 12.1728V3.3872ZM8.67719 6.41215C8.8854 6.20379 8.8854 5.86598 8.67719 5.65762C8.46887 5.44925 8.13116 5.44925 7.92284 5.65762L6.16668 7.4145L4.41052 5.65762C4.2022 5.44925 3.8645 5.44925 3.65618 5.65762C3.44794 5.86598 3.44794 6.20379 3.65618 6.41215L5.41244 8.16904L3.65618 9.92593C3.44794 10.1343 3.44794 10.4721 3.65618 10.6805C3.8645 10.8888 4.2022 10.8888 4.41052 10.6805L6.16668 8.92358L7.92284 10.6805C8.13116 10.8888 8.46887 10.8888 8.67719 10.6805C8.8854 10.4721 8.8854 10.1343 8.67719 9.92593L6.92092 8.16904L8.67719 6.41215Z",
1430
+ fill: color,
1431
+ fillRule: "evenodd"
1432
+ }
1433
+ )
1434
+ })
1435
+ );
1436
+ }
1437
+ );
1438
+ CameraDisabledIcon.displayName = "VideoDisabledIcon";
1439
+
1440
+ // src/icons/end-call.tsx
1441
+ var React26 = __toESM(require("react"), 1);
1442
+ var import_jsx_runtime42 = require("react/jsx-runtime");
1443
+ var EndCallIcon = React26.forwardRef(
1444
+ (_a, forwardedRef) => {
1445
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1446
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
1447
+ "svg",
1448
+ __spreadProps(__spreadValues({
1449
+ fill: "none",
1450
+ height: "16",
1451
+ ref: forwardedRef,
1452
+ viewBox: "0 0 16 16",
1453
+ width: "16",
1454
+ xmlns: "http://www.w3.org/2000/svg"
1455
+ }, props), {
1456
+ children: [
1457
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
1458
+ "path",
1459
+ {
1460
+ d: "M8 6.66667C8.90629 6.66667 9.77647 6.83841 10.5856 7.15419C10.6552 7.18136 10.69 7.19494 10.7285 7.21836C10.865 7.30159 10.9727 7.47044 10.9981 7.64117C11.0053 7.68921 11.0053 7.73711 11.0053 7.83291C11.0053 8.1259 11.0053 8.27239 11.0285 8.39394C11.1159 8.8523 11.4382 9.2104 11.8507 9.30757C11.9601 9.33333 12.092 9.33333 12.3557 9.33333H12.5026C12.9035 9.33333 13.1039 9.33333 13.266 9.27424C13.5883 9.1567 13.841 8.87584 13.9468 8.51773C14 8.33766 14 8.11498 14 7.6696V7.53749C14 7.09364 14 6.87172 13.9405 6.63611C13.8745 6.37466 13.7013 6.04705 13.528 5.85561C13.3718 5.68309 13.2352 5.5984 12.9619 5.42901C11.4932 4.51871 9.80113 4 8 4C6.19887 4 4.50678 4.51871 3.03812 5.42901C2.76484 5.5984 2.6282 5.68309 2.472 5.85561C2.29868 6.04705 2.12553 6.37466 2.0595 6.63611C2 6.87172 2 7.09364 2 7.53749V7.6696C2 8.11498 2 8.33766 2.05319 8.51773C2.15897 8.87584 2.41174 9.1567 2.73404 9.27424C2.8961 9.33333 3.09652 9.33333 3.49736 9.33333L3.64434 9.33333C3.90803 9.33333 4.03987 9.33333 4.14926 9.30757C4.56179 9.2104 4.88408 8.8523 4.97153 8.39394C4.99472 8.27239 4.99472 8.1259 4.99472 7.83291C4.99472 7.73711 4.99472 7.68921 5.00187 7.64117C5.0273 7.47044 5.13499 7.30159 5.27154 7.21836C5.30996 7.19494 5.34476 7.18136 5.41436 7.15419C6.22353 6.83841 7.09371 6.66667 8 6.66667Z",
1461
+ fill: color
1462
+ }
1463
+ ),
1464
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
1465
+ "path",
1466
+ {
1467
+ d: "M2 12H14M8 6.66667C8.90629 6.66667 9.77647 6.83841 10.5856 7.15419C10.6552 7.18136 10.69 7.19494 10.7285 7.21836C10.865 7.30159 10.9727 7.47044 10.9981 7.64117C11.0053 7.68921 11.0053 7.73711 11.0053 7.83291C11.0053 8.1259 11.0053 8.27239 11.0285 8.39394C11.1159 8.8523 11.4382 9.2104 11.8507 9.30757C11.9601 9.33333 12.092 9.33333 12.3557 9.33333H12.5026C12.9035 9.33333 13.1039 9.33333 13.266 9.27424C13.5883 9.1567 13.841 8.87584 13.9468 8.51773C14 8.33766 14 8.11498 14 7.6696V7.53749C14 7.09364 14 6.87172 13.9405 6.63611C13.8745 6.37466 13.7013 6.04705 13.528 5.85561C13.3718 5.68309 13.2352 5.5984 12.9619 5.42901C11.4932 4.51871 9.80113 4 8 4C6.19887 4 4.50678 4.51871 3.03812 5.42901C2.76484 5.5984 2.6282 5.68309 2.472 5.85561C2.29868 6.04705 2.12553 6.37466 2.0595 6.63611C2 6.87172 2 7.09364 2 7.53749V7.6696C2 8.11498 2 8.33766 2.05319 8.51773C2.15897 8.87584 2.41174 9.1567 2.73404 9.27424C2.8961 9.33333 3.09652 9.33333 3.49736 9.33333L3.64434 9.33333C3.90803 9.33333 4.03987 9.33333 4.14926 9.30757C4.56179 9.2104 4.88408 8.8523 4.97153 8.39394C4.99472 8.27239 4.99472 8.1259 4.99472 7.83291C4.99472 7.73711 4.99472 7.68921 5.00187 7.64117C5.0273 7.47044 5.13499 7.30159 5.27154 7.21836C5.30996 7.19494 5.34476 7.18136 5.41436 7.15419C6.22353 6.83841 7.09371 6.66667 8 6.66667Z",
1468
+ stroke: color,
1469
+ strokeLinecap: "round",
1470
+ strokeWidth: "1.5"
1471
+ }
1472
+ )
1473
+ ]
1474
+ })
1475
+ );
1476
+ }
1477
+ );
1478
+ EndCallIcon.displayName = "EndCallIcon";
1479
+
1480
+ // src/icons/circle-play.tsx
1481
+ var React27 = __toESM(require("react"), 1);
1482
+ var import_jsx_runtime43 = require("react/jsx-runtime");
1483
+ var CirclePlayIcon = React27.forwardRef(
1484
+ (_a, forwardedRef) => {
1485
+ var _b = _a, { color = "#currentColor" } = _b, props = __objRest(_b, ["color"]);
1486
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
1487
+ "svg",
1488
+ __spreadProps(__spreadValues({
1489
+ fill: "none",
1490
+ height: "16",
1491
+ viewBox: "0 0 16 16",
1492
+ width: "16",
1493
+ xmlns: "http://www.w3.org/2000/svg"
1494
+ }, props), {
1495
+ ref: forwardedRef,
1496
+ children: [
1497
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("circle", { cx: "8", cy: "8", fill: color, r: "8" }),
1498
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
1499
+ "path",
1500
+ {
1501
+ d: "M13.25 7.56699C13.5833 7.75944 13.5833 8.24056 13.25 8.43301L5.75 12.7631C5.41667 12.9556 5 12.715 5 12.3301L5 3.66987C5 3.28497 5.41667 3.04441 5.75 3.23686L13.25 7.56699Z",
1502
+ fill: "white"
1503
+ }
1504
+ )
1505
+ ]
1506
+ })
1507
+ );
1508
+ }
1509
+ );
1510
+ CirclePlayIcon.displayName = "CirclePlayIcon";
1511
+
1512
+ // src/icons/circle-pencil.tsx
1513
+ var React28 = __toESM(require("react"), 1);
1514
+ var import_jsx_runtime44 = require("react/jsx-runtime");
1515
+ var CirclePencilIcon = React28.forwardRef(
1516
+ (_a, forwardedRef) => {
1517
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1518
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
1519
+ "svg",
1520
+ __spreadProps(__spreadValues({
1521
+ fill: "none",
1522
+ height: "16",
1523
+ viewBox: "0 0 16 16",
1524
+ width: "16",
1525
+ xmlns: "http://www.w3.org/2000/svg"
1526
+ }, props), {
1527
+ ref: forwardedRef,
1528
+ children: [
1529
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("circle", { cx: "8", cy: "8", fill: color, r: "8" }),
1530
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
1531
+ "rect",
1532
+ {
1533
+ fill: "white",
1534
+ fillOpacity: "0.01",
1535
+ height: "12",
1536
+ transform: "translate(2 2)",
1537
+ width: "12"
1538
+ }
1539
+ ),
1540
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
1541
+ "path",
1542
+ {
1543
+ clipRule: "evenodd",
1544
+ d: "M11.4829 2.91721C11.3266 2.761 11.0733 2.761 10.9172 2.91721L4.97162 8.86274C4.89965 8.9347 4.84208 9.01974 4.80199 9.11329L3.63233 11.8424C3.5679 11.9928 3.60149 12.1672 3.71715 12.2829C3.8328 12.3985 4.00722 12.4321 4.15755 12.3677L6.88675 11.198C6.9803 11.158 7.06534 11.1004 7.13731 11.0284L13.0829 5.08289C13.239 4.92668 13.239 4.67342 13.0829 4.51721L11.4829 2.91721ZM5.53731 9.42842L11.2 3.76574L12.2343 4.80005L6.57162 10.4628L5.37537 10.9754L5.02463 10.6247L5.53731 9.42842Z",
1545
+ fill: "white",
1546
+ fillRule: "evenodd"
1547
+ }
1548
+ )
1549
+ ]
1550
+ })
1551
+ );
1552
+ }
1553
+ );
1554
+ CirclePencilIcon.displayName = "CirclePencilIcon";
1555
+
1556
+ // src/icons/circle-check.tsx
1557
+ var React29 = __toESM(require("react"), 1);
1558
+ var import_jsx_runtime45 = require("react/jsx-runtime");
1559
+ var CircleCheckIcon = React29.forwardRef(
1560
+ (_a, forwardedRef) => {
1561
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1562
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
1563
+ "svg",
1564
+ __spreadProps(__spreadValues({
1565
+ fill: "none",
1566
+ height: "16",
1567
+ viewBox: "0 0 16 16",
1568
+ width: "16",
1569
+ xmlns: "http://www.w3.org/2000/svg"
1570
+ }, props), {
1571
+ ref: forwardedRef,
1572
+ children: [
1573
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("circle", { cx: "8", cy: "8", fill: "white", r: "7.5", stroke: color }),
1574
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("rect", { fill: "white", fillOpacity: "0.01", height: "16", width: "16" }),
1575
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
1576
+ "path",
1577
+ {
1578
+ clipRule: "evenodd",
1579
+ d: "M12.2314 3.97533C12.5395 4.17683 12.626 4.58999 12.4245 4.89815L7.8912 11.8315C7.78436 11.9949 7.61128 12.1032 7.41763 12.1279C7.22398 12.1527 7.02923 12.0912 6.88477 11.9599L3.95144 9.29328C3.679 9.04561 3.65892 8.62397 3.90659 8.35154C4.15426 8.0791 4.57589 8.05901 4.84833 8.30669L7.20313 10.4474L11.3086 4.16849C11.5101 3.86033 11.9232 3.77385 12.2314 3.97533Z",
1580
+ fill: color,
1581
+ fillRule: "evenodd"
1582
+ }
1583
+ )
1584
+ ]
1585
+ })
1586
+ );
1587
+ }
1588
+ );
1589
+ CircleCheckIcon.displayName = "CircleCheckIcon";
1590
+
1591
+ // src/icons/circle-satisfaction.tsx
1592
+ var React30 = __toESM(require("react"), 1);
1593
+ var import_jsx_runtime46 = require("react/jsx-runtime");
1594
+ var CircleSatisfactionIcon = React30.forwardRef(
1595
+ (_a, forwardedRef) => {
1596
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1597
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
1598
+ "svg",
1599
+ __spreadProps(__spreadValues({
1600
+ fill: "none",
1601
+ height: "16",
1602
+ viewBox: "0 0 16 16",
1603
+ width: "16",
1604
+ xmlns: "http://www.w3.org/2000/svg"
1605
+ }, props), {
1606
+ ref: forwardedRef,
1607
+ children: [
1608
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("circle", { cx: "8", cy: "8", fill: "white", r: "7.5", stroke: color }),
1609
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
1610
+ "rect",
1611
+ {
1612
+ fill: "white",
1613
+ fillOpacity: "0.01",
1614
+ height: "12",
1615
+ transform: "translate(2 2)",
1616
+ width: "12"
1617
+ }
1618
+ ),
1619
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
1620
+ "path",
1621
+ {
1622
+ d: "M7.77842 2.53284C7.86041 2.33573 8.13963 2.33573 8.22162 2.53284L9.53074 5.68036C9.5653 5.76346 9.64346 5.82023 9.73316 5.82742L13.1312 6.09985C13.344 6.1169 13.4302 6.38246 13.2682 6.52134L10.6792 8.73904C10.6109 8.79758 10.581 8.88946 10.6019 8.97699L11.3929 12.2928C11.4424 12.5005 11.2165 12.6647 11.0343 12.5534L8.12512 10.7764C8.04832 10.7296 7.95172 10.7296 7.87492 10.7764L4.96574 12.5534C4.78356 12.6647 4.55766 12.5005 4.60719 12.2928L5.39815 8.97699C5.41904 8.88946 5.38918 8.79758 5.32084 8.73904L2.73191 6.52134C2.56978 6.38246 2.65607 6.1169 2.86886 6.09985L6.26688 5.82742C6.35658 5.82023 6.43474 5.76346 6.4693 5.68036L7.77842 2.53284Z",
1623
+ fill: color
1624
+ }
1625
+ )
1626
+ ]
1627
+ })
1628
+ );
1629
+ }
1630
+ );
1631
+ CircleSatisfactionIcon.displayName = "CircleSatisfactionIcon";
1632
+
1633
+ // src/icons/circle-quote.tsx
1634
+ var React31 = __toESM(require("react"), 1);
1635
+ var import_jsx_runtime47 = require("react/jsx-runtime");
1636
+ var CircleQuoteIcon = React31.forwardRef(
1637
+ (_a, forwardedRef) => {
1638
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1639
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
1640
+ "svg",
1641
+ __spreadProps(__spreadValues({
1642
+ fill: "none",
1643
+ height: "16",
1644
+ viewBox: "0 0 16 16",
1645
+ width: "16",
1646
+ xmlns: "http://www.w3.org/2000/svg"
1647
+ }, props), {
1648
+ ref: forwardedRef,
1649
+ children: [
1650
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("circle", { cx: "8", cy: "8", fill: "white", r: "7.5", stroke: color }),
1651
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
1652
+ "rect",
1653
+ {
1654
+ fill: "white",
1655
+ fillOpacity: "0.01",
1656
+ height: "12",
1657
+ transform: "translate(2 2)",
1658
+ width: "12"
1659
+ }
1660
+ ),
1661
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
1662
+ "path",
1663
+ {
1664
+ clipRule: "evenodd",
1665
+ d: "M9.54 4.75306C10.0449 4.58921 10.6269 4.59213 11.1033 4.83696C12.2025 5.40177 12.6781 6.8575 12.2357 8.39997C12.0372 9.09189 11.6881 9.76375 10.9489 10.4419C10.2096 11.12 9.18425 11.52 8.70854 11.52C8.53813 11.52 8.39998 11.3857 8.39998 11.22C8.39998 11.0543 8.54113 10.92 8.70854 10.92C9.25195 10.92 9.73749 10.6243 10.3125 10.1888C10.7525 9.85541 11.0961 9.42904 11.2864 9.0575C11.6502 8.34691 11.6625 7.34537 11.0746 7.07918C10.7923 7.38761 10.4236 7.56754 9.98178 7.56754C9.02182 7.56754 8.45606 6.79527 8.48038 6.09605C8.50363 5.42777 8.92823 4.95161 9.54 4.75306ZM4.74 4.75306C5.24489 4.58921 5.8269 4.59213 6.30336 4.83696C7.40254 5.40177 7.8781 6.8575 7.43567 8.39997C7.23721 9.09189 6.88813 9.76375 6.14886 10.4419C5.40958 11.12 4.38425 11.52 3.90854 11.52C3.73813 11.52 3.59998 11.3857 3.59998 11.22C3.59998 11.0543 3.74113 10.92 3.90854 10.92C4.45195 10.92 4.93749 10.6243 5.51244 10.1888C5.9525 9.85541 6.29609 9.42904 6.48635 9.0575C6.85023 8.34691 6.86254 7.34537 6.27462 7.07918C5.99227 7.38761 5.62356 7.56754 5.18178 7.56754C4.22182 7.56754 3.65606 6.79527 3.68038 6.09605C3.70363 5.42777 4.12823 4.95161 4.74 4.75306Z",
1666
+ fill: color,
1667
+ fillRule: "evenodd"
1668
+ }
1669
+ )
1670
+ ]
1671
+ })
1672
+ );
1673
+ }
1674
+ );
1675
+ CircleQuoteIcon.displayName = "CircleQuoteIcon";
1676
+
1677
+ // src/icons/circle-chat.tsx
1678
+ var React32 = __toESM(require("react"), 1);
1679
+ var import_jsx_runtime48 = require("react/jsx-runtime");
1680
+ var CircleChatIcon = React32.forwardRef(
1681
+ (_a, forwardedRef) => {
1682
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1683
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
1684
+ "svg",
1685
+ __spreadProps(__spreadValues({
1686
+ fill: "none",
1687
+ height: "16",
1688
+ ref: forwardedRef,
1689
+ viewBox: "0 0 16 16",
1690
+ width: "16",
1691
+ xmlns: "http://www.w3.org/2000/svg"
1692
+ }, props), {
1693
+ children: [
1694
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("rect", { fill: color, height: "16", rx: "8", width: "16" }),
1695
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
1696
+ "rect",
1697
+ {
1698
+ fill: "white",
1699
+ fillOpacity: "0.01",
1700
+ height: "12",
1701
+ transform: "translate(2 2)",
1702
+ width: "12"
1703
+ }
1704
+ ),
1705
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
1706
+ "path",
1707
+ {
1708
+ clipRule: "evenodd",
1709
+ d: "M12 4.39998L4 4.39999C3.33726 4.39999 2.8 4.93726 2.8 5.59999V9.6C2.8 10.2628 3.33726 10.8 4 10.8H8.00002C8.10611 10.8 8.20786 10.8421 8.28286 10.9172L10 12.6343V11.2C10 10.9791 10.1791 10.8 10.4 10.8H12C12.6627 10.8 13.2 10.2628 13.2 9.6V5.59998C13.2 4.93723 12.6627 4.39998 12 4.39998ZM3.99999 3.59999L12 3.59998C13.1046 3.59998 14 4.49541 14 5.59998V9.6C14 10.7045 13.1046 11.6 12 11.6H10.8V13.6C10.8 13.7617 10.7026 13.9076 10.553 13.9695C10.4036 14.0314 10.2315 13.9972 10.1171 13.8829L7.83434 11.6H4C2.89543 11.6 2 10.7045 2 9.6V5.59999C2 4.49542 2.89542 3.6 3.99999 3.59999Z",
1710
+ fill: "white",
1711
+ fillRule: "evenodd"
1712
+ }
1713
+ )
1714
+ ]
1715
+ })
1716
+ );
1717
+ }
1718
+ );
1719
+ CircleChatIcon.displayName = "CircleChatIcon";
1720
+
1721
+ // src/icons/circle-file.tsx
1722
+ var React33 = __toESM(require("react"), 1);
1723
+ var import_jsx_runtime49 = require("react/jsx-runtime");
1724
+ var CircleFileIcon = React33.forwardRef(
1725
+ (_a, forwardedRef) => {
1726
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1727
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
1728
+ "svg",
1729
+ __spreadProps(__spreadValues({
1730
+ fill: "none",
1731
+ height: "16",
1732
+ viewBox: "0 0 16 16",
1733
+ width: "16",
1734
+ xmlns: "http://www.w3.org/2000/svg"
1735
+ }, props), {
1736
+ ref: forwardedRef,
1737
+ children: [
1738
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("rect", { fill: color, height: "16", rx: "8", width: "16" }),
1739
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
1740
+ "rect",
1741
+ {
1742
+ fill: "white",
1743
+ fillOpacity: "0.01",
1744
+ height: "12",
1745
+ transform: "translate(2 2)",
1746
+ width: "12"
1747
+ }
1748
+ ),
1749
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
1750
+ "path",
1751
+ {
1752
+ clipRule: "evenodd",
1753
+ d: "M4.39998 4.00005C4.39998 3.77914 4.57906 3.60005 4.79998 3.60005H9.26861C9.37469 3.60005 9.47643 3.64219 9.55145 3.71721L11.4829 5.64858C11.5578 5.72359 11.6 5.82534 11.6 5.93142V12C11.6 12.2209 11.4209 12.4 11.2 12.4H4.79998C4.57906 12.4 4.39998 12.2209 4.39998 12V4.00005ZM4.79998 2.80005C4.13723 2.80005 3.59998 3.3373 3.59998 4.00005V12C3.59998 12.6628 4.13723 13.2 4.79998 13.2H11.2C11.8627 13.2 12.4 12.6628 12.4 12V5.93142C12.4 5.61316 12.2736 5.30794 12.0485 5.08289L10.1171 3.15152C9.89209 2.92648 9.58686 2.80005 9.26861 2.80005H4.79998ZM5.59998 5.20005C5.37906 5.20005 5.19998 5.37914 5.19998 5.60005C5.19998 5.82096 5.37906 6.00005 5.59998 6.00005H7.99998C8.22089 6.00005 8.39998 5.82096 8.39998 5.60005C8.39998 5.37914 8.22089 5.20005 7.99998 5.20005H5.59998ZM5.59998 7.60005C5.37906 7.60005 5.19998 7.77914 5.19998 8.00005C5.19998 8.22096 5.37906 8.40005 5.59998 8.40005H10.4C10.6209 8.40005 10.8 8.22096 10.8 8.00005C10.8 7.77914 10.6209 7.60005 10.4 7.60005H5.59998ZM5.59998 10C5.37906 10 5.19998 10.1792 5.19998 10.4C5.19998 10.6209 5.37906 10.8 5.59998 10.8H10.4C10.6209 10.8 10.8 10.6209 10.8 10.4C10.8 10.1792 10.6209 10 10.4 10H5.59998Z",
1754
+ fill: "white",
1755
+ fillRule: "evenodd"
1756
+ }
1757
+ )
1758
+ ]
1759
+ })
1760
+ );
1761
+ }
1762
+ );
1763
+ CircleFileIcon.displayName = "CircleFileIcon";
1764
+
1765
+ // src/icons/headset.tsx
1766
+ var React34 = __toESM(require("react"), 1);
1767
+ var import_jsx_runtime50 = require("react/jsx-runtime");
1768
+ var HeadsetIcon = React34.forwardRef(
1769
+ (_a, forwardedRef) => {
1770
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1771
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
1772
+ "svg",
1773
+ __spreadProps(__spreadValues({
1774
+ fill: "none",
1775
+ height: "16",
1776
+ viewBox: "0 0 16 16",
1777
+ width: "16",
1778
+ xmlns: "http://www.w3.org/2000/svg"
1779
+ }, props), {
1780
+ ref: forwardedRef,
1781
+ children: [
1782
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
1783
+ "path",
1784
+ {
1785
+ d: "M3.25 6C3.25 3.75 5.5 2 8 2C10.5 2 12.75 3.75 12.75 6",
1786
+ stroke: color,
1787
+ strokeLinecap: "round",
1788
+ strokeWidth: "1.2"
1789
+ }
1790
+ ),
1791
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
1792
+ "path",
1793
+ {
1794
+ d: "M4.75 6H3.25A1.5 1.5 0 0 0 1.75 7.5V10.75A1.5 1.5 0 0 0 3.25 12.25H4.75Z",
1795
+ stroke: color,
1796
+ strokeLinejoin: "round",
1797
+ strokeWidth: "1.2"
1798
+ }
1799
+ ),
1800
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
1801
+ "path",
1802
+ {
1803
+ d: "M11.25 6H12.75A1.5 1.5 0 0 1 14.25 7.5V10.75A1.5 1.5 0 0 1 12.75 12.25H11.25Z",
1804
+ stroke: color,
1805
+ strokeLinejoin: "round",
1806
+ strokeWidth: "1.2"
1807
+ }
1808
+ ),
1809
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
1810
+ "path",
1811
+ {
1812
+ d: "M4 12.25V13.25C4 13.94 4.56 14.5 5.25 14.5H8",
1813
+ stroke: color,
1814
+ strokeLinecap: "round",
1815
+ strokeLinejoin: "round",
1816
+ strokeWidth: "1.2"
1817
+ }
1818
+ )
1819
+ ]
1820
+ })
1821
+ );
1822
+ }
1823
+ );
1824
+ HeadsetIcon.displayName = "HeadsetIcon";
1825
+
1826
+ // src/atoms/pagination.tsx
1827
+ var import_jsx_runtime51 = require("react/jsx-runtime");
1828
+ function Pagination(props) {
1829
+ const { onChange, count = 0, siblingCount = 2 } = props;
1830
+ const isControlled = props.page !== void 0;
1831
+ const [internalPage, setInternalPage] = (0, import_react36.useState)(props.defaultPage || 1);
1832
+ const page = isControlled ? props.page : internalPage;
1833
+ const goToPage = (0, import_react36.useCallback)(
1834
+ (next2) => {
1835
+ if (!isControlled) {
1836
+ setInternalPage(next2);
1837
+ }
1838
+ onChange == null ? void 0 : onChange(next2);
1839
+ },
1840
+ [isControlled, onChange]
1841
+ );
1842
+ const visibleItems = (0, import_react36.useMemo)(() => {
1843
+ let start = Math.max(1, page - siblingCount);
1844
+ let end = Math.min(count, page + siblingCount);
1845
+ if (page - siblingCount <= 0 && end < count) {
1846
+ end = Math.min(count, end + Math.abs(page - siblingCount) + 1);
1847
+ } else if (page + siblingCount > count && start > 1) {
1848
+ start = Math.max(1, start - (page + siblingCount - count));
1849
+ }
1850
+ return Array.from({ length: end - start + 1 }, (_, i) => i + start);
1851
+ }, [count, page, siblingCount]);
1852
+ const prev = (0, import_react36.useMemo)(() => {
1853
+ const p = page - 1;
1854
+ return p < 1 ? void 0 : p;
1855
+ }, [page]);
1856
+ const next = (0, import_react36.useMemo)(() => {
1857
+ const n = page + 1;
1858
+ return n > count ? void 0 : n;
1859
+ }, [count, page]);
1860
+ const onClickPrev = (0, import_react36.useCallback)(() => {
1861
+ if (prev) goToPage(prev);
1862
+ }, [prev, goToPage]);
1863
+ const onClickNext = (0, import_react36.useCallback)(() => {
1864
+ if (next) goToPage(next);
1865
+ }, [next, goToPage]);
1866
+ const doublePrev = (0, import_react36.useMemo)(() => {
1867
+ if (!visibleItems.length) return;
1868
+ return Math.max(0, visibleItems[0] - 1);
1869
+ }, [visibleItems]);
1870
+ const onClickDoublePrev = (0, import_react36.useCallback)(() => {
1871
+ if (doublePrev) goToPage(doublePrev);
1872
+ }, [doublePrev, goToPage]);
1873
+ const doubleNext = (0, import_react36.useMemo)(() => {
1874
+ if (!visibleItems.length) return;
1875
+ const n = visibleItems[visibleItems.length - 1] + 1;
1876
+ if (n > count) return;
1877
+ return Math.min(count, n);
1878
+ }, [count, visibleItems]);
1879
+ const onClickDoubleNext = (0, import_react36.useCallback)(() => {
1880
+ if (doubleNext) goToPage(doubleNext);
1881
+ }, [doubleNext, goToPage]);
1882
+ const iconSize = {
1883
+ height: 24,
1884
+ width: 24
1885
+ };
1886
+ const moveButtonProps = {
1887
+ variant: "ghost",
1888
+ size: "large",
1889
+ // 숫자 페이지 버튼(40x40)과 동일한 크기·사각(8px) hover 영역으로 통일한다.
1890
+ // (size 'large'는 48x48이라 숫자 버튼보다 커서 width/height를 명시로 덮어쓴다.)
1891
+ style: { width: "40px", height: "40px", borderRadius: "8px" }
1892
+ };
1893
+ const { color: resolvedColor, className: colorClassName } = resolveColor(
1894
+ props.color
1895
+ );
1896
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
1897
+ import_themes23.Flex,
1898
+ {
1899
+ align: "center",
1900
+ gap: "1",
1901
+ className: colorClassName ? `tipp-pagination ${colorClassName}` : "tipp-pagination",
1902
+ "data-accent-color": resolvedColor,
1903
+ children: [
1904
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
1905
+ IconButton,
1906
+ __spreadProps(__spreadValues({
1907
+ disabled: !doublePrev,
1908
+ onClick: onClickDoublePrev
1909
+ }, moveButtonProps), {
1910
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_icons2.DoubleArrowLeftIcon, __spreadValues({}, iconSize))
1911
+ })
1912
+ ),
1913
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(IconButton, __spreadProps(__spreadValues({ disabled: !prev, onClick: onClickPrev }, moveButtonProps), { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_icons2.ChevronLeftIcon, __spreadValues({}, iconSize)) })),
1914
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_themes23.Flex, { gap: "1", children: visibleItems.map((item) => {
1915
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
1916
+ "button",
1917
+ {
1918
+ className: `page-button ${item === page ? "active" : ""}`,
1919
+ onClick: () => {
1920
+ goToPage(item);
1921
+ },
1922
+ type: "button",
1923
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Typo, { variant: "body", children: item })
1924
+ },
1925
+ item
1926
+ );
1927
+ }) }),
1928
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(IconButton, __spreadProps(__spreadValues({ disabled: !next, onClick: onClickNext }, moveButtonProps), { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_icons2.ChevronRightIcon, __spreadValues({}, iconSize)) })),
1929
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
1930
+ IconButton,
1931
+ __spreadProps(__spreadValues({
1932
+ disabled: !doubleNext,
1933
+ onClick: onClickDoubleNext
1934
+ }, moveButtonProps), {
1935
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_icons2.DoubleArrowRightIcon, __spreadValues({}, iconSize))
1936
+ })
1937
+ )
1938
+ ]
1939
+ }
1940
+ );
1941
+ }
1942
+
1943
+ // src/atoms/field-error-wrapper.tsx
1944
+ var import_jsx_runtime52 = require("react/jsx-runtime");
1945
+
1946
+ // src/atoms/ellipsis-tooltip.tsx
1947
+ var import_react37 = require("react");
1948
+ var import_jsx_runtime53 = require("react/jsx-runtime");
1949
+
1950
+ // src/atoms/drawer.tsx
1951
+ var Dialog = __toESM(require("@radix-ui/react-dialog"), 1);
1952
+ var import_themes51 = require("@radix-ui/themes");
1953
+
1954
+ // src/icons/close-panel-arrow.tsx
1955
+ var React37 = __toESM(require("react"), 1);
1956
+ var import_jsx_runtime54 = require("react/jsx-runtime");
1957
+ var ClosePanelArrowIcon = React37.forwardRef(
1958
+ (_a, forwardedRef) => {
1959
+ var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
1960
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
1961
+ "svg",
1962
+ __spreadProps(__spreadValues({
1963
+ fill: "none",
1964
+ height: "16",
1965
+ viewBox: "0 0 16 16",
1966
+ width: "16",
1967
+ xmlns: "http://www.w3.org/2000/svg"
1968
+ }, props), {
1969
+ ref: forwardedRef,
1970
+ children: [
1971
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
1972
+ "path",
1973
+ {
1974
+ clipRule: "evenodd",
1975
+ d: "M3.19315 2.16529C3.43937 1.93445 3.82611 1.94693 4.05695 2.19315L9.87499 7.15624C9.87499 7.15624 10.4479 7.72916 9.87499 8.30207L4.05695 12.8068C3.82611 13.0531 3.43937 13.0656 3.19315 12.8347C2.94693 12.6038 2.93445 12.2171 3.16529 11.9709L8.72916 7.72916L3.16529 3.02908C2.93445 2.78285 2.94693 2.39612 3.19315 2.16529Z",
1976
+ fill: color,
1977
+ fillRule: "evenodd"
1978
+ }
1979
+ ),
1980
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
1981
+ "path",
1982
+ {
1983
+ clipRule: "evenodd",
1984
+ d: "M12.1733 2.58667C12.1733 2.26266 11.9107 2 11.5867 2C11.2627 2 11 2.26266 11 2.58667V12.7201C11 13.044 11.2627 13.3067 11.5867 13.3067C11.9107 13.3067 12.1733 13.044 12.1733 12.7201V2.58667Z",
1985
+ fill: color,
1986
+ fillRule: "evenodd"
1987
+ }
1988
+ )
1989
+ ]
1990
+ })
1991
+ );
1992
+ }
1993
+ );
1994
+ ClosePanelArrowIcon.displayName = "ArrowDownIcon";
1995
+
1996
+ // src/atoms/drawer.tsx
1997
+ var import_jsx_runtime55 = require("react/jsx-runtime");
1998
+
1999
+ // src/atoms/toast.tsx
2000
+ var import_sonner = require("sonner");
2001
+ var import_jsx_runtime56 = require("react/jsx-runtime");
2002
+ var toast = Object.assign(import_sonner.toast, {
2003
+ warn: import_sonner.toast.warning
2004
+ });
2005
+
2006
+ // src/molecules/form/form.tsx
2007
+ var RadixForm = __toESM(require("@radix-ui/react-form"), 1);
2008
+ var import_react38 = require("react");
2009
+ var import_jsx_runtime57 = require("react/jsx-runtime");
2010
+ var Root14 = (0, import_react38.forwardRef)(
2011
+ (_a, ref) => {
2012
+ var _b = _a, { children, className } = _b, rest = __objRest(_b, ["children", "className"]);
2013
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
2014
+ RadixForm.Root,
2015
+ __spreadProps(__spreadValues({}, rest), {
2016
+ className: `FormRoot ${className || ""}`,
2017
+ ref,
2018
+ children
2019
+ })
2020
+ );
2021
+ }
2022
+ );
2023
+ Root14.displayName = "FORM_ROOT";
2024
+ var FieldContext = (0, import_react38.createContext)({
2025
+ name: ""
2026
+ });
2027
+ var Field2 = (0, import_react38.forwardRef)(
2028
+ (_a, ref) => {
2029
+ var _b = _a, { children, className } = _b, rest = __objRest(_b, ["children", "className"]);
2030
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
2031
+ RadixForm.Field,
2032
+ __spreadProps(__spreadValues({}, rest), {
2033
+ className: `FormField ${className || ""}`,
2034
+ ref,
2035
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(FieldContext.Provider, { value: rest, children })
2036
+ })
2037
+ );
2038
+ }
2039
+ );
2040
+ Field2.displayName = "FORM_FIELD";
2041
+ function HeadingLabel(props) {
2042
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Heading2, __spreadProps(__spreadValues({ variant: "heading5" }, props), { children: props.children }));
2043
+ }
2044
+ function CaptionLabel(props) {
2045
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Typo, __spreadProps(__spreadValues({ color: "gray", variant: "caption", weight: "bold" }, props), { children: props.children }));
2046
+ }
2047
+ function BodyLabel(props) {
2048
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Typo, __spreadProps(__spreadValues({ variant: "body", weight: "bold" }, props), { children: props.children }));
2049
+ }
2050
+ var Label3 = (0, import_react38.forwardRef)(
2051
+ (_a, ref) => {
2052
+ var _b = _a, { children, className, variant } = _b, rest = __objRest(_b, ["children", "className", "variant"]);
2053
+ const Comp = (0, import_react38.useMemo)(() => {
2054
+ switch (variant) {
2055
+ case "title":
2056
+ return HeadingLabel;
2057
+ case "caption":
2058
+ return CaptionLabel;
2059
+ case "body":
2060
+ default:
2061
+ return BodyLabel;
2062
+ }
2063
+ }, [variant]);
2064
+ const fieldProps = (0, import_react38.useContext)(FieldContext);
2065
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
2066
+ RadixForm.Label,
2067
+ __spreadProps(__spreadValues({}, rest), {
2068
+ asChild: true,
2069
+ className: `FormLabel ${className || ""}`,
2070
+ ref,
2071
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Comp, { children: [
2072
+ children,
2073
+ fieldProps.required ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Typo, { as: "span", color: "tomato", children: ` *` }) : null
2074
+ ] })
2075
+ })
2076
+ );
2077
+ }
2078
+ );
2079
+ Label3.displayName = "FORM_Label";
2080
+ var Message2 = (0, import_react38.forwardRef)(
2081
+ (_a, ref) => {
2082
+ var _b = _a, { children, className } = _b, rest = __objRest(_b, ["children", "className"]);
2083
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
2084
+ RadixForm.Message,
2085
+ __spreadProps(__spreadValues({}, rest), {
2086
+ asChild: true,
2087
+ className: `FormMessage ${className || ""}`,
2088
+ ref,
2089
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Typo, { color: "red", children })
2090
+ })
2091
+ );
2092
+ }
2093
+ );
2094
+ Message2.displayName = "FORM_Message";
2095
+ var Control2 = (0, import_react38.forwardRef)(
2096
+ (_a, ref) => {
2097
+ var _b = _a, { className } = _b, rest = __objRest(_b, ["className"]);
2098
+ const fieldProps = (0, import_react38.useContext)(FieldContext);
2099
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
2100
+ RadixForm.Control,
2101
+ __spreadProps(__spreadValues({}, rest), {
2102
+ className: `FormControl ${className || ""}`,
2103
+ ref,
2104
+ required: fieldProps.required
2105
+ })
2106
+ );
2107
+ }
2108
+ );
2109
+ Control2.displayName = "FORM_Control";
2110
+
2111
+ // src/atoms/auto-sizing-input.tsx
2112
+ var import_themes52 = require("@radix-ui/themes");
2113
+ var import_react39 = require("react");
2114
+ var import_jsx_runtime58 = require("react/jsx-runtime");
2115
+ var useTextWidth = (text, font) => {
2116
+ const [textWidth, setTextWidth] = (0, import_react39.useState)(0);
2117
+ (0, import_react39.useEffect)(() => {
2118
+ if (!text) {
2119
+ setTextWidth(0);
2120
+ return;
2121
+ }
2122
+ const canvas = document.createElement("canvas");
2123
+ const context = canvas.getContext("2d");
2124
+ if (!context) {
2125
+ setTextWidth(0);
2126
+ return;
2127
+ }
2128
+ context.font = font;
2129
+ const width = Math.ceil(context.measureText(text).width);
2130
+ setTextWidth(width);
2131
+ }, [text, font]);
2132
+ return textWidth;
2133
+ };
2134
+ var getFontString = (element) => {
2135
+ if (!element) return "14px sans-serif";
2136
+ if (typeof window === "undefined") return "14px sans-serif";
2137
+ const computedStyle = window.getComputedStyle(element);
2138
+ const fontSize = computedStyle.fontSize || "14px";
2139
+ const fontFamily = computedStyle.fontFamily || "sans-serif";
2140
+ const fontWeight = computedStyle.fontWeight || "normal";
2141
+ const fontStyle = computedStyle.fontStyle || "normal";
2142
+ return `${fontStyle} ${fontWeight} ${fontSize} ${fontFamily}`;
2143
+ };
2144
+ var AutoSizingInput = (0, import_react39.forwardRef)(
2145
+ (_a, ref) => {
2146
+ var _b = _a, {
2147
+ value: externalValue,
2148
+ onChangeValue,
2149
+ onChange,
2150
+ maxWidth,
2151
+ minWidth
2152
+ } = _b, rest = __objRest(_b, [
2153
+ "value",
2154
+ "onChangeValue",
2155
+ "onChange",
2156
+ "maxWidth",
2157
+ "minWidth"
2158
+ ]);
2159
+ const isControlled = externalValue !== void 0;
2160
+ const [internalValue, setInternalValue] = (0, import_react39.useState)(externalValue || "");
2161
+ const value = isControlled ? externalValue : internalValue;
2162
+ const defaultRef = (0, import_react39.useRef)(null);
2163
+ const inputRef = ref || defaultRef;
2164
+ const [fontString, setFontString] = (0, import_react39.useState)("14px sans-serif");
2165
+ const displayValue = (0, import_react39.useMemo)(
2166
+ () => value || rest.placeholder || "",
2167
+ [value, rest.placeholder]
2168
+ );
2169
+ const textWidth = useTextWidth(displayValue, fontString);
2170
+ const dynamicWidth = (0, import_react39.useMemo)(
2171
+ () => `${Math.max(textWidth + 16, 24)}px`,
2172
+ [textWidth]
2173
+ );
2174
+ (0, import_react39.useEffect)(() => {
2175
+ if (!("current" in inputRef) || !inputRef.current) return;
2176
+ const element = inputRef.current;
2177
+ const updateFont = () => {
2178
+ const font = getFontString(element);
2179
+ setFontString(font);
2180
+ };
2181
+ updateFont();
2182
+ const observer = new MutationObserver((mutations) => {
2183
+ mutations.forEach((mutation) => {
2184
+ if (mutation.type === "attributes" && (mutation.attributeName === "style" || mutation.attributeName === "class")) {
2185
+ updateFont();
2186
+ }
2187
+ });
2188
+ });
2189
+ observer.observe(element, {
2190
+ attributes: true,
2191
+ attributeFilter: ["style", "class"]
2192
+ });
2193
+ return () => {
2194
+ observer.disconnect();
2195
+ };
2196
+ }, [inputRef]);
2197
+ const handleChange = (0, import_react39.useCallback)(
2198
+ (evt) => {
2199
+ const newValue = evt.target.value;
2200
+ onChange == null ? void 0 : onChange(evt);
2201
+ if (!isControlled) {
2202
+ setInternalValue(newValue);
2203
+ }
2204
+ onChangeValue == null ? void 0 : onChangeValue(newValue);
2205
+ },
2206
+ [onChange, onChangeValue, isControlled]
2207
+ );
2208
+ const onClick = (0, import_react39.useCallback)(() => {
2209
+ var _a2;
2210
+ if ("current" in inputRef) {
2211
+ (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
2212
+ }
2213
+ }, [inputRef]);
2214
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
2215
+ import_themes52.Box,
2216
+ {
2217
+ className: "auto-sizing-input wrapper",
2218
+ maxWidth,
2219
+ minWidth,
2220
+ onClick,
2221
+ style: { width: dynamicWidth },
2222
+ children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("input", __spreadValues({ onChange: handleChange, ref: inputRef, value }, rest))
2223
+ }
2224
+ );
2225
+ }
2226
+ );
2227
+ AutoSizingInput.displayName = "AutoSizingInput";
2228
+
2229
+ // src/atoms/bullet-text.tsx
2230
+ var import_jsx_runtime59 = require("react/jsx-runtime");
2231
+
2232
+ // src/atoms/list.tsx
2233
+ var import_react40 = require("react");
2234
+ var import_clsx28 = require("clsx");
2235
+ var import_jsx_runtime60 = require("react/jsx-runtime");
2236
+ var ListContext = (0, import_react40.createContext)({
2237
+ size: "large"
2238
+ });
2239
+
2240
+ // src/app/roleplay/utils/session-utils.ts
2241
+ var import_date_fns = require("date-fns");
2242
+ var COLOR_VARS = {
2243
+ green: {
2244
+ fg: "var(--green-11)",
2245
+ bg: "var(--green-a3)",
2246
+ border: "var(--green-a6)"
2247
+ },
2248
+ amber: {
2249
+ fg: "var(--amber-11)",
2250
+ bg: "var(--amber-a3)",
2251
+ border: "var(--amber-a6)"
2252
+ },
2253
+ red: { fg: "var(--red-11)", bg: "var(--red-a3)", border: "var(--red-a6)" },
2254
+ gray: { fg: "var(--gray-9)", bg: "var(--gray-a3)", border: "var(--gray-5)" }
2255
+ };
2256
+ function qualityColor(quality) {
2257
+ switch (quality) {
2258
+ case "\uCDA9\uC871":
2259
+ return "green";
2260
+ case "\uBD80\uBD84\uCDA9\uC871":
2261
+ return "amber";
2262
+ case "\uBBF8\uD761":
2263
+ return "red";
2264
+ default:
2265
+ return "gray";
2266
+ }
2267
+ }
2268
+ var QUALITY_RATIO = {
2269
+ \uCDA9\uC871: 1,
2270
+ \uBD80\uBD84\uCDA9\uC871: 0.6,
2271
+ \uBBF8\uD761: 0.3
2272
+ };
2273
+ function qualityRatio(quality) {
2274
+ return quality === null ? null : QUALITY_RATIO[quality];
2275
+ }
2276
+ function gradeColorFromLabel(label) {
2277
+ if (!label) return "gray";
2278
+ if (label.includes("\uBBF8\uD761") || label.includes("\uBD80\uC871") || label.includes("\uBBF8\uB2EC"))
2279
+ return "red";
2280
+ if (label.includes("\uBD80\uBD84") || label.includes("\uBCF4\uD1B5")) return "amber";
2281
+ if (label.includes("\uCDA9\uC871") || label.includes("\uC6B0\uC218") || label.includes("\uCDA9\uBD84"))
2282
+ return "green";
2283
+ return "gray";
2284
+ }
2285
+ function stepColor(step) {
2286
+ return step.quality !== null ? qualityColor(step.quality) : gradeColorFromLabel(step.qualityLabel);
2287
+ }
2288
+ function stepVars(step) {
2289
+ return COLOR_VARS[stepColor(step)];
2290
+ }
2291
+ function stepRatio(step) {
2292
+ if (step.maxScore !== null && step.maxScore > 0 && step.score !== null) {
2293
+ return Math.max(0, Math.min(1, step.score / step.maxScore));
2294
+ }
2295
+ return qualityRatio(step.quality);
2296
+ }
2297
+ function stepScoreText(step) {
2298
+ if (step.score === null) return null;
2299
+ return step.maxScore !== null ? `${step.score}/${step.maxScore}` : `${step.score}`;
2300
+ }
2301
+ function stepGradeLabel(step) {
2302
+ return step.qualityLabel;
2303
+ }
2304
+ function hasStepSignal(step) {
2305
+ return step.score !== null || step.qualityLabel !== null;
2306
+ }
2307
+ var LETTER_RE = /[A-Za-z]/;
2308
+ function stepCode(step) {
2309
+ if (step.initial !== null && step.initial.trim().length > 0) {
2310
+ return step.initial.trim();
2311
+ }
2312
+ const label = step.label.trim();
2313
+ const first = label.charAt(0);
2314
+ const second = label.charAt(1);
2315
+ if (LETTER_RE.test(first) && (second === " " || second === "\u2014" || second === "-")) {
2316
+ return first.toUpperCase();
2317
+ }
2318
+ if (first === "[" && LETTER_RE.test(second) && label.charAt(2) === "]") {
2319
+ return second.toUpperCase();
2320
+ }
2321
+ return step.key.split("_")[0].slice(0, 4).toUpperCase();
2322
+ }
2323
+ function formatDate(iso) {
2324
+ const d = new Date(iso);
2325
+ if (Number.isNaN(d.getTime())) return iso;
2326
+ return (0, import_date_fns.format)(d, "M/d HH:mm");
2327
+ }
2328
+ var SPEECH_OVERTALK_THRESHOLD = 40;
2329
+
2330
+ // src/app/roleplay/parts/analysis-section.tsx
2331
+ var import_jsx_runtime61 = require("react/jsx-runtime");
2332
+ function Section2({
2333
+ title,
2334
+ desc,
2335
+ children
2336
+ }) {
2337
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("section", { children: [
2338
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_themes7.Box, { mb: "3", children: [
2339
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
2340
+ Heading2,
2341
+ {
2342
+ size: { initial: "4", md: "5" },
2343
+ style: { textWrap: "balance" },
2344
+ weight: "bold",
2345
+ children: title
2346
+ }
2347
+ ),
2348
+ desc ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: desc }) }) : null
2349
+ ] }),
2350
+ children
2351
+ ] });
2352
+ }
2353
+ function AnalysisSection({
2354
+ title,
2355
+ desc,
2356
+ items,
2357
+ tone
2358
+ }) {
2359
+ if (items.length === 0) return null;
2360
+ const accentBorder = tone === "good" ? "var(--green-a6)" : "var(--amber-a6)";
2361
+ const numColor = tone === "good" ? "var(--green-11)" : "var(--amber-11)";
2362
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Section2, { desc, title, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_themes23.Flex, { direction: "column", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_themes7.Box, { children: [
2363
+ index > 0 && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_themes40.Separator, { size: "4" }),
2364
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
2365
+ import_themes23.Flex,
2366
+ {
2367
+ gap: "3",
2368
+ pl: "3",
2369
+ py: "3",
2370
+ style: { borderLeft: `2px solid ${accentBorder}` },
2371
+ children: [
2372
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
2373
+ Typo,
2374
+ {
2375
+ as: "span",
2376
+ mono: true,
2377
+ style: { flexShrink: 0, color: numColor },
2378
+ variant: "body",
2379
+ weight: "bold",
2380
+ children: index + 1
2381
+ }
2382
+ ),
2383
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_themes7.Box, { style: { minWidth: 0 }, children: [
2384
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: item.title }),
2385
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Typo, { as: "p", variant: "body", children: item.detail }) })
2386
+ ] })
2387
+ ]
2388
+ }
2389
+ )
2390
+ ] }, item.title)) }) });
2391
+ }
2392
+
2393
+ // src/app/roleplay/parts/coaching-panel.tsx
2394
+ var import_jsx_runtime62 = require("react/jsx-runtime");
2395
+ function Section3({
2396
+ title,
2397
+ desc,
2398
+ children
2399
+ }) {
2400
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("section", { children: [
2401
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_themes7.Box, { mb: "3", children: [
2402
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
2403
+ Heading2,
2404
+ {
2405
+ size: { initial: "4", md: "5" },
2406
+ style: { textWrap: "balance" },
2407
+ weight: "bold",
2408
+ children: title
2409
+ }
2410
+ ),
2411
+ desc ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Typo, { as: "p", color: "gray", variant: "body", children: desc }) }) : null
2412
+ ] }),
2413
+ children
2414
+ ] });
2415
+ }
2416
+ function CoachingPanel({ skills }) {
2417
+ if (skills.length === 0) return null;
2418
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Section3, { desc: "\uB2E4\uC74C \uC7AC\uB3C4\uC804\uC5D0 \uBC14\uB85C \uC4F8 \uB300\uD654 \uAE30\uC220", title: "\uC989\uC2DC \uC801\uC6A9 \uC2A4\uD0AC", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_themes24.Grid, { columns: "1", gap: "6", children: skills.map((skill, index) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
2419
+ Card,
2420
+ {
2421
+ style: { padding: "var(--space-3)" },
2422
+ variant: "surface",
2423
+ children: [
2424
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_themes23.Flex, { align: "center", gap: "2", children: [
2425
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
2426
+ import_themes23.Flex,
2427
+ {
2428
+ align: "center",
2429
+ justify: "center",
2430
+ style: {
2431
+ width: 22,
2432
+ height: 22,
2433
+ borderRadius: "var(--radius-full)",
2434
+ background: "var(--accent-9)",
2435
+ flexShrink: 0
2436
+ },
2437
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
2438
+ Typo,
2439
+ {
2440
+ as: "span",
2441
+ mono: true,
2442
+ style: { color: "var(--accent-contrast)" },
2443
+ variant: "body",
2444
+ weight: "bold",
2445
+ children: index + 1
2446
+ }
2447
+ )
2448
+ }
2449
+ ),
2450
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Typo, { as: "span", variant: "body", weight: "medium", children: skill.title })
2451
+ ] }),
2452
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_themes7.Box, { mt: "2", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Typo, { as: "p", variant: "body", children: skill.description }) }),
2453
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
2454
+ import_themes7.Box,
2455
+ {
2456
+ mt: "2",
2457
+ p: "2",
2458
+ style: {
2459
+ borderRadius: "var(--radius-2)",
2460
+ background: "var(--accent-a2)"
2461
+ },
2462
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Typo, { as: "p", style: { color: "var(--accent-11)" }, variant: "body", children: skill.example })
2463
+ }
2464
+ )
2465
+ ]
2466
+ },
2467
+ skill.title
2468
+ )) }) });
2469
+ }
2470
+
2471
+ // src/app/roleplay/parts/score-summary.tsx
2472
+ var import_jsx_runtime63 = require("react/jsx-runtime");
2473
+ function SpeechShareBar({ share }) {
2474
+ const isOvertalking = share.userPct > SPEECH_OVERTALK_THRESHOLD;
2475
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes7.Box, { children: [
2476
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { align: "center", justify: "between", mb: "1", children: [
2477
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2478
+ Typo,
2479
+ {
2480
+ as: "span",
2481
+ style: {
2482
+ fontSize: "0.75rem",
2483
+ color: isOvertalking ? "var(--red-11)" : "var(--accent-11)"
2484
+ },
2485
+ variant: "body",
2486
+ weight: "medium",
2487
+ children: [
2488
+ "\uB0B4 \uBC1C\uD654\uB7C9 ",
2489
+ share.userPct,
2490
+ "%"
2491
+ ]
2492
+ }
2493
+ ),
2494
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2495
+ Typo,
2496
+ {
2497
+ as: "span",
2498
+ color: "gray",
2499
+ style: { fontSize: "0.75rem" },
2500
+ variant: "body",
2501
+ children: [
2502
+ "\uC0C1\uB300 ",
2503
+ share.partnerPct,
2504
+ "%"
2505
+ ]
2506
+ }
2507
+ )
2508
+ ] }),
2509
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2510
+ import_themes23.Flex,
2511
+ {
2512
+ style: {
2513
+ height: 6,
2514
+ borderRadius: "var(--radius-1)",
2515
+ overflow: "hidden",
2516
+ background: "var(--gray-4)"
2517
+ },
2518
+ children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2519
+ import_themes7.Box,
2520
+ {
2521
+ style: {
2522
+ width: `${share.userPct}%`,
2523
+ background: isOvertalking ? "var(--red-9)" : "var(--accent-9)"
2524
+ }
2525
+ }
2526
+ )
2527
+ }
2528
+ ),
2529
+ isOvertalking ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2530
+ Typo,
2531
+ {
2532
+ as: "p",
2533
+ mt: "1",
2534
+ style: { fontSize: "0.75rem", color: "var(--red-11)" },
2535
+ variant: "body",
2536
+ children: "\uC0C1\uB300\uC758 \uB9D0\uC744 \uB354 \uB4E3\uACE0 \uC9C8\uBB38\xB7\uACBD\uCCAD\uC758 \uBE44\uC911\uC744 \uB192\uC5EC \uBCF4\uC138\uC694"
2537
+ }
2538
+ ) : null
2539
+ ] });
2540
+ }
2541
+ function ScoreSummary({
2542
+ detail,
2543
+ report,
2544
+ speechShare
2545
+ }) {
2546
+ var _a;
2547
+ const scoreValue = (_a = detail.totalScore) != null ? _a : report.totalScore;
2548
+ const comment = report.comment;
2549
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2550
+ import_themes24.Grid,
2551
+ {
2552
+ align: "start",
2553
+ columns: comment ? { initial: "1", md: "minmax(0, 240px) 1fr" } : "1",
2554
+ gap: "5",
2555
+ children: [
2556
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Card, { variant: "surface", children: [
2557
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { align: "center", direction: "column", gap: "2", py: "3", children: [
2558
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uC885\uD569 \uC810\uC218" }),
2559
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { align: "baseline", gap: "1", children: [
2560
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2561
+ Typo,
2562
+ {
2563
+ as: "span",
2564
+ mono: true,
2565
+ style: {
2566
+ color: "var(--gray-12)",
2567
+ fontSize: "3.75rem",
2568
+ lineHeight: 1.1
2569
+ },
2570
+ weight: "bold",
2571
+ children: scoreValue != null ? scoreValue : "\u2014"
2572
+ }
2573
+ ),
2574
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "span", color: "gray", mono: true, variant: "subtitle", children: "/100" })
2575
+ ] })
2576
+ ] }),
2577
+ speechShare ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
2578
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_themes40.Separator, { my: "3", size: "4" }),
2579
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SpeechShareBar, { share: speechShare })
2580
+ ] }) : null
2581
+ ] }),
2582
+ comment ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_themes23.Flex, { direction: "column", gap: "3", children: [
2583
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: "\uC885\uD569 \uBD84\uC11D" }),
2584
+ /* @__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 }) }),
2585
+ report.deduction ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2586
+ import_themes7.Box,
2587
+ {
2588
+ pl: "3",
2589
+ pr: "3",
2590
+ py: "2",
2591
+ style: {
2592
+ borderLeft: "2px solid var(--amber-a6)",
2593
+ background: "var(--amber-a2)",
2594
+ borderRadius: "var(--radius-2)"
2595
+ },
2596
+ children: [
2597
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
2598
+ Typo,
2599
+ {
2600
+ as: "p",
2601
+ mono: true,
2602
+ style: { color: "var(--amber-11)" },
2603
+ variant: "body",
2604
+ weight: "medium",
2605
+ children: [
2606
+ "\uAC10\uC810 ",
2607
+ report.deduction.score,
2608
+ "\uC810"
2609
+ ]
2610
+ }
2611
+ ),
2612
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
2613
+ Typo,
2614
+ {
2615
+ as: "p",
2616
+ style: { color: "var(--amber-11)" },
2617
+ variant: "body",
2618
+ children: report.deduction.basis
2619
+ }
2620
+ ) })
2621
+ ]
2622
+ }
2623
+ ) : null
2624
+ ] }) : null
2625
+ ]
2626
+ }
2627
+ );
2628
+ }
2629
+
2630
+ // src/app/roleplay/parts/score-trend-section.tsx
2631
+ var import_react68 = require("react");
2632
+
2633
+ // src/molecules/expand-table/index.tsx
2634
+ var import_react_table2 = require("@tanstack/react-table");
2635
+ var import_react42 = require("react");
2636
+ var import_themes53 = require("@radix-ui/themes");
2637
+
2638
+ // src/molecules/expand-table/row.tsx
2639
+ var import_react_table = require("@tanstack/react-table");
2640
+ var import_react41 = require("react");
2641
+ var import_jsx_runtime64 = require("react/jsx-runtime");
2642
+ function Row(props) {
2643
+ const { row, ExpandComp, gridTemplateColumns, getRowStyle, getCellStyle } = props;
2644
+ const [open, setOpen] = (0, import_react41.useState)(false);
2645
+ const onClickRow = (0, import_react41.useCallback)(() => {
2646
+ var _a;
2647
+ (_a = props.onRowClick) == null ? void 0 : _a.call(props, row.original);
2648
+ setOpen((prev) => !prev);
2649
+ }, [props, row.original]);
2650
+ const rowClassName = (0, import_react41.useMemo)(() => {
2651
+ const baseCls = ["tr-wrapper"];
2652
+ if (ExpandComp) {
2653
+ baseCls.push("expandable");
2654
+ }
2655
+ if (props.onRowClick) {
2656
+ baseCls.push("clickable");
2657
+ }
2658
+ return baseCls.join(" ");
2659
+ }, [ExpandComp, props.onRowClick]);
2660
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: rowClassName, children: [
2661
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
2662
+ "button",
2663
+ {
2664
+ className: "tr",
2665
+ onClick: onClickRow,
2666
+ style: __spreadValues({
2667
+ gridTemplateColumns
2668
+ }, (getRowStyle == null ? void 0 : getRowStyle(row.original)) || {}),
2669
+ type: "button",
2670
+ children: row.getVisibleCells().map((cell) => {
2671
+ var _a, _b, _c;
2672
+ const autoSize = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.autoSize;
2673
+ const justifyContent = ((_b = cell.column.columnDef.meta) == null ? void 0 : _b.align) || props.defaultAlign;
2674
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
2675
+ "div",
2676
+ {
2677
+ className: "td",
2678
+ style: __spreadValues({
2679
+ // width: autoSize ? undefined : cell.column.getSize(),
2680
+ flexGrow: autoSize ? 1 : void 0,
2681
+ justifyContent
2682
+ }, (getCellStyle == null ? void 0 : getCellStyle(row.original)) || {}),
2683
+ children: [
2684
+ (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()),
2685
+ ((_c = cell.column.columnDef.meta) == null ? void 0 : _c.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
2686
+ cell.column.columnDef.meta.OpenBtn,
2687
+ {
2688
+ data: row.original,
2689
+ open,
2690
+ setIsOpen: setOpen
2691
+ }
2692
+ ) : null
2693
+ ]
2694
+ },
2695
+ cell.id
2696
+ );
2697
+ })
2698
+ },
2699
+ `tr_${row.id}`
2700
+ ),
2701
+ 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
2702
+ ] }, `tr-wrapper_${row.id}`);
2703
+ }
2704
+
2705
+ // src/molecules/expand-table/index.tsx
2706
+ var import_jsx_runtime65 = require("react/jsx-runtime");
2707
+ var sortButtonColorMapper = {
2708
+ card: {
2709
+ selected: "var(--iris-10)",
2710
+ unselected: "var(--iris-6)"
2711
+ },
2712
+ sprite: {
2713
+ // selected: 'var(--gray-a12)',
2714
+ // unselected: 'var(--gray-a6)',
2715
+ selected: "var(--iris-10)",
2716
+ unselected: "var(--iris-6)"
2717
+ },
2718
+ "sprite-border": {
2719
+ selected: "var(--iris-10)",
2720
+ unselected: "var(--iris-6)"
2721
+ }
2722
+ };
2723
+ function ExpandTable(props) {
2724
+ const {
2725
+ data,
2726
+ columns,
2727
+ ExpandComp,
2728
+ placeholder,
2729
+ onRowClick,
2730
+ tableStyle,
2731
+ showPagination = true,
2732
+ isLoading,
2733
+ pageIndex = 0,
2734
+ pageSize = 10,
2735
+ siblingCount = 2,
2736
+ onPageChange,
2737
+ getRowStyle,
2738
+ getCellStyle,
2739
+ variant = "card",
2740
+ slim = false
2741
+ } = props;
2742
+ const defaultAlign = "left";
2743
+ const [pagination, setPagination] = (0, import_react42.useState)({
2744
+ pageIndex: pageIndex || 0,
2745
+ pageSize: pageSize || 9999
2746
+ });
2747
+ (0, import_react42.useEffect)(() => {
2748
+ setPagination((prev) => {
2749
+ const next = pageIndex;
2750
+ if (prev.pageIndex === next) return prev;
2751
+ return __spreadProps(__spreadValues({}, prev), { pageIndex: next });
2752
+ });
2753
+ }, [pageIndex]);
2754
+ const [sorting, setSorting] = (0, import_react42.useState)([]);
2755
+ const { getRowModel, getHeaderGroups, setPageIndex } = (0, import_react_table2.useReactTable)({
2756
+ data: data || [],
2757
+ columns,
2758
+ getCoreRowModel: (0, import_react_table2.getCoreRowModel)(),
2759
+ getSortedRowModel: (0, import_react_table2.getSortedRowModel)(),
2760
+ state: {
2761
+ sorting,
2762
+ pagination
2763
+ },
2764
+ onSortingChange: setSorting,
2765
+ getPaginationRowModel: (0, import_react_table2.getPaginationRowModel)(),
2766
+ onPaginationChange: setPagination
2767
+ });
2768
+ const gridTemplateColumns = (0, import_react42.useMemo)(() => {
2769
+ return columns.map((col) => {
2770
+ var _a;
2771
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize) return `minmax(${col.size || 50}px, 1fr)`;
2772
+ return `${col.size || 150}px`;
2773
+ }).join(" ");
2774
+ }, [columns]);
2775
+ const rowModels = getRowModel();
2776
+ const onChangePagination = (0, import_react42.useCallback)(
2777
+ (page) => {
2778
+ const idx = page - 1;
2779
+ setPageIndex(idx);
2780
+ onPageChange == null ? void 0 : onPageChange(idx);
2781
+ },
2782
+ [setPageIndex, onPageChange]
2783
+ );
2784
+ const helpCompRender = (0, import_react42.useCallback)(
2785
+ (rowLength) => {
2786
+ if (isLoading) {
2787
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2788
+ import_themes23.Flex,
2789
+ {
2790
+ align: "center",
2791
+ height: "100%",
2792
+ justify: "center",
2793
+ p: "5",
2794
+ width: "100%",
2795
+ children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes50.Spinner, {})
2796
+ }
2797
+ );
2798
+ }
2799
+ if (rowLength === 0) {
2800
+ 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");
2801
+ }
2802
+ return null;
2803
+ },
2804
+ [isLoading, placeholder]
2805
+ );
2806
+ const pageCount = (0, import_react42.useMemo)(() => {
2807
+ if (!data) return 0;
2808
+ return Math.ceil(data.length / pageSize);
2809
+ }, [data, pageSize]);
2810
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: `expand-table-wrapper ${variant}${slim ? " slim" : ""}`, children: [
2811
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "expand-table", style: tableStyle, children: [
2812
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2813
+ "div",
2814
+ {
2815
+ className: "tr",
2816
+ style: { gridTemplateColumns },
2817
+ children: headerGroup.headers.map((header) => {
2818
+ var _a;
2819
+ const sortable = header.column.getCanSort();
2820
+ const sortedState = header.column.getIsSorted();
2821
+ const justifyContent = ((_a = header.column.columnDef.meta) == null ? void 0 : _a.align) || defaultAlign;
2822
+ if (sortable) {
2823
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
2824
+ "button",
2825
+ {
2826
+ onClick: header.column.getToggleSortingHandler(),
2827
+ style: { cursor: "pointer" },
2828
+ type: "button",
2829
+ children: [
2830
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Typo, { as: "div", variant: "body", children: (0, import_react_table2.flexRender)(
2831
+ header.column.columnDef.header,
2832
+ header.getContext()
2833
+ ) }),
2834
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
2835
+ import_themes23.Flex,
2836
+ {
2837
+ direction: "column",
2838
+ style: { marginLeft: "var(--space-2)" },
2839
+ children: [
2840
+ sortedState === false && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2841
+ TriangleArrowDownIcon,
2842
+ {
2843
+ color: sortButtonColorMapper[variant].unselected
2844
+ }
2845
+ ),
2846
+ sortedState === "asc" && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2847
+ TriangleArrowUpIcon,
2848
+ {
2849
+ color: sortButtonColorMapper[variant].selected
2850
+ }
2851
+ ),
2852
+ sortedState === "desc" && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2853
+ TriangleArrowDownIcon,
2854
+ {
2855
+ color: sortButtonColorMapper[variant].selected
2856
+ }
2857
+ )
2858
+ ]
2859
+ }
2860
+ )
2861
+ ]
2862
+ }
2863
+ ) }, header.id);
2864
+ }
2865
+ 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)(
2866
+ header.column.columnDef.header,
2867
+ header.getContext()
2868
+ ) }) }, header.id);
2869
+ })
2870
+ },
2871
+ headerGroup.id
2872
+ )) }),
2873
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes53.ScrollArea, { className: "tbody", children: helpCompRender(rowModels.rows.length) || rowModels.rows.map((row) => {
2874
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2875
+ Row,
2876
+ {
2877
+ ExpandComp,
2878
+ defaultAlign,
2879
+ getCellStyle,
2880
+ getRowStyle,
2881
+ gridTemplateColumns,
2882
+ onRowClick,
2883
+ row
2884
+ },
2885
+ `row_${row.id}`
2886
+ );
2887
+ }) })
2888
+ ] }),
2889
+ showPagination ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_themes23.Flex, { justify: "end", pt: "4", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
2890
+ Pagination,
2891
+ {
2892
+ count: pageCount,
2893
+ onChange: onChangePagination,
2894
+ page: pagination.pageIndex + 1,
2895
+ siblingCount
2896
+ }
2897
+ ) }) : null
2898
+ ] });
2899
+ }
2900
+
2901
+ // src/molecules/navigation.tsx
2902
+ var import_jsx_runtime66 = require("react/jsx-runtime");
2903
+
2904
+ // src/molecules/date-picker/index.tsx
2905
+ var import_react43 = require("react");
2906
+ var import_react_datepicker = __toESM(require("react-datepicker"), 1);
2907
+ var import_locale = require("date-fns/locale");
2908
+ var import_jsx_runtime67 = require("react/jsx-runtime");
2909
+ var DatePicker = (0, import_react43.forwardRef)(
2910
+ (props, ref) => {
2911
+ const _a = props, { fullWidth } = _a, rest = __objRest(_a, ["fullWidth"]);
2912
+ const fullWidthClassName = fullWidth ? "full-width" : "";
2913
+ const [isYearDropdownOpen, setIsYearDropdownOpen] = (0, import_react43.useState)(false);
2914
+ const [isMonthDropdownOpen, setIsMonthDropdownOpen] = (0, import_react43.useState)(false);
2915
+ const renderCustomHeader = (0, import_react43.useMemo)(() => {
2916
+ const getYears = () => {
2917
+ const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
2918
+ return Array.from(
2919
+ { length: currentYear + 5 - 1920 },
2920
+ (_, index) => 1920 + index
2921
+ ).filter((year) => {
2922
+ if (props.minDate && year < props.minDate.getFullYear()) {
2923
+ return false;
2924
+ }
2925
+ if (props.maxDate && year > props.maxDate.getFullYear()) {
2926
+ return false;
2927
+ }
2928
+ return true;
2929
+ });
2930
+ };
2931
+ return getRenderCustomHeader(__spreadProps(__spreadValues({}, props), {
2932
+ years: getYears(),
2933
+ isYearDropdownOpen,
2934
+ setIsYearDropdownOpen,
2935
+ isMonthDropdownOpen,
2936
+ setIsMonthDropdownOpen
2937
+ }));
2938
+ }, [isMonthDropdownOpen, isYearDropdownOpen, props]);
2939
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_themes23.Flex, { p: "0", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
2940
+ import_react_datepicker.default,
2941
+ __spreadProps(__spreadValues({
2942
+ dateFormat: "yyyy/MM/dd h:mm aa",
2943
+ formatWeekDay: (nameOfDay) => {
2944
+ return nameOfDay[0];
2945
+ },
2946
+ locale: import_locale.ko,
2947
+ nextMonthButtonLabel: "\uB2E4\uC74C \uB2EC",
2948
+ placeholderText: "YYYY/MM/DD hh:mm AM/PM",
2949
+ popperProps: { strategy: "fixed" },
2950
+ previousMonthButtonLabel: "\uC774\uC804 \uB2EC",
2951
+ ref,
2952
+ renderCustomHeader,
2953
+ showPopperArrow: false,
2954
+ timeCaption: "\uC2DC\uAC04",
2955
+ timeFormat: "aa h:mm",
2956
+ timeIntervals: 10
2957
+ }, rest), {
2958
+ calendarClassName: `tipp_datePicker_calendar ${rest.calendarClassName || ""}`,
2959
+ wrapperClassName: `tipp_datePicker ${fullWidthClassName} ${rest.wrapperClassName || ""}`
2960
+ })
2961
+ ) });
2962
+ }
2963
+ );
2964
+ DatePicker.displayName = "DatePicker";
2965
+ function DropdownSelector({
2966
+ isOpen,
2967
+ onOpenChange,
2968
+ onSelect,
2969
+ options,
2970
+ selectedValue,
2971
+ suffix
2972
+ }) {
2973
+ const scrollContainerRef = (0, import_react43.useRef)(null);
2974
+ (0, import_react43.useEffect)(() => {
2975
+ if (isOpen) {
2976
+ queueMicrotask(() => {
2977
+ var _a;
2978
+ const item = (_a = scrollContainerRef.current) == null ? void 0 : _a.querySelector(
2979
+ `[data-year-month-dropdown-tiem="${selectedValue}"]`
2980
+ );
2981
+ if (item) {
2982
+ item.scrollIntoView({ behavior: "instant" });
2983
+ }
2984
+ });
2985
+ }
2986
+ }, [isOpen]);
2987
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Popover.Root, { modal: true, onOpenChange, open: isOpen, children: [
2988
+ /* @__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: [
2989
+ selectedValue,
2990
+ suffix
2991
+ ] }) }) }),
2992
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Popover.Content, { side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
2993
+ import_themes7.Box,
2994
+ {
2995
+ maxHeight: "200px",
2996
+ overflowY: "auto",
2997
+ ref: scrollContainerRef,
2998
+ style: { scrollbarWidth: "none" },
2999
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_themes23.Flex, { direction: "column", gap: "1", children: options.map((item) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3000
+ Button,
3001
+ {
3002
+ className: "react-datepicker_dropdown_item",
3003
+ color: "gray",
3004
+ "data-year-month-dropdown-tiem": item,
3005
+ onClick: () => {
3006
+ onSelect(item);
3007
+ },
3008
+ onMouseDown: (e) => {
3009
+ e.stopPropagation();
3010
+ e.preventDefault();
3011
+ },
3012
+ variant: "transparent",
3013
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Typo, { weight: item === selectedValue ? "bold" : void 0, children: [
3014
+ item,
3015
+ suffix
3016
+ ] })
3017
+ },
3018
+ item
3019
+ )) })
3020
+ }
3021
+ ) })
3022
+ ] });
3023
+ }
3024
+ var getRenderCustomHeader = (props) => {
3025
+ const renderer = (renderCustomHeaderProps) => {
3026
+ const {
3027
+ date,
3028
+ decreaseMonth,
3029
+ increaseMonth,
3030
+ prevMonthButtonDisabled,
3031
+ nextMonthButtonDisabled,
3032
+ changeYear,
3033
+ changeMonth
3034
+ } = renderCustomHeaderProps;
3035
+ const {
3036
+ years,
3037
+ isYearDropdownOpen,
3038
+ setIsYearDropdownOpen,
3039
+ isMonthDropdownOpen,
3040
+ setIsMonthDropdownOpen
3041
+ } = props;
3042
+ const year = date ? new Date(date).getFullYear() : "-";
3043
+ const month = date ? new Date(date).getMonth() + 1 : "-";
3044
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_themes23.Flex, { align: "center", justify: "between", pl: "2", pr: "2", children: [
3045
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3046
+ IconButton,
3047
+ {
3048
+ className: "react-datepicker_dropdown_header",
3049
+ disabled: prevMonthButtonDisabled,
3050
+ onClick: decreaseMonth,
3051
+ type: "button",
3052
+ variant: "ghost",
3053
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_icons2.ChevronLeftIcon, {})
3054
+ }
3055
+ ),
3056
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_themes23.Flex, { gap: "3", children: [
3057
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3058
+ DropdownSelector,
3059
+ {
3060
+ isOpen: isYearDropdownOpen,
3061
+ onOpenChange: setIsYearDropdownOpen,
3062
+ onSelect: (value) => {
3063
+ changeYear(value);
3064
+ setIsYearDropdownOpen(false);
3065
+ },
3066
+ options: years,
3067
+ selectedValue: year,
3068
+ suffix: "\uB144"
3069
+ }
3070
+ ),
3071
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3072
+ DropdownSelector,
3073
+ {
3074
+ isOpen: isMonthDropdownOpen,
3075
+ onOpenChange: setIsMonthDropdownOpen,
3076
+ onSelect: (value) => {
3077
+ changeMonth(value - 1);
3078
+ setIsMonthDropdownOpen(false);
3079
+ },
3080
+ options: Array.from({ length: 12 }, (_, index) => index + 1),
3081
+ selectedValue: month,
3082
+ suffix: "\uC6D4"
3083
+ }
3084
+ )
3085
+ ] }),
3086
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
3087
+ IconButton,
3088
+ {
3089
+ className: "react-datepicker_dropdown_header",
3090
+ disabled: nextMonthButtonDisabled,
3091
+ onClick: increaseMonth,
3092
+ type: "button",
3093
+ variant: "ghost",
3094
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_icons2.ChevronRightIcon, {})
3095
+ }
3096
+ )
3097
+ ] });
3098
+ };
3099
+ return renderer;
3100
+ };
3101
+
3102
+ // src/molecules/dot-navigation.tsx
3103
+ var import_react44 = require("react");
3104
+ var import_react_icons3 = require("@radix-ui/react-icons");
3105
+ var import_jsx_runtime68 = require("react/jsx-runtime");
3106
+
3107
+ // src/molecules/stepper.tsx
3108
+ var import_react45 = require("react");
3109
+ var import_themes54 = require("@radix-ui/themes");
3110
+ var import_jsx_runtime69 = require("react/jsx-runtime");
3111
+ var StepContext = (0, import_react45.createContext)({
3112
+ active: false,
3113
+ completed: false,
3114
+ index: 0
3115
+ });
3116
+
3117
+ // src/molecules/tag-selector.tsx
3118
+ var import_react46 = require("react");
3119
+ var import_react_icons4 = require("@radix-ui/react-icons");
3120
+ var import_jsx_runtime70 = require("react/jsx-runtime");
3121
+
3122
+ // src/molecules/learning-post.tsx
3123
+ var import_jsx_runtime71 = require("react/jsx-runtime");
3124
+
3125
+ // src/molecules/force-refresh.tsx
3126
+ var import_react_icons5 = require("@radix-ui/react-icons");
3127
+ var import_jsx_runtime72 = require("react/jsx-runtime");
3128
+
3129
+ // src/molecules/date-picker/date-picker-button.tsx
3130
+ var import_react47 = require("react");
3131
+ var import_date_fns2 = require("date-fns");
3132
+ var import_clsx29 = require("clsx");
3133
+ var import_jsx_runtime73 = require("react/jsx-runtime");
3134
+
3135
+ // src/molecules/time-select.tsx
3136
+ var import_react48 = require("react");
3137
+ var import_date_fns3 = require("date-fns");
3138
+
3139
+ // src/utils/get-callout-icon-component.ts
3140
+ var AI_CALLOUT_ICON_OPTIONS = [
3141
+ { label: "Info", value: "InfoCircledIcon", Component: import_react_icons2.InfoCircledIcon },
3142
+ {
3143
+ label: "Warning",
3144
+ value: "ExclamationTriangleIcon",
3145
+ Component: import_react_icons2.ExclamationTriangleIcon
3146
+ },
3147
+ { label: "Check", value: "CheckCircledIcon", Component: import_react_icons2.CheckCircledIcon },
3148
+ {
3149
+ label: "Question",
3150
+ value: "QuestionMarkCircledIcon",
3151
+ Component: import_react_icons2.QuestionMarkCircledIcon
3152
+ }
3153
+ ];
3154
+ var iconByName = {};
3155
+ for (const opt of AI_CALLOUT_ICON_OPTIONS) {
3156
+ iconByName[opt.value] = opt.Component;
3157
+ }
3158
+
3159
+ // src/molecules/time-select.tsx
3160
+ var import_jsx_runtime74 = require("react/jsx-runtime");
3161
+
3162
+ // src/molecules/radio-button-card.tsx
3163
+ var import_react49 = require("react");
3164
+ var import_jsx_runtime75 = require("react/jsx-runtime");
3165
+ var RadioCardContext = (0, import_react49.createContext)({});
3166
+
3167
+ // src/molecules/download-card.tsx
3168
+ var import_react_icons6 = require("@radix-ui/react-icons");
3169
+ var import_jsx_runtime76 = require("react/jsx-runtime");
3170
+
3171
+ // src/molecules/ghost-post.tsx
3172
+ var import_jsx_runtime77 = require("react/jsx-runtime");
3173
+
3174
+ // src/molecules/curriculumV2/curriculum-context.tsx
3175
+ var import_react50 = require("react");
3176
+ var import_jsx_runtime78 = require("react/jsx-runtime");
3177
+ var CurriculumContext = (0, import_react50.createContext)(
3178
+ void 0
3179
+ );
3180
+
3181
+ // src/molecules/curriculumV2/curriculum-sub-nav.tsx
3182
+ var import_react51 = require("react");
3183
+ var import_jsx_runtime79 = require("react/jsx-runtime");
3184
+
3185
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx
3186
+ var import_react52 = require("react");
3187
+ var import_jsx_runtime80 = require("react/jsx-runtime");
3188
+
3189
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-review.tsx
3190
+ var import_react55 = require("react");
3191
+ var import_react_icons7 = require("@radix-ui/react-icons");
3192
+
3193
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/curriculum-review-context.tsx
3194
+ var import_react53 = require("react");
3195
+ var import_formik = require("formik");
3196
+ var import_lodash_es = require("lodash-es");
3197
+ var Yup = __toESM(require("yup"), 1);
3198
+ var import_jsx_runtime81 = require("react/jsx-runtime");
3199
+ var CurriculumReviewContext = (0, import_react53.createContext)(void 0);
3200
+
3201
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.tsx
3202
+ var import_jsx_runtime82 = require("react/jsx-runtime");
3203
+
3204
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.tsx
3205
+ var import_jsx_runtime83 = require("react/jsx-runtime");
3206
+
3207
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.tsx
3208
+ var import_jsx_runtime84 = require("react/jsx-runtime");
3209
+
3210
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.tsx
3211
+ var import_jsx_runtime85 = require("react/jsx-runtime");
3212
+
3213
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.tsx
3214
+ var import_jsx_runtime86 = require("react/jsx-runtime");
3215
+
3216
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.tsx
3217
+ var import_react54 = require("react");
3218
+
3219
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.tsx
3220
+ var import_jsx_runtime87 = require("react/jsx-runtime");
3221
+
3222
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.tsx
3223
+ var import_jsx_runtime88 = require("react/jsx-runtime");
3224
+
3225
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.tsx
3226
+ var import_jsx_runtime89 = require("react/jsx-runtime");
3227
+
3228
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.tsx
3229
+ var import_jsx_runtime90 = require("react/jsx-runtime");
3230
+
3231
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.tsx
3232
+ var import_jsx_runtime91 = require("react/jsx-runtime");
3233
+
3234
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.tsx
3235
+ var import_jsx_runtime92 = require("react/jsx-runtime");
3236
+
3237
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.tsx
3238
+ var import_jsx_runtime93 = require("react/jsx-runtime");
3239
+
3240
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.tsx
3241
+ var import_jsx_runtime94 = require("react/jsx-runtime");
3242
+
3243
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-review.tsx
3244
+ var import_jsx_runtime95 = require("react/jsx-runtime");
3245
+
3246
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.tsx
3247
+ var import_react56 = require("react");
3248
+ var import_jsx_runtime96 = require("react/jsx-runtime");
3249
+
3250
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-file-download.tsx
3251
+ var import_react57 = require("react");
3252
+ var import_jsx_runtime97 = require("react/jsx-runtime");
3253
+
3254
+ // src/molecules/curriculumV2/CurriculumContents/index.tsx
3255
+ var import_jsx_runtime98 = require("react/jsx-runtime");
3256
+
3257
+ // src/molecules/curriculumV2/CurriculumSidebar/index.tsx
3258
+ var import_react58 = require("react");
3259
+
3260
+ // src/molecules/curriculumV2/CurriculumSidebar/Items/section-title.tsx
3261
+ var import_jsx_runtime99 = require("react/jsx-runtime");
3262
+
3263
+ // src/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-sidebar-item-wrapper.tsx
3264
+ var import_jsx_runtime100 = require("react/jsx-runtime");
3265
+
3266
+ // src/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.tsx
3267
+ var import_jsx_runtime101 = require("react/jsx-runtime");
3268
+
3269
+ // src/molecules/curriculumV2/CurriculumSidebar/Items/section-item.tsx
3270
+ var import_jsx_runtime102 = require("react/jsx-runtime");
3271
+
3272
+ // src/molecules/curriculumV2/CurriculumSidebar/sidebar-item.tsx
3273
+ var import_jsx_runtime103 = require("react/jsx-runtime");
3274
+
3275
+ // src/molecules/curriculumV2/CurriculumSidebar/index.tsx
3276
+ var import_jsx_runtime104 = require("react/jsx-runtime");
3277
+
3278
+ // src/molecules/curriculumV2/curriculum-v2-layout.tsx
3279
+ var import_jsx_runtime105 = require("react/jsx-runtime");
3280
+
3281
+ // src/molecules/dynamic-form.tsx
3282
+ var import_react60 = require("react");
3283
+ var import_formik2 = require("formik");
3284
+ var Yup2 = __toESM(require("yup"), 1);
3285
+ var import_themes55 = require("@radix-ui/themes");
3286
+
3287
+ // src/context/dynamic-form-context.tsx
3288
+ var import_react59 = require("react");
3289
+ var import_jsx_runtime106 = require("react/jsx-runtime");
3290
+ var DynamicFormContext = (0, import_react59.createContext)(null);
3291
+
3292
+ // src/molecules/dynamic-field.tsx
3293
+ var import_jsx_runtime107 = require("react/jsx-runtime");
3294
+
3295
+ // src/molecules/dynamic-form.tsx
3296
+ var import_jsx_runtime108 = require("react/jsx-runtime");
3297
+
3298
+ // src/molecules/one-on-one-guide-list.tsx
3299
+ var import_react61 = require("react");
3300
+ var import_jsx_runtime109 = require("react/jsx-runtime");
3301
+
3302
+ // src/molecules/description-json-render.tsx
3303
+ var import_jsx_runtime110 = require("react/jsx-runtime");
3304
+
3305
+ // src/molecules/training-info-guideline.tsx
3306
+ var import_react62 = require("react");
3307
+ var import_react_icons8 = require("@radix-ui/react-icons");
3308
+ var import_jsx_runtime111 = require("react/jsx-runtime");
3309
+
3310
+ // src/molecules/dynamic-form-editor.tsx
3311
+ var import_react65 = require("react");
3312
+
3313
+ // src/molecules/dynamic-form-editor-field-editor-panel.tsx
3314
+ var import_react63 = require("react");
3315
+ var import_themes56 = require("@radix-ui/themes");
3316
+ var import_jsx_runtime112 = require("react/jsx-runtime");
3317
+
3318
+ // src/molecules/dynamic-form-editor-field-list-panel.tsx
3319
+ var import_react64 = require("react");
3320
+ var import_themes57 = require("@radix-ui/themes");
3321
+ var import_jsx_runtime113 = require("react/jsx-runtime");
3322
+
3323
+ // src/molecules/dynamic-form-editor-issues-panel.tsx
3324
+ var import_jsx_runtime114 = require("react/jsx-runtime");
3325
+
3326
+ // src/molecules/dynamic-form-editor-preview-panel.tsx
3327
+ var import_jsx_runtime115 = require("react/jsx-runtime");
3328
+
3329
+ // src/molecules/dynamic-form-editor.tsx
3330
+ var import_jsx_runtime116 = require("react/jsx-runtime");
3331
+
3332
+ // src/molecules/autocomplete-textfield.tsx
3333
+ var import_react66 = require("react");
3334
+ var import_themes58 = require("@radix-ui/themes");
3335
+ var import_jsx_runtime117 = require("react/jsx-runtime");
3336
+ var AutocompleteTextfield = (0, import_react66.forwardRef)(
3337
+ (_a, ref) => {
3338
+ var _b = _a, {
3339
+ options,
3340
+ value: externalValue,
3341
+ onChange,
3342
+ onSelect,
3343
+ placeholder,
3344
+ emptyMessage = "\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
3345
+ maxItems = 10,
3346
+ slotLeft,
3347
+ slotRight,
3348
+ error
3349
+ } = _b, rest = __objRest(_b, [
3350
+ "options",
3351
+ "value",
3352
+ "onChange",
3353
+ "onSelect",
3354
+ "placeholder",
3355
+ "emptyMessage",
3356
+ "maxItems",
3357
+ "slotLeft",
3358
+ "slotRight",
3359
+ "error"
3360
+ ]);
3361
+ const isControlled = externalValue !== void 0;
3362
+ const [internalValue, setInternalValue] = (0, import_react66.useState)("");
3363
+ const inputValue = isControlled ? externalValue : internalValue;
3364
+ const [open, setOpen] = (0, import_react66.useState)(false);
3365
+ const [highlightedIndex, setHighlightedIndex] = (0, import_react66.useState)(-1);
3366
+ const inputRef = (0, import_react66.useRef)(null);
3367
+ const listRef = (0, import_react66.useRef)(null);
3368
+ const listboxId = (0, import_react66.useId)();
3369
+ const justSelectedRef = (0, import_react66.useRef)(false);
3370
+ const filtered = options.filter(
3371
+ (opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase())
3372
+ ).slice(0, maxItems);
3373
+ const handleInputChange = (0, import_react66.useCallback)(
3374
+ (e) => {
3375
+ const next = e.target.value;
3376
+ if (!isControlled) setInternalValue(next);
3377
+ onChange == null ? void 0 : onChange(next);
3378
+ const nextFiltered = options.filter((opt) => opt.label.toLowerCase().includes(next.toLowerCase())).slice(0, maxItems);
3379
+ setOpen(nextFiltered.length > 0 || emptyMessage !== null);
3380
+ setHighlightedIndex(-1);
3381
+ },
3382
+ [isControlled, onChange, options, maxItems, emptyMessage]
3383
+ );
3384
+ const handleSelect = (0, import_react66.useCallback)(
3385
+ (option) => {
3386
+ var _a2;
3387
+ if (!isControlled) setInternalValue(option.label);
3388
+ onChange == null ? void 0 : onChange(option.label);
3389
+ onSelect == null ? void 0 : onSelect(option);
3390
+ setOpen(false);
3391
+ setHighlightedIndex(-1);
3392
+ justSelectedRef.current = true;
3393
+ (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
3394
+ },
3395
+ [isControlled, onChange, onSelect]
3396
+ );
3397
+ const handleFocus = (0, import_react66.useCallback)(() => {
3398
+ if (justSelectedRef.current) {
3399
+ justSelectedRef.current = false;
3400
+ return;
3401
+ }
3402
+ const currentFiltered = options.filter((opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase())).slice(0, maxItems);
3403
+ setOpen(currentFiltered.length > 0 || emptyMessage !== null);
3404
+ }, [options, inputValue, maxItems, emptyMessage]);
3405
+ const handleBlur = (0, import_react66.useCallback)((e) => {
3406
+ var _a2, _b2;
3407
+ if (e.relatedTarget && ((_b2 = (_a2 = inputRef.current) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b2.contains(e.relatedTarget))) {
3408
+ return;
3409
+ }
3410
+ setOpen(false);
3411
+ setHighlightedIndex(-1);
3412
+ }, []);
3413
+ const handleKeyDown = (0, import_react66.useCallback)(
3414
+ (e) => {
3415
+ if (!open) {
3416
+ if (e.key === "ArrowDown" || e.key === "ArrowUp") {
3417
+ setOpen(true);
3418
+ setHighlightedIndex(0);
3419
+ e.preventDefault();
3420
+ }
3421
+ return;
3422
+ }
3423
+ switch (e.key) {
3424
+ case "ArrowDown":
3425
+ e.preventDefault();
3426
+ setHighlightedIndex(
3427
+ (prev) => prev < filtered.length - 1 ? prev + 1 : 0
3428
+ );
3429
+ break;
3430
+ case "ArrowUp":
3431
+ e.preventDefault();
3432
+ setHighlightedIndex(
3433
+ (prev) => prev > 0 ? prev - 1 : filtered.length - 1
3434
+ );
3435
+ break;
3436
+ case "Enter":
3437
+ e.preventDefault();
3438
+ if (highlightedIndex >= 0 && filtered[highlightedIndex]) {
3439
+ handleSelect(filtered[highlightedIndex]);
3440
+ }
3441
+ break;
3442
+ case "Escape":
3443
+ setOpen(false);
3444
+ setHighlightedIndex(-1);
3445
+ break;
3446
+ case "Tab":
3447
+ setOpen(false);
3448
+ setHighlightedIndex(-1);
3449
+ break;
3450
+ default:
3451
+ break;
3452
+ }
3453
+ },
3454
+ [open, filtered, highlightedIndex, handleSelect]
3455
+ );
3456
+ (0, import_react66.useEffect)(() => {
3457
+ if (!listRef.current || highlightedIndex < 0) return;
3458
+ const item = listRef.current.children[highlightedIndex];
3459
+ item.scrollIntoView({ block: "nearest" });
3460
+ }, [highlightedIndex]);
3461
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(import_themes58.Box, { position: "relative", style: { width: "100%" }, children: [
3462
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
3463
+ TextField.Root,
3464
+ __spreadProps(__spreadValues({
3465
+ "aria-activedescendant": open && highlightedIndex >= 0 ? `${listboxId}-option-${highlightedIndex}` : void 0,
3466
+ "aria-autocomplete": "list",
3467
+ "aria-controls": open ? listboxId : void 0,
3468
+ "aria-expanded": open,
3469
+ error,
3470
+ onBlur: handleBlur,
3471
+ onChange: handleInputChange,
3472
+ onFocus: handleFocus,
3473
+ onKeyDown: handleKeyDown,
3474
+ placeholder,
3475
+ ref: (node) => {
3476
+ inputRef.current = node;
3477
+ if (typeof ref === "function") {
3478
+ ref(node);
3479
+ } else if (ref) {
3480
+ ref.current = node;
3481
+ }
3482
+ },
3483
+ role: "combobox",
3484
+ style: { width: "100%" },
3485
+ value: inputValue
3486
+ }, rest), {
3487
+ children: [
3488
+ slotLeft && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TextField.Slot, { side: "left", children: slotLeft }),
3489
+ slotRight && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TextField.Slot, { side: "right", children: slotRight })
3490
+ ]
3491
+ })
3492
+ ),
3493
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
3494
+ DropdownMenu.Root,
3495
+ {
3496
+ modal: false,
3497
+ onOpenChange: (nextOpen) => {
3498
+ if (!nextOpen && document.activeElement !== inputRef.current) {
3499
+ setOpen(false);
3500
+ setHighlightedIndex(-1);
3501
+ }
3502
+ },
3503
+ open,
3504
+ children: [
3505
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3506
+ "span",
3507
+ {
3508
+ "aria-hidden": "true",
3509
+ style: {
3510
+ bottom: 0,
3511
+ height: 0,
3512
+ left: 0,
3513
+ opacity: 0,
3514
+ pointerEvents: "none",
3515
+ position: "absolute",
3516
+ width: "100%"
3517
+ }
3518
+ }
3519
+ ) }),
3520
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3521
+ DropdownMenu.Content,
3522
+ {
3523
+ align: "start",
3524
+ onCloseAutoFocus: (e) => {
3525
+ e.preventDefault();
3526
+ },
3527
+ onOpenAutoFocus: (e) => {
3528
+ e.preventDefault();
3529
+ },
3530
+ sideOffset: 4,
3531
+ style: {
3532
+ maxHeight: 240,
3533
+ overflowY: "auto",
3534
+ padding: 0,
3535
+ width: "var(--radix-dropdown-menu-trigger-width)"
3536
+ },
3537
+ 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)(
3538
+ "ul",
3539
+ {
3540
+ id: listboxId,
3541
+ ref: listRef,
3542
+ role: "listbox",
3543
+ style: { listStyle: "none", margin: 0, padding: 0 },
3544
+ children: filtered.map((option, index) => {
3545
+ const isHighlighted = index === highlightedIndex;
3546
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
3547
+ "li",
3548
+ {
3549
+ "aria-selected": isHighlighted,
3550
+ id: `${listboxId}-option-${index}`,
3551
+ onMouseEnter: () => {
3552
+ setHighlightedIndex(index);
3553
+ },
3554
+ onPointerDown: (e) => {
3555
+ e.preventDefault();
3556
+ handleSelect(option);
3557
+ },
3558
+ role: "option",
3559
+ style: {
3560
+ padding: "var(--spacing-4) var(--spacing-6)",
3561
+ cursor: "pointer",
3562
+ backgroundColor: isHighlighted ? "var(--accent-3)" : "transparent",
3563
+ transition: "background-color 80ms"
3564
+ },
3565
+ children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Typo, { variant: "body", children: option.label })
3566
+ },
3567
+ option.value
3568
+ );
3569
+ })
3570
+ }
3571
+ )
3572
+ }
3573
+ )
3574
+ ]
3575
+ }
3576
+ )
3577
+ ] });
3578
+ }
3579
+ );
3580
+ AutocompleteTextfield.displayName = "AutocompleteTextfield";
3581
+
3582
+ // src/app/roleplay/chart/session-chart.tsx
3583
+ var import_react67 = require("react");
3584
+ var import_react_resize_detector = require("react-resize-detector");
3585
+ var echarts = __toESM(require("echarts/core"), 1);
3586
+ var ReactEChartsCoreNs = __toESM(require("echarts-for-react/lib/core"), 1);
3587
+ var import_charts = require("echarts/charts");
3588
+ var import_renderers = require("echarts/renderers");
3589
+ var import_components = require("echarts/components");
3590
+
3591
+ // src/charts/horizontal-bar-chart.tsx
3592
+ var import_jsx_runtime118 = require("react/jsx-runtime");
3593
+
3594
+ // src/charts/chart-theme.json
3595
+ var chart_theme_default = {
3596
+ version: 1,
3597
+ themeName: "customed",
3598
+ theme: {
3599
+ seriesCnt: "5",
3600
+ backgroundColor: "rgba(0,0,0,0)",
3601
+ titleColor: "#1c2024",
3602
+ subtitleColor: "#8d8d8d",
3603
+ textColorShow: false,
3604
+ textColor: "#333",
3605
+ markTextColor: "#ffffff",
3606
+ color: [
3607
+ "#ffe629",
3608
+ "#3e63dd",
3609
+ "#ec9455",
3610
+ "#5bb98b",
3611
+ "#cb1d63",
3612
+ "#3ba272",
3613
+ "#fc8452",
3614
+ "#9a60b4",
3615
+ "#ea7ccc"
3616
+ ],
3617
+ borderColor: "#8d8d8d",
3618
+ borderWidth: 0,
3619
+ visualMapColor: ["#bf444c", "#d88273", "#f6efa6"],
3620
+ legendTextColor: "#1c2024",
3621
+ kColor: "#eb5454",
3622
+ kColor0: "#47b262",
3623
+ kBorderColor: "#eb5454",
3624
+ kBorderColor0: "#47b262",
3625
+ kBorderWidth: 1,
3626
+ lineWidth: 2,
3627
+ symbolSize: 4,
3628
+ symbol: "emptyCircle",
3629
+ symbolBorderWidth: 1,
3630
+ lineSmooth: false,
3631
+ graphLineWidth: 1,
3632
+ graphLineColor: "#aaa",
3633
+ mapLabelColor: "#000",
3634
+ mapLabelColorE: "rgb(100,0,0)",
3635
+ mapBorderColor: "#444",
3636
+ mapBorderColorE: "#444",
3637
+ mapBorderWidth: 0.5,
3638
+ mapBorderWidthE: 1,
3639
+ mapAreaColor: "#eee",
3640
+ mapAreaColorE: "rgba(255,215,0,0.8)",
3641
+ axes: [
3642
+ {
3643
+ type: "all",
3644
+ name: "\u901A\u7528\u5750\u6807\u8F74",
3645
+ axisLineShow: true,
3646
+ axisLineColor: "#6E7079",
3647
+ axisTickShow: true,
3648
+ axisTickColor: "#6E7079",
3649
+ axisLabelShow: true,
3650
+ axisLabelColor: "#6E7079",
3651
+ splitLineShow: true,
3652
+ splitLineColor: ["#E0E6F1"],
3653
+ splitAreaShow: false,
3654
+ splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
3655
+ },
3656
+ {
3657
+ type: "category",
3658
+ name: "\u7C7B\u76EE\u5750\u6807\u8F74",
3659
+ axisLineShow: true,
3660
+ axisLineColor: "#6E7079",
3661
+ axisTickShow: true,
3662
+ axisTickColor: "#6E7079",
3663
+ axisLabelShow: true,
3664
+ axisLabelColor: "#6E7079",
3665
+ splitLineShow: false,
3666
+ splitLineColor: ["#E0E6F1"],
3667
+ splitAreaShow: false,
3668
+ splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
3669
+ },
3670
+ {
3671
+ type: "value",
3672
+ name: "\u6570\u503C\u5750\u6807\u8F74",
3673
+ axisLineShow: false,
3674
+ axisLineColor: "#6E7079",
3675
+ axisTickShow: false,
3676
+ axisTickColor: "#6E7079",
3677
+ axisLabelShow: true,
3678
+ axisLabelColor: "#6E7079",
3679
+ splitLineShow: true,
3680
+ splitLineColor: ["#E0E6F1"],
3681
+ splitAreaShow: false,
3682
+ splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
3683
+ },
3684
+ {
3685
+ type: "log",
3686
+ name: "\u5BF9\u6570\u5750\u6807\u8F74",
3687
+ axisLineShow: false,
3688
+ axisLineColor: "#6E7079",
3689
+ axisTickShow: false,
3690
+ axisTickColor: "#6E7079",
3691
+ axisLabelShow: true,
3692
+ axisLabelColor: "#6E7079",
3693
+ splitLineShow: true,
3694
+ splitLineColor: ["#E0E6F1"],
3695
+ splitAreaShow: false,
3696
+ splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
3697
+ },
3698
+ {
3699
+ type: "time",
3700
+ name: "\u65F6\u95F4\u5750\u6807\u8F74",
3701
+ axisLineShow: true,
3702
+ axisLineColor: "#6E7079",
3703
+ axisTickShow: true,
3704
+ axisTickColor: "#6E7079",
3705
+ axisLabelShow: true,
3706
+ axisLabelColor: "#6E7079",
3707
+ splitLineShow: false,
3708
+ splitLineColor: ["#E0E6F1"],
3709
+ splitAreaShow: false,
3710
+ splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
3711
+ }
3712
+ ],
3713
+ axisSeperateSetting: true,
3714
+ toolboxColor: "#8d8d8d",
3715
+ toolboxEmphasisColor: "#1c2024",
3716
+ tooltipAxisColor: "#cccccc",
3717
+ tooltipAxisWidth: 1,
3718
+ timelineLineColor: "#dae1f5",
3719
+ timelineLineWidth: 2,
3720
+ timelineItemColor: "#a4b1d7",
3721
+ timelineItemColorE: "#ffffff",
3722
+ timelineCheckColor: "#316bf3",
3723
+ timelineCheckBorderColor: "#ffffff",
3724
+ timelineItemBorderWidth: 1,
3725
+ timelineControlColor: "#a4b1d7",
3726
+ timelineControlBorderColor: "#a4b1d7",
3727
+ timelineControlBorderWidth: 1,
3728
+ timelineLabelColor: "#a4b1d7"
3729
+ }
3730
+ };
3731
+
3732
+ // src/charts/chart-default-props.tsx
3733
+ var EchartDefaultProps = {
3734
+ opts: { renderer: "svg" },
3735
+ theme: chart_theme_default,
3736
+ option: {
3737
+ textStyle: { fontFamily: "Pretendard Variable" },
3738
+ tooltip: { textStyle: { fontSize: 16 } }
3739
+ }
3740
+ };
3741
+
3742
+ // src/app/roleplay/chart/session-chart.tsx
3743
+ var import_jsx_runtime119 = require("react/jsx-runtime");
3744
+ function unwrapDefault(mod) {
3745
+ let current = mod;
3746
+ while (current !== null && typeof current === "object" && "default" in current) {
3747
+ current = current.default;
3748
+ }
3749
+ return current;
3750
+ }
3751
+ function isComponentType(value) {
3752
+ return typeof value === "function";
3753
+ }
3754
+ var unwrappedChart = unwrapDefault(ReactEChartsCoreNs);
3755
+ var ReactEChartsCore = isComponentType(unwrappedChart) ? unwrappedChart : ReactEChartsCoreNs.default;
3756
+ echarts.use([
3757
+ import_renderers.SVGRenderer,
3758
+ import_charts.LineChart,
3759
+ import_charts.RadarChart,
3760
+ import_components.TooltipComponent,
3761
+ import_components.GridComponent,
3762
+ import_components.LegendComponent,
3763
+ import_components.AriaComponent,
3764
+ import_components.AxisPointerComponent,
3765
+ import_components.PolarComponent,
3766
+ import_components.RadarComponent
3767
+ ]);
3768
+ function deepMerge(base, override) {
3769
+ if (!override) return base;
3770
+ if (typeof base !== "object" || !base || Array.isArray(base) || typeof override !== "object" || Array.isArray(override)) {
3771
+ return override;
3772
+ }
3773
+ const out = __spreadValues({}, base);
3774
+ for (const [k, v] of Object.entries(override)) {
3775
+ out[k] = k in out ? deepMerge(out[k], v) : v;
3776
+ }
3777
+ return out;
3778
+ }
3779
+ function Chart(_a) {
3780
+ var _b = _a, {
3781
+ option: optionProp
3782
+ } = _b, rest = __objRest(_b, [
3783
+ "option"
3784
+ ]);
3785
+ const { width, height, ref } = (0, import_react_resize_detector.useResizeDetector)({
3786
+ handleHeight: true,
3787
+ refreshMode: "debounce",
3788
+ refreshRate: 100
3789
+ });
3790
+ const [mounted, setMounted] = (0, import_react67.useState)(false);
3791
+ (0, import_react67.useEffect)(() => {
3792
+ setMounted(true);
3793
+ }, []);
3794
+ const option = (0, import_react67.useMemo)(() => {
3795
+ const baseOption = {
3796
+ textStyle: { fontFamily: "var(--default-font-family, 'Noto Sans KR')" },
3797
+ tooltip: { textStyle: { fontSize: 13 } },
3798
+ // ds-allow: chart-lib
3799
+ animation: false
3800
+ };
3801
+ return deepMerge(baseOption, optionProp);
3802
+ }, [optionProp]);
3803
+ return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { ref, style: { width: "100%", height: "100%" }, children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
3804
+ ReactEChartsCore,
3805
+ __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, EchartDefaultProps), {
3806
+ echarts,
3807
+ opts: { renderer: "svg" },
3808
+ style: { height, width }
3809
+ }), rest), {
3810
+ option
3811
+ })
3812
+ ) : null });
3813
+ }
3814
+ function normalizeColor(value, fallback) {
3815
+ const v = value.trim();
3816
+ if (!v) return fallback;
3817
+ if (/^#|^rgb|^hsl/i.test(v)) return v;
3818
+ try {
3819
+ const canvas = document.createElement("canvas");
3820
+ const ctx = canvas.getContext("2d");
3821
+ if (!ctx) return fallback;
3822
+ ctx.fillStyle = "#000";
3823
+ ctx.fillStyle = v;
3824
+ const out = ctx.fillStyle;
3825
+ return /color\(|^$/i.test(out) ? fallback : out;
3826
+ } catch (e) {
3827
+ return fallback;
3828
+ }
3829
+ }
3830
+ function useTokenColors(vars) {
3831
+ const probeRef = (0, import_react67.useRef)(null);
3832
+ const fallbacks = (0, import_react67.useMemo)(() => {
3833
+ const f = {};
3834
+ for (const k of Object.keys(vars)) f[k] = vars[k][1];
3835
+ return f;
3836
+ }, [vars]);
3837
+ const [resolved, setResolved] = (0, import_react67.useState)(fallbacks);
3838
+ const key = JSON.stringify(vars);
3839
+ const varsRef = (0, import_react67.useRef)(vars);
3840
+ varsRef.current = vars;
3841
+ (0, import_react67.useEffect)(() => {
3842
+ const el = probeRef.current;
3843
+ if (!el) return;
3844
+ const cs = getComputedStyle(el);
3845
+ const next = {};
3846
+ for (const k of Object.keys(varsRef.current)) {
3847
+ const [cssVar, fallback] = varsRef.current[k];
3848
+ next[k] = normalizeColor(cs.getPropertyValue(cssVar), fallback);
3849
+ }
3850
+ setResolved(next);
3851
+ }, [key]);
3852
+ const probe = /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
3853
+ "span",
3854
+ {
3855
+ "aria-hidden": true,
3856
+ ref: probeRef,
3857
+ style: { position: "absolute", width: 0, height: 0, overflow: "hidden" }
3858
+ }
3859
+ );
3860
+ return { colors: resolved, probe };
3861
+ }
3862
+
3863
+ // src/app/roleplay/parts/score-trend-section.tsx
3864
+ var import_jsx_runtime120 = require("react/jsx-runtime");
3865
+ function Section4({
3866
+ title,
3867
+ desc,
3868
+ children
3869
+ }) {
3870
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("section", { children: [
3871
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_themes7.Box, { mb: "3", children: [
3872
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
3873
+ Heading2,
3874
+ {
3875
+ size: { initial: "4", md: "5" },
3876
+ style: { textWrap: "balance" },
3877
+ weight: "bold",
3878
+ children: title
3879
+ }
3880
+ ),
3881
+ 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
3882
+ ] }),
3883
+ children
3884
+ ] });
3885
+ }
3886
+ function AttemptCell({ row }) {
3887
+ const d = row.original;
3888
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
3889
+ Typo,
3890
+ {
3891
+ as: "span",
3892
+ style: { color: d.isCurrent ? "var(--gray-12)" : "var(--gray-11)" },
3893
+ variant: "body",
3894
+ weight: d.isCurrent ? "bold" : "regular",
3895
+ children: [
3896
+ d.trainingSessionNum,
3897
+ "\uD68C\uCC28",
3898
+ d.isCurrent ? " (\uD604\uC7AC)" : null
3899
+ ]
3900
+ }
3901
+ );
3902
+ }
3903
+ function DateCell({ row }) {
3904
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: formatDate(row.original.createdAt) });
3905
+ }
3906
+ function ScoreCell({ row }) {
3907
+ var _a;
3908
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
3909
+ Typo,
3910
+ {
3911
+ as: "span",
3912
+ mono: true,
3913
+ variant: "body",
3914
+ weight: row.original.isCurrent ? "bold" : "regular",
3915
+ children: (_a = row.original.totalScore) != null ? _a : "\u2014"
3916
+ }
3917
+ );
3918
+ }
3919
+ function DeltaCell({ row }) {
3920
+ const { delta } = row.original;
3921
+ if (delta === null) {
3922
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: "\u2014" });
3923
+ }
3924
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Typo, { as: "span", mono: true, style: { color: "var(--gray-9)" }, variant: "body", children: delta > 0 ? `+${delta}` : `${delta}` });
3925
+ }
3926
+ function ScoreTrendSection({
3927
+ history
3928
+ }) {
3929
+ const { colors, probe } = useTokenColors({
3930
+ accent: ["--accent-9", "#5b5bd6"],
3931
+ accentText: ["--accent-11", "#5753c6"],
3932
+ grid: ["--gray-5", "#e0e0e0"],
3933
+ gridSoft: ["--gray-4", "#e8e8e8"],
3934
+ muted: ["--gray-9", "#8d8d8d"]
3935
+ });
3936
+ const ordered = (0, import_react68.useMemo)(
3937
+ () => [...history].filter((e) => e.totalScore !== null).sort((a, b) => a.trainingSessionNum - b.trainingSessionNum).slice(-5),
3938
+ [history]
3939
+ );
3940
+ const scores = ordered.map((e) => {
3941
+ var _a;
3942
+ return (_a = e.totalScore) != null ? _a : 0;
3943
+ });
3944
+ const minScore = Math.max(0, Math.min(...scores) - 10);
3945
+ const maxScore = Math.min(100, Math.max(...scores) + 10);
3946
+ const labels = ordered.map((e) => `${e.trainingSessionNum}\uD68C\uCC28`);
3947
+ const lastIndex = ordered.length - 1;
3948
+ const option = {
3949
+ tooltip: { trigger: "axis", valueFormatter: (v) => `${String(v)}\uC810` },
3950
+ grid: { left: 36, right: 16, top: 20, bottom: 24, containLabel: false },
3951
+ xAxis: {
3952
+ type: "category",
3953
+ data: labels,
3954
+ boundaryGap: true,
3955
+ axisLine: { lineStyle: { color: colors.grid } },
3956
+ axisTick: { show: false },
3957
+ axisLabel: { color: colors.muted, fontSize: 10 }
3958
+ // ds-allow: chart-lib
3959
+ },
3960
+ yAxis: {
3961
+ type: "value",
3962
+ min: minScore,
3963
+ max: maxScore,
3964
+ splitLine: { lineStyle: { color: colors.gridSoft } },
3965
+ axisLabel: { color: colors.muted, fontSize: 10 }
3966
+ // ds-allow: chart-lib
3967
+ },
3968
+ series: [
3969
+ {
3970
+ type: "line",
3971
+ data: scores,
3972
+ smooth: false,
3973
+ showSymbol: true,
3974
+ symbol: "circle",
3975
+ symbolSize: 6,
3976
+ lineStyle: { color: colors.accent, width: 2 },
3977
+ itemStyle: { color: colors.accent },
3978
+ label: {
3979
+ show: true,
3980
+ position: "top",
3981
+ color: colors.accentText,
3982
+ fontSize: 10,
3983
+ // ds-allow: chart-lib
3984
+ fontWeight: "bold",
3985
+ // ds-allow: chart-lib
3986
+ formatter: (p) => p.dataIndex === lastIndex ? String(p.value) : ""
3987
+ }
3988
+ }
3989
+ ]
3990
+ };
3991
+ const rows = ordered.map((e, i) => {
3992
+ var _a;
3993
+ const prev = i > 0 ? (_a = ordered[i - 1].totalScore) != null ? _a : null : null;
3994
+ return __spreadProps(__spreadValues({}, e), {
3995
+ delta: prev !== null && e.totalScore !== null ? e.totalScore - prev : null,
3996
+ isCurrent: i === ordered.length - 1
3997
+ });
3998
+ });
3999
+ const columns = (0, import_react68.useMemo)(() => {
4000
+ const h = (0, import_react_table2.createColumnHelper)();
4001
+ return [
4002
+ h.display({
4003
+ id: "attempt",
4004
+ header: "\uD68C\uCC28",
4005
+ size: 120,
4006
+ meta: { autoSize: true, align: "left" },
4007
+ cell: AttemptCell
4008
+ }),
4009
+ h.display({
4010
+ id: "date",
4011
+ header: "\uB0A0\uC9DC",
4012
+ size: 130,
4013
+ meta: { align: "left" },
4014
+ cell: DateCell
4015
+ }),
4016
+ h.display({
4017
+ id: "score",
4018
+ header: "\uCD1D\uC810",
4019
+ size: 80,
4020
+ meta: { align: "right" },
4021
+ cell: ScoreCell
4022
+ }),
4023
+ h.display({
4024
+ id: "delta",
4025
+ header: "\uBCC0\uD654",
4026
+ size: 80,
4027
+ meta: { align: "right" },
4028
+ cell: DeltaCell
4029
+ })
4030
+ ];
4031
+ }, []);
4032
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4033
+ Section4,
4034
+ {
4035
+ desc: `\uAC19\uC740 \uC2DC\uB098\uB9AC\uC624 \uCD5C\uADFC ${ordered.length}\uD68C\uCC28 \uCD1D\uC810 \uBCC0\uD654`,
4036
+ title: "\uCD1D\uC810 \uCD94\uC774",
4037
+ children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_themes23.Flex, { direction: "column", gap: "4", children: [
4038
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
4039
+ "div",
4040
+ {
4041
+ "aria-label": "\uCD1D\uC810 \uCD94\uC774 \uB77C\uC778 \uCC28\uD2B8",
4042
+ role: "img",
4043
+ style: { position: "relative", width: "100%", height: 200 },
4044
+ children: [
4045
+ probe,
4046
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Chart, { option })
4047
+ ]
4048
+ }
4049
+ ),
4050
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_themes7.Box, { className: "rp-expand-table", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
4051
+ ExpandTable,
4052
+ {
4053
+ columns,
4054
+ data: rows,
4055
+ getRowStyle: (d) => d.isCurrent ? { background: "var(--accent-a2)" } : {},
4056
+ showPagination: false,
4057
+ variant: "sprite"
4058
+ }
4059
+ ) })
4060
+ ] })
4061
+ }
4062
+ );
4063
+ }
4064
+
4065
+ // src/app/roleplay/parts/section-nav.tsx
4066
+ var import_react69 = require("react");
4067
+ var import_jsx_runtime121 = require("react/jsx-runtime");
4068
+ var NAV_ICONS = {
4069
+ "score-summary": /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4070
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "m12 14 4-4" }),
4071
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M3.34 19a10 10 0 1 1 17.32 0" })
4072
+ ] }),
4073
+ 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" }),
4074
+ improvements: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4075
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: "12", cy: "12", r: "9" }),
4076
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: "12", cy: "12", r: "5" }),
4077
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: "12", cy: "12", r: "1.5" })
4078
+ ] }),
4079
+ "score-trend": /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4080
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M3 3v18h18" }),
4081
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "m19 8-5 5-4-4-4 4" })
4082
+ ] }),
4083
+ "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" }),
4084
+ "step-detail": /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
4085
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "8", x2: "21", y1: "6", y2: "6" }),
4086
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "8", x2: "21", y1: "12", y2: "12" }),
4087
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "8", x2: "21", y1: "18", y2: "18" }),
4088
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("path", { d: "M3 6h.01M3 12h.01M3 18h.01" })
4089
+ ] }),
4090
+ coaching: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })
4091
+ };
4092
+ function NavIcon({ children }) {
4093
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4094
+ "svg",
4095
+ {
4096
+ "aria-hidden": "true",
4097
+ fill: "none",
4098
+ height: "13",
4099
+ stroke: "currentColor",
4100
+ strokeLinecap: "round",
4101
+ strokeLinejoin: "round",
4102
+ strokeWidth: "1.8",
4103
+ style: { flexShrink: 0 },
4104
+ viewBox: "0 0 24 24",
4105
+ width: "13",
4106
+ children
4107
+ }
4108
+ );
4109
+ }
4110
+ function StepMetricBadge({ step }) {
4111
+ const scoreText = stepScoreText(step);
4112
+ if (scoreText !== null) {
4113
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4114
+ Typo,
4115
+ {
4116
+ as: "span",
4117
+ mono: true,
4118
+ style: { flexShrink: 0, color: "var(--gray-11)" },
4119
+ variant: "body",
4120
+ weight: "medium",
4121
+ children: scoreText
4122
+ }
4123
+ );
4124
+ }
4125
+ const gradeLabel = stepGradeLabel(step);
4126
+ if (gradeLabel !== null) {
4127
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4128
+ Typo,
4129
+ {
4130
+ as: "span",
4131
+ mono: true,
4132
+ style: { flexShrink: 0, color: stepVars(step).fg },
4133
+ variant: "body",
4134
+ weight: "medium",
4135
+ children: gradeLabel
4136
+ }
4137
+ );
4138
+ }
4139
+ return null;
4140
+ }
4141
+ function useScrollSpy(ids) {
4142
+ const [activeId, setActiveId] = (0, import_react69.useState)(null);
4143
+ const watchKey = ids.join(",");
4144
+ (0, import_react69.useEffect)(() => {
4145
+ const els = ids.map((id) => document.getElementById(id)).filter((el) => el !== null);
4146
+ if (els.length === 0) return;
4147
+ const observer = new IntersectionObserver(
4148
+ (entries) => {
4149
+ const visible = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
4150
+ if (visible[0]) setActiveId(visible[0].target.id);
4151
+ },
4152
+ { rootMargin: "0px 0px -72% 0px", threshold: 0 }
4153
+ );
4154
+ els.forEach((el) => {
4155
+ observer.observe(el);
4156
+ });
4157
+ return () => {
4158
+ observer.disconnect();
4159
+ };
4160
+ }, [watchKey]);
4161
+ return activeId;
4162
+ }
4163
+ function scrollToId(id) {
4164
+ var _a;
4165
+ (_a = document.getElementById(id)) == null ? void 0 : _a.scrollIntoView({ behavior: "smooth", block: "start" });
4166
+ }
4167
+ function SectionNav({ items, steps }) {
4168
+ const activeId = useScrollSpy(items.map((i) => i.id));
4169
+ const stepDetailActive = activeId === "step-summary" || activeId === "step-detail";
4170
+ 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: [
4171
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4172
+ Typo,
4173
+ {
4174
+ as: "p",
4175
+ color: "gray",
4176
+ style: {
4177
+ paddingLeft: "calc(var(--space-3) + 2px)",
4178
+ paddingBottom: "var(--space-1)"
4179
+ },
4180
+ variant: "body",
4181
+ weight: "medium",
4182
+ children: "\uBAA9\uCC28"
4183
+ }
4184
+ ),
4185
+ /* @__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) => {
4186
+ const active = activeId === item.id;
4187
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4188
+ "button",
4189
+ {
4190
+ "aria-current": active ? "true" : void 0,
4191
+ className: "rp-nav-btn",
4192
+ onClick: () => {
4193
+ scrollToId(item.id);
4194
+ },
4195
+ style: active ? {
4196
+ borderLeftColor: "var(--accent-9)",
4197
+ background: "var(--accent-a2)"
4198
+ } : void 0,
4199
+ type: "button",
4200
+ children: [
4201
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes23.Flex, { align: "center", gap: "2", style: { minWidth: 0 }, children: [
4202
+ NAV_ICONS[item.id] ? /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(NavIcon, { children: NAV_ICONS[item.id] }) : null,
4203
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4204
+ Typo,
4205
+ {
4206
+ as: "span",
4207
+ truncate: true,
4208
+ variant: "body",
4209
+ weight: active ? "medium" : "regular",
4210
+ children: item.label
4211
+ }
4212
+ )
4213
+ ] }),
4214
+ typeof item.score === "number" ? /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Typo, { as: "span", mono: true, style: { flexShrink: 0 }, variant: "body", children: [
4215
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4216
+ Typo,
4217
+ {
4218
+ as: "span",
4219
+ style: {
4220
+ color: active ? "var(--gray-12)" : "var(--gray-11)"
4221
+ },
4222
+ variant: "body",
4223
+ weight: "medium",
4224
+ children: item.score
4225
+ }
4226
+ ),
4227
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(Typo, { as: "span", style: { color: "var(--gray-9)" }, variant: "body", children: [
4228
+ "/",
4229
+ item.max
4230
+ ] })
4231
+ ] }) : null
4232
+ ]
4233
+ }
4234
+ ) }, item.id);
4235
+ }) }) }),
4236
+ steps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes7.Box, { mt: "3", pt: "3", style: { borderTop: "1px solid var(--gray-4)" }, children: [
4237
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_themes7.Box, { pb: "1", px: "3", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4238
+ Typo,
4239
+ {
4240
+ as: "span",
4241
+ style: {
4242
+ color: stepDetailActive ? "var(--gray-12)" : "var(--gray-10)"
4243
+ },
4244
+ variant: "body",
4245
+ weight: "medium",
4246
+ children: "\uB2E8\uACC4\uBCC4 \uC810\uC218"
4247
+ }
4248
+ ) }),
4249
+ /* @__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) => {
4250
+ const ratio = stepRatio(step);
4251
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4252
+ "button",
4253
+ {
4254
+ className: "rp-jump-btn",
4255
+ onClick: () => {
4256
+ scrollToId(`step-${step.key}`);
4257
+ },
4258
+ type: "button",
4259
+ children: [
4260
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
4261
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
4262
+ Typo,
4263
+ {
4264
+ as: "span",
4265
+ style: { minWidth: 0 },
4266
+ truncate: true,
4267
+ variant: "body",
4268
+ children: [
4269
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4270
+ Typo,
4271
+ {
4272
+ as: "span",
4273
+ mono: true,
4274
+ style: { color: "var(--gray-11)" },
4275
+ variant: "body",
4276
+ weight: "medium",
4277
+ children: stepCode(step)
4278
+ }
4279
+ ),
4280
+ " ",
4281
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
4282
+ Typo,
4283
+ {
4284
+ as: "span",
4285
+ style: { color: "var(--gray-9)" },
4286
+ variant: "body",
4287
+ children: step.label
4288
+ }
4289
+ )
4290
+ ]
4291
+ }
4292
+ ),
4293
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(StepMetricBadge, { step })
4294
+ ] }),
4295
+ 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
4296
+ ]
4297
+ }
4298
+ ) }, step.key);
4299
+ }) }) })
4300
+ ] })
4301
+ ] }) }) });
4302
+ }
4303
+
4304
+ // src/app/roleplay/parts/step-detail.tsx
4305
+ var import_jsx_runtime122 = require("react/jsx-runtime");
4306
+ function RubricField({
4307
+ label,
4308
+ value
4309
+ }) {
4310
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { children: [
4311
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", variant: "body", weight: "medium", children: label }),
4312
+ /* @__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 }) })
4313
+ ] });
4314
+ }
4315
+ function StepDetail({
4316
+ step,
4317
+ scrollMarginTop = "120px"
4318
+ }) {
4319
+ const qv = stepVars(step);
4320
+ const ratio = stepRatio(step);
4321
+ const scoreText = stepScoreText(step);
4322
+ const gradeLabel = stepGradeLabel(step);
4323
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { id: `step-${step.key}`, style: { scrollMarginTop }, children: [
4324
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", mb: "1", children: [
4325
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes7.Box, { style: { minWidth: 0 }, children: [
4326
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "span", color: "gray", mono: true, variant: "body", children: stepCode(step) }),
4327
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", variant: "subtitle", weight: "bold", children: step.label })
4328
+ ] }),
4329
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { align: "end", direction: "column", gap: "1", style: { flexShrink: 0 }, children: [
4330
+ scoreText !== null ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4331
+ Typo,
4332
+ {
4333
+ as: "span",
4334
+ mono: true,
4335
+ style: { color: qv.fg },
4336
+ variant: "subtitle",
4337
+ weight: "bold",
4338
+ children: scoreText
4339
+ }
4340
+ ) : null,
4341
+ gradeLabel !== null ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4342
+ Typo,
4343
+ {
4344
+ as: "span",
4345
+ mono: true,
4346
+ style: {
4347
+ display: "inline-block",
4348
+ borderRadius: "var(--radius-2)",
4349
+ border: `1px solid ${qv.border}`,
4350
+ background: qv.bg,
4351
+ color: qv.fg,
4352
+ padding: "1px 8px"
4353
+ },
4354
+ variant: "body",
4355
+ weight: "medium",
4356
+ children: gradeLabel
4357
+ }
4358
+ ) : null
4359
+ ] })
4360
+ ] }),
4361
+ 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,
4362
+ 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,
4363
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(import_themes23.Flex, { direction: "column", gap: "0", children: [
4364
+ 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: [
4365
+ step.basis ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(RubricField, { label: "\uADFC\uAC70", value: step.basis }) : null,
4366
+ step.issue ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(RubricField, { label: "\uC544\uC26C\uC6B4 \uC810", value: step.issue }) : null
4367
+ ] }) }) : null,
4368
+ 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: [
4369
+ step.improve ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(RubricField, { label: "\uAC1C\uC120\uC810", value: step.improve }) : null,
4370
+ step.example ? /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4371
+ import_themes7.Box,
4372
+ {
4373
+ p: "2",
4374
+ style: {
4375
+ borderRadius: "var(--radius-2)",
4376
+ background: "var(--accent-a2)"
4377
+ },
4378
+ children: [
4379
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4380
+ Typo,
4381
+ {
4382
+ as: "p",
4383
+ style: { color: "var(--accent-11)" },
4384
+ variant: "body",
4385
+ weight: "medium",
4386
+ children: "\uC608\uC2DC \uC2A4\uD06C\uB9BD\uD2B8"
4387
+ }
4388
+ ),
4389
+ /* @__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 }) })
4390
+ ]
4391
+ }
4392
+ ) : null,
4393
+ step.idealExample ? /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
4394
+ import_themes7.Box,
4395
+ {
4396
+ p: "2",
4397
+ style: {
4398
+ borderRadius: "var(--radius-2)",
4399
+ background: "var(--gray-a2)"
4400
+ },
4401
+ children: [
4402
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Typo, { as: "p", color: "gray", variant: "body", weight: "medium", children: "\uBAA8\uBC94 \uC608\uC2DC" }),
4403
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_themes7.Box, { mt: "1", style: { maxWidth: "65ch" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
4404
+ Typo,
4405
+ {
4406
+ as: "p",
4407
+ color: "gray",
4408
+ style: { whiteSpace: "pre-line" },
4409
+ variant: "body",
4410
+ children: step.idealExample
4411
+ }
4412
+ ) })
4413
+ ]
4414
+ }
4415
+ ) : null
4416
+ ] }) }) : null
4417
+ ] })
4418
+ ] });
4419
+ }
4420
+
4421
+ // src/app/roleplay/parts/step-radar.tsx
4422
+ var import_jsx_runtime123 = require("react/jsx-runtime");
4423
+ function StepRadar({ steps }) {
4424
+ const { colors, probe } = useTokenColors({
4425
+ accent: ["--accent-9", "#5b5bd6"],
4426
+ grid: ["--gray-5", "#e0e0e0"],
4427
+ label: ["--gray-11", "#646464"]
4428
+ });
4429
+ const indicator = steps.map((s) => ({ name: stepCode(s), max: 1 }));
4430
+ const values = steps.map((s) => {
4431
+ var _a;
4432
+ return (_a = stepRatio(s)) != null ? _a : 0;
4433
+ });
4434
+ const option = {
4435
+ tooltip: {
4436
+ trigger: "item",
4437
+ formatter: () => steps.map(
4438
+ (s) => {
4439
+ var _a, _b;
4440
+ return `${stepCode(s)} ${(_b = (_a = stepScoreText(s)) != null ? _a : stepGradeLabel(s)) != null ? _b : "\u2014"}`;
4441
+ }
4442
+ ).join("<br/>")
4443
+ },
4444
+ radar: {
4445
+ indicator,
4446
+ radius: "66%",
4447
+ center: ["50%", "50%"],
4448
+ splitNumber: 4,
4449
+ axisName: { color: colors.label, fontSize: 10, fontWeight: "bold" },
4450
+ // ds-allow: chart-lib
4451
+ splitLine: { lineStyle: { color: colors.grid } },
4452
+ splitArea: { show: false },
4453
+ axisLine: { lineStyle: { color: colors.grid } }
4454
+ },
4455
+ series: [
4456
+ {
4457
+ type: "radar",
4458
+ data: [
4459
+ {
4460
+ value: values,
4461
+ name: "\uC774\uBC88 \uC138\uC158",
4462
+ areaStyle: { color: colors.accent, opacity: 0.18 },
4463
+ lineStyle: { color: colors.accent, width: 2 },
4464
+ itemStyle: { color: colors.accent },
4465
+ symbolSize: 4
4466
+ }
4467
+ ]
4468
+ }
4469
+ ]
4470
+ };
4471
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
4472
+ "div",
4473
+ {
4474
+ "aria-label": "\uD3C9\uAC00 \uB2E8\uACC4 \uB808\uC774\uB354 \uCC28\uD2B8",
4475
+ role: "img",
4476
+ style: {
4477
+ position: "relative",
4478
+ display: "flex",
4479
+ alignItems: "center",
4480
+ justifyContent: "center",
4481
+ height: "100%",
4482
+ minWidth: 0,
4483
+ overflow: "hidden"
4484
+ },
4485
+ children: [
4486
+ probe,
4487
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { style: { width: "100%", maxWidth: 300, height: 280 }, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Chart, { option }) })
4488
+ ]
4489
+ }
4490
+ );
4491
+ }
4492
+
4493
+ // src/app/roleplay/parts/step-summary.tsx
4494
+ var import_jsx_runtime124 = require("react/jsx-runtime");
4495
+ function Section5({
4496
+ title,
4497
+ desc,
4498
+ children
4499
+ }) {
4500
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("section", { children: [
4501
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes7.Box, { mb: "3", children: [
4502
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Typo, { as: "p", variant: "subtitle", weight: "bold", children: title }),
4503
+ 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
4504
+ ] }),
4505
+ children
4506
+ ] });
4507
+ }
4508
+ function StepSummary({ steps }) {
4509
+ if (steps.length === 0) return null;
4510
+ const radarReady = steps.every((s) => stepRatio(s) !== null);
4511
+ 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.";
4512
+ const list = /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_themes23.Flex, { direction: "column", children: steps.map((step, i) => {
4513
+ const ratio = stepRatio(step);
4514
+ const scoreText = stepScoreText(step);
4515
+ const gradeLabel = stepGradeLabel(step);
4516
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes7.Box, { children: [
4517
+ i > 0 && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_themes40.Separator, { size: "4" }),
4518
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
4519
+ "button",
4520
+ {
4521
+ className: "rp-rubric-scroll-btn",
4522
+ onClick: () => {
4523
+ var _a;
4524
+ (_a = document.getElementById(`step-${step.key}`)) == null ? void 0 : _a.scrollIntoView({ behavior: "smooth", block: "start" });
4525
+ },
4526
+ style: {
4527
+ padding: "var(--space-2) 0",
4528
+ background: "none",
4529
+ border: "none",
4530
+ cursor: "pointer",
4531
+ width: "100%",
4532
+ textAlign: "left"
4533
+ },
4534
+ type: "button",
4535
+ children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes23.Flex, { direction: "column", gap: "1", children: [
4536
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes23.Flex, { align: "center", gap: "2", justify: "between", children: [
4537
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
4538
+ Typo,
4539
+ {
4540
+ as: "span",
4541
+ style: { minWidth: 0 },
4542
+ truncate: true,
4543
+ variant: "body",
4544
+ weight: "medium",
4545
+ children: [
4546
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
4547
+ Typo,
4548
+ {
4549
+ as: "span",
4550
+ mono: true,
4551
+ style: { color: "var(--gray-11)" },
4552
+ variant: "body",
4553
+ weight: "medium",
4554
+ children: stepCode(step)
4555
+ }
4556
+ ),
4557
+ " ",
4558
+ step.label
4559
+ ]
4560
+ }
4561
+ ),
4562
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_themes23.Flex, { align: "center", gap: "2", style: { flexShrink: 0 }, children: [
4563
+ scoreText !== null ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Typo, { as: "span", mono: true, variant: "body", weight: "bold", children: scoreText }) : null,
4564
+ gradeLabel !== null ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
4565
+ Typo,
4566
+ {
4567
+ as: "span",
4568
+ mono: true,
4569
+ style: { color: stepVars(step).fg },
4570
+ variant: "body",
4571
+ weight: "medium",
4572
+ children: gradeLabel
4573
+ }
4574
+ ) : null
4575
+ ] })
4576
+ ] }),
4577
+ 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
4578
+ ] })
4579
+ }
4580
+ )
4581
+ ] }, step.key);
4582
+ }) });
4583
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Section5, { desc, title: "\uD3C9\uAC00 \uB2E8\uACC4 \uC694\uC57D", children: radarReady ? /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
4584
+ import_themes24.Grid,
4585
+ {
4586
+ align: "center",
4587
+ columns: { initial: "1", md: "minmax(260px, 1fr) 280px" },
4588
+ gap: "6",
4589
+ children: [
4590
+ list,
4591
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(StepRadar, { steps })
4592
+ ]
4593
+ }
4594
+ ) : list });
4595
+ }
4596
+
4597
+ // src/app/roleplay/parts/content.tsx
4598
+ var import_jsx_runtime125 = require("react/jsx-runtime");
4599
+ function Content8({
4600
+ detail,
4601
+ report,
4602
+ history,
4603
+ speechShare,
4604
+ scrollMarginTop
4605
+ }) {
4606
+ var _a;
4607
+ const { steps, skills, strengths, improvements } = report;
4608
+ const scoreValue = (_a = detail.totalScore) != null ? _a : report.totalScore;
4609
+ const showTrend = history.length > 1;
4610
+ const showStepSummary = steps.length > 0 && steps.some(hasStepSignal);
4611
+ const showStepDetail = steps.length > 0;
4612
+ const navItems = [
4613
+ { id: "score-summary", label: "\uC885\uD569 \uC810\uC218", score: scoreValue, max: 100 },
4614
+ ...strengths.length > 0 ? [{ id: "strengths", label: "\uAC15\uC810" }] : [],
4615
+ ...improvements.length > 0 ? [{ id: "improvements", label: "\uAC1C\uC120\uC810" }] : [],
4616
+ ...showTrend ? [{ id: "score-trend", label: "\uCD1D\uC810 \uCD94\uC774" }] : [],
4617
+ ...showStepSummary ? [{ id: "step-summary", label: "\uD3C9\uAC00 \uB2E8\uACC4 \uC694\uC57D" }] : [],
4618
+ ...showStepDetail ? [{ id: "step-detail", label: "\uB2E8\uACC4\uBCC4 \uC0C1\uC138 \uBD84\uC11D" }] : [],
4619
+ ...skills.length > 0 ? [{ id: "coaching", label: "\uC989\uC2DC \uC801\uC6A9 \uC2A4\uD0AC" }] : []
4620
+ ];
4621
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
4622
+ import_themes24.Grid,
4623
+ {
4624
+ align: "start",
4625
+ columns: { initial: "1", md: "minmax(0, 1fr) 224px" },
4626
+ gap: "7",
4627
+ children: [
4628
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes23.Flex, { direction: "column", gap: "7", children: [
4629
+ report.frameworkTitle !== null || report.frameworkDescription !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_themes7.Box, { children: [
4630
+ report.frameworkTitle !== null ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Heading2, { size: "5", weight: "bold", children: report.frameworkTitle }) : null,
4631
+ 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
4632
+ ] }) : null,
4633
+ /* @__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 }) }),
4634
+ strengths.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "strengths", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
4635
+ AnalysisSection,
4636
+ {
4637
+ desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \uC798\uD55C \uC810",
4638
+ items: strengths,
4639
+ title: "\uAC15\uC810",
4640
+ tone: "good"
4641
+ }
4642
+ ) }) : null,
4643
+ improvements.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "improvements", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
4644
+ AnalysisSection,
4645
+ {
4646
+ desc: "\uB2E4\uC74C \uC2DC\uB3C4\uC5D0\uC11C \uBCF4\uC644\uD560 \uC810",
4647
+ items: improvements,
4648
+ title: "\uAC1C\uC120\uC810",
4649
+ tone: "bad"
4650
+ }
4651
+ ) }) : null,
4652
+ 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,
4653
+ 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,
4654
+ showStepDetail ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_themes7.Box, { id: "step-detail", style: { scrollMarginTop }, children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
4655
+ Section2,
4656
+ {
4657
+ desc: "\uB300\uD654 \uD504\uB808\uC784\uC6CC\uD06C \uB2E8\uACC4\uBCC4 \uD3C9\uAC00 \uACB0\uACFC\uC785\uB2C8\uB2E4.",
4658
+ title: "\uB2E8\uACC4\uBCC4 \uC0C1\uC138 \uBD84\uC11D",
4659
+ 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: [
4660
+ i > 0 ? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
4661
+ import_themes40.Separator,
4662
+ {
4663
+ mb: "6",
4664
+ size: "4",
4665
+ style: { marginTop: "calc(var(--space-9) * 1.6)" }
4666
+ }
4667
+ ) : null,
4668
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(StepDetail, { scrollMarginTop, step })
4669
+ ] }, step.key)) })
4670
+ }
4671
+ ) }) : null,
4672
+ 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
4673
+ ] }),
4674
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(SectionNav, { items: navItems, steps: showStepDetail ? steps : [] })
4675
+ ]
4676
+ }
4677
+ );
4678
+ }
4679
+ // Annotate the CommonJS export names for ESM import in node:
4680
+ 0 && (module.exports = {
4681
+ Content
4682
+ });
4683
+ //# sourceMappingURL=content.cjs.map