@cloudflare/kumo 1.16.0 → 1.18.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 +163 -0
- package/ai/USAGE.md +38 -30
- package/ai/component-registry.json +237 -93
- package/ai/component-registry.md +421 -45
- package/ai/schemas.ts +15 -5
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +105 -49
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +187 -174
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/{Legend-bov5dqf08wemc2qj.js → Legend-o0ntojbaplmszwk0.js} +4 -2
- package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +1 -0
- package/dist/chunks/badge-dan90i0rzy4pwa1j.js +102 -0
- package/dist/chunks/badge-dan90i0rzy4pwa1j.js.map +1 -0
- package/dist/chunks/banner-eiwcnk7ts21s3bnb.js +79 -0
- package/dist/chunks/banner-eiwcnk7ts21s3bnb.js.map +1 -0
- package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js → breadcrumbs-k39s28qx05vbxxth.js} +3 -3
- package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js.map → breadcrumbs-k39s28qx05vbxxth.js.map} +1 -1
- package/dist/chunks/{button-j0hi0afn33w9lxgi.js → button-cdxnqcgzwko8ooha.js} +55 -53
- package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +1 -0
- package/dist/chunks/{checkbox-lawmt1894wr6rpgi.js → checkbox-kt1uojk2f9e0d0h1.js} +46 -55
- package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +1 -0
- package/dist/chunks/{clipboard-text-ohx8kkpxisz382rj.js → clipboard-text-vcbvmtne4zjk4b18.js} +55 -54
- package/dist/chunks/clipboard-text-vcbvmtne4zjk4b18.js.map +1 -0
- package/dist/chunks/{code-liq1g6f5lhee305d.js → code-cz0w1y5z4h29a9eg.js} +18 -18
- package/dist/chunks/code-cz0w1y5z4h29a9eg.js.map +1 -0
- package/dist/chunks/{combobox-ft0u7rfaxawk0r0c.js → combobox-he2hd9e2ruknq5mp.js} +97 -82
- package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +1 -0
- package/dist/chunks/{command-palette-b31nq4wk7o7gx4sa.js → command-palette-jc1w07jwakxvj23a.js} +159 -155
- package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +1 -0
- package/dist/chunks/{dialog-l5tmwxrzp9g83jmw.js → dialog-oqh8l3l3zutpibxx.js} +22 -20
- package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +1 -0
- package/dist/chunks/{dropdown-icy3xatdwhzr4une.js → dropdown-ncwhcd912vmone8k.js} +96 -90
- package/dist/chunks/dropdown-ncwhcd912vmone8k.js.map +1 -0
- package/dist/chunks/{empty-hrwtammqp0b2nvtf.js → empty-cj898km1r8xwuw44.js} +2 -2
- package/dist/chunks/{empty-hrwtammqp0b2nvtf.js.map → empty-cj898km1r8xwuw44.js.map} +1 -1
- package/dist/chunks/{field-csje72m7j9403fj5.js → field-krp6z6vfbkrvufz2.js} +3 -3
- package/dist/chunks/{field-csje72m7j9403fj5.js.map → field-krp6z6vfbkrvufz2.js.map} +1 -1
- package/dist/chunks/input-area-no30c09udyjxshu5.js +78 -0
- package/dist/chunks/input-area-no30c09udyjxshu5.js.map +1 -0
- package/dist/chunks/{input-group-cjsy8kh4vf9312xl.js → input-group-lxdd09p60cf27pe1.js} +26 -26
- package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +1 -0
- package/dist/chunks/{input-c8jmidy7gdqfiky1.js → input-h48k3uagzrgb98au.js} +40 -36
- package/dist/chunks/input-h48k3uagzrgb98au.js.map +1 -0
- package/dist/chunks/{label-i46xnnzdh9bsxk6a.js → label-latndvb1ngem7we8.js} +3 -3
- package/dist/chunks/{label-i46xnnzdh9bsxk6a.js.map → label-latndvb1ngem7we8.js.map} +1 -1
- package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js → layer-card-l5yjvrxry1dhte57.js} +8 -8
- package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js.map → layer-card-l5yjvrxry1dhte57.js.map} +1 -1
- package/dist/chunks/{link-o7yfj4kwgl19fklp.js → link-hn5ejal7nhh0o0b4.js} +2 -2
- package/dist/chunks/{link-o7yfj4kwgl19fklp.js.map → link-hn5ejal7nhh0o0b4.js.map} +1 -1
- package/dist/chunks/{loader-m5wfmqwgucrr4i5v.js → loader-hr2w7cpqeev3p3vl.js} +9 -6
- package/dist/chunks/loader-hr2w7cpqeev3p3vl.js.map +1 -0
- package/dist/chunks/{menubar-g1wqqjuyyfvsim83.js → menubar-f1pilzooe5mue7c4.js} +20 -20
- package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +1 -0
- package/dist/chunks/{meter-cqkrg5axjenbsuue.js → meter-gfa1hz9fhjnvx784.js} +2 -2
- package/dist/chunks/{meter-cqkrg5axjenbsuue.js.map → meter-gfa1hz9fhjnvx784.js.map} +1 -1
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +243 -0
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +1 -0
- package/dist/chunks/{popover-jurf834u2uywluux.js → popover-h300w4vit0s2ayej.js} +31 -28
- package/dist/chunks/popover-h300w4vit0s2ayej.js.map +1 -0
- package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js +18 -0
- package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js.map +1 -0
- package/dist/chunks/{radio-l9dzm6sohcvvrsdc.js → radio-jouttv89lbvhs55r.js} +47 -50
- package/dist/chunks/radio-jouttv89lbvhs55r.js.map +1 -0
- package/dist/chunks/select-kva5ru5f673kah1m.js +179 -0
- package/dist/chunks/select-kva5ru5f673kah1m.js.map +1 -0
- package/dist/chunks/{sensitive-input-lvtccf3iqc06lj7b.js → sensitive-input-hd4tpqkzifad1yca.js} +90 -84
- package/dist/chunks/sensitive-input-hd4tpqkzifad1yca.js.map +1 -0
- package/dist/chunks/{sidebar-l6rk9o5qf8k5vth1.js → sidebar-hljy3ssm8itc0ucx.js} +5 -5
- package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +1 -0
- package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
- package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
- package/dist/chunks/surface-cilvbyhmyujz1bee.js +36 -0
- package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +1 -0
- package/dist/chunks/switch-ihaydbzem62bey4p.js +243 -0
- package/dist/chunks/switch-ihaydbzem62bey4p.js.map +1 -0
- package/dist/chunks/table-inweecadl3her7pd.js +183 -0
- package/dist/chunks/table-inweecadl3her7pd.js.map +1 -0
- package/dist/chunks/tabs-e7eh7l3mpk3xgmwq.js +92 -0
- package/dist/chunks/{tabs-n0t7iro7wr0pzgk2.js.map → tabs-e7eh7l3mpk3xgmwq.js.map} +1 -1
- package/dist/chunks/{text-gzt92mlji1lug13d.js → text-nmyi1rkwdj37f30f.js} +24 -22
- package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +1 -0
- package/dist/chunks/{toast-r9ajsces7xp8l85w.js → toast-bpz6iaq54u9jmuu8.js} +62 -60
- package/dist/chunks/toast-bpz6iaq54u9jmuu8.js.map +1 -0
- package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
- package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
- package/dist/chunks/{tooltip-hnc71tg4gz2gpcvc.js → tooltip-belkznz8t8333h5f.js} +28 -21
- package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +1 -0
- package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js → vendor-base-ui-k7bzesq81ie36nya.js} +55 -51
- package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js.map → vendor-base-ui-k7bzesq81ie36nya.js.map} +1 -1
- package/dist/code/server.js +10 -9
- package/dist/code/server.js.map +1 -1
- package/dist/code.js +3 -2
- package/dist/code.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.js +1 -1
- 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/code.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.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 +5 -4
- package/dist/components/flow.js.map +1 -1
- package/dist/components/input.js +3 -3
- 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/loader.js +2 -2
- 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.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 +76 -74
- 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 +1 -1
- 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/popover.js +1 -1
- package/dist/primitives/preview-card.js +1 -1
- 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 +1 -1
- package/dist/scripts/theme-generator/config.d.ts.map +1 -1
- package/dist/scripts/theme-generator/config.js +226 -43
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/code/provider.d.ts.map +1 -1
- package/dist/src/code/server.d.ts.map +1 -1
- package/dist/src/code/types.d.ts +1 -1
- package/dist/src/code/types.d.ts.map +1 -1
- package/dist/src/components/badge/badge.d.ts +76 -21
- package/dist/src/components/badge/badge.d.ts.map +1 -1
- package/dist/src/components/banner/banner.d.ts +5 -3
- package/dist/src/components/banner/banner.d.ts.map +1 -1
- package/dist/src/components/button/button.d.ts +4 -2
- package/dist/src/components/button/button.d.ts.map +1 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/src/components/clipboard-text/clipboard-text.d.ts +2 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
- package/dist/src/components/code/code.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts +8 -1
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/command-palette/command-palette.d.ts +9 -2
- package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/src/components/command-palette/types.d.ts +7 -0
- package/dist/src/components/command-palette/types.d.ts.map +1 -1
- package/dist/src/components/dialog/dialog.d.ts +8 -1
- package/dist/src/components/dialog/dialog.d.ts.map +1 -1
- package/dist/src/components/dropdown/dropdown.d.ts +17 -2
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/src/components/flow/diagram.d.ts.map +1 -1
- package/dist/src/components/input/input-area.d.ts.map +1 -1
- package/dist/src/components/input/input.d.ts +1 -2
- package/dist/src/components/input/input.d.ts.map +1 -1
- package/dist/src/components/loader/loader.d.ts +7 -1
- package/dist/src/components/loader/loader.d.ts.map +1 -1
- package/dist/src/components/loader/skeleton-line.d.ts +2 -1
- package/dist/src/components/loader/skeleton-line.d.ts.map +1 -1
- package/dist/src/components/pagination/pagination.d.ts +11 -1
- package/dist/src/components/pagination/pagination.d.ts.map +1 -1
- package/dist/src/components/popover/popover.d.ts +8 -1
- package/dist/src/components/popover/popover.d.ts.map +1 -1
- package/dist/src/components/radio/radio.d.ts +1 -1
- package/dist/src/components/radio/radio.d.ts.map +1 -1
- package/dist/src/components/select/select.d.ts +74 -3
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
- package/dist/src/components/surface/surface.d.ts +23 -23
- package/dist/src/components/surface/surface.d.ts.map +1 -1
- package/dist/src/components/switch/switch.d.ts.map +1 -1
- package/dist/src/components/table/table.d.ts +34 -2
- package/dist/src/components/table/table.d.ts.map +1 -1
- package/dist/src/components/tabs/tabs.d.ts.map +1 -1
- package/dist/src/components/text/text.d.ts +5 -0
- package/dist/src/components/text/text.d.ts.map +1 -1
- package/dist/src/components/toast/toast.d.ts +16 -9
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/src/components/tooltip/tooltip.d.ts +21 -6
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/portal-provider.d.ts +56 -0
- package/dist/src/utils/portal-provider.d.ts.map +1 -0
- package/dist/styles/kumo-binding.css +52 -46
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/theme-fedramp.css +6 -6
- package/dist/styles/theme-kumo.css +183 -64
- package/dist/utils.js +8 -6
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/scripts/component-registry/index.test.ts +4 -4
- package/scripts/component-registry/metadata.ts +3 -3
- package/scripts/theme-generator/config.ts +236 -43
- package/dist/chunks/Legend-bov5dqf08wemc2qj.js.map +0 -1
- package/dist/chunks/badge-mrshucy2530o70cq.js +0 -56
- package/dist/chunks/badge-mrshucy2530o70cq.js.map +0 -1
- package/dist/chunks/banner-vzdjbqsb6em7tmdk.js +0 -75
- package/dist/chunks/banner-vzdjbqsb6em7tmdk.js.map +0 -1
- package/dist/chunks/button-j0hi0afn33w9lxgi.js.map +0 -1
- package/dist/chunks/checkbox-lawmt1894wr6rpgi.js.map +0 -1
- package/dist/chunks/clipboard-text-ohx8kkpxisz382rj.js.map +0 -1
- package/dist/chunks/code-liq1g6f5lhee305d.js.map +0 -1
- package/dist/chunks/combobox-ft0u7rfaxawk0r0c.js.map +0 -1
- package/dist/chunks/command-palette-b31nq4wk7o7gx4sa.js.map +0 -1
- package/dist/chunks/dialog-l5tmwxrzp9g83jmw.js.map +0 -1
- package/dist/chunks/dropdown-icy3xatdwhzr4une.js.map +0 -1
- package/dist/chunks/input-area-jko15sbc6zeage3l.js +0 -74
- package/dist/chunks/input-area-jko15sbc6zeage3l.js.map +0 -1
- package/dist/chunks/input-c8jmidy7gdqfiky1.js.map +0 -1
- package/dist/chunks/input-group-cjsy8kh4vf9312xl.js.map +0 -1
- package/dist/chunks/loader-m5wfmqwgucrr4i5v.js.map +0 -1
- package/dist/chunks/menubar-g1wqqjuyyfvsim83.js.map +0 -1
- package/dist/chunks/pagination-e3dp8bd80s35f7sd.js +0 -224
- package/dist/chunks/pagination-e3dp8bd80s35f7sd.js.map +0 -1
- package/dist/chunks/popover-jurf834u2uywluux.js.map +0 -1
- package/dist/chunks/radio-l9dzm6sohcvvrsdc.js.map +0 -1
- package/dist/chunks/select-hnt87e3cfos48qql.js +0 -130
- package/dist/chunks/select-hnt87e3cfos48qql.js.map +0 -1
- package/dist/chunks/sensitive-input-lvtccf3iqc06lj7b.js.map +0 -1
- package/dist/chunks/sidebar-l6rk9o5qf8k5vth1.js.map +0 -1
- package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js +0 -28
- package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js.map +0 -1
- package/dist/chunks/surface-dhshylwccuaz91d1.js +0 -21
- package/dist/chunks/surface-dhshylwccuaz91d1.js.map +0 -1
- package/dist/chunks/switch-fukrbip86khvqjn7.js +0 -241
- package/dist/chunks/switch-fukrbip86khvqjn7.js.map +0 -1
- package/dist/chunks/table-orfgzwvxh8yr90dk.js +0 -155
- package/dist/chunks/table-orfgzwvxh8yr90dk.js.map +0 -1
- package/dist/chunks/tabs-n0t7iro7wr0pzgk2.js +0 -86
- package/dist/chunks/text-gzt92mlji1lug13d.js.map +0 -1
- package/dist/chunks/toast-r9ajsces7xp8l85w.js.map +0 -1
- package/dist/chunks/tooltip-hnc71tg4gz2gpcvc.js.map +0 -1
package/dist/chunks/{command-palette-b31nq4wk7o7gx4sa.js → command-palette-jc1w07jwakxvj23a.js}
RENAMED
|
@@ -1,35 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as e, jsxs as
|
|
2
|
+
import { jsx as e, jsxs as g, Fragment as E } from "react/jsx-runtime";
|
|
3
3
|
import { forwardRef as K, useContext as N, createContext as v, 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 { S as G } from "./surface-
|
|
6
|
-
import { L as j } from "./loader-
|
|
5
|
+
import { S as G } from "./surface-cilvbyhmyujz1bee.js";
|
|
6
|
+
import { L as j } from "./loader-hr2w7cpqeev3p3vl.js";
|
|
7
7
|
import { c as m } from "./cn-ct4n7r74mh8y0f48.js";
|
|
8
|
-
import {
|
|
8
|
+
import { u as U } from "./portal-provider-hwmkdmkpvct0cb76.js";
|
|
9
|
+
import { a5 as O, a7 as V, aa as $, ac as w, a9 as q, a8 as z, ab as B, bp as S, ap as J, au as Q, av as W, aw as X } from "./vendor-base-ui-k7bzesq81ie36nya.js";
|
|
9
10
|
const C = v({});
|
|
10
11
|
function I({
|
|
11
12
|
open: t,
|
|
12
13
|
onOpenChange: n,
|
|
13
|
-
onBackdropClick:
|
|
14
|
-
children:
|
|
14
|
+
onBackdropClick: o,
|
|
15
|
+
children: i,
|
|
16
|
+
container: s
|
|
15
17
|
}) {
|
|
16
|
-
const s = (
|
|
17
|
-
|
|
18
|
-
},
|
|
18
|
+
const u = U(), d = s ?? u ?? void 0, r = (c) => {
|
|
19
|
+
o ? o(c) : n(!1);
|
|
20
|
+
}, a = b(() => {
|
|
19
21
|
n(!1);
|
|
20
22
|
}, [n]);
|
|
21
|
-
return /* @__PURE__ */ e(
|
|
23
|
+
return /* @__PURE__ */ e(J, { open: t, onOpenChange: n, modal: !0, children: /* @__PURE__ */ g(Q, { container: d, children: [
|
|
22
24
|
/* @__PURE__ */ e(
|
|
23
|
-
|
|
25
|
+
W,
|
|
24
26
|
{
|
|
25
27
|
className: "fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0",
|
|
26
|
-
onClick:
|
|
28
|
+
onClick: r
|
|
27
29
|
}
|
|
28
30
|
),
|
|
29
31
|
/* @__PURE__ */ e(
|
|
30
32
|
G,
|
|
31
33
|
{
|
|
32
|
-
|
|
34
|
+
render: /* @__PURE__ */ e(X, {}),
|
|
33
35
|
className: m(
|
|
34
36
|
"fixed top-[10vh] left-1/2 w-full max-w-2xl -translate-x-1/2",
|
|
35
37
|
"overflow-hidden rounded-lg",
|
|
@@ -39,55 +41,57 @@ function I({
|
|
|
39
41
|
transitionProperty: "scale, opacity",
|
|
40
42
|
transitionTimingFunction: "var(--default-transition-timing-function)"
|
|
41
43
|
},
|
|
42
|
-
children: /* @__PURE__ */ e(C.Provider, { value: { onClose:
|
|
44
|
+
children: /* @__PURE__ */ e(C.Provider, { value: { onClose: a }, children: i })
|
|
43
45
|
}
|
|
44
46
|
)
|
|
45
47
|
] }) });
|
|
46
48
|
}
|
|
47
|
-
function
|
|
49
|
+
function Y({
|
|
48
50
|
open: t,
|
|
49
51
|
onOpenChange: n,
|
|
50
|
-
onBackdropClick:
|
|
51
|
-
children:
|
|
52
|
+
onBackdropClick: o,
|
|
53
|
+
children: i,
|
|
52
54
|
items: s,
|
|
53
|
-
value:
|
|
54
|
-
onValueChange:
|
|
55
|
-
onItemHighlighted:
|
|
56
|
-
itemToStringValue:
|
|
57
|
-
filter:
|
|
58
|
-
onSelect:
|
|
59
|
-
getSelectableItems: f
|
|
55
|
+
value: u,
|
|
56
|
+
onValueChange: d,
|
|
57
|
+
onItemHighlighted: r,
|
|
58
|
+
itemToStringValue: a,
|
|
59
|
+
filter: c,
|
|
60
|
+
onSelect: l,
|
|
61
|
+
getSelectableItems: f,
|
|
62
|
+
container: h
|
|
60
63
|
}) {
|
|
61
64
|
return /* @__PURE__ */ e(
|
|
62
65
|
I,
|
|
63
66
|
{
|
|
64
67
|
open: t,
|
|
65
68
|
onOpenChange: n,
|
|
66
|
-
onBackdropClick:
|
|
69
|
+
onBackdropClick: o,
|
|
70
|
+
container: h,
|
|
67
71
|
children: /* @__PURE__ */ e(
|
|
68
|
-
|
|
72
|
+
A,
|
|
69
73
|
{
|
|
70
74
|
items: s,
|
|
71
|
-
value:
|
|
72
|
-
onValueChange:
|
|
73
|
-
onItemHighlighted:
|
|
74
|
-
itemToStringValue:
|
|
75
|
-
filter:
|
|
75
|
+
value: u,
|
|
76
|
+
onValueChange: d,
|
|
77
|
+
onItemHighlighted: r,
|
|
78
|
+
itemToStringValue: a,
|
|
79
|
+
filter: c,
|
|
76
80
|
open: t,
|
|
77
|
-
onSelect:
|
|
81
|
+
onSelect: l,
|
|
78
82
|
getSelectableItems: f,
|
|
79
|
-
children:
|
|
83
|
+
children: i
|
|
80
84
|
}
|
|
81
85
|
)
|
|
82
86
|
}
|
|
83
87
|
);
|
|
84
88
|
}
|
|
85
|
-
function
|
|
89
|
+
function Z({
|
|
86
90
|
children: t,
|
|
87
91
|
leading: n,
|
|
88
|
-
trailing:
|
|
92
|
+
trailing: o
|
|
89
93
|
}) {
|
|
90
|
-
return /* @__PURE__ */
|
|
94
|
+
return /* @__PURE__ */ g("div", { className: "flex items-center gap-3 bg-kumo-base px-4 py-3", children: [
|
|
91
95
|
n ?? /* @__PURE__ */ e(
|
|
92
96
|
F,
|
|
93
97
|
{
|
|
@@ -96,36 +100,36 @@ function Y({
|
|
|
96
100
|
}
|
|
97
101
|
),
|
|
98
102
|
t,
|
|
99
|
-
|
|
103
|
+
o
|
|
100
104
|
] });
|
|
101
105
|
}
|
|
102
|
-
const D = K(function({ children: n, className:
|
|
106
|
+
const D = K(function({ children: n, className: o }, i) {
|
|
103
107
|
return /* @__PURE__ */ e(
|
|
104
108
|
"div",
|
|
105
109
|
{
|
|
106
|
-
ref:
|
|
110
|
+
ref: i,
|
|
107
111
|
className: m(
|
|
108
112
|
"min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-line",
|
|
109
|
-
|
|
113
|
+
o
|
|
110
114
|
),
|
|
111
115
|
children: n
|
|
112
116
|
}
|
|
113
117
|
);
|
|
114
118
|
});
|
|
115
119
|
D.displayName = "CommandPalette.List";
|
|
116
|
-
function
|
|
120
|
+
function ee({
|
|
117
121
|
children: t,
|
|
118
122
|
className: n,
|
|
119
|
-
...
|
|
123
|
+
...o
|
|
120
124
|
}) {
|
|
121
|
-
return /* @__PURE__ */ e(
|
|
125
|
+
return /* @__PURE__ */ e(z, { className: m("space-y-0.5", n), ...o, children: t });
|
|
122
126
|
}
|
|
123
|
-
function
|
|
127
|
+
function te({
|
|
124
128
|
children: t,
|
|
125
129
|
className: n
|
|
126
130
|
}) {
|
|
127
131
|
return /* @__PURE__ */ e(
|
|
128
|
-
|
|
132
|
+
q,
|
|
129
133
|
{
|
|
130
134
|
className: m(
|
|
131
135
|
"mb-2 px-2 pt-1 text-xs font-semibold text-kumo-strong",
|
|
@@ -135,11 +139,11 @@ function ee({
|
|
|
135
139
|
}
|
|
136
140
|
);
|
|
137
141
|
}
|
|
138
|
-
function
|
|
142
|
+
function ne({
|
|
139
143
|
value: t,
|
|
140
144
|
disabled: n,
|
|
141
|
-
children:
|
|
142
|
-
className:
|
|
145
|
+
children: o,
|
|
146
|
+
className: i,
|
|
143
147
|
onClick: s
|
|
144
148
|
}) {
|
|
145
149
|
return /* @__PURE__ */ e(
|
|
@@ -153,80 +157,80 @@ function te({
|
|
|
153
157
|
"cursor-pointer data-[highlighted]:bg-kumo-overlay",
|
|
154
158
|
"rounded-lg",
|
|
155
159
|
n && "cursor-default opacity-50",
|
|
156
|
-
|
|
160
|
+
i
|
|
157
161
|
),
|
|
158
|
-
children:
|
|
162
|
+
children: o
|
|
159
163
|
}
|
|
160
164
|
);
|
|
161
165
|
}
|
|
162
|
-
function
|
|
163
|
-
return /* @__PURE__ */ e(
|
|
166
|
+
function oe({ children: t }) {
|
|
167
|
+
return /* @__PURE__ */ e($, { children: /* @__PURE__ */ e("div", { className: "p-8 text-center", children: /* @__PURE__ */ e("p", { className: "text-kumo-strong", children: t ?? "No results found" }) }) });
|
|
164
168
|
}
|
|
165
169
|
function ae({ children: t }) {
|
|
166
170
|
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center p-8", children: t ?? /* @__PURE__ */ e(j, { size: 24 }) });
|
|
167
171
|
}
|
|
168
|
-
function
|
|
172
|
+
function se({ children: t }) {
|
|
169
173
|
return /* @__PURE__ */ e("div", { className: "flex items-center justify-between rounded-b-lg bg-kumo-elevated px-4 py-3 text-xs text-kumo-strong", children: t });
|
|
170
174
|
}
|
|
171
175
|
function y({
|
|
172
176
|
text: t,
|
|
173
177
|
highlights: n,
|
|
174
|
-
className:
|
|
178
|
+
className: o
|
|
175
179
|
}) {
|
|
176
180
|
if (!n || n.length === 0)
|
|
177
|
-
return /* @__PURE__ */ e("span", { className:
|
|
178
|
-
const
|
|
179
|
-
for (const
|
|
180
|
-
const
|
|
181
|
-
|
|
181
|
+
return /* @__PURE__ */ e("span", { className: o, children: t });
|
|
182
|
+
const i = [...n].sort((r, a) => r[0] - a[0]), s = [];
|
|
183
|
+
for (const r of i) {
|
|
184
|
+
const a = s[s.length - 1];
|
|
185
|
+
a && r[0] <= a[1] + 1 ? a[1] = Math.max(a[1], r[1]) : s.push([...r]);
|
|
182
186
|
}
|
|
183
|
-
const
|
|
184
|
-
let
|
|
185
|
-
return s.forEach((
|
|
186
|
-
const [
|
|
187
|
-
|
|
187
|
+
const u = [];
|
|
188
|
+
let d = 0;
|
|
189
|
+
return s.forEach((r, a) => {
|
|
190
|
+
const [c, l] = r;
|
|
191
|
+
c > d && u.push(/* @__PURE__ */ e("span", { children: t.slice(d, c) }, `text-${a}`)), u.push(
|
|
188
192
|
/* @__PURE__ */ e(
|
|
189
193
|
"mark",
|
|
190
194
|
{
|
|
191
195
|
className: "rounded-sm bg-kumo-warning/50 text-kumo-default",
|
|
192
|
-
children: t.slice(
|
|
196
|
+
children: t.slice(c, l + 1)
|
|
193
197
|
},
|
|
194
|
-
`highlight-${
|
|
198
|
+
`highlight-${a}`
|
|
195
199
|
)
|
|
196
|
-
),
|
|
197
|
-
}),
|
|
200
|
+
), d = l + 1;
|
|
201
|
+
}), d < t.length && u.push(/* @__PURE__ */ e("span", { children: t.slice(d) }, "text-end")), /* @__PURE__ */ e("span", { className: o, children: u });
|
|
198
202
|
}
|
|
199
|
-
function
|
|
203
|
+
function re({
|
|
200
204
|
title: t,
|
|
201
205
|
breadcrumbs: n,
|
|
202
|
-
titleHighlights:
|
|
203
|
-
breadcrumbHighlights:
|
|
206
|
+
titleHighlights: o,
|
|
207
|
+
breadcrumbHighlights: i,
|
|
204
208
|
description: s,
|
|
205
|
-
icon:
|
|
206
|
-
value:
|
|
207
|
-
onClick:
|
|
208
|
-
showArrow:
|
|
209
|
-
external:
|
|
210
|
-
nonInteractive:
|
|
209
|
+
icon: u,
|
|
210
|
+
value: d,
|
|
211
|
+
onClick: r,
|
|
212
|
+
showArrow: a = !0,
|
|
213
|
+
external: c = !1,
|
|
214
|
+
nonInteractive: l = !1
|
|
211
215
|
}) {
|
|
212
|
-
return /* @__PURE__ */
|
|
216
|
+
return /* @__PURE__ */ g(
|
|
213
217
|
w,
|
|
214
218
|
{
|
|
215
|
-
value:
|
|
216
|
-
onClick:
|
|
219
|
+
value: d,
|
|
220
|
+
onClick: l ? void 0 : (f) => r(f),
|
|
217
221
|
className: m(
|
|
218
222
|
"group flex w-full items-center gap-3 rounded-lg px-2 py-1.5 text-left transition-colors",
|
|
219
|
-
|
|
223
|
+
l ? "cursor-default" : "cursor-pointer data-[highlighted]:bg-kumo-overlay"
|
|
220
224
|
),
|
|
221
225
|
children: [
|
|
222
|
-
|
|
223
|
-
/* @__PURE__ */ e("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */
|
|
224
|
-
n?.map((f,
|
|
226
|
+
u && /* @__PURE__ */ e("div", { className: "flex flex-shrink-0 items-center text-kumo-subtle", children: u }),
|
|
227
|
+
/* @__PURE__ */ e("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ g("div", { className: "flex items-center gap-2 truncate", children: [
|
|
228
|
+
n?.map((f, h) => /* @__PURE__ */ g("span", { className: "flex items-center gap-2", children: [
|
|
225
229
|
/* @__PURE__ */ e(
|
|
226
230
|
y,
|
|
227
231
|
{
|
|
228
232
|
text: f,
|
|
229
|
-
highlights:
|
|
233
|
+
highlights: i?.[h],
|
|
230
234
|
className: "text-base text-kumo-default"
|
|
231
235
|
}
|
|
232
236
|
),
|
|
@@ -237,27 +241,27 @@ function se({
|
|
|
237
241
|
weight: "bold"
|
|
238
242
|
}
|
|
239
243
|
)
|
|
240
|
-
] },
|
|
244
|
+
] }, h)),
|
|
241
245
|
/* @__PURE__ */ e(
|
|
242
246
|
y,
|
|
243
247
|
{
|
|
244
248
|
text: t,
|
|
245
|
-
highlights:
|
|
249
|
+
highlights: o,
|
|
246
250
|
className: "text-base text-kumo-default"
|
|
247
251
|
}
|
|
248
252
|
),
|
|
249
|
-
|
|
250
|
-
s && /* @__PURE__ */
|
|
253
|
+
c && /* @__PURE__ */ e(H, { className: "h-3.5 w-3.5 flex-shrink-0 text-kumo-subtle" }),
|
|
254
|
+
s && /* @__PURE__ */ g(E, { children: [
|
|
251
255
|
/* @__PURE__ */ e("span", { className: "text-kumo-strong", children: "—" }),
|
|
252
256
|
/* @__PURE__ */ e("span", { className: "truncate text-sm text-kumo-strong", children: s })
|
|
253
257
|
] })
|
|
254
258
|
] }) }),
|
|
255
|
-
|
|
259
|
+
a && !c && !l && /* @__PURE__ */ e(_, { className: "h-4 w-4 flex-shrink-0 text-kumo-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100" })
|
|
256
260
|
]
|
|
257
261
|
}
|
|
258
262
|
);
|
|
259
263
|
}
|
|
260
|
-
function
|
|
264
|
+
function le({
|
|
261
265
|
children: t,
|
|
262
266
|
className: n
|
|
263
267
|
}) {
|
|
@@ -272,128 +276,128 @@ function re({
|
|
|
272
276
|
}
|
|
273
277
|
);
|
|
274
278
|
}
|
|
275
|
-
const
|
|
276
|
-
function
|
|
279
|
+
const P = v({}), ie = () => !0;
|
|
280
|
+
function A({
|
|
277
281
|
children: t,
|
|
278
282
|
items: n,
|
|
279
|
-
value:
|
|
280
|
-
onValueChange:
|
|
283
|
+
value: o,
|
|
284
|
+
onValueChange: i,
|
|
281
285
|
onItemHighlighted: s,
|
|
282
|
-
itemToStringValue:
|
|
283
|
-
filter:
|
|
284
|
-
open:
|
|
285
|
-
className:
|
|
286
|
-
onSelect:
|
|
287
|
-
getSelectableItems:
|
|
286
|
+
itemToStringValue: u,
|
|
287
|
+
filter: d = ie,
|
|
288
|
+
open: r = !0,
|
|
289
|
+
className: a,
|
|
290
|
+
onSelect: c,
|
|
291
|
+
getSelectableItems: l
|
|
288
292
|
}) {
|
|
289
|
-
const f = T(-1),
|
|
290
|
-
(
|
|
291
|
-
f.current = x.index, s?.(
|
|
293
|
+
const f = T(-1), h = b(
|
|
294
|
+
(p, x) => {
|
|
295
|
+
f.current = x.index, s?.(p, x);
|
|
292
296
|
},
|
|
293
297
|
[s]
|
|
294
|
-
),
|
|
295
|
-
(
|
|
296
|
-
const x =
|
|
297
|
-
if (x && R &&
|
|
298
|
-
const k =
|
|
299
|
-
k !== void 0 && (
|
|
298
|
+
), L = b(
|
|
299
|
+
(p) => {
|
|
300
|
+
const x = p.key === "Enter", R = p.metaKey || p.ctrlKey;
|
|
301
|
+
if (x && R && c && l) {
|
|
302
|
+
const k = l(n)[f.current];
|
|
303
|
+
k !== void 0 && (p.preventDefault(), c(k, { newTab: !0 }));
|
|
300
304
|
}
|
|
301
305
|
},
|
|
302
|
-
[n,
|
|
306
|
+
[n, c, l]
|
|
303
307
|
);
|
|
304
|
-
return /* @__PURE__ */ e(
|
|
305
|
-
|
|
308
|
+
return /* @__PURE__ */ e(le, { className: a, children: /* @__PURE__ */ e(
|
|
309
|
+
S,
|
|
306
310
|
{
|
|
307
311
|
items: n,
|
|
308
|
-
value:
|
|
309
|
-
onValueChange:
|
|
310
|
-
onItemHighlighted:
|
|
311
|
-
itemToStringValue:
|
|
312
|
-
filter:
|
|
312
|
+
value: o,
|
|
313
|
+
onValueChange: i,
|
|
314
|
+
onItemHighlighted: h,
|
|
315
|
+
itemToStringValue: u,
|
|
316
|
+
filter: d,
|
|
313
317
|
autoHighlight: "always",
|
|
314
318
|
keepHighlight: !0,
|
|
315
|
-
open:
|
|
316
|
-
children: /* @__PURE__ */ e(
|
|
319
|
+
open: r,
|
|
320
|
+
children: /* @__PURE__ */ e(P.Provider, { value: { onInputKeyDown: L }, children: t })
|
|
317
321
|
}
|
|
318
322
|
) });
|
|
319
323
|
}
|
|
320
|
-
function
|
|
324
|
+
function ce({
|
|
321
325
|
autoFocus: t = !0,
|
|
322
326
|
placeholder: n,
|
|
323
|
-
className:
|
|
324
|
-
onKeyDown:
|
|
327
|
+
className: o,
|
|
328
|
+
onKeyDown: i,
|
|
325
329
|
leading: s,
|
|
326
|
-
trailing:
|
|
327
|
-
...
|
|
330
|
+
trailing: u,
|
|
331
|
+
...d
|
|
328
332
|
}) {
|
|
329
|
-
const { onInputKeyDown:
|
|
330
|
-
(
|
|
331
|
-
if (
|
|
332
|
-
if (
|
|
333
|
-
|
|
333
|
+
const { onInputKeyDown: r } = N(P), { onClose: a } = N(C), c = b(
|
|
334
|
+
(l) => {
|
|
335
|
+
if (i?.(l), !l.defaultPrevented) {
|
|
336
|
+
if (l.key === "Escape" && a) {
|
|
337
|
+
l.preventDefault(), a();
|
|
334
338
|
return;
|
|
335
339
|
}
|
|
336
|
-
|
|
340
|
+
r?.(l);
|
|
337
341
|
}
|
|
338
342
|
},
|
|
339
|
-
[
|
|
343
|
+
[r, i, a]
|
|
340
344
|
);
|
|
341
|
-
return /* @__PURE__ */ e(
|
|
342
|
-
|
|
345
|
+
return /* @__PURE__ */ e(Z, { leading: s, trailing: u, children: /* @__PURE__ */ e(
|
|
346
|
+
B,
|
|
343
347
|
{
|
|
344
348
|
placeholder: n,
|
|
345
349
|
className: m(
|
|
346
350
|
"flex-1 border-none bg-transparent text-base kumo-input-placeholder",
|
|
347
351
|
"outline-none focus-visible:outline-none",
|
|
348
|
-
|
|
352
|
+
o
|
|
349
353
|
),
|
|
350
|
-
onKeyDown:
|
|
354
|
+
onKeyDown: c,
|
|
351
355
|
autoFocus: t,
|
|
352
|
-
...
|
|
356
|
+
...d
|
|
353
357
|
}
|
|
354
358
|
) });
|
|
355
359
|
}
|
|
356
|
-
function
|
|
360
|
+
function ue({
|
|
357
361
|
children: t,
|
|
358
362
|
className: n
|
|
359
363
|
}) {
|
|
360
|
-
return /* @__PURE__ */ e(
|
|
364
|
+
return /* @__PURE__ */ e(V, { className: m("space-y-3", n), children: t });
|
|
361
365
|
}
|
|
362
|
-
const
|
|
366
|
+
const de = O, Ne = {}, ve = {}, we = {
|
|
363
367
|
/** Modal dialog wrapper - use with Panel for content that can swap */
|
|
364
368
|
Dialog: I,
|
|
365
369
|
/** Dialog + Panel combined - for simple single-view command palettes */
|
|
366
|
-
Root:
|
|
370
|
+
Root: Y,
|
|
367
371
|
/** Autocomplete panel without dialog - use inside Dialog for swappable content */
|
|
368
|
-
Panel:
|
|
372
|
+
Panel: A,
|
|
369
373
|
/** Input for use inside Panel */
|
|
370
|
-
Input:
|
|
374
|
+
Input: ce,
|
|
371
375
|
/** Scrollable results container */
|
|
372
376
|
List: D,
|
|
373
377
|
/** Category grouping */
|
|
374
|
-
Group:
|
|
378
|
+
Group: ee,
|
|
375
379
|
/** Section header text */
|
|
376
|
-
GroupLabel:
|
|
380
|
+
GroupLabel: te,
|
|
377
381
|
/** Basic item */
|
|
378
|
-
Item:
|
|
382
|
+
Item: ne,
|
|
379
383
|
/** Rich item with breadcrumbs, highlights, icons */
|
|
380
|
-
ResultItem:
|
|
384
|
+
ResultItem: re,
|
|
381
385
|
/** Text with highlighted portions */
|
|
382
386
|
HighlightedText: y,
|
|
383
387
|
/** Empty state */
|
|
384
|
-
Empty:
|
|
388
|
+
Empty: oe,
|
|
385
389
|
/** Loading state */
|
|
386
390
|
Loading: ae,
|
|
387
391
|
/** Footer for keyboard hints */
|
|
388
|
-
Footer:
|
|
392
|
+
Footer: se,
|
|
389
393
|
/** Render prop iterator for groups */
|
|
390
|
-
Results:
|
|
394
|
+
Results: ue,
|
|
391
395
|
/** Render prop iterator for items within a group */
|
|
392
|
-
Items:
|
|
396
|
+
Items: de
|
|
393
397
|
};
|
|
394
398
|
export {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
399
|
+
we as C,
|
|
400
|
+
Ne as K,
|
|
401
|
+
ve as a
|
|
398
402
|
};
|
|
399
|
-
//# sourceMappingURL=command-palette-
|
|
403
|
+
//# sourceMappingURL=command-palette-jc1w07jwakxvj23a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette-jc1w07jwakxvj23a.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 { Surface } from \"../surface\";\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 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 <Surface\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 </Surface>\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\">\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-line\",\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}: {\n autoFocus?: boolean;\n placeholder?: string;\n className?: string;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n /** Optional leading content (e.g., back button) */\n leading?: React.ReactNode;\n /** Optional trailing content (e.g., Esc button) */\n trailing?: React.ReactNode;\n}) {\n const { onInputKeyDown } = useContext(PanelContext);\n const { onClose } = useContext(DialogContext);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\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 focus-visible: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","Surface","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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"}
|