@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/dynamic-form-editor-utils.ts"],"sourcesContent":["import type {\n DynamicFormFieldSchema,\n DynamicFormSchema,\n FieldOption,\n ImageFieldOption,\n ValidationRule,\n} from '@/types/dynamic-form-schema-generated';\n\nexport type FieldType =\n | 'short_text'\n | 'long_text'\n | 'number'\n | 'email'\n | 'dropdown'\n | 'choice'\n | 'radio_cards'\n | 'image_radio_card'\n | 'choices'\n | 'yes_no';\n\nexport type SchemaIssueLevel = 'error' | 'warning';\n\nexport interface SchemaIssue {\n id: string;\n level: SchemaIssueLevel;\n message: string;\n fieldName?: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isNonEmptyTrimmedString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction canCompileRegExp(pattern: string): boolean {\n try {\n // eslint-disable-next-line no-new -- 정규식 컴파일 가능 여부만 확인\n new RegExp(pattern);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function getFieldTypes(): FieldType[] {\n return [\n 'short_text',\n 'long_text',\n 'number',\n 'email',\n 'dropdown',\n 'choice',\n 'radio_cards',\n 'image_radio_card',\n 'choices',\n 'yes_no',\n ];\n}\n\nexport function getFieldTypeLabel(type: FieldType): string {\n const map: Record<FieldType, string> = {\n short_text: '짧은 텍스트',\n long_text: '긴 텍스트',\n number: '숫자',\n email: '이메일',\n dropdown: '드롭다운',\n choice: '단일 선택(라디오)',\n radio_cards: '라디오 카드',\n image_radio_card: '이미지 라디오 카드',\n choices: '다중 선택(체크)',\n yes_no: '동의(체크)',\n };\n return map[type];\n}\n\nexport function findFieldIndexByName(\n fields: DynamicFormFieldSchema[],\n fieldName: string\n): number {\n return fields.findIndex((field) => field.name === fieldName);\n}\n\nfunction toCamelFromSnake(value: string): string {\n const parts: string[] = value.split('_').filter(Boolean);\n if (parts.length === 0) return 'field';\n const [first, ...rest] = parts;\n const firstLower = first.toLowerCase();\n const restCamel = rest\n .map((p) => (p.length === 0 ? '' : p[0].toUpperCase() + p.slice(1)))\n .join('');\n return `${firstLower}${restCamel}`;\n}\n\nexport function createUniqueFieldName(\n fields: DynamicFormFieldSchema[],\n baseName: string\n): string {\n const used = new Set<string>(fields.map((f) => f.name));\n if (!used.has(baseName)) return baseName;\n let i = 2;\n while (used.has(`${baseName}${i}`)) i += 1;\n return `${baseName}${i}`;\n}\n\nexport function createDefaultField(\n type: FieldType,\n currentFields: DynamicFormFieldSchema[]\n): DynamicFormFieldSchema {\n const baseName: string = toCamelFromSnake(type);\n const name: string = createUniqueFieldName(currentFields, baseName);\n const label: string = getFieldTypeLabel(type);\n\n if (type === 'short_text') return { name, type, label, placeholder: '' };\n if (type === 'long_text') return { name, type, label, placeholder: '' };\n if (type === 'number') return { name, type, label, placeholder: '' };\n if (type === 'email') return { name, type, label, placeholder: '' };\n if (type === 'dropdown')\n return {\n name,\n type,\n label,\n placeholder: '',\n options: [{ label: '옵션 1', value: 'option1' }],\n };\n if (type === 'choice')\n return {\n name,\n type,\n label,\n orientation: 'vertical',\n options: [{ label: '옵션 1', value: 'option1' }],\n };\n if (type === 'radio_cards')\n return { name, type, label, options: [{ label: '옵션 1', value: 'option1' }] };\n if (type === 'choices')\n return {\n name,\n type,\n label,\n orientation: 'vertical',\n options: [{ label: '옵션 1', value: 'option1' }],\n };\n if (type === 'yes_no') return { name, type, label, description: '' };\n\n return {\n name,\n type,\n label,\n gridColumnsCount: 4,\n gridItemHeight: '160px',\n gridGap: '2',\n imageFit: 'cover',\n options: [\n {\n label: '이미지 1',\n value: 'option1',\n imageSrc: 'https://placehold.co/300x300/png?text=1',\n },\n ],\n };\n}\n\nexport function normalizeSchema(value: DynamicFormSchema | undefined): DynamicFormSchema {\n const fallback: DynamicFormSchema = { fields: [] };\n if (!value) return fallback;\n if (!Array.isArray(value.fields)) return fallback;\n return { fields: value.fields };\n}\n\nexport function validateDynamicFormSchema(schema: DynamicFormSchema): SchemaIssue[] {\n const issues: SchemaIssue[] = [];\n\n const nameToCount = new Map<string, number>();\n schema.fields.forEach((field) => {\n const prev = nameToCount.get(field.name) || 0;\n nameToCount.set(field.name, prev + 1);\n });\n\n schema.fields.forEach((field, index) => {\n const fieldKey = `${index}:${field.name}`;\n\n if (!isNonEmptyTrimmedString(field.name)) {\n issues.push({\n id: `field.name.required.${fieldKey}`,\n level: 'error',\n message: '필드 name은 필수입니다',\n fieldName: field.name,\n });\n } else if (field.name.trim() !== field.name) {\n issues.push({\n id: `field.name.trim.${fieldKey}`,\n level: 'warning',\n message: '필드 name 앞/뒤 공백은 제거하는 것을 권장합니다',\n fieldName: field.name,\n });\n }\n\n if (isNonEmptyTrimmedString(field.name)) {\n const count = nameToCount.get(field.name) || 0;\n if (count > 1) {\n issues.push({\n id: `field.name.duplicate.${fieldKey}`,\n level: 'error',\n message: `중복된 name입니다: ${field.name}`,\n fieldName: field.name,\n });\n }\n }\n\n if (!isNonEmptyTrimmedString(field.label)) {\n issues.push({\n id: `field.label.required.${fieldKey}`,\n level: 'error',\n message: '필드 label은 필수입니다',\n fieldName: field.name,\n });\n }\n\n const type = field.type;\n const isOptionType =\n type === 'dropdown' ||\n type === 'choice' ||\n type === 'radio_cards' ||\n type === 'choices';\n\n if (isOptionType) {\n const optionsRaw: unknown = field.options;\n if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {\n issues.push({\n id: `field.options.required.${fieldKey}`,\n level: 'error',\n message: 'options는 1개 이상 필요합니다',\n fieldName: field.name,\n });\n }\n }\n\n if (type === 'image_radio_card') {\n const optionsRaw: unknown = field.options;\n if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {\n issues.push({\n id: `field.imageOptions.required.${fieldKey}`,\n level: 'error',\n message: 'options는 1개 이상 필요합니다',\n fieldName: field.name,\n });\n } else {\n optionsRaw.forEach((opt, optIndex) => {\n const imageSrc = isRecord(opt) ? opt.imageSrc : undefined;\n if (!isNonEmptyTrimmedString(imageSrc)) {\n issues.push({\n id: `field.imageOptions.imageSrc.required.${fieldKey}.${optIndex}`,\n level: 'error',\n message: 'imageSrc는 필수입니다',\n fieldName: field.name,\n });\n }\n });\n }\n }\n\n const validation: ValidationRule | undefined = field.validation;\n if (validation) {\n if (isFiniteNumber(validation.min) && isFiniteNumber(validation.max)) {\n if (validation.min > validation.max) {\n issues.push({\n id: `field.validation.minmax.${fieldKey}`,\n level: 'error',\n message: 'validation.min은 validation.max 이하이어야 합니다',\n fieldName: field.name,\n });\n }\n }\n if (isNonEmptyTrimmedString(validation.pattern)) {\n if (!canCompileRegExp(validation.pattern)) {\n issues.push({\n id: `field.validation.pattern.${fieldKey}`,\n level: 'error',\n message: 'validation.pattern이 올바른 정규식이 아닙니다',\n fieldName: field.name,\n });\n }\n }\n }\n });\n\n return issues;\n}\n\nexport function hasErrorIssues(issues: SchemaIssue[]): boolean {\n return issues.some((i) => i.level === 'error');\n}\n\nexport function updateSchemaFields(\n schema: DynamicFormSchema,\n nextFields: DynamicFormFieldSchema[]\n): DynamicFormSchema {\n return { fields: nextFields };\n}\n\nexport function moveField(\n fields: DynamicFormFieldSchema[],\n fromIndex: number,\n toIndex: number\n): DynamicFormFieldSchema[] {\n if (fromIndex < 0 || fromIndex >= fields.length) return fields;\n if (toIndex < 0 || toIndex >= fields.length) return fields;\n if (fromIndex === toIndex) return fields;\n\n const next: DynamicFormFieldSchema[] = [...fields];\n const [item] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, item);\n return next;\n}\n\nexport function duplicateField(fields: DynamicFormFieldSchema[], index: number): DynamicFormFieldSchema[] {\n if (index < 0 || index >= fields.length) return fields;\n const target = fields[index];\n const nextName: string = createUniqueFieldName(fields, target.name);\n const cloned: DynamicFormFieldSchema = { ...target, name: nextName };\n const next: DynamicFormFieldSchema[] = [...fields];\n next.splice(index + 1, 0, cloned);\n return next;\n}\n\nexport function updateFieldCommonProps(\n field: DynamicFormFieldSchema,\n next: {\n name?: string;\n label?: string;\n description?: string | undefined;\n required?: boolean;\n }\n): DynamicFormFieldSchema {\n const { name, label, description, required } = next;\n return {\n ...field,\n ...(name !== undefined ? { name } : {}),\n ...(label !== undefined ? { label } : {}),\n ...(description !== undefined ? { description } : {}),\n ...(required !== undefined ? { required } : {}),\n };\n}\n\nexport function updateFieldValidation(\n field: DynamicFormFieldSchema,\n next: ValidationRule | undefined\n): DynamicFormFieldSchema {\n if (!next) {\n const { validation: _validation, ...rest } = field;\n return rest;\n }\n return { ...field, validation: next };\n}\n\nexport function updateTextPlaceholder(\n field: DynamicFormFieldSchema,\n placeholder: string\n): DynamicFormFieldSchema {\n const type = field.type;\n if (type === 'short_text' || type === 'long_text' || type === 'number' || type === 'email' || type === 'dropdown') {\n return { ...field, placeholder };\n }\n return field;\n}\n\nexport function updateOrientation(\n field: DynamicFormFieldSchema,\n orientation: 'horizontal' | 'vertical'\n): DynamicFormFieldSchema {\n const type = field.type;\n if (type === 'choice' || type === 'choices') return { ...field, orientation };\n return field;\n}\n\nexport function updateOptions(\n field: DynamicFormFieldSchema,\n options: FieldOption[]\n): DynamicFormFieldSchema {\n const type = field.type;\n if (type === 'dropdown' || type === 'choice' || type === 'radio_cards' || type === 'choices') {\n return { ...field, options };\n }\n return field;\n}\n\nexport function updateImageOptions(\n field: DynamicFormFieldSchema,\n options: ImageFieldOption[]\n): DynamicFormFieldSchema {\n if (field.type === 'image_radio_card') {\n return { ...field, options };\n }\n return field;\n}\n\nexport function updateImageLayout(\n field: DynamicFormFieldSchema,\n next: {\n gridColumnsCount?: number | undefined;\n gridItemHeight?: string | undefined;\n gridColumns?: string | undefined;\n gridRows?: string | undefined;\n gridGap?: string | undefined;\n imageFit?: 'cover' | 'contain' | undefined;\n }\n): DynamicFormFieldSchema {\n if (field.type !== 'image_radio_card') return field;\n return { ...field, ...next };\n}\n\nexport function resetFieldType(\n field: DynamicFormFieldSchema,\n nextType: FieldType,\n allFields: DynamicFormFieldSchema[]\n): DynamicFormFieldSchema {\n const base: DynamicFormFieldSchema = createDefaultField(nextType, allFields);\n return {\n ...base,\n name: field.name,\n label: field.label,\n description: field.description,\n required: field.required,\n validation: field.validation,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,28 @@
1
+ import {
2
+ DynamicForm
3
+ } from "./chunk-GTO7GG2K.js";
4
+ import {
5
+ Card
6
+ } from "./chunk-RP2RGCAW.js";
7
+ import {
8
+ Typo
9
+ } from "./chunk-PMJIFLDT.js";
10
+ import {
11
+ Flex
12
+ } from "./chunk-25HMMI7R.js";
13
+
14
+ // src/molecules/dynamic-form-editor-preview-panel.tsx
15
+ import { jsx, jsxs } from "react/jsx-runtime";
16
+ function DynamicFormEditorPreviewPanel(props) {
17
+ const { show, fields } = props;
18
+ if (!show) return null;
19
+ return /* @__PURE__ */ jsx(Card, { style: { width: 420, padding: 12 }, children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "3", children: [
20
+ /* @__PURE__ */ jsx(Typo, { variant: "body", children: "\uD504\uB9AC\uBDF0" }),
21
+ /* @__PURE__ */ jsx(DynamicForm.Root, { fields, onSubmit: () => void 0, readonly: true, children: /* @__PURE__ */ jsx(DynamicForm.FieldList, { labelVariant: "body" }) })
22
+ ] }) });
23
+ }
24
+
25
+ export {
26
+ DynamicFormEditorPreviewPanel
27
+ };
28
+ //# sourceMappingURL=chunk-ZA4NYPSW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/dynamic-form-editor-preview-panel.tsx"],"sourcesContent":["import React from 'react';\nimport { Card } from '@/atoms/card';\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\nimport { DynamicForm } from './dynamic-form';\n\nexport interface DynamicFormEditorPreviewPanelProps {\n show: boolean;\n fields: DynamicFormFieldSchema[];\n}\n\nexport function DynamicFormEditorPreviewPanel(\n props: DynamicFormEditorPreviewPanelProps\n): React.ReactElement | null {\n const { show, fields } = props;\n if (!show) return null;\n\n return (\n <Card style={{ width: 420, padding: 12 }}>\n <Flex direction=\"column\" gap=\"3\">\n <Typo variant=\"body\">프리뷰</Typo>\n <DynamicForm.Root fields={fields} onSubmit={(): void => undefined} readonly>\n <DynamicForm.FieldList labelVariant=\"body\" />\n </DynamicForm.Root>\n </Flex>\n </Card>\n );\n}\n\n"],"mappings":";;;;;;;;;;;;;;AAoBM,SACE,KADF;AARC,SAAS,8BACd,OAC2B;AAC3B,QAAM,EAAE,MAAM,OAAO,IAAI;AACzB,MAAI,CAAC,KAAM,QAAO;AAElB,SACE,oBAAC,QAAK,OAAO,EAAE,OAAO,KAAK,SAAS,GAAG,GACrC,+BAAC,QAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,wBAAC,QAAK,SAAQ,QAAO,gCAAG;AAAA,IACxB,oBAAC,YAAY,MAAZ,EAAiB,QAAgB,UAAU,MAAY,QAAW,UAAQ,MACzE,8BAAC,YAAY,WAAZ,EAAsB,cAAa,QAAO,GAC7C;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -0,0 +1,113 @@
1
+ import {
2
+ CircleChatIcon
3
+ } from "./chunk-ZUYCXCPW.js";
4
+ import {
5
+ CircleCheckIcon
6
+ } from "./chunk-YVFNJE4E.js";
7
+ import {
8
+ CircleFileIcon
9
+ } from "./chunk-SI4Y7NUG.js";
10
+ import {
11
+ CirclePencilIcon
12
+ } from "./chunk-J2I3R3OV.js";
13
+ import {
14
+ CirclePlayIcon
15
+ } from "./chunk-QO6KO6MN.js";
16
+ import {
17
+ CircleQuoteIcon
18
+ } from "./chunk-5KNRHIIF.js";
19
+ import {
20
+ CircleSatisfactionIcon
21
+ } from "./chunk-6JRAI4G5.js";
22
+
23
+ // src/utils/curriculum.utils.ts
24
+ var CurriculumListIcons = {
25
+ pencil: CirclePencilIcon,
26
+ video: CirclePlayIcon,
27
+ quote: CircleQuoteIcon,
28
+ check: CircleCheckIcon,
29
+ star: CircleSatisfactionIcon,
30
+ file: CircleFileIcon
31
+ };
32
+ var getCurriculumIcon = ({
33
+ type,
34
+ icon
35
+ }) => {
36
+ if (icon && Object.prototype.hasOwnProperty.call(CurriculumListIcons, icon)) {
37
+ return CurriculumListIcons[icon];
38
+ }
39
+ switch (type) {
40
+ case "video":
41
+ return CirclePlayIcon;
42
+ case "question_text":
43
+ return CircleQuoteIcon;
44
+ case "question_radio":
45
+ return CircleCheckIcon;
46
+ case "question_satisfaction_option":
47
+ case "question_satisfaction_text":
48
+ return CircleSatisfactionIcon;
49
+ case "aiTraining":
50
+ return CircleChatIcon;
51
+ case "fileDownload":
52
+ return CircleFileIcon;
53
+ case "review":
54
+ default:
55
+ return CirclePencilIcon;
56
+ }
57
+ };
58
+ var getCurriculumIconColor = ({
59
+ done = false,
60
+ selected = false
61
+ }) => {
62
+ if (selected) {
63
+ return "#D5AE39";
64
+ }
65
+ if (done) {
66
+ return "#30A46C";
67
+ }
68
+ return "#D9D9E0";
69
+ };
70
+ var getCurriculumQuestionIconColor = (type) => {
71
+ switch (type) {
72
+ case "question_text":
73
+ return "#D5AE39";
74
+ case "question_radio":
75
+ return "#30A46C";
76
+ default:
77
+ return "#D9D9E0";
78
+ }
79
+ };
80
+ var getCurriculumQuestionTypeDescription = (type) => {
81
+ switch (type) {
82
+ case "question_text":
83
+ return "\uC8FC\uAD00\uC2DD";
84
+ case "question_radio":
85
+ return "\uAC1D\uAD00\uC2DD";
86
+ default:
87
+ return "";
88
+ }
89
+ };
90
+ var getCurriculumContentSubTypeText = (type) => {
91
+ switch (type) {
92
+ case "video":
93
+ return "\uC601\uC0C1";
94
+ case "review":
95
+ return "\uB9AC\uBDF0";
96
+ case "aiTraining":
97
+ return "AI \uB864\uD50C\uB808\uC774";
98
+ case "fileDownload":
99
+ return "\uC790\uB8CC \uB2E4\uC6B4\uB85C\uB4DC";
100
+ default:
101
+ return "";
102
+ }
103
+ };
104
+
105
+ export {
106
+ CurriculumListIcons,
107
+ getCurriculumIcon,
108
+ getCurriculumIconColor,
109
+ getCurriculumQuestionIconColor,
110
+ getCurriculumQuestionTypeDescription,
111
+ getCurriculumContentSubTypeText
112
+ };
113
+ //# sourceMappingURL=chunk-ZDY2M7RX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/curriculum.utils.ts"],"sourcesContent":["import { \n CircleChatIcon,\n CircleCheckIcon,\n CircleFileIcon,\n CirclePencilIcon,\n CirclePlayIcon,\n CircleQuoteIcon,\n CircleSatisfactionIcon,\n } from '@/icon';\n\nexport const CurriculumListIcons = {\n pencil: CirclePencilIcon,\n video: CirclePlayIcon,\n quote: CircleQuoteIcon,\n check: CircleCheckIcon,\n star: CircleSatisfactionIcon,\n file: CircleFileIcon,\n};\n\nexport const getCurriculumIcon = ({\n type,\n icon,\n}: {\n type: string;\n icon?: string;\n}): typeof CirclePlayIcon => {\n if (icon && Object.prototype.hasOwnProperty.call(CurriculumListIcons, icon)) {\n return CurriculumListIcons[icon as keyof typeof CurriculumListIcons];\n }\n\n switch (type) {\n case 'video':\n return CirclePlayIcon;\n case 'question_text':\n return CircleQuoteIcon;\n case 'question_radio':\n return CircleCheckIcon;\n case 'question_satisfaction_option':\n case 'question_satisfaction_text':\n return CircleSatisfactionIcon;\n case 'aiTraining':\n return CircleChatIcon; \n case 'fileDownload':\n return CircleFileIcon;\n case 'review':\n default:\n return CirclePencilIcon;\n }\n};\n\nexport const getCurriculumIconColor = ({\n done = false,\n selected = false,\n}: {\n done?: boolean;\n selected?: boolean;\n}): string => {\n if (selected) {\n return '#D5AE39';\n }\n if (done) {\n return '#30A46C';\n }\n return '#D9D9E0';\n};\n\nexport const getCurriculumQuestionIconColor = (type: string): string => {\n switch (type) {\n case 'question_text':\n return '#D5AE39';\n case 'question_radio':\n return '#30A46C';\n default:\n return '#D9D9E0';\n }\n};\n\nexport const getCurriculumQuestionTypeDescription = (type: string): string => {\n switch (type) {\n case 'question_text':\n return '주관식';\n case 'question_radio':\n return '객관식';\n default:\n return '';\n }\n};\n\nexport const getCurriculumContentSubTypeText = (type: string): string => {\n switch (type) {\n case 'video':\n return '영상';\n case 'review':\n return '리뷰';\n case 'aiTraining':\n return 'AI 롤플레이';\n case 'fileDownload':\n return '자료 다운로드';\n default:\n return '';\n }\n};\n \n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAM,sBAAsB;AAAA,EACjC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AACR;AAEO,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AACF,MAG6B;AAC3B,MAAI,QAAQ,OAAO,UAAU,eAAe,KAAK,qBAAqB,IAAI,GAAG;AAC3E,WAAO,oBAAoB,IAAwC;AAAA,EACrE;AAEA,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,yBAAyB,CAAC;AAAA,EACrC,OAAO;AAAA,EACP,WAAW;AACb,MAGc;AACZ,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AACR,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,IAAM,iCAAiC,CAAC,SAAyB;AACtE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,uCAAuC,CAAC,SAAyB;AAC5E,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,kCAAkC,CAAC,SAAyB;AACvE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
@@ -0,0 +1,76 @@
1
+ import {
2
+ useCurriculumContext
3
+ } from "./chunk-WA5A2GB4.js";
4
+ import {
5
+ Typo
6
+ } from "./chunk-PMJIFLDT.js";
7
+ import {
8
+ Flex
9
+ } from "./chunk-25HMMI7R.js";
10
+ import {
11
+ Button
12
+ } from "./chunk-ZVDAEY5Q.js";
13
+
14
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-file-download.tsx
15
+ import { useMemo } from "react";
16
+ import { jsx, jsxs } from "react/jsx-runtime";
17
+ function CurriculumFileDownload(props) {
18
+ const { item } = props;
19
+ const { title, description, files } = item;
20
+ const { onClickfileDownload } = useCurriculumContext();
21
+ const isCallbackReady = useMemo(() => {
22
+ return typeof onClickfileDownload === "function";
23
+ }, [onClickfileDownload]);
24
+ const handleClickFile = (file) => {
25
+ if (!onClickfileDownload) {
26
+ return;
27
+ }
28
+ onClickfileDownload(item, file);
29
+ };
30
+ return /* @__PURE__ */ jsxs(
31
+ Flex,
32
+ {
33
+ align: "center",
34
+ direction: "column",
35
+ height: "100%",
36
+ justify: "center",
37
+ px: "3",
38
+ py: "3",
39
+ width: "100%",
40
+ children: [
41
+ /* @__PURE__ */ jsx(Typo, { color: "gray", weight: "bold", children: title }),
42
+ description ? /* @__PURE__ */ jsx(Typo, { align: "center", as: "p", color: "gray", children: description }) : null,
43
+ /* @__PURE__ */ jsx(
44
+ Flex,
45
+ {
46
+ direction: "column",
47
+ gap: "2",
48
+ mt: "4",
49
+ style: { width: "100%", maxWidth: 520 },
50
+ children: files.map((file) => {
51
+ return /* @__PURE__ */ jsx(
52
+ Button,
53
+ {
54
+ disabled: !isCallbackReady,
55
+ onClick: () => {
56
+ handleClickFile(file);
57
+ },
58
+ variant: "outline",
59
+ children: /* @__PURE__ */ jsx(Typo, { truncate: true, children: file.name })
60
+ },
61
+ file.url
62
+ );
63
+ })
64
+ }
65
+ ),
66
+ !isCallbackReady ? /* @__PURE__ */ jsx(Typo, { align: "center", color: "gray", mt: "3", variant: "caption", children: "\uD30C\uC77C \uB2E4\uC6B4\uB85C\uB4DC \uAE30\uB2A5\uC774 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4." }) : null
67
+ ]
68
+ }
69
+ );
70
+ }
71
+ var curriculum_file_download_default = CurriculumFileDownload;
72
+
73
+ export {
74
+ curriculum_file_download_default
75
+ };
76
+ //# sourceMappingURL=chunk-ZFTQ2XBH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/curriculum-file-download.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Button } from '@/atoms/button';\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport type {\n CurriculumFileDownloadContents,\n CurriculumFileDownloadFile,\n} from '@/types/curriculumContents.type';\nimport { useCurriculumContext } from '../curriculum-context';\n\ninterface CurriculumFileDownloadProps {\n item: CurriculumFileDownloadContents;\n}\n\nfunction CurriculumFileDownload(\n props: CurriculumFileDownloadProps\n): React.ReactNode {\n const { item } = props;\n const { title, description, files } = item;\n const { onClickfileDownload } = useCurriculumContext();\n\n const isCallbackReady = useMemo((): boolean => {\n return typeof onClickfileDownload === 'function';\n }, [onClickfileDownload]);\n\n const handleClickFile = (file: CurriculumFileDownloadFile): void => {\n if (!onClickfileDownload) {\n return;\n }\n onClickfileDownload(item, file);\n };\n\n return (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"100%\"\n justify=\"center\"\n px=\"3\"\n py=\"3\"\n width=\"100%\"\n >\n <Typo color=\"gray\" weight=\"bold\">\n {title}\n </Typo>\n {description ? (\n <Typo align=\"center\" as=\"p\" color=\"gray\">\n {description}\n </Typo>\n ) : null}\n\n <Flex\n direction=\"column\"\n gap=\"2\"\n mt=\"4\"\n style={{ width: '100%', maxWidth: 520 }}\n >\n {files.map((file) => {\n return (\n <Button\n disabled={!isCallbackReady}\n key={file.url}\n onClick={() => {\n handleClickFile(file);\n }}\n variant=\"outline\"\n >\n <Typo truncate>{file.name}</Typo>\n </Button>\n );\n })}\n </Flex>\n\n {!isCallbackReady ? (\n <Typo align=\"center\" color=\"gray\" mt=\"3\" variant=\"caption\">\n 파일 다운로드 기능이 설정되지 않았습니다.\n </Typo>\n ) : null}\n </Flex>\n );\n}\n\nexport default CurriculumFileDownload;\n\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAgB,eAAe;AAiC3B,SASE,KATF;AAnBJ,SAAS,uBACP,OACiB;AACjB,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,EAAE,OAAO,aAAa,MAAM,IAAI;AACtC,QAAM,EAAE,oBAAoB,IAAI,qBAAqB;AAErD,QAAM,kBAAkB,QAAQ,MAAe;AAC7C,WAAO,OAAO,wBAAwB;AAAA,EACxC,GAAG,CAAC,mBAAmB,CAAC;AAExB,QAAM,kBAAkB,CAAC,SAA2C;AAClE,QAAI,CAAC,qBAAqB;AACxB;AAAA,IACF;AACA,wBAAoB,MAAM,IAAI;AAAA,EAChC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAU;AAAA,MACV,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,IAAG;AAAA,MACH,IAAG;AAAA,MACH,OAAM;AAAA,MAEN;AAAA,4BAAC,QAAK,OAAM,QAAO,QAAO,QACvB,iBACH;AAAA,QACC,cACC,oBAAC,QAAK,OAAM,UAAS,IAAG,KAAI,OAAM,QAC/B,uBACH,IACE;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAI;AAAA,YACJ,IAAG;AAAA,YACH,OAAO,EAAE,OAAO,QAAQ,UAAU,IAAI;AAAA,YAErC,gBAAM,IAAI,CAAC,SAAS;AACnB,qBACE;AAAA,gBAAC;AAAA;AAAA,kBACC,UAAU,CAAC;AAAA,kBAEX,SAAS,MAAM;AACb,oCAAgB,IAAI;AAAA,kBACtB;AAAA,kBACA,SAAQ;AAAA,kBAER,8BAAC,QAAK,UAAQ,MAAE,eAAK,MAAK;AAAA;AAAA,gBANrB,KAAK;AAAA,cAOZ;AAAA,YAEJ,CAAC;AAAA;AAAA,QACH;AAAA,QAEC,CAAC,kBACA,oBAAC,QAAK,OAAM,UAAS,OAAM,QAAO,IAAG,KAAI,SAAQ,WAAU,+HAE3D,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAO,mCAAQ;","names":[]}
@@ -0,0 +1,89 @@
1
+ import {
2
+ ReviewQuestion_default
3
+ } from "./chunk-7ABAJEJA.js";
4
+ import {
5
+ complete_review_default
6
+ } from "./chunk-5YESTYFF.js";
7
+ import {
8
+ start_review_default
9
+ } from "./chunk-NSBBMIXS.js";
10
+ import {
11
+ CurriculumReviewProvider,
12
+ useCurriculumReviewContext
13
+ } from "./chunk-GMKRNFH5.js";
14
+
15
+ // src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.tsx
16
+ import { jsx } from "react/jsx-runtime";
17
+ function CurriculumReviewStepsInner() {
18
+ const {
19
+ formik,
20
+ step,
21
+ handleStart,
22
+ handleNext,
23
+ handlePrev,
24
+ onClickReviewMyAnswer,
25
+ handleSubmit,
26
+ currentQuestion,
27
+ currentAnswer,
28
+ currentError,
29
+ reviewContents,
30
+ handleAnswerChange
31
+ } = useCurriculumReviewContext();
32
+ const { questions } = reviewContents;
33
+ if (step === 0) {
34
+ return /* @__PURE__ */ jsx(start_review_default, { onStart: handleStart });
35
+ }
36
+ if (step > 0 && step <= questions.length && currentQuestion) {
37
+ return /* @__PURE__ */ jsx(
38
+ ReviewQuestion_default,
39
+ {
40
+ answer: currentAnswer,
41
+ error: currentError,
42
+ index: step - 1,
43
+ isLast: step === questions.length,
44
+ isLoading: formik.isSubmitting,
45
+ isNextDisabled: currentError !== void 0,
46
+ onChange: handleAnswerChange,
47
+ onNext: handleNext,
48
+ onPrev: handlePrev,
49
+ onSubmit: handleSubmit,
50
+ question: currentQuestion,
51
+ total: questions.length
52
+ }
53
+ );
54
+ }
55
+ return /* @__PURE__ */ jsx(complete_review_default, { onClickReviewMyAnswer });
56
+ }
57
+ function CurriculumReviewSteps({
58
+ contents,
59
+ title,
60
+ onClickEndReview,
61
+ onSubmit,
62
+ defaultValues,
63
+ curriculum,
64
+ onReviewValueChange,
65
+ mode,
66
+ done
67
+ }) {
68
+ return /* @__PURE__ */ jsx(
69
+ CurriculumReviewProvider,
70
+ {
71
+ curriculum,
72
+ defaultValues,
73
+ done,
74
+ mode,
75
+ onClickEndReview,
76
+ onReviewValueChange,
77
+ onSubmit,
78
+ reviewContents: contents,
79
+ sectionTitle: title,
80
+ children: /* @__PURE__ */ jsx(CurriculumReviewStepsInner, {})
81
+ }
82
+ );
83
+ }
84
+ var CurriculumReviewSteps_default = CurriculumReviewSteps;
85
+
86
+ export {
87
+ CurriculumReviewSteps_default
88
+ };
89
+ //# sourceMappingURL=chunk-ZI7PEVZG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.tsx"],"sourcesContent":["import React from 'react';\nimport { type CurriculumReviewContents } from '@/types/curriculumContents.type';\nimport type { Curriculum } from '@/types'; \nimport {\n CurriculumReviewProvider,\n useCurriculumReviewContext,\n} from './curriculum-review-context';\nimport StartReview from './start-review';\nimport CompleteReview from './complete-review';\nimport ReviewQuestion from './ReviewQuestion';\n \nfunction CurriculumReviewStepsInner(): React.ReactNode {\n const {\n formik,\n step,\n handleStart,\n handleNext,\n handlePrev,\n onClickReviewMyAnswer,\n handleSubmit,\n currentQuestion,\n currentAnswer,\n currentError,\n reviewContents,\n handleAnswerChange,\n } = useCurriculumReviewContext();\n const { questions } = reviewContents;\n\n if (step === 0) {\n return <StartReview onStart={handleStart} />;\n }\n if (step > 0 && step <= questions.length && currentQuestion) {\n return (\n <ReviewQuestion\n answer={currentAnswer}\n error={currentError}\n index={step - 1}\n isLast={step === questions.length}\n isLoading={formik.isSubmitting}\n isNextDisabled={currentError !== undefined}\n onChange={handleAnswerChange}\n onNext={handleNext}\n onPrev={handlePrev}\n onSubmit={handleSubmit}\n question={currentQuestion}\n total={questions.length}\n />\n );\n }\n return <CompleteReview onClickReviewMyAnswer={onClickReviewMyAnswer} />;\n}\n\ninterface CurriculumReviewStepsProps {\n contents: CurriculumReviewContents;\n title: string | undefined;\n onClickEndReview: () => void;\n onSubmit: (values: Record<string, string>) => Promise<boolean>;\n defaultValues?: Record<string, string>;\n curriculum: Curriculum;\n onReviewValueChange: ({\n reviewId,\n answer,\n }: {\n reviewId: string;\n answer: Record<string, string>;\n }) => void;\n mode: 'edit' | 'create';\n done: boolean; \n}\n\nfunction CurriculumReviewSteps({\n contents,\n title,\n onClickEndReview,\n onSubmit,\n defaultValues,\n curriculum,\n onReviewValueChange,\n mode,\n done,\n}: CurriculumReviewStepsProps): React.ReactNode { \n\n return (\n <CurriculumReviewProvider\n curriculum={curriculum}\n defaultValues={defaultValues}\n done={done}\n mode={mode}\n onClickEndReview={onClickEndReview}\n onReviewValueChange={onReviewValueChange}\n onSubmit={onSubmit}\n reviewContents={contents}\n sectionTitle={title}\n >\n <CurriculumReviewStepsInner />\n </CurriculumReviewProvider>\n );\n}\n\nexport default CurriculumReviewSteps;\n"],"mappings":";;;;;;;;;;;;;;;AA6BW;AAlBX,SAAS,6BAA8C;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,2BAA2B;AAC/B,QAAM,EAAE,UAAU,IAAI;AAEtB,MAAI,SAAS,GAAG;AACd,WAAO,oBAAC,wBAAY,SAAS,aAAa;AAAA,EAC5C;AACA,MAAI,OAAO,KAAK,QAAQ,UAAU,UAAU,iBAAiB;AAC3D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,QAAQ,SAAS,UAAU;AAAA,QAC3B,WAAW,OAAO;AAAA,QAClB,gBAAgB,iBAAiB;AAAA,QACjC,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO,UAAU;AAAA;AAAA,IACnB;AAAA,EAEJ;AACA,SAAO,oBAAC,2BAAe,uBAA8C;AACvE;AAoBA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgD;AAE9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,cAAc;AAAA,MAEd,8BAAC,8BAA2B;AAAA;AAAA,EAC9B;AAEJ;AAEA,IAAO,gCAAQ;","names":[]}
@@ -0,0 +1,125 @@
1
+ import {
2
+ IconButton
3
+ } from "./chunk-XK6VEVOK.js";
4
+ import {
5
+ Flex
6
+ } from "./chunk-25HMMI7R.js";
7
+ import {
8
+ ChevronLeftIcon,
9
+ ChevronRightIcon,
10
+ DoubleArrowLeftIcon,
11
+ DoubleArrowRightIcon
12
+ } from "./chunk-LTEJYJUM.js";
13
+ import {
14
+ Typo
15
+ } from "./chunk-PMJIFLDT.js";
16
+ import {
17
+ __spreadProps,
18
+ __spreadValues
19
+ } from "./chunk-CRTRMMJ7.js";
20
+
21
+ // src/atoms/pagination.tsx
22
+ import { useCallback, useEffect, useMemo, useState } from "react";
23
+ import { jsx, jsxs } from "react/jsx-runtime";
24
+ function Pagination(props) {
25
+ const { onChange, count = 0, siblingCount = 2 } = props;
26
+ const [page, setPage] = useState(() => props.page || props.defaultPage || 1);
27
+ const visibleItems = useMemo(() => {
28
+ let start = Math.max(1, page - siblingCount);
29
+ let end = Math.min(count, page + siblingCount);
30
+ if (page - siblingCount <= 0 && end < count) {
31
+ end = Math.min(count, end + Math.abs(page - siblingCount) + 1);
32
+ } else if (page + siblingCount > count && start > 1) {
33
+ start = Math.max(1, start - (page + siblingCount - count));
34
+ }
35
+ return Array.from({ length: end - start + 1 }, (_, i) => i + start);
36
+ }, [count, page, siblingCount]);
37
+ useEffect(() => {
38
+ onChange == null ? void 0 : onChange(page);
39
+ }, [onChange, page]);
40
+ useEffect(() => {
41
+ if (props.page) {
42
+ setPage(props.page);
43
+ }
44
+ }, [props.page]);
45
+ const prev = useMemo(() => {
46
+ const p = page - 1;
47
+ return p < 1 ? void 0 : p;
48
+ }, [page]);
49
+ const next = useMemo(() => {
50
+ const n = page + 1;
51
+ return n > count ? void 0 : n;
52
+ }, [count, page]);
53
+ const onClickPrev = useCallback(() => {
54
+ prev && setPage(prev);
55
+ }, [prev]);
56
+ const onClickNext = useCallback(() => {
57
+ next && setPage(next);
58
+ }, [next]);
59
+ const doublePrev = useMemo(() => {
60
+ if (!visibleItems.length) return;
61
+ return Math.max(0, visibleItems[0] - 1);
62
+ }, [visibleItems]);
63
+ const onClickDoublePrev = useCallback(() => {
64
+ doublePrev && setPage(doublePrev);
65
+ }, [doublePrev]);
66
+ const doubleNext = useMemo(() => {
67
+ if (!visibleItems.length) return;
68
+ const n = visibleItems[visibleItems.length - 1] + 1;
69
+ if (n > count) return;
70
+ return Math.min(count, n);
71
+ }, [count, visibleItems]);
72
+ const onClickDoubleNext = useCallback(() => {
73
+ doubleNext && setPage(doubleNext);
74
+ }, [doubleNext]);
75
+ const iconSize = {
76
+ height: 24,
77
+ width: 24
78
+ };
79
+ const moveButtonProps = {
80
+ variant: "ghost",
81
+ size: "large",
82
+ style: { borderRadius: "50%" }
83
+ };
84
+ return /* @__PURE__ */ jsxs(Flex, { align: "center", className: "tipp-pagination", children: [
85
+ /* @__PURE__ */ jsx(
86
+ IconButton,
87
+ __spreadProps(__spreadValues({
88
+ disabled: !doublePrev,
89
+ onClick: onClickDoublePrev
90
+ }, moveButtonProps), {
91
+ children: /* @__PURE__ */ jsx(DoubleArrowLeftIcon, __spreadValues({}, iconSize))
92
+ })
93
+ ),
94
+ /* @__PURE__ */ jsx(IconButton, __spreadProps(__spreadValues({ disabled: !prev, onClick: onClickPrev }, moveButtonProps), { children: /* @__PURE__ */ jsx(ChevronLeftIcon, __spreadValues({}, iconSize)) })),
95
+ /* @__PURE__ */ jsx(Flex, { gap: "1", children: visibleItems.map((item) => {
96
+ return /* @__PURE__ */ jsx(
97
+ "button",
98
+ {
99
+ className: `page-button ${item === page ? "active" : ""}`,
100
+ onClick: () => {
101
+ setPage(item);
102
+ },
103
+ type: "button",
104
+ children: /* @__PURE__ */ jsx(Typo, { variant: "body", children: item })
105
+ },
106
+ item
107
+ );
108
+ }) }),
109
+ /* @__PURE__ */ jsx(IconButton, __spreadProps(__spreadValues({ disabled: !next, onClick: onClickNext }, moveButtonProps), { children: /* @__PURE__ */ jsx(ChevronRightIcon, __spreadValues({}, iconSize)) })),
110
+ /* @__PURE__ */ jsx(
111
+ IconButton,
112
+ __spreadProps(__spreadValues({
113
+ disabled: !doubleNext,
114
+ onClick: onClickDoubleNext
115
+ }, moveButtonProps), {
116
+ children: /* @__PURE__ */ jsx(DoubleArrowRightIcon, __spreadValues({}, iconSize))
117
+ })
118
+ )
119
+ ] });
120
+ }
121
+
122
+ export {
123
+ Pagination
124
+ };
125
+ //# sourceMappingURL=chunk-ZKFNOCWD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/atoms/pagination.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from '../icon';\nimport type { IconButtonProps } from './icon-button';\nimport { IconButton } from './icon-button';\nimport { Flex } from './flex';\nimport { Typo } from './typo';\n\nexport interface PaginationProps {\n /** 현재 선택된 페이지, 1부터 시작 */\n page?: number;\n /** 기본 선택 페이지, page보다 낮은 우선 순위를 갖는다 */\n defaultPage?: number;\n /** 선택한 페이지 변경 이벤트 cb */\n onChange?: (page: number) => void;\n /** 전체 페이지의 수 */\n count?: number;\n /** 표시할 페이지 버튼의 개수 */\n siblingCount?: number;\n}\n\nexport function Pagination(props: PaginationProps): React.ReactNode {\n const { onChange, count = 0, siblingCount = 2 } = props;\n\n const [page, setPage] = useState(() => props.page || props.defaultPage || 1);\n\n const visibleItems = useMemo(() => {\n let start = Math.max(1, page - siblingCount);\n let end = Math.min(count, page + siblingCount);\n if (page - siblingCount <= 0 && end < count) {\n end = Math.min(count, end + Math.abs(page - siblingCount) + 1);\n } else if (page + siblingCount > count && start > 1) {\n start = Math.max(1, start - (page + siblingCount - count));\n }\n\n return Array.from({ length: end - start + 1 }, (_, i) => i + start);\n }, [count, page, siblingCount]);\n\n useEffect(() => {\n onChange?.(page);\n }, [onChange, page]);\n\n useEffect(() => {\n if (props.page) {\n setPage(props.page);\n }\n }, [props.page]);\n\n const prev = useMemo<number | undefined>(() => {\n const p = page - 1;\n return p < 1 ? undefined : p;\n }, [page]);\n\n const next = useMemo<number | undefined>(() => {\n const n = page + 1;\n return n > count ? undefined : n;\n }, [count, page]);\n\n const onClickPrev = useCallback(() => {\n prev && setPage(prev);\n }, [prev]);\n\n const onClickNext = useCallback(() => {\n next && setPage(next);\n }, [next]);\n\n const doublePrev = useMemo<number | undefined>(() => {\n if (!visibleItems.length) return;\n return Math.max(0, visibleItems[0] - 1);\n }, [visibleItems]);\n\n const onClickDoublePrev = useCallback(() => {\n doublePrev && setPage(doublePrev);\n }, [doublePrev]);\n\n const doubleNext = useMemo<number | undefined>(() => {\n if (!visibleItems.length) return;\n const n = visibleItems[visibleItems.length - 1] + 1;\n if (n > count) return;\n return Math.min(count, n);\n }, [count, visibleItems]);\n\n const onClickDoubleNext = useCallback(() => {\n doubleNext && setPage(doubleNext);\n }, [doubleNext]);\n\n const iconSize = {\n height: 24,\n width: 24,\n };\n\n const moveButtonProps: IconButtonProps = {\n variant: 'ghost',\n size: 'large',\n style: { borderRadius: '50%' },\n };\n\n return (\n <Flex align=\"center\" className=\"tipp-pagination\">\n <IconButton\n disabled={!doublePrev}\n onClick={onClickDoublePrev}\n {...moveButtonProps}\n >\n <DoubleArrowLeftIcon {...iconSize} />\n </IconButton>\n <IconButton disabled={!prev} onClick={onClickPrev} {...moveButtonProps}>\n <ChevronLeftIcon {...iconSize} />\n </IconButton>\n <Flex gap=\"1\">\n {visibleItems.map((item) => {\n return (\n <button\n className={`page-button ${item === page ? 'active' : ''}`}\n key={item}\n onClick={() => {\n setPage(item);\n }}\n type=\"button\"\n >\n <Typo variant=\"body\">{item}</Typo>\n </button>\n );\n })}\n </Flex>\n <IconButton disabled={!next} onClick={onClickNext} {...moveButtonProps}>\n <ChevronRightIcon {...iconSize} />\n </IconButton>\n <IconButton\n disabled={!doubleNext}\n onClick={onClickDoubleNext}\n {...moveButtonProps}\n >\n <DoubleArrowRightIcon {...iconSize} />\n </IconButton>\n </Flex>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,70 @@
1
+ import {
2
+ useCurriculumContext
3
+ } from "./chunk-Y7SJF3Y3.js";
4
+ import {
5
+ Flex
6
+ } from "./chunk-25HMMI7R.js";
7
+ import {
8
+ Button
9
+ } from "./chunk-ZVDAEY5Q.js";
10
+ import {
11
+ ResetIcon
12
+ } from "./chunk-LTEJYJUM.js";
13
+ import {
14
+ Typo
15
+ } from "./chunk-PMJIFLDT.js";
16
+
17
+ // src/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.tsx
18
+ import { useMemo } from "react";
19
+ import { jsx, jsxs } from "react/jsx-runtime";
20
+ function CurriculumAiTraning({
21
+ item
22
+ }) {
23
+ const { title, description, buttonTitle } = item;
24
+ const { curriculumCompleteMap, onActionButtonClick } = useCurriculumContext();
25
+ const done = useMemo(() => {
26
+ return Boolean(curriculumCompleteMap[item.uuid]);
27
+ }, [curriculumCompleteMap, item.uuid]);
28
+ const bgColor = done ? "var(--color-panel-solid)" : void 0;
29
+ return /* @__PURE__ */ jsxs(
30
+ Flex,
31
+ {
32
+ align: "center",
33
+ direction: "column",
34
+ height: "100%",
35
+ justify: "center",
36
+ style: {
37
+ backgroundImage: `url(https://tipp-coaching-live.s3.ap-northeast-2.amazonaws.com/images/curriculum_ai_bg.png)`,
38
+ backgroundPosition: "center",
39
+ backgroundSize: "cover",
40
+ backgroundRepeat: "no-repeat"
41
+ },
42
+ width: "100%",
43
+ children: [
44
+ /* @__PURE__ */ jsx(Typo, { color: "gray", weight: "bold", children: title }),
45
+ /* @__PURE__ */ jsx(Typo, { align: "center", as: "p", color: "gray", children: description }),
46
+ /* @__PURE__ */ jsxs(
47
+ Button,
48
+ {
49
+ mt: "3",
50
+ onClick: () => {
51
+ onActionButtonClick(item);
52
+ },
53
+ style: { minWidth: 232, backgroundColor: bgColor },
54
+ variant: done ? "outline" : "solid",
55
+ children: [
56
+ done ? "\uB2E4\uC2DC \uC5F0\uC2B5\uD558\uAE30" : buttonTitle || "\uC2DC\uC791\uD558\uAE30",
57
+ done ? /* @__PURE__ */ jsx(ResetIcon, {}) : null
58
+ ]
59
+ }
60
+ )
61
+ ]
62
+ }
63
+ );
64
+ }
65
+ var curriculum_ai_traning_default = CurriculumAiTraning;
66
+
67
+ export {
68
+ curriculum_ai_traning_default
69
+ };
70
+ //# sourceMappingURL=chunk-ZOITFRX7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport type { CurriculumAiTrainingContents } from '@/types/curriculumContents.type';\nimport { Button } from '@/atoms/button';\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport { ResetIcon } from '@/icon';\nimport { useCurriculumContext } from '../curriculum-context';\n\ninterface CurriculumAiTraningProps {\n item: CurriculumAiTrainingContents;\n}\n\nfunction CurriculumAiTraning({\n item,\n}: CurriculumAiTraningProps): React.ReactNode {\n const { title, description, buttonTitle } = item;\n const { curriculumCompleteMap, onActionButtonClick } = useCurriculumContext();\n\n const done = useMemo(() => {\n return Boolean(curriculumCompleteMap[item.uuid]);\n }, [curriculumCompleteMap, item.uuid]);\n\n const bgColor= done ? 'var(--color-panel-solid)' : undefined;\n\n return (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"100%\"\n justify=\"center\"\n style={{\n backgroundImage: `url(https://tipp-coaching-live.s3.ap-northeast-2.amazonaws.com/images/curriculum_ai_bg.png)`,\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n }}\n width=\"100%\"\n >\n <Typo color=\"gray\" weight=\"bold\">\n {title}\n </Typo>\n <Typo align=\"center\" as=\"p\" color=\"gray\">\n {description}\n </Typo>\n\n <Button\n mt=\"3\"\n onClick={() => { onActionButtonClick(item); }}\n style={{ minWidth: 232, backgroundColor: bgColor }}\n variant={done ? 'outline' : 'solid'}\n >\n {done ? '다시 연습하기' : buttonTitle || '시작하기'}\n {done ? <ResetIcon/> : null}\n </Button>\n \n </Flex>\n );\n}\n\nexport default CurriculumAiTraning;\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAAgB,eAAe;AAsCzB,cAOA,YAPA;AA1BN,SAAS,oBAAoB;AAAA,EAC3B;AACF,GAA8C;AAC5C,QAAM,EAAE,OAAO,aAAa,YAAY,IAAI;AAC5C,QAAM,EAAE,uBAAuB,oBAAoB,IAAI,qBAAqB;AAE5E,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO,QAAQ,sBAAsB,KAAK,IAAI,CAAC;AAAA,EACjD,GAAG,CAAC,uBAAuB,KAAK,IAAI,CAAC;AAErC,QAAM,UAAU,OAAO,6BAA6B;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAU;AAAA,MACV,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,MACpB;AAAA,MACA,OAAM;AAAA,MAEN;AAAA,4BAAC,QAAK,OAAM,QAAO,QAAO,QACvB,iBACH;AAAA,QACA,oBAAC,QAAK,OAAM,UAAS,IAAG,KAAI,OAAM,QAC/B,uBACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,SAAS,MAAM;AAAE,kCAAoB,IAAI;AAAA,YAAG;AAAA,YAC5C,OAAO,EAAE,UAAU,KAAK,iBAAiB,QAAQ;AAAA,YACjD,SAAS,OAAO,YAAY;AAAA,YAE3B;AAAA,qBAAO,0CAAY,eAAe;AAAA,cAClC,OAAO,oBAAC,aAAS,IAAK;AAAA;AAAA;AAAA,QACzB;AAAA;AAAA;AAAA,EAEF;AAEJ;AAEA,IAAO,gCAAQ;","names":[]}