@tipp/ui 2.3.21 → 2.3.23

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 (674) hide show
  1. package/dist/app/index.cjs +217 -195
  2. package/dist/app/index.cjs.map +1 -1
  3. package/dist/app/index.js +108 -102
  4. package/dist/app/platform/coach-question-list.cjs.map +1 -1
  5. package/dist/app/platform/coach-question-list.js +32 -32
  6. package/dist/app/platform/contents-card.cjs.map +1 -1
  7. package/dist/app/platform/contents-card.js +32 -32
  8. package/dist/app/platform/curriculum-card.cjs.map +1 -1
  9. package/dist/app/platform/curriculum-card.js +6 -6
  10. package/dist/app/platform/edit-coaching-time.cjs +47 -25
  11. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  12. package/dist/app/platform/edit-coaching-time.js +83 -77
  13. package/dist/app/platform/edit-service-type.cjs +42 -20
  14. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  15. package/dist/app/platform/edit-service-type.js +84 -78
  16. package/dist/app/platform/goal-manage-card-edit.cjs +50 -28
  17. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  18. package/dist/app/platform/goal-manage-card-edit.js +83 -77
  19. package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
  20. package/dist/app/platform/goal-manage-card-read.js +32 -32
  21. package/dist/app/platform/on-offline-radio-card.cjs +77 -55
  22. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  23. package/dist/app/platform/on-offline-radio-card.js +83 -77
  24. package/dist/app/platform/report-card.cjs.map +1 -1
  25. package/dist/app/platform/report-card.js +32 -32
  26. package/dist/app/platform/reservation-card.cjs +66 -44
  27. package/dist/app/platform/reservation-card.cjs.map +1 -1
  28. package/dist/app/platform/reservation-card.js +84 -78
  29. package/dist/app/platform/session-card.cjs +92 -70
  30. package/dist/app/platform/session-card.cjs.map +1 -1
  31. package/dist/app/platform/session-card.js +86 -80
  32. package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
  33. package/dist/app/platform/session-review-simple-read.js +32 -32
  34. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
  35. package/dist/app/platform/userInfos/coaching-customer-info/index.js +37 -37
  36. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
  37. package/dist/app/platform/userInfos/coaching-customer-info/large.js +32 -32
  38. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
  39. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +32 -32
  40. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
  41. package/dist/app/platform/userInfos/coaching-customer-info/small.js +32 -32
  42. package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
  43. package/dist/app/platform/userInfos/session-user-info-detail.js +32 -32
  44. package/dist/app/platform/userInfos/utils.cjs.map +1 -1
  45. package/dist/app/platform/userInfos/utils.js +31 -31
  46. package/dist/atoms/bullet-text.js +2 -2
  47. package/dist/atoms/dialog.js +2 -2
  48. package/dist/atoms/field-error-wrapper.js +2 -2
  49. package/dist/atoms/index.cjs.map +1 -1
  50. package/dist/atoms/index.js +63 -63
  51. package/dist/atoms/list.js +2 -2
  52. package/dist/atoms/pagination.cjs.map +1 -1
  53. package/dist/atoms/pagination.js +4 -4
  54. package/dist/chunk-2KOE33U7.js +245 -0
  55. package/dist/chunk-2KOE33U7.js.map +1 -0
  56. package/dist/chunk-2U5YD3BH.js +49 -0
  57. package/dist/chunk-2U5YD3BH.js.map +1 -0
  58. package/dist/chunk-2X3I7KDG.js +144 -0
  59. package/dist/chunk-2X3I7KDG.js.map +1 -0
  60. package/dist/chunk-2YSYS4AG.js +233 -0
  61. package/dist/chunk-2YSYS4AG.js.map +1 -0
  62. package/dist/chunk-35HQHUDU.js +228 -0
  63. package/dist/chunk-35HQHUDU.js.map +1 -0
  64. package/dist/chunk-3I55S6EP.js +89 -0
  65. package/dist/chunk-3I55S6EP.js.map +1 -0
  66. package/dist/chunk-3JDLAN5T.js +99 -0
  67. package/dist/chunk-3JDLAN5T.js.map +1 -0
  68. package/dist/chunk-3O2ARPTO.js +161 -0
  69. package/dist/chunk-3O2ARPTO.js.map +1 -0
  70. package/dist/chunk-3OO6ENQ4.js +228 -0
  71. package/dist/chunk-3OO6ENQ4.js.map +1 -0
  72. package/dist/chunk-45F3UCHR.js +222 -0
  73. package/dist/chunk-45F3UCHR.js.map +1 -0
  74. package/dist/chunk-45VET5EX.js +63 -0
  75. package/dist/chunk-45VET5EX.js.map +1 -0
  76. package/dist/chunk-4LUFF5LX.js +98 -0
  77. package/dist/chunk-4LUFF5LX.js.map +1 -0
  78. package/dist/chunk-4MA4T2XQ.js +222 -0
  79. package/dist/chunk-4MA4T2XQ.js.map +1 -0
  80. package/dist/chunk-4VV7VH5L.js +79 -0
  81. package/dist/chunk-4VV7VH5L.js.map +1 -0
  82. package/dist/chunk-5JCJ4QJO.js +245 -0
  83. package/dist/chunk-5JCJ4QJO.js.map +1 -0
  84. package/dist/chunk-5KZJMQCG.js +89 -0
  85. package/dist/chunk-5KZJMQCG.js.map +1 -0
  86. package/dist/chunk-5RAR3DG7.js +117 -0
  87. package/dist/chunk-5RAR3DG7.js.map +1 -0
  88. package/dist/chunk-5XOR7OPD.js +196 -0
  89. package/dist/chunk-5XOR7OPD.js.map +1 -0
  90. package/dist/chunk-5YESTYFF.js +79 -0
  91. package/dist/chunk-5YESTYFF.js.map +1 -0
  92. package/dist/chunk-62AHHT47.js +89 -0
  93. package/dist/chunk-62AHHT47.js.map +1 -0
  94. package/dist/chunk-64A2KJHN.js +276 -0
  95. package/dist/chunk-64A2KJHN.js.map +1 -0
  96. package/dist/chunk-6CSUU4L7.js +230 -0
  97. package/dist/chunk-6CSUU4L7.js.map +1 -0
  98. package/dist/chunk-6FKXUCHD.js +99 -0
  99. package/dist/chunk-6FKXUCHD.js.map +1 -0
  100. package/dist/chunk-6Q73GRZT.js +145 -0
  101. package/dist/chunk-6Q73GRZT.js.map +1 -0
  102. package/dist/chunk-6TQGX5ZU.js +98 -0
  103. package/dist/chunk-6TQGX5ZU.js.map +1 -0
  104. package/dist/chunk-6WGBQSQT.js +228 -0
  105. package/dist/chunk-6WGBQSQT.js.map +1 -0
  106. package/dist/chunk-6YZBHOXQ.js +226 -0
  107. package/dist/chunk-6YZBHOXQ.js.map +1 -0
  108. package/dist/chunk-7344ZPUM.js +117 -0
  109. package/dist/chunk-7344ZPUM.js.map +1 -0
  110. package/dist/chunk-7ABAJEJA.js +63 -0
  111. package/dist/chunk-7ABAJEJA.js.map +1 -0
  112. package/dist/chunk-7B5XAENQ.js +363 -0
  113. package/dist/chunk-7B5XAENQ.js.map +1 -0
  114. package/dist/chunk-7CQX7ELH.js +69 -0
  115. package/dist/chunk-7CQX7ELH.js.map +1 -0
  116. package/dist/chunk-7CRTGYJE.js +80 -0
  117. package/dist/chunk-7CRTGYJE.js.map +1 -0
  118. package/dist/chunk-7ITDAUWI.js +287 -0
  119. package/dist/chunk-7ITDAUWI.js.map +1 -0
  120. package/dist/chunk-7PQGETJT.js +69 -0
  121. package/dist/chunk-7PQGETJT.js.map +1 -0
  122. package/dist/chunk-7R65MUL6.js +106 -0
  123. package/dist/chunk-7R65MUL6.js.map +1 -0
  124. package/dist/chunk-7U5EZJOD.js +89 -0
  125. package/dist/chunk-7U5EZJOD.js.map +1 -0
  126. package/dist/chunk-7ZBZBOPI.js +63 -0
  127. package/dist/chunk-7ZBZBOPI.js.map +1 -0
  128. package/dist/chunk-A2FXUYSB.js +230 -0
  129. package/dist/chunk-A2FXUYSB.js.map +1 -0
  130. package/dist/chunk-A7CT5M2S.js +75 -0
  131. package/dist/chunk-A7CT5M2S.js.map +1 -0
  132. package/dist/chunk-A7JBBBBB.js +100 -0
  133. package/dist/chunk-A7JBBBBB.js.map +1 -0
  134. package/dist/chunk-AA6OYHCE.js +39 -0
  135. package/dist/chunk-AA6OYHCE.js.map +1 -0
  136. package/dist/chunk-ALETVN5F.js +245 -0
  137. package/dist/chunk-ALETVN5F.js.map +1 -0
  138. package/dist/chunk-ARJOCJVD.js +174 -0
  139. package/dist/chunk-ARJOCJVD.js.map +1 -0
  140. package/dist/chunk-ARVLB4CH.js +29 -0
  141. package/dist/chunk-ARVLB4CH.js.map +1 -0
  142. package/dist/chunk-B327EINU.js +43 -0
  143. package/dist/chunk-B327EINU.js.map +1 -0
  144. package/dist/chunk-B4NH4LIJ.js +99 -0
  145. package/dist/chunk-B4NH4LIJ.js.map +1 -0
  146. package/dist/chunk-B4TDMB52.js +226 -0
  147. package/dist/chunk-B4TDMB52.js.map +1 -0
  148. package/dist/chunk-BJZSGZ7H.js +63 -0
  149. package/dist/chunk-BJZSGZ7H.js.map +1 -0
  150. package/dist/chunk-BPMY3CDH.js +106 -0
  151. package/dist/chunk-BPMY3CDH.js.map +1 -0
  152. package/dist/chunk-C2ANXVMQ.js +221 -0
  153. package/dist/chunk-C2ANXVMQ.js.map +1 -0
  154. package/dist/chunk-C6BHVWJI.js +165 -0
  155. package/dist/chunk-C6BHVWJI.js.map +1 -0
  156. package/dist/chunk-CCLZRSGW.js +87 -0
  157. package/dist/chunk-CCLZRSGW.js.map +1 -0
  158. package/dist/chunk-CF3NAPUZ.js +196 -0
  159. package/dist/chunk-CF3NAPUZ.js.map +1 -0
  160. package/dist/chunk-CWRJOY56.js +245 -0
  161. package/dist/chunk-CWRJOY56.js.map +1 -0
  162. package/dist/chunk-D3H7YFTO.js +69 -0
  163. package/dist/chunk-D3H7YFTO.js.map +1 -0
  164. package/dist/chunk-DDAZ4IAG.js +689 -0
  165. package/dist/chunk-DDAZ4IAG.js.map +1 -0
  166. package/dist/chunk-DDVJMAYN.js +230 -0
  167. package/dist/chunk-DDVJMAYN.js.map +1 -0
  168. package/dist/chunk-DJ24574O.js +28 -0
  169. package/dist/chunk-DJ24574O.js.map +1 -0
  170. package/dist/chunk-DJCBLRLH.js +69 -0
  171. package/dist/chunk-DJCBLRLH.js.map +1 -0
  172. package/dist/chunk-DTHR4ABO.js +69 -0
  173. package/dist/chunk-DTHR4ABO.js.map +1 -0
  174. package/dist/chunk-DTK646M6.js +87 -0
  175. package/dist/chunk-DTK646M6.js.map +1 -0
  176. package/dist/chunk-DVZKRKWH.js +174 -0
  177. package/dist/chunk-DVZKRKWH.js.map +1 -0
  178. package/dist/chunk-E232GTT6.js +69 -0
  179. package/dist/chunk-E232GTT6.js.map +1 -0
  180. package/dist/chunk-EGTOU5MK.js +689 -0
  181. package/dist/chunk-EGTOU5MK.js.map +1 -0
  182. package/dist/chunk-EJAC46WB.js +39 -0
  183. package/dist/chunk-EJAC46WB.js.map +1 -0
  184. package/dist/chunk-ENFFYCHI.js +63 -0
  185. package/dist/chunk-ENFFYCHI.js.map +1 -0
  186. package/dist/chunk-EUUNWKHL.js +69 -0
  187. package/dist/chunk-EUUNWKHL.js.map +1 -0
  188. package/dist/chunk-F2I4LA63.js +51 -0
  189. package/dist/chunk-F2I4LA63.js.map +1 -0
  190. package/dist/chunk-F65P7KZI.js +98 -0
  191. package/dist/chunk-F65P7KZI.js.map +1 -0
  192. package/dist/chunk-F76YKHGP.js +245 -0
  193. package/dist/chunk-F76YKHGP.js.map +1 -0
  194. package/dist/chunk-FC4J5OA4.js +144 -0
  195. package/dist/chunk-FC4J5OA4.js.map +1 -0
  196. package/dist/chunk-FGX6IR4Q.js +68 -0
  197. package/dist/chunk-FGX6IR4Q.js.map +1 -0
  198. package/dist/chunk-FN2CUDUP.js +43 -0
  199. package/dist/chunk-FN2CUDUP.js.map +1 -0
  200. package/dist/chunk-FQUAFIUO.js +228 -0
  201. package/dist/chunk-FQUAFIUO.js.map +1 -0
  202. package/dist/chunk-FYHAKQGB.js +220 -0
  203. package/dist/chunk-FYHAKQGB.js.map +1 -0
  204. package/dist/chunk-G6UKOZPL.js +217 -0
  205. package/dist/chunk-G6UKOZPL.js.map +1 -0
  206. package/dist/chunk-GAFIOPGJ.js +54 -0
  207. package/dist/chunk-GAFIOPGJ.js.map +1 -0
  208. package/dist/chunk-GEMXFVWI.js +37 -0
  209. package/dist/chunk-GEMXFVWI.js.map +1 -0
  210. package/dist/chunk-GFBOT2PV.js +101 -0
  211. package/dist/chunk-GFBOT2PV.js.map +1 -0
  212. package/dist/chunk-GFURX6GB.js +76 -0
  213. package/dist/chunk-GFURX6GB.js.map +1 -0
  214. package/dist/chunk-GMHVMQTV.js +245 -0
  215. package/dist/chunk-GMHVMQTV.js.map +1 -0
  216. package/dist/chunk-GQFO7RV5.js +145 -0
  217. package/dist/chunk-GQFO7RV5.js.map +1 -0
  218. package/dist/chunk-GTO7GG2K.js +245 -0
  219. package/dist/chunk-GTO7GG2K.js.map +1 -0
  220. package/dist/chunk-GWNS3C3A.js +144 -0
  221. package/dist/chunk-GWNS3C3A.js.map +1 -0
  222. package/dist/chunk-HNS76MH2.js +69 -0
  223. package/dist/chunk-HNS76MH2.js.map +1 -0
  224. package/dist/chunk-HO462CJM.js +29 -0
  225. package/dist/chunk-HO462CJM.js.map +1 -0
  226. package/dist/chunk-HPW5EHJX.js +233 -0
  227. package/dist/chunk-HPW5EHJX.js.map +1 -0
  228. package/dist/chunk-HQ23GSZM.js +145 -0
  229. package/dist/chunk-HQ23GSZM.js.map +1 -0
  230. package/dist/chunk-HQAX6GAD.js +89 -0
  231. package/dist/chunk-HQAX6GAD.js.map +1 -0
  232. package/dist/chunk-HTNDVNLQ.js +287 -0
  233. package/dist/chunk-HTNDVNLQ.js.map +1 -0
  234. package/dist/chunk-HXOMTUED.js +222 -0
  235. package/dist/chunk-HXOMTUED.js.map +1 -0
  236. package/dist/chunk-INE4EFFO.js +70 -0
  237. package/dist/chunk-INE4EFFO.js.map +1 -0
  238. package/dist/chunk-IQUJPIZD.js +689 -0
  239. package/dist/chunk-IQUJPIZD.js.map +1 -0
  240. package/dist/chunk-ITKUKDDV.js +196 -0
  241. package/dist/chunk-ITKUKDDV.js.map +1 -0
  242. package/dist/chunk-J333WVWG.js +145 -0
  243. package/dist/chunk-J333WVWG.js.map +1 -0
  244. package/dist/chunk-JADEGHJI.js +101 -0
  245. package/dist/chunk-JADEGHJI.js.map +1 -0
  246. package/dist/chunk-JAS77BXB.js +245 -0
  247. package/dist/chunk-JAS77BXB.js.map +1 -0
  248. package/dist/chunk-JDBHOE34.js +51 -0
  249. package/dist/chunk-JDBHOE34.js.map +1 -0
  250. package/dist/chunk-JG4JIBBV.js +245 -0
  251. package/dist/chunk-JG4JIBBV.js.map +1 -0
  252. package/dist/chunk-JHJSR2UT.js +101 -0
  253. package/dist/chunk-JHJSR2UT.js.map +1 -0
  254. package/dist/chunk-JHKIEQKC.js +69 -0
  255. package/dist/chunk-JHKIEQKC.js.map +1 -0
  256. package/dist/chunk-JJDLCVZV.js +37 -0
  257. package/dist/chunk-JJDLCVZV.js.map +1 -0
  258. package/dist/chunk-JJSZK6KF.js +169 -0
  259. package/dist/chunk-JJSZK6KF.js.map +1 -0
  260. package/dist/chunk-JKAMW7OV.js +228 -0
  261. package/dist/chunk-JKAMW7OV.js.map +1 -0
  262. package/dist/chunk-JKWO3SGU.js +79 -0
  263. package/dist/chunk-JKWO3SGU.js.map +1 -0
  264. package/dist/chunk-JRSZNGFD.js +28 -0
  265. package/dist/chunk-JRSZNGFD.js.map +1 -0
  266. package/dist/chunk-JWDXPHJ3.js +117 -0
  267. package/dist/chunk-JWDXPHJ3.js.map +1 -0
  268. package/dist/chunk-JZVK4NDF.js +28 -0
  269. package/dist/chunk-JZVK4NDF.js.map +1 -0
  270. package/dist/chunk-K255663P.js +144 -0
  271. package/dist/chunk-K255663P.js.map +1 -0
  272. package/dist/chunk-K5TTAI44.js +89 -0
  273. package/dist/chunk-K5TTAI44.js.map +1 -0
  274. package/dist/chunk-KCAOUZCT.js +245 -0
  275. package/dist/chunk-KCAOUZCT.js.map +1 -0
  276. package/dist/chunk-KCCYHT23.js +39 -0
  277. package/dist/chunk-KCCYHT23.js.map +1 -0
  278. package/dist/chunk-KFUBWOCN.js +69 -0
  279. package/dist/chunk-KFUBWOCN.js.map +1 -0
  280. package/dist/chunk-KHQ3C5HB.js +125 -0
  281. package/dist/chunk-KHQ3C5HB.js.map +1 -0
  282. package/dist/chunk-KOKKR2GO.js +37 -0
  283. package/dist/chunk-KOKKR2GO.js.map +1 -0
  284. package/dist/chunk-KUKHQCFS.js +233 -0
  285. package/dist/chunk-KUKHQCFS.js.map +1 -0
  286. package/dist/chunk-KV432YFG.js +223 -0
  287. package/dist/chunk-KV432YFG.js.map +1 -0
  288. package/dist/chunk-L5SQIVFO.js +68 -0
  289. package/dist/chunk-L5SQIVFO.js.map +1 -0
  290. package/dist/chunk-LGDFJ7W6.js +174 -0
  291. package/dist/chunk-LGDFJ7W6.js.map +1 -0
  292. package/dist/chunk-LIHMBEQT.js +144 -0
  293. package/dist/chunk-LIHMBEQT.js.map +1 -0
  294. package/dist/chunk-LJDGAKG3.js +196 -0
  295. package/dist/chunk-LJDGAKG3.js.map +1 -0
  296. package/dist/chunk-LSUCPRXN.js +89 -0
  297. package/dist/chunk-LSUCPRXN.js.map +1 -0
  298. package/dist/chunk-LTEJYJUM.js +143 -0
  299. package/dist/chunk-LTEJYJUM.js.map +1 -0
  300. package/dist/chunk-M5RM57U5.js +69 -0
  301. package/dist/chunk-M5RM57U5.js.map +1 -0
  302. package/dist/chunk-MDSCN4PH.js +144 -0
  303. package/dist/chunk-MDSCN4PH.js.map +1 -0
  304. package/dist/chunk-MG2KX3KF.js +69 -0
  305. package/dist/chunk-MG2KX3KF.js.map +1 -0
  306. package/dist/chunk-MIATMZDP.js +39 -0
  307. package/dist/chunk-MIATMZDP.js.map +1 -0
  308. package/dist/chunk-MIVH7X2Q.js +245 -0
  309. package/dist/chunk-MIVH7X2Q.js.map +1 -0
  310. package/dist/chunk-MPZJH3PI.js +287 -0
  311. package/dist/chunk-MPZJH3PI.js.map +1 -0
  312. package/dist/chunk-MQ4ZZJXV.js +51 -0
  313. package/dist/chunk-MQ4ZZJXV.js.map +1 -0
  314. package/dist/chunk-MRTKFR7V.js +144 -0
  315. package/dist/chunk-MRTKFR7V.js.map +1 -0
  316. package/dist/chunk-MTSZUPDJ.js +151 -0
  317. package/dist/chunk-MTSZUPDJ.js.map +1 -0
  318. package/dist/chunk-MTU2IQUS.js +689 -0
  319. package/dist/chunk-MTU2IQUS.js.map +1 -0
  320. package/dist/chunk-MVA6X35R.js +165 -0
  321. package/dist/chunk-MVA6X35R.js.map +1 -0
  322. package/dist/chunk-ND5BRCYV.js +75 -0
  323. package/dist/chunk-ND5BRCYV.js.map +1 -0
  324. package/dist/chunk-NE5S2QWA.js +51 -0
  325. package/dist/chunk-NE5S2QWA.js.map +1 -0
  326. package/dist/chunk-NHK64BOP.js +69 -0
  327. package/dist/chunk-NHK64BOP.js.map +1 -0
  328. package/dist/chunk-NHMDJCXR.js +276 -0
  329. package/dist/chunk-NHMDJCXR.js.map +1 -0
  330. package/dist/chunk-NIBZSFZ6.js +196 -0
  331. package/dist/chunk-NIBZSFZ6.js.map +1 -0
  332. package/dist/chunk-NJ3LHGC6.js +169 -0
  333. package/dist/chunk-NJ3LHGC6.js.map +1 -0
  334. package/dist/chunk-NJKRLSH3.js +287 -0
  335. package/dist/chunk-NJKRLSH3.js.map +1 -0
  336. package/dist/chunk-NLTKDXLB.js +113 -0
  337. package/dist/chunk-NLTKDXLB.js.map +1 -0
  338. package/dist/chunk-NRWZ6JNA.js +69 -0
  339. package/dist/chunk-NRWZ6JNA.js.map +1 -0
  340. package/dist/chunk-NSBBMIXS.js +151 -0
  341. package/dist/chunk-NSBBMIXS.js.map +1 -0
  342. package/dist/chunk-O665PURC.js +63 -0
  343. package/dist/chunk-O665PURC.js.map +1 -0
  344. package/dist/chunk-O6LH7P6V.js +87 -0
  345. package/dist/chunk-O6LH7P6V.js.map +1 -0
  346. package/dist/chunk-OF4RHJCY.js +69 -0
  347. package/dist/chunk-OF4RHJCY.js.map +1 -0
  348. package/dist/chunk-OL4XCMRU.js +363 -0
  349. package/dist/chunk-OL4XCMRU.js.map +1 -0
  350. package/dist/chunk-ORBEMNBA.js +49 -0
  351. package/dist/chunk-ORBEMNBA.js.map +1 -0
  352. package/dist/chunk-OYCRE67S.js +87 -0
  353. package/dist/chunk-OYCRE67S.js.map +1 -0
  354. package/dist/chunk-P4KO43AP.js +245 -0
  355. package/dist/chunk-P4KO43AP.js.map +1 -0
  356. package/dist/chunk-PJHCOBSQ.js +163 -0
  357. package/dist/chunk-PJHCOBSQ.js.map +1 -0
  358. package/dist/chunk-PXPGCDNA.js +106 -0
  359. package/dist/chunk-PXPGCDNA.js.map +1 -0
  360. package/dist/chunk-QBVF4BCB.js +245 -0
  361. package/dist/chunk-QBVF4BCB.js.map +1 -0
  362. package/dist/chunk-QEGDJ4ZD.js +165 -0
  363. package/dist/chunk-QEGDJ4ZD.js.map +1 -0
  364. package/dist/chunk-QKP2KBZ5.js +219 -0
  365. package/dist/chunk-QKP2KBZ5.js.map +1 -0
  366. package/dist/chunk-QVHA4ANB.js +196 -0
  367. package/dist/chunk-QVHA4ANB.js.map +1 -0
  368. package/dist/chunk-QXBRA2T6.js +169 -0
  369. package/dist/chunk-QXBRA2T6.js.map +1 -0
  370. package/dist/chunk-RAMPMKQD.js +245 -0
  371. package/dist/chunk-RAMPMKQD.js.map +1 -0
  372. package/dist/chunk-REPTW53S.js +98 -0
  373. package/dist/chunk-REPTW53S.js.map +1 -0
  374. package/dist/chunk-RFJ5NMY4.js +54 -0
  375. package/dist/chunk-RFJ5NMY4.js.map +1 -0
  376. package/dist/chunk-RMFSOYRW.js +99 -0
  377. package/dist/chunk-RMFSOYRW.js.map +1 -0
  378. package/dist/chunk-RXQHKSIV.js +37 -0
  379. package/dist/chunk-RXQHKSIV.js.map +1 -0
  380. package/dist/chunk-RY7DDHZO.js +51 -0
  381. package/dist/chunk-RY7DDHZO.js.map +1 -0
  382. package/dist/chunk-RZGCNQWE.js +89 -0
  383. package/dist/chunk-RZGCNQWE.js.map +1 -0
  384. package/dist/chunk-S3W44IB3.js +151 -0
  385. package/dist/chunk-S3W44IB3.js.map +1 -0
  386. package/dist/chunk-SEKCH5XW.js +100 -0
  387. package/dist/chunk-SEKCH5XW.js.map +1 -0
  388. package/dist/chunk-SFBPPATA.js +37 -0
  389. package/dist/chunk-SFBPPATA.js.map +1 -0
  390. package/dist/chunk-SGS3LUQ3.js +196 -0
  391. package/dist/chunk-SGS3LUQ3.js.map +1 -0
  392. package/dist/chunk-SLHUNZIR.js +245 -0
  393. package/dist/chunk-SLHUNZIR.js.map +1 -0
  394. package/dist/chunk-STCVW5HT.js +49 -0
  395. package/dist/chunk-STCVW5HT.js.map +1 -0
  396. package/dist/chunk-SVGGVYY7.js +69 -0
  397. package/dist/chunk-SVGGVYY7.js.map +1 -0
  398. package/dist/chunk-T5I3DNHD.js +145 -0
  399. package/dist/chunk-T5I3DNHD.js.map +1 -0
  400. package/dist/chunk-TJDCSV5R.js +230 -0
  401. package/dist/chunk-TJDCSV5R.js.map +1 -0
  402. package/dist/chunk-TJWFURWT.js +43 -0
  403. package/dist/chunk-TJWFURWT.js.map +1 -0
  404. package/dist/chunk-TMO724ZN.js +63 -0
  405. package/dist/chunk-TMO724ZN.js.map +1 -0
  406. package/dist/chunk-TP7DOXLP.js +98 -0
  407. package/dist/chunk-TP7DOXLP.js.map +1 -0
  408. package/dist/chunk-TQJ3HQ7R.js +87 -0
  409. package/dist/chunk-TQJ3HQ7R.js.map +1 -0
  410. package/dist/chunk-TRNLQ7F3.js +245 -0
  411. package/dist/chunk-TRNLQ7F3.js.map +1 -0
  412. package/dist/chunk-U6UGFQIT.js +117 -0
  413. package/dist/chunk-U6UGFQIT.js.map +1 -0
  414. package/dist/chunk-U7OEYXJQ.js +165 -0
  415. package/dist/chunk-U7OEYXJQ.js.map +1 -0
  416. package/dist/chunk-UF6LFXBG.js +230 -0
  417. package/dist/chunk-UF6LFXBG.js.map +1 -0
  418. package/dist/chunk-ULZHPTB5.js +70 -0
  419. package/dist/chunk-ULZHPTB5.js.map +1 -0
  420. package/dist/chunk-UOCLNOC2.js +145 -0
  421. package/dist/chunk-UOCLNOC2.js.map +1 -0
  422. package/dist/chunk-UZ7AGDRK.js +98 -0
  423. package/dist/chunk-UZ7AGDRK.js.map +1 -0
  424. package/dist/chunk-V2RMMVGT.js +51 -0
  425. package/dist/chunk-V2RMMVGT.js.map +1 -0
  426. package/dist/chunk-V2UREEFT.js +89 -0
  427. package/dist/chunk-V2UREEFT.js.map +1 -0
  428. package/dist/chunk-V4WWIPTK.js +363 -0
  429. package/dist/chunk-V4WWIPTK.js.map +1 -0
  430. package/dist/chunk-V7IC4EAC.js +51 -0
  431. package/dist/chunk-V7IC4EAC.js.map +1 -0
  432. package/dist/chunk-VEHTXVLY.js +169 -0
  433. package/dist/chunk-VEHTXVLY.js.map +1 -0
  434. package/dist/chunk-VIVVHI7F.js +63 -0
  435. package/dist/chunk-VIVVHI7F.js.map +1 -0
  436. package/dist/chunk-VQMIOVFO.js +69 -0
  437. package/dist/chunk-VQMIOVFO.js.map +1 -0
  438. package/dist/chunk-VU3C3W4S.js +106 -0
  439. package/dist/chunk-VU3C3W4S.js.map +1 -0
  440. package/dist/chunk-VYPPQUB5.js +196 -0
  441. package/dist/chunk-VYPPQUB5.js.map +1 -0
  442. package/dist/chunk-W2TX267T.js +100 -0
  443. package/dist/chunk-W2TX267T.js.map +1 -0
  444. package/dist/chunk-W3EW7K6L.js +51 -0
  445. package/dist/chunk-W3EW7K6L.js.map +1 -0
  446. package/dist/chunk-W7NQ5NW6.js +100 -0
  447. package/dist/chunk-W7NQ5NW6.js.map +1 -0
  448. package/dist/chunk-WA5A2GB4.js +192 -0
  449. package/dist/chunk-WA5A2GB4.js.map +1 -0
  450. package/dist/chunk-WPAC4HEX.js +87 -0
  451. package/dist/chunk-WPAC4HEX.js.map +1 -0
  452. package/dist/chunk-X2OV53JW.js +196 -0
  453. package/dist/chunk-X2OV53JW.js.map +1 -0
  454. package/dist/chunk-X47BEKKF.js +68 -0
  455. package/dist/chunk-X47BEKKF.js.map +1 -0
  456. package/dist/chunk-X6K6AM4D.js +196 -0
  457. package/dist/chunk-X6K6AM4D.js.map +1 -0
  458. package/dist/chunk-XIKKYBHO.js +69 -0
  459. package/dist/chunk-XIKKYBHO.js.map +1 -0
  460. package/dist/chunk-XYDK5OWF.js +75 -0
  461. package/dist/chunk-XYDK5OWF.js.map +1 -0
  462. package/dist/chunk-Y2H4FXGU.js +68 -0
  463. package/dist/chunk-Y2H4FXGU.js.map +1 -0
  464. package/dist/chunk-YCRTFH4C.js +79 -0
  465. package/dist/chunk-YCRTFH4C.js.map +1 -0
  466. package/dist/chunk-YHGFJ7N6.js +63 -0
  467. package/dist/chunk-YHGFJ7N6.js.map +1 -0
  468. package/dist/chunk-YKDT2D43.js +98 -0
  469. package/dist/chunk-YKDT2D43.js.map +1 -0
  470. package/dist/chunk-YLTKQZ67.js +228 -0
  471. package/dist/chunk-YLTKQZ67.js.map +1 -0
  472. package/dist/chunk-YPGFPLWM.js +69 -0
  473. package/dist/chunk-YPGFPLWM.js.map +1 -0
  474. package/dist/chunk-YWYYPYBK.js +1 -0
  475. package/dist/chunk-YWYYPYBK.js.map +1 -0
  476. package/dist/chunk-Z4NCEYC6.js +70 -0
  477. package/dist/chunk-Z4NCEYC6.js.map +1 -0
  478. package/dist/chunk-Z7WNKARH.js +331 -0
  479. package/dist/chunk-Z7WNKARH.js.map +1 -0
  480. package/dist/chunk-ZA4NYPSW.js +28 -0
  481. package/dist/chunk-ZA4NYPSW.js.map +1 -0
  482. package/dist/chunk-ZDY2M7RX.js +113 -0
  483. package/dist/chunk-ZDY2M7RX.js.map +1 -0
  484. package/dist/chunk-ZFTQ2XBH.js +76 -0
  485. package/dist/chunk-ZFTQ2XBH.js.map +1 -0
  486. package/dist/chunk-ZI3TYUTO.js +196 -0
  487. package/dist/chunk-ZI3TYUTO.js.map +1 -0
  488. package/dist/chunk-ZI7PEVZG.js +89 -0
  489. package/dist/chunk-ZI7PEVZG.js.map +1 -0
  490. package/dist/chunk-ZKFNOCWD.js +125 -0
  491. package/dist/chunk-ZKFNOCWD.js.map +1 -0
  492. package/dist/chunk-ZOITFRX7.js +70 -0
  493. package/dist/chunk-ZOITFRX7.js.map +1 -0
  494. package/dist/chunk-ZPDLTZDJ.js +363 -0
  495. package/dist/chunk-ZPDLTZDJ.js.map +1 -0
  496. package/dist/chunk-ZR4G3PU3.js +89 -0
  497. package/dist/chunk-ZR4G3PU3.js.map +1 -0
  498. package/dist/context/index.js +5 -5
  499. package/dist/icon.cjs +2 -0
  500. package/dist/icon.cjs.map +1 -1
  501. package/dist/icon.d.cts +1 -1
  502. package/dist/icon.d.ts +1 -1
  503. package/dist/icon.js +3 -1
  504. package/dist/index.cjs +1706 -308
  505. package/dist/index.cjs.map +1 -1
  506. package/dist/index.d.cts +4 -3
  507. package/dist/index.d.ts +4 -3
  508. package/dist/index.js +176 -165
  509. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs.map +1 -1
  510. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +19 -19
  511. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs.map +1 -1
  512. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +5 -5
  513. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs.map +1 -1
  514. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +12 -12
  515. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.cjs.map +1 -1
  516. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +3 -3
  517. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +3 -3
  518. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.js +2 -2
  519. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs.map +1 -1
  520. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +7 -7
  521. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs.map +1 -1
  522. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +6 -6
  523. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs.map +1 -1
  524. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +6 -6
  525. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs.map +1 -1
  526. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +6 -6
  527. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs.map +1 -1
  528. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +5 -5
  529. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs.map +1 -1
  530. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +22 -22
  531. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs.map +1 -1
  532. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +7 -7
  533. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
  534. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +5 -5
  535. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
  536. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +4 -4
  537. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
  538. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +25 -25
  539. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs +4 -4
  540. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs.map +1 -1
  541. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.js +1 -1
  542. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +4 -4
  543. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
  544. package/dist/molecules/curriculumV2/CurriculumContents/index.js +30 -30
  545. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +2 -2
  546. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs.map +1 -1
  547. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +5 -5
  548. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
  549. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +9 -9
  550. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs.map +1 -1
  551. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +6 -6
  552. package/dist/molecules/curriculumV2/curriculum-context.cjs +0 -1
  553. package/dist/molecules/curriculumV2/curriculum-context.cjs.map +1 -1
  554. package/dist/molecules/curriculumV2/curriculum-context.js +1 -1
  555. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
  556. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +6 -6
  557. package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
  558. package/dist/molecules/curriculumV2/index.cjs +4 -5
  559. package/dist/molecules/curriculumV2/index.cjs.map +1 -1
  560. package/dist/molecules/curriculumV2/index.js +39 -39
  561. package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
  562. package/dist/molecules/date-picker/date-picker-button.js +7 -7
  563. package/dist/molecules/date-picker/index.cjs.map +1 -1
  564. package/dist/molecules/date-picker/index.js +6 -6
  565. package/dist/molecules/description-json-render.cjs +1 -1
  566. package/dist/molecules/description-json-render.cjs.map +1 -1
  567. package/dist/molecules/description-json-render.js +7 -7
  568. package/dist/molecules/download-card.js +2 -2
  569. package/dist/molecules/dynamic-field.cjs +147 -5
  570. package/dist/molecules/dynamic-field.cjs.map +1 -1
  571. package/dist/molecules/dynamic-field.js +9 -6
  572. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +1711 -0
  573. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -0
  574. package/dist/molecules/dynamic-form-editor-field-editor-panel.d.cts +19 -0
  575. package/dist/molecules/dynamic-form-editor-field-editor-panel.d.ts +19 -0
  576. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +37 -0
  577. package/dist/molecules/dynamic-form-editor-field-editor-panel.js.map +1 -0
  578. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +298 -0
  579. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -0
  580. package/dist/molecules/dynamic-form-editor-field-list-panel.d.cts +16 -0
  581. package/dist/molecules/dynamic-form-editor-field-list-panel.d.ts +16 -0
  582. package/dist/molecules/dynamic-form-editor-field-list-panel.js +14 -0
  583. package/dist/molecules/dynamic-form-editor-field-list-panel.js.map +1 -0
  584. package/dist/molecules/dynamic-form-editor-issues-panel.cjs +171 -0
  585. package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -0
  586. package/dist/molecules/dynamic-form-editor-issues-panel.d.cts +10 -0
  587. package/dist/molecules/dynamic-form-editor-issues-panel.d.ts +10 -0
  588. package/dist/molecules/dynamic-form-editor-issues-panel.js +12 -0
  589. package/dist/molecules/dynamic-form-editor-issues-panel.js.map +1 -0
  590. package/dist/molecules/dynamic-form-editor-preview-panel.cjs +1021 -0
  591. package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -0
  592. package/dist/molecules/dynamic-form-editor-preview-panel.d.cts +10 -0
  593. package/dist/molecules/dynamic-form-editor-preview-panel.d.ts +10 -0
  594. package/dist/molecules/dynamic-form-editor-preview-panel.js +26 -0
  595. package/dist/molecules/dynamic-form-editor-preview-panel.js.map +1 -0
  596. package/dist/molecules/dynamic-form-editor-utils.cjs +396 -0
  597. package/dist/molecules/dynamic-form-editor-utils.cjs.map +1 -0
  598. package/dist/molecules/dynamic-form-editor-utils.d.cts +43 -0
  599. package/dist/molecules/dynamic-form-editor-utils.d.ts +43 -0
  600. package/dist/molecules/dynamic-form-editor-utils.js +44 -0
  601. package/dist/molecules/dynamic-form-editor-utils.js.map +1 -0
  602. package/dist/molecules/dynamic-form-editor.cjs +2925 -0
  603. package/dist/molecules/dynamic-form-editor.cjs.map +1 -0
  604. package/dist/molecules/dynamic-form-editor.d.cts +15 -0
  605. package/dist/molecules/dynamic-form-editor.d.ts +15 -0
  606. package/dist/molecules/dynamic-form-editor.js +51 -0
  607. package/dist/molecules/dynamic-form-editor.js.map +1 -0
  608. package/dist/molecules/dynamic-form-response-item.cjs +21 -12
  609. package/dist/molecules/dynamic-form-response-item.cjs.map +1 -1
  610. package/dist/molecules/dynamic-form-response-item.js +1 -1
  611. package/dist/molecules/dynamic-form.cjs +149 -7
  612. package/dist/molecules/dynamic-form.cjs.map +1 -1
  613. package/dist/molecules/dynamic-form.js +10 -7
  614. package/dist/molecules/expand-table/index.cjs.map +1 -1
  615. package/dist/molecules/expand-table/index.js +6 -6
  616. package/dist/molecules/force-refresh.js +2 -2
  617. package/dist/molecules/ghost-post.js +4 -4
  618. package/dist/molecules/index.cjs +1426 -27
  619. package/dist/molecules/index.cjs.map +1 -1
  620. package/dist/molecules/index.d.cts +1 -0
  621. package/dist/molecules/index.d.ts +1 -0
  622. package/dist/molecules/index.js +94 -84
  623. package/dist/molecules/learning-post.js +6 -6
  624. package/dist/molecules/navigation.js +3 -3
  625. package/dist/molecules/one-on-one-guide-list.js +3 -3
  626. package/dist/molecules/stepper.cjs.map +1 -1
  627. package/dist/molecules/stepper.js +5 -5
  628. package/dist/molecules/tag-selector.cjs.map +1 -1
  629. package/dist/molecules/tag-selector.js +6 -6
  630. package/dist/molecules/time-select.cjs +1 -1
  631. package/dist/molecules/time-select.cjs.map +1 -1
  632. package/dist/molecules/time-select.js +2 -2
  633. package/dist/molecules/training-info-guideline.js +7 -7
  634. package/dist/types/dynamic-form-schema-generated.cjs.map +1 -1
  635. package/dist/types/dynamic-form-schema-generated.d.cts +30 -2
  636. package/dist/types/dynamic-form-schema-generated.d.ts +30 -2
  637. package/dist/types/index.d.cts +1 -1
  638. package/dist/types/index.d.ts +1 -1
  639. package/dist/types/index.js +1 -1
  640. package/dist/utils/curriculum.utils.cjs.map +1 -1
  641. package/dist/utils/curriculum.utils.js +1 -1
  642. package/dist/utils/get-callout-icon-component.cjs +624 -0
  643. package/dist/utils/get-callout-icon-component.cjs.map +1 -0
  644. package/dist/utils/get-callout-icon-component.d.cts +11 -0
  645. package/dist/utils/get-callout-icon-component.d.ts +11 -0
  646. package/dist/utils/get-callout-icon-component.js +26 -0
  647. package/dist/utils/get-callout-icon-component.js.map +1 -0
  648. package/dist/utils/getCalloutIconComponent.cjs.map +1 -1
  649. package/dist/utils/getCalloutIconComponent.js +2 -2
  650. package/dist/utils/index.cjs +1 -1
  651. package/dist/utils/index.cjs.map +1 -1
  652. package/dist/utils/index.d.cts +1 -1
  653. package/dist/utils/index.d.ts +1 -1
  654. package/dist/utils/index.js +2 -2
  655. package/package.json +1 -1
  656. package/src/app/platform/reservation-card.tsx +0 -1
  657. package/src/constrant/dynamic-form-schema.json +55 -0
  658. package/src/icon.ts +2 -1
  659. package/src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx +3 -3
  660. package/src/molecules/curriculumV2/curriculum-context.tsx +0 -1
  661. package/src/molecules/description-json-render.tsx +1 -1
  662. package/src/molecules/dynamic-field.tsx +183 -7
  663. package/src/molecules/dynamic-form-editor-field-editor-panel.tsx +688 -0
  664. package/src/molecules/dynamic-form-editor-field-list-panel.tsx +116 -0
  665. package/src/molecules/dynamic-form-editor-issues-panel.tsx +35 -0
  666. package/src/molecules/dynamic-form-editor-preview-panel.tsx +30 -0
  667. package/src/molecules/dynamic-form-editor-utils.ts +433 -0
  668. package/src/molecules/dynamic-form-editor.tsx +263 -0
  669. package/src/molecules/dynamic-form-response-item.tsx +28 -17
  670. package/src/molecules/dynamic-form.tsx +1 -1
  671. package/src/molecules/index.ts +2 -1
  672. package/src/types/dynamic-form-schema-generated.ts +33 -0
  673. package/src/utils/index.ts +1 -1
  674. package/src/utils/{getCalloutIconComponent.ts → get-callout-icon-component.ts} +3 -3
