admin-ui-starter-kit 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/admin-ui-consumer-migration/SKILL.md +135 -0
- package/.agents/skills/component-library-rules/SKILL.md +13 -2
- package/.agents/skills/component-library-rules/references/components/INDEX.json +1 -0
- package/.agents/skills/component-library-rules/references/components/INDEX.md +1 -0
- package/.agents/skills/component-library-rules/references/components/base__buttons.md +18 -6
- package/.agents/skills/component-library-rules/references/components/base__combobox.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__forms.md +10 -7
- package/.agents/skills/component-library-rules/references/components/base__item.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__map.md +7 -7
- package/.agents/skills/component-library-rules/references/components/base__navigation.md +8 -8
- package/.agents/skills/component-library-rules/references/components/base__table.md +2 -2
- package/.agents/skills/component-library-rules/references/components/base__typography.md +6 -4
- package/.agents/skills/component-library-rules/references/components/composed__ai-elements.md +4 -4
- package/.agents/skills/component-library-rules/references/components/composed__api-key-list.md +4 -4
- package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +107 -113
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +49 -48
- package/.agents/skills/component-library-rules/references/components/composed__navigation.md +6 -2
- package/.agents/skills/component-library-rules/references/components/composed__timelines.md +21 -7
- package/.agents/skills/component-library-rules/references/components/features__comments.md +12 -4
- package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +4 -2
- package/.agents/skills/component-library-rules/references/components/features__event-log.md +6 -2
- package/.agents/skills/component-library-rules/references/components/features__overlays.md +8 -6
- package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +552 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +2 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +7 -7
- package/.agents/skills/component-library-rules/references/components/ui__toggles-group.md +7 -7
- package/.agents/skills/component-library-rules/references/components/ui__toggles.md +1 -1
- package/AGENTS.md +6 -4
- package/CHANGELOG.md +27 -1
- package/COMPONENT_SELECTION.md +115 -0
- package/INTEGRATION.md +10 -0
- package/MIGRATION.md +239 -0
- package/PUBLISHING.md +6 -1
- package/README.md +31 -8
- package/dist/_shared/accordion-BnxO7Is4.js +130 -0
- package/dist/_shared/accordion-BnxO7Is4.js.map +1 -0
- package/dist/_shared/accordion-RIN0MjPz.cjs +2 -0
- package/dist/_shared/accordion-RIN0MjPz.cjs.map +1 -0
- package/dist/_shared/action-menu-IIO9KtJ2.js +96 -0
- package/dist/_shared/action-menu-IIO9KtJ2.js.map +1 -0
- package/dist/_shared/action-menu-RAyg3cvM.cjs +2 -0
- package/dist/_shared/action-menu-RAyg3cvM.cjs.map +1 -0
- package/dist/_shared/ai-artifact--MqIfP-8.js +1068 -0
- package/dist/_shared/ai-artifact--MqIfP-8.js.map +1 -0
- package/dist/_shared/ai-artifact-D1dBeEz1.cjs +3 -0
- package/dist/_shared/ai-artifact-D1dBeEz1.cjs.map +1 -0
- package/dist/_shared/alert-D3gRd7RK.cjs +2 -0
- package/dist/_shared/alert-D3gRd7RK.cjs.map +1 -0
- package/dist/_shared/alert-DQ-tV8b-.js +48 -0
- package/dist/_shared/alert-DQ-tV8b-.js.map +1 -0
- package/dist/_shared/app-shell-C4d7kCCd.cjs +2 -0
- package/dist/_shared/app-shell-C4d7kCCd.cjs.map +1 -0
- package/dist/_shared/app-shell-CKxcpPTc.js +94 -0
- package/dist/_shared/app-shell-CKxcpPTc.js.map +1 -0
- package/dist/_shared/avatar-0spfQEHG.cjs +2 -0
- package/dist/_shared/avatar-0spfQEHG.cjs.map +1 -0
- package/dist/_shared/avatar-CBi4LGxy.js +52 -0
- package/dist/_shared/avatar-CBi4LGxy.js.map +1 -0
- package/dist/_shared/badge-BK5VvEgg.js +108 -0
- package/dist/_shared/badge-BK5VvEgg.js.map +1 -0
- package/dist/_shared/badge-kS_XtN-z.cjs +2 -0
- package/dist/_shared/badge-kS_XtN-z.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs +2 -0
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js +111 -0
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js.map +1 -0
- package/dist/_shared/button-683R5quQ.js +46 -0
- package/dist/_shared/button-683R5quQ.js.map +1 -0
- package/dist/_shared/button-CjZrRLzR.cjs +2 -0
- package/dist/_shared/button-CjZrRLzR.cjs.map +1 -0
- package/dist/_shared/button-LZWDn-aU.cjs +2 -0
- package/dist/_shared/button-LZWDn-aU.cjs.map +1 -0
- package/dist/_shared/button-cnkCF8q8.js +177 -0
- package/dist/_shared/button-cnkCF8q8.js.map +1 -0
- package/dist/_shared/buttons-DHV2eZAf.cjs +2 -0
- package/dist/_shared/buttons-DHV2eZAf.cjs.map +1 -0
- package/dist/_shared/buttons-ehfMSkwP.js +143 -0
- package/dist/_shared/buttons-ehfMSkwP.js.map +1 -0
- package/dist/_shared/card-radio-group-Bf03M6c5.js +158 -0
- package/dist/_shared/card-radio-group-Bf03M6c5.js.map +1 -0
- package/dist/_shared/card-radio-group-SqPUL0Je.cjs +2 -0
- package/dist/_shared/card-radio-group-SqPUL0Je.cjs.map +1 -0
- package/dist/_shared/chunk-CMqjfN_6.cjs +1 -0
- package/dist/_shared/combobox-Cvs70ic4.js +808 -0
- package/dist/_shared/combobox-Cvs70ic4.js.map +1 -0
- package/dist/_shared/combobox-Dos9YWjk.cjs +2 -0
- package/dist/_shared/combobox-Dos9YWjk.cjs.map +1 -0
- package/dist/_shared/command-Bxe_FmGD.cjs +2 -0
- package/dist/_shared/command-Bxe_FmGD.cjs.map +1 -0
- package/dist/_shared/command-CAI-BCSR.js +123 -0
- package/dist/_shared/command-CAI-BCSR.js.map +1 -0
- package/dist/_shared/command-DRIySU26.cjs +2 -0
- package/dist/_shared/command-DRIySU26.cjs.map +1 -0
- package/dist/_shared/command-DwRnPIGs.js +39 -0
- package/dist/_shared/command-DwRnPIGs.js.map +1 -0
- package/dist/_shared/comments-DD2aeZVz.js +946 -0
- package/dist/_shared/comments-DD2aeZVz.js.map +1 -0
- package/dist/_shared/comments-DzwU4sNE.cjs +2 -0
- package/dist/_shared/comments-DzwU4sNE.cjs.map +1 -0
- package/dist/_shared/containers-D7oZE4XI.cjs +2 -0
- package/dist/_shared/containers-D7oZE4XI.cjs.map +1 -0
- package/dist/_shared/containers-anBivbL9.js +19 -0
- package/dist/_shared/containers-anBivbL9.js.map +1 -0
- package/dist/_shared/content-container-CVUJCLhn.cjs +2 -0
- package/dist/_shared/content-container-CVUJCLhn.cjs.map +1 -0
- package/dist/_shared/content-container-Dv8XsAw4.js +33 -0
- package/dist/_shared/content-container-Dv8XsAw4.js.map +1 -0
- package/dist/_shared/copyable-D7WhgEzJ.js +38 -0
- package/dist/_shared/copyable-D7WhgEzJ.js.map +1 -0
- package/dist/_shared/copyable-DDjT505-.cjs +2 -0
- package/dist/_shared/copyable-DDjT505-.cjs.map +1 -0
- package/dist/_shared/date-picker-3G3C-sIq.cjs +2 -0
- package/dist/_shared/date-picker-3G3C-sIq.cjs.map +1 -0
- package/dist/_shared/date-picker-7yuMHPYs.js +1362 -0
- package/dist/_shared/date-picker-7yuMHPYs.js.map +1 -0
- package/dist/_shared/date-pickers-B_VUgjvY.cjs +2 -0
- package/dist/_shared/date-pickers-B_VUgjvY.cjs.map +1 -0
- package/dist/_shared/date-pickers-DZXi0di0.js +330 -0
- package/dist/_shared/date-pickers-DZXi0di0.js.map +1 -0
- package/dist/_shared/dialog-A95-614f.js +101 -0
- package/dist/_shared/dialog-A95-614f.js.map +1 -0
- package/dist/_shared/dialog-ivDByBmO.cjs +2 -0
- package/dist/_shared/dialog-ivDByBmO.cjs.map +1 -0
- package/dist/_shared/display-Cuj4td-V.js +1237 -0
- package/dist/_shared/display-Cuj4td-V.js.map +1 -0
- package/dist/_shared/display-D2q93jiS.cjs +8 -0
- package/dist/_shared/display-D2q93jiS.cjs.map +1 -0
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +2 -0
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +1 -0
- package/dist/_shared/dropdown-menu-CoWmrjYX.js +147 -0
- package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +1 -0
- package/dist/_shared/form-field-BNuCBym1.js +319 -0
- package/dist/_shared/form-field-BNuCBym1.js.map +1 -0
- package/dist/_shared/form-field-C4fQYsqv.cjs +2 -0
- package/dist/_shared/form-field-C4fQYsqv.cjs.map +1 -0
- package/dist/_shared/form-sizing-D74IS9KG.js +21 -0
- package/dist/_shared/form-sizing-D74IS9KG.js.map +1 -0
- package/dist/_shared/form-sizing-aVwVuF-w.cjs +2 -0
- package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +1 -0
- package/dist/_shared/format-BTtJC6oz.cjs +2 -0
- package/dist/_shared/format-BTtJC6oz.cjs.map +1 -0
- package/dist/_shared/format-BX3QestD.js +48 -0
- package/dist/_shared/format-BX3QestD.js.map +1 -0
- package/dist/_shared/forms-BV4fHeRx.cjs +2 -0
- package/dist/_shared/forms-BV4fHeRx.cjs.map +1 -0
- package/dist/_shared/forms-DjAdYxme.js +3378 -0
- package/dist/_shared/forms-DjAdYxme.js.map +1 -0
- package/dist/_shared/header-D4Oz-mCv.cjs +2 -0
- package/dist/_shared/header-D4Oz-mCv.cjs.map +1 -0
- package/dist/_shared/header-X5DZ8vmO.js +360 -0
- package/dist/_shared/header-X5DZ8vmO.js.map +1 -0
- package/dist/_shared/heading-C7mNh03X.cjs +2 -0
- package/dist/_shared/heading-C7mNh03X.cjs.map +1 -0
- package/dist/_shared/heading-CrNpYcUr.js +39 -0
- package/dist/_shared/heading-CrNpYcUr.js.map +1 -0
- package/dist/_shared/hooks-CKXPg30g.js +118 -0
- package/dist/_shared/hooks-CKXPg30g.js.map +1 -0
- package/dist/_shared/hooks-CTiEImZp.cjs +2 -0
- package/dist/_shared/hooks-CTiEImZp.cjs.map +1 -0
- package/dist/_shared/icon-badge-BAWl1oOe.cjs +2 -0
- package/dist/_shared/icon-badge-BAWl1oOe.cjs.map +1 -0
- package/dist/_shared/icon-badge-zTBVtgt9.js +52 -0
- package/dist/_shared/icon-badge-zTBVtgt9.js.map +1 -0
- package/dist/_shared/input-Cw2uICc1.cjs +2 -0
- package/dist/_shared/input-Cw2uICc1.cjs.map +1 -0
- package/dist/_shared/input-D43_IMWW.cjs +2 -0
- package/dist/_shared/input-D43_IMWW.cjs.map +1 -0
- package/dist/_shared/input-DJo8d1Rr.js +182 -0
- package/dist/_shared/input-DJo8d1Rr.js.map +1 -0
- package/dist/_shared/input-R8c90tNY.js +17 -0
- package/dist/_shared/input-R8c90tNY.js.map +1 -0
- package/dist/_shared/item-BxlP5TO3.js +224 -0
- package/dist/_shared/item-BxlP5TO3.js.map +1 -0
- package/dist/_shared/item-X18HIqR7.cjs +2 -0
- package/dist/_shared/item-X18HIqR7.cjs.map +1 -0
- package/dist/_shared/mentions-DE9aDOMu.cjs +2 -0
- package/dist/_shared/mentions-DE9aDOMu.cjs.map +1 -0
- package/dist/_shared/mentions-DjjYmMLc.js +493 -0
- package/dist/_shared/mentions-DjjYmMLc.js.map +1 -0
- package/dist/_shared/metadata-C5MSNo7y.js +236 -0
- package/dist/_shared/metadata-C5MSNo7y.js.map +1 -0
- package/dist/_shared/metadata-Cw3Kj2Ug.cjs +2 -0
- package/dist/_shared/metadata-Cw3Kj2Ug.cjs.map +1 -0
- package/dist/_shared/money-display-B7AKxxNt.js +198 -0
- package/dist/_shared/money-display-B7AKxxNt.js.map +1 -0
- package/dist/_shared/money-display-E22wbM21.cjs +2 -0
- package/dist/_shared/money-display-E22wbM21.cjs.map +1 -0
- package/dist/_shared/navigation-B9VAXqLL.cjs +2 -0
- package/dist/_shared/navigation-B9VAXqLL.cjs.map +1 -0
- package/dist/_shared/navigation-CxoJVgfo.js +420 -0
- package/dist/_shared/navigation-CxoJVgfo.js.map +1 -0
- package/dist/_shared/overlays-C-T8RnJz.cjs +2 -0
- package/dist/_shared/overlays-C-T8RnJz.cjs.map +1 -0
- package/dist/_shared/overlays-DfRsQzD3.js +633 -0
- package/dist/_shared/overlays-DfRsQzD3.js.map +1 -0
- package/dist/_shared/page-C4jEULwi.js +263 -0
- package/dist/_shared/page-C4jEULwi.js.map +1 -0
- package/dist/_shared/page-DX3pA_tJ.cjs +2 -0
- package/dist/_shared/page-DX3pA_tJ.cjs.map +1 -0
- package/dist/_shared/popover-CaHvG8Vj.cjs +2 -0
- package/dist/_shared/popover-CaHvG8Vj.cjs.map +1 -0
- package/dist/_shared/popover-L37RqoRO.js +83 -0
- package/dist/_shared/popover-L37RqoRO.js.map +1 -0
- package/dist/_shared/popover-menu-CVAr985u.js +95 -0
- package/dist/_shared/popover-menu-CVAr985u.js.map +1 -0
- package/dist/_shared/popover-menu-Cq-LnAMh.cjs +2 -0
- package/dist/_shared/popover-menu-Cq-LnAMh.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-C3gVBm-v.cjs +2 -0
- package/dist/_shared/rich-text-editor-C3gVBm-v.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-Cylb-lkv.js +616 -0
- package/dist/_shared/rich-text-editor-Cylb-lkv.js.map +1 -0
- package/dist/_shared/scroll-area-BH5CPQh4.js +41 -0
- package/dist/_shared/scroll-area-BH5CPQh4.js.map +1 -0
- package/dist/_shared/scroll-area-u46BOVcC.cjs +2 -0
- package/dist/_shared/scroll-area-u46BOVcC.cjs.map +1 -0
- package/dist/_shared/select-BwUUXpsb.js +85 -0
- package/dist/_shared/select-BwUUXpsb.js.map +1 -0
- package/dist/_shared/select-CG5Yq-6A.cjs +2 -0
- package/dist/_shared/select-CG5Yq-6A.cjs.map +1 -0
- package/dist/_shared/separator-B8FBp-7E.js +16 -0
- package/dist/_shared/separator-B8FBp-7E.js.map +1 -0
- package/dist/_shared/separator-q42IlFFA.cjs +2 -0
- package/dist/_shared/separator-q42IlFFA.cjs.map +1 -0
- package/dist/_shared/sheet-BKEfwhCn.js +100 -0
- package/dist/_shared/sheet-BKEfwhCn.js.map +1 -0
- package/dist/_shared/sheet-D4yWgkwC.cjs +2 -0
- package/dist/_shared/sheet-D4yWgkwC.cjs.map +1 -0
- package/dist/_shared/sidebar-BeWLjIRR.js +537 -0
- package/dist/_shared/sidebar-BeWLjIRR.js.map +1 -0
- package/dist/_shared/sidebar-Bl_KRk-S.cjs +2 -0
- package/dist/_shared/sidebar-Bl_KRk-S.cjs.map +1 -0
- package/dist/_shared/sidebar-DzzdJ2xk.cjs +2 -0
- package/dist/_shared/sidebar-DzzdJ2xk.cjs.map +1 -0
- package/dist/_shared/sidebar-ux-yk-Ph.js +382 -0
- package/dist/_shared/sidebar-ux-yk-Ph.js.map +1 -0
- package/dist/_shared/skeleton-CGQMeno1.js +14 -0
- package/dist/_shared/skeleton-CGQMeno1.js.map +1 -0
- package/dist/_shared/skeleton-D1c5OHXa.cjs +2 -0
- package/dist/_shared/skeleton-D1c5OHXa.cjs.map +1 -0
- package/dist/_shared/slot-C5EJicOc.js +18 -0
- package/dist/_shared/slot-C5EJicOc.js.map +1 -0
- package/dist/_shared/slot-D-Rwlrz2.cjs +2 -0
- package/dist/_shared/slot-D-Rwlrz2.cjs.map +1 -0
- package/dist/_shared/smart-card-DL7esK_y.cjs +2 -0
- package/dist/_shared/smart-card-DL7esK_y.cjs.map +1 -0
- package/dist/_shared/smart-card-eBfUvQ9r.js +360 -0
- package/dist/_shared/smart-card-eBfUvQ9r.js.map +1 -0
- package/dist/_shared/spinner-Bvjs1ybK.cjs +2 -0
- package/dist/_shared/spinner-Bvjs1ybK.cjs.map +1 -0
- package/dist/_shared/spinner-XcfVYbbp.js +67 -0
- package/dist/_shared/spinner-XcfVYbbp.js.map +1 -0
- package/dist/_shared/switch-BBP3u1z5.js +55 -0
- package/dist/_shared/switch-BBP3u1z5.js.map +1 -0
- package/dist/_shared/switch-zFZhhOEP.cjs +2 -0
- package/dist/_shared/switch-zFZhhOEP.cjs.map +1 -0
- package/dist/_shared/text-DzKt9cyb.cjs +2 -0
- package/dist/_shared/text-DzKt9cyb.cjs.map +1 -0
- package/dist/_shared/text-qsEg5GdP.js +74 -0
- package/dist/_shared/text-qsEg5GdP.js.map +1 -0
- package/dist/_shared/textarea-BAKapsLQ.cjs +2 -0
- package/dist/_shared/textarea-BAKapsLQ.cjs.map +1 -0
- package/dist/_shared/textarea-Bfv1KxBm.js +119 -0
- package/dist/_shared/textarea-Bfv1KxBm.js.map +1 -0
- package/dist/_shared/tooltip-CLr_sPX8.js +49 -0
- package/dist/_shared/tooltip-CLr_sPX8.js.map +1 -0
- package/dist/_shared/tooltip-mvxZV_Lu.cjs +2 -0
- package/dist/_shared/tooltip-mvxZV_Lu.cjs.map +1 -0
- package/dist/_shared/typography-4CSyoCj9.js +102 -0
- package/dist/_shared/typography-4CSyoCj9.js.map +1 -0
- package/dist/_shared/typography-DKn7P4wX.cjs +2 -0
- package/dist/_shared/typography-DKn7P4wX.cjs.map +1 -0
- package/dist/_shared/ui-provider-CQJ1glwN.js +85 -0
- package/dist/_shared/ui-provider-CQJ1glwN.js.map +1 -0
- package/dist/_shared/ui-provider-RIYE7O_V.cjs +2 -0
- package/dist/_shared/ui-provider-RIYE7O_V.cjs.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +2 -2
- package/dist/components/base/badge/badge.d.ts +1 -1
- package/dist/components/base/badge/badge.d.ts.map +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/google-button.d.ts +1 -1
- package/dist/components/base/buttons/google-button.d.ts.map +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/buttons/shopify-button.d.ts +1 -1
- package/dist/components/base/buttons/shopify-button.d.ts.map +1 -1
- package/dist/components/base/buttons/tooltip-button.d.ts.map +1 -1
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/cards/partials/card-primitives.d.ts +6 -6
- package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-alert.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-alert.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts.map +1 -1
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +1 -1
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.tokens.d.ts +1 -1
- package/dist/components/base/combobox/combobox.strings.d.ts.map +1 -1
- package/dist/components/base/combobox/components/highlighted-text.d.ts.map +1 -1
- package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/combobox/types.d.ts +2 -0
- package/dist/components/base/combobox/types.d.ts.map +1 -1
- package/dist/components/base/command/command.d.ts +5 -5
- package/dist/components/base/command/command.d.ts.map +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +2 -2
- package/dist/components/base/copyable/copyable.d.ts +1 -1
- package/dist/components/base/copyable/copyable.d.ts.map +1 -1
- package/dist/components/base/copyable/index.cjs +1 -1
- package/dist/components/base/copyable/index.js +1 -1
- package/dist/components/base/currency/currency-pair-preview.d.ts +1 -1
- package/dist/components/base/currency/currency-pair-preview.d.ts.map +1 -1
- package/dist/components/base/currency/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/date-picker-footer.d.ts +2 -1
- package/dist/components/base/date-pickers/date-picker-footer.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-picker-header.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker-header.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-picker-helpers.d.ts +5 -1
- package/dist/components/base/date-pickers/date-picker-helpers.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-picker.d.ts +2 -1
- package/dist/components/base/date-pickers/date-picker.d.ts.map +1 -1
- package/dist/components/base/date-pickers/date-range-picker.d.ts +2 -1
- package/dist/components/base/date-pickers/date-range-picker.d.ts.map +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +3 -3
- package/dist/components/base/date-pickers/month-year-picker.d.ts +2 -1
- package/dist/components/base/date-pickers/month-year-picker.d.ts.map +1 -1
- package/dist/components/base/date-pickers/segmented-time-input.d.ts +2 -1
- package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -1
- package/dist/components/base/display/boolean-indicator.d.ts +1 -1
- package/dist/components/base/display/boolean-indicator.d.ts.map +1 -1
- package/dist/components/base/display/date-block.d.ts +1 -1
- package/dist/components/base/display/date-block.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts +1 -1
- package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -1
- package/dist/components/base/display/fields/email-display.d.ts +1 -1
- package/dist/components/base/display/fields/email-display.d.ts.map +1 -1
- package/dist/components/base/display/fields/phone-display.d.ts +1 -1
- package/dist/components/base/display/fields/phone-display.d.ts.map +1 -1
- package/dist/components/base/display/fields/url-display.d.ts +1 -1
- package/dist/components/base/display/fields/url-display.d.ts.map +1 -1
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
- package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.js +12 -12
- package/dist/components/base/display/inline-stat/inline-stat.d.ts +1 -1
- package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +1 -1
- package/dist/components/base/display/metadata/index.cjs +1 -1
- package/dist/components/base/display/metadata/index.js +1 -1
- package/dist/components/base/display/metadata/metadata-list.d.ts +1 -1
- package/dist/components/base/display/metadata/metadata-list.d.ts.map +1 -1
- package/dist/components/base/display/money-display.d.ts +1 -1
- package/dist/components/base/display/money-display.d.ts.map +1 -1
- package/dist/components/base/display/money-input.d.ts +1 -1
- package/dist/components/base/display/money-input.d.ts.map +1 -1
- package/dist/components/base/display/notification-banner.d.ts +1 -1
- package/dist/components/base/display/notification-banner.d.ts.map +1 -1
- package/dist/components/base/display/numeric-value/numeric-value.d.ts +1 -1
- package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +1 -1
- package/dist/components/base/display/placeholder-pattern.d.ts +1 -1
- package/dist/components/base/display/placeholder-pattern.d.ts.map +1 -1
- package/dist/components/base/display/qr-code.d.ts +1 -1
- package/dist/components/base/display/qr-code.d.ts.map +1 -1
- package/dist/components/base/display/section-header/section-header.d.ts +1 -1
- package/dist/components/base/display/section-header/section-header.d.ts.map +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
- package/dist/components/base/display/throttle-alert.d.ts +1 -1
- package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
- package/dist/components/base/display/user-cell/user-cell.d.ts +1 -1
- package/dist/components/base/display/user-cell/user-cell.d.ts.map +1 -1
- package/dist/components/base/display/visually-hidden.d.ts +1 -1
- package/dist/components/base/display/visually-hidden.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-header.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-header.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-legend.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar-legend.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar.d.ts +1 -1
- package/dist/components/base/event-calendar/event-calendar.d.ts.map +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.cjs.map +1 -1
- package/dist/components/base/event-calendar/index.js +12 -12
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/card-checkbox-group.d.ts +1 -1
- package/dist/components/base/forms/fields/card-checkbox-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/card-radio-group.d.ts +1 -1
- package/dist/components/base/forms/fields/card-radio-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/coordinates-input.d.ts +1 -1
- package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/date-time-input.d.ts +1 -1
- package/dist/components/base/forms/fields/date-time-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/dimensions-input.d.ts +1 -1
- package/dist/components/base/forms/fields/dimensions-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts +1 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -1
- package/dist/components/base/forms/fields/list-radio-group.d.ts +1 -1
- package/dist/components/base/forms/fields/list-radio-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/list.d.ts +1 -1
- package/dist/components/base/forms/fields/list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-object-field.d.ts +1 -1
- package/dist/components/base/forms/fields/localized-object-field.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-string-field.d.ts +1 -1
- package/dist/components/base/forms/fields/localized-string-field.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-string-repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts +1 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/pill-radio-group.d.ts +11 -1
- package/dist/components/base/forms/fields/pill-radio-group.d.ts.map +1 -1
- package/dist/components/base/forms/fields/repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/rounding-mode-select.d.ts +1 -1
- package/dist/components/base/forms/fields/rounding-mode-select.d.ts.map +1 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts +1 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/switch-card.d.ts +2 -1
- package/dist/components/base/forms/fields/switch-card.d.ts.map +1 -1
- package/dist/components/base/forms/fields/switch.d.ts.map +1 -1
- package/dist/components/base/forms/fields/tags-input.d.ts +1 -1
- package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/time-picker.d.ts +2 -1
- package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -1
- package/dist/components/base/forms/fields/toggle-field.d.ts +1 -1
- package/dist/components/base/forms/fields/toggle-field.d.ts.map +1 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts +1 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/weight-input.d.ts +2 -1
- package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -1
- package/dist/components/base/forms/form-field.d.ts +63 -2
- package/dist/components/base/forms/form-field.d.ts.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +6 -6
- package/dist/components/base/forms/operation-password-form.d.ts +1 -1
- package/dist/components/base/forms/operation-password-form.d.ts.map +1 -1
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.cjs.map +1 -1
- package/dist/components/base/map/index.js +104 -85
- package/dist/components/base/map/index.js.map +1 -1
- package/dist/components/base/map/map.d.ts +31 -30
- package/dist/components/base/map/map.d.ts.map +1 -1
- package/dist/components/base/map/place-autocomplete.d.ts +1 -1
- package/dist/components/base/map/place-autocomplete.d.ts.map +1 -1
- package/dist/components/base/navigation/action-menu.d.ts +1 -1
- package/dist/components/base/navigation/aside-navigation-menu.d.ts +1 -1
- package/dist/components/base/navigation/aside-navigation-menu.d.ts.map +1 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts +1 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -1
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +4 -4
- package/dist/components/base/navigation/language-switcher.d.ts +1 -1
- package/dist/components/base/navigation/language-switcher.d.ts.map +1 -1
- package/dist/components/base/navigation/navigation-tabs.d.ts +1 -1
- package/dist/components/base/navigation/navigation-tabs.d.ts.map +1 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts +1 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts.map +1 -1
- package/dist/components/base/navigation/section-nav/section-nav.d.ts +1 -1
- package/dist/components/base/navigation/section-nav/section-nav.d.ts.map +1 -1
- package/dist/components/base/navigation/side-nav.d.ts +1 -1
- package/dist/components/base/navigation/side-nav.d.ts.map +1 -1
- package/dist/components/base/navigation/tab-navigation-menu.d.ts +1 -1
- package/dist/components/base/navigation/tab-navigation-menu.d.ts.map +1 -1
- package/dist/components/base/popover/index.cjs +1 -1
- package/dist/components/base/popover/index.js +1 -1
- package/dist/components/base/popover/popover.d.ts +1 -1
- package/dist/components/base/popover/popover.d.ts.map +1 -1
- package/dist/components/base/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +1 -1
- package/dist/components/base/popover-menu/popover-menu.d.ts +1 -1
- package/dist/components/base/popover-menu/popover-menu.d.ts.map +1 -1
- package/dist/components/base/sheet/index.cjs +1 -1
- package/dist/components/base/sheet/index.js +1 -1
- package/dist/components/base/sidebar/index.cjs +1 -1
- package/dist/components/base/sidebar/index.js +2 -2
- package/dist/components/base/sidebar/sidebar.d.ts +10 -9
- package/dist/components/base/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/base/spinner/index.cjs +1 -1
- package/dist/components/base/spinner/index.js +1 -1
- package/dist/components/base/table/column-visibility-toggle.d.ts +1 -1
- package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -1
- package/dist/components/base/table/data-table.d.ts +1 -1
- package/dist/components/base/table/data-table.d.ts.map +1 -1
- package/dist/components/base/table/filter-bar.d.ts +1 -1
- package/dist/components/base/table/filter-bar.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.cjs.map +1 -1
- package/dist/components/base/table/index.js +23 -23
- package/dist/components/base/table/index.js.map +1 -1
- package/dist/components/base/table/pagination.d.ts +1 -1
- package/dist/components/base/table/pagination.d.ts.map +1 -1
- package/dist/components/base/table/partials/cell-renderers.d.ts +4 -4
- package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
- package/dist/components/base/table/partials/cell-value.d.ts +1 -1
- package/dist/components/base/table/partials/cell-value.d.ts.map +1 -1
- package/dist/components/base/table/partials/density-toggle.d.ts +1 -1
- package/dist/components/base/table/partials/density-toggle.d.ts.map +1 -1
- package/dist/components/base/table/partials/table-link.d.ts +1 -1
- package/dist/components/base/table/partials/table-link.d.ts.map +1 -1
- package/dist/components/base/table/table-actions.d.ts +1 -1
- package/dist/components/base/table/table-actions.d.ts.map +1 -1
- package/dist/components/base/table/table-body.d.ts +1 -1
- package/dist/components/base/table/table-body.d.ts.map +1 -1
- package/dist/components/base/table/table-header.d.ts +2 -1
- package/dist/components/base/table/table-header.d.ts.map +1 -1
- package/dist/components/base/table/table-helpers.d.ts +2 -2
- package/dist/components/base/table/table-helpers.d.ts.map +1 -1
- package/dist/components/base/table/table-pagination.d.ts +1 -1
- package/dist/components/base/table/table-pagination.d.ts.map +1 -1
- package/dist/components/base/table/table-toolbar.d.ts +1 -1
- package/dist/components/base/table/table-toolbar.d.ts.map +1 -1
- package/dist/components/base/toaster/index.cjs +1 -1
- package/dist/components/base/toaster/index.cjs.map +1 -1
- package/dist/components/base/toaster/index.js +1 -1
- package/dist/components/base/toaster/index.js.map +1 -1
- package/dist/components/base/toaster/toaster.d.ts +1 -1
- package/dist/components/base/toaster/toaster.d.ts.map +1 -1
- package/dist/components/composed/admin/conversation-row/conversation-row.d.ts +1 -1
- package/dist/components/composed/admin/conversation-row/conversation-row.d.ts.map +1 -1
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.cjs.map +1 -1
- package/dist/components/composed/admin/index.js +159 -155
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/admin/inventory-level/inventory-level.d.ts +1 -1
- package/dist/components/composed/admin/inventory-level/inventory-level.d.ts.map +1 -1
- package/dist/components/composed/admin/role-permission/role-permission.d.ts +1 -1
- package/dist/components/composed/admin/role-permission/role-permission.d.ts.map +1 -1
- package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts +1 -1
- package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts.map +1 -1
- package/dist/components/composed/admin/team-member/team-member.d.ts +1 -1
- package/dist/components/composed/admin/team-member/team-member.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-agent/ai-agent.d.ts +1 -1
- package/dist/components/composed/ai/ai-agent/ai-agent.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts +1 -1
- package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts +1 -1
- package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
- package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-citation/ai-citation.d.ts +1 -1
- package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-classification/ai-classification.d.ts +1 -1
- package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts +1 -1
- package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts +1 -1
- package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
- package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts +1 -1
- package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts +1 -1
- package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts +1 -1
- package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts +1 -1
- package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts +1 -1
- package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts +1 -1
- package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
- package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-sources/ai-sources.d.ts +1 -1
- package/dist/components/composed/ai/ai-sources/ai-sources.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-summary/ai-summary.d.ts +1 -1
- package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-task/ai-task.d.ts +1 -1
- package/dist/components/composed/ai/ai-task/ai-task.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts +1 -1
- package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
- package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -1
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.cjs.map +1 -1
- package/dist/components/composed/ai/index.js +34 -36
- package/dist/components/composed/ai/index.js.map +1 -1
- package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts +1 -1
- package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts.map +1 -1
- package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts +1 -1
- package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts.map +1 -1
- package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts +1 -1
- package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts.map +1 -1
- package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts +1 -1
- package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts.map +1 -1
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.cjs.map +1 -1
- package/dist/components/composed/analytics/index.js +100 -111
- package/dist/components/composed/analytics/index.js.map +1 -1
- package/dist/components/composed/analytics/metric/metric.d.ts +1 -1
- package/dist/components/composed/analytics/metric/metric.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts +1 -1
- package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts +1 -1
- package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts +1 -1
- package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts +1 -1
- package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts +1 -1
- package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts.map +1 -1
- package/dist/components/composed/cards/contact-card/contact-card.d.ts +1 -1
- package/dist/components/composed/cards/contact-card/contact-card.d.ts.map +1 -1
- package/dist/components/composed/cards/course-card/course-card.d.ts +1 -1
- package/dist/components/composed/cards/course-card/course-card.d.ts.map +1 -1
- package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts +1 -1
- package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts.map +1 -1
- package/dist/components/composed/cards/gradient-card/gradient-card.d.ts +2 -2
- package/dist/components/composed/cards/gradient-card/gradient-card.d.ts.map +1 -1
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.cjs.map +1 -1
- package/dist/components/composed/cards/index.js +492 -512
- package/dist/components/composed/cards/index.js.map +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
- package/dist/components/composed/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/composed/commerce/address-card/address-card.d.ts.map +1 -1
- package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts +1 -1
- package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts +1 -1
- package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -1
- package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts +1 -1
- package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts.map +1 -1
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +94 -98
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts +1 -1
- package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -1
- package/dist/components/composed/commerce/order-status/order-status.d.ts +1 -1
- package/dist/components/composed/commerce/order-status/order-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/payment-method/payment-method.d.ts +1 -1
- package/dist/components/composed/commerce/payment-method/payment-method.d.ts.map +1 -1
- package/dist/components/composed/commerce/refund-status/refund-status.d.ts +1 -1
- package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts.map +1 -1
- package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts +1 -1
- package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts.map +1 -1
- package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts +1 -1
- package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts +1 -1
- package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
- package/dist/components/composed/dark-surfaces/index.js +30 -27
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts +1 -1
- package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/helpers.d.ts +2 -2
- package/dist/components/composed/data-display/dense-info-card/helpers.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts.map +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
- package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts.map +1 -1
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.cjs.map +1 -1
- package/dist/components/composed/data-display/index.js +344 -319
- package/dist/components/composed/data-display/index.js.map +1 -1
- package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts +1 -1
- package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts +3 -3
- package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts +1 -1
- package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts +1 -1
- package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts.map +1 -1
- package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts +1 -1
- package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts.map +1 -1
- package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
- package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts.map +1 -1
- package/dist/components/composed/navigation/category-nav/category-nav.d.ts +1 -1
- package/dist/components/composed/navigation/category-nav/category-nav.d.ts.map +1 -1
- package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts +1 -1
- package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts.map +1 -1
- package/dist/components/composed/navigation/experience-activity/experience-activity.strings.d.ts +8 -0
- package/dist/components/composed/navigation/experience-activity/experience-activity.strings.d.ts.map +1 -0
- package/dist/components/composed/navigation/experience-activity/index.d.ts +1 -0
- package/dist/components/composed/navigation/experience-activity/index.d.ts.map +1 -1
- package/dist/components/composed/navigation/experience-activity/types.d.ts +2 -0
- package/dist/components/composed/navigation/experience-activity/types.d.ts.map +1 -1
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.cjs.map +1 -1
- package/dist/components/composed/navigation/index.js +42 -35
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts +1 -1
- package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts.map +1 -1
- package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts +1 -1
- package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts.map +1 -1
- package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts +1 -1
- package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts.map +1 -1
- package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts +1 -1
- package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts.map +1 -1
- package/dist/components/composed/onboarding/checklist/checklist.d.ts.map +1 -1
- package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts +1 -1
- package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts.map +1 -1
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.cjs.map +1 -1
- package/dist/components/composed/onboarding/index.js +60 -60
- package/dist/components/composed/onboarding/index.js.map +1 -1
- package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts +1 -1
- package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts.map +1 -1
- package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.cjs.map +1 -1
- package/dist/components/composed/timelines/index.js +34 -7
- package/dist/components/composed/timelines/index.js.map +1 -1
- package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts +1 -1
- package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/shared/timeline.d.ts +1 -1
- package/dist/components/composed/timelines/shared/timeline.d.ts.map +1 -1
- package/dist/components/composed/timelines/steps-card/steps-card.d.ts +2 -2
- package/dist/components/composed/timelines/steps-card/steps-card.d.ts.map +1 -1
- package/dist/components/features/activities/activities-feed.d.ts +1 -1
- package/dist/components/features/activities/activities-feed.d.ts.map +1 -1
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.cjs.map +1 -1
- package/dist/components/features/activities/index.js +7 -7
- package/dist/components/features/activities/index.js.map +1 -1
- package/dist/components/features/activities/partials/activities-feed-card.d.ts +1 -1
- package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-actions-menu.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-actions-menu.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-changes.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-changes.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-date-label.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-date-label.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-empty-state.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-empty-state.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-marker.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-marker.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-resource-tag.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-resource-tag.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-row.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-row.d.ts.map +1 -1
- package/dist/components/features/ai-chat/ai-chat.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.cjs.map +1 -1
- package/dist/components/features/ai-chat/index.js +7 -7
- package/dist/components/features/ai-chat/index.js.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts.map +1 -1
- package/dist/components/features/card/booking-calendar-event-card.d.ts +1 -1
- package/dist/components/features/card/booking-calendar-event-card.d.ts.map +1 -1
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.cjs.map +1 -1
- package/dist/components/features/card/index.js +4 -4
- package/dist/components/features/card/index.js.map +1 -1
- package/dist/components/features/card/partials/default-shared-resource-partials.d.ts +4 -4
- package/dist/components/features/card/partials/default-shared-resource-partials.d.ts.map +1 -1
- package/dist/components/features/card/shared-resource-card.d.ts +1 -1
- package/dist/components/features/card/shared-resource-card.d.ts.map +1 -1
- package/dist/components/features/comments/comments.d.ts +1 -1
- package/dist/components/features/comments/comments.d.ts.map +1 -1
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/comments/partials/comment-composer.d.ts.map +1 -1
- package/dist/components/features/event-log/event-log.d.ts +1 -1
- package/dist/components/features/event-log/event-log.d.ts.map +1 -1
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.cjs.map +1 -1
- package/dist/components/features/event-log/index.js +5 -5
- package/dist/components/features/event-log/index.js.map +1 -1
- package/dist/components/features/filters/facets/async-select-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/async-select-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/date-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/date-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/range-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/range-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/search-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/search-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/select-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/select-facet.d.ts.map +1 -1
- package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/tags-facet.d.ts.map +1 -1
- package/dist/components/features/filters/filter-context.d.ts +1 -1
- package/dist/components/features/filters/filter-context.d.ts.map +1 -1
- package/dist/components/features/filters/filter-layout.d.ts +1 -1
- package/dist/components/features/filters/filter-layout.d.ts.map +1 -1
- package/dist/components/features/filters/filters.strings.d.ts +1 -0
- package/dist/components/features/filters/filters.strings.d.ts.map +1 -1
- package/dist/components/features/filters/filters.types.d.ts +1 -1
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.cjs.map +1 -1
- package/dist/components/features/filters/index.js +195 -188
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/active-filter-item.d.ts +2 -1
- package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/date-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/date-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-error-boundary.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-error-boundary.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-list-content.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-list-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-list-item.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-list-item.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +2 -1
- package/dist/components/features/filters/partials/filter-operator-select.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-pill.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-pill.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-popover-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-value-display.d.ts +1 -1
- package/dist/components/features/filters/partials/filter-value-display.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filters-button.d.ts +1 -1
- package/dist/components/features/filters/partials/filters-button.d.ts.map +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/search-filters-list.d.ts +1 -1
- package/dist/components/features/filters/partials/search-filters-list.d.ts.map +1 -1
- package/dist/components/features/filters/partials/tags-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -1
- package/dist/components/features/global-search/global-search.d.ts +22 -1
- package/dist/components/features/global-search/global-search.d.ts.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.cjs.map +1 -1
- package/dist/components/features/global-search/index.js +3 -3
- package/dist/components/features/global-search/index.js.map +1 -1
- package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-empty-state.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-footer.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-footer.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts +2 -1
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-tabs.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-tabs.d.ts.map +1 -1
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.cjs.map +1 -1
- package/dist/components/features/kanban/index.js +2 -2
- package/dist/components/features/kanban/index.js.map +1 -1
- package/dist/components/features/kanban/kanban.d.ts +7 -7
- package/dist/components/features/kanban/kanban.d.ts.map +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +1 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts.map +1 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts +1 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts.map +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts.map +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.cjs.map +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/rich-text-editor/index.js.map +1 -1
- package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +2 -2
- package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +4 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts.map +1 -1
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.cjs.map +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/suggestions/index.js.map +1 -1
- package/dist/components/features/suggestions/suggestions.d.ts +1 -1
- package/dist/components/features/suggestions/suggestions.d.ts.map +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.cjs.map +1 -1
- package/dist/components/features/sync/index.js +3 -3
- package/dist/components/features/sync/index.js.map +1 -1
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +1 -1
- package/dist/components/layout/app-shell/app-shell.types.d.ts +65 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts.map +1 -0
- package/dist/components/layout/app-shell/index.cjs +1 -0
- package/dist/components/layout/app-shell/index.d.ts +3 -0
- package/dist/components/layout/app-shell/index.d.ts.map +1 -0
- package/dist/components/layout/app-shell/index.js +2 -0
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +3 -0
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -0
- package/dist/components/layout/containers/content-container.d.ts +1 -1
- package/dist/components/layout/containers/content-container.d.ts.map +1 -1
- package/dist/components/layout/containers/index.cjs +1 -1
- package/dist/components/layout/containers/index.js +2 -2
- package/dist/components/layout/containers/section.d.ts +1 -1
- package/dist/components/layout/containers/section.d.ts.map +1 -1
- package/dist/components/layout/header/header.d.ts +1 -1
- package/dist/components/layout/header/header.d.ts.map +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +1 -1
- package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +3 -1
- package/dist/components/layout/header/partials/header-breadcrumbs.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-user-menu.d.ts +1 -1
- package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
- package/dist/components/layout/hooks/index.cjs +1 -1
- package/dist/components/layout/hooks/index.js +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +8 -7
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/page/page-content.d.ts +1 -1
- package/dist/components/layout/page/page-content.d.ts.map +1 -1
- package/dist/components/layout/page/page.d.ts +1 -1
- package/dist/components/layout/page/page.d.ts.map +1 -1
- package/dist/components/layout/page/partials/page-actions.d.ts +1 -1
- package/dist/components/layout/page/partials/page-actions.d.ts.map +1 -1
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/page/partials/page-header.d.ts.map +1 -1
- package/dist/components/layout/sidebar/app-sidebar.d.ts +6 -1
- package/dist/components/layout/sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-logo.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +3 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.context.d.ts.map +1 -1
- package/dist/components/layout/sidebar/sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +2 -2
- package/dist/components/layout/sidebar/sidebar.utils.d.ts.map +1 -1
- package/dist/components/typography/heading.d.ts +1 -1
- package/dist/components/typography/heading.d.ts.map +1 -1
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +3 -3
- package/dist/components/typography/label.d.ts +1 -1
- package/dist/components/typography/label.d.ts.map +1 -1
- package/dist/components/typography/text-link.d.ts +1 -1
- package/dist/components/typography/text-link.d.ts.map +1 -1
- package/dist/components/typography/text.d.ts +1 -1
- package/dist/components/typography/text.d.ts.map +1 -1
- package/dist/components/typography/typography.d.ts +3 -3
- package/dist/components/typography/typography.d.ts.map +1 -1
- package/dist/components/ui/accordion.d.ts +4 -4
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/alert.d.ts +4 -4
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/avatar.d.ts +6 -6
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts +7 -7
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/button-group.d.ts +2 -2
- package/dist/components/ui/button-group.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/calendar.d.ts +2 -2
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/card.d.ts +7 -7
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/chart.d.ts +4 -4
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/checkbox.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/collapsible.d.ts +4 -3
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/combobox.d.ts +20 -20
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/command.d.ts +9 -9
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/context-menu.d.ts +15 -15
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/dialog.d.ts +10 -10
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +16 -16
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/empty.d.ts +6 -6
- package/dist/components/ui/empty.d.ts.map +1 -1
- package/dist/components/ui/hover-card.d.ts +3 -3
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/input-group.d.ts +6 -6
- package/dist/components/ui/input-group.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/item.d.ts +9 -9
- package/dist/components/ui/item.d.ts.map +1 -1
- package/dist/components/ui/pagination.d.ts +7 -7
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/popover.d.ts +7 -7
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/progress.d.ts +5 -5
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +2 -2
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/select.d.ts +9 -9
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/separator.d.ts +1 -1
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/sheet.d.ts +8 -8
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sidebar.d.ts +19 -19
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/slider.d.ts +2 -1
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/sonner.d.ts +1 -1
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/spinner.d.ts +1 -1
- package/dist/components/ui/spinner.d.ts.map +1 -1
- package/dist/components/ui/switch.d.ts +1 -1
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/table.d.ts +8 -8
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/tabs.d.ts +4 -4
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/textarea.d.ts +1 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.d.ts +3 -2
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle.d.ts +1 -1
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/tooltip.d.ts +4 -4
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/strings.cjs +1 -1
- package/dist/lib/strings.cjs.map +1 -1
- package/dist/lib/strings.js.map +1 -1
- package/dist/lib/ui-provider/index.cjs +1 -1
- package/dist/lib/ui-provider/index.js +1 -1
- package/dist/lib/ui-provider/provider.d.ts +1 -1
- package/dist/lib/ui-provider/provider.d.ts.map +1 -1
- package/dist/lib/utils.cjs +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/showcase/assets/AreaChart-CzBEYPbz.js +6 -0
- package/dist/showcase/assets/CSPContext-ImKusJJ_.js +1 -0
- package/dist/showcase/assets/CompositeItem-C-DIOBdJ.js +1 -0
- package/dist/showcase/assets/CompositeRoot-Ce4ORgG2.js +1 -0
- package/dist/showcase/assets/Control.FullScreen-CwLQ1MMK.js +1 -0
- package/dist/showcase/assets/DialogTrigger-DWvMs7dp.js +1 -0
- package/dist/showcase/assets/FormContext-BeC1MJpT.js +1 -0
- package/dist/showcase/assets/PreviewLayout-N1PTTyZK.js +1 -0
- package/dist/showcase/assets/RadioGroup-DAWaa26D.js +1 -0
- package/dist/showcase/assets/Separator-guDkmky0.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-BJ7hWga8.js +1 -0
- package/dist/showcase/assets/accordion-CiM9WhkT.js +172 -0
- package/dist/showcase/assets/accordion-variants-C_sHrQ7C.js +1 -0
- package/dist/showcase/assets/action-menu-mlWlGE5P.js +1 -0
- package/dist/showcase/assets/activities-YWR4wh4f.js +501 -0
- package/dist/showcase/assets/activities-feed-card-Cglnf5as.js +1 -0
- package/dist/showcase/assets/admin-BtOtzPd4.js +80 -0
- package/dist/showcase/assets/ai-8iNe0R1M.js +41 -0
- package/dist/showcase/assets/ai-artifact-CQL5krnJ.js +2 -0
- package/dist/showcase/assets/ai-chat-BzCdOOc6.js +568 -0
- package/dist/showcase/assets/ai-elements-CBHy2xWU.js +379 -0
- package/dist/showcase/assets/ai-new-CgL5NeVs.js +167 -0
- package/dist/showcase/assets/ai-tool-call-D9AsaWJF.js +1 -0
- package/dist/showcase/assets/alert-B2BuF4vZ.js +59 -0
- package/dist/showcase/assets/alert-BkVaTONJ.js +1 -0
- package/dist/showcase/assets/api-key-list-C-_59dli.js +73 -0
- package/dist/showcase/assets/app-sidebar-BdOu5rVn.js +1 -0
- package/dist/showcase/assets/arrow-down-BpVaq9-H.js +1 -0
- package/dist/showcase/assets/arrow-left-C40rxfqj.js +1 -0
- package/dist/showcase/assets/arrow-right-BclouSfP.js +1 -0
- package/dist/showcase/assets/arrow-up-BpWEnkdX.js +1 -0
- package/dist/showcase/assets/arrow-up-right-Z5sMa1HH.js +1 -0
- package/dist/showcase/assets/avatar-CDNhh3rv.js +57 -0
- package/dist/showcase/assets/avatar-QBwg3fvR.js +1 -0
- package/dist/showcase/assets/badge-check-DXDQ3SaL.js +1 -0
- package/dist/showcase/assets/badge-tAdYt--9.js +28 -0
- package/dist/showcase/assets/bell-CVEeEWw4.js +1 -0
- package/dist/showcase/assets/bot-Bcx5mNAQ.js +1 -0
- package/dist/showcase/assets/box-Dgy2Xc70.js +1 -0
- package/dist/showcase/assets/brain-DsoOsd7m.js +1 -0
- package/dist/showcase/assets/brand-DAyuXNUz.js +40 -0
- package/dist/showcase/assets/breadcrumb-CC4Z8eMY.js +1 -0
- package/dist/showcase/assets/breadcrumb-DCbAzeMs.js +52 -0
- package/dist/showcase/assets/breadcrumbs-DGZMpIoQ.js +1 -0
- package/dist/showcase/assets/briefcase-2uLXCvAZ.js +1 -0
- package/dist/showcase/assets/button-DhQ6rMPU.js +44 -0
- package/dist/showcase/assets/button-group-Ce9vnZ1H.js +1 -0
- package/dist/showcase/assets/buttons-CHja0LUL.js +270 -0
- package/dist/showcase/assets/calendar-BbiK8AMZ.js +16 -0
- package/dist/showcase/assets/calendar-BhZpIjCo.js +1 -0
- package/dist/showcase/assets/calendar-oKaDsUIy.js +1 -0
- package/dist/showcase/assets/card-DoU1VD79.js +1 -0
- package/dist/showcase/assets/cards-3OgH8m3F.js +328 -0
- package/dist/showcase/assets/chart-column-6Tn3WAT9.js +1 -0
- package/dist/showcase/assets/chevron-down-x7TQsvYY.js +1 -0
- package/dist/showcase/assets/chevron-left-CglzJgA2.js +1 -0
- package/dist/showcase/assets/chevron-right-CDDMIkYP.js +1 -0
- package/dist/showcase/assets/chevron-up-Dc3aAaGH.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-DJNnSBAj.js +1 -0
- package/dist/showcase/assets/circle-BBmNFtO8.js +1 -0
- package/dist/showcase/assets/circle-alert-DJevf3tT.js +1 -0
- package/dist/showcase/assets/circle-check-BCxORlAM.js +1 -0
- package/dist/showcase/assets/circle-check-big-tiuK2w0-.js +1 -0
- package/dist/showcase/assets/circle-dot-BEVVQjgN.js +1 -0
- package/dist/showcase/assets/circle-question-mark-BQrUUiKD.js +1 -0
- package/dist/showcase/assets/circle-x-CoV_AUtZ.js +1 -0
- package/dist/showcase/assets/clock-Bn2R4aDX.js +1 -0
- package/dist/showcase/assets/code-xml-BVYp_JDX.js +1 -0
- package/dist/showcase/assets/collapsible-Co2Y739_.js +27 -0
- package/dist/showcase/assets/collapsible-DPbftgrO.js +1 -0
- package/dist/showcase/assets/combobox-Cm4__LnJ.js +622 -0
- package/dist/showcase/assets/command-DQFIxPN9.js +45 -0
- package/dist/showcase/assets/command-KNncGgZW.js +1 -0
- package/dist/showcase/assets/comment-composer-DTJtqYGP.js +1 -0
- package/dist/showcase/assets/comment-item-DIEYMmV_.js +1 -0
- package/dist/showcase/assets/comments-B0BbDp-3.js +357 -0
- package/dist/showcase/assets/commerce-BOWBCLA-.js +79 -0
- package/dist/showcase/assets/commerce-extras-C6CWYfpC.js +173 -0
- package/dist/showcase/assets/composite-YicTVAO0.js +1 -0
- package/dist/showcase/assets/contact-card-DQPRIlnJ.js +65 -0
- package/dist/showcase/assets/content-container-CHXwWViz.js +1 -0
- package/dist/showcase/assets/copyable-CjTwco9O.js +96 -0
- package/dist/showcase/assets/course-card-CTQScd2C.js +113 -0
- package/dist/showcase/assets/cpu-D52NjUWq.js +1 -0
- package/dist/showcase/assets/credit-card-BoDfW0R8.js +1 -0
- package/dist/showcase/assets/currency-BPREbpDA.js +149 -0
- package/dist/showcase/assets/dark-surfaces-BCG45K2m.js +90 -0
- package/dist/showcase/assets/database-DeGR0hed.js +1 -0
- package/dist/showcase/assets/date-block-Bl1kXJrM.js +1 -0
- package/dist/showcase/assets/date-picker-BHbZa4ML.js +1 -0
- package/dist/showcase/assets/date-pickers-DumwUEXE.js +110 -0
- package/dist/showcase/assets/dense-info-DxfgBw9Z.js +106 -0
- package/dist/showcase/assets/dialog-BYHZvlL8.js +1 -0
- package/dist/showcase/assets/display-BXMGOjL3.js +392 -0
- package/dist/showcase/assets/dist-CnonIdcR.js +1 -0
- package/dist/showcase/assets/dollar-sign-BipUTVXC.js +1 -0
- package/dist/showcase/assets/download-CxspQgIc.js +1 -0
- package/dist/showcase/assets/dropdown-menu-Q1BV3wPP.js +1 -0
- package/dist/showcase/assets/dropzone-OivkuTPF.js +1 -0
- package/dist/showcase/assets/ellipsis-Bn-XgoA7.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-Bcl9HX9k.js +1 -0
- package/dist/showcase/assets/empty-CcafLcw-.js +1 -0
- package/dist/showcase/assets/empty-item-CiJeS8ZV.js +49 -0
- package/dist/showcase/assets/empty-state-B1RYYjUP.js +188 -0
- package/dist/showcase/assets/enhanced-activities-IB811DS6.js +361 -0
- package/dist/showcase/assets/esm-CAF_uoYd.js +2 -0
- package/dist/showcase/assets/event-calendar-C2VCfcUz.js +138 -0
- package/dist/showcase/assets/event-log-ckmsCPmG.js +330 -0
- package/dist/showcase/assets/example-C6-_Sy6B.js +1 -0
- package/dist/showcase/assets/external-link-Bg-_8Uq7.js +1 -0
- package/dist/showcase/assets/eye-JVsUA85G.js +1 -0
- package/dist/showcase/assets/feature-announcement-C4aRXesF.js +34 -0
- package/dist/showcase/assets/fetchers-DHuMQ6PN.js +1 -0
- package/dist/showcase/assets/file-4pOq58jl.js +1 -0
- package/dist/showcase/assets/file-text-BIi71mZ1.js +1 -0
- package/dist/showcase/assets/filters-CxrcnmLU.js +78 -0
- package/dist/showcase/assets/flag-DeiJmomk.js +1 -0
- package/dist/showcase/assets/folder-open-zMXBpVNs.js +1 -0
- package/dist/showcase/assets/form-sizing-B8jbL5tL.js +1 -0
- package/dist/showcase/assets/format-BG4laCmp.js +1 -0
- package/dist/showcase/assets/format-metric-value-B94EDo8X.js +1 -0
- package/dist/showcase/assets/forms-PsN5zTLx.js +793 -0
- package/dist/showcase/assets/generic-BH5YLC_H.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-B7wr19E1.js +1 -0
- package/dist/showcase/assets/gift-CKFIh1Wh.js +1 -0
- package/dist/showcase/assets/giftcard-cards-BfOlIHmA.js +85 -0
- package/dist/showcase/assets/git-branch-BO9i8XkJ.js +1 -0
- package/dist/showcase/assets/global-search-CNmUraNa.js +90 -0
- package/dist/showcase/assets/global-search-DkJkQ0Vs.js +1 -0
- package/dist/showcase/assets/globe-47T22W56.js +1 -0
- package/dist/showcase/assets/gradient-card-CXSY29TZ.js +58 -0
- package/dist/showcase/assets/header-eZHN-s6P.js +1 -0
- package/dist/showcase/assets/header-notifications-Caa9i87J.js +1 -0
- package/dist/showcase/assets/heart-DjKkkUsX.js +1 -0
- package/dist/showcase/assets/house-DKxCiHyB.js +1 -0
- package/dist/showcase/assets/icon-badge-Bcm8TlJi.js +1 -0
- package/dist/showcase/assets/image-r-gMI33G.js +1 -0
- package/dist/showcase/assets/inbox-ZxSy1pgX.js +1 -0
- package/dist/showcase/assets/index-B8DVXCmf.js +10 -0
- package/dist/showcase/assets/index-DbLs6mcj.css +2 -0
- package/dist/showcase/assets/inertValue-i0cAMG-0.js +1 -0
- package/dist/showcase/assets/info-B1KV2DkO.js +1 -0
- package/dist/showcase/assets/inline-stat-D0sE-A4C.js +1 -0
- package/dist/showcase/assets/input-25epjsiD.js +1 -0
- package/dist/showcase/assets/input-CnwMt9Sr.js +1 -0
- package/dist/showcase/assets/input-group-DSKyV7we.js +47 -0
- package/dist/showcase/assets/input-group-x5eWeAZg.js +1 -0
- package/dist/showcase/assets/inputs-B2Maxr14.js +49 -0
- package/dist/showcase/assets/invoice-header-Gxl--yFu.js +36 -0
- package/dist/showcase/assets/invoice-items-BtoaGNjE.js +36 -0
- package/dist/showcase/assets/invoice-mini-DHFSZegy.js +14 -0
- package/dist/showcase/assets/invoice-table-6dmU_KrL.js +30 -0
- package/dist/showcase/assets/isSameDay-BrDHfKHm.js +1 -0
- package/dist/showcase/assets/isToday-VtoSc1IH.js +1 -0
- package/dist/showcase/assets/italic-CXkAsf6H.js +1 -0
- package/dist/showcase/assets/item-CGOThKAx.js +1 -0
- package/dist/showcase/assets/item-CMRbW6s-.js +1 -0
- package/dist/showcase/assets/item-sw6fAZcn.js +117 -0
- package/dist/showcase/assets/kanban-CKGYTXji.js +175 -0
- package/dist/showcase/assets/label-BmKD22pm.js +1 -0
- package/dist/showcase/assets/layout-app-shell-CeMHzVNn.js +501 -0
- package/dist/showcase/assets/layout-containers-8Drow5f9.js +96 -0
- package/dist/showcase/assets/layout-header-BlBw4JAV.js +170 -0
- package/dist/showcase/assets/layout-page-BQfgHFau.js +122 -0
- package/dist/showcase/assets/layout-sidebar-DZer5Uuh.js +224 -0
- package/dist/showcase/assets/layout-users-nuioUkeu.js +104 -0
- package/dist/showcase/assets/leaflet-src-S_KZeH2q.js +1 -0
- package/dist/showcase/assets/lib-DMGme4uo.js +1 -0
- package/dist/showcase/assets/lock-DQcZ9cEj.js +1 -0
- package/dist/showcase/assets/mail-yNXDtmNr.js +1 -0
- package/dist/showcase/assets/map-JMM1F9VR.js +124 -0
- package/dist/showcase/assets/map-pin-2WS7oVo3.js +1 -0
- package/dist/showcase/assets/menus-mK-FeNki.js +89 -0
- package/dist/showcase/assets/message-square-DGTAjNJG.js +1 -0
- package/dist/showcase/assets/metadata-list-CBxuQjVO.js +278 -0
- package/dist/showcase/assets/metric-BWGrmyD6.js +1 -0
- package/dist/showcase/assets/metric-grid-CewIJQvo.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-kLBN8u5z.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-COnc7VN9.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-BR83UVqi.js +77 -0
- package/dist/showcase/assets/metrics-comparison-C0SUjdMg.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-Orq1hLk-.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-C924q2Xx.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-Cwi05ruK.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-D97nkrge.js +42 -0
- package/dist/showcase/assets/metrics-overview-BOc8y3QX.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Cilh-A5D.js +54 -0
- package/dist/showcase/assets/minus-DvrDGcTv.js +1 -0
- package/dist/showcase/assets/money-display-0egZ_O76.js +1 -0
- package/dist/showcase/assets/month-year-picker-2cWfwnmP.js +1 -0
- package/dist/showcase/assets/navigation-BnYme-Wj.js +90 -0
- package/dist/showcase/assets/navigation-CLQWl32A.js +230 -0
- package/dist/showcase/assets/navigation-extras-BPDoAdXF.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-26XVWgDF.js +119 -0
- package/dist/showcase/assets/overlays-2sVGhanu.js +88 -0
- package/dist/showcase/assets/overlays-BaR6HDwB.js +394 -0
- package/dist/showcase/assets/package-CUNvdlBi.js +1 -0
- package/dist/showcase/assets/page-action-button-DgvZVtzx.js +1 -0
- package/dist/showcase/assets/page-header-4F_iaFPW.js +1 -0
- package/dist/showcase/assets/pagination-CDjZ6jiZ.js +42 -0
- package/dist/showcase/assets/pagination-g1NQaN42.js +1 -0
- package/dist/showcase/assets/paperclip-CDxdf8Os.js +1 -0
- package/dist/showcase/assets/pencil-Ddc5JwBe.js +1 -0
- package/dist/showcase/assets/phone-NIZ5SwgK.js +1 -0
- package/dist/showcase/assets/plus-C9kwz7rW.js +1 -0
- package/dist/showcase/assets/popover-DtnuOBgr.js +1 -0
- package/dist/showcase/assets/popover-T85aV4zW.js +1 -0
- package/dist/showcase/assets/popover-menu-BRGSZe4f.js +1 -0
- package/dist/showcase/assets/progress-CcZjuzK3.js +1 -0
- package/dist/showcase/assets/progress-DbouniUl.js +18 -0
- package/dist/showcase/assets/props-table-CM_1cocj.js +1 -0
- package/dist/showcase/assets/props.generated-Bg627Jai.json +32829 -0
- package/dist/showcase/assets/quote-vjygm2-7.js +1 -0
- package/dist/showcase/assets/react-dom-Bz4cALsF.js +1 -0
- package/dist/showcase/assets/receipt-CfMgwFPl.js +1 -0
- package/dist/showcase/assets/refresh-cw-Tu5E_cGA.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-CipUZh6i.js +1 -0
- package/dist/showcase/assets/rich-text-editor-BMZUyuQX.js +143 -0
- package/dist/showcase/assets/rich-text-editor-HwYIeWYW.js +124 -0
- package/dist/showcase/assets/rotate-ccw-B4Wi4ws7.js +1 -0
- package/dist/showcase/assets/scroll-area-CuB_woqF.js +1 -0
- package/dist/showcase/assets/scroll-area-I4mSIpRq.js +32 -0
- package/dist/showcase/assets/select-CF3cKjCo.js +1 -0
- package/dist/showcase/assets/send-Blu_n6xl.js +1 -0
- package/dist/showcase/assets/separator-9mrRf_DZ.js +28 -0
- package/dist/showcase/assets/separator-DUKleOvU.js +1 -0
- package/dist/showcase/assets/settings-DlKX-bZT.js +1 -0
- package/dist/showcase/assets/sheet-CwcLVoF3.js +1 -0
- package/dist/showcase/assets/shield-BD0Y8Jj3.js +1 -0
- package/dist/showcase/assets/shield-alert-DNOTmkwG.js +1 -0
- package/dist/showcase/assets/shield-check-Sbul0dUK.js +1 -0
- package/dist/showcase/assets/shopping-bag-EDVpxI9n.js +1 -0
- package/dist/showcase/assets/sidebar-JWZ88xw5.js +1 -0
- package/dist/showcase/assets/sidebar.context-D3P7qppn.js +1 -0
- package/dist/showcase/assets/skeleton-CIS1Kaas.js +1 -0
- package/dist/showcase/assets/skeleton-CJCJDQFt.js +29 -0
- package/dist/showcase/assets/smart-card-7szg_qSt.js +1 -0
- package/dist/showcase/assets/sonner-DMHXr9Ce.js +22 -0
- package/dist/showcase/assets/sortable.esm-DVuzVA1U.js +5 -0
- package/dist/showcase/assets/sparkles-BEa1AgNq.js +1 -0
- package/dist/showcase/assets/spinner-Bi-T9etI.js +30 -0
- package/dist/showcase/assets/spinner-C77XIUVf.js +1 -0
- package/dist/showcase/assets/spinner-DK9BAT6K.js +49 -0
- package/dist/showcase/assets/square-pen-N0mq-vPu.js +1 -0
- package/dist/showcase/assets/stacked-avatars-DORVEni2.js +1 -0
- package/dist/showcase/assets/star-Dbtxr60S.js +1 -0
- package/dist/showcase/assets/startOfDay-BJgxz4yq.js +1 -0
- package/dist/showcase/assets/styles-CwW4IBUg.js +1 -0
- package/dist/showcase/assets/switch-B4iRxZFU.js +1 -0
- package/dist/showcase/assets/switch-B_rnbXwy.js +1 -0
- package/dist/showcase/assets/table-BJ9HSK6H.js +1 -0
- package/dist/showcase/assets/table-IB0MEYf4.js +389 -0
- package/dist/showcase/assets/tabs-D02JL-Fa.js +1 -0
- package/dist/showcase/assets/tabs-XpsVS3ff.js +19 -0
- package/dist/showcase/assets/text-button-BWCgXGnr.js +1 -0
- package/dist/showcase/assets/text-link-TzuDnSCF.js +1 -0
- package/dist/showcase/assets/textarea-B7DUIiH_.js +1 -0
- package/dist/showcase/assets/textarea-CV5gNzXf.js +1 -0
- package/dist/showcase/assets/timelines-CF0UYhwm.js +200 -0
- package/dist/showcase/assets/toggle-group-CK8mBx6E.js +1 -0
- package/dist/showcase/assets/toggles-CqJSApnF.js +71 -0
- package/dist/showcase/assets/toggles-group-v0JijMzG.js +32 -0
- package/dist/showcase/assets/trash-2-_xF5j-Ya.js +1 -0
- package/dist/showcase/assets/trending-up-BCzmjYzm.js +1 -0
- package/dist/showcase/assets/truck-CryH-5dx.js +1 -0
- package/dist/showcase/assets/typography-D3PFbRpb.js +215 -0
- package/dist/showcase/assets/ui-badge-ByyFPLOB.js +28 -0
- package/dist/showcase/assets/ui-card-DYLLiD89.js +30 -0
- package/dist/showcase/assets/ui-table-DW4QIwxK.js +42 -0
- package/dist/showcase/assets/upload-tray-ZdL_dzc0.js +138 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-AFPLx3SZ.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-CeHRY8U2.js +1 -0
- package/dist/showcase/assets/useCompositeItem-C-1zP8zD.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-D4ugfKLB.js +1 -0
- package/dist/showcase/assets/useControlled-Cpg8gDqb.js +1 -0
- package/dist/showcase/assets/useLabelableId-CSxAHpU-.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-BLV8Pa2n.js +1 -0
- package/dist/showcase/assets/useRender-DparzvOu.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-CrYLO2g5.js +1 -0
- package/dist/showcase/assets/useValueChanged-DwgbaueK.js +1 -0
- package/dist/showcase/assets/user-CGcV8Ppb.js +1 -0
- package/dist/showcase/assets/user-plus-iOsntM6P.js +1 -0
- package/dist/showcase/assets/users-DzgXeZbf.js +1 -0
- package/dist/showcase/assets/vendor-profile-DbFPkGn9.js +37 -0
- package/dist/showcase/assets/wrench-1Ra9xb3d.js +1 -0
- package/dist/showcase/assets/x-CE8oevyh.js +1 -0
- package/dist/showcase/assets/zap-se3n2YVD.js +1 -0
- package/dist/showcase/index.html +4 -3
- package/dist/style.css +2 -2
- package/package.json +14 -3
- package/scripts/audit-consumer.mjs +337 -0
- package/scripts/install-skill.mjs +50 -36
- package/src/App.css +28 -0
- package/dist/_shared/accordion-CztqyaIN.js +0 -130
- package/dist/_shared/accordion-CztqyaIN.js.map +0 -1
- package/dist/_shared/accordion-D5uTCLCB.cjs +0 -2
- package/dist/_shared/accordion-D5uTCLCB.cjs.map +0 -1
- package/dist/_shared/action-menu-Yrj6VzFS.js +0 -96
- package/dist/_shared/action-menu-Yrj6VzFS.js.map +0 -1
- package/dist/_shared/action-menu-eVP8GGlv.cjs +0 -2
- package/dist/_shared/action-menu-eVP8GGlv.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DaHXJTKg.cjs +0 -3
- package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DyLn3JAs.js +0 -1068
- package/dist/_shared/ai-artifact-DyLn3JAs.js.map +0 -1
- package/dist/_shared/alert-BVw4Mq6H.js +0 -48
- package/dist/_shared/alert-BVw4Mq6H.js.map +0 -1
- package/dist/_shared/alert-DXSlR9ja.cjs +0 -2
- package/dist/_shared/alert-DXSlR9ja.cjs.map +0 -1
- package/dist/_shared/avatar-CpBz9pTv.js +0 -52
- package/dist/_shared/avatar-CpBz9pTv.js.map +0 -1
- package/dist/_shared/avatar-dg20YFFs.cjs +0 -2
- package/dist/_shared/avatar-dg20YFFs.cjs.map +0 -1
- package/dist/_shared/badge-BVCh_hfL.js +0 -108
- package/dist/_shared/badge-BVCh_hfL.js.map +0 -1
- package/dist/_shared/badge-C49SSz-6.cjs +0 -2
- package/dist/_shared/badge-C49SSz-6.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +0 -2
- package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-Dc93fqqE.js +0 -111
- package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +0 -1
- package/dist/_shared/button-2xglT7yf.cjs +0 -2
- package/dist/_shared/button-2xglT7yf.cjs.map +0 -1
- package/dist/_shared/button-ChCkwoOD.js +0 -176
- package/dist/_shared/button-ChCkwoOD.js.map +0 -1
- package/dist/_shared/button-D0nF99a9.cjs +0 -2
- package/dist/_shared/button-D0nF99a9.cjs.map +0 -1
- package/dist/_shared/button-DBR4QI9E.js +0 -46
- package/dist/_shared/button-DBR4QI9E.js.map +0 -1
- package/dist/_shared/buttons-Bcnt1md_.js +0 -143
- package/dist/_shared/buttons-Bcnt1md_.js.map +0 -1
- package/dist/_shared/buttons-km9xqXJv.cjs +0 -2
- package/dist/_shared/buttons-km9xqXJv.cjs.map +0 -1
- package/dist/_shared/card-radio-group-BGH93O5-.js +0 -158
- package/dist/_shared/card-radio-group-BGH93O5-.js.map +0 -1
- package/dist/_shared/card-radio-group-Vq741uhL.cjs +0 -2
- package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +0 -1
- package/dist/_shared/chunk-D3uCBrYO.cjs +0 -1
- package/dist/_shared/combobox-BgXAxjU2.js +0 -746
- package/dist/_shared/combobox-BgXAxjU2.js.map +0 -1
- package/dist/_shared/combobox-DuIyh3xJ.cjs +0 -2
- package/dist/_shared/combobox-DuIyh3xJ.cjs.map +0 -1
- package/dist/_shared/command-BbiijN61.js +0 -39
- package/dist/_shared/command-BbiijN61.js.map +0 -1
- package/dist/_shared/command-D7zTvyBJ.cjs +0 -2
- package/dist/_shared/command-D7zTvyBJ.cjs.map +0 -1
- package/dist/_shared/command-DGNtTI-V.cjs +0 -2
- package/dist/_shared/command-DGNtTI-V.cjs.map +0 -1
- package/dist/_shared/command-jKbwFRtS.js +0 -123
- package/dist/_shared/command-jKbwFRtS.js.map +0 -1
- package/dist/_shared/comments-CNUsdwGW.cjs +0 -2
- package/dist/_shared/comments-CNUsdwGW.cjs.map +0 -1
- package/dist/_shared/comments-CvmS7zG3.js +0 -945
- package/dist/_shared/comments-CvmS7zG3.js.map +0 -1
- package/dist/_shared/containers-BFDv7cCV.cjs +0 -2
- package/dist/_shared/containers-BFDv7cCV.cjs.map +0 -1
- package/dist/_shared/containers-C1-A_2PT.js +0 -19
- package/dist/_shared/containers-C1-A_2PT.js.map +0 -1
- package/dist/_shared/content-container-CwqFnaI0.cjs +0 -2
- package/dist/_shared/content-container-CwqFnaI0.cjs.map +0 -1
- package/dist/_shared/content-container-D_3JGBSc.js +0 -33
- package/dist/_shared/content-container-D_3JGBSc.js.map +0 -1
- package/dist/_shared/copyable-CHhCGMfW.js +0 -38
- package/dist/_shared/copyable-CHhCGMfW.js.map +0 -1
- package/dist/_shared/copyable-ndaiocYq.cjs +0 -2
- package/dist/_shared/copyable-ndaiocYq.cjs.map +0 -1
- package/dist/_shared/date-picker-B8O_qbik.js +0 -1353
- package/dist/_shared/date-picker-B8O_qbik.js.map +0 -1
- package/dist/_shared/date-picker-BnOjyuKS.cjs +0 -2
- package/dist/_shared/date-picker-BnOjyuKS.cjs.map +0 -1
- package/dist/_shared/date-pickers-Cas9cPlj.js +0 -330
- package/dist/_shared/date-pickers-Cas9cPlj.js.map +0 -1
- package/dist/_shared/date-pickers-Dk-G3RMy.cjs +0 -2
- package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +0 -1
- package/dist/_shared/dialog-67GmkMLC.js +0 -101
- package/dist/_shared/dialog-67GmkMLC.js.map +0 -1
- package/dist/_shared/dialog-BF_4uAhE.cjs +0 -2
- package/dist/_shared/dialog-BF_4uAhE.cjs.map +0 -1
- package/dist/_shared/display-B9xVWboG.cjs +0 -8
- package/dist/_shared/display-B9xVWboG.cjs.map +0 -1
- package/dist/_shared/display-BM_GxDAo.js +0 -1237
- package/dist/_shared/display-BM_GxDAo.js.map +0 -1
- package/dist/_shared/dropdown-menu-4nxEBMnd.js +0 -147
- package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +0 -1
- package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +0 -2
- package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +0 -1
- package/dist/_shared/form-field-BQlki-8s.js +0 -319
- package/dist/_shared/form-field-BQlki-8s.js.map +0 -1
- package/dist/_shared/form-field-DzpwVS99.cjs +0 -2
- package/dist/_shared/form-field-DzpwVS99.cjs.map +0 -1
- package/dist/_shared/form-sizing-CcbB-OHF.js +0 -21
- package/dist/_shared/form-sizing-CcbB-OHF.js.map +0 -1
- package/dist/_shared/form-sizing-Cw12UeI6.cjs +0 -2
- package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +0 -1
- package/dist/_shared/format-B2AdSQVn.cjs +0 -2
- package/dist/_shared/format-B2AdSQVn.cjs.map +0 -1
- package/dist/_shared/format-CP65h1vK.js +0 -48
- package/dist/_shared/format-CP65h1vK.js.map +0 -1
- package/dist/_shared/forms-B8aaNG44.cjs +0 -2
- package/dist/_shared/forms-B8aaNG44.cjs.map +0 -1
- package/dist/_shared/forms-BusuTZZ2.js +0 -3374
- package/dist/_shared/forms-BusuTZZ2.js.map +0 -1
- package/dist/_shared/header-DWfOUjFL.cjs +0 -2
- package/dist/_shared/header-DWfOUjFL.cjs.map +0 -1
- package/dist/_shared/header-KpdoLtP9.js +0 -369
- package/dist/_shared/header-KpdoLtP9.js.map +0 -1
- package/dist/_shared/heading-BprqyzDs.js +0 -39
- package/dist/_shared/heading-BprqyzDs.js.map +0 -1
- package/dist/_shared/heading-mZc_jan1.cjs +0 -2
- package/dist/_shared/heading-mZc_jan1.cjs.map +0 -1
- package/dist/_shared/hooks-C-uWoRq5.cjs +0 -2
- package/dist/_shared/hooks-C-uWoRq5.cjs.map +0 -1
- package/dist/_shared/hooks-D5HJtvvP.js +0 -118
- package/dist/_shared/hooks-D5HJtvvP.js.map +0 -1
- package/dist/_shared/icon-badge-BBqDyAUz.cjs +0 -2
- package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +0 -1
- package/dist/_shared/icon-badge-Bi63T-bj.js +0 -52
- package/dist/_shared/icon-badge-Bi63T-bj.js.map +0 -1
- package/dist/_shared/input-B2YXTHqz.cjs +0 -2
- package/dist/_shared/input-B2YXTHqz.cjs.map +0 -1
- package/dist/_shared/input-BJb10xb9.cjs +0 -2
- package/dist/_shared/input-BJb10xb9.cjs.map +0 -1
- package/dist/_shared/input-CZxP5Xgj.js +0 -17
- package/dist/_shared/input-CZxP5Xgj.js.map +0 -1
- package/dist/_shared/input-DQahu2sm.js +0 -182
- package/dist/_shared/input-DQahu2sm.js.map +0 -1
- package/dist/_shared/item-Cu5JbZyZ.js +0 -224
- package/dist/_shared/item-Cu5JbZyZ.js.map +0 -1
- package/dist/_shared/item-Cx_7QZ2o.cjs +0 -2
- package/dist/_shared/item-Cx_7QZ2o.cjs.map +0 -1
- package/dist/_shared/mentions-CS3rIhze.js +0 -493
- package/dist/_shared/mentions-CS3rIhze.js.map +0 -1
- package/dist/_shared/mentions-D7gnP3Nf.cjs +0 -2
- package/dist/_shared/mentions-D7gnP3Nf.cjs.map +0 -1
- package/dist/_shared/metadata-CRsVWE8Y.cjs +0 -2
- package/dist/_shared/metadata-CRsVWE8Y.cjs.map +0 -1
- package/dist/_shared/metadata-CfG0FdFZ.js +0 -236
- package/dist/_shared/metadata-CfG0FdFZ.js.map +0 -1
- package/dist/_shared/money-display-Bd0rkjc9.js +0 -198
- package/dist/_shared/money-display-Bd0rkjc9.js.map +0 -1
- package/dist/_shared/money-display-DSFft9Mi.cjs +0 -2
- package/dist/_shared/money-display-DSFft9Mi.cjs.map +0 -1
- package/dist/_shared/navigation-Do9k5Xh1.js +0 -420
- package/dist/_shared/navigation-Do9k5Xh1.js.map +0 -1
- package/dist/_shared/navigation-QAAD3HJd.cjs +0 -2
- package/dist/_shared/navigation-QAAD3HJd.cjs.map +0 -1
- package/dist/_shared/overlays-B8AH8fNv.js +0 -633
- package/dist/_shared/overlays-B8AH8fNv.js.map +0 -1
- package/dist/_shared/overlays-DOcoRy8k.cjs +0 -2
- package/dist/_shared/overlays-DOcoRy8k.cjs.map +0 -1
- package/dist/_shared/page-BPCeKX9X.js +0 -263
- package/dist/_shared/page-BPCeKX9X.js.map +0 -1
- package/dist/_shared/page-DMM32sxi.cjs +0 -2
- package/dist/_shared/page-DMM32sxi.cjs.map +0 -1
- package/dist/_shared/popover-B1f_EUQS.cjs +0 -2
- package/dist/_shared/popover-B1f_EUQS.cjs.map +0 -1
- package/dist/_shared/popover-CgRGcFk9.js +0 -83
- package/dist/_shared/popover-CgRGcFk9.js.map +0 -1
- package/dist/_shared/popover-menu-BEKIT3LR.cjs +0 -2
- package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +0 -1
- package/dist/_shared/popover-menu-BHdHLEVL.js +0 -95
- package/dist/_shared/popover-menu-BHdHLEVL.js.map +0 -1
- package/dist/_shared/rich-text-editor-0uoIoYXU.js +0 -608
- package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +0 -1
- package/dist/_shared/rich-text-editor-wTiARGuB.cjs +0 -2
- package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +0 -1
- package/dist/_shared/scroll-area-Bo17wtZD.cjs +0 -2
- package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +0 -1
- package/dist/_shared/scroll-area-Cj-hmB5D.js +0 -41
- package/dist/_shared/scroll-area-Cj-hmB5D.js.map +0 -1
- package/dist/_shared/select-07RRiTWc.js +0 -85
- package/dist/_shared/select-07RRiTWc.js.map +0 -1
- package/dist/_shared/select-BfiU7a4n.cjs +0 -2
- package/dist/_shared/select-BfiU7a4n.cjs.map +0 -1
- package/dist/_shared/separator-CN9zAJfs.cjs +0 -2
- package/dist/_shared/separator-CN9zAJfs.cjs.map +0 -1
- package/dist/_shared/separator-DR0uUMKa.js +0 -16
- package/dist/_shared/separator-DR0uUMKa.js.map +0 -1
- package/dist/_shared/sheet-B5FoGJAZ.cjs +0 -2
- package/dist/_shared/sheet-B5FoGJAZ.cjs.map +0 -1
- package/dist/_shared/sheet-cUI8cypP.js +0 -100
- package/dist/_shared/sheet-cUI8cypP.js.map +0 -1
- package/dist/_shared/sidebar-Bq7yKLrG.cjs +0 -2
- package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +0 -1
- package/dist/_shared/sidebar-Da20tCUc.cjs +0 -2
- package/dist/_shared/sidebar-Da20tCUc.cjs.map +0 -1
- package/dist/_shared/sidebar-Q6TYE8Ux.js +0 -371
- package/dist/_shared/sidebar-Q6TYE8Ux.js.map +0 -1
- package/dist/_shared/sidebar-WmnQ55YY.js +0 -537
- package/dist/_shared/sidebar-WmnQ55YY.js.map +0 -1
- package/dist/_shared/skeleton-B3HWEc6G.js +0 -14
- package/dist/_shared/skeleton-B3HWEc6G.js.map +0 -1
- package/dist/_shared/skeleton-Cz_l8-fc.cjs +0 -2
- package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +0 -1
- package/dist/_shared/slot-BgnZtKR5.js +0 -18
- package/dist/_shared/slot-BgnZtKR5.js.map +0 -1
- package/dist/_shared/slot-Dac1ipUC.cjs +0 -2
- package/dist/_shared/slot-Dac1ipUC.cjs.map +0 -1
- package/dist/_shared/smart-card-Bm_VxYUG.cjs +0 -2
- package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +0 -1
- package/dist/_shared/smart-card-MT6JjkoI.js +0 -360
- package/dist/_shared/smart-card-MT6JjkoI.js.map +0 -1
- package/dist/_shared/spinner-BQjxJ_Kx.js +0 -67
- package/dist/_shared/spinner-BQjxJ_Kx.js.map +0 -1
- package/dist/_shared/spinner-Dvaa6GUm.cjs +0 -2
- package/dist/_shared/spinner-Dvaa6GUm.cjs.map +0 -1
- package/dist/_shared/switch-C0yyhsXZ.js +0 -51
- package/dist/_shared/switch-C0yyhsXZ.js.map +0 -1
- package/dist/_shared/switch-DozkSQNn.cjs +0 -2
- package/dist/_shared/switch-DozkSQNn.cjs.map +0 -1
- package/dist/_shared/text-DBnY6fcL.cjs +0 -2
- package/dist/_shared/text-DBnY6fcL.cjs.map +0 -1
- package/dist/_shared/text-DIxMTECE.js +0 -74
- package/dist/_shared/text-DIxMTECE.js.map +0 -1
- package/dist/_shared/textarea-Cgl-FPwu.js +0 -119
- package/dist/_shared/textarea-Cgl-FPwu.js.map +0 -1
- package/dist/_shared/textarea-D8wC0XlZ.cjs +0 -2
- package/dist/_shared/textarea-D8wC0XlZ.cjs.map +0 -1
- package/dist/_shared/tooltip-Cws4BiPT.js +0 -49
- package/dist/_shared/tooltip-Cws4BiPT.js.map +0 -1
- package/dist/_shared/tooltip-DyUi-Tac.cjs +0 -2
- package/dist/_shared/tooltip-DyUi-Tac.cjs.map +0 -1
- package/dist/_shared/typography-BW7iZBx7.cjs +0 -2
- package/dist/_shared/typography-BW7iZBx7.cjs.map +0 -1
- package/dist/_shared/typography-a3hydyvI.js +0 -102
- package/dist/_shared/typography-a3hydyvI.js.map +0 -1
- package/dist/_shared/ui-provider-4qKSKMPd.js +0 -85
- package/dist/_shared/ui-provider-4qKSKMPd.js.map +0 -1
- package/dist/_shared/ui-provider-uiQgATj1.cjs +0 -2
- package/dist/_shared/ui-provider-uiQgATj1.cjs.map +0 -1
- package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +0 -6
- package/dist/showcase/assets/CSPContext-BA7DfnCI.js +0 -1
- package/dist/showcase/assets/CompositeItem-PwzgE4va.js +0 -1
- package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +0 -1
- package/dist/showcase/assets/Control.FullScreen-B9vseC57.js +0 -1
- package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +0 -1
- package/dist/showcase/assets/FormContext-ChygLayp.js +0 -1
- package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +0 -1
- package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +0 -1
- package/dist/showcase/assets/Separator-Dk4eN76U.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +0 -1
- package/dist/showcase/assets/accordion-dQszzfmw.js +0 -172
- package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +0 -1
- package/dist/showcase/assets/action-menu-CBi2Eiy0.js +0 -1
- package/dist/showcase/assets/activities-DoXsgP4G.js +0 -501
- package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +0 -1
- package/dist/showcase/assets/admin-CxklUqAG.js +0 -80
- package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +0 -2
- package/dist/showcase/assets/ai-chat-B6PuqkEu.js +0 -568
- package/dist/showcase/assets/ai-elements-D_rpj_ds.js +0 -379
- package/dist/showcase/assets/ai-new-CUPrAbOK.js +0 -167
- package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +0 -1
- package/dist/showcase/assets/ai-zxF_msJF.js +0 -41
- package/dist/showcase/assets/alert-771BE3Ny.js +0 -59
- package/dist/showcase/assets/alert-CG42DAlX.js +0 -1
- package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +0 -73
- package/dist/showcase/assets/arrow-down-CUoXUyN1.js +0 -1
- package/dist/showcase/assets/arrow-left-Cdq69X6h.js +0 -1
- package/dist/showcase/assets/arrow-right-i25q9L2H.js +0 -1
- package/dist/showcase/assets/arrow-up-pnezegnF.js +0 -1
- package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +0 -1
- package/dist/showcase/assets/avatar-LPmQqZQv.js +0 -1
- package/dist/showcase/assets/avatar-ZVFIQouy.js +0 -57
- package/dist/showcase/assets/badge-DK4bsgZC.js +0 -28
- package/dist/showcase/assets/badge-check-Cw5gkVcG.js +0 -1
- package/dist/showcase/assets/bell-BvJELoaV.js +0 -1
- package/dist/showcase/assets/bot-DRj6sdSR.js +0 -1
- package/dist/showcase/assets/box-BNND3M2m.js +0 -1
- package/dist/showcase/assets/brain-Cy3o-12l.js +0 -1
- package/dist/showcase/assets/brand-DvipEpFn.js +0 -40
- package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +0 -1
- package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +0 -52
- package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +0 -1
- package/dist/showcase/assets/briefcase-LcAwoEmu.js +0 -1
- package/dist/showcase/assets/button-CuwcGzk1.js +0 -44
- package/dist/showcase/assets/button-group-CAImjDrl.js +0 -1
- package/dist/showcase/assets/buttons-DTjNHCMl.js +0 -259
- package/dist/showcase/assets/calendar-B1zW0q6I.js +0 -1
- package/dist/showcase/assets/calendar-Dlv72ytt.js +0 -1
- package/dist/showcase/assets/calendar-ls2A08Pn.js +0 -16
- package/dist/showcase/assets/card-BhtkM1BT.js +0 -1
- package/dist/showcase/assets/cards-BRpRXzGk.js +0 -328
- package/dist/showcase/assets/chart-column-BpQkEi1H.js +0 -1
- package/dist/showcase/assets/chevron-down-DyObdfSb.js +0 -1
- package/dist/showcase/assets/chevron-left-T7dHNxYM.js +0 -1
- package/dist/showcase/assets/chevron-right-D_EcqHpT.js +0 -1
- package/dist/showcase/assets/chevron-up-B38ivdGO.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +0 -1
- package/dist/showcase/assets/circle-BrCPAmDA.js +0 -1
- package/dist/showcase/assets/circle-alert-DdhzLPY_.js +0 -1
- package/dist/showcase/assets/circle-check-DlA6zidQ.js +0 -1
- package/dist/showcase/assets/circle-check-big-DFGJANQF.js +0 -1
- package/dist/showcase/assets/circle-dot-BKmnVUqM.js +0 -1
- package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +0 -1
- package/dist/showcase/assets/circle-x-C45QjHEs.js +0 -1
- package/dist/showcase/assets/clock-D1nKQzQo.js +0 -1
- package/dist/showcase/assets/code-xml-B8N3GRSu.js +0 -1
- package/dist/showcase/assets/collapsible-4TfcWyNs.js +0 -1
- package/dist/showcase/assets/collapsible-CKbZtvTj.js +0 -27
- package/dist/showcase/assets/combobox-DTdGPaU0.js +0 -622
- package/dist/showcase/assets/command-DymTXwL1.js +0 -1
- package/dist/showcase/assets/command-ksVIHQKJ.js +0 -45
- package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +0 -1
- package/dist/showcase/assets/comment-item-CAmKnJa7.js +0 -1
- package/dist/showcase/assets/comments-Benk-2mV.js +0 -349
- package/dist/showcase/assets/commerce-Qz-mq8mQ.js +0 -78
- package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +0 -179
- package/dist/showcase/assets/composite-DBDXLPyz.js +0 -1
- package/dist/showcase/assets/contact-card-DkL2nI3r.js +0 -65
- package/dist/showcase/assets/content-container-mRm6oJEa.js +0 -1
- package/dist/showcase/assets/copyable-DmLlmwzy.js +0 -96
- package/dist/showcase/assets/course-card-CJJoeZj9.js +0 -113
- package/dist/showcase/assets/cpu-BXJnF2Xy.js +0 -1
- package/dist/showcase/assets/credit-card-BQK3KKb2.js +0 -1
- package/dist/showcase/assets/currency-DBPUh8ee.js +0 -149
- package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +0 -90
- package/dist/showcase/assets/database-BZerpzGE.js +0 -1
- package/dist/showcase/assets/date-block-iiHUpbNX.js +0 -1
- package/dist/showcase/assets/date-picker-BQeBGL7T.js +0 -1
- package/dist/showcase/assets/date-pickers-CKcUEMMF.js +0 -110
- package/dist/showcase/assets/dense-info-DATmxRU8.js +0 -106
- package/dist/showcase/assets/dialog-Bqu5KDYH.js +0 -1
- package/dist/showcase/assets/display-Bj7uPXD4.js +0 -392
- package/dist/showcase/assets/dist-QK7JxeYv.js +0 -1
- package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +0 -1
- package/dist/showcase/assets/download-5oGw_WbW.js +0 -1
- package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +0 -1
- package/dist/showcase/assets/dropzone-Co1uhsDn.js +0 -1
- package/dist/showcase/assets/ellipsis-cKRcvuyL.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +0 -1
- package/dist/showcase/assets/empty-Y2-4nCBr.js +0 -1
- package/dist/showcase/assets/empty-item-USa6xcUv.js +0 -49
- package/dist/showcase/assets/empty-state-DfhZ9AT5.js +0 -188
- package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +0 -359
- package/dist/showcase/assets/esm-BeGQ_ZTM.js +0 -2
- package/dist/showcase/assets/event-calendar-D-jGrrZS.js +0 -138
- package/dist/showcase/assets/event-log-tA_i4eR9.js +0 -326
- package/dist/showcase/assets/example-6phCHGsN.js +0 -1
- package/dist/showcase/assets/external-link-BuVHkCy0.js +0 -1
- package/dist/showcase/assets/eye-DC5HfGm6.js +0 -1
- package/dist/showcase/assets/feature-announcement-DwvxLytd.js +0 -34
- package/dist/showcase/assets/fetchers-SLCIqgnM.js +0 -1
- package/dist/showcase/assets/file-D-xM4vLy.js +0 -1
- package/dist/showcase/assets/file-text-tmG5vNbr.js +0 -1
- package/dist/showcase/assets/filters-CrGRXmq6.js +0 -78
- package/dist/showcase/assets/flag-CWrEtkY5.js +0 -1
- package/dist/showcase/assets/folder-open-Br-x1pjP.js +0 -1
- package/dist/showcase/assets/form-sizing-Bb5hiM45.js +0 -1
- package/dist/showcase/assets/format-D_ETCyg4.js +0 -1
- package/dist/showcase/assets/format-metric-value-cyOYS377.js +0 -1
- package/dist/showcase/assets/forms-B_MkQ3rm.js +0 -790
- package/dist/showcase/assets/generic-CdmsyXV3.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +0 -1
- package/dist/showcase/assets/gift-NkuklfU2.js +0 -1
- package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +0 -85
- package/dist/showcase/assets/git-branch-B_CBqPeO.js +0 -1
- package/dist/showcase/assets/global-search-D9teAbPe.js +0 -90
- package/dist/showcase/assets/globe-gzw45GU2.js +0 -1
- package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +0 -58
- package/dist/showcase/assets/header-notifications-_aZCpE5A.js +0 -1
- package/dist/showcase/assets/heart-CEMKbRaZ.js +0 -1
- package/dist/showcase/assets/house-BlGXAcMH.js +0 -1
- package/dist/showcase/assets/icon-badge-z6N9reH_.js +0 -1
- package/dist/showcase/assets/image-B8mzmVBr.js +0 -1
- package/dist/showcase/assets/inbox-qdSnP4UV.js +0 -1
- package/dist/showcase/assets/index-B4ubXfly.js +0 -10
- package/dist/showcase/assets/index-Cu3Ssz5r.css +0 -2
- package/dist/showcase/assets/inertValue-D5Q8cLku.js +0 -1
- package/dist/showcase/assets/info-DBvvNjc_.js +0 -1
- package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +0 -1
- package/dist/showcase/assets/input-CBQR0aeX.js +0 -1
- package/dist/showcase/assets/input-OrUzpI55.js +0 -1
- package/dist/showcase/assets/input-group-DhqOen2N.js +0 -47
- package/dist/showcase/assets/input-group-l8xa5nUq.js +0 -1
- package/dist/showcase/assets/inputs-DbiJ0qy2.js +0 -49
- package/dist/showcase/assets/invoice-header-C6youIbL.js +0 -36
- package/dist/showcase/assets/invoice-items-g6dgryF-.js +0 -36
- package/dist/showcase/assets/invoice-mini-0iWhufpt.js +0 -14
- package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +0 -30
- package/dist/showcase/assets/isSameDay-BpZEtJe8.js +0 -1
- package/dist/showcase/assets/isToday-F0CS28oK.js +0 -1
- package/dist/showcase/assets/italic-CJOEwjdc.js +0 -1
- package/dist/showcase/assets/item-BiMm1PPB.js +0 -1
- package/dist/showcase/assets/item-CN0cwdj_.js +0 -1
- package/dist/showcase/assets/item-DNqEUYLT.js +0 -117
- package/dist/showcase/assets/kanban-DxePEUiQ.js +0 -175
- package/dist/showcase/assets/label-Dx4WO-fg.js +0 -1
- package/dist/showcase/assets/layout-containers-DDl8rG8S.js +0 -96
- package/dist/showcase/assets/layout-header-Bu6IcDWu.js +0 -170
- package/dist/showcase/assets/layout-page-D-88Qnoy.js +0 -122
- package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +0 -224
- package/dist/showcase/assets/layout-users-DtbZduBG.js +0 -104
- package/dist/showcase/assets/leaflet-src-9EZQ14iG.js +0 -1
- package/dist/showcase/assets/lib-D9BoOYUd.js +0 -1
- package/dist/showcase/assets/lock-CHurDI0n.js +0 -1
- package/dist/showcase/assets/mail-DZ1o1RLW.js +0 -1
- package/dist/showcase/assets/map-C8xiyT9X.js +0 -124
- package/dist/showcase/assets/map-pin-CAKaoYod.js +0 -1
- package/dist/showcase/assets/menus-C6mnp636.js +0 -89
- package/dist/showcase/assets/message-square-Zo5J_zU1.js +0 -1
- package/dist/showcase/assets/metadata-list-W83-UMhc.js +0 -278
- package/dist/showcase/assets/metric-BSvxidIX.js +0 -1
- package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +0 -77
- package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +0 -42
- package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +0 -54
- package/dist/showcase/assets/minus-C6eBW-2t.js +0 -1
- package/dist/showcase/assets/money-display-DjGRJ16l.js +0 -1
- package/dist/showcase/assets/month-year-picker-DTDebPqf.js +0 -1
- package/dist/showcase/assets/navigation-BrG8Chig.js +0 -86
- package/dist/showcase/assets/navigation-CfXQJbyM.js +0 -230
- package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +0 -119
- package/dist/showcase/assets/overlays-2AB9-S1Z.js +0 -88
- package/dist/showcase/assets/overlays-CYt9o3Xq.js +0 -393
- package/dist/showcase/assets/package-BJMP-Fcr.js +0 -1
- package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +0 -1
- package/dist/showcase/assets/page-header-B_rqHJhe.js +0 -1
- package/dist/showcase/assets/pagination-BHiQvvka.js +0 -1
- package/dist/showcase/assets/pagination-Dq0GruQd.js +0 -42
- package/dist/showcase/assets/paperclip-BMYKrUQo.js +0 -1
- package/dist/showcase/assets/pencil-BJ3VS_FO.js +0 -1
- package/dist/showcase/assets/phone-CsRIyvep.js +0 -1
- package/dist/showcase/assets/plus-D2JuXYLg.js +0 -1
- package/dist/showcase/assets/popover-DNT9755r.js +0 -1
- package/dist/showcase/assets/popover-KvGgcPNg.js +0 -1
- package/dist/showcase/assets/popover-menu-CJx30R65.js +0 -1
- package/dist/showcase/assets/progress-B7WuXcJR.js +0 -1
- package/dist/showcase/assets/progress-CweCSAUv.js +0 -18
- package/dist/showcase/assets/props-table-uDY4eIzt.js +0 -1
- package/dist/showcase/assets/props.generated-BqPfiNI-.json +0 -32423
- package/dist/showcase/assets/quote-DAyyfzQd.js +0 -1
- package/dist/showcase/assets/receipt-C0mMZGbF.js +0 -1
- package/dist/showcase/assets/refresh-cw-X06JbXb-.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +0 -1
- package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +0 -124
- package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +0 -141
- package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +0 -1
- package/dist/showcase/assets/scroll-area-0rT06pXZ.js +0 -1
- package/dist/showcase/assets/scroll-area-YXwdzGpN.js +0 -32
- package/dist/showcase/assets/select-BoWQDtUf.js +0 -1
- package/dist/showcase/assets/send-DJsk3cr1.js +0 -1
- package/dist/showcase/assets/separator-CLSnRcJa.js +0 -28
- package/dist/showcase/assets/separator-DWv-twD-.js +0 -1
- package/dist/showcase/assets/settings-Cb2MsAmN.js +0 -1
- package/dist/showcase/assets/sheet-Dn1-MYus.js +0 -1
- package/dist/showcase/assets/shield-DwLjF5ch.js +0 -1
- package/dist/showcase/assets/shield-alert-D8i6gzMK.js +0 -1
- package/dist/showcase/assets/shield-check-D5YRSBIz.js +0 -1
- package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +0 -1
- package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +0 -1
- package/dist/showcase/assets/skeleton-CeNPp4hr.js +0 -1
- package/dist/showcase/assets/skeleton-QPsnM_NR.js +0 -29
- package/dist/showcase/assets/smart-card-BisUbLPt.js +0 -1
- package/dist/showcase/assets/sonner-B7GzbBK2.js +0 -22
- package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +0 -5
- package/dist/showcase/assets/sparkles-CF9P5Tqh.js +0 -1
- package/dist/showcase/assets/spinner-BeamEyJd.js +0 -49
- package/dist/showcase/assets/spinner-DoYBfalR.js +0 -1
- package/dist/showcase/assets/spinner-UsLsOYzn.js +0 -30
- package/dist/showcase/assets/square-pen-BGTVdnt1.js +0 -1
- package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +0 -1
- package/dist/showcase/assets/star-NsPNO9gR.js +0 -1
- package/dist/showcase/assets/startOfDay-zJBpxLuW.js +0 -1
- package/dist/showcase/assets/styles-DA7a7hVy.js +0 -1
- package/dist/showcase/assets/switch-C62S4U2o.js +0 -1
- package/dist/showcase/assets/switch-CYQcinJZ.js +0 -1
- package/dist/showcase/assets/table-w4IABkpa.js +0 -1
- package/dist/showcase/assets/table-xgB63UrY.js +0 -390
- package/dist/showcase/assets/tabs-BFTEaTXj.js +0 -19
- package/dist/showcase/assets/tabs-oMJn9Ujq.js +0 -1
- package/dist/showcase/assets/text-button-BgcutPuu.js +0 -1
- package/dist/showcase/assets/text-link-CS9thOWL.js +0 -1
- package/dist/showcase/assets/textarea-BOBx4EM6.js +0 -1
- package/dist/showcase/assets/textarea-CTzYZZqa.js +0 -1
- package/dist/showcase/assets/timelines-CK07mEBK.js +0 -186
- package/dist/showcase/assets/toggle-group-CSPdPT6G.js +0 -1
- package/dist/showcase/assets/toggles-DDSdl-gA.js +0 -71
- package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +0 -32
- package/dist/showcase/assets/trash-2-C-FAptQP.js +0 -1
- package/dist/showcase/assets/trending-up-BmLhdF_w.js +0 -1
- package/dist/showcase/assets/truck-pZdUS_as.js +0 -1
- package/dist/showcase/assets/typography-CnBH2z7f.js +0 -214
- package/dist/showcase/assets/ui-badge-Cl6INRO5.js +0 -28
- package/dist/showcase/assets/ui-card-B5P-thNu.js +0 -30
- package/dist/showcase/assets/ui-table-B32RILKk.js +0 -42
- package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +0 -138
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +0 -1
- package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +0 -1
- package/dist/showcase/assets/useControlled-ZjqBfPCn.js +0 -1
- package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +0 -1
- package/dist/showcase/assets/useRender-zuKv6JQF.js +0 -1
- package/dist/showcase/assets/useRole-08KeyiD3.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +0 -1
- package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +0 -1
- package/dist/showcase/assets/user-Bgc2t2_e.js +0 -1
- package/dist/showcase/assets/user-plus-F_TfagnP.js +0 -1
- package/dist/showcase/assets/users-B7G4yTCR.js +0 -1
- package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +0 -37
- package/dist/showcase/assets/wrench-BdzICmjR.js +0 -1
- package/dist/showcase/assets/x-B156Wr-5.js +0 -1
- package/dist/showcase/assets/zap-B3iByjNV.js +0 -1
- /package/dist/showcase/assets/{analytics.strings-BcotPUad.js → analytics.strings-B9262Jmq.js} +0 -0
- /package/dist/showcase/assets/{chunk-CilyBKbf.js → chunk-QTnfLwEv.js} +0 -0
- /package/dist/showcase/assets/{customers-BETQwFRp.js → customers-DvBxRjHv.js} +0 -0
- /package/dist/showcase/assets/{format-DoQ4Wqkq.js → format-C_LjuBUs.js} +0 -0
- /package/dist/showcase/assets/{isElementDisabled-BLmk_uhf.js → isElementDisabled-KSuuBj8D.js} +0 -0
- /package/dist/showcase/assets/{leaflet.draw-CwFqqsDc.js → leaflet.draw-lpeKTWFs.js} +0 -0
- /package/dist/showcase/assets/{orders-DNn7r9k_.js → orders-BFwWtubb.js} +0 -0
- /package/dist/showcase/assets/{resolveAriaLabelledBy-DmY5COAB.js → resolveAriaLabelledBy-B6CR9UP2.js} +0 -0
- /package/dist/showcase/assets/{valueToPercent-CDF3aNnc.js → valueToPercent-B5BHWU68.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cn as e } from "../../../lib/utils.js";
|
|
2
|
-
import { t } from "../../../_shared/text-
|
|
3
|
-
import { t as n } from "../../../_shared/badge-
|
|
4
|
-
import { o as r, r as i, t as a } from "../../../_shared/avatar-
|
|
2
|
+
import { t } from "../../../_shared/text-qsEg5GdP.js";
|
|
3
|
+
import { t as n } from "../../../_shared/badge-BK5VvEgg.js";
|
|
4
|
+
import { o as r, r as i, t as a } from "../../../_shared/avatar-CBi4LGxy.js";
|
|
5
5
|
import * as o from "react";
|
|
6
6
|
import { useEffect as s, useMemo as c, useRef as l, useState as u } from "react";
|
|
7
7
|
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|