admin-ui-starter-kit 0.1.3 → 0.1.4
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/.agents/skills/admin-ui-consumer-migration/SKILL.md +9 -0
- package/.agents/skills/component-library-rules/SKILL.md +1 -0
- package/.agents/skills/component-library-rules/references/components/INDEX.json +1 -0
- package/.agents/skills/component-library-rules/references/components/INDEX.md +1 -0
- package/.agents/skills/component-library-rules/references/components/base__buttons.md +18 -6
- package/.agents/skills/component-library-rules/references/components/base__combobox.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__forms.md +10 -7
- package/.agents/skills/component-library-rules/references/components/base__item.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__map.md +7 -7
- package/.agents/skills/component-library-rules/references/components/base__navigation.md +8 -8
- package/.agents/skills/component-library-rules/references/components/base__table.md +2 -2
- package/.agents/skills/component-library-rules/references/components/base__typography.md +6 -4
- package/.agents/skills/component-library-rules/references/components/composed__ai-elements.md +4 -4
- package/.agents/skills/component-library-rules/references/components/composed__api-key-list.md +4 -4
- package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +107 -113
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +49 -48
- package/.agents/skills/component-library-rules/references/components/composed__navigation.md +6 -2
- package/.agents/skills/component-library-rules/references/components/composed__timelines.md +21 -7
- package/.agents/skills/component-library-rules/references/components/features__comments.md +12 -4
- package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +4 -2
- package/.agents/skills/component-library-rules/references/components/features__event-log.md +6 -2
- package/.agents/skills/component-library-rules/references/components/features__overlays.md +8 -6
- package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +552 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +2 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +7 -7
- package/.agents/skills/component-library-rules/references/components/ui__toggles-group.md +7 -7
- package/.agents/skills/component-library-rules/references/components/ui__toggles.md +1 -1
- package/CHANGELOG.md +27 -1
- package/INTEGRATION.md +4 -0
- package/MIGRATION.md +5 -1
- package/README.md +6 -2
- package/dist/_shared/accordion-BnxO7Is4.js +130 -0
- package/dist/_shared/accordion-BnxO7Is4.js.map +1 -0
- package/dist/_shared/accordion-RIN0MjPz.cjs +2 -0
- package/dist/_shared/accordion-RIN0MjPz.cjs.map +1 -0
- package/dist/_shared/action-menu-IIO9KtJ2.js +96 -0
- package/dist/_shared/action-menu-IIO9KtJ2.js.map +1 -0
- package/dist/_shared/action-menu-RAyg3cvM.cjs +2 -0
- package/dist/_shared/action-menu-RAyg3cvM.cjs.map +1 -0
- package/dist/_shared/ai-artifact--MqIfP-8.js +1068 -0
- package/dist/_shared/ai-artifact--MqIfP-8.js.map +1 -0
- package/dist/_shared/ai-artifact-D1dBeEz1.cjs +3 -0
- package/dist/_shared/ai-artifact-D1dBeEz1.cjs.map +1 -0
- package/dist/_shared/alert-D3gRd7RK.cjs +2 -0
- package/dist/_shared/alert-D3gRd7RK.cjs.map +1 -0
- package/dist/_shared/alert-DQ-tV8b-.js +48 -0
- package/dist/_shared/alert-DQ-tV8b-.js.map +1 -0
- package/dist/_shared/app-shell-C4d7kCCd.cjs +2 -0
- package/dist/_shared/app-shell-C4d7kCCd.cjs.map +1 -0
- package/dist/_shared/app-shell-CKxcpPTc.js +94 -0
- package/dist/_shared/app-shell-CKxcpPTc.js.map +1 -0
- package/dist/_shared/avatar-0spfQEHG.cjs +2 -0
- package/dist/_shared/avatar-0spfQEHG.cjs.map +1 -0
- package/dist/_shared/avatar-CBi4LGxy.js +52 -0
- package/dist/_shared/avatar-CBi4LGxy.js.map +1 -0
- package/dist/_shared/badge-BK5VvEgg.js +108 -0
- package/dist/_shared/badge-BK5VvEgg.js.map +1 -0
- package/dist/_shared/badge-kS_XtN-z.cjs +2 -0
- package/dist/_shared/badge-kS_XtN-z.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs +2 -0
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js +111 -0
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js.map +1 -0
- package/dist/_shared/button-683R5quQ.js +46 -0
- package/dist/_shared/button-683R5quQ.js.map +1 -0
- package/dist/_shared/button-CjZrRLzR.cjs +2 -0
- package/dist/_shared/button-CjZrRLzR.cjs.map +1 -0
- package/dist/_shared/button-LZWDn-aU.cjs +2 -0
- package/dist/_shared/button-LZWDn-aU.cjs.map +1 -0
- package/dist/_shared/button-cnkCF8q8.js +177 -0
- package/dist/_shared/button-cnkCF8q8.js.map +1 -0
- package/dist/_shared/buttons-DHV2eZAf.cjs +2 -0
- package/dist/_shared/buttons-DHV2eZAf.cjs.map +1 -0
- package/dist/_shared/buttons-ehfMSkwP.js +143 -0
- package/dist/_shared/buttons-ehfMSkwP.js.map +1 -0
- package/dist/_shared/card-radio-group-Bf03M6c5.js +158 -0
- package/dist/_shared/card-radio-group-Bf03M6c5.js.map +1 -0
- package/dist/_shared/card-radio-group-SqPUL0Je.cjs +2 -0
- package/dist/_shared/card-radio-group-SqPUL0Je.cjs.map +1 -0
- package/dist/_shared/chunk-CMqjfN_6.cjs +1 -0
- package/dist/_shared/combobox-Cvs70ic4.js +808 -0
- package/dist/_shared/combobox-Cvs70ic4.js.map +1 -0
- package/dist/_shared/combobox-Dos9YWjk.cjs +2 -0
- package/dist/_shared/combobox-Dos9YWjk.cjs.map +1 -0
- package/dist/_shared/command-Bxe_FmGD.cjs +2 -0
- package/dist/_shared/command-Bxe_FmGD.cjs.map +1 -0
- package/dist/_shared/command-CAI-BCSR.js +123 -0
- package/dist/_shared/command-CAI-BCSR.js.map +1 -0
- package/dist/_shared/command-DRIySU26.cjs +2 -0
- package/dist/_shared/command-DRIySU26.cjs.map +1 -0
- package/dist/_shared/command-DwRnPIGs.js +39 -0
- package/dist/_shared/command-DwRnPIGs.js.map +1 -0
- package/dist/_shared/comments-DD2aeZVz.js +946 -0
- package/dist/_shared/comments-DD2aeZVz.js.map +1 -0
- package/dist/_shared/comments-DzwU4sNE.cjs +2 -0
- package/dist/_shared/comments-DzwU4sNE.cjs.map +1 -0
- package/dist/_shared/containers-D7oZE4XI.cjs +2 -0
- package/dist/_shared/containers-D7oZE4XI.cjs.map +1 -0
- package/dist/_shared/containers-anBivbL9.js +19 -0
- package/dist/_shared/containers-anBivbL9.js.map +1 -0
- package/dist/_shared/content-container-CVUJCLhn.cjs +2 -0
- package/dist/_shared/content-container-CVUJCLhn.cjs.map +1 -0
- package/dist/_shared/content-container-Dv8XsAw4.js +33 -0
- package/dist/_shared/content-container-Dv8XsAw4.js.map +1 -0
- package/dist/_shared/copyable-D7WhgEzJ.js +38 -0
- package/dist/_shared/copyable-D7WhgEzJ.js.map +1 -0
- package/dist/_shared/copyable-DDjT505-.cjs +2 -0
- package/dist/_shared/copyable-DDjT505-.cjs.map +1 -0
- package/dist/_shared/date-picker-3G3C-sIq.cjs +2 -0
- package/dist/_shared/date-picker-3G3C-sIq.cjs.map +1 -0
- package/dist/_shared/date-picker-7yuMHPYs.js +1362 -0
- package/dist/_shared/date-picker-7yuMHPYs.js.map +1 -0
- package/dist/_shared/date-pickers-B_VUgjvY.cjs +2 -0
- package/dist/_shared/date-pickers-B_VUgjvY.cjs.map +1 -0
- package/dist/_shared/date-pickers-DZXi0di0.js +330 -0
- package/dist/_shared/date-pickers-DZXi0di0.js.map +1 -0
- package/dist/_shared/dialog-A95-614f.js +101 -0
- package/dist/_shared/dialog-A95-614f.js.map +1 -0
- package/dist/_shared/dialog-ivDByBmO.cjs +2 -0
- package/dist/_shared/dialog-ivDByBmO.cjs.map +1 -0
- package/dist/_shared/display-Cuj4td-V.js +1237 -0
- package/dist/_shared/display-Cuj4td-V.js.map +1 -0
- package/dist/_shared/display-D2q93jiS.cjs +8 -0
- package/dist/_shared/display-D2q93jiS.cjs.map +1 -0
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +2 -0
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +1 -0
- package/dist/_shared/dropdown-menu-CoWmrjYX.js +147 -0
- package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +1 -0
- package/dist/_shared/form-field-BNuCBym1.js +319 -0
- package/dist/_shared/form-field-BNuCBym1.js.map +1 -0
- package/dist/_shared/form-field-C4fQYsqv.cjs +2 -0
- package/dist/_shared/form-field-C4fQYsqv.cjs.map +1 -0
- package/dist/_shared/form-sizing-D74IS9KG.js +21 -0
- package/dist/_shared/form-sizing-D74IS9KG.js.map +1 -0
- package/dist/_shared/form-sizing-aVwVuF-w.cjs +2 -0
- package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +1 -0
- package/dist/_shared/format-BTtJC6oz.cjs +2 -0
- package/dist/_shared/format-BTtJC6oz.cjs.map +1 -0
- package/dist/_shared/format-BX3QestD.js +48 -0
- package/dist/_shared/format-BX3QestD.js.map +1 -0
- package/dist/_shared/forms-BV4fHeRx.cjs +2 -0
- package/dist/_shared/forms-BV4fHeRx.cjs.map +1 -0
- package/dist/_shared/forms-DjAdYxme.js +3378 -0
- package/dist/_shared/forms-DjAdYxme.js.map +1 -0
- package/dist/_shared/header-D4Oz-mCv.cjs +2 -0
- package/dist/_shared/header-D4Oz-mCv.cjs.map +1 -0
- package/dist/_shared/header-X5DZ8vmO.js +360 -0
- package/dist/_shared/header-X5DZ8vmO.js.map +1 -0
- package/dist/_shared/heading-C7mNh03X.cjs +2 -0
- package/dist/_shared/heading-C7mNh03X.cjs.map +1 -0
- package/dist/_shared/heading-CrNpYcUr.js +39 -0
- package/dist/_shared/heading-CrNpYcUr.js.map +1 -0
- package/dist/_shared/hooks-CKXPg30g.js +118 -0
- package/dist/_shared/hooks-CKXPg30g.js.map +1 -0
- package/dist/_shared/hooks-CTiEImZp.cjs +2 -0
- package/dist/_shared/hooks-CTiEImZp.cjs.map +1 -0
- package/dist/_shared/icon-badge-BAWl1oOe.cjs +2 -0
- package/dist/_shared/icon-badge-BAWl1oOe.cjs.map +1 -0
- package/dist/_shared/icon-badge-zTBVtgt9.js +52 -0
- package/dist/_shared/icon-badge-zTBVtgt9.js.map +1 -0
- package/dist/_shared/input-Cw2uICc1.cjs +2 -0
- package/dist/_shared/input-Cw2uICc1.cjs.map +1 -0
- package/dist/_shared/input-D43_IMWW.cjs +2 -0
- package/dist/_shared/input-D43_IMWW.cjs.map +1 -0
- package/dist/_shared/input-DJo8d1Rr.js +182 -0
- package/dist/_shared/input-DJo8d1Rr.js.map +1 -0
- package/dist/_shared/input-R8c90tNY.js +17 -0
- package/dist/_shared/input-R8c90tNY.js.map +1 -0
- package/dist/_shared/item-BxlP5TO3.js +224 -0
- package/dist/_shared/item-BxlP5TO3.js.map +1 -0
- package/dist/_shared/item-X18HIqR7.cjs +2 -0
- package/dist/_shared/item-X18HIqR7.cjs.map +1 -0
- package/dist/_shared/mentions-DE9aDOMu.cjs +2 -0
- package/dist/_shared/mentions-DE9aDOMu.cjs.map +1 -0
- package/dist/_shared/mentions-DjjYmMLc.js +493 -0
- package/dist/_shared/mentions-DjjYmMLc.js.map +1 -0
- package/dist/_shared/metadata-C5MSNo7y.js +236 -0
- package/dist/_shared/metadata-C5MSNo7y.js.map +1 -0
- package/dist/_shared/metadata-Cw3Kj2Ug.cjs +2 -0
- package/dist/_shared/metadata-Cw3Kj2Ug.cjs.map +1 -0
- package/dist/_shared/money-display-B7AKxxNt.js +198 -0
- package/dist/_shared/money-display-B7AKxxNt.js.map +1 -0
- package/dist/_shared/money-display-E22wbM21.cjs +2 -0
- package/dist/_shared/money-display-E22wbM21.cjs.map +1 -0
- package/dist/_shared/navigation-B9VAXqLL.cjs +2 -0
- package/dist/_shared/navigation-B9VAXqLL.cjs.map +1 -0
- package/dist/_shared/navigation-CxoJVgfo.js +420 -0
- package/dist/_shared/navigation-CxoJVgfo.js.map +1 -0
- package/dist/_shared/overlays-C-T8RnJz.cjs +2 -0
- package/dist/_shared/overlays-C-T8RnJz.cjs.map +1 -0
- package/dist/_shared/overlays-DfRsQzD3.js +633 -0
- package/dist/_shared/overlays-DfRsQzD3.js.map +1 -0
- package/dist/_shared/page-C4jEULwi.js +263 -0
- package/dist/_shared/page-C4jEULwi.js.map +1 -0
- package/dist/_shared/page-DX3pA_tJ.cjs +2 -0
- package/dist/_shared/page-DX3pA_tJ.cjs.map +1 -0
- package/dist/_shared/popover-CaHvG8Vj.cjs +2 -0
- package/dist/_shared/popover-CaHvG8Vj.cjs.map +1 -0
- package/dist/_shared/popover-L37RqoRO.js +83 -0
- package/dist/_shared/popover-L37RqoRO.js.map +1 -0
- package/dist/_shared/popover-menu-CVAr985u.js +95 -0
- package/dist/_shared/popover-menu-CVAr985u.js.map +1 -0
- package/dist/_shared/popover-menu-Cq-LnAMh.cjs +2 -0
- package/dist/_shared/popover-menu-Cq-LnAMh.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-C3gVBm-v.cjs +2 -0
- package/dist/_shared/rich-text-editor-C3gVBm-v.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-Cylb-lkv.js +616 -0
- package/dist/_shared/rich-text-editor-Cylb-lkv.js.map +1 -0
- package/dist/_shared/scroll-area-BH5CPQh4.js +41 -0
- package/dist/_shared/scroll-area-BH5CPQh4.js.map +1 -0
- package/dist/_shared/scroll-area-u46BOVcC.cjs +2 -0
- package/dist/_shared/scroll-area-u46BOVcC.cjs.map +1 -0
- package/dist/_shared/select-BwUUXpsb.js +85 -0
- package/dist/_shared/select-BwUUXpsb.js.map +1 -0
- package/dist/_shared/select-CG5Yq-6A.cjs +2 -0
- package/dist/_shared/select-CG5Yq-6A.cjs.map +1 -0
- package/dist/_shared/separator-B8FBp-7E.js +16 -0
- package/dist/_shared/separator-B8FBp-7E.js.map +1 -0
- package/dist/_shared/separator-q42IlFFA.cjs +2 -0
- package/dist/_shared/separator-q42IlFFA.cjs.map +1 -0
- package/dist/_shared/sheet-BKEfwhCn.js +100 -0
- package/dist/_shared/sheet-BKEfwhCn.js.map +1 -0
- package/dist/_shared/sheet-D4yWgkwC.cjs +2 -0
- package/dist/_shared/sheet-D4yWgkwC.cjs.map +1 -0
- package/dist/_shared/sidebar-BeWLjIRR.js +537 -0
- package/dist/_shared/sidebar-BeWLjIRR.js.map +1 -0
- package/dist/_shared/sidebar-Bl_KRk-S.cjs +2 -0
- package/dist/_shared/sidebar-Bl_KRk-S.cjs.map +1 -0
- package/dist/_shared/sidebar-DzzdJ2xk.cjs +2 -0
- package/dist/_shared/sidebar-DzzdJ2xk.cjs.map +1 -0
- package/dist/_shared/sidebar-ux-yk-Ph.js +382 -0
- package/dist/_shared/sidebar-ux-yk-Ph.js.map +1 -0
- package/dist/_shared/skeleton-CGQMeno1.js +14 -0
- package/dist/_shared/skeleton-CGQMeno1.js.map +1 -0
- package/dist/_shared/skeleton-D1c5OHXa.cjs +2 -0
- package/dist/_shared/skeleton-D1c5OHXa.cjs.map +1 -0
- package/dist/_shared/slot-C5EJicOc.js +18 -0
- package/dist/_shared/slot-C5EJicOc.js.map +1 -0
- package/dist/_shared/slot-D-Rwlrz2.cjs +2 -0
- package/dist/_shared/slot-D-Rwlrz2.cjs.map +1 -0
- package/dist/_shared/smart-card-DL7esK_y.cjs +2 -0
- package/dist/_shared/smart-card-DL7esK_y.cjs.map +1 -0
- package/dist/_shared/smart-card-eBfUvQ9r.js +360 -0
- package/dist/_shared/smart-card-eBfUvQ9r.js.map +1 -0
- package/dist/_shared/spinner-Bvjs1ybK.cjs +2 -0
- package/dist/_shared/spinner-Bvjs1ybK.cjs.map +1 -0
- package/dist/_shared/spinner-XcfVYbbp.js +67 -0
- package/dist/_shared/spinner-XcfVYbbp.js.map +1 -0
- package/dist/_shared/switch-BBP3u1z5.js +55 -0
- package/dist/_shared/switch-BBP3u1z5.js.map +1 -0
- package/dist/_shared/switch-zFZhhOEP.cjs +2 -0
- package/dist/_shared/switch-zFZhhOEP.cjs.map +1 -0
- package/dist/_shared/text-DzKt9cyb.cjs +2 -0
- package/dist/_shared/text-DzKt9cyb.cjs.map +1 -0
- package/dist/_shared/text-qsEg5GdP.js +74 -0
- package/dist/_shared/text-qsEg5GdP.js.map +1 -0
- package/dist/_shared/textarea-BAKapsLQ.cjs +2 -0
- package/dist/_shared/textarea-BAKapsLQ.cjs.map +1 -0
- package/dist/_shared/textarea-Bfv1KxBm.js +119 -0
- package/dist/_shared/textarea-Bfv1KxBm.js.map +1 -0
- package/dist/_shared/tooltip-CLr_sPX8.js +49 -0
- package/dist/_shared/tooltip-CLr_sPX8.js.map +1 -0
- package/dist/_shared/tooltip-mvxZV_Lu.cjs +2 -0
- package/dist/_shared/tooltip-mvxZV_Lu.cjs.map +1 -0
- package/dist/_shared/typography-4CSyoCj9.js +102 -0
- package/dist/_shared/typography-4CSyoCj9.js.map +1 -0
- package/dist/_shared/typography-DKn7P4wX.cjs +2 -0
- package/dist/_shared/typography-DKn7P4wX.cjs.map +1 -0
- package/dist/_shared/ui-provider-CQJ1glwN.js +85 -0
- package/dist/_shared/ui-provider-CQJ1glwN.js.map +1 -0
- package/dist/_shared/ui-provider-RIYE7O_V.cjs +2 -0
- package/dist/_shared/ui-provider-RIYE7O_V.cjs.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +2 -2
- package/dist/components/base/badge/badge.d.ts +1 -1
- package/dist/components/base/badge/badge.d.ts.map +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/google-button.d.ts +1 -1
- package/dist/components/base/buttons/google-button.d.ts.map +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/buttons/shopify-button.d.ts +1 -1
- package/dist/components/base/buttons/shopify-button.d.ts.map +1 -1
- package/dist/components/base/buttons/tooltip-button.d.ts.map +1 -1
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/cards/partials/card-primitives.d.ts +6 -6
- package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-alert.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-alert.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.tokens.d.ts +1 -1
- package/dist/components/base/combobox/combobox.strings.d.ts.map +1 -1
- package/dist/components/base/combobox/components/highlighted-text.d.ts.map +1 -1
- package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/combobox/types.d.ts +2 -0
- package/dist/components/base/combobox/types.d.ts.map +1 -1
- package/dist/components/base/command/command.d.ts +5 -5
- package/dist/components/base/command/command.d.ts.map +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +2 -2
- package/dist/components/base/copyable/copyable.d.ts +1 -1
- package/dist/components/base/copyable/copyable.d.ts.map +1 -1
- package/dist/components/base/copyable/index.cjs +1 -1
- package/dist/components/base/copyable/index.js +1 -1
- package/dist/components/base/currency/currency-pair-preview.d.ts +1 -1
- package/dist/components/base/currency/currency-pair-preview.d.ts.map +1 -1
- package/dist/components/base/currency/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/date-picker-footer.d.ts +2 -1
- package/dist/components/base/date-pickers/date-picker-footer.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-picker-header.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker-header.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-picker-helpers.d.ts +5 -1
- package/dist/components/base/date-pickers/date-picker-helpers.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-picker.d.ts +2 -1
- package/dist/components/base/date-pickers/date-picker.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-range-picker.d.ts +2 -1
- package/dist/components/base/date-pickers/date-range-picker.d.ts.map +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +3 -3
- package/dist/components/base/date-pickers/month-year-picker.d.ts +2 -1
- package/dist/components/base/date-pickers/month-year-picker.d.ts.map +1 -1
- package/dist/components/base/date-pickers/segmented-time-input.d.ts +2 -1
- package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -1
- package/dist/components/base/display/boolean-indicator.d.ts +1 -1
- package/dist/components/base/display/boolean-indicator.d.ts.map +1 -1
- package/dist/components/base/display/date-block.d.ts +1 -1
- package/dist/components/base/display/date-block.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -1
- package/dist/components/base/display/fields/email-display.d.ts +1 -1
- package/dist/components/base/display/fields/email-display.d.ts.map +1 -1
- package/dist/components/base/display/fields/phone-display.d.ts +1 -1
- package/dist/components/base/display/fields/phone-display.d.ts.map +1 -1
- package/dist/components/base/display/fields/url-display.d.ts +1 -1
- package/dist/components/base/display/fields/url-display.d.ts.map +1 -1
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
- package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.js +12 -12
- package/dist/components/base/display/inline-stat/inline-stat.d.ts +1 -1
- package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +1 -1
- package/dist/components/base/display/metadata/index.cjs +1 -1
- package/dist/components/base/display/metadata/index.js +1 -1
- package/dist/components/base/display/metadata/metadata-list.d.ts +1 -1
- package/dist/components/base/display/metadata/metadata-list.d.ts.map +1 -1
- package/dist/components/base/display/money-display.d.ts +1 -1
- package/dist/components/base/display/money-display.d.ts.map +1 -1
- package/dist/components/base/display/money-input.d.ts +1 -1
- package/dist/components/base/display/money-input.d.ts.map +1 -1
- package/dist/components/base/display/notification-banner.d.ts +1 -1
- package/dist/components/base/display/notification-banner.d.ts.map +1 -1
- package/dist/components/base/display/numeric-value/numeric-value.d.ts +1 -1
- package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +1 -1
- package/dist/components/base/display/placeholder-pattern.d.ts +1 -1
- package/dist/components/base/display/placeholder-pattern.d.ts.map +1 -1
- package/dist/components/base/display/qr-code.d.ts +1 -1
- package/dist/components/base/display/qr-code.d.ts.map +1 -1
- package/dist/components/base/display/section-header/section-header.d.ts +1 -1
- package/dist/components/base/display/section-header/section-header.d.ts.map +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
- package/dist/components/base/display/throttle-alert.d.ts +1 -1
- package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
- package/dist/components/base/display/user-cell/user-cell.d.ts +1 -1
- package/dist/components/base/display/user-cell/user-cell.d.ts.map +1 -1
- package/dist/components/base/display/visually-hidden.d.ts +1 -1
- package/dist/components/base/display/visually-hidden.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-header.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-header.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-legend.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-legend.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar.d.ts.map +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.cjs.map +1 -1
- package/dist/components/base/event-calendar/index.js +12 -12
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/card-checkbox-group.d.ts +1 -1
- package/dist/components/base/forms/fields/card-checkbox-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/card-radio-group.d.ts +1 -1
- package/dist/components/base/forms/fields/card-radio-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/coordinates-input.d.ts +1 -1
- package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/date-time-input.d.ts +1 -1
- package/dist/components/base/forms/fields/date-time-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/dimensions-input.d.ts +1 -1
- package/dist/components/base/forms/fields/dimensions-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts +1 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -1
- package/dist/components/base/forms/fields/list-radio-group.d.ts +1 -1
- package/dist/components/base/forms/fields/list-radio-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/list.d.ts +1 -1
- package/dist/components/base/forms/fields/list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-object-field.d.ts +1 -1
- package/dist/components/base/forms/fields/localized-object-field.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-string-field.d.ts +1 -1
- package/dist/components/base/forms/fields/localized-string-field.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-string-repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts +1 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/pill-radio-group.d.ts +11 -1
- package/dist/components/base/forms/fields/pill-radio-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/rounding-mode-select.d.ts +1 -1
- package/dist/components/base/forms/fields/rounding-mode-select.d.ts.map +1 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/switch-card.d.ts +2 -1
- package/dist/components/base/forms/fields/switch-card.d.ts.map +1 -1
- package/dist/components/base/forms/fields/switch.d.ts.map +1 -1
- package/dist/components/base/forms/fields/tags-input.d.ts +1 -1
- package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/time-picker.d.ts +2 -1
- package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -1
- package/dist/components/base/forms/fields/toggle-field.d.ts +1 -1
- package/dist/components/base/forms/fields/toggle-field.d.ts.map +1 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts +1 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/weight-input.d.ts +2 -1
- package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -1
- package/dist/components/base/forms/form-field.d.ts +63 -2
- package/dist/components/base/forms/form-field.d.ts.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +6 -6
- package/dist/components/base/forms/operation-password-form.d.ts +1 -1
- package/dist/components/base/forms/operation-password-form.d.ts.map +1 -1
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.cjs.map +1 -1
- package/dist/components/base/map/index.js +104 -85
- package/dist/components/base/map/index.js.map +1 -1
- package/dist/components/base/map/map.d.ts +31 -30
- package/dist/components/base/map/map.d.ts.map +1 -1
- package/dist/components/base/map/place-autocomplete.d.ts +1 -1
- package/dist/components/base/map/place-autocomplete.d.ts.map +1 -1
- package/dist/components/base/navigation/action-menu.d.ts +1 -1
- package/dist/components/base/navigation/aside-navigation-menu.d.ts +1 -1
- package/dist/components/base/navigation/aside-navigation-menu.d.ts.map +1 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts +1 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -1
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +4 -4
- package/dist/components/base/navigation/language-switcher.d.ts +1 -1
- package/dist/components/base/navigation/language-switcher.d.ts.map +1 -1
- package/dist/components/base/navigation/navigation-tabs.d.ts +1 -1
- package/dist/components/base/navigation/navigation-tabs.d.ts.map +1 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts +1 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts.map +1 -1
- package/dist/components/base/navigation/section-nav/section-nav.d.ts +1 -1
- package/dist/components/base/navigation/section-nav/section-nav.d.ts.map +1 -1
- package/dist/components/base/navigation/side-nav.d.ts +1 -1
- package/dist/components/base/navigation/side-nav.d.ts.map +1 -1
- package/dist/components/base/navigation/tab-navigation-menu.d.ts +1 -1
- package/dist/components/base/navigation/tab-navigation-menu.d.ts.map +1 -1
- package/dist/components/base/popover/index.cjs +1 -1
- package/dist/components/base/popover/index.js +1 -1
- package/dist/components/base/popover/popover.d.ts +1 -1
- package/dist/components/base/popover/popover.d.ts.map +1 -1
- package/dist/components/base/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +1 -1
- package/dist/components/base/popover-menu/popover-menu.d.ts +1 -1
- package/dist/components/base/popover-menu/popover-menu.d.ts.map +1 -1
- package/dist/components/base/sheet/index.cjs +1 -1
- package/dist/components/base/sheet/index.js +1 -1
- package/dist/components/base/sidebar/index.cjs +1 -1
- package/dist/components/base/sidebar/index.js +2 -2
- package/dist/components/base/sidebar/sidebar.d.ts +10 -9
- package/dist/components/base/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/base/spinner/index.cjs +1 -1
- package/dist/components/base/spinner/index.js +1 -1
- package/dist/components/base/table/column-visibility-toggle.d.ts +1 -1
- package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -1
- package/dist/components/base/table/data-table.d.ts +1 -1
- package/dist/components/base/table/data-table.d.ts.map +1 -1
- package/dist/components/base/table/filter-bar.d.ts +1 -1
- package/dist/components/base/table/filter-bar.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.cjs.map +1 -1
- package/dist/components/base/table/index.js +23 -23
- package/dist/components/base/table/index.js.map +1 -1
- package/dist/components/base/table/pagination.d.ts +1 -1
- package/dist/components/base/table/pagination.d.ts.map +1 -1
- package/dist/components/base/table/partials/cell-renderers.d.ts +4 -4
- package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
- package/dist/components/base/table/partials/cell-value.d.ts +1 -1
- package/dist/components/base/table/partials/cell-value.d.ts.map +1 -1
- package/dist/components/base/table/partials/density-toggle.d.ts +1 -1
- package/dist/components/base/table/partials/density-toggle.d.ts.map +1 -1
- package/dist/components/base/table/partials/table-link.d.ts +1 -1
- package/dist/components/base/table/partials/table-link.d.ts.map +1 -1
- package/dist/components/base/table/table-actions.d.ts +1 -1
- package/dist/components/base/table/table-actions.d.ts.map +1 -1
- package/dist/components/base/table/table-body.d.ts +1 -1
- package/dist/components/base/table/table-body.d.ts.map +1 -1
- package/dist/components/base/table/table-header.d.ts +2 -1
- package/dist/components/base/table/table-header.d.ts.map +1 -1
- package/dist/components/base/table/table-helpers.d.ts +2 -2
- package/dist/components/base/table/table-helpers.d.ts.map +1 -1
- package/dist/components/base/table/table-pagination.d.ts +1 -1
- package/dist/components/base/table/table-pagination.d.ts.map +1 -1
- package/dist/components/base/table/table-toolbar.d.ts +1 -1
- package/dist/components/base/table/table-toolbar.d.ts.map +1 -1
- package/dist/components/base/toaster/index.cjs +1 -1
- package/dist/components/base/toaster/index.cjs.map +1 -1
- package/dist/components/base/toaster/index.js +1 -1
- package/dist/components/base/toaster/index.js.map +1 -1
- package/dist/components/base/toaster/toaster.d.ts +1 -1
- package/dist/components/base/toaster/toaster.d.ts.map +1 -1
- package/dist/components/composed/admin/conversation-row/conversation-row.d.ts +1 -1
- package/dist/components/composed/admin/conversation-row/conversation-row.d.ts.map +1 -1
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.cjs.map +1 -1
- package/dist/components/composed/admin/index.js +159 -155
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/admin/inventory-level/inventory-level.d.ts +1 -1
- package/dist/components/composed/admin/inventory-level/inventory-level.d.ts.map +1 -1
- package/dist/components/composed/admin/role-permission/role-permission.d.ts +1 -1
- package/dist/components/composed/admin/role-permission/role-permission.d.ts.map +1 -1
- package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts +1 -1
- package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts.map +1 -1
- package/dist/components/composed/admin/team-member/team-member.d.ts +1 -1
- package/dist/components/composed/admin/team-member/team-member.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-agent/ai-agent.d.ts +1 -1
- package/dist/components/composed/ai/ai-agent/ai-agent.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts +1 -1
- package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts +1 -1
- package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
- package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-citation/ai-citation.d.ts +1 -1
- package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-classification/ai-classification.d.ts +1 -1
- package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts +1 -1
- package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts +1 -1
- package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
- package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts +1 -1
- package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts +1 -1
- package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts +1 -1
- package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts +1 -1
- package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts +1 -1
- package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts +1 -1
- package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
- package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-sources/ai-sources.d.ts +1 -1
- package/dist/components/composed/ai/ai-sources/ai-sources.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-summary/ai-summary.d.ts +1 -1
- package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-task/ai-task.d.ts +1 -1
- package/dist/components/composed/ai/ai-task/ai-task.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts +1 -1
- package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
- package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -1
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.cjs.map +1 -1
- package/dist/components/composed/ai/index.js +34 -36
- package/dist/components/composed/ai/index.js.map +1 -1
- package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts +1 -1
- package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts.map +1 -1
- package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts +1 -1
- package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts.map +1 -1
- package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts +1 -1
- package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts.map +1 -1
- package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts +1 -1
- package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts.map +1 -1
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.cjs.map +1 -1
- package/dist/components/composed/analytics/index.js +100 -111
- package/dist/components/composed/analytics/index.js.map +1 -1
- package/dist/components/composed/analytics/metric/metric.d.ts +1 -1
- package/dist/components/composed/analytics/metric/metric.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts +1 -1
- package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts +1 -1
- package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts +1 -1
- package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts +1 -1
- package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts +1 -1
- package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts.map +1 -1
- package/dist/components/composed/cards/contact-card/contact-card.d.ts +1 -1
- package/dist/components/composed/cards/contact-card/contact-card.d.ts.map +1 -1
- package/dist/components/composed/cards/course-card/course-card.d.ts +1 -1
- package/dist/components/composed/cards/course-card/course-card.d.ts.map +1 -1
- package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts +1 -1
- package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts.map +1 -1
- package/dist/components/composed/cards/gradient-card/gradient-card.d.ts +2 -2
- package/dist/components/composed/cards/gradient-card/gradient-card.d.ts.map +1 -1
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.cjs.map +1 -1
- package/dist/components/composed/cards/index.js +492 -512
- package/dist/components/composed/cards/index.js.map +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
- package/dist/components/composed/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/composed/commerce/address-card/address-card.d.ts.map +1 -1
- package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts +1 -1
- package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts +1 -1
- package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -1
- package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts +1 -1
- package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts.map +1 -1
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +94 -98
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts +1 -1
- package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -1
- package/dist/components/composed/commerce/order-status/order-status.d.ts +1 -1
- package/dist/components/composed/commerce/order-status/order-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/payment-method/payment-method.d.ts +1 -1
- package/dist/components/composed/commerce/payment-method/payment-method.d.ts.map +1 -1
- package/dist/components/composed/commerce/refund-status/refund-status.d.ts +1 -1
- package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts.map +1 -1
- package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts +1 -1
- package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts.map +1 -1
- package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts +1 -1
- package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts +1 -1
- package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
- package/dist/components/composed/dark-surfaces/index.js +30 -27
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/helpers.d.ts +2 -2
- package/dist/components/composed/data-display/dense-info-card/helpers.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts.map +1 -1
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.cjs.map +1 -1
- package/dist/components/composed/data-display/index.js +344 -319
- package/dist/components/composed/data-display/index.js.map +1 -1
- package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts +1 -1
- package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts +3 -3
- package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts +1 -1
- package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts +1 -1
- package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts.map +1 -1
- package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts +1 -1
- package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts.map +1 -1
- package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
- package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts.map +1 -1
- package/dist/components/composed/navigation/category-nav/category-nav.d.ts +1 -1
- package/dist/components/composed/navigation/category-nav/category-nav.d.ts.map +1 -1
- package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts +1 -1
- package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts.map +1 -1
- package/dist/components/composed/navigation/experience-activity/experience-activity.strings.d.ts +8 -0
- package/dist/components/composed/navigation/experience-activity/experience-activity.strings.d.ts.map +1 -0
- package/dist/components/composed/navigation/experience-activity/index.d.ts +1 -0
- package/dist/components/composed/navigation/experience-activity/index.d.ts.map +1 -1
- package/dist/components/composed/navigation/experience-activity/types.d.ts +2 -0
- package/dist/components/composed/navigation/experience-activity/types.d.ts.map +1 -1
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.cjs.map +1 -1
- package/dist/components/composed/navigation/index.js +42 -35
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts +1 -1
- package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts.map +1 -1
- package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts +1 -1
- package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts.map +1 -1
- package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts +1 -1
- package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts.map +1 -1
- package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts +1 -1
- package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts.map +1 -1
- package/dist/components/composed/onboarding/checklist/checklist.d.ts.map +1 -1
- package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts +1 -1
- package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts.map +1 -1
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.cjs.map +1 -1
- package/dist/components/composed/onboarding/index.js +60 -60
- package/dist/components/composed/onboarding/index.js.map +1 -1
- package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts +1 -1
- package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts.map +1 -1
- package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.cjs.map +1 -1
- package/dist/components/composed/timelines/index.js +34 -7
- package/dist/components/composed/timelines/index.js.map +1 -1
- package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/shared/timeline.d.ts +1 -1
- package/dist/components/composed/timelines/shared/timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/steps-card/steps-card.d.ts +2 -2
- package/dist/components/composed/timelines/steps-card/steps-card.d.ts.map +1 -1
- package/dist/components/features/activities/activities-feed.d.ts +1 -1
- package/dist/components/features/activities/activities-feed.d.ts.map +1 -1
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.cjs.map +1 -1
- package/dist/components/features/activities/index.js +7 -7
- package/dist/components/features/activities/index.js.map +1 -1
- package/dist/components/features/activities/partials/activities-feed-card.d.ts +1 -1
- package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-actions-menu.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-actions-menu.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-changes.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-changes.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-date-label.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-date-label.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-empty-state.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-empty-state.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-marker.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-marker.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-resource-tag.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-resource-tag.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-row.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-row.d.ts.map +1 -1
- package/dist/components/features/ai-chat/ai-chat.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.cjs.map +1 -1
- package/dist/components/features/ai-chat/index.js +7 -7
- package/dist/components/features/ai-chat/index.js.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts.map +1 -1
- package/dist/components/features/card/booking-calendar-event-card.d.ts +1 -1
- package/dist/components/features/card/booking-calendar-event-card.d.ts.map +1 -1
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.cjs.map +1 -1
- package/dist/components/features/card/index.js +4 -4
- package/dist/components/features/card/index.js.map +1 -1
- package/dist/components/features/card/partials/default-shared-resource-partials.d.ts +4 -4
- package/dist/components/features/card/partials/default-shared-resource-partials.d.ts.map +1 -1
- package/dist/components/features/card/shared-resource-card.d.ts +1 -1
- package/dist/components/features/card/shared-resource-card.d.ts.map +1 -1
- package/dist/components/features/comments/comments.d.ts +1 -1
- package/dist/components/features/comments/comments.d.ts.map +1 -1
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/comments/partials/comment-composer.d.ts.map +1 -1
- package/dist/components/features/event-log/event-log.d.ts +1 -1
- package/dist/components/features/event-log/event-log.d.ts.map +1 -1
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.cjs.map +1 -1
- package/dist/components/features/event-log/index.js +5 -5
- package/dist/components/features/event-log/index.js.map +1 -1
- package/dist/components/features/filters/facets/async-select-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/async-select-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/date-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/date-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/range-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/range-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/search-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/search-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/select-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/select-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/tags-facet.d.ts.map +1 -1
- package/dist/components/features/filters/filter-context.d.ts +1 -1
- package/dist/components/features/filters/filter-context.d.ts.map +1 -1
- package/dist/components/features/filters/filter-layout.d.ts +1 -1
- package/dist/components/features/filters/filter-layout.d.ts.map +1 -1
- package/dist/components/features/filters/filters.strings.d.ts +1 -0
- package/dist/components/features/filters/filters.strings.d.ts.map +1 -1
- package/dist/components/features/filters/filters.types.d.ts +1 -1
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.cjs.map +1 -1
- package/dist/components/features/filters/index.js +195 -188
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/active-filter-item.d.ts +2 -1
- package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/date-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/date-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-error-boundary.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-error-boundary.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-list-content.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-list-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-list-item.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-list-item.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +2 -1
- package/dist/components/features/filters/partials/filter-operator-select.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-pill.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-pill.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-popover-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-value-display.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-value-display.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filters-button.d.ts +1 -1
- package/dist/components/features/filters/partials/filters-button.d.ts.map +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/search-filters-list.d.ts +1 -1
- package/dist/components/features/filters/partials/search-filters-list.d.ts.map +1 -1
- package/dist/components/features/filters/partials/tags-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -1
- package/dist/components/features/global-search/global-search.d.ts +22 -1
- package/dist/components/features/global-search/global-search.d.ts.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.cjs.map +1 -1
- package/dist/components/features/global-search/index.js +3 -3
- package/dist/components/features/global-search/index.js.map +1 -1
- package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-empty-state.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-footer.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-footer.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts +2 -1
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-tabs.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-tabs.d.ts.map +1 -1
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.cjs.map +1 -1
- package/dist/components/features/kanban/index.js +2 -2
- package/dist/components/features/kanban/index.js.map +1 -1
- package/dist/components/features/kanban/kanban.d.ts +7 -7
- package/dist/components/features/kanban/kanban.d.ts.map +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +1 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts.map +1 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts +1 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts.map +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts.map +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.cjs.map +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/rich-text-editor/index.js.map +1 -1
- package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +2 -2
- package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +4 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts.map +1 -1
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.cjs.map +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/suggestions/index.js.map +1 -1
- package/dist/components/features/suggestions/suggestions.d.ts +1 -1
- package/dist/components/features/suggestions/suggestions.d.ts.map +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.cjs.map +1 -1
- package/dist/components/features/sync/index.js +3 -3
- package/dist/components/features/sync/index.js.map +1 -1
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +1 -1
- package/dist/components/layout/app-shell/app-shell.types.d.ts +65 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts.map +1 -0
- package/dist/components/layout/app-shell/index.cjs +1 -0
- package/dist/components/layout/app-shell/index.d.ts +3 -0
- package/dist/components/layout/app-shell/index.d.ts.map +1 -0
- package/dist/components/layout/app-shell/index.js +2 -0
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +3 -0
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -0
- package/dist/components/layout/containers/content-container.d.ts +1 -1
- package/dist/components/layout/containers/content-container.d.ts.map +1 -1
- package/dist/components/layout/containers/index.cjs +1 -1
- package/dist/components/layout/containers/index.js +2 -2
- package/dist/components/layout/containers/section.d.ts +1 -1
- package/dist/components/layout/containers/section.d.ts.map +1 -1
- package/dist/components/layout/header/header.d.ts +1 -1
- package/dist/components/layout/header/header.d.ts.map +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +1 -1
- package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +3 -1
- package/dist/components/layout/header/partials/header-breadcrumbs.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-user-menu.d.ts +1 -1
- package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
- package/dist/components/layout/hooks/index.cjs +1 -1
- package/dist/components/layout/hooks/index.js +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +8 -7
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/page/page-content.d.ts +1 -1
- package/dist/components/layout/page/page-content.d.ts.map +1 -1
- package/dist/components/layout/page/page.d.ts +1 -1
- package/dist/components/layout/page/page.d.ts.map +1 -1
- package/dist/components/layout/page/partials/page-actions.d.ts +1 -1
- package/dist/components/layout/page/partials/page-actions.d.ts.map +1 -1
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/page/partials/page-header.d.ts.map +1 -1
- package/dist/components/layout/sidebar/app-sidebar.d.ts +6 -1
- package/dist/components/layout/sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-logo.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +3 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.context.d.ts.map +1 -1
- package/dist/components/layout/sidebar/sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +2 -2
- package/dist/components/layout/sidebar/sidebar.utils.d.ts.map +1 -1
- package/dist/components/typography/heading.d.ts +1 -1
- package/dist/components/typography/heading.d.ts.map +1 -1
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +3 -3
- package/dist/components/typography/label.d.ts +1 -1
- package/dist/components/typography/label.d.ts.map +1 -1
- package/dist/components/typography/text-link.d.ts +1 -1
- package/dist/components/typography/text-link.d.ts.map +1 -1
- package/dist/components/typography/text.d.ts +1 -1
- package/dist/components/typography/text.d.ts.map +1 -1
- package/dist/components/typography/typography.d.ts +3 -3
- package/dist/components/typography/typography.d.ts.map +1 -1
- package/dist/components/ui/accordion.d.ts +4 -4
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/alert.d.ts +4 -4
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/avatar.d.ts +6 -6
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts +7 -7
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/button-group.d.ts +2 -2
- package/dist/components/ui/button-group.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/calendar.d.ts +2 -2
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/card.d.ts +7 -7
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/chart.d.ts +4 -4
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/checkbox.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/collapsible.d.ts +4 -3
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/combobox.d.ts +20 -20
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/command.d.ts +9 -9
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/context-menu.d.ts +15 -15
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/dialog.d.ts +10 -10
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +16 -16
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/empty.d.ts +6 -6
- package/dist/components/ui/empty.d.ts.map +1 -1
- package/dist/components/ui/hover-card.d.ts +3 -3
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/input-group.d.ts +6 -6
- package/dist/components/ui/input-group.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/item.d.ts +9 -9
- package/dist/components/ui/item.d.ts.map +1 -1
- package/dist/components/ui/pagination.d.ts +7 -7
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/popover.d.ts +7 -7
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/progress.d.ts +5 -5
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +2 -2
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/select.d.ts +9 -9
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/separator.d.ts +1 -1
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/sheet.d.ts +8 -8
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sidebar.d.ts +19 -19
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/slider.d.ts +2 -1
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/sonner.d.ts +1 -1
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/spinner.d.ts +1 -1
- package/dist/components/ui/spinner.d.ts.map +1 -1
- package/dist/components/ui/switch.d.ts +1 -1
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/table.d.ts +8 -8
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/tabs.d.ts +4 -4
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/textarea.d.ts +1 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.d.ts +3 -2
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle.d.ts +1 -1
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/tooltip.d.ts +4 -4
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/strings.cjs +1 -1
- package/dist/lib/strings.cjs.map +1 -1
- package/dist/lib/strings.js.map +1 -1
- package/dist/lib/ui-provider/index.cjs +1 -1
- package/dist/lib/ui-provider/index.js +1 -1
- package/dist/lib/ui-provider/provider.d.ts +1 -1
- package/dist/lib/ui-provider/provider.d.ts.map +1 -1
- package/dist/lib/utils.cjs +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/showcase/assets/AreaChart-CzBEYPbz.js +6 -0
- package/dist/showcase/assets/CSPContext-ImKusJJ_.js +1 -0
- package/dist/showcase/assets/CompositeItem-C-DIOBdJ.js +1 -0
- package/dist/showcase/assets/CompositeRoot-Ce4ORgG2.js +1 -0
- package/dist/showcase/assets/Control.FullScreen-CwLQ1MMK.js +1 -0
- package/dist/showcase/assets/DialogTrigger-DWvMs7dp.js +1 -0
- package/dist/showcase/assets/FormContext-BeC1MJpT.js +1 -0
- package/dist/showcase/assets/PreviewLayout-N1PTTyZK.js +1 -0
- package/dist/showcase/assets/RadioGroup-DAWaa26D.js +1 -0
- package/dist/showcase/assets/Separator-guDkmky0.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-BJ7hWga8.js +1 -0
- package/dist/showcase/assets/accordion-CiM9WhkT.js +172 -0
- package/dist/showcase/assets/accordion-variants-C_sHrQ7C.js +1 -0
- package/dist/showcase/assets/action-menu-mlWlGE5P.js +1 -0
- package/dist/showcase/assets/activities-YWR4wh4f.js +501 -0
- package/dist/showcase/assets/activities-feed-card-Cglnf5as.js +1 -0
- package/dist/showcase/assets/admin-BtOtzPd4.js +80 -0
- package/dist/showcase/assets/ai-8iNe0R1M.js +41 -0
- package/dist/showcase/assets/ai-artifact-CQL5krnJ.js +2 -0
- package/dist/showcase/assets/ai-chat-BzCdOOc6.js +568 -0
- package/dist/showcase/assets/ai-elements-CBHy2xWU.js +379 -0
- package/dist/showcase/assets/ai-new-CgL5NeVs.js +167 -0
- package/dist/showcase/assets/ai-tool-call-D9AsaWJF.js +1 -0
- package/dist/showcase/assets/alert-B2BuF4vZ.js +59 -0
- package/dist/showcase/assets/alert-BkVaTONJ.js +1 -0
- package/dist/showcase/assets/api-key-list-C-_59dli.js +73 -0
- package/dist/showcase/assets/app-sidebar-BdOu5rVn.js +1 -0
- package/dist/showcase/assets/arrow-down-BpVaq9-H.js +1 -0
- package/dist/showcase/assets/arrow-left-C40rxfqj.js +1 -0
- package/dist/showcase/assets/arrow-right-BclouSfP.js +1 -0
- package/dist/showcase/assets/arrow-up-BpWEnkdX.js +1 -0
- package/dist/showcase/assets/arrow-up-right-Z5sMa1HH.js +1 -0
- package/dist/showcase/assets/avatar-CDNhh3rv.js +57 -0
- package/dist/showcase/assets/avatar-QBwg3fvR.js +1 -0
- package/dist/showcase/assets/badge-check-DXDQ3SaL.js +1 -0
- package/dist/showcase/assets/badge-tAdYt--9.js +28 -0
- package/dist/showcase/assets/bell-CVEeEWw4.js +1 -0
- package/dist/showcase/assets/bot-Bcx5mNAQ.js +1 -0
- package/dist/showcase/assets/box-Dgy2Xc70.js +1 -0
- package/dist/showcase/assets/brain-DsoOsd7m.js +1 -0
- package/dist/showcase/assets/brand-DAyuXNUz.js +40 -0
- package/dist/showcase/assets/breadcrumb-CC4Z8eMY.js +1 -0
- package/dist/showcase/assets/breadcrumb-DCbAzeMs.js +52 -0
- package/dist/showcase/assets/breadcrumbs-DGZMpIoQ.js +1 -0
- package/dist/showcase/assets/briefcase-2uLXCvAZ.js +1 -0
- package/dist/showcase/assets/button-DhQ6rMPU.js +44 -0
- package/dist/showcase/assets/button-group-Ce9vnZ1H.js +1 -0
- package/dist/showcase/assets/buttons-CHja0LUL.js +270 -0
- package/dist/showcase/assets/calendar-BbiK8AMZ.js +16 -0
- package/dist/showcase/assets/calendar-BhZpIjCo.js +1 -0
- package/dist/showcase/assets/calendar-oKaDsUIy.js +1 -0
- package/dist/showcase/assets/card-DoU1VD79.js +1 -0
- package/dist/showcase/assets/cards-3OgH8m3F.js +328 -0
- package/dist/showcase/assets/chart-column-6Tn3WAT9.js +1 -0
- package/dist/showcase/assets/chevron-down-x7TQsvYY.js +1 -0
- package/dist/showcase/assets/chevron-left-CglzJgA2.js +1 -0
- package/dist/showcase/assets/chevron-right-CDDMIkYP.js +1 -0
- package/dist/showcase/assets/chevron-up-Dc3aAaGH.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-DJNnSBAj.js +1 -0
- package/dist/showcase/assets/circle-BBmNFtO8.js +1 -0
- package/dist/showcase/assets/circle-alert-DJevf3tT.js +1 -0
- package/dist/showcase/assets/circle-check-BCxORlAM.js +1 -0
- package/dist/showcase/assets/circle-check-big-tiuK2w0-.js +1 -0
- package/dist/showcase/assets/circle-dot-BEVVQjgN.js +1 -0
- package/dist/showcase/assets/circle-question-mark-BQrUUiKD.js +1 -0
- package/dist/showcase/assets/circle-x-CoV_AUtZ.js +1 -0
- package/dist/showcase/assets/clock-Bn2R4aDX.js +1 -0
- package/dist/showcase/assets/code-xml-BVYp_JDX.js +1 -0
- package/dist/showcase/assets/collapsible-Co2Y739_.js +27 -0
- package/dist/showcase/assets/collapsible-DPbftgrO.js +1 -0
- package/dist/showcase/assets/combobox-Cm4__LnJ.js +622 -0
- package/dist/showcase/assets/command-DQFIxPN9.js +45 -0
- package/dist/showcase/assets/command-KNncGgZW.js +1 -0
- package/dist/showcase/assets/comment-composer-DTJtqYGP.js +1 -0
- package/dist/showcase/assets/comment-item-DIEYMmV_.js +1 -0
- package/dist/showcase/assets/comments-B0BbDp-3.js +357 -0
- package/dist/showcase/assets/commerce-BOWBCLA-.js +79 -0
- package/dist/showcase/assets/commerce-extras-C6CWYfpC.js +173 -0
- package/dist/showcase/assets/composite-YicTVAO0.js +1 -0
- package/dist/showcase/assets/contact-card-DQPRIlnJ.js +65 -0
- package/dist/showcase/assets/content-container-CHXwWViz.js +1 -0
- package/dist/showcase/assets/copyable-CjTwco9O.js +96 -0
- package/dist/showcase/assets/course-card-CTQScd2C.js +113 -0
- package/dist/showcase/assets/cpu-D52NjUWq.js +1 -0
- package/dist/showcase/assets/credit-card-BoDfW0R8.js +1 -0
- package/dist/showcase/assets/currency-BPREbpDA.js +149 -0
- package/dist/showcase/assets/dark-surfaces-BCG45K2m.js +90 -0
- package/dist/showcase/assets/database-DeGR0hed.js +1 -0
- package/dist/showcase/assets/date-block-Bl1kXJrM.js +1 -0
- package/dist/showcase/assets/date-picker-BHbZa4ML.js +1 -0
- package/dist/showcase/assets/date-pickers-DumwUEXE.js +110 -0
- package/dist/showcase/assets/dense-info-DxfgBw9Z.js +106 -0
- package/dist/showcase/assets/dialog-BYHZvlL8.js +1 -0
- package/dist/showcase/assets/display-BXMGOjL3.js +392 -0
- package/dist/showcase/assets/dist-CnonIdcR.js +1 -0
- package/dist/showcase/assets/dollar-sign-BipUTVXC.js +1 -0
- package/dist/showcase/assets/download-CxspQgIc.js +1 -0
- package/dist/showcase/assets/dropdown-menu-Q1BV3wPP.js +1 -0
- package/dist/showcase/assets/dropzone-OivkuTPF.js +1 -0
- package/dist/showcase/assets/ellipsis-Bn-XgoA7.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-Bcl9HX9k.js +1 -0
- package/dist/showcase/assets/empty-CcafLcw-.js +1 -0
- package/dist/showcase/assets/empty-item-CiJeS8ZV.js +49 -0
- package/dist/showcase/assets/empty-state-B1RYYjUP.js +188 -0
- package/dist/showcase/assets/enhanced-activities-IB811DS6.js +361 -0
- package/dist/showcase/assets/esm-CAF_uoYd.js +2 -0
- package/dist/showcase/assets/event-calendar-C2VCfcUz.js +138 -0
- package/dist/showcase/assets/event-log-ckmsCPmG.js +330 -0
- package/dist/showcase/assets/example-C6-_Sy6B.js +1 -0
- package/dist/showcase/assets/external-link-Bg-_8Uq7.js +1 -0
- package/dist/showcase/assets/eye-JVsUA85G.js +1 -0
- package/dist/showcase/assets/feature-announcement-C4aRXesF.js +34 -0
- package/dist/showcase/assets/fetchers-DHuMQ6PN.js +1 -0
- package/dist/showcase/assets/file-4pOq58jl.js +1 -0
- package/dist/showcase/assets/file-text-BIi71mZ1.js +1 -0
- package/dist/showcase/assets/filters-CxrcnmLU.js +78 -0
- package/dist/showcase/assets/flag-DeiJmomk.js +1 -0
- package/dist/showcase/assets/folder-open-zMXBpVNs.js +1 -0
- package/dist/showcase/assets/form-sizing-B8jbL5tL.js +1 -0
- package/dist/showcase/assets/format-BG4laCmp.js +1 -0
- package/dist/showcase/assets/format-metric-value-B94EDo8X.js +1 -0
- package/dist/showcase/assets/forms-PsN5zTLx.js +793 -0
- package/dist/showcase/assets/generic-BH5YLC_H.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-B7wr19E1.js +1 -0
- package/dist/showcase/assets/gift-CKFIh1Wh.js +1 -0
- package/dist/showcase/assets/giftcard-cards-BfOlIHmA.js +85 -0
- package/dist/showcase/assets/git-branch-BO9i8XkJ.js +1 -0
- package/dist/showcase/assets/global-search-CNmUraNa.js +90 -0
- package/dist/showcase/assets/global-search-DkJkQ0Vs.js +1 -0
- package/dist/showcase/assets/globe-47T22W56.js +1 -0
- package/dist/showcase/assets/gradient-card-CXSY29TZ.js +58 -0
- package/dist/showcase/assets/header-eZHN-s6P.js +1 -0
- package/dist/showcase/assets/header-notifications-Caa9i87J.js +1 -0
- package/dist/showcase/assets/heart-DjKkkUsX.js +1 -0
- package/dist/showcase/assets/house-DKxCiHyB.js +1 -0
- package/dist/showcase/assets/icon-badge-Bcm8TlJi.js +1 -0
- package/dist/showcase/assets/image-r-gMI33G.js +1 -0
- package/dist/showcase/assets/inbox-ZxSy1pgX.js +1 -0
- package/dist/showcase/assets/index-B8DVXCmf.js +10 -0
- package/dist/showcase/assets/index-DbLs6mcj.css +2 -0
- package/dist/showcase/assets/inertValue-i0cAMG-0.js +1 -0
- package/dist/showcase/assets/info-B1KV2DkO.js +1 -0
- package/dist/showcase/assets/inline-stat-D0sE-A4C.js +1 -0
- package/dist/showcase/assets/input-25epjsiD.js +1 -0
- package/dist/showcase/assets/input-CnwMt9Sr.js +1 -0
- package/dist/showcase/assets/input-group-DSKyV7we.js +47 -0
- package/dist/showcase/assets/input-group-x5eWeAZg.js +1 -0
- package/dist/showcase/assets/inputs-B2Maxr14.js +49 -0
- package/dist/showcase/assets/invoice-header-Gxl--yFu.js +36 -0
- package/dist/showcase/assets/invoice-items-BtoaGNjE.js +36 -0
- package/dist/showcase/assets/invoice-mini-DHFSZegy.js +14 -0
- package/dist/showcase/assets/invoice-table-6dmU_KrL.js +30 -0
- package/dist/showcase/assets/isSameDay-BrDHfKHm.js +1 -0
- package/dist/showcase/assets/isToday-VtoSc1IH.js +1 -0
- package/dist/showcase/assets/italic-CXkAsf6H.js +1 -0
- package/dist/showcase/assets/item-CGOThKAx.js +1 -0
- package/dist/showcase/assets/item-CMRbW6s-.js +1 -0
- package/dist/showcase/assets/item-sw6fAZcn.js +117 -0
- package/dist/showcase/assets/kanban-CKGYTXji.js +175 -0
- package/dist/showcase/assets/label-BmKD22pm.js +1 -0
- package/dist/showcase/assets/layout-app-shell-CeMHzVNn.js +501 -0
- package/dist/showcase/assets/layout-containers-8Drow5f9.js +96 -0
- package/dist/showcase/assets/layout-header-BlBw4JAV.js +170 -0
- package/dist/showcase/assets/layout-page-BQfgHFau.js +122 -0
- package/dist/showcase/assets/layout-sidebar-DZer5Uuh.js +224 -0
- package/dist/showcase/assets/layout-users-nuioUkeu.js +104 -0
- package/dist/showcase/assets/leaflet-src-S_KZeH2q.js +1 -0
- package/dist/showcase/assets/lib-DMGme4uo.js +1 -0
- package/dist/showcase/assets/lock-DQcZ9cEj.js +1 -0
- package/dist/showcase/assets/mail-yNXDtmNr.js +1 -0
- package/dist/showcase/assets/map-JMM1F9VR.js +124 -0
- package/dist/showcase/assets/map-pin-2WS7oVo3.js +1 -0
- package/dist/showcase/assets/menus-mK-FeNki.js +89 -0
- package/dist/showcase/assets/message-square-DGTAjNJG.js +1 -0
- package/dist/showcase/assets/metadata-list-CBxuQjVO.js +278 -0
- package/dist/showcase/assets/metric-BWGrmyD6.js +1 -0
- package/dist/showcase/assets/metric-grid-CewIJQvo.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-kLBN8u5z.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-COnc7VN9.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-BR83UVqi.js +77 -0
- package/dist/showcase/assets/metrics-comparison-C0SUjdMg.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-Orq1hLk-.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-C924q2Xx.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-Cwi05ruK.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-D97nkrge.js +42 -0
- package/dist/showcase/assets/metrics-overview-BOc8y3QX.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Cilh-A5D.js +54 -0
- package/dist/showcase/assets/minus-DvrDGcTv.js +1 -0
- package/dist/showcase/assets/money-display-0egZ_O76.js +1 -0
- package/dist/showcase/assets/month-year-picker-2cWfwnmP.js +1 -0
- package/dist/showcase/assets/navigation-BnYme-Wj.js +90 -0
- package/dist/showcase/assets/navigation-CLQWl32A.js +230 -0
- package/dist/showcase/assets/navigation-extras-BPDoAdXF.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-26XVWgDF.js +119 -0
- package/dist/showcase/assets/overlays-2sVGhanu.js +88 -0
- package/dist/showcase/assets/overlays-BaR6HDwB.js +394 -0
- package/dist/showcase/assets/package-CUNvdlBi.js +1 -0
- package/dist/showcase/assets/page-action-button-DgvZVtzx.js +1 -0
- package/dist/showcase/assets/page-header-4F_iaFPW.js +1 -0
- package/dist/showcase/assets/pagination-CDjZ6jiZ.js +42 -0
- package/dist/showcase/assets/pagination-g1NQaN42.js +1 -0
- package/dist/showcase/assets/paperclip-CDxdf8Os.js +1 -0
- package/dist/showcase/assets/pencil-Ddc5JwBe.js +1 -0
- package/dist/showcase/assets/phone-NIZ5SwgK.js +1 -0
- package/dist/showcase/assets/plus-C9kwz7rW.js +1 -0
- package/dist/showcase/assets/popover-DtnuOBgr.js +1 -0
- package/dist/showcase/assets/popover-T85aV4zW.js +1 -0
- package/dist/showcase/assets/popover-menu-BRGSZe4f.js +1 -0
- package/dist/showcase/assets/progress-CcZjuzK3.js +1 -0
- package/dist/showcase/assets/progress-DbouniUl.js +18 -0
- package/dist/showcase/assets/props-table-CM_1cocj.js +1 -0
- package/dist/showcase/assets/props.generated-Bg627Jai.json +32829 -0
- package/dist/showcase/assets/quote-vjygm2-7.js +1 -0
- package/dist/showcase/assets/react-dom-Bz4cALsF.js +1 -0
- package/dist/showcase/assets/receipt-CfMgwFPl.js +1 -0
- package/dist/showcase/assets/refresh-cw-Tu5E_cGA.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-CipUZh6i.js +1 -0
- package/dist/showcase/assets/rich-text-editor-BMZUyuQX.js +143 -0
- package/dist/showcase/assets/rich-text-editor-HwYIeWYW.js +124 -0
- package/dist/showcase/assets/rotate-ccw-B4Wi4ws7.js +1 -0
- package/dist/showcase/assets/scroll-area-CuB_woqF.js +1 -0
- package/dist/showcase/assets/scroll-area-I4mSIpRq.js +32 -0
- package/dist/showcase/assets/select-CF3cKjCo.js +1 -0
- package/dist/showcase/assets/send-Blu_n6xl.js +1 -0
- package/dist/showcase/assets/separator-9mrRf_DZ.js +28 -0
- package/dist/showcase/assets/separator-DUKleOvU.js +1 -0
- package/dist/showcase/assets/settings-DlKX-bZT.js +1 -0
- package/dist/showcase/assets/sheet-CwcLVoF3.js +1 -0
- package/dist/showcase/assets/shield-BD0Y8Jj3.js +1 -0
- package/dist/showcase/assets/shield-alert-DNOTmkwG.js +1 -0
- package/dist/showcase/assets/shield-check-Sbul0dUK.js +1 -0
- package/dist/showcase/assets/shopping-bag-EDVpxI9n.js +1 -0
- package/dist/showcase/assets/sidebar-JWZ88xw5.js +1 -0
- package/dist/showcase/assets/sidebar.context-D3P7qppn.js +1 -0
- package/dist/showcase/assets/skeleton-CIS1Kaas.js +1 -0
- package/dist/showcase/assets/skeleton-CJCJDQFt.js +29 -0
- package/dist/showcase/assets/smart-card-7szg_qSt.js +1 -0
- package/dist/showcase/assets/sonner-DMHXr9Ce.js +22 -0
- package/dist/showcase/assets/sortable.esm-DVuzVA1U.js +5 -0
- package/dist/showcase/assets/sparkles-BEa1AgNq.js +1 -0
- package/dist/showcase/assets/spinner-Bi-T9etI.js +30 -0
- package/dist/showcase/assets/spinner-C77XIUVf.js +1 -0
- package/dist/showcase/assets/spinner-DK9BAT6K.js +49 -0
- package/dist/showcase/assets/square-pen-N0mq-vPu.js +1 -0
- package/dist/showcase/assets/stacked-avatars-DORVEni2.js +1 -0
- package/dist/showcase/assets/star-Dbtxr60S.js +1 -0
- package/dist/showcase/assets/startOfDay-BJgxz4yq.js +1 -0
- package/dist/showcase/assets/styles-CwW4IBUg.js +1 -0
- package/dist/showcase/assets/switch-B4iRxZFU.js +1 -0
- package/dist/showcase/assets/switch-B_rnbXwy.js +1 -0
- package/dist/showcase/assets/table-BJ9HSK6H.js +1 -0
- package/dist/showcase/assets/table-IB0MEYf4.js +389 -0
- package/dist/showcase/assets/tabs-D02JL-Fa.js +1 -0
- package/dist/showcase/assets/tabs-XpsVS3ff.js +19 -0
- package/dist/showcase/assets/text-button-BWCgXGnr.js +1 -0
- package/dist/showcase/assets/text-link-TzuDnSCF.js +1 -0
- package/dist/showcase/assets/textarea-B7DUIiH_.js +1 -0
- package/dist/showcase/assets/textarea-CV5gNzXf.js +1 -0
- package/dist/showcase/assets/timelines-CF0UYhwm.js +200 -0
- package/dist/showcase/assets/toggle-group-CK8mBx6E.js +1 -0
- package/dist/showcase/assets/toggles-CqJSApnF.js +71 -0
- package/dist/showcase/assets/toggles-group-v0JijMzG.js +32 -0
- package/dist/showcase/assets/trash-2-_xF5j-Ya.js +1 -0
- package/dist/showcase/assets/trending-up-BCzmjYzm.js +1 -0
- package/dist/showcase/assets/truck-CryH-5dx.js +1 -0
- package/dist/showcase/assets/typography-D3PFbRpb.js +215 -0
- package/dist/showcase/assets/ui-badge-ByyFPLOB.js +28 -0
- package/dist/showcase/assets/ui-card-DYLLiD89.js +30 -0
- package/dist/showcase/assets/ui-table-DW4QIwxK.js +42 -0
- package/dist/showcase/assets/upload-tray-ZdL_dzc0.js +138 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-AFPLx3SZ.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-CeHRY8U2.js +1 -0
- package/dist/showcase/assets/useCompositeItem-C-1zP8zD.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-D4ugfKLB.js +1 -0
- package/dist/showcase/assets/useControlled-Cpg8gDqb.js +1 -0
- package/dist/showcase/assets/useLabelableId-CSxAHpU-.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-BLV8Pa2n.js +1 -0
- package/dist/showcase/assets/useRender-DparzvOu.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-CrYLO2g5.js +1 -0
- package/dist/showcase/assets/useValueChanged-DwgbaueK.js +1 -0
- package/dist/showcase/assets/user-CGcV8Ppb.js +1 -0
- package/dist/showcase/assets/user-plus-iOsntM6P.js +1 -0
- package/dist/showcase/assets/users-DzgXeZbf.js +1 -0
- package/dist/showcase/assets/vendor-profile-DbFPkGn9.js +37 -0
- package/dist/showcase/assets/wrench-1Ra9xb3d.js +1 -0
- package/dist/showcase/assets/x-CE8oevyh.js +1 -0
- package/dist/showcase/assets/zap-se3n2YVD.js +1 -0
- package/dist/showcase/index.html +4 -3
- package/dist/style.css +2 -2
- package/package.json +9 -3
- package/scripts/audit-consumer.mjs +17 -6
- package/src/App.css +28 -0
- package/dist/_shared/accordion-CztqyaIN.js +0 -130
- package/dist/_shared/accordion-CztqyaIN.js.map +0 -1
- package/dist/_shared/accordion-D5uTCLCB.cjs +0 -2
- package/dist/_shared/accordion-D5uTCLCB.cjs.map +0 -1
- package/dist/_shared/action-menu-Yrj6VzFS.js +0 -96
- package/dist/_shared/action-menu-Yrj6VzFS.js.map +0 -1
- package/dist/_shared/action-menu-eVP8GGlv.cjs +0 -2
- package/dist/_shared/action-menu-eVP8GGlv.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DaHXJTKg.cjs +0 -3
- package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DyLn3JAs.js +0 -1068
- package/dist/_shared/ai-artifact-DyLn3JAs.js.map +0 -1
- package/dist/_shared/alert-BVw4Mq6H.js +0 -48
- package/dist/_shared/alert-BVw4Mq6H.js.map +0 -1
- package/dist/_shared/alert-DXSlR9ja.cjs +0 -2
- package/dist/_shared/alert-DXSlR9ja.cjs.map +0 -1
- package/dist/_shared/avatar-CpBz9pTv.js +0 -52
- package/dist/_shared/avatar-CpBz9pTv.js.map +0 -1
- package/dist/_shared/avatar-dg20YFFs.cjs +0 -2
- package/dist/_shared/avatar-dg20YFFs.cjs.map +0 -1
- package/dist/_shared/badge-BVCh_hfL.js +0 -108
- package/dist/_shared/badge-BVCh_hfL.js.map +0 -1
- package/dist/_shared/badge-C49SSz-6.cjs +0 -2
- package/dist/_shared/badge-C49SSz-6.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +0 -2
- package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-Dc93fqqE.js +0 -111
- package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +0 -1
- package/dist/_shared/button-2xglT7yf.cjs +0 -2
- package/dist/_shared/button-2xglT7yf.cjs.map +0 -1
- package/dist/_shared/button-ChCkwoOD.js +0 -176
- package/dist/_shared/button-ChCkwoOD.js.map +0 -1
- package/dist/_shared/button-D0nF99a9.cjs +0 -2
- package/dist/_shared/button-D0nF99a9.cjs.map +0 -1
- package/dist/_shared/button-DBR4QI9E.js +0 -46
- package/dist/_shared/button-DBR4QI9E.js.map +0 -1
- package/dist/_shared/buttons-Bcnt1md_.js +0 -143
- package/dist/_shared/buttons-Bcnt1md_.js.map +0 -1
- package/dist/_shared/buttons-km9xqXJv.cjs +0 -2
- package/dist/_shared/buttons-km9xqXJv.cjs.map +0 -1
- package/dist/_shared/card-radio-group-BGH93O5-.js +0 -158
- package/dist/_shared/card-radio-group-BGH93O5-.js.map +0 -1
- package/dist/_shared/card-radio-group-Vq741uhL.cjs +0 -2
- package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +0 -1
- package/dist/_shared/chunk-D3uCBrYO.cjs +0 -1
- package/dist/_shared/combobox-BgXAxjU2.js +0 -746
- package/dist/_shared/combobox-BgXAxjU2.js.map +0 -1
- package/dist/_shared/combobox-DuIyh3xJ.cjs +0 -2
- package/dist/_shared/combobox-DuIyh3xJ.cjs.map +0 -1
- package/dist/_shared/command-BbiijN61.js +0 -39
- package/dist/_shared/command-BbiijN61.js.map +0 -1
- package/dist/_shared/command-D7zTvyBJ.cjs +0 -2
- package/dist/_shared/command-D7zTvyBJ.cjs.map +0 -1
- package/dist/_shared/command-DGNtTI-V.cjs +0 -2
- package/dist/_shared/command-DGNtTI-V.cjs.map +0 -1
- package/dist/_shared/command-jKbwFRtS.js +0 -123
- package/dist/_shared/command-jKbwFRtS.js.map +0 -1
- package/dist/_shared/comments-CNUsdwGW.cjs +0 -2
- package/dist/_shared/comments-CNUsdwGW.cjs.map +0 -1
- package/dist/_shared/comments-CvmS7zG3.js +0 -945
- package/dist/_shared/comments-CvmS7zG3.js.map +0 -1
- package/dist/_shared/containers-BFDv7cCV.cjs +0 -2
- package/dist/_shared/containers-BFDv7cCV.cjs.map +0 -1
- package/dist/_shared/containers-C1-A_2PT.js +0 -19
- package/dist/_shared/containers-C1-A_2PT.js.map +0 -1
- package/dist/_shared/content-container-CwqFnaI0.cjs +0 -2
- package/dist/_shared/content-container-CwqFnaI0.cjs.map +0 -1
- package/dist/_shared/content-container-D_3JGBSc.js +0 -33
- package/dist/_shared/content-container-D_3JGBSc.js.map +0 -1
- package/dist/_shared/copyable-CHhCGMfW.js +0 -38
- package/dist/_shared/copyable-CHhCGMfW.js.map +0 -1
- package/dist/_shared/copyable-ndaiocYq.cjs +0 -2
- package/dist/_shared/copyable-ndaiocYq.cjs.map +0 -1
- package/dist/_shared/date-picker-B8O_qbik.js +0 -1353
- package/dist/_shared/date-picker-B8O_qbik.js.map +0 -1
- package/dist/_shared/date-picker-BnOjyuKS.cjs +0 -2
- package/dist/_shared/date-picker-BnOjyuKS.cjs.map +0 -1
- package/dist/_shared/date-pickers-Cas9cPlj.js +0 -330
- package/dist/_shared/date-pickers-Cas9cPlj.js.map +0 -1
- package/dist/_shared/date-pickers-Dk-G3RMy.cjs +0 -2
- package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +0 -1
- package/dist/_shared/dialog-67GmkMLC.js +0 -101
- package/dist/_shared/dialog-67GmkMLC.js.map +0 -1
- package/dist/_shared/dialog-BF_4uAhE.cjs +0 -2
- package/dist/_shared/dialog-BF_4uAhE.cjs.map +0 -1
- package/dist/_shared/display-B9xVWboG.cjs +0 -8
- package/dist/_shared/display-B9xVWboG.cjs.map +0 -1
- package/dist/_shared/display-BM_GxDAo.js +0 -1237
- package/dist/_shared/display-BM_GxDAo.js.map +0 -1
- package/dist/_shared/dropdown-menu-4nxEBMnd.js +0 -147
- package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +0 -1
- package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +0 -2
- package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +0 -1
- package/dist/_shared/form-field-BQlki-8s.js +0 -319
- package/dist/_shared/form-field-BQlki-8s.js.map +0 -1
- package/dist/_shared/form-field-DzpwVS99.cjs +0 -2
- package/dist/_shared/form-field-DzpwVS99.cjs.map +0 -1
- package/dist/_shared/form-sizing-CcbB-OHF.js +0 -21
- package/dist/_shared/form-sizing-CcbB-OHF.js.map +0 -1
- package/dist/_shared/form-sizing-Cw12UeI6.cjs +0 -2
- package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +0 -1
- package/dist/_shared/format-B2AdSQVn.cjs +0 -2
- package/dist/_shared/format-B2AdSQVn.cjs.map +0 -1
- package/dist/_shared/format-CP65h1vK.js +0 -48
- package/dist/_shared/format-CP65h1vK.js.map +0 -1
- package/dist/_shared/forms-B8aaNG44.cjs +0 -2
- package/dist/_shared/forms-B8aaNG44.cjs.map +0 -1
- package/dist/_shared/forms-BusuTZZ2.js +0 -3374
- package/dist/_shared/forms-BusuTZZ2.js.map +0 -1
- package/dist/_shared/header-DWfOUjFL.cjs +0 -2
- package/dist/_shared/header-DWfOUjFL.cjs.map +0 -1
- package/dist/_shared/header-KpdoLtP9.js +0 -369
- package/dist/_shared/header-KpdoLtP9.js.map +0 -1
- package/dist/_shared/heading-BprqyzDs.js +0 -39
- package/dist/_shared/heading-BprqyzDs.js.map +0 -1
- package/dist/_shared/heading-mZc_jan1.cjs +0 -2
- package/dist/_shared/heading-mZc_jan1.cjs.map +0 -1
- package/dist/_shared/hooks-C-uWoRq5.cjs +0 -2
- package/dist/_shared/hooks-C-uWoRq5.cjs.map +0 -1
- package/dist/_shared/hooks-D5HJtvvP.js +0 -118
- package/dist/_shared/hooks-D5HJtvvP.js.map +0 -1
- package/dist/_shared/icon-badge-BBqDyAUz.cjs +0 -2
- package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +0 -1
- package/dist/_shared/icon-badge-Bi63T-bj.js +0 -52
- package/dist/_shared/icon-badge-Bi63T-bj.js.map +0 -1
- package/dist/_shared/input-B2YXTHqz.cjs +0 -2
- package/dist/_shared/input-B2YXTHqz.cjs.map +0 -1
- package/dist/_shared/input-BJb10xb9.cjs +0 -2
- package/dist/_shared/input-BJb10xb9.cjs.map +0 -1
- package/dist/_shared/input-CZxP5Xgj.js +0 -17
- package/dist/_shared/input-CZxP5Xgj.js.map +0 -1
- package/dist/_shared/input-DQahu2sm.js +0 -182
- package/dist/_shared/input-DQahu2sm.js.map +0 -1
- package/dist/_shared/item-Cu5JbZyZ.js +0 -224
- package/dist/_shared/item-Cu5JbZyZ.js.map +0 -1
- package/dist/_shared/item-Cx_7QZ2o.cjs +0 -2
- package/dist/_shared/item-Cx_7QZ2o.cjs.map +0 -1
- package/dist/_shared/mentions-CS3rIhze.js +0 -493
- package/dist/_shared/mentions-CS3rIhze.js.map +0 -1
- package/dist/_shared/mentions-D7gnP3Nf.cjs +0 -2
- package/dist/_shared/mentions-D7gnP3Nf.cjs.map +0 -1
- package/dist/_shared/metadata-CRsVWE8Y.cjs +0 -2
- package/dist/_shared/metadata-CRsVWE8Y.cjs.map +0 -1
- package/dist/_shared/metadata-CfG0FdFZ.js +0 -236
- package/dist/_shared/metadata-CfG0FdFZ.js.map +0 -1
- package/dist/_shared/money-display-Bd0rkjc9.js +0 -198
- package/dist/_shared/money-display-Bd0rkjc9.js.map +0 -1
- package/dist/_shared/money-display-DSFft9Mi.cjs +0 -2
- package/dist/_shared/money-display-DSFft9Mi.cjs.map +0 -1
- package/dist/_shared/navigation-Do9k5Xh1.js +0 -420
- package/dist/_shared/navigation-Do9k5Xh1.js.map +0 -1
- package/dist/_shared/navigation-QAAD3HJd.cjs +0 -2
- package/dist/_shared/navigation-QAAD3HJd.cjs.map +0 -1
- package/dist/_shared/overlays-B8AH8fNv.js +0 -633
- package/dist/_shared/overlays-B8AH8fNv.js.map +0 -1
- package/dist/_shared/overlays-DOcoRy8k.cjs +0 -2
- package/dist/_shared/overlays-DOcoRy8k.cjs.map +0 -1
- package/dist/_shared/page-BPCeKX9X.js +0 -263
- package/dist/_shared/page-BPCeKX9X.js.map +0 -1
- package/dist/_shared/page-DMM32sxi.cjs +0 -2
- package/dist/_shared/page-DMM32sxi.cjs.map +0 -1
- package/dist/_shared/popover-B1f_EUQS.cjs +0 -2
- package/dist/_shared/popover-B1f_EUQS.cjs.map +0 -1
- package/dist/_shared/popover-CgRGcFk9.js +0 -83
- package/dist/_shared/popover-CgRGcFk9.js.map +0 -1
- package/dist/_shared/popover-menu-BEKIT3LR.cjs +0 -2
- package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +0 -1
- package/dist/_shared/popover-menu-BHdHLEVL.js +0 -95
- package/dist/_shared/popover-menu-BHdHLEVL.js.map +0 -1
- package/dist/_shared/rich-text-editor-0uoIoYXU.js +0 -608
- package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +0 -1
- package/dist/_shared/rich-text-editor-wTiARGuB.cjs +0 -2
- package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +0 -1
- package/dist/_shared/scroll-area-Bo17wtZD.cjs +0 -2
- package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +0 -1
- package/dist/_shared/scroll-area-Cj-hmB5D.js +0 -41
- package/dist/_shared/scroll-area-Cj-hmB5D.js.map +0 -1
- package/dist/_shared/select-07RRiTWc.js +0 -85
- package/dist/_shared/select-07RRiTWc.js.map +0 -1
- package/dist/_shared/select-BfiU7a4n.cjs +0 -2
- package/dist/_shared/select-BfiU7a4n.cjs.map +0 -1
- package/dist/_shared/separator-CN9zAJfs.cjs +0 -2
- package/dist/_shared/separator-CN9zAJfs.cjs.map +0 -1
- package/dist/_shared/separator-DR0uUMKa.js +0 -16
- package/dist/_shared/separator-DR0uUMKa.js.map +0 -1
- package/dist/_shared/sheet-B5FoGJAZ.cjs +0 -2
- package/dist/_shared/sheet-B5FoGJAZ.cjs.map +0 -1
- package/dist/_shared/sheet-cUI8cypP.js +0 -100
- package/dist/_shared/sheet-cUI8cypP.js.map +0 -1
- package/dist/_shared/sidebar-Bq7yKLrG.cjs +0 -2
- package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +0 -1
- package/dist/_shared/sidebar-Da20tCUc.cjs +0 -2
- package/dist/_shared/sidebar-Da20tCUc.cjs.map +0 -1
- package/dist/_shared/sidebar-Q6TYE8Ux.js +0 -371
- package/dist/_shared/sidebar-Q6TYE8Ux.js.map +0 -1
- package/dist/_shared/sidebar-WmnQ55YY.js +0 -537
- package/dist/_shared/sidebar-WmnQ55YY.js.map +0 -1
- package/dist/_shared/skeleton-B3HWEc6G.js +0 -14
- package/dist/_shared/skeleton-B3HWEc6G.js.map +0 -1
- package/dist/_shared/skeleton-Cz_l8-fc.cjs +0 -2
- package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +0 -1
- package/dist/_shared/slot-BgnZtKR5.js +0 -18
- package/dist/_shared/slot-BgnZtKR5.js.map +0 -1
- package/dist/_shared/slot-Dac1ipUC.cjs +0 -2
- package/dist/_shared/slot-Dac1ipUC.cjs.map +0 -1
- package/dist/_shared/smart-card-Bm_VxYUG.cjs +0 -2
- package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +0 -1
- package/dist/_shared/smart-card-MT6JjkoI.js +0 -360
- package/dist/_shared/smart-card-MT6JjkoI.js.map +0 -1
- package/dist/_shared/spinner-BQjxJ_Kx.js +0 -67
- package/dist/_shared/spinner-BQjxJ_Kx.js.map +0 -1
- package/dist/_shared/spinner-Dvaa6GUm.cjs +0 -2
- package/dist/_shared/spinner-Dvaa6GUm.cjs.map +0 -1
- package/dist/_shared/switch-C0yyhsXZ.js +0 -51
- package/dist/_shared/switch-C0yyhsXZ.js.map +0 -1
- package/dist/_shared/switch-DozkSQNn.cjs +0 -2
- package/dist/_shared/switch-DozkSQNn.cjs.map +0 -1
- package/dist/_shared/text-DBnY6fcL.cjs +0 -2
- package/dist/_shared/text-DBnY6fcL.cjs.map +0 -1
- package/dist/_shared/text-DIxMTECE.js +0 -74
- package/dist/_shared/text-DIxMTECE.js.map +0 -1
- package/dist/_shared/textarea-Cgl-FPwu.js +0 -119
- package/dist/_shared/textarea-Cgl-FPwu.js.map +0 -1
- package/dist/_shared/textarea-D8wC0XlZ.cjs +0 -2
- package/dist/_shared/textarea-D8wC0XlZ.cjs.map +0 -1
- package/dist/_shared/tooltip-Cws4BiPT.js +0 -49
- package/dist/_shared/tooltip-Cws4BiPT.js.map +0 -1
- package/dist/_shared/tooltip-DyUi-Tac.cjs +0 -2
- package/dist/_shared/tooltip-DyUi-Tac.cjs.map +0 -1
- package/dist/_shared/typography-BW7iZBx7.cjs +0 -2
- package/dist/_shared/typography-BW7iZBx7.cjs.map +0 -1
- package/dist/_shared/typography-a3hydyvI.js +0 -102
- package/dist/_shared/typography-a3hydyvI.js.map +0 -1
- package/dist/_shared/ui-provider-4qKSKMPd.js +0 -85
- package/dist/_shared/ui-provider-4qKSKMPd.js.map +0 -1
- package/dist/_shared/ui-provider-uiQgATj1.cjs +0 -2
- package/dist/_shared/ui-provider-uiQgATj1.cjs.map +0 -1
- package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +0 -6
- package/dist/showcase/assets/CSPContext-BA7DfnCI.js +0 -1
- package/dist/showcase/assets/CompositeItem-PwzgE4va.js +0 -1
- package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +0 -1
- package/dist/showcase/assets/Control.FullScreen-B9vseC57.js +0 -1
- package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +0 -1
- package/dist/showcase/assets/FormContext-ChygLayp.js +0 -1
- package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +0 -1
- package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +0 -1
- package/dist/showcase/assets/Separator-Dk4eN76U.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +0 -1
- package/dist/showcase/assets/accordion-dQszzfmw.js +0 -172
- package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +0 -1
- package/dist/showcase/assets/action-menu-CBi2Eiy0.js +0 -1
- package/dist/showcase/assets/activities-DoXsgP4G.js +0 -501
- package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +0 -1
- package/dist/showcase/assets/admin-CxklUqAG.js +0 -80
- package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +0 -2
- package/dist/showcase/assets/ai-chat-B6PuqkEu.js +0 -568
- package/dist/showcase/assets/ai-elements-D_rpj_ds.js +0 -379
- package/dist/showcase/assets/ai-new-CUPrAbOK.js +0 -167
- package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +0 -1
- package/dist/showcase/assets/ai-zxF_msJF.js +0 -41
- package/dist/showcase/assets/alert-771BE3Ny.js +0 -59
- package/dist/showcase/assets/alert-CG42DAlX.js +0 -1
- package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +0 -73
- package/dist/showcase/assets/arrow-down-CUoXUyN1.js +0 -1
- package/dist/showcase/assets/arrow-left-Cdq69X6h.js +0 -1
- package/dist/showcase/assets/arrow-right-i25q9L2H.js +0 -1
- package/dist/showcase/assets/arrow-up-pnezegnF.js +0 -1
- package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +0 -1
- package/dist/showcase/assets/avatar-LPmQqZQv.js +0 -1
- package/dist/showcase/assets/avatar-ZVFIQouy.js +0 -57
- package/dist/showcase/assets/badge-DK4bsgZC.js +0 -28
- package/dist/showcase/assets/badge-check-Cw5gkVcG.js +0 -1
- package/dist/showcase/assets/bell-BvJELoaV.js +0 -1
- package/dist/showcase/assets/bot-DRj6sdSR.js +0 -1
- package/dist/showcase/assets/box-BNND3M2m.js +0 -1
- package/dist/showcase/assets/brain-Cy3o-12l.js +0 -1
- package/dist/showcase/assets/brand-DvipEpFn.js +0 -40
- package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +0 -1
- package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +0 -52
- package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +0 -1
- package/dist/showcase/assets/briefcase-LcAwoEmu.js +0 -1
- package/dist/showcase/assets/button-CuwcGzk1.js +0 -44
- package/dist/showcase/assets/button-group-CAImjDrl.js +0 -1
- package/dist/showcase/assets/buttons-DTjNHCMl.js +0 -259
- package/dist/showcase/assets/calendar-B1zW0q6I.js +0 -1
- package/dist/showcase/assets/calendar-Dlv72ytt.js +0 -1
- package/dist/showcase/assets/calendar-ls2A08Pn.js +0 -16
- package/dist/showcase/assets/card-BhtkM1BT.js +0 -1
- package/dist/showcase/assets/cards-BRpRXzGk.js +0 -328
- package/dist/showcase/assets/chart-column-BpQkEi1H.js +0 -1
- package/dist/showcase/assets/chevron-down-DyObdfSb.js +0 -1
- package/dist/showcase/assets/chevron-left-T7dHNxYM.js +0 -1
- package/dist/showcase/assets/chevron-right-D_EcqHpT.js +0 -1
- package/dist/showcase/assets/chevron-up-B38ivdGO.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +0 -1
- package/dist/showcase/assets/circle-BrCPAmDA.js +0 -1
- package/dist/showcase/assets/circle-alert-DdhzLPY_.js +0 -1
- package/dist/showcase/assets/circle-check-DlA6zidQ.js +0 -1
- package/dist/showcase/assets/circle-check-big-DFGJANQF.js +0 -1
- package/dist/showcase/assets/circle-dot-BKmnVUqM.js +0 -1
- package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +0 -1
- package/dist/showcase/assets/circle-x-C45QjHEs.js +0 -1
- package/dist/showcase/assets/clock-D1nKQzQo.js +0 -1
- package/dist/showcase/assets/code-xml-B8N3GRSu.js +0 -1
- package/dist/showcase/assets/collapsible-4TfcWyNs.js +0 -1
- package/dist/showcase/assets/collapsible-CKbZtvTj.js +0 -27
- package/dist/showcase/assets/combobox-DTdGPaU0.js +0 -622
- package/dist/showcase/assets/command-DymTXwL1.js +0 -1
- package/dist/showcase/assets/command-ksVIHQKJ.js +0 -45
- package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +0 -1
- package/dist/showcase/assets/comment-item-CAmKnJa7.js +0 -1
- package/dist/showcase/assets/comments-Benk-2mV.js +0 -349
- package/dist/showcase/assets/commerce-Qz-mq8mQ.js +0 -78
- package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +0 -179
- package/dist/showcase/assets/composite-DBDXLPyz.js +0 -1
- package/dist/showcase/assets/contact-card-DkL2nI3r.js +0 -65
- package/dist/showcase/assets/content-container-mRm6oJEa.js +0 -1
- package/dist/showcase/assets/copyable-DmLlmwzy.js +0 -96
- package/dist/showcase/assets/course-card-CJJoeZj9.js +0 -113
- package/dist/showcase/assets/cpu-BXJnF2Xy.js +0 -1
- package/dist/showcase/assets/credit-card-BQK3KKb2.js +0 -1
- package/dist/showcase/assets/currency-DBPUh8ee.js +0 -149
- package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +0 -90
- package/dist/showcase/assets/database-BZerpzGE.js +0 -1
- package/dist/showcase/assets/date-block-iiHUpbNX.js +0 -1
- package/dist/showcase/assets/date-picker-BQeBGL7T.js +0 -1
- package/dist/showcase/assets/date-pickers-CKcUEMMF.js +0 -110
- package/dist/showcase/assets/dense-info-DATmxRU8.js +0 -106
- package/dist/showcase/assets/dialog-Bqu5KDYH.js +0 -1
- package/dist/showcase/assets/display-Bj7uPXD4.js +0 -392
- package/dist/showcase/assets/dist-QK7JxeYv.js +0 -1
- package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +0 -1
- package/dist/showcase/assets/download-5oGw_WbW.js +0 -1
- package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +0 -1
- package/dist/showcase/assets/dropzone-Co1uhsDn.js +0 -1
- package/dist/showcase/assets/ellipsis-cKRcvuyL.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +0 -1
- package/dist/showcase/assets/empty-Y2-4nCBr.js +0 -1
- package/dist/showcase/assets/empty-item-USa6xcUv.js +0 -49
- package/dist/showcase/assets/empty-state-DfhZ9AT5.js +0 -188
- package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +0 -359
- package/dist/showcase/assets/esm-BeGQ_ZTM.js +0 -2
- package/dist/showcase/assets/event-calendar-D-jGrrZS.js +0 -138
- package/dist/showcase/assets/event-log-tA_i4eR9.js +0 -326
- package/dist/showcase/assets/example-6phCHGsN.js +0 -1
- package/dist/showcase/assets/external-link-BuVHkCy0.js +0 -1
- package/dist/showcase/assets/eye-DC5HfGm6.js +0 -1
- package/dist/showcase/assets/feature-announcement-DwvxLytd.js +0 -34
- package/dist/showcase/assets/fetchers-SLCIqgnM.js +0 -1
- package/dist/showcase/assets/file-D-xM4vLy.js +0 -1
- package/dist/showcase/assets/file-text-tmG5vNbr.js +0 -1
- package/dist/showcase/assets/filters-CrGRXmq6.js +0 -78
- package/dist/showcase/assets/flag-CWrEtkY5.js +0 -1
- package/dist/showcase/assets/folder-open-Br-x1pjP.js +0 -1
- package/dist/showcase/assets/form-sizing-Bb5hiM45.js +0 -1
- package/dist/showcase/assets/format-D_ETCyg4.js +0 -1
- package/dist/showcase/assets/format-metric-value-cyOYS377.js +0 -1
- package/dist/showcase/assets/forms-B_MkQ3rm.js +0 -790
- package/dist/showcase/assets/generic-CdmsyXV3.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +0 -1
- package/dist/showcase/assets/gift-NkuklfU2.js +0 -1
- package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +0 -85
- package/dist/showcase/assets/git-branch-B_CBqPeO.js +0 -1
- package/dist/showcase/assets/global-search-D9teAbPe.js +0 -90
- package/dist/showcase/assets/globe-gzw45GU2.js +0 -1
- package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +0 -58
- package/dist/showcase/assets/header-notifications-_aZCpE5A.js +0 -1
- package/dist/showcase/assets/heart-CEMKbRaZ.js +0 -1
- package/dist/showcase/assets/house-BlGXAcMH.js +0 -1
- package/dist/showcase/assets/icon-badge-z6N9reH_.js +0 -1
- package/dist/showcase/assets/image-B8mzmVBr.js +0 -1
- package/dist/showcase/assets/inbox-qdSnP4UV.js +0 -1
- package/dist/showcase/assets/index-B4ubXfly.js +0 -10
- package/dist/showcase/assets/index-Cu3Ssz5r.css +0 -2
- package/dist/showcase/assets/inertValue-D5Q8cLku.js +0 -1
- package/dist/showcase/assets/info-DBvvNjc_.js +0 -1
- package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +0 -1
- package/dist/showcase/assets/input-CBQR0aeX.js +0 -1
- package/dist/showcase/assets/input-OrUzpI55.js +0 -1
- package/dist/showcase/assets/input-group-DhqOen2N.js +0 -47
- package/dist/showcase/assets/input-group-l8xa5nUq.js +0 -1
- package/dist/showcase/assets/inputs-DbiJ0qy2.js +0 -49
- package/dist/showcase/assets/invoice-header-C6youIbL.js +0 -36
- package/dist/showcase/assets/invoice-items-g6dgryF-.js +0 -36
- package/dist/showcase/assets/invoice-mini-0iWhufpt.js +0 -14
- package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +0 -30
- package/dist/showcase/assets/isSameDay-BpZEtJe8.js +0 -1
- package/dist/showcase/assets/isToday-F0CS28oK.js +0 -1
- package/dist/showcase/assets/italic-CJOEwjdc.js +0 -1
- package/dist/showcase/assets/item-BiMm1PPB.js +0 -1
- package/dist/showcase/assets/item-CN0cwdj_.js +0 -1
- package/dist/showcase/assets/item-DNqEUYLT.js +0 -117
- package/dist/showcase/assets/kanban-DxePEUiQ.js +0 -175
- package/dist/showcase/assets/label-Dx4WO-fg.js +0 -1
- package/dist/showcase/assets/layout-containers-DDl8rG8S.js +0 -96
- package/dist/showcase/assets/layout-header-Bu6IcDWu.js +0 -170
- package/dist/showcase/assets/layout-page-D-88Qnoy.js +0 -122
- package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +0 -224
- package/dist/showcase/assets/layout-users-DtbZduBG.js +0 -104
- package/dist/showcase/assets/leaflet-src-9EZQ14iG.js +0 -1
- package/dist/showcase/assets/lib-D9BoOYUd.js +0 -1
- package/dist/showcase/assets/lock-CHurDI0n.js +0 -1
- package/dist/showcase/assets/mail-DZ1o1RLW.js +0 -1
- package/dist/showcase/assets/map-C8xiyT9X.js +0 -124
- package/dist/showcase/assets/map-pin-CAKaoYod.js +0 -1
- package/dist/showcase/assets/menus-C6mnp636.js +0 -89
- package/dist/showcase/assets/message-square-Zo5J_zU1.js +0 -1
- package/dist/showcase/assets/metadata-list-W83-UMhc.js +0 -278
- package/dist/showcase/assets/metric-BSvxidIX.js +0 -1
- package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +0 -77
- package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +0 -42
- package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +0 -54
- package/dist/showcase/assets/minus-C6eBW-2t.js +0 -1
- package/dist/showcase/assets/money-display-DjGRJ16l.js +0 -1
- package/dist/showcase/assets/month-year-picker-DTDebPqf.js +0 -1
- package/dist/showcase/assets/navigation-BrG8Chig.js +0 -86
- package/dist/showcase/assets/navigation-CfXQJbyM.js +0 -230
- package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +0 -119
- package/dist/showcase/assets/overlays-2AB9-S1Z.js +0 -88
- package/dist/showcase/assets/overlays-CYt9o3Xq.js +0 -393
- package/dist/showcase/assets/package-BJMP-Fcr.js +0 -1
- package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +0 -1
- package/dist/showcase/assets/page-header-B_rqHJhe.js +0 -1
- package/dist/showcase/assets/pagination-BHiQvvka.js +0 -1
- package/dist/showcase/assets/pagination-Dq0GruQd.js +0 -42
- package/dist/showcase/assets/paperclip-BMYKrUQo.js +0 -1
- package/dist/showcase/assets/pencil-BJ3VS_FO.js +0 -1
- package/dist/showcase/assets/phone-CsRIyvep.js +0 -1
- package/dist/showcase/assets/plus-D2JuXYLg.js +0 -1
- package/dist/showcase/assets/popover-DNT9755r.js +0 -1
- package/dist/showcase/assets/popover-KvGgcPNg.js +0 -1
- package/dist/showcase/assets/popover-menu-CJx30R65.js +0 -1
- package/dist/showcase/assets/progress-B7WuXcJR.js +0 -1
- package/dist/showcase/assets/progress-CweCSAUv.js +0 -18
- package/dist/showcase/assets/props-table-uDY4eIzt.js +0 -1
- package/dist/showcase/assets/props.generated-BqPfiNI-.json +0 -32423
- package/dist/showcase/assets/quote-DAyyfzQd.js +0 -1
- package/dist/showcase/assets/receipt-C0mMZGbF.js +0 -1
- package/dist/showcase/assets/refresh-cw-X06JbXb-.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +0 -1
- package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +0 -124
- package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +0 -141
- package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +0 -1
- package/dist/showcase/assets/scroll-area-0rT06pXZ.js +0 -1
- package/dist/showcase/assets/scroll-area-YXwdzGpN.js +0 -32
- package/dist/showcase/assets/select-BoWQDtUf.js +0 -1
- package/dist/showcase/assets/send-DJsk3cr1.js +0 -1
- package/dist/showcase/assets/separator-CLSnRcJa.js +0 -28
- package/dist/showcase/assets/separator-DWv-twD-.js +0 -1
- package/dist/showcase/assets/settings-Cb2MsAmN.js +0 -1
- package/dist/showcase/assets/sheet-Dn1-MYus.js +0 -1
- package/dist/showcase/assets/shield-DwLjF5ch.js +0 -1
- package/dist/showcase/assets/shield-alert-D8i6gzMK.js +0 -1
- package/dist/showcase/assets/shield-check-D5YRSBIz.js +0 -1
- package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +0 -1
- package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +0 -1
- package/dist/showcase/assets/skeleton-CeNPp4hr.js +0 -1
- package/dist/showcase/assets/skeleton-QPsnM_NR.js +0 -29
- package/dist/showcase/assets/smart-card-BisUbLPt.js +0 -1
- package/dist/showcase/assets/sonner-B7GzbBK2.js +0 -22
- package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +0 -5
- package/dist/showcase/assets/sparkles-CF9P5Tqh.js +0 -1
- package/dist/showcase/assets/spinner-BeamEyJd.js +0 -49
- package/dist/showcase/assets/spinner-DoYBfalR.js +0 -1
- package/dist/showcase/assets/spinner-UsLsOYzn.js +0 -30
- package/dist/showcase/assets/square-pen-BGTVdnt1.js +0 -1
- package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +0 -1
- package/dist/showcase/assets/star-NsPNO9gR.js +0 -1
- package/dist/showcase/assets/startOfDay-zJBpxLuW.js +0 -1
- package/dist/showcase/assets/styles-DA7a7hVy.js +0 -1
- package/dist/showcase/assets/switch-C62S4U2o.js +0 -1
- package/dist/showcase/assets/switch-CYQcinJZ.js +0 -1
- package/dist/showcase/assets/table-w4IABkpa.js +0 -1
- package/dist/showcase/assets/table-xgB63UrY.js +0 -390
- package/dist/showcase/assets/tabs-BFTEaTXj.js +0 -19
- package/dist/showcase/assets/tabs-oMJn9Ujq.js +0 -1
- package/dist/showcase/assets/text-button-BgcutPuu.js +0 -1
- package/dist/showcase/assets/text-link-CS9thOWL.js +0 -1
- package/dist/showcase/assets/textarea-BOBx4EM6.js +0 -1
- package/dist/showcase/assets/textarea-CTzYZZqa.js +0 -1
- package/dist/showcase/assets/timelines-CK07mEBK.js +0 -186
- package/dist/showcase/assets/toggle-group-CSPdPT6G.js +0 -1
- package/dist/showcase/assets/toggles-DDSdl-gA.js +0 -71
- package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +0 -32
- package/dist/showcase/assets/trash-2-C-FAptQP.js +0 -1
- package/dist/showcase/assets/trending-up-BmLhdF_w.js +0 -1
- package/dist/showcase/assets/truck-pZdUS_as.js +0 -1
- package/dist/showcase/assets/typography-CnBH2z7f.js +0 -214
- package/dist/showcase/assets/ui-badge-Cl6INRO5.js +0 -28
- package/dist/showcase/assets/ui-card-B5P-thNu.js +0 -30
- package/dist/showcase/assets/ui-table-B32RILKk.js +0 -42
- package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +0 -138
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +0 -1
- package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +0 -1
- package/dist/showcase/assets/useControlled-ZjqBfPCn.js +0 -1
- package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +0 -1
- package/dist/showcase/assets/useRender-zuKv6JQF.js +0 -1
- package/dist/showcase/assets/useRole-08KeyiD3.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +0 -1
- package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +0 -1
- package/dist/showcase/assets/user-Bgc2t2_e.js +0 -1
- package/dist/showcase/assets/user-plus-F_TfagnP.js +0 -1
- package/dist/showcase/assets/users-B7G4yTCR.js +0 -1
- package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +0 -37
- package/dist/showcase/assets/wrench-BdzICmjR.js +0 -1
- package/dist/showcase/assets/x-B156Wr-5.js +0 -1
- package/dist/showcase/assets/zap-B3iByjNV.js +0 -1
- /package/dist/showcase/assets/{analytics.strings-BcotPUad.js → analytics.strings-B9262Jmq.js} +0 -0
- /package/dist/showcase/assets/{chunk-CilyBKbf.js → chunk-QTnfLwEv.js} +0 -0
- /package/dist/showcase/assets/{customers-BETQwFRp.js → customers-DvBxRjHv.js} +0 -0
- /package/dist/showcase/assets/{format-DoQ4Wqkq.js → format-C_LjuBUs.js} +0 -0
- /package/dist/showcase/assets/{isElementDisabled-BLmk_uhf.js → isElementDisabled-KSuuBj8D.js} +0 -0
- /package/dist/showcase/assets/{leaflet.draw-CwFqqsDc.js → leaflet.draw-lpeKTWFs.js} +0 -0
- /package/dist/showcase/assets/{orders-DNn7r9k_.js → orders-BFwWtubb.js} +0 -0
- /package/dist/showcase/assets/{resolveAriaLabelledBy-DmY5COAB.js → resolveAriaLabelledBy-B6CR9UP2.js} +0 -0
- /package/dist/showcase/assets/{valueToPercent-CDF3aNnc.js → valueToPercent-B5BHWU68.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/ui/table.tsx","../../../../src/components/ui/pagination.tsx","../../../../src/components/base/table/table.strings.ts","../../../../src/components/base/table/pagination.tsx","../../../../src/components/base/table/table-actions.tsx","../../../../src/components/base/table/table-helpers.tsx","../../../../src/components/base/table/table-body.tsx","../../../../src/components/base/table/table-header.tsx","../../../../src/components/base/table/table-toolbar.tsx","../../../../src/components/base/table/data-table.tsx","../../../../src/components/base/table/filter-bar.tsx","../../../../src/components/base/table/table-pagination.tsx","../../../../src/components/base/table/column-visibility-toggle.tsx","../../../../src/components/base/table/partials/cell-value.tsx","../../../../src/components/base/table/partials/table-link.tsx","../../../../src/components/base/table/partials/cell-renderers.tsx","../../../../src/components/base/table/hooks.ts","../../../../src/components/base/table/partials/density-toggle.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype TableProps = React.ComponentProps<\"table\"> & {\n containerClassName?: string\n}\n\nfunction Table({ className, containerClassName, ...props }: TableProps) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", containerClassName)}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\n \"mx-auto flex w-full justify-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"gap-1 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <Button\n variant={isActive ? \"outline\" : \"ghost\"}\n size={size}\n className={cn(className)}\n nativeButton={false}\n render={\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n {...props}\n />\n }\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n text = \"Previous\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"pl-2!\", className)}\n {...props}\n >\n <ChevronLeftIcon data-icon=\"inline-start\" />\n <span className=\"hidden sm:block\">\n {text}\n </span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n text = \"Next\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"pr-2!\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">{text}</span>\n <ChevronRightIcon data-icon=\"inline-end\" />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\n \"size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon\n />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","import { type DataTableStrings, type DataTableStringsOverride } from './table.types';\n\nconst fallbackTitleCase = (value: string): string => {\n const formatted = value\n .replace(/[_-]+/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n if (!formatted) {\n return 'Column';\n }\n\n return formatted.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\nconst formatColumnLabel = (columnId: string, currentLabel?: string | null): string => {\n if (currentLabel && currentLabel.trim().length > 0) {\n return currentLabel;\n }\n\n return fallbackTitleCase(columnId);\n};\n\nexport const defaultDataTableStrings: DataTableStrings = {\n emptyState: {\n message: 'No results found.',\n },\n actions: {\n triggerLabel: 'Actions',\n srLabel: 'Row actions menu',\n },\n filter: {\n searchPlaceholder: 'Filter...',\n columnsButton: 'Columns',\n },\n columnVisibility: {\n title: 'Toggle columns',\n triggerLabel: 'Columns',\n formatLabel: formatColumnLabel,\n },\n toolbar: {\n scrollLeft: 'Scroll left',\n scrollRight: 'Scroll right',\n columns: 'Toggle columns',\n dense: 'Compact view',\n comfortable: 'Comfortable view',\n },\n pagination: {\n showing: 'Showing',\n to: 'to',\n of: 'of',\n entries: 'results',\n previous: 'Previous',\n next: 'Next',\n page: 'Page',\n rowsPerPage: 'Rows per page',\n ariaLabel: 'Pagination navigation',\n },\n selection: {\n summary: (selected, total) => `${selected} of ${total} row${total === 1 ? '' : 's'} selected.`,\n row: (index) => `Select row ${index + 1}`,\n selectAll: 'Select all rows',\n },\n} as const;\n\nconst mergeNested = <T extends object>(defaults: T, overrides?: Partial<T>): T => ({\n ...defaults,\n ...(overrides ?? {}),\n});\n\nexport const mergeDataTableStrings = (overrides?: DataTableStringsOverride): DataTableStrings => {\n if (!overrides) {\n return defaultDataTableStrings;\n }\n\n return {\n emptyState: mergeNested(defaultDataTableStrings.emptyState, overrides.emptyState),\n actions: mergeNested(defaultDataTableStrings.actions, overrides.actions),\n filter: mergeNested(defaultDataTableStrings.filter, overrides.filter),\n columnVisibility: mergeNested(defaultDataTableStrings.columnVisibility, overrides.columnVisibility),\n toolbar: mergeNested(defaultDataTableStrings.toolbar, overrides.toolbar),\n pagination: mergeNested(defaultDataTableStrings.pagination, overrides.pagination),\n selection: mergeNested(defaultDataTableStrings.selection, overrides.selection),\n };\n};\n","import { useCallback } from 'react';\nimport {\n\tPagination as PaginationRoot,\n\tPaginationContent,\n\tPaginationEllipsis,\n\tPaginationItem,\n\tPaginationLink,\n\tPaginationNext,\n\tPaginationPrevious,\n} from '@/components/ui/pagination';\nimport { Text } from '@/components/typography';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ServerPaginationProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\n/**\n * Generate a window of page numbers with ellipsis gaps.\n *\n * Always shows first page, last page, and up to 1 sibling\n * on each side of the current page.\n */\nfunction generatePageNumbers(\n\tcurrentPage: number,\n\tlastPage: number,\n): (number | 'ellipsis')[] {\n\tif (lastPage <= 7) {\n\t\treturn Array.from({ length: lastPage }, (_, i) => i + 1);\n\t}\n\n\tconst pages: (number | 'ellipsis')[] = [1];\n\n\tif (currentPage > 3) {\n\t\tpages.push('ellipsis');\n\t}\n\n\tconst start = Math.max(2, currentPage - 1);\n\tconst end = Math.min(lastPage - 1, currentPage + 1);\n\n\tfor (let i = start; i <= end; i++) {\n\t\tpages.push(i);\n\t}\n\n\tif (currentPage < lastPage - 2) {\n\t\tpages.push('ellipsis');\n\t}\n\n\tpages.push(lastPage);\n\n\treturn pages;\n}\n\nfunction buildPageUrl(basePath: string, page: number, queryKey: string): string {\n\t// Build a URL without inheriting the current location's query string —\n\t// the library is framework-agnostic and must not read browser globals\n\t// to decide what to put in href. Consumers that need their own params\n\t// merged should compute and pass the URL via the pagination object.\n\tconst params = new URLSearchParams();\n\tparams.set(queryKey, String(page));\n\treturn `${basePath}?${params.toString()}`;\n}\n\nexport function Pagination({\n\tpagination,\n\tonPageChange,\n\tlabels = {},\n\tpageQueryKey,\n}: ServerPaginationProps) {\n\tconst paginationLabels = {\n\t\t...defaultDataTableStrings.pagination,\n\t\t...labels,\n\t} as typeof defaultDataTableStrings.pagination;\n\tconst queryKey = pageQueryKey ?? 'page';\n\n\tconst firstItem = (pagination.current_page - 1) * pagination.per_page + 1;\n\tconst lastItem = Math.min(\n\t\tpagination.current_page * pagination.per_page,\n\t\tpagination.total,\n\t);\n\n\tconst navigateToPage = useCallback(\n\t\t(page: number, url: string | null) => {\n\t\t\tif (!url) return;\n\t\t\t// The library never navigates on its own. Consumers wire their\n\t\t\t// router (Inertia, Tanstack Router, RR7, Next, …) through\n\t\t\t// `onPageChange`. When it's absent the click is a no-op — the\n\t\t\t// `href` attribute on the underlying anchor remains the only\n\t\t\t// fallback path (browsers will navigate it if JS doesn't run).\n\t\t\tonPageChange?.(page, url, pagination.path || '');\n\t\t},\n\t\t[onPageChange, pagination.path],\n\t);\n\n\tconst hasPrevious = pagination.prev_page_url !== null;\n\tconst hasNext = pagination.next_page_url !== null;\n\tconst pages = generatePageNumbers(pagination.current_page, pagination.last_page);\n\n\treturn (\n\t\t<div className={cn('pagination--component', 'flex items-center justify-between px-5 py-3')}>\n\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"tabular-nums tracking-tight\">\n\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"text-foreground\">{firstItem}–{lastItem}</Text>{' '}\n\t\t\t\t{paginationLabels.of}{' '}\n\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"text-foreground\">{pagination.total}</Text>{' '}\n\t\t\t\t{paginationLabels.entries}\n\t\t\t</Text>\n\n\t\t\t<PaginationRoot aria-label={paginationLabels.ariaLabel} className=\"w-auto mx-0\">\n\t\t\t\t<PaginationContent className=\"gap-0.5\">\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t<PaginationPrevious\n\t\t\t\t\t\t\ttext={paginationLabels.previous}\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\tpagination.current_page - 1,\n\t\t\t\t\t\t\t\t\tpagination.prev_page_url,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-disabled={!hasPrevious}\n\t\t\t\t\t\t\tclassName={`h-8 text-xs ${!hasPrevious ? 'pointer-events-none opacity-40' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\n\t\t\t\t\t{pages.map((page, index) => {\n\t\t\t\t\t\tconst isEllipsis = page === 'ellipsis';\n\t\t\t\t\t\tconst itemKey = isEllipsis\n\t\t\t\t\t\t\t? `ellipsis-${pagination.current_page}-${index}`\n\t\t\t\t\t\t\t: `page-${page}`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t<PaginationItem key={itemKey}>\n\t\t\t\t\t\t\t{isEllipsis ? (\n\t\t\t\t\t\t\t\t<PaginationEllipsis className=\"size-8\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<PaginationLink\n\t\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t\tisActive={page === pagination.current_page}\n\t\t\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\tbuildPageUrl(pagination.path, page, queryKey),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName=\"size-8 text-xs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{page}\n\t\t\t\t\t\t\t\t</PaginationLink>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</PaginationItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t<PaginationNext\n\t\t\t\t\t\t\ttext={paginationLabels.next}\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\tpagination.current_page + 1,\n\t\t\t\t\t\t\t\t\tpagination.next_page_url,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-disabled={!hasNext}\n\t\t\t\t\t\t\tclassName={`h-8 text-xs ${!hasNext ? 'pointer-events-none opacity-40' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t</PaginationContent>\n\t\t\t</PaginationRoot>\n\t\t</div>\n\t);\n}\n\nPagination.displayName = 'Pagination';\n","import { MoreHorizontal, type LucideIcon } from 'lucide-react';\nimport { isValidElement, useEffect, useMemo, useState } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport {\n ActionMenu,\n MenuAction,\n type MenuActionProps\n} from '@/components/base/navigation/action-menu';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableActionsProps, type ActionItem, type ActionVariant } from './table.types';\n\nexport function DataTableActions<TData>(props: DataTableActionsProps<TData>) {\n const {\n row,\n actions,\n menuLabel,\n displayMode = 'menu', // preserve existing behavior\n responsiveBreakpoint = 1040,\n strings: providedStrings\n } = props;\n\n const strings = providedStrings ?? defaultDataTableStrings;\n const resolvedMenuLabel = menuLabel ?? strings.actions.triggerLabel;\n\n // Resolve actions array\n const resolvedActions = useMemo<ActionItem<TData>[]>(() => {\n const base = typeof actions === 'function' ? actions(row) : actions;\n return Array.isArray(base) ? base : [];\n }, [actions, row]);\n\n // Filter visibility and compute disabled by predicate/boolean\n const visibleActions = useMemo(() => {\n const evalFlag = (flag: boolean | ((r: TData) => boolean) | undefined): boolean | undefined => {\n if (typeof flag === 'function') return flag(row);\n return flag;\n };\n return resolvedActions\n .filter(a => {\n const v = evalFlag(a.isVisible);\n return v === undefined ? true : v;\n })\n .map(a => ({\n ...a,\n disabled: evalFlag(a.isDisabled) ?? a.disabled ?? false\n }));\n }, [resolvedActions, row]);\n\n // No actions to render\n const hasVisibleActions = visibleActions.length > 0;\n\n // Responsive auto mode: inline over breakpoint, menu under\n const [isNarrow, setIsNarrow] = useState(false);\n\n // 1. Split by variant\n const nonDestructive = visibleActions.filter((action) => action.variant !== 'destructive');\n const destructive = visibleActions.filter((action) => action.variant === 'destructive');\n\n // 2. Combine them (non-destructive first, destructive last)\n const sortedActions = [...nonDestructive, ...destructive];\n\n useEffect(() => {\n if (displayMode !== 'auto' || !hasVisibleActions) {\n setIsNarrow(false);\n return;\n }\n\n const handleResize = () => {\n try {\n setIsNarrow(window.innerWidth <= responsiveBreakpoint);\n } catch {\n setIsNarrow(false);\n }\n };\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [displayMode, hasVisibleActions, responsiveBreakpoint]);\n\n if (!hasVisibleActions) return null;\n\n const mode: 'menu' | 'inline' = displayMode === 'auto' ? (isNarrow ? 'menu' : 'inline') : displayMode;\n\n const resolveMenuIcon = (icon: ActionItem<TData>['icon']): LucideIcon | undefined => {\n if (!icon) return undefined;\n if (typeof icon === 'function') {\n return icon as LucideIcon;\n }\n\n if (isValidElement(icon) && typeof icon.type === 'function') {\n return icon.type as LucideIcon;\n }\n\n return undefined;\n };\n\n const resolveActionButtonVariant = (variant?: ActionVariant): {\n variant: ButtonVariant;\n buttonStyle: ButtonStyle;\n className?: string\n } => {\n switch (variant) {\n case 'destructive':\n return { variant: 'error', buttonStyle: 'solid' };\n case 'outline':\n return { variant: 'secondary', buttonStyle: 'outline' };\n case 'secondary':\n return { variant: 'secondary', buttonStyle: 'solid' };\n case 'ghost':\n return { variant: 'secondary', buttonStyle: 'ghost' };\n case 'link':\n return { variant: 'secondary', buttonStyle: 'ghost', className: 'underline underline-offset-4' };\n case 'default':\n default:\n return { variant: 'primary', buttonStyle: 'solid' };\n }\n };\n\n const resolveMenuActionVariant = (\n variant?: ActionVariant\n ): NonNullable<MenuActionProps['variant']> => {\n switch (variant) {\n case 'default':\n return 'primary';\n case 'destructive':\n return 'error';\n default:\n return 'secondary';\n }\n };\n\n if (mode === 'inline') {\n return (\n <div className={cn('table-actions--component', 'flex items-center gap-1')}>\n {sortedActions.map((action, idx) => {\n const key = action.id || `${action.label}-${idx}`;\n const resolved = resolveActionButtonVariant(action.variant ?? 'ghost');\n const onClick = () => {\n action.onClick?.(row);\n };\n return (\n <Button\n key={key}\n variant={resolved.variant}\n buttonStyle={resolved.buttonStyle}\n className={cn('h-8 text-inherit leading-4', resolved.className)}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n {!!action.icon && <span className=\"mr-2 inline-flex\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n }\n\n\n // menu mode (default) using our ActionMenu implementation\n return (\n <ActionMenu\n label={undefined}\n icon={MoreHorizontal}\n srText={resolvedMenuLabel || strings.actions.srLabel}\n closeOnSelect={true}\n align=\"end\"\n density=\"table\"\n >\n {sortedActions.map((action, idx) => {\n const key = action.id || `${action.label}-${idx}`;\n const onClick = () => {\n action.onClick?.(row);\n };\n const menuIcon = resolveMenuIcon(action.icon);\n const inlineIcon = action.icon\n ? <span className=\"inline-flex items-center\">{action.icon}</span>\n : null;\n const fallbackContent = menuIcon ? null : (\n <div className=\"flex w-full items-center gap-2\">\n {inlineIcon}\n <span>{action.label}</span>\n </div>\n );\n\n const menuActionVariant = resolveMenuActionVariant(\n action.variant\n );\n\n return (\n <MenuAction\n key={key}\n label={action.label}\n icon={menuIcon}\n variant={menuActionVariant}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n {fallbackContent}\n </MenuAction>\n );\n })}\n </ActionMenu>\n );\n}\n\nDataTableActions.displayName = 'DataTableActions';\n","import type {\n\tSortingState,\n\tRowSelectionState,\n\tVisibilityState,\n\tTable,\n\tRow,\n\tUpdater,\n\tColumnDef,\n} from '@tanstack/react-table';\nimport React from 'react';\nimport { defaultDataTableStrings } from './table.strings';\nimport type { DataTableStrings } from './table.types';\n\n/**\n * Helper function for handling row selection changes with OnChangeFn compatibility\n */\nexport const handleRowSelectionChange = (\n\tupdatedSelection: Updater<RowSelectionState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<RowSelectionState>>,\n\texternalHandler?: (state: RowSelectionState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedSelection === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (\n\t\t\t\tupdatedSelection as (prev: RowSelectionState) => RowSelectionState\n\t\t\t)(prevState);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedSelection);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedSelection);\n\t\t}\n\t}\n};\n\n/**\n * Helper function for handling sorting changes with OnChangeFn compatibility\n */\nexport const handleSortingChange = (\n\tupdatedSorting: Updater<SortingState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<SortingState>>,\n\texternalHandler?: (state: SortingState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedSorting === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (updatedSorting as (prev: SortingState) => SortingState)(\n\t\t\t\tprevState,\n\t\t\t);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedSorting);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedSorting);\n\t\t}\n\t}\n};\n\n/**\n * Helper function for handling column visibility changes\n */\nexport const handleColumnVisibilityChange = (\n\tupdatedVisibility: Updater<VisibilityState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<VisibilityState>>,\n\texternalHandler?: (state: VisibilityState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedVisibility === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (\n\t\t\t\tupdatedVisibility as (prev: VisibilityState) => VisibilityState\n\t\t\t)(prevState);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedVisibility);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedVisibility);\n\t\t}\n\t}\n};\n\n/**\n * Get row class name based on selection state and custom function\n */\nexport const getRowClassName = <TData,>(\n\trow: Row<TData>,\n\tindex: number,\n\trowClassName?: string | ((row: Row<TData>, index: number) => string),\n\tisSelected?: boolean,\n): string => {\n\tlet className = '';\n\n\t// Add selected class if the row is selected\n\tif (isSelected) {\n\t\tclassName += 'bg-primary/5 ';\n\t}\n\n\t// Add custom class name\n\tif (typeof rowClassName === 'function') {\n\t\tclassName += rowClassName(row, index) + ' ';\n\t} else if (rowClassName) {\n\t\tclassName += rowClassName + ' ';\n\t}\n\n\treturn className.trim();\n};\n\n/**\n * Get cell class name including sticky column handling\n */\nexport const getCellClassName = <TData,>(\n\tcolumnId: string,\n\trow: Row<TData> | null,\n\tcellClassName?: string | ((column: string, row: Row<TData> | null) => string),\n\tstickyFirstColumn?: boolean,\n\tisFirstColumn?: boolean,\n): string => {\n\tlet baseClassName = '';\n\n\t// Add base class name\n\tif (typeof cellClassName === 'string') {\n\t\tbaseClassName = cellClassName;\n\t} else if (cellClassName && row) {\n\t\tbaseClassName = cellClassName(columnId, row);\n\t}\n\n\t// Add sticky class if it's the first column and sticky first column is enabled\n\tif (stickyFirstColumn && isFirstColumn) {\n\t\treturn `${baseClassName} sticky left-0 z-10 bg-card`;\n\t}\n\n\treturn baseClassName;\n};\n\n/**\n * Get selected rows data from the table\n */\nexport const getSelectedRowsData = <T extends object>(table: Table<T>): T[] => {\n\treturn table.getSelectedRowModel().rows.map((row) => row.original);\n};\n\n/**\n * Create row selection component for a row\n */\nexport const createRowSelectionCheckbox = <TData,>(\n\trow: Row<TData>,\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => (\n\t<div className=\"px-1\">\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclassName=\"size-3.5 rounded border-border text-primary accent-primary focus-visible:ring-ring focus-visible:ring-offset-1 cursor-pointer disabled:cursor-not-allowed disabled:opacity-40\"\n\t\t\tchecked={row.getIsSelected()}\n\t\t\tdisabled={!row.getCanSelect()}\n\t\t\tonChange={row.getToggleSelectedHandler()}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\taria-label={strings.selection.row(row.index)}\n\t\t/>\n\t</div>\n);\n\n/**\n * Create header selection checkbox\n */\nexport const createHeaderSelectionCheckbox = <TData,>(\n\ttable: Table<TData>,\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => (\n\t<div className=\"px-1\">\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclassName=\"size-3.5 rounded border-border text-primary accent-primary focus-visible:ring-ring focus-visible:ring-offset-1 cursor-pointer\"\n\t\t\tchecked={table.getIsAllPageRowsSelected()}\n\t\t\tonChange={table.getToggleAllPageRowsSelectedHandler()}\n\t\t\taria-label={strings.selection.selectAll}\n\t\t/>\n\t</div>\n);\n\n/**\n * Add selection column to columns\n */\nexport const addSelectionColumn = <TData, TValue = unknown>(\n\tcolumns: ColumnDef<TData, TValue>[],\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => {\n\tconst selectionColumn = {\n\t\tid: 'selection',\n\t\theader: ({ table }: { table: Table<TData> }) =>\n\t\t\tcreateHeaderSelectionCheckbox(table, strings),\n\t\tcell: ({ row }: { row: Row<TData> }) => createRowSelectionCheckbox(row, strings),\n\t\tenableSorting: false,\n\t\tenableResizing: false,\n\t\tsize: 40,\n\t} as ColumnDef<TData, TValue>;\n\n\treturn [selectionColumn, ...columns];\n};\n","/**\n * DataTableBody — body rows, selection highlighting, hover, empty state,\n * and (optional) loading skeleton. Stronger hover + selection contrast than\n * the original implementation so rows feel interactive at a glance.\n */\nimport { flexRender } from '@tanstack/react-table';\nimport { TableBody, TableCell, TableRow } from '@/components/ui/table';\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\nimport {\n\tgetCellClassName,\n\tgetRowClassName,\n} from './table-helpers';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableBodyProps } from './table.types';\n\nexport function DataTableBody<TData>({\n\ttable,\n\tonRowClick,\n\temptyStateMessage,\n\temptyStateAction,\n\tcellClassName = '',\n\trowClassName = '',\n\tstickyFirstColumn = false,\n\tstriped = false,\n\tdense = false,\n\tstrings,\n}: DataTableBodyProps<TData>) {\n\tconst tableRows = table.getRowModel().rows;\n\tconst resolvedEmptyStateMessage =\n\t\temptyStateMessage ??\n\t\tstrings?.emptyState.message ??\n\t\tdefaultDataTableStrings.emptyState.message;\n\n\tconst handleRowClick = (row: TData) => {\n\t\tif (onRowClick) {\n\t\t\tonRowClick(row);\n\t\t}\n\t};\n\n\tif (!tableRows.length) {\n\t\treturn (\n\t\t\t<TableBody className=\"table-body--component\">\n\t\t\t\t<TableRow className=\"hover:bg-transparent\">\n\t\t\t\t\t<TableCell\n\t\t\t\t\t\tclassName=\"h-24 text-center\"\n\t\t\t\t\t\tcolSpan={table.getAllColumns().length}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-12 space-y-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-center size-10 rounded-full bg-muted mb-1\">\n\t\t\t\t\t\t\t\t<svg className=\"size-5 text-muted-foreground/60\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\">\n\t\t\t\t\t\t\t\t\t<path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25-2.25M12 13.875V7.5M3.75 7.5h16.5\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{resolvedEmptyStateMessage}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!emptyStateAction && (\n\t\t\t\t\t\t\t\t<div className=\"mt-1\">{emptyStateAction}</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t</TableBody>\n\t\t);\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t{tableRows.map((row, rowIndex) => {\n\t\t\t\tconst isRowSelected = row.getIsSelected();\n\t\t\t\tconst rowCells = row.getVisibleCells();\n\t\t\t\tconst computedRowClassName = getRowClassName(\n\t\t\t\t\trow,\n\t\t\t\t\trowIndex,\n\t\t\t\t\trowClassName,\n\t\t\t\t\tisRowSelected,\n\t\t\t\t);\n\t\t\t\tconst handleRowSelection = () => {\n\t\t\t\t\tif (onRowClick) {\n\t\t\t\t\t\thandleRowClick(row.original);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst zebraClass = striped && rowIndex % 2 !== 0 ? 'bg-muted/30' : '';\n\t\t\t\tconst cursorClass = onRowClick ? 'cursor-pointer' : '';\n\t\t\t\tconst rowClasses = cn(\n\t\t\t\t\tcomputedRowClassName,\n\t\t\t\t\tzebraClass,\n\t\t\t\t\t'transition-colors duration-100',\n\t\t\t\t\t'hover:bg-accent/40 data-[state=selected]:bg-primary/5 data-[state=selected]:hover:bg-primary/10',\n\t\t\t\t\tcursorClass,\n\t\t\t\t\t'border-b border-border last:border-b-0',\n\t\t\t\t);\n\t\t\t\tconst rowState = isRowSelected ? 'selected' : null;\n\n\t\t\t\treturn (\n\t\t\t\t\t<TableRow\n\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\tdata-state={rowState}\n\t\t\t\t\t\tclassName={rowClasses}\n\t\t\t\t\t\tonClick={handleRowSelection}\n\t\t\t\t\t>\n\t\t\t\t\t\t{rowCells.map((cell, cellIndex) => (\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\tgetCellClassName(\n\t\t\t\t\t\t\t\t\t\tcell.column.id,\n\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\tcellClassName,\n\t\t\t\t\t\t\t\t\t\tstickyFirstColumn,\n\t\t\t\t\t\t\t\t\t\tcellIndex === 0,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t'first:pl-5 last:pr-5',\n\t\t\t\t\t\t\t\t\tdense && 'py-1.5 px-2 first:pl-3 last:pr-3 text-xxs leading-3',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\n\t\t\t\t\t\t\t\t\tcell.getContext(),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t);\n\t\t\t})}\n\t\t</TableBody>\n\t);\n}\n\nDataTableBody.displayName = 'DataTableBody';\n","/**\n * DataTableHeader — column-group row, primary header row, sort indicators,\n * and (optionally) resize handles. Sortable columns render as a button with\n * an inline up / down / both arrow icon driven by TanStack `column.getIsSorted()`.\n */\nimport { flexRender } from '@tanstack/react-table';\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from 'lucide-react';\nimport React from 'react';\nimport { TableHead, TableHeader, TableRow } from '@/components/ui/table';\nimport { cn } from '@/lib/utils';\nimport { getCellClassName } from './table-helpers';\nimport { type DataTableHeaderProps } from './table.types';\n\nexport function DataTableHeader<TData>(\n\t{\n\t\ttable,\n\t\tenableResizing = false,\n\t\tstickyHeader = false,\n\t\theaderClassName = '',\n\t\tcellClassName = '',\n\t\tstickyFirstColumn = false,\n\t\tcolumnGroups,\n\t\tdense = false,\n\t\theaderTransparent = false,\n\t}: DataTableHeaderProps<TData>) {\n\n\tconst headerGroups = table.getHeaderGroups();\n\n\tconst getColumnGroup = (columnId: string) => {\n\t\tif (!columnGroups) return null;\n\t\treturn columnGroups.find(group => group.columns.includes(columnId));\n\t};\n\n\tconst renderGroupHeaderRow = () => {\n\t\tif (!columnGroups || columnGroups.length === 0 || headerGroups.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst headers = headerGroups[0].headers;\n\t\tlet currentGroup: string | null = null;\n\t\tlet groupSpan = 0;\n\t\tconst groupCells: React.ReactNode[] = [];\n\n\t\theaders.forEach((header, index) => {\n\t\t\tconst group = getColumnGroup(header.id);\n\t\t\tconst groupName = group?.header || '';\n\n\t\t\tif (groupName !== currentGroup) {\n\t\t\t\tif (currentGroup !== null && groupSpan > 0) {\n\t\t\t\t\tgroupCells.push(\n\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\tkey={`group-${currentGroup}-${groupCells.length}`}\n\t\t\t\t\t\t\tcolSpan={groupSpan}\n\t\t\t\t\t\t\tclassName=\"text-center border-r border-border/60 last:border-r-0 px-3 py-2 text-xxs font-bold uppercase tracking-widest text-muted-foreground/70 bg-muted/40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentGroup || ''}\n\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcurrentGroup = groupName;\n\t\t\t\tgroupSpan = 1;\n\t\t\t} else {\n\t\t\t\tgroupSpan++;\n\t\t\t}\n\n\t\t\tif (index === headers.length - 1 && groupSpan > 0) {\n\t\t\t\tgroupCells.push(\n\t\t\t\t\t<TableHead\n\t\t\t\t\t\tkey={`group-${currentGroup}-${groupCells.length}`}\n\t\t\t\t\t\tcolSpan={groupSpan}\n\t\t\t\t\t\tclassName=\"text-center border-r border-border/60 last:border-r-0 px-3 py-2 text-xxs font-bold uppercase tracking-widest text-muted-foreground/70 bg-muted/40 whitespace-nowrap\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{currentGroup || ''}\n\t\t\t\t\t</TableHead>\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<TableRow className={cn('table-header--component', 'border-b border-border')}>\n\t\t\t\t{groupCells}\n\t\t\t</TableRow>\n\t\t);\n\t};\n\n\treturn (\n\t\t<TableHeader\n\t\t\tclassName={cn(\n\t\t\t\tstickyHeader &&\n\t\t\t\t\t(headerTransparent\n\t\t\t\t\t\t? 'sticky top-[var(--topbar-height)] z-10 bg-background/80 backdrop-blur-md shadow-[0_1px_0_0_var(--border)]'\n\t\t\t\t\t\t: 'sticky top-[var(--topbar-height)] z-10 bg-muted backdrop-blur-md shadow-[0_1px_0_0_var(--border)]'),\n\t\t\t\theaderClassName,\n\t\t\t)}\n\t\t>\n\t\t\t{renderGroupHeaderRow()}\n\t\t\t{headerGroups.map((headerGroup) => (\n\t\t\t\t<TableRow\n\t\t\t\t\tkey={headerGroup.id}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'border-b border-border',\n\t\t\t\t\t\theaderTransparent\n\t\t\t\t\t\t\t? 'bg-transparent hover:bg-transparent'\n\t\t\t\t\t\t\t: 'bg-muted hover:bg-muted',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{headerGroup.headers.map((header, index) => {\n\t\t\t\t\t\tconst cellClasses = cn(\n\t\t\t\t\t\t\tgetCellClassName(\n\t\t\t\t\t\t\t\theader.id,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tcellClassName,\n\t\t\t\t\t\t\t\tstickyFirstColumn,\n\t\t\t\t\t\t\t\tindex === 0,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'first:pl-5 last:pr-5',\n\t\t\t\t\t\t\tdense && 'px-2 py-1.5 first:pl-3 last:pr-3 text-xxs',\n\t\t\t\t\t\t\t'text-muted-foreground font-medium uppercase tracking-wider whitespace-nowrap',\n\t\t\t\t\t\t\t'bg-transparent',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst headerStyle = enableResizing\n\t\t\t\t\t\t\t? { position: 'relative' as const }\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tconst resizeHandler = header.getResizeHandler();\n\t\t\t\t\t\tconst isResizing = header.column.getIsResizing();\n\t\t\t\t\t\tconst columnLabel = (() => {\n\t\t\t\t\t\t\tconst rawHeader = header.column.columnDef.header;\n\t\t\t\t\t\t\tif (typeof rawHeader === 'string') {\n\t\t\t\t\t\t\t\treturn rawHeader;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn typeof header.id === 'string' ? header.id : 'column';\n\t\t\t\t\t\t})();\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\tclassName={cellClasses}\n\t\t\t\t\t\t\t\tstyle={headerStyle}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst canSort = header.column.getCanSort();\n\t\t\t\t\t\t\t\t\t\t\tconst sortDir = header.column.getIsSorted();\n\t\t\t\t\t\t\t\t\t\t\tconst headerNode = flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst SortIcon =\n\t\t\t\t\t\t\t\t\t\t\t\tsortDir === 'asc'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? ArrowUp\n\t\t\t\t\t\t\t\t\t\t\t\t\t: sortDir === 'desc'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ArrowDown\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ChevronsUpDown;\n\t\t\t\t\t\t\t\t\t\t\tif (!canSort) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn <div className=\"flex items-center\">{headerNode}</div>;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={header.column.getToggleSortingHandler()}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'group inline-flex items-center gap-1.5 select-none -ml-1 px-1 rounded',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'hover:text-foreground transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDir && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Sort ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{headerNode}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SortIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-3 shrink-0 transition-opacity',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDir\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'opacity-100'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'opacity-30 group-hover:opacity-70',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})()}\n\n\t\t\t\t\t\t\t\t\t\t{!!enableResizing && (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'absolute top-0 right-0 h-full w-1 cursor-col-resize select-none touch-none bg-foreground bg-opacity-50 opacity-0 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none',\n\t\t\t\t\t\t\t\t\t\t\t\t\tisResizing &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'!bg-primary-600 bg-opacity-100',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Resize ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={resizeHandler}\n\t\t\t\t\t\t\t\t\t\t\t\tonTouchStart={resizeHandler}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</TableRow>\n\t\t\t))}\n\t\t</TableHeader>\n\t);\n}\n\nDataTableHeader.displayName = 'DataTableHeader';\n","import { ChevronLeft, ChevronRight, Columns3, Maximize2, Minimize2 } from 'lucide-react';\nimport type { Column } from '@tanstack/react-table';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableToolbarProps } from './table.types';\n\nconst SCROLL_AMOUNT = 300;\n\nconst btnBase = 'inline-flex items-center justify-center h-7 w-7 rounded-none text-muted-foreground/70 hover:bg-muted hover:text-foreground transition-colors duration-150 disabled:opacity-30 disabled:pointer-events-none';\n\ninterface ToolbarIconButtonProps {\n label: string;\n onClick: () => void;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nfunction ToolbarIconButton({ label, onClick, disabled, className, children }: ToolbarIconButtonProps) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n className={cn('table-toolbar--component', btnBase, className)}\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\n}\n\n/**\n * Finds the actual horizontally-scrollable element inside the table area.\n * The Table primitive renders: <div data-slot=\"table-container\" class=\"overflow-x-auto\">\n */\nfunction getScrollContainer(tableArea: HTMLDivElement | null): HTMLDivElement | null {\n if (!tableArea) return null;\n return tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport function DataTableToolbar<TData>({\n table,\n tableAreaRef,\n dense,\n onDenseChange,\n enableColumnVisibility = false,\n strings = defaultDataTableStrings,\n}: DataTableToolbarProps<TData>) {\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const rafRef = useRef(0);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n // --- Scroll overflow detection ---\n const checkOverflow = useCallback(() => {\n const el = getScrollContainer(tableAreaRef.current);\n if (!el) {\n setCanScrollLeft(false);\n setCanScrollRight(false);\n return;\n }\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, [tableAreaRef]);\n\n useEffect(() => {\n // Defer slightly to ensure the Table primitive has rendered its container\n const timerId = window.setTimeout(() => {\n const el = getScrollContainer(tableAreaRef.current);\n if (!el) return;\n\n // Initial check\n checkOverflow();\n\n const handleScroll = () => {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(checkOverflow);\n };\n\n el.addEventListener('scroll', handleScroll, { passive: true });\n\n // ResizeObserver to detect when table width changes\n const ro = new ResizeObserver(checkOverflow);\n ro.observe(el);\n if (el.firstElementChild) {\n ro.observe(el.firstElementChild);\n }\n\n // Store cleanup references\n cleanupRef.current = () => {\n el.removeEventListener('scroll', handleScroll);\n cancelAnimationFrame(rafRef.current);\n ro.disconnect();\n };\n }, 0);\n\n return () => {\n window.clearTimeout(timerId);\n cleanupRef.current?.();\n };\n // Re-run when dense mode changes (layout shift can affect overflow)\n\n }, [tableAreaRef, checkOverflow, dense]);\n\n // --- Scroll handlers ---\n const handleScrollLeft = useCallback(() => {\n getScrollContainer(tableAreaRef.current)?.scrollBy({ left: -SCROLL_AMOUNT, behavior: 'smooth' });\n }, [tableAreaRef]);\n\n const handleScrollRight = useCallback(() => {\n getScrollContainer(tableAreaRef.current)?.scrollBy({ left: SCROLL_AMOUNT, behavior: 'smooth' });\n }, [tableAreaRef]);\n\n // --- Dense toggle ---\n const handleDenseToggle = useCallback(() => {\n onDenseChange(!dense);\n }, [dense, onDenseChange]);\n\n // --- Column visibility ---\n const columns = enableColumnVisibility\n ? table.getAllColumns().filter((column) => column.getCanHide())\n : [];\n\n const hasScrollArrows = canScrollLeft || canScrollRight;\n const hasColumns = enableColumnVisibility && columns.length > 0;\n const denseToggleLabel = dense\n ? strings.toolbar.comfortable\n : strings.toolbar.dense;\n\n return (\n <div className=\"flex items-center rounded-md border border-border bg-card\">\n {/* Scroll arrows - only rendered when overflow exists */}\n {!!hasScrollArrows && (\n <>\n <ToolbarIconButton\n label={strings.toolbar.scrollLeft}\n onClick={handleScrollLeft}\n disabled={!canScrollLeft}\n className=\"rounded-l-[calc(theme(borderRadius.md)-1px)]\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </ToolbarIconButton>\n <ToolbarIconButton\n label={strings.toolbar.scrollRight}\n onClick={handleScrollRight}\n disabled={!canScrollRight}\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </ToolbarIconButton>\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Column visibility dropdown */}\n {!!hasColumns && (\n <>\n <ColumnVisibilityDropdown\n columns={columns}\n strings={strings}\n roundLeft={!hasScrollArrows}\n />\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Dense/compact toggle */}\n <ToolbarIconButton\n label={denseToggleLabel}\n onClick={handleDenseToggle}\n className={cn(\n 'rounded-r-[calc(theme(borderRadius.md)-1px)]',\n !hasScrollArrows && !hasColumns && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\n >\n {dense\n ? <Maximize2 className=\"h-3.5 w-3.5\" />\n : <Minimize2 className=\"h-3.5 w-3.5\" />\n }\n </ToolbarIconButton>\n </div>\n );\n}\n\n/** Extracted dropdown to keep the parent component clean */\nfunction ColumnVisibilityDropdown<TData>({\n columns,\n strings,\n roundLeft,\n}: {\n columns: Array<Column<TData, unknown>>;\n strings: NonNullable<DataTableToolbarProps<TData>['strings']>;\n roundLeft: boolean;\n}) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <button\n {...triggerProps}\n type=\"button\"\n aria-label={strings.toolbar.columns}\n className={cn(\n btnBase,\n (triggerProps as Record<string, unknown>).className as string,\n roundLeft && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\n >\n <Columns3 className=\"h-3.5 w-3.5\" />\n </button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n <DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n const header = column.columnDef.header;\n const columnName = strings.columnVisibility.formatLabel(\n column.id,\n typeof header === 'string' ? header : undefined,\n );\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(checked) => column.toggleVisibility(!!checked)}\n >\n {columnName}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nDataTableToolbar.displayName = 'DataTableToolbar';\n","/**\n * DataTable — TanStack-powered data table with sorting, row selection, column\n * visibility, server-side pagination, dense mode, sticky header / first column,\n * and pluggable row actions (menu / inline / responsive).\n *\n * Strings are overridable through the `strings` prop and a default set in\n * `./table.strings`. Column visibility and dense mode persist to localStorage\n * when a `storageKey` is provided.\n *\n * Use the cell renderers exported from `./partials/cell-renderers`\n * (`StatusCell`, `DateCell`, `CurrencyCell`, `AvatarCell`) for visually\n * consistent cells across pages.\n */\nimport {\n\tgetCoreRowModel,\n\tuseReactTable,\n\ttype SortingState,\n\ttype VisibilityState,\n\ttype Updater,\n\ttype ColumnDef,\n\ttype RowSelectionState,\n} from '@tanstack/react-table';\nimport { createContext, useContext, useState, useMemo, useCallback, useRef } from 'react';\nimport { Table } from '@/components/ui/table';\nimport { useTableConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\n/**\n * Context exposing the current `<DataTable size>` to descendant cell renderers\n * so consumer-built cells can stay typographically aligned with the table\n * (instead of hardcoding `<Text>` and breaking the unification the\n * `size` prop is supposed to give).\n *\n * Use it from custom cells:\n * const size = useDataTableSize();\n * return <Text className=\"data-table--component\" size={size}>{value}</Text>;\n *\n * The built-in renderers in `partials/cell-renderers` consume this hook.\n */\nconst DataTableSizeContext = createContext<'xs' | 'sm' | 'base'>('xs');\n\nexport function useDataTableSize(): 'xs' | 'sm' | 'base' {\n\treturn useContext(DataTableSizeContext);\n}\nimport { Pagination } from './pagination';\nimport { DataTableActions } from './table-actions';\nimport { DataTableBody } from './table-body';\nimport { DataTableHeader } from './table-header';\nimport { DataTableToolbar } from './table-toolbar';\nimport { addSelectionColumn, handleSortingChange, handleColumnVisibilityChange } from './table-helpers';\nimport { mergeDataTableStrings } from './table.strings';\nimport { type DataTableProps } from './table.types';\nimport { Separator } from '@/components/base/display/separator';\n\n// Class applied to the `<table>` element.\n//\n// Body cells get an explicit `[&_td]:text-{size}` so deeply nested\n// elements that use `<Text size=\"inherit\">` (or any plain `<span>`)\n// inherit the right font-size from the cell rather than relying on\n// the table-level inheritance chain (which breaks the moment any\n// descendant has its own text-size class).\n//\n// Header cells stay at `text-xxs` regardless of body density — the\n// canonical admin pattern is \"tiny uppercase eyebrow header,\n// variable body density.\" A consumer who wants matched header sizing\n// can override via `headerClassName`.\nconst sizeClassByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, string> = {\n\txs: '[&_th]:text-xxs [&_td]:text-xs [&_th]:py-1.5 [&_td]:py-1.5 [&_th]:px-2 [&_td]:px-2 [&_th]:h-8',\n\tsm: '[&_th]:text-xxs [&_td]:text-sm [&_th]:py-2 [&_td]:py-2 [&_th]:px-2.5 [&_td]:px-2.5 [&_th]:h-10',\n\tbase: '[&_th]:text-xs [&_td]:text-base [&_th]:py-3 [&_td]:py-3 [&_th]:px-3 [&_td]:px-3 [&_th]:h-12',\n};\n\nexport function DataTable<TData extends object, TValue = unknown>({\n\tsize,\n\tsurface = 'card',\n\theaderTransparent = false,\n\tcolumns,\n\tdata,\n\tcolumnGroups,\n\trowActions,\n\trowActionsMenuLabel,\n\trowActionsDisplayMode,\n\trowActionsBreakpoint,\n\tenableSorting = false,\n\tmanualSorting = false,\n\tenableColumnVisibility = false,\n\tenableRowSelection = false,\n\tenableMultiRowSelection = true,\n\tenableSubRowSelection = false,\n\tpagination,\n\tpageQueryKey,\n\tonPageChange,\n\tonSort,\n\tonRowClick,\n\tonRowSelectionChange,\n\tstickyHeader = false,\n\tstickyFirstColumn = false,\n\temptyStateMessage,\n\temptyStateAction,\n\tclassName = '',\n\trowClassName = '',\n\tcellClassName = '',\n\theaderClassName = '',\n\twrapperClassName = '',\n\tinnerClassName = 'overflow-hidden',\n\ttableContainerClassName = '',\n\tgetRowId,\n\trowSelection: controlledRowSelection,\n\tinitialState,\n\tonColumnVisibilityChange,\n\tstrings: stringsOverride,\n\ttopbarContent,\n\tstorageKey,\n}: DataTableProps<TData, TValue>) {\n\tconst { defaultSize } = useTableConfig();\n\tconst resolvedSize: NonNullable<DataTableProps<TData, TValue>['size']> =\n\t\tsize ?? defaultSize ?? 'xs';\n\n\tconst strings = useMemo(\n\t\t() => mergeDataTableStrings(stringsOverride),\n\t\t[stringsOverride],\n\t);\n\n\tconst tableRowClasses = cn('bg-card', rowClassName)\n\tconst resolvedEmptyStateMessage = emptyStateMessage ?? strings.emptyState.message;\n\tconst resolvedRowActionsMenuLabel =\n\t\trowActionsMenuLabel ?? strings.actions.triggerLabel;\n\tconst resolvedPageQueryKey = pageQueryKey ?? 'page';\n\n\t\t// --- Detect and resolve tuple pattern for columns ---\n\t\tconst resolvedColumns = (() => {\n\t\t\t// Tuple pattern detected: [columns, deps]\n\t\t\tif (Array.isArray(columns) && columns.length === 2 && Array.isArray(columns[1])) {\n\t\t\t\treturn columns[0] as ColumnDef<TData, TValue>[];\n\t\t\t}\n\n\t\t\t// Regular pattern: just columns array\n\t\t\treturn columns as ColumnDef<TData, TValue>[];\n\t\t})();\n\n\t// --- Format storage key internally ---\n\tconst formattedStorageKey = useMemo(() => {\n\t\treturn storageKey ? `dt.${storageKey}.columns` : null;\n\t}, [storageKey]);\n\n\t// --- Dense mode storage key ---\n\tconst denseStorageKey = useMemo(() => {\n\t\treturn storageKey ? `dt.${storageKey}.dense` : null;\n\t}, [storageKey]);\n\n\t// --- Load initial column visibility from localStorage if persistence enabled ---\n\tconst initialColumnVisibility = useMemo<VisibilityState>(() => {\n\t\t// If persistence is disabled or we're in SSR, use initialState or empty object\n\t\tif (!formattedStorageKey || typeof window === 'undefined') {\n\t\t\treturn initialState?.columnVisibility || {};\n\t\t}\n\n\t\ttry {\n\t\t\tconst stored = window.localStorage.getItem(formattedStorageKey);\n\t\t\tconst parsed = stored ? (JSON.parse(stored) as VisibilityState) : {};\n\t\t\t// Merge with initialState if provided\n\t\t\treturn { ...parsed, ...(initialState?.columnVisibility || {}) };\n\t\t} catch {\n\t\t\t// If parsing fails, fall back to initialState\n\t\t\treturn initialState?.columnVisibility || {};\n\t\t}\n\t}, [formattedStorageKey, initialState?.columnVisibility]);\n\n\t// --- Load initial dense mode from localStorage ---\n\tconst initialDense = useMemo(() => {\n\t\tif (!denseStorageKey || typeof window === 'undefined') return false;\n\t\ttry {\n\t\t\treturn window.localStorage.getItem(denseStorageKey) === '1';\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, [denseStorageKey]);\n\n\t// --- State for sorting, visibility, and dense mode ---\n\tconst [sorting, setSorting] = useState<SortingState>(initialState?.sorting || []);\n\tconst [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n\t\tinitialColumnVisibility,\n\t);\n\tconst [internalRowSelection, setInternalRowSelection] = useState<RowSelectionState>(\n\t\tinitialState?.rowSelection || {},\n\t);\n\tconst [dense, setDense] = useState(initialDense);\n\tconst rowSelection = controlledRowSelection ?? internalRowSelection;\n\n\t// --- Refs ---\n\tconst tableAreaRef = useRef<HTMLDivElement>(null);\n\n\t// --- Callbacks ---\n\tconst handleSortingChangeCallback = useCallback(\n\t\t(updater: Updater<SortingState>) => {\n\t\t\thandleSortingChange(updater, setSorting, onSort);\n\t\t},\n\t\t[onSort],\n\t);\n\n\tconst handleVisibilityChangeCallback = useCallback(\n\t\t(updater: Updater<VisibilityState>) => {\n\t\t\thandleColumnVisibilityChange(\n\t\t\t\tupdater,\n\t\t\t\tsetColumnVisibility,\n\t\t\t\t(newState) => {\n\t\t\t\t\t// Persist to localStorage if enabled\n\t\t\t\t\tif (formattedStorageKey && typeof window !== 'undefined') {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t\tformattedStorageKey,\n\t\t\t\t\t\t\t\tJSON.stringify(newState),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Silent fail - quota exceeded or other localStorage errors\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call user-provided handler\n\t\t\t\t\tif (onColumnVisibilityChange) {\n\t\t\t\t\t\tonColumnVisibilityChange(newState);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t},\n\t\t[formattedStorageKey, onColumnVisibilityChange],\n\t);\n\n\tconst handleRowSelectionChangeCallback = useCallback(\n\t\t(updater: Updater<RowSelectionState>) => {\n\t\t\tconst nextRowSelection =\n\t\t\t\ttypeof updater === 'function' ? updater(rowSelection) : updater;\n\n\t\t\tif (controlledRowSelection === undefined) {\n\t\t\t\tsetInternalRowSelection(nextRowSelection);\n\t\t\t}\n\n\t\t\tonRowSelectionChange?.(nextRowSelection);\n\t\t},\n\t\t[controlledRowSelection, onRowSelectionChange, rowSelection],\n\t);\n\n\tconst handleDenseChange = useCallback(\n\t\t(value: boolean) => {\n\t\t\tsetDense(value);\n\t\t\tif (denseStorageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(denseStorageKey, value ? '1' : '0');\n\t\t\t\t} catch {\n\t\t\t\t\t// Silent fail\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[denseStorageKey],\n\t);\n\n\tconst columnsWithActions = useMemo<ColumnDef<TData, TValue>[]>(() => {\n\t\tconst baseColumns = enableRowSelection\n\t\t\t? addSelectionColumn<TData, TValue>(resolvedColumns, strings)\n\t\t\t: resolvedColumns;\n\n\t\t// if no actions, leave cols untouched\n\t\tif (!rowActions) {\n\t\t\treturn baseColumns;\n\t\t}\n\n\t\t// otherwise append a fixed Actions column:\n\t\tconst actionCol: ColumnDef<TData, TValue> = {\n\t\t\tid: 'actions',\n\t\t\theader: strings.actions.triggerLabel,\n\t\t\t// NOTE: just hand `rowActions` array, not a call\n\t\t\tcell: ({ row }: { row: { original: TData } }) => (\n\t\t\t\t<DataTableActions\n\t\t\t\t\trow={row.original}\n\t\t\t\t\tactions={rowActions}\n\t\t\t\t\tmenuLabel={resolvedRowActionsMenuLabel}\n\t\t\t\t\tdisplayMode={rowActionsDisplayMode}\n\t\t\t\t\tresponsiveBreakpoint={rowActionsBreakpoint}\n\t\t\t\t\tstrings={strings}\n\t\t\t\t/>\n\t\t\t),\n\t\t\tenableSorting: false,\n\t\t\tenableHiding: false,\n\t\t\tsize: 40,\n\t\t};\n\n\t\treturn [...baseColumns, actionCol];\n\t}, [\n\t\tresolvedColumns,\n\t\tenableRowSelection,\n\t\trowActions,\n\t\tresolvedRowActionsMenuLabel,\n\t\trowActionsBreakpoint,\n\t\trowActionsDisplayMode,\n\t\tstrings,\n\t]);\n\n\t// --- Configure table ---\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns: columnsWithActions,\n\t\tstate: { sorting, columnVisibility, rowSelection },\n\t\tenableSorting,\n\t\tmanualSorting,\n\t\tenableRowSelection,\n\t\tenableMultiRowSelection,\n\t\tenableSubRowSelection,\n\t\tonSortingChange:\n\t\t\tenableSorting && manualSorting ? handleSortingChangeCallback : undefined,\n\t\tonRowSelectionChange:\n\t\t\tenableRowSelection ? handleRowSelectionChangeCallback : undefined,\n\t\tonColumnVisibilityChange: handleVisibilityChangeCallback,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetRowId,\n\t});\n\n\t// --- Determine server pagination ---\n\tconst shouldShow = pagination && pagination.last_page > 1;\n\n\tconst Provider = DataTableSizeContext.Provider;\n\n\treturn (\n\t\t<Provider value={resolvedSize}>\n\t\t<div className={cn(\n\t\t\tdense\n\t\t\t\t? 'fixed inset-0 z-50 bg-background flex flex-col overflow-hidden p-6'\n\t\t\t\t: cn(\n\t\t\t\t\t'w-full',\n\t\t\t\t\tsurface === 'card' &&\n\t\t\t\t\t\t'rounded-xl overflow-hidden border border-border bg-card shadow-[0_1px_3px_0_rgb(0_0_0/0.04)]',\n\t\t\t\t\tsurface === 'glass' &&\n\t\t\t\t\t\t'rounded-md overflow-hidden border border-border/60',\n\t\t\t\t\t// `flat` renders no chrome — consumer wraps.\n\t\t\t\t\twrapperClassName,\n\t\t\t\t),\n\t\t)}>\n\t\t\t{!!(topbarContent || enableColumnVisibility) && (\n\t\t\t\t<div className=\"relative\">\n\n <div className={cn(\n 'data-table-topbar flex items-end justify-between gap-4 px-5 py-3.5',\n dense ? 'mb-3 shrink-0' : 'mb-0',\n )}>\n <div className=\"data-table-topbar-left flex-1\">{topbarContent}</div>\n <div className=\"data-table-topbar-right flex items-center justify-end\">\n <DataTableToolbar\n table={table}\n tableAreaRef={tableAreaRef}\n dense={dense}\n onDenseChange={handleDenseChange}\n enableColumnVisibility={enableColumnVisibility}\n strings={strings}\n />\n </div>\n\n </div>\n <Separator />\n </div>\n\t\t\t)}\n\n\n\t\t\t<div\n\t\t\t\tref={tableAreaRef}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'',\n\t\t\t\t\tdense ? 'flex-1 overflow-auto min-h-0' : innerClassName,\n\t\t\t\t)}\n\t\t\t>\n\n\t\t\t\t<Table className={cn(\n\t\t\t\t\t'relative',\n\t\t\t\t\tsizeClassByDataTableSize[resolvedSize],\n\t\t\t\t\tclassName,\n\t\t\t\t)} containerClassName={tableContainerClassName}>\n\t\t\t\t\t<DataTableHeader\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tstickyHeader={stickyHeader}\n\t\t\t\t\t\theaderClassName={headerClassName}\n\t\t\t\t\t\tcellClassName={cellClassName}\n\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\tcolumnGroups={columnGroups}\n\t\t\t\t\t\tdense={dense}\n\t\t\t\t\t\theaderTransparent={headerTransparent}\n\t\t\t\t\t/>\n\t\t\t\t\t<DataTableBody\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t\temptyStateMessage={resolvedEmptyStateMessage}\n\t\t\t\t\t\temptyStateAction={emptyStateAction}\n\t\t\t\t\t\tcellClassName={cellClassName}\n\t\t\t\t\t\trowClassName={tableRowClasses}\n\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\tdense={dense}\n\t\t\t\t\t/>\n\t\t\t\t</Table>\n\t\t\t</div>\n\t\t\t{!!shouldShow && (\n\t\t\t\t<>\n <Separator />\n <Pagination\n pagination={pagination}\n onPageChange={onPageChange}\n pageQueryKey={resolvedPageQueryKey}\n labels={strings.pagination}\n />\n </>\n\t\t\t)}\n\t\t</div>\n\t\t</Provider>\n\t);\n}\n\nDataTable.displayName = 'DataTable';\n","import { Button } from '@/components/base/buttons';\nimport { Input } from '@/components/base/forms/fields';\nimport {\n\tDropdownMenu,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuLabel,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableFilterBarProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\nexport function DataTableFilterBar<TData>({\n\t\t\t\t\t\t\t\t\t\t\t table,\n\t\t\t\t\t\t\t\t\t\t\t filterColumn,\n\t\t\t\t\t\t\t\t\t\t\t filterPlaceholder,\n\t\t\t\t\t\t\t\t\t\t\t enableColumnVisibility = false,\n\t\t\t\t\t\t\t\t\t\t\t customContent,\n\t\t\t\t\t\t\t\t\t\t strings = defaultDataTableStrings,\n\t\t\t\t\t\t\t\t\t }: DataTableFilterBarProps<TData>) {\n\tif (!filterColumn && !enableColumnVisibility && !customContent) {\n\t\treturn null;\n\t}\n\n\tconst searchPlaceholder = filterPlaceholder ?? strings.filter.searchPlaceholder;\n\n\treturn (\n\t\t<div className={cn('filter-bar--component', 'flex items-center justify-between p-4')}>\n\t\t\t<div className=\"flex flex-1 items-center space-x-2\">\n\t\t\t\t{/* Filter input */}\n\t\t\t\t{!!filterColumn && (\n\t <Input\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={(table.getColumn(filterColumn)?.getFilterValue() as string) ?? ''}\n\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\tconst value = event.target.value;\n\t\t\t\t\t\t\ttable.getColumn(filterColumn)?.setFilterValue(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"max-w-sm\"\n\t\t\t\t\t/>\n\t )}\n\n\t\t\t\t{/* Custom content */}\n\t\t\t\t{customContent}\n\t\t\t</div>\n\n\t\t\t{/* Column visibility toggle */}\n\t\t\t\t{!!enableColumnVisibility && (\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\t\t\tclassName=\"ml-auto\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{strings.columnVisibility.triggerLabel}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t\t\t<DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n\t\t\t\t\t\t\t{table\n\t\t\t\t\t\t\t\t.getAllColumns()\n\t\t\t\t\t\t\t\t.filter((column) => column.getCanHide())\n\t\t\t\t\t\t\t\t.map((column) => {\n\t\t\t\t\t\t\t\t\tconst header = column.columnDef.header;\n\t\t\t\t\t\t\t\t\tconst columnName = strings.columnVisibility.formatLabel(\n\t\t\t\t\t\t\t\t\t\tcolumn.id,\n\t\t\t\t\t\t\t\t\t\ttypeof header === 'string' ? header : undefined,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\t\t\t\tkey={column.id}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"capitalize\"\n\t\t\t\t\t\t\t\t\t\t\tchecked={column.getIsVisible()}\n\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked) =>\n\t\t\t\t\t\t\t\t\t\t\t\tcolumn.toggleVisibility(!!checked)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{columnName}\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t</div>\n\t);\n}\n\nDataTableFilterBar.displayName = 'DataTableFilterBar';\n","import { Button } from '@/components/base/buttons';\nimport Text from '@/components/typography/text';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTablePaginationProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\nexport function DataTablePagination({ table, selectedRowCount, totalRowCount, strings = defaultDataTableStrings }: DataTablePaginationProps) {\n // Use provided counts or get from table\n const selected = selectedRowCount ?? table.getFilteredSelectedRowModel().rows.length;\n const total = totalRowCount ?? table.getFilteredRowModel().rows.length;\n const summary = strings.selection.summary(selected, total);\n\n return (\n <div className={cn('table-pagination--component', 'flex items-center justify-end space-x-2 px-4 py-4')}>\n <div className=\"flex-1\">\n <Text type=\"secondary\">\n {summary}\n </Text>\n </div>\n <Button variant=\"secondary\" buttonStyle=\"outline\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n {strings.pagination.previous}\n </Button>\n <Button variant=\"secondary\" buttonStyle=\"outline\" onClick={() => table.nextPage()} disabled={!table.getCanNextPage()}>\n {strings.pagination.next}\n </Button>\n </div>\n );\n}\n\nDataTablePagination.displayName = 'DataTablePagination';\n","import { Settings2 } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ColumnVisibilityToggleProps } from './table.types';\n\nexport function ColumnVisibilityToggle<TData>({\n table,\n className,\n align = 'end',\n strings = defaultDataTableStrings,\n}: ColumnVisibilityToggleProps<TData>) {\n const columns = table.getAllColumns()\n .filter((column) => column.getCanHide());\n\n if (columns.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...triggerProps}\n variant=\"secondary\"\n buttonStyle=\"outline\"\n className={cn(\n 'column-visibility-toggle--component',\n 'h-8 flex items-center gap-2',\n \n (triggerProps as { className?: string }).className,\n className,\n )}\n >\n { }\n {(triggerProps as { children?: React.ReactNode }).children}\n </Button>\n )}\n >\n <Settings2 className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{strings.columnVisibility.triggerLabel}</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align={align} className=\"w-[200px]\">\n <DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n const header = column.columnDef.header;\n const columnName = strings.columnVisibility.formatLabel(\n column.id,\n typeof header === 'string' ? header : undefined,\n );\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(checked) => column.toggleVisibility(!!checked)}\n >\n {columnName}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nColumnVisibilityToggle.displayName = 'ColumnVisibilityToggle';\n","import type { ReactNode } from 'react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\ninterface CellValueProps {\n /** The value to display. When falsy, renders fallback with muted styling. */\n value?: string | number | null | undefined;\n /** Text shown when value is missing. Defaults to '--'. */\n fallback?: string;\n /** Force missing state regardless of value truthiness. */\n missing?: boolean;\n /** Additional class names (e.g. 'tabular-nums', 'font-mono'). */\n className?: string;\n /** Children override — when provided, renders children directly with missing styling applied. */\n children?: ReactNode;\n}\n\n/**\n * Table cell value with automatic missing-value treatment.\n *\n * When the value is falsy (or `missing` is explicitly true), renders\n * the fallback text at reduced opacity. Otherwise renders the value\n * with inherited table cell styling.\n *\n * @example\n * // Auto-detect missing\n * <CellValue value={phone} fallback={t('shared.tables.ui.empty')} />\n *\n * // Explicit missing flag\n * <CellValue missing={!defaultBusiness} fallback={t('vendors.tables.ui.no_default_business')} />\n *\n * // With formatting class\n * <CellValue value={date} className=\"tabular-nums\" />\n *\n * // Custom children with missing styling\n * <CellValue missing={!phone}>\n * {phone || 'No items to display'}\n * </CellValue>\n */\nexport function CellValue({ value, fallback = '--', missing, className, children }: CellValueProps) {\n const isMissing = missing ?? (value === null || value === undefined || value === '');\n\n if (children !== undefined) {\n return (\n <Text\n tag=\"span\"\n size=\"inherit\"\n type={isMissing ? 'secondary' : 'main'}\n className={cn(isMissing && 'opacity-60', className)}\n >\n {children}\n </Text>\n );\n }\n\n if (isMissing) {\n return (\n <Text tag=\"span\" size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n {fallback}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"inherit\" className={className}>\n {String(value)}\n </Text>\n );\n}\n\nCellValue.displayName = 'CellValue';\n","import type { AnchorHTMLAttributes } from 'react';\n\ntype TableLinkProps = AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const TableLink = (props: TableLinkProps) => {\n\treturn (\n\t\t<a\n\t\t\tclassName=\"text-foreground underline decoration-border decoration-dotted underline-offset-2 transition-colors duration-150 hover:text-foreground hover:decoration-muted-foreground\"\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\t\t</a>\n\t);\n};\n","/**\n * Reusable cell renderers for DataTable columns.\n *\n * Use these from `column.cell` definitions to keep table preview pages and\n * production code consistent. Every renderer is presentational (no data\n * fetching) and accepts the value plus optional formatting hints.\n *\n * { accessorKey: 'status', cell: ({ getValue }) => <StatusCell value={getValue()} map={STATUS_MAP} /> }\n * { accessorKey: 'createdAt', cell: ({ getValue }) => <DateCell value={getValue()} /> }\n * { accessorKey: 'amount', cell: ({ getValue }) => <CurrencyCell value={getValue()} currency=\"USD\" /> }\n * { accessorKey: 'owner', cell: ({ getValue }) => <AvatarCell name={getValue()} /> }\n */\nimport type { ComponentType, ReactNode } from 'react';\nimport { Calendar, Mail, type LucideIcon } from 'lucide-react';\n\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\n\n// ──────────────────────────────────────────────────────────────\n// StatusCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface StatusCellEntry {\n\tlabel: ReactNode;\n\tvariant?: ComposedBadgeVariant;\n\ticon?: LucideIcon;\n\tdot?: boolean;\n}\n\nexport interface StatusCellProps<TStatus extends string> {\n\tvalue?: TStatus | null;\n\tmap: Record<TStatus, StatusCellEntry>;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nexport function StatusCell<TStatus extends string>({\n\tvalue,\n\tmap,\n\temptyLabel = EMPTY,\n\tclassName,\n}: StatusCellProps<TStatus>) {\n\tif (!value || !(value in map)) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst entry = map[value];\n\tconst Icon = entry.icon;\n\treturn (\n\t\t<Badge\n\t\t\tvariant={entry.variant ?? 'secondary'}\n\t\t\tclassName={cn('gap-1.5', className)}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-3\" />}\n\t\t\t{entry.label}\n\t\t</Badge>\n\t);\n}\n\nStatusCell.displayName = 'StatusCell';\n\n// ──────────────────────────────────────────────────────────────\n// DateCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface DateCellProps {\n\tvalue?: string | number | Date | null;\n\t/** A Intl.DateTimeFormatOptions preset. Default: short month + day + year. */\n\toptions?: Intl.DateTimeFormatOptions;\n\tlocale?: string;\n\tshowIcon?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nconst DEFAULT_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n\tmonth: 'short',\n\tday: 'numeric',\n\tyear: 'numeric',\n};\n\nexport function DateCell({\n\tvalue,\n\toptions = DEFAULT_DATE_OPTIONS,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n}: DateCellProps) {\n\tif (value === null || value === undefined || value === '') {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst date = value instanceof Date ? value : new Date(value);\n\tif (Number.isNaN(date.getTime())) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst formatter = new Intl.DateTimeFormat(locale, options);\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-1.5 tabular-nums', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"size-3.5 text-muted-foreground\" />}\n\t\t\t<Text size=\"inherit\" type=\"secondary\">\n\t\t\t\t{formatter.format(date)}\n\t\t\t</Text>\n\t\t</span>\n\t);\n}\n\nDateCell.displayName = 'DateCell';\n\n// ──────────────────────────────────────────────────────────────\n// CurrencyCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface CurrencyCellProps {\n\tvalue?: number | string | null;\n\tcurrency?: string;\n\tlocale?: string;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n\tweight?: 'regular' | 'medium' | 'semibold' | 'bold';\n}\n\nexport function CurrencyCell({\n\tvalue,\n\tcurrency,\n\tlocale,\n\temptyLabel = EMPTY,\n\tclassName,\n\tweight = 'semibold',\n}: CurrencyCellProps) {\n\tconst numeric = typeof value === 'number' ? value : Number.parseFloat(String(value ?? ''));\n\tif (!Number.isFinite(numeric)) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst formatted = currency\n\t\t? new Intl.NumberFormat(locale, {\n\t\t\t\tstyle: 'currency',\n\t\t\t\tcurrency,\n\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t}).format(numeric)\n\t\t: numeric.toFixed(2);\n\treturn (\n\t\t<Text\n\t\t\ttag=\"span\"\n\t\t\tsize=\"inherit\"\n\t\t\tweight={weight}\n\t\t\tclassName={cn('tabular-nums', className)}\n\t\t>\n\t\t\t{formatted}\n\t\t</Text>\n\t);\n}\n\nCurrencyCell.displayName = 'CurrencyCell';\n\n// ──────────────────────────────────────────────────────────────\n// AvatarCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface AvatarCellProps {\n\tname?: string | null;\n\timageUrl?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tsubtitle?: ReactNode;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nfunction getInitials(name: string): string {\n\treturn name\n\t\t.split(/\\s+/)\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.map((p) => p[0]!.toUpperCase())\n\t\t.join('');\n}\n\nexport function AvatarCell({\n\tname,\n\timageUrl,\n\ticon: IconComponent = Mail,\n\tsubtitle,\n\temptyLabel = EMPTY,\n\tclassName,\n}: AvatarCellProps) {\n\tif (!name || name.trim().length === 0) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-2', className)}>\n\t\t\t<span className=\"relative inline-flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground\">\n\t\t\t\t{imageUrl ? (\n\t\t\t\t\t<img src={imageUrl} alt={name} className=\"absolute inset-0 size-full object-cover\" />\n\t\t\t\t) : name.length > 0 ? (\n\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"leading-none\">\n\t\t\t\t\t\t{getInitials(name)}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<IconComponent className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t<span className=\"min-w-0 inline-flex flex-col\">\n\t\t\t\t<Text size=\"inherit\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{!!subtitle && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</span>\n\t);\n}\n\nAvatarCell.displayName = 'AvatarCell';\n","/**\n * Reusable hooks for DataTable consumers building custom toolbars or chrome.\n *\n * The default `DataTableToolbar` already wires these internally; expose them\n * for consumers that need horizontal-scroll arrows / dense toggle in a\n * custom layout (e.g. inside a hero banner above the table).\n */\nimport { useCallback, useEffect, useRef, useState, type RefObject } from 'react';\n\nconst SCROLL_AMOUNT_DEFAULT = 300;\n\n/**\n * Locate the actual horizontally-scrollable element inside a `tableArea`\n * wrapper. The shadcn-style Table primitive renders a\n * `<div data-slot=\"table-container\" class=\"overflow-x-auto\">` we target.\n */\nexport function getDataTableScrollContainer(\n\ttableArea: HTMLDivElement | null,\n): HTMLDivElement | null {\n\tif (!tableArea) return null;\n\treturn tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport interface UseDataTableScrollStateReturn {\n\tcanScrollLeft: boolean;\n\tcanScrollRight: boolean;\n\tscrollBy: (delta: number) => void;\n\tscrollLeft: () => void;\n\tscrollRight: () => void;\n}\n\n/**\n * Track horizontal-overflow state for a DataTable wrapper. Returns booleans\n * for whether each scroll direction is available, plus helpers to nudge the\n * scroll container by a fixed amount.\n *\n * Pass the same `RefObject<HTMLDivElement>` you pass to `<DataTable>` as\n * `tableAreaRef`.\n */\nexport function useDataTableScrollState(\n\ttableAreaRef: RefObject<HTMLDivElement | null>,\n\toptions: { stepPx?: number; deps?: ReadonlyArray<unknown> } = {},\n): UseDataTableScrollStateReturn {\n\tconst { stepPx = SCROLL_AMOUNT_DEFAULT, deps = [] } = options;\n\tconst [canScrollLeft, setCanScrollLeft] = useState(false);\n\tconst [canScrollRight, setCanScrollRight] = useState(false);\n\tconst rafRef = useRef(0);\n\n\tconst measure = useCallback(() => {\n\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\tif (!el) {\n\t\t\tsetCanScrollLeft(false);\n\t\t\tsetCanScrollRight(false);\n\t\t\treturn;\n\t\t}\n\t\tconst { scrollLeft, scrollWidth, clientWidth } = el;\n\t\tsetCanScrollLeft(scrollLeft > 1);\n\t\tsetCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n\t}, [tableAreaRef]);\n\n\tuseEffect(() => {\n\t\tconst timerId = window.setTimeout(() => {\n\t\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\t\tif (!el) return;\n\n\t\t\tmeasure();\n\n\t\t\tconst handleScroll = () => {\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\trafRef.current = requestAnimationFrame(measure);\n\t\t\t};\n\n\t\t\tel.addEventListener('scroll', handleScroll, { passive: true });\n\t\t\tconst ro = new ResizeObserver(measure);\n\t\t\tro.observe(el);\n\t\t\tif (el.firstElementChild) ro.observe(el.firstElementChild);\n\n\t\t\treturn () => {\n\t\t\t\tel.removeEventListener('scroll', handleScroll);\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\tro.disconnect();\n\t\t\t};\n\t\t}, 0);\n\n\t\treturn () => window.clearTimeout(timerId);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [tableAreaRef, measure, ...deps]);\n\n\tconst scrollBy = useCallback(\n\t\t(delta: number) => {\n\t\t\tgetDataTableScrollContainer(tableAreaRef.current)?.scrollBy({\n\t\t\t\tleft: delta,\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\t\t},\n\t\t[tableAreaRef],\n\t);\n\n\tconst scrollLeft = useCallback(() => scrollBy(-stepPx), [scrollBy, stepPx]);\n\tconst scrollRight = useCallback(() => scrollBy(stepPx), [scrollBy, stepPx]);\n\n\treturn { canScrollLeft, canScrollRight, scrollBy, scrollLeft, scrollRight };\n}\n\n/**\n * localStorage-backed boolean state for the dense / comfortable toggle.\n * `null` storageKey disables persistence (the value is purely in-memory).\n */\nexport function usePersistentDensity(\n\tstorageKey: string | null,\n\tdefaultDense = false,\n): [boolean, (next: boolean) => void] {\n\tconst initial = (() => {\n\t\tif (!storageKey || typeof window === 'undefined') return defaultDense;\n\t\ttry {\n\t\t\tconst raw = window.localStorage.getItem(storageKey);\n\t\t\tif (raw === '1') return true;\n\t\t\tif (raw === '0') return false;\n\t\t\treturn defaultDense;\n\t\t} catch {\n\t\t\treturn defaultDense;\n\t\t}\n\t})();\n\n\tconst [dense, setDenseState] = useState(initial);\n\n\tconst setDense = useCallback(\n\t\t(next: boolean) => {\n\t\t\tsetDenseState(next);\n\t\t\tif (storageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(storageKey, next ? '1' : '0');\n\t\t\t\t} catch {\n\t\t\t\t\t/* ignore quota / disabled-storage errors */\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[storageKey],\n\t);\n\n\treturn [dense, setDense];\n}\n","/**\n * DensityToggle — small icon button that flips between \"dense\" and\n * \"comfortable\" table modes. Stateless: render-time `dense` boolean +\n * `onChange` callback. Pair with `usePersistentDensity` from `../hooks`\n * when you want to persist the choice to localStorage.\n *\n * Used internally by `DataTableToolbar`; exposed for consumers building\n * custom toolbars.\n */\nimport { Maximize2, Minimize2 } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nconst buttonClass =\n\t'inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-30';\n\nexport interface DensityToggleProps {\n\tdense: boolean;\n\tonChange: (next: boolean) => void;\n\tdenseLabel?: string;\n\tcomfortableLabel?: string;\n\tclassName?: string;\n}\n\nexport function DensityToggle({\n\tdense,\n\tonChange,\n\tdenseLabel = 'Dense',\n\tcomfortableLabel = 'Comfortable',\n\tclassName,\n}: DensityToggleProps) {\n\tconst label = dense ? comfortableLabel : denseLabel;\n\tconst Icon = dense ? Maximize2 : Minimize2;\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\taria-label={label}\n\t\t\taria-pressed={dense}\n\t\t\tonClick={() => onChange(!dense)}\n\t\t\tclassName={cn(buttonClass, className)}\n\t\t>\n\t\t\t<Icon className=\"size-3.5\" />\n\t\t</button>\n\t);\n}\n\nDensityToggle.displayName = 'DensityToggle';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/ui/table.tsx","../../../../src/components/ui/pagination.tsx","../../../../src/components/base/table/table.strings.ts","../../../../src/components/base/table/pagination.tsx","../../../../src/components/base/table/table-actions.tsx","../../../../src/components/base/table/table-helpers.tsx","../../../../src/components/base/table/table-body.tsx","../../../../src/components/base/table/table-header.tsx","../../../../src/components/base/table/table-toolbar.tsx","../../../../src/components/base/table/data-table.tsx","../../../../src/components/base/table/filter-bar.tsx","../../../../src/components/base/table/table-pagination.tsx","../../../../src/components/base/table/column-visibility-toggle.tsx","../../../../src/components/base/table/partials/cell-value.tsx","../../../../src/components/base/table/partials/table-link.tsx","../../../../src/components/base/table/partials/cell-renderers.tsx","../../../../src/components/base/table/hooks.ts","../../../../src/components/base/table/partials/density-toggle.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype TableProps = React.ComponentProps<\"table\"> & {\n containerClassName?: string\n}\n\nfunction Table({ className, containerClassName, ...props }: TableProps) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", containerClassName)}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\n \"mx-auto flex w-full justify-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"gap-1 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <Button\n variant={isActive ? \"outline\" : \"ghost\"}\n size={size}\n className={cn(className)}\n nativeButton={false}\n render={\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n {...props}\n />\n }\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n text = \"Previous\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"pl-2!\", className)}\n {...props}\n >\n <ChevronLeftIcon data-icon=\"inline-start\" />\n <span className=\"hidden sm:block\">\n {text}\n </span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n text = \"Next\",\n ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"pr-2!\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">{text}</span>\n <ChevronRightIcon data-icon=\"inline-end\" />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\n \"size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon\n />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","import { type DataTableStrings, type DataTableStringsOverride } from './table.types';\n\nconst fallbackTitleCase = (value: string): string => {\n const formatted = value\n .replace(/[_-]+/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n if (!formatted) {\n return 'Column';\n }\n\n return formatted.replace(/\\b\\w/g, (char) => char.toUpperCase());\n};\n\nconst formatColumnLabel = (columnId: string, currentLabel?: string | null): string => {\n if (currentLabel && currentLabel.trim().length > 0) {\n return currentLabel;\n }\n\n return fallbackTitleCase(columnId);\n};\n\nexport const defaultDataTableStrings: DataTableStrings = {\n emptyState: {\n message: 'No results found.',\n },\n actions: {\n triggerLabel: 'Actions',\n srLabel: 'Row actions menu',\n },\n filter: {\n searchPlaceholder: 'Filter...',\n columnsButton: 'Columns',\n },\n columnVisibility: {\n title: 'Toggle columns',\n triggerLabel: 'Columns',\n formatLabel: formatColumnLabel,\n },\n toolbar: {\n scrollLeft: 'Scroll left',\n scrollRight: 'Scroll right',\n columns: 'Toggle columns',\n dense: 'Compact view',\n comfortable: 'Comfortable view',\n },\n pagination: {\n showing: 'Showing',\n to: 'to',\n of: 'of',\n entries: 'results',\n previous: 'Previous',\n next: 'Next',\n page: 'Page',\n rowsPerPage: 'Rows per page',\n ariaLabel: 'Pagination navigation',\n },\n selection: {\n summary: (selected, total) => `${selected} of ${total} row${total === 1 ? '' : 's'} selected.`,\n row: (index) => `Select row ${index + 1}`,\n selectAll: 'Select all rows',\n },\n} as const;\n\nconst mergeNested = <T extends object>(defaults: T, overrides?: Partial<T>): T => ({\n ...defaults,\n ...(overrides ?? {}),\n});\n\nexport const mergeDataTableStrings = (overrides?: DataTableStringsOverride): DataTableStrings => {\n if (!overrides) {\n return defaultDataTableStrings;\n }\n\n return {\n emptyState: mergeNested(defaultDataTableStrings.emptyState, overrides.emptyState),\n actions: mergeNested(defaultDataTableStrings.actions, overrides.actions),\n filter: mergeNested(defaultDataTableStrings.filter, overrides.filter),\n columnVisibility: mergeNested(defaultDataTableStrings.columnVisibility, overrides.columnVisibility),\n toolbar: mergeNested(defaultDataTableStrings.toolbar, overrides.toolbar),\n pagination: mergeNested(defaultDataTableStrings.pagination, overrides.pagination),\n selection: mergeNested(defaultDataTableStrings.selection, overrides.selection),\n };\n};\n","import { useCallback } from 'react';\nimport {\n\tPagination as PaginationRoot,\n\tPaginationContent,\n\tPaginationEllipsis,\n\tPaginationItem,\n\tPaginationLink,\n\tPaginationNext,\n\tPaginationPrevious,\n} from '@/components/ui/pagination';\nimport { Text } from '@/components/typography';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ServerPaginationProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\n/**\n * Generate a window of page numbers with ellipsis gaps.\n *\n * Always shows first page, last page, and up to 1 sibling\n * on each side of the current page.\n */\nfunction generatePageNumbers(\n\tcurrentPage: number,\n\tlastPage: number,\n): (number | 'ellipsis')[] {\n\tif (lastPage <= 7) {\n\t\treturn Array.from({ length: lastPage }, (_, i) => i + 1);\n\t}\n\n\tconst pages: (number | 'ellipsis')[] = [1];\n\n\tif (currentPage > 3) {\n\t\tpages.push('ellipsis');\n\t}\n\n\tconst start = Math.max(2, currentPage - 1);\n\tconst end = Math.min(lastPage - 1, currentPage + 1);\n\n\tfor (let i = start; i <= end; i++) {\n\t\tpages.push(i);\n\t}\n\n\tif (currentPage < lastPage - 2) {\n\t\tpages.push('ellipsis');\n\t}\n\n\tpages.push(lastPage);\n\n\treturn pages;\n}\n\nfunction buildPageUrl(basePath: string, page: number, queryKey: string): string {\n\t// Build a URL without inheriting the current location's query string —\n\t// the library is framework-agnostic and must not read browser globals\n\t// to decide what to put in href. Consumers that need their own params\n\t// merged should compute and pass the URL via the pagination object.\n\tconst params = new URLSearchParams();\n\tparams.set(queryKey, String(page));\n\treturn `${basePath}?${params.toString()}`;\n}\n\nexport function Pagination({\n\tpagination,\n\tonPageChange,\n\tlabels = {},\n\tpageQueryKey,\n}: ServerPaginationProps) {\n\tconst paginationLabels = {\n\t\t...defaultDataTableStrings.pagination,\n\t\t...labels,\n\t} as typeof defaultDataTableStrings.pagination;\n\tconst queryKey = pageQueryKey ?? 'page';\n\n\tconst firstItem = (pagination.current_page - 1) * pagination.per_page + 1;\n\tconst lastItem = Math.min(\n\t\tpagination.current_page * pagination.per_page,\n\t\tpagination.total,\n\t);\n\n\tconst navigateToPage = useCallback(\n\t\t(page: number, url: string | null) => {\n\t\t\tif (!url) return;\n\t\t\t// The library never navigates on its own. Consumers wire their\n\t\t\t// router (Inertia, Tanstack Router, RR7, Next, …) through\n\t\t\t// `onPageChange`. When it's absent the click is a no-op — the\n\t\t\t// `href` attribute on the underlying anchor remains the only\n\t\t\t// fallback path (browsers will navigate it if JS doesn't run).\n\t\t\tonPageChange?.(page, url, pagination.path || '');\n\t\t},\n\t\t[onPageChange, pagination.path],\n\t);\n\n\tconst hasPrevious = pagination.prev_page_url !== null;\n\tconst hasNext = pagination.next_page_url !== null;\n\tconst pages = generatePageNumbers(pagination.current_page, pagination.last_page);\n\n\treturn (\n\t\t<div className={cn('pagination--component', 'flex items-center justify-between px-5 py-3')}>\n\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"tabular-nums tracking-tight\">\n\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"text-foreground\">{firstItem}–{lastItem}</Text>{' '}\n\t\t\t\t{paginationLabels.of}{' '}\n\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"text-foreground\">{pagination.total}</Text>{' '}\n\t\t\t\t{paginationLabels.entries}\n\t\t\t</Text>\n\n\t\t\t<PaginationRoot aria-label={paginationLabels.ariaLabel} className=\"w-auto mx-0\">\n\t\t\t\t<PaginationContent className=\"gap-0.5\">\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t<PaginationPrevious\n\t\t\t\t\t\t\ttext={paginationLabels.previous}\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\tpagination.current_page - 1,\n\t\t\t\t\t\t\t\t\tpagination.prev_page_url,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-disabled={!hasPrevious}\n\t\t\t\t\t\t\tclassName={`h-8 text-xs ${!hasPrevious ? 'pointer-events-none opacity-40' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\n\t\t\t\t\t{pages.map((page, index) => {\n\t\t\t\t\t\tconst isEllipsis = page === 'ellipsis';\n\t\t\t\t\t\tconst itemKey = isEllipsis\n\t\t\t\t\t\t\t? `ellipsis-${pagination.current_page}-${index}`\n\t\t\t\t\t\t\t: `page-${page}`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t<PaginationItem key={itemKey}>\n\t\t\t\t\t\t\t{isEllipsis ? (\n\t\t\t\t\t\t\t\t<PaginationEllipsis className=\"size-8\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<PaginationLink\n\t\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t\tisActive={page === pagination.current_page}\n\t\t\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\t\t\tpage,\n\t\t\t\t\t\t\t\t\t\t\tbuildPageUrl(pagination.path, page, queryKey),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName=\"size-8 text-xs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{page}\n\t\t\t\t\t\t\t\t</PaginationLink>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</PaginationItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t<PaginationNext\n\t\t\t\t\t\t\ttext={paginationLabels.next}\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tnavigateToPage(\n\t\t\t\t\t\t\t\t\tpagination.current_page + 1,\n\t\t\t\t\t\t\t\t\tpagination.next_page_url,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-disabled={!hasNext}\n\t\t\t\t\t\t\tclassName={`h-8 text-xs ${!hasNext ? 'pointer-events-none opacity-40' : ''}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t</PaginationContent>\n\t\t\t</PaginationRoot>\n\t\t</div>\n\t);\n}\n\nPagination.displayName = 'Pagination';\n","import { MoreHorizontal, type LucideIcon } from 'lucide-react';\nimport { isValidElement, useEffect, useMemo, useState } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport {\n ActionMenu,\n MenuAction,\n type MenuActionProps\n} from '@/components/base/navigation/action-menu';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableActionsProps, type ActionItem, type ActionVariant } from './table.types';\n\nexport function DataTableActions<TData>(props: DataTableActionsProps<TData>) {\n const {\n row,\n actions,\n menuLabel,\n displayMode = 'menu', // preserve existing behavior\n responsiveBreakpoint = 1040,\n strings: providedStrings\n } = props;\n\n const strings = providedStrings ?? defaultDataTableStrings;\n const resolvedMenuLabel = menuLabel ?? strings.actions.triggerLabel;\n\n // Resolve actions array\n const resolvedActions = useMemo<ActionItem<TData>[]>(() => {\n const base = typeof actions === 'function' ? actions(row) : actions;\n return Array.isArray(base) ? base : [];\n }, [actions, row]);\n\n // Filter visibility and compute disabled by predicate/boolean\n const visibleActions = useMemo(() => {\n const evalFlag = (flag: boolean | ((r: TData) => boolean) | undefined): boolean | undefined => {\n if (typeof flag === 'function') return flag(row);\n return flag;\n };\n return resolvedActions\n .filter(a => {\n const v = evalFlag(a.isVisible);\n return v === undefined ? true : v;\n })\n .map(a => ({\n ...a,\n disabled: evalFlag(a.isDisabled) ?? a.disabled ?? false\n }));\n }, [resolvedActions, row]);\n\n // No actions to render\n const hasVisibleActions = visibleActions.length > 0;\n\n // Responsive auto mode: inline over breakpoint, menu under\n const [isNarrow, setIsNarrow] = useState(false);\n\n // 1. Split by variant\n const nonDestructive = visibleActions.filter((action) => action.variant !== 'destructive');\n const destructive = visibleActions.filter((action) => action.variant === 'destructive');\n\n // 2. Combine them (non-destructive first, destructive last)\n const sortedActions = [...nonDestructive, ...destructive];\n\n useEffect(() => {\n if (displayMode !== 'auto' || !hasVisibleActions) {\n setIsNarrow(false);\n return;\n }\n\n const handleResize = () => {\n try {\n setIsNarrow(window.innerWidth <= responsiveBreakpoint);\n } catch {\n setIsNarrow(false);\n }\n };\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [displayMode, hasVisibleActions, responsiveBreakpoint]);\n\n if (!hasVisibleActions) return null;\n\n const mode: 'menu' | 'inline' = displayMode === 'auto' ? (isNarrow ? 'menu' : 'inline') : displayMode;\n\n const resolveMenuIcon = (icon: ActionItem<TData>['icon']): LucideIcon | undefined => {\n if (!icon) return undefined;\n if (typeof icon === 'function') {\n return icon as LucideIcon;\n }\n\n if (isValidElement(icon) && typeof icon.type === 'function') {\n return icon.type as LucideIcon;\n }\n\n return undefined;\n };\n\n const resolveActionButtonVariant = (variant?: ActionVariant): {\n variant: ButtonVariant;\n buttonStyle: ButtonStyle;\n className?: string\n } => {\n switch (variant) {\n case 'destructive':\n return { variant: 'error', buttonStyle: 'solid' };\n case 'outline':\n return { variant: 'secondary', buttonStyle: 'outline' };\n case 'secondary':\n return { variant: 'secondary', buttonStyle: 'solid' };\n case 'ghost':\n return { variant: 'secondary', buttonStyle: 'ghost' };\n case 'link':\n return { variant: 'secondary', buttonStyle: 'ghost', className: 'underline underline-offset-4' };\n case 'default':\n default:\n return { variant: 'primary', buttonStyle: 'solid' };\n }\n };\n\n const resolveMenuActionVariant = (\n variant?: ActionVariant\n ): NonNullable<MenuActionProps['variant']> => {\n switch (variant) {\n case 'default':\n return 'primary';\n case 'destructive':\n return 'error';\n default:\n return 'secondary';\n }\n };\n\n if (mode === 'inline') {\n return (\n <div className={cn('table-actions--component', 'flex items-center gap-1')}>\n {sortedActions.map((action, idx) => {\n const key = action.id || `${action.label}-${idx}`;\n const resolved = resolveActionButtonVariant(action.variant ?? 'ghost');\n const onClick = () => {\n action.onClick?.(row);\n };\n return (\n <Button\n key={key}\n variant={resolved.variant}\n buttonStyle={resolved.buttonStyle}\n className={cn('h-8 text-inherit leading-4', resolved.className)}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n {!!action.icon && <span className=\"mr-2 inline-flex\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n }\n\n\n // menu mode (default) using our ActionMenu implementation\n return (\n <ActionMenu\n label={undefined}\n icon={MoreHorizontal}\n srText={resolvedMenuLabel || strings.actions.srLabel}\n closeOnSelect={true}\n align=\"end\"\n density=\"table\"\n >\n {sortedActions.map((action, idx) => {\n const key = action.id || `${action.label}-${idx}`;\n const onClick = () => {\n action.onClick?.(row);\n };\n const menuIcon = resolveMenuIcon(action.icon);\n const inlineIcon = action.icon\n ? <span className=\"inline-flex items-center\">{action.icon}</span>\n : null;\n const fallbackContent = menuIcon ? null : (\n <div className=\"flex w-full items-center gap-2\">\n {inlineIcon}\n <span>{action.label}</span>\n </div>\n );\n\n const menuActionVariant = resolveMenuActionVariant(\n action.variant\n );\n\n return (\n <MenuAction\n key={key}\n label={action.label}\n icon={menuIcon}\n variant={menuActionVariant}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n {fallbackContent}\n </MenuAction>\n );\n })}\n </ActionMenu>\n );\n}\n\nDataTableActions.displayName = 'DataTableActions';\n","import type {\n\tSortingState,\n\tRowSelectionState,\n\tVisibilityState,\n\tTable,\n\tRow,\n\tUpdater,\n\tColumnDef,\n} from '@tanstack/react-table';\nimport React from 'react';\nimport { defaultDataTableStrings } from './table.strings';\nimport type { DataTableStrings } from './table.types';\n\n/**\n * Helper function for handling row selection changes with OnChangeFn compatibility\n */\nexport const handleRowSelectionChange = (\n\tupdatedSelection: Updater<RowSelectionState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<RowSelectionState>>,\n\texternalHandler?: (state: RowSelectionState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedSelection === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (\n\t\t\t\tupdatedSelection as (prev: RowSelectionState) => RowSelectionState\n\t\t\t)(prevState);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedSelection);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedSelection);\n\t\t}\n\t}\n};\n\n/**\n * Helper function for handling sorting changes with OnChangeFn compatibility\n */\nexport const handleSortingChange = (\n\tupdatedSorting: Updater<SortingState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<SortingState>>,\n\texternalHandler?: (state: SortingState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedSorting === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (updatedSorting as (prev: SortingState) => SortingState)(\n\t\t\t\tprevState,\n\t\t\t);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedSorting);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedSorting);\n\t\t}\n\t}\n};\n\n/**\n * Helper function for handling column visibility changes\n */\nexport const handleColumnVisibilityChange = (\n\tupdatedVisibility: Updater<VisibilityState>,\n\tsetInternalState: React.Dispatch<React.SetStateAction<VisibilityState>>,\n\texternalHandler?: (state: VisibilityState) => void,\n) => {\n\t// Handle both direct values and updater functions\n\tif (typeof updatedVisibility === 'function') {\n\t\t// If it's a function, use setState with function argument\n\t\tsetInternalState((prevState) => {\n\t\t\tconst newState = (\n\t\t\t\tupdatedVisibility as (prev: VisibilityState) => VisibilityState\n\t\t\t)(prevState);\n\t\t\tif (externalHandler) {\n\t\t\t\texternalHandler(newState);\n\t\t\t}\n\t\t\treturn newState;\n\t\t});\n\t} else {\n\t\t// If it's a direct value, just use it\n\t\tsetInternalState(updatedVisibility);\n\t\tif (externalHandler) {\n\t\t\texternalHandler(updatedVisibility);\n\t\t}\n\t}\n};\n\n/**\n * Get row class name based on selection state and custom function\n */\nexport const getRowClassName = <TData,>(\n\trow: Row<TData>,\n\tindex: number,\n\trowClassName?: string | ((row: Row<TData>, index: number) => string),\n\tisSelected?: boolean,\n): string => {\n\tlet className = '';\n\n\t// Add selected class if the row is selected\n\tif (isSelected) {\n\t\tclassName += 'bg-primary/5 ';\n\t}\n\n\t// Add custom class name\n\tif (typeof rowClassName === 'function') {\n\t\tclassName += rowClassName(row, index) + ' ';\n\t} else if (rowClassName) {\n\t\tclassName += rowClassName + ' ';\n\t}\n\n\treturn className.trim();\n};\n\n/**\n * Get cell class name including sticky column handling\n */\nexport const getCellClassName = <TData,>(\n\tcolumnId: string,\n\trow: Row<TData> | null,\n\tcellClassName?: string | ((column: string, row: Row<TData> | null) => string),\n\tstickyFirstColumn?: boolean,\n\tisFirstColumn?: boolean,\n): string => {\n\tlet baseClassName = '';\n\n\t// Add base class name\n\tif (typeof cellClassName === 'string') {\n\t\tbaseClassName = cellClassName;\n\t} else if (cellClassName && row) {\n\t\tbaseClassName = cellClassName(columnId, row);\n\t}\n\n\t// Add sticky class if it's the first column and sticky first column is enabled\n\tif (stickyFirstColumn && isFirstColumn) {\n\t\treturn `${baseClassName} sticky left-0 z-10 bg-card`;\n\t}\n\n\treturn baseClassName;\n};\n\n/**\n * Get selected rows data from the table\n */\nexport const getSelectedRowsData = <T extends object>(table: Table<T>): T[] => {\n\treturn table.getSelectedRowModel().rows.map((row) => row.original);\n};\n\n/**\n * Create row selection component for a row\n */\nexport const createRowSelectionCheckbox = <TData,>(\n\trow: Row<TData>,\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => (\n\t<div className=\"px-1\">\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclassName=\"size-3.5 rounded border-border text-primary accent-primary focus-visible:ring-ring focus-visible:ring-offset-1 cursor-pointer disabled:cursor-not-allowed disabled:opacity-40\"\n\t\t\tchecked={row.getIsSelected()}\n\t\t\tdisabled={!row.getCanSelect()}\n\t\t\tonChange={row.getToggleSelectedHandler()}\n\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\taria-label={strings.selection.row(row.index)}\n\t\t/>\n\t</div>\n);\n\n/**\n * Create header selection checkbox\n */\nexport const createHeaderSelectionCheckbox = <TData,>(\n\ttable: Table<TData>,\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => (\n\t<div className=\"px-1\">\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\tclassName=\"size-3.5 rounded border-border text-primary accent-primary focus-visible:ring-ring focus-visible:ring-offset-1 cursor-pointer\"\n\t\t\tchecked={table.getIsAllPageRowsSelected()}\n\t\t\tonChange={table.getToggleAllPageRowsSelectedHandler()}\n\t\t\taria-label={strings.selection.selectAll}\n\t\t/>\n\t</div>\n);\n\n/**\n * Add selection column to columns\n */\nexport const addSelectionColumn = <TData, TValue = unknown>(\n\tcolumns: ColumnDef<TData, TValue>[],\n\tstrings: DataTableStrings = defaultDataTableStrings,\n) => {\n\tconst selectionColumn = {\n\t\tid: 'selection',\n\t\theader: ({ table }: { table: Table<TData> }) =>\n\t\t\tcreateHeaderSelectionCheckbox(table, strings),\n\t\tcell: ({ row }: { row: Row<TData> }) => createRowSelectionCheckbox(row, strings),\n\t\tenableSorting: false,\n\t\tenableResizing: false,\n\t\tsize: 40,\n\t} as ColumnDef<TData, TValue>;\n\n\treturn [selectionColumn, ...columns];\n};\n","/**\n * DataTableBody — body rows, selection highlighting, hover, empty state,\n * and (optional) loading skeleton. Stronger hover + selection contrast than\n * the original implementation so rows feel interactive at a glance.\n */\nimport { flexRender } from '@tanstack/react-table';\nimport { TableBody, TableCell, TableRow } from '@/components/ui/table';\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\nimport {\n\tgetCellClassName,\n\tgetRowClassName,\n} from './table-helpers';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableBodyProps } from './table.types';\n\nexport function DataTableBody<TData>({\n\ttable,\n\tonRowClick,\n\temptyStateMessage,\n\temptyStateAction,\n\tcellClassName = '',\n\trowClassName = '',\n\tstickyFirstColumn = false,\n\tstriped = false,\n\tdense = false,\n\tstrings,\n}: DataTableBodyProps<TData>) {\n\tconst tableRows = table.getRowModel().rows;\n\tconst resolvedEmptyStateMessage =\n\t\temptyStateMessage ??\n\t\tstrings?.emptyState.message ??\n\t\tdefaultDataTableStrings.emptyState.message;\n\n\tconst handleRowClick = (row: TData) => {\n\t\tif (onRowClick) {\n\t\t\tonRowClick(row);\n\t\t}\n\t};\n\n\tif (!tableRows.length) {\n\t\treturn (\n\t\t\t<TableBody className=\"table-body--component\">\n\t\t\t\t<TableRow className=\"hover:bg-transparent\">\n\t\t\t\t\t<TableCell\n\t\t\t\t\t\tclassName=\"h-24 text-center\"\n\t\t\t\t\t\tcolSpan={table.getAllColumns().length}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-12 space-y-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-center size-10 rounded-full bg-muted mb-1\">\n\t\t\t\t\t\t\t\t<svg className=\"size-5 text-muted-foreground/60\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\">\n\t\t\t\t\t\t\t\t\t<path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5m6 4.125l2.25 2.25m0 0l2.25-2.25M12 13.875V7.5M3.75 7.5h16.5\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{resolvedEmptyStateMessage}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!emptyStateAction && (\n\t\t\t\t\t\t\t\t<div className=\"mt-1\">{emptyStateAction}</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</TableCell>\n\t\t\t\t</TableRow>\n\t\t\t</TableBody>\n\t\t);\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t{tableRows.map((row, rowIndex) => {\n\t\t\t\tconst isRowSelected = row.getIsSelected();\n\t\t\t\tconst rowCells = row.getVisibleCells();\n\t\t\t\tconst computedRowClassName = getRowClassName(\n\t\t\t\t\trow,\n\t\t\t\t\trowIndex,\n\t\t\t\t\trowClassName,\n\t\t\t\t\tisRowSelected,\n\t\t\t\t);\n\t\t\t\tconst handleRowSelection = () => {\n\t\t\t\t\tif (onRowClick) {\n\t\t\t\t\t\thandleRowClick(row.original);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst zebraClass = striped && rowIndex % 2 !== 0 ? 'bg-muted/30' : '';\n\t\t\t\tconst cursorClass = onRowClick ? 'cursor-pointer' : '';\n\t\t\t\tconst rowClasses = cn(\n\t\t\t\t\tcomputedRowClassName,\n\t\t\t\t\tzebraClass,\n\t\t\t\t\t'transition-colors duration-100',\n\t\t\t\t\t'hover:bg-accent/40 data-[state=selected]:bg-primary/5 data-[state=selected]:hover:bg-primary/10',\n\t\t\t\t\tcursorClass,\n\t\t\t\t\t'border-b border-border last:border-b-0',\n\t\t\t\t);\n\t\t\t\tconst rowState = isRowSelected ? 'selected' : null;\n\n\t\t\t\treturn (\n\t\t\t\t\t<TableRow\n\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\tdata-state={rowState}\n\t\t\t\t\t\tclassName={rowClasses}\n\t\t\t\t\t\tonClick={handleRowSelection}\n\t\t\t\t\t>\n\t\t\t\t\t\t{rowCells.map((cell, cellIndex) => (\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\tgetCellClassName(\n\t\t\t\t\t\t\t\t\t\tcell.column.id,\n\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\tcellClassName,\n\t\t\t\t\t\t\t\t\t\tstickyFirstColumn,\n\t\t\t\t\t\t\t\t\t\tcellIndex === 0,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t'first:pl-5 last:pr-5',\n\t\t\t\t\t\t\t\t\tdense && 'py-1.5 px-2 first:pl-3 last:pr-3 text-xxs leading-3',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\n\t\t\t\t\t\t\t\t\tcell.getContext(),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t);\n\t\t\t})}\n\t\t</TableBody>\n\t);\n}\n\nDataTableBody.displayName = 'DataTableBody';\n","/**\n * DataTableHeader — column-group row, primary header row, sort indicators,\n * and (optionally) resize handles. Sortable columns render as a button with\n * an inline up / down / both arrow icon driven by TanStack `column.getIsSorted()`.\n */\nimport { flexRender } from '@tanstack/react-table';\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from 'lucide-react';\nimport React from 'react';\nimport { TableHead, TableHeader, TableRow } from '@/components/ui/table';\nimport { cn } from '@/lib/utils';\nimport { getCellClassName } from './table-helpers';\nimport { type DataTableHeaderProps } from './table.types';\n\nexport function DataTableHeader<TData>(\n\t{\n\t\ttable,\n\t\tenableResizing = false,\n\t\tstickyHeader = false,\n\t\theaderClassName = '',\n\t\tcellClassName = '',\n\t\tstickyFirstColumn = false,\n\t\tcolumnGroups,\n\t\tdense = false,\n\t\theaderTransparent = false,\n\t}: DataTableHeaderProps<TData>) {\n\n\tconst headerGroups = table.getHeaderGroups();\n\n\tconst getColumnGroup = (columnId: string) => {\n\t\tif (!columnGroups) return null;\n\t\treturn columnGroups.find(group => group.columns.includes(columnId));\n\t};\n\n\tconst renderGroupHeaderRow = () => {\n\t\tif (!columnGroups || columnGroups.length === 0 || headerGroups.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst headers = headerGroups[0].headers;\n\t\tlet currentGroup: string | null = null;\n\t\tlet groupSpan = 0;\n\t\tconst groupCells: React.ReactNode[] = [];\n\n\t\theaders.forEach((header, index) => {\n\t\t\tconst group = getColumnGroup(header.id);\n\t\t\tconst groupName = group?.header || '';\n\n\t\t\tif (groupName !== currentGroup) {\n\t\t\t\tif (currentGroup !== null && groupSpan > 0) {\n\t\t\t\t\tgroupCells.push(\n\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\tkey={`group-${currentGroup}-${groupCells.length}`}\n\t\t\t\t\t\t\tcolSpan={groupSpan}\n\t\t\t\t\t\t\tclassName=\"text-center border-r border-border/60 last:border-r-0 px-3 py-2 text-xxs font-bold uppercase tracking-widest text-muted-foreground/70 bg-muted/40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentGroup || ''}\n\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcurrentGroup = groupName;\n\t\t\t\tgroupSpan = 1;\n\t\t\t} else {\n\t\t\t\tgroupSpan++;\n\t\t\t}\n\n\t\t\tif (index === headers.length - 1 && groupSpan > 0) {\n\t\t\t\tgroupCells.push(\n\t\t\t\t\t<TableHead\n\t\t\t\t\t\tkey={`group-${currentGroup}-${groupCells.length}`}\n\t\t\t\t\t\tcolSpan={groupSpan}\n\t\t\t\t\t\tclassName=\"text-center border-r border-border/60 last:border-r-0 px-3 py-2 text-xxs font-bold uppercase tracking-widest text-muted-foreground/70 bg-muted/40 whitespace-nowrap\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{currentGroup || ''}\n\t\t\t\t\t</TableHead>\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<TableRow className={cn('table-header--component', 'border-b border-border')}>\n\t\t\t\t{groupCells}\n\t\t\t</TableRow>\n\t\t);\n\t};\n\n\treturn (\n\t\t<TableHeader\n\t\t\tclassName={cn(\n\t\t\t\tstickyHeader &&\n\t\t\t\t\t(headerTransparent\n\t\t\t\t\t\t? 'sticky top-[var(--topbar-height)] z-10 bg-background/80 backdrop-blur-md shadow-[0_1px_0_0_var(--border)]'\n\t\t\t\t\t\t: 'sticky top-[var(--topbar-height)] z-10 bg-muted backdrop-blur-md shadow-[0_1px_0_0_var(--border)]'),\n\t\t\t\theaderClassName,\n\t\t\t)}\n\t\t>\n\t\t\t{renderGroupHeaderRow()}\n\t\t\t{headerGroups.map((headerGroup) => (\n\t\t\t\t<TableRow\n\t\t\t\t\tkey={headerGroup.id}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'border-b border-border',\n\t\t\t\t\t\theaderTransparent\n\t\t\t\t\t\t\t? 'bg-transparent hover:bg-transparent'\n\t\t\t\t\t\t\t: 'bg-muted hover:bg-muted',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{headerGroup.headers.map((header, index) => {\n\t\t\t\t\t\tconst cellClasses = cn(\n\t\t\t\t\t\t\tgetCellClassName(\n\t\t\t\t\t\t\t\theader.id,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tcellClassName,\n\t\t\t\t\t\t\t\tstickyFirstColumn,\n\t\t\t\t\t\t\t\tindex === 0,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'first:pl-5 last:pr-5',\n\t\t\t\t\t\t\tdense && 'px-2 py-1.5 first:pl-3 last:pr-3 text-xxs',\n\t\t\t\t\t\t\t'text-muted-foreground font-medium uppercase tracking-wider whitespace-nowrap',\n\t\t\t\t\t\t\t'bg-transparent',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst headerStyle = enableResizing\n\t\t\t\t\t\t\t? { position: 'relative' as const }\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tconst resizeHandler = header.getResizeHandler();\n\t\t\t\t\t\tconst isResizing = header.column.getIsResizing();\n\t\t\t\t\t\tconst columnLabel = (() => {\n\t\t\t\t\t\t\tconst rawHeader = header.column.columnDef.header;\n\t\t\t\t\t\t\tif (typeof rawHeader === 'string') {\n\t\t\t\t\t\t\t\treturn rawHeader;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn typeof header.id === 'string' ? header.id : 'column';\n\t\t\t\t\t\t})();\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\tclassName={cellClasses}\n\t\t\t\t\t\t\t\tstyle={headerStyle}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst canSort = header.column.getCanSort();\n\t\t\t\t\t\t\t\t\t\t\tconst sortDir = header.column.getIsSorted();\n\t\t\t\t\t\t\t\t\t\t\tconst headerNode = flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst SortIcon =\n\t\t\t\t\t\t\t\t\t\t\t\tsortDir === 'asc'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? ArrowUp\n\t\t\t\t\t\t\t\t\t\t\t\t\t: sortDir === 'desc'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ArrowDown\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ChevronsUpDown;\n\t\t\t\t\t\t\t\t\t\t\tif (!canSort) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn <div className=\"flex items-center\">{headerNode}</div>;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={header.column.getToggleSortingHandler()}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'group inline-flex items-center gap-1.5 select-none -ml-1 px-1 rounded',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'hover:text-foreground transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDir && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Sort ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{headerNode}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SortIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-3 shrink-0 transition-opacity',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDir\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'opacity-100'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'opacity-30 group-hover:opacity-70',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})()}\n\n\t\t\t\t\t\t\t\t\t\t{!!enableResizing && (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'absolute top-0 right-0 h-full w-1 cursor-col-resize select-none touch-none bg-foreground bg-opacity-50 opacity-0 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none',\n\t\t\t\t\t\t\t\t\t\t\t\t\tisResizing &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'!bg-primary-600 bg-opacity-100',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Resize ${columnLabel}`}\n\t\t\t\t\t\t\t\t\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={resizeHandler}\n\t\t\t\t\t\t\t\t\t\t\t\tonTouchStart={resizeHandler}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</TableRow>\n\t\t\t))}\n\t\t</TableHeader>\n\t);\n}\n\nDataTableHeader.displayName = 'DataTableHeader';\n","import { ChevronLeft, ChevronRight, Columns3, Maximize2, Minimize2 } from 'lucide-react';\nimport type { Column } from '@tanstack/react-table';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableToolbarProps } from './table.types';\n\nconst SCROLL_AMOUNT = 300;\n\nconst btnBase = 'inline-flex items-center justify-center h-7 w-7 rounded-none text-muted-foreground/70 hover:bg-muted hover:text-foreground transition-colors duration-150 disabled:opacity-30 disabled:pointer-events-none';\n\ninterface ToolbarIconButtonProps {\n label: string;\n onClick: () => void;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nfunction ToolbarIconButton({ label, onClick, disabled, className, children }: ToolbarIconButtonProps) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n className={cn('table-toolbar--component', btnBase, className)}\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\n}\n\n/**\n * Finds the actual horizontally-scrollable element inside the table area.\n * The Table primitive renders: <div data-slot=\"table-container\" class=\"overflow-x-auto\">\n */\nfunction getScrollContainer(tableArea: HTMLDivElement | null): HTMLDivElement | null {\n if (!tableArea) return null;\n return tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport function DataTableToolbar<TData>({\n table,\n tableAreaRef,\n dense,\n onDenseChange,\n enableColumnVisibility = false,\n strings = defaultDataTableStrings,\n}: DataTableToolbarProps<TData>) {\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const rafRef = useRef(0);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n // --- Scroll overflow detection ---\n const checkOverflow = useCallback(() => {\n const el = getScrollContainer(tableAreaRef.current);\n if (!el) {\n setCanScrollLeft(false);\n setCanScrollRight(false);\n return;\n }\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, [tableAreaRef]);\n\n useEffect(() => {\n // Defer slightly to ensure the Table primitive has rendered its container\n const timerId = window.setTimeout(() => {\n const el = getScrollContainer(tableAreaRef.current);\n if (!el) return;\n\n // Initial check\n checkOverflow();\n\n const handleScroll = () => {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(checkOverflow);\n };\n\n el.addEventListener('scroll', handleScroll, { passive: true });\n\n // ResizeObserver to detect when table width changes\n const ro = new ResizeObserver(checkOverflow);\n ro.observe(el);\n if (el.firstElementChild) {\n ro.observe(el.firstElementChild);\n }\n\n // Store cleanup references\n cleanupRef.current = () => {\n el.removeEventListener('scroll', handleScroll);\n cancelAnimationFrame(rafRef.current);\n ro.disconnect();\n };\n }, 0);\n\n return () => {\n window.clearTimeout(timerId);\n cleanupRef.current?.();\n };\n // Re-run when dense mode changes (layout shift can affect overflow)\n\n }, [tableAreaRef, checkOverflow, dense]);\n\n // --- Scroll handlers ---\n const handleScrollLeft = useCallback(() => {\n getScrollContainer(tableAreaRef.current)?.scrollBy({ left: -SCROLL_AMOUNT, behavior: 'smooth' });\n }, [tableAreaRef]);\n\n const handleScrollRight = useCallback(() => {\n getScrollContainer(tableAreaRef.current)?.scrollBy({ left: SCROLL_AMOUNT, behavior: 'smooth' });\n }, [tableAreaRef]);\n\n // --- Dense toggle ---\n const handleDenseToggle = useCallback(() => {\n onDenseChange(!dense);\n }, [dense, onDenseChange]);\n\n // --- Column visibility ---\n const columns = enableColumnVisibility\n ? table.getAllColumns().filter((column) => column.getCanHide())\n : [];\n\n const hasScrollArrows = canScrollLeft || canScrollRight;\n const hasColumns = enableColumnVisibility && columns.length > 0;\n const denseToggleLabel = dense\n ? strings.toolbar.comfortable\n : strings.toolbar.dense;\n\n return (\n <div className=\"flex items-center rounded-md border border-border bg-card\">\n {/* Scroll arrows - only rendered when overflow exists */}\n {!!hasScrollArrows && (\n <>\n <ToolbarIconButton\n label={strings.toolbar.scrollLeft}\n onClick={handleScrollLeft}\n disabled={!canScrollLeft}\n className=\"rounded-l-[calc(theme(borderRadius.md)-1px)]\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </ToolbarIconButton>\n <ToolbarIconButton\n label={strings.toolbar.scrollRight}\n onClick={handleScrollRight}\n disabled={!canScrollRight}\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </ToolbarIconButton>\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Column visibility dropdown */}\n {!!hasColumns && (\n <>\n <ColumnVisibilityDropdown\n columns={columns}\n strings={strings}\n roundLeft={!hasScrollArrows}\n />\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Dense/compact toggle */}\n <ToolbarIconButton\n label={denseToggleLabel}\n onClick={handleDenseToggle}\n className={cn(\n 'rounded-r-[calc(theme(borderRadius.md)-1px)]',\n !hasScrollArrows && !hasColumns && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\n >\n {dense\n ? <Maximize2 className=\"h-3.5 w-3.5\" />\n : <Minimize2 className=\"h-3.5 w-3.5\" />\n }\n </ToolbarIconButton>\n </div>\n );\n}\n\n/** Extracted dropdown to keep the parent component clean */\nfunction ColumnVisibilityDropdown<TData>({\n columns,\n strings,\n roundLeft,\n}: {\n columns: Array<Column<TData, unknown>>;\n strings: NonNullable<DataTableToolbarProps<TData>['strings']>;\n roundLeft: boolean;\n}) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <button\n {...triggerProps}\n type=\"button\"\n aria-label={strings.toolbar.columns}\n className={cn(\n btnBase,\n (triggerProps as Record<string, unknown>).className as string,\n roundLeft && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\n >\n <Columns3 className=\"h-3.5 w-3.5\" />\n </button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"w-[200px]\">\n <DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n const header = column.columnDef.header;\n const columnName = strings.columnVisibility.formatLabel(\n column.id,\n typeof header === 'string' ? header : undefined,\n );\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(checked) => column.toggleVisibility(!!checked)}\n >\n {columnName}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nDataTableToolbar.displayName = 'DataTableToolbar';\n","/**\n * DataTable — TanStack-powered data table with sorting, row selection, column\n * visibility, server-side pagination, dense mode, sticky header / first column,\n * and pluggable row actions (menu / inline / responsive).\n *\n * Strings are overridable through the `strings` prop and a default set in\n * `./table.strings`. Column visibility and dense mode persist to localStorage\n * when a `storageKey` is provided.\n *\n * Use the cell renderers exported from `./partials/cell-renderers`\n * (`StatusCell`, `DateCell`, `CurrencyCell`, `AvatarCell`) for visually\n * consistent cells across pages.\n */\nimport {\n\tgetCoreRowModel,\n\tuseReactTable,\n\ttype SortingState,\n\ttype VisibilityState,\n\ttype Updater,\n\ttype ColumnDef,\n\ttype RowSelectionState,\n} from '@tanstack/react-table';\nimport { createContext, useContext, useState, useMemo, useCallback, useRef } from 'react';\nimport { Table } from '@/components/ui/table';\nimport { useTableConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\n/**\n * Context exposing the current `<DataTable size>` to descendant cell renderers\n * so consumer-built cells can stay typographically aligned with the table\n * (instead of hardcoding `<Text>` and breaking the unification the\n * `size` prop is supposed to give).\n *\n * Use it from custom cells:\n * const size = useDataTableSize();\n * return <Text className=\"data-table--component\" size={size}>{value}</Text>;\n *\n * The built-in renderers in `partials/cell-renderers` consume this hook.\n */\nconst DataTableSizeContext = createContext<'xs' | 'sm' | 'base'>('xs');\n\nexport function useDataTableSize(): 'xs' | 'sm' | 'base' {\n\treturn useContext(DataTableSizeContext);\n}\nimport { Pagination } from './pagination';\nimport { DataTableActions } from './table-actions';\nimport { DataTableBody } from './table-body';\nimport { DataTableHeader } from './table-header';\nimport { DataTableToolbar } from './table-toolbar';\nimport { addSelectionColumn, handleSortingChange, handleColumnVisibilityChange } from './table-helpers';\nimport { mergeDataTableStrings } from './table.strings';\nimport { type DataTableProps } from './table.types';\nimport { Separator } from '@/components/base/display/separator';\n\n// Class applied to the `<table>` element.\n//\n// Body cells get an explicit `[&_td]:text-{size}` so deeply nested\n// elements that use `<Text size=\"inherit\">` (or any plain `<span>`)\n// inherit the right font-size from the cell rather than relying on\n// the table-level inheritance chain (which breaks the moment any\n// descendant has its own text-size class).\n//\n// Header cells stay at `text-xxs` regardless of body density — the\n// canonical admin pattern is \"tiny uppercase eyebrow header,\n// variable body density.\" A consumer who wants matched header sizing\n// can override via `headerClassName`.\nconst sizeClassByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, string> = {\n\txs: '[&_th]:text-xxs [&_td]:text-xs [&_th]:py-1.5 [&_td]:py-1.5 [&_th]:px-2 [&_td]:px-2 [&_th]:h-8',\n\tsm: '[&_th]:text-xxs [&_td]:text-sm [&_th]:py-2 [&_td]:py-2 [&_th]:px-2.5 [&_td]:px-2.5 [&_th]:h-10',\n\tbase: '[&_th]:text-xs [&_td]:text-base [&_th]:py-3.5 [&_td]:py-3 [&_th]:px-4 [&_td]:px-3 [&_th]:h-14',\n};\n\nexport function DataTable<TData extends object, TValue = unknown>({\n\tsize,\n\tsurface = 'card',\n\theaderTransparent = false,\n\tcolumns,\n\tdata,\n\tcolumnGroups,\n\trowActions,\n\trowActionsMenuLabel,\n\trowActionsDisplayMode,\n\trowActionsBreakpoint,\n\tenableSorting = false,\n\tmanualSorting = false,\n\tenableColumnVisibility = false,\n\tenableRowSelection = false,\n\tenableMultiRowSelection = true,\n\tenableSubRowSelection = false,\n\tpagination,\n\tpageQueryKey,\n\tonPageChange,\n\tonSort,\n\tonRowClick,\n\tonRowSelectionChange,\n\tstickyHeader = false,\n\tstickyFirstColumn = false,\n\temptyStateMessage,\n\temptyStateAction,\n\tclassName = '',\n\trowClassName = '',\n\tcellClassName = '',\n\theaderClassName = '',\n\twrapperClassName = '',\n\tinnerClassName = 'overflow-x-auto',\n\ttableContainerClassName = '',\n\tgetRowId,\n\trowSelection: controlledRowSelection,\n\tinitialState,\n\tonColumnVisibilityChange,\n\tstrings: stringsOverride,\n\ttopbarContent,\n\tstorageKey,\n}: DataTableProps<TData, TValue>) {\n\tconst { defaultSize } = useTableConfig();\n\tconst resolvedSize: NonNullable<DataTableProps<TData, TValue>['size']> =\n\t\tsize ?? defaultSize ?? 'xs';\n\n\tconst strings = useMemo(\n\t\t() => mergeDataTableStrings(stringsOverride),\n\t\t[stringsOverride],\n\t);\n\n\tconst tableRowClasses = cn('bg-card', rowClassName)\n\tconst resolvedEmptyStateMessage = emptyStateMessage ?? strings.emptyState.message;\n\tconst resolvedRowActionsMenuLabel =\n\t\trowActionsMenuLabel ?? strings.actions.triggerLabel;\n\tconst resolvedPageQueryKey = pageQueryKey ?? 'page';\n\n\t\t// --- Detect and resolve tuple pattern for columns ---\n\t\tconst resolvedColumns = (() => {\n\t\t\t// Tuple pattern detected: [columns, deps]\n\t\t\tif (Array.isArray(columns) && columns.length === 2 && Array.isArray(columns[1])) {\n\t\t\t\treturn columns[0] as ColumnDef<TData, TValue>[];\n\t\t\t}\n\n\t\t\t// Regular pattern: just columns array\n\t\t\treturn columns as ColumnDef<TData, TValue>[];\n\t\t})();\n\n\t// --- Format storage key internally ---\n\tconst formattedStorageKey = useMemo(() => {\n\t\treturn storageKey ? `dt.${storageKey}.columns` : null;\n\t}, [storageKey]);\n\n\t// --- Dense mode storage key ---\n\tconst denseStorageKey = useMemo(() => {\n\t\treturn storageKey ? `dt.${storageKey}.dense` : null;\n\t}, [storageKey]);\n\n\t// --- Load initial column visibility from localStorage if persistence enabled ---\n\tconst initialColumnVisibility = useMemo<VisibilityState>(() => {\n\t\t// If persistence is disabled or we're in SSR, use initialState or empty object\n\t\tif (!formattedStorageKey || typeof window === 'undefined') {\n\t\t\treturn initialState?.columnVisibility || {};\n\t\t}\n\n\t\ttry {\n\t\t\tconst stored = window.localStorage.getItem(formattedStorageKey);\n\t\t\tconst parsed = stored ? (JSON.parse(stored) as VisibilityState) : {};\n\t\t\t// Merge with initialState if provided\n\t\t\treturn { ...parsed, ...(initialState?.columnVisibility || {}) };\n\t\t} catch {\n\t\t\t// If parsing fails, fall back to initialState\n\t\t\treturn initialState?.columnVisibility || {};\n\t\t}\n\t}, [formattedStorageKey, initialState?.columnVisibility]);\n\n\t// --- Load initial dense mode from localStorage ---\n\tconst initialDense = useMemo(() => {\n\t\tif (!denseStorageKey || typeof window === 'undefined') return false;\n\t\ttry {\n\t\t\treturn window.localStorage.getItem(denseStorageKey) === '1';\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, [denseStorageKey]);\n\n\t// --- State for sorting, visibility, and dense mode ---\n\tconst [sorting, setSorting] = useState<SortingState>(initialState?.sorting || []);\n\tconst [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n\t\tinitialColumnVisibility,\n\t);\n\tconst [internalRowSelection, setInternalRowSelection] = useState<RowSelectionState>(\n\t\tinitialState?.rowSelection || {},\n\t);\n\tconst [dense, setDense] = useState(initialDense);\n\tconst rowSelection = controlledRowSelection ?? internalRowSelection;\n\n\t// --- Refs ---\n\tconst tableAreaRef = useRef<HTMLDivElement>(null);\n\n\t// --- Callbacks ---\n\tconst handleSortingChangeCallback = useCallback(\n\t\t(updater: Updater<SortingState>) => {\n\t\t\thandleSortingChange(updater, setSorting, onSort);\n\t\t},\n\t\t[onSort],\n\t);\n\n\tconst handleVisibilityChangeCallback = useCallback(\n\t\t(updater: Updater<VisibilityState>) => {\n\t\t\thandleColumnVisibilityChange(\n\t\t\t\tupdater,\n\t\t\t\tsetColumnVisibility,\n\t\t\t\t(newState) => {\n\t\t\t\t\t// Persist to localStorage if enabled\n\t\t\t\t\tif (formattedStorageKey && typeof window !== 'undefined') {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t\tformattedStorageKey,\n\t\t\t\t\t\t\t\tJSON.stringify(newState),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Silent fail - quota exceeded or other localStorage errors\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call user-provided handler\n\t\t\t\t\tif (onColumnVisibilityChange) {\n\t\t\t\t\t\tonColumnVisibilityChange(newState);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t},\n\t\t[formattedStorageKey, onColumnVisibilityChange],\n\t);\n\n\tconst handleRowSelectionChangeCallback = useCallback(\n\t\t(updater: Updater<RowSelectionState>) => {\n\t\t\tconst nextRowSelection =\n\t\t\t\ttypeof updater === 'function' ? updater(rowSelection) : updater;\n\n\t\t\tif (controlledRowSelection === undefined) {\n\t\t\t\tsetInternalRowSelection(nextRowSelection);\n\t\t\t}\n\n\t\t\tonRowSelectionChange?.(nextRowSelection);\n\t\t},\n\t\t[controlledRowSelection, onRowSelectionChange, rowSelection],\n\t);\n\n\tconst handleDenseChange = useCallback(\n\t\t(value: boolean) => {\n\t\t\tsetDense(value);\n\t\t\tif (denseStorageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(denseStorageKey, value ? '1' : '0');\n\t\t\t\t} catch {\n\t\t\t\t\t// Silent fail\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[denseStorageKey],\n\t);\n\n\tconst columnsWithActions = useMemo<ColumnDef<TData, TValue>[]>(() => {\n\t\tconst baseColumns = enableRowSelection\n\t\t\t? addSelectionColumn<TData, TValue>(resolvedColumns, strings)\n\t\t\t: resolvedColumns;\n\n\t\t// if no actions, leave cols untouched\n\t\tif (!rowActions) {\n\t\t\treturn baseColumns;\n\t\t}\n\n\t\t// otherwise append a fixed Actions column:\n\t\tconst actionCol: ColumnDef<TData, TValue> = {\n\t\t\tid: 'actions',\n\t\t\theader: strings.actions.triggerLabel,\n\t\t\t// NOTE: just hand `rowActions` array, not a call\n\t\t\tcell: ({ row }: { row: { original: TData } }) => (\n\t\t\t\t<DataTableActions\n\t\t\t\t\trow={row.original}\n\t\t\t\t\tactions={rowActions}\n\t\t\t\t\tmenuLabel={resolvedRowActionsMenuLabel}\n\t\t\t\t\tdisplayMode={rowActionsDisplayMode}\n\t\t\t\t\tresponsiveBreakpoint={rowActionsBreakpoint}\n\t\t\t\t\tstrings={strings}\n\t\t\t\t/>\n\t\t\t),\n\t\t\tenableSorting: false,\n\t\t\tenableHiding: false,\n\t\t\tsize: 40,\n\t\t};\n\n\t\treturn [...baseColumns, actionCol];\n\t}, [\n\t\tresolvedColumns,\n\t\tenableRowSelection,\n\t\trowActions,\n\t\tresolvedRowActionsMenuLabel,\n\t\trowActionsBreakpoint,\n\t\trowActionsDisplayMode,\n\t\tstrings,\n\t]);\n\n\t// --- Configure table ---\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns: columnsWithActions,\n\t\tstate: { sorting, columnVisibility, rowSelection },\n\t\tenableSorting,\n\t\tmanualSorting,\n\t\tenableRowSelection,\n\t\tenableMultiRowSelection,\n\t\tenableSubRowSelection,\n\t\tonSortingChange:\n\t\t\tenableSorting && manualSorting ? handleSortingChangeCallback : undefined,\n\t\tonRowSelectionChange:\n\t\t\tenableRowSelection ? handleRowSelectionChangeCallback : undefined,\n\t\tonColumnVisibilityChange: handleVisibilityChangeCallback,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetRowId,\n\t});\n\n\t// --- Determine server pagination ---\n\tconst shouldShow = pagination && pagination.last_page > 1;\n\n\tconst Provider = DataTableSizeContext.Provider;\n\n\treturn (\n\t\t<Provider value={resolvedSize}>\n\t\t<div className={cn(\n\t\t\tdense\n\t\t\t\t? 'fixed inset-0 z-50 bg-background flex flex-col overflow-hidden p-6'\n\t\t\t\t: cn(\n\t\t\t\t\t'w-full min-w-0 max-w-full',\n\t\t\t\t\tsurface === 'card' &&\n\t\t\t\t\t\t'overflow-hidden rounded-lg border border-border bg-card shadow-[0_1px_3px_0_rgb(0_0_0/0.04)]',\n\t\t\t\t\tsurface === 'glass' &&\n\t\t\t\t\t\t'rounded-md overflow-hidden border border-border/60',\n\t\t\t\t\t// `flat` renders no chrome — consumer wraps.\n\t\t\t\t\twrapperClassName,\n\t\t\t\t),\n\t\t)}>\n\t\t\t{!!(topbarContent || enableColumnVisibility) && (\n\t\t\t\t<div className=\"relative\">\n\n <div className={cn(\n 'data-table-topbar flex items-end justify-between gap-4 px-5 py-3.5',\n dense ? 'mb-3 shrink-0' : 'mb-0',\n )}>\n <div className=\"data-table-topbar-left flex-1\">{topbarContent}</div>\n <div className=\"data-table-topbar-right flex items-center justify-end\">\n <DataTableToolbar\n table={table}\n tableAreaRef={tableAreaRef}\n dense={dense}\n onDenseChange={handleDenseChange}\n enableColumnVisibility={enableColumnVisibility}\n strings={strings}\n />\n </div>\n\n </div>\n <Separator />\n </div>\n\t\t\t)}\n\n\n\t\t\t<div\n\t\t\t\tref={tableAreaRef}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'',\n\t\t\t\t\tdense ? 'flex-1 overflow-auto min-h-0' : innerClassName,\n\t\t\t\t)}\n\t\t\t>\n\n\t\t\t\t<Table className={cn(\n\t\t\t\t\t'relative',\n\t\t\t\t\tsizeClassByDataTableSize[resolvedSize],\n\t\t\t\t\tclassName,\n\t\t\t\t)} containerClassName={tableContainerClassName}>\n\t\t\t\t\t<DataTableHeader\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tstickyHeader={stickyHeader}\n\t\t\t\t\t\theaderClassName={headerClassName}\n\t\t\t\t\t\tcellClassName={cellClassName}\n\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\tcolumnGroups={columnGroups}\n\t\t\t\t\t\tdense={dense}\n\t\t\t\t\t\theaderTransparent={headerTransparent}\n\t\t\t\t\t/>\n\t\t\t\t\t<DataTableBody\n\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\tonRowClick={onRowClick}\n\t\t\t\t\t\temptyStateMessage={resolvedEmptyStateMessage}\n\t\t\t\t\t\temptyStateAction={emptyStateAction}\n\t\t\t\t\t\tcellClassName={cellClassName}\n\t\t\t\t\t\trowClassName={tableRowClasses}\n\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\tdense={dense}\n\t\t\t\t\t/>\n\t\t\t\t</Table>\n\t\t\t</div>\n\t\t\t{!!shouldShow && (\n\t\t\t\t<>\n <Separator />\n <Pagination\n pagination={pagination}\n onPageChange={onPageChange}\n pageQueryKey={resolvedPageQueryKey}\n labels={strings.pagination}\n />\n </>\n\t\t\t)}\n\t\t</div>\n\t\t</Provider>\n\t);\n}\n\nDataTable.displayName = 'DataTable';\n","import { Button } from '@/components/base/buttons';\nimport { Input } from '@/components/base/forms/fields';\nimport {\n\tDropdownMenu,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuLabel,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableFilterBarProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\nexport function DataTableFilterBar<TData>({\n\t\t\t\t\t\t\t\t\t\t\t table,\n\t\t\t\t\t\t\t\t\t\t\t filterColumn,\n\t\t\t\t\t\t\t\t\t\t\t filterPlaceholder,\n\t\t\t\t\t\t\t\t\t\t\t enableColumnVisibility = false,\n\t\t\t\t\t\t\t\t\t\t\t customContent,\n\t\t\t\t\t\t\t\t\t\t strings = defaultDataTableStrings,\n\t\t\t\t\t\t\t\t\t }: DataTableFilterBarProps<TData>) {\n\tif (!filterColumn && !enableColumnVisibility && !customContent) {\n\t\treturn null;\n\t}\n\n\tconst searchPlaceholder = filterPlaceholder ?? strings.filter.searchPlaceholder;\n\n\treturn (\n\t\t<div className={cn('filter-bar--component', 'flex items-center justify-between p-4')}>\n\t\t\t<div className=\"flex flex-1 items-center space-x-2\">\n\t\t\t\t{/* Filter input */}\n\t\t\t\t{!!filterColumn && (\n\t <Input\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={(table.getColumn(filterColumn)?.getFilterValue() as string) ?? ''}\n\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\tconst value = event.target.value;\n\t\t\t\t\t\t\ttable.getColumn(filterColumn)?.setFilterValue(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"max-w-sm\"\n\t\t\t\t\t/>\n\t )}\n\n\t\t\t\t{/* Custom content */}\n\t\t\t\t{customContent}\n\t\t\t</div>\n\n\t\t\t{/* Column visibility toggle */}\n\t\t\t\t{!!enableColumnVisibility && (\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\t\t\tclassName=\"ml-auto\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{strings.columnVisibility.triggerLabel}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t\t\t<DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n\t\t\t\t\t\t\t{table\n\t\t\t\t\t\t\t\t.getAllColumns()\n\t\t\t\t\t\t\t\t.filter((column) => column.getCanHide())\n\t\t\t\t\t\t\t\t.map((column) => {\n\t\t\t\t\t\t\t\t\tconst header = column.columnDef.header;\n\t\t\t\t\t\t\t\t\tconst columnName = strings.columnVisibility.formatLabel(\n\t\t\t\t\t\t\t\t\t\tcolumn.id,\n\t\t\t\t\t\t\t\t\t\ttypeof header === 'string' ? header : undefined,\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\t\t\t\tkey={column.id}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"capitalize\"\n\t\t\t\t\t\t\t\t\t\t\tchecked={column.getIsVisible()}\n\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked) =>\n\t\t\t\t\t\t\t\t\t\t\t\tcolumn.toggleVisibility(!!checked)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{columnName}\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t</div>\n\t);\n}\n\nDataTableFilterBar.displayName = 'DataTableFilterBar';\n","import { Button } from '@/components/base/buttons';\nimport Text from '@/components/typography/text';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTablePaginationProps } from './table.types';\n\nimport { cn } from '@/lib/utils';\nexport function DataTablePagination({ table, selectedRowCount, totalRowCount, strings = defaultDataTableStrings }: DataTablePaginationProps) {\n // Use provided counts or get from table\n const selected = selectedRowCount ?? table.getFilteredSelectedRowModel().rows.length;\n const total = totalRowCount ?? table.getFilteredRowModel().rows.length;\n const summary = strings.selection.summary(selected, total);\n\n return (\n <div className={cn('table-pagination--component', 'flex items-center justify-end space-x-2 px-4 py-4')}>\n <div className=\"flex-1\">\n <Text type=\"secondary\">\n {summary}\n </Text>\n </div>\n <Button variant=\"secondary\" buttonStyle=\"outline\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n {strings.pagination.previous}\n </Button>\n <Button variant=\"secondary\" buttonStyle=\"outline\" onClick={() => table.nextPage()} disabled={!table.getCanNextPage()}>\n {strings.pagination.next}\n </Button>\n </div>\n );\n}\n\nDataTablePagination.displayName = 'DataTablePagination';\n","import { Settings2 } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nimport { defaultDataTableStrings } from './table.strings';\nimport { type ColumnVisibilityToggleProps } from './table.types';\n\nexport function ColumnVisibilityToggle<TData>({\n table,\n className,\n align = 'end',\n strings = defaultDataTableStrings,\n}: ColumnVisibilityToggleProps<TData>) {\n const columns = table.getAllColumns()\n .filter((column) => column.getCanHide());\n\n if (columns.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...triggerProps}\n variant=\"secondary\"\n buttonStyle=\"outline\"\n className={cn(\n 'column-visibility-toggle--component',\n 'h-8 flex items-center gap-2',\n \n (triggerProps as { className?: string }).className,\n className,\n )}\n >\n { }\n {(triggerProps as { children?: React.ReactNode }).children}\n </Button>\n )}\n >\n <Settings2 className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{strings.columnVisibility.triggerLabel}</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align={align} className=\"w-[200px]\">\n <DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n const header = column.columnDef.header;\n const columnName = strings.columnVisibility.formatLabel(\n column.id,\n typeof header === 'string' ? header : undefined,\n );\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(checked) => column.toggleVisibility(!!checked)}\n >\n {columnName}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nColumnVisibilityToggle.displayName = 'ColumnVisibilityToggle';\n","import type { ReactNode } from 'react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\ninterface CellValueProps {\n /** The value to display. When falsy, renders fallback with muted styling. */\n value?: string | number | null | undefined;\n /** Text shown when value is missing. Defaults to '--'. */\n fallback?: string;\n /** Force missing state regardless of value truthiness. */\n missing?: boolean;\n /** Additional class names (e.g. 'tabular-nums', 'font-mono'). */\n className?: string;\n /** Children override — when provided, renders children directly with missing styling applied. */\n children?: ReactNode;\n}\n\n/**\n * Table cell value with automatic missing-value treatment.\n *\n * When the value is falsy (or `missing` is explicitly true), renders\n * the fallback text at reduced opacity. Otherwise renders the value\n * with inherited table cell styling.\n *\n * @example\n * // Auto-detect missing\n * <CellValue value={phone} fallback={t('shared.tables.ui.empty')} />\n *\n * // Explicit missing flag\n * <CellValue missing={!defaultBusiness} fallback={t('vendors.tables.ui.no_default_business')} />\n *\n * // With formatting class\n * <CellValue value={date} className=\"tabular-nums\" />\n *\n * // Custom children with missing styling\n * <CellValue missing={!phone}>\n * {phone || 'No items to display'}\n * </CellValue>\n */\nexport function CellValue({ value, fallback = '--', missing, className, children }: CellValueProps) {\n const isMissing = missing ?? (value === null || value === undefined || value === '');\n\n if (children !== undefined) {\n return (\n <Text\n tag=\"span\"\n size=\"inherit\"\n type={isMissing ? 'secondary' : 'main'}\n className={cn(isMissing && 'opacity-60', className)}\n >\n {children}\n </Text>\n );\n }\n\n if (isMissing) {\n return (\n <Text tag=\"span\" size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n {fallback}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"inherit\" className={className}>\n {String(value)}\n </Text>\n );\n}\n\nCellValue.displayName = 'CellValue';\n","import type { AnchorHTMLAttributes } from 'react';\n\ntype TableLinkProps = AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const TableLink = (props: TableLinkProps) => {\n\treturn (\n\t\t<a\n\t\t\tclassName=\"text-foreground underline decoration-border decoration-dotted underline-offset-2 transition-colors duration-150 hover:text-foreground hover:decoration-muted-foreground\"\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\t\t</a>\n\t);\n};\n","/**\n * Reusable cell renderers for DataTable columns.\n *\n * Use these from `column.cell` definitions to keep table preview pages and\n * production code consistent. Every renderer is presentational (no data\n * fetching) and accepts the value plus optional formatting hints.\n *\n * { accessorKey: 'status', cell: ({ getValue }) => <StatusCell value={getValue()} map={STATUS_MAP} /> }\n * { accessorKey: 'createdAt', cell: ({ getValue }) => <DateCell value={getValue()} /> }\n * { accessorKey: 'amount', cell: ({ getValue }) => <CurrencyCell value={getValue()} currency=\"USD\" /> }\n * { accessorKey: 'owner', cell: ({ getValue }) => <AvatarCell name={getValue()} /> }\n */\nimport type { ComponentType, ReactNode } from 'react';\nimport { Calendar, Mail, type LucideIcon } from 'lucide-react';\n\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\n\n// ──────────────────────────────────────────────────────────────\n// StatusCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface StatusCellEntry {\n\tlabel: ReactNode;\n\tvariant?: ComposedBadgeVariant;\n\ticon?: LucideIcon;\n\tdot?: boolean;\n}\n\nexport interface StatusCellProps<TStatus extends string> {\n\tvalue?: TStatus | null;\n\tmap: Record<TStatus, StatusCellEntry>;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nexport function StatusCell<TStatus extends string>({\n\tvalue,\n\tmap,\n\temptyLabel = EMPTY,\n\tclassName,\n}: StatusCellProps<TStatus>) {\n\tif (!value || !(value in map)) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst entry = map[value];\n\tconst Icon = entry.icon;\n\treturn (\n\t\t<Badge\n\t\t\tvariant={entry.variant ?? 'secondary'}\n\t\t\tclassName={cn('gap-1.5', className)}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-3\" />}\n\t\t\t{entry.label}\n\t\t</Badge>\n\t);\n}\n\nStatusCell.displayName = 'StatusCell';\n\n// ──────────────────────────────────────────────────────────────\n// DateCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface DateCellProps {\n\tvalue?: string | number | Date | null;\n\t/** A Intl.DateTimeFormatOptions preset. Default: short month + day + year. */\n\toptions?: Intl.DateTimeFormatOptions;\n\tlocale?: string;\n\tshowIcon?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nconst DEFAULT_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n\tmonth: 'short',\n\tday: 'numeric',\n\tyear: 'numeric',\n};\n\nexport function DateCell({\n\tvalue,\n\toptions = DEFAULT_DATE_OPTIONS,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n}: DateCellProps) {\n\tif (value === null || value === undefined || value === '') {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst date = value instanceof Date ? value : new Date(value);\n\tif (Number.isNaN(date.getTime())) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst formatter = new Intl.DateTimeFormat(locale, options);\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-1.5 tabular-nums', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"size-3.5 text-muted-foreground\" />}\n\t\t\t<Text size=\"inherit\" type=\"secondary\">\n\t\t\t\t{formatter.format(date)}\n\t\t\t</Text>\n\t\t</span>\n\t);\n}\n\nDateCell.displayName = 'DateCell';\n\n// ──────────────────────────────────────────────────────────────\n// CurrencyCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface CurrencyCellProps {\n\tvalue?: number | string | null;\n\tcurrency?: string;\n\tlocale?: string;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n\tweight?: 'regular' | 'medium' | 'semibold' | 'bold';\n}\n\nexport function CurrencyCell({\n\tvalue,\n\tcurrency,\n\tlocale,\n\temptyLabel = EMPTY,\n\tclassName,\n\tweight = 'semibold',\n}: CurrencyCellProps) {\n\tconst numeric = typeof value === 'number' ? value : Number.parseFloat(String(value ?? ''));\n\tif (!Number.isFinite(numeric)) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\tconst formatted = currency\n\t\t? new Intl.NumberFormat(locale, {\n\t\t\t\tstyle: 'currency',\n\t\t\t\tcurrency,\n\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t}).format(numeric)\n\t\t: numeric.toFixed(2);\n\treturn (\n\t\t<Text\n\t\t\ttag=\"span\"\n\t\t\tsize=\"inherit\"\n\t\t\tweight={weight}\n\t\t\tclassName={cn('tabular-nums', className)}\n\t\t>\n\t\t\t{formatted}\n\t\t</Text>\n\t);\n}\n\nCurrencyCell.displayName = 'CurrencyCell';\n\n// ──────────────────────────────────────────────────────────────\n// AvatarCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface AvatarCellProps {\n\tname?: string | null;\n\timageUrl?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tsubtitle?: ReactNode;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n}\n\nfunction getInitials(name: string): string {\n\treturn name\n\t\t.split(/\\s+/)\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.map((p) => p[0]!.toUpperCase())\n\t\t.join('');\n}\n\nexport function AvatarCell({\n\tname,\n\timageUrl,\n\ticon: IconComponent = Mail,\n\tsubtitle,\n\temptyLabel = EMPTY,\n\tclassName,\n}: AvatarCellProps) {\n\tif (!name || name.trim().length === 0) {\n\t\treturn (\n\t\t\t<Text size=\"inherit\" type=\"secondary\" className={cn('opacity-60', className)}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-2', className)}>\n\t\t\t<span className=\"relative inline-flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground\">\n\t\t\t\t{imageUrl ? (\n\t\t\t\t\t<img src={imageUrl} alt={name} className=\"absolute inset-0 size-full object-cover\" />\n\t\t\t\t) : name.length > 0 ? (\n\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"leading-none\">\n\t\t\t\t\t\t{getInitials(name)}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<IconComponent className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t<span className=\"min-w-0 inline-flex flex-col\">\n\t\t\t\t<Text size=\"inherit\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{!!subtitle && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</span>\n\t);\n}\n\nAvatarCell.displayName = 'AvatarCell';\n","/**\n * Reusable hooks for DataTable consumers building custom toolbars or chrome.\n *\n * The default `DataTableToolbar` already wires these internally; expose them\n * for consumers that need horizontal-scroll arrows / dense toggle in a\n * custom layout (e.g. inside a hero banner above the table).\n */\nimport { useCallback, useEffect, useRef, useState, type RefObject } from 'react';\n\nconst SCROLL_AMOUNT_DEFAULT = 300;\n\n/**\n * Locate the actual horizontally-scrollable element inside a `tableArea`\n * wrapper. The shadcn-style Table primitive renders a\n * `<div data-slot=\"table-container\" class=\"overflow-x-auto\">` we target.\n */\nexport function getDataTableScrollContainer(\n\ttableArea: HTMLDivElement | null,\n): HTMLDivElement | null {\n\tif (!tableArea) return null;\n\treturn tableArea.querySelector<HTMLDivElement>('[data-slot=\"table-container\"]');\n}\n\nexport interface UseDataTableScrollStateReturn {\n\tcanScrollLeft: boolean;\n\tcanScrollRight: boolean;\n\tscrollBy: (delta: number) => void;\n\tscrollLeft: () => void;\n\tscrollRight: () => void;\n}\n\n/**\n * Track horizontal-overflow state for a DataTable wrapper. Returns booleans\n * for whether each scroll direction is available, plus helpers to nudge the\n * scroll container by a fixed amount.\n *\n * Pass the same `RefObject<HTMLDivElement>` you pass to `<DataTable>` as\n * `tableAreaRef`.\n */\nexport function useDataTableScrollState(\n\ttableAreaRef: RefObject<HTMLDivElement | null>,\n\toptions: { stepPx?: number; deps?: ReadonlyArray<unknown> } = {},\n): UseDataTableScrollStateReturn {\n\tconst { stepPx = SCROLL_AMOUNT_DEFAULT, deps = [] } = options;\n\tconst [canScrollLeft, setCanScrollLeft] = useState(false);\n\tconst [canScrollRight, setCanScrollRight] = useState(false);\n\tconst rafRef = useRef(0);\n\n\tconst measure = useCallback(() => {\n\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\tif (!el) {\n\t\t\tsetCanScrollLeft(false);\n\t\t\tsetCanScrollRight(false);\n\t\t\treturn;\n\t\t}\n\t\tconst { scrollLeft, scrollWidth, clientWidth } = el;\n\t\tsetCanScrollLeft(scrollLeft > 1);\n\t\tsetCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n\t}, [tableAreaRef]);\n\n\tuseEffect(() => {\n\t\tconst timerId = window.setTimeout(() => {\n\t\t\tconst el = getDataTableScrollContainer(tableAreaRef.current);\n\t\t\tif (!el) return;\n\n\t\t\tmeasure();\n\n\t\t\tconst handleScroll = () => {\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\trafRef.current = requestAnimationFrame(measure);\n\t\t\t};\n\n\t\t\tel.addEventListener('scroll', handleScroll, { passive: true });\n\t\t\tconst ro = new ResizeObserver(measure);\n\t\t\tro.observe(el);\n\t\t\tif (el.firstElementChild) ro.observe(el.firstElementChild);\n\n\t\t\treturn () => {\n\t\t\t\tel.removeEventListener('scroll', handleScroll);\n\t\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\t\tro.disconnect();\n\t\t\t};\n\t\t}, 0);\n\n\t\treturn () => window.clearTimeout(timerId);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [tableAreaRef, measure, ...deps]);\n\n\tconst scrollBy = useCallback(\n\t\t(delta: number) => {\n\t\t\tgetDataTableScrollContainer(tableAreaRef.current)?.scrollBy({\n\t\t\t\tleft: delta,\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\t\t},\n\t\t[tableAreaRef],\n\t);\n\n\tconst scrollLeft = useCallback(() => scrollBy(-stepPx), [scrollBy, stepPx]);\n\tconst scrollRight = useCallback(() => scrollBy(stepPx), [scrollBy, stepPx]);\n\n\treturn { canScrollLeft, canScrollRight, scrollBy, scrollLeft, scrollRight };\n}\n\n/**\n * localStorage-backed boolean state for the dense / comfortable toggle.\n * `null` storageKey disables persistence (the value is purely in-memory).\n */\nexport function usePersistentDensity(\n\tstorageKey: string | null,\n\tdefaultDense = false,\n): [boolean, (next: boolean) => void] {\n\tconst initial = (() => {\n\t\tif (!storageKey || typeof window === 'undefined') return defaultDense;\n\t\ttry {\n\t\t\tconst raw = window.localStorage.getItem(storageKey);\n\t\t\tif (raw === '1') return true;\n\t\t\tif (raw === '0') return false;\n\t\t\treturn defaultDense;\n\t\t} catch {\n\t\t\treturn defaultDense;\n\t\t}\n\t})();\n\n\tconst [dense, setDenseState] = useState(initial);\n\n\tconst setDense = useCallback(\n\t\t(next: boolean) => {\n\t\t\tsetDenseState(next);\n\t\t\tif (storageKey && typeof window !== 'undefined') {\n\t\t\t\ttry {\n\t\t\t\t\twindow.localStorage.setItem(storageKey, next ? '1' : '0');\n\t\t\t\t} catch {\n\t\t\t\t\t/* ignore quota / disabled-storage errors */\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[storageKey],\n\t);\n\n\treturn [dense, setDense];\n}\n","/**\n * DensityToggle — small icon button that flips between \"dense\" and\n * \"comfortable\" table modes. Stateless: render-time `dense` boolean +\n * `onChange` callback. Pair with `usePersistentDensity` from `../hooks`\n * when you want to persist the choice to localStorage.\n *\n * Used internally by `DataTableToolbar`; exposed for consumers building\n * custom toolbars.\n */\nimport { Maximize2, Minimize2 } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nconst buttonClass =\n\t'inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-30';\n\nexport interface DensityToggleProps {\n\tdense: boolean;\n\tonChange: (next: boolean) => void;\n\tdenseLabel?: string;\n\tcomfortableLabel?: string;\n\tclassName?: string;\n}\n\nexport function DensityToggle({\n\tdense,\n\tonChange,\n\tdenseLabel = 'Dense',\n\tcomfortableLabel = 'Comfortable',\n\tclassName,\n}: DensityToggleProps) {\n\tconst label = dense ? comfortableLabel : denseLabel;\n\tconst Icon = dense ? Maximize2 : Minimize2;\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\taria-label={label}\n\t\t\taria-pressed={dense}\n\t\t\tonClick={() => onChange(!dense)}\n\t\t\tclassName={cn(buttonClass, className)}\n\t\t>\n\t\t\t<Icon className=\"size-3.5\" />\n\t\t</button>\n\t);\n}\n\nDensityToggle.displayName = 'DensityToggle';\n"],"mappings":"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"}
|