package/dist/index.cjs CHANGED
@@ -158,6 +158,7 @@ __export(index_exports, {
158
158
  Drawer: () => Drawer,
159
159
  DropdownMenu: () => DropdownMenu,
160
160
  DynamicForm: () => DynamicForm,
161
+ DynamicFormEditor: () => DynamicFormEditor,
161
162
  DynamicFormField: () => DynamicFormField,
162
163
  DynamicFormProvider: () => DynamicFormProvider,
163
164
  DynamicFormResponseItem: () => DynamicFormResponseItem,
@@ -192,6 +193,7 @@ __export(index_exports, {
192
193
  HorizontalBarChart: () => HorizontalBarChart,
193
194
  HoverCard: () => import_themes24.HoverCard,
194
195
  IconButton: () => IconButton,
196
+ ImageIcon: () => import_react_icons2.ImageIcon,
195
197
  InfoCircledIcon: () => import_react_icons2.InfoCircledIcon,
196
198
  Inset: () => import_themes25.Inset,
197
199
  Kbd: () => import_themes26.Kbd,
@@ -286,7 +288,7 @@ __export(index_exports, {
286
288
  useDynamicForm: () => useDynamicForm,
287
289
  useList: () => useList,
288
290
  usePortalContainer: () => usePortalContainer,
289
- useThemeContext: () => import_themes56.useThemeContext,
291
+ useThemeContext: () => import_themes58.useThemeContext,
290
292
  useUIState: () => useUIState
291
293
  });
292
294
  module.exports = __toCommonJS(index_exports);
@@ -3627,7 +3629,7 @@ var getTimeOption = (time) => {
3627
3629
  return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;
3628
3630
  };
3629
3631
 
3630
- // src/utils/getCalloutIconComponent.ts
3632
+ // src/utils/get-callout-icon-component.ts
3631
3633
  var DEFAULT_ICON = import_react_icons2.InfoCircledIcon;
3632
3634
  var AI_CALLOUT_ICON_OPTIONS = [
3633
3635
  { label: "Info", value: "InfoCircledIcon", Component: import_react_icons2.InfoCircledIcon },
@@ -3959,7 +3961,6 @@ function CurriculumProvider(props) {
3959
3961
  const inBounds = selectedIndexState >= 0 && selectedIndexState < list.length;
3960
3962
  if (!inBounds) return;
3961
3963
  const item = list[selectedIndexState];
3962
- if (!item) return;
3963
3964
  if (item.type === "sectionTitle") return;
3964
3965
  onChangeSelectedContent == null ? void 0 : onChangeSelectedContent(item);
3965
3966
  }, [list, onChangeSelectedContent, selectedIndexState]);
@@ -4115,15 +4116,15 @@ function CurriculumVideo(props) {
4115
4116
  "iframe",
4116
4117
  {
4117
4118
  allowFullScreen: true,
4119
+ onError: () => {
4120
+ setIsLoading(false);
4121
+ },
4118
4122
  onLoad: () => {
4119
4123
  setIsLoading(false);
4120
4124
  },
4121
4125
  src: `${url}?theme=light`,
4122
4126
  style: { width: "100%", height: "100%", border: "none" },
4123
- title: "Curriculum Video",
4124
- onError: () => {
4125
- setIsLoading(false);
4126
- }
4127
+ title: "Curriculum Video"
4127
4128
  }
4128
4129
  )
4129
4130
  ]
@@ -5647,6 +5648,46 @@ function useDynamicForm() {
5647
5648
 
5648
5649
  // src/molecules/dynamic-field.tsx
5649
5650
  var import_jsx_runtime88 = require("react/jsx-runtime");
5651
+ function isRecord(value) {
5652
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
5653
+ }
5654
+ function isFieldOption(value) {
5655
+ if (!isRecord(value)) return false;
5656
+ const label = value.label;
5657
+ const optionValue = value.value;
5658
+ return typeof label === "string" && (typeof optionValue === "string" || typeof optionValue === "number");
5659
+ }
5660
+ function isImageFieldOption(value) {
5661
+ if (!isRecord(value)) return false;
5662
+ if (!isFieldOption(value)) return false;
5663
+ const imageSrc = value.imageSrc;
5664
+ const alt = value.alt;
5665
+ return typeof imageSrc === "string" && (alt === void 0 || typeof alt === "string");
5666
+ }
5667
+ function getStringProp(obj, key, fallback) {
5668
+ if (!isRecord(obj)) return fallback;
5669
+ const value = obj[key];
5670
+ return typeof value === "string" ? value : fallback;
5671
+ }
5672
+ function getNumberProp(obj, key, fallback) {
5673
+ if (!isRecord(obj)) return fallback;
5674
+ const value = obj[key];
5675
+ return typeof value === "number" ? value : fallback;
5676
+ }
5677
+ function getOptions(field) {
5678
+ if (!isRecord(field)) return null;
5679
+ const options = field.options;
5680
+ if (!Array.isArray(options)) return null;
5681
+ if (!options.every(isFieldOption)) return null;
5682
+ return options;
5683
+ }
5684
+ function getImageOptions(field) {
5685
+ if (!isRecord(field)) return null;
5686
+ const options = field.options;
5687
+ if (!Array.isArray(options)) return null;
5688
+ if (!options.every(isImageFieldOption)) return null;
5689
+ return options;
5690
+ }
5650
5691
  function DynamicFormField({
5651
5692
  field
5652
5693
  }) {
@@ -5659,7 +5700,7 @@ function DynamicFormField({
5659
5700
  handleBlur,
5660
5701
  readonly
5661
5702
  } = useDynamicForm();
5662
- const { name, type } = field;
5703
+ const name = field.name;
5663
5704
  const value = getFieldValue(name);
5664
5705
  const error = getFieldError(name);
5665
5706
  const touched = getFieldTouched(name);
@@ -5672,14 +5713,22 @@ function DynamicFormField({
5672
5713
  error: hasError,
5673
5714
  disabled: readonly
5674
5715
  };
5675
- switch (type) {
5716
+ const selectedValue = typeof value === "string" || typeof value === "number" ? String(value) : "";
5717
+ switch (field.type) {
5676
5718
  case "short_text":
5719
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5720
+ TextField.Root,
5721
+ __spreadProps(__spreadValues({}, commonProps), {
5722
+ placeholder: field.placeholder,
5723
+ type: "text"
5724
+ })
5725
+ );
5677
5726
  case "email":
5678
5727
  return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5679
5728
  TextField.Root,
5680
5729
  __spreadProps(__spreadValues({}, commonProps), {
5681
5730
  placeholder: field.placeholder,
5682
- type: type === "short_text" ? "text" : type
5731
+ type: "email"
5683
5732
  })
5684
5733
  );
5685
5734
  case "number":
@@ -5702,9 +5751,20 @@ function DynamicFormField({
5702
5751
  onValueChange: readonly ? void 0 : (newValue) => {
5703
5752
  void setFieldValue(name, newValue);
5704
5753
  },
5705
- value,
5754
+ value: selectedValue,
5706
5755
  children: [
5707
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Select.Trigger, { placeholder: field.placeholder }),
5756
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5757
+ Select.Trigger,
5758
+ {
5759
+ placeholder: field.placeholder,
5760
+ style: {
5761
+ alignSelf: "flex-start",
5762
+ width: "fit-content",
5763
+ minWidth: "180px",
5764
+ maxWidth: "100%"
5765
+ }
5766
+ }
5767
+ ),
5708
5768
  /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Select.Content, { children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Select.Item, { value: String(option.value), children: option.label }, option.value)) })
5709
5769
  ]
5710
5770
  }
@@ -5722,6 +5782,21 @@ function DynamicFormField({
5722
5782
  children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes34.RadioGroup.Item, { value: String(option.value), children: option.label }, option.value))
5723
5783
  }
5724
5784
  );
5785
+ case "radio_cards": {
5786
+ const options = getOptions(field);
5787
+ if (!options) return null;
5788
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5789
+ import_themes33.RadioCards.Root,
5790
+ {
5791
+ disabled: readonly,
5792
+ onValueChange: readonly ? void 0 : (newValue) => {
5793
+ void setFieldValue(name, newValue);
5794
+ },
5795
+ value: selectedValue,
5796
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes33.RadioCards.Item, { value: String(option.value), children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { children: option.label }) }, option.value))
5797
+ }
5798
+ );
5799
+ }
5725
5800
  case "choices":
