@tipp/ui 2.3.22 → 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 (562) 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 +105 -99
  4. package/dist/app/platform/coach-question-list.js +31 -31
  5. package/dist/app/platform/contents-card.js +31 -31
  6. package/dist/app/platform/curriculum-card.js +5 -5
  7. package/dist/app/platform/edit-coaching-time.cjs +47 -25
  8. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  9. package/dist/app/platform/edit-coaching-time.js +83 -77
  10. package/dist/app/platform/edit-service-type.cjs +42 -20
  11. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  12. package/dist/app/platform/edit-service-type.js +84 -78
  13. package/dist/app/platform/goal-manage-card-edit.cjs +50 -28
  14. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  15. package/dist/app/platform/goal-manage-card-edit.js +83 -77
  16. package/dist/app/platform/goal-manage-card-read.js +31 -31
  17. package/dist/app/platform/on-offline-radio-card.cjs +77 -55
  18. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  19. package/dist/app/platform/on-offline-radio-card.js +83 -77
  20. package/dist/app/platform/report-card.js +31 -31
  21. package/dist/app/platform/reservation-card.cjs +66 -44
  22. package/dist/app/platform/reservation-card.cjs.map +1 -1
  23. package/dist/app/platform/reservation-card.js +84 -78
  24. package/dist/app/platform/session-card.cjs +92 -70
  25. package/dist/app/platform/session-card.cjs.map +1 -1
  26. package/dist/app/platform/session-card.js +86 -80
  27. package/dist/app/platform/session-review-simple-read.js +31 -31
  28. package/dist/app/platform/userInfos/coaching-customer-info/index.js +34 -34
  29. package/dist/app/platform/userInfos/coaching-customer-info/large.js +31 -31
  30. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +31 -31
  31. package/dist/app/platform/userInfos/coaching-customer-info/small.js +31 -31
  32. package/dist/app/platform/userInfos/session-user-info-detail.js +31 -31
  33. package/dist/app/platform/userInfos/utils.js +30 -30
  34. package/dist/atoms/bullet-text.js +2 -2
  35. package/dist/atoms/dialog.js +2 -2
  36. package/dist/atoms/field-error-wrapper.js +2 -2
  37. package/dist/atoms/index.js +62 -62
  38. package/dist/atoms/list.js +2 -2
  39. package/dist/atoms/pagination.js +3 -3
  40. package/dist/chunk-2KOE33U7.js +245 -0
  41. package/dist/chunk-2KOE33U7.js.map +1 -0
  42. package/dist/chunk-2U5YD3BH.js +49 -0
  43. package/dist/chunk-2U5YD3BH.js.map +1 -0
  44. package/dist/chunk-2X3I7KDG.js +144 -0
  45. package/dist/chunk-2X3I7KDG.js.map +1 -0
  46. package/dist/chunk-2YSYS4AG.js +233 -0
  47. package/dist/chunk-2YSYS4AG.js.map +1 -0
  48. package/dist/chunk-35HQHUDU.js +228 -0
  49. package/dist/chunk-35HQHUDU.js.map +1 -0
  50. package/dist/chunk-3I55S6EP.js +89 -0
  51. package/dist/chunk-3I55S6EP.js.map +1 -0
  52. package/dist/chunk-3JDLAN5T.js +99 -0
  53. package/dist/chunk-3JDLAN5T.js.map +1 -0
  54. package/dist/chunk-3O2ARPTO.js +161 -0
  55. package/dist/chunk-3O2ARPTO.js.map +1 -0
  56. package/dist/chunk-3OO6ENQ4.js +228 -0
  57. package/dist/chunk-3OO6ENQ4.js.map +1 -0
  58. package/dist/chunk-45F3UCHR.js +222 -0
  59. package/dist/chunk-45F3UCHR.js.map +1 -0
  60. package/dist/chunk-4LUFF5LX.js +98 -0
  61. package/dist/chunk-4LUFF5LX.js.map +1 -0
  62. package/dist/chunk-4VV7VH5L.js +79 -0
  63. package/dist/chunk-4VV7VH5L.js.map +1 -0
  64. package/dist/chunk-5JCJ4QJO.js +245 -0
  65. package/dist/chunk-5JCJ4QJO.js.map +1 -0
  66. package/dist/chunk-5KZJMQCG.js +89 -0
  67. package/dist/chunk-5KZJMQCG.js.map +1 -0
  68. package/dist/chunk-5RAR3DG7.js +117 -0
  69. package/dist/chunk-5RAR3DG7.js.map +1 -0
  70. package/dist/chunk-5XOR7OPD.js +196 -0
  71. package/dist/chunk-5XOR7OPD.js.map +1 -0
  72. package/dist/chunk-5YESTYFF.js +79 -0
  73. package/dist/chunk-5YESTYFF.js.map +1 -0
  74. package/dist/chunk-64A2KJHN.js +276 -0
  75. package/dist/chunk-64A2KJHN.js.map +1 -0
  76. package/dist/chunk-6CSUU4L7.js +230 -0
  77. package/dist/chunk-6CSUU4L7.js.map +1 -0
  78. package/dist/chunk-6FKXUCHD.js +99 -0
  79. package/dist/chunk-6FKXUCHD.js.map +1 -0
  80. package/dist/chunk-6TQGX5ZU.js +98 -0
  81. package/dist/chunk-6TQGX5ZU.js.map +1 -0
  82. package/dist/chunk-6YZBHOXQ.js +226 -0
  83. package/dist/chunk-6YZBHOXQ.js.map +1 -0
  84. package/dist/chunk-7344ZPUM.js +117 -0
  85. package/dist/chunk-7344ZPUM.js.map +1 -0
  86. package/dist/chunk-7ABAJEJA.js +63 -0
  87. package/dist/chunk-7ABAJEJA.js.map +1 -0
  88. package/dist/chunk-7B5XAENQ.js +363 -0
  89. package/dist/chunk-7B5XAENQ.js.map +1 -0
  90. package/dist/chunk-7CQX7ELH.js +69 -0
  91. package/dist/chunk-7CQX7ELH.js.map +1 -0
  92. package/dist/chunk-7CRTGYJE.js +80 -0
  93. package/dist/chunk-7CRTGYJE.js.map +1 -0
  94. package/dist/chunk-7ITDAUWI.js +287 -0
  95. package/dist/chunk-7ITDAUWI.js.map +1 -0
  96. package/dist/chunk-7PQGETJT.js +69 -0
  97. package/dist/chunk-7PQGETJT.js.map +1 -0
  98. package/dist/chunk-7R65MUL6.js +106 -0
  99. package/dist/chunk-7R65MUL6.js.map +1 -0
  100. package/dist/chunk-7U5EZJOD.js +89 -0
  101. package/dist/chunk-7U5EZJOD.js.map +1 -0
  102. package/dist/chunk-7ZBZBOPI.js +63 -0
  103. package/dist/chunk-7ZBZBOPI.js.map +1 -0
  104. package/dist/chunk-A2FXUYSB.js +230 -0
  105. package/dist/chunk-A2FXUYSB.js.map +1 -0
  106. package/dist/chunk-A7CT5M2S.js +75 -0
  107. package/dist/chunk-A7CT5M2S.js.map +1 -0
  108. package/dist/chunk-A7JBBBBB.js +100 -0
  109. package/dist/chunk-A7JBBBBB.js.map +1 -0
  110. package/dist/chunk-AA6OYHCE.js +39 -0
  111. package/dist/chunk-AA6OYHCE.js.map +1 -0
  112. package/dist/chunk-ALETVN5F.js +245 -0
  113. package/dist/chunk-ALETVN5F.js.map +1 -0
  114. package/dist/chunk-ARJOCJVD.js +174 -0
  115. package/dist/chunk-ARJOCJVD.js.map +1 -0
  116. package/dist/chunk-ARVLB4CH.js +29 -0
  117. package/dist/chunk-ARVLB4CH.js.map +1 -0
  118. package/dist/chunk-B327EINU.js +43 -0
  119. package/dist/chunk-B327EINU.js.map +1 -0
  120. package/dist/chunk-B4TDMB52.js +226 -0
  121. package/dist/chunk-B4TDMB52.js.map +1 -0
  122. package/dist/chunk-BJZSGZ7H.js +63 -0
  123. package/dist/chunk-BJZSGZ7H.js.map +1 -0
  124. package/dist/chunk-BPMY3CDH.js +106 -0
  125. package/dist/chunk-BPMY3CDH.js.map +1 -0
  126. package/dist/chunk-C2ANXVMQ.js +221 -0
  127. package/dist/chunk-C2ANXVMQ.js.map +1 -0
  128. package/dist/chunk-C6BHVWJI.js +165 -0
  129. package/dist/chunk-C6BHVWJI.js.map +1 -0
  130. package/dist/chunk-CF3NAPUZ.js +196 -0
  131. package/dist/chunk-CF3NAPUZ.js.map +1 -0
  132. package/dist/chunk-CWRJOY56.js +245 -0
  133. package/dist/chunk-CWRJOY56.js.map +1 -0
  134. package/dist/chunk-D3H7YFTO.js +69 -0
  135. package/dist/chunk-D3H7YFTO.js.map +1 -0
  136. package/dist/chunk-DDAZ4IAG.js +689 -0
  137. package/dist/chunk-DDAZ4IAG.js.map +1 -0
  138. package/dist/chunk-DDVJMAYN.js +230 -0
  139. package/dist/chunk-DDVJMAYN.js.map +1 -0
  140. package/dist/chunk-DJ24574O.js +28 -0
  141. package/dist/chunk-DJ24574O.js.map +1 -0
  142. package/dist/chunk-DJCBLRLH.js +69 -0
  143. package/dist/chunk-DJCBLRLH.js.map +1 -0
  144. package/dist/chunk-DTHR4ABO.js +69 -0
  145. package/dist/chunk-DTHR4ABO.js.map +1 -0
  146. package/dist/chunk-DTK646M6.js +87 -0
  147. package/dist/chunk-DTK646M6.js.map +1 -0
  148. package/dist/chunk-DVZKRKWH.js +174 -0
  149. package/dist/chunk-DVZKRKWH.js.map +1 -0
  150. package/dist/chunk-E232GTT6.js +69 -0
  151. package/dist/chunk-E232GTT6.js.map +1 -0
  152. package/dist/chunk-EGTOU5MK.js +689 -0
  153. package/dist/chunk-EGTOU5MK.js.map +1 -0
  154. package/dist/chunk-EJAC46WB.js +39 -0
  155. package/dist/chunk-EJAC46WB.js.map +1 -0
  156. package/dist/chunk-F2I4LA63.js +51 -0
  157. package/dist/chunk-F2I4LA63.js.map +1 -0
  158. package/dist/chunk-F65P7KZI.js +98 -0
  159. package/dist/chunk-F65P7KZI.js.map +1 -0
  160. package/dist/chunk-F76YKHGP.js +245 -0
  161. package/dist/chunk-F76YKHGP.js.map +1 -0
  162. package/dist/chunk-FGX6IR4Q.js +68 -0
  163. package/dist/chunk-FGX6IR4Q.js.map +1 -0
  164. package/dist/chunk-FN2CUDUP.js +43 -0
  165. package/dist/chunk-FN2CUDUP.js.map +1 -0
  166. package/dist/chunk-FQUAFIUO.js +228 -0
  167. package/dist/chunk-FQUAFIUO.js.map +1 -0
  168. package/dist/chunk-FYHAKQGB.js +220 -0
  169. package/dist/chunk-FYHAKQGB.js.map +1 -0
  170. package/dist/chunk-G6UKOZPL.js +217 -0
  171. package/dist/chunk-G6UKOZPL.js.map +1 -0
  172. package/dist/chunk-GAFIOPGJ.js +54 -0
  173. package/dist/chunk-GAFIOPGJ.js.map +1 -0
  174. package/dist/chunk-GEMXFVWI.js +37 -0
  175. package/dist/chunk-GEMXFVWI.js.map +1 -0
  176. package/dist/chunk-GFBOT2PV.js +101 -0
  177. package/dist/chunk-GFBOT2PV.js.map +1 -0
  178. package/dist/chunk-GFURX6GB.js +76 -0
  179. package/dist/chunk-GFURX6GB.js.map +1 -0
  180. package/dist/chunk-GMHVMQTV.js +245 -0
  181. package/dist/chunk-GMHVMQTV.js.map +1 -0
  182. package/dist/chunk-GTO7GG2K.js +245 -0
  183. package/dist/chunk-GTO7GG2K.js.map +1 -0
  184. package/dist/chunk-GWNS3C3A.js +144 -0
  185. package/dist/chunk-GWNS3C3A.js.map +1 -0
  186. package/dist/chunk-HNS76MH2.js +69 -0
  187. package/dist/chunk-HNS76MH2.js.map +1 -0
  188. package/dist/chunk-HO462CJM.js +29 -0
  189. package/dist/chunk-HO462CJM.js.map +1 -0
  190. package/dist/chunk-HPW5EHJX.js +233 -0
  191. package/dist/chunk-HPW5EHJX.js.map +1 -0
  192. package/dist/chunk-HQ23GSZM.js +145 -0
  193. package/dist/chunk-HQ23GSZM.js.map +1 -0
  194. package/dist/chunk-HTNDVNLQ.js +287 -0
  195. package/dist/chunk-HTNDVNLQ.js.map +1 -0
  196. package/dist/chunk-HXOMTUED.js +222 -0
  197. package/dist/chunk-HXOMTUED.js.map +1 -0
  198. package/dist/chunk-INE4EFFO.js +70 -0
  199. package/dist/chunk-INE4EFFO.js.map +1 -0
  200. package/dist/chunk-IQUJPIZD.js +689 -0
  201. package/dist/chunk-IQUJPIZD.js.map +1 -0
  202. package/dist/chunk-ITKUKDDV.js +196 -0
  203. package/dist/chunk-ITKUKDDV.js.map +1 -0
  204. package/dist/chunk-J333WVWG.js +145 -0
  205. package/dist/chunk-J333WVWG.js.map +1 -0
  206. package/dist/chunk-JADEGHJI.js +101 -0
  207. package/dist/chunk-JADEGHJI.js.map +1 -0
  208. package/dist/chunk-JAS77BXB.js +245 -0
  209. package/dist/chunk-JAS77BXB.js.map +1 -0
  210. package/dist/chunk-JDBHOE34.js +51 -0
  211. package/dist/chunk-JDBHOE34.js.map +1 -0
  212. package/dist/chunk-JG4JIBBV.js +245 -0
  213. package/dist/chunk-JG4JIBBV.js.map +1 -0
  214. package/dist/chunk-JHJSR2UT.js +101 -0
  215. package/dist/chunk-JHJSR2UT.js.map +1 -0
  216. package/dist/chunk-JJDLCVZV.js +37 -0
  217. package/dist/chunk-JJDLCVZV.js.map +1 -0
  218. package/dist/chunk-JKAMW7OV.js +228 -0
  219. package/dist/chunk-JKAMW7OV.js.map +1 -0
  220. package/dist/chunk-JRSZNGFD.js +28 -0
  221. package/dist/chunk-JRSZNGFD.js.map +1 -0
  222. package/dist/chunk-JZVK4NDF.js +28 -0
  223. package/dist/chunk-JZVK4NDF.js.map +1 -0
  224. package/dist/chunk-K255663P.js +144 -0
  225. package/dist/chunk-K255663P.js.map +1 -0
  226. package/dist/chunk-K5TTAI44.js +89 -0
  227. package/dist/chunk-K5TTAI44.js.map +1 -0
  228. package/dist/chunk-KCAOUZCT.js +245 -0
  229. package/dist/chunk-KCAOUZCT.js.map +1 -0
  230. package/dist/chunk-KCCYHT23.js +39 -0
  231. package/dist/chunk-KCCYHT23.js.map +1 -0
  232. package/dist/chunk-KFUBWOCN.js +69 -0
  233. package/dist/chunk-KFUBWOCN.js.map +1 -0
  234. package/dist/chunk-KOKKR2GO.js +37 -0
  235. package/dist/chunk-KOKKR2GO.js.map +1 -0
  236. package/dist/chunk-KV432YFG.js +223 -0
  237. package/dist/chunk-KV432YFG.js.map +1 -0
  238. package/dist/chunk-L5SQIVFO.js +68 -0
  239. package/dist/chunk-L5SQIVFO.js.map +1 -0
  240. package/dist/chunk-LJDGAKG3.js +196 -0
  241. package/dist/chunk-LJDGAKG3.js.map +1 -0
  242. package/dist/chunk-LSUCPRXN.js +89 -0
  243. package/dist/chunk-LSUCPRXN.js.map +1 -0
  244. package/dist/chunk-MDSCN4PH.js +144 -0
  245. package/dist/chunk-MDSCN4PH.js.map +1 -0
  246. package/dist/chunk-MG2KX3KF.js +69 -0
  247. package/dist/chunk-MG2KX3KF.js.map +1 -0
  248. package/dist/chunk-MIATMZDP.js +39 -0
  249. package/dist/chunk-MIATMZDP.js.map +1 -0
  250. package/dist/chunk-MIVH7X2Q.js +245 -0
  251. package/dist/chunk-MIVH7X2Q.js.map +1 -0
  252. package/dist/chunk-MPZJH3PI.js +287 -0
  253. package/dist/chunk-MPZJH3PI.js.map +1 -0
  254. package/dist/chunk-MQ4ZZJXV.js +51 -0
  255. package/dist/chunk-MQ4ZZJXV.js.map +1 -0
  256. package/dist/chunk-MRTKFR7V.js +144 -0
  257. package/dist/chunk-MRTKFR7V.js.map +1 -0
  258. package/dist/chunk-MTSZUPDJ.js +151 -0
  259. package/dist/chunk-MTSZUPDJ.js.map +1 -0
  260. package/dist/chunk-MTU2IQUS.js +689 -0
  261. package/dist/chunk-MTU2IQUS.js.map +1 -0
  262. package/dist/chunk-MVA6X35R.js +165 -0
  263. package/dist/chunk-MVA6X35R.js.map +1 -0
  264. package/dist/chunk-ND5BRCYV.js +75 -0
  265. package/dist/chunk-ND5BRCYV.js.map +1 -0
  266. package/dist/chunk-NE5S2QWA.js +51 -0
  267. package/dist/chunk-NE5S2QWA.js.map +1 -0
  268. package/dist/chunk-NHK64BOP.js +69 -0
  269. package/dist/chunk-NHK64BOP.js.map +1 -0
  270. package/dist/chunk-NHMDJCXR.js +276 -0
  271. package/dist/chunk-NHMDJCXR.js.map +1 -0
  272. package/dist/chunk-NIBZSFZ6.js +196 -0
  273. package/dist/chunk-NIBZSFZ6.js.map +1 -0
  274. package/dist/chunk-NJ3LHGC6.js +169 -0
  275. package/dist/chunk-NJ3LHGC6.js.map +1 -0
  276. package/dist/chunk-NJKRLSH3.js +287 -0
  277. package/dist/chunk-NJKRLSH3.js.map +1 -0
  278. package/dist/chunk-NLTKDXLB.js +113 -0
  279. package/dist/chunk-NLTKDXLB.js.map +1 -0
  280. package/dist/chunk-NRWZ6JNA.js +69 -0
  281. package/dist/chunk-NRWZ6JNA.js.map +1 -0
  282. package/dist/chunk-NSBBMIXS.js +151 -0
  283. package/dist/chunk-NSBBMIXS.js.map +1 -0
  284. package/dist/chunk-O665PURC.js +63 -0
  285. package/dist/chunk-O665PURC.js.map +1 -0
  286. package/dist/chunk-O6LH7P6V.js +87 -0
  287. package/dist/chunk-O6LH7P6V.js.map +1 -0
  288. package/dist/chunk-OF4RHJCY.js +69 -0
  289. package/dist/chunk-OF4RHJCY.js.map +1 -0
  290. package/dist/chunk-ORBEMNBA.js +49 -0
  291. package/dist/chunk-ORBEMNBA.js.map +1 -0
  292. package/dist/chunk-OYCRE67S.js +87 -0
  293. package/dist/chunk-OYCRE67S.js.map +1 -0
  294. package/dist/chunk-P4KO43AP.js +245 -0
  295. package/dist/chunk-P4KO43AP.js.map +1 -0
  296. package/dist/chunk-PJHCOBSQ.js +163 -0
  297. package/dist/chunk-PJHCOBSQ.js.map +1 -0
  298. package/dist/chunk-PXPGCDNA.js +106 -0
  299. package/dist/chunk-PXPGCDNA.js.map +1 -0
  300. package/dist/chunk-QBVF4BCB.js +245 -0
  301. package/dist/chunk-QBVF4BCB.js.map +1 -0
  302. package/dist/chunk-QKP2KBZ5.js +219 -0
  303. package/dist/chunk-QKP2KBZ5.js.map +1 -0
  304. package/dist/chunk-QXBRA2T6.js +169 -0
  305. package/dist/chunk-QXBRA2T6.js.map +1 -0
  306. package/dist/chunk-RAMPMKQD.js +245 -0
  307. package/dist/chunk-RAMPMKQD.js.map +1 -0
  308. package/dist/chunk-REPTW53S.js +98 -0
  309. package/dist/chunk-REPTW53S.js.map +1 -0
  310. package/dist/chunk-RMFSOYRW.js +99 -0
  311. package/dist/chunk-RMFSOYRW.js.map +1 -0
  312. package/dist/chunk-RXQHKSIV.js +37 -0
  313. package/dist/chunk-RXQHKSIV.js.map +1 -0
  314. package/dist/chunk-RZGCNQWE.js +89 -0
  315. package/dist/chunk-RZGCNQWE.js.map +1 -0
  316. package/dist/chunk-S3W44IB3.js +151 -0
  317. package/dist/chunk-S3W44IB3.js.map +1 -0
  318. package/dist/chunk-SEKCH5XW.js +100 -0
  319. package/dist/chunk-SEKCH5XW.js.map +1 -0
  320. package/dist/chunk-SGS3LUQ3.js +196 -0
  321. package/dist/chunk-SGS3LUQ3.js.map +1 -0
  322. package/dist/chunk-SLHUNZIR.js +245 -0
  323. package/dist/chunk-SLHUNZIR.js.map +1 -0
  324. package/dist/chunk-STCVW5HT.js +49 -0
  325. package/dist/chunk-STCVW5HT.js.map +1 -0
  326. package/dist/chunk-SVGGVYY7.js +69 -0
  327. package/dist/chunk-SVGGVYY7.js.map +1 -0
  328. package/dist/chunk-T5I3DNHD.js +145 -0
  329. package/dist/chunk-T5I3DNHD.js.map +1 -0
  330. package/dist/chunk-TJDCSV5R.js +230 -0
  331. package/dist/chunk-TJDCSV5R.js.map +1 -0
  332. package/dist/chunk-TJWFURWT.js +43 -0
  333. package/dist/chunk-TJWFURWT.js.map +1 -0
  334. package/dist/chunk-TMO724ZN.js +63 -0
  335. package/dist/chunk-TMO724ZN.js.map +1 -0
  336. package/dist/chunk-TP7DOXLP.js +98 -0
  337. package/dist/chunk-TP7DOXLP.js.map +1 -0
  338. package/dist/chunk-TQJ3HQ7R.js +87 -0
  339. package/dist/chunk-TQJ3HQ7R.js.map +1 -0
  340. package/dist/chunk-TRNLQ7F3.js +245 -0
  341. package/dist/chunk-TRNLQ7F3.js.map +1 -0
  342. package/dist/chunk-U6UGFQIT.js +117 -0
  343. package/dist/chunk-U6UGFQIT.js.map +1 -0
  344. package/dist/chunk-U7OEYXJQ.js +165 -0
  345. package/dist/chunk-U7OEYXJQ.js.map +1 -0
  346. package/dist/chunk-UF6LFXBG.js +230 -0
  347. package/dist/chunk-UF6LFXBG.js.map +1 -0
  348. package/dist/chunk-ULZHPTB5.js +70 -0
  349. package/dist/chunk-ULZHPTB5.js.map +1 -0
  350. package/dist/chunk-UOCLNOC2.js +145 -0
  351. package/dist/chunk-UOCLNOC2.js.map +1 -0
  352. package/dist/chunk-V2RMMVGT.js +51 -0
  353. package/dist/chunk-V2RMMVGT.js.map +1 -0
  354. package/dist/chunk-V2UREEFT.js +89 -0
  355. package/dist/chunk-V2UREEFT.js.map +1 -0
  356. package/dist/chunk-V4WWIPTK.js +363 -0
  357. package/dist/chunk-V4WWIPTK.js.map +1 -0
  358. package/dist/chunk-VEHTXVLY.js +169 -0
  359. package/dist/chunk-VEHTXVLY.js.map +1 -0
  360. package/dist/chunk-VIVVHI7F.js +63 -0
  361. package/dist/chunk-VIVVHI7F.js.map +1 -0
  362. package/dist/chunk-VQMIOVFO.js +69 -0
  363. package/dist/chunk-VQMIOVFO.js.map +1 -0
  364. package/dist/chunk-VU3C3W4S.js +106 -0
  365. package/dist/chunk-VU3C3W4S.js.map +1 -0
  366. package/dist/chunk-VYPPQUB5.js +196 -0
  367. package/dist/chunk-VYPPQUB5.js.map +1 -0
  368. package/dist/chunk-W2TX267T.js +100 -0
  369. package/dist/chunk-W2TX267T.js.map +1 -0
  370. package/dist/chunk-W3EW7K6L.js +51 -0
  371. package/dist/chunk-W3EW7K6L.js.map +1 -0
  372. package/dist/chunk-WA5A2GB4.js +192 -0
  373. package/dist/chunk-WA5A2GB4.js.map +1 -0
  374. package/dist/chunk-WPAC4HEX.js +87 -0
  375. package/dist/chunk-WPAC4HEX.js.map +1 -0
  376. package/dist/chunk-X2OV53JW.js +196 -0
  377. package/dist/chunk-X2OV53JW.js.map +1 -0
  378. package/dist/chunk-X6K6AM4D.js +196 -0
  379. package/dist/chunk-X6K6AM4D.js.map +1 -0
  380. package/dist/chunk-XIKKYBHO.js +69 -0
  381. package/dist/chunk-XIKKYBHO.js.map +1 -0
  382. package/dist/chunk-Y2H4FXGU.js +68 -0
  383. package/dist/chunk-Y2H4FXGU.js.map +1 -0
  384. package/dist/chunk-YCRTFH4C.js +79 -0
  385. package/dist/chunk-YCRTFH4C.js.map +1 -0
  386. package/dist/chunk-YHGFJ7N6.js +63 -0
  387. package/dist/chunk-YHGFJ7N6.js.map +1 -0
  388. package/dist/chunk-YKDT2D43.js +98 -0
  389. package/dist/chunk-YKDT2D43.js.map +1 -0
  390. package/dist/chunk-YLTKQZ67.js +228 -0
  391. package/dist/chunk-YLTKQZ67.js.map +1 -0
  392. package/dist/chunk-YPGFPLWM.js +69 -0
  393. package/dist/chunk-YPGFPLWM.js.map +1 -0
  394. package/dist/chunk-YWYYPYBK.js +1 -0
  395. package/dist/chunk-YWYYPYBK.js.map +1 -0
  396. package/dist/chunk-Z7WNKARH.js +331 -0
  397. package/dist/chunk-Z7WNKARH.js.map +1 -0
  398. package/dist/chunk-ZA4NYPSW.js +28 -0
  399. package/dist/chunk-ZA4NYPSW.js.map +1 -0
  400. package/dist/chunk-ZDY2M7RX.js +113 -0
  401. package/dist/chunk-ZDY2M7RX.js.map +1 -0
  402. package/dist/chunk-ZFTQ2XBH.js +76 -0
  403. package/dist/chunk-ZFTQ2XBH.js.map +1 -0
  404. package/dist/chunk-ZI7PEVZG.js +89 -0
  405. package/dist/chunk-ZI7PEVZG.js.map +1 -0
  406. package/dist/chunk-ZKFNOCWD.js +125 -0
  407. package/dist/chunk-ZKFNOCWD.js.map +1 -0
  408. package/dist/chunk-ZOITFRX7.js +70 -0
  409. package/dist/chunk-ZOITFRX7.js.map +1 -0
  410. package/dist/chunk-ZPDLTZDJ.js +363 -0
  411. package/dist/chunk-ZPDLTZDJ.js.map +1 -0
  412. package/dist/chunk-ZR4G3PU3.js +89 -0
  413. package/dist/chunk-ZR4G3PU3.js.map +1 -0
  414. package/dist/context/index.js +5 -5
  415. package/dist/index.cjs +1704 -308
  416. package/dist/index.cjs.map +1 -1
  417. package/dist/index.d.cts +3 -2
  418. package/dist/index.d.ts +3 -2
  419. package/dist/index.js +168 -159
  420. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +18 -18
  421. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +4 -4
  422. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +11 -11
  423. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +2 -2
  424. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +3 -3
  425. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.js +2 -2
  426. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +6 -6
  427. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +5 -5
  428. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +5 -5
  429. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +5 -5
  430. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +4 -4
  431. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +21 -21
  432. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +6 -6
  433. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
  434. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +4 -4
  435. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
  436. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +4 -4
  437. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
  438. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +24 -24
  439. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs +4 -4
  440. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs.map +1 -1
  441. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.js +1 -1
  442. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +4 -4
  443. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
  444. package/dist/molecules/curriculumV2/CurriculumContents/index.js +29 -29
  445. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +2 -2
  446. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +4 -4
  447. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
  448. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +8 -8
  449. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +5 -5
  450. package/dist/molecules/curriculumV2/curriculum-context.cjs +0 -1
  451. package/dist/molecules/curriculumV2/curriculum-context.cjs.map +1 -1
  452. package/dist/molecules/curriculumV2/curriculum-context.js +1 -1
  453. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
  454. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +5 -5
  455. package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
  456. package/dist/molecules/curriculumV2/index.cjs +4 -5
  457. package/dist/molecules/curriculumV2/index.cjs.map +1 -1
  458. package/dist/molecules/curriculumV2/index.js +39 -39
  459. package/dist/molecules/date-picker/date-picker-button.js +6 -6
  460. package/dist/molecules/date-picker/index.js +5 -5
  461. package/dist/molecules/description-json-render.cjs +1 -1
  462. package/dist/molecules/description-json-render.cjs.map +1 -1
  463. package/dist/molecules/description-json-render.js +6 -6
  464. package/dist/molecules/download-card.js +2 -2
  465. package/dist/molecules/dynamic-field.cjs +147 -5
  466. package/dist/molecules/dynamic-field.cjs.map +1 -1
  467. package/dist/molecules/dynamic-field.js +9 -6
  468. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +1711 -0
  469. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -0
  470. package/dist/molecules/dynamic-form-editor-field-editor-panel.d.cts +19 -0
  471. package/dist/molecules/dynamic-form-editor-field-editor-panel.d.ts +19 -0
  472. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +37 -0
  473. package/dist/molecules/dynamic-form-editor-field-editor-panel.js.map +1 -0
  474. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +298 -0
  475. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -0
  476. package/dist/molecules/dynamic-form-editor-field-list-panel.d.cts +16 -0
  477. package/dist/molecules/dynamic-form-editor-field-list-panel.d.ts +16 -0
  478. package/dist/molecules/dynamic-form-editor-field-list-panel.js +14 -0
  479. package/dist/molecules/dynamic-form-editor-field-list-panel.js.map +1 -0
  480. package/dist/molecules/dynamic-form-editor-issues-panel.cjs +171 -0
  481. package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -0
  482. package/dist/molecules/dynamic-form-editor-issues-panel.d.cts +10 -0
  483. package/dist/molecules/dynamic-form-editor-issues-panel.d.ts +10 -0
  484. package/dist/molecules/dynamic-form-editor-issues-panel.js +12 -0
  485. package/dist/molecules/dynamic-form-editor-issues-panel.js.map +1 -0
  486. package/dist/molecules/dynamic-form-editor-preview-panel.cjs +1021 -0
  487. package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -0
  488. package/dist/molecules/dynamic-form-editor-preview-panel.d.cts +10 -0
  489. package/dist/molecules/dynamic-form-editor-preview-panel.d.ts +10 -0
  490. package/dist/molecules/dynamic-form-editor-preview-panel.js +26 -0
  491. package/dist/molecules/dynamic-form-editor-preview-panel.js.map +1 -0
  492. package/dist/molecules/dynamic-form-editor-utils.cjs +396 -0
  493. package/dist/molecules/dynamic-form-editor-utils.cjs.map +1 -0
  494. package/dist/molecules/dynamic-form-editor-utils.d.cts +43 -0
  495. package/dist/molecules/dynamic-form-editor-utils.d.ts +43 -0
  496. package/dist/molecules/dynamic-form-editor-utils.js +44 -0
  497. package/dist/molecules/dynamic-form-editor-utils.js.map +1 -0
  498. package/dist/molecules/dynamic-form-editor.cjs +2925 -0
  499. package/dist/molecules/dynamic-form-editor.cjs.map +1 -0
  500. package/dist/molecules/dynamic-form-editor.d.cts +15 -0
  501. package/dist/molecules/dynamic-form-editor.d.ts +15 -0
  502. package/dist/molecules/dynamic-form-editor.js +51 -0
  503. package/dist/molecules/dynamic-form-editor.js.map +1 -0
  504. package/dist/molecules/dynamic-form-response-item.cjs +21 -12
  505. package/dist/molecules/dynamic-form-response-item.cjs.map +1 -1
  506. package/dist/molecules/dynamic-form-response-item.js +1 -1
  507. package/dist/molecules/dynamic-form.cjs +149 -7
  508. package/dist/molecules/dynamic-form.cjs.map +1 -1
  509. package/dist/molecules/dynamic-form.js +10 -7
  510. package/dist/molecules/expand-table/index.js +5 -5
  511. package/dist/molecules/force-refresh.js +2 -2
  512. package/dist/molecules/ghost-post.js +4 -4
  513. package/dist/molecules/index.cjs +1426 -27
  514. package/dist/molecules/index.cjs.map +1 -1
  515. package/dist/molecules/index.d.cts +1 -0
  516. package/dist/molecules/index.d.ts +1 -0
  517. package/dist/molecules/index.js +91 -81
  518. package/dist/molecules/learning-post.js +6 -6
  519. package/dist/molecules/navigation.js +3 -3
  520. package/dist/molecules/one-on-one-guide-list.js +3 -3
  521. package/dist/molecules/stepper.js +4 -4
  522. package/dist/molecules/tag-selector.js +5 -5
  523. package/dist/molecules/time-select.cjs +1 -1
  524. package/dist/molecules/time-select.cjs.map +1 -1
  525. package/dist/molecules/time-select.js +1 -1
  526. package/dist/molecules/training-info-guideline.js +7 -7
  527. package/dist/types/dynamic-form-schema-generated.cjs.map +1 -1
  528. package/dist/types/dynamic-form-schema-generated.d.cts +30 -2
  529. package/dist/types/dynamic-form-schema-generated.d.ts +30 -2
  530. package/dist/types/index.d.cts +1 -1
  531. package/dist/types/index.d.ts +1 -1
  532. package/dist/types/index.js +1 -1
  533. package/dist/utils/get-callout-icon-component.cjs +624 -0
  534. package/dist/utils/get-callout-icon-component.cjs.map +1 -0
  535. package/dist/utils/get-callout-icon-component.d.cts +11 -0
  536. package/dist/utils/get-callout-icon-component.d.ts +11 -0
  537. package/dist/utils/get-callout-icon-component.js +26 -0
  538. package/dist/utils/get-callout-icon-component.js.map +1 -0
  539. package/dist/utils/index.cjs +1 -1
  540. package/dist/utils/index.cjs.map +1 -1
  541. package/dist/utils/index.d.cts +1 -1
  542. package/dist/utils/index.d.ts +1 -1
  543. package/dist/utils/index.js +1 -1
  544. package/package.json +1 -1
  545. package/src/app/platform/reservation-card.tsx +0 -1
  546. package/src/constrant/dynamic-form-schema.json +55 -0
  547. package/src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx +3 -3
  548. package/src/molecules/curriculumV2/curriculum-context.tsx +0 -1
  549. package/src/molecules/description-json-render.tsx +1 -1
  550. package/src/molecules/dynamic-field.tsx +183 -7
  551. package/src/molecules/dynamic-form-editor-field-editor-panel.tsx +688 -0
  552. package/src/molecules/dynamic-form-editor-field-list-panel.tsx +116 -0
  553. package/src/molecules/dynamic-form-editor-issues-panel.tsx +35 -0
  554. package/src/molecules/dynamic-form-editor-preview-panel.tsx +30 -0
  555. package/src/molecules/dynamic-form-editor-utils.ts +433 -0
  556. package/src/molecules/dynamic-form-editor.tsx +263 -0
  557. package/src/molecules/dynamic-form-response-item.tsx +28 -17
  558. package/src/molecules/dynamic-form.tsx +1 -1
  559. package/src/molecules/index.ts +2 -1
  560. package/src/types/dynamic-form-schema-generated.ts +33 -0
  561. package/src/utils/index.ts +1 -1
  562. 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,
