@tipp/ui 2.3.22 → 2.3.24

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 (589) 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 +78 -71
  4. package/dist/app/platform/coach-question-list.js +26 -26
  5. package/dist/app/platform/contents-card.js +26 -26
  6. package/dist/app/platform/curriculum-card.js +2 -2
  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 +66 -59
  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 +66 -59
  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 +67 -60
  16. package/dist/app/platform/goal-manage-card-read.js +26 -26
  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 +66 -59
  20. package/dist/app/platform/report-card.js +26 -26
  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 +67 -60
  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 +67 -60
  27. package/dist/app/platform/session-review-simple-read.js +26 -26
  28. package/dist/app/platform/userInfos/coaching-customer-info/index.js +28 -28
  29. package/dist/app/platform/userInfos/coaching-customer-info/large.js +26 -26
  30. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +26 -26
  31. package/dist/app/platform/userInfos/coaching-customer-info/small.js +25 -25
  32. package/dist/app/platform/userInfos/session-user-info-detail.js +25 -25
  33. package/dist/app/platform/userInfos/utils.js +25 -25
  34. package/dist/atoms/index.js +60 -60
  35. package/dist/chunk-2KOE33U7.js +245 -0
  36. package/dist/chunk-2KOE33U7.js.map +1 -0
  37. package/dist/chunk-2U5YD3BH.js +49 -0
  38. package/dist/chunk-2U5YD3BH.js.map +1 -0
  39. package/dist/chunk-2X3I7KDG.js +144 -0
  40. package/dist/chunk-2X3I7KDG.js.map +1 -0
  41. package/dist/chunk-2YSYS4AG.js +233 -0
  42. package/dist/chunk-2YSYS4AG.js.map +1 -0
  43. package/dist/chunk-35HQHUDU.js +228 -0
  44. package/dist/chunk-35HQHUDU.js.map +1 -0
  45. package/dist/chunk-3I55S6EP.js +89 -0
  46. package/dist/chunk-3I55S6EP.js.map +1 -0
  47. package/dist/chunk-3JADWKXT.js +230 -0
  48. package/dist/chunk-3JADWKXT.js.map +1 -0
  49. package/dist/chunk-3JDLAN5T.js +99 -0
  50. package/dist/chunk-3JDLAN5T.js.map +1 -0
  51. package/dist/chunk-3O2ARPTO.js +161 -0
  52. package/dist/chunk-3O2ARPTO.js.map +1 -0
  53. package/dist/chunk-3OO6ENQ4.js +228 -0
  54. package/dist/chunk-3OO6ENQ4.js.map +1 -0
  55. package/dist/chunk-45F3UCHR.js +222 -0
  56. package/dist/chunk-45F3UCHR.js.map +1 -0
  57. package/dist/chunk-4LUFF5LX.js +98 -0
  58. package/dist/chunk-4LUFF5LX.js.map +1 -0
  59. package/dist/chunk-4VV7VH5L.js +79 -0
  60. package/dist/chunk-4VV7VH5L.js.map +1 -0
  61. package/dist/chunk-5JCJ4QJO.js +245 -0
  62. package/dist/chunk-5JCJ4QJO.js.map +1 -0
  63. package/dist/chunk-5KZJMQCG.js +89 -0
  64. package/dist/chunk-5KZJMQCG.js.map +1 -0
  65. package/dist/chunk-5RAR3DG7.js +117 -0
  66. package/dist/chunk-5RAR3DG7.js.map +1 -0
  67. package/dist/chunk-5XOR7OPD.js +196 -0
  68. package/dist/chunk-5XOR7OPD.js.map +1 -0
  69. package/dist/chunk-5YESTYFF.js +79 -0
  70. package/dist/chunk-5YESTYFF.js.map +1 -0
  71. package/dist/chunk-64A2KJHN.js +276 -0
  72. package/dist/chunk-64A2KJHN.js.map +1 -0
  73. package/dist/chunk-6CSUU4L7.js +230 -0
  74. package/dist/chunk-6CSUU4L7.js.map +1 -0
  75. package/dist/chunk-6FKXUCHD.js +99 -0
  76. package/dist/chunk-6FKXUCHD.js.map +1 -0
  77. package/dist/chunk-6TQGX5ZU.js +98 -0
  78. package/dist/chunk-6TQGX5ZU.js.map +1 -0
  79. package/dist/chunk-6UXCNYVO.js +106 -0
  80. package/dist/chunk-6UXCNYVO.js.map +1 -0
  81. package/dist/chunk-6YZBHOXQ.js +226 -0
  82. package/dist/chunk-6YZBHOXQ.js.map +1 -0
  83. package/dist/chunk-7344ZPUM.js +117 -0
  84. package/dist/chunk-7344ZPUM.js.map +1 -0
  85. package/dist/chunk-77H5BUYO.js +55 -0
  86. package/dist/chunk-77H5BUYO.js.map +1 -0
  87. package/dist/chunk-7ABAJEJA.js +63 -0
  88. package/dist/chunk-7ABAJEJA.js.map +1 -0
  89. package/dist/chunk-7B5XAENQ.js +363 -0
  90. package/dist/chunk-7B5XAENQ.js.map +1 -0
  91. package/dist/chunk-7CQX7ELH.js +69 -0
  92. package/dist/chunk-7CQX7ELH.js.map +1 -0
  93. package/dist/chunk-7CRTGYJE.js +80 -0
  94. package/dist/chunk-7CRTGYJE.js.map +1 -0
  95. package/dist/chunk-7FIDFRJL.js +196 -0
  96. package/dist/chunk-7FIDFRJL.js.map +1 -0
  97. package/dist/chunk-7ITDAUWI.js +287 -0
  98. package/dist/chunk-7ITDAUWI.js.map +1 -0
  99. package/dist/chunk-7PQGETJT.js +69 -0
  100. package/dist/chunk-7PQGETJT.js.map +1 -0
  101. package/dist/chunk-7R65MUL6.js +106 -0
  102. package/dist/chunk-7R65MUL6.js.map +1 -0
  103. package/dist/chunk-7U5EZJOD.js +89 -0
  104. package/dist/chunk-7U5EZJOD.js.map +1 -0
  105. package/dist/chunk-7ZBZBOPI.js +63 -0
  106. package/dist/chunk-7ZBZBOPI.js.map +1 -0
  107. package/dist/chunk-A2FXUYSB.js +230 -0
  108. package/dist/chunk-A2FXUYSB.js.map +1 -0
  109. package/dist/chunk-A7CT5M2S.js +75 -0
  110. package/dist/chunk-A7CT5M2S.js.map +1 -0
  111. package/dist/chunk-A7JBBBBB.js +100 -0
  112. package/dist/chunk-A7JBBBBB.js.map +1 -0
  113. package/dist/chunk-AA6OYHCE.js +39 -0
  114. package/dist/chunk-AA6OYHCE.js.map +1 -0
  115. package/dist/chunk-ABMGYODX.js +196 -0
  116. package/dist/chunk-ABMGYODX.js.map +1 -0
  117. package/dist/chunk-ADLR7QZR.js +69 -0
  118. package/dist/chunk-ADLR7QZR.js.map +1 -0
  119. package/dist/chunk-ALETVN5F.js +245 -0
  120. package/dist/chunk-ALETVN5F.js.map +1 -0
  121. package/dist/chunk-ARJOCJVD.js +174 -0
  122. package/dist/chunk-ARJOCJVD.js.map +1 -0
  123. package/dist/chunk-ARVLB4CH.js +29 -0
  124. package/dist/chunk-ARVLB4CH.js.map +1 -0
  125. package/dist/chunk-B327EINU.js +43 -0
  126. package/dist/chunk-B327EINU.js.map +1 -0
  127. package/dist/chunk-B4TDMB52.js +226 -0
  128. package/dist/chunk-B4TDMB52.js.map +1 -0
  129. package/dist/chunk-BJZSGZ7H.js +63 -0
  130. package/dist/chunk-BJZSGZ7H.js.map +1 -0
  131. package/dist/chunk-BP5FU7EO.js +196 -0
  132. package/dist/chunk-BP5FU7EO.js.map +1 -0
  133. package/dist/chunk-BPMY3CDH.js +106 -0
  134. package/dist/chunk-BPMY3CDH.js.map +1 -0
  135. package/dist/chunk-C2ANXVMQ.js +221 -0
  136. package/dist/chunk-C2ANXVMQ.js.map +1 -0
  137. package/dist/chunk-C6BHVWJI.js +165 -0
  138. package/dist/chunk-C6BHVWJI.js.map +1 -0
  139. package/dist/chunk-CF3NAPUZ.js +196 -0
  140. package/dist/chunk-CF3NAPUZ.js.map +1 -0
  141. package/dist/chunk-CWRJOY56.js +245 -0
  142. package/dist/chunk-CWRJOY56.js.map +1 -0
  143. package/dist/chunk-D3H7YFTO.js +69 -0
  144. package/dist/chunk-D3H7YFTO.js.map +1 -0
  145. package/dist/chunk-DDAZ4IAG.js +689 -0
  146. package/dist/chunk-DDAZ4IAG.js.map +1 -0
  147. package/dist/chunk-DDVJMAYN.js +230 -0
  148. package/dist/chunk-DDVJMAYN.js.map +1 -0
  149. package/dist/chunk-DJ24574O.js +28 -0
  150. package/dist/chunk-DJ24574O.js.map +1 -0
  151. package/dist/chunk-DJCBLRLH.js +69 -0
  152. package/dist/chunk-DJCBLRLH.js.map +1 -0
  153. package/dist/chunk-DTHR4ABO.js +69 -0
  154. package/dist/chunk-DTHR4ABO.js.map +1 -0
  155. package/dist/chunk-DTK646M6.js +87 -0
  156. package/dist/chunk-DTK646M6.js.map +1 -0
  157. package/dist/chunk-DVZKRKWH.js +174 -0
  158. package/dist/chunk-DVZKRKWH.js.map +1 -0
  159. package/dist/chunk-E232GTT6.js +69 -0
  160. package/dist/chunk-E232GTT6.js.map +1 -0
  161. package/dist/chunk-E5W5TCRU.js +89 -0
  162. package/dist/chunk-E5W5TCRU.js.map +1 -0
  163. package/dist/chunk-EGTOU5MK.js +689 -0
  164. package/dist/chunk-EGTOU5MK.js.map +1 -0
  165. package/dist/chunk-EJAC46WB.js +39 -0
  166. package/dist/chunk-EJAC46WB.js.map +1 -0
  167. package/dist/chunk-F2I4LA63.js +51 -0
  168. package/dist/chunk-F2I4LA63.js.map +1 -0
  169. package/dist/chunk-F65P7KZI.js +98 -0
  170. package/dist/chunk-F65P7KZI.js.map +1 -0
  171. package/dist/chunk-F76YKHGP.js +245 -0
  172. package/dist/chunk-F76YKHGP.js.map +1 -0
  173. package/dist/chunk-FGX6IR4Q.js +68 -0
  174. package/dist/chunk-FGX6IR4Q.js.map +1 -0
  175. package/dist/chunk-FN2CUDUP.js +43 -0
  176. package/dist/chunk-FN2CUDUP.js.map +1 -0
  177. package/dist/chunk-FQUAFIUO.js +228 -0
  178. package/dist/chunk-FQUAFIUO.js.map +1 -0
  179. package/dist/chunk-FYHAKQGB.js +220 -0
  180. package/dist/chunk-FYHAKQGB.js.map +1 -0
  181. package/dist/chunk-FZ4F7FCO.js +63 -0
  182. package/dist/chunk-FZ4F7FCO.js.map +1 -0
  183. package/dist/chunk-G6UKOZPL.js +217 -0
  184. package/dist/chunk-G6UKOZPL.js.map +1 -0
  185. package/dist/chunk-GAFIOPGJ.js +54 -0
  186. package/dist/chunk-GAFIOPGJ.js.map +1 -0
  187. package/dist/chunk-GEMXFVWI.js +37 -0
  188. package/dist/chunk-GEMXFVWI.js.map +1 -0
  189. package/dist/chunk-GFBOT2PV.js +101 -0
  190. package/dist/chunk-GFBOT2PV.js.map +1 -0
  191. package/dist/chunk-GFURX6GB.js +76 -0
  192. package/dist/chunk-GFURX6GB.js.map +1 -0
  193. package/dist/chunk-GMHVMQTV.js +245 -0
  194. package/dist/chunk-GMHVMQTV.js.map +1 -0
  195. package/dist/chunk-GTO7GG2K.js +245 -0
  196. package/dist/chunk-GTO7GG2K.js.map +1 -0
  197. package/dist/chunk-GWNS3C3A.js +144 -0
  198. package/dist/chunk-GWNS3C3A.js.map +1 -0
  199. package/dist/chunk-HFVVQEOZ.js +1 -0
  200. package/dist/chunk-HFVVQEOZ.js.map +1 -0
  201. package/dist/chunk-HNS76MH2.js +69 -0
  202. package/dist/chunk-HNS76MH2.js.map +1 -0
  203. package/dist/chunk-HO462CJM.js +29 -0
  204. package/dist/chunk-HO462CJM.js.map +1 -0
  205. package/dist/chunk-HPW5EHJX.js +233 -0
  206. package/dist/chunk-HPW5EHJX.js.map +1 -0
  207. package/dist/chunk-HQ23GSZM.js +145 -0
  208. package/dist/chunk-HQ23GSZM.js.map +1 -0
  209. package/dist/chunk-HTNDVNLQ.js +287 -0
  210. package/dist/chunk-HTNDVNLQ.js.map +1 -0
  211. package/dist/chunk-HXOMTUED.js +222 -0
  212. package/dist/chunk-HXOMTUED.js.map +1 -0
  213. package/dist/chunk-I46BFZL6.js +69 -0
  214. package/dist/chunk-I46BFZL6.js.map +1 -0
  215. package/dist/chunk-INE4EFFO.js +70 -0
  216. package/dist/chunk-INE4EFFO.js.map +1 -0
  217. package/dist/chunk-IQUJPIZD.js +689 -0
  218. package/dist/chunk-IQUJPIZD.js.map +1 -0
  219. package/dist/chunk-ITKUKDDV.js +196 -0
  220. package/dist/chunk-ITKUKDDV.js.map +1 -0
  221. package/dist/chunk-J333WVWG.js +145 -0
  222. package/dist/chunk-J333WVWG.js.map +1 -0
  223. package/dist/chunk-JADEGHJI.js +101 -0
  224. package/dist/chunk-JADEGHJI.js.map +1 -0
  225. package/dist/chunk-JAS77BXB.js +245 -0
  226. package/dist/chunk-JAS77BXB.js.map +1 -0
  227. package/dist/chunk-JDBHOE34.js +51 -0
  228. package/dist/chunk-JDBHOE34.js.map +1 -0
  229. package/dist/chunk-JG4JIBBV.js +245 -0
  230. package/dist/chunk-JG4JIBBV.js.map +1 -0
  231. package/dist/chunk-JHJSR2UT.js +101 -0
  232. package/dist/chunk-JHJSR2UT.js.map +1 -0
  233. package/dist/chunk-JJDLCVZV.js +37 -0
  234. package/dist/chunk-JJDLCVZV.js.map +1 -0
  235. package/dist/chunk-JKAMW7OV.js +228 -0
  236. package/dist/chunk-JKAMW7OV.js.map +1 -0
  237. package/dist/chunk-JQH27TXL.js +89 -0
  238. package/dist/chunk-JQH27TXL.js.map +1 -0
  239. package/dist/chunk-JRSZNGFD.js +28 -0
  240. package/dist/chunk-JRSZNGFD.js.map +1 -0
  241. package/dist/chunk-JZVK4NDF.js +28 -0
  242. package/dist/chunk-JZVK4NDF.js.map +1 -0
  243. package/dist/chunk-K255663P.js +144 -0
  244. package/dist/chunk-K255663P.js.map +1 -0
  245. package/dist/chunk-K5TTAI44.js +89 -0
  246. package/dist/chunk-K5TTAI44.js.map +1 -0
  247. package/dist/chunk-K7LTEKQS.js +56 -0
  248. package/dist/chunk-K7LTEKQS.js.map +1 -0
  249. package/dist/chunk-KCAOUZCT.js +245 -0
  250. package/dist/chunk-KCAOUZCT.js.map +1 -0
  251. package/dist/chunk-KCCYHT23.js +39 -0
  252. package/dist/chunk-KCCYHT23.js.map +1 -0
  253. package/dist/chunk-KFUBWOCN.js +69 -0
  254. package/dist/chunk-KFUBWOCN.js.map +1 -0
  255. package/dist/chunk-KOKKR2GO.js +37 -0
  256. package/dist/chunk-KOKKR2GO.js.map +1 -0
  257. package/dist/chunk-KV432YFG.js +223 -0
  258. package/dist/chunk-KV432YFG.js.map +1 -0
  259. package/dist/chunk-L5SQIVFO.js +68 -0
  260. package/dist/chunk-L5SQIVFO.js.map +1 -0
  261. package/dist/chunk-LJDGAKG3.js +196 -0
  262. package/dist/chunk-LJDGAKG3.js.map +1 -0
  263. package/dist/chunk-LSUCPRXN.js +89 -0
  264. package/dist/chunk-LSUCPRXN.js.map +1 -0
  265. package/dist/chunk-MDSCN4PH.js +144 -0
  266. package/dist/chunk-MDSCN4PH.js.map +1 -0
  267. package/dist/chunk-MG2KX3KF.js +69 -0
  268. package/dist/chunk-MG2KX3KF.js.map +1 -0
  269. package/dist/chunk-MIATMZDP.js +39 -0
  270. package/dist/chunk-MIATMZDP.js.map +1 -0
  271. package/dist/chunk-MIVH7X2Q.js +245 -0
  272. package/dist/chunk-MIVH7X2Q.js.map +1 -0
  273. package/dist/chunk-MPZJH3PI.js +287 -0
  274. package/dist/chunk-MPZJH3PI.js.map +1 -0
  275. package/dist/chunk-MQ4ZZJXV.js +51 -0
  276. package/dist/chunk-MQ4ZZJXV.js.map +1 -0
  277. package/dist/chunk-MRTKFR7V.js +144 -0
  278. package/dist/chunk-MRTKFR7V.js.map +1 -0
  279. package/dist/chunk-MTSZUPDJ.js +151 -0
  280. package/dist/chunk-MTSZUPDJ.js.map +1 -0
  281. package/dist/chunk-MTU2IQUS.js +689 -0
  282. package/dist/chunk-MTU2IQUS.js.map +1 -0
  283. package/dist/chunk-MVA6X35R.js +165 -0
  284. package/dist/chunk-MVA6X35R.js.map +1 -0
  285. package/dist/chunk-ND5BRCYV.js +75 -0
  286. package/dist/chunk-ND5BRCYV.js.map +1 -0
  287. package/dist/chunk-NE5S2QWA.js +51 -0
  288. package/dist/chunk-NE5S2QWA.js.map +1 -0
  289. package/dist/chunk-NHK64BOP.js +69 -0
  290. package/dist/chunk-NHK64BOP.js.map +1 -0
  291. package/dist/chunk-NHMDJCXR.js +276 -0
  292. package/dist/chunk-NHMDJCXR.js.map +1 -0
  293. package/dist/chunk-NIBZSFZ6.js +196 -0
  294. package/dist/chunk-NIBZSFZ6.js.map +1 -0
  295. package/dist/chunk-NJ3LHGC6.js +169 -0
  296. package/dist/chunk-NJ3LHGC6.js.map +1 -0
  297. package/dist/chunk-NJKRLSH3.js +287 -0
  298. package/dist/chunk-NJKRLSH3.js.map +1 -0
  299. package/dist/chunk-NLTKDXLB.js +113 -0
  300. package/dist/chunk-NLTKDXLB.js.map +1 -0
  301. package/dist/chunk-NRWZ6JNA.js +69 -0
  302. package/dist/chunk-NRWZ6JNA.js.map +1 -0
  303. package/dist/chunk-NSBBMIXS.js +151 -0
  304. package/dist/chunk-NSBBMIXS.js.map +1 -0
  305. package/dist/chunk-O665PURC.js +63 -0
  306. package/dist/chunk-O665PURC.js.map +1 -0
  307. package/dist/chunk-O6LH7P6V.js +87 -0
  308. package/dist/chunk-O6LH7P6V.js.map +1 -0
  309. package/dist/chunk-OF4RHJCY.js +69 -0
  310. package/dist/chunk-OF4RHJCY.js.map +1 -0
  311. package/dist/chunk-ORBEMNBA.js +49 -0
  312. package/dist/chunk-ORBEMNBA.js.map +1 -0
  313. package/dist/chunk-OYCRE67S.js +87 -0
  314. package/dist/chunk-OYCRE67S.js.map +1 -0
  315. package/dist/chunk-P4KO43AP.js +245 -0
  316. package/dist/chunk-P4KO43AP.js.map +1 -0
  317. package/dist/chunk-PJHCOBSQ.js +163 -0
  318. package/dist/chunk-PJHCOBSQ.js.map +1 -0
  319. package/dist/chunk-PXPGCDNA.js +106 -0
  320. package/dist/chunk-PXPGCDNA.js.map +1 -0
  321. package/dist/chunk-QBVF4BCB.js +245 -0
  322. package/dist/chunk-QBVF4BCB.js.map +1 -0
  323. package/dist/chunk-QKP2KBZ5.js +219 -0
  324. package/dist/chunk-QKP2KBZ5.js.map +1 -0
  325. package/dist/chunk-QXBRA2T6.js +169 -0
  326. package/dist/chunk-QXBRA2T6.js.map +1 -0
  327. package/dist/chunk-RAMPMKQD.js +245 -0
  328. package/dist/chunk-RAMPMKQD.js.map +1 -0
  329. package/dist/chunk-REPTW53S.js +98 -0
  330. package/dist/chunk-REPTW53S.js.map +1 -0
  331. package/dist/chunk-RMFSOYRW.js +99 -0
  332. package/dist/chunk-RMFSOYRW.js.map +1 -0
  333. package/dist/chunk-RXQHKSIV.js +37 -0
  334. package/dist/chunk-RXQHKSIV.js.map +1 -0
  335. package/dist/chunk-RZGCNQWE.js +89 -0
  336. package/dist/chunk-RZGCNQWE.js.map +1 -0
  337. package/dist/chunk-S3W44IB3.js +151 -0
  338. package/dist/chunk-S3W44IB3.js.map +1 -0
  339. package/dist/chunk-SEKCH5XW.js +100 -0
  340. package/dist/chunk-SEKCH5XW.js.map +1 -0
  341. package/dist/chunk-SGS3LUQ3.js +196 -0
  342. package/dist/chunk-SGS3LUQ3.js.map +1 -0
  343. package/dist/chunk-SKA66SQI.js +144 -0
  344. package/dist/chunk-SKA66SQI.js.map +1 -0
  345. package/dist/chunk-SLHUNZIR.js +245 -0
  346. package/dist/chunk-SLHUNZIR.js.map +1 -0
  347. package/dist/chunk-STCVW5HT.js +49 -0
  348. package/dist/chunk-STCVW5HT.js.map +1 -0
  349. package/dist/chunk-SVGGVYY7.js +69 -0
  350. package/dist/chunk-SVGGVYY7.js.map +1 -0
  351. package/dist/chunk-T5I3DNHD.js +145 -0
  352. package/dist/chunk-T5I3DNHD.js.map +1 -0
  353. package/dist/chunk-TJDCSV5R.js +230 -0
  354. package/dist/chunk-TJDCSV5R.js.map +1 -0
  355. package/dist/chunk-TJWFURWT.js +43 -0
  356. package/dist/chunk-TJWFURWT.js.map +1 -0
  357. package/dist/chunk-TMO724ZN.js +63 -0
  358. package/dist/chunk-TMO724ZN.js.map +1 -0
  359. package/dist/chunk-TP7DOXLP.js +98 -0
  360. package/dist/chunk-TP7DOXLP.js.map +1 -0
  361. package/dist/chunk-TQJ3HQ7R.js +87 -0
  362. package/dist/chunk-TQJ3HQ7R.js.map +1 -0
  363. package/dist/chunk-TQMIIK56.js +230 -0
  364. package/dist/chunk-TQMIIK56.js.map +1 -0
  365. package/dist/chunk-TRNLQ7F3.js +245 -0
  366. package/dist/chunk-TRNLQ7F3.js.map +1 -0
  367. package/dist/chunk-U6UGFQIT.js +117 -0
  368. package/dist/chunk-U6UGFQIT.js.map +1 -0
  369. package/dist/chunk-U7OEYXJQ.js +165 -0
  370. package/dist/chunk-U7OEYXJQ.js.map +1 -0
  371. package/dist/chunk-UF6LFXBG.js +230 -0
  372. package/dist/chunk-UF6LFXBG.js.map +1 -0
  373. package/dist/chunk-ULZHPTB5.js +70 -0
  374. package/dist/chunk-ULZHPTB5.js.map +1 -0
  375. package/dist/chunk-UOCLNOC2.js +145 -0
  376. package/dist/chunk-UOCLNOC2.js.map +1 -0
  377. package/dist/chunk-V2RMMVGT.js +51 -0
  378. package/dist/chunk-V2RMMVGT.js.map +1 -0
  379. package/dist/chunk-V2UREEFT.js +89 -0
  380. package/dist/chunk-V2UREEFT.js.map +1 -0
  381. package/dist/chunk-V4WWIPTK.js +363 -0
  382. package/dist/chunk-V4WWIPTK.js.map +1 -0
  383. package/dist/chunk-VEHTXVLY.js +169 -0
  384. package/dist/chunk-VEHTXVLY.js.map +1 -0
  385. package/dist/chunk-VIVVHI7F.js +63 -0
  386. package/dist/chunk-VIVVHI7F.js.map +1 -0
  387. package/dist/chunk-VQMIOVFO.js +69 -0
  388. package/dist/chunk-VQMIOVFO.js.map +1 -0
  389. package/dist/chunk-VU3C3W4S.js +106 -0
  390. package/dist/chunk-VU3C3W4S.js.map +1 -0
  391. package/dist/chunk-VYPPQUB5.js +196 -0
  392. package/dist/chunk-VYPPQUB5.js.map +1 -0
  393. package/dist/chunk-W2TX267T.js +100 -0
  394. package/dist/chunk-W2TX267T.js.map +1 -0
  395. package/dist/chunk-W3EW7K6L.js +51 -0
  396. package/dist/chunk-W3EW7K6L.js.map +1 -0
  397. package/dist/chunk-WA5A2GB4.js +192 -0
  398. package/dist/chunk-WA5A2GB4.js.map +1 -0
  399. package/dist/chunk-WPAC4HEX.js +87 -0
  400. package/dist/chunk-WPAC4HEX.js.map +1 -0
  401. package/dist/chunk-X2OV53JW.js +196 -0
  402. package/dist/chunk-X2OV53JW.js.map +1 -0
  403. package/dist/chunk-X6K6AM4D.js +196 -0
  404. package/dist/chunk-X6K6AM4D.js.map +1 -0
  405. package/dist/chunk-XB2GOVFT.js +69 -0
  406. package/dist/chunk-XB2GOVFT.js.map +1 -0
  407. package/dist/chunk-XIKKYBHO.js +69 -0
  408. package/dist/chunk-XIKKYBHO.js.map +1 -0
  409. package/dist/chunk-Y2H4FXGU.js +68 -0
  410. package/dist/chunk-Y2H4FXGU.js.map +1 -0
  411. package/dist/chunk-Y7I4BEAO.js +69 -0
  412. package/dist/chunk-Y7I4BEAO.js.map +1 -0
  413. package/dist/chunk-YCRTFH4C.js +79 -0
  414. package/dist/chunk-YCRTFH4C.js.map +1 -0
  415. package/dist/chunk-YHGFJ7N6.js +63 -0
  416. package/dist/chunk-YHGFJ7N6.js.map +1 -0
  417. package/dist/chunk-YKDT2D43.js +98 -0
  418. package/dist/chunk-YKDT2D43.js.map +1 -0
  419. package/dist/chunk-YLTKQZ67.js +228 -0
  420. package/dist/chunk-YLTKQZ67.js.map +1 -0
  421. package/dist/chunk-YPGFPLWM.js +69 -0
  422. package/dist/chunk-YPGFPLWM.js.map +1 -0
  423. package/dist/chunk-YWYYPYBK.js +1 -0
  424. package/dist/chunk-YWYYPYBK.js.map +1 -0
  425. package/dist/chunk-Z7WNKARH.js +331 -0
  426. package/dist/chunk-Z7WNKARH.js.map +1 -0
  427. package/dist/chunk-ZA4NYPSW.js +28 -0
  428. package/dist/chunk-ZA4NYPSW.js.map +1 -0
  429. package/dist/chunk-ZDY2M7RX.js +113 -0
  430. package/dist/chunk-ZDY2M7RX.js.map +1 -0
  431. package/dist/chunk-ZFTQ2XBH.js +76 -0
  432. package/dist/chunk-ZFTQ2XBH.js.map +1 -0
  433. package/dist/chunk-ZI7PEVZG.js +89 -0
  434. package/dist/chunk-ZI7PEVZG.js.map +1 -0
  435. package/dist/chunk-ZKFNOCWD.js +125 -0
  436. package/dist/chunk-ZKFNOCWD.js.map +1 -0
  437. package/dist/chunk-ZOITFRX7.js +70 -0
  438. package/dist/chunk-ZOITFRX7.js.map +1 -0
  439. package/dist/chunk-ZPDLTZDJ.js +363 -0
  440. package/dist/chunk-ZPDLTZDJ.js.map +1 -0
  441. package/dist/chunk-ZR4G3PU3.js +89 -0
  442. package/dist/chunk-ZR4G3PU3.js.map +1 -0
  443. package/dist/context/index.js +1 -1
  444. package/dist/index.cjs +1832 -411
  445. package/dist/index.cjs.map +1 -1
  446. package/dist/index.d.cts +4 -2
  447. package/dist/index.d.ts +4 -2
  448. package/dist/index.js +152 -139
  449. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +7 -7
  450. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +6 -6
  451. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +2 -2
  452. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +2 -2
  453. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +1 -1
  454. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +3 -3
  455. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +11 -11
  456. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +2 -2
  457. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
  458. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +2 -2
  459. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
  460. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +2 -2
  461. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
  462. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +13 -13
  463. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs +4 -4
  464. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs.map +1 -1
  465. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.js +1 -1
  466. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +4 -4
  467. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
  468. package/dist/molecules/curriculumV2/CurriculumContents/index.js +17 -17
  469. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
  470. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +4 -4
  471. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +1 -1
  472. package/dist/molecules/curriculumV2/curriculum-context.cjs +0 -1
  473. package/dist/molecules/curriculumV2/curriculum-context.cjs.map +1 -1
  474. package/dist/molecules/curriculumV2/curriculum-context.js +1 -1
  475. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
  476. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +2 -2
  477. package/dist/molecules/curriculumV2/index.cjs +4 -5
  478. package/dist/molecules/curriculumV2/index.cjs.map +1 -1
  479. package/dist/molecules/curriculumV2/index.js +27 -27
  480. package/dist/molecules/description-json-render.cjs +1 -1
  481. package/dist/molecules/description-json-render.cjs.map +1 -1
  482. package/dist/molecules/description-json-render.js +3 -3
  483. package/dist/molecules/dynamic-field.cjs +147 -5
  484. package/dist/molecules/dynamic-field.cjs.map +1 -1
  485. package/dist/molecules/dynamic-field.js +5 -2
  486. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +1711 -0
  487. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -0
  488. package/dist/molecules/dynamic-form-editor-field-editor-panel.d.cts +19 -0
  489. package/dist/molecules/dynamic-form-editor-field-editor-panel.d.ts +19 -0
  490. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +37 -0
  491. package/dist/molecules/dynamic-form-editor-field-editor-panel.js.map +1 -0
  492. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +298 -0
  493. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -0
  494. package/dist/molecules/dynamic-form-editor-field-list-panel.d.cts +16 -0
  495. package/dist/molecules/dynamic-form-editor-field-list-panel.d.ts +16 -0
  496. package/dist/molecules/dynamic-form-editor-field-list-panel.js +14 -0
  497. package/dist/molecules/dynamic-form-editor-field-list-panel.js.map +1 -0
  498. package/dist/molecules/dynamic-form-editor-issues-panel.cjs +171 -0
  499. package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -0
  500. package/dist/molecules/dynamic-form-editor-issues-panel.d.cts +10 -0
  501. package/dist/molecules/dynamic-form-editor-issues-panel.d.ts +10 -0
  502. package/dist/molecules/dynamic-form-editor-issues-panel.js +12 -0
  503. package/dist/molecules/dynamic-form-editor-issues-panel.js.map +1 -0
  504. package/dist/molecules/dynamic-form-editor-preview-panel.cjs +1021 -0
  505. package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -0
  506. package/dist/molecules/dynamic-form-editor-preview-panel.d.cts +10 -0
  507. package/dist/molecules/dynamic-form-editor-preview-panel.d.ts +10 -0
  508. package/dist/molecules/dynamic-form-editor-preview-panel.js +26 -0
  509. package/dist/molecules/dynamic-form-editor-preview-panel.js.map +1 -0
  510. package/dist/molecules/dynamic-form-editor-utils.cjs +396 -0
  511. package/dist/molecules/dynamic-form-editor-utils.cjs.map +1 -0
  512. package/dist/molecules/dynamic-form-editor-utils.d.cts +43 -0
  513. package/dist/molecules/dynamic-form-editor-utils.d.ts +43 -0
  514. package/dist/molecules/dynamic-form-editor-utils.js +44 -0
  515. package/dist/molecules/dynamic-form-editor-utils.js.map +1 -0
  516. package/dist/molecules/dynamic-form-editor.cjs +2925 -0
  517. package/dist/molecules/dynamic-form-editor.cjs.map +1 -0
  518. package/dist/molecules/dynamic-form-editor.d.cts +15 -0
  519. package/dist/molecules/dynamic-form-editor.d.ts +15 -0
  520. package/dist/molecules/dynamic-form-editor.js +51 -0
  521. package/dist/molecules/dynamic-form-editor.js.map +1 -0
  522. package/dist/molecules/dynamic-form-response-item.cjs +63 -29
  523. package/dist/molecules/dynamic-form-response-item.cjs.map +1 -1
  524. package/dist/molecules/dynamic-form-response-item.js +2 -1
  525. package/dist/molecules/dynamic-form.cjs +149 -7
  526. package/dist/molecules/dynamic-form.cjs.map +1 -1
  527. package/dist/molecules/dynamic-form.js +6 -3
  528. package/dist/molecules/expand-table/index.js +1 -1
  529. package/dist/molecules/index.cjs +1464 -42
  530. package/dist/molecules/index.cjs.map +1 -1
  531. package/dist/molecules/index.d.cts +1 -0
  532. package/dist/molecules/index.d.ts +1 -0
  533. package/dist/molecules/index.js +74 -63
  534. package/dist/molecules/learning-post.js +2 -2
  535. package/dist/molecules/stepper.js +2 -2
  536. package/dist/molecules/tag-selector.js +3 -3
  537. package/dist/molecules/time-select.cjs +1 -1
  538. package/dist/molecules/time-select.cjs.map +1 -1
  539. package/dist/molecules/time-select.js +4 -3
  540. package/dist/types/dynamic-form-schema-generated.cjs.map +1 -1
  541. package/dist/types/dynamic-form-schema-generated.d.cts +30 -2
  542. package/dist/types/dynamic-form-schema-generated.d.ts +30 -2
  543. package/dist/types/index.d.cts +1 -1
  544. package/dist/types/index.d.ts +1 -1
  545. package/dist/types/index.js +1 -1
  546. package/dist/utils/get-callout-icon-component.cjs +624 -0
  547. package/dist/utils/get-callout-icon-component.cjs.map +1 -0
  548. package/dist/utils/get-callout-icon-component.d.cts +11 -0
  549. package/dist/utils/get-callout-icon-component.d.ts +11 -0
  550. package/dist/utils/get-callout-icon-component.js +26 -0
  551. package/dist/utils/get-callout-icon-component.js.map +1 -0
  552. package/dist/utils/get-dynamic-form-display-value.cjs +80 -0
  553. package/dist/utils/get-dynamic-form-display-value.cjs.map +1 -0
  554. package/dist/utils/get-dynamic-form-display-value.d.cts +5 -0
  555. package/dist/utils/get-dynamic-form-display-value.d.ts +5 -0
  556. package/dist/utils/get-dynamic-form-display-value.js +8 -0
  557. package/dist/utils/get-dynamic-form-display-value.js.map +1 -0
  558. package/dist/utils/get-dynamic-form-display-value.test.cjs +124 -0
  559. package/dist/utils/get-dynamic-form-display-value.test.cjs.map +1 -0
  560. package/dist/utils/get-dynamic-form-display-value.test.d.cts +2 -0
  561. package/dist/utils/get-dynamic-form-display-value.test.d.ts +2 -0
  562. package/dist/utils/get-dynamic-form-display-value.test.js +75 -0
  563. package/dist/utils/get-dynamic-form-display-value.test.js.map +1 -0
  564. package/dist/utils/index.cjs +55 -1
  565. package/dist/utils/index.cjs.map +1 -1
  566. package/dist/utils/index.d.cts +3 -1
  567. package/dist/utils/index.d.ts +3 -1
  568. package/dist/utils/index.js +10 -6
  569. package/package.json +1 -1
  570. package/src/app/platform/reservation-card.tsx +0 -1
  571. package/src/constrant/dynamic-form-schema.json +55 -0
  572. package/src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx +3 -3
  573. package/src/molecules/curriculumV2/curriculum-context.tsx +0 -1
  574. package/src/molecules/description-json-render.tsx +1 -1
  575. package/src/molecules/dynamic-field.tsx +183 -7
  576. package/src/molecules/dynamic-form-editor-field-editor-panel.tsx +688 -0
  577. package/src/molecules/dynamic-form-editor-field-list-panel.tsx +116 -0
  578. package/src/molecules/dynamic-form-editor-issues-panel.tsx +35 -0
  579. package/src/molecules/dynamic-form-editor-preview-panel.tsx +30 -0
  580. package/src/molecules/dynamic-form-editor-utils.ts +433 -0
  581. package/src/molecules/dynamic-form-editor.tsx +263 -0
  582. package/src/molecules/dynamic-form-response-item.tsx +13 -40
  583. package/src/molecules/dynamic-form.tsx +1 -1
  584. package/src/molecules/index.ts +2 -1
  585. package/src/types/dynamic-form-schema-generated.ts +33 -0
  586. package/src/utils/get-dynamic-form-display-value.test.ts +81 -0
  587. package/src/utils/get-dynamic-form-display-value.ts +74 -0
  588. package/src/utils/index.ts +2 -1
  589. 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,
