@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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/index.ts","../../src/utils/get-cell-align.ts","../../src/utils/get-column-meta.ts","../../src/utils/scroll-to.ts","../../src/utils/get-time-options.ts","../../src/icon.ts","../../src/icons/phone-ring.tsx","../../src/icons/up.tsx","../../src/icons/down.tsx","../../src/icons/mic.tsx","../../src/icons/camera.tsx","../../src/icons/camera-disabled.tsx","../../src/icons/end-call.tsx","../../src/icons/circle-play.tsx","../../src/icons/circle-pencil.tsx","../../src/icons/circle-check.tsx","../../src/icons/circle-satisfaction.tsx","../../src/icons/circle-quote.tsx","../../src/icons/circle-chat.tsx","../../src/icons/circle-file.tsx","../../src/icons/headset.tsx","../../src/utils/get-callout-icon-component.ts","../../src/utils/get-dynamic-form-display-value.ts","../../src/utils/resolve-color.ts","../../src/utils/mono-style.ts"],"sourcesContent":["export * from './get-cell-align';\nexport * from './get-column-meta';\nexport * from './scroll-to';\nexport * from './get-time-options';\nexport * from './get-callout-icon-component';\nexport * from './get-dynamic-form-display-value';\nexport * from './resolve-color';\nexport * from './mono-style';","export type CellAlign = 'left' | 'center' | 'right';\n\nexport type CellDataType =\n | 'number'\n | 'date'\n | 'time'\n | 'string'\n | 'button'\n | CellAlign;\n\nexport const getCellAlign = (type: CellDataType): CellAlign => {\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n return 'right';\n case 'string':\n case 'button':\n return 'left';\n default:\n return type;\n }\n};\n","import type { RowData } from '@tanstack/react-table';\nimport type { CellDataType } from './get-cell-align';\nimport { getCellAlign } from './get-cell-align';\n\ntype ExpandButtonComp = <Data extends RowData>(props: {\n open: boolean;\n setIsOpen: (value: boolean) => void;\n data: Data;\n}) => React.ReactNode;\n\nexport interface ColumnMeta {\n OpenBtn?: ExpandButtonComp;\n /** 셀의 가로 너비 지정을 number가 아닌 auto로 사용하고 싶을 경우.\n * 테이블 당 하나의 셀에만 사용하기를 권장\n */\n autoSize?: boolean;\n /** 좌/우/중앙 정렬 설정의 기준, dataType을 우선해 사용 */\n align?: CellDataType;\n}\n\nexport const getColumnMeta = (meta: ColumnMeta): ColumnMeta => {\n return {\n ...meta,\n align: getCellAlign(meta.align || 'left'),\n };\n};\n","export function scrollTo(\n element: HTMLDivElement,\n targetPosition: number,\n duration: number\n): void {\n const startPosition = element.scrollTop;\n const distance = targetPosition - startPosition;\n let startTime: number | null = null;\n\n function animation(currentTime: number): void {\n if (startTime === null) startTime = currentTime;\n const timeElapsed = currentTime - startTime;\n const run = ease(timeElapsed, startPosition, distance, duration);\n element.scrollTop = run;\n if (timeElapsed < duration) {\n requestAnimationFrame(animation);\n }\n }\n\n function ease(t: number, b: number, c: number, d: number): number {\n let [t2] = [t];\n const [b2, c2, d2] = [b, c, d];\n t2 /= d2 / 2;\n if (t2 < 1) return (c2 / 2) * t2 * t2 + b2;\n t2--;\n return (-c2 / 2) * (t2 * (t2 - 2) - 1) + b2;\n }\n\n requestAnimationFrame(animation);\n}\n","export const getTimeOptions = (): string[] => {\n // 10분 간격으로 시간을 생성\n const timeOptions = [];\n for (let i = 0; i < 24; i++) {\n for (let j = 0; j < 60; j += 10) {\n timeOptions.push(`${i < 10 ? `0${i}` : i}:${j < 10 ? `0${j}` : j}`);\n }\n }\n return timeOptions;\n};\n\nexport const parseTimeOption = (\n time?: string\n): { hour: number; minute: number } => {\n if (!time) return { hour: 0, minute: 0 };\n const [hour, minute] = time.split(':').map((t) => parseInt(t, 10));\n return { hour, minute };\n};\n\nexport const getTimeOption = (time: Date): string => {\n const hour = time.getHours();\n const minute = time.getMinutes();\n return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;\n};\n","export {\n AccessibilityIcon,\n ActivityLogIcon,\n AlignBaselineIcon,\n AlignBottomIcon,\n AlignCenterHorizontallyIcon,\n AlignCenterVerticallyIcon,\n AlignLeftIcon,\n AlignRightIcon,\n AlignTopIcon,\n AllSidesIcon,\n AngleIcon,\n ArchiveIcon,\n ArrowBottomLeftIcon,\n ArrowBottomRightIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowTopLeftIcon,\n ArrowTopRightIcon,\n ArrowUpIcon,\n AspectRatioIcon,\n AvatarIcon,\n BackpackIcon,\n BadgeIcon,\n BarChartIcon,\n BellIcon,\n BlendingModeIcon,\n BookmarkFilledIcon,\n BookmarkIcon,\n BorderAllIcon,\n BorderBottomIcon,\n BorderDashedIcon,\n BorderDottedIcon,\n BorderLeftIcon,\n BorderNoneIcon,\n BorderRightIcon,\n BorderSolidIcon,\n BorderSplitIcon,\n BorderStyleIcon,\n BorderTopIcon,\n BorderWidthIcon,\n BoxIcon,\n BoxModelIcon,\n ButtonIcon,\n CalendarIcon,\n CardStackIcon,\n CardStackMinusIcon,\n CardStackPlusIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CaretSortIcon,\n CaretUpIcon,\n ChatBubbleIcon,\n CheckboxIcon,\n CheckCircledIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n CircleBackslashIcon,\n CircleIcon,\n ClipboardCopyIcon,\n ClipboardIcon,\n ClockIcon,\n CodeIcon,\n CodeSandboxLogoIcon,\n ColorWheelIcon,\n ColumnsIcon,\n ColumnSpacingIcon,\n CommitIcon,\n Component1Icon,\n Component2Icon,\n ComponentBooleanIcon,\n ComponentInstanceIcon,\n ComponentNoneIcon,\n ComponentPlaceholderIcon,\n ContainerIcon,\n CookieIcon,\n CopyIcon,\n CornerBottomLeftIcon,\n CornerBottomRightIcon,\n CornersIcon,\n CornerTopLeftIcon,\n CornerTopRightIcon,\n CountdownTimerIcon,\n CounterClockwiseClockIcon,\n CropIcon,\n Cross1Icon,\n Cross2Icon,\n CrossCircledIcon,\n Crosshair1Icon,\n Crosshair2Icon,\n CrumpledPaperIcon,\n CubeIcon,\n CursorArrowIcon,\n CursorTextIcon,\n DashboardIcon,\n DashIcon,\n DesktopIcon,\n DimensionsIcon,\n DiscIcon,\n DiscordLogoIcon,\n DividerHorizontalIcon,\n DividerVerticalIcon,\n DotFilledIcon,\n DotIcon,\n DotsHorizontalIcon,\n DotsVerticalIcon,\n DoubleArrowDownIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n DoubleArrowUpIcon,\n DownloadIcon,\n DragHandleDots1Icon,\n DragHandleDots2Icon,\n DragHandleHorizontalIcon,\n DragHandleVerticalIcon,\n DrawingPinFilledIcon,\n DrawingPinIcon,\n DropdownMenuIcon,\n EnterFullScreenIcon,\n EnterIcon,\n EnvelopeClosedIcon,\n EnvelopeOpenIcon,\n EraserIcon,\n ExclamationTriangleIcon,\n ExitFullScreenIcon,\n ExitIcon,\n ExternalLinkIcon,\n EyeClosedIcon,\n EyeNoneIcon,\n EyeOpenIcon,\n FaceIcon,\n FigmaLogoIcon,\n FileIcon,\n FileMinusIcon,\n FilePlusIcon,\n FileTextIcon,\n FontBoldIcon,\n FontFamilyIcon,\n FontItalicIcon,\n FontRomanIcon,\n FontSizeIcon,\n FontStyleIcon,\n FrameIcon,\n FramerLogoIcon,\n GearIcon,\n GitHubLogoIcon,\n GlobeIcon,\n GridIcon,\n GroupIcon,\n Half1Icon,\n Half2Icon,\n HamburgerMenuIcon,\n HandIcon,\n HeadingIcon,\n HeartFilledIcon,\n HeartIcon,\n HeightIcon,\n HobbyKnifeIcon,\n HomeIcon,\n IconJarLogoIcon,\n IdCardIcon,\n ImageIcon,\n InfoCircledIcon,\n InputIcon,\n InstagramLogoIcon,\n KeyboardIcon,\n LapTimerIcon,\n LaptopIcon,\n LayersIcon,\n LayoutIcon,\n LetterCaseCapitalizeIcon,\n LetterCaseLowercaseIcon,\n LetterCaseToggleIcon,\n LetterCaseUppercaseIcon,\n LetterSpacingIcon,\n LightningBoltIcon,\n LineHeightIcon,\n Link1Icon,\n Link2Icon,\n LinkBreak1Icon,\n LinkBreak2Icon,\n LinkedInLogoIcon,\n LinkNone1Icon,\n LinkNone2Icon,\n ListBulletIcon,\n LockClosedIcon,\n LockOpen1Icon,\n LockOpen2Icon,\n LoopIcon,\n MagicWandIcon,\n MagnifyingGlassIcon,\n MarginIcon,\n MaskOffIcon,\n MaskOnIcon,\n MinusCircledIcon,\n MinusIcon,\n MixerHorizontalIcon,\n MixerVerticalIcon,\n MixIcon,\n MobileIcon,\n ModulzLogoIcon,\n MoonIcon,\n MoveIcon,\n NotionLogoIcon,\n OpacityIcon,\n OpenInNewWindowIcon,\n OverlineIcon,\n PaddingIcon,\n PaperPlaneIcon,\n PauseIcon,\n Pencil1Icon,\n Pencil2Icon,\n PersonIcon,\n PieChartIcon,\n PilcrowIcon,\n PinBottomIcon,\n PinLeftIcon,\n PinRightIcon,\n PinTopIcon,\n PlayIcon,\n PlusCircledIcon,\n PlusIcon,\n QuestionMarkCircledIcon,\n QuestionMarkIcon,\n QuoteIcon,\n RadiobuttonIcon,\n ReaderIcon,\n ReloadIcon,\n ResetIcon,\n ResumeIcon,\n RocketIcon,\n RotateCounterClockwiseIcon,\n RowsIcon,\n RowSpacingIcon,\n RulerHorizontalIcon,\n RulerSquareIcon,\n ScissorsIcon,\n SectionIcon,\n SewingPinFilledIcon,\n SewingPinIcon,\n ShadowIcon,\n ShadowInnerIcon,\n ShadowNoneIcon,\n ShadowOuterIcon,\n Share1Icon,\n Share2Icon,\n ShuffleIcon,\n SizeIcon,\n SketchLogoIcon,\n SlashIcon,\n SliderIcon,\n SpaceBetweenHorizontallyIcon,\n SpaceBetweenVerticallyIcon,\n SpaceEvenlyHorizontallyIcon,\n SpaceEvenlyVerticallyIcon,\n SpeakerLoudIcon,\n SpeakerModerateIcon,\n SpeakerOffIcon,\n SpeakerQuietIcon,\n SquareIcon,\n StackIcon,\n StarFilledIcon,\n StarIcon,\n StitchesLogoIcon,\n StopIcon,\n StopwatchIcon,\n StretchHorizontallyIcon,\n StretchVerticallyIcon,\n StrikethroughIcon,\n SunIcon,\n SwitchIcon,\n SymbolIcon,\n TableIcon,\n TargetIcon,\n TextAlignBottomIcon,\n TextAlignCenterIcon,\n TextAlignJustifyIcon,\n TextAlignLeftIcon,\n TextAlignMiddleIcon,\n TextAlignRightIcon,\n TextAlignTopIcon,\n TextIcon,\n TextNoneIcon,\n ThickArrowDownIcon,\n ThickArrowLeftIcon,\n ThickArrowRightIcon,\n ThickArrowUpIcon,\n TimerIcon,\n TokensIcon,\n TrackNextIcon,\n TrackPreviousIcon,\n TransformIcon,\n TransparencyGridIcon,\n TrashIcon,\n TriangleDownIcon,\n TriangleLeftIcon,\n TriangleRightIcon,\n TriangleUpIcon,\n TwitterLogoIcon,\n UnderlineIcon,\n UpdateIcon,\n UploadIcon,\n ValueIcon,\n ValueNoneIcon,\n VercelLogoIcon,\n VideoIcon,\n ViewGridIcon,\n ViewHorizontalIcon,\n ViewNoneIcon,\n ViewVerticalIcon,\n WidthIcon,\n ZoomInIcon,\n ZoomOutIcon\n} from '@radix-ui/react-icons';\n\n// 로컬 아이콘 (CameraIcon은 로컬 정의가 우선하도록 radix export에서 제외)\nexport * from './icons';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const PhoneRingIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n 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\"\n fill={color}\n />\n <path\n 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\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.5\"\n />\n </svg>\n );\n }\n);\n\nPhoneRingIcon.displayName = 'ArrowUpIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowUpIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowUpIcon.displayName = 'ArrowUpIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowDownIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowDownIcon.displayName = 'ArrowDownIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const MicIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 12 16\"\n width=\"12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n <path\n 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\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.2\"\n />\n </svg>\n );\n }\n);\n\nMicIcon.displayName = 'MicIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CameraIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nCameraIcon.displayName = 'CameraIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CameraDisabledIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCameraDisabledIcon.displayName = 'VideoDisabledIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const EndCallIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n 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\"\n fill={color}\n />\n <path\n 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\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.5\"\n />\n </svg>\n );\n }\n);\n\nEndCallIcon.displayName = 'EndCallIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CirclePlayIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = '#currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill={color} r=\"8\" />\n <path\n 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\"\n fill=\"white\"\n />\n </svg>\n );\n }\n);\n\nCirclePlayIcon.displayName = 'CirclePlayIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CirclePencilIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill={color} r=\"8\" />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill=\"white\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCirclePencilIcon.displayName = 'CirclePencilIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleCheckIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill=\"white\" r=\"7.5\" stroke={color} />\n <rect fill=\"white\" fillOpacity=\"0.01\" height=\"16\" width=\"16\" />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleCheckIcon.displayName = 'CircleCheckIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleSatisfactionIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill=\"white\" r=\"7.5\" stroke={color} />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nCircleSatisfactionIcon.displayName = 'CircleSatisfactionIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleQuoteIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill=\"white\" r=\"7.5\" stroke={color} />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleQuoteIcon.displayName = 'CircleQuoteIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleChatIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect fill={color} height=\"16\" rx=\"8\" width=\"16\" />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill=\"white\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleChatIcon.displayName = 'CircleChatIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleFileIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <rect fill={color} height=\"16\" rx=\"8\" width=\"16\" />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill=\"white\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleFileIcon.displayName = 'CircleFileIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const HeadsetIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n d=\"M3.25 6C3.25 3.75 5.5 2 8 2C10.5 2 12.75 3.75 12.75 6\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.2\"\n />\n <path\n 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\"\n stroke={color}\n strokeLinejoin=\"round\"\n strokeWidth=\"1.2\"\n />\n <path\n 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\"\n stroke={color}\n strokeLinejoin=\"round\"\n strokeWidth=\"1.2\"\n />\n <path\n d=\"M4 12.25V13.25C4 13.94 4.56 14.5 5.25 14.5H8\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.2\"\n />\n </svg>\n );\n }\n);\n\nHeadsetIcon.displayName = 'HeadsetIcon';\n","import {\n CheckCircledIcon,\n ExclamationTriangleIcon,\n InfoCircledIcon,\n QuestionMarkCircledIcon,\n} from '@/icon';\n\ntype SvgIconComponent = typeof InfoCircledIcon;\n\nconst DEFAULT_ICON: SvgIconComponent = InfoCircledIcon;\n\nexport const AI_CALLOUT_ICON_OPTIONS: {\n label: string;\n value: string;\n Component: SvgIconComponent;\n}[] = [\n { label: 'Info', value: 'InfoCircledIcon', Component: InfoCircledIcon },\n {\n label: 'Warning',\n value: 'ExclamationTriangleIcon',\n Component: ExclamationTriangleIcon,\n },\n { label: 'Check', value: 'CheckCircledIcon', Component: CheckCircledIcon },\n {\n label: 'Question',\n value: 'QuestionMarkCircledIcon',\n Component: QuestionMarkCircledIcon,\n },\n];\n\nconst iconByName: Record<string, SvgIconComponent> = {};\nfor (const opt of AI_CALLOUT_ICON_OPTIONS) {\n iconByName[opt.value] = opt.Component;\n}\n\nexport function getCalloutIconComponent(iconName: string): SvgIconComponent {\n return iconByName[iconName] ?? DEFAULT_ICON;\n}\n\n","import type {\n DynamicFormFieldSchema,\n FieldOption,\n ImageFieldOption,\n} from '@/types/dynamic-form-schema-generated';\n\nfunction isEmptyDisplayValue(value: unknown): boolean {\n return value === undefined || value === null || value === '';\n}\n\nfunction findOptionLabel(\n options: FieldOption[] | ImageFieldOption[],\n value: unknown\n): string | undefined {\n const valueString = String(value);\n const found: FieldOption | ImageFieldOption | undefined = options.find(\n (option: FieldOption | ImageFieldOption) =>\n String(option.value) === valueString\n );\n return found?.label;\n}\n\nfunction joinLabelsOrValues(\n options: FieldOption[],\n values: unknown[]\n): string {\n const labels: string[] = values.map((v: unknown) => {\n const label: string | undefined = findOptionLabel(options, v);\n return label ?? String(v);\n });\n return labels.join(', ');\n}\n\nexport function getDynamicFormDisplayValue(\n field: DynamicFormFieldSchema,\n value: unknown\n): string {\n if (isEmptyDisplayValue(value)) return '';\n\n switch (field.type) {\n case 'dropdown':\n case 'choice':\n case 'radio_cards': {\n const label: string | undefined = findOptionLabel(field.options, value);\n return label ?? String(value);\n }\n\n case 'image_radio_card': {\n const label: string | undefined = findOptionLabel(field.options, value);\n return label ?? String(value);\n }\n\n case 'choices': {\n if (Array.isArray(value)) {\n return joinLabelsOrValues(field.options, value);\n }\n const label: string | undefined = findOptionLabel(field.options, value);\n return label ?? String(value);\n }\n\n case 'yes_no': {\n if (value === true || value === 'true' || value === 'yes') return '동의';\n if (value === false || value === 'false' || value === 'no') return '비동의';\n return String(value);\n }\n\n case 'short_text':\n case 'long_text':\n case 'number':\n case 'email':\n default:\n return String(value);\n }\n}\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { CSSProperties } from 'react';\n\n/**\n * 등폭(monospace) 텍스트 스타일.\n * - `font-family`: 등폭 폰트(`--code-font-family`는 Radix Themes가 제공, 없으면 시스템 등폭으로 폴백)\n * - `font-variant-numeric: tabular-nums`: 숫자를 고정폭으로 정렬해 점수·퍼센트·통계가 자릿수마다 흔들리지 않게 함\n *\n * `Typo`/`Heading`의 `mono` prop 구현에 사용된다.\n */\nexport const MONO_STYLE: CSSProperties = {\n fontFamily: 'var(--code-font-family, ui-monospace, \"SF Mono\", monospace)',\n fontVariantNumeric: 'tabular-nums',\n};\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/utils/index.ts","../../src/utils/get-cell-align.ts","../../src/utils/get-column-meta.ts","../../src/utils/scroll-to.ts","../../src/utils/get-time-options.ts","../../src/icon.ts","../../src/icons/phone-ring.tsx","../../src/icons/up.tsx","../../src/icons/down.tsx","../../src/icons/mic.tsx","../../src/icons/camera.tsx","../../src/icons/camera-disabled.tsx","../../src/icons/end-call.tsx","../../src/icons/circle-play.tsx","../../src/icons/circle-pencil.tsx","../../src/icons/circle-check.tsx","../../src/icons/circle-satisfaction.tsx","../../src/icons/circle-quote.tsx","../../src/icons/circle-chat.tsx","../../src/icons/circle-file.tsx","../../src/icons/headset.tsx","../../src/utils/get-callout-icon-component.ts","../../src/utils/get-dynamic-form-display-value.ts","../../src/utils/resolve-color.ts","../../src/utils/mono-style.ts","../../src/utils/clamp-style.ts"],"sourcesContent":["export * from './get-cell-align';\nexport * from './get-column-meta';\nexport * from './scroll-to';\nexport * from './get-time-options';\nexport * from './get-callout-icon-component';\nexport * from './get-dynamic-form-display-value';\nexport * from './resolve-color';\nexport * from './mono-style';\nexport * from './clamp-style';","export type CellAlign = 'left' | 'center' | 'right';\n\nexport type CellDataType =\n | 'number'\n | 'date'\n | 'time'\n | 'string'\n | 'button'\n | CellAlign;\n\nexport const getCellAlign = (type: CellDataType): CellAlign => {\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n return 'right';\n case 'string':\n case 'button':\n return 'left';\n default:\n return type;\n }\n};\n","import type { RowData } from '@tanstack/react-table';\nimport type { CellDataType } from './get-cell-align';\nimport { getCellAlign } from './get-cell-align';\n\ntype ExpandButtonComp = <Data extends RowData>(props: {\n open: boolean;\n setIsOpen: (value: boolean) => void;\n data: Data;\n}) => React.ReactNode;\n\nexport interface ColumnMeta {\n OpenBtn?: ExpandButtonComp;\n /** 셀의 가로 너비 지정을 number가 아닌 auto로 사용하고 싶을 경우.\n * 테이블 당 하나의 셀에만 사용하기를 권장\n */\n autoSize?: boolean;\n /** 좌/우/중앙 정렬 설정의 기준, dataType을 우선해 사용 */\n align?: CellDataType;\n}\n\nexport const getColumnMeta = (meta: ColumnMeta): ColumnMeta => {\n return {\n ...meta,\n align: getCellAlign(meta.align || 'left'),\n };\n};\n","export function scrollTo(\n element: HTMLDivElement,\n targetPosition: number,\n duration: number\n): void {\n const startPosition = element.scrollTop;\n const distance = targetPosition - startPosition;\n let startTime: number | null = null;\n\n function animation(currentTime: number): void {\n if (startTime === null) startTime = currentTime;\n const timeElapsed = currentTime - startTime;\n const run = ease(timeElapsed, startPosition, distance, duration);\n element.scrollTop = run;\n if (timeElapsed < duration) {\n requestAnimationFrame(animation);\n }\n }\n\n function ease(t: number, b: number, c: number, d: number): number {\n let [t2] = [t];\n const [b2, c2, d2] = [b, c, d];\n t2 /= d2 / 2;\n if (t2 < 1) return (c2 / 2) * t2 * t2 + b2;\n t2--;\n return (-c2 / 2) * (t2 * (t2 - 2) - 1) + b2;\n }\n\n requestAnimationFrame(animation);\n}\n","export const getTimeOptions = (): string[] => {\n // 10분 간격으로 시간을 생성\n const timeOptions = [];\n for (let i = 0; i < 24; i++) {\n for (let j = 0; j < 60; j += 10) {\n timeOptions.push(`${i < 10 ? `0${i}` : i}:${j < 10 ? `0${j}` : j}`);\n }\n }\n return timeOptions;\n};\n\nexport const parseTimeOption = (\n time?: string\n): { hour: number; minute: number } => {\n if (!time) return { hour: 0, minute: 0 };\n const [hour, minute] = time.split(':').map((t) => parseInt(t, 10));\n return { hour, minute };\n};\n\nexport const getTimeOption = (time: Date): string => {\n const hour = time.getHours();\n const minute = time.getMinutes();\n return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;\n};\n","export {\n AccessibilityIcon,\n ActivityLogIcon,\n AlignBaselineIcon,\n AlignBottomIcon,\n AlignCenterHorizontallyIcon,\n AlignCenterVerticallyIcon,\n AlignLeftIcon,\n AlignRightIcon,\n AlignTopIcon,\n AllSidesIcon,\n AngleIcon,\n ArchiveIcon,\n ArrowBottomLeftIcon,\n ArrowBottomRightIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowTopLeftIcon,\n ArrowTopRightIcon,\n ArrowUpIcon,\n AspectRatioIcon,\n AvatarIcon,\n BackpackIcon,\n BadgeIcon,\n BarChartIcon,\n BellIcon,\n BlendingModeIcon,\n BookmarkFilledIcon,\n BookmarkIcon,\n BorderAllIcon,\n BorderBottomIcon,\n BorderDashedIcon,\n BorderDottedIcon,\n BorderLeftIcon,\n BorderNoneIcon,\n BorderRightIcon,\n BorderSolidIcon,\n BorderSplitIcon,\n BorderStyleIcon,\n BorderTopIcon,\n BorderWidthIcon,\n BoxIcon,\n BoxModelIcon,\n ButtonIcon,\n CalendarIcon,\n CardStackIcon,\n CardStackMinusIcon,\n CardStackPlusIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CaretSortIcon,\n CaretUpIcon,\n ChatBubbleIcon,\n CheckboxIcon,\n CheckCircledIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n CircleBackslashIcon,\n CircleIcon,\n ClipboardCopyIcon,\n ClipboardIcon,\n ClockIcon,\n CodeIcon,\n CodeSandboxLogoIcon,\n ColorWheelIcon,\n ColumnsIcon,\n ColumnSpacingIcon,\n CommitIcon,\n Component1Icon,\n Component2Icon,\n ComponentBooleanIcon,\n ComponentInstanceIcon,\n ComponentNoneIcon,\n ComponentPlaceholderIcon,\n ContainerIcon,\n CookieIcon,\n CopyIcon,\n CornerBottomLeftIcon,\n CornerBottomRightIcon,\n CornersIcon,\n CornerTopLeftIcon,\n CornerTopRightIcon,\n CountdownTimerIcon,\n CounterClockwiseClockIcon,\n CropIcon,\n Cross1Icon,\n Cross2Icon,\n CrossCircledIcon,\n Crosshair1Icon,\n Crosshair2Icon,\n CrumpledPaperIcon,\n CubeIcon,\n CursorArrowIcon,\n CursorTextIcon,\n DashboardIcon,\n DashIcon,\n DesktopIcon,\n DimensionsIcon,\n DiscIcon,\n DiscordLogoIcon,\n DividerHorizontalIcon,\n DividerVerticalIcon,\n DotFilledIcon,\n DotIcon,\n DotsHorizontalIcon,\n DotsVerticalIcon,\n DoubleArrowDownIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n DoubleArrowUpIcon,\n DownloadIcon,\n DragHandleDots1Icon,\n DragHandleDots2Icon,\n DragHandleHorizontalIcon,\n DragHandleVerticalIcon,\n DrawingPinFilledIcon,\n DrawingPinIcon,\n DropdownMenuIcon,\n EnterFullScreenIcon,\n EnterIcon,\n EnvelopeClosedIcon,\n EnvelopeOpenIcon,\n EraserIcon,\n ExclamationTriangleIcon,\n ExitFullScreenIcon,\n ExitIcon,\n ExternalLinkIcon,\n EyeClosedIcon,\n EyeNoneIcon,\n EyeOpenIcon,\n FaceIcon,\n FigmaLogoIcon,\n FileIcon,\n FileMinusIcon,\n FilePlusIcon,\n FileTextIcon,\n FontBoldIcon,\n FontFamilyIcon,\n FontItalicIcon,\n FontRomanIcon,\n FontSizeIcon,\n FontStyleIcon,\n FrameIcon,\n FramerLogoIcon,\n GearIcon,\n GitHubLogoIcon,\n GlobeIcon,\n GridIcon,\n GroupIcon,\n Half1Icon,\n Half2Icon,\n HamburgerMenuIcon,\n HandIcon,\n HeadingIcon,\n HeartFilledIcon,\n HeartIcon,\n HeightIcon,\n HobbyKnifeIcon,\n HomeIcon,\n IconJarLogoIcon,\n IdCardIcon,\n ImageIcon,\n InfoCircledIcon,\n InputIcon,\n InstagramLogoIcon,\n KeyboardIcon,\n LapTimerIcon,\n LaptopIcon,\n LayersIcon,\n LayoutIcon,\n LetterCaseCapitalizeIcon,\n LetterCaseLowercaseIcon,\n LetterCaseToggleIcon,\n LetterCaseUppercaseIcon,\n LetterSpacingIcon,\n LightningBoltIcon,\n LineHeightIcon,\n Link1Icon,\n Link2Icon,\n LinkBreak1Icon,\n LinkBreak2Icon,\n LinkedInLogoIcon,\n LinkNone1Icon,\n LinkNone2Icon,\n ListBulletIcon,\n LockClosedIcon,\n LockOpen1Icon,\n LockOpen2Icon,\n LoopIcon,\n MagicWandIcon,\n MagnifyingGlassIcon,\n MarginIcon,\n MaskOffIcon,\n MaskOnIcon,\n MinusCircledIcon,\n MinusIcon,\n MixerHorizontalIcon,\n MixerVerticalIcon,\n MixIcon,\n MobileIcon,\n ModulzLogoIcon,\n MoonIcon,\n MoveIcon,\n NotionLogoIcon,\n OpacityIcon,\n OpenInNewWindowIcon,\n OverlineIcon,\n PaddingIcon,\n PaperPlaneIcon,\n PauseIcon,\n Pencil1Icon,\n Pencil2Icon,\n PersonIcon,\n PieChartIcon,\n PilcrowIcon,\n PinBottomIcon,\n PinLeftIcon,\n PinRightIcon,\n PinTopIcon,\n PlayIcon,\n PlusCircledIcon,\n PlusIcon,\n QuestionMarkCircledIcon,\n QuestionMarkIcon,\n QuoteIcon,\n RadiobuttonIcon,\n ReaderIcon,\n ReloadIcon,\n ResetIcon,\n ResumeIcon,\n RocketIcon,\n RotateCounterClockwiseIcon,\n RowsIcon,\n RowSpacingIcon,\n RulerHorizontalIcon,\n RulerSquareIcon,\n ScissorsIcon,\n SectionIcon,\n SewingPinFilledIcon,\n SewingPinIcon,\n ShadowIcon,\n ShadowInnerIcon,\n ShadowNoneIcon,\n ShadowOuterIcon,\n Share1Icon,\n Share2Icon,\n ShuffleIcon,\n SizeIcon,\n SketchLogoIcon,\n SlashIcon,\n SliderIcon,\n SpaceBetweenHorizontallyIcon,\n SpaceBetweenVerticallyIcon,\n SpaceEvenlyHorizontallyIcon,\n SpaceEvenlyVerticallyIcon,\n SpeakerLoudIcon,\n SpeakerModerateIcon,\n SpeakerOffIcon,\n SpeakerQuietIcon,\n SquareIcon,\n StackIcon,\n StarFilledIcon,\n StarIcon,\n StitchesLogoIcon,\n StopIcon,\n StopwatchIcon,\n StretchHorizontallyIcon,\n StretchVerticallyIcon,\n StrikethroughIcon,\n SunIcon,\n SwitchIcon,\n SymbolIcon,\n TableIcon,\n TargetIcon,\n TextAlignBottomIcon,\n TextAlignCenterIcon,\n TextAlignJustifyIcon,\n TextAlignLeftIcon,\n TextAlignMiddleIcon,\n TextAlignRightIcon,\n TextAlignTopIcon,\n TextIcon,\n TextNoneIcon,\n ThickArrowDownIcon,\n ThickArrowLeftIcon,\n ThickArrowRightIcon,\n ThickArrowUpIcon,\n TimerIcon,\n TokensIcon,\n TrackNextIcon,\n TrackPreviousIcon,\n TransformIcon,\n TransparencyGridIcon,\n TrashIcon,\n TriangleDownIcon,\n TriangleLeftIcon,\n TriangleRightIcon,\n TriangleUpIcon,\n TwitterLogoIcon,\n UnderlineIcon,\n UpdateIcon,\n UploadIcon,\n ValueIcon,\n ValueNoneIcon,\n VercelLogoIcon,\n VideoIcon,\n ViewGridIcon,\n ViewHorizontalIcon,\n ViewNoneIcon,\n ViewVerticalIcon,\n WidthIcon,\n ZoomInIcon,\n ZoomOutIcon\n} from '@radix-ui/react-icons';\n\n// 로컬 아이콘 (CameraIcon은 로컬 정의가 우선하도록 radix export에서 제외)\nexport * from './icons';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const PhoneRingIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n 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\"\n fill={color}\n />\n <path\n 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\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.5\"\n />\n </svg>\n );\n }\n);\n\nPhoneRingIcon.displayName = 'ArrowUpIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowUpIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowUpIcon.displayName = 'ArrowUpIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowDownIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowDownIcon.displayName = 'ArrowDownIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const MicIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 12 16\"\n width=\"12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n <path\n 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\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.2\"\n />\n </svg>\n );\n }\n);\n\nMicIcon.displayName = 'MicIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CameraIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nCameraIcon.displayName = 'CameraIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CameraDisabledIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCameraDisabledIcon.displayName = 'VideoDisabledIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const EndCallIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n 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\"\n fill={color}\n />\n <path\n 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\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.5\"\n />\n </svg>\n );\n }\n);\n\nEndCallIcon.displayName = 'EndCallIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CirclePlayIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = '#currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill={color} r=\"8\" />\n <path\n 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\"\n fill=\"white\"\n />\n </svg>\n );\n }\n);\n\nCirclePlayIcon.displayName = 'CirclePlayIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CirclePencilIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill={color} r=\"8\" />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill=\"white\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCirclePencilIcon.displayName = 'CirclePencilIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleCheckIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill=\"white\" r=\"7.5\" stroke={color} />\n <rect fill=\"white\" fillOpacity=\"0.01\" height=\"16\" width=\"16\" />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleCheckIcon.displayName = 'CircleCheckIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleSatisfactionIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill=\"white\" r=\"7.5\" stroke={color} />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n 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\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nCircleSatisfactionIcon.displayName = 'CircleSatisfactionIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleQuoteIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <circle cx=\"8\" cy=\"8\" fill=\"white\" r=\"7.5\" stroke={color} />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleQuoteIcon.displayName = 'CircleQuoteIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleChatIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n ref={forwardedRef}\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect fill={color} height=\"16\" rx=\"8\" width=\"16\" />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill=\"white\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleChatIcon.displayName = 'CircleChatIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const CircleFileIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <rect fill={color} height=\"16\" rx=\"8\" width=\"16\" />\n <rect\n fill=\"white\"\n fillOpacity=\"0.01\"\n height=\"12\"\n transform=\"translate(2 2)\"\n width=\"12\"\n />\n <path\n clipRule=\"evenodd\"\n 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\"\n fill=\"white\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nCircleFileIcon.displayName = 'CircleFileIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const HeadsetIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n d=\"M3.25 6C3.25 3.75 5.5 2 8 2C10.5 2 12.75 3.75 12.75 6\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeWidth=\"1.2\"\n />\n <path\n 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\"\n stroke={color}\n strokeLinejoin=\"round\"\n strokeWidth=\"1.2\"\n />\n <path\n 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\"\n stroke={color}\n strokeLinejoin=\"round\"\n strokeWidth=\"1.2\"\n />\n <path\n d=\"M4 12.25V13.25C4 13.94 4.56 14.5 5.25 14.5H8\"\n stroke={color}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.2\"\n />\n </svg>\n );\n }\n);\n\nHeadsetIcon.displayName = 'HeadsetIcon';\n","import {\n CheckCircledIcon,\n ExclamationTriangleIcon,\n InfoCircledIcon,\n QuestionMarkCircledIcon,\n} from '@/icon';\n\ntype SvgIconComponent = typeof InfoCircledIcon;\n\nconst DEFAULT_ICON: SvgIconComponent = InfoCircledIcon;\n\nexport const AI_CALLOUT_ICON_OPTIONS: {\n label: string;\n value: string;\n Component: SvgIconComponent;\n}[] = [\n { label: 'Info', value: 'InfoCircledIcon', Component: InfoCircledIcon },\n {\n label: 'Warning',\n value: 'ExclamationTriangleIcon',\n Component: ExclamationTriangleIcon,\n },\n { label: 'Check', value: 'CheckCircledIcon', Component: CheckCircledIcon },\n {\n label: 'Question',\n value: 'QuestionMarkCircledIcon',\n Component: QuestionMarkCircledIcon,\n },\n];\n\nconst iconByName: Record<string, SvgIconComponent> = {};\nfor (const opt of AI_CALLOUT_ICON_OPTIONS) {\n iconByName[opt.value] = opt.Component;\n}\n\nexport function getCalloutIconComponent(iconName: string): SvgIconComponent {\n return iconByName[iconName] ?? DEFAULT_ICON;\n}\n\n","import type {\n DynamicFormFieldSchema,\n FieldOption,\n ImageFieldOption,\n} from '@/types/dynamic-form-schema-generated';\n\nfunction isEmptyDisplayValue(value: unknown): boolean {\n return value === undefined || value === null || value === '';\n}\n\nfunction findOptionLabel(\n options: FieldOption[] | ImageFieldOption[],\n value: unknown\n): string | undefined {\n const valueString = String(value);\n const found: FieldOption | ImageFieldOption | undefined = options.find(\n (option: FieldOption | ImageFieldOption) =>\n String(option.value) === valueString\n );\n return found?.label;\n}\n\nfunction joinLabelsOrValues(\n options: FieldOption[],\n values: unknown[]\n): string {\n const labels: string[] = values.map((v: unknown) => {\n const label: string | undefined = findOptionLabel(options, v);\n return label ?? String(v);\n });\n return labels.join(', ');\n}\n\nexport function getDynamicFormDisplayValue(\n field: DynamicFormFieldSchema,\n value: unknown\n): string {\n if (isEmptyDisplayValue(value)) return '';\n\n switch (field.type) {\n case 'dropdown':\n case 'choice':\n case 'radio_cards': {\n const label: string | undefined = findOptionLabel(field.options, value);\n return label ?? String(value);\n }\n\n case 'image_radio_card': {\n const label: string | undefined = findOptionLabel(field.options, value);\n return label ?? String(value);\n }\n\n case 'choices': {\n if (Array.isArray(value)) {\n return joinLabelsOrValues(field.options, value);\n }\n const label: string | undefined = findOptionLabel(field.options, value);\n return label ?? String(value);\n }\n\n case 'yes_no': {\n if (value === true || value === 'true' || value === 'yes') return '동의';\n if (value === false || value === 'false' || value === 'no') return '비동의';\n return String(value);\n }\n\n case 'short_text':\n case 'long_text':\n case 'number':\n case 'email':\n default:\n return String(value);\n }\n}\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { CSSProperties } from 'react';\n\n/**\n * 등폭(monospace) 텍스트 스타일.\n * - `font-family`: 등폭 폰트(`--code-font-family`는 Radix Themes가 제공, 없으면 시스템 등폭으로 폴백)\n * - `font-variant-numeric: tabular-nums`: 숫자를 고정폭으로 정렬해 점수·퍼센트·통계가 자릿수마다 흔들리지 않게 함\n *\n * `Typo`/`Heading`의 `mono` prop 구현에 사용된다.\n */\nexport const MONO_STYLE: CSSProperties = {\n fontFamily: 'var(--code-font-family, ui-monospace, \"SF Mono\", monospace)',\n fontVariantNumeric: 'tabular-nums',\n};\n","import type { CSSProperties } from 'react';\n\n/**\n * 여러 줄 말줄임(line-clamp) 스타일. 지정한 줄 수까지만 표시하고 넘치면 `…`로 자른다.\n *\n * Radix의 `truncate`(white-space:nowrap 강제 1줄)와 달리, 줄바꿈을 허용한 뒤\n * `lines` 줄에서 자른다. `Typo`/`Heading`의 `clamp` prop 구현에 사용된다.\n *\n * @param lines - 표시할 최대 줄 수 (1, 2, 3 …)\n */\nexport const clampStyle = (lines: number): CSSProperties => ({\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n lineClamp: lines,\n overflow: 'hidden',\n});\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime"]}
@@ -6,6 +6,7 @@ export { AI_CALLOUT_ICON_OPTIONS, getCalloutIconComponent } from './get-callout-
6
6
  export { getDynamicFormDisplayValue } from './get-dynamic-form-display-value.cjs';
7
7
  export { CustomColor, DistributiveOmit, RadixColor, ResolvedColor, SemanticColor, UiColor, resolveColor } from './resolve-color.cjs';
8
8
  export { MONO_STYLE } from './mono-style.cjs';
9
+ export { clampStyle } from './clamp-style.cjs';
9
10
  import '@tanstack/react-table';
10
11
  import '@radix-ui/react-icons';
11
12
  import '../types/dynamic-form-schema-generated.cjs';
@@ -6,6 +6,7 @@ export { AI_CALLOUT_ICON_OPTIONS, getCalloutIconComponent } from './get-callout-
6
6
  export { getDynamicFormDisplayValue } from './get-dynamic-form-display-value.js';
7
7
  export { CustomColor, DistributiveOmit, RadixColor, ResolvedColor, SemanticColor, UiColor, resolveColor } from './resolve-color.js';
8
8
  export { MONO_STYLE } from './mono-style.js';
9
+ export { clampStyle } from './clamp-style.js';
9
10
  import '@tanstack/react-table';
10
11
  import '@radix-ui/react-icons';
11
12
  import '../types/dynamic-form-schema-generated.js';
@@ -1,15 +1,15 @@
1
- import "../chunk-U7PMCTVQ.js";
2
- import {
3
- getTimeOption,
4
- getTimeOptions,
5
- parseTimeOption
6
- } from "../chunk-NWJSLIQ3.js";
1
+ import "../chunk-WTS75RUC.js";
7
2
  import {
8
3
  scrollTo
9
4
  } from "../chunk-BXX3B3E4.js";
10
5
  import {
11
6
  getColumnMeta
12
7
  } from "../chunk-NRPDVI76.js";
8
+ import {
9
+ getTimeOption,
10
+ getTimeOptions,
11
+ parseTimeOption
12
+ } from "../chunk-NWJSLIQ3.js";
13
13
  import {
14
14
  getCellAlign
15
15
  } from "../chunk-2BPFXK4L.js";
@@ -23,6 +23,9 @@ import {
23
23
  import {
24
24
  MONO_STYLE
25
25
  } from "../chunk-PO2PBAHW.js";
26
+ import {
27
+ clampStyle
28
+ } from "../chunk-36W7VD2Z.js";
26
29
  import "../chunk-VOME2TE7.js";
27
30
  import "../chunk-JVXATVAC.js";
28
31
  import "../chunk-B3VSXNTH.js";
@@ -47,6 +50,7 @@ import "../chunk-CRTRMMJ7.js";
47
50
  export {
48
51
  AI_CALLOUT_ICON_OPTIONS,
49
52
  MONO_STYLE,
53
+ clampStyle,
50
54
  getCalloutIconComponent,
51
55
  getCellAlign,
52
56
  getColumnMeta,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tipp/ui",
3
- "version": "2.8.0",
3
+ "version": "2.10.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -14,6 +14,16 @@
14
14
  "default": "./dist/index.js"
15
15
  }
16
16
  },
17
+ "./roleplay": {
18
+ "require": {
19
+ "types": "./dist/app/roleplay/index.d.ts",
20
+ "default": "./dist/app/roleplay/index.cjs"
21
+ },
22
+ "import": {
23
+ "types": "./dist/app/roleplay/index.d.ts",
24
+ "default": "./dist/app/roleplay/index.js"
25
+ }
26
+ },
17
27
  "./*": "./*"
18
28
  },