@@ -287,7 +288,7 @@ __export(index_exports, {
287
288
  useDynamicForm: () => useDynamicForm,
288
289
  useList: () => useList,
289
290
  usePortalContainer: () => usePortalContainer,
290
- useThemeContext: () => import_themes56.useThemeContext,
291
+ useThemeContext: () => import_themes58.useThemeContext,
291
292
  useUIState: () => useUIState
292
293
  });
293
294
  module.exports = __toCommonJS(index_exports);
@@ -3628,7 +3629,7 @@ var getTimeOption = (time) => {
3628
3629
  return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;
3629
3630
  };
3630
3631
 
3631
- // src/utils/getCalloutIconComponent.ts
3632
+ // src/utils/get-callout-icon-component.ts
3632
3633
  var DEFAULT_ICON = import_react_icons2.InfoCircledIcon;
3633
3634
  var AI_CALLOUT_ICON_OPTIONS = [
3634
3635
  { label: "Info", value: "InfoCircledIcon", Component: import_react_icons2.InfoCircledIcon },
@@ -3960,7 +3961,6 @@ function CurriculumProvider(props) {
3960
3961
  const inBounds = selectedIndexState >= 0 && selectedIndexState < list.length;
3961
3962
  if (!inBounds) return;
3962
3963
  const item = list[selectedIndexState];
3963
- if (!item) return;
3964
3964
  if (item.type === "sectionTitle") return;
3965
3965
  onChangeSelectedContent == null ? void 0 : onChangeSelectedContent(item);
3966
3966
  }, [list, onChangeSelectedContent, selectedIndexState]);