@@ -276,6 +277,7 @@ __export(index_exports, {
276
277
  getCalloutIconComponent: () => getCalloutIconComponent,
277
278
  getCellAlign: () => getCellAlign,
278
279
  getColumnMeta: () => getColumnMeta,
280
+ getDynamicFormDisplayValue: () => getDynamicFormDisplayValue,
279
281
  getTimeOption: () => getTimeOption,
280
282
  getTimeOptions: () => getTimeOptions,
281
283
  oneOnOneNoteTextReplacer: () => oneOnOneNoteTextReplacer,
@@ -287,7 +289,7 @@ __export(index_exports, {
287
289
  useDynamicForm: () => useDynamicForm,
288
290
  useList: () => useList,
289
291
  usePortalContainer: () => usePortalContainer,
290
- useThemeContext: () => import_themes56.useThemeContext,
292
+ useThemeContext: () => import_themes58.useThemeContext,
291
293
  useUIState: () => useUIState
292
294
  });
293
295
  module.exports = __toCommonJS(index_exports);
@@ -3628,7 +3630,7 @@ var getTimeOption = (time) => {
3628
3630
  return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;
3629
3631
  };
3630
3632
 
3631
- // src/utils/getCalloutIconComponent.ts
3633
+ // src/utils/get-callout-icon-component.ts
3632
3634
  var DEFAULT_ICON = import_react_icons2.InfoCircledIcon;
3633
3635
  var AI_CALLOUT_ICON_OPTIONS = [
3634
3636
  { label: "Info", value: "InfoCircledIcon", Component: import_react_icons2.InfoCircledIcon },
@@ -3653,6 +3655,58 @@ function getCalloutIconComponent(iconName) {
3653
3655
  return (_a = iconByName[iconName]) != null ? _a : DEFAULT_ICON;
3654
3656
  }
3655
3657
 
3658
+ // src/utils/get-dynamic-form-display-value.ts
3659
+ function isEmptyDisplayValue(value) {
3660
+ return value === void 0 || value === null || value === "";
3661
+ }
3662
+ function findOptionLabel(options, value) {
3663
+ const valueString = String(value);
3664
+ const found = options.find(
3665
+ (option) => String(option.value) === valueString
3666
+ );
3667
+ return found == null ? void 0 : found.label;
3668
+ }
3669
+ function joinLabelsOrValues(options, values) {
3670
+ const labels = values.map((v) => {
3671
+ const label = findOptionLabel(options, v);
3672
+ return label != null ? label : String(v);
3673
+ });
3674
+ return labels.join(", ");
3675
+ }
3676
+ function getDynamicFormDisplayValue(field, value) {
3677
+ if (isEmptyDisplayValue(value)) return "";
3678
+ switch (field.type) {
3679
+ case "dropdown":
3680
+ case "choice":
3681
+ case "radio_cards": {
3682
+ const label = findOptionLabel(field.options, value);
3683
+ return label != null ? label : String(value);
3684
+ }
3685
+ case "image_radio_card": {
3686
+ const label = findOptionLabel(field.options, value);
3687
+ return label != null ? label : String(value);
3688
+ }
3689
+ case "choices": {
3690
+ if (Array.isArray(value)) {
3691
+ return joinLabelsOrValues(field.options, value);
3692
+ }
3693
+ const label = findOptionLabel(field.options, value);
3694
+ return label != null ? label : String(value);
3695
+ }
3696
+ case "yes_no": {
3697
+ if (value === true || value === "true" || value === "yes") return "\uB3D9\uC758";
3698
+ if (value === false || value === "false" || value === "no") return "\uBE44\uB3D9\uC758";
3699
+ return String(value);
3700
+ }
3701
+ case "short_text":
3702
+ case "long_text":
3703
+ case "number":
3704
+ case "email":
3705
+ default:
3706
+ return String(value);
3707
+ }
3708
+ }
3709
+
3656
3710
  // src/molecules/time-select.tsx
3657
3711
  var import_jsx_runtime55 = require("react/jsx-runtime");
3658
3712
  var getOptionValue = (date, timeValue) => {
@@ -3960,7 +4014,6 @@ function CurriculumProvider(props) {
3960
4014
  const inBounds = selectedIndexState >= 0 && selectedIndexState < list.length;
3961
4015
  if (!inBounds) return;
3962
4016
  const item = list[selectedIndexState];
3963
- if (!item) return;
3964
4017
  if (item.type === "sectionTitle") return;
3965
4018
  onChangeSelectedContent == null ? void 0 : onChangeSelectedContent(item);
3966
4019
  }, [list, onChangeSelectedContent, selectedIndexState]);
@@ -4116,15 +4169,15 @@ function CurriculumVideo(props) {
4116
4169
  "iframe",
4117
4170
  {
4118
4171
  allowFullScreen: true,
4172
+ onError: () => {
4173
+ setIsLoading(false);
4174
+ },
4119
4175
  onLoad: () => {
4120
4176
  setIsLoading(false);
4121
4177
  },
4122
4178
  src: `${url}?theme=light`,
4123
4179
  style: { width: "100%", height: "100%", border: "none" },
4124
- title: "Curriculum Video",
4125
- onError: () => {
4126
- setIsLoading(false);
4127
- }
4180
+ title: "Curriculum Video"
4128
4181
  }
4129
4182
  )
4130
4183
  ]
@@ -5648,6 +5701,46 @@ function useDynamicForm() {
5648
5701
 
5649
5702
  // src/molecules/dynamic-field.tsx
5650
5703
  var import_jsx_runtime88 = require("react/jsx-runtime");
5704
+ function isRecord(value) {
5705
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
5706
+ }
5707
+ function isFieldOption(value) {
5708
+ if (!isRecord(value)) return false;
5709
+ const label = value.label;
5710
+ const optionValue = value.value;
5711
+ return typeof label === "string" && (typeof optionValue === "string" || typeof optionValue === "number");
5712
+ }
5713
+ function isImageFieldOption(value) {
5714
+ if (!isRecord(value)) return false;
5715
+ if (!isFieldOption(value)) return false;
5716
+ const imageSrc = value.imageSrc;
5717
+ const alt = value.alt;
5718
+ return typeof imageSrc === "string" && (alt === void 0 || typeof alt === "string");
5719
+ }
5720
+ function getStringProp(obj, key, fallback) {
5721
+ if (!isRecord(obj)) return fallback;
5722
+ const value = obj[key];
5723
+ return typeof value === "string" ? value : fallback;
5724
+ }
5725
+ function getNumberProp(obj, key, fallback) {
5726
+ if (!isRecord(obj)) return fallback;
5727
+ const value = obj[key];
5728
+ return typeof value === "number" ? value : fallback;
5729
+ }
5730
+ function getOptions(field) {
5731
+ if (!isRecord(field)) return null;
5732
+ const options = field.options;
5733
+ if (!Array.isArray(options)) return null;
5734
+ if (!options.every(isFieldOption)) return null;
5735
+ return options;
5736
+ }
5737
+ function getImageOptions(field) {
5738
+ if (!isRecord(field)) return null;
5739
+ const options = field.options;
5740
+ if (!Array.isArray(options)) return null;
5741
+ if (!options.every(isImageFieldOption)) return null;
5742
+ return options;
5743
+ }
5651
5744
  function DynamicFormField({
5652
5745
  field
5653
5746
  }) {
@@ -5660,7 +5753,7 @@ function DynamicFormField({
5660
5753
  handleBlur,
5661
5754
  readonly
5662
5755
  } = useDynamicForm();
5663
- const { name, type } = field;
5756
+ const name = field.name;
5664
5757
  const value = getFieldValue(name);
5665
5758
  const error = getFieldError(name);
5666
5759
  const touched = getFieldTouched(name);
@@ -5673,14 +5766,22 @@ function DynamicFormField({
5673
5766
  error: hasError,
5674
5767
  disabled: readonly
5675
5768
  };
5676
- switch (type) {
5769
+ const selectedValue = typeof value === "string" || typeof value === "number" ? String(value) : "";
5770
+ switch (field.type) {
5677
5771
  case "short_text":
5772
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5773
+ TextField.Root,
5774
+ __spreadProps(__spreadValues({}, commonProps), {
5775
+ placeholder: field.placeholder,
5776
+ type: "text"
5777
+ })
5778
+ );
5678
5779
  case "email":
5679
5780
  return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5680
5781
  TextField.Root,
5681
5782
  __spreadProps(__spreadValues({}, commonProps), {
5682
5783
  placeholder: field.placeholder,
5683
- type: type === "short_text" ? "text" : type
5784
+ type: "email"
5684
5785
  })
5685
5786
  );
5686
5787
  case "number":
@@ -5703,9 +5804,20 @@ function DynamicFormField({
5703
5804
  onValueChange: readonly ? void 0 : (newValue) => {
5704
5805
  void setFieldValue(name, newValue);
5705
5806
  },
5706
- value,
5807
+ value: selectedValue,
5707
5808
  children: [
5708
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Select.Trigger, { placeholder: field.placeholder }),
5809
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5810
+ Select.Trigger,
5811
+ {
5812
+ placeholder: field.placeholder,
5813
+ style: {
5814
+ alignSelf: "flex-start",
5815
+ width: "fit-content",
5816
+ minWidth: "180px",
5817
+ maxWidth: "100%"
5818
+ }
5819
+ }
5820
+ ),
5709
5821
  /* @__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
5822
  ]
5711
5823
  }
@@ -5723,6 +5835,21 @@ function DynamicFormField({
5723
5835
  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
5836
  }
5725
5837
  );
5838
+ case "radio_cards": {
5839
+ const options = getOptions(field);
5840
+ if (!options) return null;
5841
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5842
+ import_themes33.RadioCards.Root,
5843
+ {
5844
+ disabled: readonly,
5845
+ onValueChange: readonly ? void 0 : (newValue) => {
5846
+ void setFieldValue(name, newValue);
5847
+ },
5848
+ value: selectedValue,
5849
+ 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))
5850
+ }
5851
+ );
5852
+ }
5726
5853
  case "choices":
5727
5854
  return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5728
5855
  CheckboxGroup.Root,
@@ -5750,6 +5877,65 @@ function DynamicFormField({
5750
5877
  ),
5751
5878
  field.description ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { color: "gray", variant: "caption", children: field.description }) : null
5752
5879
  ] });
5880
+ case "image_radio_card": {
5881
+ const options = getImageOptions(field);
5882
+ if (!options) return null;
5883
+ const gridColumnsCount = Math.max(1, getNumberProp(field, "gridColumnsCount", 4));
5884
+ const gridColumns = getStringProp(
5885
+ field,
5886
+ "gridColumns",
5887
+ `repeat(${gridColumnsCount}, 1fr)`
5888
+ );
5889
+ const gridItemHeight = getStringProp(field, "gridItemHeight", "100px");
5890
+ const gridRows = getStringProp(field, "gridRows", gridItemHeight);
5891
+ const gridGap = getStringProp(field, "gridGap", "2");
5892
+ const imageFitRaw = getStringProp(field, "imageFit", "cover");
5893
+ const imageFit = imageFitRaw === "contain" ? "contain" : "cover";
5894
+ const handleValueChange = (newValue) => {
5895
+ if (readonly) return;
5896
+ const selectedOption = options.find(
5897
+ (option) => String(option.value) === newValue
5898
+ );
5899
+ if (!selectedOption) return;
5900
+ void setFieldValue(name, selectedOption.value);
5901
+ };
5902
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5903
+ import_themes33.RadioCards.Root,
5904
+ {
5905
+ disabled: readonly,
5906
+ onValueChange: readonly ? void 0 : handleValueChange,
5907
+ value: selectedValue,
5908
+ children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes23.Grid, { columns: gridColumns, gap: gridGap, rows: gridRows, children: options.map((option) => {
5909
+ const optionValue = String(option.value);
5910
+ const altText = option.alt || option.label;
5911
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5912
+ import_themes33.RadioCards.Item,
5913
+ {
5914
+ style: {
5915
+ padding: 0
5916
+ },
5917
+ value: optionValue,
5918
+ children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes25.Inset, { style: { width: "100%", height: "100%", padding: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5919
+ "img",
5920
+ {
5921
+ alt: altText,
5922
+ src: option.imageSrc,
5923
+ style: {
5924
+ width: "100%",
5925
+ height: "100%",
5926
+ display: "block",
5927
+ objectFit: imageFit,
5928
+ opacity: readonly ? 0.7 : 1
5929
+ }
5930
+ }
5931
+ ) })
5932
+ },
5933
+ optionValue
5934
+ );
5935
+ }) })
5936
+ }
5937
+ );
5938
+ }
5753
5939
  default:
5754
5940
  return null;
5755
5941
  }
@@ -5975,56 +6161,36 @@ function createYupValidation(field, validation) {
5975
6161
  }
5976
6162
 
5977
6163
  // src/molecules/dynamic-form-response-item.tsx
6164
+ function isRecord2(value) {
6165
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6166
+ }
5978
6167
  function DynamicFormResponseItem({
5979
6168
  payload,
5980
6169
  questionType,
5981
6170
  config
5982
6171
  }) {
5983
- if (!payload || typeof payload !== "object") {
5984
- return String(payload || "\uC751\uB2F5 \uC5C6\uC74C");
5985
- }
5986
- const payloadObj = payload;
5987
- const value = payloadObj.value;
6172
+ const value = isRecord2(payload) && "value" in payload ? payload.value : payload;
5988
6173
  if (value === void 0 || value === null || value === "") {
5989
6174
  return "\uC751\uB2F5 \uC5C6\uC74C";
5990
6175
  }
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;
5997
- };
5998
- const options = getOptions(config);
6176
+ if (config) {
6177
+ const displayValue = getDynamicFormDisplayValue(config, value);
6178
+ return displayValue === "" ? "\uC751\uB2F5 \uC5C6\uC74C" : displayValue;
6179
+ }
5999
6180
  switch (questionType) {
6000
6181
  case "text":
6001
6182
  case "textarea":
6002
6183
  return String(value);
6003
6184
  case "radio":
6004
6185
  case "select":
6005
- case "choice":
6006
- if (options) {
6007
- const option = options.find((opt) => opt.value === value);
6008
- return option ? option.label : String(value);
6009
- }
6010
6186
  return String(value);
6011
6187
  case "checkbox":
6012
6188
  case "choices":
6013
6189
  if (Array.isArray(value)) {
6014
- if (options) {
6015
- return value.map((val) => {
6016
- const option = options.find((opt) => opt.value === val);
6017
- return option ? option.label : String(val);
6018
- }).join(", ");
6019
- }
6020
- return value.join(", ");
6190
+ return value.map((v) => String(v)).join(", ");
6021
6191
  }
6022
6192
  return String(value);
6023
6193
  case "rating":
6024
- if (options) {
6025
- const option = options.find((opt) => opt.value === value);
6026
- return option ? option.label : String(value);
6027
- }
6028
6194
  return String(value);
6029
6195
  case "number":
6030
6196
  return String(value);
@@ -6275,105 +6441,1358 @@ function TrainingInfoGuidelineButton({
6275
6441
  );
6276
6442
  }
6277
6443
 
6278
- // src/theme/use-theme.tsx
6279
- var import_themes56 = require("@radix-ui/themes");
6444
+ // src/molecules/dynamic-form-editor.tsx
6445
+ var import_react49 = require("react");
6280
6446
 
6281
- // src/ui-props/index.ts
6282
- var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
6447
+ // src/molecules/dynamic-form-editor-utils.ts
6448
+ function isRecord3(value) {
6449
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6450
+ }
6451
+ function isNonEmptyTrimmedString(value) {
6452
+ return typeof value === "string" && value.trim().length > 0;
6453
+ }
6454
+ function isFiniteNumber(value) {
6455
+ return typeof value === "number" && Number.isFinite(value);
6456
+ }
6457
+ function canCompileRegExp(pattern) {
6458
+ try {
6459
+ new RegExp(pattern);
6460
+ return true;
6461
+ } catch (e) {
6462
+ return false;
6463
+ }
6464
+ }
6465
+ function getFieldTypes() {
6466
+ return [
6467
+ "short_text",
6468
+ "long_text",
6469
+ "number",
6470
+ "email",
6471
+ "dropdown",
6472
+ "choice",
6473
+ "radio_cards",
6474
+ "image_radio_card",
6475
+ "choices",
6476
+ "yes_no"
6477
+ ];
6478
+ }
6479
+ function getFieldTypeLabel(type) {
6480
+ const map = {
6481
+ short_text: "\uC9E7\uC740 \uD14D\uC2A4\uD2B8",
6482
+ long_text: "\uAE34 \uD14D\uC2A4\uD2B8",
6483
+ number: "\uC22B\uC790",
6484
+ email: "\uC774\uBA54\uC77C",
6485
+ dropdown: "\uB4DC\uB86D\uB2E4\uC6B4",
6486
+ choice: "\uB2E8\uC77C \uC120\uD0DD(\uB77C\uB514\uC624)",
6487
+ radio_cards: "\uB77C\uB514\uC624 \uCE74\uB4DC",
6488
+ image_radio_card: "\uC774\uBBF8\uC9C0 \uB77C\uB514\uC624 \uCE74\uB4DC",
6489
+ choices: "\uB2E4\uC911 \uC120\uD0DD(\uCCB4\uD06C)",
6490
+ yes_no: "\uB3D9\uC758(\uCCB4\uD06C)"
6491
+ };
6492
+ return map[type];
6493
+ }
6494
+ function findFieldIndexByName(fields, fieldName) {
6495
+ return fields.findIndex((field) => field.name === fieldName);
6496
+ }
6497
+ function toCamelFromSnake(value) {
6498
+ const parts = value.split("_").filter(Boolean);
6499
+ if (parts.length === 0) return "field";
6500
+ const [first, ...rest] = parts;
6501
+ const firstLower = first.toLowerCase();
6502
+ const restCamel = rest.map((p) => p.length === 0 ? "" : p[0].toUpperCase() + p.slice(1)).join("");
6503
+ return `${firstLower}${restCamel}`;
6504
+ }
6505
+ function createUniqueFieldName(fields, baseName) {
6506
+ const used = new Set(fields.map((f) => f.name));
6507
+ if (!used.has(baseName)) return baseName;
6508
+ let i = 2;
6509
+ while (used.has(`${baseName}${i}`)) i += 1;
6510
+ return `${baseName}${i}`;
6511
+ }
6512
+ function createDefaultField(type, currentFields) {
6513
+ const baseName = toCamelFromSnake(type);
6514
+ const name = createUniqueFieldName(currentFields, baseName);
6515
+ const label = getFieldTypeLabel(type);
6516
+ if (type === "short_text") return { name, type, label, placeholder: "" };
6517
+ if (type === "long_text") return { name, type, label, placeholder: "" };
6518
+ if (type === "number") return { name, type, label, placeholder: "" };
6519
+ if (type === "email") return { name, type, label, placeholder: "" };
6520
+ if (type === "dropdown")
6521
+ return {
6522
+ name,
6523
+ type,
6524
+ label,
6525
+ placeholder: "",
6526
+ options: [{ label: "\uC635\uC158 1", value: "option1" }]
6527
+ };
6528
+ if (type === "choice")
6529
+ return {
6530
+ name,
6531
+ type,
6532
+ label,
6533
+ orientation: "vertical",
6534
+ options: [{ label: "\uC635\uC158 1", value: "option1" }]
6535
+ };
6536
+ if (type === "radio_cards")
6537
+ return { name, type, label, options: [{ label: "\uC635\uC158 1", value: "option1" }] };
6538
+ if (type === "choices")
6539
+ return {
6540
+ name,
6541
+ type,
6542
+ label,
6543
+ orientation: "vertical",
6544
+ options: [{ label: "\uC635\uC158 1", value: "option1" }]
6545
+ };
6546
+ if (type === "yes_no") return { name, type, label, description: "" };
6547
+ return {
6548
+ name,
6549
+ type,
6550
+ label,
6551
+ gridColumnsCount: 4,
6552
+ gridItemHeight: "160px",
6553
+ gridGap: "2",
6554
+ imageFit: "cover",
6555
+ options: [
6556
+ {
6557
+ label: "\uC774\uBBF8\uC9C0 1",
6558
+ value: "option1",
6559
+ imageSrc: "https://placehold.co/300x300/png?text=1"
6560
+ }
6561
+ ]
6562
+ };
6563
+ }
6564
+ function normalizeSchema(value) {
6565
+ const fallback = { fields: [] };
6566
+ if (!value) return fallback;
6567
+ if (!Array.isArray(value.fields)) return fallback;
6568
+ return { fields: value.fields };
6569
+ }
6570
+ function validateDynamicFormSchema(schema) {
6571
+ const issues = [];
6572
+ const nameToCount = /* @__PURE__ */ new Map();
6573
+ schema.fields.forEach((field) => {
6574
+ const prev = nameToCount.get(field.name) || 0;
6575
+ nameToCount.set(field.name, prev + 1);
6576
+ });
6577
+ schema.fields.forEach((field, index) => {
6578
+ const fieldKey = `${index}:${field.name}`;
6579
+ if (!isNonEmptyTrimmedString(field.name)) {
6580
+ issues.push({
6581
+ id: `field.name.required.${fieldKey}`,
6582
+ level: "error",
6583
+ message: "\uD544\uB4DC name\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
6584
+ fieldName: field.name
6585
+ });
6586
+ } else if (field.name.trim() !== field.name) {
6587
+ issues.push({
6588
+ id: `field.name.trim.${fieldKey}`,
6589
+ level: "warning",
6590
+ message: "\uD544\uB4DC name \uC55E/\uB4A4 \uACF5\uBC31\uC740 \uC81C\uAC70\uD558\uB294 \uAC83\uC744 \uAD8C\uC7A5\uD569\uB2C8\uB2E4",
6591
+ fieldName: field.name
6592
+ });
6593
+ }
6594
+ if (isNonEmptyTrimmedString(field.name)) {
6595
+ const count = nameToCount.get(field.name) || 0;
6596
+ if (count > 1) {
6597
+ issues.push({
6598
+ id: `field.name.duplicate.${fieldKey}`,
6599
+ level: "error",
6600
+ message: `\uC911\uBCF5\uB41C name\uC785\uB2C8\uB2E4: ${field.name}`,
6601
+ fieldName: field.name
6602
+ });
6603
+ }
6604
+ }
6605
+ if (!isNonEmptyTrimmedString(field.label)) {
6606
+ issues.push({
6607
+ id: `field.label.required.${fieldKey}`,
6608
+ level: "error",
6609
+ message: "\uD544\uB4DC label\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
6610
+ fieldName: field.name
6611
+ });
6612
+ }
6613
+ const type = field.type;
6614
+ const isOptionType = type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices";
6615
+ if (isOptionType) {
6616
+ const optionsRaw = field.options;
6617
+ if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
6618
+ issues.push({
6619
+ id: `field.options.required.${fieldKey}`,
6620
+ level: "error",
6621
+ message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
6622
+ fieldName: field.name
6623
+ });
6624
+ }
6625
+ }
6626
+ if (type === "image_radio_card") {
6627
+ const optionsRaw = field.options;
6628
+ if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
6629
+ issues.push({
6630
+ id: `field.imageOptions.required.${fieldKey}`,
6631
+ level: "error",
6632
+ message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
6633
+ fieldName: field.name
6634
+ });
6635
+ } else {
6636
+ optionsRaw.forEach((opt, optIndex) => {
6637
+ const imageSrc = isRecord3(opt) ? opt.imageSrc : void 0;
6638
+ if (!isNonEmptyTrimmedString(imageSrc)) {
6639
+ issues.push({
6640
+ id: `field.imageOptions.imageSrc.required.${fieldKey}.${optIndex}`,
6641
+ level: "error",
6642
+ message: "imageSrc\uB294 \uD544\uC218\uC785\uB2C8\uB2E4",
6643
+ fieldName: field.name
6644
+ });
6645
+ }
6646
+ });
6647
+ }
6648
+ }
6649
+ const validation = field.validation;
6650
+ if (validation) {
6651
+ if (isFiniteNumber(validation.min) && isFiniteNumber(validation.max)) {
6652
+ if (validation.min > validation.max) {
6653
+ issues.push({
6654
+ id: `field.validation.minmax.${fieldKey}`,
6655
+ level: "error",
6656
+ message: "validation.min\uC740 validation.max \uC774\uD558\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",
6657
+ fieldName: field.name
6658
+ });
6659
+ }
6660
+ }
6661
+ if (isNonEmptyTrimmedString(validation.pattern)) {
6662
+ if (!canCompileRegExp(validation.pattern)) {
6663
+ issues.push({
6664
+ id: `field.validation.pattern.${fieldKey}`,
6665
+ level: "error",
6666
+ message: "validation.pattern\uC774 \uC62C\uBC14\uB978 \uC815\uADDC\uC2DD\uC774 \uC544\uB2D9\uB2C8\uB2E4",
6667
+ fieldName: field.name
6668
+ });
6669
+ }
6670
+ }
6671
+ }
6672
+ });
6673
+ return issues;
6674
+ }
6675
+ function hasErrorIssues(issues) {
6676
+ return issues.some((i) => i.level === "error");
6677
+ }
6678
+ function updateSchemaFields(schema, nextFields) {
6679
+ return { fields: nextFields };
6680
+ }
6681
+ function moveField(fields, fromIndex, toIndex) {
6682
+ if (fromIndex < 0 || fromIndex >= fields.length) return fields;
6683
+ if (toIndex < 0 || toIndex >= fields.length) return fields;
6684
+ if (fromIndex === toIndex) return fields;
6685
+ const next = [...fields];
6686
+ const [item] = next.splice(fromIndex, 1);
6687
+ next.splice(toIndex, 0, item);
6688
+ return next;
6689
+ }
6690
+ function duplicateField(fields, index) {
6691
+ if (index < 0 || index >= fields.length) return fields;
6692
+ const target = fields[index];
6693
+ const nextName = createUniqueFieldName(fields, target.name);
6694
+ const cloned = __spreadProps(__spreadValues({}, target), { name: nextName });
6695
+ const next = [...fields];
6696
+ next.splice(index + 1, 0, cloned);
6697
+ return next;
6698
+ }
6699
+ function updateFieldCommonProps(field, next) {
6700
+ const { name, label, description, required } = next;
6701
+ return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, field), name !== void 0 ? { name } : {}), label !== void 0 ? { label } : {}), description !== void 0 ? { description } : {}), required !== void 0 ? { required } : {});
6702
+ }
6703
+ function updateFieldValidation(field, next) {
6704
+ if (!next) {
6705
+ const _a = field, { validation: _validation } = _a, rest = __objRest(_a, ["validation"]);
6706
+ return rest;
6707
+ }
6708
+ return __spreadProps(__spreadValues({}, field), { validation: next });
6709
+ }
6710
+ function updateTextPlaceholder(field, placeholder) {
6711
+ const type = field.type;
6712
+ if (type === "short_text" || type === "long_text" || type === "number" || type === "email" || type === "dropdown") {
6713
+ return __spreadProps(__spreadValues({}, field), { placeholder });
6714
+ }
6715
+ return field;
6716
+ }
6717
+ function updateOrientation(field, orientation) {
6718
+ const type = field.type;
6719
+ if (type === "choice" || type === "choices") return __spreadProps(__spreadValues({}, field), { orientation });
6720
+ return field;
6721
+ }
6722
+ function updateOptions(field, options) {
6723
+ const type = field.type;
6724
+ if (type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices") {
6725
+ return __spreadProps(__spreadValues({}, field), { options });
6726
+ }
6727
+ return field;
6728
+ }
6729
+ function updateImageOptions(field, options) {
6730
+ if (field.type === "image_radio_card") {
6731
+ return __spreadProps(__spreadValues({}, field), { options });
6732
+ }
6733
+ return field;
6734
+ }
6735
+ function updateImageLayout(field, next) {
6736
+ if (field.type !== "image_radio_card") return field;
6737
+ return __spreadValues(__spreadValues({}, field), next);
6738
+ }
6739
+ function resetFieldType(field, nextType, allFields) {
6740
+ const base = createDefaultField(nextType, allFields);
6741
+ return __spreadProps(__spreadValues({}, base), {
6742
+ name: field.name,
6743
+ label: field.label,
6744
+ description: field.description,
6745
+ required: field.required,
6746
+ validation: field.validation
6747
+ });
6748
+ }
6283
6749
 