5726
5801
  return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5727
5802
  CheckboxGroup.Root,
@@ -5749,6 +5824,65 @@ function DynamicFormField({
5749
5824
  ),
5750
5825
  field.description ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { color: "gray", variant: "caption", children: field.description }) : null
5751
5826
  ] });
5827
+ case "image_radio_card": {
5828
+ const options = getImageOptions(field);
5829
+ if (!options) return null;
5830
+ const gridColumnsCount = Math.max(1, getNumberProp(field, "gridColumnsCount", 4));
5831
+ const gridColumns = getStringProp(
5832
+ field,
5833
+ "gridColumns",
5834
+ `repeat(${gridColumnsCount}, 1fr)`
5835
+ );
5836
+ const gridItemHeight = getStringProp(field, "gridItemHeight", "100px");
5837
+ const gridRows = getStringProp(field, "gridRows", gridItemHeight);
5838
+ const gridGap = getStringProp(field, "gridGap", "2");
5839
+ const imageFitRaw = getStringProp(field, "imageFit", "cover");
5840
+ const imageFit = imageFitRaw === "contain" ? "contain" : "cover";
5841
+ const handleValueChange = (newValue) => {
5842
+ if (readonly) return;
5843
+ const selectedOption = options.find(
5844
+ (option) => String(option.value) === newValue
5845
+ );
5846
+ if (!selectedOption) return;
5847
+ void setFieldValue(name, selectedOption.value);
5848
+ };
5849
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5850
+ import_themes33.RadioCards.Root,
5851
+ {
5852
+ disabled: readonly,
5853
+ onValueChange: readonly ? void 0 : handleValueChange,
5854
+ value: selectedValue,
5855
+ children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes23.Grid, { columns: gridColumns, gap: gridGap, rows: gridRows, children: options.map((option) => {
5856
+ const optionValue = String(option.value);
5857
+ const altText = option.alt || option.label;
5858
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5859
+ import_themes33.RadioCards.Item,
5860
+ {
5861
+ style: {
5862
+ padding: 0
5863
+ },
5864
+ value: optionValue,
5865
+ children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes25.Inset, { style: { width: "100%", height: "100%", padding: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5866
+ "img",
5867
+ {
5868
+ alt: altText,
5869
+ src: option.imageSrc,
5870
+ style: {
5871
+ width: "100%",
5872
+ height: "100%",
5873
+ display: "block",
5874
+ objectFit: imageFit,
5875
+ opacity: readonly ? 0.7 : 1
5876
+ }
5877
+ }
5878
+ ) })
5879
+ },
5880
+ optionValue
5881
+ );
5882
+ }) })
5883
+ }
5884
+ );
5885
+ }
5752
5886
  default:
5753
5887
  return null;
5754
5888
  }
@@ -5974,27 +6108,32 @@ function createYupValidation(field, validation) {
5974
6108
  }
5975
6109
 
5976
6110
  // src/molecules/dynamic-form-response-item.tsx
