@customafk/lunas-ui 0.2.5 → 0.2.7
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/README.md +39 -9
- package/ai-docs.md +419 -0
- package/dist/alert-CA1RS1CG.d.cts +88 -0
- package/dist/alert-DDL82_U3.d.mts +88 -0
- package/dist/alert-DIC1_ymv.cjs +2 -0
- package/dist/alert-DIC1_ymv.cjs.map +1 -0
- package/dist/alert-VP3giy31.mjs +2 -0
- package/dist/alert-VP3giy31.mjs.map +1 -0
- package/dist/avatar-CTS9-raY.cjs +2 -0
- package/dist/avatar-CTS9-raY.cjs.map +1 -0
- package/dist/avatar-DbxqvCjT.mjs +2 -0
- package/dist/avatar-DbxqvCjT.mjs.map +1 -0
- package/dist/badge-B8bw2UEY.mjs +2 -0
- package/dist/badge-B8bw2UEY.mjs.map +1 -0
- package/dist/badge-BFTGDsBm.d.cts +42 -0
- package/dist/badge-Cg0e-djv.d.mts +42 -0
- package/dist/badge-uQ0pIZbQ.cjs +2 -0
- package/dist/badge-uQ0pIZbQ.cjs.map +1 -0
- package/dist/button-Bn54lPVz.d.cts +174 -0
- package/dist/button-C6ybzxxj.mjs +2 -0
- package/dist/button-C6ybzxxj.mjs.map +1 -0
- package/dist/button-C76drZpd.d.mts +174 -0
- package/dist/{button-Cd7YtPlT.cjs → button-CwDT3m4m.cjs} +2 -2
- package/dist/button-CwDT3m4m.cjs.map +1 -0
- package/dist/button.variants-DeCyas1F.mjs +2 -0
- package/dist/button.variants-DeCyas1F.mjs.map +1 -0
- package/dist/button.variants-tnhb123u.cjs +2 -0
- package/dist/button.variants-tnhb123u.cjs.map +1 -0
- package/dist/calendar-CyAPpT2m.cjs +2 -0
- package/dist/calendar-CyAPpT2m.cjs.map +1 -0
- package/dist/calendar-JKxWM6AF.mjs +2 -0
- package/dist/calendar-JKxWM6AF.mjs.map +1 -0
- package/dist/cards/grid-product-card.cjs +1 -1
- package/dist/cards/grid-product-card.cjs.map +1 -1
- package/dist/cards/grid-product-card.d.cts +23 -0
- package/dist/cards/grid-product-card.d.mts +23 -0
- package/dist/cards/grid-product-card.mjs +1 -1
- package/dist/cards/grid-product-card.mjs.map +1 -1
- package/dist/cards/product-card.cjs +1 -1
- package/dist/cards/product-card.cjs.map +1 -1
- package/dist/cards/product-card.d.cts +23 -0
- package/dist/cards/product-card.d.mts +23 -0
- package/dist/cards/product-card.mjs +1 -1
- package/dist/cards/product-card.mjs.map +1 -1
- package/dist/cards/simple-card.cjs +1 -1
- package/dist/cards/simple-card.cjs.map +1 -1
- package/dist/cards/simple-card.d.cts +16 -0
- package/dist/cards/simple-card.d.mts +18 -2
- package/dist/cards/simple-card.mjs +1 -1
- package/dist/cards/simple-card.mjs.map +1 -1
- package/dist/{checkbox-Bg2FiuQw.mjs → checkbox-DJEdYOjA.mjs} +2 -2
- package/dist/checkbox-DJEdYOjA.mjs.map +1 -0
- package/dist/{checkbox-C0fSWwmD.cjs → checkbox-RZrRNYP2.cjs} +2 -2
- package/dist/checkbox-RZrRNYP2.cjs.map +1 -0
- package/dist/close-BU0kWRVo.mjs +2 -0
- package/dist/{close-DfuHB7kq.mjs.map → close-BU0kWRVo.mjs.map} +1 -1
- package/dist/close-DXk_H3Gt.cjs +2 -0
- package/dist/{close-D_Ge7gnP.cjs.map → close-DXk_H3Gt.cjs.map} +1 -1
- package/dist/cms-layout-Dc4moos1.cjs +2 -0
- package/dist/cms-layout-Dc4moos1.cjs.map +1 -0
- package/dist/cms-layout-HfnOQS16.mjs +2 -0
- package/dist/cms-layout-HfnOQS16.mjs.map +1 -0
- package/dist/{command-IfPmQiyJ.cjs → command-SHd-d_o0.cjs} +2 -2
- package/dist/command-SHd-d_o0.cjs.map +1 -0
- package/dist/{command-Bma4ivZz.mjs → command-bpcnKEbR.mjs} +2 -2
- package/dist/command-bpcnKEbR.mjs.map +1 -0
- package/dist/data-display/country.cjs +1 -1
- package/dist/data-display/country.cjs.map +1 -1
- package/dist/data-display/country.d.cts +15 -3
- package/dist/data-display/country.d.mts +15 -3
- package/dist/data-display/country.mjs +1 -1
- package/dist/data-display/country.mjs.map +1 -1
- package/dist/data-display/data-list.cjs +1 -1
- package/dist/data-display/data-list.cjs.map +1 -1
- package/dist/data-display/data-list.d.cts +31 -2
- package/dist/data-display/data-list.d.mts +31 -2
- package/dist/data-display/data-list.mjs +1 -1
- package/dist/data-display/data-list.mjs.map +1 -1
- package/dist/data-display/date-tooltip.cjs +1 -1
- package/dist/data-display/date-tooltip.cjs.map +1 -1
- package/dist/data-display/date-tooltip.d.cts +13 -2
- package/dist/data-display/date-tooltip.d.mts +13 -2
- package/dist/data-display/date-tooltip.mjs +1 -1
- package/dist/data-display/date-tooltip.mjs.map +1 -1
- package/dist/data-display/date.cjs +1 -1
- package/dist/data-display/date.d.cts +28 -2
- package/dist/data-display/date.d.mts +28 -2
- package/dist/data-display/date.mjs +1 -1
- package/dist/data-display/empty.cjs +1 -1
- package/dist/data-display/empty.cjs.map +1 -1
- package/dist/data-display/empty.d.cts +17 -3
- package/dist/data-display/empty.d.mts +17 -3
- package/dist/data-display/empty.mjs +1 -1
- package/dist/data-display/empty.mjs.map +1 -1
- package/dist/data-display/name.cjs +1 -1
- package/dist/data-display/name.cjs.map +1 -1
- package/dist/data-display/name.d.cts +12 -1
- package/dist/data-display/name.d.mts +12 -1
- package/dist/data-display/name.mjs +1 -1
- package/dist/data-display/name.mjs.map +1 -1
- package/dist/data-display/phone-number.cjs +1 -1
- package/dist/data-display/phone-number.cjs.map +1 -1
- package/dist/data-display/phone-number.d.cts +14 -2
- package/dist/data-display/phone-number.d.mts +14 -2
- package/dist/data-display/phone-number.mjs +1 -1
- package/dist/data-display/phone-number.mjs.map +1 -1
- package/dist/data-display/role-badge.cjs +1 -1
- package/dist/data-display/role-badge.cjs.map +1 -1
- package/dist/data-display/role-badge.d.cts +15 -3
- package/dist/data-display/role-badge.d.mts +15 -3
- package/dist/data-display/role-badge.mjs +1 -1
- package/dist/data-display/role-badge.mjs.map +1 -1
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.cjs.map +1 -1
- package/dist/data-display/statistic.d.cts +35 -6
- package/dist/data-display/statistic.d.mts +37 -8
- package/dist/data-display/statistic.mjs +1 -1
- package/dist/data-display/statistic.mjs.map +1 -1
- package/dist/data-display/user.cjs +1 -2
- package/dist/data-display/user.d.cts +14 -1
- package/dist/data-display/user.d.mts +14 -1
- package/dist/data-display/user.mjs +1 -2
- package/dist/date-CVz9xdCg.mjs +2 -0
- package/dist/date-CVz9xdCg.mjs.map +1 -0
- package/dist/date-a3RI5Pwo.cjs +2 -0
- package/dist/date-a3RI5Pwo.cjs.map +1 -0
- package/dist/dialog-BchwY6-N.mjs +2 -0
- package/dist/dialog-BchwY6-N.mjs.map +1 -0
- package/dist/dialog-CNhwBcEl.d.cts +90 -0
- package/dist/dialog-D6ygAOSV.d.mts +90 -0
- package/dist/dialog-o_68LQXd.cjs +2 -0
- package/dist/dialog-o_68LQXd.cjs.map +1 -0
- package/dist/dialogs/confirm-dialog.cjs +1 -1
- package/dist/dialogs/confirm-dialog.cjs.map +1 -1
- package/dist/dialogs/confirm-dialog.d.cts +129 -3
- package/dist/dialogs/confirm-dialog.d.mts +129 -3
- package/dist/dialogs/confirm-dialog.mjs +1 -1
- package/dist/dialogs/confirm-dialog.mjs.map +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.cjs +1 -2
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +73 -26
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +73 -26
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -2
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
- package/dist/dialogs/detail-dialog/index.d.cts +37 -8
- package/dist/dialogs/detail-dialog/index.d.mts +37 -8
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/dialogs/detail-dialog/index.mjs.map +1 -1
- package/dist/dialogs/error-dialog.cjs +1 -1
- package/dist/dialogs/error-dialog.cjs.map +1 -1
- package/dist/dialogs/error-dialog.d.cts +18 -4
- package/dist/dialogs/error-dialog.d.mts +18 -4
- package/dist/dialogs/error-dialog.mjs +1 -1
- package/dist/dialogs/error-dialog.mjs.map +1 -1
- package/dist/dialogs/loading-dialog.cjs +1 -1
- package/dist/dialogs/loading-dialog.cjs.map +1 -1
- package/dist/dialogs/loading-dialog.d.cts +15 -3
- package/dist/dialogs/loading-dialog.d.mts +15 -3
- package/dist/dialogs/loading-dialog.mjs +1 -1
- package/dist/dialogs/loading-dialog.mjs.map +1 -1
- package/dist/dist-CIN9T2FB.mjs +2 -0
- package/dist/{dist-DP1ehOL8.mjs.map → dist-CIN9T2FB.mjs.map} +1 -1
- package/dist/dist-Dh8WwRa8.cjs +2 -0
- package/dist/{dist-Q1UyT_bc.cjs.map → dist-Dh8WwRa8.cjs.map} +1 -1
- package/dist/dropdown-menu-Ct9BLGfa.cjs +2 -0
- package/dist/dropdown-menu-Ct9BLGfa.cjs.map +1 -0
- package/dist/dropdown-menu-DWSfXhHo.mjs +2 -0
- package/dist/dropdown-menu-DWSfXhHo.mjs.map +1 -0
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.d.cts +158 -19
- package/dist/features/descriptions/index.d.mts +158 -19
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/search-modal/index.cjs +1 -2
- package/dist/features/search-modal/index.d.cts +12 -2
- package/dist/features/search-modal/index.d.mts +12 -2
- package/dist/features/search-modal/index.mjs +1 -2
- package/dist/features/tables/index.cjs +1 -2
- package/dist/features/tables/index.d.cts +746 -24
- package/dist/features/tables/index.d.mts +746 -24
- package/dist/features/tables/index.mjs +1 -2
- package/dist/features/tanstack-form/index.cjs +1 -2
- package/dist/features/tanstack-form/index.d.cts +2 -1786
- package/dist/features/tanstack-form/index.d.mts +2 -1786
- package/dist/features/tanstack-form/index.mjs +1 -2
- package/dist/field-CXVnw75a.mjs +2 -0
- package/dist/field-CXVnw75a.mjs.map +1 -0
- package/dist/field-CppNvoxV.cjs +2 -0
- package/dist/field-CppNvoxV.cjs.map +1 -0
- package/dist/{flex-CeizYtXs.mjs → flex-BLMTj7Ev.mjs} +2 -2
- package/dist/flex-BLMTj7Ev.mjs.map +1 -0
- package/dist/{flex-BsoSgWFN.cjs → flex-BbbogTsZ.cjs} +2 -2
- package/dist/flex-BbbogTsZ.cjs.map +1 -0
- package/dist/heading-AKz5ewy-.cjs +2 -0
- package/dist/heading-AKz5ewy-.cjs.map +1 -0
- package/dist/heading-DN67djxs.mjs +2 -0
- package/dist/heading-DN67djxs.mjs.map +1 -0
- package/dist/image-B1Dm5LWk.cjs +2 -0
- package/dist/image-B1Dm5LWk.cjs.map +1 -0
- package/dist/image-BlzrSaoE.mjs +2 -0
- package/dist/image-BlzrSaoE.mjs.map +1 -0
- package/dist/index-75nSAiSe.d.mts +2030 -0
- package/dist/index-aTMCQQms.d.cts +2030 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +90 -0
- package/dist/index.d.mts +90 -0
- package/dist/index.mjs +1 -0
- package/dist/{input-DMjPBcJO.mjs → input-Cd0G5y-9.mjs} +2 -2
- package/dist/input-Cd0G5y-9.mjs.map +1 -0
- package/dist/{input-BoMJaF_N.cjs → input-Cl5VkKQh.cjs} +2 -2
- package/dist/input-Cl5VkKQh.cjs.map +1 -0
- package/dist/input-D5dtkW6g.d.mts +44 -0
- package/dist/input-t2hpPP2K.d.cts +44 -0
- package/dist/{label-BzfsTrVt.cjs → label-DkMTQ3Ch.cjs} +2 -2
- package/dist/label-DkMTQ3Ch.cjs.map +1 -0
- package/dist/label-OmlGaZ5h.mjs +2 -0
- package/dist/label-OmlGaZ5h.mjs.map +1 -0
- package/dist/layouts/cms-layout/index.cjs +1 -2
- package/dist/layouts/cms-layout/index.d.cts +66 -13
- package/dist/layouts/cms-layout/index.d.mts +66 -13
- package/dist/layouts/cms-layout/index.mjs +1 -2
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +91 -7
- package/dist/layouts/flex.d.mts +93 -9
- package/dist/layouts/flex.mjs +1 -1
- package/dist/layouts/grid.cjs +1 -1
- package/dist/layouts/grid.cjs.map +1 -1
- package/dist/layouts/grid.d.cts +14 -0
- package/dist/layouts/grid.d.mts +14 -0
- package/dist/layouts/grid.mjs +1 -1
- package/dist/layouts/grid.mjs.map +1 -1
- package/dist/layouts/payment-layout/index.cjs +1 -2
- package/dist/layouts/payment-layout/index.d.cts +35 -0
- package/dist/layouts/payment-layout/index.d.mts +35 -0
- package/dist/layouts/payment-layout/index.mjs +1 -2
- package/dist/pages/FeatureDeveloping.cjs +1 -1
- package/dist/pages/FeatureDeveloping.cjs.map +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +21 -3
- package/dist/pages/FeatureDeveloping.d.mts +21 -3
- package/dist/pages/FeatureDeveloping.mjs +1 -1
- package/dist/pages/FeatureDeveloping.mjs.map +1 -1
- package/dist/pages/FeatureFixing.cjs +1 -1
- package/dist/pages/FeatureFixing.cjs.map +1 -1
- package/dist/pages/FeatureFixing.d.cts +21 -3
- package/dist/pages/FeatureFixing.d.mts +21 -3
- package/dist/pages/FeatureFixing.mjs +1 -1
- package/dist/pages/FeatureFixing.mjs.map +1 -1
- package/dist/pages/NotAuthorized.cjs +1 -1
- package/dist/pages/NotAuthorized.cjs.map +1 -1
- package/dist/pages/NotAuthorized.d.cts +21 -3
- package/dist/pages/NotAuthorized.d.mts +21 -3
- package/dist/pages/NotAuthorized.mjs +1 -1
- package/dist/pages/NotAuthorized.mjs.map +1 -1
- package/dist/pages/NotFound.cjs +1 -1
- package/dist/pages/NotFound.cjs.map +1 -1
- package/dist/pages/NotFound.d.cts +21 -3
- package/dist/pages/NotFound.d.mts +21 -3
- package/dist/pages/NotFound.mjs +1 -1
- package/dist/pages/NotFound.mjs.map +1 -1
- package/dist/{paragraph-DmiXlAnE.mjs → paragraph-Ch5TvEqL.mjs} +2 -2
- package/dist/paragraph-Ch5TvEqL.mjs.map +1 -0
- package/dist/{paragraph-Co2e-y5c.cjs → paragraph-DN85Huc4.cjs} +2 -2
- package/dist/paragraph-DN85Huc4.cjs.map +1 -0
- package/dist/payment-layout-Da29dHJe.cjs +2 -0
- package/dist/payment-layout-Da29dHJe.cjs.map +1 -0
- package/dist/payment-layout-wN5c7MCM.mjs +2 -0
- package/dist/payment-layout-wN5c7MCM.mjs.map +1 -0
- package/dist/{popover-DzDrgttC.cjs → popover-AEt-aSy3.cjs} +2 -2
- package/dist/popover-AEt-aSy3.cjs.map +1 -0
- package/dist/popover-OJXFbqJi.mjs +2 -0
- package/dist/popover-OJXFbqJi.mjs.map +1 -0
- package/dist/{radio-group-CBhRsUjN.cjs → radio-group-BWLdQw7M.cjs} +2 -2
- package/dist/radio-group-BWLdQw7M.cjs.map +1 -0
- package/dist/{radio-group-Cem8O6BK.mjs → radio-group-CAgfOr7-.mjs} +2 -2
- package/dist/radio-group-CAgfOr7-.mjs.map +1 -0
- package/dist/{resizable-B8tRShQI.cjs → resizable-D6UKwvFa.cjs} +2 -2
- package/dist/resizable-D6UKwvFa.cjs.map +1 -0
- package/dist/{resizable-RPObV6jc.mjs → resizable-DWh_mp5P.mjs} +2 -2
- package/dist/resizable-DWh_mp5P.mjs.map +1 -0
- package/dist/search-modal-BxjKY8I7.mjs +2 -0
- package/dist/search-modal-BxjKY8I7.mjs.map +1 -0
- package/dist/search-modal-C-jNqQI1.cjs +2 -0
- package/dist/search-modal-C-jNqQI1.cjs.map +1 -0
- package/dist/{select-2CgwiefV.cjs → select-Py_t2nX1.cjs} +2 -2
- package/dist/select-Py_t2nX1.cjs.map +1 -0
- package/dist/{select-CivtMKTM.mjs → select-Ze8Fq88G.mjs} +2 -2
- package/dist/select-Ze8Fq88G.mjs.map +1 -0
- package/dist/separator-BMsbHAVt.mjs +2 -0
- package/dist/separator-BMsbHAVt.mjs.map +1 -0
- package/dist/{separator-C3ip6sbh.cjs → separator-BwZb12bh.cjs} +2 -2
- package/dist/separator-BwZb12bh.cjs.map +1 -0
- package/dist/{sheet-5MJRtrfG.cjs → sheet-CaDXTx7n.cjs} +2 -2
- package/dist/sheet-CaDXTx7n.cjs.map +1 -0
- package/dist/{sheet-oadGRiie.mjs → sheet-DMIqn1iv.mjs} +2 -2
- package/dist/sheet-DMIqn1iv.mjs.map +1 -0
- package/dist/sidebar-C27_pwLR.cjs +2 -0
- package/dist/sidebar-C27_pwLR.cjs.map +1 -0
- package/dist/sidebar-meLttL0V.mjs +2 -0
- package/dist/sidebar-meLttL0V.mjs.map +1 -0
- package/dist/skeleton-BPxcW2yu.mjs +2 -0
- package/dist/skeleton-BPxcW2yu.mjs.map +1 -0
- package/dist/skeleton-BfMCjXYM.cjs +2 -0
- package/dist/skeleton-BfMCjXYM.cjs.map +1 -0
- package/dist/spinner-EgMJOaQi.mjs +2 -0
- package/dist/spinner-EgMJOaQi.mjs.map +1 -0
- package/dist/spinner-MKXqwF9G.cjs +2 -0
- package/dist/spinner-MKXqwF9G.cjs.map +1 -0
- package/dist/systems/google.cjs +1 -1
- package/dist/systems/google.cjs.map +1 -1
- package/dist/systems/google.d.cts +36 -0
- package/dist/systems/google.d.mts +36 -0
- package/dist/systems/google.mjs +1 -1
- package/dist/systems/google.mjs.map +1 -1
- package/dist/tables-Cc3Wik4i.cjs +2 -0
- package/dist/tables-Cc3Wik4i.cjs.map +1 -0
- package/dist/tables-DrJKQPsT.mjs +2 -0
- package/dist/tables-DrJKQPsT.mjs.map +1 -0
- package/dist/tanstack-form-BmV2BXDz.cjs +2 -0
- package/dist/tanstack-form-BmV2BXDz.cjs.map +1 -0
- package/dist/tanstack-form-CJ43hVb_.mjs +2 -0
- package/dist/tanstack-form-CJ43hVb_.mjs.map +1 -0
- package/dist/{textarea-Dlwbg6TY.cjs → textarea-BsgmN4jy.cjs} +2 -2
- package/dist/textarea-BsgmN4jy.cjs.map +1 -0
- package/dist/{textarea-RjL2DtNf.mjs → textarea-CdGSEkZB.mjs} +2 -2
- package/dist/textarea-CdGSEkZB.mjs.map +1 -0
- package/dist/tooltip-Bj0iOG4s.mjs +2 -0
- package/dist/tooltip-Bj0iOG4s.mjs.map +1 -0
- package/dist/{tooltip-DC6i1A25.cjs → tooltip-itUmYz9k.cjs} +2 -2
- package/dist/tooltip-itUmYz9k.cjs.map +1 -0
- package/dist/{types-Bd0JePtp.d.cts → types-B_32Ieia.d.mts} +1 -1
- package/dist/{types-BpHcqlOI.d.mts → types-CDYHkcOk.d.cts} +1 -1
- package/dist/{types-DBD4LOem.mjs → types-DNphnTW-.mjs} +1 -1
- package/dist/{types-DBD4LOem.mjs.map → types-DNphnTW-.mjs.map} +1 -1
- package/dist/typography/paragraph.cjs +1 -1
- package/dist/typography/paragraph.d.cts +35 -5
- package/dist/typography/paragraph.d.mts +36 -6
- package/dist/typography/paragraph.mjs +1 -1
- package/dist/typography/title.cjs +1 -1
- package/dist/typography/title.cjs.map +1 -1
- package/dist/typography/title.d.cts +31 -4
- package/dist/typography/title.d.mts +31 -4
- package/dist/typography/title.mjs +1 -1
- package/dist/typography/title.mjs.map +1 -1
- package/dist/ui/alert-dialog.cjs +1 -1
- package/dist/ui/alert-dialog.cjs.map +1 -1
- package/dist/ui/alert-dialog.d.cts +54 -12
- package/dist/ui/alert-dialog.d.mts +54 -12
- package/dist/ui/alert-dialog.mjs +1 -1
- package/dist/ui/alert-dialog.mjs.map +1 -1
- package/dist/ui/alert.cjs +1 -2
- package/dist/ui/alert.d.cts +2 -69
- package/dist/ui/alert.d.mts +2 -69
- package/dist/ui/alert.mjs +1 -2
- package/dist/ui/aspect-ratio.cjs +1 -1
- package/dist/ui/aspect-ratio.cjs.map +1 -1
- package/dist/ui/aspect-ratio.d.cts +15 -2
- package/dist/ui/aspect-ratio.d.mts +15 -2
- package/dist/ui/aspect-ratio.mjs +1 -1
- package/dist/ui/aspect-ratio.mjs.map +1 -1
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.cts +20 -4
- package/dist/ui/avatar.d.mts +20 -4
- package/dist/ui/avatar.mjs +1 -1
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.d.cts +2 -21
- package/dist/ui/badge.d.mts +2 -21
- package/dist/ui/badge.mjs +1 -1
- package/dist/ui/breadcrumb.cjs +1 -1
- package/dist/ui/breadcrumb.cjs.map +1 -1
- package/dist/ui/breadcrumb.d.cts +38 -25
- package/dist/ui/breadcrumb.d.mts +38 -25
- package/dist/ui/breadcrumb.mjs +1 -1
- package/dist/ui/breadcrumb.mjs.map +1 -1
- package/dist/ui/button-group.cjs +1 -1
- package/dist/ui/button-group.cjs.map +1 -1
- package/dist/ui/button-group.d.cts +27 -6
- package/dist/ui/button-group.d.mts +27 -6
- package/dist/ui/button-group.mjs +1 -1
- package/dist/ui/button-group.mjs.map +1 -1
- package/dist/ui/button.cjs +1 -1
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/button.mjs +1 -1
- package/dist/ui/buttons/add-new.cjs +1 -1
- package/dist/ui/buttons/add-new.cjs.map +1 -1
- package/dist/ui/buttons/add-new.d.cts +9 -0
- package/dist/ui/buttons/add-new.d.mts +9 -0
- package/dist/ui/buttons/add-new.mjs +1 -1
- package/dist/ui/buttons/add-new.mjs.map +1 -1
- package/dist/ui/buttons/edit.cjs +1 -1
- package/dist/ui/buttons/edit.cjs.map +1 -1
- package/dist/ui/buttons/edit.d.cts +9 -0
- package/dist/ui/buttons/edit.d.mts +9 -0
- package/dist/ui/buttons/edit.mjs +1 -1
- package/dist/ui/buttons/edit.mjs.map +1 -1
- package/dist/ui/buttons/refresh.cjs +1 -1
- package/dist/ui/buttons/refresh.cjs.map +1 -1
- package/dist/ui/buttons/refresh.d.cts +9 -0
- package/dist/ui/buttons/refresh.d.mts +9 -0
- package/dist/ui/buttons/refresh.mjs +1 -1
- package/dist/ui/buttons/refresh.mjs.map +1 -1
- package/dist/ui/buttons/trash.cjs +1 -1
- package/dist/ui/buttons/trash.cjs.map +1 -1
- package/dist/ui/buttons/trash.d.cts +9 -0
- package/dist/ui/buttons/trash.d.mts +9 -0
- package/dist/ui/buttons/trash.mjs +1 -1
- package/dist/ui/buttons/trash.mjs.map +1 -1
- package/dist/ui/buttons/upload-image.cjs +1 -1
- package/dist/ui/buttons/upload-image.cjs.map +1 -1
- package/dist/ui/buttons/upload-image.d.cts +13 -0
- package/dist/ui/buttons/upload-image.d.mts +13 -0
- package/dist/ui/buttons/upload-image.mjs +1 -1
- package/dist/ui/buttons/upload-image.mjs.map +1 -1
- package/dist/ui/calendar.cjs +1 -1
- package/dist/ui/calendar.d.cts +22 -4
- package/dist/ui/calendar.d.mts +22 -4
- package/dist/ui/calendar.mjs +1 -1
- package/dist/ui/card.cjs +1 -1
- package/dist/ui/card.cjs.map +1 -1
- package/dist/ui/card.d.cts +37 -8
- package/dist/ui/card.d.mts +37 -8
- package/dist/ui/card.mjs +1 -1
- package/dist/ui/card.mjs.map +1 -1
- package/dist/ui/carousel.cjs +1 -1
- package/dist/ui/carousel.cjs.map +1 -1
- package/dist/ui/carousel.d.cts +31 -7
- package/dist/ui/carousel.d.mts +31 -7
- package/dist/ui/carousel.mjs +1 -1
- package/dist/ui/carousel.mjs.map +1 -1
- package/dist/ui/checkbox.cjs +1 -1
- package/dist/ui/checkbox.d.cts +17 -2
- package/dist/ui/checkbox.d.mts +17 -2
- package/dist/ui/checkbox.mjs +1 -1
- package/dist/ui/collapsible.cjs.map +1 -1
- package/dist/ui/collapsible.d.cts +22 -4
- package/dist/ui/collapsible.d.mts +22 -4
- package/dist/ui/collapsible.mjs.map +1 -1
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +48 -11
- package/dist/ui/command.d.mts +48 -11
- package/dist/ui/command.mjs +1 -1
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.d.cts +65 -16
- package/dist/ui/context-menu.d.mts +65 -16
- package/dist/ui/context-menu.mjs +1 -1
- package/dist/ui/context-menu.mjs.map +1 -1
- package/dist/ui/dialog.cjs +1 -1
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/dialog.d.mts +1 -1
- package/dist/ui/dialog.mjs +1 -1
- package/dist/ui/drawer.cjs +1 -1
- package/dist/ui/drawer.cjs.map +1 -1
- package/dist/ui/drawer.d.cts +39 -11
- package/dist/ui/drawer.d.mts +39 -11
- package/dist/ui/drawer.mjs +1 -1
- package/dist/ui/drawer.mjs.map +1 -1
- package/dist/ui/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown-menu.d.cts +65 -16
- package/dist/ui/dropdown-menu.d.mts +65 -16
- package/dist/ui/dropdown-menu.mjs +1 -1
- package/dist/ui/empty.cjs +1 -1
- package/dist/ui/empty.cjs.map +1 -1
- package/dist/ui/empty.d.cts +41 -9
- package/dist/ui/empty.d.mts +39 -7
- package/dist/ui/empty.mjs +1 -1
- package/dist/ui/empty.mjs.map +1 -1
- package/dist/ui/field.cjs +1 -2
- package/dist/ui/field.d.cts +13 -13
- package/dist/ui/field.d.mts +22 -22
- package/dist/ui/field.mjs +1 -2
- package/dist/ui/file-uploader.cjs +2 -2
- package/dist/ui/file-uploader.cjs.map +1 -1
- package/dist/ui/file-uploader.d.cts +27 -2
- package/dist/ui/file-uploader.d.mts +27 -2
- package/dist/ui/file-uploader.mjs +2 -2
- package/dist/ui/file-uploader.mjs.map +1 -1
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.cjs.map +1 -1
- package/dist/ui/form.d.cts +55 -11
- package/dist/ui/form.d.mts +55 -11
- package/dist/ui/form.mjs +1 -1
- package/dist/ui/form.mjs.map +1 -1
- package/dist/ui/hover-card.cjs +1 -1
- package/dist/ui/hover-card.cjs.map +1 -1
- package/dist/ui/hover-card.d.cts +22 -4
- package/dist/ui/hover-card.d.mts +22 -4
- package/dist/ui/hover-card.mjs +1 -1
- package/dist/ui/hover-card.mjs.map +1 -1
- package/dist/ui/image.cjs +1 -1
- package/dist/ui/image.d.cts +20 -0
- package/dist/ui/image.d.mts +20 -0
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/input-otp.cjs +1 -1
- package/dist/ui/input-otp.cjs.map +1 -1
- package/dist/ui/input-otp.d.cts +36 -5
- package/dist/ui/input-otp.d.mts +36 -5
- package/dist/ui/input-otp.mjs +1 -1
- package/dist/ui/input-otp.mjs.map +1 -1
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/input.mjs +1 -1
- package/dist/ui/inputs/search-input.cjs +1 -1
- package/dist/ui/inputs/search-input.cjs.map +1 -1
- package/dist/ui/inputs/search-input.d.cts +20 -3
- package/dist/ui/inputs/search-input.d.mts +20 -3
- package/dist/ui/inputs/search-input.mjs +1 -1
- package/dist/ui/inputs/search-input.mjs.map +1 -1
- package/dist/ui/item.cjs +1 -1
- package/dist/ui/item.cjs.map +1 -1
- package/dist/ui/item.d.cts +55 -15
- package/dist/ui/item.d.mts +55 -15
- package/dist/ui/item.mjs +1 -1
- package/dist/ui/item.mjs.map +1 -1
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +15 -2
- package/dist/ui/label.d.mts +15 -2
- package/dist/ui/label.mjs +1 -1
- package/dist/ui/menubar.cjs +1 -1
- package/dist/ui/menubar.cjs.map +1 -1
- package/dist/ui/menubar.d.cts +68 -17
- package/dist/ui/menubar.d.mts +68 -17
- package/dist/ui/menubar.mjs +1 -1
- package/dist/ui/menubar.mjs.map +1 -1
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.cjs.map +1 -1
- package/dist/ui/multi-select.d.cts +39 -2
- package/dist/ui/multi-select.d.mts +40 -3
- package/dist/ui/multi-select.mjs +1 -1
- package/dist/ui/multi-select.mjs.map +1 -1
- package/dist/ui/navigation-menu.cjs +1 -1
- package/dist/ui/navigation-menu.cjs.map +1 -1
- package/dist/ui/navigation-menu.d.cts +42 -11
- package/dist/ui/navigation-menu.d.mts +42 -11
- package/dist/ui/navigation-menu.mjs +1 -1
- package/dist/ui/navigation-menu.mjs.map +1 -1
- package/dist/ui/pagination.cjs +1 -1
- package/dist/ui/pagination.cjs.map +1 -1
- package/dist/ui/pagination.d.cts +37 -9
- package/dist/ui/pagination.d.mts +37 -9
- package/dist/ui/pagination.mjs +1 -1
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/popover.cjs +1 -1
- package/dist/ui/popover.d.cts +32 -6
- package/dist/ui/popover.d.mts +32 -6
- package/dist/ui/popover.mjs +1 -1
- package/dist/ui/progress.cjs +1 -1
- package/dist/ui/progress.cjs.map +1 -1
- package/dist/ui/progress.d.cts +13 -2
- package/dist/ui/progress.d.mts +13 -2
- package/dist/ui/progress.mjs +1 -1
- package/dist/ui/progress.mjs.map +1 -1
- package/dist/ui/radio-group.cjs +1 -1
- package/dist/ui/radio-group.d.cts +25 -3
- package/dist/ui/radio-group.d.mts +25 -3
- package/dist/ui/radio-group.mjs +1 -1
- package/dist/ui/resizable.cjs +1 -1
- package/dist/ui/resizable.d.cts +29 -9
- package/dist/ui/resizable.d.mts +29 -9
- package/dist/ui/resizable.mjs +1 -1
- package/dist/ui/scroll-area.cjs +1 -1
- package/dist/ui/scroll-area.cjs.map +1 -1
- package/dist/ui/scroll-area.d.cts +24 -6
- package/dist/ui/scroll-area.d.mts +24 -6
- package/dist/ui/scroll-area.mjs +1 -1
- package/dist/ui/scroll-area.mjs.map +1 -1
- package/dist/ui/select.cjs +1 -1
- package/dist/ui/select.d.cts +43 -9
- package/dist/ui/select.d.mts +43 -9
- package/dist/ui/select.mjs +1 -1
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +23 -2
- package/dist/ui/separator.d.mts +23 -2
- package/dist/ui/separator.mjs +1 -1
- package/dist/ui/sheet.cjs +1 -1
- package/dist/ui/sheet.d.cts +38 -9
- package/dist/ui/sheet.d.mts +38 -9
- package/dist/ui/sheet.mjs +1 -1
- package/dist/ui/sidebar.cjs +1 -1
- package/dist/ui/sidebar.cjs.map +1 -1
- package/dist/ui/sidebar.d.cts +125 -28
- package/dist/ui/sidebar.d.mts +125 -28
- package/dist/ui/sidebar.mjs +1 -1
- package/dist/ui/sidebar.mjs.map +1 -1
- package/dist/ui/skeleton.cjs +1 -1
- package/dist/ui/skeleton.d.cts +19 -2
- package/dist/ui/skeleton.d.mts +19 -2
- package/dist/ui/skeleton.mjs +1 -1
- package/dist/ui/slider.cjs +1 -1
- package/dist/ui/slider.cjs.map +1 -1
- package/dist/ui/slider.d.cts +13 -2
- package/dist/ui/slider.d.mts +13 -2
- package/dist/ui/slider.mjs +1 -1
- package/dist/ui/slider.mjs.map +1 -1
- package/dist/ui/sonner.cjs +1 -1
- package/dist/ui/sonner.cjs.map +1 -1
- package/dist/ui/sonner.d.cts +18 -2
- package/dist/ui/sonner.d.mts +18 -2
- package/dist/ui/sonner.mjs +1 -1
- package/dist/ui/sonner.mjs.map +1 -1
- package/dist/ui/spinner.cjs +1 -1
- package/dist/ui/spinner.d.cts +17 -2
- package/dist/ui/spinner.d.mts +17 -2
- package/dist/ui/spinner.mjs +1 -1
- package/dist/ui/switch.cjs +1 -1
- package/dist/ui/switch.cjs.map +1 -1
- package/dist/ui/switch.d.cts +17 -2
- package/dist/ui/switch.d.mts +17 -2
- package/dist/ui/switch.mjs +1 -1
- package/dist/ui/switch.mjs.map +1 -1
- package/dist/ui/table.cjs +1 -1
- package/dist/ui/table.cjs.map +1 -1
- package/dist/ui/table.d.cts +53 -18
- package/dist/ui/table.d.mts +53 -18
- package/dist/ui/table.mjs +1 -1
- package/dist/ui/table.mjs.map +1 -1
- package/dist/ui/tabs.cjs +1 -1
- package/dist/ui/tabs.cjs.map +1 -1
- package/dist/ui/tabs.d.cts +26 -5
- package/dist/ui/tabs.d.mts +26 -5
- package/dist/ui/tabs.mjs +1 -1
- package/dist/ui/tabs.mjs.map +1 -1
- package/dist/ui/textarea.cjs +1 -1
- package/dist/ui/textarea.d.cts +18 -2
- package/dist/ui/textarea.d.mts +18 -2
- package/dist/ui/textarea.mjs +1 -1
- package/dist/ui/toggle-group.cjs +1 -1
- package/dist/ui/toggle-group.cjs.map +1 -1
- package/dist/ui/toggle-group.d.cts +19 -3
- package/dist/ui/toggle-group.d.mts +19 -3
- package/dist/ui/toggle-group.mjs +1 -1
- package/dist/ui/toggle-group.mjs.map +1 -1
- package/dist/ui/toggle.cjs +1 -1
- package/dist/ui/toggle.cjs.map +1 -1
- package/dist/ui/toggle.d.cts +17 -4
- package/dist/ui/toggle.d.mts +17 -4
- package/dist/ui/toggle.mjs +1 -1
- package/dist/ui/toggle.mjs.map +1 -1
- package/dist/ui/tooltip.cjs +1 -1
- package/dist/ui/tooltip.d.cts +37 -5
- package/dist/ui/tooltip.d.mts +37 -5
- package/dist/ui/tooltip.mjs +1 -1
- package/dist/user-BEyYLDNK.cjs +2 -0
- package/dist/user-BEyYLDNK.cjs.map +1 -0
- package/dist/user-DONsffqr.mjs +2 -0
- package/dist/user-DONsffqr.mjs.map +1 -0
- package/package.json +11 -3
- package/styles/theme.css +27 -6
- package/dist/avatar-DReNH6rV.mjs +0 -2
- package/dist/avatar-DReNH6rV.mjs.map +0 -1
- package/dist/avatar-aVxo69zP.cjs +0 -2
- package/dist/avatar-aVxo69zP.cjs.map +0 -1
- package/dist/badge-B4Fa7-J3.mjs +0 -2
- package/dist/badge-B4Fa7-J3.mjs.map +0 -1
- package/dist/badge-cvLJyaCA.cjs +0 -2
- package/dist/badge-cvLJyaCA.cjs.map +0 -1
- package/dist/button-B5a1UlC_.d.mts +0 -59
- package/dist/button-Cd7YtPlT.cjs.map +0 -1
- package/dist/button-D8BUqpI2.mjs +0 -2
- package/dist/button-D8BUqpI2.mjs.map +0 -1
- package/dist/button-DYZCqN6A.d.cts +0 -59
- package/dist/button.variants-B_dFX3i2.mjs +0 -2
- package/dist/button.variants-B_dFX3i2.mjs.map +0 -1
- package/dist/button.variants-aqkTmzFu.cjs +0 -2
- package/dist/button.variants-aqkTmzFu.cjs.map +0 -1
- package/dist/calendar-B-PDpHK5.mjs +0 -2
- package/dist/calendar-B-PDpHK5.mjs.map +0 -1
- package/dist/calendar-Cq3_5u0k.cjs +0 -2
- package/dist/calendar-Cq3_5u0k.cjs.map +0 -1
- package/dist/checkbox-Bg2FiuQw.mjs.map +0 -1
- package/dist/checkbox-C0fSWwmD.cjs.map +0 -1
- package/dist/close-D_Ge7gnP.cjs +0 -2
- package/dist/close-DfuHB7kq.mjs +0 -2
- package/dist/command-Bma4ivZz.mjs.map +0 -1
- package/dist/command-IfPmQiyJ.cjs.map +0 -1
- package/dist/data-display/user.cjs.map +0 -1
- package/dist/data-display/user.mjs.map +0 -1
- package/dist/date-WraHGsbb.cjs +0 -2
- package/dist/date-WraHGsbb.cjs.map +0 -1
- package/dist/date-uVTm7J09.mjs +0 -2
- package/dist/date-uVTm7J09.mjs.map +0 -1
- package/dist/dialog-B50k7HnL.mjs +0 -2
- package/dist/dialog-B50k7HnL.mjs.map +0 -1
- package/dist/dialog-BoNhIQYJ.cjs +0 -2
- package/dist/dialog-BoNhIQYJ.cjs.map +0 -1
- package/dist/dialog-CuZxUWfc.d.cts +0 -47
- package/dist/dialog-D4LnpcNL.d.mts +0 -47
- package/dist/dialogs/detail-dialog/components/sidebar.cjs.map +0 -1
- package/dist/dialogs/detail-dialog/components/sidebar.mjs.map +0 -1
- package/dist/dist-DP1ehOL8.mjs +0 -2
- package/dist/dist-Q1UyT_bc.cjs +0 -2
- package/dist/dropdown-menu-B8GUTfTp.mjs +0 -2
- package/dist/dropdown-menu-B8GUTfTp.mjs.map +0 -1
- package/dist/dropdown-menu-BuyuU6uF.cjs +0 -2
- package/dist/dropdown-menu-BuyuU6uF.cjs.map +0 -1
- package/dist/features/search-modal/index.cjs.map +0 -1
- package/dist/features/search-modal/index.mjs.map +0 -1
- package/dist/features/tables/index.cjs.map +0 -1
- package/dist/features/tables/index.mjs.map +0 -1
- package/dist/features/tanstack-form/index.cjs.map +0 -1
- package/dist/features/tanstack-form/index.mjs.map +0 -1
- package/dist/flex-BsoSgWFN.cjs.map +0 -1
- package/dist/flex-CeizYtXs.mjs.map +0 -1
- package/dist/heading-BEbpIiLg.cjs +0 -2
- package/dist/heading-BEbpIiLg.cjs.map +0 -1
- package/dist/heading-CrF1CFWS.mjs +0 -2
- package/dist/heading-CrF1CFWS.mjs.map +0 -1
- package/dist/image-BBZUipoU.cjs +0 -2
- package/dist/image-BBZUipoU.cjs.map +0 -1
- package/dist/image-CZji4Q26.mjs +0 -2
- package/dist/image-CZji4Q26.mjs.map +0 -1
- package/dist/input-BoMJaF_N.cjs.map +0 -1
- package/dist/input-DMjPBcJO.mjs.map +0 -1
- package/dist/input-DszdZdbJ.d.cts +0 -25
- package/dist/input-Dv7UKl6Z.d.mts +0 -25
- package/dist/label-BzfsTrVt.cjs.map +0 -1
- package/dist/label-Dqr8nxWi.mjs +0 -2
- package/dist/label-Dqr8nxWi.mjs.map +0 -1
- package/dist/layouts/cms-layout/index.cjs.map +0 -1
- package/dist/layouts/cms-layout/index.mjs.map +0 -1
- package/dist/layouts/payment-layout/index.cjs.map +0 -1
- package/dist/layouts/payment-layout/index.mjs.map +0 -1
- package/dist/paragraph-Co2e-y5c.cjs.map +0 -1
- package/dist/paragraph-DmiXlAnE.mjs.map +0 -1
- package/dist/popover-BckwBuuD.mjs +0 -2
- package/dist/popover-BckwBuuD.mjs.map +0 -1
- package/dist/popover-DzDrgttC.cjs.map +0 -1
- package/dist/radio-group-CBhRsUjN.cjs.map +0 -1
- package/dist/radio-group-Cem8O6BK.mjs.map +0 -1
- package/dist/resizable-B8tRShQI.cjs.map +0 -1
- package/dist/resizable-RPObV6jc.mjs.map +0 -1
- package/dist/select-2CgwiefV.cjs.map +0 -1
- package/dist/select-CivtMKTM.mjs.map +0 -1
- package/dist/separator-Bf0gymN4.mjs +0 -2
- package/dist/separator-Bf0gymN4.mjs.map +0 -1
- package/dist/separator-C3ip6sbh.cjs.map +0 -1
- package/dist/sheet-5MJRtrfG.cjs.map +0 -1
- package/dist/sheet-oadGRiie.mjs.map +0 -1
- package/dist/skeleton-Ba6koCVf.mjs +0 -2
- package/dist/skeleton-Ba6koCVf.mjs.map +0 -1
- package/dist/skeleton-CHympz8k.cjs +0 -2
- package/dist/skeleton-CHympz8k.cjs.map +0 -1
- package/dist/spinner-Chm_2fLr.cjs +0 -2
- package/dist/spinner-Chm_2fLr.cjs.map +0 -1
- package/dist/spinner-D1v3Bard.mjs +0 -2
- package/dist/spinner-D1v3Bard.mjs.map +0 -1
- package/dist/textarea-Dlwbg6TY.cjs.map +0 -1
- package/dist/textarea-RjL2DtNf.mjs.map +0 -1
- package/dist/tooltip-B3dTcgcc.mjs +0 -2
- package/dist/tooltip-B3dTcgcc.mjs.map +0 -1
- package/dist/tooltip-DC6i1A25.cjs.map +0 -1
- package/dist/ui/alert.cjs.map +0 -1
- package/dist/ui/alert.mjs.map +0 -1
- package/dist/ui/field.cjs.map +0 -1
- package/dist/ui/field.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-Ze8Fq88G.mjs","names":["Select","SelectPrimitive"],"sources":["../packages/components/ui/select.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Select as SelectPrimitive } from 'radix-ui';\n\n/**\n * Accessible dropdown select built on Radix UI's Select primitives, composed from `Select`, `SelectTrigger`, `SelectContent`, and `SelectItem`.\n *\n * @example\n * ```tsx\n * import {\n * Select, SelectTrigger, SelectValue,\n * SelectContent, SelectItem,\n * } from '@customafk/lunas-ui/ui/select';\n *\n * <Select>\n * <SelectTrigger>\n * <SelectValue placeholder=\"Pick a fruit\" />\n * </SelectTrigger>\n * <SelectContent>\n * <SelectItem value=\"apple\">Apple</SelectItem>\n * <SelectItem value=\"banana\">Banana</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\n/** Groups related `SelectItem` elements with an optional `SelectLabel` header. */\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\n/** Renders the currently selected value (or a placeholder) inside `SelectTrigger`. */\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\n/**\n * The button that opens the select dropdown; renders the current value and a chevron icon.\n *\n * @param size - `'default'` (standard padding) or `'sm'` (compact).\n */\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n /** Controls the trigger's padding — `'default'` or `'sm'`. */\n size?: 'sm' | 'default';\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n 'flex w-full items-center justify-between',\n 'outline-1 outline-border -outline-offset-1',\n 'gap-2 rounded bg-transparent px-3 py-2',\n 'rounded shadow-input transition-all',\n 'cursor-pointer whitespace-nowrap text-sm',\n\n // Text styles\n 'focus-visible:text-text-positive-strong',\n 'focus-visible:outline-primary-strong',\n 'focus-visible:ring-4',\n 'focus-visible:ring-primary-weak',\n\n // State styles\n 'data-[state=open]:text-text-positive-muted',\n 'data-[state=open]:outline-primary-strong',\n 'data-[state=open]:ring-4',\n 'data-[state=open]:ring-primary-weak',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n\n // Invalid state\n 'aria-invalid:bg-danger-bg-subtle',\n 'aria-invalid:outline-danger',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:focus:outline-danger-strong',\n 'aria-invalid:focus:ring-4',\n 'aria-invalid:placeholder:text-text-positive-weak',\n 'aria-invalid:data-[state=open]:outline-danger-strong',\n 'aria-invalid:data-[state=open]:ring-danger-weak',\n\n // Placeholder styles\n 'data-placeholder:text-text-positive-muted',\n '*:data-[slot=select-value]:line-clamp-1',\n '*:data-[slot=select-value]:flex',\n '*:data-[slot=select-value]:items-center',\n '*:data-[slot=select-value]:gap-2',\n\n // Readonly state\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:cursor-default',\n 'aria-readonly:focus:outline-none',\n 'aria-readonly:ring-0',\n 'aria-readonly:pointer-events-none',\n\n // Icon styles\n '[&_svg]:shrink-0',\n '[&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon size={16} opacity={50} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\n/** Floating dropdown panel that renders inside a portal with enter/exit animations. */\nfunction SelectContent({ className, children, position = 'popper', ...props }: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n 'relative z-50 max-h-80 min-w-32 overflow-y-auto overflow-x-hidden rounded shadow-dropdown duration-300',\n 'bg-white',\n 'w-(--radix-select-trigger-width)',\n 'origin-(--radix-select-content-transform-origin)',\n\n 'data-[state=open]:animate-in',\n 'data-[state=open]:fade-in',\n\n 'data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out',\n\n 'data-[side=bottom]:slide-in-from-top-8',\n 'data-[side=left]:slide-in-from-right-8',\n 'data-[side=right]:slide-in-from-left-8',\n 'data-[side=top]:slide-in-from-bottom-8',\n\n position === 'popper' && 'data-[side=bottom]:translate-y-1',\n position === 'popper' && 'data-[side=left]:-translate-x-1',\n position === 'popper' && 'data-[side=right]:translate-x-1',\n position === 'popper' && 'data-[side=top]:-translate-y-1',\n className\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' && 'w-full scroll-my-1',\n position === 'popper' && 'h-(--radix-select-trigger-height)',\n position === 'popper' && 'min-w-(--radix-select-trigger-width)'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n/** Non-interactive label displayed above a `SelectGroup` to describe its options. */\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return <SelectPrimitive.Label data-slot=\"select-label\" className={cn('px-2 py-1.5 text-text-positive-weak text-xs', className)} {...props} />;\n}\n\n/** A selectable option within `SelectContent`; shows a check icon when chosen. */\nfunction SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n 'relative flex select-none items-center',\n 'gap-2 rounded py-2.5 pr-8 pl-2',\n 'w-full',\n 'cursor-pointer outline-none transition-colors',\n 'font-medium text-sm text-text-positive-weak',\n\n 'focus:shadow-xs',\n 'focus:bg-muted-muted',\n\n 'data-disabled:opacity-50',\n 'data-disabled:pointer-events-none',\n\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-text-positive-weak\",\n\n '*:[span]:last:flex',\n '*:[span]:last:items-center',\n '*:[span]:last:gap-2',\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon size={16} />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n );\n}\n\n/** Thin horizontal rule used to visually separate groups of `SelectItem` elements. */\nfunction SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return <SelectPrimitive.Separator data-slot=\"select-separator\" className={cn('-mx-1 pointer-events-none my-1 h-px bg-border-weak', className)} {...props} />;\n}\n\nexport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue };\n"],"mappings":"sMA6BA,SAASA,EAAO,CAAE,GAAG,GAA4D,CAC/E,OAAO,EAACC,EAAgB,KAAA,CAAK,YAAU,SAAS,GAAI,GAAS,CAI/D,SAAS,EAAY,CAAE,GAAG,GAA6D,CACrF,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,GAAS,CAItE,SAAS,EAAY,CAAE,GAAG,GAA6D,CACrF,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,GAAI,GAAS,CAQtE,SAAS,EAAc,CACrB,YACA,OAAO,UACP,WACA,GAAG,GAIF,CACD,OACE,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,YAAW,EACX,UAAW,EACT,2CACA,6CACA,yCACA,sCACA,2CAGA,0CACA,uCACA,uBACA,kCAGA,6CACA,2CACA,2BACA,sCACA,8BACA,sBAGA,mCACA,8BACA,gCACA,2CACA,4BACA,mDACA,uDACA,kDAGA,4CACA,0CACA,kCACA,0CACA,mCAGA,+BACA,+BACA,mCACA,uBACA,oCAGA,mBACA,8BACA,uCACA,sDACA,EACD,CACD,GAAI,YAEH,EACD,EAACA,EAAgB,KAAA,CAAK,QAAA,YACpB,EAAC,EAAA,CAAgB,KAAM,GAAI,QAAS,IAAM,EACrB,CAAA,EACC,CAK9B,SAAS,EAAc,CAAE,YAAW,WAAU,WAAW,SAAU,GAAG,GAA+D,CACnI,OACE,EAACA,EAAgB,OAAA,CAAA,SACf,EAACA,EAAgB,QAAA,CACf,YAAU,iBACV,UAAW,EACT,yGACA,WACA,mCACA,mDAEA,+BACA,4BAEA,kCACA,+BAEA,yCACA,yCACA,yCACA,yCAEA,IAAa,UAAY,mCACzB,IAAa,UAAY,kCACzB,IAAa,UAAY,kCACzB,IAAa,UAAY,iCACzB,EACD,CACS,WACV,GAAI,WAEJ,EAACA,EAAgB,SAAA,CACf,UAAW,EACT,MACA,IAAa,UAAY,qBACzB,IAAa,UAAY,oCACzB,IAAa,UAAY,uCAC1B,CAEA,YACwB,EACH,CAAA,CACH,CAK7B,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OAAO,EAACA,EAAgB,MAAA,CAAM,YAAU,eAAe,UAAW,EAAG,8CAA+C,EAAU,CAAE,GAAI,GAAS,CAI/I,SAAS,EAAW,CAAE,YAAW,WAAU,GAAG,GAA4D,CACxG,OACE,EAACA,EAAgB,KAAA,CACf,YAAU,cACV,UAAW,EACT,yCACA,iCACA,SACA,gDACA,8CAEA,kBACA,uBAEA,2BACA,oCAEA,8BACA,mBACA,uCACA,wDAEA,qBACA,6BACA,sBACA,EACD,CACD,GAAI,YAEJ,EAACA,EAAgB,SAAA,CAAU,WAAA,CAAoC,CAC/D,EAAC,OAAA,CAAK,UAAU,sEACd,EAACA,EAAgB,cAAA,CAAA,SACf,EAAC,EAAA,CAAU,KAAM,GAAA,CAAM,CAAA,CACO,EAC3B,CAAA,EACc,CAK3B,SAAS,EAAgB,CAAE,YAAW,GAAG,GAAiE,CACxG,OAAO,EAACA,EAAgB,UAAA,CAAU,YAAU,mBAAmB,UAAW,EAAG,qDAAsD,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{cn as t}from"@customafk/react-toolkit/utils";import{Separator as n}from"radix-ui";function r({className:r,orientation:i=`horizontal`,decorative:a=!0,...o}){return e(n.Root,{"data-slot":`separator`,decorative:a,orientation:i,className:t(`bg-border-weak shrink-0`,`data-[orientation=horizontal]:h-px`,`data-[orientation=horizontal]:w-full`,`data-[orientation=vertical]:h-full`,`data-[orientation=vertical]:w-px`,r),...o})}export{r as t};
|
|
2
|
+
//# sourceMappingURL=separator-BMsbHAVt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator-BMsbHAVt.mjs","names":["Separator","SeparatorPrimitive"],"sources":["../packages/components/ui/separator.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\n\n/**\n * Thin visual divider built on Radix UI's Separator primitive, supporting horizontal and vertical orientations.\n *\n * @example\n * ```tsx\n * import { Separator } from '@customafk/lunas-ui/ui/separator';\n *\n * <div className=\"space-y-4\">\n * <p>Section one</p>\n * <Separator />\n * <p>Section two</p>\n * </div>\n *\n * <div className=\"flex h-8 items-center gap-4\">\n * <span>Left</span>\n * <Separator orientation=\"vertical\" />\n * <span>Right</span>\n * </div>\n * ```\n */\nfunction Separator({ className, orientation = 'horizontal', decorative = true, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border-weak shrink-0',\n 'data-[orientation=horizontal]:h-px',\n 'data-[orientation=horizontal]:w-full',\n 'data-[orientation=vertical]:h-full',\n 'data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":"iIAyBA,SAASA,EAAU,CAAE,YAAW,cAAc,aAAc,aAAa,GAAM,GAAG,GAA+D,CAC/I,OACE,EAACC,EAAmB,KAAA,CAClB,YAAU,YACE,aACC,cACb,UAAW,EACT,0BACA,qCACA,uCACA,qCACA,mCACA,EACD,CACD,GAAI,GACJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(
|
|
2
|
-
//# sourceMappingURL=separator-
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react/jsx-runtime`),n=require(`@customafk/react-toolkit/utils`),r=require(`radix-ui`);function i({className:e,orientation:i=`horizontal`,decorative:a=!0,...o}){return(0,t.jsx)(r.Separator.Root,{"data-slot":`separator`,decorative:a,orientation:i,className:(0,n.cn)(`bg-border-weak shrink-0`,`data-[orientation=horizontal]:h-px`,`data-[orientation=horizontal]:w-full`,`data-[orientation=vertical]:h-full`,`data-[orientation=vertical]:w-px`,e),...o})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
|
2
|
+
//# sourceMappingURL=separator-BwZb12bh.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator-BwZb12bh.cjs","names":["SeparatorPrimitive"],"sources":["../packages/components/ui/separator.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\n\n/**\n * Thin visual divider built on Radix UI's Separator primitive, supporting horizontal and vertical orientations.\n *\n * @example\n * ```tsx\n * import { Separator } from '@customafk/lunas-ui/ui/separator';\n *\n * <div className=\"space-y-4\">\n * <p>Section one</p>\n * <Separator />\n * <p>Section two</p>\n * </div>\n *\n * <div className=\"flex h-8 items-center gap-4\">\n * <span>Left</span>\n * <Separator orientation=\"vertical\" />\n * <span>Right</span>\n * </div>\n * ```\n */\nfunction Separator({ className, orientation = 'horizontal', decorative = true, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border-weak shrink-0',\n 'data-[orientation=horizontal]:h-px',\n 'data-[orientation=horizontal]:w-full',\n 'data-[orientation=vertical]:h-full',\n 'data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"mappings":"6IAyBA,SAAS,EAAU,CAAE,YAAW,cAAc,aAAc,aAAa,GAAM,GAAG,GAA+D,CAC/I,OACE,EAAA,EAAA,KAACA,EAAAA,UAAmB,KAAA,CAClB,YAAU,YACE,aACC,cACb,WAAA,EAAA,EAAA,IACE,0BACA,qCACA,uCACA,qCACA,mCACA,EACD,CACD,GAAI,GACJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(
|
|
2
|
-
//# sourceMappingURL=sheet-
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`react/jsx-runtime`),r=require(`@customafk/react-toolkit/utils`),i=require(`radix-ui`);function a({...e}){return(0,n.jsx)(i.Dialog.Root,{"data-slot":`sheet`,...e})}function o({...e}){return(0,n.jsx)(i.Dialog.Trigger,{"data-slot":`sheet-trigger`,...e})}function s({...e}){return(0,n.jsx)(i.Dialog.Close,{"data-slot":`sheet-close`,...e})}function c({...e}){return(0,n.jsx)(i.Dialog.Portal,{"data-slot":`sheet-portal`,...e})}function l({className:e,...t}){return(0,n.jsx)(i.Dialog.Overlay,{"data-slot":`sheet-overlay`,className:(0,r.cn)(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=open]:fade-in-0`,e),...t})}function u({className:e,children:a,side:o=`right`,...s}){return(0,n.jsxs)(c,{children:[(0,n.jsx)(l,{}),(0,n.jsxs)(i.Dialog.Content,{"data-slot":`sheet-content`,className:(0,r.cn)(`bg-background`,`fixed z-50 flex flex-col gap-4 border-border-weak shadow-dropdown transition ease-in-out`,`data-[state=open]:animate-in`,`data-[state=open]:duration-500`,`data-[state=closed]:animate-out`,`data-[state=closed]:duration-300`,o===`right`&&`inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,o===`right`&&`data-[state=closed]:slide-out-to-right`,o===`right`&&`data-[state=open]:slide-in-from-right`,o===`left`&&`inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,o===`left`&&`data-[state=closed]:slide-out-to-left`,o===`left`&&`data-[state=open]:slide-in-from-left`,o===`top`&&`inset-x-0 top-0 h-auto border-b`,o===`top`&&`data-[state=closed]:slide-out-to-top`,o===`top`&&`data-[state=open]:slide-in-from-top`,o===`bottom`&&`inset-x-0 bottom-0 h-auto border-t`,o===`bottom`&&`data-[state=closed]:slide-out-to-bottom`,o===`bottom`&&`data-[state=open]:slide-in-from-bottom`,e),...s,children:[a,(0,n.jsxs)(i.Dialog.Close,{className:(0,r.cn)(`cursor-pointer p-2 ring-offset-background`,`absolute top-2 right-2 rounded-full opacity-70 transition-opacity`,`data-[state=open]:bg-secondary`,`disabled:pointer-events-none`,`hover:opacity-100`,`hover:bg-border-muted`,`focus:ring-border-weak`,`focus:ring-4`,`focus:outline-hidden`),children:[(0,n.jsx)(t.XIcon,{className:`size-5`}),(0,n.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function d({className:e,...t}){return(0,n.jsx)(`div`,{"data-slot":`sheet-header`,className:(0,r.cn)(`flex flex-0 flex-col gap-1.5 p-4`,e),...t})}function f({className:e,...t}){return(0,n.jsx)(`div`,{"data-slot":`sheet-footer`,className:(0,r.cn)(`mt-auto flex flex-0 flex-col gap-2 p-4`,e),...t})}function p({className:e,...t}){return(0,n.jsx)(i.Dialog.Title,{"data-slot":`sheet-title`,className:(0,r.cn)(`font-semibold text-text-positive-strong`,e),...t})}function m({className:e,...t}){return(0,n.jsx)(i.Dialog.Description,{"data-slot":`sheet-description`,className:(0,r.cn)(`text-sm text-text-positive-weak`,e),...t})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
2
|
+
//# sourceMappingURL=sheet-CaDXTx7n.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet-CaDXTx7n.cjs","names":["SheetPrimitive","XIcon"],"sources":["../packages/components/ui/sheet.tsx"],"sourcesContent":["'use client';\n\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog as SheetPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the Sheet panel — wraps all Sheet sub-components and manages open state.\n *\n * @example\n * ```tsx\n * import { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription } from '@customafk/lunas-ui/ui/sheet';\n *\n * <Sheet>\n * <SheetTrigger>Open</SheetTrigger>\n * <SheetContent side=\"right\">\n * <SheetHeader>\n * <SheetTitle>Settings</SheetTitle>\n * <SheetDescription>Manage your preferences.</SheetDescription>\n * </SheetHeader>\n * </SheetContent>\n * </Sheet>\n * ```\n */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Button or element that opens the Sheet when interacted with. */\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Button that programmatically closes the Sheet. */\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portals Sheet content outside the current DOM hierarchy. */\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Semi-transparent backdrop rendered behind the Sheet panel. */\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in',\n 'data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0',\n 'data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n );\n}\n\n/**\n * The sliding panel itself; renders on the specified `side` of the viewport and includes a built-in close button.\n */\nfunction SheetContent({\n className,\n children,\n side = 'right',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n /** Edge of the viewport from which the sheet slides in. */\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background',\n 'fixed z-50 flex flex-col gap-4 border-border-weak shadow-dropdown transition ease-in-out',\n\n 'data-[state=open]:animate-in',\n 'data-[state=open]:duration-500',\n 'data-[state=closed]:animate-out',\n 'data-[state=closed]:duration-300',\n\n side === 'right' && 'inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'right' && 'data-[state=closed]:slide-out-to-right',\n side === 'right' && 'data-[state=open]:slide-in-from-right',\n\n side === 'left' && 'inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'left' && 'data-[state=closed]:slide-out-to-left',\n side === 'left' && 'data-[state=open]:slide-in-from-left',\n\n side === 'top' && 'inset-x-0 top-0 h-auto border-b',\n side === 'top' && 'data-[state=closed]:slide-out-to-top',\n side === 'top' && 'data-[state=open]:slide-in-from-top',\n\n side === 'bottom' && 'inset-x-0 bottom-0 h-auto border-t',\n side === 'bottom' && 'data-[state=closed]:slide-out-to-bottom',\n side === 'bottom' && 'data-[state=open]:slide-in-from-bottom',\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close\n className={cn(\n 'cursor-pointer p-2 ring-offset-background',\n 'absolute top-2 right-2 rounded-full opacity-70 transition-opacity',\n 'data-[state=open]:bg-secondary',\n 'disabled:pointer-events-none',\n 'hover:opacity-100',\n 'hover:bg-border-muted',\n 'focus:ring-border-weak',\n 'focus:ring-4',\n 'focus:outline-hidden'\n )}\n >\n <XIcon className=\"size-5\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Padded container for the Sheet title and description at the top of the panel. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-header\" className={cn('flex flex-0 flex-col gap-1.5 p-4', className)} {...props} />;\n}\n\n/** Sticky footer area at the bottom of the Sheet panel, typically used for action buttons. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-footer\" className={cn('mt-auto flex flex-0 flex-col gap-2 p-4', className)} {...props} />;\n}\n\n/** Accessible title element for the Sheet, announced by screen readers on open. */\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return <SheetPrimitive.Title data-slot=\"sheet-title\" className={cn('font-semibold text-text-positive-strong', className)} {...props} />;\n}\n\n/** Accessible description element for the Sheet, providing supplemental context to the title. */\nfunction SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return <SheetPrimitive.Description data-slot=\"sheet-description\" className={cn('text-sm text-text-positive-weak', className)} {...props} />;\n}\n\nexport { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger };\n"],"mappings":"uKA0BA,SAAS,EAAM,CAAE,GAAG,GAA2D,CAC7E,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAe,KAAA,CAAK,YAAU,QAAQ,GAAI,GAAS,CAI7D,SAAS,EAAa,CAAE,GAAG,GAA8D,CACvF,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAe,QAAA,CAAQ,YAAU,gBAAgB,GAAI,GAAS,CAIxE,SAAS,EAAW,CAAE,GAAG,GAA4D,CACnF,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAe,MAAA,CAAM,YAAU,cAAc,GAAI,GAAS,CAIpE,SAAS,EAAY,CAAE,GAAG,GAA6D,CACrF,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAe,OAAA,CAAO,YAAU,eAAe,GAAI,GAAS,CAItE,SAAS,EAAa,CAAE,YAAW,GAAG,GAA8D,CAClG,OACE,EAAA,EAAA,KAACA,EAAAA,OAAe,QAAA,CACd,YAAU,gBACV,WAAA,EAAA,EAAA,IACE,iCACA,+BACA,kCACA,iCACA,8BACA,EACD,CACD,GAAI,GACJ,CAON,SAAS,EAAa,CACpB,YACA,WACA,OAAO,QACP,GAAG,GAIF,CACD,OACE,EAAA,EAAA,MAAC,EAAA,CAAA,SAAA,EACC,EAAA,EAAA,KAAC,EAAA,EAAA,CAAe,EAChB,EAAA,EAAA,MAACA,EAAAA,OAAe,QAAA,CACd,YAAU,gBACV,WAAA,EAAA,EAAA,IACE,gBACA,2FAEA,+BACA,iCACA,kCACA,mCAEA,IAAS,SAAW,sDACpB,IAAS,SAAW,yCACpB,IAAS,SAAW,wCAEpB,IAAS,QAAU,qDACnB,IAAS,QAAU,wCACnB,IAAS,QAAU,uCAEnB,IAAS,OAAS,kCAClB,IAAS,OAAS,uCAClB,IAAS,OAAS,sCAElB,IAAS,UAAY,qCACrB,IAAS,UAAY,0CACrB,IAAS,UAAY,yCACrB,EACD,CACD,GAAI,YAEH,GACD,EAAA,EAAA,MAACA,EAAAA,OAAe,MAAA,CACd,WAAA,EAAA,EAAA,IACE,4CACA,oEACA,iCACA,+BACA,oBACA,wBACA,yBACA,eACA,uBACD,YAED,EAAA,EAAA,KAACC,EAAAA,MAAAA,CAAM,UAAU,SAAA,CAAW,EAC5B,EAAA,EAAA,KAAC,OAAA,CAAK,UAAU,mBAAU,SAAY,CAAA,EACjB,CAAA,EACA,CAAA,CAAA,CACb,CAKlB,SAAS,EAAY,CAAE,YAAW,GAAG,GAAsC,CACzE,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,eAAe,WAAA,EAAA,EAAA,IAAc,mCAAoC,EAAU,CAAE,GAAI,GAAS,CAIlH,SAAS,EAAY,CAAE,YAAW,GAAG,GAAsC,CACzE,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,eAAe,WAAA,EAAA,EAAA,IAAc,yCAA0C,EAAU,CAAE,GAAI,GAAS,CAIxH,SAAS,EAAW,CAAE,YAAW,GAAG,GAA4D,CAC9F,OAAO,EAAA,EAAA,KAACD,EAAAA,OAAe,MAAA,CAAM,YAAU,cAAc,WAAA,EAAA,EAAA,IAAc,0CAA2C,EAAU,CAAE,GAAI,GAAS,CAIzI,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAkE,CAC1G,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAe,YAAA,CAAY,YAAU,oBAAoB,WAAA,EAAA,EAAA,IAAc,kCAAmC,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=sheet-
|
|
1
|
+
import{XIcon as e}from"lucide-react";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{cn as r}from"@customafk/react-toolkit/utils";import{Dialog as i}from"radix-ui";function a({...e}){return t(i.Root,{"data-slot":`sheet`,...e})}function o({...e}){return t(i.Trigger,{"data-slot":`sheet-trigger`,...e})}function s({...e}){return t(i.Close,{"data-slot":`sheet-close`,...e})}function c({...e}){return t(i.Portal,{"data-slot":`sheet-portal`,...e})}function l({className:e,...n}){return t(i.Overlay,{"data-slot":`sheet-overlay`,className:r(`fixed inset-0 z-50 bg-black/50`,`data-[state=open]:animate-in`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=open]:fade-in-0`,e),...n})}function u({className:a,children:o,side:s=`right`,...u}){return n(c,{children:[t(l,{}),n(i.Content,{"data-slot":`sheet-content`,className:r(`bg-background`,`fixed z-50 flex flex-col gap-4 border-border-weak shadow-dropdown transition ease-in-out`,`data-[state=open]:animate-in`,`data-[state=open]:duration-500`,`data-[state=closed]:animate-out`,`data-[state=closed]:duration-300`,s===`right`&&`inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,s===`right`&&`data-[state=closed]:slide-out-to-right`,s===`right`&&`data-[state=open]:slide-in-from-right`,s===`left`&&`inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,s===`left`&&`data-[state=closed]:slide-out-to-left`,s===`left`&&`data-[state=open]:slide-in-from-left`,s===`top`&&`inset-x-0 top-0 h-auto border-b`,s===`top`&&`data-[state=closed]:slide-out-to-top`,s===`top`&&`data-[state=open]:slide-in-from-top`,s===`bottom`&&`inset-x-0 bottom-0 h-auto border-t`,s===`bottom`&&`data-[state=closed]:slide-out-to-bottom`,s===`bottom`&&`data-[state=open]:slide-in-from-bottom`,a),...u,children:[o,n(i.Close,{className:r(`cursor-pointer p-2 ring-offset-background`,`absolute top-2 right-2 rounded-full opacity-70 transition-opacity`,`data-[state=open]:bg-secondary`,`disabled:pointer-events-none`,`hover:opacity-100`,`hover:bg-border-muted`,`focus:ring-border-weak`,`focus:ring-4`,`focus:outline-hidden`),children:[t(e,{className:`size-5`}),t(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function d({className:e,...n}){return t(`div`,{"data-slot":`sheet-header`,className:r(`flex flex-0 flex-col gap-1.5 p-4`,e),...n})}function f({className:e,...n}){return t(`div`,{"data-slot":`sheet-footer`,className:r(`mt-auto flex flex-0 flex-col gap-2 p-4`,e),...n})}function p({className:e,...n}){return t(i.Title,{"data-slot":`sheet-title`,className:r(`font-semibold text-text-positive-strong`,e),...n})}function m({className:e,...n}){return t(i.Description,{"data-slot":`sheet-description`,className:r(`text-sm text-text-positive-weak`,e),...n})}export{f as a,o as c,m as i,s as n,d as o,u as r,p as s,a as t};
|
|
2
|
+
//# sourceMappingURL=sheet-DMIqn1iv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet-DMIqn1iv.mjs","names":["SheetPrimitive"],"sources":["../packages/components/ui/sheet.tsx"],"sourcesContent":["'use client';\n\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog as SheetPrimitive } from 'radix-ui';\n\n/**\n * Root provider for the Sheet panel — wraps all Sheet sub-components and manages open state.\n *\n * @example\n * ```tsx\n * import { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription } from '@customafk/lunas-ui/ui/sheet';\n *\n * <Sheet>\n * <SheetTrigger>Open</SheetTrigger>\n * <SheetContent side=\"right\">\n * <SheetHeader>\n * <SheetTitle>Settings</SheetTitle>\n * <SheetDescription>Manage your preferences.</SheetDescription>\n * </SheetHeader>\n * </SheetContent>\n * </Sheet>\n * ```\n */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Button or element that opens the Sheet when interacted with. */\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Button that programmatically closes the Sheet. */\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portals Sheet content outside the current DOM hierarchy. */\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Semi-transparent backdrop rendered behind the Sheet panel. */\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in',\n 'data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0',\n 'data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n );\n}\n\n/**\n * The sliding panel itself; renders on the specified `side` of the viewport and includes a built-in close button.\n */\nfunction SheetContent({\n className,\n children,\n side = 'right',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n /** Edge of the viewport from which the sheet slides in. */\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background',\n 'fixed z-50 flex flex-col gap-4 border-border-weak shadow-dropdown transition ease-in-out',\n\n 'data-[state=open]:animate-in',\n 'data-[state=open]:duration-500',\n 'data-[state=closed]:animate-out',\n 'data-[state=closed]:duration-300',\n\n side === 'right' && 'inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'right' && 'data-[state=closed]:slide-out-to-right',\n side === 'right' && 'data-[state=open]:slide-in-from-right',\n\n side === 'left' && 'inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'left' && 'data-[state=closed]:slide-out-to-left',\n side === 'left' && 'data-[state=open]:slide-in-from-left',\n\n side === 'top' && 'inset-x-0 top-0 h-auto border-b',\n side === 'top' && 'data-[state=closed]:slide-out-to-top',\n side === 'top' && 'data-[state=open]:slide-in-from-top',\n\n side === 'bottom' && 'inset-x-0 bottom-0 h-auto border-t',\n side === 'bottom' && 'data-[state=closed]:slide-out-to-bottom',\n side === 'bottom' && 'data-[state=open]:slide-in-from-bottom',\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close\n className={cn(\n 'cursor-pointer p-2 ring-offset-background',\n 'absolute top-2 right-2 rounded-full opacity-70 transition-opacity',\n 'data-[state=open]:bg-secondary',\n 'disabled:pointer-events-none',\n 'hover:opacity-100',\n 'hover:bg-border-muted',\n 'focus:ring-border-weak',\n 'focus:ring-4',\n 'focus:outline-hidden'\n )}\n >\n <XIcon className=\"size-5\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Padded container for the Sheet title and description at the top of the panel. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-header\" className={cn('flex flex-0 flex-col gap-1.5 p-4', className)} {...props} />;\n}\n\n/** Sticky footer area at the bottom of the Sheet panel, typically used for action buttons. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-footer\" className={cn('mt-auto flex flex-0 flex-col gap-2 p-4', className)} {...props} />;\n}\n\n/** Accessible title element for the Sheet, announced by screen readers on open. */\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return <SheetPrimitive.Title data-slot=\"sheet-title\" className={cn('font-semibold text-text-positive-strong', className)} {...props} />;\n}\n\n/** Accessible description element for the Sheet, providing supplemental context to the title. */\nfunction SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return <SheetPrimitive.Description data-slot=\"sheet-description\" className={cn('text-sm text-text-positive-weak', className)} {...props} />;\n}\n\nexport { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger };\n"],"mappings":"6KA0BA,SAAS,EAAM,CAAE,GAAG,GAA2D,CAC7E,OAAO,EAACA,EAAe,KAAA,CAAK,YAAU,QAAQ,GAAI,GAAS,CAI7D,SAAS,EAAa,CAAE,GAAG,GAA8D,CACvF,OAAO,EAACA,EAAe,QAAA,CAAQ,YAAU,gBAAgB,GAAI,GAAS,CAIxE,SAAS,EAAW,CAAE,GAAG,GAA4D,CACnF,OAAO,EAACA,EAAe,MAAA,CAAM,YAAU,cAAc,GAAI,GAAS,CAIpE,SAAS,EAAY,CAAE,GAAG,GAA6D,CACrF,OAAO,EAACA,EAAe,OAAA,CAAO,YAAU,eAAe,GAAI,GAAS,CAItE,SAAS,EAAa,CAAE,YAAW,GAAG,GAA8D,CAClG,OACE,EAACA,EAAe,QAAA,CACd,YAAU,gBACV,UAAW,EACT,iCACA,+BACA,kCACA,iCACA,8BACA,EACD,CACD,GAAI,GACJ,CAON,SAAS,EAAa,CACpB,YACA,WACA,OAAO,QACP,GAAG,GAIF,CACD,OACE,EAAC,EAAA,CAAA,SAAA,CACC,EAAC,EAAA,EAAA,CAAe,CAChB,EAACA,EAAe,QAAA,CACd,YAAU,gBACV,UAAW,EACT,gBACA,2FAEA,+BACA,iCACA,kCACA,mCAEA,IAAS,SAAW,sDACpB,IAAS,SAAW,yCACpB,IAAS,SAAW,wCAEpB,IAAS,QAAU,qDACnB,IAAS,QAAU,wCACnB,IAAS,QAAU,uCAEnB,IAAS,OAAS,kCAClB,IAAS,OAAS,uCAClB,IAAS,OAAS,sCAElB,IAAS,UAAY,qCACrB,IAAS,UAAY,0CACrB,IAAS,UAAY,yCACrB,EACD,CACD,GAAI,YAEH,EACD,EAACA,EAAe,MAAA,CACd,UAAW,EACT,4CACA,oEACA,iCACA,+BACA,oBACA,wBACA,yBACA,eACA,uBACD,WAED,EAAC,EAAA,CAAM,UAAU,SAAA,CAAW,CAC5B,EAAC,OAAA,CAAK,UAAU,mBAAU,SAAY,CAAA,EACjB,CAAA,EACA,CAAA,CAAA,CACb,CAKlB,SAAS,EAAY,CAAE,YAAW,GAAG,GAAsC,CACzE,OAAO,EAAC,MAAA,CAAI,YAAU,eAAe,UAAW,EAAG,mCAAoC,EAAU,CAAE,GAAI,GAAS,CAIlH,SAAS,EAAY,CAAE,YAAW,GAAG,GAAsC,CACzE,OAAO,EAAC,MAAA,CAAI,YAAU,eAAe,UAAW,EAAG,yCAA0C,EAAU,CAAE,GAAI,GAAS,CAIxH,SAAS,EAAW,CAAE,YAAW,GAAG,GAA4D,CAC9F,OAAO,EAACA,EAAe,MAAA,CAAM,YAAU,cAAc,UAAW,EAAG,0CAA2C,EAAU,CAAE,GAAI,GAAS,CAIzI,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAkE,CAC1G,OAAO,EAACA,EAAe,YAAA,CAAY,YAAU,oBAAoB,UAAW,EAAG,kCAAmC,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./button-CwDT3m4m.cjs`),n=require(`./skeleton-BfMCjXYM.cjs`),r=require(`./tooltip-itUmYz9k.cjs`),i=require(`./separator-BwZb12bh.cjs`),a=require(`./sheet-CaDXTx7n.cjs`);let o=require(`lucide-react`),s=require(`react`),c=require(`react/jsx-runtime`),l=require(`@customafk/react-toolkit/utils`),u=require(`class-variance-authority`),d=require(`radix-ui`),f=require(`@customafk/react-toolkit/hooks/useMobile`);const p=`detail_dialog_sidebar_state`,m=3600*24*7,h=`20rem`,g=`18rem`,_=`3rem`,v=`p`,y=(0,s.createContext)(null);function b(){let e=(0,s.use)(y);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function x({defaultOpen:e=!0,open:t,onOpenChange:n,className:i,style:a,children:o,...u}){let d=(0,f.useIsMobile)(),[p,m]=(0,s.useState)(!1),[h,g]=(0,s.useState)(e),_=t??h,v=(0,s.useCallback)(e=>{let t=typeof e==`function`?e(_):e;n?n(t):g(t),document.cookie=`detail_dialog_sidebar_state=${t}; path=/; max-age=604800`},[n,_]),b=(0,s.useCallback)(()=>d?m(e=>!e):v(e=>!e),[d,v]);(0,s.useEffect)(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let x=_?`expanded`:`collapsed`,S=(0,s.useMemo)(()=>({state:x,isMobile:d,toggleSidebar:b,open:_,setOpen:v,openMobile:p,setOpenMobile:m}),[x,d,_,v,p,b]);return(0,c.jsx)(y.Provider,{value:S,children:(0,c.jsx)(r.r,{delayDuration:0,children:(0,c.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`20rem`,"--sidebar-width-icon":`3rem`,...a},className:(0,l.cn)(`group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar`,i),...u,children:o})})})}function S({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...o}){let{state:s,isMobile:u,openMobile:d,setOpenMobile:f}=b();return n===`none`?(0,c.jsx)(`div`,{"data-slot":`sidebar`,className:(0,l.cn)(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),...o,children:i}):u?(0,c.jsx)(a.t,{open:d,onOpenChange:f,...o,children:(0,c.jsxs)(a.r,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[(0,c.jsxs)(a.o,{className:`sr-only`,children:[(0,c.jsx)(a.s,{children:`Sidebar`}),(0,c.jsx)(a.i,{children:`Displays the mobile sidebar.`})]}),(0,c.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):(0,c.jsxs)(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-state":s,"data-collapsible":s===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[(0,c.jsx)(`div`,{"data-slot":`sidebar-gap`,className:(0,l.cn)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),(0,c.jsx)(`div`,{"data-slot":`sidebar-container`,className:(0,l.cn)(`absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,r),...o,children:(0,c.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:(0,l.cn)(`flex size-full flex-col shadow-nav`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:i})})]})}function C({className:e,onClick:n,...r}){let{toggleSidebar:i}=b();return(0,c.jsxs)(t.t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`secondary`,size:`icon`,className:(0,l.cn)(`size-10 rounded-full [&_svg]:size-6!`,e),onClick:e=>{n?.(e),i()},...r,children:[(0,c.jsx)(o.MenuIcon,{}),(0,c.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function w({className:e,...t}){let{toggleSidebar:n}=b();return(0,c.jsx)(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:n,title:`Toggle Sidebar`,className:(0,l.cn)(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex`,`after:absolute after:inset-y-0 after:left-1/2 after:w-0.5`,`hover:after:bg-sidebar-border`,`group-data-[side=left]:-right-4 group-data-[side=right]:left-0`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar`,`group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...t})}function T({className:e,...t}){return(0,c.jsx)(`main`,{"data-slot":`sidebar-inset`,className:(0,l.cn)(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0`,`md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,e),...t})}function E({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:(0,l.cn)(`flex flex-col gap-2 p-2`,e),...t})}function D({className:e,children:t,...n}){let{open:r}=b();return(0,c.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:(0,l.cn)(`flex flex-col gap-2 p-2`,e),...n,children:(0,c.jsxs)(P,{children:[r&&(0,c.jsx)(F,{children:t}),(0,c.jsx)(F,{children:(0,c.jsxs)(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:[`Copyright © `,new Date().getFullYear(),`, Lunas.`]})})]})})}function O({className:e,...t}){return(0,c.jsx)(i.t,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:(0,l.cn)(`mx-2 w-auto bg-sidebar-border`,e),...t})}function k({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:(0,l.cn)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function A({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:(0,l.cn)(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function j({className:e,asChild:t=!1,...n}){return(0,c.jsx)(t?d.Slot.Slot:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:(0,l.cn)(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),...n})}function M({className:e,asChild:t=!1,...n}){return(0,c.jsx)(t?d.Slot.Slot:`button`,{"data-slot":`sidebar-group-action`,"data-sidebar":`group-action`,className:(0,l.cn)(`absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`group-data-[collapsible=icon]:hidden`,e),...n})}function N({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:(0,l.cn)(`w-full text-sm`,e),...t})}function P({className:e,...t}){return(0,c.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:(0,l.cn)(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function F({className:e,...t}){return(0,c.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:(0,l.cn)(`group/menu-item relative`,e),...t})}const I=(0,u.cva)([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!`,`[&>svg]:size-4 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function L({asChild:e=!1,isActive:t=!1,variant:n=`default`,size:i=`default`,tooltip:a,className:o,...s}){let u=e?d.Slot.Slot:`button`,{state:f}=b(),p=(0,c.jsx)(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":i,"data-active":t,className:(0,l.cn)(I({variant:n,size:i}),o),...s});return a?(typeof a==`string`&&(a={children:a}),(0,c.jsxs)(r.t,{children:[(0,c.jsx)(r.i,{asChild:!0,children:p}),(0,c.jsx)(r.n,{side:`right`,align:`center`,hidden:f!==`collapsed`,...a})]})):p}function R({className:e,asChild:t=!1,showOnHover:n=!1,...r}){return(0,c.jsx)(t?d.Slot.Slot:`button`,{"data-slot":`sidebar-menu-action`,"data-sidebar":`menu-action`,className:(0,l.cn)(`absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden`,`text-sidebar-foreground ring-sidebar-ring`,`transition-[background-color,color,opacity]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`peer-hover/menu-button:text-sidebar-accent-foreground`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,n&&`peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,n&&`group-focus-within/menu-item:opacity-100`,n&&`group-hover/menu-item:opacity-100`,n&&`data-[state=open]:opacity-100 md:opacity-0`,e),...r})}function z({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:(0,l.cn)(`pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function B({className:e,showIcon:t=!1,...r}){let i=(0,s.useMemo)(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return(0,c.jsxs)(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:(0,l.cn)(`flex h-8 items-center gap-2 rounded-md px-2`,e),...r,children:[t&&(0,c.jsx)(n.t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),(0,c.jsx)(n.t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function V({className:e,...t}){return(0,c.jsx)(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:(0,l.cn)(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function H({className:e,...t}){return(0,c.jsx)(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:(0,l.cn)(`group/menu-sub-item relative`,e),...t})}function U({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return(0,c.jsx)(e?d.Slot.Slot:`a`,{"data-slot":`sidebar-menu-sub-button`,"data-sidebar":`menu-sub-button`,"data-size":t,"data-active":n,className:(0,l.cn)(`text-sidebar-foreground ring-sidebar-ring`,`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden`,`transition-[background-color,color]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:hidden`,`[&>span:last-child]:truncate`,`[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,r),...i})}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return C}});
|
|
2
|
+
//# sourceMappingURL=sidebar-C27_pwLR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-C27_pwLR.cjs","names":["open","TooltipProvider","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","Button","MenuIcon","Separator","SlotPrimitive","Tooltip","TooltipTrigger","TooltipContent","Skeleton"],"sources":["../packages/components/dialogs/detail-dialog/components/sidebar.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detail_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '20rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n /** Current visual state of the sidebar. */\n state: 'expanded' | 'collapsed';\n /** Whether the sidebar is open on desktop. */\n open: boolean;\n /** Setter for the desktop open state. */\n setOpen: (open: boolean) => void;\n /** Whether the sidebar sheet is open on mobile. */\n openMobile: boolean;\n /** Setter for the mobile open state. */\n setOpenMobile: (open: boolean) => void;\n /** `true` when the viewport is considered mobile-sized. */\n isMobile: boolean;\n /** Toggles the sidebar between expanded and collapsed. */\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = use(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\n/**\n * Context provider that manages sidebar open/collapsed state and persists it via a cookie.\n *\n * @example\n * ```tsx\n * import { SidebarProvider } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <SidebarProvider defaultOpen={true}>\n * <Sidebar collapsible=\"icon\">{...}</Sidebar>\n * </SidebarProvider>\n * ```\n */\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, isMobile, toggleSidebar, open, setOpen, openMobile, setOpenMobile }),\n [state, isMobile, open, setOpen, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/**\n * Responsive sidebar container that supports desktop icon-collapse and a mobile Sheet overlay.\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <Sidebar collapsible=\"icon\" side=\"left\">\n * {children}\n * </Sidebar>\n * ```\n */\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Which edge the sidebar is anchored to. Defaults to `'left'`. */\n side?: 'left' | 'right';\n /** Visual style variant of the sidebar. Defaults to `'sidebar'`. */\n variant?: 'sidebar' | 'floating' | 'inset';\n /** Collapse behaviour — slides off-canvas, shrinks to icon strip, or stays fixed. Defaults to `'offcanvas'`. */\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'flex size-full flex-col shadow-nav',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Icon button that toggles the detail-dialog sidebar open or collapsed.\n *\n * @example\n * ```tsx\n * import { DetailDialogSidebarTrigger } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <DetailDialogSidebarTrigger />\n * ```\n */\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:size-6!', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, children, ...props }: React.ComponentProps<'div'>) {\n const { open } = useSidebar();\n return (\n <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props}>\n <DetailDialogSidebarMenu>\n {open && <DetailDialogSidebarMenuItem>{children}</DetailDialogSidebarMenuItem>}\n <DetailDialogSidebarMenuItem>\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">Copyright © {new Date().getFullYear()}, Lunas.</p>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </div>\n );\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden',\n 'text-sidebar-foreground ring-sidebar-ring',\n 'transition-[background-color,color,opacity]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && 'group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'transition-[background-color,color]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInset,\n SidebarProvider,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./button-C6ybzxxj.mjs";import{t}from"./skeleton-BPxcW2yu.mjs";import{i as n,n as r,r as i,t as a}from"./tooltip-Bj0iOG4s.mjs";import{t as o}from"./separator-BMsbHAVt.mjs";import{i as s,o as c,r as l,s as u,t as d}from"./sheet-DMIqn1iv.mjs";import{MenuIcon as f}from"lucide-react";import{createContext as p,use as m,useCallback as h,useEffect as g,useMemo as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{cn as x}from"@customafk/react-toolkit/utils";import{cva as S}from"class-variance-authority";import{Slot as C}from"radix-ui";import{useIsMobile as w}from"@customafk/react-toolkit/hooks/useMobile";const T=p(null);function E(){let e=m(T);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function D({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:a,children:o,...s}){let c=w(),[l,u]=v(!1),[d,f]=v(e),p=t??d,m=h(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`detail_dialog_sidebar_state=${t}; path=/; max-age=604800`},[n,p]),b=h(()=>c?u(e=>!e):m(e=>!e),[c,m]);g(()=>{let e=e=>{e.key===`p`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[b]);let S=p?`expanded`:`collapsed`,C=_(()=>({state:S,isMobile:c,toggleSidebar:b,open:p,setOpen:m,openMobile:l,setOpenMobile:u}),[S,c,p,m,l,b]);return y(T.Provider,{value:C,children:y(i,{delayDuration:0,children:y(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":`20rem`,"--sidebar-width-icon":`3rem`,...a},className:x(`group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar`,r),...s,children:o})})})}function O({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...a}){let{state:o,isMobile:f,openMobile:p,setOpenMobile:m}=E();return n===`none`?y(`div`,{"data-slot":`sidebar`,className:x(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),...a,children:i}):f?y(d,{open:p,onOpenChange:m,...a,children:b(l,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden`,style:{"--sidebar-width":`18rem`},side:e,children:[b(c,{className:`sr-only`,children:[y(u,{children:`Sidebar`}),y(s,{children:`Displays the mobile sidebar.`})]}),y(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):b(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-state":o,"data-collapsible":o===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[y(`div`,{"data-slot":`sidebar-gap`,className:x(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),y(`div`,{"data-slot":`sidebar-container`,className:x(`absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,r),...a,children:y(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:x(`flex size-full flex-col shadow-nav`,`group-data-[variant=floating]:rounded-lg`,`group-data-[variant=floating]:border`,`group-data-[variant=floating]:border-sidebar-border`,`group-data-[variant=floating]:shadow-sm`),children:i})})]})}function k({className:t,onClick:n,...r}){let{toggleSidebar:i}=E();return b(e,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`secondary`,size:`icon`,className:x(`size-10 rounded-full [&_svg]:size-6!`,t),onClick:e=>{n?.(e),i()},...r,children:[y(f,{}),y(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function A({className:e,...t}){let{toggleSidebar:n}=E();return y(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:n,title:`Toggle Sidebar`,className:x(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex`,`after:absolute after:inset-y-0 after:left-1/2 after:w-0.5`,`hover:after:bg-sidebar-border`,`group-data-[side=left]:-right-4 group-data-[side=right]:left-0`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar`,`group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...t})}function j({className:e,...t}){return y(`main`,{"data-slot":`sidebar-inset`,className:x(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0`,`md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,e),...t})}function M({className:e,...t}){return y(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:x(`flex flex-col gap-2 p-2`,e),...t})}function N({className:e,children:t,...n}){let{open:r}=E();return y(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:x(`flex flex-col gap-2 p-2`,e),...n,children:b(B,{children:[r&&y(V,{children:t}),y(V,{children:b(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:[`Copyright © `,new Date().getFullYear(),`, Lunas.`]})})]})})}function P({className:e,...t}){return y(o,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:x(`mx-2 w-auto bg-sidebar-border`,e),...t})}function F({className:e,...t}){return y(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:x(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function I({className:e,...t}){return y(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:x(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function L({className:e,asChild:t=!1,...n}){return y(t?C.Slot:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:x(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),...n})}function R({className:e,asChild:t=!1,...n}){return y(t?C.Slot:`button`,{"data-slot":`sidebar-group-action`,"data-sidebar":`group-action`,className:x(`absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`group-data-[collapsible=icon]:hidden`,e),...n})}function z({className:e,...t}){return y(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:x(`w-full text-sm`,e),...t})}function B({className:e,...t}){return y(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:x(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function V({className:e,...t}){return y(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:x(`group/menu-item relative`,e),...t})}const H=S([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!`,`[&>svg]:size-4 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function U({asChild:e=!1,isActive:t=!1,variant:i=`default`,size:o=`default`,tooltip:s,className:c,...l}){let u=e?C.Slot:`button`,{state:d}=E(),f=y(u,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":o,"data-active":t,className:x(H({variant:i,size:o}),c),...l});return s?(typeof s==`string`&&(s={children:s}),b(a,{children:[y(n,{asChild:!0,children:f}),y(r,{side:`right`,align:`center`,hidden:d!==`collapsed`,...s})]})):f}function W({className:e,asChild:t=!1,showOnHover:n=!1,...r}){return y(t?C.Slot:`button`,{"data-slot":`sidebar-menu-action`,"data-sidebar":`menu-action`,className:x(`absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden`,`text-sidebar-foreground ring-sidebar-ring`,`transition-[background-color,color,opacity]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`peer-hover/menu-button:text-sidebar-accent-foreground`,`[&>svg]:size-4 [&>svg]:shrink-0`,`after:absolute after:-inset-2 md:after:hidden`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,n&&`peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,n&&`group-focus-within/menu-item:opacity-100`,n&&`group-hover/menu-item:opacity-100`,n&&`data-[state=open]:opacity-100 md:opacity-0`,e),...r})}function G({className:e,...t}){return y(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:x(`pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function K({className:e,showIcon:n=!1,...r}){let i=_(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return b(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:x(`flex h-8 items-center gap-2 rounded-md px-2`,e),...r,children:[n&&y(t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),y(t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function q({className:e,...t}){return y(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:x(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),...t})}function J({className:e,...t}){return y(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:x(`group/menu-sub-item relative`,e),...t})}function Y({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return y(e?C.Slot:`a`,{"data-slot":`sidebar-menu-sub-button`,"data-sidebar":`menu-sub-button`,"data-size":t,"data-active":n,className:x(`text-sidebar-foreground ring-sidebar-ring`,`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden`,`transition-[background-color,color]`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:hidden`,`[&>span:last-child]:truncate`,`[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,r),...i})}export{E as C,D as S,A as _,z as a,O as b,B as c,U as d,V as f,J as g,Y as h,R as i,W as l,q as m,N as n,L as o,K as p,I as r,M as s,F as t,G as u,P as v,j as x,k as y};
|
|
2
|
+
//# sourceMappingURL=sidebar-meLttL0V.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-meLttL0V.mjs","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/components/sidebar.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MenuIcon } from 'lucide-react';\n\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\n\nconst SIDEBAR_COOKIE_NAME = 'detail_dialog_sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '20rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p';\n\ntype SidebarContextProps = {\n /** Current visual state of the sidebar. */\n state: 'expanded' | 'collapsed';\n /** Whether the sidebar is open on desktop. */\n open: boolean;\n /** Setter for the desktop open state. */\n setOpen: (open: boolean) => void;\n /** Whether the sidebar sheet is open on mobile. */\n openMobile: boolean;\n /** Setter for the mobile open state. */\n setOpenMobile: (open: boolean) => void;\n /** `true` when the viewport is considered mobile-sized. */\n isMobile: boolean;\n /** Toggles the sidebar between expanded and collapsed. */\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = use(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\n/**\n * Context provider that manages sidebar open/collapsed state and persists it via a cookie.\n *\n * @example\n * ```tsx\n * import { SidebarProvider } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <SidebarProvider defaultOpen={true}>\n * <Sidebar collapsible=\"icon\">{...}</Sidebar>\n * </SidebarProvider>\n * ```\n */\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n const [_open, _setOpen] = useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n // biome-ignore lint/suspicious/noDocumentCookie: persists sidebar state across page loads\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({ state, isMobile, toggleSidebar, open, setOpen, openMobile, setOpenMobile }),\n [state, isMobile, open, setOpen, openMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper flex h-full min-h-[85dvh] w-full items-start has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\n/**\n * Responsive sidebar container that supports desktop icon-collapse and a mobile Sheet overlay.\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <Sidebar collapsible=\"icon\" side=\"left\">\n * {children}\n * </Sidebar>\n * ```\n */\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Which edge the sidebar is anchored to. Defaults to `'left'`. */\n side?: 'left' | 'right';\n /** Visual style variant of the sidebar. Defaults to `'sidebar'`. */\n variant?: 'sidebar' | 'floating' | 'inset';\n /** Collapse behaviour — slides off-canvas, shrinks to icon strip, or stays fixed. Defaults to `'offcanvas'`. */\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)} {...props}>\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"z-20 hidden w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground shadow-nav md:flex [&>button]:hidden\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-(--sidebar-width) shadow-nav transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'flex size-full flex-col shadow-nav',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:shadow-sm'\n )}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Icon button that toggles the detail-dialog sidebar open or collapsed.\n *\n * @example\n * ```tsx\n * import { DetailDialogSidebarTrigger } from '@customafk/lunas-ui/dialogs/detail-dialog/components/sidebar';\n *\n * <DetailDialogSidebarTrigger />\n * ```\n */\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:size-6!', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarFooter({ className, children, ...props }: React.ComponentProps<'div'>) {\n const { open } = useSidebar();\n return (\n <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props}>\n <DetailDialogSidebarMenu>\n {open && <DetailDialogSidebarMenuItem>{children}</DetailDialogSidebarMenuItem>}\n <DetailDialogSidebarMenuItem>\n <p className=\"pt-2 text-center text-xs text-text-positive-subtle\">Copyright © {new Date().getFullYear()}, Lunas.</p>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </div>\n );\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('mx-2 w-auto bg-sidebar-border', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-[background-color,color,transform]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />;\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'truncate text-left font-normal',\n 'transition-[color,background-color,width,height,padding]',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted data-[active=true]:font-normal data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n const { state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n if (typeof tooltip === 'string') {\n tooltip = { children: tooltip };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button';\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden',\n 'text-sidebar-foreground ring-sidebar-ring',\n 'transition-[background-color,color,opacity]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && 'group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums transition-colors',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<'div'> & { showIcon?: boolean }) {\n const width = useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={{ '--skeleton-width': width } as React.CSSProperties}\n />\n </div>\n );\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />;\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a';\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'transition-[background-color,color]',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInset,\n SidebarProvider,\n // biome-ignore lint/style/useComponentExportOnlyModules: true\n useSidebar,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{cn as t}from"@customafk/react-toolkit/utils";function n({className:n,...r}){return e(`div`,{"data-slot":`skeleton`,className:t(`animate-pulse rounded-md bg-muted-muted`,n),...r})}export{n as t};
|
|
2
|
+
//# sourceMappingURL=skeleton-BPxcW2yu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton-BPxcW2yu.mjs","names":[],"sources":["../packages/components/ui/skeleton.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\n/**\n * Animated pulse placeholder used to indicate loading state for text, images, or other UI elements.\n *\n * @example\n * ```tsx\n * import { Skeleton } from '@customafk/lunas-ui/ui/skeleton';\n *\n * <div className=\"flex items-center gap-4\">\n * <Skeleton className=\"size-10 rounded-full\" />\n * <div className=\"space-y-2\">\n * <Skeleton className=\"h-4 w-40\" />\n * <Skeleton className=\"h-4 w-24\" />\n * </div>\n * </div>\n * ```\n */\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('animate-pulse rounded-md bg-muted-muted', className)} {...props} />;\n}\n\nexport { Skeleton };\n"],"mappings":"4FAoBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,OAAO,EAAC,MAAA,CAAI,YAAU,WAAW,UAAW,EAAG,0CAA2C,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react/jsx-runtime`),n=require(`@customafk/react-toolkit/utils`);function r({className:e,...r}){return(0,t.jsx)(`div`,{"data-slot":`skeleton`,className:(0,n.cn)(`animate-pulse rounded-md bg-muted-muted`,e),...r})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
2
|
+
//# sourceMappingURL=skeleton-BfMCjXYM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton-BfMCjXYM.cjs","names":[],"sources":["../packages/components/ui/skeleton.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\n/**\n * Animated pulse placeholder used to indicate loading state for text, images, or other UI elements.\n *\n * @example\n * ```tsx\n * import { Skeleton } from '@customafk/lunas-ui/ui/skeleton';\n *\n * <div className=\"flex items-center gap-4\">\n * <Skeleton className=\"size-10 rounded-full\" />\n * <div className=\"space-y-2\">\n * <Skeleton className=\"h-4 w-40\" />\n * <Skeleton className=\"h-4 w-24\" />\n * </div>\n * </div>\n * ```\n */\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('animate-pulse rounded-md bg-muted-muted', className)} {...props} />;\n}\n\nexport { Skeleton };\n"],"mappings":"uHAoBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,WAAW,WAAA,EAAA,EAAA,IAAc,0CAA2C,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Loader2Icon as e}from"lucide-react";import{jsx as t}from"react/jsx-runtime";import{cn as n}from"@customafk/react-toolkit/utils";function r({className:r,...i}){return t(e,{role:`status`,"aria-label":`Loading`,className:n(`size-4 animate-spin`,r),...i})}export{r as t};
|
|
2
|
+
//# sourceMappingURL=spinner-EgMJOaQi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-EgMJOaQi.mjs","names":[],"sources":["../packages/components/ui/spinner.tsx"],"sourcesContent":["import { Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\n/**\n * Spinning loading indicator rendered as an animated `Loader2Icon` SVG with an accessible `role=\"status\"` and `aria-label`.\n *\n * @example\n * ```tsx\n * import { Spinner } from '@customafk/lunas-ui/ui/spinner';\n *\n * <Spinner className=\"size-6 text-primary\" />\n *\n * <Button disabled>\n * <Spinner /> Saving…\n * </Button>\n * ```\n */\nfunction Spinner({ className, ...props }: React.ComponentProps<'svg'>) {\n return <Loader2Icon role=\"status\" aria-label=\"Loading\" className={cn('size-4 animate-spin', className)} {...props} />;\n}\n\nexport { Spinner };\n"],"mappings":"uIAkBA,SAAS,EAAQ,CAAE,YAAW,GAAG,GAAsC,CACrE,OAAO,EAAC,EAAA,CAAY,KAAK,SAAS,aAAW,UAAU,UAAW,EAAG,sBAAuB,EAAU,CAAE,GAAI,GAAS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`react/jsx-runtime`),r=require(`@customafk/react-toolkit/utils`);function i({className:e,...i}){return(0,n.jsx)(t.Loader2Icon,{role:`status`,"aria-label":`Loading`,className:(0,r.cn)(`size-4 animate-spin`,e),...i})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
|
|
2
|
+
//# sourceMappingURL=spinner-MKXqwF9G.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-MKXqwF9G.cjs","names":["Loader2Icon"],"sources":["../packages/components/ui/spinner.tsx"],"sourcesContent":["import { Loader2Icon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\n/**\n * Spinning loading indicator rendered as an animated `Loader2Icon` SVG with an accessible `role=\"status\"` and `aria-label`.\n *\n * @example\n * ```tsx\n * import { Spinner } from '@customafk/lunas-ui/ui/spinner';\n *\n * <Spinner className=\"size-6 text-primary\" />\n *\n * <Button disabled>\n * <Spinner /> Saving…\n * </Button>\n * ```\n */\nfunction Spinner({ className, ...props }: React.ComponentProps<'svg'>) {\n return <Loader2Icon role=\"status\" aria-label=\"Loading\" className={cn('size-4 animate-spin', className)} {...props} />;\n}\n\nexport { Spinner };\n"],"mappings":"iJAkBA,SAAS,EAAQ,CAAE,YAAW,GAAG,GAAsC,CACrE,OAAO,EAAA,EAAA,KAACA,EAAAA,YAAAA,CAAY,KAAK,SAAS,aAAW,UAAU,WAAA,EAAA,EAAA,IAAc,sBAAuB,EAAU,CAAE,GAAI,GAAS"}
|
package/dist/systems/google.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`react
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`),r=require(`@react-oauth/google`);const i=({isDisabled:e,onGoogleLoginSuccess:n})=>((0,r.useGoogleOneTapLogin)({disabled:e,use_fedcm_for_prompt:!1,onSuccess:(0,t.useCallback)(async e=>{!e.clientId||!e.credential||!e.select_by||await n?.({clientId:e.clientId,credential:e.credential,select_by:e.select_by})},[n])}),null),a=({clientId:e,isDisabled:t,onGoogleLoginSuccess:a,children:o})=>(0,n.jsxs)(r.GoogleOAuthProvider,{clientId:e,children:[o,(0,n.jsx)(i,{isDisabled:t,onGoogleLoginSuccess:a})]});var o=a;exports.Google=i,exports.default=o;
|
|
2
2
|
//# sourceMappingURL=google.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.cjs","names":["Google: React.FC<GoogleProps>","ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>>","GoogleOAuthProvider"],"sources":["../../packages/components/systems/google.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { type CredentialResponse, GoogleOAuthProvider, useGoogleOneTapLogin } from '@react-oauth/google';\n\ntype GoogleProps = {\n isDisabled: boolean;\n onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;\n};\nexport const Google: React.FC<GoogleProps> = ({ isDisabled, onGoogleLoginSuccess }) => {\n const handleSignIn = useCallback(\n async (response: CredentialResponse) => {\n if (!response.clientId || !response.credential || !response.select_by) return;\n await onGoogleLoginSuccess?.({\n clientId: response.clientId,\n credential: response.credential,\n select_by: response.select_by,\n });\n },\n [onGoogleLoginSuccess]\n );\n useGoogleOneTapLogin({\n disabled: isDisabled,\n use_fedcm_for_prompt: false,\n onSuccess: handleSignIn,\n });\n return null;\n};\n\ntype ReactOAuthProps = {\n clientId: string;\n isDisabled: boolean;\n onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;\n};\nconst ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>> = ({ clientId, isDisabled, onGoogleLoginSuccess, children }) => {\n return (\n <GoogleOAuthProvider clientId={clientId}>\n {children}\n <Google isDisabled={isDisabled} onGoogleLoginSuccess={onGoogleLoginSuccess} />\n </GoogleOAuthProvider>\n );\n};\n\nexport default ReactOAuth;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"google.cjs","names":["Google: React.FC<GoogleProps>","ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>>","GoogleOAuthProvider"],"sources":["../../packages/components/systems/google.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { type CredentialResponse, GoogleOAuthProvider, useGoogleOneTapLogin } from '@react-oauth/google';\n\ntype GoogleProps = {\n /** When `true`, the Google One Tap prompt is suppressed and no login dialog is shown. */\n isDisabled: boolean;\n /** Callback invoked with the verified `CredentialResponse` after a successful Google sign-in. */\n onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;\n};\n\n/**\n * Headless component that activates Google One Tap login and forwards the credential response.\n *\n * Must be rendered inside a `GoogleOAuthProvider` (or use the default export {@link ReactOAuth}\n * which wraps this component automatically).\n *\n * @example\n * ```tsx\n * import { Google } from '@customafk/lunas-ui/systems/google';\n *\n * // Inside a GoogleOAuthProvider tree\n * <Google isDisabled={false} onGoogleLoginSuccess={(cred) => handleLogin(cred)} />\n * ```\n */\nexport const Google: React.FC<GoogleProps> = ({ isDisabled, onGoogleLoginSuccess }) => {\n const handleSignIn = useCallback(\n async (response: CredentialResponse) => {\n if (!response.clientId || !response.credential || !response.select_by) return;\n await onGoogleLoginSuccess?.({\n clientId: response.clientId,\n credential: response.credential,\n select_by: response.select_by,\n });\n },\n [onGoogleLoginSuccess]\n );\n useGoogleOneTapLogin({\n disabled: isDisabled,\n use_fedcm_for_prompt: false,\n onSuccess: handleSignIn,\n });\n return null;\n};\n\ntype ReactOAuthProps = {\n /** Google OAuth 2.0 client ID from the Google Cloud Console. */\n clientId: string;\n /** When `true`, the Google One Tap prompt is suppressed. */\n isDisabled: boolean;\n /** Callback invoked with the verified `CredentialResponse` after a successful Google sign-in. */\n onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;\n};\n\n/**\n * Convenience wrapper that provides the `GoogleOAuthProvider` context and mounts the {@link Google}\n * One Tap component in a single step.\n *\n * @example\n * ```tsx\n * import ReactOAuth from '@customafk/lunas-ui/systems/google';\n *\n * <ReactOAuth\n * clientId=\"YOUR_GOOGLE_CLIENT_ID\"\n * isDisabled={false}\n * onGoogleLoginSuccess={(cred) => handleLogin(cred)}\n * >\n * <App />\n * </ReactOAuth>\n * ```\n */\nconst ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>> = ({ clientId, isDisabled, onGoogleLoginSuccess, children }) => {\n return (\n <GoogleOAuthProvider clientId={clientId}>\n {children}\n <Google isDisabled={isDisabled} onGoogleLoginSuccess={onGoogleLoginSuccess} />\n </GoogleOAuthProvider>\n );\n};\n\nexport default ReactOAuth;\n"],"mappings":"uLAyBA,MAAaA,GAAiC,CAAE,aAAY,4BAY1D,EAAA,EAAA,sBAAqB,CACnB,SAAU,EACV,qBAAsB,GACtB,WAAA,EAAA,EAAA,aAbA,KAAO,IAAiC,CAClC,CAAC,EAAS,UAAY,CAAC,EAAS,YAAc,CAAC,EAAS,WAC5D,MAAM,IAAuB,CAC3B,SAAU,EAAS,SACnB,WAAY,EAAS,WACrB,UAAW,EAAS,UACrB,CAAC,EAEJ,CAAC,EAAqB,CACvB,CAKA,CAAC,CACK,MA6BHC,GAAkE,CAAE,WAAU,aAAY,uBAAsB,eAElH,EAAA,EAAA,MAACC,EAAAA,oBAAAA,CAA8B,qBAC5B,GACD,EAAA,EAAA,KAAC,EAAA,CAAmB,aAAkC,wBAAwB,CAAA,EAC1D,CAI1B,IAAA,EAAe"}
|
|
@@ -2,15 +2,51 @@ import { CredentialResponse } from "@react-oauth/google";
|
|
|
2
2
|
|
|
3
3
|
//#region packages/components/systems/google.d.ts
|
|
4
4
|
type GoogleProps = {
|
|
5
|
+
/** When `true`, the Google One Tap prompt is suppressed and no login dialog is shown. */
|
|
5
6
|
isDisabled: boolean;
|
|
7
|
+
/** Callback invoked with the verified `CredentialResponse` after a successful Google sign-in. */
|
|
6
8
|
onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;
|
|
7
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Headless component that activates Google One Tap login and forwards the credential response.
|
|
12
|
+
*
|
|
13
|
+
* Must be rendered inside a `GoogleOAuthProvider` (or use the default export {@link ReactOAuth}
|
|
14
|
+
* which wraps this component automatically).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { Google } from '@customafk/lunas-ui/systems/google';
|
|
19
|
+
*
|
|
20
|
+
* // Inside a GoogleOAuthProvider tree
|
|
21
|
+
* <Google isDisabled={false} onGoogleLoginSuccess={(cred) => handleLogin(cred)} />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
8
24
|
declare const Google: React.FC<GoogleProps>;
|
|
9
25
|
type ReactOAuthProps = {
|
|
26
|
+
/** Google OAuth 2.0 client ID from the Google Cloud Console. */
|
|
10
27
|
clientId: string;
|
|
28
|
+
/** When `true`, the Google One Tap prompt is suppressed. */
|
|
11
29
|
isDisabled: boolean;
|
|
30
|
+
/** Callback invoked with the verified `CredentialResponse` after a successful Google sign-in. */
|
|
12
31
|
onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;
|
|
13
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Convenience wrapper that provides the `GoogleOAuthProvider` context and mounts the {@link Google}
|
|
35
|
+
* One Tap component in a single step.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* import ReactOAuth from '@customafk/lunas-ui/systems/google';
|
|
40
|
+
*
|
|
41
|
+
* <ReactOAuth
|
|
42
|
+
* clientId="YOUR_GOOGLE_CLIENT_ID"
|
|
43
|
+
* isDisabled={false}
|
|
44
|
+
* onGoogleLoginSuccess={(cred) => handleLogin(cred)}
|
|
45
|
+
* >
|
|
46
|
+
* <App />
|
|
47
|
+
* </ReactOAuth>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
14
50
|
declare const ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>>;
|
|
15
51
|
//#endregion
|
|
16
52
|
export { Google, ReactOAuth as default };
|
|
@@ -2,15 +2,51 @@ import { CredentialResponse } from "@react-oauth/google";
|
|
|
2
2
|
|
|
3
3
|
//#region packages/components/systems/google.d.ts
|
|
4
4
|
type GoogleProps = {
|
|
5
|
+
/** When `true`, the Google One Tap prompt is suppressed and no login dialog is shown. */
|
|
5
6
|
isDisabled: boolean;
|
|
7
|
+
/** Callback invoked with the verified `CredentialResponse` after a successful Google sign-in. */
|
|
6
8
|
onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;
|
|
7
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Headless component that activates Google One Tap login and forwards the credential response.
|
|
12
|
+
*
|
|
13
|
+
* Must be rendered inside a `GoogleOAuthProvider` (or use the default export {@link ReactOAuth}
|
|
14
|
+
* which wraps this component automatically).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { Google } from '@customafk/lunas-ui/systems/google';
|
|
19
|
+
*
|
|
20
|
+
* // Inside a GoogleOAuthProvider tree
|
|
21
|
+
* <Google isDisabled={false} onGoogleLoginSuccess={(cred) => handleLogin(cred)} />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
8
24
|
declare const Google: React.FC<GoogleProps>;
|
|
9
25
|
type ReactOAuthProps = {
|
|
26
|
+
/** Google OAuth 2.0 client ID from the Google Cloud Console. */
|
|
10
27
|
clientId: string;
|
|
28
|
+
/** When `true`, the Google One Tap prompt is suppressed. */
|
|
11
29
|
isDisabled: boolean;
|
|
30
|
+
/** Callback invoked with the verified `CredentialResponse` after a successful Google sign-in. */
|
|
12
31
|
onGoogleLoginSuccess?: (params: CredentialResponse) => void | Promise<void>;
|
|
13
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Convenience wrapper that provides the `GoogleOAuthProvider` context and mounts the {@link Google}
|
|
35
|
+
* One Tap component in a single step.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* import ReactOAuth from '@customafk/lunas-ui/systems/google';
|
|
40
|
+
*
|
|
41
|
+
* <ReactOAuth
|
|
42
|
+
* clientId="YOUR_GOOGLE_CLIENT_ID"
|
|
43
|
+
* isDisabled={false}
|
|
44
|
+
* onGoogleLoginSuccess={(cred) => handleLogin(cred)}
|
|
45
|
+
* >
|
|
46
|
+
* <App />
|
|
47
|
+
* </ReactOAuth>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
14
50
|
declare const ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>>;
|
|
15
51
|
//#endregion
|
|
16
52
|
export { Google, ReactOAuth as default };
|
package/dist/systems/google.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useCallback as e}from"react";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{GoogleOAuthProvider as r,useGoogleOneTapLogin as i}from"@react-oauth/google";const a=({isDisabled:t,onGoogleLoginSuccess:n})=>(i({disabled:t,use_fedcm_for_prompt:!1,onSuccess:e(async e=>{!e.clientId||!e.credential||!e.select_by||await n?.({clientId:e.clientId,credential:e.credential,select_by:e.select_by})},[n])}),null);var o=({clientId:e,isDisabled:i,onGoogleLoginSuccess:o,children:s})=>n(r,{clientId:e,children:[s,t(a,{isDisabled:i,onGoogleLoginSuccess:o})]});export{a as Google,o as default};
|
|
2
2
|
//# sourceMappingURL=google.mjs.map
|