6284
- // src/charts/horizontal-bar-chart.tsx
6750
+ // src/molecules/dynamic-form-editor-field-editor-panel.tsx
6751
+ var import_react47 = require("react");
6752
+ var import_themes56 = require("@radix-ui/themes");
6285
6753
  var import_jsx_runtime93 = require("react/jsx-runtime");
6286
- function HorizontalBarChart(props) {
6287
- const { total, value, backgroundColor, barColor, height } = props;
6288
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6289
- "div",
6290
- {
6291
- className: "tipp_horizontal-bar-chart bar-wrapper",
6292
- style: { height, backgroundColor },
6293
- children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6294
- "div",
6295
- {
6296
- style: {
6297
- width: `${Math.round(value / total * 100)}%`,
6298
- height: "100%"
6299
- },
6300
- children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "bar", style: { backgroundColor: barColor } })
6301
- }
6302
- )
6754
+ function isRecord4(value) {
6755
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6756
+ }
6757
+ function isFieldType(value, types) {
6758
+ return types.some((t) => t === value);
6759
+ }
6760
+ function parseOptionalNumber(value) {
6761
+ const trimmed = value.trim();
6762
+ if (trimmed.length === 0) return void 0;
6763
+ const num = Number(trimmed);
6764
+ return Number.isFinite(num) ? num : void 0;
6765
+ }
6766
+ function getValidation(field) {
6767
+ return field.validation ? field.validation : {};
6768
+ }
6769
+ function cleanValidation(next) {
6770
+ 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;
6771
+ return hasAny ? next : void 0;
6772
+ }
6773
+ function moveItem(items, fromIndex, toIndex) {
6774
+ if (fromIndex < 0 || fromIndex >= items.length) return items;
6775
+ if (toIndex < 0 || toIndex >= items.length) return items;
6776
+ if (fromIndex === toIndex) return items;
6777
+ const next = [...items];
6778
+ const [item] = next.splice(fromIndex, 1);
6779
+ next.splice(toIndex, 0, item);
6780
+ return next;
6781
+ }
6782
+ function getOptionDrafts(field) {
6783
+ const raw = field.options;
6784
+ if (!Array.isArray(raw)) return [];
6785
+ return raw.map((o) => {
6786
+ if (!isRecord4(o)) return null;
6787
+ const label = typeof o.label === "string" ? o.label : "";
6788
+ const valueRaw = o.value;
6789
+ const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
6790
+ return { label, value };
6791
+ }).filter((v) => v !== null);
6792
+ }
6793
+ function getImageOptionDrafts(field) {
6794
+ const raw = field.options;
6795
+ if (!Array.isArray(raw)) return [];
6796
+ return raw.map(
6797
+ (o) => {
6798
+ if (!isRecord4(o)) return null;
6799
+ const label = typeof o.label === "string" ? o.label : "";
6800
+ const valueRaw = o.value;
6801
+ const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
6802
+ const imageSrc = typeof o.imageSrc === "string" ? o.imageSrc : "";
6803
+ const alt = typeof o.alt === "string" ? o.alt : void 0;
6804
+ return __spreadValues({ label, value, imageSrc }, alt ? { alt } : {});
6303
6805
  }
6806
+ ).filter(
6807
+ (v) => v !== null
6304
6808
  );
6305
6809
  }
