themelia-react-ui 2.0.3 → 2.0.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/CHANGELOG.md +50 -0
- package/README.md +65 -28
- package/dist/{accordion-Cjb6sx0G.js → accordion-96o0pN62.js} +5 -5
- package/dist/{accordion-Cjb6sx0G.js.map → accordion-96o0pN62.js.map} +1 -1
- package/dist/action-menu-CHgs8vmj.js +281 -0
- package/dist/action-menu-CHgs8vmj.js.map +1 -0
- package/dist/{affordance-geometry.generated-tF36bREk.js → affordance-geometry.generated-B8yGOr8-.js} +7 -1
- package/dist/affordance-geometry.generated-B8yGOr8-.js.map +1 -0
- package/dist/{ai-artifact-DvTwDVyL.js → ai-artifact-BZUGwBq6.js} +277 -276
- package/dist/ai-artifact-BZUGwBq6.js.map +1 -0
- package/dist/{app-shell-C4FhvCqF.js → app-shell-D63ATkIK.js} +84 -83
- package/dist/app-shell-D63ATkIK.js.map +1 -0
- package/dist/{attachment-BxDfL2mw.js → attachment-DkoqHPPl.js} +7 -7
- package/dist/{attachment-BxDfL2mw.js.map → attachment-DkoqHPPl.js.map} +1 -1
- package/dist/{auth-BGua8ouh.js → auth-D2FVZ1MH.js} +10 -10
- package/dist/{auth-BGua8ouh.js.map → auth-D2FVZ1MH.js.map} +1 -1
- package/dist/{avatar-DAPlDvhJ.js → avatar-DWO_HHhB.js} +5 -5
- package/dist/{avatar-DAPlDvhJ.js.map → avatar-DWO_HHhB.js.map} +1 -1
- package/dist/{badge-HpFqoqSY.js → badge-DErMA7ul.js} +4 -4
- package/dist/{badge-HpFqoqSY.js.map → badge-DErMA7ul.js.map} +1 -1
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +3 -3
- package/dist/base/cascader.js +13 -13
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +6 -6
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +3 -3
- package/dist/base/inline-edit.js +10 -10
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +6 -6
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +9 -9
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +6 -6
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +4 -4
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +2 -2
- package/dist/base/toaster.js +3 -3
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-DnUJ21NQ.js → batch-action-bar-CdfIkCsV.js} +4 -4
- package/dist/{batch-action-bar-DnUJ21NQ.js.map → batch-action-bar-CdfIkCsV.js.map} +1 -1
- package/dist/blocks/admin.js +20 -20
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +15 -15
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +17 -17
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +570 -567
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -2
- package/dist/blocks/onboarding.js +5 -5
- package/dist/blocks/planning.js +11 -11
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-C-oqs1sQ.js → breadcrumbs-B-WFKecD.js} +4 -4
- package/dist/{breadcrumbs-C-oqs1sQ.js.map → breadcrumbs-B-WFKecD.js.map} +1 -1
- package/dist/{button-DVzspB_G.js → button-DkmK-z8E.js} +2 -2
- package/dist/{button-DVzspB_G.js.map → button-DkmK-z8E.js.map} +1 -1
- package/dist/{buttons-DPZekJFu.js → buttons-BbfzgczK.js} +8 -8
- package/dist/{buttons-DPZekJFu.js.map → buttons-BbfzgczK.js.map} +1 -1
- package/dist/{cards-BaBZR-AU.js → cards-4JTWqvVe.js} +10 -10
- package/dist/cards-4JTWqvVe.js.map +1 -0
- package/dist/{chart-ZOYyK2xG.js → chart-C19flDQb.js} +4 -4
- package/dist/{chart-ZOYyK2xG.js.map → chart-C19flDQb.js.map} +1 -1
- package/dist/{checkbox-AWIhNhmo.js → checkbox-CzYUTPeJ.js} +9 -5
- package/dist/checkbox-CzYUTPeJ.js.map +1 -0
- package/dist/{choice-inputs-CNHvARCJ.js → choice-inputs-JLtij2y4.js} +182 -176
- package/dist/choice-inputs-JLtij2y4.js.map +1 -0
- package/dist/{code-block-DeneBJR_.js → code-block-CGNaUtAE.js} +7 -7
- package/dist/{code-block-DeneBJR_.js.map → code-block-CGNaUtAE.js.map} +1 -1
- package/dist/{collapsible-C-_l4hpy.js → collapsible-Do4G0zcC.js} +3 -3
- package/dist/{collapsible-C-_l4hpy.js.map → collapsible-Do4G0zcC.js.map} +1 -1
- package/dist/{collection-content-By56pLog.js → collection-content-C0e8SsTm.js} +3 -3
- package/dist/{collection-content-By56pLog.js.map → collection-content-C0e8SsTm.js.map} +1 -1
- package/dist/{combobox-Dxo2fAYQ.js → combobox-CBJDs6w_.js} +12 -12
- package/dist/{combobox-Dxo2fAYQ.js.map → combobox-CBJDs6w_.js.map} +1 -1
- package/dist/{combobox-DaHESuiL.js → combobox-hbhSS18O.js} +7 -7
- package/dist/{combobox-DaHESuiL.js.map → combobox-hbhSS18O.js.map} +1 -1
- package/dist/{command-C25VMRII.js → command-D8NrBj-b.js} +7 -7
- package/dist/{command-C25VMRII.js.map → command-D8NrBj-b.js.map} +1 -1
- package/dist/{comments-DD0DUPwJ.js → comments-Di4w0H_S.js} +383 -382
- package/dist/comments-Di4w0H_S.js.map +1 -0
- package/dist/components/base/action-menu/action-menu.d.ts +2 -0
- package/dist/components/base/cards/card.recipes.d.ts +12 -5
- package/dist/components/base/cards/smart-card.types.d.ts +12 -7
- package/dist/components/base/choice-inputs/checkbox.d.ts +7 -2
- package/dist/components/base/choice-inputs/switch-card.d.ts +7 -0
- package/dist/components/base/choice-inputs/toggle-field.d.ts +7 -0
- package/dist/components/base/date-pickers/datepicker.types.d.ts +7 -0
- package/dist/components/base/forms/controlled-form-field.d.ts +6 -6
- package/dist/components/base/forms/form-field.d.ts +5 -3
- package/dist/components/base/forms/index.d.ts +1 -0
- package/dist/components/base/forms/server-errors.d.ts +16 -0
- package/dist/components/base/forms/workflow.d.ts +5 -2
- package/dist/components/base/metadata-list/metadata-list.d.ts +3 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +4 -2
- package/dist/components/base/structure/composition.recipes.d.ts +17 -0
- package/dist/components/base/text-inputs/hooks/use-form-field-state.d.ts +7 -2
- package/dist/components/base/text-inputs/input.d.ts +4 -2
- package/dist/components/base/text-inputs/textarea.d.ts +4 -2
- package/dist/components/base/value-inputs/date-time-input.d.ts +2 -1
- package/dist/components/base/value-inputs/slider.d.ts +5 -1
- package/dist/components/base/value-inputs/tags-input.d.ts +5 -1
- package/dist/components/typography/text.styles.d.ts +26 -1
- package/dist/composition.recipes-COdiFhxB.js +19 -0
- package/dist/composition.recipes-COdiFhxB.js.map +1 -0
- package/dist/containers-CRmHf7GP.js +104 -0
- package/dist/containers-CRmHf7GP.js.map +1 -0
- package/dist/{copyable-ClBuk_UK.js → copyable-CnGCZdX4.js} +4 -4
- package/dist/{copyable-ClBuk_UK.js.map → copyable-CnGCZdX4.js.map} +1 -1
- package/dist/{data-display-DT_khPl_.js → data-display-D4oujtx0.js} +239 -238
- package/dist/data-display-D4oujtx0.js.map +1 -0
- package/dist/{date-DCrsDTZc.js → date-Q7jnXxpk.js} +5 -5
- package/dist/{date-DCrsDTZc.js.map → date-Q7jnXxpk.js.map} +1 -1
- package/dist/{date-picker-B2K3ucWn.js → date-picker-zOt1oNss.js} +102 -90
- package/dist/date-picker-zOt1oNss.js.map +1 -0
- package/dist/date-pickers-cj8IXbDC.js +179 -0
- package/dist/date-pickers-cj8IXbDC.js.map +1 -0
- package/dist/{display-hAc1HjpI.js → display-BB4BL_-K.js} +8 -8
- package/dist/{display-hAc1HjpI.js.map → display-BB4BL_-K.js.map} +1 -1
- package/dist/{dropdown-menu-Cl4X7L5S.js → dropdown-menu-CjY8Vt7W.js} +8 -8
- package/dist/{dropdown-menu-Cl4X7L5S.js.map → dropdown-menu-CjY8Vt7W.js.map} +1 -1
- package/dist/features/activities.js +11 -11
- package/dist/features/ai-chat.js +9 -9
- package/dist/features/appointment-calendar.js +222 -220
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +8 -8
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +10 -10
- package/dist/features/email-composer.js +275 -274
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +199 -198
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +12 -12
- package/dist/features/kanban.js +4 -4
- package/dist/features/map.js +7 -7
- package/dist/features/media-library.js +623 -622
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +973 -969
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +12 -12
- package/dist/features/resource-assignment.js +8 -8
- package/dist/features/resource.js +113 -112
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +254 -253
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +3 -3
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +19 -19
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-BYIhtitP.js → feedback-DZNL5Lg1.js} +9 -9
- package/dist/{feedback-BYIhtitP.js.map → feedback-DZNL5Lg1.js.map} +1 -1
- package/dist/{field-affordance-recipes-DZhnIL_Y.js → field-affordance-recipes-DjwGx8eM.js} +2 -2
- package/dist/{field-affordance-recipes-DZhnIL_Y.js.map → field-affordance-recipes-DjwGx8eM.js.map} +1 -1
- package/dist/{filters-DJVAveHA.js → filters-BcT-uoFy.js} +19 -19
- package/dist/{filters-DJVAveHA.js.map → filters-BcT-uoFy.js.map} +1 -1
- package/dist/{form-field-CwH9y77i.js → form-field-CsgRmdit.js} +14 -8
- package/dist/form-field-CsgRmdit.js.map +1 -0
- package/dist/{form-sizing-BdP_Mf5p.js → form-sizing-NXgjkmBG.js} +3 -3
- package/dist/{form-sizing-BdP_Mf5p.js.map → form-sizing-NXgjkmBG.js.map} +1 -1
- package/dist/{forms-B9G_xwzi.js → forms-BV5m5aQF.js} +83 -65
- package/dist/forms-BV5m5aQF.js.map +1 -0
- package/dist/{forms-numeric-B_jraJaQ.js → forms-numeric-Cd33AKbD.js} +288 -288
- package/dist/forms-numeric-Cd33AKbD.js.map +1 -0
- package/dist/{header-BSfIEWbI.js → header-BA697l4a.js} +14 -14
- package/dist/{header-BSfIEWbI.js.map → header-BA697l4a.js.map} +1 -1
- package/dist/hooks/useFormErrors.d.ts +1 -1
- package/dist/{hooks-ClH9thn4.js → hooks-BQ-L7Uu2.js} +2 -2
- package/dist/{hooks-ClH9thn4.js.map → hooks-BQ-L7Uu2.js.map} +1 -1
- package/dist/{icon-badge-DYKIwvOV.js → icon-badge-COWbCCWu.js} +3 -3
- package/dist/{icon-badge-DYKIwvOV.js.map → icon-badge-COWbCCWu.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/input-Cdw4k0fb.js +289 -0
- package/dist/input-Cdw4k0fb.js.map +1 -0
- package/dist/{input-CZw8iU99.js → input-DOPL5_QE.js} +3 -3
- package/dist/{input-CZw8iU99.js.map → input-DOPL5_QE.js.map} +1 -1
- package/dist/item-BvZ2DR_x.js +277 -0
- package/dist/item-BvZ2DR_x.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +6 -0
- package/dist/lib/ui-provider/types.d.ts +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/{media-gallery-3zIVLMWH.js → media-gallery-CSl5W1Fy.js} +6 -6
- package/dist/{media-gallery-3zIVLMWH.js.map → media-gallery-CSl5W1Fy.js.map} +1 -1
- package/dist/{mentions-CGlEJ15c.js → mentions-RKOQaaIB.js} +8 -8
- package/dist/{mentions-CGlEJ15c.js.map → mentions-RKOQaaIB.js.map} +1 -1
- package/dist/{message-DZ_ruyUV.js → message-INU2xsxu.js} +4 -4
- package/dist/{message-DZ_ruyUV.js.map → message-INU2xsxu.js.map} +1 -1
- package/dist/metadata-list-qVV7AVxa.js +443 -0
- package/dist/metadata-list-qVV7AVxa.js.map +1 -0
- package/dist/{navigation-BzhHI3lo.js → navigation-BQNcg1jT.js} +8 -8
- package/dist/{navigation-BzhHI3lo.js.map → navigation-BQNcg1jT.js.map} +1 -1
- package/dist/{navigation-Bnotn4AQ.js → navigation-DLF3E1IC.js} +7 -7
- package/dist/{navigation-Bnotn4AQ.js.map → navigation-DLF3E1IC.js.map} +1 -1
- package/dist/{navigation-row-recipes-BFLCk_Aq.js → navigation-row-recipes-WZEs-hYo.js} +2 -2
- package/dist/{navigation-row-recipes-BFLCk_Aq.js.map → navigation-row-recipes-WZEs-hYo.js.map} +1 -1
- package/dist/{number-DbV1Dija.js → number-E_OiIfJz.js} +5 -5
- package/dist/{number-DbV1Dija.js.map → number-E_OiIfJz.js.map} +1 -1
- package/dist/{overflow-tab-bar-CWY7Nogn.js → overflow-tab-bar-CrbqMteP.js} +107 -105
- package/dist/overflow-tab-bar-CrbqMteP.js.map +1 -0
- package/dist/{overlays-tMkF-VAN.js → overlays-BlKynmde.js} +228 -227
- package/dist/overlays-BlKynmde.js.map +1 -0
- package/dist/page-CIwNUtGr.js +227 -0
- package/dist/page-CIwNUtGr.js.map +1 -0
- package/dist/page-header-commands-DFMlNYzN.js +128 -0
- package/dist/page-header-commands-DFMlNYzN.js.map +1 -0
- package/dist/{pagination-BL25hu2s.js → pagination-Ch8X_47u.js} +5 -5
- package/dist/{pagination-BL25hu2s.js.map → pagination-Ch8X_47u.js.map} +1 -1
- package/dist/{popover-menu-Cn9rUkdc.js → popover-menu-BYaCdFhf.js} +6 -6
- package/dist/{popover-menu-Cn9rUkdc.js.map → popover-menu-BYaCdFhf.js.map} +1 -1
- package/dist/{popover-gnTOhbFM.js → popover-uwzX2vo7.js} +4 -4
- package/dist/{popover-gnTOhbFM.js.map → popover-uwzX2vo7.js.map} +1 -1
- package/dist/{primitives-BFK08r9M.js → primitives-Du64iDbb.js} +6 -6
- package/dist/{primitives-BFK08r9M.js.map → primitives-Du64iDbb.js.map} +1 -1
- package/dist/primitives.js +4 -4
- package/dist/{progress-B1VnCT0K.js → progress-BvF2oCdV.js} +5 -5
- package/dist/{progress-B1VnCT0K.js.map → progress-BvF2oCdV.js.map} +1 -1
- package/dist/{receipt-BVSOH3Xo.js → receipt-D789Jwyy.js} +6 -6
- package/dist/{receipt-BVSOH3Xo.js.map → receipt-D789Jwyy.js.map} +1 -1
- package/dist/{rich-text-GOUyKQ-s.js → rich-text-CLJEf76s.js} +4 -4
- package/dist/{rich-text-GOUyKQ-s.js.map → rich-text-CLJEf76s.js.map} +1 -1
- package/dist/{rich-text-editor-cRLC-eBK.js → rich-text-editor-Cm1dpUpQ.js} +10 -10
- package/dist/{rich-text-editor-cRLC-eBK.js.map → rich-text-editor-Cm1dpUpQ.js.map} +1 -1
- package/dist/{rich-text-editor-toolbar-DfXg0-VC.js → rich-text-editor-toolbar-L__e4x47.js} +4 -4
- package/dist/{rich-text-editor-toolbar-DfXg0-VC.js.map → rich-text-editor-toolbar-L__e4x47.js.map} +1 -1
- package/dist/{scroll-area-DcI-M1UT.js → scroll-area-La5RXsEk.js} +2 -2
- package/dist/{scroll-area-DcI-M1UT.js.map → scroll-area-La5RXsEk.js.map} +1 -1
- package/dist/{separator-Bom7NsGO.js → separator-DAEV0w65.js} +2 -2
- package/dist/{separator-Bom7NsGO.js.map → separator-DAEV0w65.js.map} +1 -1
- package/dist/{separator-BDV-Y648.js → separator-GNfPG-90.js} +3 -3
- package/dist/{separator-BDV-Y648.js.map → separator-GNfPG-90.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/settings-BA2iboic.js +174 -0
- package/dist/settings-BA2iboic.js.map +1 -0
- package/dist/{sheet-ijlsjq-n.js → sheet-DoAxTb2J.js} +7 -7
- package/dist/{sheet-ijlsjq-n.js.map → sheet-DoAxTb2J.js.map} +1 -1
- package/dist/{sidebar-DkTO4VTO.js → sidebar-ByqKR_W5.js} +13 -13
- package/dist/{sidebar-DkTO4VTO.js.map → sidebar-ByqKR_W5.js.map} +1 -1
- package/dist/{sidebar-Db6gkh3U.js → sidebar-D2iSnGJ7.js} +11 -11
- package/dist/{sidebar-Db6gkh3U.js.map → sidebar-D2iSnGJ7.js.map} +1 -1
- package/dist/{skeleton-Byjnt7qr.js → skeleton-CUj8O5Bd.js} +3 -3
- package/dist/{skeleton-Byjnt7qr.js.map → skeleton-CUj8O5Bd.js.map} +1 -1
- package/dist/smart-card-CqkzQsK-.js +614 -0
- package/dist/smart-card-CqkzQsK-.js.map +1 -0
- package/dist/{structure-BmisBK-3.js → structure-C0V0_Fyf.js} +3 -3
- package/dist/{structure-BmisBK-3.js.map → structure-C0V0_Fyf.js.map} +1 -1
- package/dist/{structure.recipes-EPz60cU8.js → structure.recipes-BB4-n58V.js} +2 -2
- package/dist/{structure.recipes-EPz60cU8.js.map → structure.recipes-BB4-n58V.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{table-DsfzoUia.js → table-CpvnzJn9.js} +3 -3
- package/dist/{table-DsfzoUia.js.map → table-CpvnzJn9.js.map} +1 -1
- package/dist/{table-BweFy_P9.js → table-DH7rozUv.js} +19 -19
- package/dist/{table-BweFy_P9.js.map → table-DH7rozUv.js.map} +1 -1
- package/dist/{tabs-CDocW5D1.js → tabs-eqVsJZWO.js} +7 -7
- package/dist/{tabs-CDocW5D1.js.map → tabs-eqVsJZWO.js.map} +1 -1
- package/dist/{text-inputs-f9Ia-aCi.js → text-inputs-DXItiR0O.js} +101 -98
- package/dist/text-inputs-DXItiR0O.js.map +1 -0
- package/dist/{text.styles-g4He6UIW.js → text.styles-B64My8RZ.js} +25 -10
- package/dist/text.styles-B64My8RZ.js.map +1 -0
- package/dist/theme.css +152 -112
- package/dist/{timelines-CwM_9IhD.js → timelines-DmtztAY_.js} +10 -10
- package/dist/{timelines-CwM_9IhD.js.map → timelines-DmtztAY_.js.map} +1 -1
- package/dist/{tooltip-yiRJUFjp.js → tooltip-B4hjKtoV.js} +3 -3
- package/dist/{tooltip-yiRJUFjp.js.map → tooltip-B4hjKtoV.js.map} +1 -1
- package/dist/{tree-WnKQzwbq.js → tree-CV11PURP.js} +8 -8
- package/dist/{tree-WnKQzwbq.js.map → tree-CV11PURP.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-CSyJrh28.js +117 -0
- package/dist/typography-CSyJrh28.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-C_U0Xma4.js → ui-provider-CQCuCBcy.js} +3 -3
- package/dist/ui-provider-CQCuCBcy.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-CXyxmQBP.js → upload-C9SA0X-8.js} +11 -11
- package/dist/{upload-CXyxmQBP.js.map → upload-C9SA0X-8.js.map} +1 -1
- package/dist/{upload-queue-Boscubn9.js → upload-queue-DhQJiSRc.js} +9 -9
- package/dist/{upload-queue-Boscubn9.js.map → upload-queue-DhQJiSRc.js.map} +1 -1
- package/dist/{usage-card-BhO5eqkX.js → usage-card-DVTRDmGz.js} +134 -133
- package/dist/usage-card-DVTRDmGz.js.map +1 -0
- package/dist/{utils-BRhFDwuU.js → utils-CF3c95Io.js} +68 -5
- package/dist/utils-CF3c95Io.js.map +1 -0
- package/dist/value-inputs-C0o70p-U.js +980 -0
- package/dist/value-inputs-C0o70p-U.js.map +1 -0
- package/dist/{value-typography-BP8OG6h5.js → value-typography-ClupF0Gz.js} +2 -2
- package/dist/{value-typography-BP8OG6h5.js.map → value-typography-ClupF0Gz.js.map} +1 -1
- package/dist/workspace-9EFVXUyk.js +410 -0
- package/dist/workspace-9EFVXUyk.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +14 -129
- package/docs/consumer-skill/examples/app-layout.tsx +22 -12
- package/docs/consumer-skill/examples/authentication.tsx +77 -0
- package/docs/consumer-skill/examples/edit.tsx +30 -38
- package/docs/consumer-skill/examples/manifest.json +51 -1
- package/docs/consumer-skill/examples/rhf-bindings.tsx +86 -0
- package/docs/consumer-skill/examples/rhf-edit-page.tsx +141 -0
- package/docs/consumer-skill/examples/rhf-overlay-form.tsx +92 -0
- package/docs/consumer-skill/examples/rhf-transport.tsx +28 -0
- package/docs/consumer-skill/references/agents-md.md +17 -7
- package/docs/consumer-skill/references/authentication.md +42 -0
- package/docs/consumer-skill/references/component-contracts.json +319824 -0
- package/docs/consumer-skill/references/composition-mapping.md +92 -0
- package/docs/consumer-skill/references/composition.md +43 -19
- package/docs/consumer-skill/references/design-contract.md +32 -0
- package/docs/consumer-skill/references/discovery.md +84 -7
- package/docs/consumer-skill/references/installation.md +40 -36
- package/docs/consumer-skill/references/integration.md +6 -2
- package/docs/consumer-skill/references/public-api.json +1519 -65
- package/docs/consumer-skill/references/review.md +9 -4
- package/docs/consumer-skill/references/rhf-workflows.md +86 -0
- package/docs/consumer-skill/references/screen-archetypes.md +22 -0
- package/docs/consumer-skill/references/theming.md +8 -9
- package/docs/consumer-skill/references/tokens.json +12 -3
- package/docs/consumer-skill/references/workflows.md +2 -1
- package/docs/consumer-skill/scripts/composition-schema.d.mts +2 -0
- package/docs/consumer-skill/scripts/composition-schema.mjs +32 -0
- package/docs/consumer-skill/scripts/composition.mjs +198 -0
- package/docs/consumer-skill/scripts/discovery.mjs +42 -10
- package/docs/consumer-skill/scripts/inspect-component.mjs +11 -0
- package/docs/consumer-skill/scripts/inspect-tokens.mjs +11 -0
- package/docs/consumer-skill/scripts/inspection.mjs +138 -0
- package/docs/consumer-skill/scripts/map-composition.mjs +12 -0
- package/docs/consumer-skill/scripts/setup-skills.mjs +76 -0
- package/docs/consumer-skills/themelia-components/SKILL.md +30 -0
- package/docs/consumer-skills/themelia-composition/SKILL.md +35 -0
- package/docs/consumer-skills/themelia-forms/SKILL.md +12 -0
- package/docs/consumer-skills/themelia-foundation/SKILL.md +14 -0
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +35 -0
- package/package.json +4 -2
- package/templates/README.md +39 -0
- package/templates/admin-shell-template.tsx +382 -0
- package/templates/analytics-operations-template.tsx +376 -0
- package/templates/customers-template.tsx +509 -0
- package/templates/index.ts +29 -0
- package/templates/orders-template.tsx +1102 -0
- package/templates/products-template.tsx +834 -0
- package/templates/user-permissions-template.tsx +450 -0
- package/dist/action-menu-CllU52Mm.js +0 -280
- package/dist/action-menu-CllU52Mm.js.map +0 -1
- package/dist/affordance-geometry.generated-tF36bREk.js.map +0 -1
- package/dist/ai-artifact-DvTwDVyL.js.map +0 -1
- package/dist/app-shell-C4FhvCqF.js.map +0 -1
- package/dist/cards-BaBZR-AU.js.map +0 -1
- package/dist/checkbox-AWIhNhmo.js.map +0 -1
- package/dist/choice-inputs-CNHvARCJ.js.map +0 -1
- package/dist/comments-DD0DUPwJ.js.map +0 -1
- package/dist/containers-Mu1LMGV1.js +0 -103
- package/dist/containers-Mu1LMGV1.js.map +0 -1
- package/dist/data-display-DT_khPl_.js.map +0 -1
- package/dist/date-picker-B2K3ucWn.js.map +0 -1
- package/dist/date-pickers-Ds8gLaoP.js +0 -175
- package/dist/date-pickers-Ds8gLaoP.js.map +0 -1
- package/dist/form-field-CwH9y77i.js.map +0 -1
- package/dist/forms-B9G_xwzi.js.map +0 -1
- package/dist/forms-numeric-B_jraJaQ.js.map +0 -1
- package/dist/input-DQdEd0YD.js +0 -263
- package/dist/input-DQdEd0YD.js.map +0 -1
- package/dist/item-K5_ghvze.js +0 -275
- package/dist/item-K5_ghvze.js.map +0 -1
- package/dist/metadata-list-8N16ZMW_.js +0 -405
- package/dist/metadata-list-8N16ZMW_.js.map +0 -1
- package/dist/overflow-tab-bar-CWY7Nogn.js.map +0 -1
- package/dist/overlays-tMkF-VAN.js.map +0 -1
- package/dist/page-CL9YeH_V.js +0 -224
- package/dist/page-CL9YeH_V.js.map +0 -1
- package/dist/page-header-commands-DOb6WsfD.js +0 -126
- package/dist/page-header-commands-DOb6WsfD.js.map +0 -1
- package/dist/settings-ybnjVwbd.js +0 -171
- package/dist/settings-ybnjVwbd.js.map +0 -1
- package/dist/smart-card-DiC5aac3.js +0 -604
- package/dist/smart-card-DiC5aac3.js.map +0 -1
- package/dist/text-inputs-f9Ia-aCi.js.map +0 -1
- package/dist/text.styles-g4He6UIW.js.map +0 -1
- package/dist/typography-UTnveOEy.js +0 -117
- package/dist/typography-UTnveOEy.js.map +0 -1
- package/dist/ui-provider-C_U0Xma4.js.map +0 -1
- package/dist/usage-card-BhO5eqkX.js.map +0 -1
- package/dist/utils-BRhFDwuU.js.map +0 -1
- package/dist/value-inputs-TaX4OjNk.js +0 -963
- package/dist/value-inputs-TaX4OjNk.js.map +0 -1
- package/dist/workspace-B-OEm3Kf.js +0 -408
- package/dist/workspace-B-OEm3Kf.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-DaHESuiL.js","names":["React","_Fragment","Combobox","ComboboxPrimitive","ComboboxInput","ComboboxTrigger","ComboboxClear","ComboboxInputTrigger","ComboboxPopup","ComboboxItem","ComboboxSeparator","ComboboxChip","InputTrigger","Clear","Chip","Popup","Input","Trigger","Item","Separator","useTypographyConfig","useThemePortalContainer","cn","affordanceGeometry","anchoredPositionMethod","motionRecipes","surfaceDividerRecipes","surfaceInsetClasses","collectionRowClasses","popoverRecipes","collectionRecipes","CollectionLabel","modalBackdropRecipe","fieldStateRecipes","fieldAffordanceRecipes","selectToggleRecipes","FieldClearGlyph","editableTextSizeClasses","React$1","Fragment$1","ComboboxDismissLabel","ComboboxDismissElement","label","boundary","host","sibling","edge","element","useRender","elementProps","anchor","Combobox$1","props","dismissLabel","Combobox","ComboboxNativeInput","render","state","ComboboxInput$1","className","ComboboxTrigger$1","children","ChevronDownIcon","ComboboxValue","placeholder","ComboboxClear$1","inputSizeClasses","ComboboxInputTrigger$1","size","showClear","error","clearLabel","toggleLabel","ComboboxPortal","resolvedContainer","container","ComboboxPositioner","ComboboxPopup$1","ComboboxList","itemIndicatorSizeClasses","ComboboxItem$1","CheckIcon","ComboboxItemIndicator","ComboboxEmpty","ComboboxStatus","ComboboxGroup","ComboboxGroupLabel","ComboboxCollection","ComboboxSeparator$1","chipsSizeClasses","ComboboxChips","ComboboxChip$1","removeLabel","ComboboxChipsInput","ComboboxBackdrop","ComboboxArrow","useComboboxFilter","defaultComboboxControlStrings","ComboboxInputTrigger","stringsProp","strings","useStrings","createElement","ComboboxClear","ComboboxChip","ComboboxPopup","ComboboxInput","ComboboxTrigger","densityBySize","ComboboxItem","content","density","textSizes","defaultTextSize","ComboboxSeparator"],"sources":["../src/components/ui/combobox-dismiss.tsx","../src/components/ui/combobox.tsx","../src/components/base/combobox/combobox.strings.ts","../src/components/base/combobox/index.ts"],"sourcesContent":["import * as React from 'react';\nimport { useRender, type HTMLProps } from '@base-ui/react/use-render';\n\nexport const ComboboxDismissLabel = React.createContext('Dismiss');\n\n/**\n * Base UI 1.9 owns both virtual-cursor dismissal buttons but hardcodes their\n * names. An inert template marks the public render boundary, even when a custom\n * component frames its native field. Label only the adjacent clipped button;\n * retain upstream handlers, refs, modality and focus semantics. Refresh on each\n * primitive commit so changing modality labels newly mounted controls too.\n */\nexport function ComboboxDismissElement({ elementProps, render, edge, defaultTagName }: {\n elementProps: HTMLProps;\n render?: useRender.RenderProp;\n edge: 'before' | 'after';\n defaultTagName: 'input' | 'div';\n}) {\n const label = React.useContext(ComboboxDismissLabel);\n const boundary = React.useRef<HTMLTemplateElement>(null);\n React.useLayoutEffect(() => {\n const host = boundary.current;\n const sibling = edge === 'before' ? host?.previousElementSibling : host?.nextElementSibling;\n if (sibling?.matches('span[role=\"button\"][aria-label]') && (sibling as HTMLElement).style.clipPath === 'inset(50%)' && sibling.getAttribute('aria-label') !== label) {\n sibling.setAttribute('aria-label', label);\n }\n });\n const element = useRender({ defaultTagName, render, props: { ...elementProps } });\n const anchor = <template ref={boundary} data-combobox-dismiss-edge={edge} />;\n return edge === 'before' ? <>{anchor}{element}</> : <>{element}{anchor}</>;\n}\n","import { anchoredPositionMethod } from '../../lib/anchored-positioning';\nimport { fieldStateRecipes } from '../../lib/field-state-recipes';\nimport { FieldClearGlyph, fieldAffordanceRecipes, selectToggleRecipes } from '../../lib/field-affordance-recipes';\nimport { editableTextSizeClasses } from '../../lib/editable-text-recipe';\nimport { affordanceGeometry } from '../../lib/affordance-geometry.generated';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { surfaceDividerRecipes } from '../../lib/surface-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\nimport { useThemePortalContainer } from '../../lib/theme-scope';\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { ComboboxDismissElement, ComboboxDismissLabel } from './combobox-dismiss';\nimport { cn } from '../../lib/utils';\n\nfunction Combobox<Value, Multiple extends boolean | undefined = false, Item = Value>({\n dismissLabel = 'Dismiss',\n ...props\n}: ComboboxPrimitive.Root.Props<Value, Multiple, Item> & {\n /** Accessible name of both screen-reader popup dismissal controls. */\n dismissLabel?: string | undefined;\n}) {\n return <ComboboxDismissLabel.Provider value={dismissLabel}><ComboboxPrimitive.Root {...props} /></ComboboxDismissLabel.Provider>;\n}\n\n/** Private primitive input; public and feature-owned frames share dismissal. */\nfunction ComboboxNativeInput({ render, ...props }: ComboboxPrimitive.Input.Props) {\n return <ComboboxPrimitive.Input {...props} render={(elementProps, state) => <ComboboxDismissElement elementProps={elementProps} edge=\"before\" defaultTagName=\"input\" render={typeof render === 'function' ? props => render(props, state) : render} />} />;\n}\n\nfunction ComboboxInput({\n\tclassName,\n\trender,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t<ComboboxNativeInput\n\t\t\tdata-slot=\"combobox-input\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-sans text-foreground',\n\t\t\t\t'box-border border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-control w-full min-w-0 rounded-inner border bg-background px-control shadow-none transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\taffordanceGeometry.controlTextMinHeight,\n\t\t\t\taffordanceGeometry.controlBlockPadding.md,\n\t\t\t\teditableTextSizeClasses.md,\n\t\t\t\tfieldStateRecipes.focus,\n\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trender={render}\n\t\t/>\n\t);\n}\n\nfunction ComboboxTrigger({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Trigger.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Trigger\n\t\t\tdata-slot=\"combobox-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-sans text-foreground',\n\t\t\t\t'box-border border-input file:text-foreground placeholder:text-muted-foreground flex h-control w-full items-center justify-between rounded-inner border bg-background px-control shadow-none transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t'text-sm',\n\t\t\t\taffordanceGeometry.controlTextMinHeight,\n\t\t\t\taffordanceGeometry.controlBlockPadding.md,\n\t\t\t\tfieldStateRecipes.focus,\n\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t'[&>span]:line-clamp-1',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ComboboxPrimitive.Icon className=\"flex\">\n\t\t\t\t<ChevronDownIcon className={cn(selectToggleRecipes.icon.md, 'text-muted-foreground')} />\n\t\t\t</ComboboxPrimitive.Icon>\n\t\t</ComboboxPrimitive.Trigger>\n\t);\n}\n\nfunction ComboboxValue({\n\tplaceholder,\n\t...props\n}: ComboboxPrimitive.Value.Props & { placeholder?: React.ReactNode }) {\n\treturn (\n\t\t<ComboboxPrimitive.Value\n\t\t\tdata-slot=\"combobox-value\"\n\t\t\tplaceholder={\n\t\t\t\t!!placeholder && <span className=\"text-muted-foreground\">{placeholder}</span>\n\t\t\t}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ComboboxClear({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Clear.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Clear\n\t\t\tdata-slot=\"combobox-clear\"\n\t\t\tclassName={cn(\n\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\tfieldAffordanceRecipes.clear,\n\t\t\t\tfieldAffordanceRecipes.centered,\n\t\t\t\t'end-control-icon',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t\t<FieldClearGlyph aria-hidden=\"true\" className={fieldAffordanceRecipes.icon} />\n\t\t</ComboboxPrimitive.Clear>\n\t);\n}\n\nexport type ComboboxSize = 'sm' | 'md' | 'lg';\n\nconst inputSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'h-control-sm ps-control-sm',\n\tmd: 'h-control ps-control',\n\tlg: 'h-control-lg ps-control',\n};\n\n\n// Toggle-only text clearance, track offset and chevron scale come from the\n// shared select-toggle recipe, so this input, the Select trigger and the\n// feature Combobox centre their chevrons in the same place.\n\ntype ComboboxInputTriggerProps = Omit<ComboboxPrimitive.Input.Props, 'size'> & {\n\tshowClear?: boolean;\n\tclearLabel?: string;\n\ttoggleLabel?: string;\n\tsize?: ComboboxSize;\n\terror?: boolean;\n};\n\nfunction ComboboxInputTrigger({\n\tclassName,\n\trender,\n\tshowClear = false,\n\tclearLabel,\n\ttoggleLabel,\n\tsize = 'md',\n\terror,\n\t...props\n}: ComboboxInputTriggerProps) {\n\treturn (\n\t\t<div className=\"relative h-fit\">\n\t\t\t<ComboboxNativeInput\n\t\t\t\tdata-slot=\"combobox-input\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'font-sans text-foreground',\n\t\t\t\t\t'box-border border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-inner border bg-background shadow-none transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t\tfieldStateRecipes.focus,\n\t\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t\tinputSizeClasses[size],\n\t\t\t\t\taffordanceGeometry.controlTextMinHeight,\n\t\t\t\t\taffordanceGeometry.controlBlockPadding[size],\n\t\t\t\t\teditableTextSizeClasses[size],\n\t\t\t\t\tshowClear ? selectToggleRecipes.clearPadding[size] : selectToggleRecipes.padding[size],\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\taria-invalid={error || undefined}\n\t\t\t\t{...props}\n\t\t\t\trender={render}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute top-1/2 -translate-y-1/2 flex items-center gap-space-xs text-muted-foreground',\n\t\t\t\t\tselectToggleRecipes.track[size]\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!showClear && (\n <ComboboxPrimitive.Clear\n\t\t\t\t\t\taria-label={clearLabel}\n\t\t\t\t\t\tdata-slot=\"combobox-clear\"\n\t\t\t\t\t\tclassName={cn(fieldAffordanceRecipes.target,fieldAffordanceRecipes.focus,fieldAffordanceRecipes.clear)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FieldClearGlyph aria-hidden=\"true\" className={fieldAffordanceRecipes.icon} />\n\t\t\t\t\t</ComboboxPrimitive.Clear>\n )}\n\t\t\t\t<ComboboxPrimitive.Trigger aria-label={toggleLabel} className={cn(fieldAffordanceRecipes.target,fieldAffordanceRecipes.focus,fieldAffordanceRecipes.toggle)}>\n\t\t\t\t\t<ChevronDownIcon aria-hidden=\"true\" className={cn('shrink-0', selectToggleRecipes.icon[size])} />\n\t\t\t\t</ComboboxPrimitive.Trigger>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n// Portal\nfunction ComboboxPortal({ container, ...props }: ComboboxPrimitive.Portal.Props) {\n\tconst resolvedContainer = useThemePortalContainer(container);\n\treturn <ComboboxPrimitive.Portal container={resolvedContainer} {...props} />;\n}\n\n// Positioner\nfunction ComboboxPositioner({\n\tclassName,\n\tpositionMethod = anchoredPositionMethod,\n\tsideOffset = 4,\n\t...props\n}: ComboboxPrimitive.Positioner.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Positioner\n\t\t\tpositionMethod={positionMethod}\n\t\t\tdata-slot=\"combobox-positioner\"\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn('z-50 outline-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Popup (content)\nfunction ComboboxPopup({\n\tclassName,\n\trender,\n\t...props\n}: ComboboxPrimitive.Popup.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Popup\n\t\t\tdata-slot=\"combobox-popup\"\n\t\t\tclassName={cn(\n\t\t\t\t'w-[var(--anchor-width)] min-w-[8rem] max-w-[var(--available-width)] max-h-[min(var(--available-height),24rem)]',\n\t\t\t\t'overflow-hidden rounded-radius bg-popover text-popover-foreground shadow-md',\n\t\t\t\tsurfaceDividerRecipes.anchored.shell,\n\t\t\t\t'origin-[var(--transform-origin)]',\n\t\t\t\tmotionRecipes.popup,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trender={(elementProps, state) => <ComboboxDismissElement elementProps={elementProps} edge=\"after\" defaultTagName=\"div\" render={typeof render === 'function' ? props => render(props, state) : render} />}\n\t\t/>\n\t);\n}\n\n// List\nfunction ComboboxList({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.List.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.List\n\t\t\tdata-slot=\"combobox-list\"\n\t\t\tclassName={cn(\n\t\t\t\t'max-h-[min(24rem,var(--available-height))] overflow-y-auto overscroll-contain p-surface-xs',\n\t\t\t\t'outline-none empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Item\n//\n// Layout: `[content][indicator]` with the selection check pinned to the\n// right (`justify-between`). Consumers render leading icons naturally inside\n// `renderItem` — the `gap` between icon and label is set by the consumer.\nconst itemIndicatorSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'size-icon-sm',\n\tmd: 'size-icon',\n\tlg: 'size-icon-lg',\n};\n\nfunction ComboboxItem({\n\tclassName,\n\tchildren,\n\tsize = 'md',\n\t...props\n}: ComboboxPrimitive.Item.Props & { size?: ComboboxSize }) {\n\treturn (\n\t\t<ComboboxPrimitive.Item\n\t\t\tdata-slot=\"combobox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full cursor-default select-none items-center justify-between outline-none',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"flex min-w-0 flex-1 items-center gap-space-sm truncate\">\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t<ComboboxPrimitive.ItemIndicator\n\t\t\t\tclassName={cn(\n\t\t\t\t\t// The selection check uses the row's own ink, as Select options do.\n\t\t\t\t\t'flex shrink-0 items-center justify-center',\n\t\t\t\t\titemIndicatorSizeClasses[size]\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<CheckIcon className={itemIndicatorSizeClasses[size]} />\n\t\t\t</ComboboxPrimitive.ItemIndicator>\n\t\t</ComboboxPrimitive.Item>\n\t);\n}\n\n// Item Indicator (standalone)\nfunction ComboboxItemIndicator({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.ItemIndicator.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.ItemIndicator\n\t\t\tdata-slot=\"combobox-item-indicator\"\n\t\t\tclassName={cn(className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children ?? <CheckIcon className=\"size-icon\" />}\n\t\t</ComboboxPrimitive.ItemIndicator>\n\t);\n}\n\n// Empty\nfunction ComboboxEmpty({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Empty.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Empty\n\t\t\tdata-slot=\"combobox-empty\"\n\t\t\tclassName={cn(\n\t\t\t\t'px-row-x py-space-xl text-center text-sm text-muted-foreground empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</ComboboxPrimitive.Empty>\n\t);\n}\n\n// Status (for async loading states)\nfunction ComboboxStatus({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Status.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Status\n\t\t\tdata-slot=\"combobox-status\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-space-sm px-row-x py-row-y text-sm text-muted-foreground empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Group\nfunction ComboboxGroup({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Group.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Group\n\t\t\tdata-slot=\"combobox-group\"\n\t\t\tclassName={cn('overflow-hidden p-0', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Group Label\nfunction ComboboxGroupLabel({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.GroupLabel\n\t\t\tdata-slot=\"combobox-group-label\"\n\t\t\tclassName={cn('px-row-x py-row-y-sm text-xs font-medium text-muted-foreground', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Collection (for rendering items)\nconst ComboboxCollection = ComboboxPrimitive.Collection;\n\n// Separator\nfunction ComboboxSeparator({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Separator.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Separator\n\t\t\tdata-slot=\"combobox-separator\"\n\t\t\tclassName={cn('my-space-xs h-px', surfaceDividerRecipes.anchored.separator, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Chips container (for multiple selection)\nconst chipsSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'min-h-control-sm gap-space-xs px-control-sm py-space-xs text-sm',\n\tmd: 'min-h-control gap-space-xs px-control py-space-xs text-sm',\n\tlg: 'min-h-control-lg gap-space-sm px-control py-space-xs text-sm',\n};\n\nfunction ComboboxChips({\n\tclassName,\n\tsize = 'md',\n\terror,\n\t...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> & {\n\tsize?: ComboboxSize;\n\terror?: boolean;\n}) {\n\treturn (\n\t\t<ComboboxPrimitive.Chips\n\t\t\tdata-slot=\"combobox-chips\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-sans text-foreground',\n\t\t\t\t'box-border flex flex-wrap items-center rounded-inner border border-input bg-background shadow-none transition-[color,box-shadow] outline-none',\n\t\t\t\t'has-[:focus-visible]:border-ring has-[:focus-visible]:ring-3 has-[:focus-visible]:ring-ring/50',\n\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t'aria-invalid:has-[:focus-visible]:border-destructive aria-invalid:has-[:focus-visible]:ring-destructive/30 dark:aria-invalid:has-[:focus-visible]:ring-destructive/50',\n\t\t\t\tchipsSizeClasses[size],\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\taria-invalid={error || undefined}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Chip\nfunction ComboboxChip({\n\tclassName,\n\tchildren,\n\tremoveLabel,\n\t...props\n}: ComboboxPrimitive.Chip.Props & { removeLabel?: string }) {\n\treturn (\n\t\t<ComboboxPrimitive.Chip\n\t\t\tdata-slot=\"combobox-chip\"\n\t\t\tclassName={cn(\n\t\t\t\t'inline-flex items-center gap-space-xs rounded-inner bg-secondary px-control-xs py-space-xs text-xs font-medium text-secondary-foreground',\n\t\t\t\t'data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground',\n\t\t\t\t'focus-within:bg-primary focus-within:text-primary-foreground',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ComboboxPrimitive.ChipRemove aria-label={removeLabel} className={cn(fieldAffordanceRecipes.inline, fieldAffordanceRecipes.focus, 'text-inherit opacity-70 hover:opacity-100')}>\n\t\t\t\t<FieldClearGlyph aria-hidden=\"true\" className={fieldAffordanceRecipes.icon} />\n\t\t\t</ComboboxPrimitive.ChipRemove>\n\t\t</ComboboxPrimitive.Chip>\n\t);\n}\n\n// Chips Input\nfunction ComboboxChipsInput({\n\tclassName,\n\trender,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t<ComboboxNativeInput\n\t\t\tdata-slot=\"combobox-chips-input\"\n\t\t\tclassName={cn(\n\t\t\t\t'box-border min-h-lh min-w-[80px] flex-1 border-0 bg-transparent p-0 font-sans text-foreground outline-none placeholder:text-muted-foreground',\n\t\t\t\teditableTextSizeClasses.md,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trender={render}\n\t\t/>\n\t);\n}\n\n// Backdrop (for modal)\nfunction ComboboxBackdrop({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Backdrop.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Backdrop\n\t\t\tdata-slot=\"combobox-backdrop\"\n\t\t\tclassName={cn(modalBackdropRecipe, \n\t\t\t\tmotionRecipes.backdrop,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Arrow\nfunction ComboboxArrow({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Arrow.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Arrow\n\t\t\tdata-slot=\"combobox-arrow\"\n\t\t\tclassName={cn('fill-popover', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// useFilter hook re-export\nconst useComboboxFilter = ComboboxPrimitive.useFilter;\n\nexport {\n\tCombobox,\n\tComboboxNativeInput,\n\tComboboxInput,\n\tComboboxInputTrigger,\n\tComboboxTrigger,\n\tComboboxValue,\n\tComboboxClear,\n\tComboboxPortal,\n\tComboboxPositioner,\n\tComboboxPopup,\n\tComboboxList,\n\tComboboxItem,\n\tComboboxItemIndicator,\n\tComboboxEmpty,\n\tComboboxStatus,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxCollection,\n\tComboboxSeparator,\n\tComboboxChips,\n\tComboboxChip,\n\tComboboxChipsInput,\n\tComboboxBackdrop,\n\tComboboxArrow,\n\tuseComboboxFilter,\n};\n","/** Accessible labels owned by the base combobox's generated controls. */\nexport interface ComboboxControlStrings {\n\tclear: string;\n\ttoggle: string;\n\tremove: string;\n}\n\nexport const defaultComboboxControlStrings: ComboboxControlStrings = {\n\tclear: 'Clear selection',\n\ttoggle: 'Open options',\n\tremove: 'Remove selection',\n};\n","import { CollectionLabel } from '../popover/collection-content';\n/**\n * Base wrapper for `ui/combobox`.\n *\n * This family is the sole importer of `@/components/ui/combobox`: it re-exports\n * the Base UI combobox anatomy with shared recipes and accessible control labels\n * so every other layer composes the parts without reaching into `ui/`. The searchable recipe built on top of this\n * anatomy — `Combobox`, `MultiCombobox`, `AsyncResourceCombobox`, and the\n * headless hooks — lives in `features/combobox`.\n *\n * The compound root is exported as `ComboboxRoot` so the canonical `Combobox`\n * name stays with the opinionated feature component.\n */\nexport {\n\tCombobox as ComboboxRoot,\n\tComboboxValue,\n\tComboboxPortal,\n\tComboboxPositioner,\n\tComboboxList,\n\tComboboxItemIndicator,\n\tComboboxEmpty,\n\tComboboxStatus,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxCollection,\n\tComboboxChips,\n\tComboboxChipsInput,\n\tComboboxBackdrop,\n\tComboboxArrow,\n\tuseComboboxFilter,\n} from '../../ui/combobox';\n\n\nimport { createElement, type ComponentProps } from 'react';\nimport { ComboboxItem as Item, ComboboxPopup as Popup, ComboboxInput as Input, ComboboxInputTrigger as InputTrigger, ComboboxClear as Clear, ComboboxChip as Chip, ComboboxTrigger as Trigger, ComboboxSeparator as Separator } from '../../ui/combobox';\nimport { cn } from '../../../lib/utils';\nimport { collectionRecipes, collectionRowClasses, popoverRecipes, surfaceInsetClasses, type CollectionDensity } from '../popover/popover.recipes';\nimport { useTypographyConfig } from '../../../lib/ui-provider';\nimport { textSizes } from '../../typography/text.styles';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { defaultComboboxControlStrings, type ComboboxControlStrings } from './combobox.strings';\n\nexport { defaultComboboxControlStrings, type ComboboxControlStrings } from './combobox.strings';\n\nexport type ComboboxInputTriggerProps = Omit<ComponentProps<typeof InputTrigger>, 'clearLabel' | 'toggleLabel'> & {\n /** Accessible labels for the generated clear and toggle buttons. */\n strings?: StringsProp<Pick<ComboboxControlStrings, 'clear' | 'toggle'>>;\n};\n\nexport function ComboboxInputTrigger({ strings: stringsProp, ...props }: ComboboxInputTriggerProps) {\n const strings = useStrings(defaultComboboxControlStrings, stringsProp);\n return createElement(InputTrigger, { ...props, clearLabel: strings.clear, toggleLabel: strings.toggle });\n}\n\nexport type ComboboxClearProps = ComponentProps<typeof Clear> & {\n /** Accessible label; an explicit aria-label takes precedence. */\n strings?: StringsProp<Pick<ComboboxControlStrings, 'clear'>>;\n};\n\nexport function ComboboxClear({ strings: stringsProp, ...props }: ComboboxClearProps) {\n const strings = useStrings(defaultComboboxControlStrings, stringsProp);\n return createElement(Clear, { 'aria-label': strings.clear, ...props });\n}\n\nexport type ComboboxChipProps = Omit<ComponentProps<typeof Chip>, 'removeLabel'> & {\n /** Accessible label for the generated removal button. */\n strings?: StringsProp<Pick<ComboboxControlStrings, 'remove'>>;\n};\n\nexport function ComboboxChip({ strings: stringsProp, ...props }: ComboboxChipProps) {\n const strings = useStrings(defaultComboboxControlStrings, stringsProp);\n return createElement(Chip, { ...props, removeLabel: strings.remove });\n}\n\nexport function ComboboxPopup({ className, ...props }: ComponentProps<typeof Popup>) {\n // The list owns the collection inset so mixed search/status/footer regions stay flush.\n return createElement(Popup, { ...props, className: cn(popoverRecipes.surface, surfaceInsetClasses.flush, className) });\n}\nexport function ComboboxInput({ className, ...props }: ComponentProps<typeof Input>) {\n return createElement(Input, { ...props, className: cn('rounded-inner', className) });\n}\nexport function ComboboxTrigger({ className, ...props }: ComponentProps<typeof Trigger>) {\n return createElement(Trigger, { ...props, className: cn('rounded-inner', className) });\n}\n\nconst densityBySize = { sm: 'compact', md: 'default', lg: 'comfortable' } as const;\n\nexport function ComboboxItem({ className, size = 'md', density = densityBySize[size], children, ...props }: ComponentProps<typeof Item> & {\n /** Vertical option rhythm. Defaults to the owning control size's rhythm. */\n density?: CollectionDensity;\n}) {\n const { defaultTextSize } = useTypographyConfig();\n const content = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint' ? createElement(CollectionLabel, { children }) : children;\n return createElement(Item, { ...props, children: content, size, className: cn(collectionRowClasses(density), collectionRecipes.highlighted, collectionRecipes.disabled, textSizes[defaultTextSize ?? 'sm'], className) });\n}\n\n/** Shared collection divider, preserving Base UI separator semantics. */\nexport function ComboboxSeparator({ className, ...props }: ComponentProps<typeof Separator>) {\n return createElement(Separator, { ...props, className: cn(popoverRecipes.separator, className) });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox-hbhSS18O.js","names":["React","_Fragment","Combobox","ComboboxPrimitive","ComboboxInput","ComboboxTrigger","ComboboxClear","ComboboxInputTrigger","ComboboxPopup","ComboboxItem","ComboboxSeparator","ComboboxChip","InputTrigger","Clear","Chip","Popup","Input","Trigger","Item","Separator","useTypographyConfig","useThemePortalContainer","cn","affordanceGeometry","textSizes","anchoredPositionMethod","motionRecipes","surfaceDividerRecipes","surfaceInsetClasses","collectionRowClasses","popoverRecipes","collectionRecipes","CollectionLabel","modalBackdropRecipe","fieldStateRecipes","fieldAffordanceRecipes","selectToggleRecipes","FieldClearGlyph","editableTextSizeClasses","React$1","Fragment$1","ComboboxDismissLabel","ComboboxDismissElement","label","boundary","host","sibling","edge","element","useRender","elementProps","anchor","Combobox$1","props","dismissLabel","Combobox","ComboboxNativeInput","render","state","ComboboxInput$1","className","ComboboxTrigger$1","children","ChevronDownIcon","ComboboxValue","placeholder","ComboboxClear$1","inputSizeClasses","ComboboxInputTrigger$1","size","showClear","error","clearLabel","toggleLabel","ComboboxPortal","resolvedContainer","container","ComboboxPositioner","ComboboxPopup$1","ComboboxList","itemIndicatorSizeClasses","ComboboxItem$1","CheckIcon","ComboboxItemIndicator","ComboboxEmpty","ComboboxStatus","ComboboxGroup","ComboboxGroupLabel","ComboboxCollection","ComboboxSeparator$1","chipsSizeClasses","ComboboxChips","ComboboxChip$1","removeLabel","ComboboxChipsInput","ComboboxBackdrop","ComboboxArrow","useComboboxFilter","defaultComboboxControlStrings","ComboboxInputTrigger","stringsProp","strings","useStrings","createElement","ComboboxClear","ComboboxChip","ComboboxPopup","ComboboxInput","ComboboxTrigger","densityBySize","ComboboxItem","content","density","defaultTextSize","ComboboxSeparator"],"sources":["../src/components/ui/combobox-dismiss.tsx","../src/components/ui/combobox.tsx","../src/components/base/combobox/combobox.strings.ts","../src/components/base/combobox/index.ts"],"sourcesContent":["import * as React from 'react';\nimport { useRender, type HTMLProps } from '@base-ui/react/use-render';\n\nexport const ComboboxDismissLabel = React.createContext('Dismiss');\n\n/**\n * Base UI 1.9 owns both virtual-cursor dismissal buttons but hardcodes their\n * names. An inert template marks the public render boundary, even when a custom\n * component frames its native field. Label only the adjacent clipped button;\n * retain upstream handlers, refs, modality and focus semantics. Refresh on each\n * primitive commit so changing modality labels newly mounted controls too.\n */\nexport function ComboboxDismissElement({ elementProps, render, edge, defaultTagName }: {\n elementProps: HTMLProps;\n render?: useRender.RenderProp;\n edge: 'before' | 'after';\n defaultTagName: 'input' | 'div';\n}) {\n const label = React.useContext(ComboboxDismissLabel);\n const boundary = React.useRef<HTMLTemplateElement>(null);\n React.useLayoutEffect(() => {\n const host = boundary.current;\n const sibling = edge === 'before' ? host?.previousElementSibling : host?.nextElementSibling;\n if (sibling?.matches('span[role=\"button\"][aria-label]') && (sibling as HTMLElement).style.clipPath === 'inset(50%)' && sibling.getAttribute('aria-label') !== label) {\n sibling.setAttribute('aria-label', label);\n }\n });\n const element = useRender({ defaultTagName, render, props: { ...elementProps } });\n const anchor = <template ref={boundary} data-combobox-dismiss-edge={edge} />;\n return edge === 'before' ? <>{anchor}{element}</> : <>{element}{anchor}</>;\n}\n","import { anchoredPositionMethod } from '../../lib/anchored-positioning';\nimport { fieldStateRecipes } from '../../lib/field-state-recipes';\nimport { FieldClearGlyph, fieldAffordanceRecipes, selectToggleRecipes } from '../../lib/field-affordance-recipes';\nimport { editableTextSizeClasses } from '../../lib/editable-text-recipe';\nimport { affordanceGeometry } from '../../lib/affordance-geometry.generated';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { surfaceDividerRecipes } from '../../lib/surface-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\nimport { useThemePortalContainer } from '../../lib/theme-scope';\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { ComboboxDismissElement, ComboboxDismissLabel } from './combobox-dismiss';\nimport { cn } from '../../lib/utils';\n\nfunction Combobox<Value, Multiple extends boolean | undefined = false, Item = Value>({\n dismissLabel = 'Dismiss',\n ...props\n}: ComboboxPrimitive.Root.Props<Value, Multiple, Item> & {\n /** Accessible name of both screen-reader popup dismissal controls. */\n dismissLabel?: string | undefined;\n}) {\n return <ComboboxDismissLabel.Provider value={dismissLabel}><ComboboxPrimitive.Root {...props} /></ComboboxDismissLabel.Provider>;\n}\n\n/** Private primitive input; public and feature-owned frames share dismissal. */\nfunction ComboboxNativeInput({ render, ...props }: ComboboxPrimitive.Input.Props) {\n return <ComboboxPrimitive.Input {...props} render={(elementProps, state) => <ComboboxDismissElement elementProps={elementProps} edge=\"before\" defaultTagName=\"input\" render={typeof render === 'function' ? props => render(props, state) : render} />} />;\n}\n\nfunction ComboboxInput({\n\tclassName,\n\trender,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t<ComboboxNativeInput\n\t\t\tdata-slot=\"combobox-input\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-sans text-foreground',\n\t\t\t\t'box-border border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-control w-full min-w-0 rounded-inner border bg-background px-control shadow-none transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\taffordanceGeometry.controlTextMinHeight,\n\t\t\t\taffordanceGeometry.controlBlockPadding.md,\n\t\t\t\teditableTextSizeClasses.md,\n\t\t\t\tfieldStateRecipes.focus,\n\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trender={render}\n\t\t/>\n\t);\n}\n\nfunction ComboboxTrigger({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Trigger.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Trigger\n\t\t\tdata-slot=\"combobox-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-sans text-foreground',\n\t\t\t\t'box-border border-input file:text-foreground placeholder:text-muted-foreground flex h-control w-full items-center justify-between rounded-inner border bg-background px-control shadow-none transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t'text-sm',\n\t\t\t\taffordanceGeometry.controlTextMinHeight,\n\t\t\t\taffordanceGeometry.controlBlockPadding.md,\n\t\t\t\tfieldStateRecipes.focus,\n\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t'[&>span]:line-clamp-1',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ComboboxPrimitive.Icon className=\"flex\">\n\t\t\t\t<ChevronDownIcon className={cn(selectToggleRecipes.icon.md, 'text-muted-foreground')} />\n\t\t\t</ComboboxPrimitive.Icon>\n\t\t</ComboboxPrimitive.Trigger>\n\t);\n}\n\nfunction ComboboxValue({\n\tplaceholder,\n\t...props\n}: ComboboxPrimitive.Value.Props & { placeholder?: React.ReactNode }) {\n\treturn (\n\t\t<ComboboxPrimitive.Value\n\t\t\tdata-slot=\"combobox-value\"\n\t\t\tplaceholder={\n\t\t\t\t!!placeholder && <span className=\"text-muted-foreground\">{placeholder}</span>\n\t\t\t}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ComboboxClear({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Clear.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Clear\n\t\t\tdata-slot=\"combobox-clear\"\n\t\t\tclassName={cn(\n\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\tfieldAffordanceRecipes.clear,\n\t\t\t\tfieldAffordanceRecipes.centered,\n\t\t\t\t'end-control-icon',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t\t<FieldClearGlyph aria-hidden=\"true\" className={fieldAffordanceRecipes.icon} />\n\t\t</ComboboxPrimitive.Clear>\n\t);\n}\n\nexport type ComboboxSize = 'sm' | 'md' | 'lg';\n\nconst inputSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'h-control-sm ps-control-sm',\n\tmd: 'h-control ps-control',\n\tlg: 'h-control-lg ps-control',\n};\n\n\n// Toggle-only text clearance, track offset and chevron scale come from the\n// shared select-toggle recipe, so this input, the Select trigger and the\n// feature Combobox centre their chevrons in the same place.\n\ntype ComboboxInputTriggerProps = Omit<ComboboxPrimitive.Input.Props, 'size'> & {\n\tshowClear?: boolean;\n\tclearLabel?: string;\n\ttoggleLabel?: string;\n\tsize?: ComboboxSize;\n\terror?: boolean;\n};\n\nfunction ComboboxInputTrigger({\n\tclassName,\n\trender,\n\tshowClear = false,\n\tclearLabel,\n\ttoggleLabel,\n\tsize = 'md',\n\terror,\n\t...props\n}: ComboboxInputTriggerProps) {\n\treturn (\n\t\t<div className=\"relative h-fit\">\n\t\t\t<ComboboxNativeInput\n\t\t\t\tdata-slot=\"combobox-input\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'font-sans text-foreground',\n\t\t\t\t\t'box-border border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-inner border bg-background shadow-none transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t\tfieldStateRecipes.focus,\n\t\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t\tinputSizeClasses[size],\n\t\t\t\t\taffordanceGeometry.controlTextMinHeight,\n\t\t\t\t\taffordanceGeometry.controlBlockPadding[size],\n\t\t\t\t\teditableTextSizeClasses[size],\n\t\t\t\t\tshowClear ? selectToggleRecipes.clearPadding[size] : selectToggleRecipes.padding[size],\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\taria-invalid={error || undefined}\n\t\t\t\t{...props}\n\t\t\t\trender={render}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute top-1/2 -translate-y-1/2 flex items-center gap-space-xs text-muted-foreground',\n\t\t\t\t\tselectToggleRecipes.track[size]\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!showClear && (\n <ComboboxPrimitive.Clear\n\t\t\t\t\t\taria-label={clearLabel}\n\t\t\t\t\t\tdata-slot=\"combobox-clear\"\n\t\t\t\t\t\tclassName={cn(fieldAffordanceRecipes.target,fieldAffordanceRecipes.focus,fieldAffordanceRecipes.clear)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FieldClearGlyph aria-hidden=\"true\" className={fieldAffordanceRecipes.icon} />\n\t\t\t\t\t</ComboboxPrimitive.Clear>\n )}\n\t\t\t\t<ComboboxPrimitive.Trigger aria-label={toggleLabel} className={cn(fieldAffordanceRecipes.target,fieldAffordanceRecipes.focus,fieldAffordanceRecipes.toggle)}>\n\t\t\t\t\t<ChevronDownIcon aria-hidden=\"true\" className={cn('shrink-0', selectToggleRecipes.icon[size])} />\n\t\t\t\t</ComboboxPrimitive.Trigger>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n// Portal\nfunction ComboboxPortal({ container, ...props }: ComboboxPrimitive.Portal.Props) {\n\tconst resolvedContainer = useThemePortalContainer(container);\n\treturn <ComboboxPrimitive.Portal container={resolvedContainer} {...props} />;\n}\n\n// Positioner\nfunction ComboboxPositioner({\n\tclassName,\n\tpositionMethod = anchoredPositionMethod,\n\tsideOffset = 4,\n\t...props\n}: ComboboxPrimitive.Positioner.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Positioner\n\t\t\tpositionMethod={positionMethod}\n\t\t\tdata-slot=\"combobox-positioner\"\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn('z-50 outline-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Popup (content)\nfunction ComboboxPopup({\n\tclassName,\n\trender,\n\t...props\n}: ComboboxPrimitive.Popup.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Popup\n\t\t\tdata-slot=\"combobox-popup\"\n\t\t\tclassName={cn(\n\t\t\t\t'w-[var(--anchor-width)] min-w-[8rem] max-w-[var(--available-width)] max-h-[min(var(--available-height),24rem)]',\n\t\t\t\t'overflow-hidden rounded-radius bg-popover text-popover-foreground shadow-md',\n\t\t\t\tsurfaceDividerRecipes.anchored.shell,\n\t\t\t\t'origin-[var(--transform-origin)]',\n\t\t\t\tmotionRecipes.popup,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trender={(elementProps, state) => <ComboboxDismissElement elementProps={elementProps} edge=\"after\" defaultTagName=\"div\" render={typeof render === 'function' ? props => render(props, state) : render} />}\n\t\t/>\n\t);\n}\n\n// List\nfunction ComboboxList({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.List.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.List\n\t\t\tdata-slot=\"combobox-list\"\n\t\t\tclassName={cn(\n\t\t\t\t'max-h-[min(24rem,var(--available-height))] overflow-y-auto overscroll-contain p-surface-xs',\n\t\t\t\t'outline-none empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Item\n//\n// Layout: `[content][indicator]` with the selection check pinned to the\n// right (`justify-between`). Consumers render leading icons naturally inside\n// `renderItem` — the `gap` between icon and label is set by the consumer.\nconst itemIndicatorSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'size-icon-sm',\n\tmd: 'size-icon',\n\tlg: 'size-icon-lg',\n};\n\nfunction ComboboxItem({\n\tclassName,\n\tchildren,\n\tsize = 'md',\n\t...props\n}: ComboboxPrimitive.Item.Props & { size?: ComboboxSize }) {\n\treturn (\n\t\t<ComboboxPrimitive.Item\n\t\t\tdata-slot=\"combobox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full cursor-default select-none items-center justify-between outline-none',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"flex min-w-0 flex-1 items-center gap-space-sm truncate\">\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t<ComboboxPrimitive.ItemIndicator\n\t\t\t\tclassName={cn(\n\t\t\t\t\t// The selection check uses the row's own ink, as Select options do.\n\t\t\t\t\t'flex shrink-0 items-center justify-center',\n\t\t\t\t\titemIndicatorSizeClasses[size]\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<CheckIcon className={itemIndicatorSizeClasses[size]} />\n\t\t\t</ComboboxPrimitive.ItemIndicator>\n\t\t</ComboboxPrimitive.Item>\n\t);\n}\n\n// Item Indicator (standalone)\nfunction ComboboxItemIndicator({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.ItemIndicator.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.ItemIndicator\n\t\t\tdata-slot=\"combobox-item-indicator\"\n\t\t\tclassName={cn(className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children ?? <CheckIcon className=\"size-icon\" />}\n\t\t</ComboboxPrimitive.ItemIndicator>\n\t);\n}\n\n// Empty\nfunction ComboboxEmpty({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Empty.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Empty\n\t\t\tdata-slot=\"combobox-empty\"\n\t\t\tclassName={cn(\n\t\t\t\t'px-row-x py-space-xl text-center text-sm text-muted-foreground empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</ComboboxPrimitive.Empty>\n\t);\n}\n\n// Status (for async loading states)\nfunction ComboboxStatus({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Status.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Status\n\t\t\tdata-slot=\"combobox-status\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-space-sm px-row-x py-row-y text-sm text-muted-foreground empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Group\nfunction ComboboxGroup({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Group.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Group\n\t\t\tdata-slot=\"combobox-group\"\n\t\t\tclassName={cn('overflow-hidden p-0', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Group Label\nfunction ComboboxGroupLabel({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.GroupLabel\n\t\t\tdata-slot=\"combobox-group-label\"\n\t\t\tclassName={cn('px-row-x py-row-y-sm text-xs font-medium text-muted-foreground', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Collection (for rendering items)\nconst ComboboxCollection = ComboboxPrimitive.Collection;\n\n// Separator\nfunction ComboboxSeparator({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Separator.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Separator\n\t\t\tdata-slot=\"combobox-separator\"\n\t\t\tclassName={cn('my-space-xs h-px', surfaceDividerRecipes.anchored.separator, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Chips container (for multiple selection)\nconst chipsSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'min-h-control-sm gap-space-xs px-control-sm py-space-xs text-sm',\n\tmd: 'min-h-control gap-space-xs px-control py-space-xs text-sm',\n\tlg: 'min-h-control-lg gap-space-sm px-control py-space-xs text-sm',\n};\n\nfunction ComboboxChips({\n\tclassName,\n\tsize = 'md',\n\terror,\n\t...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> & {\n\tsize?: ComboboxSize;\n\terror?: boolean;\n}) {\n\treturn (\n\t\t<ComboboxPrimitive.Chips\n\t\t\tdata-slot=\"combobox-chips\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-sans text-foreground',\n\t\t\t\t'box-border flex flex-wrap items-center rounded-inner border border-input bg-background shadow-none transition-[color,box-shadow] outline-none',\n\t\t\t\t'has-[:focus-visible]:border-ring has-[:focus-visible]:ring-3 has-[:focus-visible]:ring-ring/50',\n\t\t\t\tfieldStateRecipes.invalid,\n\t\t\t\t'aria-invalid:has-[:focus-visible]:border-destructive aria-invalid:has-[:focus-visible]:ring-destructive/30 dark:aria-invalid:has-[:focus-visible]:ring-destructive/50',\n\t\t\t\tchipsSizeClasses[size],\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\taria-invalid={error || undefined}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Chip\nfunction ComboboxChip({\n\tclassName,\n\tchildren,\n\tremoveLabel,\n\t...props\n}: ComboboxPrimitive.Chip.Props & { removeLabel?: string }) {\n\treturn (\n\t\t<ComboboxPrimitive.Chip\n\t\t\tdata-slot=\"combobox-chip\"\n\t\t\tclassName={cn(\n\t\t\t\t'inline-flex items-center gap-space-xs rounded-inner bg-secondary px-control-xs py-space-xs text-xs font-medium text-secondary-foreground',\n\t\t\t\t'data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground',\n\t\t\t\t'focus-within:bg-primary focus-within:text-primary-foreground',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ComboboxPrimitive.ChipRemove aria-label={removeLabel} className={cn(fieldAffordanceRecipes.inline, fieldAffordanceRecipes.focus, 'text-inherit opacity-70 hover:opacity-100')}>\n\t\t\t\t<FieldClearGlyph aria-hidden=\"true\" className={fieldAffordanceRecipes.icon} />\n\t\t\t</ComboboxPrimitive.ChipRemove>\n\t\t</ComboboxPrimitive.Chip>\n\t);\n}\n\n// Chips Input\nfunction ComboboxChipsInput({\n\tclassName,\n\trender,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t<ComboboxNativeInput\n\t\t\tdata-slot=\"combobox-chips-input\"\n\t\t\tclassName={cn(\n\t\t\t\t'box-border min-h-lh min-w-[80px] flex-1 border-0 bg-transparent p-0 font-sans text-foreground outline-none placeholder:text-muted-foreground',\n\t\t\t\teditableTextSizeClasses.md,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trender={render}\n\t\t/>\n\t);\n}\n\n// Backdrop (for modal)\nfunction ComboboxBackdrop({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Backdrop.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Backdrop\n\t\t\tdata-slot=\"combobox-backdrop\"\n\t\t\tclassName={cn(modalBackdropRecipe, \n\t\t\t\tmotionRecipes.backdrop,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Arrow\nfunction ComboboxArrow({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Arrow.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Arrow\n\t\t\tdata-slot=\"combobox-arrow\"\n\t\t\tclassName={cn('fill-popover', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// useFilter hook re-export\nconst useComboboxFilter = ComboboxPrimitive.useFilter;\n\nexport {\n\tCombobox,\n\tComboboxNativeInput,\n\tComboboxInput,\n\tComboboxInputTrigger,\n\tComboboxTrigger,\n\tComboboxValue,\n\tComboboxClear,\n\tComboboxPortal,\n\tComboboxPositioner,\n\tComboboxPopup,\n\tComboboxList,\n\tComboboxItem,\n\tComboboxItemIndicator,\n\tComboboxEmpty,\n\tComboboxStatus,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxCollection,\n\tComboboxSeparator,\n\tComboboxChips,\n\tComboboxChip,\n\tComboboxChipsInput,\n\tComboboxBackdrop,\n\tComboboxArrow,\n\tuseComboboxFilter,\n};\n","/** Accessible labels owned by the base combobox's generated controls. */\nexport interface ComboboxControlStrings {\n\tclear: string;\n\ttoggle: string;\n\tremove: string;\n}\n\nexport const defaultComboboxControlStrings: ComboboxControlStrings = {\n\tclear: 'Clear selection',\n\ttoggle: 'Open options',\n\tremove: 'Remove selection',\n};\n","import { CollectionLabel } from '../popover/collection-content';\n/**\n * Base wrapper for `ui/combobox`.\n *\n * This family is the sole importer of `@/components/ui/combobox`: it re-exports\n * the Base UI combobox anatomy with shared recipes and accessible control labels\n * so every other layer composes the parts without reaching into `ui/`. The searchable recipe built on top of this\n * anatomy — `Combobox`, `MultiCombobox`, `AsyncResourceCombobox`, and the\n * headless hooks — lives in `features/combobox`.\n *\n * The compound root is exported as `ComboboxRoot` so the canonical `Combobox`\n * name stays with the opinionated feature component.\n */\nexport {\n\tCombobox as ComboboxRoot,\n\tComboboxValue,\n\tComboboxPortal,\n\tComboboxPositioner,\n\tComboboxList,\n\tComboboxItemIndicator,\n\tComboboxEmpty,\n\tComboboxStatus,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxCollection,\n\tComboboxChips,\n\tComboboxChipsInput,\n\tComboboxBackdrop,\n\tComboboxArrow,\n\tuseComboboxFilter,\n} from '../../ui/combobox';\n\n\nimport { createElement, type ComponentProps } from 'react';\nimport { ComboboxItem as Item, ComboboxPopup as Popup, ComboboxInput as Input, ComboboxInputTrigger as InputTrigger, ComboboxClear as Clear, ComboboxChip as Chip, ComboboxTrigger as Trigger, ComboboxSeparator as Separator } from '../../ui/combobox';\nimport { cn } from '../../../lib/utils';\nimport { collectionRecipes, collectionRowClasses, popoverRecipes, surfaceInsetClasses, type CollectionDensity } from '../popover/popover.recipes';\nimport { useTypographyConfig } from '../../../lib/ui-provider';\nimport { textSizes } from '../../typography/text.styles';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { defaultComboboxControlStrings, type ComboboxControlStrings } from './combobox.strings';\n\nexport { defaultComboboxControlStrings, type ComboboxControlStrings } from './combobox.strings';\n\nexport type ComboboxInputTriggerProps = Omit<ComponentProps<typeof InputTrigger>, 'clearLabel' | 'toggleLabel'> & {\n /** Accessible labels for the generated clear and toggle buttons. */\n strings?: StringsProp<Pick<ComboboxControlStrings, 'clear' | 'toggle'>>;\n};\n\nexport function ComboboxInputTrigger({ strings: stringsProp, ...props }: ComboboxInputTriggerProps) {\n const strings = useStrings(defaultComboboxControlStrings, stringsProp);\n return createElement(InputTrigger, { ...props, clearLabel: strings.clear, toggleLabel: strings.toggle });\n}\n\nexport type ComboboxClearProps = ComponentProps<typeof Clear> & {\n /** Accessible label; an explicit aria-label takes precedence. */\n strings?: StringsProp<Pick<ComboboxControlStrings, 'clear'>>;\n};\n\nexport function ComboboxClear({ strings: stringsProp, ...props }: ComboboxClearProps) {\n const strings = useStrings(defaultComboboxControlStrings, stringsProp);\n return createElement(Clear, { 'aria-label': strings.clear, ...props });\n}\n\nexport type ComboboxChipProps = Omit<ComponentProps<typeof Chip>, 'removeLabel'> & {\n /** Accessible label for the generated removal button. */\n strings?: StringsProp<Pick<ComboboxControlStrings, 'remove'>>;\n};\n\nexport function ComboboxChip({ strings: stringsProp, ...props }: ComboboxChipProps) {\n const strings = useStrings(defaultComboboxControlStrings, stringsProp);\n return createElement(Chip, { ...props, removeLabel: strings.remove });\n}\n\nexport function ComboboxPopup({ className, ...props }: ComponentProps<typeof Popup>) {\n // The list owns the collection inset so mixed search/status/footer regions stay flush.\n return createElement(Popup, { ...props, className: cn(popoverRecipes.surface, surfaceInsetClasses.flush, className) });\n}\nexport function ComboboxInput({ className, ...props }: ComponentProps<typeof Input>) {\n return createElement(Input, { ...props, className: cn('rounded-inner', className) });\n}\nexport function ComboboxTrigger({ className, ...props }: ComponentProps<typeof Trigger>) {\n return createElement(Trigger, { ...props, className: cn('rounded-inner', className) });\n}\n\nconst densityBySize = { sm: 'compact', md: 'default', lg: 'comfortable' } as const;\n\nexport function ComboboxItem({ className, size = 'md', density = densityBySize[size], children, ...props }: ComponentProps<typeof Item> & {\n /** Vertical option rhythm. Defaults to the owning control size's rhythm. */\n density?: CollectionDensity;\n}) {\n const { defaultTextSize } = useTypographyConfig();\n const content = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint' ? createElement(CollectionLabel, { children }) : children;\n return createElement(Item, { ...props, children: content, size, className: cn(collectionRowClasses(density), collectionRecipes.highlighted, collectionRecipes.disabled, textSizes[defaultTextSize ?? 'sm'], className) });\n}\n\n/** Shared collection divider, preserving Base UI separator semantics. */\nexport function ComboboxSeparator({ className, ...props }: ComponentProps<typeof Separator>) {\n return createElement(Separator, { ...props, className: cn(popoverRecipes.separator, className) });\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { m as e } from "./ui-provider-
|
|
3
|
-
import { t } from "./utils-
|
|
4
|
-
import { c as n } from "./typography-
|
|
5
|
-
import {
|
|
2
|
+
import { m as e } from "./ui-provider-CQCuCBcy.js";
|
|
3
|
+
import { t } from "./utils-CF3c95Io.js";
|
|
4
|
+
import { c as n } from "./typography-CSyJrh28.js";
|
|
5
|
+
import { s as r } from "./text.styles-B64My8RZ.js";
|
|
6
6
|
import { a as i, n as a, r as o, t as s } from "./popover.recipes-D3j8R8Yp.js";
|
|
7
|
-
import { n as c } from "./collection-content-
|
|
8
|
-
import { t as l } from "./input-
|
|
7
|
+
import { n as c } from "./collection-content-C0e8SsTm.js";
|
|
8
|
+
import { t as l } from "./input-Cdw4k0fb.js";
|
|
9
9
|
import * as u from "react";
|
|
10
10
|
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
11
11
|
import { Check as m } from "lucide-react";
|
|
@@ -422,4 +422,4 @@ P.displayName = "Command", F.displayName = "CommandInput", I.displayName = "Comm
|
|
|
422
422
|
//#endregion
|
|
423
423
|
export { z as a, H as c, F as i, _ as l, B as n, I as o, R as r, V as s, P as t };
|
|
424
424
|
|
|
425
|
-
//# sourceMappingURL=command-
|
|
425
|
+
//# sourceMappingURL=command-D8NrBj-b.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-C25VMRII.js","names":["React","Command","defaultFilter","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","CommandSeparator","CommandShortcut","React","CommandPrimitive","CommandInputPrimitive","CommandListPrimitive","CommandGroupPrimitive","_Fragment","CommandItemPrimitive","CommandEmptyPrimitive","CommandSeparatorPrimitive","CommandShortcutPrimitive","useTypographyConfig","Text","textSizes","surfaceInsetClasses","collectionRowClasses","popoverRecipes","collectionRecipes","CollectionLabel","Input","React$1","Fragment$1","commandFilter","haystack","value","keywords","needle","search","position","char","CommandContext","GroupContext","useCommand","textValue","children","child","visible","item","context","rankRecords","candidates","records","scores","compare","b","a","loose","groups","group","sortedGroups","items","Command$1","props","searchState","setSearchState","input","setInput","activeState","setActiveState","defaultValue","setRecords","active","managedHighlight","rootRef","sourceOrder","nextSourceOrder","register","current","record","registerInput","next","setSearch","setActive","onValueChange","shouldFilter","filter","rankedRecords","sourceLayout","previouslyRanked","root","liveIds","id","parent","key","element","owned","parents","ranks","index","rank","ranking","source","recordedKey","desired","sorted","left","right","previousSearch","searchChanged","useRender","asChild","ref","label","cn","className","onKeyDownCapture","event","delta","loop","onKeyDown","vimBindings","Autocomplete","disablePointerSelection","details","CommandInput$1","CommandList$1","CommandEmpty$1","CommandGroup$1","_value","groupItems","hidden","forceMount","headingElement","heading","renderedGroup","CommandItem$1","valueProp","groupContext","effectiveForceMount","keywordsKey","disabled","onClick","onSelect","CommandSeparator$1","alwaysRender","CommandShortcut$1","commandInsetClasses","CommandInsetContext","Command","inset","CommandInput","CommandList","CommandGroupHeading","CommandGroup","resolvedHeading","CommandItem","indicator","Check","content","density","defaultTextSize","CommandEmpty","CommandSeparator","CommandShortcut"],"sources":["../src/lib/command-filter.ts","../src/components/ui/command.tsx","../src/components/base/command/command.tsx"],"sourcesContent":["// Subsequence matching preserves fuzzy searches and keyword aliases without cmdk.\nexport function commandFilter(value: string, search: string, keywords: string[] = []) {\n const haystack = [value, ...keywords].join(' ').toLocaleLowerCase();\n const needle = search.trim().toLocaleLowerCase();\n if (!needle) return 1;\n if (haystack.includes(needle)) return 1;\n let position = 0;\n for (const char of needle) {\n position = haystack.indexOf(char, position);\n if (position === -1) return 0;\n position += 1;\n }\n return 0.5;\n}\n","import { commandFilter as defaultFilter } from '../../lib/command-filter';\nimport * as React from 'react';\nimport { Autocomplete } from '@base-ui/react/autocomplete';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nexport type CommandFilter = (value: string, search: string, keywords?: string[]) => number;\ntype ItemRecord = { id: string; value: string; keywords: string[]; forceMount: boolean; disabled?: boolean; group?: string };\ntype InputState = { value?: string; onValueChange?: (value: string) => void };\ntype CommandContextValue = {\n managedHighlight: boolean; search: string; setSearch: (value: string) => void;\n active: string; setActive: (value: string) => void;\n shouldFilter: boolean; filter: CommandFilter;\n records: ItemRecord[]; register: (item: ItemRecord) => () => void;\n registerInput: (input: InputState) => () => void;\n};\nconst CommandContext = React.createContext<CommandContextValue | null>(null);\nconst GroupContext = React.createContext<{ id?: string; forceMount: boolean }>({ forceMount: false });\nfunction useCommand() {\n const value = React.useContext(CommandContext);\n if (!value) throw new Error('Command parts must be rendered inside Command.');\n return value;\n}\nfunction textValue(children: React.ReactNode): string {\n return React.Children.toArray(children).map(child => {\n if (typeof child === 'string' || typeof child === 'number') return String(child);\n if (React.isValidElement<{ children?: React.ReactNode }>(child)) return textValue(child.props.children);\n return '';\n }).join(' ').trim();\n}\n\nfunction visible(item: ItemRecord, context: Pick<CommandContextValue, 'search' | 'shouldFilter' | 'filter'>) {\n return item.forceMount || !context.shouldFilter || !context.search || context.filter(item.value, context.search, item.keywords) > 0;\n}\n/** cmdk ranks loose items first, then groups by their best matching item. */\nfunction rankRecords(records: ItemRecord[], context: Pick<CommandContextValue, 'search' | 'shouldFilter' | 'filter'>) {\n const candidates = records.filter(item => visible(item, context));\n if (!context.search || !context.shouldFilter) return candidates;\n const scores = new Map(candidates.map(item => [item.id, context.filter(item.value, context.search, item.keywords)]));\n const compare = (a: ItemRecord, b: ItemRecord) => (scores.get(b.id) ?? 0) - (scores.get(a.id) ?? 0);\n const loose: ItemRecord[] = [];\n const groups = new Map<string, ItemRecord[]>();\n for (const item of candidates) {\n if (!item.group) loose.push(item);\n else { const group = groups.get(item.group) ?? []; group.push(item); groups.set(item.group, group); }\n }\n const sortedGroups = Array.from(groups.values()).map(items => items.sort(compare))\n .sort((a, b) => (scores.get(b[0].id) ?? 0) - (scores.get(a[0].id) ?? 0));\n return [...loose.sort(compare), ...sortedGroups.flat()];\n}\nexport type CommandProps = React.ComponentPropsWithRef<'div'> & {\n asChild?: boolean; label?: string; shouldFilter?: boolean; filter?: CommandFilter;\n defaultValue?: string; value?: string; onValueChange?: (value: string) => void;\n loop?: boolean; disablePointerSelection?: boolean; vimBindings?: boolean;\n};\nfunction Command({ children, className, asChild, label, shouldFilter = true, filter = defaultFilter,\n value, defaultValue = '', onValueChange, loop = false, disablePointerSelection = false,\n vimBindings = true, ref, onKeyDown, onKeyDownCapture, ...props }: CommandProps) {\n const [searchState, setSearchState] = React.useState('');\n const [input, setInput] = React.useState<InputState>({});\n const [activeState, setActiveState] = React.useState(defaultValue);\n const [records, setRecords] = React.useState<ItemRecord[]>([]);\n const search = input.value ?? searchState;\n const active = value ?? activeState;\n const managedHighlight = value !== undefined || defaultValue !== '';\n const rootRef = React.useRef<HTMLDivElement>(null);\n const sourceOrder = React.useRef(new Map<string, number>());\n const nextSourceOrder = React.useRef(0);\n const register = React.useCallback((item: ItemRecord) => {\n if (!sourceOrder.current.has(item.id)) sourceOrder.current.set(item.id, nextSourceOrder.current++);\n setRecords(current => [...current.filter(record => record.id !== item.id), item]\n .sort((a, b) => (sourceOrder.current.get(a.id) ?? 0) - (sourceOrder.current.get(b.id) ?? 0)));\n return () => setRecords(current => current.filter(record => record.id !== item.id));\n }, []);\n const registerInput = React.useCallback((next: InputState) => {\n setInput(next);\n return () => setInput({});\n }, []);\n const setSearch = React.useCallback((next: string) => {\n setSearchState(next);\n input.onValueChange?.(next);\n }, [input.onValueChange]);\n const setActive = React.useCallback((next: string) => {\n setActiveState(next);\n if (next !== active) onValueChange?.(next);\n }, [onValueChange, active]);\n const context = React.useMemo(() => ({ managedHighlight, search, setSearch, active, setActive, shouldFilter, filter, records, register, registerInput }),\n [managedHighlight, search, setSearch, active, setActive, shouldFilter, filter, records, register, registerInput]);\n const rankedRecords = React.useMemo(() => rankRecords(records, { search, shouldFilter, filter }), [records, search, shouldFilter, filter]);\n const sourceLayout = React.useRef(new Map<HTMLElement, Map<string | HTMLElement, number>>());\n const previouslyRanked = React.useRef(false);\n React.useLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n const liveIds = new Set(records.map(item => item.id));\n if (records.length) for (const id of sourceOrder.current.keys()) if (!liveIds.has(id)) sourceOrder.current.delete(id);\n for (const parent of sourceLayout.current.keys()) if (!root.contains(parent)) sourceLayout.current.delete(parent);\n const key = (element: HTMLElement): string | HTMLElement => element.dataset.commandId\n ? `item:${element.dataset.commandId}` : element.dataset.commandGroupId\n ? `group:${element.dataset.commandGroupId}` : element.dataset.commandSeparatorId\n ? `separator:${element.dataset.commandSeparatorId}` : element;\n const owned = (element: HTMLElement) => !!element.dataset.commandId || !!element.dataset.commandGroupId;\n const parents = new Set<HTMLElement>();\n for (const element of root.querySelectorAll<HTMLElement>('[data-command-id], [data-command-group-id]')) {\n if (element.parentElement) parents.add(element.parentElement);\n }\n const ranks = new Map(rankedRecords.map((item, index) => [item.id, index]));\n const rank = (element: HTMLElement) => element.dataset.commandId\n ? ranks.get(element.dataset.commandId) ?? Infinity\n : rankedRecords.findIndex(item => item.group === element.dataset.commandGroupId);\n const ranking = !!search && shouldFilter;\n for (const parent of parents) {\n const current = Array.from(parent.children) as HTMLElement[];\n let source = sourceLayout.current.get(parent);\n if (!source || (!ranking && !previouslyRanked.current)) {\n source = new Map(current.map((element, index) => [key(element), index]));\n sourceLayout.current.set(parent, source);\n }\n for (const recordedKey of source.keys()) {\n if (typeof recordedKey === 'string' && recordedKey.startsWith('item:') && !liveIds.has(recordedKey.slice(5))) source.delete(recordedKey);\n }\n for (const element of current) if (!source.has(key(element))) source.set(key(element), Math.max(-1, ...source.values()) + 1);\n let desired: HTMLElement[];\n if (ranking) {\n const sorted = current.filter(owned).sort((a, b) => {\n const left = rank(a); const right = rank(b);\n return (left < 0 ? Infinity : left) - (right < 0 ? Infinity : right);\n });\n let index = 0;\n desired = current.map(element => owned(element) ? sorted[index++] : element);\n } else if (previouslyRanked.current) {\n desired = current.slice().sort((a, b) => source.get(key(a))! - source.get(key(b))!);\n } else continue;\n // Reorder owned DOM nodes without rebuilding children or losing their identity.\n for (let index = 0; index < desired.length; index++) {\n if (parent.children[index] !== desired[index]) parent.insertBefore(desired[index], parent.children[index] ?? null);\n }\n }\n previouslyRanked.current = ranking;\n }, [rankedRecords, search, shouldFilter]);\n const previousSearch = React.useRef(search);\n React.useEffect(() => {\n const searchChanged = previousSearch.current !== search;\n previousSearch.current = search;\n if (!managedHighlight || value !== undefined || !records.length) return;\n const candidates = rankedRecords.filter(item => !item.disabled);\n if (searchChanged || !candidates.some(item => item.value === active)) setActive(candidates[0]?.value ?? '');\n }, [managedHighlight, value, records, rankedRecords, active, search, setActive]);\n const element = useRender({ defaultTagName: 'div', render: asChild && React.isValidElement(children) ? children : undefined, ref: [ref ?? null, rootRef],\n props: { ...props, 'aria-label': props['aria-label'] ?? label, 'data-slot': 'command',\n className: cn('flex size-full flex-col overflow-hidden rounded-radius bg-popover text-popover-foreground', className),\n ...(asChild ? {} : { children }), onKeyDownCapture(event: React.KeyboardEvent<HTMLDivElement>) {\n onKeyDownCapture?.(event);\n if (event.defaultPrevented || !managedHighlight) return;\n if (event.key === 'Enter') {\n const item = records.find(record => record.value === active && !record.disabled && visible(record, context));\n if (!item) return;\n event.preventDefault(); event.stopPropagation();\n Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-command-id]') ?? []).find(element => element.dataset.commandId === item.id)?.click();\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Home' || event.key === 'End') {\n const candidates = rankedRecords.filter(record => !record.disabled);\n if (!candidates.length) return;\n event.preventDefault(); event.stopPropagation();\n const current = candidates.findIndex(record => record.value === active);\n const delta = event.key === 'ArrowDown' ? 1 : -1;\n let next = current === -1 ? (delta > 0 ? 0 : candidates.length - 1) : current + delta;\n if (event.key === 'Home') next = 0;\n if (event.key === 'End') next = candidates.length - 1;\n next = loop ? (next + candidates.length) % candidates.length : Math.max(0, Math.min(candidates.length - 1, next));\n setActive(candidates[next].value);\n }\n }, onKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n onKeyDown?.(event);\n if (event.defaultPrevented || !vimBindings || !event.ctrlKey) return;\n const key = { n: 'ArrowDown', j: 'ArrowDown', p: 'ArrowUp', k: 'ArrowUp' }[event.key];\n if (!key) return;\n event.preventDefault();\n event.target.dispatchEvent(new KeyboardEvent('keydown', { key, bubbles: true, cancelable: true }));\n } } });\n return <CommandContext.Provider value={context}>\n <Autocomplete.Root inline open value={search} filter={null} autoHighlight={managedHighlight ? false : 'always'} keepHighlight\n loopFocus={loop} highlightItemOnHover={!disablePointerSelection}\n onValueChange={(next, details) => { if (details.reason !== 'item-press') setSearch(next); }}\n onItemHighlighted={next => setActive(typeof next === 'string' ? next : '')}>\n {element}\n </Autocomplete.Root>\n </CommandContext.Provider>;\n}\ntype CommandInputProps = Omit<React.ComponentPropsWithRef<'input'>, 'value' | 'onChange' | 'type'> & {\n value?: string; onValueChange?: (value: string) => void; asChild?: boolean;\n};\nfunction CommandInput({ className, value, onValueChange, asChild, children, ...props }: CommandInputProps) {\n const context = useCommand();\n React.useLayoutEffect(() => context.registerInput({ value, onValueChange }), [context.registerInput, value, onValueChange]);\n return <div data-slot=\"command-input-wrapper\" className=\"pb-space-xs\">\n <Autocomplete.Input data-slot=\"command-input\" aria-activedescendant={context.records.find(item => item.value === context.active)?.id}\n render={asChild && React.isValidElement(children) ? children : undefined} className={className} {...props} />\n </div>;\n}\nfunction CommandList({ className, label, asChild, children, ...props }: React.ComponentPropsWithRef<'div'> & { label?: string; asChild?: boolean }) {\n const context = useCommand();\n return <Autocomplete.List data-slot=\"command-list\" aria-label={label} aria-activedescendant={context.records.find(item => item.value === context.active)?.id}\n className={cn('max-h-72 overflow-x-hidden overflow-y-auto outline-none', className)}\n render={asChild && React.isValidElement(children) ? children : undefined} {...props}>{asChild ? undefined : children}</Autocomplete.List>;\n}\nfunction CommandEmpty({ className, ...props }: React.ComponentPropsWithRef<'div'>) {\n const context = useCommand();\n if (context.records.some(item => visible(item, context))) return null;\n return <div data-slot=\"command-empty\" role=\"status\" className={cn('py-space-xl text-center text-sm', className)} {...props} />;\n}\nfunction CommandGroup({ className, heading, value: _value, forceMount = false, children, asChild, ...props }:\n React.ComponentPropsWithRef<'div'> & { heading?: React.ReactNode; value?: string; forceMount?: boolean; asChild?: boolean }) {\n const id = React.useId();\n const context = useCommand();\n const groupItems = context.records.filter(item => item.group === id);\n const hidden = !forceMount && !!context.search && !groupItems.some(item => visible(item, context));\n void _value;\n const headingElement = heading != null ? <Autocomplete.GroupLabel cmdk-group-heading=\"\" className=\"text-xs font-medium text-muted-foreground\">{heading}</Autocomplete.GroupLabel> : null;\n const renderedGroup = asChild && React.isValidElement<{ children?: React.ReactNode }>(children)\n ? React.cloneElement(children, {}, headingElement, children.props.children) : undefined;\n return <GroupContext.Provider value={{ id, forceMount }}>\n <Autocomplete.Group data-slot=\"command-group\" data-command-group-id={id} cmdk-group=\"\" hidden={hidden}\n className={cn('overflow-hidden text-foreground', className)} render={renderedGroup} {...props}>\n {!asChild && headingElement}\n {asChild ? undefined : children}\n </Autocomplete.Group>\n </GroupContext.Provider>;\n}\ntype CommandItemProps = Omit<React.ComponentPropsWithRef<'div'>, 'onSelect' | 'children'> & {\n children?: React.ReactNode | ((state: { isHighlighted: boolean }) => React.ReactNode);\n value?: string; onSelect?: (value: string) => void; keywords?: string[]; forceMount?: boolean;\n disabled?: boolean; asChild?: boolean;\n};\nfunction CommandItem({ className, children, value: valueProp, keywords = [], forceMount = false,\n disabled, onSelect, onClick, asChild, ref, ...props }: CommandItemProps) {\n const id = React.useId();\n const groupContext = React.useContext(GroupContext);\n const group = groupContext.id;\n const effectiveForceMount = forceMount || groupContext.forceMount;\n const context = useCommand();\n const value = valueProp ?? (typeof children === 'function' ? '' : textValue(children));\n const keywordsKey = JSON.stringify(keywords);\n React.useLayoutEffect(() => context.register({ id, value, keywords: JSON.parse(keywordsKey), forceMount: effectiveForceMount, disabled, group }),\n [context.register, id, value, keywordsKey, effectiveForceMount, disabled, group]);\n const record = { id, value, keywords, forceMount: effectiveForceMount, group };\n if (!visible(record, context)) return null;\n return <Autocomplete.Item value={value} disabled={disabled} ref={ref} data-slot=\"command-item\" data-command-id={id} aria-selected={context.active === value}\n data-selected={context.active === value ? 'true' : 'false'} data-disabled={disabled ? 'true' : undefined}\n className={cn('relative flex min-h-action-sm cursor-default items-center gap-space-sm rounded-inner px-control-sm py-row-y text-sm outline-none select-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-disabled:cursor-not-allowed', className)}\n render={asChild && React.isValidElement(children) ? React.cloneElement(children, { id } as React.HTMLAttributes<HTMLElement>) : <div id={id} />}\n onClick={event => { onClick?.(event); if (!event.defaultPrevented && !disabled) onSelect?.(value); }} {...props}>\n {asChild ? undefined : typeof children === 'function' ? children({ isHighlighted: context.active === value }) : children}\n </Autocomplete.Item>;\n}\nfunction CommandSeparator({ className, alwaysRender = false, asChild, children, ...props }:\n React.ComponentPropsWithRef<'div'> & { alwaysRender?: boolean; asChild?: boolean }) {\n const { search } = useCommand();\n const id = React.useId();\n return useRender({ enabled: !search || alwaysRender, render: asChild && React.isValidElement(children) ? children : undefined, props: { ...props, 'data-slot': 'command-separator', 'data-command-separator-id': id, role: props.role ?? 'separator', className: cn('h-px bg-border', className), ...(asChild ? {} : { children }) } });\n}\nfunction CommandShortcut({ className, ...props }: React.ComponentPropsWithRef<'span'>) {\n return <span data-slot=\"command-shortcut\" className={cn('ms-auto text-xs text-muted-foreground', className)} {...props} />;\n}\nexport { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut };\n","/**\n * Command — base wrapper around the internal Base UI command primitive.\n *\n * What this layer adds on top of the primitive:\n * - One standard, tokenized surface inset across the root, groups, and rows.\n * - Design-system typography and density-aware row sizing for admin commands.\n * - Stable BEM hooks on the wrapped root, input, list, group, item, separator,\n * and empty regions while retaining each primitive part's original props.\n * - Preserves the compound-component pattern: consumers compose\n * `<Command><CommandList><CommandGroup><CommandItem/></CommandGroup></CommandList></Command>`.\n *\n * For the recurring \"popover-with-command-list\" pattern, prefer\n * `base/popover-menu/` which composes both wrappers and adds slots.\n */\nimport * as React from 'react';\nimport { Check } from 'lucide-react';\n\nimport {\n\tCommand as CommandPrimitive,\n\tCommandEmpty as CommandEmptyPrimitive,\n\tCommandGroup as CommandGroupPrimitive,\n\tCommandInput as CommandInputPrimitive,\n\tCommandItem as CommandItemPrimitive,\n\tCommandList as CommandListPrimitive,\n\tCommandSeparator as CommandSeparatorPrimitive,\n\tCommandShortcut as CommandShortcutPrimitive,\n} from '../../ui/command';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { collectionRecipes, collectionRowClasses, popoverRecipes, surfaceInsetClasses, type CollectionDensity } from '../popover/popover.recipes';\nimport { Input } from '../text-inputs/input';\nimport { CollectionLabel } from '../popover/collection-content';\nimport { useTypographyConfig } from '../../../lib/ui-provider';\nimport { textSizes } from '../../typography/text.styles';\n\ntype CommandRootProps = React.ComponentProps<typeof CommandPrimitive>;\n\nexport type CommandInset = 'default' | 'compact' | 'flush';\n\nexport type CommandProps = CommandRootProps & {\n\t/**\n\t * Surface inset role. Defaults to the compact collection shell.\n\t * Use `default` explicitly for substantive content, or `flush` when regions own their insets.\n\t */\n\tinset?: CommandInset;\n};\n\nconst commandInsetClasses: Record<CommandInset, string> = {\n\tdefault: surfaceInsetClasses.default,\n\tcompact: surfaceInsetClasses.compact,\n\t// The root is flush; search and list regions each own one collection inset.\n\tflush: 'p-0 [&_[data-slot=command-input-wrapper]]:px-surface-xs [&_[data-slot=command-input-wrapper]]:pt-surface-xs',\n};\n\nconst CommandInsetContext = React.createContext<CommandInset>('compact');\n\n/** Tokenized command surface with semantic default, compact, and flush inset roles. */\nfunction Command({ className, inset = 'compact', ...props }: CommandProps) {\n\treturn (\n <CommandInsetContext.Provider value={inset}>\n\t\t<CommandPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'command--component',\n\t\t\t\t// One standard surface inset keeps search controls, headings, row\n\t\t\t\t// highlights, and separators on the same surface grid.\n\t\t\t\t'gap-0 rounded-radius bg-popover text-popover-foreground',\n\t\t\t\tcommandInsetClasses[inset],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n </CommandInsetContext.Provider>\n\t);\n}\n\ntype CommandListProps = React.ComponentProps<typeof CommandListPrimitive>;\n\ntype CommandInputProps = React.ComponentProps<typeof CommandInputPrimitive>;\n\nfunction CommandInput({ className, asChild, children, ...props }: CommandInputProps) {\n\treturn (\n\t\t<CommandInputPrimitive\n\t\t\tclassName={cn('command-input--component', className)}\n\t\t\t{...props}\n\t\t\tasChild\n\t\t>\n {asChild ? children : <Input />}\n </CommandInputPrimitive>\n\t);\n}\n\nfunction CommandList({ className, ...props }: CommandListProps) {\n const inset = React.useContext(CommandInsetContext);\n return (\n\t\t<CommandListPrimitive\n\t\t\tclassName={cn('command-list--component max-h-72', inset === 'flush' ? surfaceInsetClasses.compact : 'p-0', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\ntype CommandGroupProps = React.ComponentProps<typeof CommandGroupPrimitive>;\n\nfunction CommandGroupHeading({ children }: { children: React.ReactNode }) {\n\tif (\n\t\ttypeof children !== 'string' &&\n\t\ttypeof children !== 'number' &&\n\t\ttypeof children !== 'bigint'\n\t) {\n\t\treturn children;\n\t}\n\n\t// A group caption is supporting copy, not another row: the compact secondary\n\t// role matches menu and listbox captions and keeps it from reading as an item.\n\treturn (\n\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" weight=\"medium\" lineHeight=\"tight\" className=\"command-group--heading\">\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nfunction CommandGroup({ className, heading, ...props }: CommandGroupProps) {\n\tconst resolvedHeading = heading == null\n\t\t? heading\n\t\t: <CommandGroupHeading>{heading}</CommandGroupHeading>;\n\n\treturn (\n\t\t<CommandGroupPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'command-group--component p-0 [&_[cmdk-group-heading]]:px-row-x [&_[cmdk-group-heading]]:pt-space-md [&_[cmdk-group-heading]]:pb-space-xs',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\theading={resolvedHeading}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\ntype CommandItemProps = React.ComponentProps<typeof CommandItemPrimitive> & {\n\t/** Vertical row rhythm, independent from label typography. */\n\tdensity?: CollectionDensity;\n\t/** Persistent selection, distinct from the keyboard-highlight state. */\n\t'data-checked'?: boolean | 'true' | 'false';\n};\n\nfunction CommandItem({ children, className, density = 'default', ...props }: CommandItemProps) {\n\tconst {defaultTextSize}=useTypographyConfig();\n\tconst checked = props['data-checked'] === true || props['data-checked'] === 'true';\n\t// Same selection ink as Select and Combobox options: the row's own foreground.\n\tconst indicator = checked ? <Check aria-hidden=\"true\" data-slot=\"command-item-indicator\" className=\"ms-auto size-icon shrink-0 self-center\" /> : null;\n\tconst content: CommandItemProps['children'] = props.asChild ? children : typeof children === 'function'\n\t\t? context => <>{children(context)}{indicator}</>\n\t\t: <>{typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint'\n\t\t\t? <CollectionLabel className=\"command-item--text min-w-0 flex-1\">{children}</CollectionLabel>\n\t\t\t: children}{indicator}</>;\n\treturn <CommandItemPrimitive\n\t\tclassName={cn('command-item--component [&>svg]:size-icon [&>svg]:shrink-0 [&>svg]:text-muted-foreground', collectionRowClasses(density), collectionRecipes.disabled, textSizes[defaultTextSize??'sm'],className)}\n\t\t{...props}\n\t\tchildren={content}\n\t/>;\n}\n\ntype CommandEmptyProps = React.ComponentProps<typeof CommandEmptyPrimitive>;\n\nfunction CommandEmpty({ children, className, ...props }: CommandEmptyProps) {\n\treturn (\n\t\t<CommandEmptyPrimitive\n\t\t\tclassName={cn('command-empty--component px-row-x py-space-xl text-center', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Text tag=\"span\" type=\"secondary\" className=\"command-empty--text\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</CommandEmptyPrimitive>\n\t);\n}\n\ntype CommandShortcutProps = React.ComponentProps<typeof CommandShortcutPrimitive>;\n\ntype CommandSeparatorProps = React.ComponentProps<typeof CommandSeparatorPrimitive>;\n\n/** Presentational divider that remains hidden from the Command listbox tree. */\nfunction CommandSeparator({ className, ...props }: CommandSeparatorProps) {\n return <CommandSeparatorPrimitive\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('command-separator--component command-separator--line', popoverRecipes.separator, className)}\n {...props}\n />;\n}\n\nCommandSeparator.displayName = 'CommandSeparator';\n\nfunction CommandShortcut({ children, className, ...props }: CommandShortcutProps) {\n\treturn (\n\t\t<CommandShortcutPrimitive\n\t\t\tclassName={cn('command-shortcut--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"command-shortcut--text\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</CommandShortcutPrimitive>\n\t);\n}\n\nCommand.displayName = 'Command';\nCommandInput.displayName = 'CommandInput';\nCommandList.displayName = 'CommandList';\nCommandGroup.displayName = 'CommandGroup';\nCommandItem.displayName = 'CommandItem';\nCommandEmpty.displayName = 'CommandEmpty';\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n\tCommandSeparator,\n\tCommandShortcut,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command-D8NrBj-b.js","names":["React","Command","defaultFilter","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","CommandSeparator","CommandShortcut","React","CommandPrimitive","CommandInputPrimitive","CommandListPrimitive","CommandGroupPrimitive","_Fragment","CommandItemPrimitive","CommandEmptyPrimitive","CommandSeparatorPrimitive","CommandShortcutPrimitive","useTypographyConfig","Text","textSizes","surfaceInsetClasses","collectionRowClasses","popoverRecipes","collectionRecipes","CollectionLabel","Input","React$1","Fragment$1","commandFilter","haystack","value","keywords","needle","search","position","char","CommandContext","GroupContext","useCommand","textValue","children","child","visible","item","context","rankRecords","candidates","records","scores","compare","b","a","loose","groups","group","sortedGroups","items","Command$1","props","searchState","setSearchState","input","setInput","activeState","setActiveState","defaultValue","setRecords","active","managedHighlight","rootRef","sourceOrder","nextSourceOrder","register","current","record","registerInput","next","setSearch","setActive","onValueChange","shouldFilter","filter","rankedRecords","sourceLayout","previouslyRanked","root","liveIds","id","parent","key","element","owned","parents","ranks","index","rank","ranking","source","recordedKey","desired","sorted","left","right","previousSearch","searchChanged","useRender","asChild","ref","label","cn","className","onKeyDownCapture","event","delta","loop","onKeyDown","vimBindings","Autocomplete","disablePointerSelection","details","CommandInput$1","CommandList$1","CommandEmpty$1","CommandGroup$1","_value","groupItems","hidden","forceMount","headingElement","heading","renderedGroup","CommandItem$1","valueProp","groupContext","effectiveForceMount","keywordsKey","disabled","onClick","onSelect","CommandSeparator$1","alwaysRender","CommandShortcut$1","commandInsetClasses","CommandInsetContext","Command","inset","CommandInput","CommandList","CommandGroupHeading","CommandGroup","resolvedHeading","CommandItem","indicator","Check","content","density","defaultTextSize","CommandEmpty","CommandSeparator","CommandShortcut"],"sources":["../src/lib/command-filter.ts","../src/components/ui/command.tsx","../src/components/base/command/command.tsx"],"sourcesContent":["// Subsequence matching preserves fuzzy searches and keyword aliases without cmdk.\nexport function commandFilter(value: string, search: string, keywords: string[] = []) {\n const haystack = [value, ...keywords].join(' ').toLocaleLowerCase();\n const needle = search.trim().toLocaleLowerCase();\n if (!needle) return 1;\n if (haystack.includes(needle)) return 1;\n let position = 0;\n for (const char of needle) {\n position = haystack.indexOf(char, position);\n if (position === -1) return 0;\n position += 1;\n }\n return 0.5;\n}\n","import { commandFilter as defaultFilter } from '../../lib/command-filter';\nimport * as React from 'react';\nimport { Autocomplete } from '@base-ui/react/autocomplete';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nexport type CommandFilter = (value: string, search: string, keywords?: string[]) => number;\ntype ItemRecord = { id: string; value: string; keywords: string[]; forceMount: boolean; disabled?: boolean; group?: string };\ntype InputState = { value?: string; onValueChange?: (value: string) => void };\ntype CommandContextValue = {\n managedHighlight: boolean; search: string; setSearch: (value: string) => void;\n active: string; setActive: (value: string) => void;\n shouldFilter: boolean; filter: CommandFilter;\n records: ItemRecord[]; register: (item: ItemRecord) => () => void;\n registerInput: (input: InputState) => () => void;\n};\nconst CommandContext = React.createContext<CommandContextValue | null>(null);\nconst GroupContext = React.createContext<{ id?: string; forceMount: boolean }>({ forceMount: false });\nfunction useCommand() {\n const value = React.useContext(CommandContext);\n if (!value) throw new Error('Command parts must be rendered inside Command.');\n return value;\n}\nfunction textValue(children: React.ReactNode): string {\n return React.Children.toArray(children).map(child => {\n if (typeof child === 'string' || typeof child === 'number') return String(child);\n if (React.isValidElement<{ children?: React.ReactNode }>(child)) return textValue(child.props.children);\n return '';\n }).join(' ').trim();\n}\n\nfunction visible(item: ItemRecord, context: Pick<CommandContextValue, 'search' | 'shouldFilter' | 'filter'>) {\n return item.forceMount || !context.shouldFilter || !context.search || context.filter(item.value, context.search, item.keywords) > 0;\n}\n/** cmdk ranks loose items first, then groups by their best matching item. */\nfunction rankRecords(records: ItemRecord[], context: Pick<CommandContextValue, 'search' | 'shouldFilter' | 'filter'>) {\n const candidates = records.filter(item => visible(item, context));\n if (!context.search || !context.shouldFilter) return candidates;\n const scores = new Map(candidates.map(item => [item.id, context.filter(item.value, context.search, item.keywords)]));\n const compare = (a: ItemRecord, b: ItemRecord) => (scores.get(b.id) ?? 0) - (scores.get(a.id) ?? 0);\n const loose: ItemRecord[] = [];\n const groups = new Map<string, ItemRecord[]>();\n for (const item of candidates) {\n if (!item.group) loose.push(item);\n else { const group = groups.get(item.group) ?? []; group.push(item); groups.set(item.group, group); }\n }\n const sortedGroups = Array.from(groups.values()).map(items => items.sort(compare))\n .sort((a, b) => (scores.get(b[0].id) ?? 0) - (scores.get(a[0].id) ?? 0));\n return [...loose.sort(compare), ...sortedGroups.flat()];\n}\nexport type CommandProps = React.ComponentPropsWithRef<'div'> & {\n asChild?: boolean; label?: string; shouldFilter?: boolean; filter?: CommandFilter;\n defaultValue?: string; value?: string; onValueChange?: (value: string) => void;\n loop?: boolean; disablePointerSelection?: boolean; vimBindings?: boolean;\n};\nfunction Command({ children, className, asChild, label, shouldFilter = true, filter = defaultFilter,\n value, defaultValue = '', onValueChange, loop = false, disablePointerSelection = false,\n vimBindings = true, ref, onKeyDown, onKeyDownCapture, ...props }: CommandProps) {\n const [searchState, setSearchState] = React.useState('');\n const [input, setInput] = React.useState<InputState>({});\n const [activeState, setActiveState] = React.useState(defaultValue);\n const [records, setRecords] = React.useState<ItemRecord[]>([]);\n const search = input.value ?? searchState;\n const active = value ?? activeState;\n const managedHighlight = value !== undefined || defaultValue !== '';\n const rootRef = React.useRef<HTMLDivElement>(null);\n const sourceOrder = React.useRef(new Map<string, number>());\n const nextSourceOrder = React.useRef(0);\n const register = React.useCallback((item: ItemRecord) => {\n if (!sourceOrder.current.has(item.id)) sourceOrder.current.set(item.id, nextSourceOrder.current++);\n setRecords(current => [...current.filter(record => record.id !== item.id), item]\n .sort((a, b) => (sourceOrder.current.get(a.id) ?? 0) - (sourceOrder.current.get(b.id) ?? 0)));\n return () => setRecords(current => current.filter(record => record.id !== item.id));\n }, []);\n const registerInput = React.useCallback((next: InputState) => {\n setInput(next);\n return () => setInput({});\n }, []);\n const setSearch = React.useCallback((next: string) => {\n setSearchState(next);\n input.onValueChange?.(next);\n }, [input.onValueChange]);\n const setActive = React.useCallback((next: string) => {\n setActiveState(next);\n if (next !== active) onValueChange?.(next);\n }, [onValueChange, active]);\n const context = React.useMemo(() => ({ managedHighlight, search, setSearch, active, setActive, shouldFilter, filter, records, register, registerInput }),\n [managedHighlight, search, setSearch, active, setActive, shouldFilter, filter, records, register, registerInput]);\n const rankedRecords = React.useMemo(() => rankRecords(records, { search, shouldFilter, filter }), [records, search, shouldFilter, filter]);\n const sourceLayout = React.useRef(new Map<HTMLElement, Map<string | HTMLElement, number>>());\n const previouslyRanked = React.useRef(false);\n React.useLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n const liveIds = new Set(records.map(item => item.id));\n if (records.length) for (const id of sourceOrder.current.keys()) if (!liveIds.has(id)) sourceOrder.current.delete(id);\n for (const parent of sourceLayout.current.keys()) if (!root.contains(parent)) sourceLayout.current.delete(parent);\n const key = (element: HTMLElement): string | HTMLElement => element.dataset.commandId\n ? `item:${element.dataset.commandId}` : element.dataset.commandGroupId\n ? `group:${element.dataset.commandGroupId}` : element.dataset.commandSeparatorId\n ? `separator:${element.dataset.commandSeparatorId}` : element;\n const owned = (element: HTMLElement) => !!element.dataset.commandId || !!element.dataset.commandGroupId;\n const parents = new Set<HTMLElement>();\n for (const element of root.querySelectorAll<HTMLElement>('[data-command-id], [data-command-group-id]')) {\n if (element.parentElement) parents.add(element.parentElement);\n }\n const ranks = new Map(rankedRecords.map((item, index) => [item.id, index]));\n const rank = (element: HTMLElement) => element.dataset.commandId\n ? ranks.get(element.dataset.commandId) ?? Infinity\n : rankedRecords.findIndex(item => item.group === element.dataset.commandGroupId);\n const ranking = !!search && shouldFilter;\n for (const parent of parents) {\n const current = Array.from(parent.children) as HTMLElement[];\n let source = sourceLayout.current.get(parent);\n if (!source || (!ranking && !previouslyRanked.current)) {\n source = new Map(current.map((element, index) => [key(element), index]));\n sourceLayout.current.set(parent, source);\n }\n for (const recordedKey of source.keys()) {\n if (typeof recordedKey === 'string' && recordedKey.startsWith('item:') && !liveIds.has(recordedKey.slice(5))) source.delete(recordedKey);\n }\n for (const element of current) if (!source.has(key(element))) source.set(key(element), Math.max(-1, ...source.values()) + 1);\n let desired: HTMLElement[];\n if (ranking) {\n const sorted = current.filter(owned).sort((a, b) => {\n const left = rank(a); const right = rank(b);\n return (left < 0 ? Infinity : left) - (right < 0 ? Infinity : right);\n });\n let index = 0;\n desired = current.map(element => owned(element) ? sorted[index++] : element);\n } else if (previouslyRanked.current) {\n desired = current.slice().sort((a, b) => source.get(key(a))! - source.get(key(b))!);\n } else continue;\n // Reorder owned DOM nodes without rebuilding children or losing their identity.\n for (let index = 0; index < desired.length; index++) {\n if (parent.children[index] !== desired[index]) parent.insertBefore(desired[index], parent.children[index] ?? null);\n }\n }\n previouslyRanked.current = ranking;\n }, [rankedRecords, search, shouldFilter]);\n const previousSearch = React.useRef(search);\n React.useEffect(() => {\n const searchChanged = previousSearch.current !== search;\n previousSearch.current = search;\n if (!managedHighlight || value !== undefined || !records.length) return;\n const candidates = rankedRecords.filter(item => !item.disabled);\n if (searchChanged || !candidates.some(item => item.value === active)) setActive(candidates[0]?.value ?? '');\n }, [managedHighlight, value, records, rankedRecords, active, search, setActive]);\n const element = useRender({ defaultTagName: 'div', render: asChild && React.isValidElement(children) ? children : undefined, ref: [ref ?? null, rootRef],\n props: { ...props, 'aria-label': props['aria-label'] ?? label, 'data-slot': 'command',\n className: cn('flex size-full flex-col overflow-hidden rounded-radius bg-popover text-popover-foreground', className),\n ...(asChild ? {} : { children }), onKeyDownCapture(event: React.KeyboardEvent<HTMLDivElement>) {\n onKeyDownCapture?.(event);\n if (event.defaultPrevented || !managedHighlight) return;\n if (event.key === 'Enter') {\n const item = records.find(record => record.value === active && !record.disabled && visible(record, context));\n if (!item) return;\n event.preventDefault(); event.stopPropagation();\n Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-command-id]') ?? []).find(element => element.dataset.commandId === item.id)?.click();\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Home' || event.key === 'End') {\n const candidates = rankedRecords.filter(record => !record.disabled);\n if (!candidates.length) return;\n event.preventDefault(); event.stopPropagation();\n const current = candidates.findIndex(record => record.value === active);\n const delta = event.key === 'ArrowDown' ? 1 : -1;\n let next = current === -1 ? (delta > 0 ? 0 : candidates.length - 1) : current + delta;\n if (event.key === 'Home') next = 0;\n if (event.key === 'End') next = candidates.length - 1;\n next = loop ? (next + candidates.length) % candidates.length : Math.max(0, Math.min(candidates.length - 1, next));\n setActive(candidates[next].value);\n }\n }, onKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n onKeyDown?.(event);\n if (event.defaultPrevented || !vimBindings || !event.ctrlKey) return;\n const key = { n: 'ArrowDown', j: 'ArrowDown', p: 'ArrowUp', k: 'ArrowUp' }[event.key];\n if (!key) return;\n event.preventDefault();\n event.target.dispatchEvent(new KeyboardEvent('keydown', { key, bubbles: true, cancelable: true }));\n } } });\n return <CommandContext.Provider value={context}>\n <Autocomplete.Root inline open value={search} filter={null} autoHighlight={managedHighlight ? false : 'always'} keepHighlight\n loopFocus={loop} highlightItemOnHover={!disablePointerSelection}\n onValueChange={(next, details) => { if (details.reason !== 'item-press') setSearch(next); }}\n onItemHighlighted={next => setActive(typeof next === 'string' ? next : '')}>\n {element}\n </Autocomplete.Root>\n </CommandContext.Provider>;\n}\ntype CommandInputProps = Omit<React.ComponentPropsWithRef<'input'>, 'value' | 'onChange' | 'type'> & {\n value?: string; onValueChange?: (value: string) => void; asChild?: boolean;\n};\nfunction CommandInput({ className, value, onValueChange, asChild, children, ...props }: CommandInputProps) {\n const context = useCommand();\n React.useLayoutEffect(() => context.registerInput({ value, onValueChange }), [context.registerInput, value, onValueChange]);\n return <div data-slot=\"command-input-wrapper\" className=\"pb-space-xs\">\n <Autocomplete.Input data-slot=\"command-input\" aria-activedescendant={context.records.find(item => item.value === context.active)?.id}\n render={asChild && React.isValidElement(children) ? children : undefined} className={className} {...props} />\n </div>;\n}\nfunction CommandList({ className, label, asChild, children, ...props }: React.ComponentPropsWithRef<'div'> & { label?: string; asChild?: boolean }) {\n const context = useCommand();\n return <Autocomplete.List data-slot=\"command-list\" aria-label={label} aria-activedescendant={context.records.find(item => item.value === context.active)?.id}\n className={cn('max-h-72 overflow-x-hidden overflow-y-auto outline-none', className)}\n render={asChild && React.isValidElement(children) ? children : undefined} {...props}>{asChild ? undefined : children}</Autocomplete.List>;\n}\nfunction CommandEmpty({ className, ...props }: React.ComponentPropsWithRef<'div'>) {\n const context = useCommand();\n if (context.records.some(item => visible(item, context))) return null;\n return <div data-slot=\"command-empty\" role=\"status\" className={cn('py-space-xl text-center text-sm', className)} {...props} />;\n}\nfunction CommandGroup({ className, heading, value: _value, forceMount = false, children, asChild, ...props }:\n React.ComponentPropsWithRef<'div'> & { heading?: React.ReactNode; value?: string; forceMount?: boolean; asChild?: boolean }) {\n const id = React.useId();\n const context = useCommand();\n const groupItems = context.records.filter(item => item.group === id);\n const hidden = !forceMount && !!context.search && !groupItems.some(item => visible(item, context));\n void _value;\n const headingElement = heading != null ? <Autocomplete.GroupLabel cmdk-group-heading=\"\" className=\"text-xs font-medium text-muted-foreground\">{heading}</Autocomplete.GroupLabel> : null;\n const renderedGroup = asChild && React.isValidElement<{ children?: React.ReactNode }>(children)\n ? React.cloneElement(children, {}, headingElement, children.props.children) : undefined;\n return <GroupContext.Provider value={{ id, forceMount }}>\n <Autocomplete.Group data-slot=\"command-group\" data-command-group-id={id} cmdk-group=\"\" hidden={hidden}\n className={cn('overflow-hidden text-foreground', className)} render={renderedGroup} {...props}>\n {!asChild && headingElement}\n {asChild ? undefined : children}\n </Autocomplete.Group>\n </GroupContext.Provider>;\n}\ntype CommandItemProps = Omit<React.ComponentPropsWithRef<'div'>, 'onSelect' | 'children'> & {\n children?: React.ReactNode | ((state: { isHighlighted: boolean }) => React.ReactNode);\n value?: string; onSelect?: (value: string) => void; keywords?: string[]; forceMount?: boolean;\n disabled?: boolean; asChild?: boolean;\n};\nfunction CommandItem({ className, children, value: valueProp, keywords = [], forceMount = false,\n disabled, onSelect, onClick, asChild, ref, ...props }: CommandItemProps) {\n const id = React.useId();\n const groupContext = React.useContext(GroupContext);\n const group = groupContext.id;\n const effectiveForceMount = forceMount || groupContext.forceMount;\n const context = useCommand();\n const value = valueProp ?? (typeof children === 'function' ? '' : textValue(children));\n const keywordsKey = JSON.stringify(keywords);\n React.useLayoutEffect(() => context.register({ id, value, keywords: JSON.parse(keywordsKey), forceMount: effectiveForceMount, disabled, group }),\n [context.register, id, value, keywordsKey, effectiveForceMount, disabled, group]);\n const record = { id, value, keywords, forceMount: effectiveForceMount, group };\n if (!visible(record, context)) return null;\n return <Autocomplete.Item value={value} disabled={disabled} ref={ref} data-slot=\"command-item\" data-command-id={id} aria-selected={context.active === value}\n data-selected={context.active === value ? 'true' : 'false'} data-disabled={disabled ? 'true' : undefined}\n className={cn('relative flex min-h-action-sm cursor-default items-center gap-space-sm rounded-inner px-control-sm py-row-y text-sm outline-none select-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-disabled:cursor-not-allowed', className)}\n render={asChild && React.isValidElement(children) ? React.cloneElement(children, { id } as React.HTMLAttributes<HTMLElement>) : <div id={id} />}\n onClick={event => { onClick?.(event); if (!event.defaultPrevented && !disabled) onSelect?.(value); }} {...props}>\n {asChild ? undefined : typeof children === 'function' ? children({ isHighlighted: context.active === value }) : children}\n </Autocomplete.Item>;\n}\nfunction CommandSeparator({ className, alwaysRender = false, asChild, children, ...props }:\n React.ComponentPropsWithRef<'div'> & { alwaysRender?: boolean; asChild?: boolean }) {\n const { search } = useCommand();\n const id = React.useId();\n return useRender({ enabled: !search || alwaysRender, render: asChild && React.isValidElement(children) ? children : undefined, props: { ...props, 'data-slot': 'command-separator', 'data-command-separator-id': id, role: props.role ?? 'separator', className: cn('h-px bg-border', className), ...(asChild ? {} : { children }) } });\n}\nfunction CommandShortcut({ className, ...props }: React.ComponentPropsWithRef<'span'>) {\n return <span data-slot=\"command-shortcut\" className={cn('ms-auto text-xs text-muted-foreground', className)} {...props} />;\n}\nexport { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut };\n","/**\n * Command — base wrapper around the internal Base UI command primitive.\n *\n * What this layer adds on top of the primitive:\n * - One standard, tokenized surface inset across the root, groups, and rows.\n * - Design-system typography and density-aware row sizing for admin commands.\n * - Stable BEM hooks on the wrapped root, input, list, group, item, separator,\n * and empty regions while retaining each primitive part's original props.\n * - Preserves the compound-component pattern: consumers compose\n * `<Command><CommandList><CommandGroup><CommandItem/></CommandGroup></CommandList></Command>`.\n *\n * For the recurring \"popover-with-command-list\" pattern, prefer\n * `base/popover-menu/` which composes both wrappers and adds slots.\n */\nimport * as React from 'react';\nimport { Check } from 'lucide-react';\n\nimport {\n\tCommand as CommandPrimitive,\n\tCommandEmpty as CommandEmptyPrimitive,\n\tCommandGroup as CommandGroupPrimitive,\n\tCommandInput as CommandInputPrimitive,\n\tCommandItem as CommandItemPrimitive,\n\tCommandList as CommandListPrimitive,\n\tCommandSeparator as CommandSeparatorPrimitive,\n\tCommandShortcut as CommandShortcutPrimitive,\n} from '../../ui/command';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { collectionRecipes, collectionRowClasses, popoverRecipes, surfaceInsetClasses, type CollectionDensity } from '../popover/popover.recipes';\nimport { Input } from '../text-inputs/input';\nimport { CollectionLabel } from '../popover/collection-content';\nimport { useTypographyConfig } from '../../../lib/ui-provider';\nimport { textSizes } from '../../typography/text.styles';\n\ntype CommandRootProps = React.ComponentProps<typeof CommandPrimitive>;\n\nexport type CommandInset = 'default' | 'compact' | 'flush';\n\nexport type CommandProps = CommandRootProps & {\n\t/**\n\t * Surface inset role. Defaults to the compact collection shell.\n\t * Use `default` explicitly for substantive content, or `flush` when regions own their insets.\n\t */\n\tinset?: CommandInset;\n};\n\nconst commandInsetClasses: Record<CommandInset, string> = {\n\tdefault: surfaceInsetClasses.default,\n\tcompact: surfaceInsetClasses.compact,\n\t// The root is flush; search and list regions each own one collection inset.\n\tflush: 'p-0 [&_[data-slot=command-input-wrapper]]:px-surface-xs [&_[data-slot=command-input-wrapper]]:pt-surface-xs',\n};\n\nconst CommandInsetContext = React.createContext<CommandInset>('compact');\n\n/** Tokenized command surface with semantic default, compact, and flush inset roles. */\nfunction Command({ className, inset = 'compact', ...props }: CommandProps) {\n\treturn (\n <CommandInsetContext.Provider value={inset}>\n\t\t<CommandPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'command--component',\n\t\t\t\t// One standard surface inset keeps search controls, headings, row\n\t\t\t\t// highlights, and separators on the same surface grid.\n\t\t\t\t'gap-0 rounded-radius bg-popover text-popover-foreground',\n\t\t\t\tcommandInsetClasses[inset],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n </CommandInsetContext.Provider>\n\t);\n}\n\ntype CommandListProps = React.ComponentProps<typeof CommandListPrimitive>;\n\ntype CommandInputProps = React.ComponentProps<typeof CommandInputPrimitive>;\n\nfunction CommandInput({ className, asChild, children, ...props }: CommandInputProps) {\n\treturn (\n\t\t<CommandInputPrimitive\n\t\t\tclassName={cn('command-input--component', className)}\n\t\t\t{...props}\n\t\t\tasChild\n\t\t>\n {asChild ? children : <Input />}\n </CommandInputPrimitive>\n\t);\n}\n\nfunction CommandList({ className, ...props }: CommandListProps) {\n const inset = React.useContext(CommandInsetContext);\n return (\n\t\t<CommandListPrimitive\n\t\t\tclassName={cn('command-list--component max-h-72', inset === 'flush' ? surfaceInsetClasses.compact : 'p-0', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\ntype CommandGroupProps = React.ComponentProps<typeof CommandGroupPrimitive>;\n\nfunction CommandGroupHeading({ children }: { children: React.ReactNode }) {\n\tif (\n\t\ttypeof children !== 'string' &&\n\t\ttypeof children !== 'number' &&\n\t\ttypeof children !== 'bigint'\n\t) {\n\t\treturn children;\n\t}\n\n\t// A group caption is supporting copy, not another row: the compact secondary\n\t// role matches menu and listbox captions and keeps it from reading as an item.\n\treturn (\n\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" weight=\"medium\" lineHeight=\"tight\" className=\"command-group--heading\">\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nfunction CommandGroup({ className, heading, ...props }: CommandGroupProps) {\n\tconst resolvedHeading = heading == null\n\t\t? heading\n\t\t: <CommandGroupHeading>{heading}</CommandGroupHeading>;\n\n\treturn (\n\t\t<CommandGroupPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'command-group--component p-0 [&_[cmdk-group-heading]]:px-row-x [&_[cmdk-group-heading]]:pt-space-md [&_[cmdk-group-heading]]:pb-space-xs',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\theading={resolvedHeading}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\ntype CommandItemProps = React.ComponentProps<typeof CommandItemPrimitive> & {\n\t/** Vertical row rhythm, independent from label typography. */\n\tdensity?: CollectionDensity;\n\t/** Persistent selection, distinct from the keyboard-highlight state. */\n\t'data-checked'?: boolean | 'true' | 'false';\n};\n\nfunction CommandItem({ children, className, density = 'default', ...props }: CommandItemProps) {\n\tconst {defaultTextSize}=useTypographyConfig();\n\tconst checked = props['data-checked'] === true || props['data-checked'] === 'true';\n\t// Same selection ink as Select and Combobox options: the row's own foreground.\n\tconst indicator = checked ? <Check aria-hidden=\"true\" data-slot=\"command-item-indicator\" className=\"ms-auto size-icon shrink-0 self-center\" /> : null;\n\tconst content: CommandItemProps['children'] = props.asChild ? children : typeof children === 'function'\n\t\t? context => <>{children(context)}{indicator}</>\n\t\t: <>{typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint'\n\t\t\t? <CollectionLabel className=\"command-item--text min-w-0 flex-1\">{children}</CollectionLabel>\n\t\t\t: children}{indicator}</>;\n\treturn <CommandItemPrimitive\n\t\tclassName={cn('command-item--component [&>svg]:size-icon [&>svg]:shrink-0 [&>svg]:text-muted-foreground', collectionRowClasses(density), collectionRecipes.disabled, textSizes[defaultTextSize??'sm'],className)}\n\t\t{...props}\n\t\tchildren={content}\n\t/>;\n}\n\ntype CommandEmptyProps = React.ComponentProps<typeof CommandEmptyPrimitive>;\n\nfunction CommandEmpty({ children, className, ...props }: CommandEmptyProps) {\n\treturn (\n\t\t<CommandEmptyPrimitive\n\t\t\tclassName={cn('command-empty--component px-row-x py-space-xl text-center', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Text tag=\"span\" type=\"secondary\" className=\"command-empty--text\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</CommandEmptyPrimitive>\n\t);\n}\n\ntype CommandShortcutProps = React.ComponentProps<typeof CommandShortcutPrimitive>;\n\ntype CommandSeparatorProps = React.ComponentProps<typeof CommandSeparatorPrimitive>;\n\n/** Presentational divider that remains hidden from the Command listbox tree. */\nfunction CommandSeparator({ className, ...props }: CommandSeparatorProps) {\n return <CommandSeparatorPrimitive\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('command-separator--component command-separator--line', popoverRecipes.separator, className)}\n {...props}\n />;\n}\n\nCommandSeparator.displayName = 'CommandSeparator';\n\nfunction CommandShortcut({ children, className, ...props }: CommandShortcutProps) {\n\treturn (\n\t\t<CommandShortcutPrimitive\n\t\t\tclassName={cn('command-shortcut--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"command-shortcut--text\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</CommandShortcutPrimitive>\n\t);\n}\n\nCommand.displayName = 'Command';\nCommandInput.displayName = 'CommandInput';\nCommandList.displayName = 'CommandList';\nCommandGroup.displayName = 'CommandGroup';\nCommandItem.displayName = 'CommandItem';\nCommandEmpty.displayName = 'CommandEmpty';\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n\tCommandSeparator,\n\tCommandShortcut,\n};\n"],"mappings":"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"}
|