@customafk/lunas-ui 0.1.93 → 0.1.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{avatar-DjCXs3FZ.mjs → avatar-DReNH6rV.mjs} +1 -1
- package/dist/{avatar-DjCXs3FZ.mjs.map → avatar-DReNH6rV.mjs.map} +1 -1
- package/dist/{avatar-dAu1c0bC.cjs → avatar-aVxo69zP.cjs} +1 -1
- package/dist/{avatar-dAu1c0bC.cjs.map → avatar-aVxo69zP.cjs.map} +1 -1
- package/dist/badge-B4Fa7-J3.mjs +2 -0
- package/dist/badge-B4Fa7-J3.mjs.map +1 -0
- package/dist/badge-cvLJyaCA.cjs +2 -0
- package/dist/badge-cvLJyaCA.cjs.map +1 -0
- package/dist/button-8Snjc8iT.cjs +2 -0
- package/dist/{button-BLYTfCyl.cjs.map → button-8Snjc8iT.cjs.map} +1 -1
- package/dist/{button-CFDexiLY.d.cts → button-CHTjm4n8.d.cts} +8 -8
- package/dist/button-C_yZHudZ.mjs +2 -0
- package/dist/{button-BlQN92Jt.mjs.map → button-C_yZHudZ.mjs.map} +1 -1
- package/dist/{button-CePXFHnA.d.mts → button-c61Vw1Ns.d.mts} +8 -8
- package/dist/{button.variants-Bo2vzQp5.cjs → button.variants-8QOIR433.cjs} +1 -1
- package/dist/{button.variants-Bo2vzQp5.cjs.map → button.variants-8QOIR433.cjs.map} +1 -1
- package/dist/{button.variants-DBOg9vCn.mjs → button.variants-CL2rLGYO.mjs} +1 -1
- package/dist/{button.variants-DBOg9vCn.mjs.map → button.variants-CL2rLGYO.mjs.map} +1 -1
- package/dist/calendar-DgLMLD8R.cjs +2 -0
- package/dist/calendar-DgLMLD8R.cjs.map +1 -0
- package/dist/calendar-e9Pu8pNj.mjs +2 -0
- package/dist/calendar-e9Pu8pNj.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.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.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.mts +2 -2
- package/dist/cards/simple-card.mjs +1 -1
- package/dist/cards/simple-card.mjs.map +1 -1
- package/dist/checkbox-Bg2FiuQw.mjs +2 -0
- package/dist/checkbox-Bg2FiuQw.mjs.map +1 -0
- package/dist/checkbox-C0fSWwmD.cjs +2 -0
- package/dist/checkbox-C0fSWwmD.cjs.map +1 -0
- package/dist/{close-rM-Ao1Gf.cjs → close-D_Ge7gnP.cjs} +1 -1
- package/dist/{close-rM-Ao1Gf.cjs.map → close-D_Ge7gnP.cjs.map} +1 -1
- package/dist/{close-BSZehrQx.mjs → close-DfuHB7kq.mjs} +1 -1
- package/dist/{close-BSZehrQx.mjs.map → close-DfuHB7kq.mjs.map} +1 -1
- package/dist/{command-CzE8NTMm.cjs → command-BciJADha.cjs} +2 -2
- package/dist/{command-CzE8NTMm.cjs.map → command-BciJADha.cjs.map} +1 -1
- package/dist/{command-OYUOsPvN.mjs → command-DSvEsWG8.mjs} +2 -2
- package/dist/{command-OYUOsPvN.mjs.map → command-DSvEsWG8.mjs.map} +1 -1
- package/dist/data-display/country.cjs +1 -1
- package/dist/data-display/country.d.cts +1 -1
- package/dist/data-display/country.d.mts +1 -1
- package/dist/data-display/country.mjs +1 -1
- package/dist/data-display/data-list.cjs +1 -1
- package/dist/data-display/data-list.mjs +1 -1
- package/dist/data-display/date-tooltip.cjs +1 -1
- package/dist/data-display/date-tooltip.mjs +1 -1
- package/dist/data-display/date.cjs +1 -1
- package/dist/data-display/date.mjs +1 -1
- package/dist/data-display/empty.cjs +1 -1
- package/dist/data-display/empty.d.cts +2 -2
- package/dist/data-display/empty.mjs +1 -1
- package/dist/data-display/name.cjs +1 -1
- package/dist/data-display/name.mjs +1 -1
- package/dist/data-display/phone-number.cjs +1 -1
- package/dist/data-display/phone-number.mjs +1 -1
- package/dist/data-display/role-badge.cjs +1 -1
- package/dist/data-display/role-badge.d.cts +1 -1
- package/dist/data-display/role-badge.d.mts +1 -1
- package/dist/data-display/role-badge.mjs +1 -1
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.d.cts +2 -2
- package/dist/data-display/statistic.d.mts +2 -2
- package/dist/data-display/statistic.mjs +1 -1
- package/dist/data-display/user.cjs +1 -1
- package/dist/data-display/user.mjs +1 -1
- package/dist/{date-Bznq86tY.mjs → date-CK7XBqG9.mjs} +2 -2
- package/dist/{date-Bznq86tY.mjs.map → date-CK7XBqG9.mjs.map} +1 -1
- package/dist/{date-CuRT4hmU.cjs → date-CTmoK8tv.cjs} +2 -2
- package/dist/{date-CuRT4hmU.cjs.map → date-CTmoK8tv.cjs.map} +1 -1
- package/dist/{dialog-DigNrfAO.d.mts → dialog-CyLgmqny.d.cts} +12 -12
- package/dist/dialog-D5TBBX99.cjs +2 -0
- package/dist/dialog-D5TBBX99.cjs.map +1 -0
- package/dist/dialog-DSvmcuYl.mjs +2 -0
- package/dist/dialog-DSvmcuYl.mjs.map +1 -0
- package/dist/{dialog-UWrYag-8.d.cts → dialog-DdkuhWsq.d.mts} +12 -12
- package/dist/dialogs/confirm-dialog.cjs +1 -1
- package/dist/dialogs/confirm-dialog.cjs.map +1 -1
- 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 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +25 -25
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +27 -27
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +1 -1
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/dialogs/error-dialog.cjs +1 -1
- package/dist/dialogs/error-dialog.cjs.map +1 -1
- 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.mjs +1 -1
- package/dist/dialogs/loading-dialog.mjs.map +1 -1
- package/dist/dist-BudM04oj.cjs +2 -0
- package/dist/{dist-BqoK5OAd.cjs.map → dist-BudM04oj.cjs.map} +1 -1
- package/dist/dist-CvmzZ_6C.mjs +2 -0
- package/dist/{dist-D2ydYRc4.mjs.map → dist-CvmzZ_6C.mjs.map} +1 -1
- package/dist/{dropdown-menu-BwcDzb4B.mjs → dropdown-menu-B8GUTfTp.mjs} +1 -1
- package/dist/{dropdown-menu-BwcDzb4B.mjs.map → dropdown-menu-B8GUTfTp.mjs.map} +1 -1
- package/dist/{dropdown-menu-5Zyw5t_J.cjs → dropdown-menu-BuyuU6uF.cjs} +1 -1
- package/dist/{dropdown-menu-5Zyw5t_J.cjs.map → dropdown-menu-BuyuU6uF.cjs.map} +1 -1
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.d.cts +4 -4
- package/dist/features/descriptions/index.d.mts +4 -4
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/search-modal/index.cjs +1 -1
- package/dist/features/search-modal/index.cjs.map +1 -1
- package/dist/features/search-modal/index.d.cts +2 -2
- package/dist/features/search-modal/index.d.mts +2 -2
- package/dist/features/search-modal/index.mjs +1 -1
- package/dist/features/search-modal/index.mjs.map +1 -1
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.cjs.map +1 -1
- package/dist/features/tables/index.d.cts +152 -31
- package/dist/features/tables/index.d.mts +152 -31
- package/dist/features/tables/index.mjs +1 -1
- package/dist/features/tables/index.mjs.map +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.cjs.map +1 -1
- package/dist/features/tanstack-form/index.d.cts +280 -280
- package/dist/features/tanstack-form/index.d.mts +280 -280
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/tanstack-form/index.mjs.map +1 -1
- package/dist/{flex-_tvOU0u1.mjs → flex-BP8sTi70.mjs} +2 -2
- package/dist/{flex-_tvOU0u1.mjs.map → flex-BP8sTi70.mjs.map} +1 -1
- package/dist/{flex-DGPQRbN6.cjs → flex-twCgWyx1.cjs} +2 -2
- package/dist/{flex-DGPQRbN6.cjs.map → flex-twCgWyx1.cjs.map} +1 -1
- package/dist/heading--VmdIi7C.mjs +2 -0
- package/dist/heading--VmdIi7C.mjs.map +1 -0
- package/dist/heading-BEm5CCSE.cjs +2 -0
- package/dist/heading-BEm5CCSE.cjs.map +1 -0
- package/dist/image-CS_Q0WA7.mjs +2 -0
- package/dist/{image-Dgxtk54D.mjs.map → image-CS_Q0WA7.mjs.map} +1 -1
- package/dist/image-DuFv8sPr.cjs +2 -0
- package/dist/{image-D2PTBG_7.cjs.map → image-DuFv8sPr.cjs.map} +1 -1
- package/dist/input-BFWWaN-v.cjs +2 -0
- package/dist/input-BFWWaN-v.cjs.map +1 -0
- package/dist/input-BMz2evzs.d.mts +25 -0
- package/dist/input-DBtIgQB6.mjs +2 -0
- package/dist/input-DBtIgQB6.mjs.map +1 -0
- package/dist/input-mGRGirZ_.d.cts +25 -0
- package/dist/{label-D6vHFlHX.cjs → label-BzfsTrVt.cjs} +1 -1
- package/dist/{label-D6vHFlHX.cjs.map → label-BzfsTrVt.cjs.map} +1 -1
- package/dist/{label-DW6shAXZ.mjs → label-Dqr8nxWi.mjs} +1 -1
- package/dist/{label-DW6shAXZ.mjs.map → label-Dqr8nxWi.mjs.map} +1 -1
- package/dist/layouts/cms-layout/index.cjs +1 -1
- package/dist/layouts/cms-layout/index.mjs +1 -1
- package/dist/layouts/flex.cjs +1 -1
- package/dist/layouts/flex.d.cts +5 -5
- package/dist/layouts/flex.d.mts +6 -6
- package/dist/layouts/flex.mjs +1 -1
- package/dist/layouts/payment-layout/index.cjs +1 -1
- package/dist/layouts/payment-layout/index.mjs +1 -1
- package/dist/pages/FeatureDeveloping.cjs +1 -1
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/FeatureDeveloping.d.mts +2 -2
- package/dist/pages/FeatureDeveloping.mjs +1 -1
- package/dist/pages/FeatureFixing.cjs +1 -1
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/FeatureFixing.d.mts +2 -2
- package/dist/pages/FeatureFixing.mjs +1 -1
- package/dist/pages/NotAuthorized.cjs +1 -1
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/NotAuthorized.d.mts +2 -2
- package/dist/pages/NotAuthorized.mjs +1 -1
- package/dist/pages/NotFound.cjs +1 -1
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/NotFound.d.mts +2 -2
- package/dist/pages/NotFound.mjs +1 -1
- package/dist/paragraph-4z_6Z5aj.cjs +2 -0
- package/dist/paragraph-4z_6Z5aj.cjs.map +1 -0
- package/dist/paragraph-BTJV4aeF.mjs +2 -0
- package/dist/paragraph-BTJV4aeF.mjs.map +1 -0
- package/dist/popover-BckwBuuD.mjs +2 -0
- package/dist/popover-BckwBuuD.mjs.map +1 -0
- package/dist/popover-DzDrgttC.cjs +2 -0
- package/dist/popover-DzDrgttC.cjs.map +1 -0
- package/dist/radio-group-CBhRsUjN.cjs +2 -0
- package/dist/radio-group-CBhRsUjN.cjs.map +1 -0
- package/dist/radio-group-Cem8O6BK.mjs +2 -0
- package/dist/radio-group-Cem8O6BK.mjs.map +1 -0
- package/dist/resizable-DXHfkbaz.mjs +2 -0
- package/dist/resizable-DXHfkbaz.mjs.map +1 -0
- package/dist/resizable-mlGS6Zto.cjs +2 -0
- package/dist/resizable-mlGS6Zto.cjs.map +1 -0
- package/dist/select-2CgwiefV.cjs +2 -0
- package/dist/select-2CgwiefV.cjs.map +1 -0
- package/dist/select-CivtMKTM.mjs +2 -0
- package/dist/select-CivtMKTM.mjs.map +1 -0
- package/dist/{separator-CWar33xc.mjs → separator-Bf0gymN4.mjs} +1 -1
- package/dist/{separator-CWar33xc.mjs.map → separator-Bf0gymN4.mjs.map} +1 -1
- package/dist/{separator-DSZyCT2g.cjs → separator-C3ip6sbh.cjs} +1 -1
- package/dist/{separator-DSZyCT2g.cjs.map → separator-C3ip6sbh.cjs.map} +1 -1
- package/dist/{sheet-CxHNvLcP.cjs → sheet-5MJRtrfG.cjs} +1 -1
- package/dist/{sheet-CxHNvLcP.cjs.map → sheet-5MJRtrfG.cjs.map} +1 -1
- package/dist/{sheet-CUfrx04D.mjs → sheet-oadGRiie.mjs} +1 -1
- package/dist/{sheet-CUfrx04D.mjs.map → sheet-oadGRiie.mjs.map} +1 -1
- package/dist/{skeleton-6MpPv0K3.mjs → skeleton-Ba6koCVf.mjs} +1 -1
- package/dist/{skeleton-6MpPv0K3.mjs.map → skeleton-Ba6koCVf.mjs.map} +1 -1
- package/dist/{skeleton-oQFT4xR2.cjs → skeleton-CHympz8k.cjs} +1 -1
- package/dist/{skeleton-oQFT4xR2.cjs.map → skeleton-CHympz8k.cjs.map} +1 -1
- package/dist/spinner-Chm_2fLr.cjs +2 -0
- package/dist/spinner-Chm_2fLr.cjs.map +1 -0
- package/dist/spinner-D1v3Bard.mjs +2 -0
- package/dist/spinner-D1v3Bard.mjs.map +1 -0
- package/dist/systems/google.cjs +1 -1
- package/dist/systems/google.mjs +1 -1
- package/dist/textarea-COQoSVSc.cjs +2 -0
- package/dist/textarea-COQoSVSc.cjs.map +1 -0
- package/dist/textarea-bLtmb71c.mjs +2 -0
- package/dist/textarea-bLtmb71c.mjs.map +1 -0
- package/dist/{tooltip-Dd1torAV.mjs → tooltip-B3dTcgcc.mjs} +1 -1
- package/dist/{tooltip-Dd1torAV.mjs.map → tooltip-B3dTcgcc.mjs.map} +1 -1
- package/dist/{tooltip-DMFoP_sB.cjs → tooltip-DC6i1A25.cjs} +1 -1
- package/dist/{tooltip-DMFoP_sB.cjs.map → tooltip-DC6i1A25.cjs.map} +1 -1
- package/dist/{types-DmtzpUIM.cjs → types-BD1t0Bj8.cjs} +1 -1
- package/dist/{types-BQMTFD_z.mjs.map → types-BD1t0Bj8.cjs.map} +1 -1
- package/dist/{types-Dl3D4kHZ.d.cts → types-Bd0JePtp.d.cts} +3 -2
- package/dist/{types-spXc_7Mh.d.mts → types-BpHcqlOI.d.mts} +3 -2
- package/dist/{types-BQMTFD_z.mjs → types-DBD4LOem.mjs} +1 -1
- package/dist/{types-DmtzpUIM.cjs.map → types-DBD4LOem.mjs.map} +1 -1
- package/dist/typography/paragraph.cjs +1 -1
- package/dist/typography/paragraph.d.cts +15 -3
- package/dist/typography/paragraph.d.mts +15 -3
- package/dist/typography/paragraph.mjs +1 -1
- package/dist/typography/title.cjs +1 -1
- package/dist/typography/title.d.cts +2 -2
- package/dist/typography/title.d.mts +2 -2
- package/dist/typography/title.mjs +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 +12 -12
- package/dist/ui/alert-dialog.d.mts +12 -12
- package/dist/ui/alert-dialog.mjs +1 -1
- package/dist/ui/alert-dialog.mjs.map +1 -1
- package/dist/ui/alert.cjs +1 -1
- package/dist/ui/alert.d.cts +7 -7
- package/dist/ui/alert.d.mts +7 -7
- package/dist/ui/alert.mjs +1 -1
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/aspect-ratio.d.mts +2 -2
- package/dist/ui/avatar.cjs +1 -1
- package/dist/ui/avatar.d.mts +4 -4
- package/dist/ui/avatar.mjs +1 -1
- package/dist/ui/badge.cjs +1 -1
- package/dist/ui/badge.d.cts +6 -6
- package/dist/ui/badge.d.mts +4 -4
- package/dist/ui/badge.mjs +1 -1
- package/dist/ui/breadcrumb.cjs +1 -1
- package/dist/ui/breadcrumb.d.cts +8 -8
- package/dist/ui/breadcrumb.d.mts +8 -8
- package/dist/ui/breadcrumb.mjs +1 -1
- package/dist/ui/button-group.cjs +1 -1
- package/dist/ui/button-group.d.cts +6 -6
- package/dist/ui/button-group.d.mts +6 -6
- package/dist/ui/button-group.mjs +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.mjs +1 -1
- package/dist/ui/buttons/edit.cjs +1 -1
- package/dist/ui/buttons/edit.mjs +1 -1
- package/dist/ui/buttons/refresh.cjs +1 -1
- package/dist/ui/buttons/refresh.mjs +1 -1
- package/dist/ui/buttons/trash.cjs +1 -1
- package/dist/ui/buttons/trash.mjs +1 -1
- package/dist/ui/buttons/upload-image.cjs +1 -1
- package/dist/ui/buttons/upload-image.mjs +1 -1
- package/dist/ui/calendar.cjs +1 -2
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/calendar.d.mts +4 -4
- package/dist/ui/calendar.mjs +1 -2
- package/dist/ui/card.cjs +1 -1
- package/dist/ui/card.cjs.map +1 -1
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/card.d.mts +8 -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.d.cts +7 -7
- package/dist/ui/carousel.d.mts +7 -7
- package/dist/ui/carousel.mjs +1 -1
- package/dist/ui/checkbox.cjs +1 -1
- package/dist/ui/checkbox.d.cts +2 -2
- package/dist/ui/checkbox.d.mts +2 -2
- package/dist/ui/checkbox.mjs +1 -1
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/collapsible.d.mts +4 -4
- package/dist/ui/command.cjs +1 -1
- package/dist/ui/command.d.cts +11 -11
- package/dist/ui/command.d.mts +11 -11
- package/dist/ui/command.mjs +1 -1
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/context-menu.d.mts +16 -16
- 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.d.cts +11 -11
- package/dist/ui/drawer.d.mts +11 -11
- package/dist/ui/dropdown-menu.cjs +1 -1
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/dropdown-menu.d.mts +16 -16
- package/dist/ui/dropdown-menu.mjs +1 -1
- package/dist/ui/empty.cjs +1 -1
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/empty.d.mts +9 -9
- package/dist/ui/empty.mjs +1 -1
- package/dist/ui/field.cjs +1 -1
- package/dist/ui/field.d.cts +13 -13
- package/dist/ui/field.d.mts +24 -24
- package/dist/ui/field.mjs +1 -1
- package/dist/ui/file-uploader.cjs +2 -2
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/file-uploader.d.mts +2 -2
- package/dist/ui/file-uploader.mjs +2 -2
- package/dist/ui/form.cjs +1 -1
- package/dist/ui/form.d.cts +11 -11
- package/dist/ui/form.d.mts +7 -7
- package/dist/ui/form.mjs +1 -1
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/hover-card.d.mts +4 -4
- package/dist/ui/image.cjs +1 -1
- package/dist/ui/image.mjs +1 -1
- package/dist/ui/input-otp.cjs +1 -1
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/input-otp.d.mts +5 -5
- package/dist/ui/input-otp.mjs +1 -1
- package/dist/ui/input.cjs +1 -1
- package/dist/ui/input.d.cts +2 -2
- package/dist/ui/input.d.mts +2 -2
- package/dist/ui/input.mjs +1 -1
- package/dist/ui/inputs/search-input.cjs +1 -1
- package/dist/ui/inputs/search-input.d.cts +3 -3
- package/dist/ui/inputs/search-input.d.mts +3 -3
- package/dist/ui/inputs/search-input.mjs +1 -1
- package/dist/ui/item.cjs +1 -1
- package/dist/ui/item.d.cts +15 -15
- package/dist/ui/item.d.mts +12 -12
- package/dist/ui/item.mjs +1 -1
- package/dist/ui/label.cjs +1 -1
- package/dist/ui/label.d.cts +2 -2
- package/dist/ui/label.d.mts +2 -2
- package/dist/ui/label.mjs +1 -1
- package/dist/ui/menubar.d.mts +17 -17
- package/dist/ui/multi-select.cjs +1 -1
- package/dist/ui/multi-select.cjs.map +1 -1
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/multi-select.d.mts +3 -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.d.cts +11 -11
- package/dist/ui/navigation-menu.d.mts +11 -11
- package/dist/ui/navigation-menu.mjs +1 -1
- package/dist/ui/pagination.cjs +1 -1
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/pagination.d.mts +9 -9
- package/dist/ui/pagination.mjs +1 -1
- package/dist/ui/popover.cjs +1 -2
- package/dist/ui/popover.d.cts +10 -6
- package/dist/ui/popover.d.mts +10 -6
- package/dist/ui/popover.mjs +1 -2
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/progress.d.mts +2 -2
- package/dist/ui/radio-group.cjs +1 -2
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/radio-group.d.mts +3 -3
- package/dist/ui/radio-group.mjs +1 -2
- package/dist/ui/resizable.cjs +1 -1
- package/dist/ui/resizable.d.cts +36 -14
- package/dist/ui/resizable.d.mts +36 -14
- package/dist/ui/resizable.mjs +1 -1
- package/dist/ui/scroll-area.cjs +1 -1
- package/dist/ui/scroll-area.d.cts +6 -6
- package/dist/ui/scroll-area.d.mts +6 -6
- package/dist/ui/scroll-area.mjs +1 -1
- package/dist/ui/select.cjs +1 -2
- package/dist/ui/select.d.cts +10 -18
- package/dist/ui/select.d.mts +10 -18
- package/dist/ui/select.mjs +1 -2
- package/dist/ui/separator.cjs +1 -1
- package/dist/ui/separator.d.cts +2 -2
- package/dist/ui/separator.d.mts +2 -2
- package/dist/ui/separator.mjs +1 -1
- package/dist/ui/sheet.cjs +1 -1
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/sheet.d.mts +9 -9
- package/dist/ui/sheet.mjs +1 -1
- package/dist/ui/sidebar.cjs +1 -1
- package/dist/ui/sidebar.d.cts +29 -29
- package/dist/ui/sidebar.d.mts +29 -29
- package/dist/ui/sidebar.mjs +1 -1
- package/dist/ui/skeleton.cjs +1 -1
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/skeleton.d.mts +2 -2
- package/dist/ui/skeleton.mjs +1 -1
- package/dist/ui/slider.cjs +1 -1
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.mts +2 -2
- package/dist/ui/slider.mjs +1 -1
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/sonner.d.mts +2 -2
- package/dist/ui/spinner.cjs +1 -2
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/spinner.d.mts +2 -2
- package/dist/ui/spinner.mjs +1 -2
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/switch.d.mts +2 -2
- package/dist/ui/table.cjs +1 -1
- package/dist/ui/table.d.cts +18 -18
- package/dist/ui/table.d.mts +18 -18
- package/dist/ui/table.mjs +1 -1
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/tabs.d.mts +5 -5
- package/dist/ui/textarea.cjs +1 -2
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/textarea.d.mts +2 -2
- package/dist/ui/textarea.mjs +1 -2
- package/dist/ui/toggle-group.cjs +1 -1
- package/dist/ui/toggle-group.d.mts +3 -3
- package/dist/ui/toggle-group.mjs +1 -1
- package/dist/ui/toggle.cjs +1 -1
- package/dist/ui/toggle.d.cts +3 -3
- package/dist/ui/toggle.d.mts +5 -5
- package/dist/ui/toggle.mjs +1 -1
- package/dist/ui/tooltip.cjs +1 -1
- package/dist/ui/tooltip.d.cts +5 -5
- package/dist/ui/tooltip.mjs +1 -1
- package/package.json +1 -1
- package/dist/badge-CJ-SG_OK.mjs +0 -2
- package/dist/badge-CJ-SG_OK.mjs.map +0 -1
- package/dist/badge-CsDmp3ys.cjs +0 -2
- package/dist/badge-CsDmp3ys.cjs.map +0 -1
- package/dist/button-BLYTfCyl.cjs +0 -2
- package/dist/button-BlQN92Jt.mjs +0 -2
- package/dist/checkbox-D4K3ZATY.mjs +0 -2
- package/dist/checkbox-D4K3ZATY.mjs.map +0 -1
- package/dist/checkbox-DDuYFG0R.cjs +0 -2
- package/dist/checkbox-DDuYFG0R.cjs.map +0 -1
- package/dist/dialog-XvFmavuI.mjs +0 -2
- package/dist/dialog-XvFmavuI.mjs.map +0 -1
- package/dist/dialog-aRCyqFr-.cjs +0 -2
- package/dist/dialog-aRCyqFr-.cjs.map +0 -1
- package/dist/dist-BqoK5OAd.cjs +0 -2
- package/dist/dist-D2ydYRc4.mjs +0 -2
- package/dist/image-D2PTBG_7.cjs +0 -2
- package/dist/image-Dgxtk54D.mjs +0 -2
- package/dist/input-B2Y92Ylo.d.cts +0 -27
- package/dist/input-B6-pu-dE.d.mts +0 -27
- package/dist/input-CqN74taK.mjs +0 -2
- package/dist/input-CqN74taK.mjs.map +0 -1
- package/dist/input-dAoEznUI.cjs +0 -2
- package/dist/input-dAoEznUI.cjs.map +0 -1
- package/dist/paragraph-B9_-MKH8.cjs +0 -2
- package/dist/paragraph-B9_-MKH8.cjs.map +0 -1
- package/dist/paragraph-C83yi9US.mjs +0 -2
- package/dist/paragraph-C83yi9US.mjs.map +0 -1
- package/dist/resizable-BS63Xwia.cjs +0 -2
- package/dist/resizable-BS63Xwia.cjs.map +0 -1
- package/dist/resizable-BfkKNflf.mjs +0 -2
- package/dist/resizable-BfkKNflf.mjs.map +0 -1
- package/dist/ui/calendar.cjs.map +0 -1
- package/dist/ui/calendar.mjs.map +0 -1
- package/dist/ui/popover.cjs.map +0 -1
- package/dist/ui/popover.mjs.map +0 -1
- package/dist/ui/radio-group.cjs.map +0 -1
- package/dist/ui/radio-group.mjs.map +0 -1
- package/dist/ui/select.cjs.map +0 -1
- package/dist/ui/select.mjs.map +0 -1
- package/dist/ui/spinner.cjs.map +0 -1
- package/dist/ui/spinner.mjs.map +0 -1
- package/dist/ui/textarea.cjs.map +0 -1
- package/dist/ui/textarea.mjs.map +0 -1
package/dist/ui/input.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Input } from "../input-
|
|
2
|
-
export { Input };
|
|
1
|
+
import { n as InputVariantProps, r as inputVariants, t as Input } from "../input-BMz2evzs.mjs";
|
|
2
|
+
export { Input, InputVariantProps, inputVariants };
|
package/dist/ui/input.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{
|
|
1
|
+
"use client";import{n as e,t}from"../input-DBtIgQB6.mjs";export{t as Input,e as inputVariants};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../chunk-Bmb41Sf3.cjs`),t=require(`../../input-
|
|
1
|
+
const e=require(`../../chunk-Bmb41Sf3.cjs`),t=require(`../../input-BFWWaN-v.cjs`);let n=require(`@customafk/react-toolkit/utils`),r=require(`react/jsx-runtime`),i=require(`lucide-react`);const a=({className:e,...a})=>(0,r.jsxs)(`div`,{className:`relative`,children:[(0,r.jsx)(t.t,{...a,type:`search`,className:(0,n.cn)(`ps-9 pe-9`,e)}),(0,r.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 text-text-positive-weak peer-disabled:opacity-50`,children:(0,r.jsx)(i.SearchIcon,{size:16})}),(0,r.jsx)(`button`,{className:`absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-text-positive-weak outline-none transition-[color,box-shadow] hover:text-text-positive focus:z-10 focus-visible:border focus-visible:border-primary-strong focus-visible:ring-[3px] focus-visible:ring-primary-weak disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":`Submit search`,type:`submit`,children:(0,r.jsx)(i.ArrowRightIcon,{size:16,"aria-hidden":`true`})})]});exports.SearchInput=a;
|
|
2
2
|
//# sourceMappingURL=search-input.cjs.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as Input } from "../../input-
|
|
2
|
-
import * as
|
|
1
|
+
import { t as Input } from "../../input-mGRGirZ_.cjs";
|
|
2
|
+
import * as react_jsx_runtime30 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/inputs/search-input.d.ts
|
|
5
5
|
type Props = React.ComponentPropsWithoutRef<typeof Input>;
|
|
6
6
|
declare const SearchInput: ({
|
|
7
7
|
className,
|
|
8
8
|
...rest
|
|
9
|
-
}: Props) =>
|
|
9
|
+
}: Props) => react_jsx_runtime30.JSX.Element;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { SearchInput };
|
|
12
12
|
//# sourceMappingURL=search-input.d.cts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as Input } from "../../input-
|
|
2
|
-
import * as
|
|
1
|
+
import { t as Input } from "../../input-BMz2evzs.mjs";
|
|
2
|
+
import * as react_jsx_runtime39 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/inputs/search-input.d.ts
|
|
5
5
|
type Props = React.ComponentPropsWithoutRef<typeof Input>;
|
|
6
6
|
declare const SearchInput: ({
|
|
7
7
|
className,
|
|
8
8
|
...rest
|
|
9
|
-
}: Props) =>
|
|
9
|
+
}: Props) => react_jsx_runtime39.JSX.Element;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { SearchInput };
|
|
12
12
|
//# sourceMappingURL=search-input.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"../../input-
|
|
1
|
+
import{t as e}from"../../input-DBtIgQB6.mjs";import{cn as t}from"@customafk/react-toolkit/utils";import{jsx as n,jsxs as r}from"react/jsx-runtime";import{ArrowRightIcon as i,SearchIcon as a}from"lucide-react";const o=({className:o,...s})=>r(`div`,{className:`relative`,children:[n(e,{...s,type:`search`,className:t(`ps-9 pe-9`,o)}),n(`div`,{className:`pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 text-text-positive-weak peer-disabled:opacity-50`,children:n(a,{size:16})}),n(`button`,{className:`absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-text-positive-weak outline-none transition-[color,box-shadow] hover:text-text-positive focus:z-10 focus-visible:border focus-visible:border-primary-strong focus-visible:ring-[3px] focus-visible:ring-primary-weak disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":`Submit search`,type:`submit`,children:n(i,{size:16,"aria-hidden":`true`})})]});export{o as SearchInput};
|
|
2
2
|
//# sourceMappingURL=search-input.mjs.map
|
package/dist/ui/item.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../dist-
|
|
1
|
+
const e=require(`../chunk-Bmb41Sf3.cjs`),t=require(`../dist-BudM04oj.cjs`),n=require(`../separator-C3ip6sbh.cjs`);let r=require(`@customafk/react-toolkit/utils`),i=require(`class-variance-authority`),a=require(`react/jsx-runtime`);function o({className:e,...t}){return(0,a.jsx)(`div`,{role:`list`,"data-slot":`item-group`,className:(0,r.cn)(`group/item-group flex flex-col`,e),...t})}function s({className:e,...t}){return(0,a.jsx)(n.t,{"data-slot":`item-separator`,orientation:`horizontal`,className:(0,r.cn)(`my-0`,e),...t})}const c=(0,i.cva)(`group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-primary-strong focus-visible:ring-primary-weak focus-visible:ring-[3px]`,{variants:{variant:{default:`bg-transparent`,outline:`border-border`,muted:`bg-muted-weak`},size:{default:`p-4 gap-4 `,sm:`py-3 px-4 gap-2.5`}},defaultVariants:{variant:`default`,size:`default`}});function l({className:e,variant:n=`default`,size:i=`default`,asChild:o=!1,...s}){return(0,a.jsx)(o?t.t:`div`,{"data-slot":`item`,"data-variant":n,"data-size":i,className:(0,r.cn)(c({variant:n,size:i,className:e})),...s})}const u=(0,i.cva)(`flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5`,{variants:{variant:{default:`bg-transparent`,icon:`size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4`,image:`size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover`}},defaultVariants:{variant:`default`}});function d({className:e,variant:t=`default`,...n}){return(0,a.jsx)(`div`,{"data-slot":`item-media`,"data-variant":t,className:(0,r.cn)(u({variant:t,className:e})),...n})}function f({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`item-content`,className:(0,r.cn)(`flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none`,e),...t})}function p({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`item-title`,className:(0,r.cn)(`flex w-fit items-center gap-2 text-sm leading-snug font-medium`,e),...t})}function m({className:e,...t}){return(0,a.jsx)(`p`,{"data-slot":`item-description`,className:(0,r.cn)(`text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance`,`[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4`,e),...t})}function h({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`item-actions`,className:(0,r.cn)(`flex items-center gap-2`,e),...t})}function g({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`item-header`,className:(0,r.cn)(`flex basis-full items-center justify-between gap-2`,e),...t})}function _({className:e,...t}){return(0,a.jsx)(`div`,{"data-slot":`item-footer`,className:(0,r.cn)(`flex basis-full items-center justify-between gap-2`,e),...t})}exports.Item=l,exports.ItemActions=h,exports.ItemContent=f,exports.ItemDescription=m,exports.ItemFooter=_,exports.ItemGroup=o,exports.ItemHeader=g,exports.ItemMedia=d,exports.ItemSeparator=s,exports.ItemTitle=p;
|
|
2
2
|
//# sourceMappingURL=item.cjs.map
|
package/dist/ui/item.d.cts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Separator } from "./separator.cjs";
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime99 from "react/jsx-runtime";
|
|
3
|
+
import * as class_variance_authority_types3 from "class-variance-authority/types";
|
|
4
4
|
import { VariantProps } from "class-variance-authority";
|
|
5
5
|
|
|
6
6
|
//#region packages/components/ui/item.d.ts
|
|
7
7
|
declare function ItemGroup({
|
|
8
8
|
className,
|
|
9
9
|
...props
|
|
10
|
-
}: React.ComponentProps<'div'>):
|
|
10
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime99.JSX.Element;
|
|
11
11
|
declare function ItemSeparator({
|
|
12
12
|
className,
|
|
13
13
|
...props
|
|
14
|
-
}: React.ComponentProps<typeof Separator>):
|
|
14
|
+
}: React.ComponentProps<typeof Separator>): react_jsx_runtime99.JSX.Element;
|
|
15
15
|
declare const itemVariants: (props?: ({
|
|
16
16
|
variant?: "muted" | "default" | "outline" | null | undefined;
|
|
17
17
|
size?: "sm" | "default" | null | undefined;
|
|
18
|
-
} &
|
|
18
|
+
} & class_variance_authority_types3.ClassProp) | undefined) => string;
|
|
19
19
|
declare function Item({
|
|
20
20
|
className,
|
|
21
21
|
variant,
|
|
@@ -24,39 +24,39 @@ declare function Item({
|
|
|
24
24
|
...props
|
|
25
25
|
}: React.ComponentProps<'div'> & VariantProps<typeof itemVariants> & {
|
|
26
26
|
asChild?: boolean;
|
|
27
|
-
}):
|
|
27
|
+
}): react_jsx_runtime99.JSX.Element;
|
|
28
28
|
declare const itemMediaVariants: (props?: ({
|
|
29
|
-
variant?: "default" | "
|
|
30
|
-
} &
|
|
29
|
+
variant?: "default" | "image" | "icon" | null | undefined;
|
|
30
|
+
} & class_variance_authority_types3.ClassProp) | undefined) => string;
|
|
31
31
|
declare function ItemMedia({
|
|
32
32
|
className,
|
|
33
33
|
variant,
|
|
34
34
|
...props
|
|
35
|
-
}: React.ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>):
|
|
35
|
+
}: React.ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>): react_jsx_runtime99.JSX.Element;
|
|
36
36
|
declare function ItemContent({
|
|
37
37
|
className,
|
|
38
38
|
...props
|
|
39
|
-
}: React.ComponentProps<'div'>):
|
|
39
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime99.JSX.Element;
|
|
40
40
|
declare function ItemTitle({
|
|
41
41
|
className,
|
|
42
42
|
...props
|
|
43
|
-
}: React.ComponentProps<'div'>):
|
|
43
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime99.JSX.Element;
|
|
44
44
|
declare function ItemDescription({
|
|
45
45
|
className,
|
|
46
46
|
...props
|
|
47
|
-
}: React.ComponentProps<'p'>):
|
|
47
|
+
}: React.ComponentProps<'p'>): react_jsx_runtime99.JSX.Element;
|
|
48
48
|
declare function ItemActions({
|
|
49
49
|
className,
|
|
50
50
|
...props
|
|
51
|
-
}: React.ComponentProps<'div'>):
|
|
51
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime99.JSX.Element;
|
|
52
52
|
declare function ItemHeader({
|
|
53
53
|
className,
|
|
54
54
|
...props
|
|
55
|
-
}: React.ComponentProps<'div'>):
|
|
55
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime99.JSX.Element;
|
|
56
56
|
declare function ItemFooter({
|
|
57
57
|
className,
|
|
58
58
|
...props
|
|
59
|
-
}: React.ComponentProps<'div'>):
|
|
59
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime99.JSX.Element;
|
|
60
60
|
//#endregion
|
|
61
61
|
export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle };
|
|
62
62
|
//# sourceMappingURL=item.d.cts.map
|
package/dist/ui/item.d.mts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { Separator } from "./separator.mjs";
|
|
2
|
-
import * as react_jsx_runtime162 from "react/jsx-runtime";
|
|
3
2
|
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import * as react_jsx_runtime72 from "react/jsx-runtime";
|
|
4
4
|
import * as class_variance_authority_types4 from "class-variance-authority/types";
|
|
5
5
|
|
|
6
6
|
//#region packages/components/ui/item.d.ts
|
|
7
7
|
declare function ItemGroup({
|
|
8
8
|
className,
|
|
9
9
|
...props
|
|
10
|
-
}: React.ComponentProps<'div'>):
|
|
10
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime72.JSX.Element;
|
|
11
11
|
declare function ItemSeparator({
|
|
12
12
|
className,
|
|
13
13
|
...props
|
|
14
|
-
}: React.ComponentProps<typeof Separator>):
|
|
14
|
+
}: React.ComponentProps<typeof Separator>): react_jsx_runtime72.JSX.Element;
|
|
15
15
|
declare const itemVariants: (props?: ({
|
|
16
16
|
variant?: "muted" | "default" | "outline" | null | undefined;
|
|
17
17
|
size?: "sm" | "default" | null | undefined;
|
|
@@ -24,39 +24,39 @@ declare function Item({
|
|
|
24
24
|
...props
|
|
25
25
|
}: React.ComponentProps<'div'> & VariantProps<typeof itemVariants> & {
|
|
26
26
|
asChild?: boolean;
|
|
27
|
-
}):
|
|
27
|
+
}): react_jsx_runtime72.JSX.Element;
|
|
28
28
|
declare const itemMediaVariants: (props?: ({
|
|
29
|
-
variant?: "default" | "
|
|
29
|
+
variant?: "default" | "image" | "icon" | null | undefined;
|
|
30
30
|
} & class_variance_authority_types4.ClassProp) | undefined) => string;
|
|
31
31
|
declare function ItemMedia({
|
|
32
32
|
className,
|
|
33
33
|
variant,
|
|
34
34
|
...props
|
|
35
|
-
}: React.ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>):
|
|
35
|
+
}: React.ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>): react_jsx_runtime72.JSX.Element;
|
|
36
36
|
declare function ItemContent({
|
|
37
37
|
className,
|
|
38
38
|
...props
|
|
39
|
-
}: React.ComponentProps<'div'>):
|
|
39
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime72.JSX.Element;
|
|
40
40
|
declare function ItemTitle({
|
|
41
41
|
className,
|
|
42
42
|
...props
|
|
43
|
-
}: React.ComponentProps<'div'>):
|
|
43
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime72.JSX.Element;
|
|
44
44
|
declare function ItemDescription({
|
|
45
45
|
className,
|
|
46
46
|
...props
|
|
47
|
-
}: React.ComponentProps<'p'>):
|
|
47
|
+
}: React.ComponentProps<'p'>): react_jsx_runtime72.JSX.Element;
|
|
48
48
|
declare function ItemActions({
|
|
49
49
|
className,
|
|
50
50
|
...props
|
|
51
|
-
}: React.ComponentProps<'div'>):
|
|
51
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime72.JSX.Element;
|
|
52
52
|
declare function ItemHeader({
|
|
53
53
|
className,
|
|
54
54
|
...props
|
|
55
|
-
}: React.ComponentProps<'div'>):
|
|
55
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime72.JSX.Element;
|
|
56
56
|
declare function ItemFooter({
|
|
57
57
|
className,
|
|
58
58
|
...props
|
|
59
|
-
}: React.ComponentProps<'div'>):
|
|
59
|
+
}: React.ComponentProps<'div'>): react_jsx_runtime72.JSX.Element;
|
|
60
60
|
//#endregion
|
|
61
61
|
export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle };
|
|
62
62
|
//# sourceMappingURL=item.d.mts.map
|
package/dist/ui/item.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"../dist-
|
|
1
|
+
import{t as e}from"../dist-CvmzZ_6C.mjs";import{t}from"../separator-Bf0gymN4.mjs";import{cn as n}from"@customafk/react-toolkit/utils";import{cva as r}from"class-variance-authority";import{jsx as i}from"react/jsx-runtime";function a({className:e,...t}){return i(`div`,{role:`list`,"data-slot":`item-group`,className:n(`group/item-group flex flex-col`,e),...t})}function o({className:e,...r}){return i(t,{"data-slot":`item-separator`,orientation:`horizontal`,className:n(`my-0`,e),...r})}const s=r(`group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-primary-strong focus-visible:ring-primary-weak focus-visible:ring-[3px]`,{variants:{variant:{default:`bg-transparent`,outline:`border-border`,muted:`bg-muted-weak`},size:{default:`p-4 gap-4 `,sm:`py-3 px-4 gap-2.5`}},defaultVariants:{variant:`default`,size:`default`}});function c({className:t,variant:r=`default`,size:a=`default`,asChild:o=!1,...c}){return i(o?e:`div`,{"data-slot":`item`,"data-variant":r,"data-size":a,className:n(s({variant:r,size:a,className:t})),...c})}const l=r(`flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5`,{variants:{variant:{default:`bg-transparent`,icon:`size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4`,image:`size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover`}},defaultVariants:{variant:`default`}});function u({className:e,variant:t=`default`,...r}){return i(`div`,{"data-slot":`item-media`,"data-variant":t,className:n(l({variant:t,className:e})),...r})}function d({className:e,...t}){return i(`div`,{"data-slot":`item-content`,className:n(`flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none`,e),...t})}function f({className:e,...t}){return i(`div`,{"data-slot":`item-title`,className:n(`flex w-fit items-center gap-2 text-sm leading-snug font-medium`,e),...t})}function p({className:e,...t}){return i(`p`,{"data-slot":`item-description`,className:n(`text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance`,`[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4`,e),...t})}function m({className:e,...t}){return i(`div`,{"data-slot":`item-actions`,className:n(`flex items-center gap-2`,e),...t})}function h({className:e,...t}){return i(`div`,{"data-slot":`item-header`,className:n(`flex basis-full items-center justify-between gap-2`,e),...t})}function g({className:e,...t}){return i(`div`,{"data-slot":`item-footer`,className:n(`flex basis-full items-center justify-between gap-2`,e),...t})}export{c as Item,m as ItemActions,d as ItemContent,p as ItemDescription,g as ItemFooter,a as ItemGroup,h as ItemHeader,u as ItemMedia,o as ItemSeparator,f as ItemTitle};
|
|
2
2
|
//# sourceMappingURL=item.mjs.map
|
package/dist/ui/label.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../label-
|
|
1
|
+
"use client";const e=require(`../label-BzfsTrVt.cjs`);exports.Label=e.t;
|
package/dist/ui/label.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime141 from "react/jsx-runtime";
|
|
2
2
|
import { Label as Label$1 } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/label.d.ts
|
|
5
5
|
declare function Label({
|
|
6
6
|
className,
|
|
7
7
|
...props
|
|
8
|
-
}: React.ComponentProps<typeof Label$1.Root>):
|
|
8
|
+
}: React.ComponentProps<typeof Label$1.Root>): react_jsx_runtime141.JSX.Element;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { Label };
|
|
11
11
|
//# sourceMappingURL=label.d.cts.map
|
package/dist/ui/label.d.mts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime83 from "react/jsx-runtime";
|
|
2
2
|
import { Label as Label$1 } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/label.d.ts
|
|
5
5
|
declare function Label({
|
|
6
6
|
className,
|
|
7
7
|
...props
|
|
8
|
-
}: React.ComponentProps<typeof Label$1.Root>):
|
|
8
|
+
}: React.ComponentProps<typeof Label$1.Root>): react_jsx_runtime83.JSX.Element;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { Label };
|
|
11
11
|
//# sourceMappingURL=label.d.mts.map
|
package/dist/ui/label.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{t as e}from"../label-
|
|
1
|
+
"use client";import{t as e}from"../label-Dqr8nxWi.mjs";export{e as Label};
|
package/dist/ui/menubar.d.mts
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime214 from "react/jsx-runtime";
|
|
2
2
|
import { Menubar as Menubar$1 } from "radix-ui";
|
|
3
3
|
|
|
4
4
|
//#region packages/components/ui/menubar.d.ts
|
|
5
5
|
declare function Menubar({
|
|
6
6
|
className,
|
|
7
7
|
...props
|
|
8
|
-
}: React.ComponentProps<typeof Menubar$1.Root>):
|
|
8
|
+
}: React.ComponentProps<typeof Menubar$1.Root>): react_jsx_runtime214.JSX.Element;
|
|
9
9
|
declare function MenubarMenu({
|
|
10
10
|
...props
|
|
11
|
-
}: React.ComponentProps<typeof Menubar$1.Menu>):
|
|
11
|
+
}: React.ComponentProps<typeof Menubar$1.Menu>): react_jsx_runtime214.JSX.Element;
|
|
12
12
|
declare function MenubarGroup({
|
|
13
13
|
...props
|
|
14
|
-
}: React.ComponentProps<typeof Menubar$1.Group>):
|
|
14
|
+
}: React.ComponentProps<typeof Menubar$1.Group>): react_jsx_runtime214.JSX.Element;
|
|
15
15
|
declare function MenubarPortal({
|
|
16
16
|
...props
|
|
17
|
-
}: React.ComponentProps<typeof Menubar$1.Portal>):
|
|
17
|
+
}: React.ComponentProps<typeof Menubar$1.Portal>): react_jsx_runtime214.JSX.Element;
|
|
18
18
|
declare function MenubarRadioGroup({
|
|
19
19
|
...props
|
|
20
|
-
}: React.ComponentProps<typeof Menubar$1.RadioGroup>):
|
|
20
|
+
}: React.ComponentProps<typeof Menubar$1.RadioGroup>): react_jsx_runtime214.JSX.Element;
|
|
21
21
|
declare function MenubarTrigger({
|
|
22
22
|
className,
|
|
23
23
|
...props
|
|
24
|
-
}: React.ComponentProps<typeof Menubar$1.Trigger>):
|
|
24
|
+
}: React.ComponentProps<typeof Menubar$1.Trigger>): react_jsx_runtime214.JSX.Element;
|
|
25
25
|
declare function MenubarContent({
|
|
26
26
|
className,
|
|
27
27
|
align,
|
|
28
28
|
alignOffset,
|
|
29
29
|
sideOffset,
|
|
30
30
|
...props
|
|
31
|
-
}: React.ComponentProps<typeof Menubar$1.Content>):
|
|
31
|
+
}: React.ComponentProps<typeof Menubar$1.Content>): react_jsx_runtime214.JSX.Element;
|
|
32
32
|
declare function MenubarItem({
|
|
33
33
|
className,
|
|
34
34
|
inset,
|
|
@@ -37,36 +37,36 @@ declare function MenubarItem({
|
|
|
37
37
|
}: React.ComponentProps<typeof Menubar$1.Item> & {
|
|
38
38
|
inset?: boolean;
|
|
39
39
|
variant?: 'default' | 'destructive';
|
|
40
|
-
}):
|
|
40
|
+
}): react_jsx_runtime214.JSX.Element;
|
|
41
41
|
declare function MenubarCheckboxItem({
|
|
42
42
|
className,
|
|
43
43
|
children,
|
|
44
44
|
checked,
|
|
45
45
|
...props
|
|
46
|
-
}: React.ComponentProps<typeof Menubar$1.CheckboxItem>):
|
|
46
|
+
}: React.ComponentProps<typeof Menubar$1.CheckboxItem>): react_jsx_runtime214.JSX.Element;
|
|
47
47
|
declare function MenubarRadioItem({
|
|
48
48
|
className,
|
|
49
49
|
children,
|
|
50
50
|
...props
|
|
51
|
-
}: React.ComponentProps<typeof Menubar$1.RadioItem>):
|
|
51
|
+
}: React.ComponentProps<typeof Menubar$1.RadioItem>): react_jsx_runtime214.JSX.Element;
|
|
52
52
|
declare function MenubarLabel({
|
|
53
53
|
className,
|
|
54
54
|
inset,
|
|
55
55
|
...props
|
|
56
56
|
}: React.ComponentProps<typeof Menubar$1.Label> & {
|
|
57
57
|
inset?: boolean;
|
|
58
|
-
}):
|
|
58
|
+
}): react_jsx_runtime214.JSX.Element;
|
|
59
59
|
declare function MenubarSeparator({
|
|
60
60
|
className,
|
|
61
61
|
...props
|
|
62
|
-
}: React.ComponentProps<typeof Menubar$1.Separator>):
|
|
62
|
+
}: React.ComponentProps<typeof Menubar$1.Separator>): react_jsx_runtime214.JSX.Element;
|
|
63
63
|
declare function MenubarShortcut({
|
|
64
64
|
className,
|
|
65
65
|
...props
|
|
66
|
-
}: React.ComponentProps<'span'>):
|
|
66
|
+
}: React.ComponentProps<'span'>): react_jsx_runtime214.JSX.Element;
|
|
67
67
|
declare function MenubarSub({
|
|
68
68
|
...props
|
|
69
|
-
}: React.ComponentProps<typeof Menubar$1.Sub>):
|
|
69
|
+
}: React.ComponentProps<typeof Menubar$1.Sub>): react_jsx_runtime214.JSX.Element;
|
|
70
70
|
declare function MenubarSubTrigger({
|
|
71
71
|
className,
|
|
72
72
|
inset,
|
|
@@ -74,11 +74,11 @@ declare function MenubarSubTrigger({
|
|
|
74
74
|
...props
|
|
75
75
|
}: React.ComponentProps<typeof Menubar$1.SubTrigger> & {
|
|
76
76
|
inset?: boolean;
|
|
77
|
-
}):
|
|
77
|
+
}): react_jsx_runtime214.JSX.Element;
|
|
78
78
|
declare function MenubarSubContent({
|
|
79
79
|
className,
|
|
80
80
|
...props
|
|
81
|
-
}: React.ComponentProps<typeof Menubar$1.SubContent>):
|
|
81
|
+
}: React.ComponentProps<typeof Menubar$1.SubContent>): react_jsx_runtime214.JSX.Element;
|
|
82
82
|
//#endregion
|
|
83
83
|
export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger };
|
|
84
84
|
//# sourceMappingURL=menubar.d.mts.map
|
package/dist/ui/multi-select.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);require(`../button.variants-
|
|
1
|
+
"use client";const e=require(`../chunk-Bmb41Sf3.cjs`);require(`../heading-BEm5CCSE.cjs`),require(`../paragraph-4z_6Z5aj.cjs`),require(`../button.variants-8QOIR433.cjs`);const t=require(`../button-8Snjc8iT.cjs`);require(`../close-D_Ge7gnP.cjs`),require(`../dialog-D5TBBX99.cjs`);const n=require(`../command-BciJADha.cjs`);let r=require(`@customafk/react-toolkit/utils`),i=require(`react`),a=require(`react/jsx-runtime`),o=require(`lucide-react`),s=require(`cmdk`);function c(e,t){let[n,r]=(0,i.useState)(e);return(0,i.useEffect)(()=>{let n=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(n)}},[e,t]),n}function l(e,t){if(e.length===0)return{};if(!t)return{"":e};let n={};return e.forEach(e=>{let r=e[t]||``;n[r]||(n[r]=[]),n[r].push(e)}),n}function u(e,t){let n=JSON.parse(JSON.stringify(e));for(let[e,r]of Object.entries(n))n[e]=r.filter(e=>!t.find(t=>t.value===e.value));return n}function d(e,t){for(let[,n]of Object.entries(e))if(n.some(e=>t.find(t=>t.value===e.value)))return!0;return!1}const f=(0,i.forwardRef)(({className:e,...t},n)=>(0,s.useCommandState)(e=>e.filtered.count===0)?(0,a.jsx)(`div`,{ref:n,className:(0,r.cn)(`px-2 py-4 text-center text-sm`,e),"cmdk-empty":``,role:`presentation`,...t}):null);f.displayName=`CommandEmpty`;const p=(0,i.forwardRef)(({value:e,onChange:p,placeholder:m,defaultOptions:h=[],options:g,delay:_,onSearch:v,onSearchSync:y,loadingIndicator:b,emptyIndicator:x,maxSelected:S=2**53-1,onMaxSelected:C,hidePlaceholderWhenSelected:w,disabled:T,groupBy:E,className:D,badgeClassName:O,selectFirstItem:k=!0,creatable:A=!1,triggerSearchOnFocus:j=!1,commandProps:M,inputProps:N,hideClearAllButton:P=!1,onAddNewItem:F},I)=>{let L=(0,i.useRef)(null),R=(0,i.useRef)(null),[z,B]=(0,i.useState)(!1),[V,H]=(0,i.useState)(!1),[U,W]=(0,i.useState)(!1),[G,K]=(0,i.useState)(e||[]),[q,J]=(0,i.useState)(l(h,E)),[Y,X]=(0,i.useState)(``),Z=c(Y,_||500);(0,i.useImperativeHandle)(I,()=>({selectedValue:[...G],input:L.current,focus:()=>L?.current?.focus(),reset:()=>K([])}),[G]);let Q=(0,i.useCallback)(e=>{R.current&&!R.current.contains(e.target)&&L.current&&!L.current.contains(e.target)&&(B(!1),L.current.blur())},[]),$=(0,i.useCallback)(e=>{let t=G.filter(t=>t.value!==e.value);K(t),p?.(t)},[p,G]),ee=(0,i.useCallback)(e=>{let t=L.current;t&&((e.key===`Delete`||e.key===`Backspace`)&&t.value===``&&G.length>0&&(G[G.length-1].fixed||$(G[G.length-1])),e.key===`Escape`&&t.blur())},[$,G]);(0,i.useEffect)(()=>(z?(document.addEventListener(`mousedown`,Q),document.addEventListener(`touchend`,Q)):(document.removeEventListener(`mousedown`,Q),document.removeEventListener(`touchend`,Q)),()=>{document.removeEventListener(`mousedown`,Q),document.removeEventListener(`touchend`,Q)}),[z]),(0,i.useEffect)(()=>{e&&K(e)},[e]),(0,i.useEffect)(()=>{if(!g||v)return;let e=l(g||[],E);JSON.stringify(e)!==JSON.stringify(q)&&J(e)},[h,g,E,v,q]),(0,i.useEffect)(()=>{let e=()=>{let e=y?.(Z);J(l(e||[],E))};(async()=>{!y||!z||(j&&e(),Z&&e())})()},[Z,E,z,j]),(0,i.useEffect)(()=>{let e=async()=>{W(!0),J(l(await v?.(Z)||[],E)),W(!1)};(async()=>{!v||!z||(j&&await e(),Z&&await e())})()},[Z,E,z,j]);let te=()=>{if(!A||d(q,[{value:Y,label:Y}])||G.find(e=>e.value===Y))return;let e=(0,a.jsx)(n.o,{value:Y,className:`cursor-pointer`,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onSelect:e=>{if(G.length>=S){C?.(G.length);return}X(``);let t=[...G,{value:e,label:e}];K(t),p?.(t)},children:`Create "${Y}"`});if(!v&&Y.length>0||v&&Z.length>0&&!U)return e},ne=(0,i.useCallback)(()=>{if(x)return v&&!A&&Object.keys(q).length===0?(0,a.jsx)(n.o,{value:`-`,disabled:!0,children:x}):(0,a.jsx)(f,{children:x})},[A,x,v,q]),re=(0,i.useMemo)(()=>u(q,G),[q,G]),ie=(0,i.useCallback)(()=>{if(M?.filter)return M.filter;if(A)return(e,t)=>e.toLowerCase().includes(t.toLowerCase())?1:-1},[A,M?.filter]);return(0,a.jsxs)(n.t,{ref:R,...M,onKeyDown:e=>{ee(e),M?.onKeyDown?.(e)},className:(0,r.cn)(`h-auto overflow-visible bg-transparent`,M?.className),shouldFilter:M?.shouldFilter===void 0?!v:M.shouldFilter,filter:ie(),children:[(0,a.jsx)(`div`,{className:(0,r.cn)(`border-border-weak relative rounded-md border text-sm transition-shadow`,`focus-within:border-primary`,`focus-within:ring-primary-weak`,`focus-within:ring-4`,`focus-within:outline-hidden`,`has-disabled:bg-muted`,`has-disabled:text-muted-foreground`,G.length!==0&&`p-1`,!T&&G.length!==0&&`cursor-text`,!P&&`pe-9`,D),onClick:()=>{T||L?.current?.focus()},children:(0,a.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[G.map(e=>(0,a.jsxs)(`div`,{className:(0,r.cn)(`animate-fadeIn`,`bg-background`,`hover:bg-background`,`border-border-weak border border-solid`,`text-text-positive-weak relative inline-flex h-7 cursor-default items-center rounded-md ps-2 pe-7 pl-2 text-xs font-medium transition-all`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-fixed:pe-2`,O),"data-fixed":e.fixed,"data-disabled":T||void 0,children:[e.label,(0,a.jsx)(`button`,{type:`button`,disabled:T||e.fixed,className:(0,r.cn)(`text-text-positive-muted absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors`,`hover:text-foreground`,`focus-visible:outline`,`focus-visible:outline-2`,`focus-visible:outline-primary-weak`,`disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`),onKeyDown:t=>{t.key===`Enter`&&$(e)},onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:()=>$(e),"aria-label":`Remove`,children:(0,a.jsx)(o.X,{size:14,strokeWidth:2,"aria-hidden":`true`})})]},e.value)),(0,a.jsx)(s.Command.Input,{...N,ref:L,value:Y,disabled:T,onValueChange:e=>{X(e),N?.onValueChange?.(e)},onBlur:e=>{V||B(!1),N?.onBlur?.(e)},onFocus:e=>{B(!0),j&&v?.(Z),N?.onFocus?.(e)},placeholder:w&&G.length!==0?``:m,className:(0,r.cn)(`placeholder:text-text-positive-muted flex-1 bg-transparent outline-hidden`,`disabled:placeholder:text-transparent`,{"w-full":w,"px-3 py-2":G.length===0,"ml-1":G.length!==0},N?.className)}),(0,a.jsx)(`button`,{type:`button`,onClick:()=>{K(G.filter(e=>e.fixed)),p?.(G.filter(e=>e.fixed))},className:(0,r.cn)(`text-muted-foreground/80`,`absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors`,`focus-visible:outline-2`,`hover:text-text-positive`,`focus-visible:outline-primary-weak`,(P||T||G.length<1||G.filter(({fixed:e})=>e).length===G.length)&&`hidden`),"aria-label":`Clear all`,children:(0,a.jsx)(o.X,{size:16,strokeWidth:2,"aria-hidden":`true`})})]})}),(0,a.jsx)(`div`,{className:`relative`,children:(0,a.jsx)(`div`,{className:(0,r.cn)(`shadow-dropdown absolute top-2 z-10 w-full overflow-hidden rounded-lg`,`data-[state=open]:animate-in`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95`,`data-[state=open]:zoom-in-95`,!z&&`hidden`),"data-state":z?`open`:`closed`,children:z&&(0,a.jsxs)(n.s,{className:`shadow-lg outline-hidden`,onMouseLeave:()=>{H(!1)},onMouseEnter:()=>{H(!0)},onMouseUp:()=>{L?.current?.focus()},children:[F&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.c,{}),(0,a.jsx)(n.i,{children:(0,a.jsxs)(t.t,{type:`button`,variant:`ghost`,className:`w-full font-normal [&_div]:justify-start`,onClick:F,children:[(0,a.jsx)(o.PlusIcon,{size:14,className:`opacity-60`,"aria-hidden":`true`}),`Thêm mới`]})})]}),U?b:(0,a.jsxs)(a.Fragment,{children:[ne(),te(),!k&&(0,a.jsx)(n.o,{value:`-`,className:`hidden`}),Object.entries(re).map(([e,t])=>(0,a.jsx)(n.i,{heading:e,className:`h-full overflow-auto`,children:t.map(e=>(0,a.jsx)(n.o,{value:e.value,disabled:e.disable,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onSelect:()=>{if(G.length>=S){C?.(G.length);return}let t=[...G,e];X(``),K(t),p?.(t)},className:(0,r.cn)(`cursor-pointer`,e.disable&&`cursor-not-allowed opacity-50`),children:e.label},e.value))},e))]})]})})})]})});p.displayName=`MultipleSelector`,exports.MultipleSelector=p,exports.useDebounce=c;
|
|
2
2
|
//# sourceMappingURL=multi-select.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select.cjs","names":["groupOption: GroupOption","CommandItem","value","Command","X","CommandPrimitive","CommandList","CommandSeparator","CommandGroup","Button","PlusIcon"],"sources":["../../packages/components/ui/multi-select.tsx"],"sourcesContent":["'use client';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { PlusIcon, X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { Command, CommandGroup, CommandItem, CommandList, CommandSeparator } from '@/components/ui/command';\n\nimport { Command as CommandPrimitive, useCommandState } from 'cmdk';\n\nexport interface Option {\n value: string;\n label: string;\n disable?: boolean;\n /** fixed option that can‘t be removed. */\n fixed?: boolean;\n /** Group the options by providing key. */\n [key: string]: string | boolean | undefined;\n}\ninterface GroupOption {\n [key: string]: Option[];\n}\n\ninterface MultipleSelectorProps {\n value?: Option[];\n defaultOptions?: Option[];\n /** manually controlled options */\n options?: Option[];\n placeholder?: string;\n /** Loading component. */\n loadingIndicator?: React.ReactNode;\n /** Empty component. */\n emptyIndicator?: React.ReactNode;\n /** Debounce time for async search. Only work with `onSearch`. */\n delay?: number;\n /**\n * Only work with `onSearch` prop. Trigger search when `onFocus`.\n * For example, when user click on the input, it will trigger the search to get initial options.\n **/\n triggerSearchOnFocus?: boolean;\n /** async search */\n onSearch?: (value: string) => Promise<Option[]>;\n /**\n * sync search. This search will not showing loadingIndicator.\n * The rest props are the same as async search.\n * i.e.: creatable, groupBy, delay.\n **/\n onSearchSync?: (value: string) => Option[];\n onChange?: (options: Option[]) => void;\n /** Limit the maximum number of selected options. */\n maxSelected?: number;\n /** When the number of selected options exceeds the limit, the onMaxSelected will be called. */\n onMaxSelected?: (maxLimit: number) => void;\n /** Hide the placeholder when there are options selected. */\n hidePlaceholderWhenSelected?: boolean;\n disabled?: boolean;\n /** Group the options base on provided key. */\n groupBy?: string;\n className?: string;\n badgeClassName?: string;\n /**\n * First item selected is a default behavior by cmdk. That is why the default is true.\n * This is a workaround solution by add a dummy item.\n *\n * @reference: https://github.com/pacocoursey/cmdk/issues/171\n */\n selectFirstItem?: boolean;\n /** Allow user to create option when there is no option matched. */\n creatable?: boolean;\n /** Props of `Command` */\n commandProps?: React.ComponentPropsWithoutRef<typeof Command>;\n /** Props of `CommandInput` */\n inputProps?: Omit<React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>, 'value' | 'placeholder' | 'disabled'>;\n /** hide the clear all button. */\n hideClearAllButton?: boolean;\n\n /** Add new item event for select with search */\n onAddNewItem?: () => void;\n}\n\nexport interface MultipleSelectorRef {\n selectedValue: Option[];\n input: HTMLInputElement;\n focus: () => void;\n reset: () => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nfunction transToGroupOption(options: Option[], groupBy?: string) {\n if (options.length === 0) {\n return {};\n }\n if (!groupBy) {\n return {\n '': options,\n };\n }\n\n const groupOption: GroupOption = {};\n options.forEach(option => {\n const key = (option[groupBy] as string) || '';\n if (!groupOption[key]) {\n groupOption[key] = [];\n }\n groupOption[key].push(option);\n });\n return groupOption;\n}\n\nfunction removePickedOption(groupOption: GroupOption, picked: Option[]) {\n const cloneOption = JSON.parse(JSON.stringify(groupOption)) as GroupOption;\n\n for (const [key, value] of Object.entries(cloneOption)) {\n cloneOption[key] = value.filter(val => !picked.find(p => p.value === val.value));\n }\n return cloneOption;\n}\n\nfunction isOptionsExist(groupOption: GroupOption, targetOption: Option[]) {\n for (const [, value] of Object.entries(groupOption)) {\n if (value.some(option => targetOption.find(p => p.value === option.value))) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The `CommandEmpty` of shadcn/ui will cause the cmdk empty not rendering correctly.\n * So we create one and copy the `Empty` implementation from `cmdk`.\n *\n * @reference: https://github.com/hsuanyi-chou/shadcn-ui-expansions/issues/34#issuecomment-1949561607\n **/\nconst CommandEmpty = forwardRef<HTMLDivElement, React.ComponentProps<typeof CommandPrimitive.Empty>>(({ className, ...props }, forwardedRef) => {\n const render = useCommandState(state => state.filtered.count === 0);\n\n if (!render) return null;\n\n return <div ref={forwardedRef} className={cn('px-2 py-4 text-center text-sm', className)} cmdk-empty=\"\" role=\"presentation\" {...props} />;\n});\n\nCommandEmpty.displayName = 'CommandEmpty';\n\nexport const MultipleSelector = forwardRef<MultipleSelectorRef, MultipleSelectorProps>(\n (\n {\n value,\n onChange,\n placeholder,\n defaultOptions: arrayDefaultOptions = [],\n options: arrayOptions,\n delay,\n onSearch,\n onSearchSync,\n loadingIndicator: LoadingIndicator,\n emptyIndicator,\n maxSelected = Number.MAX_SAFE_INTEGER,\n onMaxSelected,\n hidePlaceholderWhenSelected,\n disabled,\n groupBy,\n className,\n badgeClassName,\n selectFirstItem = true,\n creatable = false,\n triggerSearchOnFocus = false,\n commandProps,\n inputProps,\n hideClearAllButton = false,\n onAddNewItem,\n }: MultipleSelectorProps,\n ref: React.Ref<MultipleSelectorRef>\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null); // Added this\n\n const [open, setOpen] = useState(false);\n const [onScrollbar, setOnScrollbar] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const [selected, setSelected] = useState<Option[]>(value || []);\n const [options, setOptions] = useState<GroupOption>(transToGroupOption(arrayDefaultOptions, groupBy));\n const [inputValue, setInputValue] = useState('');\n\n const debouncedSearchTerm = useDebounce(inputValue, delay || 500);\n\n useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected]\n );\n\n const handleClickOutside = useCallback((event: MouseEvent | TouchEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node) && inputRef.current && !inputRef.current.contains(event.target as Node)) {\n setOpen(false);\n inputRef.current.blur();\n }\n }, []);\n\n const handleUnselect = useCallback(\n (option: Option) => {\n const newOptions = selected.filter(s => s.value !== option.value);\n setSelected(newOptions);\n onChange?.(newOptions);\n },\n [onChange, selected]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef.current;\n if (!input) return;\n\n if (e.key === 'Delete' || e.key === 'Backspace') {\n if (input.value === '' && selected.length > 0) {\n const lastSelectOption = selected[selected.length - 1];\n // If last item is fixed, we should not remove it.\n if (!lastSelectOption.fixed) {\n handleUnselect(selected[selected.length - 1]);\n }\n }\n }\n\n // This is not a default behavior of the <input /> field\n if (e.key === 'Escape') {\n input.blur();\n }\n },\n [handleUnselect, selected]\n );\n\n useEffect(() => {\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('touchend', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('touchend', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('touchend', handleClickOutside);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n useEffect(() => {\n if (value) {\n setSelected(value);\n }\n }, [value]);\n\n useEffect(() => {\n /** If `onSearch` is provided, do not trigger options updated. */\n if (!arrayOptions || onSearch) {\n return;\n }\n const newOption = transToGroupOption(arrayOptions || [], groupBy);\n if (JSON.stringify(newOption) !== JSON.stringify(options)) {\n setOptions(newOption);\n }\n }, [arrayDefaultOptions, arrayOptions, groupBy, onSearch, options]);\n\n useEffect(() => {\n /** sync search */\n\n const doSearchSync = () => {\n const res = onSearchSync?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n };\n\n const exec = async () => {\n if (!onSearchSync || !open) return;\n\n if (triggerSearchOnFocus) {\n doSearchSync();\n }\n\n if (debouncedSearchTerm) {\n doSearchSync();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n useEffect(() => {\n /** async search */\n\n const doSearch = async () => {\n setIsLoading(true);\n const res = await onSearch?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n setIsLoading(false);\n };\n\n const exec = async () => {\n if (!onSearch || !open) return;\n\n if (triggerSearchOnFocus) {\n await doSearch();\n }\n\n if (debouncedSearchTerm) {\n await doSearch();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n const CreatableItem = () => {\n if (!creatable) return undefined;\n if (isOptionsExist(options, [{ value: inputValue, label: inputValue }]) || selected.find(s => s.value === inputValue)) {\n return undefined;\n }\n\n const Item = (\n <CommandItem\n value={inputValue}\n className=\"cursor-pointer\"\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={(value: string) => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n setInputValue('');\n const newOptions = [...selected, { value, label: value }];\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n >\n {`Create \"${inputValue}\"`}\n </CommandItem>\n );\n\n // For normal creatable\n if (!onSearch && inputValue.length > 0) {\n return Item;\n }\n\n // For async search creatable. avoid showing creatable item before loading at first.\n if (onSearch && debouncedSearchTerm.length > 0 && !isLoading) {\n return Item;\n }\n\n return undefined;\n };\n\n const EmptyItem = useCallback(() => {\n if (!emptyIndicator) return undefined;\n\n // For async search that showing emptyIndicator\n if (onSearch && !creatable && Object.keys(options).length === 0) {\n return (\n <CommandItem value=\"-\" disabled>\n {emptyIndicator}\n </CommandItem>\n );\n }\n\n return <CommandEmpty>{emptyIndicator}</CommandEmpty>;\n }, [creatable, emptyIndicator, onSearch, options]);\n\n const selectables = useMemo<GroupOption>(() => removePickedOption(options, selected), [options, selected]);\n\n /** Avoid Creatable Selector freezing or lagging when paste a long string. */\n const commandFilter = useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n if (creatable) {\n return (value: string, search: string) => {\n return value.toLowerCase().includes(search.toLowerCase()) ? 1 : -1;\n };\n }\n // Using default filter in `cmdk`. We don‘t have to provide it.\n return undefined;\n }, [creatable, commandProps?.filter]);\n\n return (\n <Command\n ref={dropdownRef}\n {...commandProps}\n onKeyDown={e => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn('h-auto overflow-visible bg-transparent', commandProps?.className)}\n shouldFilter={commandProps?.shouldFilter !== undefined ? commandProps.shouldFilter : !onSearch} // When onSearch is provided, we don‘t want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <div\n className={cn(\n 'border-border-weak relative rounded-md border text-sm transition-shadow',\n 'focus-within:border-primary',\n 'focus-within:ring-primary-weak',\n 'focus-within:ring-4',\n 'focus-within:outline-hidden',\n 'has-disabled:bg-muted',\n 'has-disabled:text-muted-foreground',\n selected.length !== 0 && 'p-1',\n !disabled && selected.length !== 0 && 'cursor-text',\n !hideClearAllButton && 'pe-9',\n className\n )}\n onClick={() => {\n if (disabled) return;\n inputRef?.current?.focus();\n }}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.map(option => {\n return (\n <div\n key={option.value}\n className={cn(\n 'animate-fadeIn',\n 'bg-background',\n 'hover:bg-background',\n 'border-border-weak border border-solid',\n 'text-text-positive-weak relative inline-flex h-7 cursor-default items-center rounded-md ps-2 pe-7 pl-2 text-xs font-medium transition-all',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-fixed:pe-2',\n badgeClassName\n )}\n data-fixed={option.fixed}\n data-disabled={disabled || undefined}\n >\n {option.label}\n <button\n type=\"button\"\n disabled={disabled || option.fixed}\n className={cn(\n 'text-text-positive-muted absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors',\n 'hover:text-foreground',\n 'focus-visible:outline',\n 'focus-visible:outline-2',\n 'focus-visible:outline-primary-weak',\n 'disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50'\n )}\n onKeyDown={e => {\n if (e.key !== 'Enter') return;\n handleUnselect(option);\n }}\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleUnselect(option)}\n aria-label=\"Remove\"\n >\n <X size={14} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n );\n })}\n {/* Avoid having the \"Search\" Icon */}\n <CommandPrimitive.Input\n {...inputProps}\n ref={inputRef}\n value={inputValue}\n disabled={disabled}\n onValueChange={value => {\n setInputValue(value);\n inputProps?.onValueChange?.(value);\n }}\n onBlur={event => {\n if (!onScrollbar) {\n setOpen(false);\n }\n inputProps?.onBlur?.(event);\n }}\n onFocus={event => {\n setOpen(true);\n if (triggerSearchOnFocus) {\n onSearch?.(debouncedSearchTerm);\n }\n inputProps?.onFocus?.(event);\n }}\n placeholder={hidePlaceholderWhenSelected && selected.length !== 0 ? '' : placeholder}\n className={cn(\n 'placeholder:text-text-positive-muted flex-1 bg-transparent outline-hidden',\n 'disabled:placeholder:text-transparent',\n {\n 'w-full': hidePlaceholderWhenSelected,\n 'px-3 py-2': selected.length === 0,\n 'ml-1': selected.length !== 0,\n },\n inputProps?.className\n )}\n />\n <button\n type=\"button\"\n onClick={() => {\n setSelected(selected.filter(s => s.fixed));\n onChange?.(selected.filter(s => s.fixed));\n }}\n className={cn(\n 'text-muted-foreground/80',\n 'absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors',\n 'focus-visible:outline-2',\n 'hover:text-text-positive',\n 'focus-visible:outline-primary-weak',\n (hideClearAllButton || disabled || selected.length < 1 || selected.filter(({ fixed }) => fixed).length === selected.length) && 'hidden'\n )}\n aria-label=\"Clear all\"\n >\n <X size={16} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n <div className=\"relative\">\n <div\n className={cn(\n 'shadow-dropdown absolute top-2 z-10 w-full overflow-hidden rounded-lg',\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 'data-[state=closed]:zoom-out-95',\n 'data-[state=open]:zoom-in-95',\n !open && 'hidden'\n )}\n data-state={open ? 'open' : 'closed'}\n >\n {open && (\n <CommandList\n className=\"shadow-lg outline-hidden\"\n onMouseLeave={() => {\n setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {onAddNewItem && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <Button type=\"button\" variant=\"ghost\" className=\"w-full font-normal [&_div]:justify-start\" onClick={onAddNewItem}>\n <PlusIcon size={14} className=\"opacity-60\" aria-hidden=\"true\" />\n Thêm mới\n </Button>\n </CommandGroup>\n </>\n )}\n {isLoading ? (\n LoadingIndicator\n ) : (\n <>\n {EmptyItem()}\n {CreatableItem()}\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n {Object.entries(selectables).map(([key, dropdowns]) => (\n <CommandGroup key={key} heading={key} className=\"h-full overflow-auto\">\n {dropdowns.map(option => {\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n disabled={option.disable}\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={() => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n const newOptions = [...selected, option];\n setInputValue('');\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n className={cn('cursor-pointer', option.disable && 'cursor-not-allowed opacity-50')}\n >\n {option.label}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n </>\n )}\n </CommandList>\n )}\n </div>\n </div>\n </Command>\n );\n }\n);\n\nMultipleSelector.displayName = 'MultipleSelector';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multi-select.cjs","names":["groupOption: GroupOption","CommandItem","value","Command","X","CommandPrimitive","CommandList","CommandSeparator","CommandGroup","Button","PlusIcon"],"sources":["../../packages/components/ui/multi-select.tsx"],"sourcesContent":["'use client';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { PlusIcon, X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { Command, CommandGroup, CommandItem, CommandList, CommandSeparator } from '@/components/ui/command';\n\nimport { Command as CommandPrimitive, useCommandState } from 'cmdk';\n\nexport interface Option {\n value: string;\n label: string;\n disable?: boolean;\n /** fixed option that can‘t be removed. */\n fixed?: boolean;\n /** Group the options by providing key. */\n [key: string]: string | boolean | undefined;\n}\ninterface GroupOption {\n [key: string]: Option[];\n}\n\ninterface MultipleSelectorProps {\n value?: Option[];\n defaultOptions?: Option[];\n /** manually controlled options */\n options?: Option[];\n placeholder?: string;\n /** Loading component. */\n loadingIndicator?: React.ReactNode;\n /** Empty component. */\n emptyIndicator?: React.ReactNode;\n /** Debounce time for async search. Only work with `onSearch`. */\n delay?: number;\n /**\n * Only work with `onSearch` prop. Trigger search when `onFocus`.\n * For example, when user click on the input, it will trigger the search to get initial options.\n **/\n triggerSearchOnFocus?: boolean;\n /** async search */\n onSearch?: (value: string) => Promise<Option[]>;\n /**\n * sync search. This search will not showing loadingIndicator.\n * The rest props are the same as async search.\n * i.e.: creatable, groupBy, delay.\n **/\n onSearchSync?: (value: string) => Option[];\n onChange?: (options: Option[]) => void;\n /** Limit the maximum number of selected options. */\n maxSelected?: number;\n /** When the number of selected options exceeds the limit, the onMaxSelected will be called. */\n onMaxSelected?: (maxLimit: number) => void;\n /** Hide the placeholder when there are options selected. */\n hidePlaceholderWhenSelected?: boolean;\n disabled?: boolean;\n /** Group the options base on provided key. */\n groupBy?: string;\n className?: string;\n badgeClassName?: string;\n /**\n * First item selected is a default behavior by cmdk. That is why the default is true.\n * This is a workaround solution by add a dummy item.\n *\n * @reference: https://github.com/pacocoursey/cmdk/issues/171\n */\n selectFirstItem?: boolean;\n /** Allow user to create option when there is no option matched. */\n creatable?: boolean;\n /** Props of `Command` */\n commandProps?: React.ComponentPropsWithoutRef<typeof Command>;\n /** Props of `CommandInput` */\n inputProps?: Omit<React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>, 'value' | 'placeholder' | 'disabled'>;\n /** hide the clear all button. */\n hideClearAllButton?: boolean;\n\n /** Add new item event for select with search */\n onAddNewItem?: () => void;\n}\n\nexport interface MultipleSelectorRef {\n selectedValue: Option[];\n input: HTMLInputElement;\n focus: () => void;\n reset: () => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nfunction transToGroupOption(options: Option[], groupBy?: string) {\n if (options.length === 0) {\n return {};\n }\n if (!groupBy) {\n return {\n '': options,\n };\n }\n\n const groupOption: GroupOption = {};\n options.forEach(option => {\n const key = (option[groupBy] as string) || '';\n if (!groupOption[key]) {\n groupOption[key] = [];\n }\n groupOption[key].push(option);\n });\n return groupOption;\n}\n\nfunction removePickedOption(groupOption: GroupOption, picked: Option[]) {\n const cloneOption = JSON.parse(JSON.stringify(groupOption)) as GroupOption;\n\n for (const [key, value] of Object.entries(cloneOption)) {\n cloneOption[key] = value.filter(val => !picked.find(p => p.value === val.value));\n }\n return cloneOption;\n}\n\nfunction isOptionsExist(groupOption: GroupOption, targetOption: Option[]) {\n for (const [, value] of Object.entries(groupOption)) {\n if (value.some(option => targetOption.find(p => p.value === option.value))) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The `CommandEmpty` of shadcn/ui will cause the cmdk empty not rendering correctly.\n * So we create one and copy the `Empty` implementation from `cmdk`.\n *\n * @reference: https://github.com/hsuanyi-chou/shadcn-ui-expansions/issues/34#issuecomment-1949561607\n **/\nconst CommandEmpty = forwardRef<HTMLDivElement, React.ComponentProps<typeof CommandPrimitive.Empty>>(({ className, ...props }, forwardedRef) => {\n const render = useCommandState(state => state.filtered.count === 0);\n\n if (!render) return null;\n\n return <div ref={forwardedRef} className={cn('px-2 py-4 text-center text-sm', className)} cmdk-empty=\"\" role=\"presentation\" {...props} />;\n});\n\nCommandEmpty.displayName = 'CommandEmpty';\n\nexport const MultipleSelector = forwardRef<MultipleSelectorRef, MultipleSelectorProps>(\n (\n {\n value,\n onChange,\n placeholder,\n defaultOptions: arrayDefaultOptions = [],\n options: arrayOptions,\n delay,\n onSearch,\n onSearchSync,\n loadingIndicator: LoadingIndicator,\n emptyIndicator,\n maxSelected = Number.MAX_SAFE_INTEGER,\n onMaxSelected,\n hidePlaceholderWhenSelected,\n disabled,\n groupBy,\n className,\n badgeClassName,\n selectFirstItem = true,\n creatable = false,\n triggerSearchOnFocus = false,\n commandProps,\n inputProps,\n hideClearAllButton = false,\n onAddNewItem,\n }: MultipleSelectorProps,\n ref: React.Ref<MultipleSelectorRef>\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null); // Added this\n\n const [open, setOpen] = useState(false);\n const [onScrollbar, setOnScrollbar] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const [selected, setSelected] = useState<Option[]>(value || []);\n const [options, setOptions] = useState<GroupOption>(transToGroupOption(arrayDefaultOptions, groupBy));\n const [inputValue, setInputValue] = useState('');\n\n const debouncedSearchTerm = useDebounce(inputValue, delay || 500);\n\n useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected]\n );\n\n const handleClickOutside = useCallback((event: MouseEvent | TouchEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node) && inputRef.current && !inputRef.current.contains(event.target as Node)) {\n setOpen(false);\n inputRef.current.blur();\n }\n }, []);\n\n const handleUnselect = useCallback(\n (option: Option) => {\n const newOptions = selected.filter(s => s.value !== option.value);\n setSelected(newOptions);\n onChange?.(newOptions);\n },\n [onChange, selected]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef.current;\n if (!input) return;\n\n if (e.key === 'Delete' || e.key === 'Backspace') {\n if (input.value === '' && selected.length > 0) {\n const lastSelectOption = selected[selected.length - 1];\n // If last item is fixed, we should not remove it.\n if (!lastSelectOption.fixed) {\n handleUnselect(selected[selected.length - 1]);\n }\n }\n }\n\n // This is not a default behavior of the <input /> field\n if (e.key === 'Escape') {\n input.blur();\n }\n },\n [handleUnselect, selected]\n );\n\n useEffect(() => {\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('touchend', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('touchend', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('touchend', handleClickOutside);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n useEffect(() => {\n if (value) {\n setSelected(value);\n }\n }, [value]);\n\n useEffect(() => {\n /** If `onSearch` is provided, do not trigger options updated. */\n if (!arrayOptions || onSearch) {\n return;\n }\n const newOption = transToGroupOption(arrayOptions || [], groupBy);\n if (JSON.stringify(newOption) !== JSON.stringify(options)) {\n setOptions(newOption);\n }\n }, [arrayDefaultOptions, arrayOptions, groupBy, onSearch, options]);\n\n useEffect(() => {\n /** sync search */\n\n const doSearchSync = () => {\n const res = onSearchSync?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n };\n\n const exec = async () => {\n if (!onSearchSync || !open) return;\n\n if (triggerSearchOnFocus) {\n doSearchSync();\n }\n\n if (debouncedSearchTerm) {\n doSearchSync();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n useEffect(() => {\n /** async search */\n\n const doSearch = async () => {\n setIsLoading(true);\n const res = await onSearch?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n setIsLoading(false);\n };\n\n const exec = async () => {\n if (!onSearch || !open) return;\n\n if (triggerSearchOnFocus) {\n await doSearch();\n }\n\n if (debouncedSearchTerm) {\n await doSearch();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n const CreatableItem = () => {\n if (!creatable) return undefined;\n if (isOptionsExist(options, [{ value: inputValue, label: inputValue }]) || selected.find(s => s.value === inputValue)) {\n return undefined;\n }\n\n const Item = (\n <CommandItem\n value={inputValue}\n className=\"cursor-pointer\"\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={(value: string) => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n setInputValue('');\n const newOptions = [...selected, { value, label: value }];\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n >\n {`Create \"${inputValue}\"`}\n </CommandItem>\n );\n\n // For normal creatable\n if (!onSearch && inputValue.length > 0) {\n return Item;\n }\n\n // For async search creatable. avoid showing creatable item before loading at first.\n if (onSearch && debouncedSearchTerm.length > 0 && !isLoading) {\n return Item;\n }\n\n return undefined;\n };\n\n const EmptyItem = useCallback(() => {\n if (!emptyIndicator) return undefined;\n\n // For async search that showing emptyIndicator\n if (onSearch && !creatable && Object.keys(options).length === 0) {\n return (\n <CommandItem value=\"-\" disabled>\n {emptyIndicator}\n </CommandItem>\n );\n }\n\n return <CommandEmpty>{emptyIndicator}</CommandEmpty>;\n }, [creatable, emptyIndicator, onSearch, options]);\n\n const selectables = useMemo<GroupOption>(() => removePickedOption(options, selected), [options, selected]);\n\n /** Avoid Creatable Selector freezing or lagging when paste a long string. */\n const commandFilter = useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n if (creatable) {\n return (value: string, search: string) => {\n return value.toLowerCase().includes(search.toLowerCase()) ? 1 : -1;\n };\n }\n // Using default filter in `cmdk`. We don‘t have to provide it.\n return undefined;\n }, [creatable, commandProps?.filter]);\n\n return (\n <Command\n ref={dropdownRef}\n {...commandProps}\n onKeyDown={e => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn('h-auto overflow-visible bg-transparent', commandProps?.className)}\n shouldFilter={commandProps?.shouldFilter !== undefined ? commandProps.shouldFilter : !onSearch} // When onSearch is provided, we don‘t want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <div\n className={cn(\n 'border-border-weak relative rounded-md border text-sm transition-shadow',\n 'focus-within:border-primary',\n 'focus-within:ring-primary-weak',\n 'focus-within:ring-4',\n 'focus-within:outline-hidden',\n 'has-disabled:bg-muted',\n 'has-disabled:text-muted-foreground',\n selected.length !== 0 && 'p-1',\n !disabled && selected.length !== 0 && 'cursor-text',\n !hideClearAllButton && 'pe-9',\n className\n )}\n onClick={() => {\n if (disabled) return;\n inputRef?.current?.focus();\n }}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.map(option => {\n return (\n <div\n key={option.value}\n className={cn(\n 'animate-fadeIn',\n 'bg-background',\n 'hover:bg-background',\n 'border-border-weak border border-solid',\n 'text-text-positive-weak relative inline-flex h-7 cursor-default items-center rounded-md ps-2 pe-7 pl-2 text-xs font-medium transition-all',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-fixed:pe-2',\n badgeClassName\n )}\n data-fixed={option.fixed}\n data-disabled={disabled || undefined}\n >\n {option.label}\n <button\n type=\"button\"\n disabled={disabled || option.fixed}\n className={cn(\n 'text-text-positive-muted absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors',\n 'hover:text-foreground',\n 'focus-visible:outline',\n 'focus-visible:outline-2',\n 'focus-visible:outline-primary-weak',\n 'disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50'\n )}\n onKeyDown={e => {\n if (e.key !== 'Enter') return;\n handleUnselect(option);\n }}\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleUnselect(option)}\n aria-label=\"Remove\"\n >\n <X size={14} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n );\n })}\n {/* Avoid having the \"Search\" Icon */}\n <CommandPrimitive.Input\n {...inputProps}\n ref={inputRef}\n value={inputValue}\n disabled={disabled}\n onValueChange={value => {\n setInputValue(value);\n inputProps?.onValueChange?.(value);\n }}\n onBlur={event => {\n if (!onScrollbar) {\n setOpen(false);\n }\n inputProps?.onBlur?.(event);\n }}\n onFocus={event => {\n setOpen(true);\n if (triggerSearchOnFocus) {\n onSearch?.(debouncedSearchTerm);\n }\n inputProps?.onFocus?.(event);\n }}\n placeholder={hidePlaceholderWhenSelected && selected.length !== 0 ? '' : placeholder}\n className={cn(\n 'placeholder:text-text-positive-muted flex-1 bg-transparent outline-hidden',\n 'disabled:placeholder:text-transparent',\n {\n 'w-full': hidePlaceholderWhenSelected,\n 'px-3 py-2': selected.length === 0,\n 'ml-1': selected.length !== 0,\n },\n inputProps?.className\n )}\n />\n <button\n type=\"button\"\n onClick={() => {\n setSelected(selected.filter(s => s.fixed));\n onChange?.(selected.filter(s => s.fixed));\n }}\n className={cn(\n 'text-muted-foreground/80',\n 'absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors',\n 'focus-visible:outline-2',\n 'hover:text-text-positive',\n 'focus-visible:outline-primary-weak',\n (hideClearAllButton || disabled || selected.length < 1 || selected.filter(({ fixed }) => fixed).length === selected.length) && 'hidden'\n )}\n aria-label=\"Clear all\"\n >\n <X size={16} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n <div className=\"relative\">\n <div\n className={cn(\n 'shadow-dropdown absolute top-2 z-10 w-full overflow-hidden rounded-lg',\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 'data-[state=closed]:zoom-out-95',\n 'data-[state=open]:zoom-in-95',\n !open && 'hidden'\n )}\n data-state={open ? 'open' : 'closed'}\n >\n {open && (\n <CommandList\n className=\"shadow-lg outline-hidden\"\n onMouseLeave={() => {\n setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {onAddNewItem && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <Button type=\"button\" variant=\"ghost\" className=\"w-full font-normal [&_div]:justify-start\" onClick={onAddNewItem}>\n <PlusIcon size={14} className=\"opacity-60\" aria-hidden=\"true\" />\n Thêm mới\n </Button>\n </CommandGroup>\n </>\n )}\n {isLoading ? (\n LoadingIndicator\n ) : (\n <>\n {EmptyItem()}\n {CreatableItem()}\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n {Object.entries(selectables).map(([key, dropdowns]) => (\n <CommandGroup key={key} heading={key} className=\"h-full overflow-auto\">\n {dropdowns.map(option => {\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n disabled={option.disable}\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={() => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n const newOptions = [...selected, option];\n setInputValue('');\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n className={cn('cursor-pointer', option.disable && 'cursor-not-allowed opacity-50')}\n >\n {option.label}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n </>\n )}\n </CommandList>\n )}\n </div>\n </div>\n </Command>\n );\n }\n);\n\nMultipleSelector.displayName = 'MultipleSelector';\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command as Command$1 } from "./command.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react26 from "react";
|
|
3
3
|
import { Command } from "cmdk";
|
|
4
4
|
|
|
5
5
|
//#region packages/components/ui/multi-select.d.ts
|
|
@@ -74,7 +74,7 @@ interface MultipleSelectorRef {
|
|
|
74
74
|
reset: () => void;
|
|
75
75
|
}
|
|
76
76
|
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
77
|
-
declare const MultipleSelector:
|
|
77
|
+
declare const MultipleSelector: react26.ForwardRefExoticComponent<MultipleSelectorProps & react26.RefAttributes<MultipleSelectorRef>>;
|
|
78
78
|
//#endregion
|
|
79
79
|
export { MultipleSelector, MultipleSelectorRef, Option, useDebounce };
|
|
80
80
|
//# sourceMappingURL=multi-select.d.cts.map
|