6111
+ function isRecord2(value) {
6112
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6113
+ }
6114
+ function isFieldOption2(value) {
6115
+ if (!isRecord2(value)) return false;
6116
+ const label = value.label;
6117
+ const optionValue = value.value;
6118
+ return typeof label === "string" && (typeof optionValue === "string" || typeof optionValue === "number");
6119
+ }
5977
6120
  function DynamicFormResponseItem({
5978
6121
  payload,
5979
6122
  questionType,
5980
6123
  config
5981
6124
  }) {
5982
- if (!payload || typeof payload !== "object") {
5983
- return String(payload || "\uC751\uB2F5 \uC5C6\uC74C");
5984
- }
5985
- const payloadObj = payload;
5986
- const value = payloadObj.value;
6125
+ const value = isRecord2(payload) && "value" in payload ? payload.value : payload;
5987
6126
  if (value === void 0 || value === null || value === "") {
5988
6127
  return "\uC751\uB2F5 \uC5C6\uC74C";
5989
6128
  }
5990
- const getOptions = (fieldConfig) => {
5991
- if (!fieldConfig || typeof fieldConfig !== "object") return void 0;
5992
- if ("options" in fieldConfig && Array.isArray(fieldConfig.options)) {
5993
- return fieldConfig.options;
5994
- }
5995
- return void 0;
6129
+ const getOptions2 = (fieldConfig) => {
6130
+ if (!isRecord2(fieldConfig)) return void 0;
6131
+ const options2 = fieldConfig.options;
6132
+ if (!Array.isArray(options2)) return void 0;
6133
+ if (!options2.every(isFieldOption2)) return void 0;
6134
+ return options2;
5996
6135
  };
5997
- const options = getOptions(config);
6136
+ const options = getOptions2(config);
5998
6137
  switch (questionType) {
5999
6138
  case "text":
6000
6139
  case "textarea":
@@ -6002,8 +6141,10 @@ function DynamicFormResponseItem({
6002
6141
  case "radio":
6003
6142
  case "select":
6004
6143
  case "choice":
6144
+ case "radio_cards":
6145
+ case "image_radio_card":
6005
6146
  if (options) {
6006
- const option = options.find((opt) => opt.value === value);
6147
+ const option = options.find((opt) => String(opt.value) === String(value));
6007
6148
  return option ? option.label : String(value);
6008
6149
  }
6009
6150
  return String(value);
@@ -6012,7 +6153,9 @@ function DynamicFormResponseItem({
6012
6153
  if (Array.isArray(value)) {
6013
6154
  if (options) {
6014
6155
  return value.map((val) => {
6015
- const option = options.find((opt) => opt.value === val);
6156
+ const option = options.find(
6157
+ (opt) => String(opt.value) === String(val)
6158
+ );
6016
6159
  return option ? option.label : String(val);
6017
6160
  }).join(", ");
6018
6161
  }
@@ -6274,29 +6417,1282 @@ function TrainingInfoGuidelineButton({
6274
6417
  );
6275
6418
  }
6276
6419
 
6277
- // src/theme/use-theme.tsx
6420
+ // src/molecules/dynamic-form-editor.tsx
6421
+ var import_react49 = require("react");
6422
+
6423
+ // src/molecules/dynamic-form-editor-utils.ts
6424
+ function isRecord3(value) {
6425
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6426
+ }
6427
+ function isNonEmptyTrimmedString(value) {
6428
+ return typeof value === "string" && value.trim().length > 0;
6429
+ }
6430
+ function isFiniteNumber(value) {
6431
+ return typeof value === "number" && Number.isFinite(value);
6432
+ }
6433
+ function canCompileRegExp(pattern) {
6434
+ try {
6435
+ new RegExp(pattern);
6436
+ return true;
6437
+ } catch (e) {
6438
+ return false;
6439
+ }
6440
+ }
6441
+ function getFieldTypes() {
6442
+ return [
6443
+ "short_text",
6444
+ "long_text",
6445
+ "number",
6446
+ "email",
6447
+ "dropdown",
6448
+ "choice",
6449
+ "radio_cards",
6450
+ "image_radio_card",
6451
+ "choices",
6452
+ "yes_no"
6453
+ ];
6454
+ }
6455
+ function getFieldTypeLabel(type) {
6456
+ const map = {
6457
+ short_text: "\uC9E7\uC740 \uD14D\uC2A4\uD2B8",
6458
+ long_text: "\uAE34 \uD14D\uC2A4\uD2B8",
6459
+ number: "\uC22B\uC790",
6460
+ email: "\uC774\uBA54\uC77C",
6461
+ dropdown: "\uB4DC\uB86D\uB2E4\uC6B4",
6462
+ choice: "\uB2E8\uC77C \uC120\uD0DD(\uB77C\uB514\uC624)",
6463
+ radio_cards: "\uB77C\uB514\uC624 \uCE74\uB4DC",
6464
+ image_radio_card: "\uC774\uBBF8\uC9C0 \uB77C\uB514\uC624 \uCE74\uB4DC",
6465
+ choices: "\uB2E4\uC911 \uC120\uD0DD(\uCCB4\uD06C)",
6466
+ yes_no: "\uB3D9\uC758(\uCCB4\uD06C)"
6467
+ };
6468
+ return map[type];
6469
+ }
6470
+ function findFieldIndexByName(fields, fieldName) {
6471
+ return fields.findIndex((field) => field.name === fieldName);
6472
+ }
6473
+ function toCamelFromSnake(value) {
6474
+ const parts = value.split("_").filter(Boolean);
6475
+ if (parts.length === 0) return "field";
6476
+ const [first, ...rest] = parts;
6477
+ const firstLower = first.toLowerCase();
6478
+ const restCamel = rest.map((p) => p.length === 0 ? "" : p[0].toUpperCase() + p.slice(1)).join("");
6479
+ return `${firstLower}${restCamel}`;
6480
+ }
6481
+ function createUniqueFieldName(fields, baseName) {
6482
+ const used = new Set(fields.map((f) => f.name));
6483
+ if (!used.has(baseName)) return baseName;
6484
+ let i = 2;
6485
+ while (used.has(`${baseName}${i}`)) i += 1;
6486
+ return `${baseName}${i}`;
6487
+ }
6488
+ function createDefaultField(type, currentFields) {
6489
+ const baseName = toCamelFromSnake(type);
6490
+ const name = createUniqueFieldName(currentFields, baseName);
6491
+ const label = getFieldTypeLabel(type);
6492
+ if (type === "short_text") return { name, type, label, placeholder: "" };
6493
+ if (type === "long_text") return { name, type, label, placeholder: "" };
6494
+ if (type === "number") return { name, type, label, placeholder: "" };
6495
+ if (type === "email") return { name, type, label, placeholder: "" };
6496
+ if (type === "dropdown")
6497
+ return {
6498
+ name,
6499
+ type,
6500
+ label,
6501
+ placeholder: "",
6502
+ options: [{ label: "\uC635\uC158 1", value: "option1" }]
6503
+ };
6504
+ if (type === "choice")
6505
+ return {
6506
+ name,
6507
+ type,
6508
+ label,
6509
+ orientation: "vertical",
6510
+ options: [{ label: "\uC635\uC158 1", value: "option1" }]
6511
+ };
6512
+ if (type === "radio_cards")
6513
+ return { name, type, label, options: [{ label: "\uC635\uC158 1", value: "option1" }] };
6514
+ if (type === "choices")
6515
+ return {
6516
+ name,
6517
+ type,
6518
+ label,
6519
+ orientation: "vertical",
6520
+ options: [{ label: "\uC635\uC158 1", value: "option1" }]
6521
+ };
6522
+ if (type === "yes_no") return { name, type, label, description: "" };
6523
+ return {
6524
+ name,
6525
+ type,
6526
+ label,
6527
+ gridColumnsCount: 4,
6528
+ gridItemHeight: "160px",
6529
+ gridGap: "2",
6530
+ imageFit: "cover",
6531
+ options: [
6532
+ {
6533
+ label: "\uC774\uBBF8\uC9C0 1",
6534
+ value: "option1",
6535
+ imageSrc: "https://placehold.co/300x300/png?text=1"
6536
+ }
6537
+ ]
6538
+ };
6539
+ }
6540
+ function normalizeSchema(value) {
6541
+ const fallback = { fields: [] };
6542
+ if (!value) return fallback;
6543
+ if (!Array.isArray(value.fields)) return fallback;
6544
+ return { fields: value.fields };
6545
+ }
6546
+ function validateDynamicFormSchema(schema) {
6547
+ const issues = [];
6548
+ const nameToCount = /* @__PURE__ */ new Map();
6549
+ schema.fields.forEach((field) => {
6550
+ const prev = nameToCount.get(field.name) || 0;
6551
+ nameToCount.set(field.name, prev + 1);
6552
+ });
6553
+ schema.fields.forEach((field, index) => {
6554
+ const fieldKey = `${index}:${field.name}`;
6555
+ if (!isNonEmptyTrimmedString(field.name)) {
6556
+ issues.push({
6557
+ id: `field.name.required.${fieldKey}`,
6558
+ level: "error",
6559
+ message: "\uD544\uB4DC name\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
6560
+ fieldName: field.name
6561
+ });
6562
+ } else if (field.name.trim() !== field.name) {
6563
+ issues.push({
6564
+ id: `field.name.trim.${fieldKey}`,
6565
+ level: "warning",
6566
+ message: "\uD544\uB4DC name \uC55E/\uB4A4 \uACF5\uBC31\uC740 \uC81C\uAC70\uD558\uB294 \uAC83\uC744 \uAD8C\uC7A5\uD569\uB2C8\uB2E4",
6567
+ fieldName: field.name
6568
+ });
6569
+ }
6570
+ if (isNonEmptyTrimmedString(field.name)) {
6571
+ const count = nameToCount.get(field.name) || 0;
6572
+ if (count > 1) {
6573
+ issues.push({
6574
+ id: `field.name.duplicate.${fieldKey}`,
6575
+ level: "error",
6576
+ message: `\uC911\uBCF5\uB41C name\uC785\uB2C8\uB2E4: ${field.name}`,
6577
+ fieldName: field.name
6578
+ });
6579
+ }
6580
+ }
6581
+ if (!isNonEmptyTrimmedString(field.label)) {
6582
+ issues.push({
6583
+ id: `field.label.required.${fieldKey}`,
6584
+ level: "error",
6585
+ message: "\uD544\uB4DC label\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
6586
+ fieldName: field.name
6587
+ });
6588
+ }
6589
+ const type = field.type;
6590
+ const isOptionType = type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices";
6591
+ if (isOptionType) {
6592
+ const optionsRaw = field.options;
6593
+ if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
6594
+ issues.push({
6595
+ id: `field.options.required.${fieldKey}`,
6596
+ level: "error",
6597
+ message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
6598
+ fieldName: field.name
6599
+ });
6600
+ }
6601
+ }
6602
+ if (type === "image_radio_card") {
6603
+ const optionsRaw = field.options;
6604
+ if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
6605
+ issues.push({
6606
+ id: `field.imageOptions.required.${fieldKey}`,
6607
+ level: "error",
6608
+ message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
6609
+ fieldName: field.name
6610
+ });
6611
+ } else {
6612
+ optionsRaw.forEach((opt, optIndex) => {
6613
+ const imageSrc = isRecord3(opt) ? opt.imageSrc : void 0;
6614
+ if (!isNonEmptyTrimmedString(imageSrc)) {
6615
+ issues.push({
6616
+ id: `field.imageOptions.imageSrc.required.${fieldKey}.${optIndex}`,
6617
+ level: "error",
6618
+ message: "imageSrc\uB294 \uD544\uC218\uC785\uB2C8\uB2E4",
6619
+ fieldName: field.name
6620
+ });
6621
+ }
6622
+ });
6623
+ }
6624
+ }
6625
+ const validation = field.validation;
6626
+ if (validation) {
6627
+ if (isFiniteNumber(validation.min) && isFiniteNumber(validation.max)) {
6628
+ if (validation.min > validation.max) {
6629
+ issues.push({
6630
+ id: `field.validation.minmax.${fieldKey}`,
6631
+ level: "error",
6632
+ message: "validation.min\uC740 validation.max \uC774\uD558\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",
6633
+ fieldName: field.name
6634
+ });
6635
+ }
6636
+ }
6637
+ if (isNonEmptyTrimmedString(validation.pattern)) {
6638
+ if (!canCompileRegExp(validation.pattern)) {
6639
+ issues.push({
6640
+ id: `field.validation.pattern.${fieldKey}`,
6641
+ level: "error",
6642
+ message: "validation.pattern\uC774 \uC62C\uBC14\uB978 \uC815\uADDC\uC2DD\uC774 \uC544\uB2D9\uB2C8\uB2E4",
6643
+ fieldName: field.name
6644
+ });
6645
+ }
6646
+ }
6647
+ }
6648
+ });
6649
+ return issues;
6650
+ }
6651
+ function hasErrorIssues(issues) {
6652
+ return issues.some((i) => i.level === "error");
6653
+ }
6654
+ function updateSchemaFields(schema, nextFields) {
6655
+ return { fields: nextFields };
6656
+ }
6657
+ function moveField(fields, fromIndex, toIndex) {
6658
+ if (fromIndex < 0 || fromIndex >= fields.length) return fields;
6659
+ if (toIndex < 0 || toIndex >= fields.length) return fields;
6660
+ if (fromIndex === toIndex) return fields;
6661
+ const next = [...fields];
6662
+ const [item] = next.splice(fromIndex, 1);
6663
+ next.splice(toIndex, 0, item);
6664
+ return next;
6665
+ }
6666
+ function duplicateField(fields, index) {
6667
+ if (index < 0 || index >= fields.length) return fields;
6668
+ const target = fields[index];
6669
+ const nextName = createUniqueFieldName(fields, target.name);
6670
+ const cloned = __spreadProps(__spreadValues({}, target), { name: nextName });
6671
+ const next = [...fields];
6672
+ next.splice(index + 1, 0, cloned);
6673
+ return next;
6674
+ }
6675
+ function updateFieldCommonProps(field, next) {
6676
+ const { name, label, description, required } = next;
6677
+ return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, field), name !== void 0 ? { name } : {}), label !== void 0 ? { label } : {}), description !== void 0 ? { description } : {}), required !== void 0 ? { required } : {});
6678
+ }
6679
+ function updateFieldValidation(field, next) {
6680
+ if (!next) {
6681
+ const _a = field, { validation: _validation } = _a, rest = __objRest(_a, ["validation"]);
6682
+ return rest;
6683
+ }
6684
+ return __spreadProps(__spreadValues({}, field), { validation: next });
6685
+ }
6686
+ function updateTextPlaceholder(field, placeholder) {
6687
+ const type = field.type;
6688
+ if (type === "short_text" || type === "long_text" || type === "number" || type === "email" || type === "dropdown") {
6689
+ return __spreadProps(__spreadValues({}, field), { placeholder });
6690
+ }
6691
+ return field;
6692
+ }
6693
+ function updateOrientation(field, orientation) {
6694
+ const type = field.type;
6695
+ if (type === "choice" || type === "choices") return __spreadProps(__spreadValues({}, field), { orientation });
6696
+ return field;
6697
+ }
6698
+ function updateOptions(field, options) {
6699
+ const type = field.type;
6700
+ if (type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices") {
6701
+ return __spreadProps(__spreadValues({}, field), { options });
6702
+ }
6703
+ return field;
6704
+ }
6705
+ function updateImageOptions(field, options) {
6706
+ if (field.type === "image_radio_card") {
6707
+ return __spreadProps(__spreadValues({}, field), { options });
6708
+ }
6709
+ return field;
6710
+ }
6711
+ function updateImageLayout(field, next) {
6712
+ if (field.type !== "image_radio_card") return field;
6713
+ return __spreadValues(__spreadValues({}, field), next);
6714
+ }
6715
+ function resetFieldType(field, nextType, allFields) {
6716
+ const base = createDefaultField(nextType, allFields);
6717
+ return __spreadProps(__spreadValues({}, base), {
6718
+ name: field.name,
6719
+ label: field.label,
6720
+ description: field.description,
6721
+ required: field.required,
6722
+ validation: field.validation
6723
+ });
6724
+ }
6725
+
6726
+ // src/molecules/dynamic-form-editor-field-editor-panel.tsx
6727
+ var import_react47 = require("react");
6278
6728
  var import_themes56 = require("@radix-ui/themes");
6729
+ var import_jsx_runtime93 = require("react/jsx-runtime");
6730
+ function isRecord4(value) {
6731
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6732
+ }
6733
+ function isFieldType(value, types) {
6734
+ return types.some((t) => t === value);
6735
+ }
6736
+ function parseOptionalNumber(value) {
6737
+ const trimmed = value.trim();
6738
+ if (trimmed.length === 0) return void 0;
6739
+ const num = Number(trimmed);
6740
+ return Number.isFinite(num) ? num : void 0;
6741
+ }
6742
+ function getValidation(field) {
6743
+ return field.validation ? field.validation : {};
6744
+ }
6745
+ function cleanValidation(next) {
6746
+ const hasAny = next.min !== void 0 || next.max !== void 0 || typeof next.pattern === "string" && next.pattern.trim().length > 0 || typeof next.message === "string" && next.message.trim().length > 0;
6747
+ return hasAny ? next : void 0;
6748
+ }
6749
+ function moveItem(items, fromIndex, toIndex) {
6750
+ if (fromIndex < 0 || fromIndex >= items.length) return items;
6751
+ if (toIndex < 0 || toIndex >= items.length) return items;
6752
+ if (fromIndex === toIndex) return items;
6753
+ const next = [...items];
6754
+ const [item] = next.splice(fromIndex, 1);
6755
+ next.splice(toIndex, 0, item);
6756
+ return next;
6757
+ }
6758
+ function getOptionDrafts(field) {
6759
+ const raw = field.options;
6760
+ if (!Array.isArray(raw)) return [];
6761
+ return raw.map((o) => {
6762
+ if (!isRecord4(o)) return null;
6763
+ const label = typeof o.label === "string" ? o.label : "";
6764
+ const valueRaw = o.value;
6765
+ const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
6766
+ return { label, value };
6767
+ }).filter((v) => v !== null);
6768
+ }
6769
+ function getImageOptionDrafts(field) {
6770
+ const raw = field.options;
6771
+ if (!Array.isArray(raw)) return [];
6772
+ return raw.map(
6773
+ (o) => {
6774
+ if (!isRecord4(o)) return null;
6775
+ const label = typeof o.label === "string" ? o.label : "";
6776
+ const valueRaw = o.value;
6777
+ const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
6778
+ const imageSrc = typeof o.imageSrc === "string" ? o.imageSrc : "";
6779
+ const alt = typeof o.alt === "string" ? o.alt : void 0;
6780
+ return __spreadValues({ label, value, imageSrc }, alt ? { alt } : {});
6781
+ }
6782
+ ).filter(
6783
+ (v) => v !== null
6784
+ );
6785
+ }
6786
+ function toFieldOptions(options) {
6787
+ return options.map((o) => ({ label: o.label, value: o.value }));
6788
+ }
6789
+ function toImageFieldOptions(options) {
6790
+ return options.map((o) => __spreadValues({
6791
+ label: o.label,
6792
+ value: o.value,
6793
+ imageSrc: o.imageSrc
6794
+ }, o.alt !== void 0 ? { alt: o.alt } : {}));
6795
+ }
6796
+ function DynamicFormEditorFieldEditorPanel(props) {
6797
+ const {
6798
+ field,
6799
+ fieldIndex,
6800
+ fields,
6801
+ readonly,
6802
+ fieldTypes,
6803
+ onRenameField,
6804
+ onUpdateField,
6805
+ onDeleteField,
6806
+ onMoveField,
6807
+ onDuplicateField
6808
+ } = props;
6809
+ const canMoveUp = fieldIndex > 0;
6810
+ const canMoveDown = fieldIndex >= 0 && fieldIndex < fields.length - 1;
6811
+ const placeholderValue = (0, import_react47.useMemo)(() => {
6812
+ if (!field) return "";
6813
+ return String(field.placeholder || "");
6814
+ }, [field]);
6815
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { flex: 1, minWidth: 520, padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "4", children: [
6816
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
6817
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC \uD3B8\uC9D1" }),
6818
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
6819
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6820
+ IconButton,
6821
+ {
6822
+ "aria-label": "\uD544\uB4DC \uC704\uB85C",
6823
+ disabled: readonly || !field || !canMoveUp,
6824
+ onClick: () => {
6825
+ onMoveField("up");
6826
+ },
6827
+ variant: "soft",
6828
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
6829
+ }
6830
+ ),
6831
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6832
+ IconButton,
6833
+ {
6834
+ "aria-label": "\uD544\uB4DC \uC544\uB798\uB85C",
6835
+ disabled: readonly || !field || !canMoveDown,
6836
+ onClick: () => {
6837
+ onMoveField("down");
6838
+ },
6839
+ variant: "soft",
6840
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
6841
+ }
6842
+ ),
6843
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6844
+ IconButton,
6845
+ {
6846
+ "aria-label": "\uD544\uB4DC \uBCF5\uC81C",
6847
+ disabled: readonly || !field,
6848
+ onClick: onDuplicateField,
6849
+ variant: "soft",
6850
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.CopyIcon, {})
6851
+ }
6852
+ ),
6853
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6854
+ IconButton,
6855
+ {
6856
+ "aria-label": "\uD544\uB4DC \uC0AD\uC81C",
6857
+ disabled: readonly || !field,
6858
+ onClick: onDeleteField,
6859
+ variant: "soft",
6860
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
6861
+ }
6862
+ )
6863
+ ] })
6864
+ ] }),
6865
+ !field ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { color: "gray", variant: "caption", children: "\uC67C\uCABD\uC5D0\uC11C \uD544\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694." }) : /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
6866
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
6867
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
6868
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "name" }),
6869
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6870
+ TextField.Root,
6871
+ {
6872
+ disabled: readonly,
6873
+ onChange: (e) => {
6874
+ onRenameField(e.target.value);
6875
+ },
6876
+ value: field.name
6877
+ }
6878
+ )
6879
+ ] }),
6880
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
6881
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
6882
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6883
+ TextField.Root,
6884
+ {
6885
+ disabled: readonly,
6886
+ onChange: (e) => {
6887
+ onUpdateField(updateFieldCommonProps(field, { label: e.target.value }));
6888
+ },
6889
+ value: field.label
6890
+ }
6891
+ )
6892
+ ] })
6893
+ ] }),
6894
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
6895
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
6896
+ Select.Root,
6897
+ {
6898
+ disabled: readonly,
6899
+ onValueChange: (v) => {
6900
+ if (!isFieldType(v, fieldTypes)) return;
6901
+ onUpdateField(resetFieldType(field, v, fields));
6902
+ },
6903
+ value: field.type,
6904
+ children: [
6905
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
6906
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Content, { children: fieldTypes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: t, children: getFieldTypeLabel(t) }, t)) })
6907
+ ]
6908
+ }
6909
+ ),
6910
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
6911
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6912
+ Checkbox,
6913
+ {
6914
+ checked: Boolean(field.required),
6915
+ disabled: readonly,
6916
+ onCheckedChange: (checked) => {
6917
+ onUpdateField(updateFieldCommonProps(field, { required: checked }));
6918
+ }
6919
+ }
6920
+ ),
6921
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "\uD544\uC218" })
6922
+ ] })
6923
+ ] }),
6924
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
6925
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "description" }),
6926
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6927
+ TextArea,
6928
+ {
6929
+ disabled: readonly,
6930
+ onChange: (e) => {
6931
+ onUpdateField(
6932
+ updateFieldCommonProps(field, { description: e.target.value })
6933
+ );
6934
+ },
6935
+ rows: 3,
6936
+ value: field.description || ""
6937
+ }
6938
+ )
6939
+ ] }),
6940
+ field.type === "short_text" || field.type === "long_text" || field.type === "number" || field.type === "email" || field.type === "dropdown" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
6941
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "placeholder" }),
6942
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6943
+ TextField.Root,
6944
+ {
6945
+ disabled: readonly,
6946
+ onChange: (e) => {
6947
+ onUpdateField(updateTextPlaceholder(field, e.target.value));
6948
+ },
6949
+ value: placeholderValue
6950
+ }
6951
+ )
6952
+ ] }) : null,
6953
+ field.type === "choice" || field.type === "choices" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
6954
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "orientation" }),
6955
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
6956
+ Select.Root,
6957
+ {
6958
+ disabled: readonly,
6959
+ onValueChange: (v) => {
6960
+ const nextOrientation = v === "horizontal" ? "horizontal" : "vertical";
6961
+ onUpdateField(updateOrientation(field, nextOrientation));
6962
+ },
6963
+ value: field.orientation || "vertical",
6964
+ children: [
6965
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
6966
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
6967
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "vertical", children: "vertical" }),
6968
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "horizontal", children: "horizontal" })
6969
+ ] })
6970
+ ]
6971
+ }
6972
+ )
6973
+ ] }) : null,
6974
+ field.type === "dropdown" || field.type === "choice" || field.type === "radio_cards" || field.type === "choices" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
6975
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
6976
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "options" }),
6977
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
6978
+ Button,
6979
+ {
6980
+ disabled: readonly,
6981
+ onClick: () => {
6982
+ const drafts = getOptionDrafts(field);
6983
+ const nextDrafts = [
6984
+ ...drafts,
6985
+ {
6986
+ label: `\uC635\uC158 ${drafts.length + 1}`,
6987
+ value: `option${drafts.length + 1}`
6988
+ }
6989
+ ];
6990
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
6991
+ },
6992
+ size: "small",
6993
+ variant: "soft",
6994
+ children: [
6995
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
6996
+ " \uCD94\uAC00"
6997
+ ]
6998
+ }
6999
+ )
7000
+ ] }),
7001
+ getOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
7002
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7003
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
7004
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7005
+ TextField.Root,
7006
+ {
7007
+ disabled: readonly,
7008
+ onChange: (e) => {
7009
+ const drafts = getOptionDrafts(field);
7010
+ const nextDrafts = drafts.map(
7011
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
7012
+ );
7013
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7014
+ },
7015
+ value: opt.label
7016
+ }
7017
+ )
7018
+ ] }),
7019
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7020
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
7021
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7022
+ TextField.Root,
7023
+ {
7024
+ disabled: readonly,
7025
+ onChange: (e) => {
7026
+ const drafts = getOptionDrafts(field);
7027
+ const nextDrafts = drafts.map(
7028
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
7029
+ );
7030
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7031
+ },
7032
+ value: opt.value
7033
+ }
7034
+ )
7035
+ ] }),
7036
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "1", children: [
7037
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7038
+ IconButton,
7039
+ {
7040
+ "aria-label": "\uC635\uC158 \uC704\uB85C",
7041
+ disabled: readonly || i === 0,
7042
+ onClick: () => {
7043
+ const drafts = getOptionDrafts(field);
7044
+ const nextDrafts = moveItem(drafts, i, i - 1);
7045
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7046
+ },
7047
+ variant: "soft",
7048
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
7049
+ }
7050
+ ),
7051
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7052
+ IconButton,
7053
+ {
7054
+ "aria-label": "\uC635\uC158 \uC544\uB798\uB85C",
7055
+ disabled: readonly || i === getOptionDrafts(field).length - 1,
7056
+ onClick: () => {
7057
+ const drafts = getOptionDrafts(field);
7058
+ const nextDrafts = moveItem(drafts, i, i + 1);
7059
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7060
+ },
7061
+ variant: "soft",
7062
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
7063
+ }
7064
+ ),
7065
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7066
+ IconButton,
7067
+ {
7068
+ "aria-label": "\uC635\uC158 \uC0AD\uC81C",
7069
+ disabled: readonly,
7070
+ onClick: () => {
7071
+ const drafts = getOptionDrafts(field);
7072
+ const nextDrafts = drafts.filter((_, idx) => idx !== i);
7073
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7074
+ },
7075
+ variant: "soft",
7076
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
7077
+ }
7078
+ )
7079
+ ] })
7080
+ ] }, `${opt.value}-${opt.label}`))
7081
+ ] }) }) : null,
7082
+ field.type === "image_radio_card" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
7083
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7084
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "image options" }),
7085
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
7086
+ Button,
7087
+ {
7088
+ disabled: readonly,
7089
+ onClick: () => {
7090
+ const drafts = getImageOptionDrafts(field);
7091
+ const nextDrafts = [
7092
+ ...drafts,
7093
+ {
7094
+ label: `\uC774\uBBF8\uC9C0 ${drafts.length + 1}`,
7095
+ value: `option${drafts.length + 1}`,
7096
+ imageSrc: "https://placehold.co/300x300/png?text=new"
7097
+ }
7098
+ ];
7099
+ onUpdateField(updateImageOptions(field, toImageFieldOptions(nextDrafts)));
7100
+ },
7101
+ size: "small",
7102
+ variant: "soft",
7103
+ children: [
7104
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
7105
+ " \uCD94\uAC00"
7106
+ ]
7107
+ }
7108
+ )
7109
+ ] }),
7110
+ getImageOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7111
+ Card,
7112
+ {
7113
+ style: { padding: 10 },
7114
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7115
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
7116
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7117
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
7118
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7119
+ TextField.Root,
7120
+ {
7121
+ disabled: readonly,
7122
+ onChange: (e) => {
7123
+ const drafts = getImageOptionDrafts(field);
7124
+ const nextDrafts = drafts.map(
7125
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
7126
+ );
7127
+ onUpdateField(
7128
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7129
+ );
7130
+ },
7131
+ value: opt.label
7132
+ }
7133
+ )
7134
+ ] }),
7135
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7136
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
7137
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7138
+ TextField.Root,
7139
+ {
7140
+ disabled: readonly,
7141
+ onChange: (e) => {
7142
+ const drafts = getImageOptionDrafts(field);
7143
+ const nextDrafts = drafts.map(
7144
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
7145
+ );
7146
+ onUpdateField(
7147
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7148
+ );
7149
+ },
7150
+ value: opt.value
7151
+ }
7152
+ )
7153
+ ] })
7154
+ ] }),
7155
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7156
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageSrc" }),
7157
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7158
+ TextField.Root,
7159
+ {
7160
+ disabled: readonly,
7161
+ onChange: (e) => {
7162
+ const drafts = getImageOptionDrafts(field);
7163
+ const nextDrafts = drafts.map(
7164
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { imageSrc: e.target.value }) : d
7165
+ );
7166
+ onUpdateField(
7167
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7168
+ );
7169
+ },
7170
+ value: opt.imageSrc
7171
+ }
7172
+ )
7173
+ ] }),
7174
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
7175
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7176
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "alt" }),
7177
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7178
+ TextField.Root,
7179
+ {
7180
+ disabled: readonly,
7181
+ onChange: (e) => {
7182
+ const drafts = getImageOptionDrafts(field);
7183
+ const nextAlt = e.target.value.trim().length === 0 ? void 0 : e.target.value;
7184
+ const nextDrafts = drafts.map(
7185
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { alt: nextAlt }) : d
7186
+ );
7187
+ onUpdateField(
7188
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7189
+ );
7190
+ },
7191
+ value: opt.alt || ""
7192
+ }
7193
+ )
7194
+ ] }),
7195
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7196
+ IconButton,
7197
+ {
7198
+ "aria-label": "\uC774\uBBF8\uC9C0 \uC635\uC158 \uC0AD\uC81C",
7199
+ disabled: readonly,
7200
+ onClick: () => {
7201
+ const drafts = getImageOptionDrafts(field);
7202
+ const nextDrafts = drafts.filter((_, idx) => idx !== i);
7203
+ onUpdateField(
7204
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7205
+ );
7206
+ },
7207
+ variant: "soft",
7208
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
7209
+ }
7210
+ )
7211
+ ] })
7212
+ ] })
7213
+ },
7214
+ `${opt.value}-${opt.label}-${opt.imageSrc}`
7215
+ )),
7216
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
7217
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7218
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridColumnsCount" }),
7219
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7220
+ TextField.Root,
7221
+ {
7222
+ disabled: readonly,
7223
+ inputMode: "numeric",
7224
+ onChange: (e) => {
7225
+ onUpdateField(
7226
+ updateImageLayout(field, {
7227
+ gridColumnsCount: parseOptionalNumber(e.target.value)
7228
+ })
7229
+ );
7230
+ },
7231
+ value: String(field.gridColumnsCount || "")
7232
+ }
7233
+ )
7234
+ ] }),
7235
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7236
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridItemHeight" }),
7237
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7238
+ TextField.Root,
7239
+ {
7240
+ disabled: readonly,
7241
+ onChange: (e) => {
7242
+ onUpdateField(
7243
+ updateImageLayout(field, { gridItemHeight: e.target.value })
7244
+ );
7245
+ },
7246
+ value: String(field.gridItemHeight || "")
7247
+ }
7248
+ )
7249
+ ] }),
7250
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7251
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridGap" }),
7252
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7253
+ TextField.Root,
7254
+ {
7255
+ disabled: readonly,
7256
+ onChange: (e) => {
7257
+ onUpdateField(updateImageLayout(field, { gridGap: e.target.value }));
7258
+ },
7259
+ value: String(field.gridGap || "")
7260
+ }
7261
+ )
7262
+ ] })
7263
+ ] }),
7264
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7265
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageFit" }),
7266
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
7267
+ Select.Root,
7268
+ {
7269
+ disabled: readonly,
7270
+ onValueChange: (v) => {
7271
+ const nextFit = v === "contain" ? "contain" : "cover";
7272
+ onUpdateField(updateImageLayout(field, { imageFit: nextFit }));
7273
+ },
7274
+ value: field.imageFit || "cover",
7275
+ children: [
7276
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
7277
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
7278
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "cover", children: "cover" }),
7279
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "contain", children: "contain" })
7280
+ ] })
7281
+ ]
7282
+ }
7283
+ )
7284
+ ] })
7285
+ ] }) }) : null,
7286
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7287
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "validation" }),
7288
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
7289
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7290
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "min" }),
7291
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7292
+ TextField.Root,
7293
+ {
7294
+ disabled: readonly,
7295
+ inputMode: "numeric",
7296
+ onChange: (e) => {
7297
+ const current = getValidation(field);
7298
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
7299
+ min: parseOptionalNumber(e.target.value)
7300
+ }));
7301
+ onUpdateField(updateFieldValidation(field, next));
7302
+ },
7303
+ value: getValidation(field).min !== void 0 ? String(getValidation(field).min) : ""
7304
+ }
7305
+ )
7306
+ ] }),
7307
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7308
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "max" }),
7309
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7310
+ TextField.Root,
7311
+ {
7312
+ disabled: readonly,
7313
+ inputMode: "numeric",
7314
+ onChange: (e) => {
7315
+ const current = getValidation(field);
7316
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
7317
+ max: parseOptionalNumber(e.target.value)
7318
+ }));
7319
+ onUpdateField(updateFieldValidation(field, next));
7320
+ },
7321
+ value: getValidation(field).max !== void 0 ? String(getValidation(field).max) : ""
7322
+ }
7323
+ )
7324
+ ] })
7325
+ ] }),
7326
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7327
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "pattern" }),
7328
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7329
+ TextField.Root,
7330
+ {
7331
+ disabled: readonly,
7332
+ onChange: (e) => {
7333
+ const current = getValidation(field);
7334
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), { pattern: e.target.value }));
7335
+ onUpdateField(updateFieldValidation(field, next));
7336
+ },
7337
+ value: String(getValidation(field).pattern || "")
7338
+ }
7339
+ )
7340
+ ] }),
7341
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7342
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "message" }),
7343
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7344
+ TextField.Root,
7345
+ {
7346
+ disabled: readonly,
7347
+ onChange: (e) => {
7348
+ const current = getValidation(field);
7349
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), { message: e.target.value }));
7350
+ onUpdateField(updateFieldValidation(field, next));
7351
+ },
7352
+ value: String(getValidation(field).message || "")
7353
+ }
7354
+ )
7355
+ ] })
7356
+ ] }) })
7357
+ ] })
7358
+ ] }) });
7359
+ }
7360
+
7361
+ // src/molecules/dynamic-form-editor-field-list-panel.tsx
7362
+ var import_react48 = require("react");
7363
+ var import_themes57 = require("@radix-ui/themes");
7364
+ var import_jsx_runtime94 = require("react/jsx-runtime");
7365
+ function isFieldType2(value, types) {
7366
+ return types.some((t) => t === value);
7367
+ }
7368
+ function DynamicFormEditorFieldListPanel(props) {
7369
+ const {
7370
+ fields,
7371
+ selectedFieldName,
7372
+ readonly,
7373
+ fieldTypes,
7374
+ hasFieldError,
7375
+ onSelectFieldName,
7376
+ onAddField
7377
+ } = props;
7378
+ const isEmpty = fields.length === 0;
7379
+ const triggerPlaceholder = (0, import_react48.useMemo)(() => {
7380
+ return readonly ? "\uCD94\uAC00(\uC77D\uAE30 \uC804\uC6A9)" : "\uCD94\uAC00";
7381
+ }, [readonly]);
7382
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Card, { style: { width: 340, padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
7383
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7384
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC" }),
7385
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
7386
+ Select.Root,
7387
+ {
7388
+ disabled: readonly,
7389
+ onValueChange: (v) => {
7390
+ if (!isFieldType2(v, fieldTypes)) return;
7391
+ onAddField(v);
7392
+ },
7393
+ value: "",
7394
+ children: [
7395
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Trigger, { placeholder: triggerPlaceholder }),
7396
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Content, { children: fieldTypes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Item, { value: t, children: getFieldTypeLabel(t) }, t)) })
7397
+ ]
7398
+ }
7399
+ )
7400
+ ] }),
7401
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7402
+ isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { color: "gray", variant: "caption", children: "\uC544\uC9C1 \uD544\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) : null,
7403
+ fields.map((field) => {
7404
+ const isSelected = field.name === selectedFieldName;
7405
+ const hasError = hasFieldError(field.name);
7406
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7407
+ Card,
7408
+ {
7409
+ error: isSelected ? hasError : void 0,
7410
+ onClick: () => {
7411
+ onSelectFieldName(field.name);
7412
+ },
7413
+ style: {
7414
+ padding: 10,
7415
+ cursor: "pointer",
7416
+ opacity: readonly ? 0.8 : 1,
7417
+ border: isSelected ? "1px solid var(--accent-9)" : "1px solid transparent"
7418
+ },
7419
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes57.Box, { style: { minWidth: 0 }, children: [
7420
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7421
+ Typo,
7422
+ {
7423
+ style: {
7424
+ whiteSpace: "nowrap",
7425
+ overflow: "hidden",
7426
+ textOverflow: "ellipsis"
7427
+ },
7428
+ variant: "body",
7429
+ children: field.label
7430
+ }
7431
+ ),
7432
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(Typo, { color: "gray", variant: "caption", children: [
7433
+ field.name,
7434
+ " \xB7 ",
7435
+ field.type,
7436
+ field.required ? " \xB7 required" : ""
7437
+ ] })
7438
+ ] })
7439
+ },
7440
+ field.name
7441
+ );
7442
+ })
7443
+ ] })
7444
+ ] }) });
7445
+ }
7446
+
7447
+ // src/molecules/dynamic-form-editor-issues-panel.tsx
7448
+ var import_jsx_runtime95 = require("react/jsx-runtime");
7449
+ function DynamicFormEditorIssuesPanel(props) {
7450
+ const { issues } = props;
7451
+ if (issues.length === 0) return null;
7452
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7453
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Typo, { variant: "caption", children: "\uC2A4\uD0A4\uB9C8 \uC774\uC288" }),
7454
+ issues.map((i) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
7455
+ Typo,
7456
+ {
7457
+ color: i.level === "error" ? "red" : "gray",
7458
+ variant: "caption",
7459
+ children: [
7460
+ "[",
7461
+ i.level,
7462
+ "] ",
7463
+ i.message,
7464
+ i.fieldName ? ` (field: ${i.fieldName})` : ""
7465
+ ]
7466
+ },
7467
+ i.id
7468
+ ))
7469
+ ] }) });
7470
+ }
7471
+
7472
+ // src/molecules/dynamic-form-editor-preview-panel.tsx
7473
+ var import_jsx_runtime96 = require("react/jsx-runtime");
7474
+ function DynamicFormEditorPreviewPanel(props) {
7475
+ const { show, fields } = props;
7476
+ if (!show) return null;
7477
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Card, { style: { width: 420, padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
7478
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Typo, { variant: "body", children: "\uD504\uB9AC\uBDF0" }),
7479
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DynamicForm.Root, { fields, onSubmit: () => void 0, readonly: true, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DynamicForm.FieldList, { labelVariant: "body" }) })
7480
+ ] }) });
7481
+ }
7482
+
7483
+ // src/molecules/dynamic-form-editor.tsx
7484
+ var import_jsx_runtime97 = require("react/jsx-runtime");
7485
+ function getInitialSchema(value, defaultValue) {
7486
+ if (value !== void 0) return normalizeSchema(value);
7487
+ return normalizeSchema(defaultValue);
7488
+ }
7489
+ function getSelectedField(schema, selectedFieldName) {
7490
+ if (!selectedFieldName) return { field: null, index: -1 };
7491
+ const index = findFieldIndexByName(schema.fields, selectedFieldName);
7492
+ if (index < 0) return { field: null, index: -1 };
7493
+ return { field: schema.fields[index], index };
7494
+ }
7495
+ function DynamicFormEditor(props) {
7496
+ const {
7497
+ value,
7498
+ defaultValue,
7499
+ onChange,
7500
+ onSave,
7501
+ onCancel,
7502
+ readonly = false,
7503
+ showPreview = false
7504
+ } = props;
7505
+ const isControlled = value !== void 0;
7506
+ const [uncontrolledSchema, setUncontrolledSchema] = (0, import_react49.useState)(
7507
+ () => getInitialSchema(void 0, defaultValue)
7508
+ );
7509
+ const effectiveSchema = (0, import_react49.useMemo)(() => {
7510
+ if (isControlled) return normalizeSchema(value);
7511
+ return uncontrolledSchema;
7512
+ }, [isControlled, uncontrolledSchema, value]);
7513
+ const [selectedFieldName, setSelectedFieldName] = (0, import_react49.useState)(() => {
7514
+ var _a, _b;
7515
+ const initialSchema = getInitialSchema(value, defaultValue);
7516
+ return (_b = (_a = initialSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null;
7517
+ });
7518
+ const selected = (0, import_react49.useMemo)(() => {
7519
+ return getSelectedField(effectiveSchema, selectedFieldName);
7520
+ }, [effectiveSchema, selectedFieldName]);
7521
+ const issues = (0, import_react49.useMemo)(() => {
7522
+ return validateDynamicFormSchema(effectiveSchema);
7523
+ }, [effectiveSchema]);
7524
+ const errorFieldNameSet = (0, import_react49.useMemo)(() => {
7525
+ const set = /* @__PURE__ */ new Set();
7526
+ issues.forEach((i) => {
7527
+ if (i.level === "error" && i.fieldName) set.add(i.fieldName);
7528
+ });
7529
+ return set;
7530
+ }, [issues]);
7531
+ const hasFieldError = (0, import_react49.useCallback)(
7532
+ (fieldName) => {
7533
+ return errorFieldNameSet.has(fieldName);
7534
+ },
7535
+ [errorFieldNameSet]
7536
+ );
7537
+ const fieldTypes = (0, import_react49.useMemo)(() => getFieldTypes(), []);
7538
+ (0, import_react49.useEffect)(() => {
7539
+ var _a, _b;
7540
+ if (selectedFieldName && selected.field) return;
7541
+ setSelectedFieldName((_b = (_a = effectiveSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null);
7542
+ }, [effectiveSchema.fields, selected.field, selectedFieldName]);
7543
+ (0, import_react49.useEffect)(() => {
7544
+ if (isControlled) return;
7545
+ setUncontrolledSchema(getInitialSchema(void 0, defaultValue));
7546
+ }, [defaultValue, isControlled]);
7547
+ const applySchema = (0, import_react49.useCallback)(
7548
+ (next) => {
7549
+ onChange == null ? void 0 : onChange(next);
7550
+ if (!isControlled) setUncontrolledSchema(next);
7551
+ },
7552
+ [isControlled, onChange]
7553
+ );
7554
+ const handleAddField = (0, import_react49.useCallback)(
7555
+ (type) => {
7556
+ if (readonly) return;
7557
+ const nextField = createDefaultField(type, effectiveSchema.fields);
7558
+ const nextFields = [...effectiveSchema.fields, nextField];
7559
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7560
+ setSelectedFieldName(nextField.name);
7561
+ },
7562
+ [applySchema, effectiveSchema, readonly]
7563
+ );
7564
+ const handleUpdateSelectedField = (0, import_react49.useCallback)(
7565
+ (nextField) => {
7566
+ if (readonly) return;
7567
+ if (!selected.field || selected.index < 0) return;
7568
+ const nextFields = effectiveSchema.fields.map(
7569
+ (f, i) => i === selected.index ? nextField : f
7570
+ );
7571
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7572
+ },
7573
+ [applySchema, effectiveSchema, readonly, selected.field, selected.index]
7574
+ );
7575
+ const handleRenameSelected = (0, import_react49.useCallback)(
7576
+ (nextName) => {
7577
+ if (readonly) return;
7578
+ const currentField = selected.field;
7579
+ if (!currentField) return;
7580
+ const others = effectiveSchema.fields.filter(
7581
+ (f) => f.name !== currentField.name
7582
+ );
7583
+ const uniqueName = createUniqueFieldName(others, nextName);
7584
+ const nextField = __spreadProps(__spreadValues({}, currentField), { name: uniqueName });
7585
+ handleUpdateSelectedField(nextField);
7586
+ setSelectedFieldName(uniqueName);
7587
+ },
7588
+ [effectiveSchema.fields, handleUpdateSelectedField, readonly, selected.field]
7589
+ );
7590
+ const handleDeleteSelected = (0, import_react49.useCallback)(() => {
7591
+ if (readonly) return;
7592
+ if (!selected.field || selected.index < 0) return;
7593
+ const nextFields = effectiveSchema.fields.filter(
7594
+ (_, i) => i !== selected.index
7595
+ );
7596
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7597
+ let nextSelected = null;
7598
+ if (nextFields.length > selected.index) nextSelected = nextFields[selected.index].name;
7599
+ else if (nextFields.length > 0) nextSelected = nextFields[0].name;
7600
+ setSelectedFieldName(nextSelected);
7601
+ }, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
7602
+ const handleMoveSelected = (0, import_react49.useCallback)(
7603
+ (direction) => {
7604
+ if (readonly) return;
7605
+ if (!selected.field || selected.index < 0) return;
7606
+ const toIndex = direction === "up" ? selected.index - 1 : selected.index + 1;
7607
+ const nextFields = moveField(
7608
+ effectiveSchema.fields,
7609
+ selected.index,
7610
+ toIndex
7611
+ );
7612
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7613
+ },
7614
+ [applySchema, effectiveSchema, readonly, selected.field, selected.index]
7615
+ );
7616
+ const handleDuplicateSelected = (0, import_react49.useCallback)(() => {
7617
+ if (readonly) return;
7618
+ if (!selected.field || selected.index < 0) return;
7619
+ const nextFields = duplicateField(
7620
+ effectiveSchema.fields,
7621
+ selected.index
7622
+ );
7623
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7624
+ const duplicatedIndex = selected.index + 1;
7625
+ const nextSelected = nextFields.length > duplicatedIndex ? nextFields[duplicatedIndex].name : selected.field.name;
7626
+ setSelectedFieldName(nextSelected);
7627
+ }, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
7628
+ const handleSave = (0, import_react49.useCallback)(() => {
7629
+ if (!onSave) return;
7630
+ const result = onSave(effectiveSchema);
7631
+ void result;
7632
+ }, [effectiveSchema, onSave]);
7633
+ const disableSave = readonly || !onSave || hasErrorIssues(issues);
7634
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { align: "start", gap: "4", style: { width: "100%" }, children: [
7635
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7636
+ DynamicFormEditorFieldListPanel,
7637
+ {
7638
+ fieldTypes,
7639
+ fields: effectiveSchema.fields,
7640
+ hasFieldError,
7641
+ onAddField: handleAddField,
7642
+ onSelectFieldName: setSelectedFieldName,
7643
+ readonly,
7644
+ selectedFieldName
7645
+ }
7646
+ ),
7647
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", style: { flex: 1, minWidth: 520 }, children: [
7648
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7649
+ DynamicFormEditorFieldEditorPanel,
7650
+ {
7651
+ field: selected.field,
7652
+ fieldIndex: selected.index,
7653
+ fieldTypes,
7654
+ fields: effectiveSchema.fields,
7655
+ onDeleteField: handleDeleteSelected,
7656
+ onDuplicateField: handleDuplicateSelected,
7657
+ onMoveField: handleMoveSelected,
7658
+ onRenameField: handleRenameSelected,
7659
+ onUpdateField: handleUpdateSelectedField,
7660
+ readonly
7661
+ }
7662
+ ),
7663
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorIssuesPanel, { issues }),
7664
+ onSave || onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { gap: "2", justify: "end", children: [
7665
+ onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: readonly, onClick: onCancel, variant: "soft", children: "\uCDE8\uC18C" }) : null,
7666
+ onSave ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: disableSave, onClick: handleSave, children: "\uC800\uC7A5" }) : null
7667
+ ] }) : null
7668
+ ] }),
7669
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorPreviewPanel, { fields: effectiveSchema.fields, show: showPreview })
7670
+ ] });
7671
+ }
7672
+
7673
+ // src/theme/use-theme.tsx
7674
+ var import_themes58 = require("@radix-ui/themes");
6279
7675
 