6306
-
6307
- // src/charts/chart-theme.json
6308
- var chart_theme_default = {
6309
- version: 1,
6310
- themeName: "customed",
6311
- theme: {
6312
- seriesCnt: "5",
6313
- backgroundColor: "rgba(0,0,0,0)",
6314
- titleColor: "#1c2024",
6315
- subtitleColor: "#8d8d8d",
6316
- textColorShow: false,
6317
- textColor: "#333",
6318
- markTextColor: "#ffffff",
6319
- color: [
6320
- "#ffe629",
6321
- "#3e63dd",
6322
- "#ec9455",
6323
- "#5bb98b",
6324
- "#cb1d63",
6325
- "#3ba272",
6326
- "#fc8452",
6327
- "#9a60b4",
6328
- "#ea7ccc"
6329
- ],
6330
- borderColor: "#8d8d8d",
6331
- borderWidth: 0,
6332
- visualMapColor: ["#bf444c", "#d88273", "#f6efa6"],
6333
- legendTextColor: "#1c2024",
6334
- kColor: "#eb5454",
6335
- kColor0: "#47b262",
6336
- kBorderColor: "#eb5454",
6337
- kBorderColor0: "#47b262",
6338
- kBorderWidth: 1,
6339
- lineWidth: 2,
6340
- symbolSize: 4,
6341
- symbol: "emptyCircle",
6342
- symbolBorderWidth: 1,
6343
- lineSmooth: false,
6344
- graphLineWidth: 1,
6345
- graphLineColor: "#aaa",
6346
- mapLabelColor: "#000",
6347
- mapLabelColorE: "rgb(100,0,0)",
6348
- mapBorderColor: "#444",
6349
- mapBorderColorE: "#444",
6350
- mapBorderWidth: 0.5,
6351
- mapBorderWidthE: 1,
6352
- mapAreaColor: "#eee",
6353
- mapAreaColorE: "rgba(255,215,0,0.8)",
6354
- axes: [
6355
- {
6356
- type: "all",
6357
- name: "\u901A\u7528\u5750\u6807\u8F74",
6358
- axisLineShow: true,
6359
- axisLineColor: "#6E7079",
6360
- axisTickShow: true,
6361
- axisTickColor: "#6E7079",
6362
- axisLabelShow: true,
6363
- axisLabelColor: "#6E7079",
6364
- splitLineShow: true,
6365
- splitLineColor: ["#E0E6F1"],
6366
- splitAreaShow: false,
6367
- splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
6368
- },
6369
- {
6370
- type: "category",
6371
- name: "\u7C7B\u76EE\u5750\u6807\u8F74",
6372
- axisLineShow: true,
6373
- axisLineColor: "#6E7079",
6374
- axisTickShow: true,
6375
- axisTickColor: "#6E7079",
6376
- axisLabelShow: true,
6810
+ function toFieldOptions(options) {
6811
+ return options.map((o) => ({ label: o.label, value: o.value }));
6812
+ }
6813
+ function toImageFieldOptions(options) {
6814
+ return options.map((o) => __spreadValues({
6815
+ label: o.label,
6816
+ value: o.value,
6817
+ imageSrc: o.imageSrc
6818
+ }, o.alt !== void 0 ? { alt: o.alt } : {}));
6819
+ }
6820
+ function DynamicFormEditorFieldEditorPanel(props) {
6821
+ const {
6822
+ field,
6823
+ fieldIndex,
6824
+ fields,
6825
+ readonly,
6826
+ fieldTypes,
6827
+ onRenameField,
6828
+ onUpdateField,
6829
+ onDeleteField,
6830
+ onMoveField,
6831
+ onDuplicateField
6832
+ } = props;
6833
+ const canMoveUp = fieldIndex > 0;
6834
+ const canMoveDown = fieldIndex >= 0 && fieldIndex < fields.length - 1;
6835
+ const placeholderValue = (0, import_react47.useMemo)(() => {
6836
+ if (!field) return "";
6837
+ return String(field.placeholder || "");
6838
+ }, [field]);
6839
+ 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: [
6840
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
6841
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC \uD3B8\uC9D1" }),
6842
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
6843
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6844
+ IconButton,
6845
+ {
6846
+ "aria-label": "\uD544\uB4DC \uC704\uB85C",
6847
+ disabled: readonly || !field || !canMoveUp,
6848
+ onClick: () => {
6849
+ onMoveField("up");
6850
+ },
6851
+ variant: "soft",
6852
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
6853
+ }
6854
+ ),
6855
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6856
+ IconButton,
6857
+ {
6858
+ "aria-label": "\uD544\uB4DC \uC544\uB798\uB85C",
6859
+ disabled: readonly || !field || !canMoveDown,
6860
+ onClick: () => {
6861
+ onMoveField("down");
6862
+ },
6863
+ variant: "soft",
6864
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
6865
+ }
6866
+ ),
6867
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6868
+ IconButton,
6869
+ {
6870
+ "aria-label": "\uD544\uB4DC \uBCF5\uC81C",
6871
+ disabled: readonly || !field,
6872
+ onClick: onDuplicateField,
6873
+ variant: "soft",
6874
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.CopyIcon, {})
6875
+ }
6876
+ ),
6877
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6878
+ IconButton,
6879
+ {
6880
+ "aria-label": "\uD544\uB4DC \uC0AD\uC81C",
6881
+ disabled: readonly || !field,
6882
+ onClick: onDeleteField,
6883
+ variant: "soft",
6884
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
6885
+ }
6886
+ )
6887
+ ] })
6888
+ ] }),
6889
+ !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: [
6890
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
6891
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
6892
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "name" }),
6893
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6894
+ TextField.Root,
6895
+ {
6896
+ disabled: readonly,
6897
+ onChange: (e) => {
6898
+ onRenameField(e.target.value);
6899
+ },
6900
+ value: field.name
6901
+ }
6902
+ )
6903
+ ] }),
6904
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
6905
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
6906
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6907
+ TextField.Root,
6908
+ {
6909
+ disabled: readonly,
6910
+ onChange: (e) => {
6911
+ onUpdateField(updateFieldCommonProps(field, { label: e.target.value }));
6912
+ },
6913
+ value: field.label
6914
+ }
6915
+ )
6916
+ ] })
6917
+ ] }),
6918
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
6919
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
6920
+ Select.Root,
6921
+ {
6922
+ disabled: readonly,
6923
+ onValueChange: (v) => {
6924
+ if (!isFieldType(v, fieldTypes)) return;
6925
+ onUpdateField(resetFieldType(field, v, fields));
6926
+ },
6927
+ value: field.type,
6928
+ children: [
6929
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
6930
+ /* @__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)) })
6931
+ ]
6932
+ }
6933
+ ),
6934
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
6935
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6936
+ Checkbox,
6937
+ {
6938
+ checked: Boolean(field.required),
6939
+ disabled: readonly,
6940
+ onCheckedChange: (checked) => {
6941
+ onUpdateField(updateFieldCommonProps(field, { required: checked }));
6942
+ }
6943
+ }
6944
+ ),
6945
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "\uD544\uC218" })
6946
+ ] })
6947
+ ] }),
6948
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
6949
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "description" }),
6950
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6951
+ TextArea,
6952
+ {
6953
+ disabled: readonly,
6954
+ onChange: (e) => {
6955
+ onUpdateField(
6956
+ updateFieldCommonProps(field, { description: e.target.value })
6957
+ );
6958
+ },
6959
+ rows: 3,
6960
+ value: field.description || ""
6961
+ }
6962
+ )
6963
+ ] }),
6964
+ 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: [
6965
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "placeholder" }),
6966
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
6967
+ TextField.Root,
6968
+ {
6969
+ disabled: readonly,
6970
+ onChange: (e) => {
6971
+ onUpdateField(updateTextPlaceholder(field, e.target.value));
6972
+ },
6973
+ value: placeholderValue
6974
+ }
6975
+ )
6976
+ ] }) : null,
6977
+ field.type === "choice" || field.type === "choices" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
6978
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "orientation" }),
6979
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
6980
+ Select.Root,
6981
+ {
6982
+ disabled: readonly,
6983
+ onValueChange: (v) => {
6984
+ const nextOrientation = v === "horizontal" ? "horizontal" : "vertical";
6985
+ onUpdateField(updateOrientation(field, nextOrientation));
6986
+ },
6987
+ value: field.orientation || "vertical",
6988
+ children: [
6989
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
6990
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
6991
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "vertical", children: "vertical" }),
6992
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "horizontal", children: "horizontal" })
6993
+ ] })
6994
+ ]
6995
+ }
6996
+ )
6997
+ ] }) : null,
6998
+ 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: [
6999
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7000
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "options" }),
7001
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
7002
+ Button,
7003
+ {
7004
+ disabled: readonly,
7005
+ onClick: () => {
7006
+ const drafts = getOptionDrafts(field);
7007
+ const nextDrafts = [
7008
+ ...drafts,
7009
+ {
7010
+ label: `\uC635\uC158 ${drafts.length + 1}`,
7011
+ value: `option${drafts.length + 1}`
7012
+ }
7013
+ ];
7014
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7015
+ },
7016
+ size: "small",
7017
+ variant: "soft",
7018
+ children: [
7019
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
7020
+ " \uCD94\uAC00"
7021
+ ]
7022
+ }
7023
+ )
7024
+ ] }),
7025
+ getOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
7026
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7027
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
7028
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7029
+ TextField.Root,
7030
+ {
7031
+ disabled: readonly,
7032
+ onChange: (e) => {
7033
+ const drafts = getOptionDrafts(field);
7034
+ const nextDrafts = drafts.map(
7035
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
7036
+ );
7037
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7038
+ },
7039
+ value: opt.label
7040
+ }
7041
+ )
7042
+ ] }),
7043
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7044
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
7045
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7046
+ TextField.Root,
7047
+ {
7048
+ disabled: readonly,
7049
+ onChange: (e) => {
7050
+ const drafts = getOptionDrafts(field);
7051
+ const nextDrafts = drafts.map(
7052
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
7053
+ );
7054
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7055
+ },
7056
+ value: opt.value
7057
+ }
7058
+ )
7059
+ ] }),
7060
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "1", children: [
7061
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7062
+ IconButton,
7063
+ {
7064
+ "aria-label": "\uC635\uC158 \uC704\uB85C",
7065
+ disabled: readonly || i === 0,
7066
+ onClick: () => {
7067
+ const drafts = getOptionDrafts(field);
7068
+ const nextDrafts = moveItem(drafts, i, i - 1);
7069
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7070
+ },
7071
+ variant: "soft",
7072
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
7073
+ }
7074
+ ),
7075
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7076
+ IconButton,
7077
+ {
7078
+ "aria-label": "\uC635\uC158 \uC544\uB798\uB85C",
7079
+ disabled: readonly || i === getOptionDrafts(field).length - 1,
7080
+ onClick: () => {
7081
+ const drafts = getOptionDrafts(field);
7082
+ const nextDrafts = moveItem(drafts, i, i + 1);
7083
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7084
+ },
7085
+ variant: "soft",
7086
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
7087
+ }
7088
+ ),
7089
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7090
+ IconButton,
7091
+ {
7092
+ "aria-label": "\uC635\uC158 \uC0AD\uC81C",
7093
+ disabled: readonly,
7094
+ onClick: () => {
7095
+ const drafts = getOptionDrafts(field);
7096
+ const nextDrafts = drafts.filter((_, idx) => idx !== i);
7097
+ onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
7098
+ },
7099
+ variant: "soft",
7100
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
7101
+ }
7102
+ )
7103
+ ] })
7104
+ ] }, `${opt.value}-${opt.label}`))
7105
+ ] }) }) : null,
7106
+ 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: [
7107
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7108
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "image options" }),
7109
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
7110
+ Button,
7111
+ {
7112
+ disabled: readonly,
7113
+ onClick: () => {
7114
+ const drafts = getImageOptionDrafts(field);
7115
+ const nextDrafts = [
7116
+ ...drafts,
7117
+ {
7118
+ label: `\uC774\uBBF8\uC9C0 ${drafts.length + 1}`,
7119
+ value: `option${drafts.length + 1}`,
7120
+ imageSrc: "https://placehold.co/300x300/png?text=new"
7121
+ }
7122
+ ];
7123
+ onUpdateField(updateImageOptions(field, toImageFieldOptions(nextDrafts)));
7124
+ },
7125
+ size: "small",
7126
+ variant: "soft",
7127
+ children: [
7128
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
7129
+ " \uCD94\uAC00"
7130
+ ]
7131
+ }
7132
+ )
7133
+ ] }),
7134
+ getImageOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7135
+ Card,
7136
+ {
7137
+ style: { padding: 10 },
7138
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7139
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
7140
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7141
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
7142
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7143
+ TextField.Root,
7144
+ {
7145
+ disabled: readonly,
7146
+ onChange: (e) => {
7147
+ const drafts = getImageOptionDrafts(field);
7148
+ const nextDrafts = drafts.map(
7149
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
7150
+ );
7151
+ onUpdateField(
7152
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7153
+ );
7154
+ },
7155
+ value: opt.label
7156
+ }
7157
+ )
7158
+ ] }),
7159
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7160
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
7161
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7162
+ TextField.Root,
7163
+ {
7164
+ disabled: readonly,
7165
+ onChange: (e) => {
7166
+ const drafts = getImageOptionDrafts(field);
7167
+ const nextDrafts = drafts.map(
7168
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
7169
+ );
7170
+ onUpdateField(
7171
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7172
+ );
7173
+ },
7174
+ value: opt.value
7175
+ }
7176
+ )
7177
+ ] })
7178
+ ] }),
7179
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7180
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageSrc" }),
7181
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7182
+ TextField.Root,
7183
+ {
7184
+ disabled: readonly,
7185
+ onChange: (e) => {
7186
+ const drafts = getImageOptionDrafts(field);
7187
+ const nextDrafts = drafts.map(
7188
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { imageSrc: e.target.value }) : d
7189
+ );
7190
+ onUpdateField(
7191
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7192
+ );
7193
+ },
7194
+ value: opt.imageSrc
7195
+ }
7196
+ )
7197
+ ] }),
7198
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
7199
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7200
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "alt" }),
7201
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7202
+ TextField.Root,
7203
+ {
7204
+ disabled: readonly,
7205
+ onChange: (e) => {
7206
+ const drafts = getImageOptionDrafts(field);
7207
+ const nextAlt = e.target.value.trim().length === 0 ? void 0 : e.target.value;
7208
+ const nextDrafts = drafts.map(
7209
+ (d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { alt: nextAlt }) : d
7210
+ );
7211
+ onUpdateField(
7212
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7213
+ );
7214
+ },
7215
+ value: opt.alt || ""
7216
+ }
7217
+ )
7218
+ ] }),
7219
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7220
+ IconButton,
7221
+ {
7222
+ "aria-label": "\uC774\uBBF8\uC9C0 \uC635\uC158 \uC0AD\uC81C",
7223
+ disabled: readonly,
7224
+ onClick: () => {
7225
+ const drafts = getImageOptionDrafts(field);
7226
+ const nextDrafts = drafts.filter((_, idx) => idx !== i);
7227
+ onUpdateField(
7228
+ updateImageOptions(field, toImageFieldOptions(nextDrafts))
7229
+ );
7230
+ },
7231
+ variant: "soft",
7232
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
7233
+ }
7234
+ )
7235
+ ] })
7236
+ ] })
7237
+ },
7238
+ `${opt.value}-${opt.label}-${opt.imageSrc}`
7239
+ )),
7240
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
7241
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7242
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridColumnsCount" }),
7243
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7244
+ TextField.Root,
7245
+ {
7246
+ disabled: readonly,
7247
+ inputMode: "numeric",
7248
+ onChange: (e) => {
7249
+ onUpdateField(
7250
+ updateImageLayout(field, {
7251
+ gridColumnsCount: parseOptionalNumber(e.target.value)
7252
+ })
7253
+ );
7254
+ },
7255
+ value: String(field.gridColumnsCount || "")
7256
+ }
7257
+ )
7258
+ ] }),
7259
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7260
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridItemHeight" }),
7261
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7262
+ TextField.Root,
7263
+ {
7264
+ disabled: readonly,
7265
+ onChange: (e) => {
7266
+ onUpdateField(
7267
+ updateImageLayout(field, { gridItemHeight: e.target.value })
7268
+ );
7269
+ },
7270
+ value: String(field.gridItemHeight || "")
7271
+ }
7272
+ )
7273
+ ] }),
7274
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7275
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridGap" }),
7276
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7277
+ TextField.Root,
7278
+ {
7279
+ disabled: readonly,
7280
+ onChange: (e) => {
7281
+ onUpdateField(updateImageLayout(field, { gridGap: e.target.value }));
7282
+ },
7283
+ value: String(field.gridGap || "")
7284
+ }
7285
+ )
7286
+ ] })
7287
+ ] }),
7288
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7289
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageFit" }),
7290
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
7291
+ Select.Root,
7292
+ {
7293
+ disabled: readonly,
7294
+ onValueChange: (v) => {
7295
+ const nextFit = v === "contain" ? "contain" : "cover";
7296
+ onUpdateField(updateImageLayout(field, { imageFit: nextFit }));
7297
+ },
7298
+ value: field.imageFit || "cover",
7299
+ children: [
7300
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
7301
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
7302
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "cover", children: "cover" }),
7303
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "contain", children: "contain" })
7304
+ ] })
7305
+ ]
7306
+ }
7307
+ )
7308
+ ] })
7309
+ ] }) }) : null,
7310
+ /* @__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: [
7311
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "validation" }),
7312
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
7313
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7314
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "min" }),
7315
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7316
+ TextField.Root,
7317
+ {
7318
+ disabled: readonly,
7319
+ inputMode: "numeric",
7320
+ onChange: (e) => {
7321
+ const current = getValidation(field);
7322
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
7323
+ min: parseOptionalNumber(e.target.value)
7324
+ }));
7325
+ onUpdateField(updateFieldValidation(field, next));
7326
+ },
7327
+ value: getValidation(field).min !== void 0 ? String(getValidation(field).min) : ""
7328
+ }
7329
+ )
7330
+ ] }),
7331
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
7332
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "max" }),
7333
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7334
+ TextField.Root,
7335
+ {
7336
+ disabled: readonly,
7337
+ inputMode: "numeric",
7338
+ onChange: (e) => {
7339
+ const current = getValidation(field);
7340
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
7341
+ max: parseOptionalNumber(e.target.value)
7342
+ }));
7343
+ onUpdateField(updateFieldValidation(field, next));
7344
+ },
7345
+ value: getValidation(field).max !== void 0 ? String(getValidation(field).max) : ""
7346
+ }
7347
+ )
7348
+ ] })
7349
+ ] }),
7350
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7351
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "pattern" }),
7352
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7353
+ TextField.Root,
7354
+ {
7355
+ disabled: readonly,
7356
+ onChange: (e) => {
7357
+ const current = getValidation(field);
7358
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), { pattern: e.target.value }));
7359
+ onUpdateField(updateFieldValidation(field, next));
7360
+ },
7361
+ value: String(getValidation(field).pattern || "")
7362
+ }
7363
+ )
7364
+ ] }),
7365
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
7366
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "message" }),
7367
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7368
+ TextField.Root,
7369
+ {
7370
+ disabled: readonly,
7371
+ onChange: (e) => {
7372
+ const current = getValidation(field);
7373
+ const next = cleanValidation(__spreadProps(__spreadValues({}, current), { message: e.target.value }));
7374
+ onUpdateField(updateFieldValidation(field, next));
7375
+ },
7376
+ value: String(getValidation(field).message || "")
7377
+ }
7378
+ )
7379
+ ] })
7380
+ ] }) })
7381
+ ] })
7382
+ ] }) });
7383
+ }
7384
+
7385
+ // src/molecules/dynamic-form-editor-field-list-panel.tsx
7386
+ var import_react48 = require("react");
7387
+ var import_themes57 = require("@radix-ui/themes");
7388
+ var import_jsx_runtime94 = require("react/jsx-runtime");
7389
+ function isFieldType2(value, types) {
7390
+ return types.some((t) => t === value);
7391
+ }
7392
+ function DynamicFormEditorFieldListPanel(props) {
7393
+ const {
7394
+ fields,
7395
+ selectedFieldName,
7396
+ readonly,
7397
+ fieldTypes,
7398
+ hasFieldError,
7399
+ onSelectFieldName,
7400
+ onAddField
7401
+ } = props;
7402
+ const isEmpty = fields.length === 0;
7403
+ const triggerPlaceholder = (0, import_react48.useMemo)(() => {
7404
+ return readonly ? "\uCD94\uAC00(\uC77D\uAE30 \uC804\uC6A9)" : "\uCD94\uAC00";
7405
+ }, [readonly]);
7406
+ 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: [
7407
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
7408
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC" }),
7409
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
7410
+ Select.Root,
7411
+ {
7412
+ disabled: readonly,
7413
+ onValueChange: (v) => {
7414
+ if (!isFieldType2(v, fieldTypes)) return;
7415
+ onAddField(v);
7416
+ },
7417
+ value: "",
7418
+ children: [
7419
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Trigger, { placeholder: triggerPlaceholder }),
7420
+ /* @__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)) })
7421
+ ]
7422
+ }
7423
+ )
7424
+ ] }),
7425
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
7426
+ isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { color: "gray", variant: "caption", children: "\uC544\uC9C1 \uD544\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) : null,
7427
+ fields.map((field) => {
7428
+ const isSelected = field.name === selectedFieldName;
7429
+ const hasError = hasFieldError(field.name);
7430
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7431
+ Card,
7432
+ {
7433
+ error: isSelected ? hasError : void 0,
7434
+ onClick: () => {
7435
+ onSelectFieldName(field.name);
7436
+ },
7437
+ style: {
7438
+ padding: 10,
7439
+ cursor: "pointer",
7440
+ opacity: readonly ? 0.8 : 1,
7441
+ border: isSelected ? "1px solid var(--accent-9)" : "1px solid transparent"
7442
+ },
7443
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes57.Box, { style: { minWidth: 0 }, children: [
7444
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7445
+ Typo,
7446
+ {
7447
+ style: {
7448
+ whiteSpace: "nowrap",
7449
+ overflow: "hidden",
7450
+ textOverflow: "ellipsis"
7451
+ },
7452
+ variant: "body",
7453
+ children: field.label
7454
+ }
7455
+ ),
7456
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(Typo, { color: "gray", variant: "caption", children: [
7457
+ field.name,
7458
+ " \xB7 ",
7459
+ field.type,
7460
+ field.required ? " \xB7 required" : ""
7461
+ ] })
7462
+ ] })
7463
+ },
7464
+ field.name
7465
+ );
7466
+ })
7467
+ ] })
7468
+ ] }) });
7469
+ }
7470
+
7471
+ // src/molecules/dynamic-form-editor-issues-panel.tsx
7472
+ var import_jsx_runtime95 = require("react/jsx-runtime");
7473
+ function DynamicFormEditorIssuesPanel(props) {
7474
+ const { issues } = props;
7475
+ if (issues.length === 0) return null;
7476
+ 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: [
7477
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Typo, { variant: "caption", children: "\uC2A4\uD0A4\uB9C8 \uC774\uC288" }),
7478
+ issues.map((i) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
7479
+ Typo,
7480
+ {
7481
+ color: i.level === "error" ? "red" : "gray",
7482
+ variant: "caption",
7483
+ children: [
7484
+ "[",
7485
+ i.level,
7486
+ "] ",
7487
+ i.message,
7488
+ i.fieldName ? ` (field: ${i.fieldName})` : ""
7489
+ ]
7490
+ },
7491
+ i.id
7492
+ ))
7493
+ ] }) });
7494
+ }
7495
+
7496
+ // src/molecules/dynamic-form-editor-preview-panel.tsx
7497
+ var import_jsx_runtime96 = require("react/jsx-runtime");
7498
+ function DynamicFormEditorPreviewPanel(props) {
7499
+ const { show, fields } = props;
7500
+ if (!show) return null;
7501
+ 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: [
7502
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Typo, { variant: "body", children: "\uD504\uB9AC\uBDF0" }),
7503
+ /* @__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" }) })
7504
+ ] }) });
7505
+ }
7506
+
7507
+ // src/molecules/dynamic-form-editor.tsx
7508
+ var import_jsx_runtime97 = require("react/jsx-runtime");
7509
+ function getInitialSchema(value, defaultValue) {
7510
+ if (value !== void 0) return normalizeSchema(value);
7511
+ return normalizeSchema(defaultValue);
7512
+ }
7513
+ function getSelectedField(schema, selectedFieldName) {
7514
+ if (!selectedFieldName) return { field: null, index: -1 };
7515
+ const index = findFieldIndexByName(schema.fields, selectedFieldName);
7516
+ if (index < 0) return { field: null, index: -1 };
7517
+ return { field: schema.fields[index], index };
7518
+ }
7519
+ function DynamicFormEditor(props) {
7520
+ const {
7521
+ value,
7522
+ defaultValue,
7523
+ onChange,
7524
+ onSave,
7525
+ onCancel,
7526
+ readonly = false,
7527
+ showPreview = false
7528
+ } = props;
7529
+ const isControlled = value !== void 0;
7530
+ const [uncontrolledSchema, setUncontrolledSchema] = (0, import_react49.useState)(
7531
+ () => getInitialSchema(void 0, defaultValue)
7532
+ );
7533
+ const effectiveSchema = (0, import_react49.useMemo)(() => {
7534
+ if (isControlled) return normalizeSchema(value);
7535
+ return uncontrolledSchema;
7536
+ }, [isControlled, uncontrolledSchema, value]);
7537
+ const [selectedFieldName, setSelectedFieldName] = (0, import_react49.useState)(() => {
7538
+ var _a, _b;
7539
+ const initialSchema = getInitialSchema(value, defaultValue);
7540
+ return (_b = (_a = initialSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null;
7541
+ });
7542
+ const selected = (0, import_react49.useMemo)(() => {
7543
+ return getSelectedField(effectiveSchema, selectedFieldName);
7544
+ }, [effectiveSchema, selectedFieldName]);
7545
+ const issues = (0, import_react49.useMemo)(() => {
7546
+ return validateDynamicFormSchema(effectiveSchema);
7547
+ }, [effectiveSchema]);
7548
+ const errorFieldNameSet = (0, import_react49.useMemo)(() => {
7549
+ const set = /* @__PURE__ */ new Set();
7550
+ issues.forEach((i) => {
7551
+ if (i.level === "error" && i.fieldName) set.add(i.fieldName);
7552
+ });
7553
+ return set;
7554
+ }, [issues]);
7555
+ const hasFieldError = (0, import_react49.useCallback)(
7556
+ (fieldName) => {
7557
+ return errorFieldNameSet.has(fieldName);
7558
+ },
7559
+ [errorFieldNameSet]
7560
+ );
7561
+ const fieldTypes = (0, import_react49.useMemo)(() => getFieldTypes(), []);
7562
+ (0, import_react49.useEffect)(() => {
7563
+ var _a, _b;
7564
+ if (selectedFieldName && selected.field) return;
7565
+ setSelectedFieldName((_b = (_a = effectiveSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null);
7566
+ }, [effectiveSchema.fields, selected.field, selectedFieldName]);
7567
+ (0, import_react49.useEffect)(() => {
7568
+ if (isControlled) return;
7569
+ setUncontrolledSchema(getInitialSchema(void 0, defaultValue));
7570
+ }, [defaultValue, isControlled]);
7571
+ const applySchema = (0, import_react49.useCallback)(
7572
+ (next) => {
7573
+ onChange == null ? void 0 : onChange(next);
7574
+ if (!isControlled) setUncontrolledSchema(next);
7575
+ },
7576
+ [isControlled, onChange]
7577
+ );
7578
+ const handleAddField = (0, import_react49.useCallback)(
7579
+ (type) => {
7580
+ if (readonly) return;
7581
+ const nextField = createDefaultField(type, effectiveSchema.fields);
7582
+ const nextFields = [...effectiveSchema.fields, nextField];
7583
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7584
+ setSelectedFieldName(nextField.name);
7585
+ },
7586
+ [applySchema, effectiveSchema, readonly]
7587
+ );
7588
+ const handleUpdateSelectedField = (0, import_react49.useCallback)(
7589
+ (nextField) => {
7590
+ if (readonly) return;
7591
+ if (!selected.field || selected.index < 0) return;
7592
+ const nextFields = effectiveSchema.fields.map(
7593
+ (f, i) => i === selected.index ? nextField : f
7594
+ );
7595
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7596
+ },
7597
+ [applySchema, effectiveSchema, readonly, selected.field, selected.index]
7598
+ );
7599
+ const handleRenameSelected = (0, import_react49.useCallback)(
7600
+ (nextName) => {
7601
+ if (readonly) return;
7602
+ const currentField = selected.field;
7603
+ if (!currentField) return;
7604
+ const others = effectiveSchema.fields.filter(
7605
+ (f) => f.name !== currentField.name
7606
+ );
7607
+ const uniqueName = createUniqueFieldName(others, nextName);
7608
+ const nextField = __spreadProps(__spreadValues({}, currentField), { name: uniqueName });
7609
+ handleUpdateSelectedField(nextField);
7610
+ setSelectedFieldName(uniqueName);
7611
+ },
7612
+ [effectiveSchema.fields, handleUpdateSelectedField, readonly, selected.field]
7613
+ );
7614
+ const handleDeleteSelected = (0, import_react49.useCallback)(() => {
7615
+ if (readonly) return;
7616
+ if (!selected.field || selected.index < 0) return;
7617
+ const nextFields = effectiveSchema.fields.filter(
7618
+ (_, i) => i !== selected.index
7619
+ );
7620
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7621
+ let nextSelected = null;
7622
+ if (nextFields.length > selected.index) nextSelected = nextFields[selected.index].name;
7623
+ else if (nextFields.length > 0) nextSelected = nextFields[0].name;
7624
+ setSelectedFieldName(nextSelected);
7625
+ }, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
7626
+ const handleMoveSelected = (0, import_react49.useCallback)(
7627
+ (direction) => {
7628
+ if (readonly) return;
7629
+ if (!selected.field || selected.index < 0) return;
7630
+ const toIndex = direction === "up" ? selected.index - 1 : selected.index + 1;
7631
+ const nextFields = moveField(
7632
+ effectiveSchema.fields,
7633
+ selected.index,
7634
+ toIndex
7635
+ );
7636
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7637
+ },
7638
+ [applySchema, effectiveSchema, readonly, selected.field, selected.index]
7639
+ );
7640
+ const handleDuplicateSelected = (0, import_react49.useCallback)(() => {
7641
+ if (readonly) return;
7642
+ if (!selected.field || selected.index < 0) return;
7643
+ const nextFields = duplicateField(
7644
+ effectiveSchema.fields,
7645
+ selected.index
7646
+ );
7647
+ applySchema(updateSchemaFields(effectiveSchema, nextFields));
7648
+ const duplicatedIndex = selected.index + 1;
7649
+ const nextSelected = nextFields.length > duplicatedIndex ? nextFields[duplicatedIndex].name : selected.field.name;
7650
+ setSelectedFieldName(nextSelected);
7651
+ }, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
7652
+ const handleSave = (0, import_react49.useCallback)(() => {
7653
+ if (!onSave) return;
7654
+ const result = onSave(effectiveSchema);
7655
+ void result;
7656
+ }, [effectiveSchema, onSave]);
7657
+ const disableSave = readonly || !onSave || hasErrorIssues(issues);
7658
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { align: "start", gap: "4", style: { width: "100%" }, children: [
7659
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7660
+ DynamicFormEditorFieldListPanel,
7661
+ {
7662
+ fieldTypes,
7663
+ fields: effectiveSchema.fields,
7664
+ hasFieldError,
7665
+ onAddField: handleAddField,
7666
+ onSelectFieldName: setSelectedFieldName,
7667
+ readonly,
7668
+ selectedFieldName
7669
+ }
7670
+ ),
7671
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", style: { flex: 1, minWidth: 520 }, children: [
7672
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7673
+ DynamicFormEditorFieldEditorPanel,
7674
+ {
7675
+ field: selected.field,
7676
+ fieldIndex: selected.index,
7677
+ fieldTypes,
7678
+ fields: effectiveSchema.fields,
7679
+ onDeleteField: handleDeleteSelected,
7680
+ onDuplicateField: handleDuplicateSelected,
7681
+ onMoveField: handleMoveSelected,
7682
+ onRenameField: handleRenameSelected,
7683
+ onUpdateField: handleUpdateSelectedField,
7684
+ readonly
7685
+ }
7686
+ ),
7687
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorIssuesPanel, { issues }),
7688
+ onSave || onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { gap: "2", justify: "end", children: [
7689
+ onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: readonly, onClick: onCancel, variant: "soft", children: "\uCDE8\uC18C" }) : null,
7690
+ onSave ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: disableSave, onClick: handleSave, children: "\uC800\uC7A5" }) : null
7691
+ ] }) : null
7692
+ ] }),
7693
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorPreviewPanel, { fields: effectiveSchema.fields, show: showPreview })
7694
+ ] });
7695
+ }
7696
+
7697
+ // src/theme/use-theme.tsx
7698
+ var import_themes58 = require("@radix-ui/themes");
7699
+
7700
+ // src/ui-props/index.ts
7701
+ var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
7702
+
7703
+ // src/charts/horizontal-bar-chart.tsx
7704
+ var import_jsx_runtime98 = require("react/jsx-runtime");
7705
+ function HorizontalBarChart(props) {
7706
+ const { total, value, backgroundColor, barColor, height } = props;
7707
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7708
+ "div",
7709
+ {
7710
+ className: "tipp_horizontal-bar-chart bar-wrapper",
7711
+ style: { height, backgroundColor },
7712
+ children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7713
+ "div",
7714
+ {
7715
+ style: {
7716
+ width: `${Math.round(value / total * 100)}%`,
7717
+ height: "100%"
7718
+ },
7719
+ children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "bar", style: { backgroundColor: barColor } })
7720
+ }
7721
+ )
7722
+ }
7723
+ );
7724
+ }
7725
+
7726
+ // src/charts/chart-theme.json
7727
+ var chart_theme_default = {
7728
+ version: 1,
7729
+ themeName: "customed",
7730
+ theme: {
7731
+ seriesCnt: "5",
7732
+ backgroundColor: "rgba(0,0,0,0)",
7733
+ titleColor: "#1c2024",
7734
+ subtitleColor: "#8d8d8d",
7735
+ textColorShow: false,
7736
+ textColor: "#333",
7737
+ markTextColor: "#ffffff",
7738
+ color: [
7739
+ "#ffe629",
7740
+ "#3e63dd",
7741
+ "#ec9455",
7742
+ "#5bb98b",
7743
+ "#cb1d63",
7744
+ "#3ba272",
7745
+ "#fc8452",
7746
+ "#9a60b4",
7747
+ "#ea7ccc"
7748
+ ],
7749
+ borderColor: "#8d8d8d",
7750
+ borderWidth: 0,
7751
+ visualMapColor: ["#bf444c", "#d88273", "#f6efa6"],
7752
+ legendTextColor: "#1c2024",
7753
+ kColor: "#eb5454",
7754
+ kColor0: "#47b262",
7755
+ kBorderColor: "#eb5454",
7756
+ kBorderColor0: "#47b262",
7757
+ kBorderWidth: 1,
7758
+ lineWidth: 2,
7759
+ symbolSize: 4,
7760
+ symbol: "emptyCircle",
7761
+ symbolBorderWidth: 1,
7762
+ lineSmooth: false,
7763
+ graphLineWidth: 1,
7764
+ graphLineColor: "#aaa",
7765
+ mapLabelColor: "#000",
7766
+ mapLabelColorE: "rgb(100,0,0)",
7767
+ mapBorderColor: "#444",
7768
+ mapBorderColorE: "#444",
7769
+ mapBorderWidth: 0.5,
7770
+ mapBorderWidthE: 1,
7771
+ mapAreaColor: "#eee",
7772
+ mapAreaColorE: "rgba(255,215,0,0.8)",
7773
+ axes: [
7774
+ {
7775
+ type: "all",
7776
+ name: "\u901A\u7528\u5750\u6807\u8F74",
7777
+ axisLineShow: true,
7778
+ axisLineColor: "#6E7079",
7779
+ axisTickShow: true,
7780
+ axisTickColor: "#6E7079",
7781
+ axisLabelShow: true,
7782
+ axisLabelColor: "#6E7079",
7783
+ splitLineShow: true,
7784
+ splitLineColor: ["#E0E6F1"],
7785
+ splitAreaShow: false,
7786
+ splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
7787
+ },
7788
+ {
7789
+ type: "category",
7790
+ name: "\u7C7B\u76EE\u5750\u6807\u8F74",
7791
+ axisLineShow: true,
7792
+ axisLineColor: "#6E7079",
7793
+ axisTickShow: true,
7794
+ axisTickColor: "#6E7079",
7795
+ axisLabelShow: true,
6377
7796
  axisLabelColor: "#6E7079",
6378
7797
  splitLineShow: false,
6379
7798
  splitLineColor: ["#E0E6F1"],
@@ -6453,23 +7872,23 @@ var EchartDefaultProps = {
6453
7872
  };
6454
7873
 
6455
7874
  // src/app/platform/userInfos/coaching-customer-info/small.tsx
6456
- var import_jsx_runtime94 = require("react/jsx-runtime");
7875
+ var import_jsx_runtime99 = require("react/jsx-runtime");
6457
7876
  function CoachingCustomerInfoSmall({
6458
7877
  customer,
6459
7878
  children,
6460
7879
  badge
6461
7880
  }) {
6462
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
7881
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
6463
7882
  import_themes22.Flex,
6464
7883
  {
6465
7884
  direction: { initial: "column", xs: "row" },
6466
7885
  gap: "3",
6467
7886
  justify: "between",
6468
7887
  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 })
7888
+ /* @__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: [
7889
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { variant: "heading3", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
7890
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", truncate: true, variant: "body", children: customer == null ? void 0 : customer.company }),
7891
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { style: { justifySelf: "end" }, children: badge })
6473
7892
  ] }) }),
6474
7893
  children
6475
7894
  ]
@@ -6480,7 +7899,7 @@ function CoachingCustomerInfoSmall({
6480
7899
  // src/app/platform/userInfos/utils.tsx
6481
7900
  var import_date_fns3 = require("date-fns");
6482
7901
  var import_react_icons10 = require("@radix-ui/react-icons");
6483
- var import_jsx_runtime95 = require("react/jsx-runtime");
7902
+ var import_jsx_runtime100 = require("react/jsx-runtime");
6484
7903
  var infoList = [
6485
7904
  { label: "\uC774\uB984", getValue: (customer) => customer == null ? void 0 : customer.username },
6486
7905
  { label: "\uC131\uBCC4", getValue: (customer) => customer == null ? void 0 : customer.gender },
@@ -6540,21 +7959,21 @@ var sessionList = [
6540
7959
  var renderItem = (args) => {
6541
7960
  const { info, data, onClickCopy } = args;
6542
7961
  const value = info.getValue(data);
6543
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
7962
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [
6544
7963
  info.render ? info.render(value) : value || "-",
6545
- info.copyable && value ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(CopyButton, { onClickCopy, value }) : null
7964
+ info.copyable && value ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(CopyButton, { onClickCopy, value }) : null
6546
7965
  ] });
6547
7966
  };
6548
7967
  var renderDataListItem = (args) => {
6549
7968
  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 }) })
7969
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes15.DataList.Item, { children: [
7970
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Label, { children: info.label }),
7971
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Value, { children: renderItem({ info, data, onClickCopy }) })
6553
7972
  ] }, info.label);
6554
7973
  };
6555
7974
  function CopyButton(props) {
6556
7975
  const { value, onClickCopy } = props;
6557
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
7976
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
6558
7977
  Button,
6559
7978
  {
6560
7979
  color: "gray",
@@ -6563,13 +7982,13 @@ function CopyButton(props) {
6563
7982
  },
6564
7983
  style: { marginLeft: "0", marginTop: "0" },
6565
7984
  variant: "transparent",
6566
- children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_react_icons10.CopyIcon, {})
7985
+ children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_react_icons10.CopyIcon, {})
6567
7986
  }
6568
7987
  );
6569
7988
  }
6570
7989
 
6571
7990
  // src/app/platform/userInfos/coaching-customer-info/medium.tsx
6572
- var import_jsx_runtime96 = require("react/jsx-runtime");
7991
+ var import_jsx_runtime101 = require("react/jsx-runtime");
6573
7992
  function CoachingCustomerInfoMedium({
6574
7993
  customer,
6575
7994
  session,
@@ -6577,28 +7996,28 @@ function CoachingCustomerInfoMedium({
6577
7996
  badge,
6578
7997
  onClickCopy
6579
7998
  }) {
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" }),
7999
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8000
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes6.Box, { children: [
8001
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
8002
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
6584
8003
  badge
6585
8004
  ] }),
6586
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
8005
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
6587
8006
  ] }),
6588
8007
  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(
8008
+ /* @__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
8009
  (el) => renderDataListItem({
6591
8010
  info: el,
6592
8011
  data: session,
6593
8012
  onClickCopy
6594
8013
  })
6595
8014
  ) }) }),
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" })
8015
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", children: [
8016
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading5", children: "\uACE0\uAC1D \uC815\uBCF4" }),
8017
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes39.Separator, { size: "4" })
6599
8018
  ] }),
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({
8019
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes22.Flex, { direction: "column", gap: "4", children: infoList.map((el) => {
8020
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Typo, { children: renderItem({
6602
8021
  info: el,
6603
8022
  data: customer,
6604
8023
  onClickCopy
@@ -6608,7 +8027,7 @@ function CoachingCustomerInfoMedium({
6608
8027
  }
6609
8028
 
6610
8029
  // src/app/platform/userInfos/coaching-customer-info/large.tsx
6611
- var import_jsx_runtime97 = require("react/jsx-runtime");
8030
+ var import_jsx_runtime102 = require("react/jsx-runtime");
6612
8031
  function CoachingCustomerInfoLarge({
6613
8032
  customer,
6614
8033
  session,
@@ -6616,24 +8035,24 @@ function CoachingCustomerInfoLarge({
6616
8035
  badge,
6617
8036
  onClickCopy
6618
8037
  }) {
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" }),
8038
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8039
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes6.Box, { children: [
8040
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
8041
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
6623
8042
  badge
6624
8043
  ] }),
6625
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
8044
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
6626
8045
  ] }),
6627
8046
  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(
8047
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
6629
8048
  (el) => renderDataListItem({
6630
8049
  info: el,
6631
8050
  data: session,
6632
8051
  onClickCopy
6633
8052
  })
6634
8053
  ) }) }),
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(
8054
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes39.Separator, { size: "4" }),
8055
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: infoList.map(
6637
8056
  (info) => renderDataListItem({
6638
8057
  info,
6639
8058
  data: customer,
@@ -6644,19 +8063,19 @@ function CoachingCustomerInfoLarge({
6644
8063
  }
6645
8064
 
6646
8065
  // src/app/platform/userInfos/coaching-customer-info/index.tsx
6647
- var import_jsx_runtime98 = require("react/jsx-runtime");
8066
+ var import_jsx_runtime103 = require("react/jsx-runtime");
6648
8067
  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)) })
8068
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment, { children: [
8069
+ /* @__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)) }),
8070
+ /* @__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)) }),
8071
+ /* @__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
8072
  ] });
6654
8073
  }
6655
8074
 
6656
8075
  // src/app/platform/goal-manage-card-read.tsx
6657
- var import_react47 = require("react");
8076
+ var import_react50 = require("react");
6658
8077
  var import_date_fns4 = require("date-fns");
6659
- var import_jsx_runtime99 = require("react/jsx-runtime");
8078
+ var import_jsx_runtime104 = require("react/jsx-runtime");
6660
8079
  function GoalManageCardRead(props) {
6661
8080
  const {
6662
8081
  title,
@@ -6670,12 +8089,12 @@ function GoalManageCardRead(props) {
6670
8089
  onClickIncomplete,
6671
8090
  onClickComplete
6672
8091
  } = props;
6673
- const [open, setOpen] = (0, import_react47.useState)(Boolean(defaultOpen));
6674
- const onClickOpen = (0, import_react47.useCallback)(() => {
8092
+ const [open, setOpen] = (0, import_react50.useState)(Boolean(defaultOpen));
8093
+ const onClickOpen = (0, import_react50.useCallback)(() => {
6675
8094
  setOpen((p) => !p);
6676
8095
  }, []);
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)(() => {
8096
+ const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronUpIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronDownIcon, {});
8097
+ const badgeMeta = (0, import_react50.useMemo)(() => {
6679
8098
  if (!completed && dueDate) {
6680
8099
  if (dueDate >= (0, import_date_fns4.startOfDay)(/* @__PURE__ */ new Date()))
6681
8100
  return {
@@ -6686,41 +8105,41 @@ function GoalManageCardRead(props) {
6686
8105
  }
6687
8106
  return null;
6688
8107
  }, [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 });
8108
+ const renderSubTitle = (0, import_react50.useCallback)((subTitle) => {
8109
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { mb: "2", variant: "heading5", children: subTitle });
6691
8110
  }, []);
