@tipp/ui 2.3.32 → 2.3.34
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 +456 -198
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +102 -101
- package/dist/app/platform/coach-question-list.cjs +12 -4
- 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 +12 -4
- 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.js +5 -5
- package/dist/app/platform/edit-coaching-time.cjs +286 -28
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +82 -81
- package/dist/app/platform/edit-service-type.cjs +281 -23
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +83 -82
- package/dist/app/platform/goal-manage-card-edit.cjs +289 -31
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +82 -81
- package/dist/app/platform/goal-manage-card-read.cjs +12 -4
- 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 +314 -54
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +82 -81
- package/dist/app/platform/report-card.cjs +12 -4
- 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 +305 -47
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +83 -82
- package/dist/app/platform/session-card.cjs +331 -73
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +85 -84
- package/dist/app/platform/session-review-simple-read.cjs +12 -4
- 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 +12 -4
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +35 -35
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +12 -4
- 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 +12 -4
- 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 +12 -4
- 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 +12 -4
- 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 +12 -4
- 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/dropdown-menu.cjs +9 -1
- package/dist/atoms/dropdown-menu.cjs.map +1 -1
- package/dist/atoms/dropdown-menu.d.cts +4 -1
- package/dist/atoms/dropdown-menu.d.ts +4 -1
- package/dist/atoms/dropdown-menu.js +1 -1
- package/dist/atoms/field-error-wrapper.js +2 -2
- package/dist/atoms/index.cjs +15 -7
- 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.js +3 -3
- package/dist/{chunk-U3FBMFRL.js → chunk-24PLAIMJ.js} +15 -15
- package/dist/{chunk-5TZNUXBT.js → chunk-3GGJWSFK.js} +6 -6
- package/dist/{chunk-M2PVHXOE.js → chunk-3GQQQBJN.js} +4 -4
- package/dist/{chunk-DWBYAHIR.js → chunk-446FD3VT.js} +12 -12
- package/dist/{chunk-62HSZXVT.js → chunk-44VLRAHW.js} +6 -6
- package/dist/{chunk-YPEB36YK.js → chunk-4N2R7MWQ.js} +5 -5
- package/dist/{chunk-5J4YHHVX.js → chunk-52VTWFM6.js} +22 -8
- package/dist/chunk-52VTWFM6.js.map +1 -0
- package/dist/{chunk-W7TBPRHG.js → chunk-5V6MQUTB.js} +2 -2
- package/dist/{chunk-AHXS2MBK.js → chunk-5ZEQ33PC.js} +5 -5
- package/dist/{chunk-NTJLECYY.js → chunk-7I7PZF5L.js} +5 -5
- package/dist/{chunk-HTNDVNLQ.js → chunk-7ITDAUWI.js} +12 -12
- package/dist/{chunk-YADSNPMG.js → chunk-A7LYIUE7.js} +6 -6
- package/dist/{chunk-VK6INFSB.js → chunk-AQVIQODP.js} +4 -4
- package/dist/{chunk-VH37R5IH.js → chunk-BEIM5PNA.js} +4 -4
- package/dist/{chunk-HWK3UPZ3.js → chunk-BRNYILVO.js} +5 -5
- package/dist/{chunk-K3Q4XLCN.js → chunk-CQSM6JCO.js} +4 -4
- package/dist/{chunk-B5CKZFDM.js → chunk-D3KCPM4O.js} +4 -4
- package/dist/{chunk-QKZTZUWP.js → chunk-DZSRS37B.js} +7 -7
- package/dist/{chunk-6MQMVYEP.js → chunk-EGT45N6F.js} +4 -4
- package/dist/{chunk-GHRDK4GY.js → chunk-FBFKBV5Y.js} +16 -16
- package/dist/{chunk-OHNBVT52.js → chunk-G7NEBNHU.js} +4 -4
- package/dist/{chunk-ZFTQ2XBH.js → chunk-GFURX6GB.js} +4 -4
- package/dist/{chunk-EWFZXCMV.js → chunk-GGLDVUYU.js} +4 -4
- package/dist/{chunk-RM5CQ77X.js → chunk-GMNJ7FMU.js} +6 -6
- package/dist/{chunk-NIMLBANB.js → chunk-GTXHAZSU.js} +7 -7
- package/dist/{chunk-6HMQEUHX.js → chunk-GZNELGHF.js} +9 -9
- package/dist/{chunk-76PNGKCB.js → chunk-HAZBA3RU.js} +4 -4
- package/dist/{chunk-5WX7CODZ.js → chunk-HOMPMIZJ.js} +10 -10
- package/dist/{chunk-F7JSPN5P.js → chunk-IEYBSZA3.js} +12 -12
- package/dist/{chunk-SF2V5ZKJ.js → chunk-IK6FGLFU.js} +10 -10
- package/dist/{chunk-LFYQFYWO.js → chunk-ILCRQ36E.js} +10 -10
- package/dist/{chunk-ZA4NYPSW.js → chunk-JZVK4NDF.js} +5 -5
- package/dist/{chunk-AA6OYHCE.js → chunk-KCCYHT23.js} +4 -4
- package/dist/{chunk-2U7C7J5P.js → chunk-KMQIN5PA.js} +8 -8
- package/dist/{chunk-OILH5J7Q.js → chunk-KMVSJT6Y.js} +8 -8
- package/dist/chunk-LSDD4TAP.js +276 -0
- package/dist/chunk-LSDD4TAP.js.map +1 -0
- package/dist/{chunk-LIV5LHHZ.js → chunk-LT5C6QT7.js} +2 -2
- package/dist/{chunk-MFIOT62L.js → chunk-N4Y3QSUQ.js} +4 -4
- package/dist/{chunk-RDKURMDJ.js → chunk-NCNYKQU7.js} +7 -7
- package/dist/{chunk-QEDJOAP6.js → chunk-NHCUQ25T.js} +2 -2
- package/dist/{chunk-FVNXDLRU.js → chunk-O5MYSBA3.js} +2 -2
- package/dist/{chunk-TCFXG4AX.js → chunk-OHXP63A5.js} +5 -5
- package/dist/{chunk-M6C7IXCB.js → chunk-OXZXUPSB.js} +7 -7
- package/dist/{chunk-GTO7GG2K.js → chunk-P4KO43AP.js} +2 -2
- package/dist/{chunk-TJO4XDI2.js → chunk-P6C6KRXM.js} +5 -5
- package/dist/{chunk-7R65MUL6.js → chunk-PXPGCDNA.js} +4 -4
- package/dist/{chunk-64XYTE54.js → chunk-QFEZIPWJ.js} +5 -5
- package/dist/{chunk-5OLJJUMC.js → chunk-QIAMX2NR.js} +10 -10
- package/dist/{chunk-Z34HR7RE.js → chunk-QRI6ARS6.js} +4 -4
- package/dist/{chunk-CNW3YEAK.js → chunk-R3WM6HV6.js} +4 -4
- package/dist/{chunk-MJMHPIYX.js → chunk-SDEDXT7A.js} +4 -4
- package/dist/{chunk-D4U2MCJG.js → chunk-SMLC2O3V.js} +10 -2
- package/dist/chunk-SMLC2O3V.js.map +1 -0
- package/dist/{chunk-SO5HZSGJ.js → chunk-STBTV3GY.js} +9 -9
- package/dist/chunk-SYMOHU2B.js +1 -0
- package/dist/{chunk-6TQGX5ZU.js → chunk-TP7DOXLP.js} +2 -2
- package/dist/{chunk-WH6QD4SY.js → chunk-UGYH6IXU.js} +19 -19
- package/dist/{chunk-5JQOU3IR.js → chunk-UH6Q3TEK.js} +7 -7
- package/dist/{chunk-MTGKF6SO.js → chunk-UKV2WNLS.js} +9 -9
- package/dist/{chunk-CQL6FYW4.js → chunk-V4XCZSRN.js} +13 -13
- package/dist/{chunk-4PYFMD24.js → chunk-VKH2GRVW.js} +2 -2
- package/dist/{chunk-SAEPW5JF.js → chunk-VREM33BW.js} +6 -6
- package/dist/{chunk-ZOPYFDLO.js → chunk-VRJR534I.js} +4 -4
- package/dist/{chunk-JRT6KTBG.js → chunk-WMWXF44S.js} +4 -4
- package/dist/{chunk-JIJLOKVN.js → chunk-WV2HN6H4.js} +4 -4
- package/dist/{chunk-SLJLEPD2.js → chunk-YDHBTQX4.js} +11 -11
- package/dist/{chunk-CIQ7ELE6.js → chunk-YE3UDMTZ.js} +9 -9
- package/dist/{chunk-AYWPBD4T.js → chunk-YP3H5H4D.js} +9 -9
- package/dist/{chunk-652H6CLP.js → chunk-Z7SS2DHW.js} +6 -6
- package/dist/context/index.js +5 -5
- package/dist/index.cjs +562 -292
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +154 -150
- package/dist/molecules/autocomplete-textfield.cjs +417 -0
- package/dist/molecules/autocomplete-textfield.cjs.map +1 -0
- package/dist/molecules/autocomplete-textfield.d.cts +26 -0
- package/dist/molecules/autocomplete-textfield.d.ts +26 -0
- package/dist/molecules/autocomplete-textfield.js +12 -0
- package/dist/molecules/autocomplete-textfield.js.map +1 -0
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +18 -18
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +11 -11
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +2 -2
- 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.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +21 -21
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +3 -3
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +3 -3
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +23 -23
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +28 -28
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +7 -7
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +5 -5
- package/dist/molecules/curriculumV2/curriculum-sub-nav.js +4 -4
- package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
- package/dist/molecules/curriculumV2/index.js +35 -35
- package/dist/molecules/date-picker/date-picker-button.js +6 -6
- package/dist/molecules/date-picker/index.js +5 -5
- package/dist/molecules/description-json-render.js +5 -5
- package/dist/molecules/download-card.js +2 -2
- package/dist/molecules/dynamic-field.js +7 -7
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js +5 -5
- package/dist/molecules/dynamic-form-editor-field-list-panel.js +2 -2
- package/dist/molecules/dynamic-form-editor-issues-panel.js +2 -2
- package/dist/molecules/dynamic-form-editor-preview-panel.js +9 -9
- package/dist/molecules/dynamic-form-editor.js +17 -17
- package/dist/molecules/dynamic-form.js +8 -8
- package/dist/molecules/expand-table/index.cjs +12 -2
- package/dist/molecules/expand-table/index.cjs.map +1 -1
- package/dist/molecules/expand-table/index.d.cts +2 -0
- package/dist/molecules/expand-table/index.d.ts +2 -0
- package/dist/molecules/expand-table/index.js +5 -5
- package/dist/molecules/force-refresh.js +2 -2
- package/dist/molecules/ghost-post.js +4 -4
- package/dist/molecules/index.cjs +298 -2
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.d.cts +2 -0
- package/dist/molecules/index.d.ts +2 -0
- package/dist/molecules/index.js +78 -73
- 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.js +4 -4
- package/dist/molecules/tag-selector.js +5 -5
- package/dist/molecules/training-info-guideline.js +7 -7
- package/package.json +1 -1
- package/src/atoms/dropdown-menu.tsx +13 -0
- package/src/molecules/autocomplete-textfield.tsx +302 -0
- package/src/molecules/expand-table/index.tsx +16 -3
- package/src/molecules/index.ts +2 -1
- package/dist/chunk-5J4YHHVX.js.map +0 -1
- package/dist/chunk-D4U2MCJG.js.map +0 -1
- package/dist/chunk-YWYYPYBK.js +0 -1
- /package/dist/{chunk-U3FBMFRL.js.map → chunk-24PLAIMJ.js.map} +0 -0
- /package/dist/{chunk-5TZNUXBT.js.map → chunk-3GGJWSFK.js.map} +0 -0
- /package/dist/{chunk-M2PVHXOE.js.map → chunk-3GQQQBJN.js.map} +0 -0
- /package/dist/{chunk-DWBYAHIR.js.map → chunk-446FD3VT.js.map} +0 -0
- /package/dist/{chunk-62HSZXVT.js.map → chunk-44VLRAHW.js.map} +0 -0
- /package/dist/{chunk-YPEB36YK.js.map → chunk-4N2R7MWQ.js.map} +0 -0
- /package/dist/{chunk-W7TBPRHG.js.map → chunk-5V6MQUTB.js.map} +0 -0
- /package/dist/{chunk-AHXS2MBK.js.map → chunk-5ZEQ33PC.js.map} +0 -0
- /package/dist/{chunk-NTJLECYY.js.map → chunk-7I7PZF5L.js.map} +0 -0
- /package/dist/{chunk-HTNDVNLQ.js.map → chunk-7ITDAUWI.js.map} +0 -0
- /package/dist/{chunk-YADSNPMG.js.map → chunk-A7LYIUE7.js.map} +0 -0
- /package/dist/{chunk-VK6INFSB.js.map → chunk-AQVIQODP.js.map} +0 -0
- /package/dist/{chunk-VH37R5IH.js.map → chunk-BEIM5PNA.js.map} +0 -0
- /package/dist/{chunk-HWK3UPZ3.js.map → chunk-BRNYILVO.js.map} +0 -0
- /package/dist/{chunk-K3Q4XLCN.js.map → chunk-CQSM6JCO.js.map} +0 -0
- /package/dist/{chunk-B5CKZFDM.js.map → chunk-D3KCPM4O.js.map} +0 -0
- /package/dist/{chunk-QKZTZUWP.js.map → chunk-DZSRS37B.js.map} +0 -0
- /package/dist/{chunk-6MQMVYEP.js.map → chunk-EGT45N6F.js.map} +0 -0
- /package/dist/{chunk-GHRDK4GY.js.map → chunk-FBFKBV5Y.js.map} +0 -0
- /package/dist/{chunk-OHNBVT52.js.map → chunk-G7NEBNHU.js.map} +0 -0
- /package/dist/{chunk-ZFTQ2XBH.js.map → chunk-GFURX6GB.js.map} +0 -0
- /package/dist/{chunk-EWFZXCMV.js.map → chunk-GGLDVUYU.js.map} +0 -0
- /package/dist/{chunk-RM5CQ77X.js.map → chunk-GMNJ7FMU.js.map} +0 -0
- /package/dist/{chunk-NIMLBANB.js.map → chunk-GTXHAZSU.js.map} +0 -0
- /package/dist/{chunk-6HMQEUHX.js.map → chunk-GZNELGHF.js.map} +0 -0
- /package/dist/{chunk-76PNGKCB.js.map → chunk-HAZBA3RU.js.map} +0 -0
- /package/dist/{chunk-5WX7CODZ.js.map → chunk-HOMPMIZJ.js.map} +0 -0
- /package/dist/{chunk-F7JSPN5P.js.map → chunk-IEYBSZA3.js.map} +0 -0
- /package/dist/{chunk-SF2V5ZKJ.js.map → chunk-IK6FGLFU.js.map} +0 -0
- /package/dist/{chunk-LFYQFYWO.js.map → chunk-ILCRQ36E.js.map} +0 -0
- /package/dist/{chunk-ZA4NYPSW.js.map → chunk-JZVK4NDF.js.map} +0 -0
- /package/dist/{chunk-AA6OYHCE.js.map → chunk-KCCYHT23.js.map} +0 -0
- /package/dist/{chunk-2U7C7J5P.js.map → chunk-KMQIN5PA.js.map} +0 -0
- /package/dist/{chunk-OILH5J7Q.js.map → chunk-KMVSJT6Y.js.map} +0 -0
- /package/dist/{chunk-LIV5LHHZ.js.map → chunk-LT5C6QT7.js.map} +0 -0
- /package/dist/{chunk-MFIOT62L.js.map → chunk-N4Y3QSUQ.js.map} +0 -0
- /package/dist/{chunk-RDKURMDJ.js.map → chunk-NCNYKQU7.js.map} +0 -0
- /package/dist/{chunk-QEDJOAP6.js.map → chunk-NHCUQ25T.js.map} +0 -0
- /package/dist/{chunk-FVNXDLRU.js.map → chunk-O5MYSBA3.js.map} +0 -0
- /package/dist/{chunk-TCFXG4AX.js.map → chunk-OHXP63A5.js.map} +0 -0
- /package/dist/{chunk-M6C7IXCB.js.map → chunk-OXZXUPSB.js.map} +0 -0
- /package/dist/{chunk-GTO7GG2K.js.map → chunk-P4KO43AP.js.map} +0 -0
- /package/dist/{chunk-TJO4XDI2.js.map → chunk-P6C6KRXM.js.map} +0 -0
- /package/dist/{chunk-7R65MUL6.js.map → chunk-PXPGCDNA.js.map} +0 -0
- /package/dist/{chunk-64XYTE54.js.map → chunk-QFEZIPWJ.js.map} +0 -0
- /package/dist/{chunk-5OLJJUMC.js.map → chunk-QIAMX2NR.js.map} +0 -0
- /package/dist/{chunk-Z34HR7RE.js.map → chunk-QRI6ARS6.js.map} +0 -0
- /package/dist/{chunk-CNW3YEAK.js.map → chunk-R3WM6HV6.js.map} +0 -0
- /package/dist/{chunk-MJMHPIYX.js.map → chunk-SDEDXT7A.js.map} +0 -0
- /package/dist/{chunk-SO5HZSGJ.js.map → chunk-STBTV3GY.js.map} +0 -0
- /package/dist/{chunk-YWYYPYBK.js.map → chunk-SYMOHU2B.js.map} +0 -0
- /package/dist/{chunk-6TQGX5ZU.js.map → chunk-TP7DOXLP.js.map} +0 -0
- /package/dist/{chunk-WH6QD4SY.js.map → chunk-UGYH6IXU.js.map} +0 -0
- /package/dist/{chunk-5JQOU3IR.js.map → chunk-UH6Q3TEK.js.map} +0 -0
- /package/dist/{chunk-MTGKF6SO.js.map → chunk-UKV2WNLS.js.map} +0 -0
- /package/dist/{chunk-CQL6FYW4.js.map → chunk-V4XCZSRN.js.map} +0 -0
- /package/dist/{chunk-4PYFMD24.js.map → chunk-VKH2GRVW.js.map} +0 -0
- /package/dist/{chunk-SAEPW5JF.js.map → chunk-VREM33BW.js.map} +0 -0
- /package/dist/{chunk-ZOPYFDLO.js.map → chunk-VRJR534I.js.map} +0 -0
- /package/dist/{chunk-JRT6KTBG.js.map → chunk-WMWXF44S.js.map} +0 -0
- /package/dist/{chunk-JIJLOKVN.js.map → chunk-WV2HN6H4.js.map} +0 -0
- /package/dist/{chunk-SLJLEPD2.js.map → chunk-YDHBTQX4.js.map} +0 -0
- /package/dist/{chunk-CIQ7ELE6.js.map → chunk-YE3UDMTZ.js.map} +0 -0
- /package/dist/{chunk-AYWPBD4T.js.map → chunk-YP3H5H4D.js.map} +0 -0
- /package/dist/{chunk-652H6CLP.js.map → chunk-Z7SS2DHW.js.map} +0 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
var __objRest = (source, exclude) => {
|
|
24
|
+
var target = {};
|
|
25
|
+
for (var prop in source)
|
|
26
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
27
|
+
target[prop] = source[prop];
|
|
28
|
+
if (source != null && __getOwnPropSymbols)
|
|
29
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
30
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
}
|
|
33
|
+
return target;
|
|
34
|
+
};
|
|
35
|
+
var __export = (target, all) => {
|
|
36
|
+
for (var name in all)
|
|
37
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
38
|
+
};
|
|
39
|
+
var __copyProps = (to, from, except, desc) => {
|
|
40
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
41
|
+
for (let key of __getOwnPropNames(from))
|
|
42
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
43
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
44
|
+
}
|
|
45
|
+
return to;
|
|
46
|
+
};
|
|
47
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
48
|
+
|
|
49
|
+
// src/molecules/autocomplete-textfield.tsx
|
|
50
|
+
var autocomplete_textfield_exports = {};
|
|
51
|
+
__export(autocomplete_textfield_exports, {
|
|
52
|
+
AutocompleteTextfield: () => AutocompleteTextfield
|
|
53
|
+
});
|
|
54
|
+
module.exports = __toCommonJS(autocomplete_textfield_exports);
|
|
55
|
+
var import_react4 = require("react");
|
|
56
|
+
var import_themes4 = require("@radix-ui/themes");
|
|
57
|
+
|
|
58
|
+
// src/atoms/text-field.tsx
|
|
59
|
+
var import_themes = require("@radix-ui/themes");
|
|
60
|
+
var import_react = require("react");
|
|
61
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
62
|
+
var Root = (0, import_react.forwardRef)((props, ref) => {
|
|
63
|
+
const _a = props, { error, style, className } = _a, rest = __objRest(_a, ["error", "style", "className"]);
|
|
64
|
+
const fieldStyle = (0, import_react.useMemo)(() => {
|
|
65
|
+
if (!error) return style;
|
|
66
|
+
const errorStyle = {
|
|
67
|
+
boxShadow: "inset 0 0 0 var(--text-field-border-width) var(--error-11)"
|
|
68
|
+
};
|
|
69
|
+
return __spreadValues(__spreadValues({}, style || {}), errorStyle);
|
|
70
|
+
}, [error, style]);
|
|
71
|
+
const classNameStr = error ? `error ${className}` : className;
|
|
72
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
73
|
+
import_themes.TextField.Root,
|
|
74
|
+
__spreadValues({
|
|
75
|
+
className: classNameStr,
|
|
76
|
+
ref,
|
|
77
|
+
style: fieldStyle
|
|
78
|
+
}, rest)
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
Root.displayName = "TextField.Root";
|
|
82
|
+
var TextField = { Root, Slot: import_themes.TextField.Slot };
|
|
83
|
+
|
|
84
|
+
// src/atoms/dropdown-menu.tsx
|
|
85
|
+
var import_themes2 = require("@radix-ui/themes");
|
|
86
|
+
var import_react2 = require("react");
|
|
87
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
88
|
+
var Content = (0, import_react2.forwardRef)((props, ref) => {
|
|
89
|
+
const _a = props, { isNavigation, className } = _a, rest = __objRest(_a, ["isNavigation", "className"]);
|
|
90
|
+
const contentClassName = (0, import_react2.useMemo)(() => {
|
|
91
|
+
const cls = isNavigation ? "dropdown-navigation" : "";
|
|
92
|
+
return [cls, className].join(" ");
|
|
93
|
+
}, [isNavigation, className]);
|
|
94
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
95
|
+
import_themes2.DropdownMenu.Content,
|
|
96
|
+
__spreadProps(__spreadValues({
|
|
97
|
+
ref
|
|
98
|
+
}, rest), {
|
|
99
|
+
className: contentClassName
|
|
100
|
+
})
|
|
101
|
+
);
|
|
102
|
+
});
|
|
103
|
+
Content.displayName = "DropdownMenu.Content";
|
|
104
|
+
var Trigger = (0, import_react2.forwardRef)(
|
|
105
|
+
(_a, ref) => {
|
|
106
|
+
var _b = _a, { asChild: _asChild } = _b, props = __objRest(_b, ["asChild"]);
|
|
107
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes2.DropdownMenu.Trigger, __spreadValues({ ref }, props));
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
Trigger.displayName = "DropdownMenu.Trigger";
|
|
111
|
+
var DropdownMenu = __spreadProps(__spreadValues({}, import_themes2.DropdownMenu), {
|
|
112
|
+
Content,
|
|
113
|
+
Trigger
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// src/atoms/typo.tsx
|
|
117
|
+
var import_themes3 = require("@radix-ui/themes");
|
|
118
|
+
var import_react3 = require("react");
|
|
119
|
+
|
|
120
|
+
// src/utils/map-with-responsive.ts
|
|
121
|
+
var mapWithResponsive = (args) => {
|
|
122
|
+
const { value, mapFn } = args;
|
|
123
|
+
if (typeof value === "string") {
|
|
124
|
+
return mapFn(value);
|
|
125
|
+
}
|
|
126
|
+
;
|
|
127
|
+
if (typeof value === "object") {
|
|
128
|
+
const newObj = {};
|
|
129
|
+
let key;
|
|
130
|
+
for (key in value) {
|
|
131
|
+
newObj[key] = mapFn(value[key]);
|
|
132
|
+
}
|
|
133
|
+
return newObj;
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// src/atoms/typo.tsx
|
|
139
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
140
|
+
var Typo = (0, import_react3.forwardRef)(
|
|
141
|
+
(props, ref) => {
|
|
142
|
+
const _a = props, { size, variant, children } = _a, rest = __objRest(_a, ["size", "variant", "children"]);
|
|
143
|
+
const radixSize = (0, import_react3.useMemo)(() => {
|
|
144
|
+
if (size !== void 0) return size;
|
|
145
|
+
if (variant === void 0) return "2";
|
|
146
|
+
return mapWithResponsive({
|
|
147
|
+
value: variant,
|
|
148
|
+
mapFn: (variantValue) => {
|
|
149
|
+
switch (variantValue) {
|
|
150
|
+
case "caption":
|
|
151
|
+
return "1";
|
|
152
|
+
case "subtitle":
|
|
153
|
+
return "3";
|
|
154
|
+
case "body":
|
|
155
|
+
default:
|
|
156
|
+
return "2";
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}, [size, variant]);
|
|
161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes3.Text, __spreadProps(__spreadValues({}, rest), { ref, size: radixSize, children }));
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
Typo.displayName = "Typo";
|
|
165
|
+
|
|
166
|
+
// src/molecules/autocomplete-textfield.tsx
|
|
167
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
168
|
+
var AutocompleteTextfield = (0, import_react4.forwardRef)(
|
|
169
|
+
(_a, ref) => {
|
|
170
|
+
var _b = _a, {
|
|
171
|
+
options,
|
|
172
|
+
value: externalValue,
|
|
173
|
+
onChange,
|
|
174
|
+
onSelect,
|
|
175
|
+
placeholder,
|
|
176
|
+
emptyMessage = "\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
177
|
+
maxItems = 10,
|
|
178
|
+
slotLeft,
|
|
179
|
+
slotRight,
|
|
180
|
+
error
|
|
181
|
+
} = _b, rest = __objRest(_b, [
|
|
182
|
+
"options",
|
|
183
|
+
"value",
|
|
184
|
+
"onChange",
|
|
185
|
+
"onSelect",
|
|
186
|
+
"placeholder",
|
|
187
|
+
"emptyMessage",
|
|
188
|
+
"maxItems",
|
|
189
|
+
"slotLeft",
|
|
190
|
+
"slotRight",
|
|
191
|
+
"error"
|
|
192
|
+
]);
|
|
193
|
+
const isControlled = externalValue !== void 0;
|
|
194
|
+
const [internalValue, setInternalValue] = (0, import_react4.useState)("");
|
|
195
|
+
const inputValue = isControlled ? externalValue : internalValue;
|
|
196
|
+
const [open, setOpen] = (0, import_react4.useState)(false);
|
|
197
|
+
const [highlightedIndex, setHighlightedIndex] = (0, import_react4.useState)(-1);
|
|
198
|
+
const inputRef = (0, import_react4.useRef)(null);
|
|
199
|
+
const listRef = (0, import_react4.useRef)(null);
|
|
200
|
+
const listboxId = (0, import_react4.useId)();
|
|
201
|
+
const justSelectedRef = (0, import_react4.useRef)(false);
|
|
202
|
+
const filtered = options.filter(
|
|
203
|
+
(opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase())
|
|
204
|
+
).slice(0, maxItems);
|
|
205
|
+
const handleInputChange = (0, import_react4.useCallback)(
|
|
206
|
+
(e) => {
|
|
207
|
+
const next = e.target.value;
|
|
208
|
+
if (!isControlled) setInternalValue(next);
|
|
209
|
+
onChange == null ? void 0 : onChange(next);
|
|
210
|
+
const nextFiltered = options.filter((opt) => opt.label.toLowerCase().includes(next.toLowerCase())).slice(0, maxItems);
|
|
211
|
+
setOpen(nextFiltered.length > 0 || emptyMessage !== null);
|
|
212
|
+
setHighlightedIndex(-1);
|
|
213
|
+
},
|
|
214
|
+
[isControlled, onChange, options, maxItems, emptyMessage]
|
|
215
|
+
);
|
|
216
|
+
const handleSelect = (0, import_react4.useCallback)(
|
|
217
|
+
(option) => {
|
|
218
|
+
var _a2;
|
|
219
|
+
if (!isControlled) setInternalValue(option.label);
|
|
220
|
+
onChange == null ? void 0 : onChange(option.label);
|
|
221
|
+
onSelect == null ? void 0 : onSelect(option);
|
|
222
|
+
setOpen(false);
|
|
223
|
+
setHighlightedIndex(-1);
|
|
224
|
+
justSelectedRef.current = true;
|
|
225
|
+
(_a2 = inputRef.current) == null ? void 0 : _a2.focus();
|
|
226
|
+
},
|
|
227
|
+
[isControlled, onChange, onSelect]
|
|
228
|
+
);
|
|
229
|
+
const handleFocus = (0, import_react4.useCallback)(() => {
|
|
230
|
+
if (justSelectedRef.current) {
|
|
231
|
+
justSelectedRef.current = false;
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const currentFiltered = options.filter((opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase())).slice(0, maxItems);
|
|
235
|
+
setOpen(currentFiltered.length > 0 || emptyMessage !== null);
|
|
236
|
+
}, [options, inputValue, maxItems, emptyMessage]);
|
|
237
|
+
const handleBlur = (0, import_react4.useCallback)((e) => {
|
|
238
|
+
var _a2, _b2;
|
|
239
|
+
if (e.relatedTarget && ((_b2 = (_a2 = inputRef.current) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b2.contains(e.relatedTarget))) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
setOpen(false);
|
|
243
|
+
setHighlightedIndex(-1);
|
|
244
|
+
}, []);
|
|
245
|
+
const handleKeyDown = (0, import_react4.useCallback)(
|
|
246
|
+
(e) => {
|
|
247
|
+
if (!open) {
|
|
248
|
+
if (e.key === "ArrowDown" || e.key === "ArrowUp") {
|
|
249
|
+
setOpen(true);
|
|
250
|
+
setHighlightedIndex(0);
|
|
251
|
+
e.preventDefault();
|
|
252
|
+
}
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
switch (e.key) {
|
|
256
|
+
case "ArrowDown":
|
|
257
|
+
e.preventDefault();
|
|
258
|
+
setHighlightedIndex(
|
|
259
|
+
(prev) => prev < filtered.length - 1 ? prev + 1 : 0
|
|
260
|
+
);
|
|
261
|
+
break;
|
|
262
|
+
case "ArrowUp":
|
|
263
|
+
e.preventDefault();
|
|
264
|
+
setHighlightedIndex(
|
|
265
|
+
(prev) => prev > 0 ? prev - 1 : filtered.length - 1
|
|
266
|
+
);
|
|
267
|
+
break;
|
|
268
|
+
case "Enter":
|
|
269
|
+
e.preventDefault();
|
|
270
|
+
if (highlightedIndex >= 0 && filtered[highlightedIndex]) {
|
|
271
|
+
handleSelect(filtered[highlightedIndex]);
|
|
272
|
+
}
|
|
273
|
+
break;
|
|
274
|
+
case "Escape":
|
|
275
|
+
setOpen(false);
|
|
276
|
+
setHighlightedIndex(-1);
|
|
277
|
+
break;
|
|
278
|
+
case "Tab":
|
|
279
|
+
setOpen(false);
|
|
280
|
+
setHighlightedIndex(-1);
|
|
281
|
+
break;
|
|
282
|
+
default:
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
[open, filtered, highlightedIndex, handleSelect]
|
|
287
|
+
);
|
|
288
|
+
(0, import_react4.useEffect)(() => {
|
|
289
|
+
if (!listRef.current || highlightedIndex < 0) return;
|
|
290
|
+
const item = listRef.current.children[highlightedIndex];
|
|
291
|
+
item.scrollIntoView({ block: "nearest" });
|
|
292
|
+
}, [highlightedIndex]);
|
|
293
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_themes4.Box, { position: "relative", style: { width: "100%" }, children: [
|
|
294
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
295
|
+
TextField.Root,
|
|
296
|
+
__spreadProps(__spreadValues({
|
|
297
|
+
"aria-activedescendant": open && highlightedIndex >= 0 ? `${listboxId}-option-${highlightedIndex}` : void 0,
|
|
298
|
+
"aria-autocomplete": "list",
|
|
299
|
+
"aria-controls": open ? listboxId : void 0,
|
|
300
|
+
"aria-expanded": open,
|
|
301
|
+
error,
|
|
302
|
+
onBlur: handleBlur,
|
|
303
|
+
onChange: handleInputChange,
|
|
304
|
+
onFocus: handleFocus,
|
|
305
|
+
onKeyDown: handleKeyDown,
|
|
306
|
+
placeholder,
|
|
307
|
+
ref: (node) => {
|
|
308
|
+
inputRef.current = node;
|
|
309
|
+
if (typeof ref === "function") {
|
|
310
|
+
ref(node);
|
|
311
|
+
} else if (ref) {
|
|
312
|
+
ref.current = node;
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
role: "combobox",
|
|
316
|
+
style: { width: "100%" },
|
|
317
|
+
value: inputValue
|
|
318
|
+
}, rest), {
|
|
319
|
+
children: [
|
|
320
|
+
slotLeft && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TextField.Slot, { side: "left", children: slotLeft }),
|
|
321
|
+
slotRight && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TextField.Slot, { side: "right", children: slotRight })
|
|
322
|
+
]
|
|
323
|
+
})
|
|
324
|
+
),
|
|
325
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
326
|
+
DropdownMenu.Root,
|
|
327
|
+
{
|
|
328
|
+
modal: false,
|
|
329
|
+
onOpenChange: (nextOpen) => {
|
|
330
|
+
if (!nextOpen && document.activeElement !== inputRef.current) {
|
|
331
|
+
setOpen(false);
|
|
332
|
+
setHighlightedIndex(-1);
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
open,
|
|
336
|
+
children: [
|
|
337
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
338
|
+
"span",
|
|
339
|
+
{
|
|
340
|
+
"aria-hidden": "true",
|
|
341
|
+
style: {
|
|
342
|
+
bottom: 0,
|
|
343
|
+
height: 0,
|
|
344
|
+
left: 0,
|
|
345
|
+
opacity: 0,
|
|
346
|
+
pointerEvents: "none",
|
|
347
|
+
position: "absolute",
|
|
348
|
+
width: "100%"
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
) }),
|
|
352
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
353
|
+
DropdownMenu.Content,
|
|
354
|
+
{
|
|
355
|
+
align: "start",
|
|
356
|
+
onCloseAutoFocus: (e) => {
|
|
357
|
+
e.preventDefault();
|
|
358
|
+
},
|
|
359
|
+
onOpenAutoFocus: (e) => {
|
|
360
|
+
e.preventDefault();
|
|
361
|
+
},
|
|
362
|
+
sideOffset: 4,
|
|
363
|
+
style: {
|
|
364
|
+
maxHeight: 240,
|
|
365
|
+
overflowY: "auto",
|
|
366
|
+
padding: 0,
|
|
367
|
+
width: "var(--radix-dropdown-menu-trigger-width)"
|
|
368
|
+
},
|
|
369
|
+
children: filtered.length === 0 && emptyMessage !== null ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes4.Box, { px: "2", py: "2", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Typo, { color: "gray", children: emptyMessage }) }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
370
|
+
"ul",
|
|
371
|
+
{
|
|
372
|
+
id: listboxId,
|
|
373
|
+
ref: listRef,
|
|
374
|
+
role: "listbox",
|
|
375
|
+
style: { listStyle: "none", margin: 0, padding: 0 },
|
|
376
|
+
children: filtered.map((option, index) => {
|
|
377
|
+
const isHighlighted = index === highlightedIndex;
|
|
378
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
379
|
+
"li",
|
|
380
|
+
{
|
|
381
|
+
"aria-selected": isHighlighted,
|
|
382
|
+
id: `${listboxId}-option-${index}`,
|
|
383
|
+
onMouseEnter: () => {
|
|
384
|
+
setHighlightedIndex(index);
|
|
385
|
+
},
|
|
386
|
+
onPointerDown: (e) => {
|
|
387
|
+
e.preventDefault();
|
|
388
|
+
handleSelect(option);
|
|
389
|
+
},
|
|
390
|
+
role: "option",
|
|
391
|
+
style: {
|
|
392
|
+
padding: "var(--spacing-4) var(--spacing-6)",
|
|
393
|
+
cursor: "pointer",
|
|
394
|
+
backgroundColor: isHighlighted ? "var(--accent-3)" : "transparent",
|
|
395
|
+
transition: "background-color 80ms"
|
|
396
|
+
},
|
|
397
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Typo, { variant: "body", children: option.label })
|
|
398
|
+
},
|
|
399
|
+
option.value
|
|
400
|
+
);
|
|
401
|
+
})
|
|
402
|
+
}
|
|
403
|
+
)
|
|
404
|
+
}
|
|
405
|
+
)
|
|
406
|
+
]
|
|
407
|
+
}
|
|
408
|
+
)
|
|
409
|
+
] });
|
|
410
|
+
}
|
|
411
|
+
);
|
|
412
|
+
AutocompleteTextfield.displayName = "AutocompleteTextfield";
|
|
413
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
414
|
+
0 && (module.exports = {
|
|
415
|
+
AutocompleteTextfield
|
|
416
|
+
});
|
|
417
|
+
//# sourceMappingURL=autocomplete-textfield.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/molecules/autocomplete-textfield.tsx","../../src/atoms/text-field.tsx","../../src/atoms/dropdown-menu.tsx","../../src/atoms/typo.tsx","../../src/utils/map-with-responsive.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Box } from '@radix-ui/themes';\nimport { TextField, type RootProps as TextFieldRootProps } from '../atoms/text-field';\nimport { DropdownMenu } from '../atoms/dropdown-menu';\nimport { Typo } from '../atoms/typo';\n\nexport interface AutocompleteOption {\n label: string;\n value: string;\n}\n\nexport interface AutocompleteTextfieldProps\n extends Omit<TextFieldRootProps, 'value' | 'onChange' | 'onSelect'> {\n options: AutocompleteOption[];\n value?: string;\n onChange?: (value: string) => void;\n onSelect?: (option: AutocompleteOption) => void;\n placeholder?: string;\n /** 빈 결과일 때 표시할 메시지. null이면 빈 결과 시 드롭다운을 표시하지 않음 */\n emptyMessage?: string | null;\n /** 최대 표시 항목 수 (기본값: 10) */\n maxItems?: number;\n /** TextField 왼쪽 슬롯 (아이콘 등) */\n slotLeft?: React.ReactNode;\n /** TextField 오른쪽 슬롯 (아이콘 등) */\n slotRight?: React.ReactNode;\n}\n\nexport const AutocompleteTextfield = forwardRef<\n HTMLInputElement,\n AutocompleteTextfieldProps\n>(\n (\n {\n options,\n value: externalValue,\n onChange,\n onSelect,\n placeholder,\n emptyMessage = '검색 결과가 없습니다.',\n maxItems = 10,\n slotLeft,\n slotRight,\n error,\n ...rest\n },\n ref\n ): React.ReactElement => {\n const isControlled = externalValue !== undefined;\n const [internalValue, setInternalValue] = useState('');\n const inputValue = isControlled ? externalValue : internalValue;\n\n const [open, setOpen] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLUListElement>(null);\n const listboxId = useId();\n const justSelectedRef = useRef(false);\n\n const filtered = options\n .filter((opt: AutocompleteOption) =>\n opt.label.toLowerCase().includes(inputValue.toLowerCase())\n )\n .slice(0, maxItems);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value;\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n const nextFiltered = options\n .filter((opt) => opt.label.toLowerCase().includes(next.toLowerCase()))\n .slice(0, maxItems);\n setOpen(nextFiltered.length > 0 || emptyMessage !== null);\n setHighlightedIndex(-1);\n },\n [isControlled, onChange, options, maxItems, emptyMessage]\n );\n\n const handleSelect = useCallback(\n (option: AutocompleteOption) => {\n if (!isControlled) setInternalValue(option.label);\n onChange?.(option.label);\n onSelect?.(option);\n setOpen(false);\n setHighlightedIndex(-1);\n justSelectedRef.current = true;\n inputRef.current?.focus();\n },\n [isControlled, onChange, onSelect]\n );\n\n const handleFocus = useCallback(() => {\n if (justSelectedRef.current) {\n justSelectedRef.current = false;\n return;\n }\n const currentFiltered = options\n .filter((opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase()))\n .slice(0, maxItems);\n setOpen(currentFiltered.length > 0 || emptyMessage !== null);\n }, [options, inputValue, maxItems, emptyMessage]);\n\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n // 포커스가 dropdown content 내부로 이동한 경우 닫지 않음\n if (e.relatedTarget && inputRef.current?.parentElement?.contains(e.relatedTarget as Node)) {\n return;\n }\n setOpen(false);\n setHighlightedIndex(-1);\n }, []);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!open) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n setOpen(true);\n setHighlightedIndex(0);\n e.preventDefault();\n }\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n setHighlightedIndex((prev) =>\n prev < filtered.length - 1 ? prev + 1 : 0\n );\n break;\n case 'ArrowUp':\n e.preventDefault();\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filtered.length - 1\n );\n break;\n case 'Enter':\n e.preventDefault();\n if (highlightedIndex >= 0 && filtered[highlightedIndex]) {\n handleSelect(filtered[highlightedIndex]);\n }\n break;\n case 'Escape':\n setOpen(false);\n setHighlightedIndex(-1);\n break;\n case 'Tab':\n setOpen(false);\n setHighlightedIndex(-1);\n break;\n default:\n break;\n }\n },\n [open, filtered, highlightedIndex, handleSelect]\n );\n\n // 하이라이트 항목을 리스트 뷰에 스크롤\n useEffect(() => {\n if (!listRef.current || highlightedIndex < 0) return;\n const item = listRef.current.children[highlightedIndex];\n (item as HTMLElement).scrollIntoView({ block: 'nearest' });\n }, [highlightedIndex]);\n\n return (\n <Box position=\"relative\" style={{ width: '100%' }}>\n <TextField.Root\n aria-activedescendant={\n open && highlightedIndex >= 0\n ? `${listboxId}-option-${highlightedIndex}`\n : undefined\n }\n aria-autocomplete=\"list\"\n aria-controls={open ? listboxId : undefined}\n aria-expanded={open}\n error={error}\n onBlur={handleBlur}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={(node) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n }\n }}\n role=\"combobox\"\n style={{ width: '100%' }}\n value={inputValue}\n {...rest}\n >\n {slotLeft && <TextField.Slot side=\"left\">{slotLeft}</TextField.Slot>}\n {slotRight && <TextField.Slot side=\"right\">{slotRight}</TextField.Slot>}\n </TextField.Root>\n\n {/* DropdownMenu.Trigger는 포지셔닝 앵커 전용으로 사용 (비대화형) */}\n <DropdownMenu.Root\n modal={false}\n onOpenChange={(nextOpen) => {\n if (!nextOpen && document.activeElement !== inputRef.current) {\n setOpen(false);\n setHighlightedIndex(-1);\n }\n }}\n open={open}\n >\n <DropdownMenu.Trigger asChild>\n <span\n aria-hidden=\"true\"\n style={{\n bottom: 0,\n height: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none',\n position: 'absolute',\n width: '100%',\n }}\n />\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content\n align=\"start\"\n onCloseAutoFocus={(e: Event) => {\n e.preventDefault();\n }}\n onOpenAutoFocus={(e: Event) => {\n e.preventDefault();\n }}\n sideOffset={4}\n style={{\n maxHeight: 240,\n overflowY: 'auto',\n padding: 0,\n width: 'var(--radix-dropdown-menu-trigger-width)',\n }}\n >\n {filtered.length === 0 && emptyMessage !== null ? (\n <Box px=\"2\" py=\"2\">\n <Typo color=\"gray\">\n {emptyMessage}\n </Typo>\n </Box>\n ) : (\n <ul\n id={listboxId}\n ref={listRef}\n role=\"listbox\"\n style={{ listStyle: 'none', margin: 0, padding: 0 }}\n >\n {filtered.map((option, index) => {\n const isHighlighted = index === highlightedIndex;\n return (\n <li\n aria-selected={isHighlighted}\n id={`${listboxId}-option-${index}`}\n key={option.value}\n onMouseEnter={() => {\n setHighlightedIndex(index);\n }}\n onPointerDown={(e) => {\n // blur 전에 선택되도록 pointerdown 사용\n e.preventDefault();\n handleSelect(option);\n }}\n role=\"option\"\n style={{\n padding: 'var(--spacing-4) var(--spacing-6)',\n cursor: 'pointer',\n backgroundColor: isHighlighted\n ? 'var(--accent-3)'\n : 'transparent',\n transition: 'background-color 80ms',\n }}\n >\n <Typo variant=\"body\">{option.label}</Typo>\n </li>\n );\n })}\n </ul>\n )}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Box>\n );\n }\n);\n\nAutocompleteTextfield.displayName = 'AutocompleteTextfield';\n","import { TextField as RTextField } from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype RSlotProps = RTextField.SlotProps;\n\ntype RootProps = RTextField.RootProps & { error?: boolean };\n\nconst Root = forwardRef<\n HTMLInputElement,\n RTextField.RootProps & { error?: boolean }\n>((props, ref) => {\n const { error, style, className, ...rest } = props;\n\n const fieldStyle = useMemo(() => {\n if (!error) return style;\n const errorStyle = {\n boxShadow: 'inset 0 0 0 var(--text-field-border-width) var(--error-11)',\n };\n\n return { ...(style || {}), ...errorStyle };\n }, [error, style]);\n\n const classNameStr = error ? `error ${className}` : className;\n return (\n <RTextField.Root\n className={classNameStr}\n ref={ref}\n style={fieldStyle}\n {...rest}\n />\n );\n});\n\nRoot.displayName = 'TextField.Root';\n\nconst TextField = { Root, Slot: RTextField.Slot };\n\nexport { TextField };\nexport type { RootProps, RSlotProps as SlotProps };\n","import { DropdownMenu as RadixDropdownMenu } from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype ContentProps = RadixDropdownMenu.ContentProps & {\n isNavigation?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n};\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>((props, ref) => {\n const { isNavigation, className, ...rest } = props;\n const contentClassName = useMemo(() => {\n const cls = isNavigation ? 'dropdown-navigation' : '';\n return [cls, className].join(' ');\n }, [isNavigation, className]);\n\n return (\n <RadixDropdownMenu.Content\n ref={ref}\n {...rest}\n className={contentClassName}\n />\n );\n});\n\nContent.displayName = 'DropdownMenu.Content';\n\n/** @radix-ui/themes의 DropdownMenu.Trigger는 asChild 타입이 누락되어 있어 별도로 확장 */\ntype TriggerProps = RadixDropdownMenu.TriggerProps & { asChild?: boolean };\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(\n ({ asChild: _asChild, ...props }, ref) => (\n <RadixDropdownMenu.Trigger ref={ref} {...props} />\n ),\n);\n\nTrigger.displayName = 'DropdownMenu.Trigger';\n\nexport const DropdownMenu = {\n ...RadixDropdownMenu,\n Content,\n Trigger,\n};\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\n\nexport type TypoProps = RadixTextProps & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const { size, variant, children, ...rest } = props;\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n\n if (variant === undefined) return '2';\n\n return mapWithResponsive({\n value: variant,\n mapFn: (variantValue?: 'body' | 'caption' | 'subtitle') => {\n switch (variantValue) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n },\n });\n }, [size, variant]);\n\n return (\n <RadixText {...rest} ref={ref} size={radixSize}>\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n","import type { Breakpoint, Responsive } from \"@radix-ui/themes/props\";\n\nexport const mapWithResponsive = <T extends string,K extends string>(\n args: {value: Responsive<T>, mapFn: (value?:T)=>K |undefined}\n): Responsive<K> | undefined => {\n const {value, mapFn} = args;\n if(typeof value === 'string'){\n return mapFn(value);\n };\n \n if(typeof value === 'object'){\n const newObj: Partial<Record<Breakpoint, K>> = {};\n let key: Breakpoint;\n for(key in value){\n newObj[key] = mapFn(value[key]);\n }\n return newObj;\n }\n return value;\n};\n"],"mappings":"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","names":["import_react","import_themes","RTextField","import_themes","import_react","import_jsx_runtime","RadixDropdownMenu","import_themes","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","_a","_b"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { RootProps } from '../atoms/text-field.cjs';
|
|
3
|
+
import '@radix-ui/themes';
|
|
4
|
+
|
|
5
|
+
interface AutocompleteOption {
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}
|
|
9
|
+
interface AutocompleteTextfieldProps extends Omit<RootProps, 'value' | 'onChange' | 'onSelect'> {
|
|
10
|
+
options: AutocompleteOption[];
|
|
11
|
+
value?: string;
|
|
12
|
+
onChange?: (value: string) => void;
|
|
13
|
+
onSelect?: (option: AutocompleteOption) => void;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
/** 빈 결과일 때 표시할 메시지. null이면 빈 결과 시 드롭다운을 표시하지 않음 */
|
|
16
|
+
emptyMessage?: string | null;
|
|
17
|
+
/** 최대 표시 항목 수 (기본값: 10) */
|
|
18
|
+
maxItems?: number;
|
|
19
|
+
/** TextField 왼쪽 슬롯 (아이콘 등) */
|
|
20
|
+
slotLeft?: React__default.ReactNode;
|
|
21
|
+
/** TextField 오른쪽 슬롯 (아이콘 등) */
|
|
22
|
+
slotRight?: React__default.ReactNode;
|
|
23
|
+
}
|
|
24
|
+
declare const AutocompleteTextfield: React__default.ForwardRefExoticComponent<AutocompleteTextfieldProps & React__default.RefAttributes<HTMLInputElement>>;
|
|
25
|
+
|
|
26
|
+
export { type AutocompleteOption, AutocompleteTextfield, type AutocompleteTextfieldProps };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { RootProps } from '../atoms/text-field.js';
|
|
3
|
+
import '@radix-ui/themes';
|
|
4
|
+
|
|
5
|
+
interface AutocompleteOption {
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}
|
|
9
|
+
interface AutocompleteTextfieldProps extends Omit<RootProps, 'value' | 'onChange' | 'onSelect'> {
|
|
10
|
+
options: AutocompleteOption[];
|
|
11
|
+
value?: string;
|
|
12
|
+
onChange?: (value: string) => void;
|
|
13
|
+
onSelect?: (option: AutocompleteOption) => void;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
/** 빈 결과일 때 표시할 메시지. null이면 빈 결과 시 드롭다운을 표시하지 않음 */
|
|
16
|
+
emptyMessage?: string | null;
|
|
17
|
+
/** 최대 표시 항목 수 (기본값: 10) */
|
|
18
|
+
maxItems?: number;
|
|
19
|
+
/** TextField 왼쪽 슬롯 (아이콘 등) */
|
|
20
|
+
slotLeft?: React__default.ReactNode;
|
|
21
|
+
/** TextField 오른쪽 슬롯 (아이콘 등) */
|
|
22
|
+
slotRight?: React__default.ReactNode;
|
|
23
|
+
}
|
|
24
|
+
declare const AutocompleteTextfield: React__default.ForwardRefExoticComponent<AutocompleteTextfieldProps & React__default.RefAttributes<HTMLInputElement>>;
|
|
25
|
+
|
|
26
|
+
export { type AutocompleteOption, AutocompleteTextfield, type AutocompleteTextfieldProps };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AutocompleteTextfield
|
|
3
|
+
} from "../chunk-LSDD4TAP.js";
|
|
4
|
+
import "../chunk-6NPTJBFE.js";
|
|
5
|
+
import "../chunk-SMLC2O3V.js";
|
|
6
|
+
import "../chunk-PMJIFLDT.js";
|
|
7
|
+
import "../chunk-LDBWASUA.js";
|
|
8
|
+
import "../chunk-CRTRMMJ7.js";
|
|
9
|
+
export {
|
|
10
|
+
AutocompleteTextfield
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=autocomplete-textfield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js
CHANGED
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ReviewQuestion_default
|
|
3
|
-
} from "../../../../../chunk-
|
|
4
|
-
import "../../../../../chunk-
|
|
5
|
-
import "../../../../../chunk-
|
|
6
|
-
import "../../../../../chunk-
|
|
7
|
-
import "../../../../../chunk-
|
|
8
|
-
import "../../../../../chunk-
|
|
9
|
-
import "../../../../../chunk-
|
|
10
|
-
import "../../../../../chunk-
|
|
11
|
-
import "../../../../../chunk-
|
|
12
|
-
import "../../../../../chunk-
|
|
3
|
+
} from "../../../../../chunk-P6C6KRXM.js";
|
|
4
|
+
import "../../../../../chunk-NCNYKQU7.js";
|
|
5
|
+
import "../../../../../chunk-5V6MQUTB.js";
|
|
6
|
+
import "../../../../../chunk-OHXP63A5.js";
|
|
7
|
+
import "../../../../../chunk-HAZBA3RU.js";
|
|
8
|
+
import "../../../../../chunk-VREM33BW.js";
|
|
9
|
+
import "../../../../../chunk-AQVIQODP.js";
|
|
10
|
+
import "../../../../../chunk-KMVSJT6Y.js";
|
|
11
|
+
import "../../../../../chunk-7I7PZF5L.js";
|
|
12
|
+
import "../../../../../chunk-R3WM6HV6.js";
|
|
13
13
|
import "../../../../../chunk-GMKRNFH5.js";
|
|
14
14
|
import "../../../../../chunk-2ISIAPFS.js";
|
|
15
15
|
import "../../../../../chunk-CSKNBWPB.js";
|
|
16
16
|
import "../../../../../chunk-5XYPLDI5.js";
|
|
17
|
-
import "../../../../../chunk-HYITAA4J.js";
|
|
18
|
-
import "../../../../../chunk-365QMK4D.js";
|
|
19
17
|
import "../../../../../chunk-6IVCARWS.js";
|
|
20
18
|
import "../../../../../chunk-6DJOIRMF.js";
|
|
21
19
|
import "../../../../../chunk-FPD73OHW.js";
|
|
20
|
+
import "../../../../../chunk-HYITAA4J.js";
|
|
21
|
+
import "../../../../../chunk-365QMK4D.js";
|
|
22
22
|
import "../../../../../chunk-EGEQY3KT.js";
|
|
23
|
-
import "../../../../../chunk-BESTU2AY.js";
|
|
24
|
-
import "../../../../../chunk-B6XJN6EC.js";
|
|
25
|
-
import "../../../../../chunk-RP2RGCAW.js";
|
|
26
|
-
import "../../../../../chunk-4Y5BEXVN.js";
|
|
27
|
-
import "../../../../../chunk-PMJIFLDT.js";
|
|
28
|
-
import "../../../../../chunk-LDBWASUA.js";
|
|
29
23
|
import "../../../../../chunk-25HMMI7R.js";
|
|
30
24
|
import "../../../../../chunk-ZVDAEY5Q.js";
|
|
31
25
|
import "../../../../../chunk-LQY4RKWI.js";
|
|
26
|
+
import "../../../../../chunk-B6XJN6EC.js";
|
|
27
|
+
import "../../../../../chunk-RP2RGCAW.js";
|
|
28
|
+
import "../../../../../chunk-4Y5BEXVN.js";
|
|
32
29
|
import "../../../../../chunk-DLP4UUNG.js";
|
|
33
30
|
import "../../../../../chunk-VD7AQ7HK.js";
|
|
34
31
|
import "../../../../../chunk-ZQE7SP6P.js";
|
|
@@ -45,6 +42,9 @@ import "../../../../../chunk-YSYJCYHY.js";
|
|
|
45
42
|
import "../../../../../chunk-5OM2H6RI.js";
|
|
46
43
|
import "../../../../../chunk-ZUYCXCPW.js";
|
|
47
44
|
import "../../../../../chunk-YVFNJE4E.js";
|
|
45
|
+
import "../../../../../chunk-BESTU2AY.js";
|
|
46
|
+
import "../../../../../chunk-PMJIFLDT.js";
|
|
47
|
+
import "../../../../../chunk-LDBWASUA.js";
|
|
48
48
|
import "../../../../../chunk-CRTRMMJ7.js";
|
|
49
49
|
export {
|
|
50
50
|
ReviewQuestion_default as default
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ReviewQuestionContentHeader
|
|
3
|
-
} from "../../../../../chunk-
|
|
3
|
+
} from "../../../../../chunk-R3WM6HV6.js";
|
|
4
4
|
import "../../../../../chunk-2ISIAPFS.js";
|
|
5
|
-
import "../../../../../chunk-4Y5BEXVN.js";
|
|
6
|
-
import "../../../../../chunk-PMJIFLDT.js";
|
|
7
|
-
import "../../../../../chunk-LDBWASUA.js";
|
|
8
5
|
import "../../../../../chunk-25HMMI7R.js";
|
|
6
|
+
import "../../../../../chunk-4Y5BEXVN.js";
|
|
9
7
|
import "../../../../../chunk-DLP4UUNG.js";
|
|
10
8
|
import "../../../../../chunk-VD7AQ7HK.js";
|
|
11
9
|
import "../../../../../chunk-ZQE7SP6P.js";
|
|
@@ -22,6 +20,8 @@ import "../../../../../chunk-YSYJCYHY.js";
|
|
|
22
20
|
import "../../../../../chunk-5OM2H6RI.js";
|
|
23
21
|
import "../../../../../chunk-ZUYCXCPW.js";
|
|
24
22
|
import "../../../../../chunk-YVFNJE4E.js";
|
|
23
|
+
import "../../../../../chunk-PMJIFLDT.js";
|
|
24
|
+
import "../../../../../chunk-LDBWASUA.js";
|
|
25
25
|
import "../../../../../chunk-CRTRMMJ7.js";
|
|
26
26
|
export {
|
|
27
27
|
ReviewQuestionContentHeader
|