@@ -4116,15 +4116,15 @@ function CurriculumVideo(props) {
4116
4116
  "iframe",
4117
4117
  {
4118
4118
  allowFullScreen: true,
4119
+ onError: () => {
4120
+ setIsLoading(false);
4121
+ },
4119
4122
  onLoad: () => {
4120
4123
  setIsLoading(false);
4121
4124
  },
4122
4125
  src: `${url}?theme=light`,
4123
4126
  style: { width: "100%", height: "100%", border: "none" },
4124
- title: "Curriculum Video",
4125
- onError: () => {
4126
- setIsLoading(false);
4127
- }
4127
+ title: "Curriculum Video"
4128
4128
  }
4129
4129
  )
4130
4130
  ]
@@ -5648,6 +5648,46 @@ function useDynamicForm() {
5648
5648
 
5649
5649
  // src/molecules/dynamic-field.tsx
5650
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
+ }
5651
5691
  function DynamicFormField({
5652
5692
  field
5653
5693
  }) {
@@ -5660,7 +5700,7 @@ function DynamicFormField({
5660
5700
  handleBlur,
5661
5701
  readonly
5662
5702
  } = useDynamicForm();
5663
- const { name, type } = field;
5703
+ const name = field.name;
5664
5704
  const value = getFieldValue(name);
5665
5705
  const error = getFieldError(name);
5666
5706
  const touched = getFieldTouched(name);
@@ -5673,14 +5713,22 @@ function DynamicFormField({
5673
5713
  error: hasError,
5674
5714
  disabled: readonly
5675
5715
  };
5676
- switch (type) {
5716
+ const selectedValue = typeof value === "string" || typeof value === "number" ? String(value) : "";
5717
+ switch (field.type) {
5677
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
+ );
5678
5726
  case "email":
5679
5727
  return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5680
5728
  TextField.Root,
5681
5729
  __spreadProps(__spreadValues({}, commonProps), {
5682
5730
  placeholder: field.placeholder,
5683
- type: type === "short_text" ? "text" : type
5731
+ type: "email"
5684
5732
  })
5685
5733
  );
5686
5734
  case "number":
@@ -5703,9 +5751,20 @@ function DynamicFormField({
5703
5751
  onValueChange: readonly ? void 0 : (newValue) => {
5704
5752
  void setFieldValue(name, newValue);
5705
5753
  },
5706
- value,
5754
+ value: selectedValue,
5707
5755
  children: [
5708
- /* @__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
+ ),
5709
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)) })
5710
5769
  ]
5711
5770
  }
@@ -5723,6 +5782,21 @@ function DynamicFormField({
5723
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))
5724
5783
  }
5725
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
+ }
5726
5800
  case "choices":
5727
5801
  return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5728
5802
  CheckboxGroup.Root,
@@ -5750,6 +5824,65 @@ function DynamicFormField({
5750
5824
  ),
5751
5825
  field.description ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { color: "gray", variant: "caption", children: field.description }) : null
5752
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
+ }
5753
5886
  default:
5754
5887
  return null;
5755
5888
  }
@@ -5975,27 +6108,32 @@ function createYupValidation(field, validation) {
5975
6108
  }
5976
6109
 
5977
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
+ }
5978
6120
  function DynamicFormResponseItem({
5979
6121
  payload,
5980
6122
  questionType,
5981
6123
  config
5982
6124
  }) {
5983
- if (!payload || typeof payload !== "object") {
5984
- return String(payload || "\uC751\uB2F5 \uC5C6\uC74C");
5985
- }
5986
- const payloadObj = payload;
5987
- const value = payloadObj.value;
6125
+ const value = isRecord2(payload) && "value" in payload ? payload.value : payload;
5988
6126
  if (value === void 0 || value === null || value === "") {
5989
6127
  return "\uC751\uB2F5 \uC5C6\uC74C";
5990
6128
  }
5991
- const getOptions = (fieldConfig) => {
5992
- if (!fieldConfig || typeof fieldConfig !== "object") return void 0;
5993
- if ("options" in fieldConfig && Array.isArray(fieldConfig.options)) {
5994
- return fieldConfig.options;
5995
- }
5996
- 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;
5997
6135
  };
5998
- const options = getOptions(config);
6136
+ const options = getOptions2(config);
5999
6137
  switch (questionType) {
6000
6138
  case "text":
6001
6139
  case "textarea":
@@ -6003,8 +6141,10 @@ function DynamicFormResponseItem({
6003
6141
  case "radio":
6004
6142
  case "select":
6005
6143
  case "choice":
6144
+ case "radio_cards":
6145
+ case "image_radio_card":
6006
6146
  if (options) {
6007
- const option = options.find((opt) => opt.value === value);
6147
+ const option = options.find((opt) => String(opt.value) === String(value));
6008
6148
  return option ? option.label : String(value);
6009
6149
  }
6010
6150
  return String(value);
@@ -6013,7 +6153,9 @@ function DynamicFormResponseItem({
6013
6153
  if (Array.isArray(value)) {
6014
6154
  if (options) {
6015
6155
  return value.map((val) => {
6016
- const option = options.find((opt) => opt.value === val);
6156
+ const option = options.find(
6157
+ (opt) => String(opt.value) === String(val)
6158
+ );
6017
6159
  return option ? option.label : String(val);
6018
6160
  }).join(", ");
6019
6161
  }
@@ -6275,29 +6417,1282 @@ function TrainingInfoGuidelineButton({
6275
6417
  );
6276
6418
  }
6277
6419
 
6278
- // 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");
6279
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");
6280
7675
 
6281
7676
  // src/ui-props/index.ts
6282
7677
  var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
6283
7678
 
6284
7679
  // src/charts/horizontal-bar-chart.tsx
6285
- var import_jsx_runtime93 = require("react/jsx-runtime");
7680
+ var import_jsx_runtime98 = require("react/jsx-runtime");
6286
7681
  function HorizontalBarChart(props) {
6287
7682
  const { total, value, backgroundColor, barColor, height } = props;
6288
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7683
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
6289
7684
  "div",
6290
7685
  {
6291
7686
  className: "tipp_horizontal-bar-chart bar-wrapper",
6292
7687
  style: { height, backgroundColor },
6293
- children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7688
+ children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
6294
7689
  "div",
6295
7690
  {
6296
7691
  style: {
6297
7692
  width: `${Math.round(value / total * 100)}%`,
6298
7693
  height: "100%"
6299
7694
  },
6300
- 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 } })
6301
7696
  }
6302
7697
  )
6303
7698
  }
@@ -6453,23 +7848,23 @@ var EchartDefaultProps = {
6453
7848
  };
6454
7849
 
6455
7850
  // src/app/platform/userInfos/coaching-customer-info/small.tsx
6456
- var import_jsx_runtime94 = require("react/jsx-runtime");
7851
+ var import_jsx_runtime99 = require("react/jsx-runtime");
6457
7852
  function CoachingCustomerInfoSmall({
6458
7853
  customer,
6459
7854
  children,
6460
7855
  badge
6461
7856
  }) {
6462
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
7857
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
6463
7858
  import_themes22.Flex,
6464
7859
  {
6465
7860
  direction: { initial: "column", xs: "row" },
6466
7861
  gap: "3",
6467
7862
  justify: "between",
6468
7863
  children: [
6469
- /* @__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: [
6470
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Heading2, { variant: "heading3", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
6471
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { color: "gray", truncate: true, variant: "body", children: customer == null ? void 0 : customer.company }),
6472
- /* @__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 })
6473
7868
  ] }) }),
6474
7869
  children
6475
7870
  ]
@@ -6480,7 +7875,7 @@ function CoachingCustomerInfoSmall({
6480
7875
  // src/app/platform/userInfos/utils.tsx
6481
7876
  var import_date_fns3 = require("date-fns");
6482
7877
  var import_react_icons10 = require("@radix-ui/react-icons");
6483
- var import_jsx_runtime95 = require("react/jsx-runtime");
7878
+ var import_jsx_runtime100 = require("react/jsx-runtime");
6484
7879
  var infoList = [
6485
7880
  { label: "\uC774\uB984", getValue: (customer) => customer == null ? void 0 : customer.username },
6486
7881
  { label: "\uC131\uBCC4", getValue: (customer) => customer == null ? void 0 : customer.gender },
@@ -6540,21 +7935,21 @@ var sessionList = [
6540
7935
  var renderItem = (args) => {
6541
7936
  const { info, data, onClickCopy } = args;
6542
7937
  const value = info.getValue(data);
6543
- 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: [
6544
7939
  info.render ? info.render(value) : value || "-",
6545
- 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
6546
7941
  ] });
6547
7942
  };
6548
7943
  var renderDataListItem = (args) => {
6549
7944
  const { info, data, onClickCopy } = args;
6550
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_themes15.DataList.Item, { children: [
6551
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_themes15.DataList.Label, { children: info.label }),
6552
- /* @__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 }) })
6553
7948
  ] }, info.label);
6554
7949
  };
6555
7950
  function CopyButton(props) {
6556
7951
  const { value, onClickCopy } = props;
6557
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
7952
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
6558
7953
  Button,
6559
7954
  {
6560
7955
  color: "gray",
@@ -6563,13 +7958,13 @@ function CopyButton(props) {
6563
7958
  },
6564
7959
  style: { marginLeft: "0", marginTop: "0" },
6565
7960
  variant: "transparent",
6566
- children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_react_icons10.CopyIcon, {})
7961
+ children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_react_icons10.CopyIcon, {})
6567
7962
  }
6568
7963
  );
6569
7964
  }
6570
7965
 
6571
7966
  // src/app/platform/userInfos/coaching-customer-info/medium.tsx
6572
- var import_jsx_runtime96 = require("react/jsx-runtime");
7967
+ var import_jsx_runtime101 = require("react/jsx-runtime");
6573
7968
  function CoachingCustomerInfoMedium({
6574
7969
  customer,
6575
7970
  session,
@@ -6577,28 +7972,28 @@ function CoachingCustomerInfoMedium({
6577
7972
  badge,
6578
7973
  onClickCopy
6579
7974
  }) {
6580
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6581
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes6.Box, { children: [
6582
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
6583
- /* @__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" }),
6584
7979
  badge
6585
7980
  ] }),
6586
- /* @__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 })
6587
7982
  ] }),
6588
7983
  children,
6589
- /* @__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(
6590
7985
  (el) => renderDataListItem({
6591
7986
  info: el,
6592
7987
  data: session,
6593
7988
  onClickCopy
6594
7989
  })
6595
7990
  ) }) }),
6596
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", children: [
6597
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Heading2, { variant: "heading5", children: "\uACE0\uAC1D \uC815\uBCF4" }),
6598
- /* @__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" })
6599
7994
  ] }),
6600
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_themes22.Flex, { direction: "column", gap: "4", children: infoList.map((el) => {
6601
- 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({
6602
7997
  info: el,
6603
7998
  data: customer,
6604
7999
  onClickCopy
@@ -6608,7 +8003,7 @@ function CoachingCustomerInfoMedium({
6608
8003
  }
6609
8004
 
6610
8005
  // src/app/platform/userInfos/coaching-customer-info/large.tsx
6611
- var import_jsx_runtime97 = require("react/jsx-runtime");
8006
+ var import_jsx_runtime102 = require("react/jsx-runtime");
6612
8007
  function CoachingCustomerInfoLarge({
6613
8008
  customer,
6614
8009
  session,
@@ -6616,24 +8011,24 @@ function CoachingCustomerInfoLarge({
6616
8011
  badge,
6617
8012
  onClickCopy
6618
8013
  }) {
6619
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6620
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes6.Box, { children: [
6621
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
6622
- /* @__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" }),
6623
8018
  badge
6624
8019
  ] }),
6625
- /* @__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 })
6626
8021
  ] }),
6627
8022
  children,
6628
- /* @__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(
6629
8024
  (el) => renderDataListItem({
6630
8025
  info: el,
6631
8026
  data: session,
6632
8027
  onClickCopy
6633
8028
  })
6634
8029
  ) }) }),
6635
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_themes39.Separator, { size: "4" }),
6636
- /* @__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(
6637
8032
  (info) => renderDataListItem({
6638
8033
  info,
6639
8034
  data: customer,
@@ -6644,19 +8039,19 @@ function CoachingCustomerInfoLarge({
6644
8039
  }
6645
8040
 
6646
8041
  // src/app/platform/userInfos/coaching-customer-info/index.tsx
6647
- var import_jsx_runtime98 = require("react/jsx-runtime");
8042
+ var import_jsx_runtime103 = require("react/jsx-runtime");
6648
8043
  function CoachingCustomerInfo(props) {
6649
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_jsx_runtime98.Fragment, { children: [
6650
- /* @__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)) }),
6651
- /* @__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)) }),
6652
- /* @__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)) })
6653
8048
  ] });
6654
8049
  }
6655
8050
 
6656
8051
  // src/app/platform/goal-manage-card-read.tsx
6657
- var import_react47 = require("react");
8052
+ var import_react50 = require("react");
6658
8053
  var import_date_fns4 = require("date-fns");
6659
- var import_jsx_runtime99 = require("react/jsx-runtime");
8054
+ var import_jsx_runtime104 = require("react/jsx-runtime");
6660
8055
  function GoalManageCardRead(props) {
6661
8056
  const {
6662
8057
  title,
@@ -6670,12 +8065,12 @@ function GoalManageCardRead(props) {
6670
8065
  onClickIncomplete,
6671
8066
  onClickComplete
6672
8067
  } = props;
6673
- const [open, setOpen] = (0, import_react47.useState)(Boolean(defaultOpen));
6674
- const onClickOpen = (0, import_react47.useCallback)(() => {
8068
+ const [open, setOpen] = (0, import_react50.useState)(Boolean(defaultOpen));
8069
+ const onClickOpen = (0, import_react50.useCallback)(() => {
6675
8070
  setOpen((p) => !p);
6676
8071
  }, []);
6677
- const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.ChevronUpIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react_icons2.ChevronDownIcon, {});
6678
- 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)(() => {
6679
8074
  if (!completed && dueDate) {
6680
8075
  if (dueDate >= (0, import_date_fns4.startOfDay)(/* @__PURE__ */ new Date()))
6681
8076
  return {
@@ -6686,41 +8081,41 @@ function GoalManageCardRead(props) {
6686
8081
  }
6687
8082
  return null;
6688
8083
  }, [completed, dueDate]);
6689
- const renderSubTitle = (0, import_react47.useCallback)((subTitle) => {
6690
- 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 });
6691
8086
  }, []);
6692
- const renderSubContent = (0, import_react47.useCallback)((content) => {
6693
- 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 });
6694
8089
  }, []);
