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