@forgedevstack/bear 1.0.5 → 1.0.6
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/dist/components/Calendar/Calendar.cjs +1 -1
- package/dist/components/Calendar/Calendar.const.cjs +1 -1
- package/dist/components/Calendar/Calendar.const.d.ts +1 -0
- package/dist/components/Calendar/Calendar.const.js +6 -5
- package/dist/components/Calendar/Calendar.helpers.cjs +1 -1
- package/dist/components/Calendar/Calendar.helpers.js +4 -4
- package/dist/components/Calendar/Calendar.js +128 -128
- package/dist/components/Cascader/Cascader.cjs +1 -0
- package/dist/components/Cascader/Cascader.const.cjs +1 -0
- package/dist/components/Cascader/Cascader.const.d.ts +33 -0
- package/dist/components/Cascader/Cascader.const.js +21 -0
- package/dist/components/Cascader/Cascader.d.ts +17 -0
- package/dist/components/Cascader/Cascader.js +227 -0
- package/dist/components/Cascader/Cascader.types.d.ts +94 -0
- package/dist/components/Cascader/index.d.ts +2 -0
- package/dist/components/CommandPalette/CommandPalette.cjs +1 -0
- package/dist/components/CommandPalette/CommandPalette.const.cjs +1 -0
- package/dist/components/CommandPalette/CommandPalette.const.d.ts +25 -0
- package/dist/components/CommandPalette/CommandPalette.const.js +13 -0
- package/dist/components/CommandPalette/CommandPalette.d.ts +18 -0
- package/dist/components/CommandPalette/CommandPalette.js +190 -0
- package/dist/components/CommandPalette/CommandPalette.types.d.ts +90 -0
- package/dist/components/CommandPalette/CommandPalette.utils.cjs +1 -0
- package/dist/components/CommandPalette/CommandPalette.utils.d.ts +17 -0
- package/dist/components/CommandPalette/CommandPalette.utils.js +63 -0
- package/dist/components/CommandPalette/index.d.ts +2 -0
- package/dist/components/CreditInput/CreditInput.cjs +1 -0
- package/dist/components/CreditInput/CreditInput.const.cjs +1 -0
- package/dist/components/CreditInput/CreditInput.const.d.ts +37 -0
- package/dist/components/CreditInput/CreditInput.const.js +66 -0
- package/dist/components/CreditInput/CreditInput.d.ts +15 -0
- package/dist/components/CreditInput/CreditInput.js +214 -0
- package/dist/components/CreditInput/CreditInput.types.d.ts +93 -0
- package/dist/components/CreditInput/CreditInput.utils.cjs +1 -0
- package/dist/components/CreditInput/CreditInput.utils.d.ts +48 -0
- package/dist/components/CreditInput/CreditInput.utils.js +79 -0
- package/dist/components/CreditInput/index.d.ts +2 -0
- package/dist/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.js +108 -84
- package/dist/components/DatePicker/DatePicker.types.d.ts +2 -1
- package/dist/components/Drawer/Drawer.cjs +1 -1
- package/dist/components/Drawer/Drawer.js +75 -44
- package/dist/components/Form/Form.cjs +1 -0
- package/dist/components/Form/Form.const.cjs +1 -0
- package/dist/components/Form/Form.const.d.ts +33 -0
- package/dist/components/Form/Form.const.js +27 -0
- package/dist/components/Form/Form.context.cjs +1 -0
- package/dist/components/Form/Form.context.d.ts +13 -0
- package/dist/components/Form/Form.context.js +12 -0
- package/dist/components/Form/Form.d.ts +18 -0
- package/dist/components/Form/Form.js +230 -0
- package/dist/components/Form/Form.types.d.ts +166 -0
- package/dist/components/Form/Form.utils.cjs +1 -0
- package/dist/components/Form/Form.utils.d.ts +17 -0
- package/dist/components/Form/Form.utils.js +31 -0
- package/dist/components/Form/index.d.ts +3 -0
- package/dist/components/NotificationCenter/NotificationCenter.cjs +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.const.cjs +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.const.d.ts +25 -0
- package/dist/components/NotificationCenter/NotificationCenter.const.js +28 -0
- package/dist/components/NotificationCenter/NotificationCenter.d.ts +15 -0
- package/dist/components/NotificationCenter/NotificationCenter.js +223 -0
- package/dist/components/NotificationCenter/NotificationCenter.types.d.ts +117 -0
- package/dist/components/NotificationCenter/NotificationCenter.utils.cjs +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.utils.d.ts +11 -0
- package/dist/components/NotificationCenter/NotificationCenter.utils.js +19 -0
- package/dist/components/NotificationCenter/index.d.ts +2 -0
- package/dist/components/PhoneInput/PhoneInput.cjs +1 -0
- package/dist/components/PhoneInput/PhoneInput.const.cjs +1 -0
- package/dist/components/PhoneInput/PhoneInput.const.d.ts +33 -0
- package/dist/components/PhoneInput/PhoneInput.const.js +82 -0
- package/dist/components/PhoneInput/PhoneInput.d.ts +16 -0
- package/dist/components/PhoneInput/PhoneInput.js +194 -0
- package/dist/components/PhoneInput/PhoneInput.types.d.ts +108 -0
- package/dist/components/PhoneInput/PhoneInput.utils.cjs +1 -0
- package/dist/components/PhoneInput/PhoneInput.utils.d.ts +25 -0
- package/dist/components/PhoneInput/PhoneInput.utils.js +39 -0
- package/dist/components/PhoneInput/index.d.ts +2 -0
- package/dist/components/SignPad/SignPad.cjs +1 -1
- package/dist/components/SignPad/SignPad.js +56 -56
- package/dist/components/TimePicker/TimePicker.cjs +1 -1
- package/dist/components/TimePicker/TimePicker.constants.cjs +1 -1
- package/dist/components/TimePicker/TimePicker.constants.d.ts +22 -1
- package/dist/components/TimePicker/TimePicker.constants.js +36 -19
- package/dist/components/TimePicker/TimePicker.js +97 -131
- package/dist/components/TimePicker/TimePicker.types.d.ts +47 -6
- package/dist/components/TimePicker/components/TimePickerColumnsDropdown/TimePickerColumnsDropdown.cjs +1 -0
- package/dist/components/TimePicker/components/TimePickerColumnsDropdown/TimePickerColumnsDropdown.d.ts +3 -0
- package/dist/components/TimePicker/components/TimePickerColumnsDropdown/TimePickerColumnsDropdown.js +81 -0
- package/dist/components/TimePicker/components/TimePickerColumnsDropdown/index.d.ts +1 -0
- package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.cjs +1 -0
- package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.d.ts +3 -0
- package/dist/components/TimePicker/components/TimePickerDialDropdown/TimePickerDialDropdown.js +84 -0
- package/dist/components/TimePicker/components/TimePickerDialDropdown/index.d.ts +1 -0
- package/dist/components/TimePicker/helpers/ClockFaceSvg.cjs +1 -0
- package/dist/components/TimePicker/helpers/ClockFaceSvg.d.ts +18 -0
- package/dist/components/TimePicker/helpers/ClockFaceSvg.js +67 -0
- package/dist/components/TimePicker/helpers/index.d.ts +2 -0
- package/dist/components/TimePicker/index.d.ts +1 -1
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.ts +12 -2
- package/dist/components/index.js +139 -126
- package/dist/index.cjs +1 -1
- package/dist/index.js +247 -234
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.cjs +0 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -3
- package/dist/components/DateTimePicker/DateTimePicker.js +0 -178
- package/dist/components/DateTimePicker/DateTimePicker.types.d.ts +0 -26
- package/dist/components/DateTimePicker/DateTimePicker.utils.cjs +0 -1
- package/dist/components/DateTimePicker/DateTimePicker.utils.d.ts +0 -2
- package/dist/components/DateTimePicker/DateTimePicker.utils.js +0 -16
- package/dist/components/DateTimePicker/index.d.ts +0 -2
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { jsxs as h, jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { useState as R, useRef as H, useMemo as O, useEffect as P, useCallback as w } from "react";
|
|
3
|
+
import { createPortal as $ } from "react-dom";
|
|
4
|
+
import { cn as y } from "../../utils/cn.js";
|
|
5
|
+
import { CASCADER_DEFAULT_TRANSLATIONS as ee, CASCADER_PATH_SEPARATOR as re, CASCADER_VARIANT_CLASSES as ae, CASCADER_SIZE_CLASSES as te, CASCADER_DROPDOWN_Z_INDEX as ne } from "./Cascader.const.js";
|
|
6
|
+
const ce = ({
|
|
7
|
+
options: b,
|
|
8
|
+
selectedPath: s,
|
|
9
|
+
expandedPath: o,
|
|
10
|
+
onSelect: B,
|
|
11
|
+
onExpand: p,
|
|
12
|
+
expandTrigger: k,
|
|
13
|
+
level: i
|
|
14
|
+
}) => {
|
|
15
|
+
const m = (a) => {
|
|
16
|
+
var d;
|
|
17
|
+
B(a, i), (d = a.children) != null && d.length && p(a, i);
|
|
18
|
+
}, v = (a) => {
|
|
19
|
+
var d;
|
|
20
|
+
k === "hover" && ((d = a.children) != null && d.length) && p(a, i);
|
|
21
|
+
};
|
|
22
|
+
return /* @__PURE__ */ c("div", { className: "Bear-Cascader__panel bear-min-w-[180px] bear-max-h-[280px] bear-overflow-y-auto bear-border-r bear-border-zinc-200 dark:bear-border-zinc-700 last:bear-border-r-0", children: b.map((a) => {
|
|
23
|
+
const d = s[i] === a.value, C = o[i] === a.value, N = a.children && a.children.length > 0;
|
|
24
|
+
return /* @__PURE__ */ h(
|
|
25
|
+
"button",
|
|
26
|
+
{
|
|
27
|
+
type: "button",
|
|
28
|
+
disabled: a.disabled,
|
|
29
|
+
onClick: () => m(a),
|
|
30
|
+
onMouseEnter: () => v(a),
|
|
31
|
+
className: y(
|
|
32
|
+
"Bear-Cascader__option bear-w-full bear-flex bear-items-center bear-justify-between bear-px-3 bear-py-2 bear-text-sm bear-text-left bear-transition-colors",
|
|
33
|
+
d && "Bear-Cascader__option--selected bear-bg-pink-500/20 bear-text-pink-600 dark:bear-text-pink-400",
|
|
34
|
+
C && !d && "Bear-Cascader__option--expanded bear-bg-gray-100 dark:bear-bg-zinc-700",
|
|
35
|
+
!d && !C && "bear-text-gray-700 dark:bear-text-zinc-300 hover:bear-bg-gray-100 dark:hover:bear-bg-zinc-700",
|
|
36
|
+
a.disabled && "Bear-Cascader__option--disabled bear-opacity-50 bear-cursor-not-allowed"
|
|
37
|
+
),
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ h("span", { className: "bear-flex bear-items-center bear-gap-2", children: [
|
|
40
|
+
a.icon && /* @__PURE__ */ c("span", { className: "Bear-Cascader__option-icon", children: a.icon }),
|
|
41
|
+
/* @__PURE__ */ c("span", { className: "Bear-Cascader__option-label", children: a.label })
|
|
42
|
+
] }),
|
|
43
|
+
N && /* @__PURE__ */ c("svg", { className: "Bear-Cascader__arrow bear-w-4 bear-h-4 bear-text-gray-500 dark:bear-text-zinc-500", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ c("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
a.value
|
|
47
|
+
);
|
|
48
|
+
}) });
|
|
49
|
+
}, be = ({
|
|
50
|
+
options: b,
|
|
51
|
+
value: s = [],
|
|
52
|
+
onChange: o,
|
|
53
|
+
placeholder: B,
|
|
54
|
+
label: p,
|
|
55
|
+
helperText: k,
|
|
56
|
+
error: i,
|
|
57
|
+
disabled: m = !1,
|
|
58
|
+
loading: v = !1,
|
|
59
|
+
clearable: a = !0,
|
|
60
|
+
size: d = "md",
|
|
61
|
+
variant: C = "default",
|
|
62
|
+
expandTrigger: N = "click",
|
|
63
|
+
showFullPath: D = !0,
|
|
64
|
+
pathSeparator: j = re,
|
|
65
|
+
changeOnSelect: M = !1,
|
|
66
|
+
className: U,
|
|
67
|
+
testId: V,
|
|
68
|
+
translations: T,
|
|
69
|
+
icon: Y
|
|
70
|
+
}) => {
|
|
71
|
+
const [x, E] = R(!1), [_, A] = R([]), [I, q] = R({ top: 0, left: 0 }), W = H(null), z = H(null), S = O(() => ({
|
|
72
|
+
...ee,
|
|
73
|
+
...T
|
|
74
|
+
}), [T]);
|
|
75
|
+
P(() => {
|
|
76
|
+
if (x && z.current) {
|
|
77
|
+
const e = z.current.getBoundingClientRect(), t = window.scrollY || document.documentElement.scrollTop, r = window.scrollX || document.documentElement.scrollLeft;
|
|
78
|
+
q({
|
|
79
|
+
top: e.bottom + t + 8,
|
|
80
|
+
left: e.left + r
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}, [x]), P(() => {
|
|
84
|
+
const e = (t) => {
|
|
85
|
+
var n, l;
|
|
86
|
+
const r = t.target;
|
|
87
|
+
(n = W.current) != null && n.contains(r) || (l = r.closest) != null && l.call(r, "[data-bear-cascader-dropdown]") || E(!1);
|
|
88
|
+
};
|
|
89
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
90
|
+
}, []), P(() => {
|
|
91
|
+
s.length > 0 && A(s.slice(0, -1));
|
|
92
|
+
}, [s]);
|
|
93
|
+
const F = w((e, t) => {
|
|
94
|
+
for (const r of e) {
|
|
95
|
+
if (r.value === t) return r;
|
|
96
|
+
if (r.children) {
|
|
97
|
+
const n = F(r.children, t);
|
|
98
|
+
if (n) return n;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, []), X = O(() => {
|
|
102
|
+
var t;
|
|
103
|
+
if (s.length === 0) return "";
|
|
104
|
+
const e = s.map((r, n) => {
|
|
105
|
+
let l = b;
|
|
106
|
+
for (let f = 0; f < n; f++) {
|
|
107
|
+
const u = l.find((L) => L.value === s[f]);
|
|
108
|
+
u != null && u.children && (l = u.children);
|
|
109
|
+
}
|
|
110
|
+
return l.find((f) => f.value === r);
|
|
111
|
+
}).filter(Boolean);
|
|
112
|
+
return D ? e.map((r) => r.label).join(j) : ((t = e[e.length - 1]) == null ? void 0 : t.label) || "";
|
|
113
|
+
}, [s, b, D, j]), Z = O(() => {
|
|
114
|
+
const e = [b];
|
|
115
|
+
let t = b;
|
|
116
|
+
for (const r of _) {
|
|
117
|
+
const n = t.find((l) => l.value === r);
|
|
118
|
+
if (n != null && n.children)
|
|
119
|
+
e.push(n.children), t = n.children;
|
|
120
|
+
else
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
return e;
|
|
124
|
+
}, [b, _]), G = w((e, t) => {
|
|
125
|
+
var n, l;
|
|
126
|
+
const r = [..._.slice(0, t), e.value];
|
|
127
|
+
if (!((n = e.children) != null && n.length) || M) {
|
|
128
|
+
const f = [];
|
|
129
|
+
let u = b;
|
|
130
|
+
for (const L of r) {
|
|
131
|
+
const g = u.find((Q) => Q.value === L);
|
|
132
|
+
g && (f.push(g), g.children && (u = g.children));
|
|
133
|
+
}
|
|
134
|
+
o == null || o(r, f), (l = e.children) != null && l.length || E(!1);
|
|
135
|
+
}
|
|
136
|
+
}, [_, b, o, M]), J = w((e, t) => {
|
|
137
|
+
A((r) => [...r.slice(0, t), e.value]);
|
|
138
|
+
}, []), K = w((e) => {
|
|
139
|
+
e.stopPropagation(), o == null || o([], []), A([]);
|
|
140
|
+
}, [o]);
|
|
141
|
+
return /* @__PURE__ */ h(
|
|
142
|
+
"div",
|
|
143
|
+
{
|
|
144
|
+
ref: W,
|
|
145
|
+
className: y("Bear-Cascader bear-relative", U),
|
|
146
|
+
"data-testid": V,
|
|
147
|
+
children: [
|
|
148
|
+
p && /* @__PURE__ */ c("label", { className: "Bear-Cascader__label bear-block bear-text-sm bear-font-medium bear-text-zinc-700 dark:bear-text-zinc-300 bear-mb-1.5", children: p }),
|
|
149
|
+
/* @__PURE__ */ h(
|
|
150
|
+
"button",
|
|
151
|
+
{
|
|
152
|
+
ref: z,
|
|
153
|
+
type: "button",
|
|
154
|
+
onClick: () => !m && E(!x),
|
|
155
|
+
disabled: m,
|
|
156
|
+
className: y(
|
|
157
|
+
"Bear-Cascader__trigger bear-w-full bear-flex bear-items-center bear-justify-between bear-rounded-lg bear-border bear-text-left bear-transition-colors",
|
|
158
|
+
te[d],
|
|
159
|
+
ae[C],
|
|
160
|
+
i ? "bear-border-red-500" : "focus:bear-border-pink-500",
|
|
161
|
+
m && "bear-opacity-50 bear-cursor-not-allowed",
|
|
162
|
+
X ? "bear-text-gray-900 dark:bear-text-white" : "bear-text-gray-500 dark:bear-text-zinc-500"
|
|
163
|
+
),
|
|
164
|
+
children: [
|
|
165
|
+
/* @__PURE__ */ c("span", { className: "Bear-Cascader__value bear-truncate bear-flex-1", children: v ? S.loading : X || B || S.placeholder }),
|
|
166
|
+
/* @__PURE__ */ h("span", { className: "Bear-Cascader__icons bear-flex bear-items-center bear-gap-1", children: [
|
|
167
|
+
a && s.length > 0 && !m && /* @__PURE__ */ c(
|
|
168
|
+
"span",
|
|
169
|
+
{
|
|
170
|
+
onClick: K,
|
|
171
|
+
className: "Bear-Cascader__clear bear-p-0.5 bear-rounded hover:bear-bg-gray-200 dark:hover:bear-bg-zinc-700 bear-cursor-pointer",
|
|
172
|
+
children: /* @__PURE__ */ c("svg", { className: "bear-w-4 bear-h-4 bear-text-gray-500 dark:bear-text-zinc-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ c("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
173
|
+
}
|
|
174
|
+
),
|
|
175
|
+
Y ?? /* @__PURE__ */ c(
|
|
176
|
+
"svg",
|
|
177
|
+
{
|
|
178
|
+
className: y(
|
|
179
|
+
"Bear-Cascader__chevron bear-w-4 bear-h-4 bear-text-gray-500 dark:bear-text-zinc-400 bear-transition-transform",
|
|
180
|
+
x && "bear-rotate-180"
|
|
181
|
+
),
|
|
182
|
+
fill: "none",
|
|
183
|
+
viewBox: "0 0 24 24",
|
|
184
|
+
stroke: "currentColor",
|
|
185
|
+
children: /* @__PURE__ */ c("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
|
|
186
|
+
}
|
|
187
|
+
)
|
|
188
|
+
] })
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
i && /* @__PURE__ */ c("p", { className: "Bear-Cascader__error bear-mt-1 bear-text-xs bear-text-red-400", children: i }),
|
|
193
|
+
k && !i && /* @__PURE__ */ c("p", { className: "Bear-Cascader__helper bear-mt-1 bear-text-xs bear-text-zinc-500 dark:bear-text-zinc-400", children: k }),
|
|
194
|
+
x && typeof document < "u" && $(
|
|
195
|
+
/* @__PURE__ */ h(
|
|
196
|
+
"div",
|
|
197
|
+
{
|
|
198
|
+
"data-bear-cascader-dropdown": !0,
|
|
199
|
+
className: "Bear-Cascader__dropdown bear-fixed bear-bg-white dark:bear-bg-zinc-800 bear-border bear-border-zinc-200 dark:bear-border-zinc-700 bear-rounded-lg bear-shadow-xl bear-flex bear-overflow-hidden",
|
|
200
|
+
style: { top: I.top, left: I.left, zIndex: ne },
|
|
201
|
+
children: [
|
|
202
|
+
Z.map((e, t) => /* @__PURE__ */ c(
|
|
203
|
+
ce,
|
|
204
|
+
{
|
|
205
|
+
options: e,
|
|
206
|
+
selectedPath: s,
|
|
207
|
+
expandedPath: _,
|
|
208
|
+
onSelect: G,
|
|
209
|
+
onExpand: J,
|
|
210
|
+
expandTrigger: N,
|
|
211
|
+
level: t
|
|
212
|
+
},
|
|
213
|
+
t
|
|
214
|
+
)),
|
|
215
|
+
Z.every((e) => e.length === 0) && /* @__PURE__ */ c("div", { className: "Bear-Cascader__empty bear-px-4 bear-py-3 bear-text-sm bear-text-gray-500 dark:bear-text-zinc-500", children: S.noOptions })
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
),
|
|
219
|
+
document.body
|
|
220
|
+
)
|
|
221
|
+
]
|
|
222
|
+
}
|
|
223
|
+
);
|
|
224
|
+
};
|
|
225
|
+
export {
|
|
226
|
+
be as Cascader
|
|
227
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Cascader option interface
|
|
4
|
+
*/
|
|
5
|
+
export interface CascaderOption {
|
|
6
|
+
/** Unique value for the option */
|
|
7
|
+
value: string;
|
|
8
|
+
/** Display label */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Child options for nested levels */
|
|
11
|
+
children?: CascaderOption[];
|
|
12
|
+
/** Whether the option is disabled */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Optional icon */
|
|
15
|
+
icon?: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Cascader size variants
|
|
19
|
+
*/
|
|
20
|
+
export type CascaderSize = 'sm' | 'md' | 'lg';
|
|
21
|
+
/**
|
|
22
|
+
* Cascader variant styles
|
|
23
|
+
*/
|
|
24
|
+
export type CascaderVariant = 'default' | 'filled' | 'outline';
|
|
25
|
+
/**
|
|
26
|
+
* Trigger type for expanding options
|
|
27
|
+
*/
|
|
28
|
+
export type CascaderExpandTrigger = 'click' | 'hover';
|
|
29
|
+
/**
|
|
30
|
+
* Translations for Cascader component
|
|
31
|
+
*/
|
|
32
|
+
export interface CascaderTranslations {
|
|
33
|
+
placeholder: string;
|
|
34
|
+
noOptions: string;
|
|
35
|
+
loading: string;
|
|
36
|
+
clear: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Cascader component props
|
|
40
|
+
*/
|
|
41
|
+
export interface CascaderProps {
|
|
42
|
+
/** Available options (hierarchical) */
|
|
43
|
+
options: CascaderOption[];
|
|
44
|
+
/** Selected value path (array of values) */
|
|
45
|
+
value?: string[];
|
|
46
|
+
/** Callback when value changes */
|
|
47
|
+
onChange?: (value: string[], selectedOptions: CascaderOption[]) => void;
|
|
48
|
+
/** Placeholder text */
|
|
49
|
+
placeholder?: string;
|
|
50
|
+
/** Input label */
|
|
51
|
+
label?: string;
|
|
52
|
+
/** Helper text below input */
|
|
53
|
+
helperText?: string;
|
|
54
|
+
/** Error message */
|
|
55
|
+
error?: string;
|
|
56
|
+
/** Whether the input is disabled */
|
|
57
|
+
disabled?: boolean;
|
|
58
|
+
/** Whether the input is loading */
|
|
59
|
+
loading?: boolean;
|
|
60
|
+
/** Whether to allow clearing the selection */
|
|
61
|
+
clearable?: boolean;
|
|
62
|
+
/** Size variant */
|
|
63
|
+
size?: CascaderSize;
|
|
64
|
+
/** Style variant */
|
|
65
|
+
variant?: CascaderVariant;
|
|
66
|
+
/** How to expand child options */
|
|
67
|
+
expandTrigger?: CascaderExpandTrigger;
|
|
68
|
+
/** Whether to show the full path in the input */
|
|
69
|
+
showFullPath?: boolean;
|
|
70
|
+
/** Path separator for display */
|
|
71
|
+
pathSeparator?: string;
|
|
72
|
+
/** Allow selecting parent options */
|
|
73
|
+
changeOnSelect?: boolean;
|
|
74
|
+
/** Custom class name */
|
|
75
|
+
className?: string;
|
|
76
|
+
/** Test ID for testing */
|
|
77
|
+
testId?: string;
|
|
78
|
+
/** Translation strings */
|
|
79
|
+
translations?: Partial<CascaderTranslations>;
|
|
80
|
+
/** Custom icon */
|
|
81
|
+
icon?: ReactNode;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Cascader panel props (internal)
|
|
85
|
+
*/
|
|
86
|
+
export interface CascaderPanelProps {
|
|
87
|
+
options: CascaderOption[];
|
|
88
|
+
selectedPath: string[];
|
|
89
|
+
expandedPath: string[];
|
|
90
|
+
onSelect: (option: CascaderOption, level: number) => void;
|
|
91
|
+
onExpand: (option: CascaderOption, level: number) => void;
|
|
92
|
+
expandTrigger: CascaderExpandTrigger;
|
|
93
|
+
level: number;
|
|
94
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("react"),Q=require("react-dom"),L=require("../../utils/cn.cjs"),k=require("./CommandPalette.const.cjs"),E=require("./CommandPalette.utils.cjs"),z=({command:s,isHighlighted:g,onSelect:m})=>t.jsxs("button",{type:"button",onClick:m,disabled:s.disabled,className:L.cn("Bear-CommandPalette__item bear-w-full bear-flex bear-items-center bear-gap-3 bear-px-4 bear-py-2.5 bear-text-left bear-transition-colors",g?"bear-bg-pink-500/20 bear-text-pink-400":"bear-text-zinc-300 hover:bear-bg-zinc-700",s.disabled&&"bear-opacity-50 bear-cursor-not-allowed"),children:[s.icon&&t.jsx("span",{className:"Bear-CommandPalette__item-icon bear-text-zinc-400 bear-shrink-0",children:s.icon}),t.jsxs("div",{className:"Bear-CommandPalette__item-content bear-flex-1 bear-min-w-0",children:[t.jsx("div",{className:"Bear-CommandPalette__item-label bear-text-sm bear-font-medium bear-truncate",children:s.label}),s.description&&t.jsx("div",{className:"Bear-CommandPalette__item-description bear-text-xs bear-text-zinc-500 bear-truncate",children:s.description})]}),s.shortcut&&t.jsx("div",{className:"Bear-CommandPalette__item-shortcut bear-flex bear-gap-1 bear-shrink-0",children:E.formatShortcut(s.shortcut).map((N,p)=>t.jsx("kbd",{className:"bear-px-1.5 bear-py-0.5 bear-text-xs bear-font-mono bear-bg-zinc-700 bear-rounded bear-text-zinc-400",children:N},p))})]}),V=({commands:s,open:g,onOpenChange:m,placeholder:N,showRecent:p=!0,maxRecent:h=k.COMMAND_PALETTE_MAX_RECENT,recentIds:q,onRecentChange:_,groupByCategory:y=!1,filterFn:B=E.defaultFilterFn,triggerKey:D=k.COMMAND_PALETTE_TRIGGER_KEY,className:O,testId:R,translations:I,icon:K,footer:M})=>{const[H,F]=r.useState(!1),[i,A]=r.useState(""),[n,v]=r.useState(0),[G,U]=r.useState([]),S=r.useRef(null),P=r.useRef(null),u=g??H,l=r.useCallback(e=>{m==null||m(e),F(e)},[m]),d=q??G,T=r.useCallback(e=>{_==null||_(e),U(e)},[_]),j=r.useMemo(()=>({...k.COMMAND_PALETTE_DEFAULT_TRANSLATIONS,...I}),[I]),x=r.useMemo(()=>i.trim()?s.filter(e=>B(e,i)):s,[s,i,B]),c=r.useMemo(()=>!p||i.trim()?[]:d.slice(0,h).map(e=>s.find(a=>a.id===e)).filter(Boolean),[p,i,d,h,s]),C=r.useMemo(()=>y?E.groupCommandsByCategory(x):null,[x,y]),o=r.useMemo(()=>{const e=[];return c.length>0&&e.push(...c),e.push(...x.filter(a=>!d.includes(a.id))),e},[c,x,d]);r.useEffect(()=>{const e=a=>{(a.metaKey||a.ctrlKey)&&a.key.toLowerCase()===D&&(a.preventDefault(),l(!u)),a.key==="Escape"&&u&&(a.preventDefault(),l(!1))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u,D,l]),r.useEffect(()=>{u&&(A(""),v(0),setTimeout(()=>{var e;return(e=S.current)==null?void 0:e.focus()},50))},[u]),r.useEffect(()=>{if(n>=0&&P.current){const a=P.current.querySelectorAll("[data-command-item]")[n];a&&a.scrollIntoView({block:"nearest"})}},[n]);const f=r.useCallback(e=>{const a=[e.id,...d.filter(b=>b!==e.id)].slice(0,h);T(a),l(!1),e.onSelect()},[d,h,T,l]),X=r.useCallback(e=>{switch(e.key){case"ArrowDown":e.preventDefault(),v(a=>a<o.length-1?a+1:0);break;case"ArrowUp":e.preventDefault(),v(a=>a>0?a-1:o.length-1);break;case"Enter":e.preventDefault(),o[n]&&!o[n].disabled&&f(o[n]);break;case"Escape":e.preventDefault(),l(!1);break}},[o,n,f,l]);return u&&typeof document<"u"?Q.createPortal(t.jsxs("div",{className:L.cn("Bear-CommandPalette bear-fixed bear-inset-0 bear-flex bear-items-start bear-justify-center bear-pt-[15vh]",O),style:{zIndex:k.COMMAND_PALETTE_Z_INDEX},"data-testid":R,children:[t.jsx("div",{className:"Bear-CommandPalette__backdrop bear-absolute bear-inset-0 bear-bg-black/50 bear-backdrop-blur-sm",onClick:()=>l(!1)}),t.jsxs("div",{className:"Bear-CommandPalette__content bear-relative bear-w-full bear-max-w-xl bear-bg-zinc-800 bear-border bear-border-zinc-700 bear-rounded-xl bear-shadow-2xl bear-overflow-hidden",children:[t.jsxs("div",{className:"Bear-CommandPalette__search bear-flex bear-items-center bear-gap-3 bear-px-4 bear-py-3 bear-border-b bear-border-zinc-700",children:[K??t.jsx("svg",{className:"bear-w-5 bear-h-5 bear-text-zinc-400 bear-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),t.jsx("input",{ref:S,type:"text",value:i,onChange:e=>{A(e.target.value),v(0)},onKeyDown:X,placeholder:N||j.placeholder,className:"Bear-CommandPalette__input bear-flex-1 bear-bg-transparent bear-border-0 bear-outline-none bear-text-white placeholder:bear-text-zinc-500"}),t.jsx("kbd",{className:"bear-px-2 bear-py-1 bear-text-xs bear-font-mono bear-bg-zinc-700 bear-rounded bear-text-zinc-400",children:"esc"})]}),t.jsx("div",{ref:P,className:"Bear-CommandPalette__list bear-max-h-[60vh] bear-overflow-y-auto",children:o.length===0?t.jsx("div",{className:"Bear-CommandPalette__empty bear-px-4 bear-py-8 bear-text-center bear-text-sm bear-text-zinc-500",children:j.noResults}):t.jsxs(t.Fragment,{children:[c.length>0&&!i.trim()&&t.jsxs("div",{className:"Bear-CommandPalette__group",children:[t.jsx("div",{className:"Bear-CommandPalette__group-header bear-px-4 bear-py-2 bear-text-xs bear-font-medium bear-text-zinc-500 bear-uppercase bear-tracking-wider bear-bg-zinc-800/50",children:j.recentCommands}),c.map((e,a)=>t.jsx("div",{"data-command-item":!0,children:t.jsx(z,{command:e,isHighlighted:n===a,onSelect:()=>f(e)})},`recent-${e.id}`))]}),y&&C?C.map(e=>{const a=c.length+C.slice(0,C.indexOf(e)).reduce((b,w)=>b+w.commands.length,0);return t.jsxs("div",{className:"Bear-CommandPalette__group",children:[t.jsx("div",{className:"Bear-CommandPalette__group-header bear-px-4 bear-py-2 bear-text-xs bear-font-medium bear-text-zinc-500 bear-uppercase bear-tracking-wider bear-bg-zinc-800/50",children:e.name}),e.commands.map((b,w)=>t.jsx("div",{"data-command-item":!0,children:t.jsx(z,{command:b,isHighlighted:n===a+w,onSelect:()=>f(b)})},b.id))]},e.name)}):t.jsxs("div",{className:"Bear-CommandPalette__group",children:[!i.trim()&&c.length>0&&t.jsx("div",{className:"Bear-CommandPalette__group-header bear-px-4 bear-py-2 bear-text-xs bear-font-medium bear-text-zinc-500 bear-uppercase bear-tracking-wider bear-bg-zinc-800/50",children:j.allCommands}),x.filter(e=>!d.includes(e.id)||i.trim()).map((e,a)=>t.jsx("div",{"data-command-item":!0,children:t.jsx(z,{command:e,isHighlighted:n===c.length+a,onSelect:()=>f(e)})},e.id))]})]})}),M&&t.jsx("div",{className:"Bear-CommandPalette__footer bear-px-4 bear-py-2 bear-border-t bear-border-zinc-700 bear-text-xs bear-text-zinc-500",children:M})]})]}),document.body):null};exports.CommandPalette=V;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E={placeholder:"Type a command or search...",noResults:"No commands found",recentCommands:"Recent",allCommands:"All Commands",closeHint:"Press ESC to close"},T="k",A=5,_=9999;exports.COMMAND_PALETTE_DEFAULT_TRANSLATIONS=E;exports.COMMAND_PALETTE_MAX_RECENT=A;exports.COMMAND_PALETTE_TRIGGER_KEY=T;exports.COMMAND_PALETTE_Z_INDEX=_;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CommandPaletteTranslations } from './CommandPalette.types';
|
|
2
|
+
/**
|
|
3
|
+
* Default translations
|
|
4
|
+
*/
|
|
5
|
+
export declare const COMMAND_PALETTE_DEFAULT_TRANSLATIONS: CommandPaletteTranslations;
|
|
6
|
+
/**
|
|
7
|
+
* Default trigger key
|
|
8
|
+
*/
|
|
9
|
+
export declare const COMMAND_PALETTE_TRIGGER_KEY = "k";
|
|
10
|
+
/**
|
|
11
|
+
* Maximum recent commands
|
|
12
|
+
*/
|
|
13
|
+
export declare const COMMAND_PALETTE_MAX_RECENT = 5;
|
|
14
|
+
/**
|
|
15
|
+
* Z-index for palette
|
|
16
|
+
*/
|
|
17
|
+
export declare const COMMAND_PALETTE_Z_INDEX = 9999;
|
|
18
|
+
/**
|
|
19
|
+
* Animation duration
|
|
20
|
+
*/
|
|
21
|
+
export declare const COMMAND_PALETTE_ANIMATION_DURATION = 150;
|
|
22
|
+
/**
|
|
23
|
+
* Maximum visible commands
|
|
24
|
+
*/
|
|
25
|
+
export declare const COMMAND_PALETTE_MAX_VISIBLE = 10;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const o = {
|
|
2
|
+
placeholder: "Type a command or search...",
|
|
3
|
+
noResults: "No commands found",
|
|
4
|
+
recentCommands: "Recent",
|
|
5
|
+
allCommands: "All Commands",
|
|
6
|
+
closeHint: "Press ESC to close"
|
|
7
|
+
}, s = "k", E = 5, n = 9999;
|
|
8
|
+
export {
|
|
9
|
+
o as COMMAND_PALETTE_DEFAULT_TRANSLATIONS,
|
|
10
|
+
E as COMMAND_PALETTE_MAX_RECENT,
|
|
11
|
+
s as COMMAND_PALETTE_TRIGGER_KEY,
|
|
12
|
+
n as COMMAND_PALETTE_Z_INDEX
|
|
13
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { CommandPaletteProps } from './CommandPalette.types';
|
|
3
|
+
/**
|
|
4
|
+
* CommandPalette - Command palette component (Cmd+K style)
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <CommandPalette
|
|
9
|
+
* commands={[
|
|
10
|
+
* { id: '1', label: 'New File', shortcut: 'Ctrl+N', onSelect: () => {} },
|
|
11
|
+
* { id: '2', label: 'Open Settings', shortcut: 'Ctrl+,', onSelect: () => {} },
|
|
12
|
+
* ]}
|
|
13
|
+
* open={isOpen}
|
|
14
|
+
* onOpenChange={setIsOpen}
|
|
15
|
+
* />
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare const CommandPalette: FC<CommandPaletteProps>;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { jsxs as l, jsx as t, Fragment as Y } from "react/jsx-runtime";
|
|
2
|
+
import { useState as C, useRef as j, useCallback as y, useMemo as h, useEffect as I } from "react";
|
|
3
|
+
import { createPortal as Z } from "react-dom";
|
|
4
|
+
import { cn as H } from "../../utils/cn.js";
|
|
5
|
+
import { COMMAND_PALETTE_DEFAULT_TRANSLATIONS as $, COMMAND_PALETTE_MAX_RECENT as J, COMMAND_PALETTE_TRIGGER_KEY as ee, COMMAND_PALETTE_Z_INDEX as re } from "./CommandPalette.const.js";
|
|
6
|
+
import { defaultFilterFn as te, groupCommandsByCategory as ae, formatShortcut as ne } from "./CommandPalette.utils.js";
|
|
7
|
+
const D = ({
|
|
8
|
+
command: a,
|
|
9
|
+
isHighlighted: P,
|
|
10
|
+
onSelect: m
|
|
11
|
+
}) => /* @__PURE__ */ l(
|
|
12
|
+
"button",
|
|
13
|
+
{
|
|
14
|
+
type: "button",
|
|
15
|
+
onClick: m,
|
|
16
|
+
disabled: a.disabled,
|
|
17
|
+
className: H(
|
|
18
|
+
"Bear-CommandPalette__item bear-w-full bear-flex bear-items-center bear-gap-3 bear-px-4 bear-py-2.5 bear-text-left bear-transition-colors",
|
|
19
|
+
P ? "bear-bg-pink-500/20 bear-text-pink-400" : "bear-text-zinc-300 hover:bear-bg-zinc-700",
|
|
20
|
+
a.disabled && "bear-opacity-50 bear-cursor-not-allowed"
|
|
21
|
+
),
|
|
22
|
+
children: [
|
|
23
|
+
a.icon && /* @__PURE__ */ t("span", { className: "Bear-CommandPalette__item-icon bear-text-zinc-400 bear-shrink-0", children: a.icon }),
|
|
24
|
+
/* @__PURE__ */ l("div", { className: "Bear-CommandPalette__item-content bear-flex-1 bear-min-w-0", children: [
|
|
25
|
+
/* @__PURE__ */ t("div", { className: "Bear-CommandPalette__item-label bear-text-sm bear-font-medium bear-truncate", children: a.label }),
|
|
26
|
+
a.description && /* @__PURE__ */ t("div", { className: "Bear-CommandPalette__item-description bear-text-xs bear-text-zinc-500 bear-truncate", children: a.description })
|
|
27
|
+
] }),
|
|
28
|
+
a.shortcut && /* @__PURE__ */ t("div", { className: "Bear-CommandPalette__item-shortcut bear-flex bear-gap-1 bear-shrink-0", children: ne(a.shortcut).map((w, x) => /* @__PURE__ */ t(
|
|
29
|
+
"kbd",
|
|
30
|
+
{
|
|
31
|
+
className: "bear-px-1.5 bear-py-0.5 bear-text-xs bear-font-mono bear-bg-zinc-700 bear-rounded bear-text-zinc-400",
|
|
32
|
+
children: w
|
|
33
|
+
},
|
|
34
|
+
x
|
|
35
|
+
)) })
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
), be = ({
|
|
39
|
+
commands: a,
|
|
40
|
+
open: P,
|
|
41
|
+
onOpenChange: m,
|
|
42
|
+
placeholder: w,
|
|
43
|
+
showRecent: x = !0,
|
|
44
|
+
maxRecent: _ = J,
|
|
45
|
+
recentIds: F,
|
|
46
|
+
onRecentChange: v,
|
|
47
|
+
groupByCategory: z = !1,
|
|
48
|
+
filterFn: A = te,
|
|
49
|
+
triggerKey: T = ee,
|
|
50
|
+
className: R,
|
|
51
|
+
testId: q,
|
|
52
|
+
translations: L,
|
|
53
|
+
icon: G,
|
|
54
|
+
footer: M
|
|
55
|
+
}) => {
|
|
56
|
+
const [U, X] = C(!1), [i, S] = C(""), [n, N] = C(0), [Q, V] = C([]), K = j(null), B = j(null), u = P ?? U, s = y((e) => {
|
|
57
|
+
m == null || m(e), X(e);
|
|
58
|
+
}, [m]), c = F ?? Q, O = y((e) => {
|
|
59
|
+
v == null || v(e), V(e);
|
|
60
|
+
}, [v]), k = h(() => ({
|
|
61
|
+
...$,
|
|
62
|
+
...L
|
|
63
|
+
}), [L]), p = h(() => i.trim() ? a.filter((e) => A(e, i)) : a, [a, i, A]), d = h(() => !x || i.trim() ? [] : c.slice(0, _).map((e) => a.find((r) => r.id === e)).filter(Boolean), [x, i, c, _, a]), g = h(() => z ? ae(p) : null, [p, z]), o = h(() => {
|
|
64
|
+
const e = [];
|
|
65
|
+
return d.length > 0 && e.push(...d), e.push(...p.filter((r) => !c.includes(r.id))), e;
|
|
66
|
+
}, [d, p, c]);
|
|
67
|
+
I(() => {
|
|
68
|
+
const e = (r) => {
|
|
69
|
+
(r.metaKey || r.ctrlKey) && r.key.toLowerCase() === T && (r.preventDefault(), s(!u)), r.key === "Escape" && u && (r.preventDefault(), s(!1));
|
|
70
|
+
};
|
|
71
|
+
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
72
|
+
}, [u, T, s]), I(() => {
|
|
73
|
+
u && (S(""), N(0), setTimeout(() => {
|
|
74
|
+
var e;
|
|
75
|
+
return (e = K.current) == null ? void 0 : e.focus();
|
|
76
|
+
}, 50));
|
|
77
|
+
}, [u]), I(() => {
|
|
78
|
+
if (n >= 0 && B.current) {
|
|
79
|
+
const r = B.current.querySelectorAll("[data-command-item]")[n];
|
|
80
|
+
r && r.scrollIntoView({ block: "nearest" });
|
|
81
|
+
}
|
|
82
|
+
}, [n]);
|
|
83
|
+
const f = y((e) => {
|
|
84
|
+
const r = [e.id, ...c.filter((b) => b !== e.id)].slice(0, _);
|
|
85
|
+
O(r), s(!1), e.onSelect();
|
|
86
|
+
}, [c, _, O, s]), W = y((e) => {
|
|
87
|
+
switch (e.key) {
|
|
88
|
+
case "ArrowDown":
|
|
89
|
+
e.preventDefault(), N((r) => r < o.length - 1 ? r + 1 : 0);
|
|
90
|
+
break;
|
|
91
|
+
case "ArrowUp":
|
|
92
|
+
e.preventDefault(), N((r) => r > 0 ? r - 1 : o.length - 1);
|
|
93
|
+
break;
|
|
94
|
+
case "Enter":
|
|
95
|
+
e.preventDefault(), o[n] && !o[n].disabled && f(o[n]);
|
|
96
|
+
break;
|
|
97
|
+
case "Escape":
|
|
98
|
+
e.preventDefault(), s(!1);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}, [o, n, f, s]);
|
|
102
|
+
return u && typeof document < "u" ? Z(
|
|
103
|
+
/* @__PURE__ */ l(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
className: H("Bear-CommandPalette bear-fixed bear-inset-0 bear-flex bear-items-start bear-justify-center bear-pt-[15vh]", R),
|
|
107
|
+
style: { zIndex: re },
|
|
108
|
+
"data-testid": q,
|
|
109
|
+
children: [
|
|
110
|
+
/* @__PURE__ */ t(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
className: "Bear-CommandPalette__backdrop bear-absolute bear-inset-0 bear-bg-black/50 bear-backdrop-blur-sm",
|
|
114
|
+
onClick: () => s(!1)
|
|
115
|
+
}
|
|
116
|
+
),
|
|
117
|
+
/* @__PURE__ */ l("div", { className: "Bear-CommandPalette__content bear-relative bear-w-full bear-max-w-xl bear-bg-zinc-800 bear-border bear-border-zinc-700 bear-rounded-xl bear-shadow-2xl bear-overflow-hidden", children: [
|
|
118
|
+
/* @__PURE__ */ l("div", { className: "Bear-CommandPalette__search bear-flex bear-items-center bear-gap-3 bear-px-4 bear-py-3 bear-border-b bear-border-zinc-700", children: [
|
|
119
|
+
G ?? /* @__PURE__ */ t("svg", { className: "bear-w-5 bear-h-5 bear-text-zinc-400 bear-shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" }) }),
|
|
120
|
+
/* @__PURE__ */ t(
|
|
121
|
+
"input",
|
|
122
|
+
{
|
|
123
|
+
ref: K,
|
|
124
|
+
type: "text",
|
|
125
|
+
value: i,
|
|
126
|
+
onChange: (e) => {
|
|
127
|
+
S(e.target.value), N(0);
|
|
128
|
+
},
|
|
129
|
+
onKeyDown: W,
|
|
130
|
+
placeholder: w || k.placeholder,
|
|
131
|
+
className: "Bear-CommandPalette__input bear-flex-1 bear-bg-transparent bear-border-0 bear-outline-none bear-text-white placeholder:bear-text-zinc-500"
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ t("kbd", { className: "bear-px-2 bear-py-1 bear-text-xs bear-font-mono bear-bg-zinc-700 bear-rounded bear-text-zinc-400", children: "esc" })
|
|
135
|
+
] }),
|
|
136
|
+
/* @__PURE__ */ t(
|
|
137
|
+
"div",
|
|
138
|
+
{
|
|
139
|
+
ref: B,
|
|
140
|
+
className: "Bear-CommandPalette__list bear-max-h-[60vh] bear-overflow-y-auto",
|
|
141
|
+
children: o.length === 0 ? /* @__PURE__ */ t("div", { className: "Bear-CommandPalette__empty bear-px-4 bear-py-8 bear-text-center bear-text-sm bear-text-zinc-500", children: k.noResults }) : /* @__PURE__ */ l(Y, { children: [
|
|
142
|
+
d.length > 0 && !i.trim() && /* @__PURE__ */ l("div", { className: "Bear-CommandPalette__group", children: [
|
|
143
|
+
/* @__PURE__ */ t("div", { className: "Bear-CommandPalette__group-header bear-px-4 bear-py-2 bear-text-xs bear-font-medium bear-text-zinc-500 bear-uppercase bear-tracking-wider bear-bg-zinc-800/50", children: k.recentCommands }),
|
|
144
|
+
d.map((e, r) => /* @__PURE__ */ t("div", { "data-command-item": !0, children: /* @__PURE__ */ t(
|
|
145
|
+
D,
|
|
146
|
+
{
|
|
147
|
+
command: e,
|
|
148
|
+
isHighlighted: n === r,
|
|
149
|
+
onSelect: () => f(e)
|
|
150
|
+
}
|
|
151
|
+
) }, `recent-${e.id}`))
|
|
152
|
+
] }),
|
|
153
|
+
z && g ? g.map((e) => {
|
|
154
|
+
const r = d.length + g.slice(0, g.indexOf(e)).reduce((b, E) => b + E.commands.length, 0);
|
|
155
|
+
return /* @__PURE__ */ l("div", { className: "Bear-CommandPalette__group", children: [
|
|
156
|
+
/* @__PURE__ */ t("div", { className: "Bear-CommandPalette__group-header bear-px-4 bear-py-2 bear-text-xs bear-font-medium bear-text-zinc-500 bear-uppercase bear-tracking-wider bear-bg-zinc-800/50", children: e.name }),
|
|
157
|
+
e.commands.map((b, E) => /* @__PURE__ */ t("div", { "data-command-item": !0, children: /* @__PURE__ */ t(
|
|
158
|
+
D,
|
|
159
|
+
{
|
|
160
|
+
command: b,
|
|
161
|
+
isHighlighted: n === r + E,
|
|
162
|
+
onSelect: () => f(b)
|
|
163
|
+
}
|
|
164
|
+
) }, b.id))
|
|
165
|
+
] }, e.name);
|
|
166
|
+
}) : /* @__PURE__ */ l("div", { className: "Bear-CommandPalette__group", children: [
|
|
167
|
+
!i.trim() && d.length > 0 && /* @__PURE__ */ t("div", { className: "Bear-CommandPalette__group-header bear-px-4 bear-py-2 bear-text-xs bear-font-medium bear-text-zinc-500 bear-uppercase bear-tracking-wider bear-bg-zinc-800/50", children: k.allCommands }),
|
|
168
|
+
p.filter((e) => !c.includes(e.id) || i.trim()).map((e, r) => /* @__PURE__ */ t("div", { "data-command-item": !0, children: /* @__PURE__ */ t(
|
|
169
|
+
D,
|
|
170
|
+
{
|
|
171
|
+
command: e,
|
|
172
|
+
isHighlighted: n === d.length + r,
|
|
173
|
+
onSelect: () => f(e)
|
|
174
|
+
}
|
|
175
|
+
) }, e.id))
|
|
176
|
+
] })
|
|
177
|
+
] })
|
|
178
|
+
}
|
|
179
|
+
),
|
|
180
|
+
M && /* @__PURE__ */ t("div", { className: "Bear-CommandPalette__footer bear-px-4 bear-py-2 bear-border-t bear-border-zinc-700 bear-text-xs bear-text-zinc-500", children: M })
|
|
181
|
+
] })
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
),
|
|
185
|
+
document.body
|
|
186
|
+
) : null;
|
|
187
|
+
};
|
|
188
|
+
export {
|
|
189
|
+
be as CommandPalette
|
|
190
|
+
};
|