6695
- const renderCompleteButton = (0, import_react47.useCallback)(() => {
8090
+ const renderCompleteButton = (0, import_react50.useCallback)(() => {
6696
8091
  if (completed) {
6697
- 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" });
6698
8093
  }
6699
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Root, { children: [
6700
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Button, { size: "small", children: [
6701
- /* @__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, {}),
6702
8097
  "\uB2EC\uC131\uD558\uAE30"
6703
8098
  ] }) }),
6704
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Content, { children: [
6705
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
6706
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
6707
- /* @__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" }) }),
6708
- /* @__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" }) })
6709
8104
  ] })
6710
8105
  ] })
6711
8106
  ] });
6712
8107
  }, [completed, onClickIncomplete, onClickComplete]);
6713
- 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: [
6714
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(IconButton, { onClick: onClickOpen, variant: "ghost", children: icon }),
6715
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { variant: "heading4", children: title }),
6716
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { align: "center", gridColumnStart: "2", justify: "between", mt: "2", children: [
6717
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { align: "center", gap: "3", children: [
6718
- badgeMeta ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Badge, __spreadValues({}, badgeMeta)) : null,
6719
- /* @__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 })
6720
8115
  ] }),
6721
8116
  renderCompleteButton()
6722
8117
  ] }),
6723
- open ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
8118
+ open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
6724
8119
  import_themes39.Separator,
6725
8120
  {
6726
8121
  mb: "4",
@@ -6729,37 +8124,37 @@ function GoalManageCardRead(props) {
6729
8124
  style: { gridColumnStart: "span 2" }
6730
8125
  }
6731
8126
  ) : null,
6732
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { gridColumnStart: "2", p: "0", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Collapse, { open, children: [
6733
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6734
- /* @__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: [
6735
8130
  renderSubTitle(
6736
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"
6737
8132
  ),
6738
8133
  renderSubContent(expectedEffect)
6739
8134
  ] }),
6740
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes6.Box, { children: [
8135
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
6741
8136
  renderSubTitle(
6742
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"
6743
8138
  ),
6744
8139
  renderSubContent(huddle)
6745
8140
  ] })
6746
8141
  ] }),
6747
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", mt: "3", children: [
6748
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Root, { children: [
6749
- /* @__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: [
6750
- /* @__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, {}),
6751
8146
  "\uC0AD\uC81C\uD558\uAE30"
6752
8147
  ] }) }),
6753
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes29.Popover.Content, { children: [
6754
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
6755
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
6756
- /* @__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" }) }),
6757
- /* @__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" }) })
6758
8153
  ] })
6759
8154
  ] })
6760
8155
  ] }),
6761
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Button, { onClick: onClickEdit, size: "small", variant: "surface", children: [
6762
- /* @__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, {}),
6763
8158
  "\uC218\uC815\uD558\uAE30"
6764
8159
  ] })
6765
8160
  ] })
@@ -6768,9 +8163,9 @@ function GoalManageCardRead(props) {
6768
8163
  }
6769
8164
 
6770
8165
  // src/app/platform/goal-manage-card-edit.tsx
6771
- var import_react48 = require("react");
8166
+ var import_react51 = require("react");
6772
8167
  var import_date_fns5 = require("date-fns");
6773
- var import_jsx_runtime100 = require("react/jsx-runtime");
8168
+ var import_jsx_runtime105 = require("react/jsx-runtime");
6774
8169
  var initialValues = {
6775
8170
  goal: "",
6776
8171
  effect: "",
@@ -6781,8 +8176,8 @@ var dummyFn = () => {
6781
8176
  };
6782
8177
  function GoalManageCardEdit(props) {
6783
8178
  const { defaultValues, errors } = props;
6784
- const [values, setValues] = (0, import_react48.useState)(defaultValues || initialValues);
6785
- const onChange = (0, import_react48.useCallback)(
8179
+ const [values, setValues] = (0, import_react51.useState)(defaultValues || initialValues);
8180
+ const onChange = (0, import_react51.useCallback)(
6786
8181
  (v) => {
6787
8182
  var _a;
6788
8183
  setValues((prev) => __spreadValues(__spreadValues({}, prev), v));
@@ -6790,20 +8185,20 @@ function GoalManageCardEdit(props) {
6790
8185
  },
6791
8186
  [props]
6792
8187
  );
6793
- const onClickInit = (0, import_react48.useCallback)(() => {
8188
+ const onClickInit = (0, import_react51.useCallback)(() => {
6794
8189
  var _a;
6795
8190
  setValues(initialValues);
6796
8191
  (_a = props.onChange) == null ? void 0 : _a.call(props, defaultValues || initialValues);
6797
8192
  }, [defaultValues, props]);
6798
- const onClickSubmit = (0, import_react48.useCallback)(() => {
8193
+ const onClickSubmit = (0, import_react51.useCallback)(() => {
6799
8194
  var _a;
6800
8195
  (_a = props.onSubmit) == null ? void 0 : _a.call(props, values);
6801
8196
  }, [props, values]);
6802
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Card, { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Root, { onSubmit: dummyFn, children: [
6803
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
6804
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "title", children: [
6805
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uC774\uBC88 \uCF54\uCE6D\uC758 \uBAA9\uD45C\uB294 \uC544\uB798\uC640 \uAC19\uC2B5\uB2C8\uB2E4" }),
6806
- /* @__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)(
6807
8202
  TextField.Root,
6808
8203
  {
6809
8204
  error: Boolean(errors == null ? void 0 : errors.goal),
@@ -6814,11 +8209,11 @@ function GoalManageCardEdit(props) {
6814
8209
  value: values.goal
6815
8210
  }
6816
8211
  ),
6817
- /* @__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 })
6818
8213
  ] }),
6819
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "effect", children: [
6820
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uAE30\uB300\uD6A8\uACFC" }),
6821
- /* @__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)(
6822
8217
  TextArea,
6823
8218
  {
6824
8219
  error: Boolean(errors == null ? void 0 : errors.effect),
@@ -6830,11 +8225,11 @@ function GoalManageCardEdit(props) {
6830
8225
  value: values.effect
6831
8226
  }
6832
8227
  ),
6833
- /* @__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 })
6834
8229
  ] }),
6835
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "huddle", children: [
6836
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uBC29\uD574\uC694\uC18C" }),
6837
- /* @__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)(
6838
8233
  TextArea,
6839
8234
  {
6840
8235
  error: Boolean(errors == null ? void 0 : errors.huddle),
@@ -6848,11 +8243,11 @@ function GoalManageCardEdit(props) {
6848
8243
  value: values.huddle
6849
8244
  }
6850
8245
  ),
6851
- /* @__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 })
6852
8247
  ] }),
6853
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Form.Field, { name: "dueDate", children: [
6854
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Label, { children: "\uBAA9\uD45C \uB2EC\uC131 \uAE30\uD55C\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4" }),
6855
- /* @__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)(
6856
8251
  DatePickerButton,
6857
8252
  {
6858
8253
  format: (v) => (0, import_date_fns5.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C"),
@@ -6863,11 +8258,11 @@ function GoalManageCardEdit(props) {
6863
8258
  selected: values.dueDate
6864
8259
  }
6865
8260
  ),
6866
- /* @__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 })
6867
8262
  ] })
6868
8263
  ] }),
6869
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
6870
- /* @__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)(
6871
8266
  Button,
6872
8267
  {
6873
8268
  color: "gray",
@@ -6878,18 +8273,18 @@ function GoalManageCardEdit(props) {
6878
8273
  children: "\uCD08\uAE30\uD654\uD558\uAE30"
6879
8274
  }
6880
8275
  ),
6881
- /* @__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" })
6882
8277
  ] })
6883
8278
  ] }) });
6884
8279
  }
6885
8280
 
6886
8281
  // src/app/platform/session-card.tsx
6887
- var import_react51 = require("react");
8282
+ var import_react54 = require("react");
6888
8283
  var import_date_fns6 = require("date-fns");
6889
8284
 
6890
8285
  // src/app/platform/edit-coaching-time.tsx
6891
- var import_react49 = require("react");
6892
- var import_jsx_runtime101 = require("react/jsx-runtime");
8286
+ var import_react52 = require("react");
8287
+ var import_jsx_runtime106 = require("react/jsx-runtime");
6893
8288
  var getValueFromDefaultValue = (args) => {
6894
8289
  return {
6895
8290
  startTime: args.startAt ? getTimeOption(args.startAt) : "00:00",
@@ -6909,14 +8304,14 @@ var getDateFromValue = (date, time) => {
6909
8304
  };
6910
8305
  function EditCoachingTime(props) {
6911
8306
  const { defaultEndAt, defaultStartAt, onClickCancel } = props;
6912
- const [values, setValues] = (0, import_react49.useState)(() => {
8307
+ const [values, setValues] = (0, import_react52.useState)(() => {
6913
8308
  return getValueFromDefaultValue({
6914
8309
  startAt: defaultStartAt,
6915
8310
  endAt: defaultEndAt
6916
8311
  });
6917
8312
  });
6918
- const [timeError, setTimeError] = (0, import_react49.useState)("");
6919
- const checkTimeError = (0, import_react49.useCallback)(
8313
+ const [timeError, setTimeError] = (0, import_react52.useState)("");
8314
+ const checkTimeError = (0, import_react52.useCallback)(
6920
8315
  (startTime, endTime) => {
6921
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." : "";
6922
8317
  if (error) {
@@ -6927,7 +8322,7 @@ function EditCoachingTime(props) {
6927
8322
  },
6928
8323
  []
6929
8324
  );
6930
- const onChangeStartTime = (0, import_react49.useCallback)(
8325
+ const onChangeStartTime = (0, import_react52.useCallback)(
6931
8326
  (v) => {
6932
8327
  checkTimeError(v, values.endTime);
6933
8328
  setValues((prev) => __spreadProps(__spreadValues({}, prev), {
@@ -6936,7 +8331,7 @@ function EditCoachingTime(props) {
6936
8331
  },
6937
8332
  [checkTimeError, values.endTime]
6938
8333
  );
6939
- const onChangeEndTime = (0, import_react49.useCallback)(
8334
+ const onChangeEndTime = (0, import_react52.useCallback)(
6940
8335
  (v) => {
6941
8336
  checkTimeError(values.startTime, v);
6942
8337
  setValues((prev) => __spreadProps(__spreadValues({}, prev), {
@@ -6945,12 +8340,12 @@ function EditCoachingTime(props) {
6945
8340
  },
6946
8341
  [checkTimeError, values.startTime]
6947
8342
  );
6948
- const onChangeDate = (0, import_react49.useCallback)((date) => {
8343
+ const onChangeDate = (0, import_react52.useCallback)((date) => {
6949
8344
  date && setValues((prev) => __spreadProps(__spreadValues({}, prev), {
6950
8345
  date
6951
8346
  }));
6952
8347
  }, []);
6953
- const onClickSave = (0, import_react49.useCallback)(() => {
8348
+ const onClickSave = (0, import_react52.useCallback)(() => {
6954
8349
  if (checkTimeError(values.startTime, values.endTime)) {
6955
8350
  const startAt = getDateFromValue(values.date, values.startTime);
6956
8351
  const endAt = getDateFromValue(values.date, values.endTime);
@@ -6959,10 +8354,10 @@ function EditCoachingTime(props) {
6959
8354
  import_react_toastify2.toast.error("\uC785\uB825 \uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");
6960
8355
  }
6961
8356
  }, [checkTimeError, props, values.date, values.endTime, values.startTime]);
6962
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes6.Box, { width: { initial: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Form.Root, { children: [
6963
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Form.Field, { name: "date", children: [
6964
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Form.Label, { variant: "caption", children: "\uB0A0\uC9DC" }),
6965
- /* @__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)(
6966
8361
  DatePickerButton,
6967
8362
  {
6968
8363
  maxDate: /* @__PURE__ */ new Date(),
@@ -6972,7 +8367,7 @@ function EditCoachingTime(props) {
6972
8367
  }
6973
8368
  )
6974
8369
  ] }),
6975
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
8370
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
6976
8371
  import_themes23.Grid,
6977
8372
  {
6978
8373
  align: "center",
@@ -6987,10 +8382,10 @@ function EditCoachingTime(props) {
6987
8382
  mt: "5",
6988
8383
  width: "100%",
6989
8384
  children: [
6990
- /* @__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" }) }),
6991
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", {}),
6992
- /* @__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" }) }),
6993
- /* @__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)(
6994
8389
  TimeSelect,
6995
8390
  {
6996
8391
  onValueChange: onChangeStartTime,
@@ -6998,8 +8393,8 @@ function EditCoachingTime(props) {
6998
8393
  value: values.startTime
6999
8394
  }
7000
8395
  ),
7001
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes6.Box, { overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes39.Separator, {}) }),
7002
- /* @__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)(
7003
8398
  TimeSelect,
7004
8399
  {
7005
8400
  onValueChange: onChangeEndTime,
@@ -7007,36 +8402,36 @@ function EditCoachingTime(props) {
7007
8402
  value: values.endTime
7008
8403
  }
7009
8404
  ),
7010
- /* @__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 }) })
7011
8406
  ]
7012
8407
  }
7013
8408
  ),
7014
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", children: [
7015
- /* @__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" }) }),
7016
- /* @__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" }) })
7017
8412
  ] })
7018
8413
  ] }) });
7019
8414
  }
7020
8415
 
7021
8416
  // src/app/platform/edit-service-type.tsx
7022
- var import_react50 = require("react");
8417
+ var import_react53 = require("react");
7023
8418
 
7024
8419
  // src/app/platform/on-offline-radio-card.tsx
7025
8420
  var import_react_icons11 = require("@radix-ui/react-icons");
7026
- var import_jsx_runtime102 = require("react/jsx-runtime");
8421
+ var import_jsx_runtime107 = require("react/jsx-runtime");
7027
8422
  var SERVICE_TYPE = {
7028
8423
  onlineCoaching: "onlineCoaching",
7029
8424
  offlineCoaching: "offlineCoaching"
7030
8425
  };
7031
8426
  var breakpoint = "sm";
7032
8427
  function HideSmallBox(props) {
7033
- 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 });
7034
8429
  }
7035
8430
  function OnOfflineRadioCard(props) {
7036
8431
  const Wrapper = props.response ? HideSmallBox : (p) => p.children;
7037
8432
  const columns = props.response ? { initial: "2", [breakpoint]: "1" } : "1";
7038
8433
  const justify = props.response ? { initial: "center", [breakpoint]: "between" } : "between";
7039
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
8434
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
7040
8435
  RadioButtonCard.Root,
7041
8436
  __spreadProps(__spreadValues({
7042
8437
  RadioWrapper: Wrapper,
@@ -7045,13 +8440,13 @@ function OnOfflineRadioCard(props) {
7045
8440
  justify
7046
8441
  }, props), {
7047
8442
  children: [
7048
- /* @__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: [
7049
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_react_icons11.GlobeIcon, {}) }),
7050
- /* @__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" })
7051
8446
  ] }) }),
7052
- /* @__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: [
7053
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_react_icons11.BackpackIcon, {}) }),
7054
- /* @__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" })
7055
8450
  ] }) })
7056
8451
  ]
7057
8452
  })
@@ -7059,18 +8454,18 @@ function OnOfflineRadioCard(props) {
7059
8454
  }
7060
8455
 
7061
8456
  // src/app/platform/edit-service-type.tsx
7062
- var import_jsx_runtime103 = require("react/jsx-runtime");
8457
+ var import_jsx_runtime108 = require("react/jsx-runtime");
7063
8458
  function EditServiceType(props) {
7064
8459
  const { defaultServiceType, onClickCancel } = props;
7065
- const [sessionType, setSessionType] = (0, import_react50.useState)(
8460
+ const [sessionType, setSessionType] = (0, import_react53.useState)(
7066
8461
  defaultServiceType
7067
8462
  );
7068
- const onClickSave = (0, import_react50.useCallback)(() => {
8463
+ const onClickSave = (0, import_react53.useCallback)(() => {
7069
8464
  var _a;
7070
8465
  (_a = props.onClickSave) == null ? void 0 : _a.call(props, sessionType);
7071
8466
  }, [props, sessionType]);
7072
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_themes6.Box, { children: [
7073
- /* @__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)(
7074
8469
  Typo,
7075
8470
  {
7076
8471
  as: "p",
@@ -7080,16 +8475,16 @@ function EditServiceType(props) {
7080
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"
7081
8476
  }
7082
8477
  ),
7083
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(OnOfflineRadioCard, { onValueChange: setSessionType, value: sessionType }),
7084
- /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: { initial: "6", xs: "3" }, children: [
7085
- /* @__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" }) }),
7086
- /* @__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" }) })
7087
8482
  ] })
7088
8483
  ] });
7089
8484
  }
7090
8485
 
7091
8486
  // src/app/platform/session-card.tsx
7092
- var import_jsx_runtime104 = require("react/jsx-runtime");
8487
+ var import_jsx_runtime109 = require("react/jsx-runtime");
7093
8488
  var preventDefault4 = (e) => {
7094
8489
  e.preventDefault();
7095
8490
  };
@@ -7119,33 +8514,33 @@ function SessionCard(props) {
7119
8514
  "endAt",
7120
8515
  "sessionType"
7121
8516
  ]);
7122
- const renderEditButton = (0, import_react51.useCallback)(() => {
7123
- 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, {}) });
7124
8519
  }, []);
7125
- const sessionTimeStr = (0, import_react51.useMemo)(() => {
8520
+ const sessionTimeStr = (0, import_react54.useMemo)(() => {
7126
8521
  if (!startAt || !endAt) return "\uC54C \uC218 \uC5C6\uC74C";
7127
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")}`;
7128
8523
  }, [startAt, endAt]);
7129
- 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: [
7130
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", width: "100%", children: [
7131
- /* @__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` }),
7132
8527
  TitleExtra,
7133
- 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
7134
8529
  ] }),
7135
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Root, { children: [
7136
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Item, { children: [
7137
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes15.DataList.Label, { children: "\uCF54\uCE6D \uC77C\uC2DC" }),
7138
- /* @__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: [
7139
8534
  sessionTimeStr,
7140
- editable ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Dialog.Root, { children: [
7141
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Dialog.Trigger, { children: renderEditButton() }),
7142
- /* @__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)(
7143
8538
  Dialog.Content,
7144
8539
  {
7145
8540
  onOpenAutoFocus: preventDefault4,
7146
8541
  style: { overflow: "visible" },
7147
8542
  title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC77C\uC2DC \uBCC0\uACBD\uD558\uAE30`,
7148
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8543
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7149
8544
  EditCoachingTime,
7150
8545
  {
7151
8546
  defaultEndAt: endAt,
@@ -7158,18 +8553,18 @@ function SessionCard(props) {
7158
8553
  ] }) : null
7159
8554
  ] })
7160
8555
  ] }),
7161
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "2" }, style: { gap: "inherit" }, children: [
7162
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes15.DataList.Item, { children: [
7163
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes15.DataList.Label, { children: "\uC138\uC158 \uCC38\uC5EC \uBC29\uC2DD" }),
7164
- /* @__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: [
7165
8560
  sessionType === "offlineCoaching" ? "\uC624\uD504\uB77C\uC778" : "\uC628\uB77C\uC778",
7166
- editable ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Dialog.Root, { children: [
7167
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Dialog.Trigger, { children: renderEditButton() }),
7168
- /* @__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)(
7169
8564
  Dialog.Content,
7170
8565
  {
7171
8566
  title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC9C4\uD589 \uBC29\uC2DD \uBCC0\uACBD\uD558\uAE30`,
7172
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8567
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7173
8568
  EditServiceType,
7174
8569
  {
7175
8570
  defaultServiceType: sessionType,
@@ -7181,33 +8576,33 @@ function SessionCard(props) {
7181
8576
  ] }) : null
7182
8577
  ] })
7183
8578
  ] }),
7184
- /* @__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 })
7185
8580
  ] })
7186
8581
  ] })
7187
8582
  ] }) }));
7188
8583
  }
7189
8584
 
7190
8585
  // src/app/platform/coach-question-list.tsx
7191
- var import_jsx_runtime105 = require("react/jsx-runtime");
8586
+ var import_jsx_runtime110 = require("react/jsx-runtime");
7192
8587
  function QuestionItem({ question, answer }) {
7193
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes6.Box, { children: [
7194
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Heading2, { mb: "2", variant: "heading5", children: question }),
7195
- /* @__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." }) })
7196
8591
  ] }, question);
7197
8592
  }
7198
8593
  function CoachQuestionList({
7199
8594
  questions
7200
8595
  }) {
7201
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_themes22.Flex, { direction: "column", gap: "8", children: questions.map((question) => {
7202
- 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);
7203
8598
  }) });
7204
8599
  }
7205
8600
 
7206
8601
  // src/app/platform/reservation-card.tsx
7207
- var import_react52 = require("react");
8602
+ var import_react55 = require("react");
7208
8603
  var import_date_fns7 = require("date-fns");
7209
8604
  var import_locale2 = require("date-fns/locale");
7210
- var import_jsx_runtime106 = require("react/jsx-runtime");
8605
+ var import_jsx_runtime111 = require("react/jsx-runtime");
7211
8606
  function ReservationCard(props) {
7212
8607
  const {
7213
8608
  sessionNumber,
@@ -7222,29 +8617,29 @@ function ReservationCard(props) {
7222
8617
  onClickCancel,
7223
8618
  onClickCompleteSession
7224
8619
  } = props;
7225
- const [editValues, setEditValues] = (0, import_react52.useState)({
8620
+ const [editValues, setEditValues] = (0, import_react55.useState)({
7226
8621
  date: props.defaultTime,
7227
8622
  type: props.defaultType
7228
8623
  });
7229
8624
  const date = readonly ? defaultTime : editValues.date;
7230
8625
  const type = readonly ? defaultType : editValues.type;
7231
- const onClickSave = (0, import_react52.useCallback)(() => {
8626
+ const onClickSave = (0, import_react55.useCallback)(() => {
7232
8627
  var _a;
7233
8628
  (_a = props.onClickSave) == null ? void 0 : _a.call(props, editValues);
7234
8629
  }, [editValues, props]);
7235
- const onClickReset = (0, import_react52.useCallback)(() => {
8630
+ const onClickReset = (0, import_react55.useCallback)(() => {
7236
8631
  setEditValues({
7237
8632
  date: defaultTime,
7238
8633
  type: defaultType
7239
8634
  });
7240
8635
  }, [defaultTime, defaultType]);
7241
- const ActionButtons = (0, import_react52.useMemo)(() => {
8636
+ const ActionButtons = (0, import_react55.useMemo)(() => {
7242
8637
  if (readonly) {
7243
- 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" });
7244
8639
  }
7245
- 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, {}) });
7246
8641
  }, [defaultTime, defaultType, onClickCancel, onClickReserve, readonly]);
7247
- const onChangeDate = (0, import_react52.useCallback)((newDate) => {
8642
+ const onChangeDate = (0, import_react55.useCallback)((newDate) => {
7248
8643
  if (!newDate) return;
7249
8644
  setEditValues((prev) => {
7250
8645
  return __spreadProps(__spreadValues({}, prev), {
@@ -7252,17 +8647,17 @@ function ReservationCard(props) {
7252
8647
  });
7253
8648
  });
7254
8649
  }, []);
7255
- const onChangeType = (0, import_react52.useCallback)((newType) => {
8650
+ const onChangeType = (0, import_react55.useCallback)((newType) => {
7256
8651
  setEditValues((prev) => {
7257
8652
  return __spreadProps(__spreadValues({}, prev), {
7258
8653
  type: newType
7259
8654
  });
7260
8655
  });
7261
8656
  }, []);
7262
- const formatDate = (0, import_react52.useCallback)((v) => {
8657
+ const formatDate = (0, import_react55.useCallback)((v) => {
7263
8658
  return (0, import_date_fns7.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C(EEE) aa h:mm", { locale: import_locale2.ko });
7264
8659
  }, []);
7265
- (0, import_react52.useEffect)(() => {
8660
+ (0, import_react55.useEffect)(() => {
7266
8661
  if (!minTime || !editValues.date || readonly) return;
7267
8662
  if (editValues.date < minTime) {
7268
8663
  import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
@@ -7273,7 +8668,7 @@ function ReservationCard(props) {
7273
8668
  });
7274
8669
  }
7275
8670
  }, [editValues, minTime, readonly]);
7276
- (0, import_react52.useEffect)(() => {
8671
+ (0, import_react55.useEffect)(() => {
7277
8672
  if (!maxTime || !editValues.date || readonly) return;
7278
8673
  if (editValues.date > maxTime) {
7279
8674
  import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
@@ -7284,39 +8679,39 @@ function ReservationCard(props) {
7284
8679
  });
7285
8680
  }
7286
8681
  }, [editValues, maxTime, readonly]);
7287
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8682
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
7288
8683
  Card,
7289
8684
  {
7290
8685
  error: Boolean(error),
7291
8686
  size: "3",
7292
8687
  style: { overflow: "visible", contain: "initial" },
7293
8688
  children: [
7294
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { gap: "3", justify: "between", mb: "5", children: [
7295
- /* @__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)(
7296
8691
  import_themes23.Grid,
7297
8692
  {
7298
8693
  align: "center",
7299
8694
  columns: { initial: "1", xs: "auto 1fr" },
7300
8695
  gapY: "2",
7301
8696
  children: [
7302
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { align: "center", children: [
7303
- /* @__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: [
7304
8699
  customerName || "-",
7305
8700
  "\uB2D8 ",
7306
8701
  sessionNumber || "-",
7307
8702
  "\uD68C\uCC28 \uC138\uC158"
7308
8703
  ] }),
7309
- /* @__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" })
7310
8705
  ] }),
7311
- 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
7312
8707
  ]
7313
8708
  }
7314
8709
  ),
7315
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes22.Flex, { children: ActionButtons })
8710
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes22.Flex, { children: ActionButtons })
7316
8711
  ] }),
7317
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
7318
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC138\uC158 \uC77C\uC790\uC640 \uC2DC\uAC01" }),
7319
- /* @__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)(
7320
8715
  DatePickerButton,
7321
8716
  {
7322
8717
  disabled: readonly,
@@ -7330,8 +8725,8 @@ function ReservationCard(props) {
7330
8725
  size: "large"
7331
8726
  }
7332
8727
  ),
7333
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC628/\uC624\uD504\uB77C\uC778 \uC9C4\uD589 \uC5EC\uBD80" }),
7334
- /* @__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)(
7335
8730
  OnOfflineRadioCard,
7336
8731
  {
7337
8732
  disabled: readonly,
@@ -7340,8 +8735,8 @@ function ReservationCard(props) {
7340
8735
  value: type
7341
8736
  }
7342
8737
  ),
7343
- readonly ? null : /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", children: [
7344
- /* @__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)(
7345
8740
  Button,
7346
8741
  {
7347
8742
  color: "gray",
@@ -7351,10 +8746,10 @@ function ReservationCard(props) {
7351
8746
  children: "\uCD08\uAE30\uD654\uD558\uAE30"
7352
8747
  }
7353
8748
  ),
7354
- /* @__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" })
7355
8750
  ] })
7356
8751
  ] }) }),
7357
- 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)(
7358
8753
  import_themes6.Box,
7359
8754
  {
7360
8755
  mt: "5",
@@ -7362,14 +8757,14 @@ function ReservationCard(props) {
7362
8757
  py: "4",
7363
8758
  style: { backgroundColor: "var(--accent-a3)" },
7364
8759
  width: "100%",
7365
- children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { align: "center", gap: "4", justify: "center", children: [
7366
- /* @__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: [
7367
8762
  sessionNumber || "-",
7368
8763
  "\uD68C\uCC28 \uC138\uC158\uC744 \uC644\uB8CC\uD558\uC168\uB098\uC694?"
7369
8764
  ] }),
7370
- /* @__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: [
7371
8766
  "\uC138\uC158 \uC885\uB8CC\uD558\uAE30",
7372
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_react_icons2.ArrowRightIcon, {})
8767
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.ArrowRightIcon, {})
7373
8768
  ] })
7374
8769
  ] })
7375
8770
  }
@@ -7380,22 +8775,22 @@ function ReservationCard(props) {
7380
8775
  }
7381
8776
 
7382
8777
  // src/app/platform/session-review-simple-read.tsx
7383
- var import_react53 = require("react");
7384
- var import_jsx_runtime107 = require("react/jsx-runtime");
8778
+ var import_react56 = require("react");
8779
+ var import_jsx_runtime112 = require("react/jsx-runtime");
7385
8780
  function SubTitleWrapper({
7386
8781
  children,
7387
8782
  title
7388
8783
  }) {
7389
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7390
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: title }),
7391
- /* @__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 })
7392
8787
  ] });
7393
8788
  }
7394
8789
  function SessionReviewSimpleRead({
7395
8790
  helpfulness,
7396
8791
  review
7397
8792
  }) {
7398
- const helpfulnessMeta = (0, import_react53.useMemo)(() => {
8793
+ const helpfulnessMeta = (0, import_react56.useMemo)(() => {
7399
8794
  if (helpfulness) {
7400
8795
  return {
7401
8796
  text: "\uB124",
@@ -7413,22 +8808,22 @@ function SessionReviewSimpleRead({
7413
8808
  color: "error"
7414
8809
  };
7415
8810
  }, [helpfulness]);
7416
- 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: [
7417
- /* @__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 }) }),
7418
- /* @__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." }) }) })
7419
8814
  ] }) });
7420
8815
  }
7421
8816
 
7422
8817
  // src/app/platform/userInfos/session-user-info-detail.tsx
7423
- var import_jsx_runtime108 = require("react/jsx-runtime");
8818
+ var import_jsx_runtime113 = require("react/jsx-runtime");
7424
8819
  function SectionWrapper({
7425
8820
  title,
7426
8821
  children
7427
8822
  }) {
7428
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes6.Box, { children: [
7429
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", mb: "5", children: [
7430
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Heading2, { variant: "heading5", children: title }),
7431
- /* @__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" })
7432
8827
  ] }),
7433
8828
  children
7434
8829
  ] });
@@ -7438,22 +8833,22 @@ function SessionUserInfoDetail({
7438
8833
  session,
7439
8834
  onClickCopy
7440
8835
  }) {
7441
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes22.Flex, { direction: "column", gap: "6", children: [
7442
- /* @__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(
7443
8838
  (info) => renderDataListItem({ info, data: session, onClickCopy })
7444
8839
  ) }) }),
7445
- /* @__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(
7446
8841
  (info) => renderDataListItem({ info, data: customer, onClickCopy })
7447
8842
  ) }) })
7448
8843
  ] });
7449
8844
  }
7450
8845
 
7451
8846
  // src/app/platform/report-card.tsx
7452
- var import_react54 = require("react");
7453
- var import_jsx_runtime109 = require("react/jsx-runtime");
8847
+ var import_react57 = require("react");
8848
+ var import_jsx_runtime114 = require("react/jsx-runtime");
7454
8849
  function ReportCard(props) {
7455
8850
  const { title, file, status, subtitle } = props;
7456
- const onClickDownload = (0, import_react54.useCallback)(() => {
8851
+ const onClickDownload = (0, import_react57.useCallback)(() => {
7457
8852
  if (!file) return;
7458
8853
  const { url, fileName } = file;
7459
8854
  const link = document.createElement("a");
@@ -7465,24 +8860,24 @@ function ReportCard(props) {
7465
8860
  document.body.removeChild(link);
7466
8861
  }, [file]);
7467
8862
  if (status) {
7468
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7469
- /* @__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 }),
7470
8865
  status
7471
8866
  ] }) });
7472
8867
  }
7473
- 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)(
7474
8869
  import_themes22.Flex,
7475
8870
  {
7476
8871
  direction: { initial: "column", xs: "row" },
7477
8872
  gapY: "2",
7478
8873
  justify: "between",
7479
8874
  children: [
7480
- /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes6.Box, { children: [
7481
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: title }),
7482
- 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
7483
8878
  ] }),
7484
- /* @__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: [
7485
- /* @__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, {}),
7486
8881
  file == null ? void 0 : file.buttonName
7487
8882
  ] }) }, file == null ? void 0 : file.url)
7488
8883
  ]
@@ -7491,9 +8886,9 @@ function ReportCard(props) {
7491
8886
  }
7492
8887
 
7493
8888
  // src/app/platform/contents-card.tsx
7494
- var import_react55 = require("react");
7495
- var import_jsx_runtime110 = require("react/jsx-runtime");
7496
- 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)(
7497
8892
  ({
7498
8893
  title,
7499
8894
  description,
@@ -7503,7 +8898,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7503
8898
  onClickCard,
7504
8899
  isLoading = false
7505
8900
  }, ref) => {
7506
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8901
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7507
8902
  Card,
7508
8903
  {
7509
8904
  onClick: onClickCard,
@@ -7516,7 +8911,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7516
8911
  maxHeight: "450px"
7517
8912
  },
7518
8913
  children: [
7519
- /* @__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)(
7520
8915
  import_themes6.Box,
7521
8916
  {
7522
8917
  height: "210px",
@@ -7528,12 +8923,12 @@ var ContentsCard = (0, import_react55.forwardRef)(
7528
8923
  width: "100%"
7529
8924
  }
7530
8925
  ) }) }),
7531
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes22.Flex, { direction: "column", p: "4", pb: "3", children: [
7532
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes6.Box, { children: [
7533
- /* @__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 }) }),
7534
- /* @__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 }) })
7535
8930
  ] }),
7536
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8931
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7537
8932
  import_themes23.Grid,
7538
8933
  {
7539
8934
  align: "center",
@@ -7543,10 +8938,10 @@ var ContentsCard = (0, import_react55.forwardRef)(
7543
8938
  style: { marginTop: "auto" },
7544
8939
  width: "100%",
7545
8940
  children: [
7546
- /* @__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 }) }),
7547
- Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(DropdownMenu.Root, { children: [
7548
- /* @__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" }) }) }),
7549
- /* @__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)(
7550
8945
  DropdownMenu.Item,
7551
8946
  {
7552
8947
  onClick: (e) => {
@@ -7570,7 +8965,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7570
8965
  ContentsCard.displayName = "ContentsCard";
7571
8966
 
7572
8967
  // src/app/platform/curriculum-card.tsx
7573
- var import_jsx_runtime111 = require("react/jsx-runtime");
8968
+ var import_jsx_runtime116 = require("react/jsx-runtime");
7574
8969
  function CurriculumCard(props) {
7575
8970
  const {
7576
8971
  title,
@@ -7581,7 +8976,7 @@ function CurriculumCard(props) {
7581
8976
  bgColor,
7582
8977
  onClick
7583
8978
  } = props;
7584
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
8979
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
7585
8980
  import_themes23.Grid,
7586
8981
  {
7587
8982
  columns: { initial: "1", sm: "275px 1fr" },
@@ -7590,7 +8985,7 @@ function CurriculumCard(props) {
7590
8985
  onClick,
7591
8986
  style: { cursor: "pointer" },
7592
8987
  children: [
7593
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
8988
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
7594
8989
  import_themes6.Box,
7595
8990
  {
7596
8991
  height: "165px",
@@ -7605,32 +9000,32 @@ function CurriculumCard(props) {
7605
9000
  backgroundAttachment: "local"
7606
9001
  },
7607
9002
  width: "100%",
7608
- 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 })
7609
9004
  }
7610
9005
  ),
7611
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
7612
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "1fr auto" }, gapY: "3", children: [
7613
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { variant: "heading4", children: title }),
7614
- /* @__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)(
7615
9010
  Badge,
7616
9011
  {
7617
9012
  size: "medium",
7618
9013
  style: { justifySelf: "flex-start" },
7619
9014
  variant: "outline",
7620
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
7621
- /* @__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, {}),
7622
9017
  runningTime
7623
9018
  ] })
7624
9019
  }
7625
9020
  )
7626
9021
  ] }),
7627
- /* @__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) => {
7628
- 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);
7629
9024
  }) }) }),
7630
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes39.Separator, { size: "4" }),
7631
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "2", justify: "end", children: [
7632
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Typo, { color: "gray", children: "\uAC15\uC758 \uB4E3\uACE0 \uCF54\uCE58\uB2D8\uACFC \uBB34\uC81C\uD55C Q&A" }),
7633
- /* @__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" })
7634
9029
  ] })
7635
9030
  ] })
7636
9031
  ]
@@ -7718,6 +9113,7 @@ function CurriculumCard(props) {
7718
9113
  Drawer,
7719
9114
  DropdownMenu,
7720
9115
  DynamicForm,
9116
+ DynamicFormEditor,
7721
9117
  DynamicFormField,
7722
9118
  DynamicFormProvider,
7723
9119
  DynamicFormResponseItem,