6280
7676
  // src/ui-props/index.ts
6281
7677
  var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
6282
7678
 
6283
7679
  // src/charts/horizontal-bar-chart.tsx
6284
- var import_jsx_runtime93 = require("react/jsx-runtime");
7680
+ var import_jsx_runtime98 = require("react/jsx-runtime");
6285
7681
  function HorizontalBarChart(props) {
6286
7682
  const { total, value, backgroundColor, barColor, height } = props;
6287
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7683
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
6288
7684
  "div",
6289
7685
  {
6290
7686
  className: "tipp_horizontal-bar-chart bar-wrapper",
6291
7687
  style: { height, backgroundColor },
6292
- children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7688
+ children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
6293
7689
  "div",
6294
7690
  {
6295
7691
  style: {
6296
7692
  width: `${Math.round(value / total * 100)}%`,
6297
7693
  height: "100%"
6298
7694
  },
6299
- children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "bar", style: { backgroundColor: barColor } })
7695
+ children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "bar", style: { backgroundColor: barColor } })
6300
7696
  }
6301
7697
  )
6302
7698
  }
@@ -6452,23 +7848,23 @@ var EchartDefaultProps = {
6452
7848
  };
6453
7849
 
6454
7850
  // src/app/platform/userInfos/coaching-customer-info/small.tsx