6692
- const renderSubContent = (0, import_react47.useCallback)((content) => {
6693
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { as: "p", color: "gray", children: content });
8111
+ const renderSubContent = (0, import_react50.useCallback)((content) => {
8112
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { as: "p", color: "gray", children: content });
6694
8113
  }, []);
6695
- const renderCompleteButton = (0, import_react47.useCallback)(() => {
8114
+ const renderCompleteButton = (0, import_react50.useCallback)(() => {
6696
8115
  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" });
8116
+ 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
8117
  }
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, {}),
8118
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
8119
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { size: "small", children: [
8120
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.RocketIcon, {}),
6702
8121
  "\uB2EC\uC131\uD558\uAE30"
6703
8122
  ] }) }),
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" }) })
8123
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
8124
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
8125
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
8126
+ /* @__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" }) }),
8127
+ /* @__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
8128
  ] })
6710
8129
  ] })
6711
8130
  ] });
6712
8131
  }, [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 })
8132
+ 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: [
8133
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(IconButton, { onClick: onClickOpen, variant: "ghost", children: icon }),
8134
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { variant: "heading4", children: title }),
8135
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gridColumnStart: "2", justify: "between", mt: "2", children: [
8136
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", children: [
8137
+ badgeMeta ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Badge, __spreadValues({}, badgeMeta)) : null,
8138
+ /* @__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
8139
  ] }),
6721
8140
  renderCompleteButton()
6722
8141
  ] }),
6723
- open ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
8142
+ open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
6724
8143
  import_themes39.Separator,
6725
8144
  {
6726
8145
  mb: "4",
@@ -6729,37 +8148,37 @@ function GoalManageCardRead(props) {
6729
8148
  style: { gridColumnStart: "span 2" }
6730
8149
  }
6731
8150
  ) : 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: [
8151
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes6.Box, { gridColumnStart: "2", p: "0", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Collapse, { open, children: [
8152
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8153
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
6735
8154
  renderSubTitle(
6736
8155
  "\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
8156
  ),
6738
8157
  renderSubContent(expectedEffect)
6739
8158
  ] }),
6740
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes6.Box, { children: [
8159
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
6741
8160
  renderSubTitle(
6742
8161
  "\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
8162
  ),
6744
8163
  renderSubContent(huddle)
6745
8164
  ] })
6746
8165
  ] }),
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, {}),
8166
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", mt: "3", children: [
8167
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
8168
+ /* @__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: [
8169
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.TrashIcon, {}),
6751
8170
  "\uC0AD\uC81C\uD558\uAE30"
6752
8171
  ] }) }),
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" }) })
8172
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
8173
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
8174
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
8175
+ /* @__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" }) }),
8176
+ /* @__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
8177
  ] })
6759
8178
  ] })
6760
8179
  ] }),
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, {}),
8180
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { onClick: onClickEdit, size: "small", variant: "surface", children: [
8181
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.Pencil1Icon, {}),
6763
8182
  "\uC218\uC815\uD558\uAE30"
6764
8183
  ] })
6765
8184
  ] })
@@ -6768,9 +8187,9 @@ function GoalManageCardRead(props) {
6768
8187
  }
6769
8188
 
6770
8189
  // src/app/platform/goal-manage-card-edit.tsx
6771
- var import_react48 = require("react");
8190
+ var import_react51 = require("react");
6772
8191
  var import_date_fns5 = require("date-fns");
6773
- var import_jsx_runtime100 = require("react/jsx-runtime");
8192
+ var import_jsx_runtime105 = require("react/jsx-runtime");
6774
8193
  var initialValues = {
6775
8194
  goal: "",
6776
8195
  effect: "",
@@ -6781,8 +8200,8 @@ var dummyFn = () => {
6781
8200
  };
6782
8201
  function GoalManageCardEdit(props) {
6783
8202
  const { defaultValues, errors } = props;
6784
- const [values, setValues] = (0, import_react48.useState)(defaultValues || initialValues);
6785
- const onChange = (0, import_react48.useCallback)(
8203
+ const [values, setValues] = (0, import_react51.useState)(defaultValues || initialValues);
8204
+ const onChange = (0, import_react51.useCallback)(
6786
8205
  (v) => {
6787
8206
  var _a;
6788
8207
  setValues((prev) => __spreadValues(__spreadValues({}, prev), v));
@@ -6790,20 +8209,20 @@ function GoalManageCardEdit(props) {
6790
8209
  },
6791
8210
  [props]
6792
8211
  );
6793
- const onClickInit = (0, import_react48.useCallback)(() => {
8212
+ const onClickInit = (0, import_react51.useCallback)(() => {
6794
8213
  var _a;
6795
8214
  setValues(initialValues);
6796
8215
  (_a = props.onChange) == null ? void 0 : _a.call(props, defaultValues || initialValues);
6797
8216
  }, [defaultValues, props]);
6798
- const onClickSubmit = (0, import_react48.useCallback)(() => {
8217
+ const onClickSubmit = (0, import_react51.useCallback)(() => {
6799
8218
  var _a;
6800
8219
  (_a = props.onSubmit) == null ? void 0 : _a.call(props, values);
6801
8220
  }, [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)(
8221
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Card, { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Root, { onSubmit: dummyFn, children: [
8222
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8223
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "title", children: [
8224
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uC774\uBC88 \uCF54\uCE6D\uC758 \uBAA9\uD45C\uB294 \uC544\uB798\uC640 \uAC19\uC2B5\uB2C8\uB2E4" }),
8225
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6807
8226
  TextField.Root,
6808
8227
  {
6809
8228
  error: Boolean(errors == null ? void 0 : errors.goal),
@@ -6814,11 +8233,11 @@ function GoalManageCardEdit(props) {
6814
8233
  value: values.goal
6815
8234
  }
6816
8235
  ),
6817
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.goal), children: errors == null ? void 0 : errors.goal })
8236
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.goal), children: errors == null ? void 0 : errors.goal })
6818
8237
  ] }),
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)(
8238
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "effect", children: [
8239
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uAE30\uB300\uD6A8\uACFC" }),
8240
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6822
8241
  TextArea,
6823
8242
  {
6824
8243
  error: Boolean(errors == null ? void 0 : errors.effect),
@@ -6830,11 +8249,11 @@ function GoalManageCardEdit(props) {
6830
8249
  value: values.effect
6831
8250
  }
6832
8251
  ),
6833
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.effect), children: errors == null ? void 0 : errors.effect })
8252
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.effect), children: errors == null ? void 0 : errors.effect })
6834
8253
  ] }),
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)(
8254
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "huddle", children: [
8255
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBC29\uD574\uC694\uC18C" }),
8256
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6838
8257
  TextArea,
6839
8258
  {
6840
8259
  error: Boolean(errors == null ? void 0 : errors.huddle),
@@ -6848,11 +8267,11 @@ function GoalManageCardEdit(props) {
6848
8267
  value: values.huddle
6849
8268
  }
6850
8269
  ),
6851
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.huddle), children: errors == null ? void 0 : errors.huddle })
8270
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.huddle), children: errors == null ? void 0 : errors.huddle })
6852
8271
  ] }),
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)(
8272
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "dueDate", children: [
8273
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBAA9\uD45C \uB2EC\uC131 \uAE30\uD55C\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4" }),
8274
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6856
8275
  DatePickerButton,
6857
8276
  {
6858
8277
  format: (v) => (0, import_date_fns5.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C"),
@@ -6863,11 +8282,11 @@ function GoalManageCardEdit(props) {
6863
8282
  selected: values.dueDate
6864
8283
  }
6865
8284
  ),
6866
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.dueDate), children: errors == null ? void 0 : errors.dueDate })
8285
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.dueDate), children: errors == null ? void 0 : errors.dueDate })
6867
8286
  ] })
6868
8287
  ] }),
6869
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
6870
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8288
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
8289
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6871
8290
  Button,
6872
8291
  {
6873
8292
  color: "gray",
@@ -6878,18 +8297,18 @@ function GoalManageCardEdit(props) {
6878
8297
  children: "\uCD08\uAE30\uD654\uD558\uAE30"
6879
8298
  }
6880
8299
  ),
6881
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Button, { onClick: onClickSubmit, size: "small", type: "button", children: "\uC800\uC7A5\uD558\uAE30" })
8300
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { onClick: onClickSubmit, size: "small", type: "button", children: "\uC800\uC7A5\uD558\uAE30" })
6882
8301
  ] })
6883
8302
  ] }) });
6884
8303
  }
6885
8304
 
6886
8305
  // src/app/platform/session-card.tsx
6887
- var import_react51 = require("react");
8306
+ var import_react54 = require("react");
6888
8307
  var import_date_fns6 = require("date-fns");
6889
8308
 
6890
8309
  // src/app/platform/edit-coaching-time.tsx
6891
- var import_react49 = require("react");
6892
- var import_jsx_runtime101 = require("react/jsx-runtime");
8310
+ var import_react52 = require("react");
8311
+ var import_jsx_runtime106 = require("react/jsx-runtime");
6893
8312
  var getValueFromDefaultValue = (args) => {
6894
8313
  return {
6895
8314
  startTime: args.startAt ? getTimeOption(args.startAt) : "00:00",
@@ -6909,14 +8328,14 @@ var getDateFromValue = (date, time) => {
6909
8328
  };
6910
8329
  function EditCoachingTime(props) {
6911
8330
  const { defaultEndAt, defaultStartAt, onClickCancel } = props;
6912
- const [values, setValues] = (0, import_react49.useState)(() => {
8331
+ const [values, setValues] = (0, import_react52.useState)(() => {
6913
8332
  return getValueFromDefaultValue({
6914
8333
  startAt: defaultStartAt,
6915
8334
  endAt: defaultEndAt
6916
8335
  });
6917
8336
  });
6918
- const [timeError, setTimeError] = (0, import_react49.useState)("");
6919
- const checkTimeError = (0, import_react49.useCallback)(
8337
+ const [timeError, setTimeError] = (0, import_react52.useState)("");
8338
+ const checkTimeError = (0, import_react52.useCallback)(
6920
8339
  (startTime, endTime) => {
6921
8340
  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
8341
  if (error) {
@@ -6927,7 +8346,7 @@ function EditCoachingTime(props) {
6927
8346
  },
6928
8347
  []
6929
8348
  );
6930
- const onChangeStartTime = (0, import_react49.useCallback)(
8349
+ const onChangeStartTime = (0, import_react52.useCallback)(
6931
8350
  (v) => {
6932
8351
  checkTimeError(v, values.endTime);
6933
8352
  setValues((prev) => __spreadProps(__spreadValues({}, prev), {
@@ -6936,7 +8355,7 @@ function EditCoachingTime(props) {
6936
8355
  },
6937
8356
  [checkTimeError, values.endTime]
6938
8357
  );
6939
- const onChangeEndTime = (0, import_react49.useCallback)(
8358
+ const onChangeEndTime = (0, import_react52.useCallback)(
6940
8359
  (v) => {
6941
8360
  checkTimeError(values.startTime, v);
6942
8361
  setValues((prev) => __spreadProps(__spreadValues({}, prev), {
@@ -6945,12 +8364,12 @@ function EditCoachingTime(props) {
6945
8364
  },
6946
8365
  [checkTimeError, values.startTime]
6947
8366
  );
6948
- const onChangeDate = (0, import_react49.useCallback)((date) => {
8367
+ const onChangeDate = (0, import_react52.useCallback)((date) => {
6949
8368
  date && setValues((prev) => __spreadProps(__spreadValues({}, prev), {
6950
8369
  date
6951
8370
  }));
6952
8371
  }, []);
6953
- const onClickSave = (0, import_react49.useCallback)(() => {
8372
+ const onClickSave = (0, import_react52.useCallback)(() => {
6954
8373
  if (checkTimeError(values.startTime, values.endTime)) {
6955
8374
  const startAt = getDateFromValue(values.date, values.startTime);
6956
8375
  const endAt = getDateFromValue(values.date, values.endTime);
@@ -6959,10 +8378,10 @@ function EditCoachingTime(props) {
6959
8378
  import_react_toastify2.toast.error("\uC785\uB825 \uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");
6960
8379
  }
6961
8380
  }, [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)(
8381
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { width: { initial: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Root, { children: [
8382
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Field, { name: "date", children: [
8383
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uB0A0\uC9DC" }),
8384
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6966
8385
  DatePickerButton,
6967
8386
  {
6968
8387
  maxDate: /* @__PURE__ */ new Date(),
