@tipp/ui 2.7.0 → 2.8.0
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 +10 -2
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +101 -100
- package/dist/app/platform/coach-question-list.cjs +10 -2
- package/dist/app/platform/coach-question-list.cjs.map +1 -1
- package/dist/app/platform/coach-question-list.js +33 -32
- package/dist/app/platform/contents-card.cjs +10 -2
- package/dist/app/platform/contents-card.cjs.map +1 -1
- package/dist/app/platform/contents-card.js +33 -32
- package/dist/app/platform/curriculum-card.cjs +10 -2
- package/dist/app/platform/curriculum-card.cjs.map +1 -1
- package/dist/app/platform/curriculum-card.js +5 -4
- package/dist/app/platform/edit-coaching-time.cjs +10 -2
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +79 -78
- package/dist/app/platform/edit-service-type.cjs +10 -2
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +80 -79
- package/dist/app/platform/goal-manage-card-edit.cjs +10 -2
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +79 -78
- package/dist/app/platform/goal-manage-card-read.cjs +10 -2
- package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-read.js +33 -32
- package/dist/app/platform/on-offline-radio-card.cjs +10 -2
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +79 -78
- package/dist/app/platform/report-card.cjs +10 -2
- package/dist/app/platform/report-card.cjs.map +1 -1
- package/dist/app/platform/report-card.js +33 -32
- package/dist/app/platform/reservation-card.cjs +10 -2
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +80 -79
- package/dist/app/platform/session-card.cjs +10 -2
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +82 -81
- package/dist/app/platform/session-review-simple-read.cjs +10 -2
- package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
- package/dist/app/platform/session-review-simple-read.js +33 -32
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +10 -2
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +38 -37
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +10 -2
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/large.js +33 -32
- package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +10 -2
- package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/medium.js +33 -32
- package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +10 -2
- package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/small.js +33 -32
- package/dist/app/platform/userInfos/session-user-info-detail.cjs +10 -2
- package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
- package/dist/app/platform/userInfos/session-user-info-detail.js +33 -32
- package/dist/app/platform/userInfos/utils.cjs +10 -2
- package/dist/app/platform/userInfos/utils.cjs.map +1 -1
- package/dist/app/platform/userInfos/utils.js +32 -31
- package/dist/atoms/bullet-text.cjs +8 -1
- package/dist/atoms/bullet-text.cjs.map +1 -1
- package/dist/atoms/bullet-text.js +3 -2
- package/dist/atoms/dialog.cjs +8 -1
- package/dist/atoms/dialog.cjs.map +1 -1
- package/dist/atoms/dialog.js +3 -2
- package/dist/atoms/ellipsis-tooltip.cjs +8 -1
- package/dist/atoms/ellipsis-tooltip.cjs.map +1 -1
- package/dist/atoms/ellipsis-tooltip.js +3 -2
- package/dist/atoms/field-error-wrapper.cjs +8 -1
- package/dist/atoms/field-error-wrapper.cjs.map +1 -1
- package/dist/atoms/field-error-wrapper.js +3 -2
- package/dist/atoms/heading.cjs +8 -1
- package/dist/atoms/heading.cjs.map +1 -1
- package/dist/atoms/heading.d.cts +2 -0
- package/dist/atoms/heading.d.ts +2 -0
- package/dist/atoms/heading.js +2 -1
- package/dist/atoms/index.cjs +10 -2
- package/dist/atoms/index.cjs.map +1 -1
- package/dist/atoms/index.js +67 -66
- package/dist/atoms/list.cjs +8 -1
- package/dist/atoms/list.cjs.map +1 -1
- package/dist/atoms/list.js +3 -2
- package/dist/atoms/pagination.cjs +8 -1
- package/dist/atoms/pagination.cjs.map +1 -1
- package/dist/atoms/pagination.js +3 -2
- package/dist/atoms/typo.cjs +8 -1
- package/dist/atoms/typo.cjs.map +1 -1
- package/dist/atoms/typo.d.cts +2 -0
- package/dist/atoms/typo.d.ts +2 -0
- package/dist/atoms/typo.js +2 -1
- package/dist/{chunk-UFM3EL52.js → chunk-3UJEOHQT.js} +6 -6
- package/dist/{chunk-6YJGQWD6.js → chunk-5BIICWFT.js} +6 -6
- package/dist/{chunk-Q3M6GFHY.js → chunk-5FLPPHUZ.js} +2 -2
- package/dist/{chunk-T2CGNUCP.js → chunk-5FXPD4NE.js} +5 -5
- package/dist/{chunk-IA74OBFY.js → chunk-5SXTL6NO.js} +2 -2
- package/dist/{chunk-RUJZ5PE7.js → chunk-6JPGF4MB.js} +2 -2
- package/dist/{chunk-PXMJK5D5.js → chunk-6Q26H64H.js} +6 -6
- package/dist/{chunk-OEHVGPWL.js → chunk-6XASFDTI.js} +15 -15
- package/dist/{chunk-LQ3WGFS7.js → chunk-6YPAN4D3.js} +7 -7
- package/dist/{chunk-GAA3RTRW.js → chunk-72ZC7DBY.js} +2 -2
- package/dist/{chunk-MMLVZWMD.js → chunk-77YN5S26.js} +3 -3
- package/dist/{chunk-2O7NVLVP.js → chunk-7NBGSPZU.js} +5 -5
- package/dist/{chunk-A26UWBVB.js → chunk-7TRT4QTP.js} +2 -2
- package/dist/{chunk-MP5KZULQ.js → chunk-7XMPNH2X.js} +8 -8
- package/dist/{chunk-H3GQHGFA.js → chunk-AEDSRBBB.js} +3 -3
- package/dist/{chunk-LIWQ47VQ.js → chunk-ANFQJ6YW.js} +9 -9
- package/dist/{chunk-TU6SGJ5Z.js → chunk-B7SKF5RD.js} +4 -4
- package/dist/{chunk-MCKWO7K4.js → chunk-BZCUF5K6.js} +5 -5
- package/dist/{chunk-KO3V7KB6.js → chunk-BZVA4RGI.js} +2 -2
- package/dist/{chunk-MSLSD7F6.js → chunk-C2FRAZT2.js} +2 -2
- package/dist/{chunk-XOQXIPLL.js → chunk-C5CEDLV6.js} +2 -2
- package/dist/{chunk-MSM2QG23.js → chunk-DBXQFZBB.js} +8 -8
- package/dist/{chunk-ZC2JPF7B.js → chunk-DDYPJWZV.js} +10 -10
- package/dist/{chunk-QPL7SJQM.js → chunk-DHP7LYK7.js} +2 -2
- package/dist/{chunk-YCLYKBWZ.js → chunk-DUXYDGHX.js} +6 -6
- package/dist/{chunk-JNEGSY5N.js → chunk-FFGGO6E4.js} +2 -2
- package/dist/{chunk-WY37V3W4.js → chunk-FIQJUO66.js} +5 -5
- package/dist/{chunk-NFMEBYNY.js → chunk-GBT2BBZS.js} +6 -6
- package/dist/{chunk-GREYLAMY.js → chunk-GMEGTXIV.js} +5 -5
- package/dist/{chunk-YWWYA2JZ.js → chunk-GTTZJ2Y7.js} +4 -4
- package/dist/{chunk-C2G3IB7G.js → chunk-IA4WXGVH.js} +2 -2
- package/dist/{chunk-YGNHAFBW.js → chunk-IIA2BVJI.js} +3 -3
- package/dist/{chunk-2SM37SB4.js → chunk-IYAN33WP.js} +3 -3
- package/dist/{chunk-ZAFLWQOV.js → chunk-KEFAYPBO.js} +4 -4
- package/dist/{chunk-OBWQ3N5D.js → chunk-L5WSNVSD.js} +3 -3
- package/dist/{chunk-AJTGTGOC.js → chunk-LCR5R743.js} +2 -2
- package/dist/{chunk-Z5LPHG2D.js → chunk-LXL7GJUM.js} +3 -3
- package/dist/{chunk-OA3DGWVL.js → chunk-MTESLX7K.js} +12 -12
- package/dist/{chunk-2I37QLRA.js → chunk-NIMF5FJI.js} +6 -6
- package/dist/{chunk-ZWYQ44CB.js → chunk-P6YCD2AV.js} +9 -9
- package/dist/chunk-PO2PBAHW.js +10 -0
- package/dist/chunk-PO2PBAHW.js.map +1 -0
- package/dist/{chunk-2WNLUQX5.js → chunk-PRLNOTMV.js} +6 -6
- package/dist/{chunk-VD5ZDFCM.js → chunk-PTUL6MDB.js} +2 -2
- package/dist/{chunk-RMVVV5NH.js → chunk-PWUCBBQP.js} +6 -6
- package/dist/{chunk-NIHOKIYW.js → chunk-PZDN6K6R.js} +6 -6
- package/dist/{chunk-E6GCU5IQ.js → chunk-QFSMOKC6.js} +2 -2
- package/dist/{chunk-TYEGB5FQ.js → chunk-R43F6ZWT.js} +2 -2
- package/dist/{chunk-GPULIICW.js → chunk-RVHE3UVN.js} +6 -6
- package/dist/{chunk-MGR37YQB.js → chunk-SGJBQKUD.js} +2 -2
- package/dist/{chunk-5OW76AER.js → chunk-SHFN2BOB.js} +2 -2
- package/dist/{chunk-OYXUWBKS.js → chunk-SQZVLRUH.js} +5 -5
- package/dist/{chunk-OWQUXTQ2.js → chunk-TF3RLGKA.js} +4 -4
- package/dist/{chunk-7PBLFV5L.js → chunk-U5LZO2EI.js} +6 -6
- package/dist/chunk-U7PMCTVQ.js +1 -0
- package/dist/{chunk-A4YOY75P.js → chunk-UA2HDDD4.js} +6 -6
- package/dist/{chunk-OQN4E2QP.js → chunk-UHAMISMF.js} +6 -6
- package/dist/{chunk-7JW5Z2TL.js → chunk-UILGIMXL.js} +5 -5
- package/dist/{chunk-HH6LML5K.js → chunk-UIMDXYPP.js} +6 -6
- package/dist/{chunk-M77YPVQN.js → chunk-URSBI6BQ.js} +3 -3
- package/dist/{chunk-2FB75HU2.js → chunk-VFWRW7TA.js} +2 -2
- package/dist/{chunk-447H6BVE.js → chunk-VVJEXKCB.js} +6 -6
- package/dist/{chunk-J7N2IZQW.js → chunk-VYUQXEXS.js} +5 -5
- package/dist/{chunk-GYSRHZRS.js → chunk-WLG6GG26.js} +3 -3
- package/dist/{chunk-ZUL3NYQ4.js → chunk-XFFVIWAD.js} +2 -2
- package/dist/{chunk-IM6E52L2.js → chunk-XOCVP6IW.js} +8 -8
- package/dist/{chunk-NYG34MV6.js → chunk-YCV3HR4J.js} +2 -2
- package/dist/{chunk-NLHVQJQ2.js → chunk-YIVIBIK2.js} +6 -2
- package/dist/chunk-YIVIBIK2.js.map +1 -0
- package/dist/{chunk-ZCQMCIT5.js → chunk-YWLFDIBP.js} +2 -2
- package/dist/{chunk-GR4PG6HY.js → chunk-YXFHD2PY.js} +6 -2
- package/dist/chunk-YXFHD2PY.js.map +1 -0
- package/dist/{chunk-OPYRV6XJ.js → chunk-Z2U2YQOG.js} +2 -2
- package/dist/{chunk-PE4EBBU4.js → chunk-Z54XTEAF.js} +2 -2
- package/dist/context/dynamic-form-context.cjs +10 -2
- package/dist/context/dynamic-form-context.cjs.map +1 -1
- package/dist/context/dynamic-form-context.js +5 -4
- package/dist/context/index.cjs +10 -2
- package/dist/context/index.cjs.map +1 -1
- package/dist/context/index.js +5 -4
- package/dist/index.cjs +12 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +156 -152
- package/dist/molecules/autocomplete-textfield.cjs +8 -1
- package/dist/molecules/autocomplete-textfield.cjs.map +1 -1
- package/dist/molecules/autocomplete-textfield.js +3 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +14 -13
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +3 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs +8 -1
- 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 +10 -9
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +4 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs +8 -1
- 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 +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs +8 -1
- 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 +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs +8 -1
- 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 +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs +8 -1
- 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 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +4 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +18 -17
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +3 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +3 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +20 -19
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +10 -2
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +23 -22
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +3 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +4 -3
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.js +3 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +8 -7
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs +8 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +6 -5
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs +10 -2
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.js +4 -3
- package/dist/molecules/curriculumV2/index.cjs +10 -2
- package/dist/molecules/curriculumV2/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/index.js +34 -33
- package/dist/molecules/date-picker/date-picker-button.cjs +10 -2
- package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
- package/dist/molecules/date-picker/date-picker-button.js +5 -4
- package/dist/molecules/date-picker/index.cjs +10 -2
- package/dist/molecules/date-picker/index.cjs.map +1 -1
- package/dist/molecules/date-picker/index.js +4 -3
- package/dist/molecules/description-json-render.cjs +10 -1
- package/dist/molecules/description-json-render.cjs.map +1 -1
- package/dist/molecules/description-json-render.js +5 -4
- package/dist/molecules/download-card.cjs +8 -1
- package/dist/molecules/download-card.cjs.map +1 -1
- package/dist/molecules/download-card.js +3 -2
- package/dist/molecules/dynamic-field.cjs +10 -2
- package/dist/molecules/dynamic-field.cjs.map +1 -1
- package/dist/molecules/dynamic-field.js +7 -6
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +8 -1
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js +5 -4
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +8 -1
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-field-list-panel.js +4 -3
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs +8 -1
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-issues-panel.js +4 -3
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs +10 -2
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-preview-panel.js +10 -9
- package/dist/molecules/dynamic-form-editor.cjs +10 -2
- package/dist/molecules/dynamic-form-editor.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor.js +16 -15
- package/dist/molecules/dynamic-form.cjs +10 -2
- package/dist/molecules/dynamic-form.cjs.map +1 -1
- package/dist/molecules/dynamic-form.js +8 -7
- package/dist/molecules/expand-table/index.cjs +8 -1
- package/dist/molecules/expand-table/index.cjs.map +1 -1
- package/dist/molecules/expand-table/index.js +5 -4
- package/dist/molecules/force-refresh.cjs +8 -1
- package/dist/molecules/force-refresh.cjs.map +1 -1
- package/dist/molecules/force-refresh.js +3 -2
- package/dist/molecules/form/form.cjs +10 -2
- package/dist/molecules/form/form.cjs.map +1 -1
- package/dist/molecules/form/form.js +4 -3
- package/dist/molecules/form/index.cjs +10 -2
- package/dist/molecules/form/index.cjs.map +1 -1
- package/dist/molecules/form/index.js +4 -3
- package/dist/molecules/ghost-post.cjs +8 -1
- package/dist/molecules/ghost-post.cjs.map +1 -1
- package/dist/molecules/ghost-post.js +3 -2
- package/dist/molecules/index.cjs +10 -2
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.js +72 -71
- package/dist/molecules/learning-post.cjs +10 -2
- package/dist/molecules/learning-post.cjs.map +1 -1
- package/dist/molecules/learning-post.js +6 -5
- package/dist/molecules/navigation.cjs +8 -1
- package/dist/molecules/navigation.cjs.map +1 -1
- package/dist/molecules/navigation.js +3 -2
- package/dist/molecules/one-on-one-guide-list.cjs +10 -2
- package/dist/molecules/one-on-one-guide-list.cjs.map +1 -1
- package/dist/molecules/one-on-one-guide-list.js +5 -4
- package/dist/molecules/stepper.cjs +8 -1
- package/dist/molecules/stepper.cjs.map +1 -1
- package/dist/molecules/stepper.js +4 -3
- package/dist/molecules/tag-selector.cjs +8 -1
- package/dist/molecules/tag-selector.cjs.map +1 -1
- package/dist/molecules/tag-selector.js +5 -4
- package/dist/molecules/time-select.js +2 -1
- package/dist/molecules/training-info-guideline.cjs +10 -2
- package/dist/molecules/training-info-guideline.cjs.map +1 -1
- package/dist/molecules/training-info-guideline.js +6 -5
- package/dist/utils/index.cjs +8 -0
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +2 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +5 -1
- package/dist/utils/mono-style.cjs +34 -0
- package/dist/utils/mono-style.cjs.map +1 -0
- package/dist/utils/mono-style.d.cts +12 -0
- package/dist/utils/mono-style.d.ts +12 -0
- package/dist/utils/mono-style.js +8 -0
- package/dist/utils/mono-style.js.map +1 -0
- package/package.json +1 -1
- package/src/atoms/heading.tsx +6 -1
- package/src/atoms/typo.tsx +6 -1
- package/src/utils/index.ts +2 -1
- package/src/utils/mono-style.ts +13 -0
- package/dist/chunk-GR4PG6HY.js.map +0 -1
- package/dist/chunk-NLHVQJQ2.js.map +0 -1
- package/dist/chunk-OLJN3WXR.js +0 -1
- /package/dist/{chunk-UFM3EL52.js.map → chunk-3UJEOHQT.js.map} +0 -0
- /package/dist/{chunk-6YJGQWD6.js.map → chunk-5BIICWFT.js.map} +0 -0
- /package/dist/{chunk-Q3M6GFHY.js.map → chunk-5FLPPHUZ.js.map} +0 -0
- /package/dist/{chunk-T2CGNUCP.js.map → chunk-5FXPD4NE.js.map} +0 -0
- /package/dist/{chunk-IA74OBFY.js.map → chunk-5SXTL6NO.js.map} +0 -0
- /package/dist/{chunk-RUJZ5PE7.js.map → chunk-6JPGF4MB.js.map} +0 -0
- /package/dist/{chunk-PXMJK5D5.js.map → chunk-6Q26H64H.js.map} +0 -0
- /package/dist/{chunk-OEHVGPWL.js.map → chunk-6XASFDTI.js.map} +0 -0
- /package/dist/{chunk-LQ3WGFS7.js.map → chunk-6YPAN4D3.js.map} +0 -0
- /package/dist/{chunk-GAA3RTRW.js.map → chunk-72ZC7DBY.js.map} +0 -0
- /package/dist/{chunk-MMLVZWMD.js.map → chunk-77YN5S26.js.map} +0 -0
- /package/dist/{chunk-2O7NVLVP.js.map → chunk-7NBGSPZU.js.map} +0 -0
- /package/dist/{chunk-A26UWBVB.js.map → chunk-7TRT4QTP.js.map} +0 -0
- /package/dist/{chunk-MP5KZULQ.js.map → chunk-7XMPNH2X.js.map} +0 -0
- /package/dist/{chunk-H3GQHGFA.js.map → chunk-AEDSRBBB.js.map} +0 -0
- /package/dist/{chunk-LIWQ47VQ.js.map → chunk-ANFQJ6YW.js.map} +0 -0
- /package/dist/{chunk-TU6SGJ5Z.js.map → chunk-B7SKF5RD.js.map} +0 -0
- /package/dist/{chunk-MCKWO7K4.js.map → chunk-BZCUF5K6.js.map} +0 -0
- /package/dist/{chunk-KO3V7KB6.js.map → chunk-BZVA4RGI.js.map} +0 -0
- /package/dist/{chunk-MSLSD7F6.js.map → chunk-C2FRAZT2.js.map} +0 -0
- /package/dist/{chunk-XOQXIPLL.js.map → chunk-C5CEDLV6.js.map} +0 -0
- /package/dist/{chunk-MSM2QG23.js.map → chunk-DBXQFZBB.js.map} +0 -0
- /package/dist/{chunk-ZC2JPF7B.js.map → chunk-DDYPJWZV.js.map} +0 -0
- /package/dist/{chunk-QPL7SJQM.js.map → chunk-DHP7LYK7.js.map} +0 -0
- /package/dist/{chunk-YCLYKBWZ.js.map → chunk-DUXYDGHX.js.map} +0 -0
- /package/dist/{chunk-JNEGSY5N.js.map → chunk-FFGGO6E4.js.map} +0 -0
- /package/dist/{chunk-WY37V3W4.js.map → chunk-FIQJUO66.js.map} +0 -0
- /package/dist/{chunk-NFMEBYNY.js.map → chunk-GBT2BBZS.js.map} +0 -0
- /package/dist/{chunk-GREYLAMY.js.map → chunk-GMEGTXIV.js.map} +0 -0
- /package/dist/{chunk-YWWYA2JZ.js.map → chunk-GTTZJ2Y7.js.map} +0 -0
- /package/dist/{chunk-C2G3IB7G.js.map → chunk-IA4WXGVH.js.map} +0 -0
- /package/dist/{chunk-YGNHAFBW.js.map → chunk-IIA2BVJI.js.map} +0 -0
- /package/dist/{chunk-2SM37SB4.js.map → chunk-IYAN33WP.js.map} +0 -0
- /package/dist/{chunk-ZAFLWQOV.js.map → chunk-KEFAYPBO.js.map} +0 -0
- /package/dist/{chunk-OBWQ3N5D.js.map → chunk-L5WSNVSD.js.map} +0 -0
- /package/dist/{chunk-AJTGTGOC.js.map → chunk-LCR5R743.js.map} +0 -0
- /package/dist/{chunk-Z5LPHG2D.js.map → chunk-LXL7GJUM.js.map} +0 -0
- /package/dist/{chunk-OA3DGWVL.js.map → chunk-MTESLX7K.js.map} +0 -0
- /package/dist/{chunk-2I37QLRA.js.map → chunk-NIMF5FJI.js.map} +0 -0
- /package/dist/{chunk-ZWYQ44CB.js.map → chunk-P6YCD2AV.js.map} +0 -0
- /package/dist/{chunk-2WNLUQX5.js.map → chunk-PRLNOTMV.js.map} +0 -0
- /package/dist/{chunk-VD5ZDFCM.js.map → chunk-PTUL6MDB.js.map} +0 -0
- /package/dist/{chunk-RMVVV5NH.js.map → chunk-PWUCBBQP.js.map} +0 -0
- /package/dist/{chunk-NIHOKIYW.js.map → chunk-PZDN6K6R.js.map} +0 -0
- /package/dist/{chunk-E6GCU5IQ.js.map → chunk-QFSMOKC6.js.map} +0 -0
- /package/dist/{chunk-TYEGB5FQ.js.map → chunk-R43F6ZWT.js.map} +0 -0
- /package/dist/{chunk-GPULIICW.js.map → chunk-RVHE3UVN.js.map} +0 -0
- /package/dist/{chunk-MGR37YQB.js.map → chunk-SGJBQKUD.js.map} +0 -0
- /package/dist/{chunk-5OW76AER.js.map → chunk-SHFN2BOB.js.map} +0 -0
- /package/dist/{chunk-OYXUWBKS.js.map → chunk-SQZVLRUH.js.map} +0 -0
- /package/dist/{chunk-OWQUXTQ2.js.map → chunk-TF3RLGKA.js.map} +0 -0
- /package/dist/{chunk-7PBLFV5L.js.map → chunk-U5LZO2EI.js.map} +0 -0
- /package/dist/{chunk-OLJN3WXR.js.map → chunk-U7PMCTVQ.js.map} +0 -0
- /package/dist/{chunk-A4YOY75P.js.map → chunk-UA2HDDD4.js.map} +0 -0
- /package/dist/{chunk-OQN4E2QP.js.map → chunk-UHAMISMF.js.map} +0 -0
- /package/dist/{chunk-7JW5Z2TL.js.map → chunk-UILGIMXL.js.map} +0 -0
- /package/dist/{chunk-HH6LML5K.js.map → chunk-UIMDXYPP.js.map} +0 -0
- /package/dist/{chunk-M77YPVQN.js.map → chunk-URSBI6BQ.js.map} +0 -0
- /package/dist/{chunk-2FB75HU2.js.map → chunk-VFWRW7TA.js.map} +0 -0
- /package/dist/{chunk-447H6BVE.js.map → chunk-VVJEXKCB.js.map} +0 -0
- /package/dist/{chunk-J7N2IZQW.js.map → chunk-VYUQXEXS.js.map} +0 -0
- /package/dist/{chunk-GYSRHZRS.js.map → chunk-WLG6GG26.js.map} +0 -0
- /package/dist/{chunk-ZUL3NYQ4.js.map → chunk-XFFVIWAD.js.map} +0 -0
- /package/dist/{chunk-IM6E52L2.js.map → chunk-XOCVP6IW.js.map} +0 -0
- /package/dist/{chunk-NYG34MV6.js.map → chunk-YCV3HR4J.js.map} +0 -0
- /package/dist/{chunk-ZCQMCIT5.js.map → chunk-YWLFDIBP.js.map} +0 -0
- /package/dist/{chunk-OPYRV6XJ.js.map → chunk-Z2U2YQOG.js.map} +0 -0
- /package/dist/{chunk-PE4EBBU4.js.map → chunk-Z54XTEAF.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/molecules/dynamic-field.tsx","../../src/atoms/flex.tsx","../../src/atoms/typo.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/resolve-color.ts","../../src/context/dynamic-form-context.tsx","../../src/molecules/form/form.tsx","../../src/atoms/heading.tsx","../../src/atoms/text-field.tsx","../../src/atoms/text-area.tsx","../../src/atoms/select.tsx","../../src/theme/theme-provider.tsx","../../src/atoms/check-box-group.tsx","../../src/atoms/radio-group.tsx","../../src/atoms/check-box.tsx","../../src/atoms/radio-cards.tsx","../../src/atoms/grid.tsx","../../src/atoms/inset.tsx"],"sourcesContent":["\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport { useDynamicForm } from '../context/dynamic-form-context';\nimport { TextField } from '../atoms/text-field';\nimport { TextArea } from '../atoms/text-area';\nimport { Select } from '../atoms/select';\nimport { CheckboxGroup } from '../atoms/check-box-group';\nimport { RadioGroup } from '../atoms/radio-group';\nimport { Checkbox } from '../atoms/check-box';\nimport { RadioCards } from '../atoms/radio-cards';\nimport { Grid } from '../atoms/grid';\nimport { Inset } from '../atoms/inset';\nimport type { DynamicFormFieldSchema } from '../types/dynamic-form-schema-generated';\n\ninterface FieldOption {\n label: string;\n value: string | number;\n}\n\ninterface ImageFieldOption extends FieldOption {\n imageSrc: string;\n alt?: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isFieldOption(value: unknown): value is FieldOption {\n if (!isRecord(value)) return false;\n const label = value.label;\n const optionValue = value.value;\n return (\n typeof label === 'string' &&\n (typeof optionValue === 'string' || typeof optionValue === 'number')\n );\n}\n\nfunction isImageFieldOption(value: unknown): value is ImageFieldOption {\n if (!isRecord(value)) return false;\n if (!isFieldOption(value)) return false;\n const imageSrc = value.imageSrc;\n const alt = value.alt;\n return (\n typeof imageSrc === 'string' && (alt === undefined || typeof alt === 'string')\n );\n}\n\nfunction getStringProp(obj: unknown, key: string, fallback: string): string {\n if (!isRecord(obj)) return fallback;\n const value = obj[key];\n return typeof value === 'string' ? value : fallback;\n}\n\nfunction getNumberProp(obj: unknown, key: string, fallback: number): number {\n if (!isRecord(obj)) return fallback;\n const value = obj[key];\n return typeof value === 'number' ? value : fallback;\n}\n\nfunction getOptions(field: unknown): FieldOption[] | null {\n if (!isRecord(field)) return null;\n const options = field.options;\n if (!Array.isArray(options)) return null;\n if (!options.every(isFieldOption)) return null;\n return options;\n}\n\nfunction getImageOptions(field: unknown): ImageFieldOption[] | null {\n if (!isRecord(field)) return null;\n const options = field.options;\n if (!Array.isArray(options)) return null;\n if (!options.every(isImageFieldOption)) return null;\n return options;\n}\n\ninterface DynamicFormFieldRendererProps {\n field: DynamicFormFieldSchema;\n}\n\nexport function DynamicFormField({\n field,\n}: DynamicFormFieldRendererProps): React.ReactElement | null {\n const {\n getFieldValue,\n getFieldError,\n getFieldTouched,\n setFieldValue,\n handleChange,\n handleBlur,\n readonly,\n } = useDynamicForm();\n const name = field.name;\n\n const value = getFieldValue(name);\n const error = getFieldError(name);\n const touched = getFieldTouched(name);\n const hasError = Boolean(error && touched);\n\n const commonProps = {\n name,\n value: String(value || ''),\n onChange: readonly ? undefined : handleChange,\n onBlur: readonly ? undefined : handleBlur,\n error: hasError,\n disabled: readonly,\n };\n\n const selectedValue: string =\n typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n\n switch (field.type) {\n case 'short_text':\n return (\n <TextField.Root\n {...commonProps}\n placeholder={field.placeholder}\n type=\"text\"\n />\n );\n case 'email':\n return (\n <TextField.Root\n {...commonProps}\n placeholder={field.placeholder}\n type=\"email\"\n />\n );\n case 'number':\n return (\n <TextField.Root\n {...commonProps}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={field.placeholder}\n type=\"number\"\n />\n );\n case 'long_text':\n return <TextArea rows={4} {...commonProps} placeholder={field.placeholder} />;\n\n case 'dropdown':\n return (\n <Select.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : (newValue: string) => {\n void setFieldValue(name, newValue);\n }}\n value={selectedValue}\n >\n <Select.Trigger\n placeholder={field.placeholder}\n style={{\n alignSelf: 'flex-start',\n width: 'fit-content',\n minWidth: '180px',\n maxWidth: '100%',\n }}\n />\n <Select.Content>\n {field.options.map((option) => (\n <Select.Item key={option.value} value={String(option.value)}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n\n case 'choice':\n return (\n <RadioGroup.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : (newValue: string) => {\n void setFieldValue(name, newValue);\n }}\n orientation={field.orientation}\n value={String(value || '')}\n >\n {field.options.map((option) => (\n <RadioGroup.Item key={option.value} value={String(option.value)}>\n {option.label}\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n );\n\n case 'radio_cards':\n {\n const options = getOptions(field);\n if (!options) return null;\n\n return (\n <RadioCards.Root\n disabled={readonly}\n onValueChange={\n readonly\n ? undefined\n : (newValue: string) => {\n void setFieldValue(name, newValue);\n }\n }\n value={selectedValue}\n >\n {options.map((option) => (\n <RadioCards.Item key={option.value} value={String(option.value)}>\n <Typo>{option.label}</Typo>\n </RadioCards.Item>\n ))}\n </RadioCards.Root>\n );\n }\n\n case 'choices':\n return (\n <CheckboxGroup.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : (newValue: string[]) => {\n void setFieldValue(name, newValue);\n }}\n orientation={field.orientation}\n value={Array.isArray(value) ? value.map(String) : []}\n >\n {field.options.map((option) => (\n <CheckboxGroup.Item key={option.value} value={String(option.value)}>\n {option.label}\n </CheckboxGroup.Item>\n ))}\n </CheckboxGroup.Root>\n );\n\n case 'yes_no':\n return (\n <Flex gap=\"2\">\n <Checkbox\n checked={Boolean(value)}\n disabled={readonly}\n onCheckedChange={readonly ? undefined : (checked: boolean) => {\n void setFieldValue(name, checked);\n }}\n />\n {field.description ? (\n <Typo color=\"gray\" variant=\"caption\">\n {field.description}\n </Typo>\n ) : null}\n </Flex>\n );\n\n case 'image_radio_card': {\n const options = getImageOptions(field);\n if (!options) return null;\n\n const gridColumnsCount = Math.max(1, getNumberProp(field, 'gridColumnsCount', 4));\n const gridColumns = getStringProp(\n field,\n 'gridColumns',\n `repeat(${gridColumnsCount}, 1fr)`\n );\n\n const gridItemHeight = getStringProp(field, 'gridItemHeight', '100px');\n const gridRows = getStringProp(field, 'gridRows', gridItemHeight);\n const gridGap = getStringProp(field, 'gridGap', '2');\n const imageFitRaw = getStringProp(field, 'imageFit', 'cover');\n const imageFit: 'cover' | 'contain' =\n imageFitRaw === 'contain' ? 'contain' : 'cover';\n\n const handleValueChange = (newValue: string): void => {\n if (readonly) return;\n const selectedOption = options.find(\n (option) => String(option.value) === newValue\n );\n if (!selectedOption) return;\n void setFieldValue(name, selectedOption.value);\n };\n\n return (\n <RadioCards.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : handleValueChange}\n value={selectedValue}\n >\n <Grid columns={gridColumns} gap={gridGap} rows={gridRows}>\n {options.map((option) => {\n const optionValue = String(option.value);\n const altText: string = option.alt || option.label;\n\n return (\n <RadioCards.Item\n key={optionValue}\n style={{\n padding: 0,\n }}\n value={optionValue}\n >\n <Inset style={{ width: '100%', height: '100%', padding: 0 }}>\n <img\n alt={altText}\n src={option.imageSrc}\n style={{\n width: '100%',\n height: '100%',\n display: 'block',\n objectFit: imageFit,\n opacity: readonly ? 0.7 : 1,\n }}\n />\n </Inset>\n </RadioCards.Item>\n );\n })}\n </Grid>\n </RadioCards.Root>\n );\n }\n\n default:\n return null;\n }\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\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 { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const { size, variant, children, color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\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\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n >\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","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import React, { createContext, useContext } from 'react';\nimport type { FormikProps } from 'formik';\nimport { Form } from '@/molecules/form/form';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\n\nexport interface DynamicFormContextValue {\n formik: FormikProps<Record<string, unknown>>;\n fields: DynamicFormFieldSchema[];\n readonly: boolean;\n getFieldValue: (name: string) => unknown;\n getFieldError: (name: string) => string | undefined;\n getFieldTouched: (name: string) => boolean;\n setFieldValue: (field: string, value: unknown) => Promise<void>;\n handleChange: (e: React.ChangeEvent<unknown>) => void;\n handleBlur: (e: React.FocusEvent<unknown>) => void;\n}\n\nconst DynamicFormContext = createContext<DynamicFormContextValue | null>(null);\n\ninterface DynamicFormProviderProps {\n children: React.ReactNode;\n fields: DynamicFormFieldSchema[];\n formik: FormikProps<Record<string, unknown>>;\n readonly?: boolean;\n formStyle?: React.CSSProperties;\n}\n\nexport function DynamicFormProvider({\n children,\n fields,\n formik,\n readonly = false,\n formStyle,\n}: DynamicFormProviderProps): React.ReactElement {\n const contextValue: DynamicFormContextValue = {\n formik,\n fields,\n readonly,\n getFieldValue: (name: string): unknown => formik.values[name],\n getFieldError: (name: string): string | undefined => {\n const error = formik.errors[name];\n const touched = formik.touched[name];\n return touched && error ? String(error) : undefined;\n },\n getFieldTouched: (name: string): boolean => Boolean(formik.touched[name]),\n setFieldValue: async (field: string, value: unknown): Promise<void> => {\n await formik.setFieldValue(field, value);\n },\n handleChange: formik.handleChange,\n handleBlur: formik.handleBlur, \n };\n\n return (\n <DynamicFormContext.Provider value={contextValue}>\n <Form.Root onSubmit={formik.handleSubmit} style={formStyle}>{children}</Form.Root>\n </DynamicFormContext.Provider>\n );\n}\n\nexport function useDynamicForm(): DynamicFormContextValue {\n const context = useContext(DynamicFormContext);\n\n if (!context) {\n throw new Error('useDynamicForm must be used within a DynamicFormProvider');\n }\n\n return context;\n}\n","import * as RadixForm from '@radix-ui/react-form';\nimport React, { createContext, forwardRef, useContext, useMemo } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../../atoms/heading';\nimport type { TypoProps } from '../../atoms/typo';\nimport { Typo } from '../../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\nexport type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\nexport type FormLabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body' | 'caption';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactNode {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nfunction CaptionLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo color=\"gray\" variant=\"caption\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nfunction BodyLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo variant=\"body\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ children, className, variant, ...rest }, ref) => {\n const Comp = useMemo(() => {\n switch (variant) {\n case 'title':\n return HeadingLabel;\n case 'caption':\n return CaptionLabel;\n case 'body':\n default:\n return BodyLabel;\n }\n }, [variant]);\n\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\ninterface FormItemProps extends FormFieldProps {\n children: React.ReactNode;\n label: string;\n labelVariant?: FormLabelProps['variant'];\n errorMessage?: string;\n}\n\nexport function FormItem({\n label,\n labelVariant,\n children,\n errorMessage,\n ...fieldProps\n}: FormItemProps): React.ReactNode {\n return (\n <Form.Field {...fieldProps}>\n <Form.Label variant={labelVariant}>{label}</Form.Label>\n {children}\n <Form.Message forceMatch={Boolean(errorMessage)}>\n {errorMessage}\n </Form.Message>\n </Form.Field>\n );\n}\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n FormItem,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const { size, children, variant, color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n >\n {children}\n </RadixHeading>\n );\n}\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 {\n TextArea as RTextArea,\n type TextAreaProps as RTextAreaProps,\n} from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype TextAreaProps = RTextAreaProps & {\n error?: boolean;\n};\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const { error, style, className, ...rest } = props;\n const fieldStyle = useMemo(() => {\n if (!error) return style;\n const errorStyle = {\n boxShadow: 'inset 0 0 0 var(--text-area-border-width) var(--error-11)',\n };\n\n return { ...(style || {}), ...errorStyle };\n }, [error, style]);\n\n const classNameStr = error ? `error ${className}` : className;\n\n return (\n <RTextArea\n {...rest}\n className={classNameStr}\n ref={ref}\n style={fieldStyle}\n />\n );\n }\n);\n\nTextArea.displayName = 'TextArea';\n\nexport { TextArea, type TextAreaProps };\n","import { Select as RadixSelect } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport { createContext, forwardRef, useContext, useMemo } from 'react';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\nimport { ThemeAccentContext } from '../theme/theme-provider';\n\nconst SelectContext = createContext<{ error?: boolean; color?: UiColor }>({\n error: false,\n});\n\nexport type ContentProps = DistributiveOmit<\n RadixSelect.ContentProps,\n 'color'\n> & {\n isNavigation?: boolean;\n color?: UiColor;\n};\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>((props, ref) => {\n const { className, isNavigation, color, ...rest } = props;\n const { error, color: contextColor } = useContext(SelectContext);\n const themeAccent = useContext(ThemeAccentContext);\n\n // Content는 Portal로 렌더돼 theme의 className override를 못 받으므로, per-instance/Root color가\n // 없으면 theme custom accent(black)를 fallback으로 적용해 Portal 안에서도 black을 유지한다.\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color ?? contextColor ?? themeAccent),\n [color, contextColor, themeAccent]\n );\n\n // custom color(black)는 className override만 사용 — fallback color를 함께 넘기면 자식 Item이\n // 자기 data-accent-color로 gray를 다시 적용해 override를 덮는다.\n const appliedColor = colorClassName ? undefined : radixColor;\n\n const cls = useMemo(() => {\n const etc = isNavigation ? 'nav-select' : '';\n const errorCls = error ? 'tipp-error' : '';\n return clsx(etc, errorCls, colorClassName, className);\n }, [className, colorClassName, error, isNavigation]);\n\n return (\n <RadixSelect.Content\n position=\"popper\"\n {...rest}\n className={cls}\n color={appliedColor}\n ref={ref}\n />\n );\n});\nContent.displayName = 'Select.Content';\n\nexport type TriggerProps = DistributiveOmit<\n RadixSelect.TriggerProps,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>((props, ref) => {\n const { className, color, ...rest } = props;\n const { error, color: contextColor } = useContext(SelectContext);\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color ?? contextColor),\n [color, contextColor]\n );\n\n // custom color(black)는 className override만 사용 (위 Content와 동일 이유).\n const appliedColor = colorClassName ? undefined : radixColor;\n\n const cls = useMemo(() => {\n const errorCls = error ? 'error' : '';\n return clsx(errorCls, colorClassName, className);\n }, [className, colorClassName, error]);\n\n return (\n <RadixSelect.Trigger\n {...rest}\n className={cls}\n color={appliedColor}\n ref={ref}\n />\n );\n});\n\nTrigger.displayName = 'Select.Trigger';\n\nexport type SelectRootProps = RadixSelect.RootProps & {\n error?: boolean;\n /** Trigger·Content에 일괄 적용할 color. 각 파트에서 color prop으로 개별 override 가능. */\n color?: UiColor;\n};\n\nfunction Root(props: SelectRootProps): React.ReactNode {\n const { error, color, ...rest } = props;\n\n const value = useMemo(() => ({ error, color }), [error, color]);\n\n return (\n <SelectContext.Provider value={value}>\n <RadixSelect.Root {...rest} />\n </SelectContext.Provider>\n );\n}\n\nRoot.displayName = 'Select.Root';\n\nexport const Select = {\n ...RadixSelect,\n Root,\n Trigger,\n Content,\n};\n","import React, { createContext } from 'react';\nimport { Theme } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport { resolveColor, type UiColor } from '../utils/resolve-color';\n\ntype ThemeProps = React.ComponentProps<typeof Theme>;\n\n/**\n * 테마 전역 primary가 custom color(black 등)일 때 그 값을 하위로 전달하는 context.\n * Radix는 Portal 컨텐츠(Select 드롭다운 등)에 theme의 accentColor \"값\"(여기선 fallback gray)만\n * 복제하고 `.tipp-accent-black` className은 복제하지 않으므로, Portal 안에서는 accent override가\n * 사라진다. 래핑된 overlay 컴포넌트(Select 등)가 이 context를 최하위 fallback color로 읽어\n * 자기 요소에 className을 직접 부여하면 Portal 내부에서도 black이 유지된다.\n * (custom accent가 아닐 때는 undefined — Radix 네이티브 portal 상속에 맡긴다.)\n */\nexport const ThemeAccentContext = createContext<UiColor | undefined>(undefined);\n\nexport interface ThemeProviderProps extends Omit<ThemeProps, 'accentColor'> {\n children: React.ReactNode;\n /**\n * 전역 primary(accent) color. Radix accent color에 더해 커스텀 `black`을 지원한다.\n * black이면 Radix에는 fallback `gray`를 넘기고 Theme 루트에 accent override\n * className을 부여하여 하위 컴포넌트가 color prop 없이도 black을 상속한다.\n */\n accentColor?: ThemeProps['accentColor'] | 'black';\n}\n\nexport function ThemeProvider(props: ThemeProviderProps): React.ReactNode {\n const { accentColor = 'iris', className, ...rest } = props;\n\n const { color: radixAccent, className: accentClassName } =\n resolveColor(accentColor);\n\n // custom accent(className이 생기는 경우 = black)일 때만 Portal 보정용으로 context에 흘린다.\n const themeAccent = accentClassName ? accentColor : undefined;\n\n return (\n <ThemeAccentContext.Provider value={themeAccent}>\n <Theme\n accentColor={radixAccent ?? 'iris'}\n className={clsx(accentClassName, className)}\n radius=\"medium\"\n {...rest}\n />\n </ThemeAccentContext.Provider>\n );\n}\n","import { CheckboxGroup as RadixCheckboxGroup } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { forwardRef, useMemo } from 'react';\nimport { resolveColor, type UiColor } from '../utils/resolve-color';\n\ntype RadixCheckboxGroupProps = React.ComponentPropsWithoutRef<\n typeof RadixCheckboxGroup.Root\n>;\ntype CheckboxGroupProps = Omit<RadixCheckboxGroupProps, 'size'> & {\n size?: 'small' | 'medium' | 'large';\n /**\n * CheckboxGroup은 Radix color prop이 없어 per-instance로는 custom accent(black 등)만\n * className override로 적용된다. semantic/radix color는 theme accent로만 가능.\n */\n color?: UiColor;\n};\n\nconst Root = forwardRef<HTMLDivElement, CheckboxGroupProps>((props, ref) => {\n const { children, size = 'medium', color, className, ...rest } = props;\n\n const groupSize = useMemo<RadixCheckboxGroupProps['size']>(() => {\n switch (size) {\n case 'small':\n return '1';\n case 'large':\n return '3';\n case 'medium':\n default:\n return '2';\n }\n }, [size]);\n\n const { className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n return (\n <RadixCheckboxGroup.Root\n {...rest}\n className={clsx(colorClassName, className)}\n ref={ref}\n size={groupSize}\n >\n {children}\n </RadixCheckboxGroup.Root>\n );\n});\n\nRoot.displayName = 'CheckboxGroup.Root';\n\nexport const CheckboxGroup = {\n Root,\n Item: RadixCheckboxGroup.Item,\n};\n","import { RadioGroup as RadixRadioGroup } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { forwardRef, useMemo } from 'react';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\ntype RadioGroupRootProps = DistributiveOmit<\n React.ComponentPropsWithoutRef<typeof RadixRadioGroup.Root>,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Root = forwardRef<\n React.ElementRef<typeof RadixRadioGroup.Root>,\n RadioGroupRootProps\n>((props, ref) => {\n const { color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n // custom color(black)는 className의 변수 override만 사용한다. fallback color를 함께 넘기면\n // RadioGroup이 그 color를 자식 Item으로 전파하고, 각 Item이 자기 `data-accent-color`로\n // gray를 다시 적용해 조상 className override를 자식 스코프에서 덮어버린다.\n const appliedColor = colorClassName ? undefined : radixColor;\n\n return (\n <RadixRadioGroup.Root\n {...rest}\n className={clsx(colorClassName, className)}\n color={appliedColor}\n ref={ref}\n />\n );\n});\n\nRoot.displayName = 'RadioGroup.Root';\n\nexport const RadioGroup = {\n ...RadixRadioGroup,\n Root,\n};\n\n","import {\n Checkbox as RadixCheckbox,\n type CheckboxProps as RadixCheckboxProps,\n} from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport { useMemo, forwardRef } from 'react';\nimport { resolveColor, type UiColor } from '../utils/resolve-color';\n\nexport type CheckboxProps = Omit<RadixCheckboxProps, 'size' | 'color'> & {\n size?: 'small' | 'medium' | 'large';\n color?: UiColor;\n};\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (props, ref): React.ReactNode => {\n const { size = 'medium', color, className, ...rest } = props;\n\n const radixSize = useMemo<RadixCheckboxProps['size']>(() => {\n switch (size) {\n case 'small':\n return '1';\n case 'medium':\n return '2';\n case 'large':\n return '3';\n }\n }, [size]);\n\n const { color: radixColor, className: colorClassName } =\n resolveColor(color);\n\n return (\n <RadixCheckbox\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n />\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { RadioCards as RadixRadioCards } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { forwardRef, useMemo } from 'react';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\ntype RadioCardsRootProps = DistributiveOmit<\n React.ComponentPropsWithoutRef<typeof RadixRadioCards.Root>,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Root = forwardRef<\n React.ElementRef<typeof RadixRadioCards.Root>,\n RadioCardsRootProps\n>((props, ref) => {\n const { color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n // custom color(black)는 className의 변수 override만 사용한다. fallback color를 함께 넘기면\n // RadioCards가 그 color를 자식 Item으로 전파하고, 각 Item이 자기 `data-accent-color`로\n // gray를 다시 적용해 조상 className override를 자식 스코프에서 덮어버린다.\n const appliedColor = colorClassName ? undefined : radixColor;\n\n return (\n <RadixRadioCards.Root\n {...rest}\n className={clsx(colorClassName, className)}\n color={appliedColor}\n ref={ref}\n />\n );\n});\n\nRoot.displayName = 'RadioCards.Root';\n\nexport const RadioCards = {\n ...RadixRadioCards,\n Root,\n};\n\n","export { Grid, type GridProps } from '@radix-ui/themes';\n","export { Inset, type InsetProps } from '@radix-ui/themes';\n"],"mappings":"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","names":["import_themes","RadixText","import_react","import_react","import_themes","import_clsx","import_react","import_themes","import_jsx_runtime","Heading","RadixHeading","import_jsx_runtime","Root","Field","Heading","Label","Message","Control","import_jsx_runtime","import_themes","import_react","import_jsx_runtime","Root","RTextField","import_themes","import_react","import_jsx_runtime","RTextArea","import_themes","import_clsx","import_react","import_react","import_themes","import_clsx","import_jsx_runtime","import_jsx_runtime","_a","RadixSelect","Root","import_themes","import_clsx","import_react","import_jsx_runtime","Root","RadixCheckboxGroup","import_themes","import_clsx","import_react","import_jsx_runtime","Root","RadixRadioGroup","import_themes","import_clsx","import_react","import_jsx_runtime","RadixCheckbox","import_themes","import_clsx","import_react","import_jsx_runtime","Root","RadixRadioCards","import_themes","import_themes","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../src/molecules/dynamic-field.tsx","../../src/atoms/flex.tsx","../../src/atoms/typo.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/mono-style.ts","../../src/utils/resolve-color.ts","../../src/context/dynamic-form-context.tsx","../../src/molecules/form/form.tsx","../../src/atoms/heading.tsx","../../src/atoms/text-field.tsx","../../src/atoms/text-area.tsx","../../src/atoms/select.tsx","../../src/theme/theme-provider.tsx","../../src/atoms/check-box-group.tsx","../../src/atoms/radio-group.tsx","../../src/atoms/check-box.tsx","../../src/atoms/radio-cards.tsx","../../src/atoms/grid.tsx","../../src/atoms/inset.tsx"],"sourcesContent":["\nimport { Flex } from '@/atoms/flex';\nimport { Typo } from '@/atoms/typo';\nimport { useDynamicForm } from '../context/dynamic-form-context';\nimport { TextField } from '../atoms/text-field';\nimport { TextArea } from '../atoms/text-area';\nimport { Select } from '../atoms/select';\nimport { CheckboxGroup } from '../atoms/check-box-group';\nimport { RadioGroup } from '../atoms/radio-group';\nimport { Checkbox } from '../atoms/check-box';\nimport { RadioCards } from '../atoms/radio-cards';\nimport { Grid } from '../atoms/grid';\nimport { Inset } from '../atoms/inset';\nimport type { DynamicFormFieldSchema } from '../types/dynamic-form-schema-generated';\n\ninterface FieldOption {\n label: string;\n value: string | number;\n}\n\ninterface ImageFieldOption extends FieldOption {\n imageSrc: string;\n alt?: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isFieldOption(value: unknown): value is FieldOption {\n if (!isRecord(value)) return false;\n const label = value.label;\n const optionValue = value.value;\n return (\n typeof label === 'string' &&\n (typeof optionValue === 'string' || typeof optionValue === 'number')\n );\n}\n\nfunction isImageFieldOption(value: unknown): value is ImageFieldOption {\n if (!isRecord(value)) return false;\n if (!isFieldOption(value)) return false;\n const imageSrc = value.imageSrc;\n const alt = value.alt;\n return (\n typeof imageSrc === 'string' && (alt === undefined || typeof alt === 'string')\n );\n}\n\nfunction getStringProp(obj: unknown, key: string, fallback: string): string {\n if (!isRecord(obj)) return fallback;\n const value = obj[key];\n return typeof value === 'string' ? value : fallback;\n}\n\nfunction getNumberProp(obj: unknown, key: string, fallback: number): number {\n if (!isRecord(obj)) return fallback;\n const value = obj[key];\n return typeof value === 'number' ? value : fallback;\n}\n\nfunction getOptions(field: unknown): FieldOption[] | null {\n if (!isRecord(field)) return null;\n const options = field.options;\n if (!Array.isArray(options)) return null;\n if (!options.every(isFieldOption)) return null;\n return options;\n}\n\nfunction getImageOptions(field: unknown): ImageFieldOption[] | null {\n if (!isRecord(field)) return null;\n const options = field.options;\n if (!Array.isArray(options)) return null;\n if (!options.every(isImageFieldOption)) return null;\n return options;\n}\n\ninterface DynamicFormFieldRendererProps {\n field: DynamicFormFieldSchema;\n}\n\nexport function DynamicFormField({\n field,\n}: DynamicFormFieldRendererProps): React.ReactElement | null {\n const {\n getFieldValue,\n getFieldError,\n getFieldTouched,\n setFieldValue,\n handleChange,\n handleBlur,\n readonly,\n } = useDynamicForm();\n const name = field.name;\n\n const value = getFieldValue(name);\n const error = getFieldError(name);\n const touched = getFieldTouched(name);\n const hasError = Boolean(error && touched);\n\n const commonProps = {\n name,\n value: String(value || ''),\n onChange: readonly ? undefined : handleChange,\n onBlur: readonly ? undefined : handleBlur,\n error: hasError,\n disabled: readonly,\n };\n\n const selectedValue: string =\n typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n\n switch (field.type) {\n case 'short_text':\n return (\n <TextField.Root\n {...commonProps}\n placeholder={field.placeholder}\n type=\"text\"\n />\n );\n case 'email':\n return (\n <TextField.Root\n {...commonProps}\n placeholder={field.placeholder}\n type=\"email\"\n />\n );\n case 'number':\n return (\n <TextField.Root\n {...commonProps}\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n placeholder={field.placeholder}\n type=\"number\"\n />\n );\n case 'long_text':\n return <TextArea rows={4} {...commonProps} placeholder={field.placeholder} />;\n\n case 'dropdown':\n return (\n <Select.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : (newValue: string) => {\n void setFieldValue(name, newValue);\n }}\n value={selectedValue}\n >\n <Select.Trigger\n placeholder={field.placeholder}\n style={{\n alignSelf: 'flex-start',\n width: 'fit-content',\n minWidth: '180px',\n maxWidth: '100%',\n }}\n />\n <Select.Content>\n {field.options.map((option) => (\n <Select.Item key={option.value} value={String(option.value)}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n\n case 'choice':\n return (\n <RadioGroup.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : (newValue: string) => {\n void setFieldValue(name, newValue);\n }}\n orientation={field.orientation}\n value={String(value || '')}\n >\n {field.options.map((option) => (\n <RadioGroup.Item key={option.value} value={String(option.value)}>\n {option.label}\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n );\n\n case 'radio_cards':\n {\n const options = getOptions(field);\n if (!options) return null;\n\n return (\n <RadioCards.Root\n disabled={readonly}\n onValueChange={\n readonly\n ? undefined\n : (newValue: string) => {\n void setFieldValue(name, newValue);\n }\n }\n value={selectedValue}\n >\n {options.map((option) => (\n <RadioCards.Item key={option.value} value={String(option.value)}>\n <Typo>{option.label}</Typo>\n </RadioCards.Item>\n ))}\n </RadioCards.Root>\n );\n }\n\n case 'choices':\n return (\n <CheckboxGroup.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : (newValue: string[]) => {\n void setFieldValue(name, newValue);\n }}\n orientation={field.orientation}\n value={Array.isArray(value) ? value.map(String) : []}\n >\n {field.options.map((option) => (\n <CheckboxGroup.Item key={option.value} value={String(option.value)}>\n {option.label}\n </CheckboxGroup.Item>\n ))}\n </CheckboxGroup.Root>\n );\n\n case 'yes_no':\n return (\n <Flex gap=\"2\">\n <Checkbox\n checked={Boolean(value)}\n disabled={readonly}\n onCheckedChange={readonly ? undefined : (checked: boolean) => {\n void setFieldValue(name, checked);\n }}\n />\n {field.description ? (\n <Typo color=\"gray\" variant=\"caption\">\n {field.description}\n </Typo>\n ) : null}\n </Flex>\n );\n\n case 'image_radio_card': {\n const options = getImageOptions(field);\n if (!options) return null;\n\n const gridColumnsCount = Math.max(1, getNumberProp(field, 'gridColumnsCount', 4));\n const gridColumns = getStringProp(\n field,\n 'gridColumns',\n `repeat(${gridColumnsCount}, 1fr)`\n );\n\n const gridItemHeight = getStringProp(field, 'gridItemHeight', '100px');\n const gridRows = getStringProp(field, 'gridRows', gridItemHeight);\n const gridGap = getStringProp(field, 'gridGap', '2');\n const imageFitRaw = getStringProp(field, 'imageFit', 'cover');\n const imageFit: 'cover' | 'contain' =\n imageFitRaw === 'contain' ? 'contain' : 'cover';\n\n const handleValueChange = (newValue: string): void => {\n if (readonly) return;\n const selectedOption = options.find(\n (option) => String(option.value) === newValue\n );\n if (!selectedOption) return;\n void setFieldValue(name, selectedOption.value);\n };\n\n return (\n <RadioCards.Root\n disabled={readonly}\n onValueChange={readonly ? undefined : handleValueChange}\n value={selectedValue}\n >\n <Grid columns={gridColumns} gap={gridGap} rows={gridRows}>\n {options.map((option) => {\n const optionValue = String(option.value);\n const altText: string = option.alt || option.label;\n\n return (\n <RadioCards.Item\n key={optionValue}\n style={{\n padding: 0,\n }}\n value={optionValue}\n >\n <Inset style={{ width: '100%', height: '100%', padding: 0 }}>\n <img\n alt={altText}\n src={option.imageSrc}\n style={{\n width: '100%',\n height: '100%',\n display: 'block',\n objectFit: imageFit,\n opacity: readonly ? 0.7 : 1,\n }}\n />\n </Inset>\n </RadioCards.Item>\n );\n })}\n </Grid>\n </RadioCards.Root>\n );\n }\n\n default:\n return null;\n }\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\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 { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const { size, variant, children, color, className, mono, style, ...rest } =\n props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\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\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n style={mono ? { ...MONO_STYLE, ...style } : style}\n >\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","import type { CSSProperties } from 'react';\n\n/**\n * 등폭(monospace) 텍스트 스타일.\n * - `font-family`: 등폭 폰트(`--code-font-family`는 Radix Themes가 제공, 없으면 시스템 등폭으로 폴백)\n * - `font-variant-numeric: tabular-nums`: 숫자를 고정폭으로 정렬해 점수·퍼센트·통계가 자릿수마다 흔들리지 않게 함\n *\n * `Typo`/`Heading`의 `mono` prop 구현에 사용된다.\n */\nexport const MONO_STYLE: CSSProperties = {\n fontFamily: 'var(--code-font-family, ui-monospace, \"SF Mono\", monospace)',\n fontVariantNumeric: 'tabular-nums',\n};\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import React, { createContext, useContext } from 'react';\nimport type { FormikProps } from 'formik';\nimport { Form } from '@/molecules/form/form';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\n\nexport interface DynamicFormContextValue {\n formik: FormikProps<Record<string, unknown>>;\n fields: DynamicFormFieldSchema[];\n readonly: boolean;\n getFieldValue: (name: string) => unknown;\n getFieldError: (name: string) => string | undefined;\n getFieldTouched: (name: string) => boolean;\n setFieldValue: (field: string, value: unknown) => Promise<void>;\n handleChange: (e: React.ChangeEvent<unknown>) => void;\n handleBlur: (e: React.FocusEvent<unknown>) => void;\n}\n\nconst DynamicFormContext = createContext<DynamicFormContextValue | null>(null);\n\ninterface DynamicFormProviderProps {\n children: React.ReactNode;\n fields: DynamicFormFieldSchema[];\n formik: FormikProps<Record<string, unknown>>;\n readonly?: boolean;\n formStyle?: React.CSSProperties;\n}\n\nexport function DynamicFormProvider({\n children,\n fields,\n formik,\n readonly = false,\n formStyle,\n}: DynamicFormProviderProps): React.ReactElement {\n const contextValue: DynamicFormContextValue = {\n formik,\n fields,\n readonly,\n getFieldValue: (name: string): unknown => formik.values[name],\n getFieldError: (name: string): string | undefined => {\n const error = formik.errors[name];\n const touched = formik.touched[name];\n return touched && error ? String(error) : undefined;\n },\n getFieldTouched: (name: string): boolean => Boolean(formik.touched[name]),\n setFieldValue: async (field: string, value: unknown): Promise<void> => {\n await formik.setFieldValue(field, value);\n },\n handleChange: formik.handleChange,\n handleBlur: formik.handleBlur, \n };\n\n return (\n <DynamicFormContext.Provider value={contextValue}>\n <Form.Root onSubmit={formik.handleSubmit} style={formStyle}>{children}</Form.Root>\n </DynamicFormContext.Provider>\n );\n}\n\nexport function useDynamicForm(): DynamicFormContextValue {\n const context = useContext(DynamicFormContext);\n\n if (!context) {\n throw new Error('useDynamicForm must be used within a DynamicFormProvider');\n }\n\n return context;\n}\n","import * as RadixForm from '@radix-ui/react-form';\nimport React, { createContext, forwardRef, useContext, useMemo } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../../atoms/heading';\nimport type { TypoProps } from '../../atoms/typo';\nimport { Typo } from '../../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\nexport type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\nexport type FormLabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body' | 'caption';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactNode {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nfunction CaptionLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo color=\"gray\" variant=\"caption\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nfunction BodyLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo variant=\"body\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ children, className, variant, ...rest }, ref) => {\n const Comp = useMemo(() => {\n switch (variant) {\n case 'title':\n return HeadingLabel;\n case 'caption':\n return CaptionLabel;\n case 'body':\n default:\n return BodyLabel;\n }\n }, [variant]);\n\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\ninterface FormItemProps extends FormFieldProps {\n children: React.ReactNode;\n label: string;\n labelVariant?: FormLabelProps['variant'];\n errorMessage?: string;\n}\n\nexport function FormItem({\n label,\n labelVariant,\n children,\n errorMessage,\n ...fieldProps\n}: FormItemProps): React.ReactNode {\n return (\n <Form.Field {...fieldProps}>\n <Form.Label variant={labelVariant}>{label}</Form.Label>\n {children}\n <Form.Message forceMatch={Boolean(errorMessage)}>\n {errorMessage}\n </Form.Message>\n </Form.Field>\n );\n}\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n FormItem,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const { size, children, variant, color, className, mono, style, ...rest } =\n props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n style={mono ? { ...MONO_STYLE, ...style } : style}\n >\n {children}\n </RadixHeading>\n );\n}\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 {\n TextArea as RTextArea,\n type TextAreaProps as RTextAreaProps,\n} from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype TextAreaProps = RTextAreaProps & {\n error?: boolean;\n};\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const { error, style, className, ...rest } = props;\n const fieldStyle = useMemo(() => {\n if (!error) return style;\n const errorStyle = {\n boxShadow: 'inset 0 0 0 var(--text-area-border-width) var(--error-11)',\n };\n\n return { ...(style || {}), ...errorStyle };\n }, [error, style]);\n\n const classNameStr = error ? `error ${className}` : className;\n\n return (\n <RTextArea\n {...rest}\n className={classNameStr}\n ref={ref}\n style={fieldStyle}\n />\n );\n }\n);\n\nTextArea.displayName = 'TextArea';\n\nexport { TextArea, type TextAreaProps };\n","import { Select as RadixSelect } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport { createContext, forwardRef, useContext, useMemo } from 'react';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\nimport { ThemeAccentContext } from '../theme/theme-provider';\n\nconst SelectContext = createContext<{ error?: boolean; color?: UiColor }>({\n error: false,\n});\n\nexport type ContentProps = DistributiveOmit<\n RadixSelect.ContentProps,\n 'color'\n> & {\n isNavigation?: boolean;\n color?: UiColor;\n};\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>((props, ref) => {\n const { className, isNavigation, color, ...rest } = props;\n const { error, color: contextColor } = useContext(SelectContext);\n const themeAccent = useContext(ThemeAccentContext);\n\n // Content는 Portal로 렌더돼 theme의 className override를 못 받으므로, per-instance/Root color가\n // 없으면 theme custom accent(black)를 fallback으로 적용해 Portal 안에서도 black을 유지한다.\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color ?? contextColor ?? themeAccent),\n [color, contextColor, themeAccent]\n );\n\n // custom color(black)는 className override만 사용 — fallback color를 함께 넘기면 자식 Item이\n // 자기 data-accent-color로 gray를 다시 적용해 override를 덮는다.\n const appliedColor = colorClassName ? undefined : radixColor;\n\n const cls = useMemo(() => {\n const etc = isNavigation ? 'nav-select' : '';\n const errorCls = error ? 'tipp-error' : '';\n return clsx(etc, errorCls, colorClassName, className);\n }, [className, colorClassName, error, isNavigation]);\n\n return (\n <RadixSelect.Content\n position=\"popper\"\n {...rest}\n className={cls}\n color={appliedColor}\n ref={ref}\n />\n );\n});\nContent.displayName = 'Select.Content';\n\nexport type TriggerProps = DistributiveOmit<\n RadixSelect.TriggerProps,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>((props, ref) => {\n const { className, color, ...rest } = props;\n const { error, color: contextColor } = useContext(SelectContext);\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color ?? contextColor),\n [color, contextColor]\n );\n\n // custom color(black)는 className override만 사용 (위 Content와 동일 이유).\n const appliedColor = colorClassName ? undefined : radixColor;\n\n const cls = useMemo(() => {\n const errorCls = error ? 'error' : '';\n return clsx(errorCls, colorClassName, className);\n }, [className, colorClassName, error]);\n\n return (\n <RadixSelect.Trigger\n {...rest}\n className={cls}\n color={appliedColor}\n ref={ref}\n />\n );\n});\n\nTrigger.displayName = 'Select.Trigger';\n\nexport type SelectRootProps = RadixSelect.RootProps & {\n error?: boolean;\n /** Trigger·Content에 일괄 적용할 color. 각 파트에서 color prop으로 개별 override 가능. */\n color?: UiColor;\n};\n\nfunction Root(props: SelectRootProps): React.ReactNode {\n const { error, color, ...rest } = props;\n\n const value = useMemo(() => ({ error, color }), [error, color]);\n\n return (\n <SelectContext.Provider value={value}>\n <RadixSelect.Root {...rest} />\n </SelectContext.Provider>\n );\n}\n\nRoot.displayName = 'Select.Root';\n\nexport const Select = {\n ...RadixSelect,\n Root,\n Trigger,\n Content,\n};\n","import React, { createContext } from 'react';\nimport { Theme } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport { resolveColor, type UiColor } from '../utils/resolve-color';\n\ntype ThemeProps = React.ComponentProps<typeof Theme>;\n\n/**\n * 테마 전역 primary가 custom color(black 등)일 때 그 값을 하위로 전달하는 context.\n * Radix는 Portal 컨텐츠(Select 드롭다운 등)에 theme의 accentColor \"값\"(여기선 fallback gray)만\n * 복제하고 `.tipp-accent-black` className은 복제하지 않으므로, Portal 안에서는 accent override가\n * 사라진다. 래핑된 overlay 컴포넌트(Select 등)가 이 context를 최하위 fallback color로 읽어\n * 자기 요소에 className을 직접 부여하면 Portal 내부에서도 black이 유지된다.\n * (custom accent가 아닐 때는 undefined — Radix 네이티브 portal 상속에 맡긴다.)\n */\nexport const ThemeAccentContext = createContext<UiColor | undefined>(undefined);\n\nexport interface ThemeProviderProps extends Omit<ThemeProps, 'accentColor'> {\n children: React.ReactNode;\n /**\n * 전역 primary(accent) color. Radix accent color에 더해 커스텀 `black`을 지원한다.\n * black이면 Radix에는 fallback `gray`를 넘기고 Theme 루트에 accent override\n * className을 부여하여 하위 컴포넌트가 color prop 없이도 black을 상속한다.\n */\n accentColor?: ThemeProps['accentColor'] | 'black';\n}\n\nexport function ThemeProvider(props: ThemeProviderProps): React.ReactNode {\n const { accentColor = 'iris', className, ...rest } = props;\n\n const { color: radixAccent, className: accentClassName } =\n resolveColor(accentColor);\n\n // custom accent(className이 생기는 경우 = black)일 때만 Portal 보정용으로 context에 흘린다.\n const themeAccent = accentClassName ? accentColor : undefined;\n\n return (\n <ThemeAccentContext.Provider value={themeAccent}>\n <Theme\n accentColor={radixAccent ?? 'iris'}\n className={clsx(accentClassName, className)}\n radius=\"medium\"\n {...rest}\n />\n </ThemeAccentContext.Provider>\n );\n}\n","import { CheckboxGroup as RadixCheckboxGroup } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { forwardRef, useMemo } from 'react';\nimport { resolveColor, type UiColor } from '../utils/resolve-color';\n\ntype RadixCheckboxGroupProps = React.ComponentPropsWithoutRef<\n typeof RadixCheckboxGroup.Root\n>;\ntype CheckboxGroupProps = Omit<RadixCheckboxGroupProps, 'size'> & {\n size?: 'small' | 'medium' | 'large';\n /**\n * CheckboxGroup은 Radix color prop이 없어 per-instance로는 custom accent(black 등)만\n * className override로 적용된다. semantic/radix color는 theme accent로만 가능.\n */\n color?: UiColor;\n};\n\nconst Root = forwardRef<HTMLDivElement, CheckboxGroupProps>((props, ref) => {\n const { children, size = 'medium', color, className, ...rest } = props;\n\n const groupSize = useMemo<RadixCheckboxGroupProps['size']>(() => {\n switch (size) {\n case 'small':\n return '1';\n case 'large':\n return '3';\n case 'medium':\n default:\n return '2';\n }\n }, [size]);\n\n const { className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n return (\n <RadixCheckboxGroup.Root\n {...rest}\n className={clsx(colorClassName, className)}\n ref={ref}\n size={groupSize}\n >\n {children}\n </RadixCheckboxGroup.Root>\n );\n});\n\nRoot.displayName = 'CheckboxGroup.Root';\n\nexport const CheckboxGroup = {\n Root,\n Item: RadixCheckboxGroup.Item,\n};\n","import { RadioGroup as RadixRadioGroup } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { forwardRef, useMemo } from 'react';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\ntype RadioGroupRootProps = DistributiveOmit<\n React.ComponentPropsWithoutRef<typeof RadixRadioGroup.Root>,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Root = forwardRef<\n React.ElementRef<typeof RadixRadioGroup.Root>,\n RadioGroupRootProps\n>((props, ref) => {\n const { color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n // custom color(black)는 className의 변수 override만 사용한다. fallback color를 함께 넘기면\n // RadioGroup이 그 color를 자식 Item으로 전파하고, 각 Item이 자기 `data-accent-color`로\n // gray를 다시 적용해 조상 className override를 자식 스코프에서 덮어버린다.\n const appliedColor = colorClassName ? undefined : radixColor;\n\n return (\n <RadixRadioGroup.Root\n {...rest}\n className={clsx(colorClassName, className)}\n color={appliedColor}\n ref={ref}\n />\n );\n});\n\nRoot.displayName = 'RadioGroup.Root';\n\nexport const RadioGroup = {\n ...RadixRadioGroup,\n Root,\n};\n\n","import {\n Checkbox as RadixCheckbox,\n type CheckboxProps as RadixCheckboxProps,\n} from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport { useMemo, forwardRef } from 'react';\nimport { resolveColor, type UiColor } from '../utils/resolve-color';\n\nexport type CheckboxProps = Omit<RadixCheckboxProps, 'size' | 'color'> & {\n size?: 'small' | 'medium' | 'large';\n color?: UiColor;\n};\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (props, ref): React.ReactNode => {\n const { size = 'medium', color, className, ...rest } = props;\n\n const radixSize = useMemo<RadixCheckboxProps['size']>(() => {\n switch (size) {\n case 'small':\n return '1';\n case 'medium':\n return '2';\n case 'large':\n return '3';\n }\n }, [size]);\n\n const { color: radixColor, className: colorClassName } =\n resolveColor(color);\n\n return (\n <RadixCheckbox\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n />\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { RadioCards as RadixRadioCards } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { forwardRef, useMemo } from 'react';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\ntype RadioCardsRootProps = DistributiveOmit<\n React.ComponentPropsWithoutRef<typeof RadixRadioCards.Root>,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Root = forwardRef<\n React.ElementRef<typeof RadixRadioCards.Root>,\n RadioCardsRootProps\n>((props, ref) => {\n const { color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n // custom color(black)는 className의 변수 override만 사용한다. fallback color를 함께 넘기면\n // RadioCards가 그 color를 자식 Item으로 전파하고, 각 Item이 자기 `data-accent-color`로\n // gray를 다시 적용해 조상 className override를 자식 스코프에서 덮어버린다.\n const appliedColor = colorClassName ? undefined : radixColor;\n\n return (\n <RadixRadioCards.Root\n {...rest}\n className={clsx(colorClassName, className)}\n color={appliedColor}\n ref={ref}\n />\n );\n});\n\nRoot.displayName = 'RadioCards.Root';\n\nexport const RadioCards = {\n ...RadixRadioCards,\n Root,\n};\n\n","export { Grid, type GridProps } from '@radix-ui/themes';\n","export { Inset, type InsetProps } from '@radix-ui/themes';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAqC;;;ACErC,IAAAA,iBAAkC;AAClC,kBAAqB;AACrB,mBAA2C;;;ACFpC,IAAM,oBAAoB,CAChC,SAC+B;AAC9B,QAAM,EAAC,OAAO,MAAK,IAAI;AACvB,MAAG,OAAO,UAAU,UAAS;AAC3B,WAAO,MAAM,KAAK;AAAA,EACpB;AAAC;AAED,MAAG,OAAO,UAAU,UAAS;AAC3B,UAAM,SAAyC,CAAC;AAChD,QAAI;AACJ,SAAI,OAAO,OAAM;AACf,aAAO,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACVO,IAAM,aAA4B;AAAA,EACvC,YAAY;AAAA,EACZ,oBAAoB;AACtB;;;ACiBA,IAAM,qBAAoE;AAAA,EACxE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAgBA,IAAM,mBAA2D;AAAA,EAC/D,OAAO,EAAE,WAAW,qBAAqB,eAAe,OAAO;AACjE;AAEA,IAAM,kBAAkB,CAAC,UACvB,UAAU,UAAa,SAAS;AAElC,IAAM,gBAAgB,CAAC,UACrB,UAAU,UAAa,SAAS;AAgB3B,IAAM,eAAe,CAAC,UAAmC;AAC9D,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,WAAW,cAAc,IAAI,iBAAiB,KAAK;AAC3D,WAAO,EAAE,OAAO,eAAe,UAAU;AAAA,EAC3C;AAEA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO,EAAE,OAAO,mBAAmB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO,EAAE,MAAM;AACjB;;;AHjCM;AAhCC,IAAM,WAAO;AAAA,EAClB,CAAC,OAAkB,QAAyB;AAC1C,UACE,YADM,QAAM,SAAS,UAAU,OAAO,WAAW,MAAM,MAtB7D,IAuBM,IADiE,iBACjE,IADiE,CAA3D,QAAM,WAAS,YAAU,SAAO,aAAW,QAAM;AAGzD,UAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,MACvD,MAAM,aAAa,KAAK;AAAA,MACxB,CAAC,KAAK;AAAA,IACR;AAEA,UAAM,gBAAY,sBAAgC,MAAM;AACtD,UAAI,SAAS,OAAW,QAAO;AAE/B,UAAI,YAAY,OAAW,QAAO;AAElC,aAAO,kBAAkB;AAAA,QACvB,OAAO;AAAA,QACP,OAAO,CAAC,iBAAmD;AACzD,kBAAQ,cAAc;AAAA,YACpB,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AAAA,YACL;AACE,qBAAO;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,WACE;AAAA,MAAC,eAAAC;AAAA,MAAA,iCACK,OADL;AAAA,QAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,QACzC,OAAO;AAAA,QACP;AAAA,QACA,MAAM;AAAA,QACN,OAAO,OAAO,kCAAK,aAAe,SAAU;AAAA,QAE3C;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;AIlEnB,IAAAC,gBAAiD;;;ACAjD,gBAA2B;AAC3B,IAAAC,gBAAsE;;;ACDtE,IAAAC,iBAGO;AAEP,IAAAC,eAAqB;AACrB,IAAAC,gBAAwB;AASxB,IAAAC,iBAAwC;AAqDpC,IAAAC,sBAAA;AArCJ,IAAM,aAAa,CAAC,YAAsD;AACxE,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAASC,SAAQ,OAAsC;AAC5D,QACE,YADM,QAAM,UAAU,SAAS,OAAO,WAAW,MAAM,MAjD3D,IAkDI,IADiE,iBACjE,IADiE,CAA3D,QAAM,YAAU,WAAS,SAAO,aAAW,QAAM;AAGzD,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,gBAAY,uBAAmC,MAAM;AACzD,WAAO,UACH,kBAAkB;AAAA,MAChB,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC,IACD;AAAA,EAEN,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,SACE;AAAA,IAAC,eAAAC;AAAA,IAAA,iCACK,OADL;AAAA,MAEC,eAAW,mBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO,OAAO,kCAAK,aAAe,SAAU;AAAA,MAE3C;AAAA;AAAA,EACH;AAEJ;;;ADpEM,IAAAC,sBAAA;AAHN,IAAMC,YAAO;AAAA,EACX,CAAC,IAAkC,QAAQ;AAA1C,iBAAE,YAAU,UARf,IAQG,IAA0B,iBAA1B,IAA0B,CAAxB,YAAU;AACX,WACE;AAAA,MAAW;AAAA,MAAV,iCACK,OADL;AAAA,QAEC,WAAW,YAAY,aAAa,EAAE;AAAA,QACtC;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEAA,MAAK,cAAc;AAInB,IAAM,mBAAe,6BAA8B;AAAA,EACjD,MAAM;AACR,CAAC;AAED,IAAMC,aAAQ;AAAA,EACZ,CAAC,IAAkC,QAAQ;AAA1C,iBAAE,YAAU,UA9Bf,IA8BG,IAA0B,iBAA1B,IAA0B,CAAxB,YAAU;AACX,WACE;AAAA,MAAW;AAAA,MAAV,iCACK,OADL;AAAA,QAEC,WAAW,aAAa,aAAa,EAAE;AAAA,QACvC;AAAA,QAEA,uDAAC,aAAa,UAAb,EAAsB,OAAO,MAAO,UAAS;AAAA;AAAA,IAChD;AAAA,EAEJ;AACF;AACAA,OAAM,cAAc;AAOpB,SAAS,aAAa,OAAsC;AAC1D,SACE,6CAACC,UAAA,+BAAQ,SAAQ,cAAe,QAA/B,EACE,gBAAM,WACT;AAEJ;AAEA,SAAS,aAAa,OAAmC;AACvD,SACE,6CAAC,qCAAK,OAAM,QAAO,SAAQ,WAAU,QAAO,UAAW,QAAtD,EACE,gBAAM,WACT;AAEJ;AAEA,SAAS,UAAU,OAAmC;AACpD,SACE,6CAAC,qCAAK,SAAQ,QAAO,QAAO,UAAW,QAAtC,EACE,gBAAM,WACT;AAEJ;AAEA,IAAMC,aAAQ;AAAA,EACZ,CAAC,IAA2C,QAAQ;AAAnD,iBAAE,YAAU,WAAW,QA1E1B,IA0EG,IAAmC,iBAAnC,IAAmC,CAAjC,YAAU,aAAW;AACtB,UAAM,WAAO,uBAAQ,MAAM;AACzB,cAAQ,SAAS;AAAA,QACf,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,MACX;AAAA,IACF,GAAG,CAAC,OAAO,CAAC;AAEZ,UAAM,iBAAa,0BAAW,YAAY;AAC1C,WACE;AAAA,MAAW;AAAA,MAAV,iCACK,OADL;AAAA,QAEC,SAAO;AAAA,QACP,WAAW,aAAa,aAAa,EAAE;AAAA,QACvC;AAAA,QAEA,wDAAC,QACE;AAAA;AAAA,UACA,WAAW,WACV,6CAAC,QAAK,IAAG,QAAO,OAAM,UACnB,gBACH,IACE;AAAA,WACN;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACAA,OAAM,cAAc;AAEpB,IAAMC,eAAU;AAAA,EACd,CAAC,IAAkC,QAAQ;AAA1C,iBAAE,YAAU,UA9Gf,IA8GG,IAA0B,iBAA1B,IAA0B,CAAxB,YAAU;AACX,WACE;AAAA,MAAW;AAAA,MAAV,iCACK,OADL;AAAA,QAEC,SAAO;AAAA,QACP,WAAW,eAAe,aAAa,EAAE;AAAA,QACzC;AAAA,QAEA,uDAAC,QAAK,OAAM,OAAO,UAAS;AAAA;AAAA,IAC9B;AAAA,EAEJ;AACF;AACAA,SAAQ,cAAc;AAGtB,IAAMC,eAAU;AAAA,EACd,CAAC,IAAwB,QAAQ;AAAhC,iBAAE,YA/HL,IA+HG,IAAgB,iBAAhB,IAAgB,CAAd;AACD,UAAM,iBAAa,0BAAW,YAAY;AAC1C,WACE;AAAA,MAAW;AAAA,MAAV,iCACK,OADL;AAAA,QAEC,WAAW,eAAe,aAAa,EAAE;AAAA,QACzC;AAAA,QACA,UAAU,WAAW;AAAA;AAAA,IACvB;AAAA,EAEJ;AACF;AACAA,SAAQ,cAAc;;;ADrFhB,IAAAC,sBAAA;AArCN,IAAM,yBAAqB,6BAA8C,IAAI;AA0CtE,SAAS,iBAA0C;AACxD,QAAM,cAAU,0BAAW,kBAAkB;AAE7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AAEA,SAAO;AACT;;;AGnEA,IAAAC,iBAAwC;AACxC,IAAAC,gBAAoC;AAuBhC,IAAAC,sBAAA;AAjBJ,IAAMC,YAAO,0BAGX,CAAC,OAAO,QAAQ;AAChB,QAA6C,YAArC,SAAO,OAAO,UAXxB,IAW+C,IAAT,iBAAS,IAAT,CAA5B,SAAO,SAAO;AAEtB,QAAM,iBAAa,uBAAQ,MAAM;AAC/B,QAAI,CAAC,MAAO,QAAO;AACnB,UAAM,aAAa;AAAA,MACjB,WAAW;AAAA,IACb;AAEA,WAAO,kCAAM,SAAS,CAAC,IAAO;AAAA,EAChC,GAAG,CAAC,OAAO,KAAK,CAAC;AAEjB,QAAM,eAAe,QAAQ,SAAS,SAAS,KAAK;AACpD,SACE;AAAA,IAAC,eAAAC,UAAW;AAAA,IAAX;AAAA,MACC,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,OACH;AAAA,EACN;AAEJ,CAAC;AAEDD,MAAK,cAAc;AAEnB,IAAM,YAAY,EAAE,MAAAA,OAAM,MAAM,eAAAC,UAAW,KAAK;;;ACnChD,IAAAC,iBAGO;AACP,IAAAC,gBAAoC;AAqB9B,IAAAC,sBAAA;AAfN,IAAM,eAAW;AAAA,EACf,CAAC,OAAO,QAAQ;AACd,UAA6C,YAArC,SAAO,OAAO,UAZ1B,IAYiD,IAAT,iBAAS,IAAT,CAA5B,SAAO,SAAO;AACtB,UAAM,iBAAa,uBAAQ,MAAM;AAC/B,UAAI,CAAC,MAAO,QAAO;AACnB,YAAM,aAAa;AAAA,QACjB,WAAW;AAAA,MACb;AAEA,aAAO,kCAAM,SAAS,CAAC,IAAO;AAAA,IAChC,GAAG,CAAC,OAAO,KAAK,CAAC;AAEjB,UAAM,eAAe,QAAQ,SAAS,SAAS,KAAK;AAEpD,WACE;AAAA,MAAC,eAAAC;AAAA,MAAA,iCACK,OADL;AAAA,QAEC,WAAW;AAAA,QACX;AAAA,QACA,OAAO;AAAA;AAAA,IACT;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;ACnCvB,IAAAC,iBAAsC;AACtC,IAAAC,eAAqB;AACrB,IAAAC,gBAA+D;;;ACF/D,IAAAC,gBAAqC;AACrC,IAAAC,iBAAsB;AACtB,IAAAC,eAAqB;AAoCf,IAAAC,sBAAA;AAvBC,IAAM,yBAAqB,6BAAmC,MAAS;;;AD8B1E,IAAAC,sBAAA;AAnCJ,IAAM,oBAAgB,6BAAoD;AAAA,EACxE,OAAO;AACT,CAAC;AAUD,IAAM,cAAU,0BAAyC,CAAC,OAAO,QAAQ;AACvE,QAAoD,YAA5C,aAAW,cAAc,MAvBnC,IAuBsD,IAAT,iBAAS,IAAT,CAAnC,aAAW,gBAAc;AACjC,QAAM,EAAE,OAAO,OAAO,aAAa,QAAI,0BAAW,aAAa;AAC/D,QAAM,kBAAc,0BAAW,kBAAkB;AAIjD,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAG;AA9BP,UAAAC;AA8BU,2BAAaA,MAAA,wBAAS,iBAAT,OAAAA,MAAyB,WAAW;AAAA;AAAA,IACvD,CAAC,OAAO,cAAc,WAAW;AAAA,EACnC;AAIA,QAAM,eAAe,iBAAiB,SAAY;AAElD,QAAM,UAAM,uBAAQ,MAAM;AACxB,UAAM,MAAM,eAAe,eAAe;AAC1C,UAAM,WAAW,QAAQ,eAAe;AACxC,eAAO,mBAAK,KAAK,UAAU,gBAAgB,SAAS;AAAA,EACtD,GAAG,CAAC,WAAW,gBAAgB,OAAO,YAAY,CAAC;AAEnD,SACE;AAAA,IAAC,eAAAC,OAAY;AAAA,IAAZ;AAAA,MACC,UAAS;AAAA,OACL,OAFL;AAAA,MAGC,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,QAAQ,cAAc;AAStB,IAAM,cAAU,0BAA4C,CAAC,OAAO,QAAQ;AAC1E,QAAsC,YAA9B,aAAW,MAhErB,IAgEwC,IAAT,iBAAS,IAAT,CAArB,aAAW;AACnB,QAAM,EAAE,OAAO,OAAO,aAAa,QAAI,0BAAW,aAAa;AAE/D,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,wBAAS,YAAY;AAAA,IACxC,CAAC,OAAO,YAAY;AAAA,EACtB;AAGA,QAAM,eAAe,iBAAiB,SAAY;AAElD,QAAM,UAAM,uBAAQ,MAAM;AACxB,UAAM,WAAW,QAAQ,UAAU;AACnC,eAAO,mBAAK,UAAU,gBAAgB,SAAS;AAAA,EACjD,GAAG,CAAC,WAAW,gBAAgB,KAAK,CAAC;AAErC,SACE;AAAA,IAAC,eAAAA,OAAY;AAAA,IAAZ,iCACK,OADL;AAAA,MAEC,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,QAAQ,cAAc;AAQtB,SAASC,MAAK,OAAyC;AACrD,QAAkC,YAA1B,SAAO,MAnGjB,IAmGoC,IAAT,iBAAS,IAAT,CAAjB,SAAO;AAEf,QAAM,YAAQ,uBAAQ,OAAO,EAAE,OAAO,MAAM,IAAI,CAAC,OAAO,KAAK,CAAC;AAE9D,SACE,6CAAC,cAAc,UAAd,EAAuB,OACtB,uDAAC,eAAAD,OAAY,MAAZ,mBAAqB,KAAM,GAC9B;AAEJ;AAEAC,MAAK,cAAc;AAEZ,IAAM,SAAS,iCACjB,eAAAD,SADiB;AAAA,EAEpB,MAAAC;AAAA,EACA;AAAA,EACA;AACF;;;AErHA,IAAAC,iBAAoD;AACpD,IAAAC,eAAqB;AACrB,IAAAC,gBAA2C;AAoCvC,IAAAC,sBAAA;AArBJ,IAAMC,YAAO,0BAA+C,CAAC,OAAO,QAAQ;AAC1E,QAAiE,YAAzD,YAAU,OAAO,UAAU,OAAO,UAlB5C,IAkBmE,IAAT,iBAAS,IAAT,CAAhD,YAAU,QAAiB,SAAO;AAE1C,QAAM,gBAAY,uBAAyC,MAAM;AAC/D,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,EAAE,WAAW,eAAe,QAAI;AAAA,IACpC,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAEA,SACE;AAAA,IAAC,eAAAC,cAAmB;AAAA,IAAnB,iCACK,OADL;AAAA,MAEC,eAAW,mBAAK,gBAAgB,SAAS;AAAA,MACzC;AAAA,MACA,MAAM;AAAA,MAEL;AAAA;AAAA,EACH;AAEJ,CAAC;AAEDD,MAAK,cAAc;AAEZ,IAAM,gBAAgB;AAAA,EAC3B,MAAAA;AAAA,EACA,MAAM,eAAAC,cAAmB;AAC3B;;;ACtDA,IAAAC,kBAA8C;AAC9C,IAAAC,eAAqB;AACrB,IAAAC,iBAA2C;AA+BvC,IAAAC,uBAAA;AAjBJ,IAAMC,YAAO,2BAGX,CAAC,OAAO,QAAQ;AAChB,QAAsC,YAA9B,SAAO,UApBjB,IAoBwC,IAAT,iBAAS,IAAT,CAArB,SAAO;AAEf,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAKA,QAAM,eAAe,iBAAiB,SAAY;AAElD,SACE;AAAA,IAAC,gBAAAC,WAAgB;AAAA,IAAhB,iCACK,OADL;AAAA,MAEC,eAAW,mBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP;AAAA;AAAA,EACF;AAEJ,CAAC;AAEDD,MAAK,cAAc;AAEZ,IAAM,aAAa,iCACrB,gBAAAC,aADqB;AAAA,EAExB,MAAAD;AACF;;;AC/CA,IAAAE,kBAGO;AACP,IAAAC,eAAqB;AACrB,IAAAC,iBAAoC;AA2B9B,IAAAC,uBAAA;AAnBC,IAAM,eAAW;AAAA,EACtB,CAAC,OAAO,QAAyB;AAC/B,UAAuD,YAA/C,SAAO,UAAU,OAAO,UAfpC,IAe2D,IAAT,iBAAS,IAAT,CAAtC,QAAiB,SAAO;AAEhC,UAAM,gBAAY,wBAAoC,MAAM;AAC1D,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,MACX;AAAA,IACF,GAAG,CAAC,IAAI,CAAC;AAET,UAAM,EAAE,OAAO,YAAY,WAAW,eAAe,IACnD,aAAa,KAAK;AAEpB,WACE;AAAA,MAAC,gBAAAC;AAAA,MAAA,iCACK,OADL;AAAA,QAEC,eAAW,mBAAK,gBAAgB,SAAS;AAAA,QACzC,OAAO;AAAA,QACP;AAAA,QACA,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AC3CvB,IAAAC,kBAA8C;AAC9C,IAAAC,eAAqB;AACrB,IAAAC,iBAA2C;AA+BvC,IAAAC,uBAAA;AAjBJ,IAAMC,YAAO,2BAGX,CAAC,OAAO,QAAQ;AAChB,QAAsC,YAA9B,SAAO,UApBjB,IAoBwC,IAAT,iBAAS,IAAT,CAArB,SAAO;AAEf,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAKA,QAAM,eAAe,iBAAiB,SAAY;AAElD,SACE;AAAA,IAAC,gBAAAC,WAAgB;AAAA,IAAhB,iCACK,OADL;AAAA,MAEC,eAAW,mBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP;AAAA;AAAA,EACF;AAEJ,CAAC;AAEDD,MAAK,cAAc;AAEZ,IAAM,aAAa,iCACrB,gBAAAC,aADqB;AAAA,EAExB,MAAAD;AACF;;;AC/CA,IAAAE,kBAAqC;;;ACArC,IAAAC,kBAAuC;;;AlBmH/B,IAAAC,uBAAA;AA1FR,SAAS,SAAS,OAAkD;AAClE,SAAO,QAAQ,KAAK,KAAK,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,cAAc,OAAsC;AAC3D,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,QAAQ,MAAM;AACpB,QAAM,cAAc,MAAM;AAC1B,SACE,OAAO,UAAU,aAChB,OAAO,gBAAgB,YAAY,OAAO,gBAAgB;AAE/D;AAEA,SAAS,mBAAmB,OAA2C;AACrE,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,MAAI,CAAC,cAAc,KAAK,EAAG,QAAO;AAClC,QAAM,WAAW,MAAM;AACvB,QAAM,MAAM,MAAM;AAClB,SACE,OAAO,aAAa,aAAa,QAAQ,UAAa,OAAO,QAAQ;AAEzE;AAEA,SAAS,cAAc,KAAc,KAAa,UAA0B;AAC1E,MAAI,CAAC,SAAS,GAAG,EAAG,QAAO;AAC3B,QAAM,QAAQ,IAAI,GAAG;AACrB,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,cAAc,KAAc,KAAa,UAA0B;AAC1E,MAAI,CAAC,SAAS,GAAG,EAAG,QAAO;AAC3B,QAAM,QAAQ,IAAI,GAAG;AACrB,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,WAAW,OAAsC;AACxD,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,UAAU,MAAM;AACtB,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AACpC,MAAI,CAAC,QAAQ,MAAM,aAAa,EAAG,QAAO;AAC1C,SAAO;AACT;AAEA,SAAS,gBAAgB,OAA2C;AAClE,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,QAAM,UAAU,MAAM;AACtB,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AACpC,MAAI,CAAC,QAAQ,MAAM,kBAAkB,EAAG,QAAO;AAC/C,SAAO;AACT;AAMO,SAAS,iBAAiB;AAAA,EAC/B;AACF,GAA6D;AAC3D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,eAAe;AACnB,QAAM,OAAO,MAAM;AAEnB,QAAM,QAAQ,cAAc,IAAI;AAChC,QAAM,QAAQ,cAAc,IAAI;AAChC,QAAM,UAAU,gBAAgB,IAAI;AACpC,QAAM,WAAW,QAAQ,SAAS,OAAO;AAEzC,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,OAAO,OAAO,SAAS,EAAE;AAAA,IACzB,UAAU,WAAW,SAAY;AAAA,IACjC,QAAQ,WAAW,SAAY;AAAA,IAC/B,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAEA,QAAM,gBACJ,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI;AAE3E,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aACE;AAAA,QAAC,UAAU;AAAA,QAAV,iCACK,cADL;AAAA,UAEC,aAAa,MAAM;AAAA,UACnB,MAAK;AAAA;AAAA,MACP;AAAA,IAEJ,KAAK;AACH,aACE;AAAA,QAAC,UAAU;AAAA,QAAV,iCACK,cADL;AAAA,UAEC,aAAa,MAAM;AAAA,UACnB,MAAK;AAAA;AAAA,MACP;AAAA,IAEJ,KAAK;AACH,aACE;AAAA,QAAC,UAAU;AAAA,QAAV,iCACK,cADL;AAAA,UAEC,WAAU;AAAA,UACV,SAAQ;AAAA,UACR,aAAa,MAAM;AAAA,UACnB,MAAK;AAAA;AAAA,MACP;AAAA,IAEJ,KAAK;AACH,aAAO,8CAAC,yCAAS,MAAM,KAAO,cAAtB,EAAmC,aAAa,MAAM,cAAc;AAAA,IAE9E,KAAK;AACH,aACE;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,UAAU;AAAA,UACV,eAAe,WAAW,SAAY,CAAC,aAAqB;AAC1D,iBAAK,cAAc,MAAM,QAAQ;AAAA,UACnC;AAAA,UACA,OAAO;AAAA,UAEP;AAAA;AAAA,cAAC,OAAO;AAAA,cAAP;AAAA,gBACC,aAAa,MAAM;AAAA,gBACnB,OAAO;AAAA,kBACL,WAAW;AAAA,kBACX,OAAO;AAAA,kBACP,UAAU;AAAA,kBACV,UAAU;AAAA,gBACZ;AAAA;AAAA,YACF;AAAA,YACA,8CAAC,OAAO,SAAP,EACE,gBAAM,QAAQ,IAAI,CAAC,WAClB,8CAAC,OAAO,MAAP,EAA+B,OAAO,OAAO,OAAO,KAAK,GACvD,iBAAO,SADQ,OAAO,KAEzB,CACD,GACH;AAAA;AAAA;AAAA,MACF;AAAA,IAGJ,KAAK;AACH,aACE;AAAA,QAAC,WAAW;AAAA,QAAX;AAAA,UACC,UAAU;AAAA,UACV,eAAe,WAAW,SAAY,CAAC,aAAqB;AAC1D,iBAAK,cAAc,MAAM,QAAQ;AAAA,UACnC;AAAA,UACA,aAAa,MAAM;AAAA,UACnB,OAAO,OAAO,SAAS,EAAE;AAAA,UAExB,gBAAM,QAAQ,IAAI,CAAC,WAClB,8CAAC,WAAW,MAAX,EAAmC,OAAO,OAAO,OAAO,KAAK,GAC3D,iBAAO,SADY,OAAO,KAE7B,CACD;AAAA;AAAA,MACH;AAAA,IAGJ,KAAK,eACH;AACE,YAAM,UAAU,WAAW,KAAK;AAChC,UAAI,CAAC,QAAS,QAAO;AAErB,aACE;AAAA,QAAC,WAAW;AAAA,QAAX;AAAA,UACC,UAAU;AAAA,UACV,eACE,WACI,SACA,CAAC,aAAqB;AACpB,iBAAK,cAAc,MAAM,QAAQ;AAAA,UACnC;AAAA,UAEN,OAAO;AAAA,UAEN,kBAAQ,IAAI,CAAC,WACZ,8CAAC,WAAW,MAAX,EAAmC,OAAO,OAAO,OAAO,KAAK,GAC5D,wDAAC,QAAM,iBAAO,OAAM,KADA,OAAO,KAE7B,CACD;AAAA;AAAA,MACH;AAAA,IAEJ;AAAA,IAEF,KAAK;AACH,aACE;AAAA,QAAC,cAAc;AAAA,QAAd;AAAA,UACC,UAAU;AAAA,UACV,eAAe,WAAW,SAAY,CAAC,aAAuB;AAC5D,iBAAK,cAAc,MAAM,QAAQ;AAAA,UACnC;AAAA,UACA,aAAa,MAAM;AAAA,UACnB,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,UAElD,gBAAM,QAAQ,IAAI,CAAC,WAClB,8CAAC,cAAc,MAAd,EAAsC,OAAO,OAAO,OAAO,KAAK,GAC9D,iBAAO,SADe,OAAO,KAEhC,CACD;AAAA;AAAA,MACH;AAAA,IAGJ,KAAK;AACH,aACE,+CAAC,sBAAK,KAAI,KACR;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,QAAQ,KAAK;AAAA,YACtB,UAAU;AAAA,YACV,iBAAiB,WAAW,SAAY,CAAC,YAAqB;AAC5D,mBAAK,cAAc,MAAM,OAAO;AAAA,YAClC;AAAA;AAAA,QACF;AAAA,QACC,MAAM,cACL,8CAAC,QAAK,OAAM,QAAO,SAAQ,WACxB,gBAAM,aACT,IACE;AAAA,SACN;AAAA,IAGJ,KAAK,oBAAoB;AACvB,YAAM,UAAU,gBAAgB,KAAK;AACrC,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,mBAAmB,KAAK,IAAI,GAAG,cAAc,OAAO,oBAAoB,CAAC,CAAC;AAChF,YAAM,cAAc;AAAA,QAClB;AAAA,QACA;AAAA,QACA,UAAU,gBAAgB;AAAA,MAC5B;AAEA,YAAM,iBAAiB,cAAc,OAAO,kBAAkB,OAAO;AACrE,YAAM,WAAW,cAAc,OAAO,YAAY,cAAc;AAChE,YAAM,UAAU,cAAc,OAAO,WAAW,GAAG;AACnD,YAAM,cAAc,cAAc,OAAO,YAAY,OAAO;AAC5D,YAAM,WACJ,gBAAgB,YAAY,YAAY;AAE1C,YAAM,oBAAoB,CAAC,aAA2B;AACpD,YAAI,SAAU;AACd,cAAM,iBAAiB,QAAQ;AAAA,UAC7B,CAAC,WAAW,OAAO,OAAO,KAAK,MAAM;AAAA,QACvC;AACA,YAAI,CAAC,eAAgB;AACrB,aAAK,cAAc,MAAM,eAAe,KAAK;AAAA,MAC/C;AAEA,aACE;AAAA,QAAC,WAAW;AAAA,QAAX;AAAA,UACC,UAAU;AAAA,UACV,eAAe,WAAW,SAAY;AAAA,UACtC,OAAO;AAAA,UAEP,wDAAC,wBAAK,SAAS,aAAa,KAAK,SAAS,MAAM,UAC7C,kBAAQ,IAAI,CAAC,WAAW;AACvB,kBAAM,cAAc,OAAO,OAAO,KAAK;AACvC,kBAAM,UAAkB,OAAO,OAAO,OAAO;AAE7C,mBACE;AAAA,cAAC,WAAW;AAAA,cAAX;AAAA,gBAEC,OAAO;AAAA,kBACL,SAAS;AAAA,gBACX;AAAA,gBACA,OAAO;AAAA,gBAEP,wDAAC,yBAAM,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,SAAS,EAAE,GACxD;AAAA,kBAAC;AAAA;AAAA,oBACC,KAAK;AAAA,oBACL,KAAK,OAAO;AAAA,oBACZ,OAAO;AAAA,sBACL,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,SAAS;AAAA,sBACT,WAAW;AAAA,sBACX,SAAS,WAAW,MAAM;AAAA,oBAC5B;AAAA;AAAA,gBACF,GACF;AAAA;AAAA,cAlBK;AAAA,YAmBP;AAAA,UAEJ,CAAC,GACH;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA,IAEA;AACE,aAAO;AAAA,EACX;AACF;","names":["import_themes","RadixText","import_react","import_react","import_themes","import_clsx","import_react","import_themes","import_jsx_runtime","Heading","RadixHeading","import_jsx_runtime","Root","Field","Heading","Label","Message","Control","import_jsx_runtime","import_themes","import_react","import_jsx_runtime","Root","RTextField","import_themes","import_react","import_jsx_runtime","RTextArea","import_themes","import_clsx","import_react","import_react","import_themes","import_clsx","import_jsx_runtime","import_jsx_runtime","_a","RadixSelect","Root","import_themes","import_clsx","import_react","import_jsx_runtime","Root","RadixCheckboxGroup","import_themes","import_clsx","import_react","import_jsx_runtime","Root","RadixRadioGroup","import_themes","import_clsx","import_react","import_jsx_runtime","RadixCheckbox","import_themes","import_clsx","import_react","import_jsx_runtime","Root","RadixRadioCards","import_themes","import_themes","import_jsx_runtime"]}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DynamicFormField
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-NIMF5FJI.js";
|
|
4
|
+
import "../chunk-QFSMOKC6.js";
|
|
5
|
+
import "../chunk-77YN5S26.js";
|
|
6
6
|
import "../chunk-5XYPLDI5.js";
|
|
7
7
|
import "../chunk-6NPTJBFE.js";
|
|
8
8
|
import "../chunk-YXMB4MCM.js";
|
|
9
9
|
import "../chunk-DX3DLP5Z.js";
|
|
10
10
|
import "../chunk-SA7AYYQS.js";
|
|
11
|
-
import "../chunk-XQOL7UBI.js";
|
|
12
11
|
import "../chunk-EGEQY3KT.js";
|
|
12
|
+
import "../chunk-XQOL7UBI.js";
|
|
13
|
+
import "../chunk-YIVIBIK2.js";
|
|
13
14
|
import "../chunk-WG5OK3YN.js";
|
|
14
15
|
import "../chunk-ZCGH6TJ3.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-GR4PG6HY.js";
|
|
16
|
+
import "../chunk-YXFHD2PY.js";
|
|
17
17
|
import "../chunk-LDBWASUA.js";
|
|
18
|
+
import "../chunk-PO2PBAHW.js";
|
|
18
19
|
import "../chunk-25HMMI7R.js";
|
|
19
20
|
import "../chunk-WYWM2HSZ.js";
|
|
20
21
|
import "../chunk-VFQD57ZY.js";
|
|
@@ -461,11 +461,17 @@ var mapWithResponsive = (args) => {
|
|
|
461
461
|
return value;
|
|
462
462
|
};
|
|
463
463
|
|
|
464
|
+
// src/utils/mono-style.ts
|
|
465
|
+
var MONO_STYLE = {
|
|
466
|
+
fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
|
|
467
|
+
fontVariantNumeric: "tabular-nums"
|
|
468
|
+
};
|
|
469
|
+
|
|
464
470
|
// src/atoms/typo.tsx
|
|
465
471
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
466
472
|
var Typo = (0, import_react9.forwardRef)(
|
|
467
473
|
(props, ref) => {
|
|
468
|
-
const _a = props, { size, variant, children, color, className } = _a, rest = __objRest(_a, ["size", "variant", "children", "color", "className"]);
|
|
474
|
+
const _a = props, { size, variant, children, color, className, mono, style } = _a, rest = __objRest(_a, ["size", "variant", "children", "color", "className", "mono", "style"]);
|
|
469
475
|
const { color: radixColor, className: colorClassName } = (0, import_react9.useMemo)(
|
|
470
476
|
() => resolveColor(color),
|
|
471
477
|
[color]
|
|
@@ -495,6 +501,7 @@ var Typo = (0, import_react9.forwardRef)(
|
|
|
495
501
|
color: radixColor,
|
|
496
502
|
ref,
|
|
497
503
|
size: radixSize,
|
|
504
|
+
style: mono ? __spreadValues(__spreadValues({}, MONO_STYLE), style) : style,
|
|
498
505
|
children
|
|
499
506
|
})
|
|
500
507
|
);
|