6455
- var import_jsx_runtime94 = require("react/jsx-runtime");
7851
+ var import_jsx_runtime99 = require("react/jsx-runtime");
6456
7852
  function CoachingCustomerInfoSmall({
6457
7853
  customer,
6458
7854
  children,
6459
7855
  badge
6460
7856
  }) {
6461
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
7857
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
6462
7858
  import_themes22.Flex,
6463
7859
  {
6464
7860
  direction: { initial: "column", xs: "row" },
6465
7861
  gap: "3",
6466
7862
  justify: "between",
6467
7863
  children: [
6468
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes23.Grid, { align: "center", columns: "auto auto 1fr", gapX: "3", children: [
6469
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Heading2, { variant: "heading3", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
6470
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { color: "gray", truncate: true, variant: "body", children: customer == null ? void 0 : customer.company }),
6471
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_themes6.Box, { style: { justifySelf: "end" }, children: badge })
7864
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes23.Grid, { align: "center", columns: "auto auto 1fr", gapX: "3", children: [
7865
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { variant: "heading3", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
7866
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", truncate: true, variant: "body", children: customer == null ? void 0 : customer.company }),
7867
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { style: { justifySelf: "end" }, children: badge })
6472
7868
  ] }) }),
6473
7869
  children
6474
7870
  ]
@@ -6479,7 +7875,7 @@ function CoachingCustomerInfoSmall({
6479
7875
  // src/app/platform/userInfos/utils.tsx
6480
7876
  var import_date_fns3 = require("date-fns");
6481
7877
  var import_react_icons10 = require("@radix-ui/react-icons");
6482
- var import_jsx_runtime95 = require("react/jsx-runtime");
7878
+ var import_jsx_runtime100 = require("react/jsx-runtime");
6483
7879
  var infoList = [
6484
7880
  { label: "\uC774\uB984", getValue: (customer) => customer == null ? void 0 : customer.username },
6485
7881
  { label: "\uC131\uBCC4", getValue: (customer) => customer == null ? void 0 : customer.gender },
@@ -6539,21 +7935,21 @@ var sessionList = [
6539
7935
  var renderItem = (args) => {
6540
7936
  const { info, data, onClickCopy } = args;
6541
7937
  const value = info.getValue(data);
6542
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
7938
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [
6543
7939
  info.render ? info.render(value) : value || "-",
6544
- info.copyable && value ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(CopyButton, { onClickCopy, value }) : null
7940
+ info.copyable && value ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(CopyButton, { onClickCopy, value }) : null
6545
7941
  ] });
6546
7942
  };
6547
7943
  var renderDataListItem = (args) => {
6548
7944
  const { info, data, onClickCopy } = args;
6549
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_themes15.DataList.Item, { children: [
6550
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_themes15.DataList.Label, { children: info.label }),
6551
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_themes15.DataList.Value, { children: renderItem({ info, data, onClickCopy }) })
7945
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes15.DataList.Item, { children: [
7946
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Label, { children: info.label }),
7947
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Value, { children: renderItem({ info, data, onClickCopy }) })
6552
7948
  ] }, info.label);
6553
7949
  };
6554
7950
  function CopyButton(props) {
6555
7951
  const { value, onClickCopy } = props;
6556
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
7952
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
6557
7953
  Button,
6558
7954
  {
6559
7955
  color: "gray",
@@ -6562,13 +7958,13 @@ function CopyButton(props) {
6562
7958
  },
6563
7959
  style: { marginLeft: "0", marginTop: "0" },
6564
7960
  variant: "transparent",
6565
- children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_react_icons10.CopyIcon, {})
7961
+ children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_react_icons10.CopyIcon, {})
6566
7962
  }
6567
7963
  );
6568
7964
  }
6569
7965
 
6570
7966
  // src/app/platform/userInfos/coaching-customer-info/medium.tsx
6571
- var import_jsx_runtime96 = require("react/jsx-runtime");
7967
+ var import_jsx_runtime101 = require("react/jsx-runtime");
6572
7968
  function CoachingCustomerInfoMedium({
6573
7969
  customer,
6574
7970
  session,
@@ -6576,28 +7972,28 @@ function CoachingCustomerInfoMedium({
6576
7972
  badge,
6577
7973
  onClickCopy
6578
7974
  }) {
6579
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6580
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes6.Box, { children: [
6581
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
6582
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
7975
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
7976
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes6.Box, { children: [
7977
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
7978
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
6583
7979
  badge
6584
7980
  ] }),
6585
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
7981
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
6586
7982
  ] }),
6587
7983
  children,
6588
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_themes15.DataList.Root, { orientation: "vertical", children: sessionList.map(
7984
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes15.DataList.Root, { orientation: "vertical", children: sessionList.map(
6589
7985
  (el) => renderDataListItem({
6590
7986
  info: el,
6591
7987
  data: session,
6592
7988
  onClickCopy
6593
7989
  })
6594
7990
  ) }) }),
6595
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", children: [
6596
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Heading2, { variant: "heading5", children: "\uACE0\uAC1D \uC815\uBCF4" }),
6597
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_themes39.Separator, { size: "4" })
7991
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", children: [
7992
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading5", children: "\uACE0\uAC1D \uC815\uBCF4" }),
7993
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes39.Separator, { size: "4" })
6598
7994
  ] }),
6599
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_themes22.Flex, { direction: "column", gap: "4", children: infoList.map((el) => {
6600
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Typo, { children: renderItem({
7995
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes22.Flex, { direction: "column", gap: "4", children: infoList.map((el) => {
7996
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Typo, { children: renderItem({
6601
7997
  info: el,
6602
7998
  data: customer,
6603
7999
  onClickCopy
@@ -6607,7 +8003,7 @@ function CoachingCustomerInfoMedium({
6607
8003
  }
6608
8004
 
6609
8005
  // src/app/platform/userInfos/coaching-customer-info/large.tsx
6610
- var import_jsx_runtime97 = require("react/jsx-runtime");
8006
+ var import_jsx_runtime102 = require("react/jsx-runtime");
6611
8007
  function CoachingCustomerInfoLarge({
6612
8008
  customer,
6613
8009
  session,
@@ -6615,24 +8011,24 @@ function CoachingCustomerInfoLarge({
6615
8011
  badge,
6616
8012
  onClickCopy
6617
8013
  }) {
6618
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6619
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes6.Box, { children: [
6620
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
6621
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
8014
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8015
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes6.Box, { children: [
8016
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
8017
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
6622
8018
  badge
6623
8019
  ] }),
6624
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
8020
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
6625
8021
  ] }),
6626
8022
  children,
6627
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
8023
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
6628
8024
  (el) => renderDataListItem({
6629
8025
  info: el,
6630
8026
  data: session,
6631
8027
  onClickCopy
6632
8028
  })
6633
8029
  ) }) }),
6634
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_themes39.Separator, { size: "4" }),
6635
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_themes15.DataList.Root, { children: infoList.map(
8030
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes39.Separator, { size: "4" }),
8031
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: infoList.map(
6636
8032
  (info) => renderDataListItem({
6637
8033
  info,
6638
8034
  data: customer,
@@ -6643,19 +8039,19 @@ function CoachingCustomerInfoLarge({
6643
8039
  }
6644
8040
 
6645
8041
  // src/app/platform/userInfos/coaching-customer-info/index.tsx
6646
- var import_jsx_runtime98 = require("react/jsx-runtime");
8042
+ var import_jsx_runtime103 = require("react/jsx-runtime");
6647
8043
  function CoachingCustomerInfo(props) {
6648
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_jsx_runtime98.Fragment, { children: [
6649
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_themes6.Box, { display: { initial: "block", sm: "none", md: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CoachingCustomerInfoSmall, __spreadValues({}, props)) }),
6650
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_themes6.Box, { display: { initial: "none", sm: "block", md: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CoachingCustomerInfoMedium, __spreadValues({}, props)) }),
6651
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_themes6.Box, { display: { initial: "none", sm: "none", md: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CoachingCustomerInfoLarge, __spreadValues({}, props)) })
8044
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment, { children: [
8045
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_themes6.Box, { display: { initial: "block", sm: "none", md: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CoachingCustomerInfoSmall, __spreadValues({}, props)) }),
8046
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_themes6.Box, { display: { initial: "none", sm: "block", md: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CoachingCustomerInfoMedium, __spreadValues({}, props)) }),
8047
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_themes6.Box, { display: { initial: "none", sm: "none", md: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CoachingCustomerInfoLarge, __spreadValues({}, props)) })
6652
8048
  ] });
6653
8049
  }
6654
8050
 
6655
8051
  // src/app/platform/goal-manage-card-read.tsx
6656
- var import_react47 = require("react");
8052
+ var import_react50 = require("react");
6657
8053
  var import_date_fns4 = require("date-fns");
6658
- var import_jsx_runtime99 = require("react/jsx-runtime");
8054
+ var import_jsx_runtime104 = require("react/jsx-runtime");
6659
8055
  function GoalManageCardRead(props) {
6660
8056
  const {
6661
8057
  title,
@@ -6669,12 +8065,12 @@ function GoalManageCardRead(props) {
6669
8065
  onClickIncomplete,
6670
8066
  onClickComplete
6671
8067
  } = props;
6672
- const [open, setOpen] = (0, import_react47.useState)(Boolean(defaultOpen));
6673
- const onClickOpen = (0, import_react47.useCallback)(() => {
8068
+ const [open, setOpen] = (0, import_react50.useState)(Boolean(defaultOpen));
8069
+ const onClickOpen = (0, import_react50.useCallback)(() => {
6674
8070
  setOpen((p) => !p);
6675
8071
  }, []);
6676
- const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.ChevronUpIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.ChevronDownIcon, {});
6677
- const badgeMeta = (0, import_react47.useMemo)(() => {
8072
+ const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronUpIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronDownIcon, {});
8073
+ const badgeMeta = (0, import_react50.useMemo)(() => {
6678
8074
  if (!completed && dueDate) {
6679
8075
  if (dueDate >= (0, import_date_fns4.startOfDay)(/* @__PURE__ */ new Date()))
6680
8076
  return {
@@ -6685,41 +8081,41 @@ function GoalManageCardRead(props) {
6685
8081
  }
6686
8082
  return null;
6687
8083
  }, [completed, dueDate]);
6688
- const renderSubTitle = (0, import_react47.useCallback)((subTitle) => {
6689
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { mb: "2", variant: "heading5", children: subTitle });
8084
+ const renderSubTitle = (0, import_react50.useCallback)((subTitle) => {
8085
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { mb: "2", variant: "heading5", children: subTitle });
6690
8086
  }, []);
6691
- const renderSubContent = (0, import_react47.useCallback)((content) => {
6692
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { as: "p", color: "gray", children: content });
8087
+ const renderSubContent = (0, import_react50.useCallback)((content) => {
8088
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { as: "p", color: "gray", children: content });
6693
8089
  }, []);
6694
- const renderCompleteButton = (0, import_react47.useCallback)(() => {
8090
+ const renderCompleteButton = (0, import_react50.useCallback)(() => {
6695
8091
  if (completed) {
6696
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Button, { onClick: onClickIncomplete, size: "small", variant: "surface", children: "\uC9C4\uD589\uC911\uC778 \uACFC\uC81C\uB85C \uB3CC\uB824\uB193\uAE30" });
8092
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { onClick: onClickIncomplete, size: "small", variant: "surface", children: "\uC9C4\uD589\uC911\uC778 \uACFC\uC81C\uB85C \uB3CC\uB824\uB193\uAE30" });
6697
8093
  }
6698
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Root, { children: [
6699
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Button, { size: "small", children: [
6700
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.RocketIcon, {}),
8094
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
8095
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { size: "small", children: [
8096
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.RocketIcon, {}),
6701
8097
  "\uB2EC\uC131\uD558\uAE30"
6702
8098
  ] }) }),
6703
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Content, { children: [
6704
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
6705
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
6706
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Button, { color: "gray", size: "small", variant: "outline", children: "\uC544\uB2C8\uC694" }) }),
6707
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Button, { onClick: onClickComplete, size: "small", children: "\uC608" }) })
8099
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
8100
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
8101
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
8102
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { color: "gray", size: "small", variant: "outline", children: "\uC544\uB2C8\uC694" }) }),
8103
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { onClick: onClickComplete, size: "small", children: "\uC608" }) })
6708
8104
  ] })
6709
8105
  ] })
6710
8106
  ] });
6711
8107
  }, [completed, onClickIncomplete, onClickComplete]);
6712
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gapX: "3", children: [
6713
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(IconButton, { onClick: onClickOpen, variant: "ghost", children: icon }),
6714
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { variant: "heading4", children: title }),
6715
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { align: "center", gridColumnStart: "2", justify: "between", mt: "2", children: [
6716
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { align: "center", gap: "3", children: [
6717
- badgeMeta ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Badge, __spreadValues({}, badgeMeta)) : null,
6718
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", children: dueDate ? (0, import_date_fns4.format)(dueDate, "yyyy\uB144 MM\uC6D4 dd\uC77C") : null })
8108
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gapX: "3", children: [
8109
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(IconButton, { onClick: onClickOpen, variant: "ghost", children: icon }),
8110
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { variant: "heading4", children: title }),
8111
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gridColumnStart: "2", justify: "between", mt: "2", children: [
8112
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", children: [
8113
+ badgeMeta ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Badge, __spreadValues({}, badgeMeta)) : null,
8114
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: dueDate ? (0, import_date_fns4.format)(dueDate, "yyyy\uB144 MM\uC6D4 dd\uC77C") : null })
6719
8115
  ] }),
6720
8116
  renderCompleteButton()
6721
8117
  ] }),
6722
- open ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
8118
+ open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
6723
8119
  import_themes39.Separator,
6724
8120
  {
6725
8121
  mb: "4",
@@ -6728,37 +8124,37 @@ function GoalManageCardRead(props) {
6728
8124
  style: { gridColumnStart: "span 2" }
6729
8125
  }
6730
8126
  ) : null,
6731
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { gridColumnStart: "2", p: "0", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Collapse, { open, children: [
6732
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6733
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes6.Box, { children: [
8127
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes6.Box, { gridColumnStart: "2", p: "0", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Collapse, { open, children: [
8128
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8129
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
6734
8130
  renderSubTitle(
6735
8131
  "\uD574\uB2F9 \uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uBA74, \uC544\uB798\uC640 \uAC19\uC740 \uACB0\uACFC\uB97C \uC5BB\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4"
6736
8132
  ),
6737
8133
  renderSubContent(expectedEffect)
6738
8134
  ] }),
6739
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes6.Box, { children: [
8135
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
6740
8136
  renderSubTitle(
6741
8137
  "\uBAA9\uD45C\uB97C \uC774\uB8E8\uAE30\uAE4C\uC9C0 \uBC29\uD574\uAC00 \uB420 \uC218 \uC788\uB294 \uC694\uC18C\uB4E4\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4"
6742
8138
  ),
6743
8139
  renderSubContent(huddle)
6744
8140
  ] })
6745
8141
  ] }),
6746
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", mt: "3", children: [
6747
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Root, { children: [
6748
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Button, { color: "gray", size: "small", variant: "ghost", children: [
6749
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.TrashIcon, {}),
8142
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", mt: "3", children: [
8143
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
8144
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { color: "gray", size: "small", variant: "ghost", children: [
8145
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.TrashIcon, {}),
6750
8146
  "\uC0AD\uC81C\uD558\uAE30"
6751
8147
  ] }) }),
6752
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Content, { children: [
6753
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
6754
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
6755
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Button, { color: "gray", size: "small", variant: "outline", children: "\uC544\uB2C8\uC694" }) }),
6756
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Button, { onClick: onClickDelete, size: "small", children: "\uC608" }) })
8148
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
8149
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
8150
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
8151
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { color: "gray", size: "small", variant: "outline", children: "\uC544\uB2C8\uC694" }) }),
8152
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { onClick: onClickDelete, size: "small", children: "\uC608" }) })
6757
8153
  ] })
6758
8154
  ] })
6759
8155
  ] }),
6760
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Button, { onClick: onClickEdit, size: "small", variant: "surface", children: [
6761
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.Pencil1Icon, {}),
8156
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { onClick: onClickEdit, size: "small", variant: "surface", children: [
8157
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.Pencil1Icon, {}),
6762
8158
  "\uC218\uC815\uD558\uAE30"
6763
8159
  ] })
6764
8160
  ] })
@@ -6767,9 +8163,9 @@ function GoalManageCardRead(props) {
6767
8163
  }
6768
8164
 
6769
8165
  // src/app/platform/goal-manage-card-edit.tsx
6770
- var import_react48 = require("react");
8166
+ var import_react51 = require("react");
6771
8167
  var import_date_fns5 = require("date-fns");
6772
- var import_jsx_runtime100 = require("react/jsx-runtime");
8168
+ var import_jsx_runtime105 = require("react/jsx-runtime");
6773
8169
  var initialValues = {
6774
8170
  goal: "",
6775
8171
  effect: "",
@@ -6780,8 +8176,8 @@ var dummyFn = () => {
6780
8176
  };
6781
8177
  function GoalManageCardEdit(props) {
6782
8178
  const { defaultValues, errors } = props;
6783
- const [values, setValues] = (0, import_react48.useState)(defaultValues || initialValues);
6784
- const onChange = (0, import_react48.useCallback)(
8179
+ const [values, setValues] = (0, import_react51.useState)(defaultValues || initialValues);
8180
+ const onChange = (0, import_react51.useCallback)(
6785
8181
  (v) => {
6786
8182
  var _a;
6787
8183
  setValues((prev) => __spreadValues(__spreadValues({}, prev), v));
@@ -6789,20 +8185,20 @@ function GoalManageCardEdit(props) {
6789
8185
  },
6790
8186
  [props]
6791
8187
  );
6792
- const onClickInit = (0, import_react48.useCallback)(() => {
8188
+ const onClickInit = (0, import_react51.useCallback)(() => {
6793
8189
  var _a;
6794
8190
  setValues(initialValues);
6795
8191
  (_a = props.onChange) == null ? void 0 : _a.call(props, defaultValues || initialValues);
6796
8192
  }, [defaultValues, props]);
6797
- const onClickSubmit = (0, import_react48.useCallback)(() => {
8193
+ const onClickSubmit = (0, import_react51.useCallback)(() => {
6798
8194
  var _a;
6799
8195
  (_a = props.onSubmit) == null ? void 0 : _a.call(props, values);
6800
8196
  }, [props, values]);
6801
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Card, { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Root, { onSubmit: dummyFn, children: [
6802
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6803
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "title", children: [
6804
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uC774\uBC88 \uCF54\uCE6D\uC758 \uBAA9\uD45C\uB294 \uC544\uB798\uC640 \uAC19\uC2B5\uB2C8\uB2E4" }),
6805
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8197
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Card, { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Root, { onSubmit: dummyFn, children: [
8198
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8199
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "title", children: [
8200
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uC774\uBC88 \uCF54\uCE6D\uC758 \uBAA9\uD45C\uB294 \uC544\uB798\uC640 \uAC19\uC2B5\uB2C8\uB2E4" }),
8201
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6806
8202
  TextField.Root,
6807
8203
  {
6808
8204
  error: Boolean(errors == null ? void 0 : errors.goal),
@@ -6813,11 +8209,11 @@ function GoalManageCardEdit(props) {
6813
8209
  value: values.goal
6814
8210
  }
6815
8211
  ),
6816
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.goal), children: errors == null ? void 0 : errors.goal })
8212
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.goal), children: errors == null ? void 0 : errors.goal })
6817
8213
  ] }),
6818
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "effect", children: [
6819
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uAE30\uB300\uD6A8\uACFC" }),
6820
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8214
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "effect", children: [
8215
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uAE30\uB300\uD6A8\uACFC" }),
8216
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6821
8217
  TextArea,
6822
8218
  {
6823
8219
  error: Boolean(errors == null ? void 0 : errors.effect),
@@ -6829,11 +8225,11 @@ function GoalManageCardEdit(props) {
6829
8225
  value: values.effect
6830
8226
  }
6831
8227
  ),
6832
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.effect), children: errors == null ? void 0 : errors.effect })
8228
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.effect), children: errors == null ? void 0 : errors.effect })
6833
8229
  ] }),
6834
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "huddle", children: [
6835
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uBC29\uD574\uC694\uC18C" }),
6836
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8230
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "huddle", children: [
8231
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBC29\uD574\uC694\uC18C" }),
8232
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6837
8233
  TextArea,
6838
8234
  {
6839
8235
  error: Boolean(errors == null ? void 0 : errors.huddle),
@@ -6847,11 +8243,11 @@ function GoalManageCardEdit(props) {
6847
8243
  value: values.huddle
6848
8244
  }
6849
8245
  ),
6850
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.huddle), children: errors == null ? void 0 : errors.huddle })
8246
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.huddle), children: errors == null ? void 0 : errors.huddle })
6851
8247
  ] }),
6852
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "dueDate", children: [
6853
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uBAA9\uD45C \uB2EC\uC131 \uAE30\uD55C\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4" }),
6854
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8248
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "dueDate", children: [
8249
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBAA9\uD45C \uB2EC\uC131 \uAE30\uD55C\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4" }),
8250
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6855
8251
  DatePickerButton,
6856
8252
  {
6857
8253
  format: (v) => (0, import_date_fns5.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C"),
@@ -6862,11 +8258,11 @@ function GoalManageCardEdit(props) {
6862
8258
  selected: values.dueDate
6863
8259
  }
6864
8260
  ),
6865
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.dueDate), children: errors == null ? void 0 : errors.dueDate })
8261
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.dueDate), children: errors == null ? void 0 : errors.dueDate })
6866
8262
  ] })
