@rinzai/zen 0.11.0 → 0.13.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/README.md +37 -7
- package/dist/accordion/index.d.ts +41 -0
- package/dist/accordion/index.d.ts.map +1 -0
- package/dist/accordion/index.js +81 -0
- package/dist/animated-number/index.d.ts +3 -2
- package/dist/animated-number/index.d.ts.map +1 -1
- package/dist/animated-number/index.js +40 -38
- package/dist/avatar/index.d.ts +7 -2
- package/dist/avatar/index.d.ts.map +1 -1
- package/dist/avatar/index.js +17 -11
- package/dist/backdrop/index.d.ts +4 -4
- package/dist/backdrop/index.d.ts.map +1 -1
- package/dist/backdrop/index.js +41 -39
- package/dist/badge/index.d.ts +4 -2
- package/dist/badge/index.d.ts.map +1 -1
- package/dist/badge/index.js +20 -11
- package/dist/base.css +4 -0
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/breadcrumbs/index.d.ts.map +1 -1
- package/dist/breadcrumbs/index.js +25 -24
- package/dist/button/index.d.ts +3 -3
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +16 -11
- package/dist/button-group/index.d.ts +13 -0
- package/dist/button-group/index.d.ts.map +1 -0
- package/dist/button-group/index.js +14 -0
- package/dist/calendar/index.d.ts +15 -8
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +97 -91
- package/dist/calendar-heatmap/index.d.ts +7 -5
- package/dist/calendar-heatmap/index.d.ts.map +1 -1
- package/dist/calendar-heatmap/index.js +32 -30
- package/dist/canvas/geometry.js +0 -1
- package/dist/canvas/index.d.ts +6 -6
- package/dist/canvas/index.d.ts.map +1 -1
- package/dist/canvas/index.js +135 -133
- package/dist/carousel/index.d.ts +27 -0
- package/dist/carousel/index.d.ts.map +1 -0
- package/dist/carousel/index.js +162 -0
- package/dist/chart/index.d.ts +5 -4
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.js +137 -135
- package/dist/chart/palette.js +0 -1
- package/dist/checkbox/index.d.ts +3 -3
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +33 -30
- package/dist/chip/index.js +1 -1
- package/dist/code-block/index.d.ts.map +1 -1
- package/dist/code-block/index.js +27 -25
- package/dist/code-input/index.d.ts.map +1 -1
- package/dist/code-input/index.js +30 -24
- package/dist/collapse/index.d.ts +4 -3
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +42 -39
- package/dist/color-picker/index.d.ts +14 -7
- package/dist/color-picker/index.d.ts.map +1 -1
- package/dist/color-picker/index.js +139 -128
- package/dist/combobox/index.d.ts +14 -6
- package/dist/combobox/index.d.ts.map +1 -1
- package/dist/combobox/index.js +158 -146
- package/dist/command-palette/index.d.ts +4 -3
- package/dist/command-palette/index.d.ts.map +1 -1
- package/dist/command-palette/index.js +60 -57
- package/dist/confirm-dialog/index.d.ts +6 -7
- package/dist/confirm-dialog/index.d.ts.map +1 -1
- package/dist/confirm-dialog/index.js +20 -16
- package/dist/date-picker/index.d.ts +23 -14
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +109 -93
- package/dist/dialog/index.d.ts +3 -4
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +58 -55
- package/dist/disclosure/index.d.ts +8 -0
- package/dist/disclosure/index.d.ts.map +1 -1
- package/dist/disclosure/index.js +31 -32
- package/dist/editable-cell/index.d.ts +4 -5
- package/dist/editable-cell/index.d.ts.map +1 -1
- package/dist/editable-cell/index.js +23 -22
- package/dist/field/index.d.ts +8 -8
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +20 -18
- package/dist/filter-bar/index.d.ts +2 -2
- package/dist/filter-bar/index.d.ts.map +1 -1
- package/dist/filter-bar/index.js +38 -36
- package/dist/header/index.d.ts +1 -1
- package/dist/header/index.d.ts.map +1 -1
- package/dist/header/index.js +13 -11
- package/dist/hover-card/index.d.ts +32 -0
- package/dist/hover-card/index.d.ts.map +1 -0
- package/dist/hover-card/index.js +84 -0
- package/dist/icon-picker/index.d.ts +16 -5
- package/dist/icon-picker/index.d.ts.map +1 -1
- package/dist/icon-picker/index.js +42 -47
- package/dist/icons/micro/plus.d.ts +3 -0
- package/dist/icons/micro/plus.d.ts.map +1 -0
- package/dist/icons/micro/plus.js +17 -0
- package/dist/index.d.ts +37 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/input/index.d.ts +5 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +9 -9
- package/dist/input-group/index.d.ts +4 -1
- package/dist/input-group/index.d.ts.map +1 -1
- package/dist/input-group/index.js +14 -14
- package/dist/keypad/index.d.ts +9 -7
- package/dist/keypad/index.d.ts.map +1 -1
- package/dist/keypad/index.js +22 -19
- package/dist/lib.js +112 -97
- package/dist/load-more/index.d.ts +4 -2
- package/dist/load-more/index.d.ts.map +1 -1
- package/dist/load-more/index.js +26 -23
- package/dist/locale-provider/index.d.ts +23 -0
- package/dist/locale-provider/index.d.ts.map +1 -0
- package/dist/locale-provider/index.js +35 -0
- package/dist/menu/index.d.ts +62 -9
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +371 -128
- package/dist/meter/index.d.ts +2 -2
- package/dist/meter/index.d.ts.map +1 -1
- package/dist/meter/index.js +4 -4
- package/dist/money-input/index.d.ts +20 -10
- package/dist/money-input/index.d.ts.map +1 -1
- package/dist/money-input/index.js +199 -190
- package/dist/month-picker/index.d.ts +17 -10
- package/dist/month-picker/index.d.ts.map +1 -1
- package/dist/month-picker/index.js +97 -86
- package/dist/navigation-menu/index.d.ts +42 -0
- package/dist/navigation-menu/index.d.ts.map +1 -0
- package/dist/navigation-menu/index.js +144 -0
- package/dist/number-field/index.d.ts +34 -0
- package/dist/number-field/index.d.ts.map +1 -0
- package/dist/number-field/index.js +119 -0
- package/dist/page-header/index.d.ts +4 -3
- package/dist/page-header/index.d.ts.map +1 -1
- package/dist/page-header/index.js +2 -1
- package/dist/pagination/index.d.ts +1 -1
- package/dist/pagination/index.d.ts.map +1 -1
- package/dist/pagination/index.js +35 -33
- package/dist/progress-ring/index.d.ts +4 -3
- package/dist/progress-ring/index.d.ts.map +1 -1
- package/dist/progress-ring/index.js +11 -10
- package/dist/radio-cards/index.d.ts +9 -5
- package/dist/radio-cards/index.d.ts.map +1 -1
- package/dist/radio-cards/index.js +26 -24
- package/dist/radio-group/index.d.ts +9 -8
- package/dist/radio-group/index.d.ts.map +1 -1
- package/dist/radio-group/index.js +35 -34
- package/dist/range-slider/index.d.ts +10 -4
- package/dist/range-slider/index.d.ts.map +1 -1
- package/dist/range-slider/index.js +43 -31
- package/dist/repeat-picker/index.d.ts +13 -6
- package/dist/repeat-picker/index.d.ts.map +1 -1
- package/dist/repeat-picker/index.js +73 -61
- package/dist/resizable/index.d.ts +29 -0
- package/dist/resizable/index.d.ts.map +1 -0
- package/dist/resizable/index.js +135 -0
- package/dist/segmented/index.d.ts +8 -5
- package/dist/segmented/index.d.ts.map +1 -1
- package/dist/segmented/index.js +36 -34
- package/dist/select/index.d.ts +9 -3
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +99 -96
- package/dist/separator/index.d.ts +14 -0
- package/dist/separator/index.d.ts.map +1 -0
- package/dist/separator/index.js +15 -0
- package/dist/side-nav/index.js +1 -1
- package/dist/skeleton/index.d.ts +4 -4
- package/dist/skeleton/index.d.ts.map +1 -1
- package/dist/skeleton/index.js +4 -3
- package/dist/slider/index.d.ts +6 -3
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +29 -23
- package/dist/sortable/index.d.ts +10 -20
- package/dist/sortable/index.d.ts.map +1 -1
- package/dist/sortable/index.js +72 -134
- package/dist/sortable/shared.d.ts +56 -0
- package/dist/sortable/shared.d.ts.map +1 -0
- package/dist/sortable/shared.js +104 -0
- package/dist/sortable/tree-model.d.ts +46 -0
- package/dist/sortable/tree-model.d.ts.map +1 -0
- package/dist/sortable/tree-model.js +87 -0
- package/dist/sortable/tree.d.ts +31 -0
- package/dist/sortable/tree.d.ts.map +1 -0
- package/dist/sortable/tree.js +150 -0
- package/dist/sparkline/index.d.ts +1 -1
- package/dist/sparkline/index.d.ts.map +1 -1
- package/dist/sparkline/index.js +26 -25
- package/dist/spinner/index.d.ts +4 -3
- package/dist/spinner/index.d.ts.map +1 -1
- package/dist/spinner/index.js +2 -1
- package/dist/status-pill/index.d.ts.map +1 -1
- package/dist/status-pill/index.js +1 -1
- package/dist/stepper/index.d.ts +1 -1
- package/dist/stepper/index.d.ts.map +1 -1
- package/dist/stepper/index.js +31 -30
- package/dist/tab-bar/index.js +1 -1
- package/dist/table/index.d.ts +5 -5
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +66 -64
- package/dist/table/selection.d.ts +2 -2
- package/dist/table/selection.d.ts.map +1 -1
- package/dist/table/selection.js +41 -38
- package/dist/table/swipe.d.ts +1 -1
- package/dist/table/swipe.d.ts.map +1 -1
- package/dist/table/swipe.js +1 -1
- package/dist/table-of-contents/index.d.ts +4 -2
- package/dist/table-of-contents/index.d.ts.map +1 -1
- package/dist/table-of-contents/index.js +27 -25
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +90 -88
- package/dist/tag-input/index.d.ts +3 -1
- package/dist/tag-input/index.d.ts.map +1 -1
- package/dist/tag-input/index.js +61 -52
- package/dist/theme-toggle/index.d.ts +9 -8
- package/dist/theme-toggle/index.d.ts.map +1 -1
- package/dist/theme-toggle/index.js +30 -28
- package/dist/theme.css +90 -12
- package/dist/time-field/index.d.ts +31 -0
- package/dist/time-field/index.d.ts.map +1 -0
- package/dist/time-field/index.js +175 -0
- package/dist/timeline/index.js +1 -1
- package/dist/toast/index.d.ts +1 -1
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +127 -125
- package/dist/toggle/index.d.ts +2 -2
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +8 -6
- package/dist/toggle-group/index.d.ts +35 -0
- package/dist/toggle-group/index.d.ts.map +1 -0
- package/dist/toggle-group/index.js +53 -0
- package/dist/toolbar/index.d.ts +19 -0
- package/dist/toolbar/index.d.ts.map +1 -0
- package/dist/toolbar/index.js +36 -0
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +40 -74
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +105 -102
- package/dist/trend/index.d.ts +2 -2
- package/dist/trend/index.d.ts.map +1 -1
- package/dist/trend/index.js +20 -19
- package/dist/utils/color.js +0 -1
- package/dist/utils/cva.js +0 -1
- package/dist/utils/cx.js +0 -1
- package/dist/utils/date.d.ts +6 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +1 -2
- package/dist/utils/direction.d.ts +7 -0
- package/dist/utils/direction.d.ts.map +1 -0
- package/dist/utils/direction.js +6 -0
- package/dist/utils/form-value.d.ts +15 -0
- package/dist/utils/form-value.d.ts.map +1 -0
- package/dist/utils/form-value.js +29 -0
- package/dist/utils/fx.js +0 -1
- package/dist/utils/merge.js +0 -1
- package/dist/utils/messages.d.ts +137 -0
- package/dist/utils/messages.d.ts.map +1 -0
- package/dist/utils/messages.js +133 -0
- package/dist/utils/money.js +0 -1
- package/dist/utils/month.js +0 -1
- package/dist/utils/motion.js +0 -1
- package/dist/utils/refs.d.ts +6 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/refs.js +13 -0
- package/dist/utils/repeat.d.ts +3 -1
- package/dist/utils/repeat.d.ts.map +1 -1
- package/dist/utils/repeat.js +28 -25
- package/dist/utils/roving.d.ts +17 -0
- package/dist/utils/roving.d.ts.map +1 -0
- package/dist/utils/roving.js +35 -0
- package/dist/utils/section-link.js +0 -1
- package/dist/utils/slot.d.ts.map +1 -1
- package/dist/utils/slot.js +7 -11
- package/dist/utils/status-icons.js +7 -7
- package/dist/utils/styles.d.ts +9 -2
- package/dist/utils/styles.d.ts.map +1 -1
- package/dist/utils/styles.js +6 -3
- package/dist/utils/theme-wave.js +0 -1
- package/dist/utils/theme.js +0 -1
- package/dist/utils/useAnchoredPopup.d.ts +7 -4
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +18 -11
- package/dist/utils/useControllable.d.ts +9 -0
- package/dist/utils/useControllable.d.ts.map +1 -0
- package/dist/utils/useControllable.js +15 -0
- package/dist/utils/useHoverPopup.d.ts +39 -0
- package/dist/utils/useHoverPopup.d.ts.map +1 -0
- package/dist/utils/useHoverPopup.js +64 -0
- package/dist/zen.css +1 -1
- package/package.json +1 -1
package/dist/combobox/index.js
CHANGED
|
@@ -1,163 +1,174 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cx as e } from "../utils/cx.js";
|
|
3
|
-
import {
|
|
4
|
-
import r from "../
|
|
5
|
-
import i from "../
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import d from "../
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
3
|
+
import { useControllable as t } from "../utils/useControllable.js";
|
|
4
|
+
import { anchoredStyle as n, useAnchoredPopup as r } from "../utils/useAnchoredPopup.js";
|
|
5
|
+
import { useMessages as i } from "../locale-provider/index.js";
|
|
6
|
+
import a from "../badge/index.js";
|
|
7
|
+
import o from "../button/index.js";
|
|
8
|
+
import { CheckIcon as s } from "../utils/status-icons.js";
|
|
9
|
+
import { useField as c } from "../field/index.js";
|
|
10
|
+
import { FIELD_SIZE as l, PLACEHOLDER as u, POPUP as d, TRIGGER as f } from "../utils/styles.js";
|
|
11
|
+
import { FormValue as p } from "../utils/form-value.js";
|
|
12
|
+
import { FieldChevron as m } from "../utils/field-chevron.js";
|
|
13
|
+
import h from "../collapse/index.js";
|
|
14
|
+
import g from "../icons/search.js";
|
|
15
|
+
import _ from "../icons/x-mark.js";
|
|
16
|
+
import { InputGroupAddon as v, InputGroupInput as y } from "../input-group/index.js";
|
|
17
|
+
import { useVirtualList as b } from "../utils/useVirtualList.js";
|
|
18
|
+
import { createContext as x, useContext as S, useEffect as C, useMemo as w, useRef as T, useState as E } from "react";
|
|
19
|
+
import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
|
|
17
20
|
//#region packages/combobox/index.tsx
|
|
18
|
-
var
|
|
19
|
-
let e =
|
|
21
|
+
var A = x(null), j = () => {
|
|
22
|
+
let e = S(A);
|
|
20
23
|
if (!e) throw Error("Combobox parts must be inside a Combobox");
|
|
21
24
|
return e;
|
|
22
25
|
};
|
|
23
|
-
function
|
|
24
|
-
let { items:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
]),
|
|
29
|
-
e || (
|
|
30
|
-
} }),
|
|
31
|
-
multiple:
|
|
32
|
-
keyOf:
|
|
33
|
-
textOf:
|
|
34
|
-
items:
|
|
35
|
-
selectedItems:
|
|
36
|
-
matches:
|
|
37
|
-
chosen:
|
|
38
|
-
toggle: (
|
|
39
|
-
if (
|
|
40
|
-
let
|
|
41
|
-
|
|
42
|
-
} else e
|
|
26
|
+
function M(e) {
|
|
27
|
+
let { items: n, itemKey: i = (e) => e.key, itemText: a = (e) => e.text, filter: o = (e, t) => a(e).toLowerCase().includes(t.toLowerCase()), selectedItems: s = [], name: c, children: l } = e, u = e.multiple === !0, [d, f, m] = t(e.value, e.defaultValue ?? (u ? [] : null), e.onValueChange), h = typeof d == "string" ? [d] : d ?? [], [g, _] = E(""), [v, y] = E(null), [b, x] = E(), S = T(null), C = T(null), D = T(null), j = T(35), M = w(() => g ? n.filter((e) => o(e, g)) : n, [
|
|
28
|
+
n,
|
|
29
|
+
g,
|
|
30
|
+
o
|
|
31
|
+
]), N = r({ onOpenChange: (e) => {
|
|
32
|
+
e || (y(null), _(""), N.popupRef.current?.contains(document.activeElement) && C.current?.focus());
|
|
33
|
+
} }), P = {
|
|
34
|
+
multiple: u,
|
|
35
|
+
keyOf: i,
|
|
36
|
+
textOf: a,
|
|
37
|
+
items: n,
|
|
38
|
+
selectedItems: s,
|
|
39
|
+
matches: M,
|
|
40
|
+
chosen: h,
|
|
41
|
+
toggle: (e) => {
|
|
42
|
+
if (u) {
|
|
43
|
+
let t = h.includes(e);
|
|
44
|
+
f(t ? h.filter((t) => t !== e) : [...h, e]);
|
|
45
|
+
} else f(e), N.setOpen(!1);
|
|
43
46
|
},
|
|
44
|
-
query:
|
|
45
|
-
setQuery:
|
|
46
|
-
active:
|
|
47
|
-
setActive:
|
|
48
|
-
create:
|
|
49
|
-
popup:
|
|
50
|
-
triggerRef:
|
|
51
|
-
listRef:
|
|
52
|
-
optionId: (e) => `${
|
|
53
|
-
itemHeight:
|
|
47
|
+
query: g,
|
|
48
|
+
setQuery: _,
|
|
49
|
+
active: v,
|
|
50
|
+
setActive: y,
|
|
51
|
+
create: S,
|
|
52
|
+
popup: N,
|
|
53
|
+
triggerRef: C,
|
|
54
|
+
listRef: D,
|
|
55
|
+
optionId: (e) => `${N.id}-option-${e}`,
|
|
56
|
+
itemHeight: j,
|
|
57
|
+
listLabelledBy: b,
|
|
58
|
+
setListLabelledBy: x
|
|
54
59
|
};
|
|
55
|
-
return /* @__PURE__ */
|
|
56
|
-
value:
|
|
57
|
-
children:
|
|
60
|
+
return /* @__PURE__ */ k(A.Provider, {
|
|
61
|
+
value: P,
|
|
62
|
+
children: [l, /* @__PURE__ */ O(p, {
|
|
63
|
+
name: c,
|
|
64
|
+
value: u ? h : h[0] ?? "",
|
|
65
|
+
onReset: m
|
|
66
|
+
})]
|
|
58
67
|
});
|
|
59
68
|
}
|
|
60
|
-
function
|
|
61
|
-
let
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"aria-
|
|
68
|
-
|
|
69
|
+
function N({ placeholder: t, disabled: n, size: r = "default", className: a, style: o, children: s, ...u }) {
|
|
70
|
+
let d = i(), p = t ?? d.selectPlaceholder, h = j(), { popup: g } = h, _ = c(), v = u.id ?? _?.id ?? `${g.id}-field`, y = u["aria-labelledby"] ?? (u["aria-label"] ? v : _?.labelId), { setListLabelledBy: b } = h;
|
|
71
|
+
C(() => b(y), [y, b]);
|
|
72
|
+
let x = T(!1), S = () => !n && g.setOpen(!0);
|
|
73
|
+
return /* @__PURE__ */ k("div", {
|
|
74
|
+
id: v,
|
|
75
|
+
"aria-labelledby": u["aria-label"] ? void 0 : _?.labelId,
|
|
76
|
+
"aria-invalid": _?.["aria-invalid"],
|
|
77
|
+
...u,
|
|
78
|
+
"aria-describedby": e(_?.["aria-describedby"], u["aria-describedby"]).trim() || void 0,
|
|
79
|
+
ref: h.triggerRef,
|
|
69
80
|
role: "combobox",
|
|
70
81
|
tabIndex: n ? -1 : 0,
|
|
71
82
|
"aria-haspopup": "listbox",
|
|
72
|
-
"aria-expanded":
|
|
73
|
-
"aria-controls":
|
|
83
|
+
"aria-expanded": g.open,
|
|
84
|
+
"aria-controls": g.id,
|
|
74
85
|
"aria-disabled": n || void 0,
|
|
75
|
-
"data-popup-open":
|
|
76
|
-
"data-zen-anchor":
|
|
86
|
+
"data-popup-open": g.triggerProps["data-popup-open"],
|
|
87
|
+
"data-zen-anchor": g.triggerProps["data-zen-anchor"],
|
|
77
88
|
style: {
|
|
78
|
-
...
|
|
79
|
-
...
|
|
89
|
+
...g.triggerProps.style,
|
|
90
|
+
...o
|
|
80
91
|
},
|
|
81
92
|
onPointerDown: (e) => {
|
|
82
|
-
|
|
93
|
+
u.onPointerDown?.(e), x.current = g.open;
|
|
83
94
|
},
|
|
84
95
|
onClick: (e) => {
|
|
85
|
-
|
|
96
|
+
u.onClick?.(e), e.preventDefault(), x.current ? g.setOpen(!1) : S(), x.current = !1;
|
|
86
97
|
},
|
|
87
98
|
onKeyDown: (e) => {
|
|
88
|
-
|
|
99
|
+
u.onKeyDown?.(e), [
|
|
89
100
|
"Enter",
|
|
90
101
|
" ",
|
|
91
102
|
"ArrowDown"
|
|
92
|
-
].includes(e.key) && (e.preventDefault(),
|
|
103
|
+
].includes(e.key) && (e.preventDefault(), S());
|
|
93
104
|
},
|
|
94
|
-
className: e(l, "w-56 shrink-0", n ? "cursor-not-allowed opacity-50" : "cursor-pointer",
|
|
95
|
-
children: [/* @__PURE__ */
|
|
105
|
+
className: e(f, l[r], "w-56 shrink-0", n ? "cursor-not-allowed opacity-50" : "cursor-pointer", g.open && "border-glow/60 [--glow-border-color:transparent] shadow-glow-focus", a),
|
|
106
|
+
children: [/* @__PURE__ */ O("div", {
|
|
96
107
|
className: e("flex min-w-0 flex-1 items-center gap-1 overflow-hidden text-sm", n ? "text-muted-foreground" : "text-foreground"),
|
|
97
|
-
children:
|
|
98
|
-
}), /* @__PURE__ */
|
|
108
|
+
children: s ?? /* @__PURE__ */ O(P, { placeholder: p })
|
|
109
|
+
}), /* @__PURE__ */ O(m, { open: g.open })]
|
|
99
110
|
});
|
|
100
111
|
}
|
|
101
|
-
function
|
|
102
|
-
let t =
|
|
103
|
-
let
|
|
104
|
-
return
|
|
112
|
+
function P({ placeholder: e }) {
|
|
113
|
+
let t = j(), n = i(), r = new Map([...t.selectedItems, ...t.items].map((e) => [t.keyOf(e), e])), s = t.chosen.flatMap((e) => {
|
|
114
|
+
let n = r.has(e) ? t.textOf(r.get(e)) : void 0;
|
|
115
|
+
return n ? [{
|
|
105
116
|
key: e,
|
|
106
|
-
text:
|
|
117
|
+
text: n
|
|
107
118
|
}] : [];
|
|
108
119
|
});
|
|
109
|
-
return
|
|
110
|
-
items:
|
|
111
|
-
data:
|
|
120
|
+
return s.length ? t.multiple ? /* @__PURE__ */ O(h, {
|
|
121
|
+
items: s.map((e) => e.text),
|
|
122
|
+
data: s,
|
|
112
123
|
badgeVariant: "secondary",
|
|
113
124
|
badgeClassName: "h-6 min-w-min gap-2",
|
|
114
125
|
className: "w-full gap-1",
|
|
115
|
-
children: (e,
|
|
116
|
-
className: "flex h-6 min-w-min gap-2
|
|
126
|
+
children: (e, r, i) => /* @__PURE__ */ k(a, {
|
|
127
|
+
className: "flex h-6 min-w-min gap-2 pe-1",
|
|
117
128
|
variant: "secondary",
|
|
118
|
-
children: [e, /* @__PURE__ */
|
|
119
|
-
"aria-label":
|
|
129
|
+
children: [e, /* @__PURE__ */ O(o, {
|
|
130
|
+
"aria-label": n.remove(e),
|
|
120
131
|
onClick: (e) => {
|
|
121
|
-
e.stopPropagation(),
|
|
132
|
+
e.stopPropagation(), i && t.toggle(i.key);
|
|
122
133
|
},
|
|
123
|
-
variant: "
|
|
134
|
+
variant: "ghost",
|
|
124
135
|
size: "icon",
|
|
125
136
|
className: "group relative -top-px size-4 rounded-sm p-0.5",
|
|
126
|
-
children: /* @__PURE__ */
|
|
137
|
+
children: /* @__PURE__ */ O(_, { className: "zen__combobox-remove-icon size-3 transition duration-300 group-hover:rotate-90" })
|
|
127
138
|
})]
|
|
128
|
-
},
|
|
129
|
-
}) : /* @__PURE__ */
|
|
130
|
-
className:
|
|
139
|
+
}, i?.key ?? r)
|
|
140
|
+
}) : /* @__PURE__ */ O(D, { children: s[0].text }) : /* @__PURE__ */ O("span", {
|
|
141
|
+
className: u,
|
|
131
142
|
children: e
|
|
132
143
|
});
|
|
133
144
|
}
|
|
134
|
-
function
|
|
135
|
-
let { popup: i } =
|
|
136
|
-
return /* @__PURE__ */
|
|
145
|
+
function F({ className: t, children: r }) {
|
|
146
|
+
let { popup: i } = j();
|
|
147
|
+
return /* @__PURE__ */ O("div", {
|
|
137
148
|
...i.popupProps,
|
|
138
|
-
style:
|
|
149
|
+
style: n(i.id, {
|
|
139
150
|
offset: 5,
|
|
140
151
|
width: "match"
|
|
141
152
|
}),
|
|
142
|
-
className: e("zen__popover",
|
|
143
|
-
children: /* @__PURE__ */
|
|
153
|
+
className: e("zen__popover", d, "overflow-visible p-0", t),
|
|
154
|
+
children: /* @__PURE__ */ O("div", {
|
|
144
155
|
className: "divide-tint/10 flex w-full flex-col divide-y overflow-hidden rounded-xl",
|
|
145
156
|
children: r
|
|
146
157
|
})
|
|
147
158
|
});
|
|
148
159
|
}
|
|
149
|
-
function
|
|
150
|
-
let n =
|
|
151
|
-
|
|
152
|
-
n.popup.open &&
|
|
160
|
+
function I({ placeholder: e, "aria-label": t }) {
|
|
161
|
+
let n = j(), r = i(), a = T(null);
|
|
162
|
+
C(() => {
|
|
163
|
+
n.popup.open && a.current?.focus();
|
|
153
164
|
}, [n.popup.open]);
|
|
154
|
-
let
|
|
155
|
-
return /* @__PURE__ */
|
|
165
|
+
let o = n.matches.map(n.keyOf);
|
|
166
|
+
return /* @__PURE__ */ k("div", {
|
|
156
167
|
className: "flex h-10 grow items-center gap-2 px-3",
|
|
157
|
-
children: [/* @__PURE__ */
|
|
158
|
-
ref:
|
|
159
|
-
placeholder: e,
|
|
160
|
-
"aria-label": t,
|
|
168
|
+
children: [/* @__PURE__ */ O(v, { children: /* @__PURE__ */ O(g, {}) }), /* @__PURE__ */ O(y, {
|
|
169
|
+
ref: a,
|
|
170
|
+
placeholder: e ?? r.search,
|
|
171
|
+
"aria-label": t ?? r.searchOptions,
|
|
161
172
|
"aria-controls": `${n.popup.id}-list`,
|
|
162
173
|
"aria-activedescendant": n.active === null ? void 0 : n.optionId(n.active),
|
|
163
174
|
value: n.query,
|
|
@@ -165,38 +176,39 @@ function M({ placeholder: e = "Search", "aria-label": t = "Search options" }) {
|
|
|
165
176
|
n.setQuery(e.target.value), n.setActive(null);
|
|
166
177
|
},
|
|
167
178
|
onKeyDown: (e) => {
|
|
168
|
-
let t = n.active === null ? -1 :
|
|
169
|
-
if (e.preventDefault(), !
|
|
170
|
-
let r =
|
|
171
|
-
n.setActive(r),
|
|
179
|
+
let t = n.active === null ? -1 : o.indexOf(n.active), r = (t) => {
|
|
180
|
+
if (e.preventDefault(), !o.length) return;
|
|
181
|
+
let r = o[(t + o.length) % o.length];
|
|
182
|
+
n.setActive(r), L(n.listRef.current, o.indexOf(r), n.itemHeight.current);
|
|
172
183
|
};
|
|
173
|
-
e.key === "ArrowDown" ? r(t + 1) : e.key === "ArrowUp" ? r(t === -1 ?
|
|
184
|
+
e.key === "ArrowDown" ? r(t + 1) : e.key === "ArrowUp" ? r(t === -1 ? o.length - 1 : t - 1) : e.key === "Enter" && (e.preventDefault(), n.active === null ? !o.length && n.query && n.create.current && (n.create.current(n.query), n.setQuery("")) : n.toggle(n.active));
|
|
174
185
|
}
|
|
175
186
|
})]
|
|
176
187
|
});
|
|
177
188
|
}
|
|
178
|
-
var
|
|
189
|
+
var L = (e, t, n) => {
|
|
179
190
|
if (!e || t < 0) return;
|
|
180
191
|
let r = t * n;
|
|
181
192
|
r < e.scrollTop ? e.scrollTop = r : r + n > e.scrollTop + e.clientHeight && (e.scrollTop = r + n - e.clientHeight);
|
|
182
|
-
},
|
|
183
|
-
function
|
|
184
|
-
let r =
|
|
193
|
+
}, R = x(null);
|
|
194
|
+
function z({ renderItem: e, itemHeight: t = 35, children: n }) {
|
|
195
|
+
let r = j();
|
|
185
196
|
r.itemHeight.current = t;
|
|
186
|
-
let i =
|
|
197
|
+
let i = b({
|
|
187
198
|
count: r.matches.length,
|
|
188
199
|
itemHeight: t,
|
|
189
200
|
scrollRef: r.listRef
|
|
190
201
|
});
|
|
191
|
-
return
|
|
202
|
+
return C(() => {
|
|
192
203
|
r.listRef.current && (r.listRef.current.scrollTop = 0);
|
|
193
|
-
}, [r.query, r.listRef]), /* @__PURE__ */
|
|
204
|
+
}, [r.query, r.listRef]), /* @__PURE__ */ k("ul", {
|
|
194
205
|
id: `${r.popup.id}-list`,
|
|
195
206
|
role: "listbox",
|
|
207
|
+
"aria-labelledby": r.listLabelledBy,
|
|
196
208
|
"aria-multiselectable": r.multiple || void 0,
|
|
197
209
|
className: "max-h-72 grow overflow-y-auto py-1 focus:ring-0 focus:outline-hidden",
|
|
198
210
|
ref: r.listRef,
|
|
199
|
-
children: [/* @__PURE__ */
|
|
211
|
+
children: [/* @__PURE__ */ O("div", {
|
|
200
212
|
style: {
|
|
201
213
|
height: `${i.totalSize}px`,
|
|
202
214
|
width: "100%",
|
|
@@ -204,61 +216,61 @@ function F({ renderItem: e, itemHeight: t = 35, children: n }) {
|
|
|
204
216
|
},
|
|
205
217
|
children: i.items.map((t) => {
|
|
206
218
|
let n = r.matches[t.index];
|
|
207
|
-
return /* @__PURE__ */
|
|
219
|
+
return /* @__PURE__ */ O(R.Provider, {
|
|
208
220
|
value: {
|
|
209
221
|
start: t.start,
|
|
210
222
|
size: t.size
|
|
211
223
|
},
|
|
212
|
-
children: e ? e(n) : /* @__PURE__ */
|
|
224
|
+
children: e ? e(n) : /* @__PURE__ */ O(B, { item: n })
|
|
213
225
|
}, r.keyOf(n));
|
|
214
226
|
})
|
|
215
227
|
}), n]
|
|
216
228
|
});
|
|
217
229
|
}
|
|
218
|
-
function
|
|
219
|
-
let i =
|
|
220
|
-
return /* @__PURE__ */
|
|
221
|
-
id: i.optionId(
|
|
230
|
+
function B({ item: t, className: n, children: r }) {
|
|
231
|
+
let i = j(), a = S(R), o = i.keyOf(t), c = i.chosen.includes(o);
|
|
232
|
+
return /* @__PURE__ */ k("li", {
|
|
233
|
+
id: i.optionId(o),
|
|
222
234
|
role: "option",
|
|
223
235
|
"aria-selected": c,
|
|
224
|
-
"data-highlighted": i.active ===
|
|
225
|
-
style:
|
|
226
|
-
height: `${
|
|
227
|
-
transform: `translateY(${
|
|
236
|
+
"data-highlighted": i.active === o || void 0,
|
|
237
|
+
style: a ? {
|
|
238
|
+
height: `${a.size}px`,
|
|
239
|
+
transform: `translateY(${a.start}px)`
|
|
228
240
|
} : void 0,
|
|
229
|
-
onMouseMove: () => i.active !==
|
|
230
|
-
onClick: () => i.toggle(
|
|
231
|
-
className: e("hover:bg-muted data-highlighted:bg-muted grid w-full cursor-pointer grid-cols-[1rem_1fr] items-center gap-2 px-3 py-2 text-sm outline-hidden select-none",
|
|
232
|
-
children: [/* @__PURE__ */
|
|
241
|
+
onMouseMove: () => i.active !== o && i.setActive(o),
|
|
242
|
+
onClick: () => i.toggle(o),
|
|
243
|
+
className: e("hover:bg-muted data-highlighted:bg-muted grid w-full cursor-pointer grid-cols-[1rem_1fr] items-center gap-2 px-3 py-2 text-sm outline-hidden select-none", a && "absolute top-0 left-0", n),
|
|
244
|
+
children: [/* @__PURE__ */ O("span", {
|
|
233
245
|
className: "text-primary col-start-1",
|
|
234
246
|
"aria-hidden": !0,
|
|
235
|
-
children: c && /* @__PURE__ */
|
|
236
|
-
}), /* @__PURE__ */
|
|
247
|
+
children: c && /* @__PURE__ */ O(s, {})
|
|
248
|
+
}), /* @__PURE__ */ O("span", {
|
|
237
249
|
className: "col-start-2 truncate",
|
|
238
250
|
children: r ?? i.textOf(t)
|
|
239
251
|
})]
|
|
240
252
|
});
|
|
241
253
|
}
|
|
242
|
-
function
|
|
243
|
-
let t =
|
|
244
|
-
return !t.query || t.matches.length ? null : /* @__PURE__ */
|
|
254
|
+
function V({ children: e }) {
|
|
255
|
+
let t = j(), n = i();
|
|
256
|
+
return !t.query || t.matches.length ? null : /* @__PURE__ */ O("li", {
|
|
245
257
|
className: "text-muted-foreground cursor-not-allowed px-3 py-2 text-sm",
|
|
246
|
-
children: e
|
|
258
|
+
children: e ?? n.noResults
|
|
247
259
|
});
|
|
248
260
|
}
|
|
249
|
-
function
|
|
250
|
-
let n =
|
|
251
|
-
return
|
|
252
|
-
|
|
253
|
-
}), [
|
|
261
|
+
function H({ onCreate: e, children: t }) {
|
|
262
|
+
let n = j(), r = i(), { create: a } = n;
|
|
263
|
+
return C(() => (a.current = e, () => {
|
|
264
|
+
a.current = null;
|
|
265
|
+
}), [a, e]), !n.query || n.matches.length ? null : /* @__PURE__ */ O("li", {
|
|
254
266
|
role: "option",
|
|
255
267
|
"aria-selected": !1,
|
|
256
268
|
className: "hover:bg-muted cursor-pointer px-3 py-2 text-sm select-none",
|
|
257
269
|
onClick: () => {
|
|
258
270
|
e(n.query), n.setQuery("");
|
|
259
271
|
},
|
|
260
|
-
children: t(n.query)
|
|
272
|
+
children: (t ?? r.add)(n.query)
|
|
261
273
|
});
|
|
262
274
|
}
|
|
263
275
|
//#endregion
|
|
264
|
-
export {
|
|
276
|
+
export { H as ComboboxCreate, V as ComboboxEmpty, B as ComboboxItem, z as ComboboxList, F as ComboboxPopup, I as ComboboxSearch, N as ComboboxTrigger, M as default };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Search everything and act on it (pages, commands, records): a field over a
|
|
4
4
|
* list that narrows as you type. Arrow keys move, Enter runs the item and
|
|
5
5
|
* closes. Open it from a button, or anywhere with ⌘K / Ctrl+K
|
|
6
6
|
* (useCommandPaletteShortcut).
|
|
7
7
|
*/
|
|
8
|
-
export default function CommandPalette({ open, onOpenChange, items, placeholder, empty, label, className, }: CommandPaletteProps): import('react').JSX.Element;
|
|
8
|
+
export default function CommandPalette({ open, onOpenChange, items, placeholder: placeholderProp, empty: emptyProp, label: labelProp, className, ref: refProp, ...rest }: CommandPaletteProps): import('react').JSX.Element;
|
|
9
9
|
/** The items matching `query`: each of its words is in the label or keywords. Labels starting with it come first. */
|
|
10
10
|
export declare function search(items: CommandItem[], query: string): CommandItem[];
|
|
11
11
|
/** Calls `open` on ⌘K (Mac) or Ctrl+K, anywhere on the page. */
|
|
@@ -23,7 +23,8 @@ export interface CommandItem {
|
|
|
23
23
|
hint?: ReactNode;
|
|
24
24
|
onSelect: () => void;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
/** Other props (data-*, an id) go on the <dialog>. */
|
|
27
|
+
export interface CommandPaletteProps extends Omit<ComponentProps<'dialog'>, 'open' | 'children'> {
|
|
27
28
|
open: boolean;
|
|
28
29
|
onOpenChange: (open: boolean) => void;
|
|
29
30
|
items: CommandItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/command-palette/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/command-palette/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAiB,SAAS,EAA+C,MAAM,OAAO,CAAC;AAE9G;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EAAE,eAAe,EAC5B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,EACT,GAAG,EAAE,OAAO,EACZ,GAAG,IAAI,EACV,EAAE,mBAAmB,+BA0IrB;AAED,qHAAqH;AACrH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAUzE;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,GAAG,SAAM,GAAG,IAAI,CAc3E;AAED,MAAM,WAAW,WAAW;IACxB,oDAAoD;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5F,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1,88 +1,91 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cx as e } from "../utils/cx.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useMergedRefs as t } from "../utils/refs.js";
|
|
4
|
+
import { useMessages as n } from "../locale-provider/index.js";
|
|
5
|
+
import { useModal as r } from "../dialog/index.js";
|
|
6
|
+
import { useEffect as i, useId as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
7
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
8
|
//#region packages/command-palette/index.tsx
|
|
7
|
-
function
|
|
8
|
-
let _ =
|
|
9
|
-
|
|
10
|
-
let [
|
|
11
|
-
|
|
12
|
-
let
|
|
9
|
+
function d({ open: d, onOpenChange: p, items: m, placeholder: h, empty: g, label: _, className: v, ref: y, ...b }) {
|
|
10
|
+
let x = n(), S = h ?? x.search, C = g ?? x.noResults, w = _ ?? x.commands, T = s(null), E = t(T, y), D = s(null), O = s(null), k = a(), [A, j] = c(""), [M, N] = c(0);
|
|
11
|
+
r(T, d, D);
|
|
12
|
+
let [P, F] = c(d);
|
|
13
|
+
d !== P && (F(d), d && (j(""), N(0)));
|
|
14
|
+
let I = o(() => f(m, A), [m, A]), L = o(() => {
|
|
13
15
|
let e = /* @__PURE__ */ new Map();
|
|
14
|
-
return
|
|
16
|
+
return I.forEach((t, n) => {
|
|
15
17
|
let r = t.group ?? "";
|
|
16
18
|
e.set(r, [...e.get(r) ?? [], {
|
|
17
19
|
item: t,
|
|
18
20
|
index: n
|
|
19
21
|
}]);
|
|
20
22
|
}), e;
|
|
21
|
-
}, [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}, [
|
|
25
|
-
let
|
|
26
|
-
e && (
|
|
23
|
+
}, [I]), R = Math.min(M, I.length - 1);
|
|
24
|
+
i(() => {
|
|
25
|
+
O.current?.querySelector(`[data-index="${R}"]`)?.scrollIntoView({ block: "nearest" });
|
|
26
|
+
}, [R]);
|
|
27
|
+
let z = (e) => {
|
|
28
|
+
e && (p(!1), e.onSelect());
|
|
29
|
+
}, B = (e) => {
|
|
30
|
+
let t = I.length - 1, n = e.key === "ArrowDown" ? (R + 1) % (t + 1) : e.key === "ArrowUp" ? (R - 1 + t + 1) % (t + 1) : e.key === "Home" && e.ctrlKey ? 0 : e.key === "End" && e.ctrlKey ? t : null;
|
|
31
|
+
n !== null && I.length ? (e.preventDefault(), N(n)) : e.key === "Enter" && (e.preventDefault(), z(I[R]));
|
|
27
32
|
};
|
|
28
|
-
return /* @__PURE__ */
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
return /* @__PURE__ */ u("dialog", {
|
|
34
|
+
...b,
|
|
35
|
+
ref: E,
|
|
36
|
+
"aria-label": w,
|
|
37
|
+
className: e("zen__dialog zen__command-palette glass glass-blur glow-edge text-card-foreground bg-card/90! overflow-hidden p-0", "mx-auto mt-[12dvh] mb-auto w-[36rem] max-w-[calc(100vw-2rem)] rounded-xl", "backdrop:bg-[color:var(--backdrop-scrim,oklch(0_0_0/0.5))] backdrop:backdrop-blur-sm pointer-coarse:backdrop:backdrop-blur-none", v),
|
|
32
38
|
onCancel: (e) => {
|
|
33
|
-
e.preventDefault(),
|
|
39
|
+
e.preventDefault(), p(!1);
|
|
34
40
|
},
|
|
35
|
-
onClick: (e) => e.target === e.currentTarget &&
|
|
36
|
-
children: [/* @__PURE__ */
|
|
37
|
-
ref:
|
|
41
|
+
onClick: (e) => e.target === e.currentTarget && p(!1),
|
|
42
|
+
children: [/* @__PURE__ */ l("input", {
|
|
43
|
+
ref: D,
|
|
38
44
|
role: "combobox",
|
|
39
45
|
"aria-expanded": !0,
|
|
40
|
-
"aria-controls": `${
|
|
41
|
-
"aria-activedescendant":
|
|
46
|
+
"aria-controls": `${k}-list`,
|
|
47
|
+
"aria-activedescendant": I.length ? `${k}-${R}` : void 0,
|
|
42
48
|
"aria-autocomplete": "list",
|
|
43
|
-
"aria-label":
|
|
44
|
-
placeholder:
|
|
45
|
-
value:
|
|
49
|
+
"aria-label": w,
|
|
50
|
+
placeholder: S,
|
|
51
|
+
value: A,
|
|
46
52
|
onChange: (e) => {
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
onKeyDown: (e) => {
|
|
50
|
-
let t = D.length - 1, n = e.key === "ArrowDown" ? (k + 1) % (t + 1) : e.key === "ArrowUp" ? (k - 1 + t + 1) % (t + 1) : e.key === "Home" && e.ctrlKey ? 0 : e.key === "End" && e.ctrlKey ? t : null;
|
|
51
|
-
n !== null && D.length ? (e.preventDefault(), w(n)) : e.key === "Enter" && (e.preventDefault(), A(D[k]));
|
|
53
|
+
j(e.target.value), N(0);
|
|
52
54
|
},
|
|
55
|
+
onKeyDown: B,
|
|
53
56
|
className: "border-tint/[0.07] h-14 w-full border-b bg-transparent px-5 text-base outline-hidden placeholder:text-[color:oklch(var(--muted-foreground)/var(--zen-placeholder))]"
|
|
54
|
-
}), /* @__PURE__ */
|
|
55
|
-
ref:
|
|
56
|
-
id: `${
|
|
57
|
+
}), /* @__PURE__ */ u("div", {
|
|
58
|
+
ref: O,
|
|
59
|
+
id: `${k}-list`,
|
|
57
60
|
role: "listbox",
|
|
58
|
-
"aria-label":
|
|
61
|
+
"aria-label": w,
|
|
59
62
|
className: "max-h-[min(24rem,60dvh)] overflow-y-auto p-2",
|
|
60
|
-
children: [!
|
|
63
|
+
children: [!I.length && /* @__PURE__ */ l("p", {
|
|
61
64
|
className: "text-muted-foreground my-0! px-3 py-8 text-center text-sm",
|
|
62
|
-
children:
|
|
63
|
-
}), [...
|
|
65
|
+
children: C
|
|
66
|
+
}), [...L].map(([e, t]) => /* @__PURE__ */ u("div", {
|
|
64
67
|
role: "group",
|
|
65
68
|
"aria-label": e || void 0,
|
|
66
69
|
className: "not-first:mt-2",
|
|
67
|
-
children: [e && /* @__PURE__ */
|
|
70
|
+
children: [e && /* @__PURE__ */ l("div", {
|
|
68
71
|
"aria-hidden": !0,
|
|
69
72
|
className: "text-muted-foreground text-2xs px-3 pt-2 pb-1 tracking-widest uppercase",
|
|
70
73
|
children: e
|
|
71
|
-
}), t.map(({ item: e, index: t }) => /* @__PURE__ */
|
|
72
|
-
id: `${
|
|
74
|
+
}), t.map(({ item: e, index: t }) => /* @__PURE__ */ u("div", {
|
|
75
|
+
id: `${k}-${t}`,
|
|
73
76
|
"data-index": t,
|
|
74
77
|
role: "option",
|
|
75
|
-
"aria-selected": t ===
|
|
76
|
-
onPointerMove: () => t !==
|
|
77
|
-
onClick: () =>
|
|
78
|
+
"aria-selected": t === R,
|
|
79
|
+
onPointerMove: () => t !== R && N(t),
|
|
80
|
+
onClick: () => z(e),
|
|
78
81
|
className: "text-muted-foreground aria-selected:bg-primary/15 aria-selected:text-foreground flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2.5 text-sm aria-selected:shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.25)] [&_svg]:size-4 [&_svg]:shrink-0",
|
|
79
82
|
children: [
|
|
80
83
|
e.icon,
|
|
81
|
-
/* @__PURE__ */
|
|
84
|
+
/* @__PURE__ */ l("span", {
|
|
82
85
|
className: "min-w-0 flex-1 truncate",
|
|
83
86
|
children: e.label
|
|
84
87
|
}),
|
|
85
|
-
e.hint && /* @__PURE__ */
|
|
88
|
+
e.hint && /* @__PURE__ */ l("span", {
|
|
86
89
|
className: "text-muted-foreground text-xs",
|
|
87
90
|
children: e.hint
|
|
88
91
|
})
|
|
@@ -92,7 +95,7 @@ function l({ open: l, onOpenChange: d, items: f, placeholder: p = "Search…", e
|
|
|
92
95
|
})]
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
|
-
function
|
|
98
|
+
function f(e, t) {
|
|
96
99
|
let n = t.toLowerCase().split(/\s+/).filter(Boolean);
|
|
97
100
|
if (!n.length) return e;
|
|
98
101
|
let r = t.trim().toLowerCase(), i = e.filter((e) => {
|
|
@@ -105,16 +108,16 @@ function u(e, t) {
|
|
|
105
108
|
}), a = (e) => +!e.label.toLowerCase().startsWith(r);
|
|
106
109
|
return i.sort((e, t) => a(e) - a(t));
|
|
107
110
|
}
|
|
108
|
-
function
|
|
109
|
-
let
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}),
|
|
111
|
+
function p(e, t = "k") {
|
|
112
|
+
let n = s(e);
|
|
113
|
+
i(() => {
|
|
114
|
+
n.current = e;
|
|
115
|
+
}), i(() => {
|
|
113
116
|
let e = (e) => {
|
|
114
|
-
e.key.toLowerCase() !== t || !(e.metaKey || e.ctrlKey) || e.altKey || e.shiftKey || (e.preventDefault(),
|
|
117
|
+
e.key.toLowerCase() !== t || !(e.metaKey || e.ctrlKey) || e.altKey || e.shiftKey || (e.preventDefault(), n.current());
|
|
115
118
|
};
|
|
116
119
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
117
120
|
}, [t]);
|
|
118
121
|
}
|
|
119
122
|
//#endregion
|
|
120
|
-
export {
|
|
123
|
+
export { d as default, f as search, p as useCommandPaletteShortcut };
|