@cloudflare/kumo 1.18.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +329 -0
- package/ai/component-registry.json +907 -159
- package/ai/component-registry.md +1929 -598
- package/ai/schemas.ts +58 -14
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +206 -27
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +2003 -1948
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/Legend-ibjxhfm9pn2vrb6f.js +430 -0
- package/dist/chunks/Legend-ibjxhfm9pn2vrb6f.js.map +1 -0
- package/dist/chunks/autocomplete-cs3fwy6lwzlyirpq.js +174 -0
- package/dist/chunks/autocomplete-cs3fwy6lwzlyirpq.js.map +1 -0
- package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js → breadcrumbs-cxcwf2l1ki3ffg5d.js} +2 -2
- package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js.map → breadcrumbs-cxcwf2l1ki3ffg5d.js.map} +1 -1
- package/dist/chunks/{button-cdxnqcgzwko8ooha.js → button-6by9ntsa3nj553mq.js} +18 -19
- package/dist/chunks/button-6by9ntsa3nj553mq.js.map +1 -0
- package/dist/chunks/checkbox-eren6w2csum1xghg.js +210 -0
- package/dist/chunks/checkbox-eren6w2csum1xghg.js.map +1 -0
- package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js → clipboard-text-f9q753udny1uyxr5.js} +47 -43
- package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js.map → clipboard-text-f9q753udny1uyxr5.js.map} +1 -1
- package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js → cloudflare-logo-pbavoe1wu8nr5c4n.js} +9 -9
- package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js.map → cloudflare-logo-pbavoe1wu8nr5c4n.js.map} +1 -1
- package/dist/chunks/collapsible-k8urhi16pg90jvxa.js +71 -0
- package/dist/chunks/collapsible-k8urhi16pg90jvxa.js.map +1 -0
- package/dist/chunks/{combobox-he2hd9e2ruknq5mp.js → combobox-n9qht9h9ag6kh5sn.js} +142 -118
- package/dist/chunks/combobox-n9qht9h9ag6kh5sn.js.map +1 -0
- package/dist/chunks/{command-palette-jc1w07jwakxvj23a.js → command-palette-gk9m34ymp2b3hfc5.js} +130 -130
- package/dist/chunks/command-palette-gk9m34ymp2b3hfc5.js.map +1 -0
- package/dist/chunks/{date-range-picker-j318zxjyqz4o3dak.js → date-range-picker-c9wnx9tbwohai7jy.js} +26 -26
- package/dist/chunks/{date-range-picker-j318zxjyqz4o3dak.js.map → date-range-picker-c9wnx9tbwohai7jy.js.map} +1 -1
- package/dist/chunks/{dialog-oqh8l3l3zutpibxx.js → dialog-94v7wiz7j3in6528.js} +25 -25
- package/dist/chunks/dialog-94v7wiz7j3in6528.js.map +1 -0
- package/dist/chunks/dropdown-zbax0zowy6m9zhmt.js +302 -0
- package/dist/chunks/dropdown-zbax0zowy6m9zhmt.js.map +1 -0
- package/dist/chunks/{empty-cj898km1r8xwuw44.js → empty-kpymw59thjf2ip8g.js} +9 -9
- package/dist/chunks/{empty-cj898km1r8xwuw44.js.map → empty-kpymw59thjf2ip8g.js.map} +1 -1
- package/dist/chunks/{field-krp6z6vfbkrvufz2.js → field-lnj619xpe8zjd26r.js} +7 -7
- package/dist/chunks/{field-krp6z6vfbkrvufz2.js.map → field-lnj619xpe8zjd26r.js.map} +1 -1
- package/dist/chunks/{grid-m9r71jxo2b8q1972.js → grid-hj1ylz16p7g5uelh.js} +2 -2
- package/dist/chunks/{grid-m9r71jxo2b8q1972.js.map → grid-hj1ylz16p7g5uelh.js.map} +1 -1
- package/dist/chunks/{input-area-no30c09udyjxshu5.js → input-area-h8xbqturegdfm1mi.js} +4 -4
- package/dist/chunks/{input-area-no30c09udyjxshu5.js.map → input-area-h8xbqturegdfm1mi.js.map} +1 -1
- package/dist/chunks/input-group-dh4pg8p20rh4mdi0.js +505 -0
- package/dist/chunks/input-group-dh4pg8p20rh4mdi0.js.map +1 -0
- package/dist/chunks/{input-h48k3uagzrgb98au.js → input-lpa5fc75tgrraafv.js} +45 -45
- package/dist/chunks/input-lpa5fc75tgrraafv.js.map +1 -0
- package/dist/chunks/label-be8m7qzlakzig2sl.js +68 -0
- package/dist/chunks/{label-latndvb1ngem7we8.js.map → label-be8m7qzlakzig2sl.js.map} +1 -1
- package/dist/chunks/layer-card-hvivdirwwnyq88wa.js +46 -0
- package/dist/chunks/layer-card-hvivdirwwnyq88wa.js.map +1 -0
- package/dist/chunks/{link-hn5ejal7nhh0o0b4.js → link-kt74pxkud4olmcer.js} +4 -4
- package/dist/chunks/{link-hn5ejal7nhh0o0b4.js.map → link-kt74pxkud4olmcer.js.map} +1 -1
- package/dist/chunks/menubar-hwev159bm4rw9ixk.js +96 -0
- package/dist/chunks/menubar-hwev159bm4rw9ixk.js.map +1 -0
- package/dist/chunks/{meter-gfa1hz9fhjnvx784.js → meter-bqetlujwg8gm2u7m.js} +2 -2
- package/dist/chunks/{meter-gfa1hz9fhjnvx784.js.map → meter-bqetlujwg8gm2u7m.js.map} +1 -1
- package/dist/chunks/pagination-ho8zesqfyp6ckmrl.js +266 -0
- package/dist/chunks/pagination-ho8zesqfyp6ckmrl.js.map +1 -0
- package/dist/chunks/{popover-h300w4vit0s2ayej.js → popover-iayd9ya5yhujz6ve.js} +69 -73
- package/dist/chunks/popover-iayd9ya5yhujz6ve.js.map +1 -0
- package/dist/chunks/{radio-jouttv89lbvhs55r.js → radio-datzh3pilz8ojak1.js} +87 -75
- package/dist/chunks/radio-datzh3pilz8ojak1.js.map +1 -0
- package/dist/chunks/select-kpfbib9l8xrrmzpz.js +215 -0
- package/dist/chunks/select-kpfbib9l8xrrmzpz.js.map +1 -0
- package/dist/chunks/{sensitive-input-hd4tpqkzifad1yca.js → sensitive-input-i1upqytzaw2pus8v.js} +42 -42
- package/dist/chunks/sensitive-input-i1upqytzaw2pus8v.js.map +1 -0
- package/dist/chunks/{sidebar-hljy3ssm8itc0ucx.js → sidebar-kh37grvfxto14ek6.js} +146 -147
- package/dist/chunks/sidebar-kh37grvfxto14ek6.js.map +1 -0
- package/dist/chunks/surface-o63tktyrifcjejyb.js +29 -0
- package/dist/chunks/surface-o63tktyrifcjejyb.js.map +1 -0
- package/dist/chunks/{switch-ihaydbzem62bey4p.js → switch-lclhiplr9zqf73tj.js} +89 -81
- package/dist/chunks/switch-lclhiplr9zqf73tj.js.map +1 -0
- package/dist/chunks/table-fyy8gl875yyevqs3.js +207 -0
- package/dist/chunks/table-fyy8gl875yyevqs3.js.map +1 -0
- package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js +102 -0
- package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js.map +1 -0
- package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js → tabs-jywwt8ebjqjkux75.js} +21 -21
- package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js.map → tabs-jywwt8ebjqjkux75.js.map} +1 -1
- package/dist/chunks/{text-nmyi1rkwdj37f30f.js → text-f7t467waymhb30sx.js} +8 -8
- package/dist/chunks/text-f7t467waymhb30sx.js.map +1 -0
- package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js → toast-h573o0tc7tefivk2.js} +12 -12
- package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js.map → toast-h573o0tc7tefivk2.js.map} +1 -1
- package/dist/chunks/{tooltip-belkznz8t8333h5f.js → tooltip-odudhkxe282wxinq.js} +38 -37
- package/dist/chunks/tooltip-odudhkxe282wxinq.js.map +1 -0
- package/dist/chunks/vendor-base-ui-ie71jahf0czyf58j.js +24638 -0
- package/dist/chunks/vendor-base-ui-ie71jahf0czyf58j.js.map +1 -0
- package/dist/chunks/vendor-floating-ui-dwag5e88viikh2zs.js +1311 -0
- package/dist/chunks/vendor-floating-ui-dwag5e88viikh2zs.js.map +1 -0
- package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js +534 -0
- package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js.map +1 -0
- package/dist/code.js +1 -1
- package/dist/components/autocomplete.js +9 -0
- package/dist/components/autocomplete.js.map +1 -0
- package/dist/components/breadcrumbs.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/chart.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/clipboard-text.js +1 -1
- package/dist/components/cloudflare-logo.js +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +1 -1
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/flow.js +2 -2
- package/dist/components/flow.js.map +1 -1
- package/dist/components/grid.js +1 -1
- package/dist/components/input-group.js +8 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input.js +9 -7
- package/dist/components/label.js +1 -1
- package/dist/components/layer-card.js +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/menubar.js +1 -1
- package/dist/components/meter.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sensitive-input.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/surface.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table-of-contents.js +8 -0
- package/dist/components/table-of-contents.js.map +1 -0
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/index.js +148 -139
- package/dist/index.js.map +1 -1
- package/dist/primitives/accordion.js +1 -1
- package/dist/primitives/alert-dialog.js +1 -1
- package/dist/primitives/autocomplete.js +1 -1
- package/dist/primitives/avatar.js +1 -1
- package/dist/primitives/button.js +1 -1
- package/dist/primitives/checkbox-group.js +1 -1
- package/dist/primitives/checkbox.js +1 -1
- package/dist/primitives/collapsible.js +1 -1
- package/dist/primitives/combobox.js +1 -1
- package/dist/primitives/context-menu.js +1 -1
- package/dist/primitives/csp-provider.js +1 -1
- package/dist/primitives/dialog.js +1 -1
- package/dist/primitives/direction-provider.js +1 -1
- package/dist/primitives/drawer.js +2 -2
- package/dist/primitives/field.js +1 -1
- package/dist/primitives/fieldset.js +1 -1
- package/dist/primitives/form.js +1 -1
- package/dist/primitives/input.js +1 -1
- package/dist/primitives/menu.js +1 -1
- package/dist/primitives/menubar.js +1 -1
- package/dist/primitives/meter.js +1 -1
- package/dist/primitives/navigation-menu.js +1 -1
- package/dist/primitives/number-field.js +1 -1
- package/dist/primitives/otp-field.js +6 -0
- package/dist/primitives/otp-field.js.map +1 -0
- package/dist/primitives/popover.js +1 -1
- package/dist/primitives/preview-card.js +2 -2
- package/dist/primitives/progress.js +1 -1
- package/dist/primitives/radio-group.js +1 -1
- package/dist/primitives/radio.js +1 -1
- package/dist/primitives/scroll-area.js +1 -1
- package/dist/primitives/select.js +1 -1
- package/dist/primitives/separator.js +1 -1
- package/dist/primitives/slider.js +1 -1
- package/dist/primitives/switch.js +1 -1
- package/dist/primitives/tabs.js +1 -1
- package/dist/primitives/toast.js +1 -1
- package/dist/primitives/toggle-group.js +1 -1
- package/dist/primitives/toggle.js +1 -1
- package/dist/primitives/toolbar.js +1 -1
- package/dist/primitives/tooltip.js +1 -1
- package/dist/primitives.js +22 -21
- package/dist/scripts/theme-generator/config.d.ts.map +1 -1
- package/dist/scripts/theme-generator/config.js +13 -3
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/components/autocomplete/autocomplete.d.ts +180 -0
- package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -0
- package/dist/src/components/autocomplete/index.d.ts +2 -0
- package/dist/src/components/autocomplete/index.d.ts.map +1 -0
- package/dist/src/components/button/button.d.ts +3 -3
- package/dist/src/components/button/button.d.ts.map +1 -1
- package/dist/src/components/chart/Color.d.ts +36 -52
- package/dist/src/components/chart/Color.d.ts.map +1 -1
- package/dist/src/components/chart/EChart.d.ts +18 -2
- package/dist/src/components/chart/EChart.d.ts.map +1 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
- package/dist/src/components/chart/index.d.ts +1 -1
- package/dist/src/components/chart/index.d.ts.map +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts +37 -14
- package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/src/components/checkbox/index.d.ts +1 -1
- package/dist/src/components/checkbox/index.d.ts.map +1 -1
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
- package/dist/src/components/collapsible/collapsible.d.ts +77 -40
- package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
- package/dist/src/components/collapsible/index.d.ts +1 -1
- package/dist/src/components/collapsible/index.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts +19 -3
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/command-palette/command-palette.d.ts +2 -11
- package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/src/components/command-palette/index.d.ts +1 -1
- package/dist/src/components/command-palette/index.d.ts.map +1 -1
- package/dist/src/components/command-palette/types.d.ts +13 -1
- package/dist/src/components/command-palette/types.d.ts.map +1 -1
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/src/components/input/index.d.ts +16 -1
- package/dist/src/components/input/index.d.ts.map +1 -1
- package/dist/src/components/input/input.d.ts +2 -2
- package/dist/src/components/input/input.d.ts.map +1 -1
- package/dist/src/components/input-group/context.d.ts +96 -0
- package/dist/src/components/input-group/context.d.ts.map +1 -0
- package/dist/src/components/input-group/index.d.ts +2 -0
- package/dist/src/components/input-group/index.d.ts.map +1 -0
- package/dist/src/components/input-group/input-group-addon.d.ts +15 -0
- package/dist/src/components/input-group/input-group-addon.d.ts.map +1 -0
- package/dist/src/components/input-group/input-group-button.d.ts +36 -0
- package/dist/src/components/input-group/input-group-button.d.ts.map +1 -0
- package/dist/src/components/input-group/input-group-input.d.ts +9 -0
- package/dist/src/components/input-group/input-group-input.d.ts.map +1 -0
- package/dist/src/components/input-group/input-group-suffix.d.ts +13 -0
- package/dist/src/components/input-group/input-group-suffix.d.ts.map +1 -0
- package/dist/src/components/input-group/input-group.d.ts +43 -0
- package/dist/src/components/input-group/input-group.d.ts.map +1 -0
- package/dist/src/components/label/label.d.ts.map +1 -1
- package/dist/src/components/layer-card/layer-card.d.ts +39 -5
- package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
- package/dist/src/components/menubar/menubar.d.ts.map +1 -1
- package/dist/src/components/pagination/pagination.d.ts +51 -1
- package/dist/src/components/pagination/pagination.d.ts.map +1 -1
- package/dist/src/components/popover/popover.d.ts +35 -8
- package/dist/src/components/popover/popover.d.ts.map +1 -1
- package/dist/src/components/radio/index.d.ts +1 -1
- package/dist/src/components/radio/index.d.ts.map +1 -1
- package/dist/src/components/radio/radio.d.ts +44 -8
- package/dist/src/components/radio/radio.d.ts.map +1 -1
- package/dist/src/components/select/select.d.ts +52 -8
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts +2 -2
- package/dist/src/components/sidebar/sidebar.d.ts +2 -2
- package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/src/components/surface/index.d.ts +3 -0
- package/dist/src/components/surface/index.d.ts.map +1 -1
- package/dist/src/components/surface/surface.d.ts +14 -10
- package/dist/src/components/surface/surface.d.ts.map +1 -1
- package/dist/src/components/switch/index.d.ts +1 -1
- package/dist/src/components/switch/index.d.ts.map +1 -1
- package/dist/src/components/switch/switch.d.ts +31 -3
- package/dist/src/components/switch/switch.d.ts.map +1 -1
- package/dist/src/components/table/table.d.ts +17 -2
- package/dist/src/components/table/table.d.ts.map +1 -1
- package/dist/src/components/table-of-contents/index.d.ts +2 -0
- package/dist/src/components/table-of-contents/index.d.ts.map +1 -0
- package/dist/src/components/table-of-contents/table-of-contents.d.ts +72 -0
- package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -0
- package/dist/src/components/text/text.d.ts +34 -6
- package/dist/src/components/text/text.d.ts.map +1 -1
- package/dist/src/components/text/text.type-spec.d.ts +44 -0
- package/dist/src/components/text/text.type-spec.d.ts.map +1 -0
- package/dist/src/components/toast/toast.d.ts +1 -1
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/src/components/tooltip/tooltip.d.ts +15 -6
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/src/index.d.ts +14 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/primitives/index.d.ts +1 -0
- package/dist/src/primitives/index.d.ts.map +1 -1
- package/dist/src/primitives/otp-field.d.ts +13 -0
- package/dist/src/primitives/otp-field.d.ts.map +1 -0
- package/dist/styles/kumo-binding.css +19 -0
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/kumo.css +2 -2
- package/dist/styles/theme-kumo.css +13 -6
- package/package.json +18 -2
- package/scripts/component-registry/discovery.ts +1 -0
- package/scripts/component-registry/index.test.ts +265 -0
- package/scripts/component-registry/index.ts +14 -0
- package/scripts/component-registry/metadata.ts +55 -7
- package/scripts/component-registry/sub-components.ts +81 -50
- package/scripts/component-registry/types.ts +2 -0
- package/scripts/theme-generator/config.ts +18 -6
- package/dist/chunks/Legend-o0ntojbaplmszwk0.js +0 -421
- package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +0 -1
- package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +0 -1
- package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js +0 -211
- package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +0 -1
- package/dist/chunks/collapsible-jhzee3ks51d3xowb.js +0 -58
- package/dist/chunks/collapsible-jhzee3ks51d3xowb.js.map +0 -1
- package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +0 -1
- package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +0 -1
- package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +0 -1
- package/dist/chunks/dropdown-ncwhcd912vmone8k.js +0 -300
- package/dist/chunks/dropdown-ncwhcd912vmone8k.js.map +0 -1
- package/dist/chunks/input-group-lxdd09p60cf27pe1.js +0 -111
- package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +0 -1
- package/dist/chunks/input-h48k3uagzrgb98au.js.map +0 -1
- package/dist/chunks/label-latndvb1ngem7we8.js +0 -62
- package/dist/chunks/layer-card-l5yjvrxry1dhte57.js +0 -44
- package/dist/chunks/layer-card-l5yjvrxry1dhte57.js.map +0 -1
- package/dist/chunks/menubar-f1pilzooe5mue7c4.js +0 -92
- package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +0 -1
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +0 -243
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +0 -1
- package/dist/chunks/popover-h300w4vit0s2ayej.js.map +0 -1
- package/dist/chunks/radio-jouttv89lbvhs55r.js.map +0 -1
- package/dist/chunks/select-kva5ru5f673kah1m.js +0 -179
- package/dist/chunks/select-kva5ru5f673kah1m.js.map +0 -1
- package/dist/chunks/sensitive-input-hd4tpqkzifad1yca.js.map +0 -1
- package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +0 -1
- package/dist/chunks/surface-cilvbyhmyujz1bee.js +0 -36
- package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +0 -1
- package/dist/chunks/switch-ihaydbzem62bey4p.js.map +0 -1
- package/dist/chunks/table-inweecadl3her7pd.js +0 -183
- package/dist/chunks/table-inweecadl3her7pd.js.map +0 -1
- package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +0 -1
- package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +0 -1
- package/dist/chunks/vendor-base-ui-k7bzesq81ie36nya.js +0 -22813
- package/dist/chunks/vendor-base-ui-k7bzesq81ie36nya.js.map +0 -1
- package/dist/chunks/vendor-floating-ui-gr9m6tsa1cpqwn99.js +0 -1286
- package/dist/chunks/vendor-floating-ui-gr9m6tsa1cpqwn99.js.map +0 -1
- package/dist/chunks/vendor-utils-fxk97j6xi1g42z2v.js +0 -740
- package/dist/chunks/vendor-utils-fxk97j6xi1g42z2v.js.map +0 -1
- package/dist/src/components/input/input-group.d.ts +0 -39
- package/dist/src/components/input/input-group.d.ts.map +0 -1
package/dist/chunks/{command-palette-jc1w07jwakxvj23a.js → command-palette-gk9m34ymp2b3hfc5.js}
RENAMED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { forwardRef as K, useContext as N, createContext as
|
|
2
|
+
import { jsx as t, jsxs as g, Fragment as E } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef as K, useContext as N, createContext as w, useCallback as b, useRef as T } from "react";
|
|
4
4
|
import { CaretRightIcon as M, ArrowSquareOutIcon as H, ArrowRightIcon as _, MagnifyingGlassIcon as F } from "@phosphor-icons/react";
|
|
5
|
-
import {
|
|
5
|
+
import { L as G } from "./layer-card-hvivdirwwnyq88wa.js";
|
|
6
6
|
import { L as j } from "./loader-hr2w7cpqeev3p3vl.js";
|
|
7
7
|
import { c as m } from "./cn-ct4n7r74mh8y0f48.js";
|
|
8
8
|
import { u as U } from "./portal-provider-hwmkdmkpvct0cb76.js";
|
|
9
|
-
import {
|
|
10
|
-
const C =
|
|
9
|
+
import { a6 as q, a8 as O, ab as V, bt as v, aa as $, a9 as z, ac as B, bu as J, aq as Q, av as W, aw as X, ax as Y } from "./vendor-base-ui-ie71jahf0czyf58j.js";
|
|
10
|
+
const C = w({});
|
|
11
11
|
function I({
|
|
12
|
-
open:
|
|
12
|
+
open: e,
|
|
13
13
|
onOpenChange: n,
|
|
14
14
|
onBackdropClick: o,
|
|
15
|
-
children:
|
|
15
|
+
children: l,
|
|
16
16
|
container: s
|
|
17
17
|
}) {
|
|
18
18
|
const u = U(), d = s ?? u ?? void 0, r = (c) => {
|
|
@@ -20,18 +20,18 @@ function I({
|
|
|
20
20
|
}, a = b(() => {
|
|
21
21
|
n(!1);
|
|
22
22
|
}, [n]);
|
|
23
|
-
return /* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
23
|
+
return /* @__PURE__ */ t(Q, { open: e, onOpenChange: n, modal: !0, children: /* @__PURE__ */ g(W, { container: d, children: [
|
|
24
|
+
/* @__PURE__ */ t(
|
|
25
|
+
X,
|
|
26
26
|
{
|
|
27
27
|
className: "fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0",
|
|
28
28
|
onClick: r
|
|
29
29
|
}
|
|
30
30
|
),
|
|
31
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ t(
|
|
32
32
|
G,
|
|
33
33
|
{
|
|
34
|
-
render: /* @__PURE__ */
|
|
34
|
+
render: /* @__PURE__ */ t(Y, {}),
|
|
35
35
|
className: m(
|
|
36
36
|
"fixed top-[10vh] left-1/2 w-full max-w-2xl -translate-x-1/2",
|
|
37
37
|
"overflow-hidden rounded-lg",
|
|
@@ -41,34 +41,34 @@ function I({
|
|
|
41
41
|
transitionProperty: "scale, opacity",
|
|
42
42
|
transitionTimingFunction: "var(--default-transition-timing-function)"
|
|
43
43
|
},
|
|
44
|
-
children: /* @__PURE__ */
|
|
44
|
+
children: /* @__PURE__ */ t(C.Provider, { value: { onClose: a }, children: l })
|
|
45
45
|
}
|
|
46
46
|
)
|
|
47
47
|
] }) });
|
|
48
48
|
}
|
|
49
|
-
function
|
|
50
|
-
open:
|
|
49
|
+
function Z({
|
|
50
|
+
open: e,
|
|
51
51
|
onOpenChange: n,
|
|
52
52
|
onBackdropClick: o,
|
|
53
|
-
children:
|
|
53
|
+
children: l,
|
|
54
54
|
items: s,
|
|
55
55
|
value: u,
|
|
56
56
|
onValueChange: d,
|
|
57
57
|
onItemHighlighted: r,
|
|
58
58
|
itemToStringValue: a,
|
|
59
59
|
filter: c,
|
|
60
|
-
onSelect:
|
|
60
|
+
onSelect: i,
|
|
61
61
|
getSelectableItems: f,
|
|
62
62
|
container: h
|
|
63
63
|
}) {
|
|
64
|
-
return /* @__PURE__ */
|
|
64
|
+
return /* @__PURE__ */ t(
|
|
65
65
|
I,
|
|
66
66
|
{
|
|
67
|
-
open:
|
|
67
|
+
open: e,
|
|
68
68
|
onOpenChange: n,
|
|
69
69
|
onBackdropClick: o,
|
|
70
70
|
container: h,
|
|
71
|
-
children: /* @__PURE__ */
|
|
71
|
+
children: /* @__PURE__ */ t(
|
|
72
72
|
A,
|
|
73
73
|
{
|
|
74
74
|
items: s,
|
|
@@ -77,39 +77,39 @@ function Y({
|
|
|
77
77
|
onItemHighlighted: r,
|
|
78
78
|
itemToStringValue: a,
|
|
79
79
|
filter: c,
|
|
80
|
-
open:
|
|
81
|
-
onSelect:
|
|
80
|
+
open: e,
|
|
81
|
+
onSelect: i,
|
|
82
82
|
getSelectableItems: f,
|
|
83
|
-
children:
|
|
83
|
+
children: l
|
|
84
84
|
}
|
|
85
85
|
)
|
|
86
86
|
}
|
|
87
87
|
);
|
|
88
88
|
}
|
|
89
|
-
function
|
|
90
|
-
children:
|
|
89
|
+
function S({
|
|
90
|
+
children: e,
|
|
91
91
|
leading: n,
|
|
92
92
|
trailing: o
|
|
93
93
|
}) {
|
|
94
|
-
return /* @__PURE__ */ g("div", { className: "flex items-center gap-3 bg-kumo-base px-4 py-3", children: [
|
|
95
|
-
n ?? /* @__PURE__ */
|
|
94
|
+
return /* @__PURE__ */ g("div", { className: "flex items-center gap-3 bg-kumo-base px-4 py-3 focus-within:ring-2 focus-within:ring-kumo-brand", children: [
|
|
95
|
+
n ?? /* @__PURE__ */ t(
|
|
96
96
|
F,
|
|
97
97
|
{
|
|
98
98
|
className: "h-4 w-4 text-kumo-subtle",
|
|
99
99
|
weight: "bold"
|
|
100
100
|
}
|
|
101
101
|
),
|
|
102
|
-
|
|
102
|
+
e,
|
|
103
103
|
o
|
|
104
104
|
] });
|
|
105
105
|
}
|
|
106
|
-
const D = K(function({ children: n, className: o },
|
|
107
|
-
return /* @__PURE__ */
|
|
106
|
+
const D = K(function({ children: n, className: o }, l) {
|
|
107
|
+
return /* @__PURE__ */ t(
|
|
108
108
|
"div",
|
|
109
109
|
{
|
|
110
|
-
ref:
|
|
110
|
+
ref: l,
|
|
111
111
|
className: m(
|
|
112
|
-
"min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-
|
|
112
|
+
"min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-hairline",
|
|
113
113
|
o
|
|
114
114
|
),
|
|
115
115
|
children: n
|
|
@@ -117,39 +117,39 @@ const D = K(function({ children: n, className: o }, i) {
|
|
|
117
117
|
);
|
|
118
118
|
});
|
|
119
119
|
D.displayName = "CommandPalette.List";
|
|
120
|
-
function
|
|
121
|
-
children:
|
|
120
|
+
function tt({
|
|
121
|
+
children: e,
|
|
122
122
|
className: n,
|
|
123
123
|
...o
|
|
124
124
|
}) {
|
|
125
|
-
return /* @__PURE__ */
|
|
125
|
+
return /* @__PURE__ */ t(z, { className: m("space-y-0.5", n), ...o, children: e });
|
|
126
126
|
}
|
|
127
|
-
function
|
|
128
|
-
children:
|
|
127
|
+
function et({
|
|
128
|
+
children: e,
|
|
129
129
|
className: n
|
|
130
130
|
}) {
|
|
131
|
-
return /* @__PURE__ */
|
|
132
|
-
|
|
131
|
+
return /* @__PURE__ */ t(
|
|
132
|
+
$,
|
|
133
133
|
{
|
|
134
134
|
className: m(
|
|
135
135
|
"mb-2 px-2 pt-1 text-xs font-semibold text-kumo-strong",
|
|
136
136
|
n
|
|
137
137
|
),
|
|
138
|
-
children:
|
|
138
|
+
children: e
|
|
139
139
|
}
|
|
140
140
|
);
|
|
141
141
|
}
|
|
142
|
-
function
|
|
143
|
-
value:
|
|
142
|
+
function nt({
|
|
143
|
+
value: e,
|
|
144
144
|
disabled: n,
|
|
145
145
|
children: o,
|
|
146
|
-
className:
|
|
146
|
+
className: l,
|
|
147
147
|
onClick: s
|
|
148
148
|
}) {
|
|
149
|
-
return /* @__PURE__ */
|
|
150
|
-
|
|
149
|
+
return /* @__PURE__ */ t(
|
|
150
|
+
v,
|
|
151
151
|
{
|
|
152
|
-
value:
|
|
152
|
+
value: e,
|
|
153
153
|
disabled: n,
|
|
154
154
|
onClick: s,
|
|
155
155
|
className: m(
|
|
@@ -157,84 +157,84 @@ function ne({
|
|
|
157
157
|
"cursor-pointer data-[highlighted]:bg-kumo-overlay",
|
|
158
158
|
"rounded-lg",
|
|
159
159
|
n && "cursor-default opacity-50",
|
|
160
|
-
|
|
160
|
+
l
|
|
161
161
|
),
|
|
162
162
|
children: o
|
|
163
163
|
}
|
|
164
164
|
);
|
|
165
165
|
}
|
|
166
|
-
function
|
|
167
|
-
return /* @__PURE__ */
|
|
166
|
+
function ot({ children: e }) {
|
|
167
|
+
return /* @__PURE__ */ t(V, { children: /* @__PURE__ */ t("div", { className: "p-8 text-center", children: /* @__PURE__ */ t("p", { className: "text-kumo-strong", children: e ?? "No results found" }) }) });
|
|
168
168
|
}
|
|
169
|
-
function
|
|
170
|
-
return /* @__PURE__ */
|
|
169
|
+
function at({ children: e }) {
|
|
170
|
+
return /* @__PURE__ */ t("div", { className: "flex items-center justify-center p-8", children: e ?? /* @__PURE__ */ t(j, { size: 24 }) });
|
|
171
171
|
}
|
|
172
|
-
function
|
|
173
|
-
return /* @__PURE__ */
|
|
172
|
+
function st({ children: e }) {
|
|
173
|
+
return /* @__PURE__ */ t("div", { className: "flex items-center justify-between rounded-b-lg bg-kumo-elevated px-4 py-3 text-xs text-kumo-strong", children: e });
|
|
174
174
|
}
|
|
175
175
|
function y({
|
|
176
|
-
text:
|
|
176
|
+
text: e,
|
|
177
177
|
highlights: n,
|
|
178
178
|
className: o
|
|
179
179
|
}) {
|
|
180
180
|
if (!n || n.length === 0)
|
|
181
|
-
return /* @__PURE__ */
|
|
182
|
-
const
|
|
183
|
-
for (const r of
|
|
181
|
+
return /* @__PURE__ */ t("span", { className: o, children: e });
|
|
182
|
+
const l = [...n].sort((r, a) => r[0] - a[0]), s = [];
|
|
183
|
+
for (const r of l) {
|
|
184
184
|
const a = s[s.length - 1];
|
|
185
185
|
a && r[0] <= a[1] + 1 ? a[1] = Math.max(a[1], r[1]) : s.push([...r]);
|
|
186
186
|
}
|
|
187
187
|
const u = [];
|
|
188
188
|
let d = 0;
|
|
189
189
|
return s.forEach((r, a) => {
|
|
190
|
-
const [c,
|
|
191
|
-
c > d && u.push(/* @__PURE__ */
|
|
192
|
-
/* @__PURE__ */
|
|
190
|
+
const [c, i] = r;
|
|
191
|
+
c > d && u.push(/* @__PURE__ */ t("span", { children: e.slice(d, c) }, `text-${a}`)), u.push(
|
|
192
|
+
/* @__PURE__ */ t(
|
|
193
193
|
"mark",
|
|
194
194
|
{
|
|
195
195
|
className: "rounded-sm bg-kumo-warning/50 text-kumo-default",
|
|
196
|
-
children:
|
|
196
|
+
children: e.slice(c, i + 1)
|
|
197
197
|
},
|
|
198
198
|
`highlight-${a}`
|
|
199
199
|
)
|
|
200
|
-
), d =
|
|
201
|
-
}), d <
|
|
200
|
+
), d = i + 1;
|
|
201
|
+
}), d < e.length && u.push(/* @__PURE__ */ t("span", { children: e.slice(d) }, "text-end")), /* @__PURE__ */ t("span", { className: o, children: u });
|
|
202
202
|
}
|
|
203
|
-
function
|
|
204
|
-
title:
|
|
203
|
+
function rt({
|
|
204
|
+
title: e,
|
|
205
205
|
breadcrumbs: n,
|
|
206
206
|
titleHighlights: o,
|
|
207
|
-
breadcrumbHighlights:
|
|
207
|
+
breadcrumbHighlights: l,
|
|
208
208
|
description: s,
|
|
209
209
|
icon: u,
|
|
210
210
|
value: d,
|
|
211
211
|
onClick: r,
|
|
212
212
|
showArrow: a = !0,
|
|
213
213
|
external: c = !1,
|
|
214
|
-
nonInteractive:
|
|
214
|
+
nonInteractive: i = !1
|
|
215
215
|
}) {
|
|
216
216
|
return /* @__PURE__ */ g(
|
|
217
|
-
|
|
217
|
+
v,
|
|
218
218
|
{
|
|
219
219
|
value: d,
|
|
220
|
-
onClick:
|
|
220
|
+
onClick: i ? void 0 : (f) => r(f),
|
|
221
221
|
className: m(
|
|
222
222
|
"group flex w-full items-center gap-3 rounded-lg px-2 py-1.5 text-left transition-colors",
|
|
223
|
-
|
|
223
|
+
i ? "cursor-default" : "cursor-pointer data-[highlighted]:bg-kumo-overlay"
|
|
224
224
|
),
|
|
225
225
|
children: [
|
|
226
|
-
u && /* @__PURE__ */
|
|
227
|
-
/* @__PURE__ */
|
|
226
|
+
u && /* @__PURE__ */ t("div", { className: "flex flex-shrink-0 items-center text-kumo-subtle", children: u }),
|
|
227
|
+
/* @__PURE__ */ t("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ g("div", { className: "flex items-center gap-2 truncate", children: [
|
|
228
228
|
n?.map((f, h) => /* @__PURE__ */ g("span", { className: "flex items-center gap-2", children: [
|
|
229
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ t(
|
|
230
230
|
y,
|
|
231
231
|
{
|
|
232
232
|
text: f,
|
|
233
|
-
highlights:
|
|
233
|
+
highlights: l?.[h],
|
|
234
234
|
className: "text-base text-kumo-default"
|
|
235
235
|
}
|
|
236
236
|
),
|
|
237
|
-
/* @__PURE__ */
|
|
237
|
+
/* @__PURE__ */ t(
|
|
238
238
|
M,
|
|
239
239
|
{
|
|
240
240
|
className: "h-3 w-3 flex-shrink-0 text-kumo-subtle",
|
|
@@ -242,162 +242,162 @@ function re({
|
|
|
242
242
|
}
|
|
243
243
|
)
|
|
244
244
|
] }, h)),
|
|
245
|
-
/* @__PURE__ */
|
|
245
|
+
/* @__PURE__ */ t(
|
|
246
246
|
y,
|
|
247
247
|
{
|
|
248
|
-
text:
|
|
248
|
+
text: e,
|
|
249
249
|
highlights: o,
|
|
250
250
|
className: "text-base text-kumo-default"
|
|
251
251
|
}
|
|
252
252
|
),
|
|
253
|
-
c && /* @__PURE__ */
|
|
253
|
+
c && /* @__PURE__ */ t(H, { className: "h-3.5 w-3.5 flex-shrink-0 text-kumo-subtle" }),
|
|
254
254
|
s && /* @__PURE__ */ g(E, { children: [
|
|
255
|
-
/* @__PURE__ */
|
|
256
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ t("span", { className: "text-kumo-strong", children: "—" }),
|
|
256
|
+
/* @__PURE__ */ t("span", { className: "truncate text-sm text-kumo-strong", children: s })
|
|
257
257
|
] })
|
|
258
258
|
] }) }),
|
|
259
|
-
a && !c && !
|
|
259
|
+
a && !c && !i && /* @__PURE__ */ t(_, { className: "h-4 w-4 flex-shrink-0 text-kumo-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100" })
|
|
260
260
|
]
|
|
261
261
|
}
|
|
262
262
|
);
|
|
263
263
|
}
|
|
264
|
-
function
|
|
265
|
-
children:
|
|
264
|
+
function it({
|
|
265
|
+
children: e,
|
|
266
266
|
className: n
|
|
267
267
|
}) {
|
|
268
|
-
return /* @__PURE__ */
|
|
268
|
+
return /* @__PURE__ */ t(
|
|
269
269
|
"div",
|
|
270
270
|
{
|
|
271
271
|
className: m(
|
|
272
272
|
"flex max-h-[60vh] flex-col overflow-hidden rounded-lg bg-kumo-elevated",
|
|
273
273
|
n
|
|
274
274
|
),
|
|
275
|
-
children:
|
|
275
|
+
children: e
|
|
276
276
|
}
|
|
277
277
|
);
|
|
278
278
|
}
|
|
279
|
-
const
|
|
279
|
+
const L = w({}), lt = () => !0;
|
|
280
280
|
function A({
|
|
281
|
-
children:
|
|
281
|
+
children: e,
|
|
282
282
|
items: n,
|
|
283
283
|
value: o,
|
|
284
|
-
onValueChange:
|
|
284
|
+
onValueChange: l,
|
|
285
285
|
onItemHighlighted: s,
|
|
286
286
|
itemToStringValue: u,
|
|
287
|
-
filter: d =
|
|
287
|
+
filter: d = lt,
|
|
288
288
|
open: r = !0,
|
|
289
289
|
className: a,
|
|
290
290
|
onSelect: c,
|
|
291
|
-
getSelectableItems:
|
|
291
|
+
getSelectableItems: i
|
|
292
292
|
}) {
|
|
293
293
|
const f = T(-1), h = b(
|
|
294
294
|
(p, x) => {
|
|
295
295
|
f.current = x.index, s?.(p, x);
|
|
296
296
|
},
|
|
297
297
|
[s]
|
|
298
|
-
),
|
|
298
|
+
), P = b(
|
|
299
299
|
(p) => {
|
|
300
300
|
const x = p.key === "Enter", R = p.metaKey || p.ctrlKey;
|
|
301
|
-
if (x && R && c &&
|
|
302
|
-
const k =
|
|
301
|
+
if (x && R && c && i) {
|
|
302
|
+
const k = i(n)[f.current];
|
|
303
303
|
k !== void 0 && (p.preventDefault(), c(k, { newTab: !0 }));
|
|
304
304
|
}
|
|
305
305
|
},
|
|
306
|
-
[n, c,
|
|
306
|
+
[n, c, i]
|
|
307
307
|
);
|
|
308
|
-
return /* @__PURE__ */
|
|
309
|
-
|
|
308
|
+
return /* @__PURE__ */ t(it, { className: a, children: /* @__PURE__ */ t(
|
|
309
|
+
J,
|
|
310
310
|
{
|
|
311
311
|
items: n,
|
|
312
312
|
value: o,
|
|
313
|
-
onValueChange:
|
|
313
|
+
onValueChange: l,
|
|
314
314
|
onItemHighlighted: h,
|
|
315
315
|
itemToStringValue: u,
|
|
316
316
|
filter: d,
|
|
317
317
|
autoHighlight: "always",
|
|
318
318
|
keepHighlight: !0,
|
|
319
319
|
open: r,
|
|
320
|
-
children: /* @__PURE__ */
|
|
320
|
+
children: /* @__PURE__ */ t(L.Provider, { value: { onInputKeyDown: P }, children: e })
|
|
321
321
|
}
|
|
322
322
|
) });
|
|
323
323
|
}
|
|
324
|
-
function
|
|
325
|
-
autoFocus:
|
|
324
|
+
function ct({
|
|
325
|
+
autoFocus: e = !0,
|
|
326
326
|
placeholder: n,
|
|
327
327
|
className: o,
|
|
328
|
-
onKeyDown:
|
|
328
|
+
onKeyDown: l,
|
|
329
329
|
leading: s,
|
|
330
330
|
trailing: u,
|
|
331
331
|
...d
|
|
332
332
|
}) {
|
|
333
|
-
const { onInputKeyDown: r } = N(
|
|
334
|
-
(
|
|
335
|
-
if (
|
|
336
|
-
if (
|
|
337
|
-
|
|
333
|
+
const { onInputKeyDown: r } = N(L), { onClose: a } = N(C), c = b(
|
|
334
|
+
(i) => {
|
|
335
|
+
if (l?.(i), !i.defaultPrevented) {
|
|
336
|
+
if (i.key === "Escape" && a) {
|
|
337
|
+
i.preventDefault(), a();
|
|
338
338
|
return;
|
|
339
339
|
}
|
|
340
|
-
r?.(
|
|
340
|
+
r?.(i);
|
|
341
341
|
}
|
|
342
342
|
},
|
|
343
|
-
[r,
|
|
343
|
+
[r, l, a]
|
|
344
344
|
);
|
|
345
|
-
return /* @__PURE__ */
|
|
345
|
+
return /* @__PURE__ */ t(S, { leading: s, trailing: u, children: /* @__PURE__ */ t(
|
|
346
346
|
B,
|
|
347
347
|
{
|
|
348
348
|
placeholder: n,
|
|
349
349
|
className: m(
|
|
350
350
|
"flex-1 border-none bg-transparent text-base kumo-input-placeholder",
|
|
351
|
-
"outline-none
|
|
351
|
+
"outline-none",
|
|
352
352
|
o
|
|
353
353
|
),
|
|
354
354
|
onKeyDown: c,
|
|
355
|
-
autoFocus:
|
|
355
|
+
autoFocus: e,
|
|
356
356
|
...d
|
|
357
357
|
}
|
|
358
358
|
) });
|
|
359
359
|
}
|
|
360
|
-
function
|
|
361
|
-
children:
|
|
360
|
+
function ut({
|
|
361
|
+
children: e,
|
|
362
362
|
className: n
|
|
363
363
|
}) {
|
|
364
|
-
return /* @__PURE__ */
|
|
364
|
+
return /* @__PURE__ */ t(O, { className: m("space-y-3", n), children: e });
|
|
365
365
|
}
|
|
366
|
-
const
|
|
366
|
+
const dt = q, Nt = {}, wt = {}, vt = {
|
|
367
367
|
/** Modal dialog wrapper - use with Panel for content that can swap */
|
|
368
368
|
Dialog: I,
|
|
369
369
|
/** Dialog + Panel combined - for simple single-view command palettes */
|
|
370
|
-
Root:
|
|
370
|
+
Root: Z,
|
|
371
371
|
/** Autocomplete panel without dialog - use inside Dialog for swappable content */
|
|
372
372
|
Panel: A,
|
|
373
373
|
/** Input for use inside Panel */
|
|
374
|
-
Input:
|
|
374
|
+
Input: ct,
|
|
375
375
|
/** Scrollable results container */
|
|
376
376
|
List: D,
|
|
377
377
|
/** Category grouping */
|
|
378
|
-
Group:
|
|
378
|
+
Group: tt,
|
|
379
379
|
/** Section header text */
|
|
380
|
-
GroupLabel:
|
|
380
|
+
GroupLabel: et,
|
|
381
381
|
/** Basic item */
|
|
382
|
-
Item:
|
|
382
|
+
Item: nt,
|
|
383
383
|
/** Rich item with breadcrumbs, highlights, icons */
|
|
384
|
-
ResultItem:
|
|
384
|
+
ResultItem: rt,
|
|
385
385
|
/** Text with highlighted portions */
|
|
386
386
|
HighlightedText: y,
|
|
387
387
|
/** Empty state */
|
|
388
|
-
Empty:
|
|
388
|
+
Empty: ot,
|
|
389
389
|
/** Loading state */
|
|
390
|
-
Loading:
|
|
390
|
+
Loading: at,
|
|
391
391
|
/** Footer for keyboard hints */
|
|
392
|
-
Footer:
|
|
392
|
+
Footer: st,
|
|
393
393
|
/** Render prop iterator for groups */
|
|
394
|
-
Results:
|
|
394
|
+
Results: ut,
|
|
395
395
|
/** Render prop iterator for items within a group */
|
|
396
|
-
Items:
|
|
396
|
+
Items: dt
|
|
397
397
|
};
|
|
398
398
|
export {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
vt as C,
|
|
400
|
+
Nt as K,
|
|
401
|
+
wt as a
|
|
402
402
|
};
|
|
403
|
-
//# sourceMappingURL=command-palette-
|
|
403
|
+
//# sourceMappingURL=command-palette-gk9m34ymp2b3hfc5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette-gk9m34ymp2b3hfc5.js","sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import {\n useRef,\n useCallback,\n createContext,\n useContext,\n forwardRef,\n type CSSProperties,\n} from \"react\";\nimport { Autocomplete } from \"@base-ui/react/autocomplete\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport {\n MagnifyingGlassIcon,\n ArrowRightIcon,\n ArrowSquareOutIcon,\n CaretRightIcon,\n} from \"@phosphor-icons/react\";\n\nimport { LayerCard } from \"../layer-card\";\nimport { Loader } from \"../loader\";\nimport { cn } from \"../../utils\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\nimport type {\n HighlightRange,\n CommandPaletteRootProps,\n CommandPaletteInputProps,\n CommandPaletteListProps,\n CommandPaletteGroupProps,\n CommandPaletteGroupLabelProps,\n CommandPaletteItemProps,\n CommandPaletteEmptyProps,\n CommandPaletteLoadingProps,\n CommandPaletteFooterProps,\n CommandPaletteResultItemProps,\n} from \"./types\";\n\n/**\n * CommandPalette - A composable command palette component for Kumo\n *\n * Uses @base-ui/react/autocomplete primitives for accessible command palette functionality.\n *\n * Keyboard navigation is built-in:\n * - Arrow keys (up/down) move highlight between items\n * - Enter selects the highlighted item (calls onSelect with newTab: false)\n * - Cmd+Enter (Mac) / Ctrl+Enter (Windows/Linux) selects with newTab: true\n * - First item is auto-highlighted when results change\n * - Escape closes the dialog\n *\n * Usage:\n * ```tsx\n * <CommandPalette.Root\n * open={open}\n * onOpenChange={setOpen}\n * items={results}\n * value={searchTerm}\n * onValueChange={setSearchTerm}\n * itemToStringValue={(group) => group.label}\n * onSelect={(item, { newTab }) => handleSelect(item, newTab)}\n * getSelectableItems={(groups) => groups.flatMap(g => g.items)}\n * >\n * <CommandPalette.Input placeholder=\"Search...\" />\n * <CommandPalette.List>\n * <Autocomplete.List>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <Autocomplete.Collection>\n * {(item) => (\n * <CommandPalette.Item value={item} onClick={(e) => handleSelect(item, e.metaKey || e.ctrlKey)}>\n * {item.title}\n * </CommandPalette.Item>\n * )}\n * </Autocomplete.Collection>\n * </CommandPalette.Group>\n * )}\n * </Autocomplete.List>\n * <CommandPalette.Empty>No results found</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer />\n * </CommandPalette.Root>\n * ```\n */\n\n/**\n * Dialog context for passing close handler to children\n */\ninterface DialogContextValue {\n onClose?: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue>({});\n\n/**\n * Props for the Dialog component\n */\ninterface DialogProps {\n /** Whether the dialog is open */\n open: boolean;\n /** Callback when the open state changes */\n onOpenChange: (open: boolean) => void;\n /**\n * Optional callback when backdrop is clicked.\n * Receives the mouse event for position tracking (e.g., for ripple effects).\n * If not provided, backdrop click calls onOpenChange(false).\n */\n onBackdropClick?: (e: React.MouseEvent) => void;\n /** Child content - typically one or more Panel components */\n children: React.ReactNode;\n /**\n * Container element for the portal. Use this to render the command palette inside\n * a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.\n * @default document.body (or KumoPortalProvider container if set)\n */\n container?: PortalContainer;\n}\n\n/**\n * Dialog component - Modal wrapper for command palette content.\n *\n * Use this when you need a dialog that can swap between different Panel contents\n * without re-mounting (e.g., drill-down navigation).\n *\n * @example\n * ```tsx\n * <CommandPalette.Dialog open={open} onOpenChange={setOpen}>\n * {showDrillDown ? (\n * <ZonePicker />\n * ) : (\n * <CommandPalette.Panel items={results} ...>\n * ...\n * </CommandPalette.Panel>\n * )}\n * </CommandPalette.Dialog>\n * ```\n */\nfunction Dialog({\n open,\n onOpenChange,\n onBackdropClick,\n children,\n container: containerProp,\n}: DialogProps) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (onBackdropClick) {\n onBackdropClick(e);\n } else {\n onOpenChange(false);\n }\n };\n\n const handleClose = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n return (\n <DialogBase.Root open={open} onOpenChange={onOpenChange} modal>\n <DialogBase.Portal container={container}>\n <DialogBase.Backdrop\n className=\"fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0\"\n onClick={handleBackdropClick}\n />\n <LayerCard\n render={<DialogBase.Popup />}\n className={cn(\n \"fixed top-[10vh] left-1/2 w-full max-w-2xl -translate-x-1/2\",\n \"overflow-hidden rounded-lg\",\n \"duration-150 data-[ending-style]:scale-90 data-[ending-style]:opacity-0 data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n )}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n } as CSSProperties\n }\n >\n <DialogContext.Provider value={{ onClose: handleClose }}>\n {children}\n </DialogContext.Provider>\n </LayerCard>\n </DialogBase.Portal>\n </DialogBase.Root>\n );\n}\n\n/**\n * Root component - Dialog + Panel combined for simple use cases.\n *\n * For cases where you need to swap content inside the dialog without\n * re-mounting (e.g., drill-down navigation), use Dialog + Panel separately.\n *\n * Keyboard navigation is always enabled:\n * - Arrow keys (up/down) move highlight\n * - Enter selects highlighted item\n * - Cmd/Ctrl+Enter selects with newTab: true\n * - First item is auto-highlighted when results change\n */\nfunction Root<TGroup, TItem = TGroup>({\n open,\n onOpenChange,\n onBackdropClick,\n children,\n items,\n value,\n onValueChange,\n onItemHighlighted,\n itemToStringValue,\n filter,\n onSelect,\n getSelectableItems,\n container,\n}: CommandPaletteRootProps<TGroup, TItem>) {\n return (\n <Dialog\n open={open}\n onOpenChange={onOpenChange}\n onBackdropClick={onBackdropClick}\n container={container}\n >\n <Panel\n items={items}\n value={value}\n onValueChange={onValueChange}\n onItemHighlighted={onItemHighlighted}\n itemToStringValue={itemToStringValue}\n filter={filter}\n open={open}\n onSelect={onSelect}\n getSelectableItems={getSelectableItems}\n >\n {children}\n </Panel>\n </Dialog>\n );\n}\n\n/**\n * InputHeader component - Internal styled container for search input.\n */\nfunction InputHeader({\n children,\n leading,\n trailing,\n}: {\n children: React.ReactNode;\n leading?: React.ReactNode;\n trailing?: React.ReactNode;\n}) {\n return (\n <div className=\"flex items-center gap-3 bg-kumo-base px-4 py-3 focus-within:ring-2 focus-within:ring-kumo-brand\">\n {leading ?? (\n <MagnifyingGlassIcon\n className=\"h-4 w-4 text-kumo-subtle\"\n weight=\"bold\"\n />\n )}\n {children}\n {trailing}\n </div>\n );\n}\n\n/**\n * List component - Scrollable results container\n *\n * Wrapper div with proper styling, contains Autocomplete.List internally.\n * Supports ref forwarding for scroll control.\n */\nconst List = forwardRef<\n HTMLDivElement,\n CommandPaletteListProps & { className?: string }\n>(function List({ children, className }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-hairline\",\n className,\n )}\n >\n {children}\n </div>\n );\n});\n\nList.displayName = \"CommandPalette.List\";\n\n/**\n * Group component - Category grouping\n *\n * Re-export of Autocomplete.Group with default styling.\n */\nfunction Group({\n children,\n className,\n ...props\n}: CommandPaletteGroupProps & {\n className?: string;\n items?: unknown[];\n}) {\n return (\n <Autocomplete.Group className={cn(\"space-y-0.5\", className)} {...props}>\n {children}\n </Autocomplete.Group>\n );\n}\n\n/**\n * GroupLabel component - Section header text\n *\n * Re-export of Autocomplete.GroupLabel with styling matching SectionHeader.\n */\nfunction GroupLabel({\n children,\n className,\n}: CommandPaletteGroupLabelProps & { className?: string }) {\n return (\n <Autocomplete.GroupLabel\n className={cn(\n \"mb-2 px-2 pt-1 text-xs font-semibold text-kumo-strong\",\n className,\n )}\n >\n {children}\n </Autocomplete.GroupLabel>\n );\n}\n\n/**\n * Item component - Individual result item\n *\n * Re-export of Autocomplete.Item with styling matching SearchResultItem.\n * Note: Use onClick for selection handling, matching the existing CommandPalette pattern.\n */\nfunction Item<T>({\n value,\n disabled,\n children,\n className,\n onClick,\n}: CommandPaletteItemProps<T> & {\n className?: string;\n}) {\n return (\n <Autocomplete.Item\n value={value}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n \"group flex w-full items-center gap-3 px-2 py-1.5 text-left text-base transition-colors\",\n \"cursor-pointer data-[highlighted]:bg-kumo-overlay\",\n \"rounded-lg\",\n disabled && \"cursor-default opacity-50\",\n className,\n )}\n >\n {children}\n </Autocomplete.Item>\n );\n}\n\n/**\n * Empty component - Empty state when no results\n *\n * Re-export of Autocomplete.Empty with default styling.\n */\nfunction Empty({ children }: CommandPaletteEmptyProps) {\n return (\n <Autocomplete.Empty>\n <div className=\"p-8 text-center\">\n <p className=\"text-kumo-strong\">{children ?? \"No results found\"}</p>\n </div>\n </Autocomplete.Empty>\n );\n}\n\n/**\n * Loading component - Loading spinner state\n *\n * Centered loading spinner using Kumo Loader.\n */\nfunction Loading({ children }: CommandPaletteLoadingProps) {\n return (\n <div className=\"flex items-center justify-center p-8\">\n {children ?? <Loader size={24} />}\n </div>\n );\n}\n\n/**\n * Footer component - Styled container for keyboard hints or other footer content.\n *\n * Children are required - this is just a styled container.\n * Consumers should provide their own keyboard hints with proper i18n.\n */\nfunction Footer({ children }: CommandPaletteFooterProps) {\n return (\n <div className=\"flex items-center justify-between rounded-b-lg bg-kumo-elevated px-4 py-3 text-xs text-kumo-strong\">\n {children}\n </div>\n );\n}\n\n/**\n * HighlightedText - Renders text with highlighted portions based on match indices.\n * Highlighted text is shown with a background color to indicate matches.\n */\nfunction HighlightedText({\n text,\n highlights,\n className,\n}: {\n text: string;\n highlights?: HighlightRange[];\n className?: string;\n}) {\n if (!highlights || highlights.length === 0) {\n return <span className={className}>{text}</span>;\n }\n\n // Sort highlights by start index and merge overlapping ranges\n const sortedHighlights = [...highlights].sort((a, b) => a[0] - b[0]);\n const mergedHighlights: HighlightRange[] = [];\n\n for (const range of sortedHighlights) {\n const last = mergedHighlights[mergedHighlights.length - 1];\n if (last && range[0] <= last[1] + 1) {\n // Merge overlapping or adjacent ranges\n last[1] = Math.max(last[1], range[1]);\n } else {\n mergedHighlights.push([...range]);\n }\n }\n\n const parts: React.ReactNode[] = [];\n let lastIndex = 0;\n\n mergedHighlights.forEach((range, i) => {\n const [start, end] = range;\n\n // Add non-highlighted text before this match\n if (start > lastIndex) {\n parts.push(<span key={`text-${i}`}>{text.slice(lastIndex, start)}</span>);\n }\n\n // Add highlighted text (end index is inclusive)\n parts.push(\n <mark\n key={`highlight-${i}`}\n className=\"rounded-sm bg-kumo-warning/50 text-kumo-default\"\n >\n {text.slice(start, end + 1)}\n </mark>,\n );\n\n lastIndex = end + 1;\n });\n\n // Add remaining non-highlighted text\n if (lastIndex < text.length) {\n parts.push(<span key=\"text-end\">{text.slice(lastIndex)}</span>);\n }\n\n return <span className={className}>{parts}</span>;\n}\n\n/**\n * ResultItem - Rich item component with breadcrumbs, highlights, icons, and external indicators.\n *\n * Use this for search result items that need breadcrumb navigation, text highlighting,\n * or external link indicators. For simple items, use Item instead.\n */\nfunction ResultItem<T>({\n title,\n breadcrumbs,\n titleHighlights,\n breadcrumbHighlights,\n description,\n icon,\n value,\n onClick,\n showArrow = true,\n external = false,\n nonInteractive = false,\n}: CommandPaletteResultItemProps<T>) {\n return (\n <Autocomplete.Item\n value={value}\n onClick={nonInteractive ? undefined : (e: React.MouseEvent) => onClick(e)}\n className={cn(\n \"group flex w-full items-center gap-3 rounded-lg px-2 py-1.5 text-left transition-colors\",\n nonInteractive\n ? \"cursor-default\"\n : \"cursor-pointer data-[highlighted]:bg-kumo-overlay\",\n )}\n >\n {icon && (\n <div className=\"flex flex-shrink-0 items-center text-kumo-subtle\">\n {icon}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 truncate\">\n {breadcrumbs?.map((crumb, index) => (\n <span key={index} className=\"flex items-center gap-2\">\n <HighlightedText\n text={crumb}\n highlights={breadcrumbHighlights?.[index]}\n className=\"text-base text-kumo-default\"\n />\n <CaretRightIcon\n className=\"h-3 w-3 flex-shrink-0 text-kumo-subtle\"\n weight=\"bold\"\n />\n </span>\n ))}\n <HighlightedText\n text={title}\n highlights={titleHighlights}\n className=\"text-base text-kumo-default\"\n />\n {external && (\n <ArrowSquareOutIcon className=\"h-3.5 w-3.5 flex-shrink-0 text-kumo-subtle\" />\n )}\n {description && (\n <>\n <span className=\"text-kumo-strong\">—</span>\n <span className=\"truncate text-sm text-kumo-strong\">\n {description}\n </span>\n </>\n )}\n </div>\n </div>\n {showArrow && !external && !nonInteractive && (\n <ArrowRightIcon className=\"h-4 w-4 flex-shrink-0 text-kumo-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100\" />\n )}\n </Autocomplete.Item>\n );\n}\n\n/**\n * Container component - Internal styled wrapper.\n */\nfunction Container({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n \"flex max-h-[60vh] flex-col overflow-hidden rounded-lg bg-kumo-elevated\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Panel context for passing handlers from Panel to children\n */\ninterface PanelContextValue {\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({});\n\n/**\n * Props for the Panel component\n */\ninterface PanelProps<TGroup, TItem = TGroup> {\n /** Child components (Input, List, Footer, etc.) */\n children: React.ReactNode;\n /** Items for the autocomplete */\n items: TGroup[];\n /** Controlled input value */\n value?: string;\n /** Callback when input value changes */\n onValueChange?: (value: string) => void;\n /** Callback when an item is highlighted */\n onItemHighlighted?: (\n item: TGroup | undefined,\n details: { reason: string; event: Event; index: number },\n ) => void;\n /** Convert item to string for accessibility */\n itemToStringValue?: (item: TGroup) => string;\n /** Custom filter function */\n filter?: (item: TGroup, query: string) => boolean;\n /** Whether the panel is active/open (for autocomplete state) */\n open?: boolean;\n /** Optional className for the container */\n className?: string;\n /**\n * Callback when an item is selected via Cmd/Ctrl+Enter.\n * Requires getSelectableItems to be provided.\n */\n onSelect?: (item: TItem, options: { newTab: boolean }) => void;\n /**\n * Function to get flat list of selectable items from groups.\n * Required when items are grouped and onSelect is used.\n */\n getSelectableItems?: (items: TGroup[]) => TItem[];\n}\n\n/**\n * Panel component - Command palette without dialog wrapper.\n *\n * Use this when you need to render command palette content inside an existing dialog\n * (e.g., for drill-down navigation where the dialog stays open but content changes).\n *\n * Combines Container + Autocomplete functionality with a clean API.\n *\n * @example\n * ```tsx\n * <DialogRoot open={open} onOpenChange={setOpen}>\n * <Dialog>\n * <CommandPalette.Panel\n * items={results}\n * value={searchTerm}\n * onValueChange={setSearchTerm}\n * itemToStringValue={(group) => group.label}\n * >\n * <CommandPalette.Input placeholder=\"Search...\" />\n * <CommandPalette.List>\n * <CommandPalette.Results>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <CommandPalette.Items>\n * {(item) => <CommandPalette.ResultItem ... />}\n * </CommandPalette.Items>\n * </CommandPalette.Group>\n * )}\n * </CommandPalette.Results>\n * <CommandPalette.Empty>No results</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer>...</CommandPalette.Footer>\n * </CommandPalette.Panel>\n * </Dialog>\n * </DialogRoot>\n * ```\n */\nconst defaultFilter = () => true;\n\nfunction Panel<TGroup, TItem = TGroup>({\n children,\n items,\n value,\n onValueChange,\n onItemHighlighted,\n itemToStringValue,\n filter = defaultFilter,\n open = true,\n className,\n onSelect,\n getSelectableItems,\n}: PanelProps<TGroup, TItem>) {\n const highlightedIndexRef = useRef<number>(-1);\n\n const handleItemHighlighted = useCallback(\n (\n item: TGroup | undefined,\n details: { reason: string; event: Event; index: number },\n ) => {\n highlightedIndexRef.current = details.index;\n onItemHighlighted?.(item, details);\n },\n [onItemHighlighted],\n );\n\n // Handle Cmd/Ctrl+Enter for new tab selection\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const isEnter = e.key === \"Enter\";\n const withModifier = e.metaKey || e.ctrlKey;\n\n if (isEnter && withModifier && onSelect && getSelectableItems) {\n const selectableItems = getSelectableItems(items);\n const highlightedItem = selectableItems[highlightedIndexRef.current];\n\n if (highlightedItem !== undefined) {\n e.preventDefault();\n onSelect(highlightedItem, { newTab: true });\n }\n }\n },\n [items, onSelect, getSelectableItems],\n );\n\n return (\n <Container className={className}>\n <Autocomplete.Root\n items={items}\n value={value}\n onValueChange={onValueChange}\n onItemHighlighted={handleItemHighlighted}\n itemToStringValue={itemToStringValue}\n filter={filter}\n autoHighlight=\"always\"\n keepHighlight\n open={open}\n >\n <PanelContext.Provider value={{ onInputKeyDown: handleInputKeyDown }}>\n {children}\n </PanelContext.Provider>\n </Autocomplete.Root>\n </Container>\n );\n}\n\n/**\n * PanelInput component - Input that works inside Panel.\n *\n * Similar to Input but designed for use with Panel instead of Root.\n * Automatically wires up Cmd/Ctrl+Enter handling from Panel.\n */\nfunction PanelInput({\n autoFocus = true,\n placeholder,\n className,\n onKeyDown: onKeyDownProp,\n leading,\n trailing,\n ...props\n}: CommandPaletteInputProps) {\n const { onInputKeyDown } = useContext(PanelContext);\n const { onClose } = useContext(DialogContext);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Let consumer handle first (e.g., for custom Escape/Backspace behavior)\n onKeyDownProp?.(e);\n if (e.defaultPrevented) return;\n\n // Handle Escape to close the dialog\n if (e.key === \"Escape\" && onClose) {\n e.preventDefault();\n onClose();\n return;\n }\n onInputKeyDown?.(e);\n },\n [onInputKeyDown, onKeyDownProp, onClose],\n );\n\n return (\n <InputHeader leading={leading} trailing={trailing}>\n <Autocomplete.Input\n placeholder={placeholder}\n className={cn(\n \"flex-1 border-none bg-transparent text-base kumo-input-placeholder\",\n \"outline-none\",\n className,\n )}\n onKeyDown={handleKeyDown}\n // oxlint-disable-next-line no-autofocus -- Command palette input should autofocus for keyboard-driven UX\n autoFocus={autoFocus}\n {...props}\n />\n </InputHeader>\n );\n}\n\n/**\n * Render prop iterators - wrap base-ui primitives with cleaner names.\n */\n\n/**\n * Results component - Render prop iterator for groups.\n *\n * Wraps Autocomplete.List with default spacing between groups.\n */\nfunction Results({\n children,\n className,\n}: React.ComponentProps<typeof Autocomplete.List> & { className?: string }) {\n return (\n <Autocomplete.List className={cn(\"space-y-3\", className)}>\n {children}\n </Autocomplete.List>\n );\n}\n\nconst Items = Autocomplete.Collection;\n\n/** CommandPalette variant definitions (no user-facing variants; structure reserved for future use). */\nexport const KUMO_COMMAND_PALETTE_VARIANTS = {} as const;\n\nexport const KUMO_COMMAND_PALETTE_DEFAULT_VARIANTS = {} as const;\n\n/**\n * CommandPalette — accessible command palette / spotlight search overlay.\n *\n * Compound component: `CommandPalette.Root` (or `.Dialog` + `.Panel`),\n * `.Input`, `.List`, `.Results`, `.Items`, `.Group`, `.GroupLabel`,\n * `.Item`, `.ResultItem`, `.HighlightedText`, `.Empty`, `.Loading`, `.Footer`.\n *\n * Built on `@base-ui/react/autocomplete` + `@base-ui/react/dialog`.\n *\n * @example\n * ```tsx\n * <CommandPalette.Root\n * open={open}\n * onOpenChange={setOpen}\n * items={results}\n * value={query}\n * onValueChange={setQuery}\n * itemToStringValue={(g) => g.label}\n * onSelect={(item, { newTab }) => navigate(item, newTab)}\n * getSelectableItems={(groups) => groups.flatMap((g) => g.items)}\n * >\n * <CommandPalette.Input placeholder=\"Search…\" />\n * <CommandPalette.List>\n * <CommandPalette.Results>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <CommandPalette.Items>\n * {(item) => (\n * <CommandPalette.ResultItem title={item.title} value={item} onClick={…} />\n * )}\n * </CommandPalette.Items>\n * </CommandPalette.Group>\n * )}\n * </CommandPalette.Results>\n * <CommandPalette.Empty>No results found</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer>…keyboard hints…</CommandPalette.Footer>\n * </CommandPalette.Root>\n * ```\n */\nexport const CommandPalette = {\n /** Modal dialog wrapper - use with Panel for content that can swap */\n Dialog,\n /** Dialog + Panel combined - for simple single-view command palettes */\n Root,\n /** Autocomplete panel without dialog - use inside Dialog for swappable content */\n Panel,\n /** Input for use inside Panel */\n Input: PanelInput,\n /** Scrollable results container */\n List,\n /** Category grouping */\n Group,\n /** Section header text */\n GroupLabel,\n /** Basic item */\n Item,\n /** Rich item with breadcrumbs, highlights, icons */\n ResultItem,\n /** Text with highlighted portions */\n HighlightedText,\n /** Empty state */\n Empty,\n /** Loading state */\n Loading,\n /** Footer for keyboard hints */\n Footer,\n /** Render prop iterator for groups */\n Results,\n /** Render prop iterator for items within a group */\n Items,\n};\n"],"names":["DialogContext","createContext","Dialog","open","onOpenChange","onBackdropClick","children","containerProp","contextContainer","usePortalContainer","container","handleBackdropClick","e","handleClose","useCallback","jsx","DialogBase.Root","jsxs","DialogBase.Portal","DialogBase.Backdrop","LayerCard","DialogBase.Popup","cn","Root","items","value","onValueChange","onItemHighlighted","itemToStringValue","filter","onSelect","getSelectableItems","Panel","InputHeader","leading","trailing","MagnifyingGlassIcon","List","forwardRef","className","ref","Group","props","Autocomplete.Group","GroupLabel","Autocomplete.GroupLabel","Item","disabled","onClick","Autocomplete.Item","Empty","Autocomplete.Empty","Loading","Loader","Footer","HighlightedText","text","highlights","sortedHighlights","a","b","mergedHighlights","range","last","parts","lastIndex","i","start","end","ResultItem","title","breadcrumbs","titleHighlights","breadcrumbHighlights","description","icon","showArrow","external","nonInteractive","crumb","index","CaretRightIcon","ArrowSquareOutIcon","Fragment","ArrowRightIcon","Container","PanelContext","defaultFilter","highlightedIndexRef","useRef","handleItemHighlighted","item","details","handleInputKeyDown","isEnter","withModifier","highlightedItem","Autocomplete.Root","PanelInput","autoFocus","placeholder","onKeyDownProp","onInputKeyDown","useContext","onClose","handleKeyDown","Autocomplete.Input","Results","Autocomplete.List","Items","Autocomplete.Collection","KUMO_COMMAND_PALETTE_VARIANTS","KUMO_COMMAND_PALETTE_DEFAULT_VARIANTS","CommandPalette"],"mappings":"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"}
|