6867
8263
  ] }),
6868
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
6869
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8264
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
8265
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6870
8266
  Button,
6871
8267
  {
6872
8268
  color: "gray",
@@ -6877,18 +8273,18 @@ function GoalManageCardEdit(props) {
6877
8273
  children: "\uCD08\uAE30\uD654\uD558\uAE30"
6878
8274
  }
6879
8275
  ),
6880
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Button, { onClick: onClickSubmit, size: "small", type: "button", children: "\uC800\uC7A5\uD558\uAE30" })
8276
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { onClick: onClickSubmit, size: "small", type: "button", children: "\uC800\uC7A5\uD558\uAE30" })
6881
8277
  ] })
6882
8278
  ] }) });
6883
8279
  }
6884
8280
 
6885
8281
  // src/app/platform/session-card.tsx
6886
- var import_react51 = require("react");
8282
+ var import_react54 = require("react");
6887
8283
  var import_date_fns6 = require("date-fns");
6888
8284
 
6889
8285
  // src/app/platform/edit-coaching-time.tsx
6890
- var import_react49 = require("react");
6891
- var import_jsx_runtime101 = require("react/jsx-runtime");
8286
+ var import_react52 = require("react");
8287
+ var import_jsx_runtime106 = require("react/jsx-runtime");
6892
8288
  var getValueFromDefaultValue = (args) => {
6893
8289
  return {
6894
8290
  startTime: args.startAt ? getTimeOption(args.startAt) : "00:00",
@@ -6908,14 +8304,14 @@ var getDateFromValue = (date, time) => {
6908
8304
  };
6909
8305
  function EditCoachingTime(props) {
6910
8306
  const { defaultEndAt, defaultStartAt, onClickCancel } = props;
6911
- const [values, setValues] = (0, import_react49.useState)(() => {
8307
+ const [values, setValues] = (0, import_react52.useState)(() => {
6912
8308
  return getValueFromDefaultValue({
6913
8309
  startAt: defaultStartAt,
6914
8310
  endAt: defaultEndAt
6915
8311
  });
6916
8312
  });
6917
- const [timeError, setTimeError] = (0, import_react49.useState)("");
6918
- const checkTimeError = (0, import_react49.useCallback)(
8313
+ const [timeError, setTimeError] = (0, import_react52.useState)("");
8314
+ const checkTimeError = (0, import_react52.useCallback)(
6919
8315
  (startTime, endTime) => {
6920
8316
  const error = startTime >= endTime ? "\uC2DC\uC791\uC2DC\uAC04\uC744 \uC885\uB8CC\uC2DC\uAC04\uBCF4\uB2E4 \uBE60\uB974\uAC8C \uC120\uD0DD\uD574\uC8FC\uC138\uC694." : "";
6921
8317
  if (error) {
@@ -6926,7 +8322,7 @@ function EditCoachingTime(props) {
6926
8322
  },
6927
8323
  []
6928
8324
  );
6929
- const onChangeStartTime = (0, import_react49.useCallback)(
8325
+ const onChangeStartTime = (0, import_react52.useCallback)(
6930
8326
  (v) => {
6931
8327
  checkTimeError(v, values.endTime);
6932
8328
  setValues((prev) => __spreadProps(__spreadValues({}, prev), {
@@ -6935,7 +8331,7 @@ function EditCoachingTime(props) {
6935
8331
  },
6936
8332
  [checkTimeError, values.endTime]
6937
8333
  );
6938
- const onChangeEndTime = (0, import_react49.useCallback)(
8334
+ const onChangeEndTime = (0, import_react52.useCallback)(
6939
8335
  (v) => {
6940
8336
  checkTimeError(values.startTime, v);
6941
8337
  setValues((prev) => __spreadProps(__spreadValues({}, prev), {
@@ -6944,12 +8340,12 @@ function EditCoachingTime(props) {
6944
8340
  },
6945
8341
  [checkTimeError, values.startTime]
6946
8342
  );
6947
- const onChangeDate = (0, import_react49.useCallback)((date) => {
8343
+ const onChangeDate = (0, import_react52.useCallback)((date) => {
6948
8344
  date && setValues((prev) => __spreadProps(__spreadValues({}, prev), {
6949
8345
  date
6950
8346
  }));
6951
8347
  }, []);
6952
- const onClickSave = (0, import_react49.useCallback)(() => {
8348
+ const onClickSave = (0, import_react52.useCallback)(() => {
6953
8349
  if (checkTimeError(values.startTime, values.endTime)) {
6954
8350
  const startAt = getDateFromValue(values.date, values.startTime);
6955
8351
  const endAt = getDateFromValue(values.date, values.endTime);
@@ -6958,10 +8354,10 @@ function EditCoachingTime(props) {
6958
8354
  import_react_toastify2.toast.error("\uC785\uB825 \uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");
6959
8355
  }
6960
8356
  }, [checkTimeError, props, values.date, values.endTime, values.startTime]);
6961
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes6.Box, { width: { initial: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Form.Root, { children: [
6962
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Form.Field, { name: "date", children: [
6963
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Label, { variant: "caption", children: "\uB0A0\uC9DC" }),
6964
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
8357
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { width: { initial: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Root, { children: [
8358
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Field, { name: "date", children: [
8359
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uB0A0\uC9DC" }),
8360
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6965
8361
  DatePickerButton,
6966
8362
  {
6967
8363
  maxDate: /* @__PURE__ */ new Date(),
@@ -6971,7 +8367,7 @@ function EditCoachingTime(props) {
6971
8367
  }
6972
8368
  )
6973
8369
  ] }),
6974
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
8370
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
6975
8371
  import_themes23.Grid,
6976
8372
  {
6977
8373
  align: "center",
@@ -6986,10 +8382,10 @@ function EditCoachingTime(props) {
6986
8382
  mt: "5",
6987
8383
  width: "100%",
6988
8384
  children: [
6989
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Field, { name: "startTime", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Label, { variant: "caption", children: "\uC2DC\uC791 \uC2DC\uAC04" }) }),
6990
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", {}),
6991
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Field, { name: "endTime", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Label, { variant: "caption", children: "\uC885\uB8CC \uC2DC\uAC04" }) }),
6992
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
8385
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Field, { name: "startTime", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uC2DC\uC791 \uC2DC\uAC04" }) }),
8386
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", {}),
8387
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Field, { name: "endTime", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uC885\uB8CC \uC2DC\uAC04" }) }),
8388
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6993
8389
  TimeSelect,
6994
8390
  {
6995
8391
  onValueChange: onChangeStartTime,
@@ -6997,8 +8393,8 @@ function EditCoachingTime(props) {
6997
8393
  value: values.startTime
6998
8394
  }
6999
8395
  ),
7000
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes6.Box, { overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes39.Separator, {}) }),
7001
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
8396
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes39.Separator, {}) }),
8397
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
7002
8398
  TimeSelect,
7003
8399
  {
7004
8400
  onValueChange: onChangeEndTime,
@@ -7006,36 +8402,36 @@ function EditCoachingTime(props) {
7006
8402
  value: values.endTime
7007
8403
  }
7008
8404
  ),
7009
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Field, { name: "startEndTime", style: { gridColumn: "1/span 3" }, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Message, { forceMatch: Boolean(timeError), children: timeError }) })
8405
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Field, { name: "startEndTime", style: { gridColumn: "1/span 3" }, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Message, { forceMatch: Boolean(timeError), children: timeError }) })
7010
8406
  ]
7011
8407
  }
7012
8408
  ),
7013
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", children: [
7014
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Button, { onClick: onClickCancel, type: "button", variant: "outline", children: "\uCDE8\uC18C\uD558\uAE30" }) }),
7015
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Button, { onClick: onClickSave, type: "button", children: "\uC800\uC7A5\uD558\uAE30" }) })
8409
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", children: [
8410
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickCancel, type: "button", variant: "outline", children: "\uCDE8\uC18C\uD558\uAE30" }) }),
8411
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickSave, type: "button", children: "\uC800\uC7A5\uD558\uAE30" }) })
7016
8412
  ] })
7017
8413
  ] }) });
7018
8414
  }
7019
8415
 
7020
8416
  // src/app/platform/edit-service-type.tsx
7021
- var import_react50 = require("react");
8417
+ var import_react53 = require("react");
7022
8418
 
7023
8419
  // src/app/platform/on-offline-radio-card.tsx
7024
8420
  var import_react_icons11 = require("@radix-ui/react-icons");
7025
- var import_jsx_runtime102 = require("react/jsx-runtime");
8421
+ var import_jsx_runtime107 = require("react/jsx-runtime");
7026
8422
  var SERVICE_TYPE = {
7027
8423
  onlineCoaching: "onlineCoaching",
7028
8424
  offlineCoaching: "offlineCoaching"
7029
8425
  };
7030
8426
  var breakpoint = "sm";
7031
8427
  function HideSmallBox(props) {
7032
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes6.Box, { display: { initial: "none", [breakpoint]: "block" }, children: props.children });
8428
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_themes6.Box, { display: { initial: "none", [breakpoint]: "block" }, children: props.children });
7033
8429
  }
7034
8430
  function OnOfflineRadioCard(props) {
7035
8431
  const Wrapper = props.response ? HideSmallBox : (p) => p.children;
7036
8432
  const columns = props.response ? { initial: "2", [breakpoint]: "1" } : "1";
7037
8433
  const justify = props.response ? { initial: "center", [breakpoint]: "between" } : "between";
7038
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
8434
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
7039
8435
  RadioButtonCard.Root,
7040
8436
  __spreadProps(__spreadValues({
7041
8437
  RadioWrapper: Wrapper,
@@ -7044,13 +8440,13 @@ function OnOfflineRadioCard(props) {
7044
8440
  justify
7045
8441
  }, props), {
7046
8442
  children: [
7047
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(RadioButtonCard.Item, { value: SERVICE_TYPE.onlineCoaching, children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
7048
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_react_icons11.GlobeIcon, {}) }),
7049
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Typo, { children: "\uC628\uB77C\uC778" })
8443
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadioButtonCard.Item, { value: SERVICE_TYPE.onlineCoaching, children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
8444
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.GlobeIcon, {}) }),
8445
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC628\uB77C\uC778" })
7050
8446
  ] }) }),
7051
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(RadioButtonCard.Item, { value: SERVICE_TYPE.offlineCoaching, children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
7052
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_react_icons11.BackpackIcon, {}) }),
7053
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Typo, { children: "\uC624\uD504\uB77C\uC778" })
8447
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadioButtonCard.Item, { value: SERVICE_TYPE.offlineCoaching, children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
8448
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.BackpackIcon, {}) }),
8449
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC624\uD504\uB77C\uC778" })
7054
8450
  ] }) })
7055
8451
  ]
7056
8452
  })
@@ -7058,18 +8454,18 @@ function OnOfflineRadioCard(props) {
7058
8454
  }
7059
8455
 
7060
8456
  // src/app/platform/edit-service-type.tsx
7061
- var import_jsx_runtime103 = require("react/jsx-runtime");
8457
+ var import_jsx_runtime108 = require("react/jsx-runtime");
7062
8458
  function EditServiceType(props) {
7063
8459
  const { defaultServiceType, onClickCancel } = props;
7064
- const [sessionType, setSessionType] = (0, import_react50.useState)(
8460
+ const [sessionType, setSessionType] = (0, import_react53.useState)(
7065
8461
  defaultServiceType
7066
8462
  );
7067
- const onClickSave = (0, import_react50.useCallback)(() => {
8463
+ const onClickSave = (0, import_react53.useCallback)(() => {
7068
8464
  var _a;
7069
8465
  (_a = props.onClickSave) == null ? void 0 : _a.call(props, sessionType);
7070
8466
  }, [props, sessionType]);
7071
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_themes6.Box, { children: [
7072
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8467
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes6.Box, { children: [
8468
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
7073
8469
  Typo,
7074
8470
  {
7075
8471
  as: "p",
@@ -7079,16 +8475,16 @@ function EditServiceType(props) {
7079
8475
  children: "\uC138\uC158 \uC720\uD615\uC5D0 \uB530\uB77C \uCC45\uC815\uB418\uB294 \uCF54\uCE6D \uAE08\uC561\uC774 \uB2EC\uB77C\uC9C0\uBBC0\uB85C, \uC815\uD655\uD558\uAC8C \uC120\uD0DD\uD574\uC8FC\uC138\uC694"
7080
8476
  }
7081
8477
  ),
7082
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(OnOfflineRadioCard, { onValueChange: setSessionType, value: sessionType }),
7083
- /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: { initial: "6", xs: "3" }, children: [
7084
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Button, { color: "gray", onClick: onClickCancel, variant: "outline", children: "\uCDE8\uC18C\uD558\uAE30" }) }),
7085
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Button, { onClick: onClickSave, children: "\uC800\uC7A5\uD558\uAE30" }) })
8478
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(OnOfflineRadioCard, { onValueChange: setSessionType, value: sessionType }),
8479
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: { initial: "6", xs: "3" }, children: [
8480
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Button, { color: "gray", onClick: onClickCancel, variant: "outline", children: "\uCDE8\uC18C\uD558\uAE30" }) }),
8481
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Button, { onClick: onClickSave, children: "\uC800\uC7A5\uD558\uAE30" }) })
7086
8482
  ] })
7087
8483
  ] });
7088
8484
  }
7089
8485
 
7090
8486
  // src/app/platform/session-card.tsx
7091
- var import_jsx_runtime104 = require("react/jsx-runtime");
8487
+ var import_jsx_runtime109 = require("react/jsx-runtime");
7092
8488
  var preventDefault4 = (e) => {
7093
8489
  e.preventDefault();
7094
8490
  };
@@ -7118,33 +8514,33 @@ function SessionCard(props) {
7118
8514
  "endAt",
7119
8515
  "sessionType"
7120
8516
  ]);
7121
- const renderEditButton = (0, import_react51.useCallback)(() => {
7122
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { color: "gray", ml: "2", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.Pencil1Icon, {}) });
8517
+ const renderEditButton = (0, import_react54.useCallback)(() => {
8518
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Button, { color: "gray", ml: "2", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_react_icons2.Pencil1Icon, {}) });
7123
8519
  }, []);
7124
- const sessionTimeStr = (0, import_react51.useMemo)(() => {
8520
+ const sessionTimeStr = (0, import_react54.useMemo)(() => {
7125
8521
  if (!startAt || !endAt) return "\uC54C \uC218 \uC5C6\uC74C";
7126
8522
  return `${(0, import_date_fns6.format)(startAt, "yyyy\uB144 MM\uC6D4 dd\uC77C HH\uC2DC mm\uBD84")} ~ ${(0, import_date_fns6.format)(endAt, "HH\uC2DC mm\uBD84")}`;
7127
8523
  }, [startAt, endAt]);
7128
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Card, __spreadProps(__spreadValues({ error: Boolean(error) }, rest), { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
7129
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", width: "100%", children: [
7130
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { variant: "heading4", children: `${userName || "\uC54C \uC218 \uC5C6\uC74C"}\uB2D8 ${sessionNumber || "-"}\uD68C\uCC28` }),
8524
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Card, __spreadProps(__spreadValues({ error: Boolean(error) }, rest), { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
8525
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { align: "center", width: "100%", children: [
8526
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: `${userName || "\uC54C \uC218 \uC5C6\uC74C"}\uB2D8 ${sessionNumber || "-"}\uD68C\uCC28` }),
7131
8527
  TitleExtra,
7132
- error ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(BulletText, { as: "p", color: "red", variant: "caption", children: error }) : null
8528
+ error ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(BulletText, { as: "p", color: "red", variant: "caption", children: error }) : null
7133
8529
  ] }),
7134
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Root, { children: [
7135
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Item, { children: [
7136
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes15.DataList.Label, { children: "\uCF54\uCE6D \uC77C\uC2DC" }),
7137
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Value, { children: [
8530
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Root, { children: [
8531
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
8532
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uCF54\uCE6D \uC77C\uC2DC" }),
8533
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
7138
8534
  sessionTimeStr,
7139
- editable ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Dialog.Root, { children: [
7140
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Dialog.Trigger, { children: renderEditButton() }),
7141
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8535
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
8536
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
8537
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7142
8538
  Dialog.Content,
7143
8539
  {
7144
8540
  onOpenAutoFocus: preventDefault4,
7145
8541
  style: { overflow: "visible" },
7146
8542
  title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC77C\uC2DC \uBCC0\uACBD\uD558\uAE30`,
7147
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8543
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7148
8544
  EditCoachingTime,
7149
8545
  {
7150
8546
  defaultEndAt: endAt,
@@ -7157,18 +8553,18 @@ function SessionCard(props) {
7157
8553
  ] }) : null
7158
8554
  ] })
7159
8555
  ] }),
7160
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "2" }, style: { gap: "inherit" }, children: [
7161
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Item, { children: [
7162
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes15.DataList.Label, { children: "\uC138\uC158 \uCC38\uC5EC \uBC29\uC2DD" }),
7163
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Value, { children: [
8556
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "2" }, style: { gap: "inherit" }, children: [
8557
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
8558
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uC138\uC158 \uCC38\uC5EC \uBC29\uC2DD" }),
8559
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
7164
8560
  sessionType === "offlineCoaching" ? "\uC624\uD504\uB77C\uC778" : "\uC628\uB77C\uC778",
7165
- editable ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Dialog.Root, { children: [
7166
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Dialog.Trigger, { children: renderEditButton() }),
7167
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8561
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
8562
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
8563
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7168
8564
  Dialog.Content,
7169
8565
  {
7170
8566
  title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC9C4\uD589 \uBC29\uC2DD \uBCC0\uACBD\uD558\uAE30`,
7171
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8567
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7172
8568
  EditServiceType,
7173
8569
  {
7174
8570
  defaultServiceType: sessionType,
@@ -7180,33 +8576,33 @@ function SessionCard(props) {
7180
8576
  ] }) : null
7181
8577
  ] })
7182
8578
  ] }),
7183
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes22.Flex, { gap: "2", justify: "end", children: ExtraButtons })
8579
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes22.Flex, { gap: "2", justify: "end", children: ExtraButtons })
7184
8580
  ] })
7185
8581
  ] })
7186
8582
  ] }) }));
7187
8583
  }
7188
8584
 
7189
8585
  // src/app/platform/coach-question-list.tsx