@@ -6972,7 +8391,7 @@ function EditCoachingTime(props) {
6972
8391
  }
6973
8392
  )
6974
8393
  ] }),
6975
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
8394
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
6976
8395
  import_themes23.Grid,
6977
8396
  {
6978
8397
  align: "center",
@@ -6987,10 +8406,10 @@ function EditCoachingTime(props) {
6987
8406
  mt: "5",
6988
8407
  width: "100%",
6989
8408
  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)(
8409
+ /* @__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" }) }),
8410
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", {}),
8411
+ /* @__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" }) }),
8412
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6994
8413
  TimeSelect,
6995
8414
  {
6996
8415
  onValueChange: onChangeStartTime,
@@ -6998,8 +8417,8 @@ function EditCoachingTime(props) {
6998
8417
  value: values.startTime
6999
8418
  }
7000
8419
  ),
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)(
8420
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes39.Separator, {}) }),
8421
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
7003
8422
  TimeSelect,
7004
8423
  {
7005
8424
  onValueChange: onChangeEndTime,
@@ -7007,36 +8426,36 @@ function EditCoachingTime(props) {
7007
8426
  value: values.endTime
7008
8427
  }
7009
8428
  ),
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 }) })
8429
+ /* @__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
8430
  ]
7012
8431
  }
7013
8432
  ),
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" }) })
8433
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", children: [
8434
+ /* @__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" }) }),
8435
+ /* @__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
8436
  ] })
7018
8437
  ] }) });
7019
8438
  }
7020
8439
 
7021
8440
  // src/app/platform/edit-service-type.tsx
7022
- var import_react50 = require("react");
8441
+ var import_react53 = require("react");
7023
8442
 
7024
8443
  // src/app/platform/on-offline-radio-card.tsx
7025
8444
  var import_react_icons11 = require("@radix-ui/react-icons");
7026
- var import_jsx_runtime102 = require("react/jsx-runtime");
8445
+ var import_jsx_runtime107 = require("react/jsx-runtime");
7027
8446
  var SERVICE_TYPE = {
7028
8447
  onlineCoaching: "onlineCoaching",
7029
8448
  offlineCoaching: "offlineCoaching"
7030
8449
  };
7031
8450
  var breakpoint = "sm";
7032
8451
  function HideSmallBox(props) {
7033
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes6.Box, { display: { initial: "none", [breakpoint]: "block" }, children: props.children });
8452
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_themes6.Box, { display: { initial: "none", [breakpoint]: "block" }, children: props.children });
7034
8453
  }
7035
8454
  function OnOfflineRadioCard(props) {
7036
8455
  const Wrapper = props.response ? HideSmallBox : (p) => p.children;
7037
8456
  const columns = props.response ? { initial: "2", [breakpoint]: "1" } : "1";
7038
8457
  const justify = props.response ? { initial: "center", [breakpoint]: "between" } : "between";
7039
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
8458
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
7040
8459
  RadioButtonCard.Root,
7041
8460
  __spreadProps(__spreadValues({
7042
8461
  RadioWrapper: Wrapper,
@@ -7045,13 +8464,13 @@ function OnOfflineRadioCard(props) {
7045
8464
  justify
7046
8465
  }, props), {
7047
8466
  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" })
8467
+ /* @__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: [
8468
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.GlobeIcon, {}) }),
8469
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC628\uB77C\uC778" })
7051
8470
  ] }) }),
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" })
8471
+ /* @__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: [
8472
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.BackpackIcon, {}) }),
8473
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC624\uD504\uB77C\uC778" })
7055
8474
  ] }) })
7056
8475
  ]
7057
8476
  })
@@ -7059,18 +8478,18 @@ function OnOfflineRadioCard(props) {
7059
8478
  }
7060
8479
 
7061
8480
  // src/app/platform/edit-service-type.tsx
7062
- var import_jsx_runtime103 = require("react/jsx-runtime");
8481
+ var import_jsx_runtime108 = require("react/jsx-runtime");
7063
8482
  function EditServiceType(props) {
7064
8483
  const { defaultServiceType, onClickCancel } = props;
7065
- const [sessionType, setSessionType] = (0, import_react50.useState)(
8484
+ const [sessionType, setSessionType] = (0, import_react53.useState)(
7066
8485
  defaultServiceType
7067
8486
  );
7068
- const onClickSave = (0, import_react50.useCallback)(() => {
8487
+ const onClickSave = (0, import_react53.useCallback)(() => {
7069
8488
  var _a;
7070
8489
  (_a = props.onClickSave) == null ? void 0 : _a.call(props, sessionType);
7071
8490
  }, [props, sessionType]);
7072
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_themes6.Box, { children: [
7073
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8491
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes6.Box, { children: [
8492
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
7074
8493
  Typo,
7075
8494
  {
7076
8495
  as: "p",
@@ -7080,16 +8499,16 @@ function EditServiceType(props) {
7080
8499
  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
8500
  }
7082
8501
  ),
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" }) })
8502
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(OnOfflineRadioCard, { onValueChange: setSessionType, value: sessionType }),
8503
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: { initial: "6", xs: "3" }, children: [
8504
+ /* @__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" }) }),
8505
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Button, { onClick: onClickSave, children: "\uC800\uC7A5\uD558\uAE30" }) })
7087
8506
  ] })
7088
8507
  ] });
7089
8508
  }
7090
8509
 
7091
8510
  // src/app/platform/session-card.tsx
7092
- var import_jsx_runtime104 = require("react/jsx-runtime");
8511
+ var import_jsx_runtime109 = require("react/jsx-runtime");
7093
8512
  var preventDefault4 = (e) => {
7094
8513
  e.preventDefault();
7095
8514
  };
@@ -7119,33 +8538,33 @@ function SessionCard(props) {
7119
8538
  "endAt",
7120
8539
  "sessionType"
7121
8540
  ]);
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, {}) });
8541
+ const renderEditButton = (0, import_react54.useCallback)(() => {
8542
+ 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
8543
  }, []);
7125
- const sessionTimeStr = (0, import_react51.useMemo)(() => {
8544
+ const sessionTimeStr = (0, import_react54.useMemo)(() => {
7126
8545
  if (!startAt || !endAt) return "\uC54C \uC218 \uC5C6\uC74C";
7127
8546
  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
8547
  }, [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` }),
8548
+ 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: [
8549
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { align: "center", width: "100%", children: [
8550
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: `${userName || "\uC54C \uC218 \uC5C6\uC74C"}\uB2D8 ${sessionNumber || "-"}\uD68C\uCC28` }),
7132
8551
  TitleExtra,
7133
- error ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(BulletText, { as: "p", color: "red", variant: "caption", children: error }) : null
8552
+ error ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(BulletText, { as: "p", color: "red", variant: "caption", children: error }) : null
7134
8553
  ] }),
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: [
8554
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Root, { children: [
8555
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
8556
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uCF54\uCE6D \uC77C\uC2DC" }),
8557
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
7139
8558
  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)(
8559
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
8560
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
8561
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7143
8562
  Dialog.Content,
7144
8563
  {
7145
8564
  onOpenAutoFocus: preventDefault4,
7146
8565
  style: { overflow: "visible" },
7147
8566
  title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC77C\uC2DC \uBCC0\uACBD\uD558\uAE30`,
7148
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8567
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7149
8568
  EditCoachingTime,
7150
8569
  {
7151
8570
  defaultEndAt: endAt,
@@ -7158,18 +8577,18 @@ function SessionCard(props) {
7158
8577
  ] }) : null
7159
8578
  ] })
7160
8579
  ] }),
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: [
8580
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "2" }, style: { gap: "inherit" }, children: [
8581
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
8582
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uC138\uC158 \uCC38\uC5EC \uBC29\uC2DD" }),
8583
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
7165
8584
  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)(
8585
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
8586
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
8587
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7169
8588
  Dialog.Content,
7170
8589
  {
7171
8590
  title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC9C4\uD589 \uBC29\uC2DD \uBCC0\uACBD\uD558\uAE30`,
7172
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8591
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7173
8592
  EditServiceType,
7174
8593
  {
7175
8594
  defaultServiceType: sessionType,
@@ -7181,33 +8600,33 @@ function SessionCard(props) {
7181
8600
  ] }) : null
7182
8601
  ] })
7183
8602
  ] }),
7184
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes22.Flex, { gap: "2", justify: "end", children: ExtraButtons })
8603
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes22.Flex, { gap: "2", justify: "end", children: ExtraButtons })
7185
8604
  ] })
7186
8605
  ] })
7187
8606
  ] }) }));
7188
8607
  }
7189
8608
 
7190
8609
  // src/app/platform/coach-question-list.tsx
7191
- var import_jsx_runtime105 = require("react/jsx-runtime");
8610
+ var import_jsx_runtime110 = require("react/jsx-runtime");
7192
8611
  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." }) })
8612
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes6.Box, { children: [
8613
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Heading2, { mb: "2", variant: "heading5", children: question }),
8614
+ /* @__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
8615
  ] }, question);
7197
8616
  }
7198
8617
  function CoachQuestionList({
7199
8618
  questions
7200
8619
  }) {
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);
8620
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes22.Flex, { direction: "column", gap: "8", children: questions.map((question) => {
8621
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(QuestionItem, __spreadValues({}, question), question.question);
7203
8622
  }) });
7204
8623
  }
7205
8624
 
7206
8625
  // src/app/platform/reservation-card.tsx
7207
- var import_react52 = require("react");
8626
+ var import_react55 = require("react");
7208
8627
  var import_date_fns7 = require("date-fns");
7209
8628
  var import_locale2 = require("date-fns/locale");
7210
- var import_jsx_runtime106 = require("react/jsx-runtime");
8629
+ var import_jsx_runtime111 = require("react/jsx-runtime");
7211
8630
  function ReservationCard(props) {
7212
8631
  const {
7213
8632
  sessionNumber,
@@ -7222,29 +8641,29 @@ function ReservationCard(props) {
7222
8641
  onClickCancel,
7223
8642
  onClickCompleteSession
7224
8643
  } = props;
7225
- const [editValues, setEditValues] = (0, import_react52.useState)({
8644
+ const [editValues, setEditValues] = (0, import_react55.useState)({
7226
8645
  date: props.defaultTime,
7227
8646
  type: props.defaultType
7228
8647
  });
7229
8648
  const date = readonly ? defaultTime : editValues.date;
7230
8649
  const type = readonly ? defaultType : editValues.type;
7231
- const onClickSave = (0, import_react52.useCallback)(() => {
8650
+ const onClickSave = (0, import_react55.useCallback)(() => {
7232
8651
  var _a;
7233
8652
  (_a = props.onClickSave) == null ? void 0 : _a.call(props, editValues);
7234
8653
  }, [editValues, props]);
7235
- const onClickReset = (0, import_react52.useCallback)(() => {
8654
+ const onClickReset = (0, import_react55.useCallback)(() => {
7236
8655
  setEditValues({
7237
8656
  date: defaultTime,
7238
8657
  type: defaultType
7239
8658
  });
7240
8659
  }, [defaultTime, defaultType]);
7241
- const ActionButtons = (0, import_react52.useMemo)(() => {
8660
+ const ActionButtons = (0, import_react55.useMemo)(() => {
7242
8661
  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" });
8662
+ 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
8663
  }
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, {}) });
8664
+ 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
8665
  }, [defaultTime, defaultType, onClickCancel, onClickReserve, readonly]);
7247
- const onChangeDate = (0, import_react52.useCallback)((newDate) => {
8666
+ const onChangeDate = (0, import_react55.useCallback)((newDate) => {
7248
8667
  if (!newDate) return;
7249
8668
  setEditValues((prev) => {
7250
8669
  return __spreadProps(__spreadValues({}, prev), {
@@ -7252,17 +8671,17 @@ function ReservationCard(props) {
7252
8671
  });
7253
8672
  });
7254
8673
  }, []);
7255
- const onChangeType = (0, import_react52.useCallback)((newType) => {
8674
+ const onChangeType = (0, import_react55.useCallback)((newType) => {
7256
8675
  setEditValues((prev) => {
7257
8676
  return __spreadProps(__spreadValues({}, prev), {
7258
8677
  type: newType
7259
8678
  });
7260
8679
  });
7261
8680
  }, []);
7262
- const formatDate = (0, import_react52.useCallback)((v) => {
8681
+ const formatDate = (0, import_react55.useCallback)((v) => {
7263
8682
  return (0, import_date_fns7.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C(EEE) aa h:mm", { locale: import_locale2.ko });
7264
8683
  }, []);
7265
- (0, import_react52.useEffect)(() => {
8684
+ (0, import_react55.useEffect)(() => {
7266
8685
  if (!minTime || !editValues.date || readonly) return;
7267
8686
  if (editValues.date < minTime) {
7268
8687
  import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
@@ -7273,7 +8692,7 @@ function ReservationCard(props) {
7273
8692
  });
7274
8693
  }
7275
8694
  }, [editValues, minTime, readonly]);
7276
- (0, import_react52.useEffect)(() => {
8695
+ (0, import_react55.useEffect)(() => {
7277
8696
  if (!maxTime || !editValues.date || readonly) return;
7278
8697
  if (editValues.date > maxTime) {
7279
8698
  import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
@@ -7284,39 +8703,39 @@ function ReservationCard(props) {
7284
8703
  });
7285
8704
  }
7286
8705
  }, [editValues, maxTime, readonly]);
7287
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8706
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
7288
8707
  Card,
7289
8708
  {
7290
8709
  error: Boolean(error),
7291
8710
  size: "3",
7292
8711
  style: { overflow: "visible", contain: "initial" },
7293
8712
  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)(
8713
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { gap: "3", justify: "between", mb: "5", children: [
8714
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
7296
8715
  import_themes23.Grid,
7297
8716
  {
7298
8717
  align: "center",
7299
8718
  columns: { initial: "1", xs: "auto 1fr" },
7300
8719
  gapY: "2",
7301
8720
  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: [
8721
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", children: [
8722
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Heading2, { variant: "heading4", children: [
7304
8723
  customerName || "-",
7305
8724
  "\uB2D8 ",
7306
8725
  sessionNumber || "-",
7307
8726
  "\uD68C\uCC28 \uC138\uC158"
7308
8727
  ] }),
7309
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Badge, { ml: "2", children: "\uB2E4\uC74C \uC138\uC158" })
8728
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Badge, { ml: "2", children: "\uB2E4\uC74C \uC138\uC158" })
7310
8729
  ] }),
7311
- error ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(BulletText, { color: "red", variant: "caption", children: error }) : null
8730
+ error ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(BulletText, { color: "red", variant: "caption", children: error }) : null
7312
8731
  ]
7313
8732
  }
7314
8733
  ),
7315
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes22.Flex, { children: ActionButtons })
8734
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes22.Flex, { children: ActionButtons })
7316
8735
  ] }),
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)(
8736
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
8737
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC138\uC158 \uC77C\uC790\uC640 \uC2DC\uAC01" }),
8738
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7320
8739
  DatePickerButton,
7321
8740
  {
7322
8741
  disabled: readonly,
@@ -7330,8 +8749,8 @@ function ReservationCard(props) {
7330
8749
  size: "large"
7331
8750
  }
7332
8751
  ),
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)(
8752
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC628/\uC624\uD504\uB77C\uC778 \uC9C4\uD589 \uC5EC\uBD80" }),
8753
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7335
8754
  OnOfflineRadioCard,
7336
8755
  {
7337
8756
  disabled: readonly,
@@ -7340,8 +8759,8 @@ function ReservationCard(props) {
7340
8759
  value: type
7341
8760
  }
7342
8761
  ),
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)(
8762
+ readonly ? null : /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", children: [
8763
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7345
8764
  Button,
7346
8765
  {
7347
8766
  color: "gray",
@@ -7351,10 +8770,10 @@ function ReservationCard(props) {
7351
8770
  children: "\uCD08\uAE30\uD654\uD558\uAE30"
7352
8771
  }
7353
8772
  ),
7354
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickSave, size: "small", children: "\uC800\uC7A5\uD558\uAE30" })
8773
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { onClick: onClickSave, size: "small", children: "\uC800\uC7A5\uD558\uAE30" })
7355
8774
  ] })
7356
8775
  ] }) }),
7357
- readonly ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes25.Inset, { clip: "border-box", side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8776
+ readonly ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes25.Inset, { clip: "border-box", side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7358
8777
  import_themes6.Box,
7359
8778
  {
7360
8779
  mt: "5",
@@ -7362,14 +8781,14 @@ function ReservationCard(props) {
7362
8781
  py: "4",
7363
8782
  style: { backgroundColor: "var(--accent-a3)" },
7364
8783
  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: [
8784
+ children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "4", justify: "center", children: [
8785
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Typo, { children: [
7367
8786
  sessionNumber || "-",
7368
8787
  "\uD68C\uCC28 \uC138\uC158\uC744 \uC644\uB8CC\uD558\uC168\uB098\uC694?"
7369
8788
  ] }),
7370
- /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Button, { onClick: onClickCompleteSession, size: "small", children: [
8789
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Button, { onClick: onClickCompleteSession, size: "small", children: [
7371
8790
  "\uC138\uC158 \uC885\uB8CC\uD558\uAE30",
7372
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_react_icons2.ArrowRightIcon, {})
8791
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.ArrowRightIcon, {})
7373
8792
  ] })
7374
8793
  ] })
7375
8794
  }
@@ -7380,22 +8799,22 @@ function ReservationCard(props) {
7380
8799
  }
7381
8800
 
7382
8801
  // src/app/platform/session-review-simple-read.tsx
7383
- var import_react53 = require("react");
7384
- var import_jsx_runtime107 = require("react/jsx-runtime");
8802
+ var import_react56 = require("react");
8803
+ var import_jsx_runtime112 = require("react/jsx-runtime");
7385
8804
  function SubTitleWrapper({
7386
8805
  children,
7387
8806
  title
7388
8807
  }) {
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 })
8808
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
8809
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: title }),
8810
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_themes6.Box, { children })
7392
8811
  ] });
7393
8812
  }
7394
8813
  function SessionReviewSimpleRead({
7395
8814
  helpfulness,
7396
8815
  review
7397
8816
  }) {
7398
- const helpfulnessMeta = (0, import_react53.useMemo)(() => {
8817
+ const helpfulnessMeta = (0, import_react56.useMemo)(() => {
7399
8818
  if (helpfulness) {
7400
8819
  return {
7401
8820
  text: "\uB124",
@@ -7413,22 +8832,22 @@ function SessionReviewSimpleRead({
7413
8832
  color: "error"
7414
8833
  };
7415
8834
  }, [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." }) }) })
8835
+ 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: [
8836
+ /* @__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 }) }),
8837
+ /* @__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
8838
  ] }) });
7420
8839
  }
7421
8840
 
7422
8841
  // src/app/platform/userInfos/session-user-info-detail.tsx
7423
- var import_jsx_runtime108 = require("react/jsx-runtime");
8842
+ var import_jsx_runtime113 = require("react/jsx-runtime");
7424
8843
  function SectionWrapper({
7425
8844
  title,
7426
8845
  children
7427
8846
  }) {
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" })
8847
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes6.Box, { children: [
8848
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", mb: "5", children: [
8849
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Heading2, { variant: "heading5", children: title }),
8850
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes39.Separator, { size: "4" })
7432
8851
  ] }),
7433
8852
  children
7434
8853
  ] });
@@ -7438,22 +8857,22 @@ function SessionUserInfoDetail({
7438
8857
  session,
7439
8858
  onClickCopy
7440
8859
  }) {
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(
8860
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes22.Flex, { direction: "column", gap: "6", children: [
8861
+ /* @__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
8862
  (info) => renderDataListItem({ info, data: session, onClickCopy })
7444
8863
  ) }) }),
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(
8864
+ /* @__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
8865
  (info) => renderDataListItem({ info, data: customer, onClickCopy })
7447
8866
  ) }) })
7448
8867
  ] });
7449
8868
  }
7450
8869
 
7451
8870
  // src/app/platform/report-card.tsx
7452
- var import_react54 = require("react");
7453
- var import_jsx_runtime109 = require("react/jsx-runtime");
8871
+ var import_react57 = require("react");
8872
+ var import_jsx_runtime114 = require("react/jsx-runtime");
7454
8873
  function ReportCard(props) {
7455
8874
  const { title, file, status, subtitle } = props;
7456
- const onClickDownload = (0, import_react54.useCallback)(() => {
8875
+ const onClickDownload = (0, import_react57.useCallback)(() => {
7457
8876
  if (!file) return;
7458
8877
  const { url, fileName } = file;
7459
8878
  const link = document.createElement("a");
@@ -7465,24 +8884,24 @@ function ReportCard(props) {
7465
8884
  document.body.removeChild(link);
7466
8885
  }, [file]);
7467
8886
  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 }),
8887
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
8888
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
7470
8889
  status
7471
8890
  ] }) });
7472
8891
  }
7473
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
8892
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
7474
8893
  import_themes22.Flex,
7475
8894
  {
7476
8895
  direction: { initial: "column", xs: "row" },
7477
8896
  gapY: "2",
7478
8897
  justify: "between",
7479
8898
  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
8899
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes6.Box, { children: [
8900
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
8901
+ subtitle ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Typo, { color: "gray", children: subtitle }) : null
7483
8902
  ] }),
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, {}),
8903
+ /* @__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: [
8904
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_react_icons2.DownloadIcon, {}),
7486
8905
  file == null ? void 0 : file.buttonName
7487
8906
  ] }) }, file == null ? void 0 : file.url)
7488
8907
  ]
@@ -7491,9 +8910,9 @@ function ReportCard(props) {
7491
8910
  }
7492
8911
 
7493
8912
  // 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)(
8913
+ var import_react58 = require("react");
8914
+ var import_jsx_runtime115 = require("react/jsx-runtime");
8915
+ var ContentsCard = (0, import_react58.forwardRef)(
7497
8916
  ({
7498
8917
  title,
7499
8918
  description,
@@ -7503,7 +8922,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7503
8922
  onClickCard,
7504
8923
  isLoading = false
7505
8924
  }, ref) => {
7506
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8925
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7507
8926
  Card,
7508
8927
  {
7509
8928
  onClick: onClickCard,
@@ -7516,7 +8935,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7516
8935
  maxHeight: "450px"
7517
8936
  },
7518
8937
  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)(
8938
+ /* @__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
8939
  import_themes6.Box,
7521
8940
  {
7522
8941
  height: "210px",
@@ -7528,12 +8947,12 @@ var ContentsCard = (0, import_react55.forwardRef)(
7528
8947
  width: "100%"
7529
8948
  }
7530
8949
  ) }) }),
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 }) })
8950
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes22.Flex, { direction: "column", p: "4", pb: "3", children: [
8951
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes6.Box, { children: [
8952
+ /* @__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 }) }),
8953
+ /* @__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
8954
  ] }),
7536
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8955
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7537
8956
  import_themes23.Grid,
7538
8957
  {
7539
8958
  align: "center",
@@ -7543,10 +8962,10 @@ var ContentsCard = (0, import_react55.forwardRef)(
7543
8962
  style: { marginTop: "auto" },
7544
8963
  width: "100%",
7545
8964
  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)(
8965
+ /* @__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 }) }),
8966
+ Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenu.Root, { children: [
8967
+ /* @__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" }) }) }),
8968
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenu.Content, { children: dropdownItems == null ? void 0 : dropdownItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7550
8969
  DropdownMenu.Item,
7551
8970
  {
7552
8971
  onClick: (e) => {
@@ -7570,7 +8989,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
7570
8989
  ContentsCard.displayName = "ContentsCard";
7571
8990
 
7572
8991
  // src/app/platform/curriculum-card.tsx
7573
- var import_jsx_runtime111 = require("react/jsx-runtime");
8992
+ var import_jsx_runtime116 = require("react/jsx-runtime");
7574
8993
  function CurriculumCard(props) {
7575
8994
  const {
7576
8995
  title,
@@ -7581,7 +9000,7 @@ function CurriculumCard(props) {
7581
9000
  bgColor,
7582
9001
  onClick
7583
9002
  } = props;
7584
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
9003
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
7585
9004
  import_themes23.Grid,
7586
9005
  {
7587
9006
  columns: { initial: "1", sm: "275px 1fr" },
@@ -7590,7 +9009,7 @@ function CurriculumCard(props) {
7590
9009
  onClick,
7591
9010
  style: { cursor: "pointer" },
7592
9011
  children: [
7593
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9012
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
7594
9013
  import_themes6.Box,
7595
9014
  {
7596
9015
  height: "165px",
@@ -7605,32 +9024,32 @@ function CurriculumCard(props) {
7605
9024
  backgroundAttachment: "local"
7606
9025
  },
7607
9026
  width: "100%",
7608
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { style: { whiteSpace: "break-spaces" }, variant: "heading3", children: imgTitle })
9027
+ children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { style: { whiteSpace: "break-spaces" }, variant: "heading3", children: imgTitle })
7609
9028
  }
7610
9029
  ),
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)(
9030
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
9031
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "1fr auto" }, gapY: "3", children: [
9032
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { variant: "heading4", children: title }),
9033
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
7615
9034
  Badge,
7616
9035
  {
7617
9036
  size: "medium",
7618
9037
  style: { justifySelf: "flex-start" },
7619
9038
  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, {}),
9039
+ children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
9040
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.TimerIcon, {}),
7622
9041
  runningTime
7623
9042
  ] })
7624
9043
  }
7625
9044
  )
7626
9045
  ] }),
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);
9046
+ /* @__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) => {
9047
+ 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
9048
  }) }) }),
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" })
9049
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_themes39.Separator, { size: "4" }),
9050
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "2", justify: "end", children: [
9051
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Typo, { color: "gray", children: "\uAC15\uC758 \uB4E3\uACE0 \uCF54\uCE58\uB2D8\uACFC \uBB34\uC81C\uD55C Q&A" }),
9052
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.ArrowRightIcon, { color: "gray" })
7634
9053
  ] })
7635
9054
  ] })
7636
9055
  ]
@@ -7718,6 +9137,7 @@ function CurriculumCard(props) {
7718
9137
  Drawer,
7719
9138
  DropdownMenu,
7720
9139
  DynamicForm,
9140
+ DynamicFormEditor,
7721
9141
  DynamicFormField,
7722
9142
  DynamicFormProvider,
7723
9143
  DynamicFormResponseItem,
@@ -7836,6 +9256,7 @@ function CurriculumCard(props) {
7836
9256
  getCalloutIconComponent,
7837
9257
  getCellAlign,
7838
9258
  getColumnMeta,
9259
+ getDynamicFormDisplayValue,
7839
9260
  getTimeOption,
7840
9261
  getTimeOptions,
7841
9262
  oneOnOneNoteTextReplacer,