@customafk/lunas-ui 0.2.44 → 0.2.47
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/{alert-BbvPwf2x.mjs → alert-BzBDfGk2.js} +1 -1
- package/dist/alert-BzBDfGk2.js.map +1 -0
- package/dist/{alert-B02cVKWp.d.cts → alert-CNFuxKp7.d.cts} +6 -6
- package/dist/{alert-DHSm8bMn.d.mts → alert-EH6BsbAj.d.ts} +8 -8
- package/dist/{avatar-fltdRVsJ.mjs → avatar-Hpj8lmux.js} +1 -1
- package/dist/avatar-Hpj8lmux.js.map +1 -0
- package/dist/{badge-CDGBGq8X.mjs → badge-CRpRXSuO.js} +1 -1
- package/dist/badge-CRpRXSuO.js.map +1 -0
- package/dist/{badge-BxSbkHQL.d.mts → badge-Cca0AHjT.d.ts} +7 -7
- package/dist/{badge-zrAIDd-9.d.cts → badge-D0JnPurs.d.cts} +7 -7
- package/dist/{button-D3d7M90P.d.mts → button-Cr817M3U.d.cts} +6 -6
- package/dist/{button-D3QvCdr6.d.cts → button-DuZy_wDo.d.ts} +7 -7
- package/dist/button-LMMbL-uH.js +2 -0
- package/dist/button-LMMbL-uH.js.map +1 -0
- package/dist/{button.variants-DkMqWB8G.mjs → button.variants-CoSpd71B.js} +1 -1
- package/dist/button.variants-CoSpd71B.js.map +1 -0
- package/dist/calendar-DzPt7b6k.js +2 -0
- package/dist/calendar-DzPt7b6k.js.map +1 -0
- package/dist/cards/{grid-product-card.d.mts → grid-product-card.d.ts} +1 -1
- package/dist/cards/grid-product-card.js +2 -0
- package/dist/cards/grid-product-card.js.map +1 -0
- package/dist/cards/{product-card.d.mts → product-card.d.ts} +1 -1
- package/dist/cards/product-card.js +2 -0
- package/dist/cards/product-card.js.map +1 -0
- package/dist/cards/{simple-card.d.mts → simple-card.d.ts} +1 -1
- package/dist/cards/simple-card.js +2 -0
- package/dist/cards/simple-card.js.map +1 -0
- package/dist/{checkbox-Cat3i08X.mjs → checkbox-DLGDoU-1.js} +1 -1
- package/dist/checkbox-DLGDoU-1.js.map +1 -0
- package/dist/{close-_UHFeiLS.mjs → close-C0PdZGxr.js} +1 -1
- package/dist/close-C0PdZGxr.js.map +1 -0
- package/dist/cms-layout-tPwrgJZc.js +2 -0
- package/dist/cms-layout-tPwrgJZc.js.map +1 -0
- package/dist/command-2gUejA6g.js +2 -0
- package/dist/command-2gUejA6g.js.map +1 -0
- package/dist/data-display/{country.d.mts → country.d.ts} +2 -2
- package/dist/data-display/country.js +2 -0
- package/dist/data-display/country.js.map +1 -0
- package/dist/data-display/{data-list.d.mts → data-list.d.ts} +1 -1
- package/dist/data-display/{data-list.mjs → data-list.js} +1 -1
- package/dist/data-display/data-list.js.map +1 -0
- package/dist/data-display/{date-tooltip.d.mts → date-tooltip.d.ts} +1 -1
- package/dist/data-display/date-tooltip.js +2 -0
- package/dist/data-display/date-tooltip.js.map +1 -0
- package/dist/data-display/{date.d.mts → date.d.ts} +1 -1
- package/dist/data-display/date.js +1 -0
- package/dist/data-display/{empty.d.mts → empty.d.ts} +1 -1
- package/dist/data-display/{empty.mjs → empty.js} +1 -1
- package/dist/data-display/empty.js.map +1 -0
- package/dist/data-display/{name.d.mts → name.d.ts} +1 -1
- package/dist/data-display/name.js +2 -0
- package/dist/data-display/name.js.map +1 -0
- package/dist/data-display/{phone-number.d.mts → phone-number.d.ts} +1 -1
- package/dist/data-display/phone-number.js +2 -0
- package/dist/data-display/phone-number.js.map +1 -0
- package/dist/data-display/{role-badge.d.mts → role-badge.d.ts} +2 -2
- package/dist/data-display/role-badge.js +2 -0
- package/dist/data-display/role-badge.js.map +1 -0
- package/dist/data-display/statistic.d.cts +1 -1
- package/dist/data-display/{statistic.d.mts → statistic.d.ts} +7 -7
- package/dist/data-display/statistic.js +1 -0
- package/dist/data-display/{user.d.mts → user.d.ts} +1 -1
- package/dist/data-display/user.js +1 -0
- package/dist/{date-fY3sUcLp.mjs → date-BIqCFM1Z.js} +1 -1
- package/dist/date-BIqCFM1Z.js.map +1 -0
- package/dist/{dialog-Bd5cOZia.d.mts → dialog-C48T3MZN.d.cts} +12 -12
- package/dist/{dialog-DEmYNufN.d.cts → dialog-CQygxUtj.d.ts} +12 -12
- package/dist/dialog-CmutQ3rp.js +2 -0
- package/dist/dialog-CmutQ3rp.js.map +1 -0
- package/dist/dialogs/{confirm-dialog.d.mts → confirm-dialog.d.ts} +1 -1
- package/dist/dialogs/confirm-dialog.js +2 -0
- package/dist/dialogs/confirm-dialog.js.map +1 -0
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +27 -27
- package/dist/dialogs/detail-dialog/components/{sidebar.d.mts → sidebar.d.ts} +30 -30
- package/dist/dialogs/detail-dialog/components/sidebar.js +1 -0
- package/dist/dialogs/detail-dialog/{index.d.mts → index.d.ts} +1 -1
- package/dist/dialogs/detail-dialog/index.js +2 -0
- package/dist/dialogs/detail-dialog/index.js.map +1 -0
- package/dist/dialogs/{error-dialog.d.mts → error-dialog.d.ts} +1 -1
- package/dist/dialogs/error-dialog.js +2 -0
- package/dist/dialogs/error-dialog.js.map +1 -0
- package/dist/dialogs/{loading-dialog.d.mts → loading-dialog.d.ts} +1 -1
- package/dist/dialogs/loading-dialog.js +2 -0
- package/dist/dialogs/loading-dialog.js.map +1 -0
- package/dist/{dist-DVrfqn8H.mjs → dist-EPxjIRJp.js} +1 -1
- package/dist/dist-EPxjIRJp.js.map +1 -0
- package/dist/{drawer-CMD7JWH8.mjs → drawer-B3qXaN5p.js} +1 -1
- package/dist/drawer-B3qXaN5p.js.map +1 -0
- package/dist/{dropdown-menu-BWhiVsEf.mjs → dropdown-menu-DeHCVyby.js} +1 -1
- package/dist/dropdown-menu-DeHCVyby.js.map +1 -0
- package/dist/features/descriptions/index.d.cts +4 -4
- package/dist/features/descriptions/{index.d.mts → index.d.ts} +8 -8
- package/dist/features/descriptions/index.js +2 -0
- package/dist/features/descriptions/index.js.map +1 -0
- package/dist/features/search-modal/index.d.cts +2 -2
- package/dist/features/search-modal/{index.d.mts → index.d.ts} +3 -3
- package/dist/features/search-modal/index.js +1 -0
- package/dist/features/tables/index.d.cts +1 -1
- package/dist/features/tables/{index.d.mts → index.d.ts} +2 -2
- package/dist/features/tables/index.js +1 -0
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.d.cts +2 -2
- package/dist/features/tanstack-form/index.d.ts +2 -0
- package/dist/features/tanstack-form/index.js +1 -0
- package/dist/features/text-editor/index.d.cts +1 -1
- package/dist/features/text-editor/{index.d.mts → index.d.ts} +1 -1
- package/dist/features/text-editor/index.js +1 -0
- package/dist/field-DpoKF1nY.js +2 -0
- package/dist/field-DpoKF1nY.js.map +1 -0
- package/dist/{flex-B6YSJzGe.mjs → flex-CinRrgEy.js} +1 -1
- package/dist/flex-CinRrgEy.js.map +1 -0
- package/dist/{heading-De4Pn3mZ.mjs → heading-Bz-hSatD.js} +1 -1
- package/dist/heading-Bz-hSatD.js.map +1 -0
- package/dist/image-BpTuF_1w.js +2 -0
- package/dist/image-BpTuF_1w.js.map +1 -0
- package/dist/{index-CiG1i12w.d.cts → index-Bc9X8pLk.d.cts} +7 -7
- package/dist/{index-Cm62M0Ft.d.mts → index-BlQGXGqt.d.ts} +1 -1
- package/dist/{index-DNozPoRR.d.mts → index-C1O2C-cg.d.ts} +7 -7
- package/dist/{index-BhiLHeUb.d.cts → index-CgH0tiiC.d.cts} +30 -30
- package/dist/{index-DSciiDhn.d.cts → index-D5u9CKyd.d.cts} +309 -950
- package/dist/{index-DriviV-i.d.mts → index-DFUF27Yy.d.ts} +31 -31
- package/dist/{index-Cl_7tlH_.d.mts → index-Ilj04YNO.d.ts} +309 -950
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +9 -9
- package/dist/index.d.ts +93 -0
- package/dist/index.js +1 -0
- package/dist/{input-BtuZm0BQ.d.mts → input-B_gst0eJ.d.cts} +7 -7
- package/dist/{input-CD4zf7t1.d.cts → input-BkHdaXGY.d.ts} +7 -7
- package/dist/{input-NJP2wQOm.mjs → input-DAfP6LZ7.js} +1 -1
- package/dist/input-DAfP6LZ7.js.map +1 -0
- package/dist/{label-CUCpwS5D.mjs → label-B8cAG2kc.js} +1 -1
- package/dist/label-B8cAG2kc.js.map +1 -0
- package/dist/layouts/cms-layout/index.d.ts +2 -0
- package/dist/layouts/cms-layout/index.js +1 -0
- package/dist/layouts/flex.d.cts +4 -4
- package/dist/layouts/{flex.d.mts → flex.d.ts} +5 -5
- package/dist/layouts/flex.js +1 -0
- package/dist/layouts/{grid.d.mts → grid.d.ts} +1 -1
- package/dist/layouts/{grid.mjs → grid.js} +1 -1
- package/dist/layouts/grid.js.map +1 -0
- package/dist/layouts/payment-layout/{index.d.mts → index.d.ts} +1 -1
- package/dist/layouts/payment-layout/index.js +1 -0
- package/dist/pages/FeatureDeveloping.d.cts +2 -2
- package/dist/pages/{FeatureDeveloping.d.mts → FeatureDeveloping.d.ts} +3 -3
- package/dist/pages/FeatureDeveloping.js +2 -0
- package/dist/pages/FeatureDeveloping.js.map +1 -0
- package/dist/pages/FeatureFixing.d.cts +2 -2
- package/dist/pages/{FeatureFixing.d.mts → FeatureFixing.d.ts} +3 -3
- package/dist/pages/FeatureFixing.js +2 -0
- package/dist/pages/FeatureFixing.js.map +1 -0
- package/dist/pages/LoginPage.d.cts +2 -2
- package/dist/pages/{LoginPage.d.mts → LoginPage.d.ts} +3 -3
- package/dist/pages/LoginPage.js +2 -0
- package/dist/pages/LoginPage.js.map +1 -0
- package/dist/pages/NotAuthorized.d.cts +2 -2
- package/dist/pages/{NotAuthorized.d.mts → NotAuthorized.d.ts} +3 -3
- package/dist/pages/NotAuthorized.js +2 -0
- package/dist/pages/NotAuthorized.js.map +1 -0
- package/dist/pages/NotFound.d.cts +2 -2
- package/dist/pages/{NotFound.d.mts → NotFound.d.ts} +3 -3
- package/dist/pages/NotFound.js +2 -0
- package/dist/pages/NotFound.js.map +1 -0
- package/dist/pages/RegisterPage.d.cts +2 -2
- package/dist/pages/{RegisterPage.d.mts → RegisterPage.d.ts} +3 -3
- package/dist/pages/RegisterPage.js +2 -0
- package/dist/pages/RegisterPage.js.map +1 -0
- package/dist/pages/VerifyEmailPage.d.cts +2 -2
- package/dist/pages/{VerifyEmailPage.d.mts → VerifyEmailPage.d.ts} +3 -3
- package/dist/pages/VerifyEmailPage.js +2 -0
- package/dist/pages/VerifyEmailPage.js.map +1 -0
- package/dist/{paragraph-DYLaQtTV.mjs → paragraph-Cc13ZI4d.js} +1 -1
- package/dist/paragraph-Cc13ZI4d.js.map +1 -0
- package/dist/payment-layout-giaGvs8T.js +2 -0
- package/dist/payment-layout-giaGvs8T.js.map +1 -0
- package/dist/popover-6233wU1s.js +2 -0
- package/dist/popover-6233wU1s.js.map +1 -0
- package/dist/{progress-CLeM0e7Z.mjs → progress-AYknlEgK.js} +1 -1
- package/dist/progress-AYknlEgK.js.map +1 -0
- package/dist/{radio-group-Y9bhdr55.mjs → radio-group-ImoBjpqZ.js} +1 -1
- package/dist/radio-group-ImoBjpqZ.js.map +1 -0
- package/dist/{resizable-CpCaSCFB.mjs → resizable-C-M-mu6b.js} +1 -1
- package/dist/resizable-C-M-mu6b.js.map +1 -0
- package/dist/search-modal-b2AE5WEW.js +2 -0
- package/dist/search-modal-b2AE5WEW.js.map +1 -0
- package/dist/{select-LlPCZFSF.mjs → select-CryLzZA0.js} +1 -1
- package/dist/select-CryLzZA0.js.map +1 -0
- package/dist/{separator-D3Gmkxzq.mjs → separator-BM8hA4DP.js} +1 -1
- package/dist/separator-BM8hA4DP.js.map +1 -0
- package/dist/{sheet-BFlIfNaA.mjs → sheet-DGXXYgWB.js} +1 -1
- package/dist/sheet-DGXXYgWB.js.map +1 -0
- package/dist/sidebar-BDrsbzo5.js +2 -0
- package/dist/sidebar-BDrsbzo5.js.map +1 -0
- package/dist/{skeleton-C51IdOfK.mjs → skeleton-DlRDNM97.js} +1 -1
- package/dist/skeleton-DlRDNM97.js.map +1 -0
- package/dist/{spinner-eClTgHjk.mjs → spinner-C1eamx3w.js} +1 -1
- package/dist/spinner-C1eamx3w.js.map +1 -0
- package/dist/{statistic-cwLwcukn.mjs → statistic-CYMqAYNc.js} +1 -1
- package/dist/statistic-CYMqAYNc.js.map +1 -0
- package/dist/{switch-BP7EPatj.mjs → switch-BLHmdRq2.js} +1 -1
- package/dist/switch-BLHmdRq2.js.map +1 -0
- package/dist/systems/{google.d.mts → google.d.ts} +1 -1
- package/dist/systems/{google.mjs → google.js} +1 -1
- package/dist/systems/google.js.map +1 -0
- package/dist/tables-DWQytYNm.js +4 -0
- package/dist/tables-DWQytYNm.js.map +1 -0
- package/dist/tanstack-form-CCDV-3Ml.js +12 -0
- package/dist/tanstack-form-CCDV-3Ml.js.map +1 -0
- package/dist/{tanstack-form-DatI41wz.cjs → tanstack-form-DoI86Ezs.cjs} +2 -2
- package/dist/{tanstack-form-DatI41wz.cjs.map → tanstack-form-DoI86Ezs.cjs.map} +1 -1
- package/dist/text-editor-WbS7pJJs.js +2 -0
- package/dist/text-editor-WbS7pJJs.js.map +1 -0
- package/dist/{textarea-7HDXcaK9.mjs → textarea-Bp6VvhiA.js} +1 -1
- package/dist/textarea-Bp6VvhiA.js.map +1 -0
- package/dist/{tooltip-Dxl5Wa8i.mjs → tooltip-CVIl6Hln.js} +1 -1
- package/dist/tooltip-CVIl6Hln.js.map +1 -0
- package/dist/{types-YLu40dXY.d.mts → types-BVSfF-1o.d.ts} +1 -1
- package/dist/{types-B5nyTWtO.mjs → types-BZqffRVJ.js} +1 -1
- package/dist/types-BZqffRVJ.js.map +1 -0
- package/dist/typography/paragraph.d.cts +5 -5
- package/dist/typography/{paragraph.d.mts → paragraph.d.ts} +6 -6
- package/dist/typography/paragraph.js +1 -0
- package/dist/typography/{title.d.mts → title.d.ts} +1 -1
- package/dist/typography/{title.mjs → title.js} +1 -1
- package/dist/typography/title.js.map +1 -0
- package/dist/ui/alert-dialog.d.cts +12 -12
- package/dist/ui/{alert-dialog.d.mts → alert-dialog.d.ts} +13 -13
- package/dist/ui/alert-dialog.js +2 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.d.cts +1 -1
- package/dist/ui/{alert.d.mts → alert.d.ts} +1 -1
- package/dist/ui/alert.js +1 -0
- package/dist/ui/aspect-ratio.d.cts +2 -2
- package/dist/ui/{aspect-ratio.d.mts → aspect-ratio.d.ts} +3 -3
- package/dist/ui/{aspect-ratio.mjs → aspect-ratio.js} +1 -1
- package/dist/ui/aspect-ratio.js.map +1 -0
- package/dist/ui/avatar.d.cts +4 -4
- package/dist/ui/{avatar.d.mts → avatar.d.ts} +5 -5
- package/dist/ui/avatar.js +1 -0
- package/dist/ui/badge.d.cts +1 -1
- package/dist/ui/badge.d.ts +2 -0
- package/dist/ui/badge.js +1 -0
- package/dist/ui/breadcrumb.d.cts +8 -8
- package/dist/ui/{breadcrumb.d.mts → breadcrumb.d.ts} +9 -9
- package/dist/ui/breadcrumb.js +2 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/button-group.d.cts +6 -6
- package/dist/ui/{button-group.d.mts → button-group.d.ts} +8 -8
- package/dist/ui/button-group.js +2 -0
- package/dist/ui/button-group.js.map +1 -0
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.ts +2 -0
- package/dist/ui/button.js +1 -0
- package/dist/ui/buttons/{add-new.d.mts → add-new.d.ts} +1 -1
- package/dist/ui/buttons/add-new.js +2 -0
- package/dist/ui/buttons/add-new.js.map +1 -0
- package/dist/ui/buttons/{edit.d.mts → edit.d.ts} +1 -1
- package/dist/ui/buttons/edit.js +2 -0
- package/dist/ui/buttons/edit.js.map +1 -0
- package/dist/ui/buttons/{refresh.d.mts → refresh.d.ts} +1 -1
- package/dist/ui/buttons/refresh.js +2 -0
- package/dist/ui/buttons/refresh.js.map +1 -0
- package/dist/ui/buttons/{trash.d.mts → trash.d.ts} +1 -1
- package/dist/ui/buttons/trash.js +2 -0
- package/dist/ui/buttons/trash.js.map +1 -0
- package/dist/ui/buttons/{upload-image.d.mts → upload-image.d.ts} +1 -1
- package/dist/ui/buttons/upload-image.js +2 -0
- package/dist/ui/buttons/upload-image.js.map +1 -0
- package/dist/ui/calendar.d.cts +4 -4
- package/dist/ui/{calendar.d.mts → calendar.d.ts} +5 -5
- package/dist/ui/calendar.js +1 -0
- package/dist/ui/card.d.cts +8 -8
- package/dist/ui/{card.d.mts → card.d.ts} +9 -9
- package/dist/ui/card.js +2 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/carousel.d.cts +7 -7
- package/dist/ui/{carousel.d.mts → carousel.d.ts} +8 -8
- package/dist/ui/carousel.js +2 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/checkbox.d.cts +2 -2
- package/dist/ui/{checkbox.d.mts → checkbox.d.ts} +3 -3
- package/dist/ui/checkbox.js +1 -0
- package/dist/ui/collapsible.d.cts +4 -4
- package/dist/ui/{collapsible.d.mts → collapsible.d.ts} +5 -5
- package/dist/ui/{collapsible.mjs → collapsible.js} +1 -1
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/command.d.cts +11 -11
- package/dist/ui/{command.d.mts → command.d.ts} +12 -12
- package/dist/ui/command.js +1 -0
- package/dist/ui/context-menu.d.cts +16 -16
- package/dist/ui/{context-menu.d.mts → context-menu.d.ts} +17 -17
- package/dist/ui/{context-menu.mjs → context-menu.js} +1 -1
- package/dist/ui/context-menu.js.map +1 -0
- package/dist/ui/dialog.d.cts +1 -1
- package/dist/ui/{dialog.d.mts → dialog.d.ts} +1 -1
- package/dist/ui/dialog.js +1 -0
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/{drawer.d.mts → drawer.d.ts} +12 -12
- package/dist/ui/drawer.js +1 -0
- package/dist/ui/dropdown-menu.d.cts +16 -16
- package/dist/ui/{dropdown-menu.d.mts → dropdown-menu.d.ts} +17 -17
- package/dist/ui/dropdown-menu.js +1 -0
- package/dist/ui/empty.d.cts +9 -9
- package/dist/ui/{empty.d.mts → empty.d.ts} +10 -10
- package/dist/ui/{empty.mjs → empty.js} +1 -1
- package/dist/ui/empty.js.map +1 -0
- package/dist/ui/field.d.cts +23 -23
- package/dist/ui/field.d.ts +65 -0
- package/dist/ui/field.js +1 -0
- package/dist/ui/file-uploader.d.cts +2 -2
- package/dist/ui/{file-uploader.d.mts → file-uploader.d.ts} +3 -3
- package/dist/ui/file-uploader.js +3 -0
- package/dist/ui/file-uploader.js.map +1 -0
- package/dist/ui/form.d.cts +10 -10
- package/dist/ui/{form.d.mts → form.d.ts} +11 -11
- package/dist/ui/form.js +2 -0
- package/dist/ui/form.js.map +1 -0
- package/dist/ui/hover-card.d.cts +4 -4
- package/dist/ui/{hover-card.d.mts → hover-card.d.ts} +5 -5
- package/dist/ui/{hover-card.mjs → hover-card.js} +1 -1
- package/dist/ui/hover-card.js.map +1 -0
- package/dist/ui/{image.d.mts → image.d.ts} +1 -1
- package/dist/ui/image.js +1 -0
- package/dist/ui/input-otp.d.cts +5 -5
- package/dist/ui/{input-otp.d.mts → input-otp.d.ts} +6 -6
- package/dist/ui/{input-otp.mjs → input-otp.js} +1 -1
- package/dist/ui/input-otp.js.map +1 -0
- package/dist/ui/input.d.cts +1 -1
- package/dist/ui/input.d.ts +2 -0
- package/dist/ui/input.js +1 -0
- package/dist/ui/inputs/search-input.d.cts +3 -3
- package/dist/ui/inputs/{search-input.d.mts → search-input.d.ts} +4 -4
- package/dist/ui/inputs/search-input.js +2 -0
- package/dist/ui/inputs/search-input.js.map +1 -0
- package/dist/ui/item.d.cts +16 -16
- package/dist/ui/{item.d.mts → item.d.ts} +18 -18
- package/dist/ui/item.js +2 -0
- package/dist/ui/item.js.map +1 -0
- package/dist/ui/label.d.cts +2 -2
- package/dist/ui/{label.d.mts → label.d.ts} +3 -3
- package/dist/ui/label.js +1 -0
- package/dist/ui/menubar.d.cts +17 -17
- package/dist/ui/{menubar.d.mts → menubar.d.ts} +18 -18
- package/dist/ui/{menubar.mjs → menubar.js} +1 -1
- package/dist/ui/menubar.js.map +1 -0
- package/dist/ui/multi-select.d.cts +2 -2
- package/dist/ui/{multi-select.d.mts → multi-select.d.ts} +5 -5
- package/dist/ui/multi-select.js +2 -0
- package/dist/ui/multi-select.js.map +1 -0
- package/dist/ui/navigation-menu.d.cts +11 -11
- package/dist/ui/{navigation-menu.d.mts → navigation-menu.d.ts} +12 -12
- package/dist/ui/{navigation-menu.mjs → navigation-menu.js} +1 -1
- package/dist/ui/navigation-menu.js.map +1 -0
- package/dist/ui/pagination.d.cts +9 -9
- package/dist/ui/{pagination.d.mts → pagination.d.ts} +10 -10
- package/dist/ui/pagination.js +2 -0
- package/dist/ui/pagination.js.map +1 -0
- package/dist/ui/popover.d.cts +6 -6
- package/dist/ui/{popover.d.mts → popover.d.ts} +7 -7
- package/dist/ui/popover.js +1 -0
- package/dist/ui/progress.d.cts +2 -2
- package/dist/ui/{progress.d.mts → progress.d.ts} +3 -3
- package/dist/ui/progress.js +1 -0
- package/dist/ui/radio-group.d.cts +3 -3
- package/dist/ui/{radio-group.d.mts → radio-group.d.ts} +4 -4
- package/dist/ui/radio-group.js +1 -0
- package/dist/ui/resizable.d.cts +9 -9
- package/dist/ui/{resizable.d.mts → resizable.d.ts} +10 -10
- package/dist/ui/resizable.js +1 -0
- package/dist/ui/scroll-area.d.cts +5 -5
- package/dist/ui/{scroll-area.d.mts → scroll-area.d.ts} +6 -6
- package/dist/ui/{scroll-area.mjs → scroll-area.js} +1 -1
- package/dist/ui/scroll-area.js.map +1 -0
- package/dist/ui/select.d.cts +9 -9
- package/dist/ui/{select.d.mts → select.d.ts} +10 -10
- package/dist/ui/select.js +1 -0
- package/dist/ui/separator.d.cts +2 -2
- package/dist/ui/{separator.d.mts → separator.d.ts} +3 -3
- package/dist/ui/separator.js +1 -0
- package/dist/ui/sheet.d.cts +9 -9
- package/dist/ui/{sheet.d.mts → sheet.d.ts} +10 -10
- package/dist/ui/sheet.js +1 -0
- package/dist/ui/skeleton.d.cts +2 -2
- package/dist/ui/{skeleton.d.mts → skeleton.d.ts} +3 -3
- package/dist/ui/skeleton.js +1 -0
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/{slider.d.mts → slider.d.ts} +3 -3
- package/dist/ui/{slider.mjs → slider.js} +1 -1
- package/dist/ui/slider.js.map +1 -0
- package/dist/ui/sonner.d.cts +2 -2
- package/dist/ui/{sonner.d.mts → sonner.d.ts} +3 -3
- package/dist/ui/{sonner.mjs → sonner.js} +1 -1
- package/dist/ui/sonner.js.map +1 -0
- package/dist/ui/spinner.d.cts +2 -2
- package/dist/ui/{spinner.d.mts → spinner.d.ts} +3 -3
- package/dist/ui/spinner.js +1 -0
- package/dist/ui/switch.d.cts +2 -2
- package/dist/ui/{switch.d.mts → switch.d.ts} +3 -3
- package/dist/ui/switch.js +1 -0
- package/dist/ui/table.d.cts +17 -17
- package/dist/ui/{table.d.mts → table.d.ts} +18 -18
- package/dist/ui/{table.mjs → table.js} +1 -1
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tabs.d.cts +5 -5
- package/dist/ui/{tabs.d.mts → tabs.d.ts} +6 -6
- package/dist/ui/{tabs.mjs → tabs.js} +1 -1
- package/dist/ui/tabs.js.map +1 -0
- package/dist/ui/textarea.d.cts +2 -2
- package/dist/ui/{textarea.d.mts → textarea.d.ts} +3 -3
- package/dist/ui/textarea.js +1 -0
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/{toggle-group.d.mts → toggle-group.d.ts} +5 -5
- package/dist/ui/toggle-group.js +2 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle.d.cts +5 -5
- package/dist/ui/{toggle.d.mts → toggle.d.ts} +4 -4
- package/dist/ui/{toggle.mjs → toggle.js} +1 -1
- package/dist/ui/toggle.js.map +1 -0
- package/dist/ui/tooltip.d.cts +5 -5
- package/dist/ui/{tooltip.d.mts → tooltip.d.ts} +6 -6
- package/dist/ui/tooltip.js +1 -0
- package/dist/user-BSpgswEC.js +2 -0
- package/dist/user-BSpgswEC.js.map +1 -0
- package/package.json +97 -97
- package/dist/alert-BbvPwf2x.mjs.map +0 -1
- package/dist/avatar-fltdRVsJ.mjs.map +0 -1
- package/dist/badge-CDGBGq8X.mjs.map +0 -1
- package/dist/button-CCVJTHBI.mjs +0 -2
- package/dist/button-CCVJTHBI.mjs.map +0 -1
- package/dist/button.variants-DkMqWB8G.mjs.map +0 -1
- package/dist/calendar-R866yyd1.mjs +0 -2
- package/dist/calendar-R866yyd1.mjs.map +0 -1
- package/dist/cards/grid-product-card.mjs +0 -2
- package/dist/cards/grid-product-card.mjs.map +0 -1
- package/dist/cards/product-card.mjs +0 -2
- package/dist/cards/product-card.mjs.map +0 -1
- package/dist/cards/simple-card.mjs +0 -2
- package/dist/cards/simple-card.mjs.map +0 -1
- package/dist/checkbox-Cat3i08X.mjs.map +0 -1
- package/dist/close-_UHFeiLS.mjs.map +0 -1
- package/dist/cms-layout-DkCR1AfG.mjs +0 -2
- package/dist/cms-layout-DkCR1AfG.mjs.map +0 -1
- package/dist/command-D6_CSbwJ.mjs +0 -2
- package/dist/command-D6_CSbwJ.mjs.map +0 -1
- package/dist/data-display/country.mjs +0 -2
- package/dist/data-display/country.mjs.map +0 -1
- package/dist/data-display/data-list.mjs.map +0 -1
- package/dist/data-display/date-tooltip.mjs +0 -2
- package/dist/data-display/date-tooltip.mjs.map +0 -1
- package/dist/data-display/date.mjs +0 -1
- package/dist/data-display/empty.mjs.map +0 -1
- package/dist/data-display/name.mjs +0 -2
- package/dist/data-display/name.mjs.map +0 -1
- package/dist/data-display/phone-number.mjs +0 -2
- package/dist/data-display/phone-number.mjs.map +0 -1
- package/dist/data-display/role-badge.mjs +0 -2
- package/dist/data-display/role-badge.mjs.map +0 -1
- package/dist/data-display/statistic.mjs +0 -1
- package/dist/data-display/user.mjs +0 -1
- package/dist/date-fY3sUcLp.mjs.map +0 -1
- package/dist/dialog-CLDnvNH_.mjs +0 -2
- package/dist/dialog-CLDnvNH_.mjs.map +0 -1
- package/dist/dialogs/confirm-dialog.mjs +0 -2
- package/dist/dialogs/confirm-dialog.mjs.map +0 -1
- package/dist/dialogs/detail-dialog/components/sidebar.mjs +0 -1
- package/dist/dialogs/detail-dialog/index.mjs +0 -2
- package/dist/dialogs/detail-dialog/index.mjs.map +0 -1
- package/dist/dialogs/error-dialog.mjs +0 -2
- package/dist/dialogs/error-dialog.mjs.map +0 -1
- package/dist/dialogs/loading-dialog.mjs +0 -2
- package/dist/dialogs/loading-dialog.mjs.map +0 -1
- package/dist/dist-DVrfqn8H.mjs.map +0 -1
- package/dist/drawer-CMD7JWH8.mjs.map +0 -1
- package/dist/dropdown-menu-BWhiVsEf.mjs.map +0 -1
- package/dist/features/descriptions/index.mjs +0 -2
- package/dist/features/descriptions/index.mjs.map +0 -1
- package/dist/features/search-modal/index.mjs +0 -1
- package/dist/features/tables/index.mjs +0 -1
- package/dist/features/tanstack-form/index.d.mts +0 -2
- package/dist/features/tanstack-form/index.mjs +0 -1
- package/dist/features/text-editor/index.mjs +0 -1
- package/dist/field-dYemS0hQ.mjs +0 -2
- package/dist/field-dYemS0hQ.mjs.map +0 -1
- package/dist/flex-B6YSJzGe.mjs.map +0 -1
- package/dist/heading-De4Pn3mZ.mjs.map +0 -1
- package/dist/image-D7OZ13Ib.mjs +0 -2
- package/dist/image-D7OZ13Ib.mjs.map +0 -1
- package/dist/index.d.mts +0 -93
- package/dist/index.mjs +0 -1
- package/dist/input-NJP2wQOm.mjs.map +0 -1
- package/dist/label-CUCpwS5D.mjs.map +0 -1
- package/dist/layouts/cms-layout/index.d.mts +0 -2
- package/dist/layouts/cms-layout/index.mjs +0 -1
- package/dist/layouts/flex.mjs +0 -1
- package/dist/layouts/grid.mjs.map +0 -1
- package/dist/layouts/payment-layout/index.mjs +0 -1
- package/dist/pages/FeatureDeveloping.mjs +0 -2
- package/dist/pages/FeatureDeveloping.mjs.map +0 -1
- package/dist/pages/FeatureFixing.mjs +0 -2
- package/dist/pages/FeatureFixing.mjs.map +0 -1
- package/dist/pages/LoginPage.mjs +0 -2
- package/dist/pages/LoginPage.mjs.map +0 -1
- package/dist/pages/NotAuthorized.mjs +0 -2
- package/dist/pages/NotAuthorized.mjs.map +0 -1
- package/dist/pages/NotFound.mjs +0 -2
- package/dist/pages/NotFound.mjs.map +0 -1
- package/dist/pages/RegisterPage.mjs +0 -2
- package/dist/pages/RegisterPage.mjs.map +0 -1
- package/dist/pages/VerifyEmailPage.mjs +0 -2
- package/dist/pages/VerifyEmailPage.mjs.map +0 -1
- package/dist/paragraph-DYLaQtTV.mjs.map +0 -1
- package/dist/payment-layout-DrQ0kZPX.mjs +0 -2
- package/dist/payment-layout-DrQ0kZPX.mjs.map +0 -1
- package/dist/popover-C8rcemA3.mjs +0 -2
- package/dist/popover-C8rcemA3.mjs.map +0 -1
- package/dist/progress-CLeM0e7Z.mjs.map +0 -1
- package/dist/radio-group-Y9bhdr55.mjs.map +0 -1
- package/dist/resizable-CpCaSCFB.mjs.map +0 -1
- package/dist/search-modal-Bn-GOOCy.mjs +0 -2
- package/dist/search-modal-Bn-GOOCy.mjs.map +0 -1
- package/dist/select-LlPCZFSF.mjs.map +0 -1
- package/dist/separator-D3Gmkxzq.mjs.map +0 -1
- package/dist/sheet-BFlIfNaA.mjs.map +0 -1
- package/dist/sidebar-ChtCyu-n.mjs +0 -2
- package/dist/sidebar-ChtCyu-n.mjs.map +0 -1
- package/dist/skeleton-C51IdOfK.mjs.map +0 -1
- package/dist/spinner-eClTgHjk.mjs.map +0 -1
- package/dist/statistic-cwLwcukn.mjs.map +0 -1
- package/dist/switch-BP7EPatj.mjs.map +0 -1
- package/dist/systems/google.mjs.map +0 -1
- package/dist/tables-CFrsk2lM.mjs +0 -4
- package/dist/tables-CFrsk2lM.mjs.map +0 -1
- package/dist/tanstack-form-DT1TqIDl.mjs +0 -12
- package/dist/tanstack-form-DT1TqIDl.mjs.map +0 -1
- package/dist/text-editor-5mA7XyaI.mjs +0 -2
- package/dist/text-editor-5mA7XyaI.mjs.map +0 -1
- package/dist/textarea-7HDXcaK9.mjs.map +0 -1
- package/dist/tooltip-Dxl5Wa8i.mjs.map +0 -1
- package/dist/types-B5nyTWtO.mjs.map +0 -1
- package/dist/typography/paragraph.mjs +0 -1
- package/dist/typography/title.mjs.map +0 -1
- package/dist/ui/alert-dialog.mjs +0 -2
- package/dist/ui/alert-dialog.mjs.map +0 -1
- package/dist/ui/alert.mjs +0 -1
- package/dist/ui/aspect-ratio.mjs.map +0 -1
- package/dist/ui/avatar.mjs +0 -1
- package/dist/ui/badge.d.mts +0 -2
- package/dist/ui/badge.mjs +0 -1
- package/dist/ui/breadcrumb.mjs +0 -2
- package/dist/ui/breadcrumb.mjs.map +0 -1
- package/dist/ui/button-group.mjs +0 -2
- package/dist/ui/button-group.mjs.map +0 -1
- package/dist/ui/button.d.mts +0 -2
- package/dist/ui/button.mjs +0 -1
- package/dist/ui/buttons/add-new.mjs +0 -2
- package/dist/ui/buttons/add-new.mjs.map +0 -1
- package/dist/ui/buttons/edit.mjs +0 -2
- package/dist/ui/buttons/edit.mjs.map +0 -1
- package/dist/ui/buttons/refresh.mjs +0 -2
- package/dist/ui/buttons/refresh.mjs.map +0 -1
- package/dist/ui/buttons/trash.mjs +0 -2
- package/dist/ui/buttons/trash.mjs.map +0 -1
- package/dist/ui/buttons/upload-image.mjs +0 -2
- package/dist/ui/buttons/upload-image.mjs.map +0 -1
- package/dist/ui/calendar.mjs +0 -1
- package/dist/ui/card.mjs +0 -2
- package/dist/ui/card.mjs.map +0 -1
- package/dist/ui/carousel.mjs +0 -2
- package/dist/ui/carousel.mjs.map +0 -1
- package/dist/ui/checkbox.mjs +0 -1
- package/dist/ui/collapsible.mjs.map +0 -1
- package/dist/ui/command.mjs +0 -1
- package/dist/ui/context-menu.mjs.map +0 -1
- package/dist/ui/dialog.mjs +0 -1
- package/dist/ui/drawer.mjs +0 -1
- package/dist/ui/dropdown-menu.mjs +0 -1
- package/dist/ui/empty.mjs.map +0 -1
- package/dist/ui/field.d.mts +0 -65
- package/dist/ui/field.mjs +0 -1
- package/dist/ui/file-uploader.mjs +0 -3
- package/dist/ui/file-uploader.mjs.map +0 -1
- package/dist/ui/form.mjs +0 -2
- package/dist/ui/form.mjs.map +0 -1
- package/dist/ui/hover-card.mjs.map +0 -1
- package/dist/ui/image.mjs +0 -1
- package/dist/ui/input-otp.mjs.map +0 -1
- package/dist/ui/input.d.mts +0 -2
- package/dist/ui/input.mjs +0 -1
- package/dist/ui/inputs/search-input.mjs +0 -2
- package/dist/ui/inputs/search-input.mjs.map +0 -1
- package/dist/ui/item.mjs +0 -2
- package/dist/ui/item.mjs.map +0 -1
- package/dist/ui/label.mjs +0 -1
- package/dist/ui/menubar.mjs.map +0 -1
- package/dist/ui/multi-select.mjs +0 -2
- package/dist/ui/multi-select.mjs.map +0 -1
- package/dist/ui/navigation-menu.mjs.map +0 -1
- package/dist/ui/pagination.mjs +0 -2
- package/dist/ui/pagination.mjs.map +0 -1
- package/dist/ui/popover.mjs +0 -1
- package/dist/ui/progress.mjs +0 -1
- package/dist/ui/radio-group.mjs +0 -1
- package/dist/ui/resizable.mjs +0 -1
- package/dist/ui/scroll-area.mjs.map +0 -1
- package/dist/ui/select.mjs +0 -1
- package/dist/ui/separator.mjs +0 -1
- package/dist/ui/sheet.mjs +0 -1
- package/dist/ui/skeleton.mjs +0 -1
- package/dist/ui/slider.mjs.map +0 -1
- package/dist/ui/sonner.mjs.map +0 -1
- package/dist/ui/spinner.mjs +0 -1
- package/dist/ui/switch.mjs +0 -1
- package/dist/ui/table.mjs.map +0 -1
- package/dist/ui/tabs.mjs.map +0 -1
- package/dist/ui/textarea.mjs +0 -1
- package/dist/ui/toggle-group.mjs +0 -2
- package/dist/ui/toggle-group.mjs.map +0 -1
- package/dist/ui/toggle.mjs.map +0 -1
- package/dist/ui/tooltip.mjs +0 -1
- package/dist/user-DtZy4P9d.mjs +0 -2
- package/dist/user-DtZy4P9d.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-ChtCyu-n.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 = '18rem';\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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton-C51IdOfK.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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-eClTgHjk.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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statistic-cwLwcukn.mjs","names":["options: Intl.NumberFormatOptions"],"sources":["../packages/components/data-display/statistic.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useMemo } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nconst statisticVariants = cva('inline-flex items-center gap-1 font-number tabular-nums transition-colors', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n trend: {\n neutral: 'text-text-positive-strong',\n up: 'text-success',\n down: 'text-danger',\n },\n },\n defaultVariants: {\n size: 'lg',\n trend: 'neutral',\n },\n});\n\nexport type StatisticProps = VariantProps<typeof statisticVariants> & {\n /** Character used to separate the decimal part. Defaults to `'.'`. */\n decimalSeparator?: string;\n /** Character used to separate thousands groups. Defaults to `','`. */\n groupSeparator?: string;\n /** Optional node rendered before the numeric value (e.g. a currency symbol). */\n prefix?: React.ReactNode;\n /** Optional node rendered after the numeric value (e.g. a unit label). */\n suffix?: React.ReactNode;\n /** Number of decimal digits to display; omit to show all significant digits. */\n precision?: number;\n /** Rounding strategy applied before formatting. Defaults to `'round'`. */\n roundingMode?: 'round' | 'floor' | 'ceil';\n /** When `true`, pads the decimal part with trailing zeros up to `precision`. Defaults to `false`. */\n showTrailingZeros?: boolean;\n /** The numeric (or numeric-string) value to format and display. */\n value: number | string;\n /** Additional CSS classes applied to the wrapper element. */\n className?: string;\n /** Colour trend indicator: `'neutral'` (default), `'up'` (green), or `'down'` (red). */\n trend?: 'neutral' | 'up' | 'down';\n};\n\n/**\n * A memoised numeric display component with locale-aware formatting, optional prefix/suffix, trend colouring, and configurable rounding.\n *\n * @example\n * ```tsx\n * import { Statistic } from '@customafk/lunas-ui/data-display/statistic';\n *\n * <Statistic value={1234567.89} precision={2} prefix=\"$\" trend=\"up\" size=\"lg\" />\n * ```\n */\nexport const Statistic = memo(\n ({\n decimalSeparator = '.',\n groupSeparator = ',',\n prefix: Prefix,\n suffix: Suffix,\n precision,\n roundingMode = 'round',\n showTrailingZeros = false,\n size = 'lg',\n trend = 'neutral',\n value,\n className,\n }: StatisticProps) => {\n const applyRounding = useCallback(\n (num: number, precisionValue: number): number => {\n const multiplier = 10 ** precisionValue;\n switch (roundingMode) {\n case 'floor':\n return Math.floor(num * multiplier) / multiplier;\n case 'ceil':\n return Math.ceil(num * multiplier) / multiplier;\n default:\n return Math.round(num * multiplier) / multiplier;\n }\n },\n [roundingMode]\n );\n\n const formatOptions = useMemo((): Intl.NumberFormatOptions => {\n const options: Intl.NumberFormatOptions = {};\n if (typeof precision === 'number' && precision >= 0) {\n if (showTrailingZeros) {\n options.minimumFractionDigits = precision;\n options.maximumFractionDigits = precision;\n } else {\n options.maximumFractionDigits = precision;\n }\n }\n return options;\n }, [precision, showTrailingZeros]);\n\n const formatNumber = useCallback(\n (num: number): string => {\n let processedNum = num;\n if (typeof precision === 'number' && precision >= 0) {\n processedNum = applyRounding(num, precision);\n }\n return processedNum.toLocaleString('en-US', formatOptions);\n },\n [applyRounding, formatOptions, precision]\n );\n\n const processedValue = useMemo((): string => {\n if (typeof value === 'number') {\n if (Number.isNaN(value) || !Number.isFinite(value)) return 'N/A';\n return formatNumber(value);\n }\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n if (!trimmedValue) return 'N/A';\n const numValue = Number(trimmedValue);\n if (Number.isNaN(numValue) || !Number.isFinite(numValue)) return 'N/A';\n return formatNumber(numValue);\n }\n return 'N/A';\n }, [value, formatNumber]);\n\n const finalFormattedValue = useMemo((): string => {\n if (decimalSeparator === '.' && groupSeparator === ',') return processedValue;\n return processedValue.replace(/,/g, groupSeparator).replace(/\\./g, decimalSeparator);\n }, [processedValue, decimalSeparator, groupSeparator]);\n\n return (\n <div data-slot=\"statistic\" className={cn(statisticVariants({ size, trend }), className)}>\n {Prefix && <span data-slot=\"statistic-prefix\">{Prefix}</span>}\n <p data-slot=\"statistic-value\">{finalFormattedValue}</p>\n {Suffix && <span data-slot=\"statistic-suffix\">{Suffix}</span>}\n </div>\n );\n }\n);\nStatistic.displayName = 'Statistic';\n"],"mappings":"gNAMA,MAAM,EAAoB,EAAI,4EAA6E,CACzG,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,UACL,CACD,MAAO,CACL,QAAS,4BACT,GAAI,eACJ,KAAM,cACP,CACF,CACD,gBAAiB,CACf,KAAM,KACN,MAAO,UACR,CACF,CAAC,CAmCW,EAAY,GACtB,CACC,mBAAmB,IACnB,iBAAiB,IACjB,OAAQ,EACR,OAAQ,EACR,YACA,eAAe,QACf,oBAAoB,GACpB,OAAO,KACP,QAAQ,UACR,QACA,eACoB,CACpB,IAAM,EAAgB,GACnB,EAAa,IAAmC,CAC/C,IAAM,EAAa,IAAM,EACzB,OAAQ,EAAR,CACE,IAAK,QACH,OAAO,KAAK,MAAM,EAAM,EAAW,CAAG,EACxC,IAAK,OACH,OAAO,KAAK,KAAK,EAAM,EAAW,CAAG,EACvC,QACE,OAAO,KAAK,MAAM,EAAM,EAAW,CAAG,IAG5C,CAAC,EAAa,CACf,CAEK,EAAgB,MAAwC,CAC5D,IAAMA,EAAoC,EAAE,CAS5C,OARI,OAAO,GAAc,UAAY,GAAa,IAC5C,IACF,EAAQ,sBAAwB,GAGhC,EAAQ,sBAAwB,GAG7B,GACN,CAAC,EAAW,EAAkB,CAAC,CAE5B,EAAe,EAClB,GAAwB,CACvB,IAAI,EAAe,EAInB,OAHI,OAAO,GAAc,UAAY,GAAa,IAChD,EAAe,EAAc,EAAK,EAAU,EAEvC,EAAa,eAAe,QAAS,EAAc,EAE5D,CAAC,EAAe,EAAe,EAAU,CAC1C,CAEK,EAAiB,MAAsB,CAC3C,GAAI,OAAO,GAAU,SAEnB,OADI,OAAO,MAAM,EAAM,EAAI,CAAC,OAAO,SAAS,EAAM,CAAS,MACpD,EAAa,EAAM,CAE5B,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAe,EAAM,MAAM,CACjC,GAAI,CAAC,EAAc,MAAO,MAC1B,IAAM,EAAW,OAAO,EAAa,CAErC,OADI,OAAO,MAAM,EAAS,EAAI,CAAC,OAAO,SAAS,EAAS,CAAS,MAC1D,EAAa,EAAS,CAE/B,MAAO,OACN,CAAC,EAAO,EAAa,CAAC,CAEnB,EAAsB,MACtB,IAAqB,KAAO,IAAmB,IAAY,EACxD,EAAe,QAAQ,KAAM,EAAe,CAAC,QAAQ,MAAO,EAAiB,CACnF,CAAC,EAAgB,EAAkB,EAAe,CAAC,CAEtD,OACE,EAAC,MAAA,CAAI,YAAU,YAAY,UAAW,EAAG,EAAkB,CAAE,OAAM,QAAO,CAAC,CAAE,EAAU,WACpF,GAAU,EAAC,OAAA,CAAK,YAAU,4BAAoB,GAAc,CAC7D,EAAC,IAAA,CAAE,YAAU,2BAAmB,GAAwB,CACvD,GAAU,EAAC,OAAA,CAAK,YAAU,4BAAoB,GAAc,GACzD,EAGX,CACD,EAAU,YAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch-BP7EPatj.mjs","names":["Switch","SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\n/**\n * Accessible toggle switch built on Radix UI's Switch primitive, with animated thumb and primary/muted color states.\n *\n * @example\n * ```tsx\n * import { Switch } from '@customafk/lunas-ui/ui/switch';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Switch id=\"notifications\" />\n * <Label htmlFor=\"notifications\">Enable notifications</Label>\n * </div>\n * ```\n */\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs outline-none transition-all',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":"8HAoBA,SAASA,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAACC,EAAgB,KAAA,CACf,YAAU,SACV,UAAW,EACT,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,EACD,CACD,GAAI,WAEJ,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EACT,gBACA,4EACA,oDACA,uCACD,EACD,EACmB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.mjs","names":["Google: React.FC<GoogleProps>","ReactOAuth: React.FC<React.PropsWithChildren<ReactOAuthProps>>"],"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":"0KAyBA,MAAaA,GAAiC,CAAE,aAAY,2BAY1D,EAAqB,CACnB,SAAU,EACV,qBAAsB,GACtB,UAdmB,EACnB,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,MAsCT,IAAA,GATwE,CAAE,WAAU,aAAY,uBAAsB,cAElH,EAAC,EAAA,CAA8B,qBAC5B,EACD,EAAC,EAAA,CAAmB,aAAkC,wBAAwB,CAAA,EAC1D"}
|
package/dist/tables-CFrsk2lM.mjs
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./button-CCVJTHBI.mjs";import{t}from"./paragraph-DYLaQtTV.mjs";import{t as n}from"./flex-B6YSJzGe.mjs";import{t as r}from"./date-fY3sUcLp.mjs";import{t as i}from"./badge-CDGBGq8X.mjs";import{i as a,n as o,r as s,t as c}from"./tooltip-Dxl5Wa8i.mjs";import{t as l}from"./statistic-cwLwcukn.mjs";import{n as u,r as d,t as f}from"./avatar-fltdRVsJ.mjs";import{t as p}from"./separator-D3Gmkxzq.mjs";import{a as m,d as h,h as g,i as _,r as v,t as y}from"./dropdown-menu-BWhiVsEf.mjs";import{t as ee}from"./progress-CLeM0e7Z.mjs";import{t as b}from"./checkbox-Cat3i08X.mjs";import{t as x}from"./spinner-eClTgHjk.mjs";import{n as S,r as te,t as ne}from"./resizable-CpCaSCFB.mjs";import{t as C}from"./input-NJP2wQOm.mjs";import{t as w}from"./label-CUCpwS5D.mjs";import{a as re,i as T,t as ie}from"./popover-C8rcemA3.mjs";import{c as E,i as ae,n as oe,s as se,t as D}from"./select-LlPCZFSF.mjs";import{AlertTriangle as O,ArrowRightIcon as ce,BarChart2Icon as le,BoxIcon as ue,CalendarIcon as de,CheckIcon as k,ChevronDown as fe,ChevronDownIcon as A,ChevronUpIcon as pe,CirclePlus as j,CopyIcon as me,DownloadIcon as M,EllipsisVerticalIcon as N,ExternalLinkIcon as he,HashIcon as P,ListFilterIcon as ge,ListFilterPlus as _e,MailIcon as ve,MinusIcon as F,MoreVerticalIcon as ye,MoveLeftIcon as be,MoveRightIcon as xe,PinOffIcon as Se,RefreshCwIcon as Ce,SearchIcon as we,TagIcon as Te,ToggleLeftIcon as Ee,Trash2Icon as De,TypeIcon as Oe,UserRoundIcon as ke,XIcon as Ae}from"lucide-react";import{Activity as je,createContext as I,memo as L,use as R,useCallback as z,useEffect as B,useId as Me,useMemo as V,useRef as H,useState as U}from"react";import{cn as W}from"@customafk/react-toolkit/utils";import{cva as G}from"class-variance-authority";import{Fragment as Ne,jsx as K,jsxs as q}from"react/jsx-runtime";import{colorHashLight as Pe}from"@customafk/react-toolkit/color-hash";import{flexRender as Fe,getCoreRowModel as Ie,getExpandedRowModel as Le,getGroupedRowModel as Re,useReactTable as ze}from"@tanstack/react-table";import{useVirtualizer as Be}from"@tanstack/react-virtual";import{useDebounceCallback as Ve}from"@customafk/react-toolkit/hooks/useDebounceCallback";const He=({name:e,avatarUrl:t,uuid:n})=>{let r=Pe.hex(n??e);return q(`div`,{className:`flex min-w-0 items-center gap-2`,children:[q(f,{className:`size-8 shrink-0`,children:[K(d,{src:t,alt:e}),K(u,{style:{backgroundColor:r},children:K(ke,{size:18,className:`text-white`})})]}),K(`span`,{className:`truncate text-sm font-medium`,children:e})]})},J=()=>q(`div`,{className:`flex gap-0 text-text-positive-weak`,children:[K(F,{size:16}),K(F,{size:16})]}),Ue=({label:e,onClick:t,onRemove:n})=>e?n?q(`div`,{className:`flex w-fit gap-x-0.5 rounded-full border border-border py-1 pr-2 pl-3 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:[e,K(`button`,{className:`cursor-pointer text-text-positive-weak hover:text-text-positive-strong`,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:K(Ae,{size:12})})]}):K(`button`,{className:`w-fit rounded-full border border-border px-3 py-1 text-text-positive text-xs shadow-xs`,onClick:e=>{t?.(),e.stopPropagation(),e.preventDefault()},children:e}):K(J,{}),We=({value:e})=>e==null?K(J,{}):e===!1?K(Ae,{size:14,strokeWidth:2,className:`text-danger-strong`}):K(k,{size:14,strokeWidth:2,className:`text-success-strong`}),Ge=L(({value:e,currency:t=`USD`,locale:n=`en-US`,display:r=`symbol`,size:i=`md`,colorize:a=!1})=>{let o=V(()=>{let i=typeof e==`string`?Number(e.trim()):e;return i==null||Number.isNaN(i)||!Number.isFinite(i)?null:new Intl.NumberFormat(n,{style:`currency`,currency:t,currencyDisplay:r,minimumFractionDigits:2,maximumFractionDigits:2}).format(i)},[e,t,n,r]),s=V(()=>{let t=typeof e==`string`?Number(e.trim()):e;return typeof t==`number`&&t<0},[e]);return o?K(`p`,{className:W(`font-number tabular-nums`,i===`xs`&&`text-xs`,i===`sm`&&`text-sm`,i===`md`&&`text-base`,i===`lg`&&`text-lg`,i===`xl`&&`text-xl`,!a&&`text-text-positive`,a&&s&&`text-danger-strong`,a&&!s&&`text-success-strong`),children:o}):K(J,{})});Ge.displayName=`UITableCurrencyDisplay`;const Ke=({date:e})=>e==null?K(J,{}):K(s,{children:q(c,{children:[K(a,{asChild:!0,children:K(i,{className:`h-fit`,children:K(r,{date:e,format:`medium`,className:`font-normal text-white`})})}),K(o,{className:`rounded px-2`,children:K(r,{date:e,format:`full`,showTime:!0,className:`font-medium text-text-negative text-xs`})})]})}),qe=({content:e})=>e==null?K(J,{}):q(c,{children:[K(a,{children:K(t,{variant:`sm`,className:`line-clamp-2 whitespace-pre-line break-all`,children:e})}),K(o,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:q(`div`,{className:`flex flex-col gap-y-2`,children:[K(t,{variant:`xs`,className:`whitespace-pre-line text-wrap break-keep text-text-negative-weak`,children:e}),q(`p`,{className:`w-full text-end`,children:[e.toString().length,` chars`]})]})})]}),Je=({email:e,linkable:t=!0})=>{let[n,r]=U(!1);return e?K(s,{children:q(`div`,{className:`group flex items-center gap-x-1.5`,children:[K(ve,{size:13,className:`shrink-0 text-text-positive-weak`}),t?K(`a`,{href:`mailto:${e}`,className:`truncate text-primary text-sm underline-offset-2 hover:underline`,onClick:e=>e.stopPropagation(),children:e}):K(`span`,{className:`truncate text-text-positive text-sm`,children:e}),q(c,{children:[K(a,{asChild:!0,children:K(`button`,{onClick:t=>{t.stopPropagation(),t.preventDefault(),navigator.clipboard.writeText(e).then(()=>{r(!0),setTimeout(()=>r(!1),1500)})},className:`shrink-0 cursor-pointer text-text-positive-weak opacity-0 transition-opacity group-hover:opacity-100 hover:text-text-positive`,children:n?K(k,{size:13,className:`text-success-strong`}):K(me,{size:13})})}),K(o,{children:n?`Copied!`:`Copy email`})]})]})}):K(J,{})},Ye=({items:e,maxVisible:t=3})=>{if(!e||e.length===0)return K(J,{});let n=e.slice(0,t),r=e.slice(t);return q(`div`,{className:`flex flex-wrap gap-1`,children:[n.map((e,t)=>K(`span`,{className:`inline-flex items-center rounded-full border border-border bg-muted-weak px-2 py-0.5 text-text-positive text-xs`,children:e},t)),r.length>0&&K(s,{children:q(c,{children:[K(a,{asChild:!0,children:q(`span`,{className:`inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs`,children:[`+`,r.length,` more`]})}),K(o,{align:`start`,className:`flex max-w-64 flex-wrap gap-1 p-2`,children:r.map((e,t)=>K(`span`,{className:`inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs`,children:e},t))})]})})]})},Xe=({items:t=[]})=>q(y,{children:[K(g,{asChild:!0,children:K(e,{size:`sm`,variant:`ghost`,color:`secondary`,className:`size-9 rounded-full`,children:K(ye,{})})}),K(v,{children:K(_,{children:t.map(e=>K(m,{className:`px-3`,onSelect:t=>{e.onClick(e.id),t.preventDefault(),t.stopPropagation()},children:e.label},e.id))})})]}),Ze=({name:e})=>e?q(c,{children:[K(a,{children:K(t,{variant:`sm`,className:`line-clamp-2 w-full truncate text-wrap pb-px text-start`,children:e})}),K(o,{align:`start`,className:`h-fit min-w-48 max-w-80 pt-4`,children:q(`div`,{className:`flex flex-col gap-y-2`,children:[K(`p`,{className:`whitespace-pre-line text-wrap break-keep`,children:e}),q(`p`,{className:`w-full text-end`,children:[e.length,` chars`]})]})})]}):K(J,{}),Qe=({href:e,label:t})=>q(`a`,{href:e,target:`_blank`,className:`inline-flex items-center gap-1 truncate text-primary text-sm underline`,rel:`noopener noreferrer`,children:[K(`span`,{children:t||e}),K(he,{size:14})]}),$e=({value:e})=>q(c,{children:[K(a,{asChild:!0,children:K(`p`,{className:`font-number text-text-positive text-sm tabular-nums`,children:e.replace(/(\d{3})(\d{3})(\d{4})/,`($1) $2-$3`)})}),K(o,{align:`start`,children:K(`p`,{className:`tabular-nums`,children:e.slice(1).replace(/(\d{2})(\d{3})(\d{4})/,`(00) (+84) ($1) $2-$3`)})})]}),et=L(({value:e,showLabel:t=!0,successThreshold:n=70,warningThreshold:r=40})=>{if(e==null)return K(J,{});let i=Math.min(100,Math.max(0,e));return q(`div`,{className:`flex w-full min-w-24 items-center gap-x-2`,children:[K(ee,{value:i,className:W(`flex-1`,i>=n?`[&>[data-slot=progress-indicator]]:bg-success`:i>=r?`[&>[data-slot=progress-indicator]]:bg-warning`:`[&>[data-slot=progress-indicator]]:bg-danger`)}),t&&q(`span`,{className:`w-9 shrink-0 text-right font-number text-text-positive-weak text-xs tabular-nums`,children:[i,`%`]})]})});et.displayName=`UITableProgressDisplay`;const tt=({title:t,onClick:n})=>q(c,{children:[K(a,{children:K(e,{type:`button`,variant:`ghost`,color:`danger`,size:`icon`,onClick:z(async e=>{e.preventDefault(),e.stopPropagation(),await n?.()},[n]),children:K(De,{})})}),K(o,{children:K(`p`,{children:t||`Remove item from list table`})})]}),nt=(e,t,n)=>{let r=10**t;switch(n){case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:return Math.round(e*r)/r}},rt=L(({decimalSeparator:e=`.`,groupSeparator:t=`,`,prefix:r,suffix:i,precision:a,roundingMode:o=`round`,showTrailingZeros:s=!1,size:c=`lg`,value:l=0})=>{let u=V(()=>{let e={};return typeof a==`number`&&a>=0&&s&&(e.minimumFractionDigits=a),e.maximumFractionDigits=a,e},[a,s]),d=z(e=>{let t=e;return typeof a==`number`&&a>=0&&(t=nt(e,a,o)),t.toLocaleString(`en-US`,u)},[o,u,a]),f=V(()=>{if(typeof l==`number`)return Number.isNaN(l)||!Number.isFinite(l)?`N/A`:d(l);if(typeof l==`string`){let e=l.trim();if(!e)return`N/A`;let t=Number(e);return Number.isNaN(t)||!Number.isFinite(t)?`N/A`:d(t)}return`N/A`},[l,d]),p=V(()=>e===`.`&&t===`,`?f:f.replace(/,/g,t).replace(/\./g,e),[f,e,t]);return p===`0`||p===`N/A`||!p?K(J,{}):q(n,{padding:`none`,className:W(`font-number text-lg text-text-positive tabular-nums`,c===`xs`&&`text-xs`,c===`sm`&&`text-sm`,c===`md`&&`text-base`,c===`lg`&&`text-lg`,c===`xl`&&`text-xl`),children:[r,K(`p`,{children:p}),i]})});rt.displayName=`UITableStatisticDisplay`;const it=({value:e,colorMap:t,defaultColor:n=`muted`,variant:r=`soft`})=>e==null||e===``?K(J,{}):K(i,{variant:r,color:(t&&t[e])??n,size:`sm`,className:`min-w-16 justify-center capitalize`,children:e.charAt(0).toUpperCase()+e.slice(1).replace(/_/g,` `)}),at=({uuid:e,username:r,email:i})=>q(n,{wrap:!1,gap:`sm`,padding:`none`,children:[!e&&K(f,{className:`size-10 shadow-card`,children:K(u,{className:`bg-muted-weak`,children:K(ke,{size:28,className:`text-text-negative`})})}),e&&K(f,{className:`size-10 shadow-card`,children:K(u,{style:{backgroundColor:Pe.hex(e)},children:K(ke,{size:28,className:`text-white`})})}),q(n,{vertical:!0,padding:`none`,gap:`none`,align:`start`,children:[K(t,{className:`font-medium text-sm text-text-positive-weak`,children:r??`Unknown User`}),K(t,{variant:`sm`,className:`mt-0! text-text-positive-weak text-xs`,children:i})]})]}),ot=I(null),st=()=>{let e=R(ot);if(!e)throw Error(`useTableInnerWrapperContext must be used within a TableInnerWrapperProvider`);return e},ct=I(null),lt=()=>{let e=R(ct);if(!e)throw Error(`useTableInnerTableContext must be used within a TableInnerTableProvider`);return e},ut=I(null),dt=()=>{let e=R(ut);if(!e)throw Error(`useTableHeaderRowContext must be used within a TableHeaderRowProvider`);return e},ft=I(null),Y=()=>{let e=R(ft);if(!e)throw Error(`useTableBodyContext must be used within a TableBodyProvider`);return e},pt=I(null),mt=()=>{let e=R(pt);if(!e)throw Error(`useTableRowContext must be used within a TableRowProvider`);return e},ht=I(null),X=()=>{let e=R(ht);if(!e)throw Error(`useTableContext must be used within a TableProvider`);return e},gt=I(null),_t=()=>{let e=R(gt);if(!e)throw Error(`useUITableFilterContext must be used within a UITableProvider`);return e},vt=I(null),yt=()=>{let e=R(vt);if(!e)throw Error(`useUITableAnalysisContext must be used within a UITableProvider`);return e},bt=G([`absolute right-2 z-10 p-0.5 opacity-0 bg-card`,`cursor-pointer rounded-full transition-all`,`text-text-positive-weak`,`[&>svg]:size-4`,`group-hover:opacity-100`,`hover:bg-muted-muted hover:text-text-positive`]),xt=G([`sticky left-0 flex flex-1 items-center justify-center bg-transparent text-text-positive-weak opacity-100`]),St=G([`relative m-0 flex size-full flex-col flex-nowrap items-start justify-start gap-2`]),Ct=G([`relative w-full flex-1 min-h-0 overflow-auto border-b border-b-border border-l border-l-border`]),wt=G([`grid w-full table-fixed caption-bottom border-collapse border-spacing-0 flex-col content-start`]),Tt=G([`sticky top-0 z-20 h-9 w-full`,`grid select-none bg-white`,`border-b border-b-border shadow`,`font-medium text-[13px] text-text-positive-weak`,`[&_tr:not(:last-child)_td]:border-b`,`[&_th]:inline-flex`,`[&_th]:bg-card`,`[&_th]:items-center`,`[&_th]:transition-all`,`[&_th]:duration-300`,`[&_th]:whitespace-nowrap`,`[&_th]:border-border`,`[&_th]:border-r`,`[&_th]:first:border-l-0`,`[&_tr_th:not([data-pinned=false])]:bg-card`]),Et=G([`flex`]),Dt=G([`group flex`],{variants:{isPinned:{left:`sticky`,right:`sticky`,false:`relative`},isActions:{true:`border-r-0!`,false:``},isLastCell:{true:``,false:``},isFirstCell:{true:``,false:``},position:{start:`justify-start`,center:`justify-center`,end:`justify-end`}},compoundVariants:[{isPinned:`left`,isLastCell:!0,className:`border-r border-r-border`},{isPinned:`right`,isFirstCell:!0,className:`border-l border-l-border`}]}),Ot=G(`relative w-full,grid,[&_tr]:absolute,[&_tr]:flex,[&_tr]:flex-none,[&_tr]:w-full,[&_tr]:cursor-pointer [&_tr]:focus:outline-none,[&_tr]:border-b [&_tr]:border-b-border,[&_td]:z-10,[&_td]:transition-all,[&_td]:flex,[&_td]:flex-none,[&_td]:overflow-hidden,[&_td]:whitespace-nowrap,[&_td]:px-4,[&_td]:py-2.5,[&_td]:align-middle,[&_td]:border-border,[&_td]:data-[selected=true]:bg-muted-muted!,[&_td]:data-[selected=true]:hover:bg-muted-muted!,[&_td>div]:inline-flex,[&_td>div]:items-center,[&_td>div]:w-full,[&_td:not([data-pinned=false])]:z-20,[&_td:not([data-pinned=false])]:sticky,[&_td:not([data-pinned=false])]:bg-muted-bg-subtle`.split(`,`)),kt=G([`group transition-colors hover:bg-muted-muted hover:[&_td]:bg-muted-muted! [&_td]:border-r [&_td]:border-r-border`]),At=G([`group-hover:bg-muted-muted!`],{variants:{isPinned:{left:`sticky`,right:`sticky`,false:`relative`}},defaultVariants:{isPinned:void 0}}),jt=G([`sticky border-r-0! inset-y-0 right-0 z-50 flex items-center pr-4 group-hover:bg-muted-muted!`]),Mt=G([`group-hover:bg-muted-muted!`],{variants:{isPinned:{left:``,right:``,false:``},isLastCell:{true:``,false:``},isFirstCell:{true:``,false:``}},compoundVariants:[{isPinned:`left`,isLastCell:!0,className:`border-r border-r-border`},{isPinned:`right`,isFirstCell:!0,className:`border-l border-l-border`}]}),Nt=G([`overflow-x-hidden`],{variants:{position:{start:`justify-start`,center:`justify-center`,end:`justify-end`}},defaultVariants:{position:`start`}}),Pt=G([`shrink-0 flex w-full justify-center border-t border-border-weak font-medium`]),Ft=G([`flex w-full`,`text-[13px] font-medium text-text-positive-weak`]),It=G([`flex flex-none items-center overflow-hidden whitespace-nowrap px-4 py-2`,`border-r border-r-border`],{variants:{isPinned:{left:`sticky z-20 bg-white`,right:`sticky z-20 bg-white`,false:`relative`},isFirstCell:{true:`border-l border-l-border`,false:``},isLastCell:{true:`border-r border-r-border`,false:``}}}),Lt=G([`flex cursor-pointer gap-x-0.5`],{variants:{state:{idle:`text-text-positive-weak hover:text-text-positive`,fetching:`cursor-not-allowed`,error:`text-danger hover:text-danger-strong`}},defaultVariants:{state:`idle`}}),Rt=L(({height:e,className:t,children:n,...r})=>{let{isFetching:i,isRefetching:a,isEmpty:o}=Y();return o||i||a?null:K(`tbody`,{slot:`table-body`,style:{height:e},className:W(Ot(),t),...r,children:n})});Rt.displayName=`UITableBody`;const zt=L(({isPinned:e=!1,isFirstCell:t=!1,isLastCell:n=!1,colId:r,position:i=`start`,column:a,getContext:o,...s})=>{let{innerTableId:c,table:l}=lt(),u=H(null),d=H(null),f=V(()=>{let t=a?.getStart(`left`);return e===`left`&&typeof t==`number`?`${t}px`:void 0},[e,a]),p=V(()=>{let t=a?.getAfter(`right`);return e===`right`&&typeof t==`number`?`${t}px`:void 0},[e,a]),m=V(()=>`calc(var(--col-${r}-size) * 1px)`,[r]),h=V(()=>a?.columnDef.minSize?`calc(var(--col-${r}-minSize) * 1px)`:void 0,[r,a]),g=V(()=>a?.columnDef.maxSize?`calc(var(--col-${r}-maxSize) * 1px)`:void 0,[r,a]),_=V(()=>Fe(a?.columnDef.cell,o()),[a,o]);return B(()=>{u.current=document.querySelector(`table[id="${c}"]`)},[c]),B(()=>{if(!d.current)return;let e=d.current.scrollWidth,t=a?.getSize();t!=null&&e>t&&u.current instanceof HTMLTableElement&&typeof r==`string`&&a?.columnDef.meta?.fitContent&&l.setColumnSizing(t=>({...t,[r]:e+32}))},[r,a,l]),K(`td`,{slot:`table-body-cell`,"data-pinned":e,"data-lastcell":n||void 0,"data-firstcell":t||void 0,style:{left:f,right:p,width:m,minWidth:h,maxWidth:g},className:Mt({isPinned:e||void 0,isLastCell:n,isFirstCell:t}),...s,children:K(`div`,{ref:d,slot:`table-body-cell-inner`,className:Nt({position:i}),children:_})})});zt.displayName=`UITableCell`;const Bt=L(({virtualRowIndex:e,column:t,getContext:n,className:r,...i})=>{let a=V(()=>Fe(t?.columnDef.cell,n()),[t,n]);return K(`td`,{"data-col":`actions`,"data-cell":e,className:jt(),...i,children:a})});Bt.displayName=`UITableCellActions`;const Vt=L(({isPinned:e,isSelected:t=!1,className:n,onToggleRowSelected:r,...i})=>{let a=z(e=>{r?.(!!e)},[r]);return K(`td`,{slot:`table-body-cell`,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:W(At({isPinned:e}),n),...i,children:K(`div`,{"data-slot":`table-cell-inner`,className:`flex! w-full! items-center justify-center bg-transparent text-center align-middle`,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:K(b,{"aria-label":`Select Row`,checked:t,onCheckedChange:a})})})});Vt.displayName=`UITableCellSelect`;const Ht=L(()=>{let{table:e,isFetching:t,isRefetching:n,loadingDisplayRow:r=3}=X();return!t&&!n?null:K(`tbody`,{className:W(Ot(),`pointer-events-none`),children:Array.from({length:r}).map((t,n)=>K(`tr`,{"data-slot":`table-row`,"data-index":n,className:W(kt(),`animate-pulse relative!`),children:e.getAllColumns().map((t,r)=>{let i=t.getIsPinned(),a=t.getStart(`left`),o=t.getAfter(`right`);return t.id===`actions`?K(`td`,{"data-slot":`table-body-cell`,"data-col":t.id,"data-cell":r,style:{width:60},className:jt(),children:K(`div`,{className:`w-full h-4 bg-muted-muted rounded-full`})},`${t.id}-${r}`):t.id===`select`?K(`td`,{"data-slot":`table-body-cell`,"data-col":t.id,"data-cell":r,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:At({isPinned:`left`}),children:K(`div`,{className:`w-full flex justify-center`,children:K(`div`,{className:`size-4 bg-muted-muted rounded-full`})})},`${t.id}-${n}`):K(`td`,{"data-col":t.id,"data-cell":r,"data-selected":void 0,"data-lastcell":t.id===e.getAllColumns()[e.getAllColumns().length-1].id||void 0,"data-firstcell":t.id===e.getAllColumns()[0].id||void 0,style:{zIndex:i?20:0,left:i===`left`&&typeof a==`number`?`${a}px`:void 0,right:i===`right`&&typeof o==`number`?`${o}px`:void 0,width:`calc(var(--col-${t.id}-size) * 1px)`,minWidth:t.columnDef.minSize?`calc(var(--col-${t.id}-minSize) * 1px)`:void 0,maxWidth:t.columnDef.maxSize?`calc(var(--col-${t.id}-maxSize) * 1px)`:void 0},className:Mt({isPinned:t.getIsPinned(),isFirstCell:t.id===e.getRightHeaderGroups()[0]?.headers[0]?.id,isLastCell:t.id===e.getLeftHeaderGroups()[0]?.headers[e.getLeftHeaderGroups()[0].headers.length-1]?.id}),children:K(`div`,{className:Nt({position:t.columnDef.meta?.position??`start`}),children:K(`div`,{className:`w-full h-4 bg-muted-muted rounded-full`})})},`${t.id}-${r}`)})},n))})}),Ut=L(()=>{let{isEmpty:e,emptyDisplayHeight:t}=X();return e?K(Ne,{children:e&&K(`div`,{className:xt(),style:{minHeight:t??`24rem`},children:q(`div`,{className:`flex flex-col items-center gap-1`,children:[K(ue,{strokeWidth:1,size:48}),K(`p`,{children:`Không có dữ liệu`})]})})}):null});Ut.displayName=`UITableEmptyDisplay`;const Wt=L(({className:e,children:t,...n})=>K(`div`,{slot:`table-footer`,className:W(Pt(),e),...n,children:t}));Wt.displayName=`UITableFooter`;function Gt(e,t,n){switch(n){case`count`:return e;case`sum`:return t.reduce((e,t)=>e+t,0);case`avg`:return t.length===0?0:t.reduce((e,t)=>e+t,0)/t.length;case`min`:return t.length===0?0:Math.min(...t);case`max`:return t.length===0?0:Math.max(...t)}}function Kt(e,t){return e.map(e=>{let n=e.getValue(t);return typeof n==`string`?Number(n):typeof n==`number`?n:NaN}).filter(e=>!Number.isNaN(e))}const qt=L(()=>{let{table:e}=X(),{rowSelectionState:t}=Y(),n=V(()=>e.getHeaderGroups()[0]?.headers??[],[e.getHeaderGroups()]),r=V(()=>n.some(e=>e.column.columnDef.meta?.aggregation),[n]),i=V(()=>e.getSelectedRowModel().flatRows,[e,t]),a=V(()=>e.getRowModel().rows,[e]),o=i.length>0?i:a,s=V(()=>{let e={};for(let t of n){let n=t.column.columnDef.meta?.aggregation;if(!n)continue;let r=Kt(o,t.id);e[t.id]=Gt(o.length,r,n.type)}return e},[n,o]),c=e.getState().columnPinning,u=c.left??[],d=c.right??[],f=n.find(e=>d.includes(e.id))?.id,p=[...n].reverse().find(e=>u.includes(e.id))?.id;if(!r)return null;let m=i.length>0?`${i.length}`:`${a.length}`;return K(`div`,{slot:`table-footer-row`,className:Ft(),children:n.map(e=>{let t=e.id,n=u.includes(t)?`left`:d.includes(t)?`right`:!1,r=t===f,i=t===p,a=n===`left`?`${e.column.getStart(`left`)}px`:void 0,o=n===`right`?`${e.column.getAfter(`right`)}px`:void 0;if(t===`select`)return K(`div`,{slot:`table-footer-select`,"data-pinned":`left`,style:{left:`0px`,width:`60px`},className:W(It({isPinned:`left`,isFirstCell:!1,isLastCell:!1}),`justify-center`),children:K(`span`,{className:`truncate text-[11px] items-center text-text-positive-weak`,children:m})},t);if(t===`actions`)return K(`div`,{slot:`table-footer-actions`,style:{width:`calc(var(--col-${t}-size) * 1px)`,right:`0px`},className:It({isPinned:!1,isFirstCell:!1,isLastCell:!1})},t);let c=e.column.columnDef.meta?.aggregation,h=s[t]??null;return K(`div`,{slot:`table-footer-cell`,"data-pinned":n,style:{left:a,right:o,width:`calc(var(--col-${t}-size) * 1px)`},className:It({isPinned:n||`left`,isFirstCell:r,isLastCell:i}),children:c&&h!==null?K(l,{value:h,prefix:c.prefix,suffix:c.suffix,precision:c.precision,size:`sm`}):K(`span`,{className:`text-text-positive-weak`,children:`—`})},t)})})});qt.displayName=`UITableFooterRow`;const Jt=L(({className:e,children:t,...n})=>K(`thead`,{slot:`table-head`,className:W(Tt(),e),...n,children:t}));Jt.displayName=`UITableHead`;const Yt=L(({isPinned:e,onLeftPin:t,onRightPin:n,onUnpin:r,className:i})=>{let a=z(()=>{t?.(`left`)},[t]),o=z(()=>{n?.(`right`)},[n]),s=z(()=>{r?.(!1)},[r]);return q(y,{children:[K(g,{asChild:!0,children:K(`button`,{type:`button`,className:W(bt(),i),children:K(N,{})})}),K(v,{align:`end`,className:`w-64 p-4`,children:q(_,{className:`*:data-[slot=dropdown-menu-item]:rounded-xs *:data-[slot=dropdown-menu-item]:p-2`,children:[K(je,{mode:e?`visible`:`hidden`,children:q(m,{onClick:s,children:[!!e&&`Bỏ ghim`,K(h,{children:K(Se,{className:`size-4`})})]})}),q(je,{mode:e?`hidden`:`visible`,children:[q(m,{onClick:a,children:[e?`Bỏ ghim`:`Ghim trái`,K(h,{children:K(be,{className:`size-4`})})]}),q(m,{onClick:o,children:[e?`Bỏ ghim`:`Ghim phải`,K(h,{children:K(xe,{className:`size-4`})})]})]})]})})]})});Yt.displayName=`UITableHeadCellOption`;const Xt=L(({isVisible:e=!0,isPinned:t=!1,isFirstCell:n=!1,isLastCell:r=!1,isOptionsVisible:i=!0,headerId:a,headerColumn:o,className:s,children:c,onColumnPin:l,onToggleVisibility:u,...d})=>{let f=o?.columnDef.meta?.position,p=V(()=>t?20:void 0,[t]),m=V(()=>{let e=o?.getStart?.(`left`);return t===`left`&&typeof e==`number`?`${e}px`:void 0},[t,o]),h=V(()=>{let e=o?.getAfter?.(`right`);return t===`right`&&typeof e==`number`?`${e}px`:void 0},[t,o]),g=V(()=>`calc(var(--header-${a}-size) * 1px)`,[a]),_=V(()=>o?.columnDef.minSize?`calc(var(--col-${a}-minSize) * 1px)`:void 0,[a,o]),v=V(()=>o?.columnDef.maxSize?`calc(var(--col-${a}-maxSize) * 1px)`:void 0,[a,o]);return q(`th`,{slot:`table-head-cell`,"data-pinned":t,"data-header":a,style:{zIndex:p,left:m,right:h,width:g,minWidth:_,maxWidth:v},className:W(Dt({isPinned:t||`false`,isActions:a===`actions`,isLastCell:r,isFirstCell:n,position:f}),s),...d,children:[K(`div`,{className:`truncate px-4`,children:c}),i&&K(Yt,{isPinned:t,isVisible:e,onLeftPin:l,onRightPin:l,onUnpin:l})]})});Xt.displayName=`UITableHeadCell`;const Zt=L(({isPinned:e,isAllRowsSelected:t,style:n,onToggleAllRowsSelected:r,...i})=>{let a=z(e=>{r?.(!!e)},[r]);return K(`th`,{slot:`table-header-cell`,"data-pinned":!0,style:{left:0,zIndex:20,width:60,maxWidth:60},className:At({isPinned:e}),...i,children:K(`div`,{className:`absolute inset-0 flex items-center justify-center`,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:K(b,{"aria-label":`Select All Rows`,checked:t,onCheckedChange:a})})})});Zt.displayName=`UITableHeadCellSelect`;const Qt=L(({headerGroup:e,className:t,...n})=>{let{isAllRowsSelected:r,columnPinningState:i,leftPinnedHeaders:a,rightPinnedHeaders:o,onToggleAllRowsSelected:s}=dt(),c=o[0]?.id,l=a[a.length-1]?.id;return K(`tr`,{slot:`table-head-row`,className:W(Et(),t),...n,children:e.headers.map((e,t)=>{let n=e.column.getIsVisible(),a=i.left?.includes(e.id)?`left`:i.right?.includes(e.id)?`right`:!1;return e.id===`select`?K(Zt,{isPinned:a,isAllRowsSelected:r,onToggleAllRowsSelected:s},e.id):K(Xt,{isVisible:n,isPinned:a,isFirstCell:e.id===c,isLastCell:e.id===l,isOptionsVisible:![`select`,`actions`].includes(e.id),headerId:e.id,headerColumn:e.column,colSpan:e.colSpan,onColumnPin:e.column.pin,onToggleVisibility:e.column.toggleVisibility,children:Fe(e.column.columnDef.header,e.getContext())},`${e.id}-${t}`)})})});Qt.displayName=`UITableHeadRow`;const $t=L(({children:e,...t})=>{let{table:n,innerTableId:r,totalSize:i}=lt(),a=H(null);return B(()=>{if(!a.current)return;let e=n.getFlatHeaders(),t,r=new ResizeObserver(r=>{t!==void 0&&cancelAnimationFrame(t),t=requestAnimationFrame(()=>{let t=r[0];if(!t)return;let i=t.target;if(!(i instanceof HTMLTableElement))return;let a=t.contentRect.width,{left:o=[],right:s=[]}=n.getState().columnPinning,c=0,l=0,u=0,d=e.map(e=>{let{id:t}=e,n=t===`select`||t===`actions`,r=o.includes(t)||s.includes(t),i=e.getSize(),a=e.column.columnDef.maxSize;return n?(c+=60,{id:t,isFlex:!1,width:60}):r?(c+=i,{id:t,isFlex:!1,width:i}):e.column.columnDef.size||i!==150?(u+=i,{id:t,isFlex:!1,width:i}):(l++,{id:t,isFlex:!0,maxSize:a})}),f=a-c-u,p=l>0?Math.max(0,Math.floor(f/l)):0,m=i.closest(`[data-slot="table-scroll-host"]`);d.forEach(e=>{if(e.isFlex){let t=e.maxSize?Math.min(p,e.maxSize):p;i.style.setProperty(`--header-${e.id}-size`,`${t}`),i.style.setProperty(`--col-${e.id}-size`,`${t}`),m?.style.setProperty(`--col-${e.id}-size`,`${t}`),e.maxSize&&i.style.setProperty(`--col-${e.id}-maxSize`,`${e.maxSize}`)}else i.style.setProperty(`--header-${e.id}-size`,`${e.width}`),i.style.setProperty(`--col-${e.id}-size`,`${e.width}`),m?.style.setProperty(`--col-${e.id}-size`,`${e.width}`)})})});return r.observe(a.current),()=>{t!==void 0&&cancelAnimationFrame(t),r.disconnect()}},[n.getState().columnSizingInfo,n.getState().columnSizing,n.getState().columnPinning]),K(`table`,{id:r,ref:a,slot:`table-inner-table`,className:wt(),style:{minWidth:i},...t,children:e})});$t.displayName=`UITableInnerTable`;const Z=L(({children:e,...t})=>{let{innerWrapperId:n}=st();return K(`div`,{id:n,slot:`table-inner-wrapper`,className:Ct(),...t,children:e})});Z.displayName=`UITableInnerWrapper`;const en=L(({virtualRowIndex:e,virtualRowStart:t,fetchMoreData:n})=>{let{innerWrapperId:r}=st(),i=H(null),a=H(null),[o,s]=U(`idle`),[c,l]=U(0),u=z(async()=>{try{s(`fetching`),await n?.(),s(`idle`)}catch(e){console.error(`Error fetching more data:`,e),s(`error`)}},[n]);return B(()=>{if(i.current=document.querySelector(`div[id="${r}"]`),!i.current)return;let e=new ResizeObserver(e=>{l(e[0].contentRect.width)});return e.observe(i.current),()=>e.disconnect()},[r]),n?K(`tr`,{ref:a,"data-index":e,style:{transform:`translateY(${t}px)`,width:c},className:`sticky! left-0 h-10`,children:K(`td`,{className:`absolute left-0 flex w-full items-center justify-center text-xs`,children:q(`button`,{type:`button`,disabled:o===`fetching`,className:Lt({state:o}),onClick:u,children:[o===`idle`&&K(fe,{className:`size-4`}),o===`fetching`&&K(x,{className:`size-4 animate-spin`}),o===`error`&&K(O,{className:`size-4 text-danger`}),o===`idle`&&`Tải thêm`,o===`fetching`&&`Đang tải...`,o===`error`&&`Lỗi! Thử lại?`]})})}):null});en.displayName=`UITableLoadMore`;const tn=L(({row:e,isSelected:t,virtualRowIndex:n,virtualRowStart:r,children:i,...a})=>{let{keyOfClickRow:o,isAllRowsSelected:s,columnPinningState:c,leftPinnedHeaders:l,rightPinnedHeaders:u,onClickRow:d}=mt(),f=V(()=>c.left??[],[c]),p=V(()=>c.right??[],[c]),m=V(()=>u?.[0]?.id,[u]),h=V(()=>l?.[l.length-1]?.id,[l]),g=V(()=>e.getVisibleCells().some(e=>e.column.id===`select`),[e]),_=z(t=>{if(d){let t=o?e.original?.[o]:void 0;d(n,typeof t==`string`||typeof t==`number`?t:void 0)}else g&&e.toggleSelected();t.preventDefault(),t.stopPropagation()},[o,d,e,n,g]);return K(`tr`,{slot:`table-row`,"data-index":n,style:{transform:`translateY(${r}px)`},className:kt(),onClick:_,...a,children:e.getVisibleCells().map((e,r)=>{let i=f.includes(e.column.id),a=p.includes(e.column.id),o=i?`left`:a?`right`:!1;return e.column.id===`actions`?K(Bt,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,virtualRowIndex:n,column:e.column,getContext:e.getContext},`${e.id}-${r}`):e.column.id===`select`?K(Vt,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,isPinned:o,isSelected:s||t,onToggleRowSelected:e.row.toggleSelected},`${e.id}-${r}`):K(zt,{"data-col":e.column.id,"data-cell":n,"data-selected":t||void 0,isPinned:o,isFirstCell:e.column.id===m,isLastCell:e.column.id===h,colId:e.column.id,position:e.column.columnDef.meta?.position??`start`,column:e.column,getContext:e.getContext},`${e.id}-${r}`)})})});tn.displayName=`UITableRow`;const nn=L(({className:e,children:t,...n})=>K(`div`,{slot:`table-wrapper`,className:W(St(),e),...n,children:t}));nn.displayName=`UITableWrapper`;const rn=({children:e})=>{let{table:t,fetchMoreData:n}=X(),{rowSelectionState:r}=Y(),i=H(null),{rows:a}=t.getRowModel(),o=Be({count:a.length+(n?1:0),estimateSize:()=>40,getScrollElement:()=>i.current,measureElement:typeof window<`u`&&navigator.userAgent.indexOf(`Firefox`)===-1?e=>e?.getBoundingClientRect().height:void 0,overscan:2}),s=V(()=>`${o.getTotalSize()}px`,[o.getTotalSize()]);return q(te,{direction:`horizontal`,style:{direction:t.options.columnResizeDirection},className:`relative flex w-full max-w-full flex-1 gap-1 overflow-auto border-t border-t-border border-r border-r-border p-0 text-sm`,children:[K(S,{"data-slot":`table-scroll-host`,className:`relative flex flex-col`,children:q(Z,{ref:i,children:[q($t,{children:[K(Jt,{children:t.getHeaderGroups().map(e=>K(Qt,{headerGroup:e},e.id))}),K(Rt,{height:s,children:o.getVirtualItems().map(e=>{let t=a[e.index];if(!t&&n)return K(en,{virtualRowIndex:e.index,virtualRowStart:e.start,fetchMoreData:n},e.key);let i=r[t.id]===!0;return K(tn,{ref:o.measureElement,row:t,isSelected:i,virtualRowIndex:e.index,virtualRowStart:e.start},e.key)})}),K(Ht,{})]}),K(Ut,{})]})}),e&&q(Ne,{children:[K(ne,{}),e]})]})};function an(e,t,n){switch(n){case`count`:return e;case`sum`:return t.reduce((e,t)=>e+t,0);case`avg`:return t.length===0?0:t.reduce((e,t)=>e+t,0)/t.length;case`min`:return t.length===0?0:Math.min(...t);case`max`:return t.length===0?0:Math.max(...t)}}function on(e,t){return e.map(e=>{let n=e.getValue(t);return typeof n==`string`?Number(n):typeof n==`number`?n:NaN}).filter(e=>!Number.isNaN(e))}const sn={sum:`Tổng`,avg:`Trung bình`,count:`Đếm`,min:`Nhỏ nhất`,max:`Lớn nhất`},cn=L(()=>{let{table:e,totalRows:t}=X(),{rowSelectionState:n}=Y(),{isOpen:r,toggle:i}=yt(),a=V(()=>e.getRowModel().rows,[e]),o=V(()=>e.getSelectedRowModel().flatRows,[e,n]),s=V(()=>e.getHeaderGroups()[0]?.headers??[],[e]),c=V(()=>s.filter(e=>![`select`,`actions`].includes(e.id)).flatMap(e=>{let t=e.column.columnDef.meta?.aggregation;if(!t)return[];let n=t.label??(typeof e.column.columnDef.header==`string`?e.column.columnDef.header:e.id),r=on(a,e.id),i=o.length>0?on(o,e.id):null;return[{colId:e.id,header:n,aggregation:t,allValue:an(a.length,r,t.type),selectedValue:i===null?null:an(o.length,i,t.type)}]}),[s,a,o]);return q(`div`,{"data-slot":`table-analysis-panel`,className:`w-full border-t border-border`,children:[q(`button`,{type:`button`,className:W(`flex w-full items-center justify-between px-4 py-2 text-sm font-medium text-text-positive`,`hover:bg-muted-bg-subtle transition-colors outline-none`,`focus-visible:ring-2 focus-visible:ring-primary-weak`),onClick:i,"aria-expanded":r,children:[K(`span`,{children:`Tổng quan dữ liệu`}),K(r?pe:A,{size:14})]}),r&&q(`div`,{className:`px-4 pb-4 pt-2 space-y-4`,children:[q(`div`,{className:`flex flex-wrap gap-4`,children:[K(Q,{label:`Tổng bản ghi`,value:t??a.length}),K(Q,{label:`Hàng hiển thị`,value:a.length}),K(Q,{label:`Hàng đã chọn`,value:o.length,highlight:o.length>0})]}),c.length>0&&q(`div`,{children:[K(`p`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-text-positive-weak`,children:`Tóm tắt cột`}),K(`div`,{className:`overflow-x-auto rounded-md border border-border`,children:q(`table`,{className:`w-full text-sm`,children:[K(`thead`,{children:q(`tr`,{className:`border-b border-border bg-muted-bg-subtle text-xs text-text-positive-weak`,children:[K(`th`,{className:`px-3 py-2 text-left font-medium`,children:`Cột`}),K(`th`,{className:`px-3 py-2 text-left font-medium`,children:`Kiểu`}),K(`th`,{className:`px-3 py-2 text-right font-medium`,children:`Tất cả hàng`}),o.length>0&&K(`th`,{className:`px-3 py-2 text-right font-medium`,children:`Hàng đã chọn`})]})}),K(`tbody`,{children:c.map((e,t)=>q(`tr`,{className:W(`border-b border-border last:border-b-0`,t%2==1&&`bg-muted-bg-subtle/50`),children:[K(`td`,{className:`px-3 py-2 text-text-positive font-medium`,children:e.header}),K(`td`,{className:`px-3 py-2 text-text-positive-weak`,children:sn[e.aggregation.type]}),K(`td`,{className:`px-3 py-2 text-right`,children:K(l,{value:e.allValue,prefix:e.aggregation.prefix,suffix:e.aggregation.suffix,precision:e.aggregation.precision,size:`sm`})}),o.length>0&&K(`td`,{className:`px-3 py-2 text-right`,children:e.selectedValue===null?K(`span`,{className:`text-text-positive-weak`,children:`—`}):K(l,{value:e.selectedValue,prefix:e.aggregation.prefix,suffix:e.aggregation.suffix,precision:e.aggregation.precision,size:`sm`})})]},e.colId))})]})})]})]})]})});cn.displayName=`UITableAnalysisPanel`;const Q=L(({label:e,value:t,highlight:n})=>q(`div`,{className:W(`flex flex-col gap-0.5 rounded border px-3 py-2 min-w-25 bg-white`,n&&t>0?`border-primary bg-primary-bg-subtle`:`border-border bg-white`),children:[K(`span`,{className:`text-[11px] text-text-positive-weak`,children:e}),K(`span`,{className:`text-base font-semibold tabular-nums text-text-positive-strong`,children:t.toLocaleString()})]}));Q.displayName=`StatChip`;const ln={tag:K(Te,{size:14}),"single-tag":K(Te,{size:14}),"date-range":K(de,{size:14}),number:K(P,{size:14}),text:K(Oe,{size:14}),boolean:K(Ee,{size:14})},un=[{value:`eq`,label:`Bằng (=)`},{value:`ne`,label:`Không bằng (≠)`},{value:`gt`,label:`Lớn hơn (>)`},{value:`gte`,label:`Ít nhất (≥)`},{value:`lt`,label:`Nhỏ hơn (<)`},{value:`lte`,label:`Nhiều nhất (≤)`},{value:`between`,label:`Trong khoảng`}],dn=[{value:`contains`,label:`Chứa`},{value:`equals`,label:`Bằng`},{value:`starts-with`,label:`Bắt đầu bằng`},{value:`ends-with`,label:`Kết thúc bằng`}];function fn(e,t){switch(e.type){case`single-tag`:return e.value?t.options?.find(t=>t.value===e.value)?.label??e.value:`Chưa đặt`;case`tag`:return e.values.length?e.values.map(e=>t.options?.find(t=>t.value===e)?.label??e).join(`, `):`Chưa đặt`;case`date-range`:return!e.from&&!e.to?`Ngày không xác định`:e.from&&e.to?`${e.from} → ${e.to}`:e.from?`từ ${e.from}`:`đến ${e.to}`;case`number`:{let t={eq:`=`,ne:`≠`,gt:`>`,gte:`≥`,lt:`<`,lte:`≤`,between:`trong khoảng`}[e.operator];return e.value===void 0?t:e.operator===`between`?`${t} ${e.value} – ${e.valueTo??`?`}`:`${t} ${e.value}`}case`text`:{let t={contains:`chứa`,equals:`là`,"starts-with":`bắt đầu bằng`,"ends-with":`kết thúc bằng`}[e.operator];return e.value?`${t} "${e.value}"`:t}case`boolean`:return e.value===null?`Không xác định`:e.value?`Có`:`Không`}}const pn=({value:e,definition:t,onChange:n})=>K(`div`,{className:`flex flex-col gap-1 p-3`,children:(t.options??[]).length===0?K(`p`,{className:`text-xs text-text-positive-muted`,children:`Không có tùy chọn`}):t.options.map(t=>q(w,{className:W(`flex items-center gap-2 bg-secondary-bg-subtle hover:bg-secondary-muted px-4 py-2 rounded transition-colors`,e.values.includes(t.value)&&`bg-primary-muted hover:bg-primary-subtle`),children:[K(b,{checked:e.values.includes(t.value),onCheckedChange:r=>{n({type:`tag`,values:r?[...e.values,t.value]:e.values.filter(e=>e!==t.value)})}}),K(`span`,{className:`text-sm`,children:t.label})]},t.value))}),mn=({value:e,definition:t,onChange:n})=>K(`div`,{className:`flex flex-col gap-1 p-3`,children:(t.options??[]).length===0?K(`p`,{className:`text-xs text-text-positive-muted`,children:`Không có tùy chọn`}):t.options.map(t=>q(w,{className:W(`flex items-center gap-2 bg-secondary-bg-subtle hover:bg-secondary-muted px-4 py-2 rounded transition-colors`,e.value===t.value&&`bg-primary-muted hover:bg-primary-subtle`),children:[K(b,{checked:e.value===t.value,onCheckedChange:e=>{n({type:`single-tag`,value:e?t.value:null})}}),K(`span`,{className:`text-sm`,children:t.label})]},t.value))}),hn=({value:e,onChange:t})=>q(`div`,{className:`flex flex-col gap-3 p-3`,children:[q(`div`,{className:`flex flex-col gap-1`,children:[K(`span`,{className:`text-text-positive-muted text-xs`,children:`Từ ngày`}),K(C,{type:`date`,size:`md`,value:e.from??``,onValueChange:n=>t({...e,from:n||void 0})})]}),q(`div`,{className:`flex flex-col gap-1`,children:[K(`span`,{className:`text-text-positive-muted text-xs`,children:`Đến ngày`}),K(C,{type:`date`,size:`md`,value:e.to??``,onValueChange:n=>t({...e,to:n||void 0})})]})]}),gn=({value:e,onChange:t})=>q(`div`,{className:`flex flex-col gap-3 p-3`,children:[q(D,{value:e.operator,onValueChange:n=>t({...e,operator:n}),children:[K(se,{size:`sm`,children:K(E,{})}),K(oe,{children:un.map(e=>K(ae,{value:e.value,children:e.label},e.value))})]}),K(C,{type:`number`,size:`md`,placeholder:`Giá trị`,value:e.value??``,onValueChange:n=>t({...e,value:n?Number(n):void 0})}),e.operator===`between`&&K(C,{type:`number`,size:`md`,placeholder:`Đến giá trị`,value:e.valueTo??``,onValueChange:n=>t({...e,valueTo:n?Number(n):void 0})})]}),_n=({value:e,onChange:t})=>q(`div`,{className:`flex flex-col gap-3 p-3`,children:[q(D,{value:e.operator,onValueChange:n=>t({...e,operator:n}),children:[K(se,{size:`sm`,children:K(E,{})}),K(oe,{children:dn.map(e=>K(ae,{value:e.value,children:e.label},e.value))})]}),K(C,{type:`text`,size:`md`,placeholder:`Nhập văn bản...`,value:e.value,onValueChange:n=>t({...e,value:n})})]}),vn=[{label:`Có`,value:!0},{label:`Không`,value:!1},{label:`Không xác định`,value:null}],yn=({value:t,onChange:n})=>K(`div`,{className:`flex flex-col gap-1 p-3`,children:vn.map(({label:r,value:i})=>K(e,{type:`button`,tabIndex:-1,variant:`outline`,className:W(`rounded px-3 py-1.5 text-left text-sm transition-colors`,t.value===i?`bg-primary-muted font-medium`:`hover:bg-muted-bg-subtle`),onClick:()=>n({type:`boolean`,value:i}),children:r},r))});function bn({value:e,definition:t,onChange:n}){switch(e.type){case`tag`:return K(pn,{value:e,definition:t,onChange:n});case`single-tag`:return K(mn,{value:e,definition:t,onChange:n});case`date-range`:return K(hn,{value:e,onChange:n});case`number`:return K(gn,{value:e,onChange:n});case`text`:return K(_n,{value:e,onChange:n});case`boolean`:return K(yn,{value:e,onChange:n})}}const xn=({filter:t,definition:n,onRemove:r,onUpdate:i})=>q(`div`,{className:`flex items-center gap-1`,children:[q(ie,{children:[K(re,{asChild:!0,children:q(e,{type:`button`,variant:`outline`,color:`muted`,className:`flex-1 bg-white max-w-[calc(100%-32px)] justify-start`,innerClassName:`flex truncate gap-1.5`,children:[K(`span`,{className:`shrink-0 text-text-positive font-medium`,children:n.label}),K(`span`,{className:`truncate text-xs text-text-positive-weak`,children:fn(t.value,n)})]})}),q(T,{className:`w-64 p-0`,align:`start`,side:`bottom`,children:[K(`div`,{className:`border-b border-border px-3 py-2`,children:q(`div`,{className:`flex items-center gap-1.5`,children:[K(`span`,{className:`text-text-positive-muted`,children:ln[n.type]}),K(`p`,{className:`font-medium`,children:n.label})]})}),K(bn,{value:t.value,definition:n,onChange:i})]})]}),K(e,{type:`button`,size:`icon`,variant:`soft`,color:`danger`,className:`shrink`,onClick:r,children:K(De,{size:13})})]}),Sn=()=>{let{filterDefinitions:t,activeFilters:n,addFilter:r,removeFilter:i,updateFilter:a}=_t(),[o,s]=U(null),c=t.filter(e=>!n.some(t=>t.definitionId===e.id));return K(S,{defaultSize:25,className:W(`bg-card`,o===null?`max-w-8!`:`min-w-64`),children:q(`div`,{className:`relative z-20 flex size-full bg-muted-bg-subtle`,children:[K(`div`,{className:`min-w-0 flex-1 overflow-hidden`,children:K(je,{mode:o===`filters`?`visible`:`hidden`,children:q(`div`,{className:`flex size-full flex-col gap-2 p-4`,children:[q(`div`,{className:`flex items-center justify-between gap-2`,children:[K(`p`,{className:`font-medium`,children:`Bộ lọc`}),q(y,{children:[K(g,{asChild:!0,children:q(e,{variant:`outline`,color:`muted`,disabled:c.length===0,children:[K(_e,{size:13}),`Thêm bộ lọc`]})}),K(v,{align:`end`,children:c.map(e=>q(m,{className:`flex items-center gap-2`,onClick:()=>r(e.id),children:[ln[e.type],e.label]},e.id))})]})]}),K(p,{}),n.length===0?K(`p`,{className:`py-6 text-center text-xs text-text-positive-muted`,children:`Không có bộ lọc nào`}):K(`div`,{className:`flex flex-col gap-2 pt-1`,children:n.map(e=>{let n=t.find(t=>t.id===e.definitionId);return n?K(xn,{filter:e,definition:n,onRemove:()=>i(e.id),onUpdate:t=>a(e.id,t)},e.id):null})})]})})}),q(`div`,{className:`flex h-full flex-col border-l border-border bg-muted-bg-subtle text-sm`,children:[q(`button`,{type:`button`,className:W(`relative flex h-32 cursor-pointer flex-col items-center gap-y-2 p-2 py-4`,o===`filters`&&`bg-card`),onClick:()=>s(o===`filters`?null:`filters`),children:[K(ge,{size:18}),n.length>0&&K(`span`,{className:`absolute top-2 right-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[10px] leading-none text-primary-foreground`,children:n.length}),K(`span`,{className:`text-nowrap [writing-mode:vertical-lr]`,children:`Bộ lọc`})]}),K(p,{})]})]})})};function Cn(e){switch(e){case`tag`:return{type:`tag`,values:[]};case`single-tag`:return{type:`single-tag`,value:null};case`date-range`:return{type:`date-range`};case`number`:return{type:`number`,operator:`eq`};case`text`:return{type:`text`,operator:`contains`,value:``};case`boolean`:return{type:`boolean`,value:null}}}const wn=L(({innerWrapperId:e,children:t})=>{let n=V(()=>({innerWrapperId:e}),[e]);return K(ot.Provider,{value:n,children:t})});wn.displayName=`UITableInnerWrapperProvider`;const Tn=L(({table:e,innerTableId:t,totalSize:n,children:r})=>{let i=V(()=>({table:e,innerTableId:t,totalSize:n}),[e,t,n]);return K(ct.Provider,{value:i,children:r})});Tn.displayName=`UITableInnerTableProvider`;const En=L(({isAllRowsSelected:e,columnPinningState:t,leftPinnedHeaders:n,rightPinnedHeaders:r,onToggleAllRowsSelected:i,children:a})=>{let o=V(()=>({isAllRowsSelected:e,columnPinningState:t,leftPinnedHeaders:n,rightPinnedHeaders:r,onToggleAllRowsSelected:i}),[e,t,n,r,i]);return K(ut.Provider,{value:o,children:a})});En.displayName=`UITableHeadRowProvider`;const Dn=L(({isFetching:e,isRefetching:t,isEmpty:n,rowSelectionState:r,children:i})=>{let a=V(()=>({isFetching:e,isRefetching:t,isEmpty:n,rowSelectionState:r}),[e,n,r]);return K(ft.Provider,{value:a,children:i})});Dn.displayName=`UITableBodyProvider`;const On=L(({keyOfClickRow:e,isAllRowsSelected:t,columnPinningState:n,leftPinnedHeaders:r,rightPinnedHeaders:i,onClickRow:a,children:o})=>{let s=V(()=>({keyOfClickRow:e,isAllRowsSelected:t,columnPinningState:n,leftPinnedHeaders:r,rightPinnedHeaders:i,onClickRow:a}),[e,t,n,r,i,a]);return K(pt.Provider,{value:s,children:o})});On.displayName=`UITableRowProvider`;const kn=({title:e,isFetching:t=!1,isRefetching:n=!1,isLoading:r=!1,loadingDisplayRow:i=3,data:a,columns:o,totalRows:s,leftPinnedColumns:c=[],rightPinnedColumns:l=[],keyOfClickRow:u,onClickRow:d,onRowSelection:f,onColumnPinning:p,fetchMoreData:m,emptyDisplayHeight:h,csvData:g,csvFileName:_,filterDefinitions:v=[],onFilterChange:y,summary:ee=[],showAnalysisPanel:b=!1,description:x,headerActions:S,children:te})=>{let ne=Me(),C=Me(),[w,re]=U(!1),[T,ie]=U({}),[E,ae]=U({right:l,left:[`select`,...c]}),[oe,se]=U({}),[D,O]=U([]),ce=z(e=>(ie(e),f?.(e instanceof Function?e(T):e),e),[T,f]),le=z(e=>{ae(e),p?.(e instanceof Function?e(E):e)},[E,p]),ue=z(e=>{let t=v.find(t=>t.id===e);if(!t)return;let n={id:`${e}-${crypto.randomUUID()}`,definitionId:e,value:Cn(t.type)};O(e=>{let t=[...e,n];return y?.(t),t})},[v,y]),de=z(e=>{O(t=>{let n=t.filter(t=>t.id!==e);return y?.(n),n})},[y]),k=z((e,t)=>{O(n=>{let r=n.map(n=>n.id===e?{...n,value:t}:n);return y?.(r),r})},[y]),fe=V(()=>({filterDefinitions:v,activeFilters:D,addFilter:ue,removeFilter:de,updateFilter:k}),[v,D,ue,de,k]),A=ze({data:a,columns:o,state:{rowSelection:T,columnPinning:E,expanded:oe},defaultColumn:{enableResizing:!1,size:void 0,minSize:void 0,maxSize:void 0},columnResizeMode:`onChange`,columnResizeDirection:`ltr`,enableColumnPinning:!0,enableRowSelection:!0,enableColumnResizing:!0,enableMultiRowSelection:!0,autoResetAll:!1,autoResetExpanded:!1,autoResetPageIndex:!1,getSubRows:e=>e.subRows,getCoreRowModel:Ie(),getGroupedRowModel:Re(),getExpandedRowModel:Le(),onRowSelectionChange:ce,onColumnPinningChange:le,onExpandedChange:se}),pe=V(()=>{let{rows:e}=A.getRowModel();return e},[A.getRowModel().rows,A.getState().columnPinning]),j=V(()=>!t&&!n&&pe.length===0,[pe,t,n]),me=V(()=>({title:e,table:A,isEmpty:j,isFetching:t,isRefetching:n,isLoading:r,loadingDisplayRow:i,totalRows:s,fetchMoreData:m,emptyDisplayHeight:h,csvData:g,csvFileName:_,summary:ee,showAnalysisPanel:b,description:x,headerActions:S}),[e,A,j,n,t,r,i,s,m,h,A.getState().columnPinning,A.getState().expanded,g,_,ee,b,x,S]),M=V(()=>A.getState(),[A.getState()]),N=V(()=>A.getIsAllRowsSelected(),[A.getIsAllRowsSelected()]),he=V(()=>M.rowSelection,[M.rowSelection]),P=V(()=>M.columnPinning,[M.columnPinning]),ge=V(()=>A.getLeftHeaderGroups()[0]?.headers||[],[A.getState().columnPinning]),_e=V(()=>A.getRightHeaderGroups()[0]?.headers||[],[A.getState().columnPinning]),ve=V(()=>A.getTotalSize(),[A.getTotalSize()]),F=z(()=>re(e=>!e),[]),ye=V(()=>({isOpen:w,toggle:F}),[w,F]);return K(vt.Provider,{value:ye,children:K(gt.Provider,{value:fe,children:K(ht.Provider,{value:me,children:K(wn,{innerWrapperId:ne,children:K(Tn,{table:A,innerTableId:C,totalSize:ve,children:K(En,{isAllRowsSelected:N,columnPinningState:P,leftPinnedHeaders:ge,rightPinnedHeaders:_e,onToggleAllRowsSelected:A.toggleAllRowsSelected,children:K(Dn,{isFetching:t,isRefetching:n,isEmpty:j,rowSelectionState:he,children:K(On,{keyOfClickRow:u,isAllRowsSelected:N,columnPinningState:P,leftPinnedHeaders:ge,rightPinnedHeaders:_e,onClickRow:d,children:te})})})})})})})})},An={up:`bg-success`,down:`bg-danger`,neutral:`bg-primary`},jn=L(()=>{let{summary:e}=X();return!e||e.length===0?null:K(`div`,{"data-slot":`table-summary-bar`,className:`grid w-full gap-3 px-2 pb-1`,style:{gridTemplateColumns:`repeat(${e.length}, minmax(0, 240px))`},children:e.map(e=>{let t=An[e.trend??`neutral`];return q(`div`,{className:`flex flex-col overflow-hidden rounded border border-border bg-card shadow-card`,children:[K(`div`,{className:W(`h-0.75 w-full shrink-0`,t)}),q(`div`,{className:`flex flex-1 flex-col gap-2 px-5 py-4`,children:[K(`span`,{className:`text-[11px] font-semibold uppercase tracking-widest text-text-positive-weak`,children:e.label}),e.value!==null&&e.value!==void 0?K(l,{value:e.value,prefix:e.prefix,suffix:e.suffix,precision:e.precision,trend:e.trend,size:`xl`,className:`font-bold`}):K(`span`,{className:`text-xl font-bold tabular-nums text-text-positive-strong`,children:`—`}),e.description&&K(`span`,{className:`text-xs text-text-positive-weak`,children:e.description})]})]},e.label)})})});jn.displayName=`UITableSummaryBar`;function Mn(e){if(e==null)return``;if(typeof e==`number`)return String(e);if(typeof e==`boolean`)return e?`true`:`false`;let t=String(e);return t.includes(`,`)||t.includes(`"`)||t.includes(`
|
|
2
|
-
`)||t.includes(`\r`)?`"${t.replace(/"/g,`""`)}"`:t}function Nn(e){if(e.length===0)return``;let t=e[0].map(e=>Mn(e.label)),n=e.map(e=>e.map(e=>Mn(e.value)).join(`,`));return[t.join(`,`),...n].join(`
|
|
3
|
-
`)}function Pn(e,t){let n=Nn(e);if(!n)return;let r=new Blob([n],{type:`text/csv;charset=utf-8;`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${t}.csv`,a.click(),URL.revokeObjectURL(i)}const Fn=({onSearch:e,onChange:t,...n})=>{let r=Ve(t=>{e?.(t)},500);return q(`div`,{className:`relative w-full max-w-80 flex-1`,children:[K(C,{...n,size:`lg`,type:`search`,placeholder:`Tìm kiếm...`,className:`flex-1 ps-9 pe-9`,onChange:e=>{t?.(e),r(e.target.value??``)}}),K(`div`,{className:`pointer-events-none absolute inset-y-0 inset-s-0 flex items-center justify-center ps-3 text-text-positive-weak peer-disabled:opacity-50`,children:K(we,{size:16})}),K(`button`,{className:`absolute inset-y-0 inset-e-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:K(ce,{size:16,"aria-hidden":`true`})})]})},$=({children:e,disabled:t,onClick:n,className:r,...i})=>K(`button`,{type:`button`,disabled:t,className:W(`flex cursor-pointer items-center gap-x-1 rounded-sm border border-border bg-background p-2.5 text-sm text-text-positive-weak outline-none transition-all hover:shadow-card focus:border-border-emphasis focus:bg-muted-muted active:border-border-emphasis active:bg-muted-muted active:text-text-positive disabled:pointer-events-none disabled:cursor-default disabled:opacity-60 [&_svg]:size-3.5`,r),onClick:n,...i,children:e}),In=({onCreate:e,onDownload:t,onRefresh:n})=>{let{table:r,csvData:i,csvFileName:a,title:o,showAnalysisPanel:s}=X(),{isOpen:c,toggle:l}=yt(),u=z(()=>{if(t){t();return}if(!i||i.length===0)return;let e=r.getSelectedRowModel().flatRows;Pn(e.length>0?e.map(e=>i[e.index]).filter(Boolean):i,a||o)},[t,i,a,r,o]),d=!!(t||i&&i.length>0);return q(`div`,{className:`flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none`,children:[K($,{disabled:!e,onClick:t=>{e?.(),t.stopPropagation(),t.preventDefault()},children:K(j,{})}),K($,{disabled:!n,onClick:e=>{n?.(),e.stopPropagation(),e.preventDefault()},children:K(Ce,{})}),K($,{disabled:!d,onClick:e=>{u(),e.stopPropagation(),e.preventDefault()},children:K(M,{})}),s&&K($,{onClick:e=>{l(),e.stopPropagation(),e.preventDefault()},"aria-pressed":c,className:c?`bg-muted-muted text-text-positive`:void 0,children:K(le,{})})]})},Ln=({children:e})=>{let{title:t,description:n,headerActions:r}=X();return q(`div`,{"data-slot":`table-tooltip`,className:`relative flex w-full flex-col gap-2 px-2 py-0 text-sm`,children:[q(`div`,{className:`flex w-full items-start justify-between gap-4`,children:[q(`div`,{className:`flex flex-col gap-0.5`,children:[K(`h3`,{className:`font-semibold text-base text-text-positive`,children:t}),n&&K(`p`,{className:`text-sm text-muted-foreground`,children:n})]}),r&&K(`div`,{className:`flex items-center gap-2 shrink-0`,children:r})]}),K(`div`,{className:`flex w-full flex-1 justify-between gap-x-2`,children:e})]})};Ln.displayName=`TableTooltip`;export{et as A,We as B,Bt as C,it as D,at as E,Ye as F,He as H,Je as I,qe as L,Qe as M,Ze as N,rt as O,Xe as P,Ke as R,Vt as S,Rt as T,Ue as V,Yt as _,kn as a,Wt as b,rn as c,en as d,Z as f,Xt as g,Zt as h,jn as i,$e as j,tt as k,nn as l,Qt as m,In as n,Sn as o,$t as p,Fn as r,cn as s,Ln as t,tn as u,Jt as v,zt as w,Ut as x,qt as y,Ge as z};
|
|
4
|
-
//# sourceMappingURL=tables-CFrsk2lM.mjs.map
|