@tipp/ui 2.5.0 → 2.6.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 +1291 -837
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +122 -121
- package/dist/app/platform/coach-question-list.cjs +822 -364
- package/dist/app/platform/coach-question-list.cjs.map +1 -1
- package/dist/app/platform/coach-question-list.js +48 -46
- package/dist/app/platform/contents-card.cjs +815 -357
- package/dist/app/platform/contents-card.cjs.map +1 -1
- package/dist/app/platform/contents-card.js +48 -46
- package/dist/app/platform/curriculum-card.cjs +65 -13
- package/dist/app/platform/curriculum-card.cjs.map +1 -1
- package/dist/app/platform/curriculum-card.js +7 -6
- package/dist/app/platform/edit-coaching-time.cjs +1012 -558
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +97 -96
- package/dist/app/platform/edit-service-type.cjs +995 -541
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +98 -97
- package/dist/app/platform/goal-manage-card-edit.cjs +991 -537
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +97 -96
- package/dist/app/platform/goal-manage-card-read.cjs +865 -407
- package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-read.js +48 -46
- package/dist/app/platform/on-offline-radio-card.cjs +785 -331
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +97 -96
- package/dist/app/platform/report-card.cjs +828 -370
- package/dist/app/platform/report-card.cjs.map +1 -1
- package/dist/app/platform/report-card.js +48 -46
- package/dist/app/platform/reservation-card.cjs +1016 -562
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +98 -97
- package/dist/app/platform/session-card.cjs +1069 -615
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +100 -99
- package/dist/app/platform/session-review-simple-read.cjs +825 -367
- package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
- package/dist/app/platform/session-review-simple-read.js +48 -46
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +857 -399
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +54 -52
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +833 -375
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/large.js +49 -47
- package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +836 -378
- package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/medium.js +49 -47
- package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +823 -365
- package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/small.js +48 -46
- package/dist/app/platform/userInfos/session-user-info-detail.cjs +832 -374
- package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
- package/dist/app/platform/userInfos/session-user-info-detail.js +49 -47
- package/dist/app/platform/userInfos/utils.cjs +824 -366
- package/dist/app/platform/userInfos/utils.cjs.map +1 -1
- package/dist/app/platform/userInfos/utils.js +48 -46
- package/dist/atoms/alert-dialog.cjs +85 -1
- package/dist/atoms/alert-dialog.cjs.map +1 -1
- package/dist/atoms/alert-dialog.d.cts +18 -2
- package/dist/atoms/alert-dialog.d.ts +18 -2
- package/dist/atoms/alert-dialog.js +3 -1
- package/dist/atoms/aspect-ratio.d.cts +1 -0
- package/dist/atoms/aspect-ratio.d.ts +1 -0
- package/dist/atoms/avatar.cjs +39 -2
- package/dist/atoms/avatar.cjs.map +1 -1
- package/dist/atoms/avatar.d.cts +5 -2
- package/dist/atoms/avatar.d.ts +5 -2
- package/dist/atoms/avatar.js +2 -1
- package/dist/atoms/badge.cjs +34 -9
- package/dist/atoms/badge.cjs.map +1 -1
- package/dist/atoms/badge.d.cts +4 -5
- package/dist/atoms/badge.d.ts +4 -5
- package/dist/atoms/badge.js +2 -1
- package/dist/atoms/blockquote.cjs +71 -1
- package/dist/atoms/blockquote.cjs.map +1 -1
- package/dist/atoms/blockquote.d.cts +12 -1
- package/dist/atoms/blockquote.d.ts +12 -1
- package/dist/atoms/blockquote.js +2 -1
- package/dist/atoms/bullet-text.cjs +39 -2
- package/dist/atoms/bullet-text.cjs.map +1 -1
- package/dist/atoms/bullet-text.d.cts +1 -0
- package/dist/atoms/bullet-text.d.ts +1 -0
- package/dist/atoms/bullet-text.js +4 -3
- package/dist/atoms/button.cjs +33 -3
- package/dist/atoms/button.cjs.map +1 -1
- package/dist/atoms/button.d.cts +5 -3
- package/dist/atoms/button.d.ts +5 -3
- package/dist/atoms/button.js +2 -1
- package/dist/atoms/button.type.cjs.map +1 -1
- package/dist/atoms/button.type.d.cts +3 -1
- package/dist/atoms/button.type.d.ts +3 -1
- package/dist/atoms/call-out.cjs +78 -1
- package/dist/atoms/call-out.cjs.map +1 -1
- package/dist/atoms/call-out.d.cts +13 -1
- package/dist/atoms/call-out.d.ts +13 -1
- package/dist/atoms/call-out.js +2 -1
- package/dist/atoms/check-box-card.cjs +78 -1
- package/dist/atoms/check-box-card.cjs.map +1 -1
- package/dist/atoms/check-box-card.d.cts +12 -1
- package/dist/atoms/check-box-card.d.ts +12 -1
- package/dist/atoms/check-box-card.js +2 -1
- package/dist/atoms/check-box-group.cjs +40 -2
- package/dist/atoms/check-box-group.cjs.map +1 -1
- package/dist/atoms/check-box-group.d.cts +6 -0
- package/dist/atoms/check-box-group.d.ts +6 -0
- package/dist/atoms/check-box-group.js +2 -1
- package/dist/atoms/check-box.cjs +37 -2
- package/dist/atoms/check-box.cjs.map +1 -1
- package/dist/atoms/check-box.d.cts +5 -2
- package/dist/atoms/check-box.d.ts +5 -2
- package/dist/atoms/check-box.js +2 -1
- package/dist/atoms/code.cjs +73 -1
- package/dist/atoms/code.cjs.map +1 -1
- package/dist/atoms/code.d.cts +12 -1
- package/dist/atoms/code.d.ts +12 -1
- package/dist/atoms/code.js +2 -1
- package/dist/atoms/data-list.cjs +77 -1
- package/dist/atoms/data-list.cjs.map +1 -1
- package/dist/atoms/data-list.d.cts +14 -1
- package/dist/atoms/data-list.d.ts +14 -1
- package/dist/atoms/data-list.js +2 -1
- package/dist/atoms/dialog.cjs +49 -6
- package/dist/atoms/dialog.cjs.map +1 -1
- package/dist/atoms/dialog.js +4 -3
- package/dist/atoms/drawer.cjs +33 -3
- package/dist/atoms/drawer.cjs.map +1 -1
- package/dist/atoms/drawer.js +3 -2
- package/dist/atoms/dropdown-menu.cjs +63 -12
- package/dist/atoms/dropdown-menu.cjs.map +1 -1
- package/dist/atoms/dropdown-menu.d.cts +27 -17
- package/dist/atoms/dropdown-menu.d.ts +27 -17
- package/dist/atoms/dropdown-menu.js +3 -1
- package/dist/atoms/ellipsis-tooltip.cjs +73 -22
- package/dist/atoms/ellipsis-tooltip.cjs.map +1 -1
- package/dist/atoms/ellipsis-tooltip.d.cts +1 -0
- package/dist/atoms/ellipsis-tooltip.d.ts +1 -0
- package/dist/atoms/ellipsis-tooltip.js +5 -3
- package/dist/atoms/field-error-wrapper.cjs +39 -2
- package/dist/atoms/field-error-wrapper.cjs.map +1 -1
- package/dist/atoms/field-error-wrapper.js +4 -3
- package/dist/atoms/heading.cjs +38 -2
- package/dist/atoms/heading.cjs.map +1 -1
- package/dist/atoms/heading.d.cts +3 -1
- package/dist/atoms/heading.d.ts +3 -1
- package/dist/atoms/heading.js +2 -1
- package/dist/atoms/hover-card.cjs +85 -1
- package/dist/atoms/hover-card.cjs.map +1 -1
- package/dist/atoms/hover-card.d.cts +14 -1
- package/dist/atoms/hover-card.d.ts +14 -1
- package/dist/atoms/hover-card.js +3 -1
- package/dist/atoms/icon-button.cjs +33 -3
- package/dist/atoms/icon-button.cjs.map +1 -1
- package/dist/atoms/icon-button.d.cts +5 -3
- package/dist/atoms/icon-button.d.ts +5 -3
- package/dist/atoms/icon-button.js +2 -1
- package/dist/atoms/index.cjs +996 -506
- package/dist/atoms/index.cjs.map +1 -1
- package/dist/atoms/index.d.cts +18 -2
- package/dist/atoms/index.d.ts +18 -2
- package/dist/atoms/index.js +81 -79
- package/dist/atoms/link.cjs +40 -2
- package/dist/atoms/link.cjs.map +1 -1
- package/dist/atoms/link.d.cts +3 -1
- package/dist/atoms/link.d.ts +3 -1
- package/dist/atoms/link.js +2 -1
- package/dist/atoms/list.cjs +43 -4
- package/dist/atoms/list.cjs.map +1 -1
- package/dist/atoms/list.js +4 -3
- package/dist/atoms/pagination.cjs +100 -42
- package/dist/atoms/pagination.cjs.map +1 -1
- package/dist/atoms/pagination.d.cts +4 -0
- package/dist/atoms/pagination.d.ts +4 -0
- package/dist/atoms/pagination.js +5 -4
- package/dist/atoms/popover.cjs +85 -1
- package/dist/atoms/popover.cjs.map +1 -1
- package/dist/atoms/popover.d.cts +16 -1
- package/dist/atoms/popover.d.ts +16 -1
- package/dist/atoms/popover.js +3 -1
- package/dist/atoms/progress.cjs +71 -1
- package/dist/atoms/progress.cjs.map +1 -1
- package/dist/atoms/progress.d.cts +12 -1
- package/dist/atoms/progress.d.ts +12 -1
- package/dist/atoms/progress.js +2 -1
- package/dist/atoms/radio-cards.cjs +78 -1
- package/dist/atoms/radio-cards.cjs.map +1 -1
- package/dist/atoms/radio-cards.d.cts +12 -1
- package/dist/atoms/radio-cards.d.ts +12 -1
- package/dist/atoms/radio-cards.js +2 -1
- package/dist/atoms/radio-group.cjs +78 -1
- package/dist/atoms/radio-group.cjs.map +1 -1
- package/dist/atoms/radio-group.d.cts +12 -1
- package/dist/atoms/radio-group.d.ts +12 -1
- package/dist/atoms/radio-group.js +2 -1
- package/dist/atoms/radio.cjs +71 -1
- package/dist/atoms/radio.cjs.map +1 -1
- package/dist/atoms/radio.d.cts +12 -1
- package/dist/atoms/radio.d.ts +12 -1
- package/dist/atoms/radio.js +2 -1
- package/dist/atoms/segmented-control.cjs.map +1 -1
- package/dist/atoms/segmented-control.js +1 -1
- package/dist/atoms/select.cjs +78 -24
- package/dist/atoms/select.cjs.map +1 -1
- package/dist/atoms/select.d.cts +14 -4
- package/dist/atoms/select.d.ts +14 -4
- package/dist/atoms/select.js +3 -1
- package/dist/atoms/switch.cjs +71 -1
- package/dist/atoms/switch.cjs.map +1 -1
- package/dist/atoms/switch.d.cts +12 -1
- package/dist/atoms/switch.d.ts +12 -1
- package/dist/atoms/switch.js +2 -1
- package/dist/atoms/tab-nav.cjs +76 -1
- package/dist/atoms/tab-nav.cjs.map +1 -1
- package/dist/atoms/tab-nav.d.cts +16 -1
- package/dist/atoms/tab-nav.d.ts +16 -1
- package/dist/atoms/tab-nav.js +2 -1
- package/dist/atoms/tabs.cjs +76 -1
- package/dist/atoms/tabs.cjs.map +1 -1
- package/dist/atoms/tabs.d.cts +19 -1
- package/dist/atoms/tabs.d.ts +19 -1
- package/dist/atoms/tabs.js +2 -1
- package/dist/atoms/tooltip.cjs +46 -9
- package/dist/atoms/tooltip.cjs.map +1 -1
- package/dist/atoms/tooltip.js +3 -1
- package/dist/atoms/typo.cjs +39 -2
- package/dist/atoms/typo.cjs.map +1 -1
- package/dist/atoms/typo.d.cts +3 -1
- package/dist/atoms/typo.d.ts +3 -1
- package/dist/atoms/typo.js +2 -1
- package/dist/chunk-24PX34TH.js +42 -0
- package/dist/chunk-24PX34TH.js.map +1 -0
- package/dist/{chunk-GGLDVUYU.js → chunk-2FB75HU2.js} +5 -5
- package/dist/{chunk-7ITDAUWI.js → chunk-2I37QLRA.js} +15 -15
- package/dist/{chunk-ZVDAEY5Q.js → chunk-2LCH3PDF.js} +14 -4
- package/dist/chunk-2LCH3PDF.js.map +1 -0
- package/dist/{chunk-3NUQAVE6.js → chunk-2M3UFZUD.js} +15 -2
- package/dist/chunk-2M3UFZUD.js.map +1 -0
- package/dist/{chunk-PXPGCDNA.js → chunk-2O7NVLVP.js} +5 -5
- package/dist/{chunk-NZ6ONU5Z.js → chunk-2SM37SB4.js} +13 -13
- package/dist/{chunk-NLW32DPB.js → chunk-2WNLUQX5.js} +11 -11
- package/dist/chunk-3TOUVBIB.js +34 -0
- package/dist/chunk-3TOUVBIB.js.map +1 -0
- package/dist/{chunk-XBOSNFUM.js → chunk-447H6BVE.js} +6 -6
- package/dist/{chunk-5V6MQUTB.js → chunk-5OW76AER.js} +2 -2
- package/dist/chunk-6TU647KJ.js +37 -0
- package/dist/chunk-6TU647KJ.js.map +1 -0
- package/dist/{chunk-44VLRAHW.js → chunk-6YJGQWD6.js} +12 -12
- package/dist/{chunk-KCCYHT23.js → chunk-7JW5Z2TL.js} +4 -4
- package/dist/{chunk-JZVK4NDF.js → chunk-7PBLFV5L.js} +5 -5
- package/dist/{chunk-XK6VEVOK.js → chunk-7RJYF5L3.js} +14 -4
- package/dist/chunk-7RJYF5L3.js.map +1 -0
- package/dist/{chunk-UXVM3Y7P.js → chunk-A26UWBVB.js} +5 -5
- package/dist/{chunk-HJP4STJZ.js → chunk-A4YOY75P.js} +5 -5
- package/dist/{chunk-LSDD4TAP.js → chunk-AJTGTGOC.js} +3 -3
- package/dist/chunk-BI6TW3ZO.js +51 -0
- package/dist/chunk-BI6TW3ZO.js.map +1 -0
- package/dist/chunk-BK74U562.js +52 -0
- package/dist/chunk-BK74U562.js.map +1 -0
- package/dist/{chunk-JWAQUXGB.js → chunk-BZ3EXV6A.js} +3 -3
- package/dist/{chunk-QRI6ARS6.js → chunk-C2G3IB7G.js} +4 -4
- package/dist/chunk-CGDBUDY3.js +37 -0
- package/dist/chunk-CGDBUDY3.js.map +1 -0
- package/dist/chunk-DX3DLP5Z.js +39 -0
- package/dist/chunk-DX3DLP5Z.js.map +1 -0
- package/dist/{chunk-4U6DFH7Z.js → chunk-E6GCU5IQ.js} +2 -2
- package/dist/chunk-EIKFXUNC.js +39 -0
- package/dist/chunk-EIKFXUNC.js.map +1 -0
- package/dist/{chunk-CSKNBWPB.js → chunk-EZN5PMTC.js} +3 -3
- package/dist/chunk-EZN5PMTC.js.map +1 -0
- package/dist/{chunk-VRJR534I.js → chunk-GAA3RTRW.js} +4 -4
- package/dist/{chunk-VY557FHE.js → chunk-GE4M5GOQ.js} +4 -4
- package/dist/chunk-GI4AN2IZ.js +42 -0
- package/dist/chunk-GI4AN2IZ.js.map +1 -0
- package/dist/{chunk-OUJAPQS2.js → chunk-GPULIICW.js} +11 -11
- package/dist/{chunk-K36TPMKL.js → chunk-GPZXD762.js} +18 -3
- package/dist/chunk-GPZXD762.js.map +1 -0
- package/dist/{chunk-PMJIFLDT.js → chunk-GR4PG6HY.js} +20 -3
- package/dist/chunk-GR4PG6HY.js.map +1 -0
- package/dist/{chunk-7PF6I4RN.js → chunk-GRDRXD53.js} +2 -2
- package/dist/{chunk-TJKS6CLU.js → chunk-GREYLAMY.js} +6 -6
- package/dist/{chunk-VREM33BW.js → chunk-GYSRHZRS.js} +8 -8
- package/dist/{chunk-2TYR2RDO.js → chunk-H3GQHGFA.js} +8 -8
- package/dist/{chunk-KMVSJT6Y.js → chunk-HH6LML5K.js} +10 -10
- package/dist/{chunk-HQATHJBN.js → chunk-IA74OBFY.js} +58 -41
- package/dist/chunk-IA74OBFY.js.map +1 -0
- package/dist/{chunk-J62KAMQL.js → chunk-IM6E52L2.js} +10 -10
- package/dist/{chunk-TVDKGMBI.js → chunk-IT7ZTP7F.js} +1 -1
- package/dist/chunk-IT7ZTP7F.js.map +1 -0
- package/dist/{chunk-5LRFDSG2.js → chunk-J7N2IZQW.js} +6 -6
- package/dist/{chunk-EEAHZCIK.js → chunk-JCUG2XKB.js} +2 -2
- package/dist/chunk-JETG3WEI.js +39 -0
- package/dist/chunk-JETG3WEI.js.map +1 -0
- package/dist/{chunk-4LUFF5LX.js → chunk-JNEGSY5N.js} +3 -3
- package/dist/{chunk-CQSM6JCO.js → chunk-K3Q4XLCN.js} +4 -4
- package/dist/chunk-KNIIDDYM.js +34 -0
- package/dist/chunk-KNIIDDYM.js.map +1 -0
- package/dist/{chunk-4TST4UK5.js → chunk-KO3V7KB6.js} +2 -2
- package/dist/{chunk-3U6FXC6R.js → chunk-LIWQ47VQ.js} +11 -11
- package/dist/{chunk-2ZSK45QM.js → chunk-LQ3WGFS7.js} +9 -9
- package/dist/{chunk-A7LYIUE7.js → chunk-M77YPVQN.js} +7 -7
- package/dist/{chunk-P4KO43AP.js → chunk-MCKWO7K4.js} +5 -5
- package/dist/{chunk-G7NEBNHU.js → chunk-MGR37YQB.js} +6 -6
- package/dist/{chunk-QDC3LFHS.js → chunk-MMLVZWMD.js} +3 -3
- package/dist/{chunk-D4JZHM4J.js → chunk-MP5KZULQ.js} +10 -10
- package/dist/{chunk-WMWXF44S.js → chunk-MSLSD7F6.js} +5 -5
- package/dist/{chunk-JUDD3XGY.js → chunk-MSM2QG23.js} +9 -9
- package/dist/{chunk-NVQSH733.js → chunk-NFMEBYNY.js} +5 -5
- package/dist/{chunk-7ZMY4CAZ.js → chunk-NIHOKIYW.js} +6 -6
- package/dist/{chunk-BESTU2AY.js → chunk-NLHVQJQ2.js} +19 -3
- package/dist/chunk-NLHVQJQ2.js.map +1 -0
- package/dist/{chunk-3GQQQBJN.js → chunk-NYG34MV6.js} +6 -6
- package/dist/{chunk-XF7FPCS7.js → chunk-OA3DGWVL.js} +15 -15
- package/dist/{chunk-F5IXHUBI.js → chunk-OBWQ3N5D.js} +12 -12
- package/dist/{chunk-HVXBZGLT.js → chunk-OEHVGPWL.js} +16 -16
- package/dist/chunk-OLJN3WXR.js +1 -0
- package/dist/{chunk-WE3TWSC4.js → chunk-OPYRV6XJ.js} +5 -5
- package/dist/{chunk-WFOIY6OR.js → chunk-OQN4E2QP.js} +4 -4
- package/dist/{chunk-HZ7HETUI.js → chunk-OWQUXTQ2.js} +4 -4
- package/dist/{chunk-7I7PZF5L.js → chunk-OYXUWBKS.js} +3 -3
- package/dist/{chunk-D3KCPM4O.js → chunk-PE4EBBU4.js} +5 -5
- package/dist/{chunk-3GGJWSFK.js → chunk-PXMJK5D5.js} +10 -10
- package/dist/{chunk-Y4U24VXI.js → chunk-Q3M6GFHY.js} +3 -3
- package/dist/{chunk-GFURX6GB.js → chunk-QPL7SJQM.js} +5 -5
- package/dist/{chunk-YAUOAWYS.js → chunk-RMVVV5NH.js} +6 -6
- package/dist/chunk-RMW3MQF5.js +42 -0
- package/dist/chunk-RMW3MQF5.js.map +1 -0
- package/dist/{chunk-RPV3QPQL.js → chunk-RUJZ5PE7.js} +5 -5
- package/dist/chunk-SA7AYYQS.js +39 -0
- package/dist/chunk-SA7AYYQS.js.map +1 -0
- package/dist/{chunk-6J5YZTZE.js → chunk-T2CGNUCP.js} +7 -7
- package/dist/chunk-T73HHR3I.js +67 -0
- package/dist/chunk-T73HHR3I.js.map +1 -0
- package/dist/chunk-TNNF5Q62.js +34 -0
- package/dist/chunk-TNNF5Q62.js.map +1 -0
- package/dist/{chunk-ZUZ5FT4B.js → chunk-TU6SGJ5Z.js} +11 -11
- package/dist/{chunk-5ZEQ33PC.js → chunk-TYEGB5FQ.js} +7 -7
- package/dist/{chunk-5AWPST2R.js → chunk-UFM3EL52.js} +12 -12
- package/dist/chunk-UFRB2BVD.js +34 -0
- package/dist/chunk-UFRB2BVD.js.map +1 -0
- package/dist/chunk-UFWDQGOK.js +36 -0
- package/dist/chunk-UFWDQGOK.js.map +1 -0
- package/dist/{chunk-R3WM6HV6.js → chunk-VD5ZDFCM.js} +5 -5
- package/dist/chunk-VFQD57ZY.js +27 -0
- package/dist/chunk-VFQD57ZY.js.map +1 -0
- package/dist/{chunk-AQVIQODP.js → chunk-VK6INFSB.js} +4 -4
- package/dist/{chunk-W7X7KSJP.js → chunk-WG5OK3YN.js} +19 -3
- package/dist/chunk-WG5OK3YN.js.map +1 -0
- package/dist/{chunk-QFEZIPWJ.js → chunk-WY37V3W4.js} +9 -9
- package/dist/chunk-WYWM2HSZ.js +33 -0
- package/dist/chunk-WYWM2HSZ.js.map +1 -0
- package/dist/{chunk-SDEDXT7A.js → chunk-XOQXIPLL.js} +4 -4
- package/dist/{chunk-DVYTRZOL.js → chunk-YCLYKBWZ.js} +15 -15
- package/dist/{chunk-YW4IN7LP.js → chunk-YGNHAFBW.js} +8 -8
- package/dist/{chunk-APG3GKDT.js → chunk-YWWYA2JZ.js} +11 -11
- package/dist/chunk-YXMB4MCM.js +87 -0
- package/dist/chunk-YXMB4MCM.js.map +1 -0
- package/dist/{chunk-7AMHCTRM.js → chunk-Z5LPHG2D.js} +5 -5
- package/dist/{chunk-GZNELGHF.js → chunk-ZAFLWQOV.js} +10 -10
- package/dist/{chunk-WD5P2N6F.js → chunk-ZC2JPF7B.js} +13 -13
- package/dist/{chunk-VYCYVN3L.js → chunk-ZCGH6TJ3.js} +16 -3
- package/dist/chunk-ZCGH6TJ3.js.map +1 -0
- package/dist/{chunk-UH6Q3TEK.js → chunk-ZCQMCIT5.js} +9 -9
- package/dist/chunk-ZPUNTAVI.js +38 -0
- package/dist/chunk-ZPUNTAVI.js.map +1 -0
- package/dist/{chunk-LT5C6QT7.js → chunk-ZUL3NYQ4.js} +2 -2
- package/dist/{chunk-23QMZC6L.js → chunk-ZWYQ44CB.js} +10 -10
- package/dist/context/dynamic-form-context.cjs +54 -4
- package/dist/context/dynamic-form-context.cjs.map +1 -1
- package/dist/context/dynamic-form-context.js +5 -4
- package/dist/context/index.cjs +54 -4
- package/dist/context/index.cjs.map +1 -1
- package/dist/context/index.js +8 -7
- package/dist/index.cjs +2131 -1631
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +73 -0
- package/dist/index.d.cts +19 -3
- package/dist/index.d.ts +19 -3
- package/dist/index.js +174 -168
- package/dist/molecules/autocomplete-textfield.cjs +111 -46
- package/dist/molecules/autocomplete-textfield.cjs.map +1 -1
- package/dist/molecules/autocomplete-textfield.js +5 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs +367 -209
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +22 -21
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs +39 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs +293 -164
- 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 +16 -15
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.cjs +33 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +4 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs +85 -19
- 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 +6 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs +217 -134
- 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 +10 -9
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs +172 -110
- 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 +7 -6
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs +39 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +6 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs +80 -20
- 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 +7 -6
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs +64 -7
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +6 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs +275 -115
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +26 -25
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs +76 -17
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +8 -7
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs +49 -5
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs +49 -5
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +5 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs +318 -153
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +29 -28
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +346 -181
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +33 -32
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs +39 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +4 -3
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs +39 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +5 -4
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs +39 -2
- 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 +195 -135
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +10 -9
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs +39 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +7 -6
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs +65 -8
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.js +6 -5
- package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
- package/dist/molecules/curriculumV2/index.cjs +406 -220
- package/dist/molecules/curriculumV2/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/index.js +42 -41
- package/dist/molecules/date-picker/date-picker-button.cjs +160 -64
- package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
- package/dist/molecules/date-picker/date-picker-button.d.cts +1 -0
- package/dist/molecules/date-picker/date-picker-button.d.ts +1 -0
- package/dist/molecules/date-picker/date-picker-button.js +11 -9
- package/dist/molecules/date-picker/index.cjs +242 -146
- package/dist/molecules/date-picker/index.cjs.map +1 -1
- package/dist/molecules/date-picker/index.js +10 -8
- package/dist/molecules/description-json-render.cjs +182 -120
- package/dist/molecules/description-json-render.cjs.map +1 -1
- package/dist/molecules/description-json-render.js +7 -6
- package/dist/molecules/download-card.cjs +67 -8
- package/dist/molecules/download-card.cjs.map +1 -1
- package/dist/molecules/download-card.js +6 -5
- package/dist/molecules/dynamic-field.cjs +222 -72
- package/dist/molecules/dynamic-field.cjs.map +1 -1
- package/dist/molecules/dynamic-field.js +13 -11
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +359 -267
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js +9 -7
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +115 -47
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-field-list-panel.js +6 -4
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs +39 -2
- 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 +239 -89
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor-preview-panel.js +15 -13
- package/dist/molecules/dynamic-form-editor.cjs +571 -407
- package/dist/molecules/dynamic-form-editor.cjs.map +1 -1
- package/dist/molecules/dynamic-form-editor.js +21 -19
- package/dist/molecules/dynamic-form.cjs +235 -85
- package/dist/molecules/dynamic-form.cjs.map +1 -1
- package/dist/molecules/dynamic-form.js +14 -12
- package/dist/molecules/expand-table/index.cjs +100 -42
- package/dist/molecules/expand-table/index.cjs.map +1 -1
- package/dist/molecules/expand-table/index.js +6 -5
- package/dist/molecules/force-refresh.cjs +79 -24
- package/dist/molecules/force-refresh.cjs.map +1 -1
- package/dist/molecules/force-refresh.js +5 -4
- package/dist/molecules/form/form.cjs +54 -4
- package/dist/molecules/form/form.cjs.map +1 -1
- package/dist/molecules/form/form.js +4 -3
- package/dist/molecules/form/index.cjs +54 -4
- package/dist/molecules/form/index.cjs.map +1 -1
- package/dist/molecules/form/index.js +4 -3
- package/dist/molecules/ghost-post.cjs +72 -14
- package/dist/molecules/ghost-post.cjs.map +1 -1
- package/dist/molecules/ghost-post.d.cts +1 -0
- package/dist/molecules/ghost-post.d.ts +1 -0
- package/dist/molecules/ghost-post.js +7 -6
- package/dist/molecules/index.cjs +1334 -989
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.d.cts +1 -0
- package/dist/molecules/index.d.ts +1 -0
- package/dist/molecules/index.js +80 -79
- package/dist/molecules/learning-post.cjs +109 -37
- package/dist/molecules/learning-post.cjs.map +1 -1
- package/dist/molecules/learning-post.d.cts +1 -0
- package/dist/molecules/learning-post.d.ts +1 -0
- package/dist/molecules/learning-post.js +9 -8
- package/dist/molecules/navigation.cjs +49 -5
- package/dist/molecules/navigation.cjs.map +1 -1
- package/dist/molecules/navigation.js +5 -4
- package/dist/molecules/one-on-one-guide-list.cjs +56 -6
- package/dist/molecules/one-on-one-guide-list.cjs.map +1 -1
- package/dist/molecules/one-on-one-guide-list.js +6 -5
- package/dist/molecules/radio-button-card.cjs +77 -13
- package/dist/molecules/radio-button-card.cjs.map +1 -1
- package/dist/molecules/radio-button-card.js +4 -3
- package/dist/molecules/stepper.cjs +55 -4
- package/dist/molecules/stepper.cjs.map +1 -1
- package/dist/molecules/stepper.js +5 -4
- package/dist/molecules/tag-selector.cjs +256 -180
- package/dist/molecules/tag-selector.cjs.map +1 -1
- package/dist/molecules/tag-selector.js +9 -7
- package/dist/molecules/time-select.cjs +180 -126
- package/dist/molecules/time-select.cjs.map +1 -1
- package/dist/molecules/time-select.d.cts +1 -0
- package/dist/molecules/time-select.d.ts +1 -0
- package/dist/molecules/time-select.js +5 -3
- package/dist/molecules/training-info-guideline.cjs +75 -11
- package/dist/molecules/training-info-guideline.cjs.map +1 -1
- package/dist/molecules/training-info-guideline.js +10 -9
- package/dist/theme/theme-provider.cjs +53 -1
- package/dist/theme/theme-provider.cjs.map +1 -1
- package/dist/theme/theme-provider.d.cts +18 -2
- package/dist/theme/theme-provider.d.ts +18 -2
- package/dist/theme/theme-provider.js +4 -1
- package/dist/utils/convert-button-size.d.cts +1 -0
- package/dist/utils/convert-button-size.d.ts +1 -0
- package/dist/utils/convert-icon-button-size.d.cts +1 -0
- package/dist/utils/convert-icon-button-size.d.ts +1 -0
- package/dist/utils/index.cjs +25 -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/resolve-color.cjs +51 -0
- package/dist/utils/resolve-color.cjs.map +1 -0
- package/dist/utils/resolve-color.d.cts +38 -0
- package/dist/utils/resolve-color.d.ts +38 -0
- package/dist/utils/resolve-color.js +8 -0
- package/dist/utils/resolve-color.js.map +1 -0
- package/package.json +1 -1
- package/src/atoms/alert-dialog.tsx +38 -1
- package/src/atoms/avatar.tsx +18 -3
- package/src/atoms/badge.tsx +15 -22
- package/src/atoms/blockquote.tsx +31 -1
- package/src/atoms/button.tsx +12 -3
- package/src/atoms/button.type.ts +6 -1
- package/src/atoms/call-out.tsx +48 -1
- package/src/atoms/check-box-card.tsx +51 -1
- package/src/atoms/check-box-group.tsx +19 -2
- package/src/atoms/check-box.tsx +17 -3
- package/src/atoms/code.tsx +31 -1
- package/src/atoms/data-list.tsx +47 -1
- package/src/atoms/dropdown-menu.tsx +53 -6
- package/src/atoms/heading.tsx +22 -4
- package/src/atoms/hover-card.tsx +37 -1
- package/src/atoms/icon-button.tsx +12 -3
- package/src/atoms/link.tsx +21 -3
- package/src/atoms/pagination.tsx +21 -2
- package/src/atoms/popover.tsx +37 -1
- package/src/atoms/progress.tsx +31 -1
- package/src/atoms/radio-cards.tsx +49 -1
- package/src/atoms/radio-group.tsx +49 -1
- package/src/atoms/radio.tsx +31 -1
- package/src/atoms/segmented-control.tsx +3 -0
- package/src/atoms/select.tsx +67 -19
- package/src/atoms/switch.tsx +31 -1
- package/src/atoms/tab-nav.tsx +42 -1
- package/src/atoms/tabs.tsx +40 -1
- package/src/atoms/tooltip.tsx +14 -1
- package/src/atoms/typo.tsx +21 -3
- package/src/molecules/radio-button-card.tsx +6 -4
- package/src/theme/theme-provider.tsx +38 -3
- package/src/utils/index.ts +2 -1
- package/src/utils/resolve-color.ts +86 -0
- package/dist/chunk-365QMK4D.js +0 -7
- package/dist/chunk-365QMK4D.js.map +0 -1
- package/dist/chunk-3NUQAVE6.js.map +0 -1
- package/dist/chunk-5AVBYDPB.js +0 -7
- package/dist/chunk-5AVBYDPB.js.map +0 -1
- package/dist/chunk-5ZITU5L7.js +0 -7
- package/dist/chunk-5ZITU5L7.js.map +0 -1
- package/dist/chunk-6DJOIRMF.js +0 -7
- package/dist/chunk-6DJOIRMF.js.map +0 -1
- package/dist/chunk-6IVCARWS.js +0 -7
- package/dist/chunk-6IVCARWS.js.map +0 -1
- package/dist/chunk-7FKRQQYK.js +0 -15
- package/dist/chunk-7FKRQQYK.js.map +0 -1
- package/dist/chunk-B6XJN6EC.js +0 -7
- package/dist/chunk-B6XJN6EC.js.map +0 -1
- package/dist/chunk-BESTU2AY.js.map +0 -1
- package/dist/chunk-CSKNBWPB.js.map +0 -1
- package/dist/chunk-DHZVOXFM.js +0 -35
- package/dist/chunk-DHZVOXFM.js.map +0 -1
- package/dist/chunk-FPD73OHW.js +0 -7
- package/dist/chunk-FPD73OHW.js.map +0 -1
- package/dist/chunk-HFVVQEOZ.js +0 -1
- package/dist/chunk-HQATHJBN.js.map +0 -1
- package/dist/chunk-J242TTFH.js +0 -7
- package/dist/chunk-J242TTFH.js.map +0 -1
- package/dist/chunk-K36TPMKL.js.map +0 -1
- package/dist/chunk-KTSEZC6A.js +0 -49
- package/dist/chunk-KTSEZC6A.js.map +0 -1
- package/dist/chunk-MIMJ7LON.js +0 -7
- package/dist/chunk-MIMJ7LON.js.map +0 -1
- package/dist/chunk-O3T3TM3V.js +0 -7
- package/dist/chunk-O3T3TM3V.js.map +0 -1
- package/dist/chunk-OHMOP5PV.js +0 -7
- package/dist/chunk-OHMOP5PV.js.map +0 -1
- package/dist/chunk-OYM4XCHQ.js +0 -7
- package/dist/chunk-OYM4XCHQ.js.map +0 -1
- package/dist/chunk-PMJIFLDT.js.map +0 -1
- package/dist/chunk-SMLC2O3V.js +0 -42
- package/dist/chunk-SMLC2O3V.js.map +0 -1
- package/dist/chunk-TVDKGMBI.js.map +0 -1
- package/dist/chunk-VTJZMOSP.js +0 -7
- package/dist/chunk-VTJZMOSP.js.map +0 -1
- package/dist/chunk-VYCYVN3L.js.map +0 -1
- package/dist/chunk-W7X7KSJP.js.map +0 -1
- package/dist/chunk-X2GMDZ7M.js +0 -59
- package/dist/chunk-X2GMDZ7M.js.map +0 -1
- package/dist/chunk-XK6VEVOK.js.map +0 -1
- package/dist/chunk-YGL6SWKN.js +0 -7
- package/dist/chunk-YGL6SWKN.js.map +0 -1
- package/dist/chunk-YJ7ZFOYL.js +0 -7
- package/dist/chunk-YJ7ZFOYL.js.map +0 -1
- package/dist/chunk-ZVDAEY5Q.js.map +0 -1
- /package/dist/{chunk-GGLDVUYU.js.map → chunk-2FB75HU2.js.map} +0 -0
- /package/dist/{chunk-7ITDAUWI.js.map → chunk-2I37QLRA.js.map} +0 -0
- /package/dist/{chunk-PXPGCDNA.js.map → chunk-2O7NVLVP.js.map} +0 -0
- /package/dist/{chunk-NZ6ONU5Z.js.map → chunk-2SM37SB4.js.map} +0 -0
- /package/dist/{chunk-NLW32DPB.js.map → chunk-2WNLUQX5.js.map} +0 -0
- /package/dist/{chunk-XBOSNFUM.js.map → chunk-447H6BVE.js.map} +0 -0
- /package/dist/{chunk-5V6MQUTB.js.map → chunk-5OW76AER.js.map} +0 -0
- /package/dist/{chunk-44VLRAHW.js.map → chunk-6YJGQWD6.js.map} +0 -0
- /package/dist/{chunk-KCCYHT23.js.map → chunk-7JW5Z2TL.js.map} +0 -0
- /package/dist/{chunk-JZVK4NDF.js.map → chunk-7PBLFV5L.js.map} +0 -0
- /package/dist/{chunk-UXVM3Y7P.js.map → chunk-A26UWBVB.js.map} +0 -0
- /package/dist/{chunk-HJP4STJZ.js.map → chunk-A4YOY75P.js.map} +0 -0
- /package/dist/{chunk-LSDD4TAP.js.map → chunk-AJTGTGOC.js.map} +0 -0
- /package/dist/{chunk-JWAQUXGB.js.map → chunk-BZ3EXV6A.js.map} +0 -0
- /package/dist/{chunk-QRI6ARS6.js.map → chunk-C2G3IB7G.js.map} +0 -0
- /package/dist/{chunk-4U6DFH7Z.js.map → chunk-E6GCU5IQ.js.map} +0 -0
- /package/dist/{chunk-VRJR534I.js.map → chunk-GAA3RTRW.js.map} +0 -0
- /package/dist/{chunk-VY557FHE.js.map → chunk-GE4M5GOQ.js.map} +0 -0
- /package/dist/{chunk-OUJAPQS2.js.map → chunk-GPULIICW.js.map} +0 -0
- /package/dist/{chunk-7PF6I4RN.js.map → chunk-GRDRXD53.js.map} +0 -0
- /package/dist/{chunk-TJKS6CLU.js.map → chunk-GREYLAMY.js.map} +0 -0
- /package/dist/{chunk-VREM33BW.js.map → chunk-GYSRHZRS.js.map} +0 -0
- /package/dist/{chunk-2TYR2RDO.js.map → chunk-H3GQHGFA.js.map} +0 -0
- /package/dist/{chunk-KMVSJT6Y.js.map → chunk-HH6LML5K.js.map} +0 -0
- /package/dist/{chunk-J62KAMQL.js.map → chunk-IM6E52L2.js.map} +0 -0
- /package/dist/{chunk-5LRFDSG2.js.map → chunk-J7N2IZQW.js.map} +0 -0
- /package/dist/{chunk-EEAHZCIK.js.map → chunk-JCUG2XKB.js.map} +0 -0
- /package/dist/{chunk-4LUFF5LX.js.map → chunk-JNEGSY5N.js.map} +0 -0
- /package/dist/{chunk-CQSM6JCO.js.map → chunk-K3Q4XLCN.js.map} +0 -0
- /package/dist/{chunk-4TST4UK5.js.map → chunk-KO3V7KB6.js.map} +0 -0
- /package/dist/{chunk-3U6FXC6R.js.map → chunk-LIWQ47VQ.js.map} +0 -0
- /package/dist/{chunk-2ZSK45QM.js.map → chunk-LQ3WGFS7.js.map} +0 -0
- /package/dist/{chunk-A7LYIUE7.js.map → chunk-M77YPVQN.js.map} +0 -0
- /package/dist/{chunk-P4KO43AP.js.map → chunk-MCKWO7K4.js.map} +0 -0
- /package/dist/{chunk-G7NEBNHU.js.map → chunk-MGR37YQB.js.map} +0 -0
- /package/dist/{chunk-QDC3LFHS.js.map → chunk-MMLVZWMD.js.map} +0 -0
- /package/dist/{chunk-D4JZHM4J.js.map → chunk-MP5KZULQ.js.map} +0 -0
- /package/dist/{chunk-WMWXF44S.js.map → chunk-MSLSD7F6.js.map} +0 -0
- /package/dist/{chunk-JUDD3XGY.js.map → chunk-MSM2QG23.js.map} +0 -0
- /package/dist/{chunk-NVQSH733.js.map → chunk-NFMEBYNY.js.map} +0 -0
- /package/dist/{chunk-7ZMY4CAZ.js.map → chunk-NIHOKIYW.js.map} +0 -0
- /package/dist/{chunk-3GQQQBJN.js.map → chunk-NYG34MV6.js.map} +0 -0
- /package/dist/{chunk-XF7FPCS7.js.map → chunk-OA3DGWVL.js.map} +0 -0
- /package/dist/{chunk-F5IXHUBI.js.map → chunk-OBWQ3N5D.js.map} +0 -0
- /package/dist/{chunk-HVXBZGLT.js.map → chunk-OEHVGPWL.js.map} +0 -0
- /package/dist/{chunk-HFVVQEOZ.js.map → chunk-OLJN3WXR.js.map} +0 -0
- /package/dist/{chunk-WE3TWSC4.js.map → chunk-OPYRV6XJ.js.map} +0 -0
- /package/dist/{chunk-WFOIY6OR.js.map → chunk-OQN4E2QP.js.map} +0 -0
- /package/dist/{chunk-HZ7HETUI.js.map → chunk-OWQUXTQ2.js.map} +0 -0
- /package/dist/{chunk-7I7PZF5L.js.map → chunk-OYXUWBKS.js.map} +0 -0
- /package/dist/{chunk-D3KCPM4O.js.map → chunk-PE4EBBU4.js.map} +0 -0
- /package/dist/{chunk-3GGJWSFK.js.map → chunk-PXMJK5D5.js.map} +0 -0
- /package/dist/{chunk-Y4U24VXI.js.map → chunk-Q3M6GFHY.js.map} +0 -0
- /package/dist/{chunk-GFURX6GB.js.map → chunk-QPL7SJQM.js.map} +0 -0
- /package/dist/{chunk-YAUOAWYS.js.map → chunk-RMVVV5NH.js.map} +0 -0
- /package/dist/{chunk-RPV3QPQL.js.map → chunk-RUJZ5PE7.js.map} +0 -0
- /package/dist/{chunk-6J5YZTZE.js.map → chunk-T2CGNUCP.js.map} +0 -0
- /package/dist/{chunk-ZUZ5FT4B.js.map → chunk-TU6SGJ5Z.js.map} +0 -0
- /package/dist/{chunk-5ZEQ33PC.js.map → chunk-TYEGB5FQ.js.map} +0 -0
- /package/dist/{chunk-5AWPST2R.js.map → chunk-UFM3EL52.js.map} +0 -0
- /package/dist/{chunk-R3WM6HV6.js.map → chunk-VD5ZDFCM.js.map} +0 -0
- /package/dist/{chunk-AQVIQODP.js.map → chunk-VK6INFSB.js.map} +0 -0
- /package/dist/{chunk-QFEZIPWJ.js.map → chunk-WY37V3W4.js.map} +0 -0
- /package/dist/{chunk-SDEDXT7A.js.map → chunk-XOQXIPLL.js.map} +0 -0
- /package/dist/{chunk-DVYTRZOL.js.map → chunk-YCLYKBWZ.js.map} +0 -0
- /package/dist/{chunk-YW4IN7LP.js.map → chunk-YGNHAFBW.js.map} +0 -0
- /package/dist/{chunk-APG3GKDT.js.map → chunk-YWWYA2JZ.js.map} +0 -0
- /package/dist/{chunk-7AMHCTRM.js.map → chunk-Z5LPHG2D.js.map} +0 -0
- /package/dist/{chunk-GZNELGHF.js.map → chunk-ZAFLWQOV.js.map} +0 -0
- /package/dist/{chunk-WD5P2N6F.js.map → chunk-ZC2JPF7B.js.map} +0 -0
- /package/dist/{chunk-UH6Q3TEK.js.map → chunk-ZCQMCIT5.js.map} +0 -0
- /package/dist/{chunk-LT5C6QT7.js.map → chunk-ZUL3NYQ4.js.map} +0 -0
- /package/dist/{chunk-23QMZC6L.js.map → chunk-ZWYQ44CB.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/atoms/data-list.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/atoms/data-list.tsx","../../src/utils/resolve-color.ts"],"sourcesContent":["import { DataList as RadixDataList } 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\n// DataList의 color prop은 Root가 아니라 Label에 있다. 또한 Label은 Text/Heading처럼\n// `data-accent-color`가 있어야 accent를 참조하므로(없으면 gray 고정), Root className override가\n// 아닌 Label 자체를 래핑해 resolveColor를 적용한다. (Label은 단일 요소라 fallback color +\n// className이 같은 요소에 실려 black이 정상 동작한다.)\ntype DataListLabelProps = DistributiveOmit<\n React.ComponentPropsWithoutRef<typeof RadixDataList.Label>,\n 'color'\n> & {\n color?: UiColor;\n};\n\nconst Label = forwardRef<\n React.ElementRef<typeof RadixDataList.Label>,\n DataListLabelProps\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 return (\n <RadixDataList.Label\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n />\n );\n});\n\nLabel.displayName = 'DataList.Label';\n\nexport const DataList = {\n ...RadixDataList,\n Label,\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0C;AAC1C,kBAAqB;AACrB,mBAA2C;;;AC2B3C,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;;;ADrDI;AAZJ,IAAM,YAAQ,yBAGZ,CAAC,OAAO,QAAQ;AAChB,QAAsC,YAA9B,SAAO,UAxBjB,IAwBwC,IAAT,iBAAS,IAAT,CAArB,SAAO;AAEf,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAEA,SACE;AAAA,IAAC,cAAAA,SAAc;AAAA,IAAd,iCACK,OADL;AAAA,MAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,MAAM,cAAc;AAEb,IAAM,WAAW,iCACnB,cAAAA,WADmB;AAAA,EAEtB;AACF;","names":["RadixDataList"]}
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import { DataList as DataList$1 } from '@radix-ui/themes';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { UiColor } from '../utils/resolve-color.cjs';
|
|
4
|
+
|
|
5
|
+
declare const DataList: {
|
|
6
|
+
Label: React__default.ForwardRefExoticComponent<Omit<Omit<DataList$1.LabelProps & React__default.RefAttributes<HTMLElement>, "ref">, "color"> & {
|
|
7
|
+
color?: UiColor;
|
|
8
|
+
} & React__default.RefAttributes<HTMLElement>>;
|
|
9
|
+
Root: React__default.ForwardRefExoticComponent<DataList$1.RootProps & React__default.RefAttributes<HTMLDListElement>>;
|
|
10
|
+
Item: React__default.ForwardRefExoticComponent<DataList$1.ItemProps & React__default.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
Value: React__default.ForwardRefExoticComponent<DataList$1.ValueProps & React__default.RefAttributes<HTMLElement>>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { DataList };
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import { DataList as DataList$1 } from '@radix-ui/themes';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { UiColor } from '../utils/resolve-color.js';
|
|
4
|
+
|
|
5
|
+
declare const DataList: {
|
|
6
|
+
Label: React__default.ForwardRefExoticComponent<Omit<Omit<DataList$1.LabelProps & React__default.RefAttributes<HTMLElement>, "ref">, "color"> & {
|
|
7
|
+
color?: UiColor;
|
|
8
|
+
} & React__default.RefAttributes<HTMLElement>>;
|
|
9
|
+
Root: React__default.ForwardRefExoticComponent<DataList$1.RootProps & React__default.RefAttributes<HTMLDListElement>>;
|
|
10
|
+
Item: React__default.ForwardRefExoticComponent<DataList$1.ItemProps & React__default.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
Value: React__default.ForwardRefExoticComponent<DataList$1.ValueProps & React__default.RefAttributes<HTMLElement>>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { DataList };
|
package/dist/atoms/data-list.js
CHANGED
package/dist/atoms/dialog.cjs
CHANGED
|
@@ -84,6 +84,7 @@ var usePortalContainer = () => {
|
|
|
84
84
|
|
|
85
85
|
// src/atoms/heading.tsx
|
|
86
86
|
var import_themes = require("@radix-ui/themes");
|
|
87
|
+
var import_clsx = require("clsx");
|
|
87
88
|
var import_react2 = require("react");
|
|
88
89
|
|
|
89
90
|
// src/utils/map-with-responsive.ts
|
|
@@ -104,6 +105,29 @@ var mapWithResponsive = (args) => {
|
|
|
104
105
|
return value;
|
|
105
106
|
};
|
|
106
107
|
|
|
108
|
+
// src/utils/resolve-color.ts
|
|
109
|
+
var SEMANTIC_COLOR_MAP = {
|
|
110
|
+
error: "red",
|
|
111
|
+
neutral: "gray",
|
|
112
|
+
success: "green",
|
|
113
|
+
accent: void 0
|
|
114
|
+
};
|
|
115
|
+
var CUSTOM_COLOR_MAP = {
|
|
116
|
+
black: { className: "tipp-accent-black", fallbackColor: "gray" }
|
|
117
|
+
};
|
|
118
|
+
var isSemanticColor = (color) => color !== void 0 && color in SEMANTIC_COLOR_MAP;
|
|
119
|
+
var isCustomColor = (color) => color !== void 0 && color in CUSTOM_COLOR_MAP;
|
|
120
|
+
var resolveColor = (color) => {
|
|
121
|
+
if (isCustomColor(color)) {
|
|
122
|
+
const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];
|
|
123
|
+
return { color: fallbackColor, className };
|
|
124
|
+
}
|
|
125
|
+
if (isSemanticColor(color)) {
|
|
126
|
+
return { color: SEMANTIC_COLOR_MAP[color] };
|
|
127
|
+
}
|
|
128
|
+
return { color };
|
|
129
|
+
};
|
|
130
|
+
|
|
107
131
|
// src/atoms/heading.tsx
|
|
108
132
|
var import_themes2 = require("@radix-ui/themes");
|
|
109
133
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
@@ -124,19 +148,31 @@ var mapVariant = (variant) => {
|
|
|
124
148
|
}
|
|
125
149
|
};
|
|
126
150
|
function Heading2(props) {
|
|
127
|
-
const _a = props, { size, children, variant } = _a, rest = __objRest(_a, ["size", "children", "variant"]);
|
|
151
|
+
const _a = props, { size, children, variant, color, className } = _a, rest = __objRest(_a, ["size", "children", "variant", "color", "className"]);
|
|
152
|
+
const { color: radixColor, className: colorClassName } = (0, import_react2.useMemo)(
|
|
153
|
+
() => resolveColor(color),
|
|
154
|
+
[color]
|
|
155
|
+
);
|
|
128
156
|
const radixSize = (0, import_react2.useMemo)(() => {
|
|
129
157
|
return variant ? mapWithResponsive({
|
|
130
158
|
value: variant,
|
|
131
159
|
mapFn: mapVariant
|
|
132
160
|
}) : size;
|
|
133
161
|
}, [size, variant]);
|
|
134
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
162
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
163
|
+
import_themes.Heading,
|
|
164
|
+
__spreadProps(__spreadValues({}, rest), {
|
|
165
|
+
className: (0, import_clsx.clsx)(colorClassName, className),
|
|
166
|
+
color: radixColor,
|
|
167
|
+
size: radixSize,
|
|
168
|
+
children
|
|
169
|
+
})
|
|
170
|
+
);
|
|
135
171
|
}
|
|
136
172
|
|
|
137
173
|
// src/atoms/icon-button.tsx
|
|
138
174
|
var import_react3 = require("react");
|
|
139
|
-
var
|
|
175
|
+
var import_clsx2 = require("clsx");
|
|
140
176
|
var import_themes3 = require("@radix-ui/themes");
|
|
141
177
|
|
|
142
178
|
// src/utils/convert-icon-button-size.ts
|
|
@@ -174,7 +210,7 @@ var convertSize = (size) => {
|
|
|
174
210
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
175
211
|
var IconButton = (0, import_react3.forwardRef)(
|
|
176
212
|
(props, ref) => {
|
|
177
|
-
const _a = props, { size, style, variant } = _a, restProps = __objRest(_a, ["size", "style", "variant"]);
|
|
213
|
+
const _a = props, { size, style, variant, color } = _a, restProps = __objRest(_a, ["size", "style", "variant", "color"]);
|
|
178
214
|
const radixSize = (0, import_react3.useMemo)(() => {
|
|
179
215
|
return convertSize(size);
|
|
180
216
|
}, [size]);
|
|
@@ -182,9 +218,15 @@ var IconButton = (0, import_react3.forwardRef)(
|
|
|
182
218
|
if (variant === "transparent") return "ghost";
|
|
183
219
|
return variant;
|
|
184
220
|
}, [variant]);
|
|
221
|
+
const { color: radixColor, className: colorClassName } = (0, import_react3.useMemo)(
|
|
222
|
+
() => resolveColor(color),
|
|
223
|
+
[color]
|
|
224
|
+
);
|
|
185
225
|
const className = (0, import_react3.useMemo)(() => {
|
|
186
|
-
return (0,
|
|
187
|
-
|
|
226
|
+
return (0, import_clsx2.clsx)(props.className, colorClassName, {
|
|
227
|
+
transparent: variant === "transparent"
|
|
228
|
+
});
|
|
229
|
+
}, [props.className, colorClassName, variant]);
|
|
188
230
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
189
231
|
import_themes3.IconButton,
|
|
190
232
|
__spreadProps(__spreadValues({
|
|
@@ -193,6 +235,7 @@ var IconButton = (0, import_react3.forwardRef)(
|
|
|
193
235
|
variant: radixVariant
|
|
194
236
|
}, restProps), {
|
|
195
237
|
className,
|
|
238
|
+
color: radixColor,
|
|
196
239
|
ref,
|
|
197
240
|
size: radixSize
|
|
198
241
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/atoms/dialog.tsx","../../src/theme/portal-provider.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/atoms/icon-button.tsx","../../src/utils/convert-icon-button-size.ts"],"sourcesContent":["import * as RadixDialog from '@radix-ui/react-dialog';\nimport { Cross1Icon } from '@radix-ui/react-icons';\nimport { Flex, Theme } from '@radix-ui/themes';\nimport { useEffect, useRef } from 'react';\nimport { usePortalContainer } from '@/theme/portal-provider';\nimport { Heading } from './heading';\nimport { IconButton } from './icon-button';\n\ntype ContentProps = RadixDialog.DialogContentProps & {\n width?: string;\n maxWidth?: string;\n minWidth?: string;\n height?: string;\n maxHeight?: string;\n minHeight?: string;\n title?: string;\n hideCloseButton?: boolean;\n buttons?: React.ReactNode;\n size?: '1' | '2' | '3' | '4';\n};\n\nconst preventDefault: RadixDialog.DialogContentProps['onPointerDownOutside'] = (\n e\n) => {\n e.preventDefault();\n};\n\nfunction Content(props: ContentProps): React.ReactNode {\n const {\n children,\n style = {},\n width,\n maxWidth,\n minWidth,\n maxHeight,\n height,\n minHeight,\n title,\n buttons,\n size,\n hideCloseButton,\n className,\n ...rest\n } = props;\n const { dialogContainerRef } = usePortalContainer();\n\n return (\n <RadixDialog.Portal container={dialogContainerRef.current}>\n <Theme asChild>\n <RadixDialog.Overlay className=\"rt-BaseDialogScroll rt-DialogScroll DialogOverlay\">\n <RadixDialog.Content\n className={`DialogContent ${className || ''} rt-BaseDialogContent rt-DialogContent rt-r-size-${size||'3'}`}\n onPointerDownOutside={preventDefault}\n style={{\n width,\n maxWidth,\n minWidth,\n maxHeight,\n height,\n minHeight,\n ...style,\n }}\n {...rest}\n >\n <Flex gap=\"2\" justify=\"between\" width=\"100%\">\n <RadixDialog.Title asChild>\n {typeof title === 'string' && title !== '' ? (\n <Heading mb=\"2\" variant=\"heading3\">\n {title}\n </Heading>\n ) : (\n title\n )}\n </RadixDialog.Title>\n {!hideCloseButton && (\n <RadixDialog.Close asChild className=\"DialogClose\">\n <IconButton color=\"gray\" variant=\"ghost\">\n <Cross1Icon />\n </IconButton>\n </RadixDialog.Close>\n )}\n </Flex>\n {children}\n {buttons ? (\n <Flex gap=\"3\" justify=\"end\" mt=\"3\" width=\"100%\">\n {buttons}\n </Flex>\n ) : null}\n </RadixDialog.Content>\n </RadixDialog.Overlay>\n </Theme>\n </RadixDialog.Portal>\n );\n}\n\nfunction Close({\n children,\n ...rest\n}: RadixDialog.DialogCloseProps): React.ReactNode {\n return (\n <RadixDialog.Close asChild {...rest}>\n {children}\n </RadixDialog.Close>\n );\n}\n\nfunction Trigger({\n children,\n ...rest\n}: RadixDialog.DialogTriggerProps): React.ReactNode {\n return (\n <RadixDialog.Trigger asChild {...rest}>\n {children}\n </RadixDialog.Trigger>\n );\n}\n\nfunction Root(props: RadixDialog.DialogProps): React.ReactNode {\n const prevOpenRef = useRef<boolean | undefined>(undefined);\n const cleanupExecutedRef = useRef<boolean>(false);\n\n // 모달이 닫힌 후 포커스 복원 및 이벤트 정리\n useEffect(() => {\n const prevOpen = prevOpenRef.current;\n const currentOpen = props.open;\n\n // 현재 상태를 이전 상태로 업데이트 (if 분기의 early return과 무관하게 항상 실행)\n prevOpenRef.current = currentOpen;\n\n // 모달이 열린 상태에서 닫힌 상태로 변경될 때만 실행\n if (prevOpen === true && currentOpen === false && !cleanupExecutedRef.current) {\n cleanupExecutedRef.current = true;\n\n // 모달이 닫힌 후 약간의 지연을 두고 포커스 복원\n const timer = setTimeout(() => {\n try {\n // 활성 요소에 포커스 복원\n const activeElement = document.activeElement as HTMLElement | null;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- 어떤 dom인지 확실하지 않음\n activeElement?.blur?.();\n\n // body의 pointer-events 복원\n document.body.style.pointerEvents = '';\n } catch {\n // 에러 무시\n } finally {\n cleanupExecutedRef.current = false;\n }\n }, 100);\n\n return () => {\n clearTimeout(timer);\n cleanupExecutedRef.current = false;\n };\n }\n }, [props.open]);\n\n // open=true 상태에서 컴포넌트가 언마운트될 때 body 스타일 복원\n useEffect(() => {\n return () => {\n if (prevOpenRef.current === true) {\n document.body.style.pointerEvents = '';\n }\n };\n }, []);\n\n return <RadixDialog.Root {...props} />;\n}\n\nexport const Dialog = {\n Root,\n Trigger,\n Content,\n Close,\n Description: RadixDialog.Description,\n Title: RadixDialog.Title,\n};\n","import React, { createContext, useContext, useRef } from 'react';\n\ninterface PortalProviderProps {\n children: React.ReactNode;\n}\n\ninterface PortalState {\n dialogContainerRef: React.RefObject<HTMLDivElement | null>;\n drawerContainerRef: React.RefObject<HTMLDivElement | null>;\n}\n\nconst PortalContext = createContext<PortalState>(\n null as unknown as PortalState\n);\n\nexport function PortalProvider({\n children,\n}: PortalProviderProps): React.ReactNode {\n const dialogContainerRef = useRef<HTMLDivElement | null>(null);\n const drawerContainerRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <PortalContext.Provider value={{ dialogContainerRef, drawerContainerRef }}>\n {children}\n <div className=\"drawer-portal-container\" ref={drawerContainerRef} />\n <div className=\"dialog-portal-container\" ref={dialogContainerRef} />\n </PortalContext.Provider>\n );\n}\n\nexport const usePortalContainer = (): PortalState => {\n try {\n const state = useContext(PortalContext);\n return state;\n } catch (error) {\n throw new Error('PortalProvider not found');\n }\n};\n\nexport default PortalProvider;\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 { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = RadixHeadingProps & {\n variant?: Responsive<HeadingVariant>;\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, ...rest } = props;\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 {...rest} size={radixSize}>\n {children}\n </RadixHeading>\n );\n}\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 React, { forwardRef, useMemo } from 'react';\nimport { clsx } from 'clsx';\nimport { IconButton as RadixIconButton } from '@radix-ui/themes';\nimport { convertSize } from '../utils/convert-icon-button-size';\nimport type { ButtonProps } from './button.type';\n\nexport type IconButtonProps = ButtonProps;\nexport const IconButton = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref): React.ReactNode => {\n const { size, style, variant, ...restProps } = props;\n\n const radixSize = useMemo(() => {\n return convertSize(size);\n }, [size]);\n\n const radixVariant = useMemo(() => {\n if (variant === 'transparent') return 'ghost';\n return variant;\n }, [variant]);\n\n const className = useMemo(() => {\n return clsx(props.className, { transparent: variant === 'transparent' });\n }, [props.className, variant]);\n\n return (\n <RadixIconButton\n style={style}\n type=\"button\"\n variant={radixVariant}\n {...restProps}\n className={className}\n ref={ref}\n size={radixSize}\n />\n );\n }\n);\n\nIconButton.displayName = 'IconButton';\n","import { type ButtonProps as RadixButtonProps } from '@radix-ui/themes';\nimport type { Breakpoint } from '@radix-ui/themes/props';\nimport type { ButtonProps } from '../atoms/button.type';\n\nexport const convertSizeStr = (\n size: ButtonProps['size']\n): '1' | '2' | '3' | '4' => {\n switch (size) {\n case 'small':\n return '1';\n case 'medium':\n return '2';\n case 'large':\n return '4';\n default:\n return '2';\n }\n};\n\nexport const convertSizeResponse = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string' || typeof size === 'undefined') {\n return convertSizeStr(size);\n }\n const radixSize: RadixButtonProps['size'] = {};\n let key: Breakpoint = 'initial';\n for (key in size) {\n radixSize[key] = convertSizeStr(size[key]);\n }\n return radixSize;\n};\n\nexport const convertSize = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string') {\n return convertSizeStr(size);\n }\n return convertSizeResponse(size);\n};\n"],"mappings":"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","names":["import_themes","import_react","import_react","import_themes","import_jsx_runtime","Heading","RadixHeading","import_react","import_themes","import_jsx_runtime","RadixIconButton","import_jsx_runtime","Content","Heading","Close","Trigger","Root"]}
|
|
1
|
+
{"version":3,"sources":["../../src/atoms/dialog.tsx","../../src/theme/portal-provider.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/resolve-color.ts","../../src/atoms/icon-button.tsx","../../src/utils/convert-icon-button-size.ts"],"sourcesContent":["import * as RadixDialog from '@radix-ui/react-dialog';\nimport { Cross1Icon } from '@radix-ui/react-icons';\nimport { Flex, Theme } from '@radix-ui/themes';\nimport { useEffect, useRef } from 'react';\nimport { usePortalContainer } from '@/theme/portal-provider';\nimport { Heading } from './heading';\nimport { IconButton } from './icon-button';\n\ntype ContentProps = RadixDialog.DialogContentProps & {\n width?: string;\n maxWidth?: string;\n minWidth?: string;\n height?: string;\n maxHeight?: string;\n minHeight?: string;\n title?: string;\n hideCloseButton?: boolean;\n buttons?: React.ReactNode;\n size?: '1' | '2' | '3' | '4';\n};\n\nconst preventDefault: RadixDialog.DialogContentProps['onPointerDownOutside'] = (\n e\n) => {\n e.preventDefault();\n};\n\nfunction Content(props: ContentProps): React.ReactNode {\n const {\n children,\n style = {},\n width,\n maxWidth,\n minWidth,\n maxHeight,\n height,\n minHeight,\n title,\n buttons,\n size,\n hideCloseButton,\n className,\n ...rest\n } = props;\n const { dialogContainerRef } = usePortalContainer();\n\n return (\n <RadixDialog.Portal container={dialogContainerRef.current}>\n <Theme asChild>\n <RadixDialog.Overlay className=\"rt-BaseDialogScroll rt-DialogScroll DialogOverlay\">\n <RadixDialog.Content\n className={`DialogContent ${className || ''} rt-BaseDialogContent rt-DialogContent rt-r-size-${size||'3'}`}\n onPointerDownOutside={preventDefault}\n style={{\n width,\n maxWidth,\n minWidth,\n maxHeight,\n height,\n minHeight,\n ...style,\n }}\n {...rest}\n >\n <Flex gap=\"2\" justify=\"between\" width=\"100%\">\n <RadixDialog.Title asChild>\n {typeof title === 'string' && title !== '' ? (\n <Heading mb=\"2\" variant=\"heading3\">\n {title}\n </Heading>\n ) : (\n title\n )}\n </RadixDialog.Title>\n {!hideCloseButton && (\n <RadixDialog.Close asChild className=\"DialogClose\">\n <IconButton color=\"gray\" variant=\"ghost\">\n <Cross1Icon />\n </IconButton>\n </RadixDialog.Close>\n )}\n </Flex>\n {children}\n {buttons ? (\n <Flex gap=\"3\" justify=\"end\" mt=\"3\" width=\"100%\">\n {buttons}\n </Flex>\n ) : null}\n </RadixDialog.Content>\n </RadixDialog.Overlay>\n </Theme>\n </RadixDialog.Portal>\n );\n}\n\nfunction Close({\n children,\n ...rest\n}: RadixDialog.DialogCloseProps): React.ReactNode {\n return (\n <RadixDialog.Close asChild {...rest}>\n {children}\n </RadixDialog.Close>\n );\n}\n\nfunction Trigger({\n children,\n ...rest\n}: RadixDialog.DialogTriggerProps): React.ReactNode {\n return (\n <RadixDialog.Trigger asChild {...rest}>\n {children}\n </RadixDialog.Trigger>\n );\n}\n\nfunction Root(props: RadixDialog.DialogProps): React.ReactNode {\n const prevOpenRef = useRef<boolean | undefined>(undefined);\n const cleanupExecutedRef = useRef<boolean>(false);\n\n // 모달이 닫힌 후 포커스 복원 및 이벤트 정리\n useEffect(() => {\n const prevOpen = prevOpenRef.current;\n const currentOpen = props.open;\n\n // 현재 상태를 이전 상태로 업데이트 (if 분기의 early return과 무관하게 항상 실행)\n prevOpenRef.current = currentOpen;\n\n // 모달이 열린 상태에서 닫힌 상태로 변경될 때만 실행\n if (prevOpen === true && currentOpen === false && !cleanupExecutedRef.current) {\n cleanupExecutedRef.current = true;\n\n // 모달이 닫힌 후 약간의 지연을 두고 포커스 복원\n const timer = setTimeout(() => {\n try {\n // 활성 요소에 포커스 복원\n const activeElement = document.activeElement as HTMLElement | null;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- 어떤 dom인지 확실하지 않음\n activeElement?.blur?.();\n\n // body의 pointer-events 복원\n document.body.style.pointerEvents = '';\n } catch {\n // 에러 무시\n } finally {\n cleanupExecutedRef.current = false;\n }\n }, 100);\n\n return () => {\n clearTimeout(timer);\n cleanupExecutedRef.current = false;\n };\n }\n }, [props.open]);\n\n // open=true 상태에서 컴포넌트가 언마운트될 때 body 스타일 복원\n useEffect(() => {\n return () => {\n if (prevOpenRef.current === true) {\n document.body.style.pointerEvents = '';\n }\n };\n }, []);\n\n return <RadixDialog.Root {...props} />;\n}\n\nexport const Dialog = {\n Root,\n Trigger,\n Content,\n Close,\n Description: RadixDialog.Description,\n Title: RadixDialog.Title,\n};\n","import React, { createContext, useContext, useRef } from 'react';\n\ninterface PortalProviderProps {\n children: React.ReactNode;\n}\n\ninterface PortalState {\n dialogContainerRef: React.RefObject<HTMLDivElement | null>;\n drawerContainerRef: React.RefObject<HTMLDivElement | null>;\n}\n\nconst PortalContext = createContext<PortalState>(\n null as unknown as PortalState\n);\n\nexport function PortalProvider({\n children,\n}: PortalProviderProps): React.ReactNode {\n const dialogContainerRef = useRef<HTMLDivElement | null>(null);\n const drawerContainerRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <PortalContext.Provider value={{ dialogContainerRef, drawerContainerRef }}>\n {children}\n <div className=\"drawer-portal-container\" ref={drawerContainerRef} />\n <div className=\"dialog-portal-container\" ref={dialogContainerRef} />\n </PortalContext.Provider>\n );\n}\n\nexport const usePortalContainer = (): PortalState => {\n try {\n const state = useContext(PortalContext);\n return state;\n } catch (error) {\n throw new Error('PortalProvider not found');\n }\n};\n\nexport default PortalProvider;\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 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, { forwardRef, useMemo } from 'react';\nimport { clsx } from 'clsx';\nimport { IconButton as RadixIconButton } from '@radix-ui/themes';\nimport { convertSize } from '../utils/convert-icon-button-size';\nimport { resolveColor } from '../utils/resolve-color';\nimport type { ButtonProps } from './button.type';\n\nexport type IconButtonProps = ButtonProps;\nexport const IconButton = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref): React.ReactNode => {\n const { size, style, variant, color, ...restProps } = props;\n\n const radixSize = useMemo(() => {\n return convertSize(size);\n }, [size]);\n\n const radixVariant = useMemo(() => {\n if (variant === 'transparent') return 'ghost';\n return variant;\n }, [variant]);\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const className = useMemo(() => {\n return clsx(props.className, colorClassName, {\n transparent: variant === 'transparent',\n });\n }, [props.className, colorClassName, variant]);\n\n return (\n <RadixIconButton\n style={style}\n type=\"button\"\n variant={radixVariant}\n {...restProps}\n className={className}\n color={radixColor}\n ref={ref}\n size={radixSize}\n />\n );\n }\n);\n\nIconButton.displayName = 'IconButton';\n","import { type ButtonProps as RadixButtonProps } from '@radix-ui/themes';\nimport type { Breakpoint } from '@radix-ui/themes/props';\nimport type { ButtonProps } from '../atoms/button.type';\n\nexport const convertSizeStr = (\n size: ButtonProps['size']\n): '1' | '2' | '3' | '4' => {\n switch (size) {\n case 'small':\n return '1';\n case 'medium':\n return '2';\n case 'large':\n return '4';\n default:\n return '2';\n }\n};\n\nexport const convertSizeResponse = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string' || typeof size === 'undefined') {\n return convertSizeStr(size);\n }\n const radixSize: RadixButtonProps['size'] = {};\n let key: Breakpoint = 'initial';\n for (key in size) {\n radixSize[key] = convertSizeStr(size[key]);\n }\n return radixSize;\n};\n\nexport const convertSize = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string') {\n return convertSizeStr(size);\n }\n return convertSizeResponse(size);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAC7B,yBAA2B;AAC3B,IAAAA,iBAA4B;AAC5B,IAAAC,gBAAkC;;;ACHlC,mBAAyD;AAsBrD;AAXJ,IAAM,oBAAgB;AAAA,EACpB;AACF;AAiBO,IAAM,qBAAqB,MAAmB;AACnD,MAAI;AACF,UAAM,YAAQ,yBAAW,aAAa;AACtC,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;;;ACrCA,oBAGO;AAEP,kBAAqB;AACrB,IAAAC,gBAAwB;;;ACJjB,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;;;ACUA,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;;;AFvEA,IAAAC,iBAAwC;AAkDpC,IAAAC,sBAAA;AApCJ,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,QAA+D,YAAvD,QAAM,UAAU,SAAS,OAAO,UA9C1C,IA8CiE,IAAT,iBAAS,IAAT,CAA9C,QAAM,YAAU,WAAS,SAAO;AAExC,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,cAAAC;AAAA,IAAA,iCACK,OADL;AAAA,MAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP,MAAM;AAAA,MAEL;AAAA;AAAA,EACH;AAEJ;;;AGzEA,IAAAC,gBAA2C;AAC3C,IAAAC,eAAqB;AACrB,IAAAC,iBAA8C;;;ACEvC,IAAM,iBAAiB,CAC5B,SAC0B;AAC1B,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,sBAAsB,CACjC,SAC6B;AAC7B,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,aAAa;AAC3D,WAAO,eAAe,IAAI;AAAA,EAC5B;AACA,QAAM,YAAsC,CAAC;AAC7C,MAAI,MAAkB;AACtB,OAAK,OAAO,MAAM;AAChB,cAAU,GAAG,IAAI,eAAe,KAAK,GAAG,CAAC;AAAA,EAC3C;AACA,SAAO;AACT;AAEO,IAAM,cAAc,CACzB,SAC6B;AAC7B,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,eAAe,IAAI;AAAA,EAC5B;AACA,SAAO,oBAAoB,IAAI;AACjC;;;ADPM,IAAAC,sBAAA;AAzBC,IAAM,iBAAa;AAAA,EACxB,CAAC,OAAO,QAAyB;AAC/B,UAAsD,YAA9C,QAAM,OAAO,SAAS,MAVlC,IAU0D,IAAd,sBAAc,IAAd,CAAhC,QAAM,SAAO,WAAS;AAE9B,UAAM,gBAAY,uBAAQ,MAAM;AAC9B,aAAO,YAAY,IAAI;AAAA,IACzB,GAAG,CAAC,IAAI,CAAC;AAET,UAAM,mBAAe,uBAAQ,MAAM;AACjC,UAAI,YAAY,cAAe,QAAO;AACtC,aAAO;AAAA,IACT,GAAG,CAAC,OAAO,CAAC;AAEZ,UAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,MACvD,MAAM,aAAa,KAAK;AAAA,MACxB,CAAC,KAAK;AAAA,IACR;AAEA,UAAM,gBAAY,uBAAQ,MAAM;AAC9B,iBAAO,mBAAK,MAAM,WAAW,gBAAgB;AAAA,QAC3C,aAAa,YAAY;AAAA,MAC3B,CAAC;AAAA,IACH,GAAG,CAAC,MAAM,WAAW,gBAAgB,OAAO,CAAC;AAE7C,WACE;AAAA,MAAC,eAAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,SAAS;AAAA,SACL,YAJL;AAAA,QAKC;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;;;ALiBb,IAAAC,sBAAA;AA3CZ,IAAM,iBAAyE,CAC7E,MACG;AACH,IAAE,eAAe;AACnB;AAEA,SAASC,SAAQ,OAAsC;AACrD,QAeI,YAdF;AAAA;AAAA,IACA,QAAQ,CAAC;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAzCJ,IA2CM,IADC,iBACD,IADC;AAAA,IAbH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGF,QAAM,EAAE,mBAAmB,IAAI,mBAAmB;AAElD,SACE,6CAAa,oBAAZ,EAAmB,WAAW,mBAAmB,SAChD,uDAAC,wBAAM,SAAO,MACZ,uDAAa,qBAAZ,EAAoB,WAAU,qDAC7B;AAAA,IAAa;AAAA,IAAZ;AAAA,MACC,WAAW,iBAAiB,aAAa,EAAE,oDAAoD,QAAM,GAAG;AAAA,MACxG,sBAAsB;AAAA,MACtB,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,SACG;AAAA,OAED,OAZL;AAAA,MAcC;AAAA,sDAAC,uBAAK,KAAI,KAAI,SAAQ,WAAU,OAAM,QACpC;AAAA,uDAAa,mBAAZ,EAAkB,SAAO,MACvB,iBAAO,UAAU,YAAY,UAAU,KACtC,6CAACC,UAAA,EAAQ,IAAG,KAAI,SAAQ,YACrB,iBACH,IAEA,OAEJ;AAAA,UACC,CAAC,mBACA,6CAAa,mBAAZ,EAAkB,SAAO,MAAC,WAAU,eACnC,uDAAC,cAAW,OAAM,QAAO,SAAQ,SAC/B,uDAAC,iCAAW,GACd,GACF;AAAA,WAEJ;AAAA,QACC;AAAA,QACA,UACC,6CAAC,uBAAK,KAAI,KAAI,SAAQ,OAAM,IAAG,KAAI,OAAM,QACtC,mBACH,IACE;AAAA;AAAA;AAAA,EACN,GACF,GACF,GACF;AAEJ;AAEA,SAASC,OAAM,IAGmC;AAHnC,eACb;AAAA;AAAA,EAhGF,IA+Fe,IAEV,iBAFU,IAEV;AAAA,IADH;AAAA;AAGA,SACE,6CAAa,mBAAZ,+BAAkB,SAAO,QAAK,OAA9B,EACE,WACH;AAEJ;AAEA,SAASC,SAAQ,IAGmC;AAHnC,eACf;AAAA;AAAA,EA3GF,IA0GiB,IAEZ,iBAFY,IAEZ;AAAA,IADH;AAAA;AAGA,SACE,6CAAa,qBAAZ,+BAAoB,SAAO,QAAK,OAAhC,EACE,WACH;AAEJ;AAEA,SAASC,MAAK,OAAiD;AAC7D,QAAM,kBAAc,sBAA4B,MAAS;AACzD,QAAM,yBAAqB,sBAAgB,KAAK;AAGhD,+BAAU,MAAM;AACd,UAAM,WAAW,YAAY;AAC7B,UAAM,cAAc,MAAM;AAG1B,gBAAY,UAAU;AAGtB,QAAI,aAAa,QAAQ,gBAAgB,SAAS,CAAC,mBAAmB,SAAS;AAC7E,yBAAmB,UAAU;AAG7B,YAAM,QAAQ,WAAW,MAAM;AAtIrC;AAuIQ,YAAI;AAEF,gBAAM,gBAAgB,SAAS;AAE/B,+DAAe,SAAf;AAGA,mBAAS,KAAK,MAAM,gBAAgB;AAAA,QACtC,SAAQ;AAAA,QAER,UAAE;AACA,6BAAmB,UAAU;AAAA,QAC/B;AAAA,MACF,GAAG,GAAG;AAEN,aAAO,MAAM;AACX,qBAAa,KAAK;AAClB,2BAAmB,UAAU;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,IAAI,CAAC;AAGf,+BAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,YAAY,YAAY,MAAM;AAChC,iBAAS,KAAK,MAAM,gBAAgB;AAAA,MACtC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,6CAAa,kBAAZ,mBAAqB,MAAO;AACtC;AAEO,IAAM,SAAS;AAAA,EACpB,MAAAA;AAAA,EACA,SAAAD;AAAA,EACA,SAAAH;AAAA,EACA,OAAAE;AAAA,EACA,aAAyB;AAAA,EACzB,OAAmB;AACrB;","names":["import_themes","import_react","import_react","import_themes","import_jsx_runtime","Heading","RadixHeading","import_react","import_clsx","import_themes","import_jsx_runtime","RadixIconButton","import_jsx_runtime","Content","Heading","Close","Trigger","Root"]}
|
package/dist/atoms/dialog.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Dialog
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-PE4EBBU4.js";
|
|
4
|
+
import "../chunk-NLHVQJQ2.js";
|
|
4
5
|
import "../chunk-U7N2PWMO.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-7RJYF5L3.js";
|
|
6
7
|
import "../chunk-HF6GNDPV.js";
|
|
7
|
-
import "../chunk-BESTU2AY.js";
|
|
8
8
|
import "../chunk-LDBWASUA.js";
|
|
9
|
+
import "../chunk-VFQD57ZY.js";
|
|
9
10
|
import "../chunk-CRTRMMJ7.js";
|
|
10
11
|
export {
|
|
11
12
|
Dialog
|
package/dist/atoms/drawer.cjs
CHANGED
|
@@ -164,11 +164,34 @@ var convertSize = (size) => {
|
|
|
164
164
|
return convertSizeResponse(size);
|
|
165
165
|
};
|
|
166
166
|
|
|
167
|
+
// src/utils/resolve-color.ts
|
|
168
|
+
var SEMANTIC_COLOR_MAP = {
|
|
169
|
+
error: "red",
|
|
170
|
+
neutral: "gray",
|
|
171
|
+
success: "green",
|
|
172
|
+
accent: void 0
|
|
173
|
+
};
|
|
174
|
+
var CUSTOM_COLOR_MAP = {
|
|
175
|
+
black: { className: "tipp-accent-black", fallbackColor: "gray" }
|
|
176
|
+
};
|
|
177
|
+
var isSemanticColor = (color) => color !== void 0 && color in SEMANTIC_COLOR_MAP;
|
|
178
|
+
var isCustomColor = (color) => color !== void 0 && color in CUSTOM_COLOR_MAP;
|
|
179
|
+
var resolveColor = (color) => {
|
|
180
|
+
if (isCustomColor(color)) {
|
|
181
|
+
const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];
|
|
182
|
+
return { color: fallbackColor, className };
|
|
183
|
+
}
|
|
184
|
+
if (isSemanticColor(color)) {
|
|
185
|
+
return { color: SEMANTIC_COLOR_MAP[color] };
|
|
186
|
+
}
|
|
187
|
+
return { color };
|
|
188
|
+
};
|
|
189
|
+
|
|
167
190
|
// src/atoms/icon-button.tsx
|
|
168
191
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
169
192
|
var IconButton = (0, import_react2.forwardRef)(
|
|
170
193
|
(props, ref) => {
|
|
171
|
-
const _a = props, { size, style, variant } = _a, restProps = __objRest(_a, ["size", "style", "variant"]);
|
|
194
|
+
const _a = props, { size, style, variant, color } = _a, restProps = __objRest(_a, ["size", "style", "variant", "color"]);
|
|
172
195
|
const radixSize = (0, import_react2.useMemo)(() => {
|
|
173
196
|
return convertSize(size);
|
|
174
197
|
}, [size]);
|
|
@@ -176,9 +199,15 @@ var IconButton = (0, import_react2.forwardRef)(
|
|
|
176
199
|
if (variant === "transparent") return "ghost";
|
|
177
200
|
return variant;
|
|
178
201
|
}, [variant]);
|
|
202
|
+
const { color: radixColor, className: colorClassName } = (0, import_react2.useMemo)(
|
|
203
|
+
() => resolveColor(color),
|
|
204
|
+
[color]
|
|
205
|
+
);
|
|
179
206
|
const className = (0, import_react2.useMemo)(() => {
|
|
180
|
-
return (0, import_clsx.clsx)(props.className, {
|
|
181
|
-
|
|
207
|
+
return (0, import_clsx.clsx)(props.className, colorClassName, {
|
|
208
|
+
transparent: variant === "transparent"
|
|
209
|
+
});
|
|
210
|
+
}, [props.className, colorClassName, variant]);
|
|
182
211
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
183
212
|
import_themes2.IconButton,
|
|
184
213
|
__spreadProps(__spreadValues({
|
|
@@ -187,6 +216,7 @@ var IconButton = (0, import_react2.forwardRef)(
|
|
|
187
216
|
variant: radixVariant
|
|
188
217
|
}, restProps), {
|
|
189
218
|
className,
|
|
219
|
+
color: radixColor,
|
|
190
220
|
ref,
|
|
191
221
|
size: radixSize
|
|
192
222
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/atoms/drawer.tsx","../../src/theme/portal-provider.tsx","../../src/icons/close-panel-arrow.tsx","../../src/atoms/flex.tsx","../../src/atoms/icon-button.tsx","../../src/utils/convert-icon-button-size.ts"],"sourcesContent":["import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { Grid, Theme } from '@radix-ui/themes';\nimport { usePortalContainer } from '@/theme/portal-provider';\nimport { ClosePanelArrowIcon } from '../icons/close-panel-arrow';\nimport { Flex } from './flex';\nimport { IconButton } from './icon-button';\n\nexport function Root(props: Dialog.DialogProps): React.ReactNode {\n return <Dialog.Root {...props} />;\n}\n\ntype ContentProps = Dialog.DialogContentProps & {\n /** Drawer가 붙는 위치, 기본값 right */\n position?: 'left' | 'right' | 'bottom' | 'top';\n HeaderContent?: React.ReactNode;\n hideHeader?: boolean;\n};\n\nconst preventDefault: Dialog.DialogContentProps['onPointerDownOutside'] = (\n e\n) => {\n e.preventDefault();\n};\n\nexport function Content(props: ContentProps): React.ReactNode {\n const {\n position = 'right',\n className,\n children,\n HeaderContent,\n hideHeader,\n ...rest\n } = props;\n\n const mobileHeaderSize = 48;\n const desktopHeaderSize = 64;\n const { drawerContainerRef } = usePortalContainer();\n\n return (\n <Dialog.Portal container={drawerContainerRef.current}>\n <Theme>\n <Dialog.Overlay className=\"DrawerOverlay\" />\n <Dialog.Content\n className={`DrawerContent ${position} ${className || ''}`}\n onPointerDownOutside={preventDefault}\n {...rest}\n >\n <Grid\n height=\"100%\"\n overflow=\"hidden\"\n rows={\n hideHeader\n ? '1'\n : {\n initial: `${mobileHeaderSize}px calc(100% - ${mobileHeaderSize}px)`,\n sm: `${desktopHeaderSize}px calc(100% - ${desktopHeaderSize}px)`,\n }\n }\n >\n {!hideHeader && (\n <Flex align=\"center\" gap=\"3\" px={{ initial: '4', md: '6' }}>\n <Dialog.Close asChild>\n <IconButton color=\"gray\" variant=\"outline\">\n <ClosePanelArrowIcon />\n </IconButton>\n </Dialog.Close>\n {HeaderContent}\n </Flex>\n )}\n {children}\n </Grid>\n </Dialog.Content>\n </Theme>\n </Dialog.Portal>\n );\n}\n\nexport function Trigger(props: Dialog.DialogTriggerProps): React.ReactNode {\n return <Dialog.Trigger asChild {...props} />;\n}\n\nexport const Drawer = {\n Root: Dialog.Root,\n Trigger,\n Content,\n Close: Dialog.Close,\n Title: Dialog.Title,\n Description: Dialog.Description,\n};\n","import React, { createContext, useContext, useRef } from 'react';\n\ninterface PortalProviderProps {\n children: React.ReactNode;\n}\n\ninterface PortalState {\n dialogContainerRef: React.RefObject<HTMLDivElement | null>;\n drawerContainerRef: React.RefObject<HTMLDivElement | null>;\n}\n\nconst PortalContext = createContext<PortalState>(\n null as unknown as PortalState\n);\n\nexport function PortalProvider({\n children,\n}: PortalProviderProps): React.ReactNode {\n const dialogContainerRef = useRef<HTMLDivElement | null>(null);\n const drawerContainerRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <PortalContext.Provider value={{ dialogContainerRef, drawerContainerRef }}>\n {children}\n <div className=\"drawer-portal-container\" ref={drawerContainerRef} />\n <div className=\"dialog-portal-container\" ref={dialogContainerRef} />\n </PortalContext.Provider>\n );\n}\n\nexport const usePortalContainer = (): PortalState => {\n try {\n const state = useContext(PortalContext);\n return state;\n } catch (error) {\n throw new Error('PortalProvider not found');\n }\n};\n\nexport default PortalProvider;\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const ClosePanelArrowIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n clipRule=\"evenodd\"\n d=\"M3.19315 2.16529C3.43937 1.93445 3.82611 1.94693 4.05695 2.19315L9.87499 7.15624C9.87499 7.15624 10.4479 7.72916 9.87499 8.30207L4.05695 12.8068C3.82611 13.0531 3.43937 13.0656 3.19315 12.8347C2.94693 12.6038 2.93445 12.2171 3.16529 11.9709L8.72916 7.72916L3.16529 3.02908C2.93445 2.78285 2.94693 2.39612 3.19315 2.16529Z\"\n fill={color}\n fillRule=\"evenodd\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M12.1733 2.58667C12.1733 2.26266 11.9107 2 11.5867 2C11.2627 2 11 2.26266 11 2.58667V12.7201C11 13.044 11.2627 13.3067 11.5867 13.3067C11.9107 13.3067 12.1733 13.044 12.1733 12.7201V2.58667Z\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nClosePanelArrowIcon.displayName = 'ArrowDownIcon';\n","export { Flex, type FlexProps } from '@radix-ui/themes';\n","import React, { forwardRef, useMemo } from 'react';\nimport { clsx } from 'clsx';\nimport { IconButton as RadixIconButton } from '@radix-ui/themes';\nimport { convertSize } from '../utils/convert-icon-button-size';\nimport type { ButtonProps } from './button.type';\n\nexport type IconButtonProps = ButtonProps;\nexport const IconButton = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref): React.ReactNode => {\n const { size, style, variant, ...restProps } = props;\n\n const radixSize = useMemo(() => {\n return convertSize(size);\n }, [size]);\n\n const radixVariant = useMemo(() => {\n if (variant === 'transparent') return 'ghost';\n return variant;\n }, [variant]);\n\n const className = useMemo(() => {\n return clsx(props.className, { transparent: variant === 'transparent' });\n }, [props.className, variant]);\n\n return (\n <RadixIconButton\n style={style}\n type=\"button\"\n variant={radixVariant}\n {...restProps}\n className={className}\n ref={ref}\n size={radixSize}\n />\n );\n }\n);\n\nIconButton.displayName = 'IconButton';\n","import { type ButtonProps as RadixButtonProps } from '@radix-ui/themes';\nimport type { Breakpoint } from '@radix-ui/themes/props';\nimport type { ButtonProps } from '../atoms/button.type';\n\nexport const convertSizeStr = (\n size: ButtonProps['size']\n): '1' | '2' | '3' | '4' => {\n switch (size) {\n case 'small':\n return '1';\n case 'medium':\n return '2';\n case 'large':\n return '4';\n default:\n return '2';\n }\n};\n\nexport const convertSizeResponse = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string' || typeof size === 'undefined') {\n return convertSizeStr(size);\n }\n const radixSize: RadixButtonProps['size'] = {};\n let key: Breakpoint = 'initial';\n for (key in size) {\n radixSize[key] = convertSizeStr(size[key]);\n }\n return radixSize;\n};\n\nexport const convertSize = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string') {\n return convertSizeStr(size);\n }\n return convertSizeResponse(size);\n};\n"],"mappings":"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","names":["Content","Root","Trigger","import_themes","React","import_jsx_runtime","import_react","import_themes","import_jsx_runtime","RadixIconButton","import_jsx_runtime","Root","Content","Trigger"]}
|
|
1
|
+
{"version":3,"sources":["../../src/atoms/drawer.tsx","../../src/theme/portal-provider.tsx","../../src/icons/close-panel-arrow.tsx","../../src/atoms/flex.tsx","../../src/atoms/icon-button.tsx","../../src/utils/convert-icon-button-size.ts","../../src/utils/resolve-color.ts"],"sourcesContent":["import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { Grid, Theme } from '@radix-ui/themes';\nimport { usePortalContainer } from '@/theme/portal-provider';\nimport { ClosePanelArrowIcon } from '../icons/close-panel-arrow';\nimport { Flex } from './flex';\nimport { IconButton } from './icon-button';\n\nexport function Root(props: Dialog.DialogProps): React.ReactNode {\n return <Dialog.Root {...props} />;\n}\n\ntype ContentProps = Dialog.DialogContentProps & {\n /** Drawer가 붙는 위치, 기본값 right */\n position?: 'left' | 'right' | 'bottom' | 'top';\n HeaderContent?: React.ReactNode;\n hideHeader?: boolean;\n};\n\nconst preventDefault: Dialog.DialogContentProps['onPointerDownOutside'] = (\n e\n) => {\n e.preventDefault();\n};\n\nexport function Content(props: ContentProps): React.ReactNode {\n const {\n position = 'right',\n className,\n children,\n HeaderContent,\n hideHeader,\n ...rest\n } = props;\n\n const mobileHeaderSize = 48;\n const desktopHeaderSize = 64;\n const { drawerContainerRef } = usePortalContainer();\n\n return (\n <Dialog.Portal container={drawerContainerRef.current}>\n <Theme>\n <Dialog.Overlay className=\"DrawerOverlay\" />\n <Dialog.Content\n className={`DrawerContent ${position} ${className || ''}`}\n onPointerDownOutside={preventDefault}\n {...rest}\n >\n <Grid\n height=\"100%\"\n overflow=\"hidden\"\n rows={\n hideHeader\n ? '1'\n : {\n initial: `${mobileHeaderSize}px calc(100% - ${mobileHeaderSize}px)`,\n sm: `${desktopHeaderSize}px calc(100% - ${desktopHeaderSize}px)`,\n }\n }\n >\n {!hideHeader && (\n <Flex align=\"center\" gap=\"3\" px={{ initial: '4', md: '6' }}>\n <Dialog.Close asChild>\n <IconButton color=\"gray\" variant=\"outline\">\n <ClosePanelArrowIcon />\n </IconButton>\n </Dialog.Close>\n {HeaderContent}\n </Flex>\n )}\n {children}\n </Grid>\n </Dialog.Content>\n </Theme>\n </Dialog.Portal>\n );\n}\n\nexport function Trigger(props: Dialog.DialogTriggerProps): React.ReactNode {\n return <Dialog.Trigger asChild {...props} />;\n}\n\nexport const Drawer = {\n Root: Dialog.Root,\n Trigger,\n Content,\n Close: Dialog.Close,\n Title: Dialog.Title,\n Description: Dialog.Description,\n};\n","import React, { createContext, useContext, useRef } from 'react';\n\ninterface PortalProviderProps {\n children: React.ReactNode;\n}\n\ninterface PortalState {\n dialogContainerRef: React.RefObject<HTMLDivElement | null>;\n drawerContainerRef: React.RefObject<HTMLDivElement | null>;\n}\n\nconst PortalContext = createContext<PortalState>(\n null as unknown as PortalState\n);\n\nexport function PortalProvider({\n children,\n}: PortalProviderProps): React.ReactNode {\n const dialogContainerRef = useRef<HTMLDivElement | null>(null);\n const drawerContainerRef = useRef<HTMLDivElement | null>(null);\n\n return (\n <PortalContext.Provider value={{ dialogContainerRef, drawerContainerRef }}>\n {children}\n <div className=\"drawer-portal-container\" ref={drawerContainerRef} />\n <div className=\"dialog-portal-container\" ref={dialogContainerRef} />\n </PortalContext.Provider>\n );\n}\n\nexport const usePortalContainer = (): PortalState => {\n try {\n const state = useContext(PortalContext);\n return state;\n } catch (error) {\n throw new Error('PortalProvider not found');\n }\n};\n\nexport default PortalProvider;\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const ClosePanelArrowIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n clipRule=\"evenodd\"\n d=\"M3.19315 2.16529C3.43937 1.93445 3.82611 1.94693 4.05695 2.19315L9.87499 7.15624C9.87499 7.15624 10.4479 7.72916 9.87499 8.30207L4.05695 12.8068C3.82611 13.0531 3.43937 13.0656 3.19315 12.8347C2.94693 12.6038 2.93445 12.2171 3.16529 11.9709L8.72916 7.72916L3.16529 3.02908C2.93445 2.78285 2.94693 2.39612 3.19315 2.16529Z\"\n fill={color}\n fillRule=\"evenodd\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M12.1733 2.58667C12.1733 2.26266 11.9107 2 11.5867 2C11.2627 2 11 2.26266 11 2.58667V12.7201C11 13.044 11.2627 13.3067 11.5867 13.3067C11.9107 13.3067 12.1733 13.044 12.1733 12.7201V2.58667Z\"\n fill={color}\n fillRule=\"evenodd\"\n />\n </svg>\n );\n }\n);\n\nClosePanelArrowIcon.displayName = 'ArrowDownIcon';\n","export { Flex, type FlexProps } from '@radix-ui/themes';\n","import React, { forwardRef, useMemo } from 'react';\nimport { clsx } from 'clsx';\nimport { IconButton as RadixIconButton } from '@radix-ui/themes';\nimport { convertSize } from '../utils/convert-icon-button-size';\nimport { resolveColor } from '../utils/resolve-color';\nimport type { ButtonProps } from './button.type';\n\nexport type IconButtonProps = ButtonProps;\nexport const IconButton = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref): React.ReactNode => {\n const { size, style, variant, color, ...restProps } = props;\n\n const radixSize = useMemo(() => {\n return convertSize(size);\n }, [size]);\n\n const radixVariant = useMemo(() => {\n if (variant === 'transparent') return 'ghost';\n return variant;\n }, [variant]);\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const className = useMemo(() => {\n return clsx(props.className, colorClassName, {\n transparent: variant === 'transparent',\n });\n }, [props.className, colorClassName, variant]);\n\n return (\n <RadixIconButton\n style={style}\n type=\"button\"\n variant={radixVariant}\n {...restProps}\n className={className}\n color={radixColor}\n ref={ref}\n size={radixSize}\n />\n );\n }\n);\n\nIconButton.displayName = 'IconButton';\n","import { type ButtonProps as RadixButtonProps } from '@radix-ui/themes';\nimport type { Breakpoint } from '@radix-ui/themes/props';\nimport type { ButtonProps } from '../atoms/button.type';\n\nexport const convertSizeStr = (\n size: ButtonProps['size']\n): '1' | '2' | '3' | '4' => {\n switch (size) {\n case 'small':\n return '1';\n case 'medium':\n return '2';\n case 'large':\n return '4';\n default:\n return '2';\n }\n};\n\nexport const convertSizeResponse = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string' || typeof size === 'undefined') {\n return convertSizeStr(size);\n }\n const radixSize: RadixButtonProps['size'] = {};\n let key: Breakpoint = 'initial';\n for (key in size) {\n radixSize[key] = convertSizeStr(size[key]);\n }\n return radixSize;\n};\n\nexport const convertSize = (\n size: ButtonProps['size']\n): RadixButtonProps['size'] => {\n if (typeof size === 'string') {\n return convertSizeStr(size);\n }\n return convertSizeResponse(size);\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"],"mappings":"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","names":["Content","Root","Trigger","import_themes","React","import_jsx_runtime","import_react","import_themes","import_jsx_runtime","RadixIconButton","import_jsx_runtime","Root","Content","Trigger"]}
|
package/dist/atoms/drawer.js
CHANGED
|
@@ -3,12 +3,13 @@ import {
|
|
|
3
3
|
Drawer,
|
|
4
4
|
Root,
|
|
5
5
|
Trigger
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-JCUG2XKB.js";
|
|
7
7
|
import "../chunk-645GPOW2.js";
|
|
8
8
|
import "../chunk-U7N2PWMO.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-7RJYF5L3.js";
|
|
10
10
|
import "../chunk-HF6GNDPV.js";
|
|
11
11
|
import "../chunk-25HMMI7R.js";
|
|
12
|
+
import "../chunk-VFQD57ZY.js";
|
|
12
13
|
import "../chunk-CRTRMMJ7.js";
|
|
13
14
|
export {
|
|
14
15
|
Content,
|
|
@@ -52,33 +52,84 @@ __export(dropdown_menu_exports, {
|
|
|
52
52
|
DropdownMenu: () => DropdownMenu
|
|
53
53
|
});
|
|
54
54
|
module.exports = __toCommonJS(dropdown_menu_exports);
|
|
55
|
-
var
|
|
55
|
+
var import_themes2 = require("@radix-ui/themes");
|
|
56
|
+
var import_react2 = require("react");
|
|
57
|
+
|
|
58
|
+
// src/utils/resolve-color.ts
|
|
59
|
+
var SEMANTIC_COLOR_MAP = {
|
|
60
|
+
error: "red",
|
|
61
|
+
neutral: "gray",
|
|
62
|
+
success: "green",
|
|
63
|
+
accent: void 0
|
|
64
|
+
};
|
|
65
|
+
var CUSTOM_COLOR_MAP = {
|
|
66
|
+
black: { className: "tipp-accent-black", fallbackColor: "gray" }
|
|
67
|
+
};
|
|
68
|
+
var isSemanticColor = (color) => color !== void 0 && color in SEMANTIC_COLOR_MAP;
|
|
69
|
+
var isCustomColor = (color) => color !== void 0 && color in CUSTOM_COLOR_MAP;
|
|
70
|
+
var resolveColor = (color) => {
|
|
71
|
+
if (isCustomColor(color)) {
|
|
72
|
+
const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];
|
|
73
|
+
return { color: fallbackColor, className };
|
|
74
|
+
}
|
|
75
|
+
if (isSemanticColor(color)) {
|
|
76
|
+
return { color: SEMANTIC_COLOR_MAP[color] };
|
|
77
|
+
}
|
|
78
|
+
return { color };
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/theme/theme-provider.tsx
|
|
56
82
|
var import_react = require("react");
|
|
83
|
+
var import_themes = require("@radix-ui/themes");
|
|
84
|
+
var import_clsx = require("clsx");
|
|
57
85
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
86
|
+
var ThemeAccentContext = (0, import_react.createContext)(void 0);
|
|
87
|
+
|
|
88
|
+
// src/atoms/dropdown-menu.tsx
|
|
89
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
90
|
+
var DropdownMenuContext = (0, import_react2.createContext)({});
|
|
91
|
+
var Content = (0, import_react2.forwardRef)((props, ref) => {
|
|
92
|
+
const _a = props, { isNavigation, className, color } = _a, rest = __objRest(_a, ["isNavigation", "className", "color"]);
|
|
93
|
+
const { color: contextColor } = (0, import_react2.useContext)(DropdownMenuContext);
|
|
94
|
+
const themeAccent = (0, import_react2.useContext)(ThemeAccentContext);
|
|
95
|
+
const { color: radixColor, className: colorClassName } = (0, import_react2.useMemo)(
|
|
96
|
+
() => {
|
|
97
|
+
var _a2;
|
|
98
|
+
return resolveColor((_a2 = color != null ? color : contextColor) != null ? _a2 : themeAccent);
|
|
99
|
+
},
|
|
100
|
+
[color, contextColor, themeAccent]
|
|
101
|
+
);
|
|
102
|
+
const appliedColor = colorClassName ? void 0 : radixColor;
|
|
103
|
+
const contentClassName = (0, import_react2.useMemo)(() => {
|
|
61
104
|
const cls = isNavigation ? "dropdown-navigation" : "";
|
|
62
|
-
return [cls, className].join(" ");
|
|
63
|
-
}, [isNavigation, className]);
|
|
64
|
-
return /* @__PURE__ */ (0,
|
|
65
|
-
|
|
105
|
+
return [cls, colorClassName, className].filter(Boolean).join(" ");
|
|
106
|
+
}, [isNavigation, colorClassName, className]);
|
|
107
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
108
|
+
import_themes2.DropdownMenu.Content,
|
|
66
109
|
__spreadProps(__spreadValues({
|
|
67
110
|
ref
|
|
68
111
|
}, rest), {
|
|
69
|
-
className: contentClassName
|
|
112
|
+
className: contentClassName,
|
|
113
|
+
color: appliedColor
|
|
70
114
|
})
|
|
71
115
|
);
|
|
72
116
|
});
|
|
73
117
|
Content.displayName = "DropdownMenu.Content";
|
|
74
|
-
var Trigger = (0,
|
|
118
|
+
var Trigger = (0, import_react2.forwardRef)(
|
|
75
119
|
(_a, ref) => {
|
|
76
120
|
var _b = _a, { asChild: _asChild } = _b, props = __objRest(_b, ["asChild"]);
|
|
77
|
-
return /* @__PURE__ */ (0,
|
|
121
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes2.DropdownMenu.Trigger, __spreadValues({ ref }, props));
|
|
78
122
|
}
|
|
79
123
|
);
|
|
80
124
|
Trigger.displayName = "DropdownMenu.Trigger";
|
|
81
|
-
|
|
125
|
+
function Root(props) {
|
|
126
|
+
const _a = props, { color } = _a, rest = __objRest(_a, ["color"]);
|
|
127
|
+
const value = (0, import_react2.useMemo)(() => ({ color }), [color]);
|
|
128
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DropdownMenuContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes2.DropdownMenu.Root, __spreadValues({}, rest)) });
|
|
129
|
+
}
|
|
130
|
+
Root.displayName = "DropdownMenu.Root";
|
|
131
|
+
var DropdownMenu = __spreadProps(__spreadValues({}, import_themes2.DropdownMenu), {
|
|
132
|
+
Root,
|
|
82
133
|
Content,
|
|
83
134
|
Trigger
|
|
84
135
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/atoms/dropdown-menu.tsx"],"sourcesContent":["import { DropdownMenu as RadixDropdownMenu } from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype ContentProps = RadixDropdownMenu.ContentProps & {\n isNavigation?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n};\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>((props, ref) => {\n const { isNavigation, className, ...rest } = props;\n const contentClassName = useMemo(() => {\n const cls = isNavigation ? 'dropdown-navigation' : '';\n return [cls, className].join(' ');\n }, [isNavigation, className]);\n\n return (\n <RadixDropdownMenu.Content\n ref={ref}\n {...rest}\n className={contentClassName}\n />\n );\n});\n\nContent.displayName = 'DropdownMenu.Content';\n\n
|
|
1
|
+
{"version":3,"sources":["../../src/atoms/dropdown-menu.tsx","../../src/utils/resolve-color.ts","../../src/theme/theme-provider.tsx"],"sourcesContent":["import { DropdownMenu as RadixDropdownMenu } from '@radix-ui/themes';\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 DropdownMenuContext = createContext<{ color?: UiColor }>({});\n\ntype ContentProps = DistributiveOmit<\n RadixDropdownMenu.ContentProps,\n 'color'\n> & {\n isNavigation?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n color?: UiColor;\n};\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>((props, ref) => {\n const { isNavigation, className, color, ...rest } = props;\n const { color: contextColor } = useContext(DropdownMenuContext);\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 contentClassName = useMemo(() => {\n const cls = isNavigation ? 'dropdown-navigation' : '';\n return [cls, colorClassName, className].filter(Boolean).join(' ');\n }, [isNavigation, colorClassName, className]);\n\n return (\n <RadixDropdownMenu.Content\n ref={ref}\n {...rest}\n className={contentClassName}\n color={appliedColor}\n />\n );\n});\n\nContent.displayName = 'DropdownMenu.Content';\n\n// @radix-ui/themes의 DropdownMenu.Trigger는 asChild 타입이 누락되어 있어 별도로 확장\ntype TriggerProps = RadixDropdownMenu.TriggerProps & { asChild?: boolean };\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(\n ({ asChild: _asChild, ...props }, ref) => (\n <RadixDropdownMenu.Trigger ref={ref} {...props} />\n ),\n);\n\nTrigger.displayName = 'DropdownMenu.Trigger';\n\ntype RootProps = RadixDropdownMenu.RootProps & {\n /** Content에 일괄 적용할 color. Content에서 color prop으로 개별 override 가능. */\n color?: UiColor;\n};\n\nfunction Root(props: RootProps): React.ReactNode {\n const { color, ...rest } = props;\n\n const value = useMemo(() => ({ color }), [color]);\n\n return (\n <DropdownMenuContext.Provider value={value}>\n <RadixDropdownMenu.Root {...rest} />\n </DropdownMenuContext.Provider>\n );\n}\n\nRoot.displayName = 'DropdownMenu.Root';\n\nexport const DropdownMenu = {\n ...RadixDropdownMenu,\n Root,\n Content,\n Trigger,\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 } 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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,iBAAkD;AAClD,IAAAC,gBAA+D;;;AC4B/D,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;;;ACrFA,mBAAqC;AACrC,oBAAsB;AACtB,kBAAqB;AAoCf;AAvBC,IAAM,yBAAqB,4BAAmC,MAAS;;;AF2B1E,IAAAC,sBAAA;AAjCJ,IAAM,0BAAsB,6BAAmC,CAAC,CAAC;AAWjE,IAAM,cAAU,0BAAyC,CAAC,OAAO,QAAQ;AACvE,QAAoD,YAA5C,gBAAc,WAAW,MArBnC,IAqBsD,IAAT,iBAAS,IAAT,CAAnC,gBAAc,aAAW;AACjC,QAAM,EAAE,OAAO,aAAa,QAAI,0BAAW,mBAAmB;AAC9D,QAAM,kBAAc,0BAAW,kBAAkB;AAIjD,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAG;AA5BP,UAAAC;AA4BU,2BAAaA,MAAA,wBAAS,iBAAT,OAAAA,MAAyB,WAAW;AAAA;AAAA,IACvD,CAAC,OAAO,cAAc,WAAW;AAAA,EACnC;AAIA,QAAM,eAAe,iBAAiB,SAAY;AAElD,QAAM,uBAAmB,uBAAQ,MAAM;AACrC,UAAM,MAAM,eAAe,wBAAwB;AACnD,WAAO,CAAC,KAAK,gBAAgB,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAClE,GAAG,CAAC,cAAc,gBAAgB,SAAS,CAAC;AAE5C,SACE;AAAA,IAAC,eAAAC,aAAkB;AAAA,IAAlB;AAAA,MACC;AAAA,OACI,OAFL;AAAA,MAGC,WAAW;AAAA,MACX,OAAO;AAAA;AAAA,EACT;AAEJ,CAAC;AAED,QAAQ,cAAc;AAKtB,IAAM,cAAU;AAAA,EACd,CAAC,IAAiC,QAAK;AAAtC,iBAAE,WAAS,SAzDd,IAyDG,IAAwB,kBAAxB,IAAwB,CAAtB;AACD,wDAAC,eAAAA,aAAkB,SAAlB,iBAA0B,OAAc,MAAO;AAAA;AAEpD;AAEA,QAAQ,cAAc;AAOtB,SAAS,KAAK,OAAmC;AAC/C,QAA2B,YAAnB,QAtEV,IAsE6B,IAAT,iBAAS,IAAT,CAAV;AAER,QAAM,YAAQ,uBAAQ,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC;AAEhD,SACE,6CAAC,oBAAoB,UAApB,EAA6B,OAC5B,uDAAC,eAAAA,aAAkB,MAAlB,mBAA2B,KAAM,GACpC;AAEJ;AAEA,KAAK,cAAc;AAEZ,IAAM,eAAe,iCACvB,eAAAA,eADuB;AAAA,EAE1B;AAAA,EACA;AAAA,EACA;AACF;","names":["import_themes","import_react","import_jsx_runtime","_a","RadixDropdownMenu"]}
|
|
@@ -1,26 +1,36 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
1
|
+
import * as React$1 from 'react';
|
|
2
2
|
import { DropdownMenu as DropdownMenu$1 } from '@radix-ui/themes';
|
|
3
|
+
import { UiColor } from '../utils/resolve-color.cjs';
|
|
3
4
|
|
|
5
|
+
type RootProps = DropdownMenu$1.RootProps & {
|
|
6
|
+
/** Content에 일괄 적용할 color. Content에서 color prop으로 개별 override 가능. */
|
|
7
|
+
color?: UiColor;
|
|
8
|
+
};
|
|
9
|
+
declare function Root(props: RootProps): React.ReactNode;
|
|
10
|
+
declare namespace Root {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
4
13
|
declare const DropdownMenu: {
|
|
5
|
-
|
|
14
|
+
Root: typeof Root;
|
|
15
|
+
Content: React$1.ForwardRefExoticComponent<Omit<DropdownMenu$1.ContentProps, "color"> & {
|
|
6
16
|
isNavigation?: boolean;
|
|
7
17
|
onOpenAutoFocus?: (event: Event) => void;
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
color?: UiColor;
|
|
19
|
+
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
20
|
+
Trigger: React$1.ForwardRefExoticComponent<DropdownMenu$1.TriggerProps & {
|
|
10
21
|
asChild?: boolean;
|
|
11
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Separator: React.ForwardRefExoticComponent<DropdownMenu$1.SeparatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
} & React$1.RefAttributes<HTMLButtonElement>>;
|
|
23
|
+
TriggerIcon: React$1.ForwardRefExoticComponent<DropdownMenu$1.TriggerIconProps & React$1.RefAttributes<SVGSVGElement>>;
|
|
24
|
+
Label: React$1.ForwardRefExoticComponent<DropdownMenu$1.LabelProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
25
|
+
Item: React$1.ForwardRefExoticComponent<DropdownMenu$1.ItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
Group: React$1.ForwardRefExoticComponent<DropdownMenu$1.GroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
27
|
+
RadioGroup: React$1.ForwardRefExoticComponent<DropdownMenu$1.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
RadioItem: React$1.ForwardRefExoticComponent<DropdownMenu$1.RadioItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
CheckboxItem: React$1.ForwardRefExoticComponent<DropdownMenu$1.CheckboxItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
30
|
+
Sub: React$1.FC<DropdownMenu$1.SubProps>;
|
|
31
|
+
SubTrigger: React$1.ForwardRefExoticComponent<DropdownMenu$1.SubTriggerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
SubContent: React$1.ForwardRefExoticComponent<DropdownMenu$1.SubContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
Separator: React$1.ForwardRefExoticComponent<DropdownMenu$1.SeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
24
34
|
};
|
|
25
35
|
|
|
26
36
|
export { DropdownMenu };
|