7190
- var import_jsx_runtime105 = require("react/jsx-runtime");
8586
+ var import_jsx_runtime110 = require("react/jsx-runtime");
7191
8587
  function QuestionItem({ question, answer }) {
7192
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes6.Box, { children: [
7193
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Heading2, { mb: "2", variant: "heading5", children: question }),
7194
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Card, { children: answer ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Typo, { as: "p", children: answer }) : /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Typo, { color: "gray", children: "\uB4F1\uB85D\uB41C \uB2F5\uBCC0\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) })
8588
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes6.Box, { children: [
8589
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Heading2, { mb: "2", variant: "heading5", children: question }),
8590
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Card, { children: answer ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Typo, { as: "p", children: answer }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Typo, { color: "gray", children: "\uB4F1\uB85D\uB41C \uB2F5\uBCC0\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) })
7195
8591
  ] }, question);
7196
8592
  }
7197
8593
  function CoachQuestionList({
7198
8594
  questions
7199
8595
  }) {
7200
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_themes22.Flex, { direction: "column", gap: "8", children: questions.map((question) => {
7201
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(QuestionItem, __spreadValues({}, question), question.question);
8596
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes22.Flex, { direction: "column", gap: "8", children: questions.map((question) => {
8597
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(QuestionItem, __spreadValues({}, question), question.question);
7202
8598
  }) });
7203
8599
  }
7204
8600
 
7205
8601
  // src/app/platform/reservation-card.tsx
7206
- var import_react52 = require("react");
8602
+ var import_react55 = require("react");
7207
8603
  var import_date_fns7 = require("date-fns");
7208
8604
  var import_locale2 = require("date-fns/locale");
7209
- var import_jsx_runtime106 = require("react/jsx-runtime");
8605
+ var import_jsx_runtime111 = require("react/jsx-runtime");
7210
8606
  function ReservationCard(props) {
7211
8607
  const {
7212
8608
  sessionNumber,
@@ -7221,29 +8617,29 @@ function ReservationCard(props) {
7221
8617
  onClickCancel,
7222
8618
  onClickCompleteSession
7223
8619
  } = props;
7224
- const [editValues, setEditValues] = (0, import_react52.useState)({
8620
+ const [editValues, setEditValues] = (0, import_react55.useState)({
7225
8621
  date: props.defaultTime,
7226
8622
  type: props.defaultType
7227
8623
  });
7228
8624
  const date = readonly ? defaultTime : editValues.date;
7229
8625
  const type = readonly ? defaultType : editValues.type;
7230
- const onClickSave = (0, import_react52.useCallback)(() => {
8626
+ const onClickSave = (0, import_react55.useCallback)(() => {
7231
8627
  var _a;
7232
8628
  (_a = props.onClickSave) == null ? void 0 : _a.call(props, editValues);
7233
8629
  }, [editValues, props]);
7234
- const onClickReset = (0, import_react52.useCallback)(() => {
8630
+ const onClickReset = (0, import_react55.useCallback)(() => {
7235
8631
  setEditValues({
7236
8632
  date: defaultTime,
7237
8633
  type: defaultType
7238
8634
  });
7239
8635
  }, [defaultTime, defaultType]);
7240
- const ActionButtons = (0, import_react52.useMemo)(() => {
8636
+ const ActionButtons = (0, import_react55.useMemo)(() => {
7241
8637
  if (readonly) {
7242
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickReserve, size: "small", variant: "surface", children: defaultTime && defaultType ? "\uC608\uC57D \uC218\uC815\uD558\uAE30" : "\uC608\uC57D\uD558\uAE30" });
8638
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { onClick: onClickReserve, size: "small", variant: "surface", children: defaultTime && defaultType ? "\uC608\uC57D \uC218\uC815\uD558\uAE30" : "\uC608\uC57D\uD558\uAE30" });
7243
8639
  }
7244
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { color: "gray", onClick: onClickCancel, variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_react_icons2.Cross1Icon, {}) });
8640
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { color: "gray", onClick: onClickCancel, variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.Cross1Icon, {}) });
7245
8641
  }, [defaultTime, defaultType, onClickCancel, onClickReserve, readonly]);
7246
- const onChangeDate = (0, import_react52.useCallback)((newDate) => {
8642
+ const onChangeDate = (0, import_react55.useCallback)((newDate) => {
7247
8643
  if (!newDate) return;
7248
8644
  setEditValues((prev) => {
7249
8645
  return __spreadProps(__spreadValues({}, prev), {
@@ -7251,17 +8647,17 @@ function ReservationCard(props) {
7251
8647
  });
7252
8648
  });
7253
8649
  }, []);
7254
- const onChangeType = (0, import_react52.useCallback)((newType) => {
8650
+ const onChangeType = (0, import_react55.useCallback)((newType) => {
7255
8651
  setEditValues((prev) => {
7256
8652
  return __spreadProps(__spreadValues({}, prev), {
7257
8653
  type: newType
7258
8654
  });
7259
8655
  });
7260
8656
  }, []);
7261
- const formatDate = (0, import_react52.useCallback)((v) => {
8657
+ const formatDate = (0, import_react55.useCallback)((v) => {
7262
8658
  return (0, import_date_fns7.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C(EEE) aa h:mm", { locale: import_locale2.ko });
7263
8659
  }, []);
7264
- (0, import_react52.useEffect)(() => {
8660
+ (0, import_react55.useEffect)(() => {
7265
8661
  if (!minTime || !editValues.date || readonly) return;
7266
8662
  if (editValues.date < minTime) {
7267
8663
  import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
@@ -7272,7 +8668,7 @@ function ReservationCard(props) {
7272
8668
  });
7273
8669
  }
7274
8670
  }, [editValues, minTime, readonly]);
7275
- (0, import_react52.useEffect)(() => {
8671
+ (0, import_react55.useEffect)(() => {
7276
8672
  if (!maxTime || !editValues.date || readonly) return;
7277
8673
  if (editValues.date > maxTime) {
7278
8674
  import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
@@ -7283,39 +8679,39 @@ function ReservationCard(props) {
7283
8679
  });
7284
8680
  }
7285
8681
  }, [editValues, maxTime, readonly]);
7286
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8682
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
7287
8683
  Card,
7288
8684
  {
7289
8685
  error: Boolean(error),
7290
8686
  size: "3",
7291
8687
  style: { overflow: "visible", contain: "initial" },
7292
8688
  children: [
7293
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { gap: "3", justify: "between", mb: "5", children: [
7294
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8689
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { gap: "3", justify: "between", mb: "5", children: [
8690
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
7295
8691
  import_themes23.Grid,
7296
8692
  {
7297
8693
  align: "center",
7298
8694
  columns: { initial: "1", xs: "auto 1fr" },
7299
8695
  gapY: "2",
7300
8696
  children: [
7301
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { align: "center", children: [
7302
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Heading2, { variant: "heading4", children: [
8697
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", children: [
8698
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Heading2, { variant: "heading4", children: [
7303
8699
  customerName || "-",
7304
8700
  "\uB2D8 ",
7305
8701
  sessionNumber || "-",
7306
8702
  "\uD68C\uCC28 \uC138\uC158"
7307
8703
  ] }),
7308
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Badge, { ml: "2", children: "\uB2E4\uC74C \uC138\uC158" })
8704
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Badge, { ml: "2", children: "\uB2E4\uC74C \uC138\uC158" })
7309
8705
  ] }),
7310
- error ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(BulletText, { color: "red", variant: "caption", children: error }) : null
8706
+ error ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(BulletText, { color: "red", variant: "caption", children: error }) : null
7311
8707
  ]
7312
8708
  }
7313
8709
  ),
7314
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes22.Flex, { children: ActionButtons })
8710
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes22.Flex, { children: ActionButtons })
7315
8711
  ] }),
7316
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
7317
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC138\uC158 \uC77C\uC790\uC640 \uC2DC\uAC01" }),
7318
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8712
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8713
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC138\uC158 \uC77C\uC790\uC640 \uC2DC\uAC01" }),
8714
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7319
8715
  DatePickerButton,
7320
8716
  {
7321
8717
  disabled: readonly,
@@ -7329,8 +8725,8 @@ function ReservationCard(props) {
7329
8725
  size: "large"
7330
8726
  }
7331
8727
  ),
7332
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC628/\uC624\uD504\uB77C\uC778 \uC9C4\uD589 \uC5EC\uBD80" }),
7333
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8728
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC628/\uC624\uD504\uB77C\uC778 \uC9C4\uD589 \uC5EC\uBD80" }),
8729
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7334
8730
  OnOfflineRadioCard,
7335
8731
  {
7336
8732
  disabled: readonly,
@@ -7339,8 +8735,8 @@ function ReservationCard(props) {
7339
8735
  value: type
7340
8736
  }
7341
8737
  ),
7342
- readonly ? null : /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", children: [
7343
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8738
+ readonly ? null : /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", children: [
8739
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7344
8740
  Button,
7345
8741
  {
7346
8742
  color: "gray",
@@ -7350,10 +8746,10 @@ function ReservationCard(props) {
7350
8746
  children: "\uCD08\uAE30\uD654\uD558\uAE30"
7351
8747
  }
7352
8748
  ),
7353
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickSave, size: "small", children: "\uC800\uC7A5\uD558\uAE30" })
8749
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { onClick: onClickSave, size: "small", children: "\uC800\uC7A5\uD558\uAE30" })
7354
8750
  ] })
7355
8751
  ] }) }),
7356
- readonly ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes25.Inset, { clip: "border-box", side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8752
+ readonly ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes25.Inset, { clip: "border-box", side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7357
8753
  import_themes6.Box,
7358
8754
  {
7359
8755
  mt: "5",
@@ -7361,14 +8757,14 @@ function ReservationCard(props) {
7361
8757
  py: "4",
7362
8758
  style: { backgroundColor: "var(--accent-a3)" },
7363
8759
  width: "100%",
7364
- children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { align: "center", gap: "4", justify: "center", children: [
7365
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Typo, { children: [
8760
+ children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "4", justify: "center", children: [
8761
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Typo, { children: [
7366
8762
  sessionNumber || "-",
7367
8763
  "\uD68C\uCC28 \uC138\uC158\uC744 \uC644\uB8CC\uD558\uC168\uB098\uC694?"
7368
8764
  ] }),
7369
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Button, { onClick: onClickCompleteSession, size: "small", children: [
8765
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Button, { onClick: onClickCompleteSession, size: "small", children: [
7370
8766
  "\uC138\uC158 \uC885\uB8CC\uD558\uAE30",
7371
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_react_icons2.ArrowRightIcon, {})
8767
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.ArrowRightIcon, {})
7372
8768
  ] })
7373
8769
  ] })
7374
8770
  }
@@ -7379,22 +8775,22 @@ function ReservationCard(props) {
7379
8775
  }
7380
8776
 
7381
8777
  // src/app/platform/session-review-simple-read.tsx
7382
- var import_react53 = require("react");
7383
- var import_jsx_runtime107 = require("react/jsx-runtime");
8778
+ var import_react56 = require("react");
8779
+ var import_jsx_runtime112 = require("react/jsx-runtime");
7384
8780
  function SubTitleWrapper({
7385
8781
  children,
7386
8782
  title
7387
8783
  }) {
7388
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7389
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: title }),
7390
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_themes6.Box, { children })
8784
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
8785
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: title }),
8786
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_themes6.Box, { children })
7391
8787
  ] });
7392
8788
  }
7393
8789
  function SessionReviewSimpleRead({
7394
8790
  helpfulness,
7395
8791
  review
7396
8792
  }) {
7397
- const helpfulnessMeta = (0, import_react53.useMemo)(() => {
8793
+ const helpfulnessMeta = (0, import_react56.useMemo)(() => {
7398
8794
  if (helpfulness) {
7399
8795
  return {
7400
8796
  text: "\uB124",
@@ -7412,22 +8808,22 @@ function SessionReviewSimpleRead({
7412
8808
  color: "error"
7413
8809
  };
7414
8810
  }, [helpfulness]);
7415
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
7416
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(SubTitleWrapper, { title: "\uC774\uBC88 \uCF54\uCE6D\uC774 \uBAA9\uD45C \uB2EC\uC131\uC5D0 \uB3C4\uC6C0\uC774 \uB418\uC5C8\uB098\uC694?", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Badge, { color: helpfulnessMeta.color, children: helpfulnessMeta.text }) }),
7417
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(SubTitleWrapper, { title: "\uC138\uC158 \uD6C4\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Card, { children: review ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { as: "p", children: review }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { color: "gray", children: "\uC785\uB825\uB41C \uD6C4\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) }) })
8811
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8812
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SubTitleWrapper, { title: "\uC774\uBC88 \uCF54\uCE6D\uC774 \uBAA9\uD45C \uB2EC\uC131\uC5D0 \uB3C4\uC6C0\uC774 \uB418\uC5C8\uB098\uC694?", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Badge, { color: helpfulnessMeta.color, children: helpfulnessMeta.text }) }),
8813
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SubTitleWrapper, { title: "\uC138\uC158 \uD6C4\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Card, { children: review ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Typo, { as: "p", children: review }) : /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Typo, { color: "gray", children: "\uC785\uB825\uB41C \uD6C4\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) }) })
7418
8814
  ] }) });
7419
8815
  }
7420
8816
 
7421
8817
  // src/app/platform/userInfos/session-user-info-detail.tsx
7422
- var import_jsx_runtime108 = require("react/jsx-runtime");
8818
+ var import_jsx_runtime113 = require("react/jsx-runtime");
7423
8819
  function SectionWrapper({
7424
8820
  title,
7425
8821
  children
7426
8822
  }) {
7427
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes6.Box, { children: [
7428
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", mb: "5", children: [
7429
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Heading2, { variant: "heading5", children: title }),
7430
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_themes39.Separator, { size: "4" })
8823
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes6.Box, { children: [
8824
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", mb: "5", children: [
8825
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Heading2, { variant: "heading5", children: title }),
8826
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes39.Separator, { size: "4" })
7431
8827
  ] }),
7432
8828
  children
7433
8829
  ] });
@@ -7437,22 +8833,22 @@ function SessionUserInfoDetail({
7437
8833
  session,
7438
8834
  onClickCopy
7439
8835
  }) {
7440
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes22.Flex, { direction: "column", gap: "6", children: [
7441
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SectionWrapper, { title: "\uC138\uC158 \uC815\uBCF4", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
8836
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes22.Flex, { direction: "column", gap: "6", children: [
8837
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(SectionWrapper, { title: "\uC138\uC158 \uC815\uBCF4", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
7442
8838
  (info) => renderDataListItem({ info, data: session, onClickCopy })
7443
8839
  ) }) }),
7444
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SectionWrapper, { title: "\uD68C\uC6D0 \uC815\uBCF4", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_themes15.DataList.Root, { children: infoList.map(
8840
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(SectionWrapper, { title: "\uD68C\uC6D0 \uC815\uBCF4", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes15.DataList.Root, { children: infoList.map(
7445
8841
  (info) => renderDataListItem({ info, data: customer, onClickCopy })
7446
8842
  ) }) })
7447
8843
  ] });
7448
8844
  }
7449
8845
 
7450
8846
  // src/app/platform/report-card.tsx
7451
- var import_react54 = require("react");
7452
- var import_jsx_runtime109 = require("react/jsx-runtime");
8847
+ var import_react57 = require("react");
8848
+ var import_jsx_runtime114 = require("react/jsx-runtime");
7453
8849
  function ReportCard(props) {
7454
8850
  const { title, file, status, subtitle } = props;
7455
- const onClickDownload = (0, import_react54.useCallback)(() => {
8851
+ const onClickDownload = (0, import_react57.useCallback)(() => {
7456
8852
  if (!file) return;
7457
8853
  const { url, fileName } = file;
7458
8854
  const link = document.createElement("a");
@@ -7464,24 +8860,24 @@ function ReportCard(props) {
7464
8860
  document.body.removeChild(link);
7465
8861
  }, [file]);
7466
8862
  if (status) {
7467
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7468
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: title }),
8863
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
8864
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
7469
8865
  status
7470
8866
  ] }) });
7471
8867
  }
7472
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
8868
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
7473
8869
  import_themes22.Flex,
7474
8870
  {
7475
8871
  direction: { initial: "column", xs: "row" },
7476
8872
  gapY: "2",
7477
8873
  justify: "between",
7478
8874
  children: [
7479
- /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes6.Box, { children: [
7480
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: title }),
7481
- subtitle ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Typo, { color: "gray", children: subtitle }) : null
8875
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes6.Box, { children: [
8876
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
8877
+ subtitle ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Typo, { color: "gray", children: subtitle }) : null
7482
8878
  ] }),
7483
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Button, { onClick: onClickDownload, variant: "surface", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { gap: "2", width: "100%", children: [
7484
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_react_icons2.DownloadIcon, {}),
8879
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Button, { onClick: onClickDownload, variant: "surface", children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes22.Flex, { gap: "2", width: "100%", children: [
8880
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_react_icons2.DownloadIcon, {}),
7485
8881
  file == null ? void 0 : file.buttonName
7486
8882
  ] }) }, file == null ? void 0 : file.url)
7487
8883
  ]
@@ -7490,9 +8886,9 @@ function ReportCard(props) {
7490
8886
  }
7491
8887
 
7492
8888
  // src/app/platform/contents-card.tsx
7493
- var import_react55 = require("react");
7494
- var import_jsx_runtime110 = require("react/jsx-runtime");
7495
- var ContentsCard = (0, import_react55.forwardRef)(
8889
+ var import_react58 = require("react");
8890
+ var import_jsx_runtime115 = require("react/jsx-runtime");
8891
+ var ContentsCard = (0, import_react58.forwardRef)(
7496
8892
  ({
7497
8893
  title,
7498
8894
  description,
@@ -7502,7 +8898,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7502
8898
  onClickCard,
7503
8899
  isLoading = false
7504
8900
  }, ref) => {
7505
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8901
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7506
8902
  Card,
7507
8903
  {
7508
8904
  onClick: onClickCard,
@@ -7515,7 +8911,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7515
8911
  maxHeight: "450px"
7516
8912
  },
7517
8913
  children: [
7518
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes25.Inset, { clip: "padding-box", pb: "0", side: "top", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
8914
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes25.Inset, { clip: "padding-box", pb: "0", side: "top", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7519
8915
  import_themes6.Box,
7520
8916
  {
7521
8917
  height: "210px",
@@ -7527,12 +8923,12 @@ var ContentsCard = (0, import_react55.forwardRef)(
7527
8923
  width: "100%"
7528
8924
  }
7529
8925
  ) }) }),
7530
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes22.Flex, { direction: "column", p: "4", pb: "3", children: [
7531
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes6.Box, { children: [
7532
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Heading2, { mb: "3", variant: "heading5", children: title }) }),
7533
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Typo, { as: "p", variant: "caption", children: description }) })
8926
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes22.Flex, { direction: "column", p: "4", pb: "3", children: [
8927
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes6.Box, { children: [
8928
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Heading2, { mb: "3", variant: "heading5", children: title }) }),
8929
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Typo, { as: "p", variant: "caption", children: description }) })
7534
8930
  ] }),
7535
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8931
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7536
8932
  import_themes23.Grid,
7537
8933
  {
7538
8934
  align: "center",
@@ -7542,10 +8938,10 @@ var ContentsCard = (0, import_react55.forwardRef)(
7542
8938
  style: { marginTop: "auto" },
7543
8939
  width: "100%",
7544
8940
  children: [
7545
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes22.Flex, { gap: "3", overflow: "hidden", children: footer }) }),
7546
- Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(DropdownMenu.Root, { children: [
7547
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(DropdownMenu.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Button, { size: "large", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_react_icons2.DotsVerticalIcon, { color: "gray", height: "20px", width: "20px" }) }) }),
7548
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(DropdownMenu.Content, { children: dropdownItems == null ? void 0 : dropdownItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
8941
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes22.Flex, { gap: "3", overflow: "hidden", children: footer }) }),
8942
+ Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenu.Root, { children: [
8943
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenu.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Button, { size: "large", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_react_icons2.DotsVerticalIcon, { color: "gray", height: "20px", width: "20px" }) }) }),
8944
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenu.Content, { children: dropdownItems == null ? void 0 : dropdownItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7549
8945
  DropdownMenu.Item,
7550
8946
  {
7551
8947
  onClick: (e) => {
@@ -7569,7 +8965,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7569
8965
  ContentsCard.displayName = "ContentsCard";
7570
8966
 
7571
8967
  // src/app/platform/curriculum-card.tsx
7572
- var import_jsx_runtime111 = require("react/jsx-runtime");
8968
+ var import_jsx_runtime116 = require("react/jsx-runtime");
7573
8969
  function CurriculumCard(props) {
7574
8970
  const {
7575
8971
  title,
@@ -7580,7 +8976,7 @@ function CurriculumCard(props) {
7580
8976
  bgColor,
7581
8977
  onClick
7582
8978
  } = props;
7583
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
8979
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
7584
8980
  import_themes23.Grid,
7585
8981
  {
7586
8982
  columns: { initial: "1", sm: "275px 1fr" },
@@ -7589,7 +8985,7 @@ function CurriculumCard(props) {
7589
8985
  onClick,
7590
8986
  style: { cursor: "pointer" },
7591
8987
  children: [
7592
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
8988
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
7593
8989
  import_themes6.Box,
7594
8990
  {
7595
8991
  height: "165px",
@@ -7604,32 +9000,32 @@ function CurriculumCard(props) {
7604
9000
  backgroundAttachment: "local"
7605
9001
  },
7606
9002
  width: "100%",
7607
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { style: { whiteSpace: "break-spaces" }, variant: "heading3", children: imgTitle })
9003
+ children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { style: { whiteSpace: "break-spaces" }, variant: "heading3", children: imgTitle })
7608
9004
  }
7609
9005
  ),
7610
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
7611
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "1fr auto" }, gapY: "3", children: [
7612
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { variant: "heading4", children: title }),
7613
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9006
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
9007
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "1fr auto" }, gapY: "3", children: [
9008
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { variant: "heading4", children: title }),
9009
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
7614
9010
  Badge,
7615
9011
  {
7616
9012
  size: "medium",
7617
9013
  style: { justifySelf: "flex-start" },
7618
9014
  variant: "outline",
7619
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
7620
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.TimerIcon, {}),
9015
+ children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
9016
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.TimerIcon, {}),
7621
9017
  runningTime
7622
9018
  ] })
7623
9019
  }
7624
9020
  )
7625
9021
  ] }),
7626
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes6.Box, { style: { marginBottom: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("ul", { style: { margin: 0, paddingLeft: 20 }, children: description == null ? void 0 : description.map((el) => {
7627
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("li", { style: { marginBottom: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { truncate: true, variant: "heading5", weight: "regular", children: el }) }, el);
9022
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_themes6.Box, { style: { marginBottom: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("ul", { style: { margin: 0, paddingLeft: 20 }, children: description == null ? void 0 : description.map((el) => {
9023
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("li", { style: { marginBottom: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { truncate: true, variant: "heading5", weight: "regular", children: el }) }, el);
7628
9024
  }) }) }),
7629
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes39.Separator, { size: "4" }),
7630
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "2", justify: "end", children: [
7631
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Typo, { color: "gray", children: "\uAC15\uC758 \uB4E3\uACE0 \uCF54\uCE58\uB2D8\uACFC \uBB34\uC81C\uD55C Q&A" }),
7632
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.ArrowRightIcon, { color: "gray" })
9025
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_themes39.Separator, { size: "4" }),
9026
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "2", justify: "end", children: [
9027
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Typo, { color: "gray", children: "\uAC15\uC758 \uB4E3\uACE0 \uCF54\uCE58\uB2D8\uACFC \uBB34\uC81C\uD55C Q&A" }),
9028
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.ArrowRightIcon, { color: "gray" })
7633
9029
  ] })
7634
9030
  ] })
7635
9031
  ]
@@ -7717,6 +9113,7 @@ function CurriculumCard(props) {
7717
9113
  Drawer,
7718
9114
  DropdownMenu,
7719
9115
  DynamicForm,
9116
+ DynamicFormEditor,
7720
9117
  DynamicFormField,
7721
9118
  DynamicFormProvider,
7722
9119
  DynamicFormResponseItem,
@@ -7751,6 +9148,7 @@ function CurriculumCard(props) {
7751
9148
  HorizontalBarChart,
7752
9149
  HoverCard,
7753
9150
  IconButton,
9151
+ ImageIcon,
7754
9152
  InfoCircledIcon,
7755
9153
  Inset,
7756
9154
  Kbd,