admin-ui-starter-kit 0.6.8 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/admin-ui-consumer-migration/SKILL.md +29 -1
- package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +14 -0
- package/.agents/skills/admin-ui-consumer-migration/references/theme-overrides.md +172 -0
- package/.agents/skills/component-library-rules/SKILL.md +5 -4
- package/.agents/skills/component-library-rules/references/components/INDEX.json +22 -3
- package/.agents/skills/component-library-rules/references/components/INDEX.md +21 -2
- package/.agents/skills/component-library-rules/references/components/base__avatar.md +3 -3
- package/.agents/skills/component-library-rules/references/components/base__carousel.md +8 -5
- package/.agents/skills/component-library-rules/references/components/base__css-variables.md +1 -0
- package/.agents/skills/component-library-rules/references/components/base__currency.md +10 -11
- package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +15 -8
- package/.agents/skills/component-library-rules/references/components/base__item.md +7 -7
- package/.agents/skills/component-library-rules/references/components/base__money-display.md +4 -0
- package/.agents/skills/component-library-rules/references/components/base__typography.md +3 -3
- package/.agents/skills/component-library-rules/references/components/composed__commerce-address-card.md +74 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-cart-summary.md +84 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-coupon-input.md +52 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-discount-stack.md +58 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-inventory-section.md +168 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-loyalty-points.md +60 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-order-status.md +62 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-payment-method.md +58 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-refund-status.md +58 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-seo-listing.md +106 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-shipment-tracking.md +65 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-subscription-summary.md +66 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-tax-breakdown.md +60 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-upcoming-booking.md +62 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-voucher-entry.md +60 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +29 -143
- package/.agents/skills/component-library-rules/references/components/features__products.md +18 -462
- package/.agents/skills/component-library-rules/references/components/features__products__actions.md +37 -0
- package/.agents/skills/component-library-rules/references/components/features__products__support-rail.md +73 -0
- package/.agents/skills/component-library-rules/references/components/features__products__variant-details.md +97 -0
- package/.agents/skills/component-library-rules/references/components/features__products__variant-management.md +269 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +1 -1
- package/.agents/skills/component-library-rules/references/testing.md +1 -1
- package/.agents/skills/token-system/SKILL.md +4 -1
- package/AGENTS.md +4 -3
- package/COMPONENT_SELECTION.md +15 -0
- package/INTEGRATION.md +41 -2
- package/MIGRATION.md +7 -7
- package/README.md +7 -3
- package/dist/_shared/accordion-CSRRDWVZ.js +135 -0
- package/dist/_shared/accordion-CSRRDWVZ.js.map +1 -0
- package/dist/_shared/accordion-ClVkIaCy.cjs +2 -0
- package/dist/_shared/accordion-ClVkIaCy.cjs.map +1 -0
- package/dist/_shared/action-menu-8RN2_Jdr.js +96 -0
- package/dist/_shared/action-menu-8RN2_Jdr.js.map +1 -0
- package/dist/_shared/action-menu-Cx2xaBjN.cjs +2 -0
- package/dist/_shared/action-menu-Cx2xaBjN.cjs.map +1 -0
- package/dist/_shared/ai-artifact-BO0XGFHz.cjs +3 -0
- package/dist/_shared/ai-artifact-BO0XGFHz.cjs.map +1 -0
- package/dist/_shared/ai-artifact-CbsGR1t8.js +1099 -0
- package/dist/_shared/ai-artifact-CbsGR1t8.js.map +1 -0
- package/dist/_shared/auth-CwipRgNB.cjs +2 -0
- package/dist/_shared/auth-CwipRgNB.cjs.map +1 -0
- package/dist/_shared/auth-Wipu0Oa_.js +643 -0
- package/dist/_shared/auth-Wipu0Oa_.js.map +1 -0
- package/dist/_shared/badge-B0Ashqkn.cjs +2 -0
- package/dist/_shared/badge-B0Ashqkn.cjs.map +1 -0
- package/dist/_shared/badge-DOJpEtsa.js +110 -0
- package/dist/_shared/badge-DOJpEtsa.js.map +1 -0
- package/dist/_shared/breadcrumbs-C7PI8sxx.cjs +2 -0
- package/dist/_shared/breadcrumbs-C7PI8sxx.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-xNjbIrGc.js +105 -0
- package/dist/_shared/breadcrumbs-xNjbIrGc.js.map +1 -0
- package/dist/_shared/button-CB8e7fui.cjs +2 -0
- package/dist/_shared/button-CB8e7fui.cjs.map +1 -0
- package/dist/_shared/button-CNEMqDHK.js +192 -0
- package/dist/_shared/button-CNEMqDHK.js.map +1 -0
- package/dist/_shared/buttons-BCFKQuB5.js +137 -0
- package/dist/_shared/buttons-BCFKQuB5.js.map +1 -0
- package/dist/_shared/buttons-DHj5I2YL.cjs +2 -0
- package/dist/_shared/buttons-DHj5I2YL.cjs.map +1 -0
- package/dist/_shared/card-radio-group-DdubYUJ6.cjs +2 -0
- package/dist/_shared/card-radio-group-DdubYUJ6.cjs.map +1 -0
- package/dist/_shared/card-radio-group-Du6rzuoC.js +150 -0
- package/dist/_shared/card-radio-group-Du6rzuoC.js.map +1 -0
- package/dist/_shared/cards-B7voInTJ.js +430 -0
- package/dist/_shared/cards-B7voInTJ.js.map +1 -0
- package/dist/_shared/cards-DvE5gRFf.cjs +2 -0
- package/dist/_shared/cards-DvE5gRFf.cjs.map +1 -0
- package/dist/_shared/combobox-AbXh9ft4.cjs +2 -0
- package/dist/_shared/combobox-AbXh9ft4.cjs.map +1 -0
- package/dist/_shared/combobox-ImXiC1qy.js +957 -0
- package/dist/_shared/combobox-ImXiC1qy.js.map +1 -0
- package/dist/_shared/command-B-Yokco3.js +39 -0
- package/dist/_shared/command-B-Yokco3.js.map +1 -0
- package/dist/_shared/command-kcPx4TM_.cjs +2 -0
- package/dist/_shared/command-kcPx4TM_.cjs.map +1 -0
- package/dist/_shared/comments-BR5ENvoo.cjs +2 -0
- package/dist/_shared/comments-BR5ENvoo.cjs.map +1 -0
- package/dist/_shared/comments-a3l--GJ-.js +952 -0
- package/dist/_shared/comments-a3l--GJ-.js.map +1 -0
- package/dist/_shared/containers-8ryMAXNr.js +48 -0
- package/dist/_shared/containers-8ryMAXNr.js.map +1 -0
- package/dist/_shared/containers-BcrM8-22.cjs +2 -0
- package/dist/_shared/containers-BcrM8-22.cjs.map +1 -0
- package/dist/_shared/copyable-C0KJlRVr.js +38 -0
- package/dist/_shared/copyable-C0KJlRVr.js.map +1 -0
- package/dist/_shared/copyable-tJxsOyn-.cjs +2 -0
- package/dist/_shared/copyable-tJxsOyn-.cjs.map +1 -0
- package/dist/_shared/data-display-B9Lciun3.cjs +2 -0
- package/dist/_shared/data-display-B9Lciun3.cjs.map +1 -0
- package/dist/_shared/data-display-CYmwUdmU.js +1878 -0
- package/dist/_shared/data-display-CYmwUdmU.js.map +1 -0
- package/dist/_shared/date-picker-BaPDfs1p.js +1361 -0
- package/dist/_shared/date-picker-BaPDfs1p.js.map +1 -0
- package/dist/_shared/date-picker-DrkoZZdr.cjs +2 -0
- package/dist/_shared/date-picker-DrkoZZdr.cjs.map +1 -0
- package/dist/_shared/date-pickers-CT3aZpPn.cjs +2 -0
- package/dist/_shared/date-pickers-CT3aZpPn.cjs.map +1 -0
- package/dist/_shared/date-pickers-DRp0VM7k.js +329 -0
- package/dist/_shared/date-pickers-DRp0VM7k.js.map +1 -0
- package/dist/_shared/display-BHIs_Y_j.js +1006 -0
- package/dist/_shared/display-BHIs_Y_j.js.map +1 -0
- package/dist/_shared/display-DV7n0KA1.cjs +2 -0
- package/dist/_shared/display-DV7n0KA1.cjs.map +1 -0
- package/dist/_shared/dropdown-menu-5fFMhKo4.js +147 -0
- package/dist/_shared/dropdown-menu-5fFMhKo4.js.map +1 -0
- package/dist/_shared/dropdown-menu-B_SCGRL2.cjs +2 -0
- package/dist/_shared/dropdown-menu-B_SCGRL2.cjs.map +1 -0
- package/dist/_shared/form-sizing-VNEGzvM7.js +42 -0
- package/dist/_shared/form-sizing-VNEGzvM7.js.map +1 -0
- package/dist/_shared/form-sizing-lBFpJWv4.cjs +2 -0
- package/dist/_shared/form-sizing-lBFpJWv4.cjs.map +1 -0
- package/dist/_shared/forms-B7LYVbAy.cjs +2 -0
- package/dist/_shared/forms-B7LYVbAy.cjs.map +1 -0
- package/dist/_shared/forms-C5uZX_kQ.js +3534 -0
- package/dist/_shared/forms-C5uZX_kQ.js.map +1 -0
- package/dist/_shared/header-B4wGB6Ca.cjs +2 -0
- package/dist/_shared/header-B4wGB6Ca.cjs.map +1 -0
- package/dist/_shared/header-CWyOry0f.js +447 -0
- package/dist/_shared/header-CWyOry0f.js.map +1 -0
- package/dist/_shared/hooks-B4Cop5YI.cjs +2 -0
- package/dist/_shared/hooks-B4Cop5YI.cjs.map +1 -0
- package/dist/_shared/hooks-CFUZJW_S.js +95 -0
- package/dist/_shared/hooks-CFUZJW_S.js.map +1 -0
- package/dist/_shared/icon-size-CMNigtUu.js +15 -0
- package/dist/_shared/icon-size-CMNigtUu.js.map +1 -0
- package/dist/_shared/icon-size-D2NnYd0K.cjs +2 -0
- package/dist/_shared/icon-size-D2NnYd0K.cjs.map +1 -0
- package/dist/_shared/input-BEhrcsk7.js +182 -0
- package/dist/_shared/input-BEhrcsk7.js.map +1 -0
- package/dist/_shared/input-DGvh-izk.cjs +2 -0
- package/dist/_shared/input-DGvh-izk.cjs.map +1 -0
- package/dist/_shared/item-BG2iK1sy.cjs +2 -0
- package/dist/_shared/item-BG2iK1sy.cjs.map +1 -0
- package/dist/_shared/item-D75eGy8G.js +227 -0
- package/dist/_shared/item-D75eGy8G.js.map +1 -0
- package/dist/_shared/layout-CZVEJ3p_.cjs +2 -0
- package/dist/_shared/layout-CZVEJ3p_.cjs.map +1 -0
- package/dist/_shared/layout-D75TJTaD.js +268 -0
- package/dist/_shared/layout-D75TJTaD.js.map +1 -0
- package/dist/_shared/mentions-CWqC8Xds.js +506 -0
- package/dist/_shared/mentions-CWqC8Xds.js.map +1 -0
- package/dist/_shared/mentions-wtkrL2hX.cjs +2 -0
- package/dist/_shared/mentions-wtkrL2hX.cjs.map +1 -0
- package/dist/_shared/money-display-BabyaIWb.js +198 -0
- package/dist/_shared/money-display-BabyaIWb.js.map +1 -0
- package/dist/_shared/money-display-CrNRbByx.cjs +2 -0
- package/dist/_shared/money-display-CrNRbByx.cjs.map +1 -0
- package/dist/_shared/navigation-9DB-vtGI.js +436 -0
- package/dist/_shared/navigation-9DB-vtGI.js.map +1 -0
- package/dist/_shared/navigation-DAjFLSv5.cjs +2 -0
- package/dist/_shared/navigation-DAjFLSv5.cjs.map +1 -0
- package/dist/_shared/overlays-BK0J8zSv.cjs +2 -0
- package/dist/_shared/overlays-BK0J8zSv.cjs.map +1 -0
- package/dist/_shared/overlays-DKsXufDv.js +735 -0
- package/dist/_shared/overlays-DKsXufDv.js.map +1 -0
- package/dist/_shared/popover-menu-DXh14PIu.js +93 -0
- package/dist/_shared/popover-menu-DXh14PIu.js.map +1 -0
- package/dist/_shared/popover-menu-DkjPUZ4v.cjs +2 -0
- package/dist/_shared/popover-menu-DkjPUZ4v.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-DjZTJzdm.cjs +2 -0
- package/dist/_shared/rich-text-editor-DjZTJzdm.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-DloyZq46.js +620 -0
- package/dist/_shared/rich-text-editor-DloyZq46.js.map +1 -0
- package/dist/_shared/separator-BXn_fnly.cjs +2 -0
- package/dist/_shared/separator-BXn_fnly.cjs.map +1 -0
- package/dist/_shared/separator-DiH-j--f.js +20 -0
- package/dist/_shared/separator-DiH-j--f.js.map +1 -0
- package/dist/_shared/settings-AIgixHbB.cjs +2 -0
- package/dist/_shared/settings-AIgixHbB.cjs.map +1 -0
- package/dist/_shared/settings-D3KdypJk.js +143 -0
- package/dist/_shared/settings-D3KdypJk.js.map +1 -0
- package/dist/_shared/sidebar-BzBincq3.js +548 -0
- package/dist/_shared/sidebar-BzBincq3.js.map +1 -0
- package/dist/_shared/sidebar-D5NLbyow.cjs +2 -0
- package/dist/_shared/sidebar-D5NLbyow.cjs.map +1 -0
- package/dist/_shared/skeleton-Bc_qa5l_.js +256 -0
- package/dist/_shared/skeleton-Bc_qa5l_.js.map +1 -0
- package/dist/_shared/skeleton-Wq6G0Kya.cjs +2 -0
- package/dist/_shared/skeleton-Wq6G0Kya.cjs.map +1 -0
- package/dist/_shared/spinner-C-yoZUk-.cjs +2 -0
- package/dist/_shared/spinner-C-yoZUk-.cjs.map +1 -0
- package/dist/_shared/spinner-CDVWFN0N.js +67 -0
- package/dist/_shared/spinner-CDVWFN0N.js.map +1 -0
- package/dist/_shared/table-B70kyH2E.js +1377 -0
- package/dist/_shared/table-B70kyH2E.js.map +1 -0
- package/dist/_shared/table-DQA2m2F0.cjs +2 -0
- package/dist/_shared/table-DQA2m2F0.cjs.map +1 -0
- package/dist/_shared/textarea-Dx9yEZY2.js +118 -0
- package/dist/_shared/textarea-Dx9yEZY2.js.map +1 -0
- package/dist/_shared/textarea-rfnSeHHC.cjs +2 -0
- package/dist/_shared/textarea-rfnSeHHC.cjs.map +1 -0
- package/dist/_shared/typography-C_kCoR1d.js +204 -0
- package/dist/_shared/typography-C_kCoR1d.js.map +1 -0
- package/dist/_shared/typography-sXFd02zl.cjs +2 -0
- package/dist/_shared/typography-sXFd02zl.cjs.map +1 -0
- package/dist/_shared/workspace-Bw-k_HXQ.js +357 -0
- package/dist/_shared/workspace-Bw-k_HXQ.js.map +1 -0
- package/dist/_shared/workspace-CLUsYC5y.cjs +2 -0
- package/dist/_shared/workspace-CLUsYC5y.cjs.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +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/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/carousel/carousel.d.ts.map +1 -1
- package/dist/components/base/carousel/index.cjs +1 -1
- package/dist/components/base/carousel/index.cjs.map +1 -1
- package/dist/components/base/carousel/index.js +98 -97
- package/dist/components/base/carousel/index.js.map +1 -1
- package/dist/components/base/combobox/components/combobox-dropdown.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/command/command.d.ts +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +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/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/display/alert.d.ts.map +1 -1
- package/dist/components/base/display/chart.cjs +1 -1
- package/dist/components/base/display/chart.js +1 -1
- package/dist/components/base/display/icon-size.d.ts +6 -0
- package/dist/components/base/display/icon-size.d.ts.map +1 -0
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.d.ts +1 -0
- package/dist/components/base/display/index.d.ts.map +1 -1
- package/dist/components/base/display/index.js +10 -9
- package/dist/components/base/display/separator.d.ts +10 -1
- package/dist/components/base/display/separator.d.ts.map +1 -1
- package/dist/components/base/display/throttle-alert.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 +4 -4
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +5 -5
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/item/item.d.ts.map +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 +3 -3
- package/dist/components/base/map/index.js.map +1 -1
- package/dist/components/base/map/map.d.ts +1 -1
- package/dist/components/base/map/map.d.ts.map +1 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +33 -1
- package/dist/components/base/navigation/dropdown-menu.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/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +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/index.cjs +1 -1
- package/dist/components/base/table/index.js +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 +10 -11
- package/dist/components/composed/admin/index.js.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 +9 -10
- package/dist/components/composed/ai/index.js.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 +4 -4
- package/dist/components/composed/analytics/index.js.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 +13 -15
- package/dist/components/composed/cards/index.js.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.d.ts +2 -0
- package/dist/components/composed/commerce/index.d.ts.map +1 -1
- package/dist/components/composed/commerce/index.js +1246 -382
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/inventory-section/index.d.ts +3 -0
- package/dist/components/composed/commerce/inventory-section/index.d.ts.map +1 -0
- package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts +6 -0
- package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts.map +1 -0
- package/dist/components/composed/commerce/inventory-section/types.d.ts +85 -0
- package/dist/components/composed/commerce/inventory-section/types.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/index.d.ts +4 -0
- package/dist/components/composed/commerce/seo-listing/index.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts +6 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts +6 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/types.d.ts +68 -0
- package/dist/components/composed/commerce/seo-listing/types.d.ts.map +1 -0
- 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 +8 -8
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.js +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 +5 -6
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.js +3 -3
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.js +3 -3
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.js +5 -5
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.js +5 -5
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.js +4 -4
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/data-view/index.cjs +1 -1
- package/dist/components/features/data-view/index.js +2 -2
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.js +4 -4
- 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 +64 -64
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +4 -4
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.js +3 -3
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.cjs.map +1 -1
- package/dist/components/features/media-library/index.js +230 -206
- package/dist/components/features/media-library/index.js.map +1 -1
- package/dist/components/features/media-library/media-library.d.ts.map +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
- package/dist/components/features/media-library/media-library.strings.d.ts.map +1 -1
- package/dist/components/features/media-library/partials/media-library-partials.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/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/products/components/index.d.ts +3 -0
- package/dist/components/features/products/components/index.d.ts.map +1 -1
- package/dist/components/features/products/components/product-options-matrix.d.ts +6 -0
- package/dist/components/features/products/components/product-options-matrix.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variants-bulk-table.d.ts +6 -0
- package/dist/components/features/products/components/product-variants-bulk-table.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variants-manager.d.ts +6 -0
- package/dist/components/features/products/components/product-variants-manager.d.ts.map +1 -0
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.cjs.map +1 -1
- package/dist/components/features/products/index.js +1705 -511
- package/dist/components/features/products/index.js.map +1 -1
- package/dist/components/features/products/products.strings.d.ts +70 -0
- package/dist/components/features/products/products.strings.d.ts.map +1 -1
- package/dist/components/features/products/products.types.d.ts +163 -1
- package/dist/components/features/products/products.types.d.ts.map +1 -1
- package/dist/components/features/resource/index.cjs +1 -1
- package/dist/components/features/resource/index.js +5 -5
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.js +8 -8
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.js +2 -2
- package/dist/components/layout/auth/index.cjs +1 -1
- package/dist/components/layout/auth/index.js +1 -1
- package/dist/components/layout/containers/index.cjs +1 -1
- package/dist/components/layout/containers/index.js +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +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.js +8 -8
- 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/settings/index.cjs +1 -1
- package/dist/components/layout/settings/index.js +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +1 -1
- package/dist/components/typography/text-link.d.ts +3 -1
- package/dist/components/typography/text-link.d.ts.map +1 -1
- package/dist/components/typography/text.d.ts.map +1 -1
- package/dist/lib/ui-provider/types.d.ts +1 -1
- package/dist/lib/ui-provider/types.d.ts.map +1 -1
- package/dist/lib/utils.cjs +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/actions/index.cjs +1 -1
- package/dist/services/actions/index.js +1 -1
- package/dist/showcase/assets/AreaChart-iGBzUSAV.js +6 -0
- package/dist/showcase/assets/CompositeItem-1e8qsdC5.js +1 -0
- package/dist/showcase/assets/CompositeRoot-DneCUh3i.js +1 -0
- package/dist/showcase/assets/DialogTrigger-CVhas4X-.js +1 -0
- package/dist/showcase/assets/LabelableContext-Bfc22fLa.js +1 -0
- package/dist/showcase/assets/MenuTrigger-WTiiOMpe.js +1 -0
- package/dist/showcase/assets/PreviewLayout-ClbLOtTa.js +1 -0
- package/dist/showcase/assets/RadioGroup-DEBYMgi5.js +1 -0
- package/dist/showcase/assets/ScrollAreaCorner-CilamsvS.js +1 -0
- package/dist/showcase/assets/Separator-DSecBOlo.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-BY_Czi0-.js +1 -0
- package/dist/showcase/assets/accordion-FV2cJ9V1.js +171 -0
- package/dist/showcase/assets/accordion-variants-DRNuXgFT.js +1 -0
- package/dist/showcase/assets/action-menu-uhMTzBIl.js +1 -0
- package/dist/showcase/assets/actions-C3kChFSc.js +310 -0
- package/dist/showcase/assets/actions-DizTzuf8.js +38 -0
- package/dist/showcase/assets/activities-DQ7u_XKr.js +500 -0
- package/dist/showcase/assets/activities-feed-card-DoxFXr20.js +1 -0
- package/dist/showcase/assets/admin-CRVq1bj-.js +140 -0
- package/dist/showcase/assets/ai-DMBh2BKA.js +207 -0
- package/dist/showcase/assets/ai-artifact-DnSz7Xj1.js +2 -0
- package/dist/showcase/assets/ai-chat-Ba60tj9x.js +568 -0
- package/dist/showcase/assets/ai-elements-CaMbMARm.js +387 -0
- package/dist/showcase/assets/ai-tool-call-Cg11pnXq.js +1 -0
- package/dist/showcase/assets/alert-AeDTPQQ5.js +62 -0
- package/dist/showcase/assets/alert-BQucj-0f.js +1 -0
- package/dist/showcase/assets/alert-DY0yMYc3.js +93 -0
- package/dist/showcase/assets/api-key-list-DZiVRCkz.js +73 -0
- package/dist/showcase/assets/api-key-list-DuoC5nyO.js +1 -0
- package/dist/showcase/assets/app-sidebar-D_RbOUZC.js +1 -0
- package/dist/showcase/assets/arrow-down-J_5dmfVv.js +1 -0
- package/dist/showcase/assets/arrow-left-DeKmFjyi.js +1 -0
- package/dist/showcase/assets/arrow-right-ztHj2bIY.js +1 -0
- package/dist/showcase/assets/arrow-up-CCenfeVW.js +1 -0
- package/dist/showcase/assets/arrow-up-right-URGvP7LF.js +1 -0
- package/dist/showcase/assets/avatar-CTFW3AQa.js +1 -0
- package/dist/showcase/assets/avatar-DH3vm33j.js +1 -0
- package/dist/showcase/assets/avatar-DRi6ZWB2.js +67 -0
- package/dist/showcase/assets/avatar-eEOgFI6D.js +57 -0
- package/dist/showcase/assets/badge-C9RqIyT7.js +31 -0
- package/dist/showcase/assets/badge-check-CRkt0WPY.js +1 -0
- package/dist/showcase/assets/bell-B-bFEx5I.js +1 -0
- package/dist/showcase/assets/boolean-indicator-CD3scHDz.js +1 -0
- package/dist/showcase/assets/bot-DbSsnrvR.js +1 -0
- package/dist/showcase/assets/box-BDLbaerX.js +1 -0
- package/dist/showcase/assets/braces-nP1Ffv07.js +1 -0
- package/dist/showcase/assets/brain-B69nRyRF.js +1 -0
- package/dist/showcase/assets/brand-WHRuwaVX.js +36 -0
- package/dist/showcase/assets/breadcrumb-CYxS57Ko.js +1 -0
- package/dist/showcase/assets/breadcrumb-viDsLdax.js +52 -0
- package/dist/showcase/assets/breadcrumbs-CX6eCwn4.js +1 -0
- package/dist/showcase/assets/briefcase-BCMmOuh2.js +1 -0
- package/dist/showcase/assets/building-2-DCSQxFoC.js +1 -0
- package/dist/showcase/assets/button-It_u4rRb.js +44 -0
- package/dist/showcase/assets/button-group-B2NgHAyn.js +1 -0
- package/dist/showcase/assets/buttons-ClK1qR3J.js +272 -0
- package/dist/showcase/assets/calendar-CX89JdTd.js +16 -0
- package/dist/showcase/assets/calendar-DV83xhzB.js +1 -0
- package/dist/showcase/assets/calendar-HrkenM2F.js +1 -0
- package/dist/showcase/assets/calendar-days-O55Ncg5j.js +1 -0
- package/dist/showcase/assets/camera-C6hO-Q3l.js +1 -0
- package/dist/showcase/assets/card-CXet5wLR.js +1 -0
- package/dist/showcase/assets/card-ChwovoeQ.js +188 -0
- package/dist/showcase/assets/card-checkbox-group-DN7Ui724.js +1 -0
- package/dist/showcase/assets/card-primitives-C5YmKK4H.js +1 -0
- package/dist/showcase/assets/card-radio-group-DaiWsziy.js +1 -0
- package/dist/showcase/assets/cards-CpYk7Lcz.js +354 -0
- package/dist/showcase/assets/carousel-CaoSMqW3.js +452 -0
- package/dist/showcase/assets/cell-renderers-BTLGZyvy.js +1 -0
- package/dist/showcase/assets/chart-DukdMlSE.js +358 -0
- package/dist/showcase/assets/chart-column-BqDA22mr.js +1 -0
- package/dist/showcase/assets/checkbox-CJg8G3-s.js +1 -0
- package/dist/showcase/assets/checkbox-DlOCnOfc.js +1 -0
- package/dist/showcase/assets/chevron-down-CjLLqYjs.js +1 -0
- package/dist/showcase/assets/chevron-left-lE5l5Y1q.js +1 -0
- package/dist/showcase/assets/chevron-up-WpyEPcvJ.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-CPkjAe_j.js +1 -0
- package/dist/showcase/assets/circle-B9E-rFdh.js +1 -0
- package/dist/showcase/assets/circle-alert-DX4Q8Agf.js +1 -0
- package/dist/showcase/assets/circle-check-BdcUhuQ7.js +1 -0
- package/dist/showcase/assets/circle-check-big-CeaAGVP1.js +1 -0
- package/dist/showcase/assets/circle-dot-DoXkol-T.js +1 -0
- package/dist/showcase/assets/circle-question-mark-CYE6Hj4n.js +1 -0
- package/dist/showcase/assets/circle-x-BpB4A5gs.js +1 -0
- package/dist/showcase/assets/clock-3-B7Fa1qg-.js +1 -0
- package/dist/showcase/assets/clock-B1cuTZnL.js +1 -0
- package/dist/showcase/assets/code-xml-C_ICl6NY.js +1 -0
- package/dist/showcase/assets/collapsible-CtrQcEWW.js +27 -0
- package/dist/showcase/assets/collapsible-XZ4qRG4O.js +1 -0
- package/dist/showcase/assets/collapsible-ZP3Pv6SI.js +1 -0
- package/dist/showcase/assets/combobox-GMkDgk_z.js +685 -0
- package/dist/showcase/assets/command-BXhyoNX1.js +1 -0
- package/dist/showcase/assets/command-DNHjxTyl.js +1 -0
- package/dist/showcase/assets/comment-composer-BtE5Erp8.js +1 -0
- package/dist/showcase/assets/comment-item-TztxmXc7.js +1 -0
- package/dist/showcase/assets/comments-CEMkLRtb.js +357 -0
- package/dist/showcase/assets/commerce-BtvCQH0C.js +19 -0
- package/dist/showcase/assets/commerce-address-card-8PUGRwNW.js +33 -0
- package/dist/showcase/assets/commerce-cart-summary-nrO5v1O8.js +43 -0
- package/dist/showcase/assets/commerce-coupon-input-C-sT1FNq.js +11 -0
- package/dist/showcase/assets/commerce-discount-stack-BdGk8tbD.js +17 -0
- package/dist/showcase/assets/commerce-inventory-section-BnBu7wK5.js +123 -0
- package/dist/showcase/assets/commerce-loyalty-points-Bjei3EdW.js +19 -0
- package/dist/showcase/assets/commerce-order-status--TMOLhrS.js +21 -0
- package/dist/showcase/assets/commerce-payment-method-C8fVquyN.js +17 -0
- package/dist/showcase/assets/commerce-refund-status-Cs6dbewH.js +17 -0
- package/dist/showcase/assets/commerce-seo-listing-C4WvKFei.js +61 -0
- package/dist/showcase/assets/commerce-shipment-tracking-BcezyjSw.js +24 -0
- package/dist/showcase/assets/commerce-subscription-summary-BjhnmqOx.js +25 -0
- package/dist/showcase/assets/commerce-tax-breakdown-js8xMRDn.js +19 -0
- package/dist/showcase/assets/commerce-upcoming-booking-doggTqfA.js +20 -0
- package/dist/showcase/assets/commerce-voucher-entry-ByMZAiZO.js +19 -0
- package/dist/showcase/assets/composite-D2jjTQvZ.js +1 -0
- package/dist/showcase/assets/conditional-rendering-Cy3xN7KO.js +1 -0
- package/dist/showcase/assets/contact-card-BSH_KDbf.js +65 -0
- package/dist/showcase/assets/content-container-Q9Bp8aFE.js +1 -0
- package/dist/showcase/assets/copyable-8_0ImOB2.js +1 -0
- package/dist/showcase/assets/copyable-B3R9lXVu.js +96 -0
- package/dist/showcase/assets/course-card-zh8fH-6n.js +77 -0
- package/dist/showcase/assets/cpu-DlPQMchp.js +1 -0
- package/dist/showcase/assets/credit-card-DeuhwEKG.js +1 -0
- package/dist/showcase/assets/css-variables-BxE5DqUm.js +1223 -0
- package/dist/showcase/assets/currency-D3DomSfR.js +148 -0
- package/dist/showcase/assets/dark-surfaces-DYh199dt.js +90 -0
- package/dist/showcase/assets/data-view-HJme-PWk.js +124 -0
- package/dist/showcase/assets/data-view-s5TQvt4f.js +4 -0
- package/dist/showcase/assets/database-KGU1LGqB.js +1 -0
- package/dist/showcase/assets/date-block-CxFhNxK2.js +1 -0
- package/dist/showcase/assets/date-block-DmRDymLD.js +1 -0
- package/dist/showcase/assets/date-picker-CScVl5jV.js +1 -0
- package/dist/showcase/assets/date-pickers-D4EmH-RF.js +73 -0
- package/dist/showcase/assets/dense-info-DXbmG0Nf.js +106 -0
- package/dist/showcase/assets/design-system-consistency-D_j9P0qR.js +264 -0
- package/dist/showcase/assets/dialog-BHymSzYi.js +1 -0
- package/dist/showcase/assets/dialog-CGr-za_Y.js +1 -0
- package/dist/showcase/assets/dialog-DeXQn0Lm.js +1 -0
- package/dist/showcase/assets/display-utilities-Y1wtHZNJ.js +4 -0
- package/dist/showcase/assets/display-utilities.examples-BMKQv0ep.js +309 -0
- package/dist/showcase/assets/dist-DfpWey5P.js +1 -0
- package/dist/showcase/assets/dist-DrnHE1zU.js +45 -0
- package/dist/showcase/assets/dollar-sign-DzPcAVIr.js +1 -0
- package/dist/showcase/assets/download-YQyeAxpe.js +1 -0
- package/dist/showcase/assets/dropdown-menu-DijrdxTg.js +1 -0
- package/dist/showcase/assets/dropzone-CJQVfB6l.js +1 -0
- package/dist/showcase/assets/earth-CzKdl3sr.js +1 -0
- package/dist/showcase/assets/ellipsis-Bm3jOBg8.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-BfYWo5Lf.js +1 -0
- package/dist/showcase/assets/empty-BdJ7O2MX.js +1 -0
- package/dist/showcase/assets/empty-item-BQdBtp6f.js +49 -0
- package/dist/showcase/assets/empty-state-62UU8y5C.js +1 -0
- package/dist/showcase/assets/empty-state-CCL_J3tY.js +190 -0
- package/dist/showcase/assets/enhanced-activities-CC1UzTfz.js +357 -0
- package/dist/showcase/assets/enhanced-combobox-B9cjPsF6.js +1 -0
- package/dist/showcase/assets/esm-B-fRlXh3.js +2 -0
- package/dist/showcase/assets/event-calendar-Bhwxq8YS.js +138 -0
- package/dist/showcase/assets/event-log-CnKaX_Qy.js +330 -0
- package/dist/showcase/assets/example-DDhaO2UY.js +1 -0
- package/dist/showcase/assets/external-link-CANOM2jg.js +1 -0
- package/dist/showcase/assets/eye-Bipckkwy.js +1 -0
- package/dist/showcase/assets/feature-announcement-lwmHkJsA.js +34 -0
- package/dist/showcase/assets/file-D3AT65yE.js +1 -0
- package/dist/showcase/assets/file-text-BzM5AARd.js +1 -0
- package/dist/showcase/assets/filter-layout-Dcg6Bnrn.js +1 -0
- package/dist/showcase/assets/filters-CqlLV9PM.js +139 -0
- package/dist/showcase/assets/fixtures-yK2xR5Qs.js +1 -0
- package/dist/showcase/assets/flag-DwDsuNoj.js +1 -0
- package/dist/showcase/assets/folder-open-CU6X87LZ.js +1 -0
- package/dist/showcase/assets/form-field-CpRcKtwS.js +1 -0
- package/dist/showcase/assets/form-sizing-Bv0A0Oi0.js +1 -0
- package/dist/showcase/assets/format-DmB3OvZa.js +1 -0
- package/dist/showcase/assets/forms-htLZTBP2.js +915 -0
- package/dist/showcase/assets/funnel-Dg-pRz2W.js +1 -0
- package/dist/showcase/assets/generic-C19aoW0F.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-r_QLBIGn.js +1 -0
- package/dist/showcase/assets/gift-CpwvL7we.js +1 -0
- package/dist/showcase/assets/giftcard-cards-DHZQPc_n.js +85 -0
- package/dist/showcase/assets/git-branch-CZga8VLM.js +1 -0
- package/dist/showcase/assets/global-search-DqJo5jCc.js +1 -0
- package/dist/showcase/assets/global-search-_HODxZaU.js +215 -0
- package/dist/showcase/assets/globe-pWzZwcAv.js +1 -0
- package/dist/showcase/assets/gradient-card-D9fPawlx.js +58 -0
- package/dist/showcase/assets/grip-vertical-oqI1TI-N.js +1 -0
- package/dist/showcase/assets/hash-DQPCJKw8.js +1 -0
- package/dist/showcase/assets/header-DkCzYf6f.js +1 -0
- package/dist/showcase/assets/header-notifications-CPiuGNR5.js +1 -0
- package/dist/showcase/assets/heart-0z9BLROt.js +1 -0
- package/dist/showcase/assets/hooks-CXwg9TyF.js +220 -0
- package/dist/showcase/assets/house-Bg4YZsNF.js +1 -0
- package/dist/showcase/assets/icon-badge-CrSkFExw.js +1 -0
- package/dist/showcase/assets/icon-badge-D1fdev_s.js +37 -0
- package/dist/showcase/assets/icon-size-BHn0d6Zp.js +1 -0
- package/dist/showcase/assets/image-BXWnqpeJ.js +1 -0
- package/dist/showcase/assets/inbox-CObYzZZR.js +1 -0
- package/dist/showcase/assets/index-DBheiRxz.css +2 -0
- package/dist/showcase/assets/index-DSBghWdd.js +10 -0
- package/dist/showcase/assets/inertValue-DOcq7b5x.js +1 -0
- package/dist/showcase/assets/info-wAcLD6Uj.js +1 -0
- package/dist/showcase/assets/inline-stat-CufTTte_.js +1 -0
- package/dist/showcase/assets/inline-stat-D4GrY6tT.js +15 -0
- package/dist/showcase/assets/input-Bq9vs-9_.js +1 -0
- package/dist/showcase/assets/input-DsP89oH1.js +1 -0
- package/dist/showcase/assets/input-group-CCaNByLp.js +1 -0
- package/dist/showcase/assets/input-group-m-swxf-o.js +47 -0
- package/dist/showcase/assets/inputs-BSEM9vfa.js +155 -0
- package/dist/showcase/assets/installation-uRaDUCjH.js +134 -0
- package/dist/showcase/assets/invoice-header-D48jDTWC.js +36 -0
- package/dist/showcase/assets/invoice-items-jRLo8FHu.js +36 -0
- package/dist/showcase/assets/invoice-mini-DLS8PQrl.js +14 -0
- package/dist/showcase/assets/invoice-table-D4y33M95.js +30 -0
- package/dist/showcase/assets/isSameDay-Cn7Vlp79.js +1 -0
- package/dist/showcase/assets/isToday-B0jKMww1.js +1 -0
- package/dist/showcase/assets/italic-BHsKu0Gj.js +1 -0
- package/dist/showcase/assets/item-BLXAOZLR.js +1 -0
- package/dist/showcase/assets/item-C8eCX4DH.js +140 -0
- package/dist/showcase/assets/item-D5xwkRvf.js +1 -0
- package/dist/showcase/assets/kanban-ujfZHhvd.js +188 -0
- package/dist/showcase/assets/key-round-B_fKEPa6.js +1 -0
- package/dist/showcase/assets/label-NSapdBaB.js +1 -0
- package/dist/showcase/assets/languages-TkdVe7-2.js +1 -0
- package/dist/showcase/assets/layers-1IEBbvoc.js +1 -0
- package/dist/showcase/assets/layout-app-shell-D4PFTEsD.js +608 -0
- package/dist/showcase/assets/layout-auth-BTriDNME.js +790 -0
- package/dist/showcase/assets/layout-containers-CLJfaL-J.js +101 -0
- package/dist/showcase/assets/layout-header-CsNPnQde.js +203 -0
- package/dist/showcase/assets/layout-page-CSejcBCR.js +315 -0
- package/dist/showcase/assets/layout-primitives-D1MJs2E3.js +34 -0
- package/dist/showcase/assets/layout-sidebar-CO8Hdnoh.js +224 -0
- package/dist/showcase/assets/layout-users-BgrXF4nn.js +117 -0
- package/dist/showcase/assets/layout-workspace-DLg1f_o-.js +191 -0
- package/dist/showcase/assets/lib-B7vzArq-.js +1 -0
- package/dist/showcase/assets/list-checks-tsvYcEx2.js +1 -0
- package/dist/showcase/assets/lock-CPztxP5s.js +1 -0
- package/dist/showcase/assets/lock-keyhole-BHaFzps8.js +1 -0
- package/dist/showcase/assets/mail-DFoR3rHO.js +1 -0
- package/dist/showcase/assets/mail-check-QV1zqP5D.js +1 -0
- package/dist/showcase/assets/map-BOo4UMER.js +124 -0
- package/dist/showcase/assets/map-pin-CEcA7jdk.js +1 -0
- package/dist/showcase/assets/media-library-CKR3NF1Y.js +699 -0
- package/dist/showcase/assets/mention-inline-suggestions-Chbuzkb7.js +1 -0
- package/dist/showcase/assets/mentions-syVuen0M.js +138 -0
- package/dist/showcase/assets/menus-COIxEKPm.js +171 -0
- package/dist/showcase/assets/message-square-CYSVV7nZ.js +1 -0
- package/dist/showcase/assets/metadata-list-BHIfOKD6.js +1 -0
- package/dist/showcase/assets/metadata-list-DLI17y0k.js +286 -0
- package/dist/showcase/assets/metric-bar-OTyaeNJY.js +1 -0
- package/dist/showcase/assets/metric-grid-BcjDZqHZ.js +1 -0
- package/dist/showcase/assets/metric-opI4qu4r.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-BvhqlY9f.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-Z8xY1Gwq.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-DfzbV-8j.js +50 -0
- package/dist/showcase/assets/metrics-comparison-C71X-WeV.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-Cs1ixWQX.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-DP1guaTx.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-CVwHH3rN.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-CQGKibEU.js +42 -0
- package/dist/showcase/assets/metrics-overview-DPGjh2Gi.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-C3k7Uyt1.js +54 -0
- package/dist/showcase/assets/minus-BTHZFjKs.js +1 -0
- package/dist/showcase/assets/money-display-B8BodAKb.js +1 -0
- package/dist/showcase/assets/money-display-C7TuSgzA.js +3 -0
- package/dist/showcase/assets/month-year-picker-DQcCIbM9.js +1 -0
- package/dist/showcase/assets/navigation-BjYK7JTx.js +231 -0
- package/dist/showcase/assets/navigation-DkkHPGFq.js +90 -0
- package/dist/showcase/assets/navigation-extras-drFz7Xmf.js +43 -0
- package/dist/showcase/assets/notification-banner-CATA6COT.js +1 -0
- package/dist/showcase/assets/onboarding-checklist-CjGo74ic.js +119 -0
- package/dist/showcase/assets/overflow-tab-bar-BYRykiZn.js +1 -0
- package/dist/showcase/assets/overlays-BtfkqYL1.js +159 -0
- package/dist/showcase/assets/overlays-CzmrvPNh.js +408 -0
- package/dist/showcase/assets/overview-B5ckb1et.js +184 -0
- package/dist/showcase/assets/package-Db-MTVUx.js +1 -0
- package/dist/showcase/assets/package-check-UP9srP8w.js +1 -0
- package/dist/showcase/assets/page-BFvDdpX3.js +1 -0
- package/dist/showcase/assets/page-action-button-CROlcZJb.js +1 -0
- package/dist/showcase/assets/page-header-B8xYCCzF.js +1 -0
- package/dist/showcase/assets/pagination-B7j6cJXU.js +1 -0
- package/dist/showcase/assets/pagination-B8LN9MT7.js +42 -0
- package/dist/showcase/assets/paperclip-CAcGOT6G.js +1 -0
- package/dist/showcase/assets/password-input-DzO1QEsL.js +1 -0
- package/dist/showcase/assets/pencil-Db0qlNpO.js +1 -0
- package/dist/showcase/assets/phone-BHkprQ5O.js +1 -0
- package/dist/showcase/assets/placeholder-pattern-Ba0rjJa5.js +1 -0
- package/dist/showcase/assets/plus-CaAfJIjc.js +1 -0
- package/dist/showcase/assets/popover-BZsIv1AP.js +1 -0
- package/dist/showcase/assets/popover-DCfeA2ZY.js +1 -0
- package/dist/showcase/assets/popover-menu-kjcHCICE.js +1 -0
- package/dist/showcase/assets/product-empty-state-CSdeHHZT.js +1 -0
- package/dist/showcase/assets/product-option-action-menu-FvgEaWA7.js +1 -0
- package/dist/showcase/assets/product-rows-Cb8gLOeV.js +1 -0
- package/dist/showcase/assets/product-structure-card-CFqufBoJ.js +1 -0
- package/dist/showcase/assets/product-variant-action-menu-BvSn7PuK.js +1 -0
- package/dist/showcase/assets/products-D1aG4KFi.js +61 -0
- package/dist/showcase/assets/progress-2NWkkA6x.js +18 -0
- package/dist/showcase/assets/progress-DECH8qUu.js +1 -0
- package/dist/showcase/assets/progress-DHsjY-V1.js +1 -0
- package/dist/showcase/assets/props-table-CzpevabQ.js +1 -0
- package/dist/showcase/assets/props.generated-CXbCZMUk.json +42824 -0
- package/dist/showcase/assets/qr-code-DLeRQu83.js +1 -0
- package/dist/showcase/assets/quote-eFsPYmD1.js +1 -0
- package/dist/showcase/assets/receipt-V9T3dONa.js +1 -0
- package/dist/showcase/assets/receipt-text-866Msgc2.js +1 -0
- package/dist/showcase/assets/refinement-guide-BoerkamA.js +189 -0
- package/dist/showcase/assets/refresh-cw-Crg4uqw8.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-D8poX7JF.js +1 -0
- package/dist/showcase/assets/resource-Ca8tGlsX.js +139 -0
- package/dist/showcase/assets/resource-aE-LkpW8.js +1 -0
- package/dist/showcase/assets/resource-selector-card-DzDG2Wl6.js +43 -0
- package/dist/showcase/assets/rich-text-editor-BCTbpMcY.js +143 -0
- package/dist/showcase/assets/rich-text-editor-CdklzzLj.js +124 -0
- package/dist/showcase/assets/rotate-ccw-CCPhnEPA.js +1 -0
- package/dist/showcase/assets/route-CODe9_7c.js +1 -0
- package/dist/showcase/assets/save-B_ze9MC9.js +1 -0
- package/dist/showcase/assets/schema-form-CEmpu59s.js +327 -0
- package/dist/showcase/assets/scroll-area-BM0asGLD.js +32 -0
- package/dist/showcase/assets/scroll-area-zRw8lSrA.js +1 -0
- package/dist/showcase/assets/section-DLqBJGPH.js +1 -0
- package/dist/showcase/assets/select-B0ivd5pJ.js +1 -0
- package/dist/showcase/assets/select-BrPUZL6Z.js +1 -0
- package/dist/showcase/assets/send-B4jTMdd9.js +1 -0
- package/dist/showcase/assets/separator-7f_tdxB3.js +28 -0
- package/dist/showcase/assets/separator-BvhVS5L0.js +1 -0
- package/dist/showcase/assets/separator-DeMF0eCd.js +1 -0
- package/dist/showcase/assets/separator-Dsqit2yw.js +1 -0
- package/dist/showcase/assets/settings-2-DnZeyxSR.js +1 -0
- package/dist/showcase/assets/settings-GFwewlvm.js +1 -0
- package/dist/showcase/assets/sheet-B06fRKgl.js +1 -0
- package/dist/showcase/assets/shield-NNzIJA-o.js +1 -0
- package/dist/showcase/assets/shield-alert-dlgSUsVl.js +1 -0
- package/dist/showcase/assets/shield-check-CkqmRaJd.js +1 -0
- package/dist/showcase/assets/shopping-bag-x4S32KGc.js +1 -0
- package/dist/showcase/assets/showcase-CiXeaTrT.js +132 -0
- package/dist/showcase/assets/sidebar-BDOvomlZ.js +1 -0
- package/dist/showcase/assets/sidebar.context-M_w0AsBU.js +1 -0
- package/dist/showcase/assets/skeleton-C0-TGyFP.js +29 -0
- package/dist/showcase/assets/skeleton-ClY9N5IF.js +1 -0
- package/dist/showcase/assets/skeleton-CyCX3AHa.js +1 -0
- package/dist/showcase/assets/skeleton-JapnB0xo.js +1 -0
- package/dist/showcase/assets/slider-BagnbSUE.js +1 -0
- package/dist/showcase/assets/smart-card-BA097ZGN.js +1 -0
- package/dist/showcase/assets/sonner-bg55zTHJ.js +22 -0
- package/dist/showcase/assets/sortable.esm-DCj5rKPd.js +5 -0
- package/dist/showcase/assets/sparkles-a2TsduRv.js +1 -0
- package/dist/showcase/assets/spinner-BRTHJLPS.js +49 -0
- package/dist/showcase/assets/spinner-RQ5TsGWE.js +30 -0
- package/dist/showcase/assets/spinner-yQrc4KLG.js +1 -0
- package/dist/showcase/assets/square-pen-wg5I0K5c.js +1 -0
- package/dist/showcase/assets/stacked-avatars-BGpGV4Is.js +1 -0
- package/dist/showcase/assets/star-Ccv6TKPm.js +1 -0
- package/dist/showcase/assets/startOfDay-BslQvd9l.js +1 -0
- package/dist/showcase/assets/styles-CMmKOMCT.js +1 -0
- package/dist/showcase/assets/suggestions--A7bRqHY.js +126 -0
- package/dist/showcase/assets/support-rail-b2WhhyFB.js +26 -0
- package/dist/showcase/assets/switch-Cv_v9byU.js +1 -0
- package/dist/showcase/assets/switch-DY-b3cEd.js +1 -0
- package/dist/showcase/assets/switch-card-C-Q3eon2.js +1 -0
- package/dist/showcase/assets/sync-BmH6kK2e.js +124 -0
- package/dist/showcase/assets/table-DAil3SVn.js +686 -0
- package/dist/showcase/assets/table-DNimuqS6.js +1 -0
- package/dist/showcase/assets/table-actions-Bgp9_jhZ.js +1 -0
- package/dist/showcase/assets/tabs-DN23r2we.js +1 -0
- package/dist/showcase/assets/tabs-RbFeMoGk.js +19 -0
- package/dist/showcase/assets/tags-input-Cp-ikGn_.js +1 -0
- package/dist/showcase/assets/text-button-CPxfmks9.js +1 -0
- package/dist/showcase/assets/text-link-BBHsgNSW.js +1 -0
- package/dist/showcase/assets/textarea-BGe_VCrI.js +1 -0
- package/dist/showcase/assets/textarea-DAV6cQCw.js +1 -0
- package/dist/showcase/assets/throttle-alert-B85zpgs4.js +1 -0
- package/dist/showcase/assets/timelines-BptCi-0C.js +200 -0
- package/dist/showcase/assets/toggle-group-B4tIG940.js +1 -0
- package/dist/showcase/assets/toggles-BSkNLAjb.js +71 -0
- package/dist/showcase/assets/toggles-group-CQIwVA__.js +32 -0
- package/dist/showcase/assets/tooltip-DN6bKPgk.js +31 -0
- package/dist/showcase/assets/trash-2-DZ5FSAFb.js +1 -0
- package/dist/showcase/assets/trending-up-DtSjt9AO.js +1 -0
- package/dist/showcase/assets/truck-B0QFWMMH.js +1 -0
- package/dist/showcase/assets/typography-8sXlmgaD.js +223 -0
- package/dist/showcase/assets/ui-badge-C4odkkUK.js +28 -0
- package/dist/showcase/assets/ui-card-CU1Ga8J6.js +30 -0
- package/dist/showcase/assets/ui-table-Bp-MkWh5.js +42 -0
- package/dist/showcase/assets/upload-tray-DT0HesKW.js +138 -0
- package/dist/showcase/assets/use-layout-link-BsJvjSZp.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-Bl2oGr7T.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-C8-r9Srt.js +1 -0
- package/dist/showcase/assets/useCompositeItem-DVZX40q_.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-DWggcwRs.js +1 -0
- package/dist/showcase/assets/useLabelableId-Dx_-xVBr.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-CKNY2kPx.js +1 -0
- package/dist/showcase/assets/useRender-Bk8pPQUW.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-D74GGv1k.js +1 -0
- package/dist/showcase/assets/useValueChanged-BjYsvuOC.js +1 -0
- package/dist/showcase/assets/user-DlFWtE-h.js +1 -0
- package/dist/showcase/assets/user-plus-NGAALkPS.js +1 -0
- package/dist/showcase/assets/users-DYPDZwd6.js +1 -0
- package/dist/showcase/assets/variant-details-DtdWm8Bt.js +50 -0
- package/dist/showcase/assets/variant-management-Dk_P-wBF.js +209 -0
- package/dist/showcase/assets/vendor-profile-Bf1kKKdO.js +37 -0
- package/dist/showcase/assets/video-BObmzTOM.js +1 -0
- package/dist/showcase/assets/visually-hidden-rJ25V2wc.js +1 -0
- package/dist/showcase/assets/weight-input-DpQ3yEQ3.js +1 -0
- package/dist/showcase/assets/wrench-Df-eIMsM.js +1 -0
- package/dist/showcase/assets/x-DVQ0XpIT.js +1 -0
- package/dist/showcase/assets/zap-_0WPgXWT.js +1 -0
- package/dist/showcase/index.html +2 -2
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/css/themes/shadcn.default.css +2 -2
- package/src/css/tokens/components.css +17 -2
- package/src/css/tokens/foundation.css +4 -2
- package/dist/_shared/accordion-8B4OFqiT.cjs +0 -2
- package/dist/_shared/accordion-8B4OFqiT.cjs.map +0 -1
- package/dist/_shared/accordion-DlpTSZ3p.js +0 -135
- package/dist/_shared/accordion-DlpTSZ3p.js.map +0 -1
- package/dist/_shared/action-menu-BYrYdpkR.cjs +0 -2
- package/dist/_shared/action-menu-BYrYdpkR.cjs.map +0 -1
- package/dist/_shared/action-menu-CYwMZX-b.js +0 -96
- package/dist/_shared/action-menu-CYwMZX-b.js.map +0 -1
- package/dist/_shared/ai-artifact-BylloxGO.js +0 -1099
- package/dist/_shared/ai-artifact-BylloxGO.js.map +0 -1
- package/dist/_shared/ai-artifact-DfT97Mpi.cjs +0 -3
- package/dist/_shared/ai-artifact-DfT97Mpi.cjs.map +0 -1
- package/dist/_shared/auth-1Ht9Kevx.js +0 -643
- package/dist/_shared/auth-1Ht9Kevx.js.map +0 -1
- package/dist/_shared/auth-DTN6sFXM.cjs +0 -2
- package/dist/_shared/auth-DTN6sFXM.cjs.map +0 -1
- package/dist/_shared/badge-LSAgdmGt.cjs +0 -2
- package/dist/_shared/badge-LSAgdmGt.cjs.map +0 -1
- package/dist/_shared/badge-nZ2zbAV4.js +0 -110
- package/dist/_shared/badge-nZ2zbAV4.js.map +0 -1
- package/dist/_shared/breadcrumbs-CuT0YIfo.js +0 -105
- package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +0 -1
- package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +0 -2
- package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +0 -1
- package/dist/_shared/button-Be2ayMxF.js +0 -192
- package/dist/_shared/button-Be2ayMxF.js.map +0 -1
- package/dist/_shared/button-CfQtOuBK.cjs +0 -2
- package/dist/_shared/button-CfQtOuBK.cjs.map +0 -1
- package/dist/_shared/buttons-DABiSx6N.cjs +0 -2
- package/dist/_shared/buttons-DABiSx6N.cjs.map +0 -1
- package/dist/_shared/buttons-DYQqQPpk.js +0 -137
- package/dist/_shared/buttons-DYQqQPpk.js.map +0 -1
- package/dist/_shared/card-radio-group-DKhZhBFV.cjs +0 -2
- package/dist/_shared/card-radio-group-DKhZhBFV.cjs.map +0 -1
- package/dist/_shared/card-radio-group-DRjmLN5s.js +0 -150
- package/dist/_shared/card-radio-group-DRjmLN5s.js.map +0 -1
- package/dist/_shared/cards-BJctT9KD.js +0 -428
- package/dist/_shared/cards-BJctT9KD.js.map +0 -1
- package/dist/_shared/cards-m03XN10f.cjs +0 -2
- package/dist/_shared/cards-m03XN10f.cjs.map +0 -1
- package/dist/_shared/combobox-BdBpeD3C.cjs +0 -2
- package/dist/_shared/combobox-BdBpeD3C.cjs.map +0 -1
- package/dist/_shared/combobox-D9tU_83-.js +0 -954
- package/dist/_shared/combobox-D9tU_83-.js.map +0 -1
- package/dist/_shared/command-BbJB0pjP.cjs +0 -2
- package/dist/_shared/command-BbJB0pjP.cjs.map +0 -1
- package/dist/_shared/command-IP2wy_HN.js +0 -39
- package/dist/_shared/command-IP2wy_HN.js.map +0 -1
- package/dist/_shared/comments-B_WKQUol.js +0 -952
- package/dist/_shared/comments-B_WKQUol.js.map +0 -1
- package/dist/_shared/comments-DMHMNObS.cjs +0 -2
- package/dist/_shared/comments-DMHMNObS.cjs.map +0 -1
- package/dist/_shared/containers-CB7zaAvN.cjs +0 -2
- package/dist/_shared/containers-CB7zaAvN.cjs.map +0 -1
- package/dist/_shared/containers-CLBmhGfs.js +0 -48
- package/dist/_shared/containers-CLBmhGfs.js.map +0 -1
- package/dist/_shared/copyable-BJYx2SlN.js +0 -38
- package/dist/_shared/copyable-BJYx2SlN.js.map +0 -1
- package/dist/_shared/copyable-DiDEjp8Z.cjs +0 -2
- package/dist/_shared/copyable-DiDEjp8Z.cjs.map +0 -1
- package/dist/_shared/data-display-4E_irfF2.js +0 -1878
- package/dist/_shared/data-display-4E_irfF2.js.map +0 -1
- package/dist/_shared/data-display-BPn-7qFO.cjs +0 -2
- package/dist/_shared/data-display-BPn-7qFO.cjs.map +0 -1
- package/dist/_shared/date-picker-CvqLnlxm.js +0 -1361
- package/dist/_shared/date-picker-CvqLnlxm.js.map +0 -1
- package/dist/_shared/date-picker-D83fCi2g.cjs +0 -2
- package/dist/_shared/date-picker-D83fCi2g.cjs.map +0 -1
- package/dist/_shared/date-pickers-C6ku2BPp.cjs +0 -2
- package/dist/_shared/date-pickers-C6ku2BPp.cjs.map +0 -1
- package/dist/_shared/date-pickers-RdbwIhdY.js +0 -329
- package/dist/_shared/date-pickers-RdbwIhdY.js.map +0 -1
- package/dist/_shared/display-DFVeSuWL.js +0 -986
- package/dist/_shared/display-DFVeSuWL.js.map +0 -1
- package/dist/_shared/display-Lr3xTd4a.cjs +0 -2
- package/dist/_shared/display-Lr3xTd4a.cjs.map +0 -1
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +0 -2
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +0 -1
- package/dist/_shared/dropdown-menu-CoWmrjYX.js +0 -147
- package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +0 -1
- package/dist/_shared/form-sizing-DJus3nK3.cjs +0 -2
- package/dist/_shared/form-sizing-DJus3nK3.cjs.map +0 -1
- package/dist/_shared/form-sizing-DWjJsQSR.js +0 -42
- package/dist/_shared/form-sizing-DWjJsQSR.js.map +0 -1
- package/dist/_shared/forms-BA8Aa_fi.js +0 -3534
- package/dist/_shared/forms-BA8Aa_fi.js.map +0 -1
- package/dist/_shared/forms-CNjjdFcf.cjs +0 -2
- package/dist/_shared/forms-CNjjdFcf.cjs.map +0 -1
- package/dist/_shared/header-BEsz1_so.cjs +0 -2
- package/dist/_shared/header-BEsz1_so.cjs.map +0 -1
- package/dist/_shared/header-bJx8z6zT.js +0 -447
- package/dist/_shared/header-bJx8z6zT.js.map +0 -1
- package/dist/_shared/hooks-gRgVhyY2.js +0 -95
- package/dist/_shared/hooks-gRgVhyY2.js.map +0 -1
- package/dist/_shared/hooks-nFiRfUxX.cjs +0 -2
- package/dist/_shared/hooks-nFiRfUxX.cjs.map +0 -1
- package/dist/_shared/input-CzJzVyQ0.js +0 -182
- package/dist/_shared/input-CzJzVyQ0.js.map +0 -1
- package/dist/_shared/input-Dvvmn96E.cjs +0 -2
- package/dist/_shared/input-Dvvmn96E.cjs.map +0 -1
- package/dist/_shared/item-CVjjpHQd.js +0 -226
- package/dist/_shared/item-CVjjpHQd.js.map +0 -1
- package/dist/_shared/item-ChHblHhR.cjs +0 -2
- package/dist/_shared/item-ChHblHhR.cjs.map +0 -1
- package/dist/_shared/layout-C_dYiKtE.cjs +0 -2
- package/dist/_shared/layout-C_dYiKtE.cjs.map +0 -1
- package/dist/_shared/layout-nigj488k.js +0 -268
- package/dist/_shared/layout-nigj488k.js.map +0 -1
- package/dist/_shared/mentions-BE51BNeq.cjs +0 -2
- package/dist/_shared/mentions-BE51BNeq.cjs.map +0 -1
- package/dist/_shared/mentions-CBhP29St.js +0 -506
- package/dist/_shared/mentions-CBhP29St.js.map +0 -1
- package/dist/_shared/money-display-BFk9Gu21.cjs +0 -2
- package/dist/_shared/money-display-BFk9Gu21.cjs.map +0 -1
- package/dist/_shared/money-display-DpuLnsK2.js +0 -198
- package/dist/_shared/money-display-DpuLnsK2.js.map +0 -1
- package/dist/_shared/navigation-CWK_YQ5Y.js +0 -436
- package/dist/_shared/navigation-CWK_YQ5Y.js.map +0 -1
- package/dist/_shared/navigation-DTBMb7-M.cjs +0 -2
- package/dist/_shared/navigation-DTBMb7-M.cjs.map +0 -1
- package/dist/_shared/overlays-BJLczwpz.js +0 -735
- package/dist/_shared/overlays-BJLczwpz.js.map +0 -1
- package/dist/_shared/overlays-DbaPLT67.cjs +0 -2
- package/dist/_shared/overlays-DbaPLT67.cjs.map +0 -1
- package/dist/_shared/popover-menu-D_t6rCvN.cjs +0 -2
- package/dist/_shared/popover-menu-D_t6rCvN.cjs.map +0 -1
- package/dist/_shared/popover-menu-f2O6R_27.js +0 -93
- package/dist/_shared/popover-menu-f2O6R_27.js.map +0 -1
- package/dist/_shared/rich-text-editor-DmZHbsms.js +0 -620
- package/dist/_shared/rich-text-editor-DmZHbsms.js.map +0 -1
- package/dist/_shared/rich-text-editor-DqUU-H7i.cjs +0 -2
- package/dist/_shared/rich-text-editor-DqUU-H7i.cjs.map +0 -1
- package/dist/_shared/settings-D-HAOE3R.js +0 -143
- package/dist/_shared/settings-D-HAOE3R.js.map +0 -1
- package/dist/_shared/settings-DkL3bOk0.cjs +0 -2
- package/dist/_shared/settings-DkL3bOk0.cjs.map +0 -1
- package/dist/_shared/sidebar-BTyx7ipN.cjs +0 -2
- package/dist/_shared/sidebar-BTyx7ipN.cjs.map +0 -1
- package/dist/_shared/sidebar-DkBNualh.js +0 -548
- package/dist/_shared/sidebar-DkBNualh.js.map +0 -1
- package/dist/_shared/skeleton-DwF5VdMh.cjs +0 -2
- package/dist/_shared/skeleton-DwF5VdMh.cjs.map +0 -1
- package/dist/_shared/skeleton-yUXqeWzB.js +0 -256
- package/dist/_shared/skeleton-yUXqeWzB.js.map +0 -1
- package/dist/_shared/spinner-BDrUzfTo.cjs +0 -2
- package/dist/_shared/spinner-BDrUzfTo.cjs.map +0 -1
- package/dist/_shared/spinner-CuVZhJhN.js +0 -67
- package/dist/_shared/spinner-CuVZhJhN.js.map +0 -1
- package/dist/_shared/table-Cq0jkSm5.js +0 -1377
- package/dist/_shared/table-Cq0jkSm5.js.map +0 -1
- package/dist/_shared/table-GqTKCC8F.cjs +0 -2
- package/dist/_shared/table-GqTKCC8F.cjs.map +0 -1
- package/dist/_shared/textarea-C0iZwWdD.js +0 -118
- package/dist/_shared/textarea-C0iZwWdD.js.map +0 -1
- package/dist/_shared/textarea-bHFAtwYd.cjs +0 -2
- package/dist/_shared/textarea-bHFAtwYd.cjs.map +0 -1
- package/dist/_shared/typography-5bLhAYaK.js +0 -201
- package/dist/_shared/typography-5bLhAYaK.js.map +0 -1
- package/dist/_shared/typography-CWEobAJV.cjs +0 -2
- package/dist/_shared/typography-CWEobAJV.cjs.map +0 -1
- package/dist/_shared/workspace-5UId04M9.js +0 -357
- package/dist/_shared/workspace-5UId04M9.js.map +0 -1
- package/dist/_shared/workspace-BMws_rFf.cjs +0 -2
- package/dist/_shared/workspace-BMws_rFf.cjs.map +0 -1
- package/dist/showcase/assets/AreaChart-oKO7Ng_P.js +0 -6
- package/dist/showcase/assets/CompositeItem-CK7jBYU8.js +0 -1
- package/dist/showcase/assets/CompositeRoot-_AuToqhT.js +0 -1
- package/dist/showcase/assets/DialogTrigger-C44ZZXQ9.js +0 -1
- package/dist/showcase/assets/LabelableContext-DLVZlnur.js +0 -1
- package/dist/showcase/assets/PreviewLayout-Oik7TDHN.js +0 -1
- package/dist/showcase/assets/RadioGroup-DeYb8CGE.js +0 -1
- package/dist/showcase/assets/ScrollAreaCorner-BZlE_Bil.js +0 -1
- package/dist/showcase/assets/Separator-uiIktHzk.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-CEzj5dKk.js +0 -1
- package/dist/showcase/assets/accordion-B_wg_YOp.js +0 -171
- package/dist/showcase/assets/accordion-variants-O6U7E38x.js +0 -1
- package/dist/showcase/assets/action-menu-D_wGvb_o.js +0 -1
- package/dist/showcase/assets/actions-u4Fl4zm1.js +0 -310
- package/dist/showcase/assets/activities-C6iITHzB.js +0 -500
- package/dist/showcase/assets/activities-feed-card-OpYs16UV.js +0 -1
- package/dist/showcase/assets/admin-Bq15E5Wd.js +0 -140
- package/dist/showcase/assets/ai-DcUzGTlb.js +0 -207
- package/dist/showcase/assets/ai-artifact-BUAu1_jV.js +0 -2
- package/dist/showcase/assets/ai-chat-C6OWWBqh.js +0 -568
- package/dist/showcase/assets/ai-elements-CCe4Aqj_.js +0 -387
- package/dist/showcase/assets/ai-tool-call-B_NF1ePn.js +0 -1
- package/dist/showcase/assets/alert-B4VWkFPE.js +0 -1
- package/dist/showcase/assets/alert-BDIqciKo.js +0 -62
- package/dist/showcase/assets/alert-jvCEGWe6.js +0 -93
- package/dist/showcase/assets/api-key-list-BH8mde9A.js +0 -1
- package/dist/showcase/assets/api-key-list-CA6O3hsc.js +0 -73
- package/dist/showcase/assets/app-sidebar-DsMTwSAB.js +0 -1
- package/dist/showcase/assets/arrow-down-BzPC0rON.js +0 -1
- package/dist/showcase/assets/arrow-left-DNehZvF-.js +0 -1
- package/dist/showcase/assets/arrow-right-CKIgWncF.js +0 -1
- package/dist/showcase/assets/arrow-up-YjujZi8v.js +0 -1
- package/dist/showcase/assets/arrow-up-right-KnVxFmw9.js +0 -1
- package/dist/showcase/assets/avatar-BBLri7tX.js +0 -57
- package/dist/showcase/assets/avatar-BeFx8JQd.js +0 -1
- package/dist/showcase/assets/avatar-CFWUZzaF.js +0 -67
- package/dist/showcase/assets/avatar-D6exHRSK.js +0 -1
- package/dist/showcase/assets/badge-check-BfY3RIjR.js +0 -1
- package/dist/showcase/assets/badge-jGj2HQsg.js +0 -31
- package/dist/showcase/assets/bell-CTDSIOv8.js +0 -1
- package/dist/showcase/assets/boolean-indicator-C1u7OFcR.js +0 -1
- package/dist/showcase/assets/bot-D-iqtYiQ.js +0 -1
- package/dist/showcase/assets/box-DxjjLEh2.js +0 -1
- package/dist/showcase/assets/braces-B6XLlZwJ.js +0 -1
- package/dist/showcase/assets/brain-BdNpswBH.js +0 -1
- package/dist/showcase/assets/brand-C6srYuIa.js +0 -36
- package/dist/showcase/assets/breadcrumb-BaeV7C4t.js +0 -52
- package/dist/showcase/assets/breadcrumb-jKu4EUFo.js +0 -1
- package/dist/showcase/assets/breadcrumbs-D7vYX_5y.js +0 -1
- package/dist/showcase/assets/briefcase-cs9wyoxL.js +0 -1
- package/dist/showcase/assets/building-2-rcMEYcbf.js +0 -1
- package/dist/showcase/assets/button-group-D1oXfasP.js +0 -1
- package/dist/showcase/assets/button-oBRwhAhs.js +0 -44
- package/dist/showcase/assets/buttons-D_SDu9w3.js +0 -272
- package/dist/showcase/assets/calendar-CGTiVckW.js +0 -1
- package/dist/showcase/assets/calendar-ChLkVME0.js +0 -16
- package/dist/showcase/assets/calendar-CjMPvWfI.js +0 -1
- package/dist/showcase/assets/calendar-days-CNom8Y38.js +0 -1
- package/dist/showcase/assets/camera-D0rjOOcs.js +0 -1
- package/dist/showcase/assets/card-CYz4UxYz.js +0 -1
- package/dist/showcase/assets/card-D9updr3B.js +0 -188
- package/dist/showcase/assets/card-primitives-BQ0hSEWX.js +0 -1
- package/dist/showcase/assets/card-radio-group-CrNG04Bl.js +0 -1
- package/dist/showcase/assets/cards-D4Lw-AI6.js +0 -354
- package/dist/showcase/assets/carousel-C6Mmapzw.js +0 -449
- package/dist/showcase/assets/cell-renderers-BF80Z3jW.js +0 -1
- package/dist/showcase/assets/chart-BHgMfUB5.js +0 -358
- package/dist/showcase/assets/chart-column-CE_VhlUz.js +0 -1
- package/dist/showcase/assets/checkbox-CDLT09vU.js +0 -1
- package/dist/showcase/assets/checkbox-Dj24Tegr.js +0 -1
- package/dist/showcase/assets/chevron-down-1GeJ4hOO.js +0 -1
- package/dist/showcase/assets/chevron-left-wqlWv2Qy.js +0 -1
- package/dist/showcase/assets/chevron-up-CZAm-2rZ.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-DgysGYWR.js +0 -1
- package/dist/showcase/assets/circle-C9Ooo8Lv.js +0 -1
- package/dist/showcase/assets/circle-alert-C6XBfkf2.js +0 -1
- package/dist/showcase/assets/circle-check-DvCYlVmL.js +0 -1
- package/dist/showcase/assets/circle-check-big-C8o9clAE.js +0 -1
- package/dist/showcase/assets/circle-dot-BoYf3vOR.js +0 -1
- package/dist/showcase/assets/circle-question-mark-DYPX0qe9.js +0 -1
- package/dist/showcase/assets/circle-x-GosnT0l7.js +0 -1
- package/dist/showcase/assets/clock-3-DklFhayq.js +0 -1
- package/dist/showcase/assets/clock-BvwTkk1w.js +0 -1
- package/dist/showcase/assets/code-xml-AGOwtN8Z.js +0 -1
- package/dist/showcase/assets/collapsible-CBkbr3ho.js +0 -1
- package/dist/showcase/assets/collapsible-CmY1SA28.js +0 -27
- package/dist/showcase/assets/collapsible-DfDnQ_t_.js +0 -1
- package/dist/showcase/assets/combobox-BsZQo7hF.js +0 -685
- package/dist/showcase/assets/command-B0Q84gg6.js +0 -1
- package/dist/showcase/assets/command-BtADdA65.js +0 -1
- package/dist/showcase/assets/comment-composer-BmBnkba9.js +0 -1
- package/dist/showcase/assets/comment-item-y5mTfSmU.js +0 -1
- package/dist/showcase/assets/comments-BuYiGPxI.js +0 -357
- package/dist/showcase/assets/commerce-21Ef_rsW.js +0 -267
- package/dist/showcase/assets/composite-fKT6fZFs.js +0 -1
- package/dist/showcase/assets/conditional-rendering-DsTG0sOE.js +0 -1
- package/dist/showcase/assets/contact-card-S8koA9Sr.js +0 -65
- package/dist/showcase/assets/content-container-B4gW5fmA.js +0 -1
- package/dist/showcase/assets/copyable-D2xL2rMm.js +0 -96
- package/dist/showcase/assets/copyable-gLrmPayI.js +0 -1
- package/dist/showcase/assets/course-card-B8eEvF7a.js +0 -77
- package/dist/showcase/assets/cpu-Cp1On3tr.js +0 -1
- package/dist/showcase/assets/credit-card-QbZMZB90.js +0 -1
- package/dist/showcase/assets/css-variables-BXICo9fV.js +0 -1205
- package/dist/showcase/assets/currency-D2MSLjLt.js +0 -149
- package/dist/showcase/assets/dark-surfaces-CJsxuvQU.js +0 -90
- package/dist/showcase/assets/data-view-syhKhdz9.js +0 -124
- package/dist/showcase/assets/data-view-znnAeb6b.js +0 -4
- package/dist/showcase/assets/database-isLkCvDd.js +0 -1
- package/dist/showcase/assets/date-block-BDn9lGVM.js +0 -1
- package/dist/showcase/assets/date-block-CqRL1xfo.js +0 -1
- package/dist/showcase/assets/date-picker-DNcmSgQk.js +0 -1
- package/dist/showcase/assets/date-pickers-3lQUDDS7.js +0 -73
- package/dist/showcase/assets/dense-info-CfvqiIpM.js +0 -106
- package/dist/showcase/assets/design-system-consistency-C3yRhKwF.js +0 -264
- package/dist/showcase/assets/dialog-DiAkrPHO.js +0 -1
- package/dist/showcase/assets/dialog-feUFM03m.js +0 -1
- package/dist/showcase/assets/dialog-ruVOqJnB.js +0 -1
- package/dist/showcase/assets/display-utilities-SPJxlrkp.js +0 -4
- package/dist/showcase/assets/display-utilities.examples-ByRydMl0.js +0 -302
- package/dist/showcase/assets/dist-C9DVZddl.js +0 -45
- package/dist/showcase/assets/dist-DNARKM_B.js +0 -1
- package/dist/showcase/assets/dollar-sign-CUDuWyun.js +0 -1
- package/dist/showcase/assets/download-CIbh9VUU.js +0 -1
- package/dist/showcase/assets/dropdown-menu-MoIAG0ES.js +0 -1
- package/dist/showcase/assets/dropzone-D0kHIUuh.js +0 -1
- package/dist/showcase/assets/earth-BpNTeF25.js +0 -1
- package/dist/showcase/assets/ellipsis-B9w0cuoH.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-DHbOsjTF.js +0 -1
- package/dist/showcase/assets/empty-DvYVgcNF.js +0 -1
- package/dist/showcase/assets/empty-item-oFM5kPCp.js +0 -49
- package/dist/showcase/assets/empty-state-DTq86muv.js +0 -1
- package/dist/showcase/assets/empty-state-De7XCht-.js +0 -190
- package/dist/showcase/assets/enhanced-activities--XHjx99M.js +0 -357
- package/dist/showcase/assets/enhanced-combobox-CX_mTkei.js +0 -1
- package/dist/showcase/assets/esm-XXqBjGGF.js +0 -2
- package/dist/showcase/assets/event-calendar-zTiCWOF5.js +0 -138
- package/dist/showcase/assets/event-log-C_zSlY6y.js +0 -330
- package/dist/showcase/assets/example-Cv05rz75.js +0 -1
- package/dist/showcase/assets/external-link-DaR-AMyf.js +0 -1
- package/dist/showcase/assets/eye-CDSbB0kZ.js +0 -1
- package/dist/showcase/assets/feature-announcement-DJ26ZDVB.js +0 -34
- package/dist/showcase/assets/file-DPSK5cGC.js +0 -1
- package/dist/showcase/assets/file-text-BBWpAppG.js +0 -1
- package/dist/showcase/assets/filter-layout-CZRGcd6Z.js +0 -1
- package/dist/showcase/assets/filters-Bn7hYUeq.js +0 -139
- package/dist/showcase/assets/flag-BRs-GTCx.js +0 -1
- package/dist/showcase/assets/folder-open-DnFjlB3X.js +0 -1
- package/dist/showcase/assets/form-field-SW-Yp7H7.js +0 -1
- package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +0 -1
- package/dist/showcase/assets/format-Bki5m7M3.js +0 -1
- package/dist/showcase/assets/forms-CAUL2gGq.js +0 -915
- package/dist/showcase/assets/funnel-D6g2Suhd.js +0 -1
- package/dist/showcase/assets/generic-CU6JNqKO.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-yqDwWA_y.js +0 -1
- package/dist/showcase/assets/gift-B2Qp9Vqt.js +0 -1
- package/dist/showcase/assets/giftcard-cards-Dk0DYoN2.js +0 -85
- package/dist/showcase/assets/git-branch-CPtvCNGc.js +0 -1
- package/dist/showcase/assets/global-search-D1ow01VA.js +0 -1
- package/dist/showcase/assets/global-search-DQR2AgDO.js +0 -215
- package/dist/showcase/assets/globe-BiZgUZFZ.js +0 -1
- package/dist/showcase/assets/gradient-card-D5isLy3_.js +0 -58
- package/dist/showcase/assets/hash-NJ5ohGOa.js +0 -1
- package/dist/showcase/assets/header-Df9uYSSH.js +0 -1
- package/dist/showcase/assets/header-notifications-sPR5NuON.js +0 -1
- package/dist/showcase/assets/heart-C4t7PVKW.js +0 -1
- package/dist/showcase/assets/hooks-0TKg0ZAK.js +0 -220
- package/dist/showcase/assets/house-CuLXFtjd.js +0 -1
- package/dist/showcase/assets/icon-badge-Cr6DD-_7.js +0 -1
- package/dist/showcase/assets/icon-badge-DMdMSSRL.js +0 -37
- package/dist/showcase/assets/image-DYjJaO0i.js +0 -1
- package/dist/showcase/assets/inbox-DGF8FgvV.js +0 -1
- package/dist/showcase/assets/index-ATou_nFA.js +0 -10
- package/dist/showcase/assets/index-C8U-r6l7.css +0 -2
- package/dist/showcase/assets/inertValue-CBi0sj8C.js +0 -1
- package/dist/showcase/assets/info-DLaTRPUT.js +0 -1
- package/dist/showcase/assets/inline-stat-DGpunTNF.js +0 -1
- package/dist/showcase/assets/inline-stat-rUaaOSmR.js +0 -15
- package/dist/showcase/assets/input-Cmrgo51H.js +0 -1
- package/dist/showcase/assets/input-CnmnWnGb.js +0 -1
- package/dist/showcase/assets/input-group-BwujFvXM.js +0 -1
- package/dist/showcase/assets/input-group-DvXgZtra.js +0 -47
- package/dist/showcase/assets/inputs-CjzW_R8z.js +0 -155
- package/dist/showcase/assets/installation-2dW-rmF2.js +0 -134
- package/dist/showcase/assets/invoice-header-DeWxMKCe.js +0 -36
- package/dist/showcase/assets/invoice-items-Dxb95w0e.js +0 -36
- package/dist/showcase/assets/invoice-mini-EMzCkmR7.js +0 -14
- package/dist/showcase/assets/invoice-table-ClWJaclJ.js +0 -30
- package/dist/showcase/assets/isSameDay-BNPzVySj.js +0 -1
- package/dist/showcase/assets/isToday-D6n7oLej.js +0 -1
- package/dist/showcase/assets/italic-B8w3dpYw.js +0 -1
- package/dist/showcase/assets/item-B8_dwOlT.js +0 -1
- package/dist/showcase/assets/item-Baq-Mmy2.js +0 -1
- package/dist/showcase/assets/item-BtMuqGwy.js +0 -140
- package/dist/showcase/assets/kanban-B-QxvKMg.js +0 -188
- package/dist/showcase/assets/key-round-CrBIyzIa.js +0 -1
- package/dist/showcase/assets/label-VWe_nbHh.js +0 -1
- package/dist/showcase/assets/languages-N0uGt5nC.js +0 -1
- package/dist/showcase/assets/layers-DEZvT5cX.js +0 -1
- package/dist/showcase/assets/layout-app-shell-T9UqKX2o.js +0 -608
- package/dist/showcase/assets/layout-auth-IVC4DuU3.js +0 -790
- package/dist/showcase/assets/layout-containers-naBpuH05.js +0 -101
- package/dist/showcase/assets/layout-header-9i_7ygKU.js +0 -203
- package/dist/showcase/assets/layout-page-CrEUiJpW.js +0 -315
- package/dist/showcase/assets/layout-primitives-DPrVHpu3.js +0 -34
- package/dist/showcase/assets/layout-sidebar-D7z6-kPu.js +0 -224
- package/dist/showcase/assets/layout-users-Cov9D84d.js +0 -117
- package/dist/showcase/assets/layout-workspace-Czlmi8gY.js +0 -191
- package/dist/showcase/assets/lib-DNMH46Rn.js +0 -1
- package/dist/showcase/assets/list-checks-DygDRIGi.js +0 -1
- package/dist/showcase/assets/lock-DqEahakB.js +0 -1
- package/dist/showcase/assets/lock-keyhole-CETEK3R0.js +0 -1
- package/dist/showcase/assets/mail-LKhBlrEc.js +0 -1
- package/dist/showcase/assets/mail-check-BOTjWQJf.js +0 -1
- package/dist/showcase/assets/map-0vJT2r8C.js +0 -124
- package/dist/showcase/assets/map-pin-D0qrpDJI.js +0 -1
- package/dist/showcase/assets/media-library-Bp99WaS9.js +0 -699
- package/dist/showcase/assets/mention-inline-suggestions-mlV7LRvD.js +0 -1
- package/dist/showcase/assets/mentions-Cmd1zxOR.js +0 -138
- package/dist/showcase/assets/menus-CtjFPoDr.js +0 -171
- package/dist/showcase/assets/message-square-BXyvikcZ.js +0 -1
- package/dist/showcase/assets/metadata-list-DLUBcy7E.js +0 -286
- package/dist/showcase/assets/metadata-list-F3bWXtZB.js +0 -1
- package/dist/showcase/assets/metric-CXPRptlh.js +0 -1
- package/dist/showcase/assets/metric-bar-BY25WVZ0.js +0 -1
- package/dist/showcase/assets/metric-grid-DQtf9y6E.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-CXHpkj3U.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-BIuwiVrn.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-yx5lMGQf.js +0 -50
- package/dist/showcase/assets/metrics-comparison-BC_7jLXf.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-C_nhCljz.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-3oySQnoR.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-zS4-oiTO.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-UJkA2LNR.js +0 -42
- package/dist/showcase/assets/metrics-overview-DQFr22ol.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-DnBirxKV.js +0 -54
- package/dist/showcase/assets/minus-BOVQEx6C.js +0 -1
- package/dist/showcase/assets/money-display-DV7xlrNV.js +0 -1
- package/dist/showcase/assets/money-display-DxnM5--7.js +0 -1
- package/dist/showcase/assets/month-year-picker-BzRXCrQ7.js +0 -1
- package/dist/showcase/assets/navigation-ChJKLv4Y.js +0 -90
- package/dist/showcase/assets/navigation-D7VJsKrP.js +0 -231
- package/dist/showcase/assets/navigation-extras-BVc1xQuB.js +0 -43
- package/dist/showcase/assets/notification-banner-1ivcmPLe.js +0 -1
- package/dist/showcase/assets/onboarding-checklist-CbARgwpX.js +0 -119
- package/dist/showcase/assets/overflow-tab-bar-DlqMmyTx.js +0 -1
- package/dist/showcase/assets/overlays-DkWO50b8.js +0 -159
- package/dist/showcase/assets/overlays-KKZpxWjt.js +0 -408
- package/dist/showcase/assets/overview-BjQe-YZE.js +0 -184
- package/dist/showcase/assets/package-DhQRoFDo.js +0 -1
- package/dist/showcase/assets/package-check-CBgGiccG.js +0 -1
- package/dist/showcase/assets/page-BWTmyV5J.js +0 -1
- package/dist/showcase/assets/page-action-button-DV-YYRA4.js +0 -1
- package/dist/showcase/assets/page-header-Bmg4NU_P.js +0 -1
- package/dist/showcase/assets/pagination-ByQ_OXRU.js +0 -1
- package/dist/showcase/assets/pagination-Db5CuoBb.js +0 -42
- package/dist/showcase/assets/paperclip-BQNPUzG_.js +0 -1
- package/dist/showcase/assets/password-input-CPvjzM1f.js +0 -1
- package/dist/showcase/assets/pencil-DuBakHme.js +0 -1
- package/dist/showcase/assets/phone-t94LTB1m.js +0 -1
- package/dist/showcase/assets/placeholder-pattern-BNou2ep-.js +0 -1
- package/dist/showcase/assets/plus-BRcp6JhT.js +0 -1
- package/dist/showcase/assets/popover-CVuJP03o.js +0 -1
- package/dist/showcase/assets/popover-D_P2gTn8.js +0 -1
- package/dist/showcase/assets/popover-menu-DGY5jEk4.js +0 -1
- package/dist/showcase/assets/products-8sUfDMPU.js +0 -423
- package/dist/showcase/assets/progress-BrMvIZIz.js +0 -1
- package/dist/showcase/assets/progress-CSXZAavT.js +0 -18
- package/dist/showcase/assets/progress-Dvqpf_O0.js +0 -1
- package/dist/showcase/assets/props-table-BAfz1Zc6.js +0 -1
- package/dist/showcase/assets/props.generated-CuVoOKYT.json +0 -41746
- package/dist/showcase/assets/qr-code-C-CaHJQ2.js +0 -1
- package/dist/showcase/assets/quote-Ci80eS0u.js +0 -1
- package/dist/showcase/assets/receipt-jvwbPuE3.js +0 -1
- package/dist/showcase/assets/receipt-text-CT0GiMQm.js +0 -1
- package/dist/showcase/assets/refinement-guide-BnCQ9-6f.js +0 -189
- package/dist/showcase/assets/refresh-cw-CXDARnCe.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-DJanfUim.js +0 -1
- package/dist/showcase/assets/resource-Bir-z7ie.js +0 -139
- package/dist/showcase/assets/resource-D19qhfYP.js +0 -1
- package/dist/showcase/assets/resource-selector-card-BUbuu-QH.js +0 -43
- package/dist/showcase/assets/rich-text-editor-BCtz589M.js +0 -124
- package/dist/showcase/assets/rich-text-editor-uu9FmB8B.js +0 -143
- package/dist/showcase/assets/rotate-ccw-DEIVfiHA.js +0 -1
- package/dist/showcase/assets/route-B5vtDLsE.js +0 -1
- package/dist/showcase/assets/save-DQ4Up8ZB.js +0 -1
- package/dist/showcase/assets/schema-form-D7wbdl5u.js +0 -327
- package/dist/showcase/assets/scroll-area-B0QD6o1Y.js +0 -32
- package/dist/showcase/assets/scroll-area-BoZ1SrfI.js +0 -1
- package/dist/showcase/assets/section-BXsVHOsI.js +0 -1
- package/dist/showcase/assets/select-CW8SYsOY.js +0 -1
- package/dist/showcase/assets/select-DmRqLSoG.js +0 -1
- package/dist/showcase/assets/send-Dxs1-xSj.js +0 -1
- package/dist/showcase/assets/separator-BLOG_8oO.js +0 -1
- package/dist/showcase/assets/separator-DZC_uQU-.js +0 -1
- package/dist/showcase/assets/separator-OlLHRN7k.js +0 -28
- package/dist/showcase/assets/settings-2-BSpgytsy.js +0 -1
- package/dist/showcase/assets/settings-CCNP7XOu.js +0 -1
- package/dist/showcase/assets/sheet-DIfJjbgA.js +0 -1
- package/dist/showcase/assets/shield-D2gTWkwA.js +0 -1
- package/dist/showcase/assets/shield-alert-C-3oWpoe.js +0 -1
- package/dist/showcase/assets/shield-check-D11r1eJ8.js +0 -1
- package/dist/showcase/assets/shopping-bag-DAeaVQ5O.js +0 -1
- package/dist/showcase/assets/showcase-GdZcH6OR.js +0 -132
- package/dist/showcase/assets/sidebar-RBzHNuB7.js +0 -1
- package/dist/showcase/assets/sidebar.context-Dyw470Qp.js +0 -1
- package/dist/showcase/assets/skeleton-B7crngMw.js +0 -1
- package/dist/showcase/assets/skeleton-BwEVNdGJ.js +0 -1
- package/dist/showcase/assets/skeleton-DM73_ueB.js +0 -1
- package/dist/showcase/assets/skeleton-cHsWJOtO.js +0 -29
- package/dist/showcase/assets/slider-DRPnIs0S.js +0 -1
- package/dist/showcase/assets/smart-card-DER7dpD9.js +0 -1
- package/dist/showcase/assets/sonner-Go1YsPBH.js +0 -22
- package/dist/showcase/assets/sortable.esm-q6LdsxSr.js +0 -5
- package/dist/showcase/assets/sparkles-DqH40POl.js +0 -1
- package/dist/showcase/assets/spinner-C0YWWxyj.js +0 -1
- package/dist/showcase/assets/spinner-CpHNR13f.js +0 -30
- package/dist/showcase/assets/spinner-Dwvf24e9.js +0 -49
- package/dist/showcase/assets/square-pen-D-xHmIA0.js +0 -1
- package/dist/showcase/assets/stacked-avatars-C92NYKIa.js +0 -1
- package/dist/showcase/assets/star-dD4CAJ83.js +0 -1
- package/dist/showcase/assets/startOfDay-BXZshd4g.js +0 -1
- package/dist/showcase/assets/styles-BPJdkO_3.js +0 -1
- package/dist/showcase/assets/suggestions-CyhKme4Q.js +0 -126
- package/dist/showcase/assets/switch-C7DVTgQd.js +0 -1
- package/dist/showcase/assets/switch-LU6nljdS.js +0 -1
- package/dist/showcase/assets/sync-bERw1shm.js +0 -124
- package/dist/showcase/assets/table-BuIv4nqB.js +0 -686
- package/dist/showcase/assets/table-CDMDtBgJ.js +0 -1
- package/dist/showcase/assets/table-actions-DsK7d8Yb.js +0 -1
- package/dist/showcase/assets/tabs-BDryywGb.js +0 -19
- package/dist/showcase/assets/tabs-BNaZmM48.js +0 -1
- package/dist/showcase/assets/tags-input-CzE_5BJl.js +0 -1
- package/dist/showcase/assets/text-button-B1m5cpX_.js +0 -1
- package/dist/showcase/assets/text-link-CqjW10Ce.js +0 -1
- package/dist/showcase/assets/textarea-xJ3EE8R9.js +0 -1
- package/dist/showcase/assets/textarea-xOekToAG.js +0 -1
- package/dist/showcase/assets/throttle-alert-BH1HMiaI.js +0 -1
- package/dist/showcase/assets/timelines-DjWkuOz3.js +0 -200
- package/dist/showcase/assets/toggle-group-Css6pfUI.js +0 -1
- package/dist/showcase/assets/toggles-DhDrn3YH.js +0 -71
- package/dist/showcase/assets/toggles-group-e4xtKzkl.js +0 -32
- package/dist/showcase/assets/tooltip-DMvMUrGe.js +0 -31
- package/dist/showcase/assets/trash-2-zILxQmtX.js +0 -1
- package/dist/showcase/assets/trending-up-CRH278ig.js +0 -1
- package/dist/showcase/assets/truck-At9CEKg7.js +0 -1
- package/dist/showcase/assets/typography-B0ehvSV4.js +0 -223
- package/dist/showcase/assets/ui-badge-CyLWYf3f.js +0 -28
- package/dist/showcase/assets/ui-card-BPnLZmkJ.js +0 -30
- package/dist/showcase/assets/ui-table-C-zXhcOm.js +0 -42
- package/dist/showcase/assets/upload-tray-IyQJEM9n.js +0 -138
- package/dist/showcase/assets/use-layout-link-Cux4giQO.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-Bo0rTGvc.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-CzU-1LY3.js +0 -1
- package/dist/showcase/assets/useCompositeItem-CJFNnVql.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-BAuO9hue.js +0 -1
- package/dist/showcase/assets/useLabelableId-HuACs9ba.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-MEUfJuxN.js +0 -1
- package/dist/showcase/assets/useRender-B-6DpRfj.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-B-mRyUJJ.js +0 -1
- package/dist/showcase/assets/useValueChanged-CVn_Rfso.js +0 -1
- package/dist/showcase/assets/user-eelwPGBI.js +0 -1
- package/dist/showcase/assets/user-plus-DhswMZvb.js +0 -1
- package/dist/showcase/assets/users-BVMmaveS.js +0 -1
- package/dist/showcase/assets/vendor-profile-FHaiInTe.js +0 -37
- package/dist/showcase/assets/video-C42fxAyj.js +0 -1
- package/dist/showcase/assets/visually-hidden-BwzlEinj.js +0 -1
- package/dist/showcase/assets/wrench-EKI7PaKp.js +0 -1
- package/dist/showcase/assets/x--LIqlhum.js +0 -1
- package/dist/showcase/assets/zap-C1fX30vt.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-B70kyH2E.js","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/column-visibility-toggle.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/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 clear: 'Clear selection',\n },\n accessibility: {\n scrollRegion: 'Table scroll area',\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 accessibility: mergeNested(defaultDataTableStrings.accessibility, overrides.accessibility),\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-surface py-row-y-lg')}>\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-space-2xs\">\n\t\t\t\t\t<PaginationItem>\n\t\t\t\t\t\t\t<PaginationPrevious\n\t\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\t\tclassName={`h-control-sm text-pxs ${!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\t<PaginationEllipsis className=\"size-control-sm\" />\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\t\tclassName=\"size-control-sm text-pxs\"\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\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\t\tclassName={`h-control-sm text-pxs ${!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\t if (mode === 'inline') {\n\t return (\n\t <div className={cn('table-actions--component', 'flex items-center gap-space-sm')}>\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\t key={key}\n\t variant={resolved.variant}\n\t buttonStyle={resolved.buttonStyle}\n\t size=\"small\"\n\t className={cn('text-inherit leading-tight', resolved.className)}\n disabled={!!action.disabled}\n onClick={onClick}\n >\n\t {!!action.icon && <span className=\"mr-space-sm 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\t <div className=\"flex w-full items-center gap-space-md\">\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 { Checkbox } from '@/components/base/forms/fields/checkbox';\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 shadow-[1px_0_0_0_var(--border)]`;\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\t<div className=\"px-space-sm\">\n\t\t\t<Checkbox\n\t\t\t\tclassName=\"size-icon cursor-pointer disabled:cursor-not-allowed disabled:opacity-40\"\n\t\t\tchecked={row.getIsSelected()}\n\t\t\tdisabled={!row.getCanSelect()}\n\t\t\tonCheckedChange={(checked) => row.toggleSelected(checked === true)}\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\t<div className=\"px-space-sm\">\n\t\t\t<Checkbox\n\t\t\t\tclassName=\"size-icon cursor-pointer\"\n\t\t\tchecked={table.getIsAllPageRowsSelected()}\n\t\t\tindeterminate={table.getIsSomePageRowsSelected() && !table.getIsAllPageRowsSelected()}\n\t\t\tonCheckedChange={(checked) => table.toggleAllPageRowsSelected(checked === true)}\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 gap-space-md py-12\">\n\t\t\t\t\t\t\t<div className=\"mb-space-sm flex size-avatar-lg items-center justify-center rounded-full bg-muted\">\n\t\t\t\t\t\t\t\t<svg className=\"size-icon-lg 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-150',\n\t\t\t\t\t'hover:bg-muted/35 data-[state=selected]:bg-primary/8',\n\t\t\t\t\tcursorClass,\n\t\t\t\t\t'border-b border-border/50 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-surface last:pr-surface',\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.meta?.align === 'end' && 'text-right',\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.meta?.align === 'center' && 'text-center',\n\t\t\t\t\t\t\t\t\tdense && 'px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface',\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\tconst stickyCellClassName = stickyHeader\n\t\t? cn(\n\t\t\t'sticky top-0 z-20 backdrop-blur-md shadow-[0_1px_0_0_var(--border)]',\n\t\t\theaderTransparent ? 'bg-background/95' : 'bg-muted/95',\n\t\t)\n\t\t: '';\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={cn(\n\t\t\t\t\t\t\t\t'h-12 border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0',\n\t\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t\t)}\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={cn(\n\t\t\t\t\t\t\t'h-12 whitespace-nowrap border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0',\n\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t)}\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={headerClassName}\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/70',\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/45 hover:bg-muted/45',\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'h-12',\n\t\t\t\t\t\t\t'first:pl-surface last:pr-surface',\n\t\t\t\t\t\t\tdense && 'px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface',\n\t\t\t\t\t\t\t'text-muted-foreground font-medium whitespace-nowrap',\n\t\t\t\t\t\t\theader.column.columnDef.meta?.align === 'end' && 'text-right',\n\t\t\t\t\t\t\theader.column.columnDef.meta?.align === 'center' && 'text-center',\n\t\t\t\t\t\t\tstickyCellClassName,\n\t\t\t\t\t\t\tstickyHeader && stickyFirstColumn && index === 0 && 'z-30',\n\t\t\t\t\t\t\t!stickyHeader && '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={cn('flex items-center', header.column.columnDef.meta?.align === 'end' && 'justify-end', header.column.columnDef.meta?.align === 'center' && 'justify-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 -ml-space-sm inline-flex select-none items-center gap-space-sm rounded px-space-sm',\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-icon-sm 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 { Settings2 } from 'lucide-react';\nimport { useState } from 'react';\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/base/navigation/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 [open, setOpen] = useState(false);\n const columns = table.getAllColumns()\n .filter((column) => column.getCanHide());\n\n if (columns.length === 0) return null;\n\n return (\n <DropdownMenu open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...triggerProps}\n type=\"button\"\n aria-label={strings.columnVisibility.triggerLabel}\n variant=\"secondary\"\n buttonStyle=\"outline\"\n size=\"small\"\n className={cn(\n 'column-visibility-toggle--component',\n 'flex items-center gap-space-sm',\n (triggerProps as { className?: string }).className,\n className,\n )}\n >\n <Settings2 className=\"size-icon-sm\" aria-hidden=\"true\" />\n <span className=\"hidden sm:inline\">{strings.columnVisibility.triggerLabel}</span>\n </Button>\n )}\n />\n <DropdownMenuContent align={align} className=\"w-56\">\n <DropdownMenuGroup>\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 </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nColumnVisibilityToggle.displayName = 'ColumnVisibilityToggle';\n","import { ChevronLeft, ChevronRight, Maximize2, Minimize2 } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { cn } from '@/lib/utils';\nimport { defaultDataTableStrings } from './table.strings';\nimport { type DataTableToolbarProps } from './table.types';\nimport { ColumnVisibilityToggle } from './column-visibility-toggle';\n\nconst SCROLL_AMOUNT = 300;\n\nconst btnBase = 'inline-flex size-control-sm items-center justify-center rounded-none text-muted-foreground/70 transition-colors duration-150 hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-30';\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 hideableColumns = enableColumnVisibility\n ? table.getAllColumns().filter((column) => column.getCanHide())\n : [];\n\n const hasScrollArrows = canScrollLeft || canScrollRight;\n const hasColumns = hideableColumns.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=\"size-icon-sm\" />\n </ToolbarIconButton>\n <ToolbarIconButton\n label={strings.toolbar.scrollRight}\n onClick={handleScrollRight}\n disabled={!canScrollRight}\n >\n <ChevronRight className=\"size-icon-sm\" />\n </ToolbarIconButton>\n <div className=\"h-4 w-px bg-border\" />\n </>\n )}\n\n {/* Column visibility dropdown */}\n {!!hasColumns && (\n <>\n <ColumnVisibilityToggle\n table={table}\n strings={strings}\n className={cn(\n 'h-control-sm rounded-none border-0 px-control-sm shadow-none',\n !hasScrollArrows && 'rounded-l-[calc(theme(borderRadius.md)-1px)]',\n )}\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=\"size-icon-sm\" />\n : <Minimize2 className=\"size-icon-sm\" />\n }\n </ToolbarIconButton>\n </div>\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 {\n\tcreateContext,\n\tuseContext,\n\tuseState,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n\tuseRef,\n\ttype CSSProperties,\n} from 'react';\nimport { Table } from '@/components/ui/table';\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Text } from '@/components/typography';\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 textSize = useDataTableSize();\n * return <Text className=\"data-table--component\" size={textSize}>{value}</Text>;\n *\n * The built-in renderers in `partials/cell-renderers` consume this hook.\n */\nconst DataTableSizeContext = createContext<'xs' | 'sm'>('sm');\n\nexport function useDataTableSize(): 'xs' | 'sm' {\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 {\n\ttype DataTableProps,\n\ttype DataTableSelectionToolbarContext,\n} from './table.types';\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 and body cells use `text-sm` consistently. Size changes alter spacing,\n// not typography, so table reading text stays on the default admin body scale.\nconst sizeClassByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, string> = {\n\tsmall: '[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y [&_td]:text-sm',\n\tdefault: '[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y-lg [&_td]:text-sm',\n};\n\nconst textSizeByDataTableSize: Record<NonNullable<DataTableProps<object, unknown>['size']>, 'xs' | 'sm'> = {\n\tsmall: 'sm',\n\tdefault: 'sm',\n};\n\nfunction normalizeDataTableSize(size: NonNullable<DataTableProps<object, unknown>['size']> | string | undefined) {\n\tif (size === 'small' || size === 'default') return size;\n\tif (size === 'xs') return 'small';\n\tif (size === 'sm' || size === 'base') return 'default';\n\treturn 'default';\n}\n\nconst toCssSize = (value: number | string | undefined): string | undefined => {\n\tif (value === undefined) return undefined;\n\treturn typeof value === 'number' ? `${value}px` : value;\n};\n\nexport function DataTable<TData extends object, TValue = unknown>({\n\tsize,\n\tsurface = 'card',\n\theaderTransparent = true,\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\tstickyToolbar = false,\n\tstickyFirstColumn = false,\n\tmaxBodyHeight,\n\tfillAvailableHeight = 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\tfooterContent,\n\tselectionToolbar,\n\tbulkActions,\n\tselectionToolbarClassName,\n\tstorageKey,\n}: DataTableProps<TData, TValue>) {\n\tconst { defaultSize } = useTableConfig();\n\tconst resolvedSize = normalizeDataTableSize(size ?? defaultSize);\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 resolvedPageQueryKey = pageQueryKey ?? 'page';\n\tconst resolvedMaxBodyHeight = toCssSize(maxBodyHeight);\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 getRowActionsMenuLabel = useCallback(\n\t\t(row: TData) => {\n\t\t\tif (typeof rowActionsMenuLabel === 'function') {\n\t\t\t\treturn rowActionsMenuLabel(row);\n\t\t\t}\n\n\t\t\treturn rowActionsMenuLabel ?? strings.actions.triggerLabel;\n\t\t},\n\t\t[rowActionsMenuLabel, strings.actions.triggerLabel],\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={getRowActionsMenuLabel(row.original)}\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\tgetRowActionsMenuLabel,\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\tconst selectedRows = table.getSelectedRowModel().rows.map((row) => row.original);\n\tconst selectedRowCount = selectedRows.length;\n\tconst clearSelection = useCallback(() => {\n\t\ttable.resetRowSelection();\n\t}, [table]);\n\tconst selectionToolbarContext: DataTableSelectionToolbarContext<TData> = {\n\t\ttable,\n\t\tselectedRows,\n\t\tselectedRowCount,\n\t\ttotalRowCount: data.length,\n\t\trowSelection,\n\t\tclearSelection,\n\t};\n\tconst bulkActionNode =\n\t\ttypeof bulkActions === 'function'\n\t\t\t? bulkActions(selectionToolbarContext)\n\t\t\t: bulkActions;\n\tconst defaultSelectionToolbar = selectedRowCount > 0 ? (\n\t\t<div\n\t\t\tdata-component=\"data-table-selection-toolbar\"\n\t\t\tdata-slot=\"data-table-selection-toolbar\"\n\t\t\tclassName={cn(\n\t\t\t\t\t'data-table-selection-toolbar--component flex min-w-0 flex-col gap-space-md border-b border-border/70 bg-muted/35 px-surface py-row-y sm:flex-row sm:items-center sm:justify-between',\n\t\t\t\tstickyToolbar && 'sticky top-0 z-20 bg-card/95 backdrop-blur',\n\t\t\t\tselectionToolbarClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Text className=\"data-table-selection-toolbar--summary min-w-0\">\n\t\t\t\t{strings.selection.summary(selectedRowCount, data.length)}\n\t\t\t</Text>\n\t\t\t<div\n\t\t\t\tdata-slot=\"data-table-selection-toolbar-actions\"\n\t\t\t\t\tclassName=\"data-table-selection-toolbar--actions flex shrink-0 flex-wrap items-center gap-space-md\"\n\t\t\t>\n\t\t\t\t{bulkActionNode}\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tonClick={clearSelection}\n\t\t\t\t>\n\t\t\t\t\t{strings.selection.clear}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t) : null;\n\tconst selectionToolbarNode = (() => {\n\t\tif (!enableRowSelection || selectedRowCount === 0) return null;\n\t\tif (selectionToolbar === null || selectionToolbar === false) return null;\n\t\tif (typeof selectionToolbar === 'function') {\n\t\t\treturn selectionToolbar(selectionToolbarContext);\n\t\t}\n\t\treturn selectionToolbar ?? defaultSelectionToolbar;\n\t})();\n\tconst tableAreaStyle = useMemo<CSSProperties | undefined>(() => {\n\t\tif (!resolvedMaxBodyHeight) return undefined;\n\t\treturn { '--data-table-body-max-height': resolvedMaxBodyHeight } as CSSProperties;\n\t}, [resolvedMaxBodyHeight]);\n\tconst shouldUseScrollableTableContainer =\n\t\tdense || fillAvailableHeight || resolvedMaxBodyHeight !== undefined;\n\n\tuseEffect(() => {\n\t\tconst scrollRegion = tableAreaRef.current?.querySelector<HTMLElement>('[data-slot=\"table-container\"]');\n\t\tif (!scrollRegion) return;\n\n\t\tscrollRegion.tabIndex = 0;\n\t\tscrollRegion.setAttribute('aria-label', strings.accessibility.scrollRegion);\n\t}, [strings.accessibility.scrollRegion]);\n\n\tconst Provider = DataTableSizeContext.Provider;\n\tconst resolvedTextSize = textSizeByDataTableSize[resolvedSize];\n\n\treturn (\n\t\t<Provider value={resolvedTextSize}>\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\tfillAvailableHeight && 'flex h-full min-h-0 flex-col',\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_color-mix(in_oklch,var(--foreground)_4%,transparent)]',\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={cn('relative', stickyToolbar && 'sticky top-0 z-20 bg-card/95 backdrop-blur')}>\n\n <div className={cn(\n\t 'data-table-topbar flex items-end justify-between gap-space-lg px-surface py-row-y',\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\t\t\t{selectionToolbarNode}\n\n\t\t\t<div\n\t\t\t\tref={tableAreaRef}\n\t\t\t\tstyle={tableAreaStyle}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'min-h-0',\n\t\t\t\t\tshouldUseScrollableTableContainer ? 'overflow-hidden' : innerClassName,\n\t\t\t\t\t(dense || fillAvailableHeight) && 'flex-1',\n\t\t\t\t)}\n\t\t\t>\n\n\t\t\t\t<Table\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'relative',\n\t\t\t\t\t\tsizeClassByDataTableSize[resolvedSize],\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tcontainerClassName={cn(\n\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t\tshouldUseScrollableTableContainer && 'overflow-auto',\n\t\t\t\t\t\tresolvedMaxBodyHeight !== undefined && 'max-h-(--data-table-body-max-height)',\n\t\t\t\t\t\t(dense || fillAvailableHeight) && 'h-full min-h-0',\n\t\t\t\t\t\ttableContainerClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\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\t{!!footerContent && (\n\t\t\t\t<div\n\t\t\t\t\tdata-slot=\"data-table-footer\"\n\t\t\t\t\t\tclassName=\"data-table--footer border-t border-border/70 px-surface py-row-y\"\n\t\t\t\t>\n\t\t\t\t\t{footerContent}\n\t\t\t\t</div>\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\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/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<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t<DropdownMenuLabel>{strings.columnVisibility.title}</DropdownMenuLabel>\n\t\t\t\t\t\t\t\t{table\n\t\t\t\t\t\t\t\t\t.getAllColumns()\n\t\t\t\t\t\t\t\t\t.filter((column) => column.getCanHide())\n\t\t\t\t\t\t\t\t\t.map((column) => {\n\t\t\t\t\t\t\t\t\t\tconst header = column.columnDef.header;\n\t\t\t\t\t\t\t\t\t\tconst columnName = strings.columnVisibility.formatLabel(\n\t\t\t\t\t\t\t\t\t\t\tcolumn.id,\n\t\t\t\t\t\t\t\t\t\t\ttypeof header === 'string' ? header : undefined,\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={column.id}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"capitalize\"\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={column.getIsVisible()}\n\t\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked) =>\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{columnName}\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\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</DropdownMenuGroup>\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 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-space-sm', className)}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t{entry.label}\n\t\t</Badge>\n\t);\n}\n\nStatusCell.displayName = 'StatusCell';\n\n// ──────────────────────────────────────────────────────────────\n// StatusClusterCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface StatusClusterCellItem {\n\tid?: string;\n\tlabel: ReactNode;\n\tvariant?: ComposedBadgeVariant;\n\ticon?: LucideIcon;\n\tdot?: boolean;\n\thidden?: boolean;\n}\n\nexport interface StatusClusterCellProps {\n\titems?: readonly StatusClusterCellItem[];\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n\tbadgeClassName?: string;\n}\n\nexport function StatusClusterCell({\n\titems = [],\n\temptyLabel = EMPTY,\n\tclassName,\n\tbadgeClassName,\n}: StatusClusterCellProps) {\n\tconst visibleItems = items.filter((item) => !item.hidden);\n\n\tif (visibleItems.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\n\treturn (\n\t\t<span className={cn('inline-flex min-w-0 flex-wrap items-center gap-space-sm', className)}>\n\t\t\t{visibleItems.map((item, index) => {\n\t\t\t\tconst Icon = item.icon;\n\t\t\t\treturn (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tkey={item.id ?? index}\n\t\t\t\t\t\tvariant={item.variant ?? 'secondary'}\n\t\t\t\t\t\tdot={item.dot}\n\t\t\t\t\t\tclassName={cn('shrink-0', badgeClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</Badge>\n\t\t\t\t);\n\t\t\t})}\n\t\t</span>\n\t);\n}\n\nStatusClusterCell.displayName = 'StatusClusterCell';\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-space-sm tabular-nums', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"size-icon 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// DateMetaCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface DateMetaCellProps extends DateCellProps {\n\tsecondary?: ReactNode | ((date: Date) => ReactNode);\n\tprimaryClassName?: string;\n\tsecondaryClassName?: string;\n}\n\nexport function DateMetaCell({\n\tvalue,\n\toptions = DEFAULT_DATE_OPTIONS,\n\tlocale,\n\tshowIcon = true,\n\ticon: IconComponent = Calendar,\n\temptyLabel = EMPTY,\n\tclassName,\n\tprimaryClassName,\n\tsecondary,\n\tsecondaryClassName,\n}: DateMetaCellProps) {\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\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\n\tconst formatter = new Intl.DateTimeFormat(locale, options);\n\tconst secondaryNode = typeof secondary === 'function' ? secondary(date) : secondary;\n\n\treturn (\n\t\t<span className={cn('inline-flex min-w-0 items-start gap-space-sm', className)}>\n\t\t\t{!!showIcon && <IconComponent className=\"mt-space-2xs size-icon shrink-0 text-muted-foreground\" />}\n\t\t\t<span className=\"grid min-w-0 gap-space-2xs\">\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName={cn('truncate tabular-nums', primaryClassName)}\n\t\t\t\t>\n\t\t\t\t\t{formatter.format(date)}\n\t\t\t\t</Text>\n\t\t\t\t{!!secondaryNode && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\tclassName={cn('truncate opacity-75', secondaryClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{secondaryNode}\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\nDateMetaCell.displayName = 'DateMetaCell';\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-space-md', className)}>\n\t\t\t<span className=\"relative inline-flex size-avatar-sm 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=\"inherit\" weight=\"semibold\" className=\"text-sm 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-icon\" />\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=\"inherit\" 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// ──────────────────────────────────────────────────────────────\n// ResourceCell / IdentityCell\n// ──────────────────────────────────────────────────────────────\n\nexport interface ResourceCellMetadataItem {\n\tid?: string;\n\tlabel?: ReactNode;\n\tvalue: ReactNode;\n}\n\nexport type ResourceCellBadge =\n\t| ReactNode\n\t| ({\n\t\t\tid?: string;\n\t\t\tlabel: ReactNode;\n\t\t\tvariant?: ComposedBadgeVariant;\n\t\t\ticon?: LucideIcon;\n\t\t\tdot?: boolean;\n\t });\n\nexport interface ResourceCellLinkProps {\n\thref: string;\n\tchildren: ReactNode;\n\tclassName?: string;\n\t'aria-label'?: string;\n}\n\nexport interface ResourceCellProps {\n\ttitle?: ReactNode;\n\tsubtitle?: ReactNode;\n\tmetadata?: ReactNode | readonly ResourceCellMetadataItem[];\n\tbadges?: readonly ResourceCellBadge[];\n\timageUrl?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tfallback?: ReactNode;\n\thref?: string;\n\trenderLink?: (props: ResourceCellLinkProps) => ReactNode;\n\temptyLabel?: ReactNode;\n\tclassName?: string;\n\tmediaClassName?: string;\n\tcontentClassName?: string;\n\ttitleClassName?: string;\n\tsubtitleClassName?: string;\n}\n\nfunction renderResourceBadge(badge: ResourceCellBadge, index: number): ReactNode {\n\tif (\n\t\tbadge &&\n\t\ttypeof badge === 'object' &&\n\t\t!('type' in badge) &&\n\t\t'label' in badge\n\t) {\n\t\tconst Icon = badge.icon;\n\t\treturn (\n\t\t\t<Badge key={badge.id ?? index} variant={badge.variant ?? 'secondary'} dot={badge.dot}>\n\t\t\t\t{!!Icon && <Icon className=\"size-3\" />}\n\t\t\t\t{badge.label}\n\t\t\t</Badge>\n\t\t);\n\t}\n\n\treturn <span key={index}>{badge}</span>;\n}\n\nfunction renderResourceMetadata(metadata: ResourceCellProps['metadata']): ReactNode {\n\tif (!metadata) return null;\n\tif (Array.isArray(metadata)) {\n\t\treturn (\n\t\t\t<span className=\"inline-flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5\">\n\t\t\t\t{metadata.map((item, index) => (\n\t\t\t\t\t<span key={item.id ?? index} className=\"inline-flex min-w-0 items-center gap-1\">\n\t\t\t\t\t\t{!!item.label && (\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"shrink-0 opacity-70\">\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t{item.value}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn metadata as ReactNode;\n}\n\nexport function ResourceCell({\n\ttitle,\n\tsubtitle,\n\tmetadata,\n\tbadges = [],\n\timageUrl,\n\ticon: IconComponent = Mail,\n\tfallback,\n\thref,\n\trenderLink,\n\temptyLabel = EMPTY,\n\tclassName,\n\tmediaClassName,\n\tcontentClassName,\n\ttitleClassName,\n\tsubtitleClassName,\n}: ResourceCellProps) {\n\tif (!title) {\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\n\tconst titleText = typeof title === 'string' ? title : undefined;\n\tconst initials = titleText ? getInitials(titleText) : '';\n\tconst content = (\n\t\t<span className={cn('resource-cell--content grid min-w-0 gap-0.5', contentClassName)}>\n\t\t\t<span className=\"resource-cell--title-row flex min-w-0 items-center gap-1.5\">\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\tclassName={cn('resource-cell--title truncate', titleClassName)}\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</Text>\n\t\t\t\t{badges.length > 0 && (\n\t\t\t\t\t<span className=\"resource-cell--badges inline-flex shrink-0 items-center gap-1\">\n\t\t\t\t\t\t{badges.map(renderResourceBadge)}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t{!!subtitle && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName={cn('resource-cell--subtitle truncate', subtitleClassName)}\n\t\t\t\t>\n\t\t\t\t\t{subtitle}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{!!metadata && (\n\t\t\t\t<span className=\"resource-cell--metadata min-w-0\">\n\t\t\t\t\t{renderResourceMetadata(metadata)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</span>\n\t);\n\tconst cell = (\n\t\t<span className={cn('resource-cell--component inline-flex min-w-0 items-center gap-space-md', className)}>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'resource-cell--media relative inline-flex size-avatar shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground',\n\t\t\t\t\tmediaClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{imageUrl ? (\n\t\t\t\t\t<img src={imageUrl} alt={titleText ?? ''} className=\"absolute inset-0 size-full object-cover\" />\n\t\t\t\t) : fallback ? (\n\t\t\t\t\tfallback\n\t\t\t\t) : initials ? (\n\t\t\t\t\t<Text size=\"inherit\" weight=\"semibold\" className=\"text-sm leading-none\">\n\t\t\t\t\t\t{initials}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<IconComponent className=\"size-icon\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t{content}\n\t\t</span>\n\t);\n\n\tif (!href) return cell;\n\n\tconst linkClassName = 'resource-cell--link inline-flex min-w-0 rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2';\n\tif (renderLink) {\n\t\treturn renderLink({\n\t\t\thref,\n\t\t\tchildren: cell,\n\t\t\tclassName: linkClassName,\n\t\t\t'aria-label': titleText,\n\t\t});\n\t}\n\n\treturn (\n\t\t<a href={href} className={linkClassName} aria-label={titleText}>\n\t\t\t{cell}\n\t\t</a>\n\t);\n}\n\nResourceCell.displayName = 'ResourceCell';\n\nexport const IdentityCell = ResourceCell;\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 size-control-sm items-center justify-center rounded-radius text-muted-foreground/70 transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 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-icon-sm\" />\n\t\t</button>\n\t);\n}\n\nDensityToggle.displayName = 'DensityToggle';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./chunk-CMqjfN_6.cjs"),t=require("./ui-provider-CrsJ_dGn.cjs"),n=require("../lib/utils.cjs"),r=require("./button-DEFoa7-c.cjs"),i=require("./button-CB8e7fui.cjs"),a=require("./typography-sXFd02zl.cjs"),o=require("./badge-B0Ashqkn.cjs"),s=require("./dropdown-menu-B_SCGRL2.cjs"),c=require("./input-DGvh-izk.cjs"),l=require("./checkbox-ECGg8wjW.cjs"),u=require("./separator-BXn_fnly.cjs"),d=require("./action-menu-Cx2xaBjN.cjs");let f=require("react");f=e.t(f,1);let p=require("react/jsx-runtime"),m=require("lucide-react"),h=require("@tanstack/react-table");function g({className:e,containerClassName:t,...r}){return(0,p.jsx)(`div`,{"data-slot":`table-container`,className:n.cn(`relative w-full overflow-x-auto`,t),children:(0,p.jsx)(`table`,{"data-slot":`table`,className:n.cn(`w-full caption-bottom text-sm`,e),...r})})}function _({className:e,...t}){return(0,p.jsx)(`thead`,{"data-slot":`table-header`,className:n.cn(`[&_tr]:border-b`,e),...t})}function v({className:e,...t}){return(0,p.jsx)(`tbody`,{"data-slot":`table-body`,className:n.cn(`[&_tr:last-child]:border-0`,e),...t})}function y({className:e,...t}){return(0,p.jsx)(`tr`,{"data-slot":`table-row`,className:n.cn(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,e),...t})}function b({className:e,...t}){return(0,p.jsx)(`th`,{"data-slot":`table-head`,className:n.cn(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0`,e),...t})}function x({className:e,...t}){return(0,p.jsx)(`td`,{"data-slot":`table-cell`,className:n.cn(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,e),...t})}function S({className:e,...t}){return(0,p.jsx)(`nav`,{role:`navigation`,"aria-label":`pagination`,"data-slot":`pagination`,className:n.cn(`mx-auto flex w-full justify-center`,e),...t})}function C({className:e,...t}){return(0,p.jsx)(`ul`,{"data-slot":`pagination-content`,className:n.cn(`gap-1 flex items-center`,e),...t})}function w({...e}){return(0,p.jsx)(`li`,{"data-slot":`pagination-item`,...e})}function T({className:e,isActive:t,size:i=`icon`,...a}){return(0,p.jsx)(r.t,{variant:t?`outline`:`ghost`,size:i,className:n.cn(e),nativeButton:!1,render:(0,p.jsx)(`a`,{"aria-current":t?`page`:void 0,"data-slot":`pagination-link`,"data-active":t,...a})})}function E({className:e,text:t=`Previous`,...r}){return(0,p.jsxs)(T,{"aria-label":`Go to previous page`,size:`default`,className:n.cn(`pl-2!`,e),...r,children:[(0,p.jsx)(m.ChevronLeftIcon,{"data-icon":`inline-start`}),(0,p.jsx)(`span`,{className:`hidden sm:block`,children:t})]})}function ee({className:e,text:t=`Next`,...r}){return(0,p.jsxs)(T,{"aria-label":`Go to next page`,size:`default`,className:n.cn(`pr-2!`,e),...r,children:[(0,p.jsx)(`span`,{className:`hidden sm:block`,children:t}),(0,p.jsx)(m.ChevronRightIcon,{"data-icon":`inline-end`})]})}function te({className:e,...t}){return(0,p.jsxs)(`span`,{"aria-hidden":!0,"data-slot":`pagination-ellipsis`,className:n.cn(`size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center`,e),...t,children:[(0,p.jsx)(m.MoreHorizontalIcon,{}),(0,p.jsx)(`span`,{className:`sr-only`,children:`More pages`})]})}var ne=e=>{let t=e.replace(/[_-]+/g,` `).replace(/\s+/g,` `).trim();return t?t.replace(/\b\w/g,e=>e.toUpperCase()):`Column`},D={emptyState:{message:`No results found.`},actions:{triggerLabel:`Actions`,srLabel:`Row actions menu`},filter:{searchPlaceholder:`Filter...`,columnsButton:`Columns`},columnVisibility:{title:`Toggle columns`,triggerLabel:`Columns`,formatLabel:(e,t)=>t&&t.trim().length>0?t:ne(e)},toolbar:{scrollLeft:`Scroll left`,scrollRight:`Scroll right`,columns:`Toggle columns`,dense:`Compact view`,comfortable:`Comfortable view`},pagination:{showing:`Showing`,to:`to`,of:`of`,entries:`results`,previous:`Previous`,next:`Next`,page:`Page`,rowsPerPage:`Rows per page`,ariaLabel:`Pagination navigation`},selection:{summary:(e,t)=>`${e} of ${t} row${t===1?``:`s`} selected.`,row:e=>`Select row ${e+1}`,selectAll:`Select all rows`,clear:`Clear selection`},accessibility:{scrollRegion:`Table scroll area`}},O=(e,t)=>({...e,...t??{}}),re=e=>e?{emptyState:O(D.emptyState,e.emptyState),actions:O(D.actions,e.actions),filter:O(D.filter,e.filter),columnVisibility:O(D.columnVisibility,e.columnVisibility),toolbar:O(D.toolbar,e.toolbar),pagination:O(D.pagination,e.pagination),selection:O(D.selection,e.selection),accessibility:O(D.accessibility,e.accessibility)}:D;function ie(e,t){if(t<=7)return Array.from({length:t},(e,t)=>t+1);let n=[1];e>3&&n.push(`ellipsis`);let r=Math.max(2,e-1),i=Math.min(t-1,e+1);for(let e=r;e<=i;e++)n.push(e);return e<t-2&&n.push(`ellipsis`),n.push(t),n}function ae(e,t,n){let r=new URLSearchParams;return r.set(n,String(t)),`${e}?${r.toString()}`}function oe({pagination:e,onPageChange:t,labels:r={},pageQueryKey:i}){let o={...D.pagination,...r},s=i??`page`,c=(e.current_page-1)*e.per_page+1,l=Math.min(e.current_page*e.per_page,e.total),u=(0,f.useCallback)((n,r)=>{r&&t?.(n,r,e.path||``)},[t,e.path]),d=e.prev_page_url!==null,m=e.next_page_url!==null,h=ie(e.current_page,e.last_page);return(0,p.jsxs)(`div`,{className:n.cn(`pagination--component`,`flex items-center justify-between px-surface py-row-y-lg`),children:[(0,p.jsxs)(a.s,{size:`xs`,type:`secondary`,className:`tabular-nums tracking-tight`,children:[(0,p.jsxs)(a.s,{tag:`span`,weight:`medium`,className:`text-foreground`,children:[c,`–`,l]}),` `,o.of,` `,(0,p.jsx)(a.s,{tag:`span`,weight:`medium`,className:`text-foreground`,children:e.total}),` `,o.entries]}),(0,p.jsx)(S,{"aria-label":o.ariaLabel,className:`w-auto mx-0`,children:(0,p.jsxs)(C,{className:`gap-space-2xs`,children:[(0,p.jsx)(w,{children:(0,p.jsx)(E,{text:o.previous,href:`#`,onClick:t=>{t.preventDefault(),u(e.current_page-1,e.prev_page_url)},"aria-disabled":!d,className:`h-control-sm text-pxs ${d?``:`pointer-events-none opacity-40`}`})}),h.map((t,n)=>{let r=t===`ellipsis`,i=r?`ellipsis-${e.current_page}-${n}`:`page-${t}`;return(0,p.jsx)(w,{children:r?(0,p.jsx)(te,{className:`size-control-sm`}):(0,p.jsx)(T,{href:`#`,isActive:t===e.current_page,onClick:n=>{n.preventDefault(),u(t,ae(e.path,t,s))},className:`size-control-sm text-pxs`,children:t})},i)}),(0,p.jsx)(w,{children:(0,p.jsx)(ee,{text:o.next,href:`#`,onClick:t=>{t.preventDefault(),u(e.current_page+1,e.next_page_url)},"aria-disabled":!m,className:`h-control-sm text-pxs ${m?``:`pointer-events-none opacity-40`}`})})]})})]})}oe.displayName=`Pagination`;function se(e){let{row:t,actions:r,menuLabel:a,displayMode:o=`menu`,responsiveBreakpoint:s=1040,strings:c}=e,l=c??D,u=a??l.actions.triggerLabel,h=(0,f.useMemo)(()=>{let e=typeof r==`function`?r(t):r;return Array.isArray(e)?e:[]},[r,t]),g=(0,f.useMemo)(()=>{let e=e=>typeof e==`function`?e(t):e;return h.filter(t=>{let n=e(t.isVisible);return n===void 0?!0:n}).map(t=>({...t,disabled:e(t.isDisabled)??t.disabled??!1}))},[h,t]),_=g.length>0,[v,y]=(0,f.useState)(!1),b=g.filter(e=>e.variant!==`destructive`),x=g.filter(e=>e.variant===`destructive`),S=[...b,...x];if((0,f.useEffect)(()=>{if(o!==`auto`||!_){y(!1);return}let e=()=>{try{y(window.innerWidth<=s)}catch{y(!1)}};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[o,_,s]),!_)return null;let C=o===`auto`?v?`menu`:`inline`:o,w=e=>{if(e){if(typeof e==`function`)return e;if((0,f.isValidElement)(e)&&typeof e.type==`function`)return e.type}},T=e=>{switch(e){case`destructive`:return{variant:`error`,buttonStyle:`solid`};case`outline`:return{variant:`secondary`,buttonStyle:`outline`};case`secondary`:return{variant:`secondary`,buttonStyle:`solid`};case`ghost`:return{variant:`secondary`,buttonStyle:`ghost`};case`link`:return{variant:`secondary`,buttonStyle:`ghost`,className:`underline underline-offset-4`};default:return{variant:`primary`,buttonStyle:`solid`}}},E=e=>{switch(e){case`default`:return`primary`;case`destructive`:return`error`;default:return`secondary`}};return C===`inline`?(0,p.jsx)(`div`,{className:n.cn(`table-actions--component`,`flex items-center gap-space-sm`),children:S.map((e,r)=>{let a=e.id||`${e.label}-${r}`,o=T(e.variant??`ghost`);return(0,p.jsxs)(i.t,{variant:o.variant,buttonStyle:o.buttonStyle,size:`small`,className:n.cn(`text-inherit leading-tight`,o.className),disabled:!!e.disabled,onClick:()=>{e.onClick?.(t)},children:[!!e.icon&&(0,p.jsx)(`span`,{className:`mr-space-sm inline-flex`,children:e.icon}),e.label]},a)})}):(0,p.jsx)(d.t,{label:void 0,icon:m.MoreHorizontal,srText:u||l.actions.srLabel,closeOnSelect:!0,align:`end`,density:`table`,children:S.map((e,n)=>{let r=e.id||`${e.label}-${n}`,i=()=>{e.onClick?.(t)},a=w(e.icon),o=e.icon?(0,p.jsx)(`span`,{className:`inline-flex items-center`,children:e.icon}):null,s=a?null:(0,p.jsxs)(`div`,{className:`flex w-full items-center gap-space-md`,children:[o,(0,p.jsx)(`span`,{children:e.label})]}),c=E(e.variant);return(0,p.jsx)(d.n,{label:e.label,icon:a,variant:c,disabled:!!e.disabled,onClick:i,children:s},r)})})}se.displayName=`DataTableActions`;var ce=(e,t,n)=>{typeof e==`function`?t(t=>{let r=e(t);return n&&n(r),r}):(t(e),n&&n(e))},le=(e,t,n)=>{typeof e==`function`?t(t=>{let r=e(t);return n&&n(r),r}):(t(e),n&&n(e))},ue=(e,t,n)=>{typeof e==`function`?t(t=>{let r=e(t);return n&&n(r),r}):(t(e),n&&n(e))},k=(e,t,n,r)=>{let i=``;return r&&(i+=`bg-primary/5 `),typeof n==`function`?i+=n(e,t)+` `:n&&(i+=n+` `),i.trim()},A=(e,t,n,r,i)=>{let a=``;return typeof n==`string`?a=n:n&&t&&(a=n(e,t)),r&&i?`${a} sticky left-0 z-10 bg-card shadow-[1px_0_0_0_var(--border)]`:a},de=e=>e.getSelectedRowModel().rows.map(e=>e.original),fe=(e,t=D)=>(0,p.jsx)(`div`,{className:`px-space-sm`,children:(0,p.jsx)(l.t,{className:`size-icon cursor-pointer disabled:cursor-not-allowed disabled:opacity-40`,checked:e.getIsSelected(),disabled:!e.getCanSelect(),onCheckedChange:t=>e.toggleSelected(t===!0),onClick:e=>e.stopPropagation(),"aria-label":t.selection.row(e.index)})}),pe=(e,t=D)=>(0,p.jsx)(`div`,{className:`px-space-sm`,children:(0,p.jsx)(l.t,{className:`size-icon cursor-pointer`,checked:e.getIsAllPageRowsSelected(),indeterminate:e.getIsSomePageRowsSelected()&&!e.getIsAllPageRowsSelected(),onCheckedChange:t=>e.toggleAllPageRowsSelected(t===!0),"aria-label":t.selection.selectAll})}),me=(e,t=D)=>[{id:`selection`,header:({table:e})=>pe(e,t),cell:({row:e})=>fe(e,t),enableSorting:!1,enableResizing:!1,size:40},...e];function he({table:e,onRowClick:t,emptyStateMessage:r,emptyStateAction:i,cellClassName:o=``,rowClassName:s=``,stickyFirstColumn:c=!1,striped:l=!1,dense:u=!1,strings:d}){let f=e.getRowModel().rows,m=r??d?.emptyState.message??D.emptyState.message,g=e=>{t&&t(e)};return f.length?(0,p.jsx)(v,{children:f.map((e,r)=>{let i=e.getIsSelected(),a=e.getVisibleCells(),d=k(e,r,s,i),f=()=>{t&&g(e.original)},m=n.cn(d,l&&r%2!=0?`bg-muted/30`:``,`transition-colors duration-150`,`hover:bg-muted/35 data-[state=selected]:bg-primary/8`,t?`cursor-pointer`:``,`border-b border-border/50 last:border-b-0`);return(0,p.jsx)(y,{"data-state":i?`selected`:null,className:m,onClick:f,children:a.map((t,r)=>(0,p.jsx)(x,{className:n.cn(A(t.column.id,e,o,c,r===0),`first:pl-surface last:pr-surface`,t.column.columnDef.meta?.align===`end`&&`text-right`,t.column.columnDef.meta?.align===`center`&&`text-center`,u&&`px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface`),children:(0,h.flexRender)(t.column.columnDef.cell,t.getContext())},t.id))},e.id)})}):(0,p.jsx)(v,{className:`table-body--component`,children:(0,p.jsx)(y,{className:`hover:bg-transparent`,children:(0,p.jsx)(x,{className:`h-24 text-center`,colSpan:e.getAllColumns().length,children:(0,p.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-space-md py-12`,children:[(0,p.jsx)(`div`,{className:`mb-space-sm flex size-avatar-lg items-center justify-center rounded-full bg-muted`,children:(0,p.jsx)(`svg`,{className:`size-icon-lg text-muted-foreground/60`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,children:(0,p.jsx)(`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`})})}),(0,p.jsx)(a.s,{type:`secondary`,weight:`medium`,children:m}),!!i&&(0,p.jsx)(`div`,{className:`mt-1`,children:i})]})})})})}he.displayName=`DataTableBody`;function ge({table:e,enableResizing:t=!1,stickyHeader:r=!1,headerClassName:i=``,cellClassName:a=``,stickyFirstColumn:o=!1,columnGroups:s,dense:c=!1,headerTransparent:l=!1}){let u=e.getHeaderGroups(),d=r?n.cn(`sticky top-0 z-20 backdrop-blur-md shadow-[0_1px_0_0_var(--border)]`,l?`bg-background/95`:`bg-muted/95`):``,f=e=>s?s.find(t=>t.columns.includes(e)):null;return(0,p.jsxs)(_,{className:i,children:[(()=>{if(!s||s.length===0||u.length===0)return null;let e=u[0].headers,t=null,r=0,i=[];return e.forEach((a,o)=>{let s=f(a.id)?.header||``;s===t?r++:(t!==null&&r>0&&i.push((0,p.jsx)(b,{colSpan:r,className:n.cn(`h-12 border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0`,d),children:t||``},`group-${t}-${i.length}`)),t=s,r=1),o===e.length-1&&r>0&&i.push((0,p.jsx)(b,{colSpan:r,className:n.cn(`h-12 whitespace-nowrap border-r border-border/60 bg-muted/35 px-surface py-row-y-sm text-center text-sm font-medium uppercase tracking-wide text-muted-foreground/75 last:border-r-0`,d),children:t||``},`group-${t}-${i.length}`))}),(0,p.jsx)(y,{className:n.cn(`table-header--component`,`border-b border-border`),children:i})})(),u.map(e=>(0,p.jsx)(y,{className:n.cn(`border-b border-border/70`,l?`bg-transparent hover:bg-transparent`:`bg-muted/45 hover:bg-muted/45`),children:e.headers.map((e,i)=>{let s=n.cn(A(e.id,null,a,o,i===0),`h-12`,`first:pl-surface last:pr-surface`,c&&`px-surface py-row-y-sm text-sm first:pl-surface last:pr-surface`,`text-muted-foreground font-medium whitespace-nowrap`,e.column.columnDef.meta?.align===`end`&&`text-right`,e.column.columnDef.meta?.align===`center`&&`text-center`,d,r&&o&&i===0&&`z-30`,!r&&`bg-transparent`),l=t?{position:`relative`}:void 0,u=e.getResizeHandler(),f=e.column.getIsResizing(),g=(()=>{let t=e.column.columnDef.header;return typeof t==`string`?t:typeof e.id==`string`?e.id:`column`})();return(0,p.jsx)(b,{className:s,style:l,children:e.isPlaceholder?null:(0,p.jsxs)(`div`,{children:[(()=>{let t=e.column.getCanSort(),r=e.column.getIsSorted(),i=(0,h.flexRender)(e.column.columnDef.header,e.getContext()),a=r===`asc`?m.ArrowUp:r===`desc`?m.ArrowDown:m.ChevronsUpDown;return t?(0,p.jsxs)(`button`,{type:`button`,onClick:e.column.getToggleSortingHandler(),className:n.cn(`group -ml-space-sm inline-flex select-none items-center gap-space-sm rounded px-space-sm`,`hover:text-foreground transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,r&&`text-foreground`),"aria-label":`Sort ${g}`,children:[i,(0,p.jsx)(a,{className:n.cn(`size-icon-sm shrink-0 transition-opacity`,r?`opacity-100`:`opacity-30 group-hover:opacity-70`),"aria-hidden":`true`})]}):(0,p.jsx)(`div`,{className:n.cn(`flex items-center`,e.column.columnDef.meta?.align===`end`&&`justify-end`,e.column.columnDef.meta?.align===`center`&&`justify-center`),children:i})})(),!!t&&(0,p.jsx)(`button`,{type:`button`,className:n.cn(`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`,f&&`!bg-primary-600 bg-opacity-100`),"aria-label":`Resize ${g}`,"aria-orientation":`vertical`,onMouseDown:u,onTouchStart:u})]})},e.id)})},e.id))]})}ge.displayName=`DataTableHeader`;function j({table:e,className:t,align:r=`end`,strings:a=D}){let[o,c]=(0,f.useState)(!1),l=e.getAllColumns().filter(e=>e.getCanHide());return l.length===0?null:(0,p.jsxs)(s.t,{open:o,onOpenChange:c,children:[(0,p.jsx)(s.g,{render:e=>(0,p.jsxs)(i.t,{...e,type:`button`,"aria-label":a.columnVisibility.triggerLabel,variant:`secondary`,buttonStyle:`outline`,size:`small`,className:n.cn(`column-visibility-toggle--component`,`flex items-center gap-space-sm`,e.className,t),children:[(0,p.jsx)(m.Settings2,{className:`size-icon-sm`,"aria-hidden":`true`}),(0,p.jsx)(`span`,{className:`hidden sm:inline`,children:a.columnVisibility.triggerLabel})]})}),(0,p.jsx)(s.r,{align:r,className:`w-56`,children:(0,p.jsxs)(s.i,{children:[(0,p.jsx)(s.o,{children:a.columnVisibility.title}),(0,p.jsx)(s.d,{}),l.map(e=>{let t=e.columnDef.header,n=a.columnVisibility.formatLabel(e.id,typeof t==`string`?t:void 0);return(0,p.jsx)(s.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:n},e.id)})]})})]})}j.displayName=`ColumnVisibilityToggle`;var _e=300,ve=`inline-flex size-control-sm items-center justify-center rounded-none text-muted-foreground/70 transition-colors duration-150 hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-30`;function M({label:e,onClick:t,disabled:r,className:i,children:a}){return(0,p.jsx)(`button`,{type:`button`,"aria-label":e,className:n.cn(`table-toolbar--component`,ve,i),onClick:t,disabled:r,children:a})}function N(e){return e?e.querySelector(`[data-slot="table-container"]`):null}function ye({table:e,tableAreaRef:t,dense:r,onDenseChange:i,enableColumnVisibility:a=!1,strings:o=D}){let[s,c]=(0,f.useState)(!1),[l,u]=(0,f.useState)(!1),d=(0,f.useRef)(0),h=(0,f.useRef)(null),g=(0,f.useCallback)(()=>{let e=N(t.current);if(!e){c(!1),u(!1);return}let{scrollLeft:n,scrollWidth:r,clientWidth:i}=e;c(n>1),u(n+i<r-1)},[t]);(0,f.useEffect)(()=>{let e=window.setTimeout(()=>{let e=N(t.current);if(!e)return;g();let n=()=>{cancelAnimationFrame(d.current),d.current=requestAnimationFrame(g)};e.addEventListener(`scroll`,n,{passive:!0});let r=new ResizeObserver(g);r.observe(e),e.firstElementChild&&r.observe(e.firstElementChild),h.current=()=>{e.removeEventListener(`scroll`,n),cancelAnimationFrame(d.current),r.disconnect()}},0);return()=>{window.clearTimeout(e),h.current?.()}},[t,g,r]);let _=(0,f.useCallback)(()=>{N(t.current)?.scrollBy({left:-300,behavior:`smooth`})},[t]),v=(0,f.useCallback)(()=>{N(t.current)?.scrollBy({left:_e,behavior:`smooth`})},[t]),y=(0,f.useCallback)(()=>{i(!r)},[r,i]),b=a?e.getAllColumns().filter(e=>e.getCanHide()):[],x=s||l,S=b.length>0,C=r?o.toolbar.comfortable:o.toolbar.dense;return(0,p.jsxs)(`div`,{className:`flex items-center rounded-md border border-border bg-card`,children:[!!x&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(M,{label:o.toolbar.scrollLeft,onClick:_,disabled:!s,className:`rounded-l-[calc(theme(borderRadius.md)-1px)]`,children:(0,p.jsx)(m.ChevronLeft,{className:`size-icon-sm`})}),(0,p.jsx)(M,{label:o.toolbar.scrollRight,onClick:v,disabled:!l,children:(0,p.jsx)(m.ChevronRight,{className:`size-icon-sm`})}),(0,p.jsx)(`div`,{className:`h-4 w-px bg-border`})]}),!!S&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(j,{table:e,strings:o,className:n.cn(`h-control-sm rounded-none border-0 px-control-sm shadow-none`,!x&&`rounded-l-[calc(theme(borderRadius.md)-1px)]`)}),(0,p.jsx)(`div`,{className:`h-4 w-px bg-border`})]}),(0,p.jsx)(M,{label:C,onClick:y,className:n.cn(`rounded-r-[calc(theme(borderRadius.md)-1px)]`,!x&&!S&&`rounded-l-[calc(theme(borderRadius.md)-1px)]`),children:r?(0,p.jsx)(m.Maximize2,{className:`size-icon-sm`}):(0,p.jsx)(m.Minimize2,{className:`size-icon-sm`})})]})}ye.displayName=`DataTableToolbar`;var be=(0,f.createContext)(`sm`);function xe(){return(0,f.useContext)(be)}var Se={small:`[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y [&_td]:text-sm`,default:`[&_th]:h-12 [&_th]:px-surface [&_th]:py-row-y-lg [&_th]:text-sm [&_td]:px-surface [&_td]:py-row-y-lg [&_td]:text-sm`},Ce={small:`sm`,default:`sm`};function we(e){return e===`small`||e==="default"?e:e===`xs`?`small`:`default`}var Te=e=>{if(e!==void 0)return typeof e==`number`?`${e}px`:e};function P({size:e,surface:r=`card`,headerTransparent:o=!0,columns:s,data:c,columnGroups:l,rowActions:d,rowActionsMenuLabel:m,rowActionsDisplayMode:_,rowActionsBreakpoint:v,enableSorting:y=!1,manualSorting:b=!1,enableColumnVisibility:x=!1,enableRowSelection:S=!1,enableMultiRowSelection:C=!0,enableSubRowSelection:w=!1,pagination:T,pageQueryKey:E,onPageChange:ee,onSort:te,onRowClick:ne,onRowSelectionChange:D,stickyHeader:O=!1,stickyToolbar:ie=!1,stickyFirstColumn:ae=!1,maxBodyHeight:ce,fillAvailableHeight:k=!1,emptyStateMessage:A,emptyStateAction:de,className:fe=``,rowClassName:pe=``,cellClassName:j=``,headerClassName:_e=``,wrapperClassName:ve=``,innerClassName:M=`overflow-x-auto`,tableContainerClassName:N=``,getRowId:xe,rowSelection:P,initialState:F,onColumnVisibilityChange:I,strings:L,topbarContent:R,footerContent:z,selectionToolbar:B,bulkActions:V,selectionToolbarClassName:Ee,storageKey:H}){let{defaultSize:De}=t.d(),U=we(e??De),W=(0,f.useMemo)(()=>re(L),[L]),Oe=n.cn(`bg-card`,pe),ke=A??W.emptyState.message,G=E??`page`,K=Te(ce),q=Array.isArray(s)&&s.length===2&&Array.isArray(s[1])?s[0]:s,J=(0,f.useMemo)(()=>H?`dt.${H}.columns`:null,[H]),Y=(0,f.useMemo)(()=>H?`dt.${H}.dense`:null,[H]),Ae=(0,f.useMemo)(()=>{if(!J||typeof window>`u`)return F?.columnVisibility||{};try{let e=window.localStorage.getItem(J);return{...e?JSON.parse(e):{},...F?.columnVisibility||{}}}catch{return F?.columnVisibility||{}}},[J,F?.columnVisibility]),je=(0,f.useMemo)(()=>{if(!Y||typeof window>`u`)return!1;try{return window.localStorage.getItem(Y)===`1`}catch{return!1}},[Y]),[Me,Ne]=(0,f.useState)(F?.sorting||[]),[Pe,Fe]=(0,f.useState)(Ae),[Ie,Le]=(0,f.useState)(F?.rowSelection||{}),[X,Re]=(0,f.useState)(je),Z=P??Ie,ze=(0,f.useRef)(null),Be=(0,f.useCallback)(e=>{le(e,Ne,te)},[te]),Ve=(0,f.useCallback)(e=>{ue(e,Fe,e=>{if(J&&typeof window<`u`)try{window.localStorage.setItem(J,JSON.stringify(e))}catch{}I&&I(e)})},[J,I]),He=(0,f.useCallback)(e=>{let t=typeof e==`function`?e(Z):e;P===void 0&&Le(t),D?.(t)},[P,D,Z]),Ue=(0,f.useCallback)(e=>{if(Re(e),Y&&typeof window<`u`)try{window.localStorage.setItem(Y,e?`1`:`0`)}catch{}},[Y]),We=(0,f.useCallback)(e=>typeof m==`function`?m(e):m??W.actions.triggerLabel,[m,W.actions.triggerLabel]),Q=(0,h.useReactTable)({data:c,columns:(0,f.useMemo)(()=>{let e=S?me(q,W):q;if(!d)return e;let t={id:`actions`,header:W.actions.triggerLabel,cell:({row:e})=>(0,p.jsx)(se,{row:e.original,actions:d,menuLabel:We(e.original),displayMode:_,responsiveBreakpoint:v,strings:W}),enableSorting:!1,enableHiding:!1,size:40};return[...e,t]},[q,S,d,We,v,_,W]),state:{sorting:Me,columnVisibility:Pe,rowSelection:Z},enableSorting:y,manualSorting:b,enableRowSelection:S,enableMultiRowSelection:C,enableSubRowSelection:w,onSortingChange:y&&b?Be:void 0,onRowSelectionChange:S?He:void 0,onColumnVisibilityChange:Ve,getCoreRowModel:(0,h.getCoreRowModel)(),getRowId:xe}),Ge=T&&T.last_page>1,Ke=Q.getSelectedRowModel().rows.map(e=>e.original),$=Ke.length,qe=(0,f.useCallback)(()=>{Q.resetRowSelection()},[Q]),Je={table:Q,selectedRows:Ke,selectedRowCount:$,totalRowCount:c.length,rowSelection:Z,clearSelection:qe},Ye=typeof V==`function`?V(Je):V,Xe=$>0?(0,p.jsxs)(`div`,{"data-component":`data-table-selection-toolbar`,"data-slot":`data-table-selection-toolbar`,className:n.cn(`data-table-selection-toolbar--component flex min-w-0 flex-col gap-space-md border-b border-border/70 bg-muted/35 px-surface py-row-y sm:flex-row sm:items-center sm:justify-between`,ie&&`sticky top-0 z-20 bg-card/95 backdrop-blur`,Ee),children:[(0,p.jsx)(a.s,{className:`data-table-selection-toolbar--summary min-w-0`,children:W.selection.summary($,c.length)}),(0,p.jsxs)(`div`,{"data-slot":`data-table-selection-toolbar-actions`,className:`data-table-selection-toolbar--actions flex shrink-0 flex-wrap items-center gap-space-md`,children:[Ye,(0,p.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:qe,children:W.selection.clear})]})]}):null,Ze=!S||$===0||B===null||B===!1?null:typeof B==`function`?B(Je):B??Xe,Qe=(0,f.useMemo)(()=>{if(K)return{"--data-table-body-max-height":K}},[K]),$e=X||k||K!==void 0;(0,f.useEffect)(()=>{let e=ze.current?.querySelector(`[data-slot="table-container"]`);e&&(e.tabIndex=0,e.setAttribute(`aria-label`,W.accessibility.scrollRegion))},[W.accessibility.scrollRegion]);let et=be.Provider,tt=Ce[U];return(0,p.jsx)(et,{value:tt,children:(0,p.jsxs)(`div`,{className:n.cn(X?`fixed inset-0 z-50 bg-background flex flex-col overflow-hidden p-6`:n.cn(`w-full min-w-0 max-w-full`,k&&`flex h-full min-h-0 flex-col`,r===`card`&&`overflow-hidden rounded-lg border border-border bg-card shadow-[0_1px_3px_0_color-mix(in_oklch,var(--foreground)_4%,transparent)]`,r===`glass`&&`rounded-md overflow-hidden border border-border/60`,ve)),children:[!!(R||x)&&(0,p.jsxs)(`div`,{className:n.cn(`relative`,ie&&`sticky top-0 z-20 bg-card/95 backdrop-blur`),children:[(0,p.jsxs)(`div`,{className:n.cn(`data-table-topbar flex items-end justify-between gap-space-lg px-surface py-row-y`,X?`mb-3 shrink-0`:`mb-0`),children:[(0,p.jsx)(`div`,{className:`data-table-topbar-left flex-1`,children:R}),(0,p.jsx)(`div`,{className:`data-table-topbar-right flex items-center justify-end`,children:(0,p.jsx)(ye,{table:Q,tableAreaRef:ze,dense:X,onDenseChange:Ue,enableColumnVisibility:x,strings:W})})]}),(0,p.jsx)(u.t,{})]}),Ze,(0,p.jsx)(`div`,{ref:ze,style:Qe,className:n.cn(`min-h-0`,$e?`overflow-hidden`:M,(X||k)&&`flex-1`),children:(0,p.jsxs)(g,{className:n.cn(`relative`,Se[U],fe),containerClassName:n.cn(`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,$e&&`overflow-auto`,K!==void 0&&`max-h-(--data-table-body-max-height)`,(X||k)&&`h-full min-h-0`,N),children:[(0,p.jsx)(ge,{table:Q,stickyHeader:O,headerClassName:_e,cellClassName:j,stickyFirstColumn:ae,columnGroups:l,dense:X,headerTransparent:o}),(0,p.jsx)(he,{table:Q,onRowClick:ne,emptyStateMessage:ke,emptyStateAction:de,cellClassName:j,rowClassName:Oe,stickyFirstColumn:ae,strings:W,dense:X})]})}),!!Ge&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(u.t,{}),(0,p.jsx)(oe,{pagination:T,onPageChange:ee,pageQueryKey:G,labels:W.pagination})]}),!!z&&(0,p.jsx)(`div`,{"data-slot":`data-table-footer`,className:`data-table--footer border-t border-border/70 px-surface py-row-y`,children:z})]})})}P.displayName=`DataTable`;function F({table:e,filterColumn:t,filterPlaceholder:r,enableColumnVisibility:a=!1,customContent:o,strings:l=D}){if(!t&&!a&&!o)return null;let u=r??l.filter.searchPlaceholder;return(0,p.jsxs)(`div`,{className:n.cn(`filter-bar--component`,`flex items-center justify-between p-4`),children:[(0,p.jsxs)(`div`,{className:`flex flex-1 items-center space-x-2`,children:[!!t&&(0,p.jsx)(c.t,{placeholder:u,value:e.getColumn(t)?.getFilterValue()??``,onChange:n=>{let r=n.target.value;e.getColumn(t)?.setFilterValue(r)},className:`max-w-sm`}),o]}),!!a&&(0,p.jsxs)(s.t,{children:[(0,p.jsx)(s.g,{render:e=>(0,p.jsx)(i.t,{...e,variant:`secondary`,buttonStyle:`outline`,className:`ml-auto`,children:l.columnVisibility.triggerLabel})}),(0,p.jsx)(s.r,{align:`end`,children:(0,p.jsxs)(s.i,{children:[(0,p.jsx)(s.o,{children:l.columnVisibility.title}),e.getAllColumns().filter(e=>e.getCanHide()).map(e=>{let t=e.columnDef.header,n=l.columnVisibility.formatLabel(e.id,typeof t==`string`?t:void 0);return(0,p.jsx)(s.n,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:n},e.id)})]})})]})]})}F.displayName=`DataTableFilterBar`;function I({table:e,selectedRowCount:t,totalRowCount:r,strings:o=D}){let s=t??e.getFilteredSelectedRowModel().rows.length,c=r??e.getFilteredRowModel().rows.length,l=o.selection.summary(s,c);return(0,p.jsxs)(`div`,{className:n.cn(`table-pagination--component`,`flex items-center justify-end space-x-2 px-4 py-4`),children:[(0,p.jsx)(`div`,{className:`flex-1`,children:(0,p.jsx)(a.s,{type:`secondary`,children:l})}),(0,p.jsx)(i.t,{variant:`secondary`,buttonStyle:`outline`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:o.pagination.previous}),(0,p.jsx)(i.t,{variant:`secondary`,buttonStyle:`outline`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:o.pagination.next})]})}I.displayName=`DataTablePagination`;function L({value:e,fallback:t=`--`,missing:r,className:i,children:o}){let s=r??(e==null||e===``);return o===void 0?s?(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,i),children:t}):(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,className:i,children:String(e)}):(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:s?`secondary`:`main`,className:n.cn(s&&`opacity-60`,i),children:o})}L.displayName=`CellValue`;var R=e=>(0,p.jsx)(`a`,{className:`text-foreground underline decoration-border decoration-dotted underline-offset-2 transition-colors duration-150 hover:text-foreground hover:decoration-muted-foreground`,...e,children:e.children});function z({value:e,map:t,emptyLabel:r=`—`,className:i}){if(!e||!(e in t))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,i),children:r});let s=t[e],c=s.icon;return(0,p.jsxs)(o.t,{variant:s.variant??`secondary`,className:n.cn(`gap-space-sm`,i),children:[!!c&&(0,p.jsx)(c,{className:`size-icon-sm`}),s.label]})}z.displayName=`StatusCell`;function B({items:e=[],emptyLabel:t=`—`,className:r,badgeClassName:i}){let s=e.filter(e=>!e.hidden);return s.length===0?(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,r),children:t}):(0,p.jsx)(`span`,{className:n.cn(`inline-flex min-w-0 flex-wrap items-center gap-space-sm`,r),children:s.map((e,t)=>{let r=e.icon;return(0,p.jsxs)(o.t,{variant:e.variant??`secondary`,dot:e.dot,className:n.cn(`shrink-0`,i),children:[!!r&&(0,p.jsx)(r,{className:`size-icon-sm`}),e.label]},e.id??t)})})}B.displayName=`StatusClusterCell`;var V={month:`short`,day:`numeric`,year:`numeric`};function Ee({value:e,options:t=V,locale:r,showIcon:i=!0,icon:o=m.Calendar,emptyLabel:s=`—`,className:c}){if(e==null||e===``)return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let l=e instanceof Date?e:new Date(e);if(Number.isNaN(l.getTime()))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let u=new Intl.DateTimeFormat(r,t);return(0,p.jsxs)(`span`,{className:n.cn(`inline-flex items-center gap-space-sm tabular-nums`,c),children:[!!i&&(0,p.jsx)(o,{className:`size-icon text-muted-foreground`}),(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,children:u.format(l)})]})}Ee.displayName=`DateCell`;function H({value:e,options:t=V,locale:r,showIcon:i=!0,icon:o=m.Calendar,emptyLabel:s=`—`,className:c,primaryClassName:l,secondary:u,secondaryClassName:d}){if(e==null||e===``)return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let f=e instanceof Date?e:new Date(e);if(Number.isNaN(f.getTime()))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,c),children:s});let h=new Intl.DateTimeFormat(r,t),g=typeof u==`function`?u(f):u;return(0,p.jsxs)(`span`,{className:n.cn(`inline-flex min-w-0 items-start gap-space-sm`,c),children:[!!i&&(0,p.jsx)(o,{className:`mt-space-2xs size-icon shrink-0 text-muted-foreground`}),(0,p.jsxs)(`span`,{className:`grid min-w-0 gap-space-2xs`,children:[(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`truncate tabular-nums`,l),children:h.format(f)}),!!g&&(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`truncate opacity-75`,d),children:g})]})]})}H.displayName=`DateMetaCell`;function De({value:e,currency:t,locale:r,emptyLabel:i=`—`,className:o,weight:s=`semibold`}){let c=typeof e==`number`?e:Number.parseFloat(String(e??``));if(!Number.isFinite(c))return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,o),children:i});let l=t?new Intl.NumberFormat(r,{style:`currency`,currency:t,maximumFractionDigits:2}).format(c):c.toFixed(2);return(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,weight:s,className:n.cn(`tabular-nums`,o),children:l})}De.displayName=`CurrencyCell`;function U(e){return e.split(/\s+/).filter(Boolean).slice(0,2).map(e=>e[0].toUpperCase()).join(``)}function W({name:e,imageUrl:t,icon:r=m.Mail,subtitle:i,emptyLabel:o=`—`,className:s}){return!e||e.trim().length===0?(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,s),children:o}):(0,p.jsxs)(`span`,{className:n.cn(`inline-flex items-center gap-space-md`,s),children:[(0,p.jsx)(`span`,{className:`relative inline-flex size-avatar-sm shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground`,children:t?(0,p.jsx)(`img`,{src:t,alt:e,className:`absolute inset-0 size-full object-cover`}):e.length>0?(0,p.jsx)(a.s,{size:`inherit`,weight:`semibold`,className:`text-sm leading-none`,children:U(e)}):(0,p.jsx)(r,{className:`size-icon`})}),(0,p.jsxs)(`span`,{className:`min-w-0 inline-flex flex-col`,children:[(0,p.jsx)(a.s,{size:`inherit`,weight:`medium`,className:`truncate`,children:e}),!!i&&(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:`truncate`,children:i})]})]})}W.displayName=`AvatarCell`;function Oe(e,t){if(e&&typeof e==`object`&&!(`type`in e)&&`label`in e){let n=e.icon;return(0,p.jsxs)(o.t,{variant:e.variant??`secondary`,dot:e.dot,children:[!!n&&(0,p.jsx)(n,{className:`size-3`}),e.label]},e.id??t)}return(0,p.jsx)(`span`,{children:e},t)}function ke(e){return e?Array.isArray(e)?(0,p.jsx)(`span`,{className:`inline-flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5`,children:e.map((e,t)=>(0,p.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1`,children:[!!e.label&&(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:`shrink-0 opacity-70`,children:e.label}),(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:`truncate`,children:e.value})]},e.id??t))}):e:null}function G({title:e,subtitle:t,metadata:r,badges:i=[],imageUrl:o,icon:s=m.Mail,fallback:c,href:l,renderLink:u,emptyLabel:d=`—`,className:f,mediaClassName:h,contentClassName:g,titleClassName:_,subtitleClassName:v}){if(!e)return(0,p.jsx)(a.s,{size:`inherit`,type:`secondary`,className:n.cn(`opacity-60`,f),children:d});let y=typeof e==`string`?e:void 0,b=y?U(y):``,x=(0,p.jsxs)(`span`,{className:n.cn(`resource-cell--content grid min-w-0 gap-0.5`,g),children:[(0,p.jsxs)(`span`,{className:`resource-cell--title-row flex min-w-0 items-center gap-1.5`,children:[(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,weight:`medium`,className:n.cn(`resource-cell--title truncate`,_),children:e}),i.length>0&&(0,p.jsx)(`span`,{className:`resource-cell--badges inline-flex shrink-0 items-center gap-1`,children:i.map(Oe)})]}),!!t&&(0,p.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:n.cn(`resource-cell--subtitle truncate`,v),children:t}),!!r&&(0,p.jsx)(`span`,{className:`resource-cell--metadata min-w-0`,children:ke(r)})]}),S=(0,p.jsxs)(`span`,{className:n.cn(`resource-cell--component inline-flex min-w-0 items-center gap-space-md`,f),children:[(0,p.jsx)(`span`,{className:n.cn(`resource-cell--media relative inline-flex size-avatar shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground`,h),children:o?(0,p.jsx)(`img`,{src:o,alt:y??``,className:`absolute inset-0 size-full object-cover`}):c||(b?(0,p.jsx)(a.s,{size:`inherit`,weight:`semibold`,className:`text-sm leading-none`,children:b}):(0,p.jsx)(s,{className:`size-icon`}))}),x]});if(!l)return S;let C=`resource-cell--link inline-flex min-w-0 rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`;return u?u({href:l,children:S,className:C,"aria-label":y}):(0,p.jsx)(`a`,{href:l,className:C,"aria-label":y,children:S})}G.displayName=`ResourceCell`;var K=G,q=300;function J(e){return e?e.querySelector(`[data-slot="table-container"]`):null}function Y(e,t={}){let{stepPx:n=q,deps:r=[]}=t,[i,a]=(0,f.useState)(!1),[o,s]=(0,f.useState)(!1),c=(0,f.useRef)(0),l=(0,f.useCallback)(()=>{let t=J(e.current);if(!t){a(!1),s(!1);return}let{scrollLeft:n,scrollWidth:r,clientWidth:i}=t;a(n>1),s(n+i<r-1)},[e]);(0,f.useEffect)(()=>{let t=window.setTimeout(()=>{let t=J(e.current);if(!t)return;l();let n=()=>{cancelAnimationFrame(c.current),c.current=requestAnimationFrame(l)};t.addEventListener(`scroll`,n,{passive:!0});let r=new ResizeObserver(l);return r.observe(t),t.firstElementChild&&r.observe(t.firstElementChild),()=>{t.removeEventListener(`scroll`,n),cancelAnimationFrame(c.current),r.disconnect()}},0);return()=>window.clearTimeout(t)},[e,l,...r]);let u=(0,f.useCallback)(t=>{J(e.current)?.scrollBy({left:t,behavior:`smooth`})},[e]);return{canScrollLeft:i,canScrollRight:o,scrollBy:u,scrollLeft:(0,f.useCallback)(()=>u(-n),[u,n]),scrollRight:(0,f.useCallback)(()=>u(n),[u,n])}}function Ae(e,t=!1){let[n,r]=(0,f.useState)((()=>{if(!e||typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return n===`1`?!0:n===`0`?!1:t}catch{return t}})());return[n,(0,f.useCallback)(t=>{if(r(t),e&&typeof window<`u`)try{window.localStorage.setItem(e,t?`1`:`0`)}catch{}},[e])]}var je=`inline-flex size-control-sm items-center justify-center rounded-radius text-muted-foreground/70 transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-30`;function Me({dense:e,onChange:t,denseLabel:r=`Dense`,comfortableLabel:i=`Comfortable`,className:a}){let o=e?i:r,s=e?m.Maximize2:m.Minimize2;return(0,p.jsx)(`button`,{type:`button`,"aria-label":o,"aria-pressed":e,onClick:()=>t(!e),className:n.cn(je,a),children:(0,p.jsx)(s,{className:`size-icon-sm`})})}Me.displayName=`DensityToggle`,Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return ye}});
|
|
2
|
+
//# sourceMappingURL=table-DQA2m2F0.cjs.map
|