19
29
  "main": "dist/index.js",
@@ -39,8 +49,10 @@
39
49
  "tailwind-merge": "^3.3.1"
40
50
  },
41
51
  "devDependencies": {
42
- "@types/echarts": "^4.9.22",
43
52
  "@types/jest": "^29.5.14",
53
+ "echarts": "^6.0.0",
54
+ "echarts-for-react": "^3.0.6",
55
+ "react-resize-detector": "^12.3.0",
44
56
  "@types/lodash-es": "^4.17.12",
45
57
  "autoprefixer": "10.4.19",
46
58
  "eslint": "^8.57.0",
@@ -65,12 +77,26 @@
65
77
  "@types/react": "*",
66
78
  "@types/react-dom": "*",
67
79
  "dompurify": "^3.2.6",
80
+ "echarts": ">=5.0.0",
81
+ "echarts-for-react": "^3.0.0",
68
82
  "formik": "^2.4.6",
69
83
  "react": "^19.0 || ^19.0.0-rc",
70
84
  "react-datepicker": "^8.0",
71
85
  "react-dom": "^19.0 || ^19.0.0-rc",
86
+ "react-resize-detector": ">=11.0.0",
72
87
  "yup": "^1.4.0"
73
88
  },
89
+ "peerDependenciesMeta": {
90
+ "echarts": {
91
+ "optional": true
92
+ },
93
+ "echarts-for-react": {
94
+ "optional": true
95
+ },
96
+ "react-resize-detector": {
97
+ "optional": true
98
+ }
99
+ },
74
100
  "turbo": {
75
101
  "pipeline": {
76
102
  "build": {
@@ -0,0 +1,185 @@
1
+ 'use client';
2
+
3
+ // echarts 기반 Chart 래퍼 + 토큰 색 해석 훅.
4
+ // echarts 본체/echarts-for-react/react-resize-detector 는 @tipp/ui 의 optional peerDependency.
5
+ // 이 모듈은 subpath(@tipp/ui/roleplay)로만 노출되어 메인 번들에서 격리된다.
6
+ // SSR 안전: echarts/ResizeObserver 는 클라이언트 전용이라 마운트 이후에만 렌더한다.
7
+
8
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
9
+ import { useResizeDetector } from 'react-resize-detector';
10
+ import type { EChartsOption } from 'echarts';
11
+ import * as echarts from 'echarts/core';
12
+ import * as ReactEChartsCoreNs from 'echarts-for-react/lib/core';
13
+ import { LineChart, RadarChart } from 'echarts/charts';
14
+ import { SVGRenderer } from 'echarts/renderers';
15
+ import {
16
+ AxisPointerComponent,
17
+ AriaComponent,
18
+ TooltipComponent,
19
+ GridComponent,
20
+ LegendComponent,
21
+ PolarComponent,
22
+ RadarComponent,
23
+ } from 'echarts/components';
24
+ import { EchartDefaultProps } from '../../../charts';
25
+
26
+ // CJS/ESM interop 정규화.
27
+ // echarts-for-react/lib/core 는 CJS(exports.default = 클래스)이고 @tipp/ui 는 strict ESM("type":"module")
28
+ // 이라, 번들러/런타임에 따라 실제 컴포넌트가 default 로 0~2 겹 감싸진다. 특히 webpack 이 __esModule 를
29
+ // 무시하면 module.exports 를 한 번 더 감싸 ReactEChartsCoreNs.default.default 에 클래스가 들어가고,
30
+ // 그대로 렌더하면 React 가 "Element type is invalid (got: object)" 로 던진다.
31
+ // 함수(클래스/함수형 컴포넌트)가 나올 때까지 default 를 풀어 정규화한다.
32
+ type EChartsComponentType = typeof ReactEChartsCoreNs.default;
33
+
34
+ function unwrapDefault(mod: unknown): unknown {
35
+ let current = mod;
36
+ while (current !== null && typeof current === 'object' && 'default' in current) {
37
+ current = current.default;
38
+ }
39
+ return current;
40
+ }
41
+
42
+ function isComponentType(value: unknown): value is EChartsComponentType {
43
+ return typeof value === 'function';
44
+ }
45
+
46
+ const unwrappedChart = unwrapDefault(ReactEChartsCoreNs);
47
+ const ReactEChartsCore: EChartsComponentType = isComponentType(unwrappedChart)
48
+ ? unwrappedChart
49
+ : ReactEChartsCoreNs.default;
50
+
51
+ echarts.use([
52
+ SVGRenderer,
53
+ LineChart,
54
+ RadarChart,
55
+ TooltipComponent,
56
+ GridComponent,
57
+ LegendComponent,
58
+ AriaComponent,
59
+ AxisPointerComponent,
60
+ PolarComponent,
61
+ RadarComponent,
62
+ ]);
63
+
64
+ // base/option 깊은 병합 (배열은 option 우선)
65
+ function deepMerge<T>(base: T, override: unknown): T {
66
+ if (!override) return base;
67
+ if (
68
+ typeof base !== 'object' ||
69
+ !base ||
70
+ Array.isArray(base) ||
71
+ typeof override !== 'object' ||
72
+ Array.isArray(override)
73
+ ) {
74
+ return override as T;
75
+ }
76
+ const out: Record<string, unknown> = { ...(base as Record<string, unknown>) };
77
+ for (const [k, v] of Object.entries(override as Record<string, unknown>)) {
78
+ out[k] = k in out ? deepMerge(out[k], v) : v;
79
+ }
80
+ return out as T;
81
+ }
82
+
83
+ export type ChartProps = Omit<
84
+ React.ComponentProps<typeof ReactEChartsCore>,
85
+ 'option' | 'echarts'
86
+ > & {
87
+ option: EChartsOption;
88
+ };
89
+
90
+ export function Chart({
91
+ option: optionProp,
92
+ ...rest
93
+ }: ChartProps): React.ReactElement {
94
+ const { width, height, ref } = useResizeDetector({
95
+ handleHeight: true,
96
+ refreshMode: 'debounce',
97
+ refreshRate: 100,
98
+ });
99
+ const [mounted, setMounted] = useState(false);
100
+ useEffect(() => {
101
+ setMounted(true);
102
+ }, []);
103
+
104
+ const option = useMemo(() => {
105
+ const baseOption: EChartsOption = {
106
+ textStyle: { fontFamily: "var(--default-font-family, 'Noto Sans KR')" },
107
+ tooltip: { textStyle: { fontSize: 13 } }, // ds-allow: chart-lib
108
+ animation: false,
109
+ };
110
+ return deepMerge(baseOption, optionProp);
111
+ }, [optionProp]);
112
+
113
+ return (
114
+ <div ref={ref} style={{ width: '100%', height: '100%' }}>
115
+ {mounted ? (
116
+ <ReactEChartsCore
117
+ {...EchartDefaultProps}
118
+ echarts={echarts}
119
+ opts={{ renderer: 'svg' }}
120
+ style={{ height, width }}
121
+ {...rest}
122
+ option={option}
123
+ />
124
+ ) : null}
125
+ </div>
126
+ );
127
+ }
128
+
129
+ // 임의의 CSS 색 문자열을 echarts(zrender)가 파싱 가능한 rgb(a)로 정규화한다.
130
+ function normalizeColor(value: string, fallback: string): string {
131
+ const v = value.trim();
132
+ if (!v) return fallback;
133
+ if (/^#|^rgb|^hsl/i.test(v)) return v;
134
+ try {
135
+ const canvas = document.createElement('canvas');
136
+ const ctx = canvas.getContext('2d');
137
+ if (!ctx) return fallback;
138
+ ctx.fillStyle = '#000';
139
+ ctx.fillStyle = v;
140
+ const out = ctx.fillStyle;
141
+ return /color\(|^$/i.test(out) ? fallback : out;
142
+ } catch {
143
+ return fallback;
144
+ }
145
+ }
146
+
147
+ // @tipp/ui 토큰(CSS 변수)을 echarts 가 먹을 수 있는 실제 색 문자열로 해석하는 훅.
148
+ export function useTokenColors<K extends string>(
149
+ vars: Record<K, [cssVar: string, fallback: string]>
150
+ ): {
151
+ colors: Record<K, string>;
152
+ probe: React.ReactNode;
153
+ } {
154
+ const probeRef = useRef<HTMLSpanElement | null>(null);
155
+ const fallbacks = useMemo(() => {
156
+ const f = {} as Record<K, string>;
157
+ for (const k of Object.keys(vars) as K[]) f[k] = vars[k][1];
158
+ return f;
159
+ }, [vars]);
160
+ const [resolved, setResolved] = useState<Record<K, string>>(fallbacks);
161
+ const key = JSON.stringify(vars);
162
+ // vars 객체는 매 렌더 새 참조라 deps에 직접 넣을 수 없어 ref로 최신값을 참조하고,
163
+ // 실제 변경 추적은 직렬화한 key 로 한다.
164
+ const varsRef = useRef(vars);
165
+ varsRef.current = vars;
166
+ useEffect(() => {
167
+ const el = probeRef.current;
168
+ if (!el) return;
169
+ const cs = getComputedStyle(el);
170
+ const next = {} as Record<K, string>;
171
+ for (const k of Object.keys(varsRef.current) as K[]) {
172
+ const [cssVar, fallback] = varsRef.current[k];
173
+ next[k] = normalizeColor(cs.getPropertyValue(cssVar), fallback);
174
+ }
175
+ setResolved(next);
176
+ }, [key]);
177
+ const probe = (
178
+ <span
179
+ aria-hidden
180
+ ref={probeRef}
181
+ style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}
182
+ />
183
+ );
184
+ return { colors: resolved, probe };
185
+ }
@@ -0,0 +1,8 @@
1
+ // 롤플레잉 "세션 상세" 공개 진입점 (@tipp/ui/roleplay).
2
+ //
3
+ // 주의: 이 배럴은 메인 배럴(src/index.ts → src/app/index.ts)에 re-export 하지 않는다.
4
+ // echarts 의존을 메인 번들에서 격리하기 위해 subpath(@tipp/ui/roleplay)로만 노출한다.
5
+
6
+ export * from './types';
7
+ export * from './utils/report-parse';
8
+ export * from './rp-session-detail';