haze-ui 1.4.2 → 1.5.1

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.
@@ -0,0 +1,112 @@
1
+ import e from "./TreeItem.js";
2
+ import { findNodeByKey as t, getChildKeys as n, getParentKey as r } from "./utils.js";
3
+ /* empty css */
4
+ import { classnames as i } from "babel-runtime-jsx-plus";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ import { useControl as s } from "react-use-control";
7
+ import { useMemo as c } from "react";
8
+ //#region src/lib/components/Tree/Tree.tsx
9
+ var l = "byqiwb1";
10
+ function u(e, t, r) {
11
+ if (r) return {
12
+ checked: e,
13
+ halfChecked: []
14
+ };
15
+ let i = new Set(e), a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s = (e) => {
16
+ for (let r of e) if (r.children?.length) {
17
+ s(r.children);
18
+ let e = n(t, r.key), c = e.filter((e) => i.has(e));
19
+ c.length === 0 ? o.add(r.key) : c.length < e.length && (a.add(r.key), o.add(r.key));
20
+ }
21
+ };
22
+ return s(t), {
23
+ checked: e.filter((e) => !o.has(e)),
24
+ halfChecked: Array.from(a)
25
+ };
26
+ }
27
+ function d({ treeData: d, multiple: f = !1, checkable: p = !1, checkStrictly: m = !1, selectable: h = !0, disabled: g = !1, blockNode: _ = !1, showLine: v = !1, showIcon: y = !1, switcherIcon: b, loadingIcon: x, titleRender: S, iconRender: C, expandedKeys: w, selectedKeys: T, checkedKeys: E, className: D, onExpand: O, onSelect: k, onCheck: A }) {
28
+ let [j, M] = s(w, []), [N, P] = s(T, []), [F, I] = s(E, []), L = F, R = c(() => u(L, d, m), [
29
+ L,
30
+ d,
31
+ m
32
+ ]), z = R.checked, B = R.halfChecked;
33
+ function V(e) {
34
+ let n = j.includes(e), r = n ? j.filter((t) => t !== e) : [...j, e];
35
+ M(r), O?.(r, {
36
+ expanded: !n,
37
+ node: t(d, e)
38
+ });
39
+ }
40
+ function H(e) {
41
+ let n = t(d, e);
42
+ if (!n?.selectable && n?.selectable !== void 0 || !h) return;
43
+ let r;
44
+ r = f ? N.indexOf(e) >= 0 ? N.filter((t) => t !== e) : [...N, e] : N.includes(e) ? [] : [e], P(r), k?.(r, {
45
+ selected: r.includes(e),
46
+ selectedNodes: r.map((e) => t(d, e)).filter(Boolean),
47
+ node: n
48
+ });
49
+ }
50
+ function U(e) {
51
+ if (!p || t(d, e)?.disableCheckbox) return;
52
+ let i = z.includes(e), a;
53
+ if (m) a = i ? z.filter((t) => t !== e) : [...z, e];
54
+ else {
55
+ let t = n(d, e);
56
+ if (i) {
57
+ a = z.filter((n) => n !== e && !t.includes(n));
58
+ let n = r(d, e);
59
+ for (; n;) a = a.filter((e) => e !== n), n = r(d, n);
60
+ } else {
61
+ let i = [e, ...t].filter((e) => !z.includes(e));
62
+ a = [...z, ...i];
63
+ let o = r(d, e);
64
+ for (; o;) n(d, o).every((e) => a.includes(e)) && !a.includes(o) && a.push(o), o = r(d, o);
65
+ }
66
+ }
67
+ let o = u(a, d, m);
68
+ I(m ? a : o.checked), A?.(m ? a : o, {
69
+ checked: !i,
70
+ checkedNodes: a.map((e) => t(d, e)).filter(Boolean),
71
+ node: t(d, e),
72
+ halfCheckedKeys: o.halfChecked
73
+ });
74
+ }
75
+ function W(t, n, r) {
76
+ return t.map((i, s) => {
77
+ let c = !!i.children?.length, l = j.includes(i.key), u = N.includes(i.key), d = z.includes(i.key), f = B.includes(i.key), m = d ? "checked" : f ? "halfChecked" : "unchecked", w = s === t.length - 1, T = [...r, w];
78
+ return /* @__PURE__ */ o("div", {
79
+ role: "group",
80
+ children: [/* @__PURE__ */ a(e, {
81
+ node: i,
82
+ level: n,
83
+ expanded: l,
84
+ selected: u,
85
+ checked: m,
86
+ disabled: g,
87
+ checkable: p,
88
+ selectable: h,
89
+ blockNode: _,
90
+ showLine: v,
91
+ showIcon: y,
92
+ switcherIcon: b,
93
+ loadingIcon: x,
94
+ loading: !1,
95
+ titleRender: S,
96
+ iconRender: C,
97
+ isLast: T,
98
+ onToggle: () => V(i.key),
99
+ onSelect: () => H(i.key),
100
+ onCheck: () => U(i.key)
101
+ }), c && l && /* @__PURE__ */ a("div", { children: W(i.children, n + 1, T) })]
102
+ }, i.key);
103
+ });
104
+ }
105
+ return /* @__PURE__ */ a("div", {
106
+ role: "tree",
107
+ className: i([l, D]),
108
+ children: W(d, 0, [])
109
+ });
110
+ }
111
+ //#endregion
112
+ export { d as default };
@@ -0,0 +1,108 @@
1
+ /* empty css */
2
+ import { classnames as e } from "babel-runtime-jsx-plus";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ //#region src/lib/components/Tree/TreeItem.tsx
5
+ var r = "i1rn21zx", i = "b15n7bsq", a = "st8kw28", o = "dk6qa2p", s = "s1puwz78", c = "ss5ce9u", l = "c181jvqa", u = "c7s72cp", d = "c1fyhtnu", f = "n1cauqet", p = "t1k02n76", m = "l1xmbyic", h = "i1fswrkf", g = "i1t8wtlt", _ = () => /* @__PURE__ */ t("svg", {
6
+ viewBox: "0 0 12 12",
7
+ fill: "none",
8
+ stroke: "currentColor",
9
+ strokeWidth: "2",
10
+ strokeLinecap: "round",
11
+ strokeLinejoin: "round",
12
+ children: /* @__PURE__ */ t("path", { d: "M4 2l4 4-4 4" })
13
+ }), v = () => /* @__PURE__ */ t("svg", {
14
+ viewBox: "0 0 12 12",
15
+ fill: "none",
16
+ stroke: "currentColor",
17
+ strokeWidth: "2",
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round",
20
+ children: /* @__PURE__ */ t("path", { d: "M2 6l3 3 5-5" })
21
+ }), y = () => /* @__PURE__ */ t("svg", {
22
+ viewBox: "0 0 12 12",
23
+ fill: "none",
24
+ stroke: "currentColor",
25
+ strokeWidth: "2",
26
+ strokeLinecap: "round",
27
+ children: /* @__PURE__ */ t("path", { d: "M2 6h8" })
28
+ }), b = () => /* @__PURE__ */ t("svg", {
29
+ viewBox: "0 0 16 16",
30
+ fill: "currentColor",
31
+ children: /* @__PURE__ */ t("path", { d: "M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5v-9z" })
32
+ }), x = () => /* @__PURE__ */ n("svg", {
33
+ viewBox: "0 0 16 16",
34
+ fill: "currentColor",
35
+ children: [/* @__PURE__ */ t("path", { d: "M.5 5l.5-.5A.5.5 0 0 1 1.5 4H4l1-1h4.5a1.5 1.5 0 0 1 1.5 1.5v1H14a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V5.5L.5 5z" }), /* @__PURE__ */ t("path", {
36
+ d: "M1 6v6h14V6H1z",
37
+ opacity: "0.5"
38
+ })]
39
+ }), S = () => /* @__PURE__ */ t("svg", {
40
+ viewBox: "0 0 16 16",
41
+ fill: "currentColor",
42
+ children: /* @__PURE__ */ t("path", { d: "M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.414a2 2 0 0 0-.586-1.414L10.586.172A2 2 0 0 0 9.172 0H4zm1 1a1 1 0 0 1 1-1h3.172a1 1 0 0 1 .707.293l2.121 2.121a1 1 0 0 1 .293.707V13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V1z" })
43
+ }), C = () => /* @__PURE__ */ n("svg", {
44
+ viewBox: "0 0 16 16",
45
+ fill: "currentColor",
46
+ children: [/* @__PURE__ */ t("path", {
47
+ d: "M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1zm0 1a6 6 0 0 1 0 12V2z",
48
+ opacity: "0.3"
49
+ }), /* @__PURE__ */ t("path", { d: "M8 1a7 7 0 0 1 7 7h-2a5 5 0 0 0-5-5V1z" })]
50
+ });
51
+ function w({ node: w, level: T, expanded: E, selected: D, checked: O, disabled: k, checkable: A, selectable: j, blockNode: M, showLine: N, showIcon: P, switcherIcon: F, loadingIcon: I, loading: L, titleRender: R, iconRender: z, isLast: B, onToggle: V, onSelect: H, onCheck: U }) {
52
+ let W = !!w.children?.length, G = w.isLeaf ?? !W, K = Array.from({ length: T }, (e, t) => ({ showLine: N && !B[t] })), q = R ? R(w) : w.title, J = z ? z(w) : w.icon;
53
+ return /* @__PURE__ */ t("div", { children: /* @__PURE__ */ n("div", {
54
+ role: "treeitem",
55
+ "aria-selected": D,
56
+ "aria-expanded": G ? void 0 : E,
57
+ "aria-level": T + 1,
58
+ onClick: () => {
59
+ k || w.disabled || (j && H(), G || V());
60
+ },
61
+ className: e([
62
+ r,
63
+ M && i,
64
+ D && j && a,
65
+ (k || w.disabled) && o
66
+ ]),
67
+ children: [
68
+ K.map((n, r) => /* @__PURE__ */ t("span", { className: e([h, n.showLine && g]) }, r)),
69
+ !G && /* @__PURE__ */ t("span", {
70
+ role: "button",
71
+ "aria-label": E ? "Collapse" : "Expand",
72
+ onClick: (e) => {
73
+ e.stopPropagation(), V();
74
+ },
75
+ className: e([s, E && c]),
76
+ children: L ? /* @__PURE__ */ t("span", {
77
+ className: m,
78
+ children: I ?? /* @__PURE__ */ t(C, {})
79
+ }) : F || /* @__PURE__ */ t(_, {})
80
+ }),
81
+ G && /* @__PURE__ */ t("span", { className: e(h) }),
82
+ A && /* @__PURE__ */ n("span", {
83
+ role: "checkbox",
84
+ "aria-checked": O === "halfChecked" ? "mixed" : O === "checked",
85
+ onClick: (e) => {
86
+ e.stopPropagation(), U();
87
+ },
88
+ className: e([
89
+ l,
90
+ O === "checked" && u,
91
+ O === "halfChecked" && d,
92
+ w.disableCheckbox && o
93
+ ]),
94
+ children: [O === "checked" && /* @__PURE__ */ t(v, {}), O === "halfChecked" && /* @__PURE__ */ t(y, {})]
95
+ }),
96
+ (P || J) && /* @__PURE__ */ t("span", {
97
+ className: f,
98
+ children: J ?? t(G ? S : E ? x : b, {})
99
+ }),
100
+ /* @__PURE__ */ t("span", {
101
+ className: p,
102
+ children: q
103
+ })
104
+ ]
105
+ }) });
106
+ }
107
+ //#endregion
108
+ export { w as default };
@@ -0,0 +1,31 @@
1
+ //#region src/lib/components/Tree/utils.ts
2
+ function e(t, n) {
3
+ for (let r of t) {
4
+ if (r.key === n) return r;
5
+ if (r.children?.length) {
6
+ let t = e(r.children, n);
7
+ if (t) return t;
8
+ }
9
+ }
10
+ return null;
11
+ }
12
+ function t(t, n) {
13
+ let r = e(t, n);
14
+ if (!r?.children?.length) return [];
15
+ let i = [], a = (e) => {
16
+ for (let t of e) i.push(t.key), t.children?.length && a(t.children);
17
+ };
18
+ return a(r.children), i;
19
+ }
20
+ function n(e, t, r) {
21
+ for (let i of e) {
22
+ if (i.key === t) return r ?? null;
23
+ if (i.children?.length) {
24
+ let e = n(i.children, t, i.key);
25
+ if (e) return e;
26
+ }
27
+ }
28
+ return null;
29
+ }
30
+ //#endregion
31
+ export { e as findNodeByKey, t as getChildKeys, n as getParentKey };
package/dist/haze-ui.css CHANGED
@@ -1,2 +1,2 @@
1
- .b1oalqve{width:100%}.i1sazm4o{border-bottom:1px solid var(--haze-color-border)}.i1sazm4o:first-of-type{border-top:1px solid var(--haze-color-border)}.s15fkg36{-webkit-box-pack:justify;align-items:center;-ms-flex-pack:space-between;padding:var(--haze-space-3) var(--haze-space-4);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);color:var(--haze-color-text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;list-style:none;transition:background .15s;display:flex}.s15fkg36:hover{background:var(--haze-color-bg-subtle)}.s15fkg36:focus-visible{box-shadow:inset 0 0 0 3px var(--haze-color-focus-ring);outline:none}.s15fkg36::marker{display:none}.s15fkg36::-webkit-details-marker{display:none}.s15fkg36:after{content:"";border-right:2px solid var(--haze-color-text-muted);border-bottom:2px solid var(--haze-color-text-muted);-webkit-transition:-webkit-transform .2s;flex-shrink:0;width:8px;height:8px;transition:transform .2s;transform:rotate(-45deg)}details[open]>.s15fkg36:after{transform:rotate(45deg)}.cvrhx3b{padding:0 var(--haze-space-4) var(--haze-space-4);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text-secondary);line-height:var(--haze-leading-normal)}.b1mir2ye{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:var(--haze-space-3);padding:var(--haze-space-3) var(--haze-space-4);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);line-height:var(--haze-leading-normal);display:flex}.iszr7j7{background:color-mix(in srgb, var(--haze-color-info) 10%, transparent);color:var(--haze-color-info);border:1px solid color-mix(in srgb, var(--haze-color-info) 25%, transparent)}.s1p0rp69{background:color-mix(in srgb, var(--haze-color-success) 10%, transparent);color:var(--haze-color-success);border:1px solid color-mix(in srgb, var(--haze-color-success) 25%, transparent)}.w1dv8644{background:color-mix(in srgb, var(--haze-color-warning) 10%, transparent);color:var(--haze-color-warning);border:1px solid color-mix(in srgb, var(--haze-color-warning) 25%, transparent)}.d13e6k4w{background:color-mix(in srgb, var(--haze-color-danger) 10%, transparent);color:var(--haze-color-danger);border:1px solid color-mix(in srgb, var(--haze-color-danger) 25%, transparent)}.c1rnnssd{flex:1}.cf33uyw{appearance:none;color:inherit;cursor:pointer;font-size:var(--haze-text-lg);opacity:.6;background:0 0;border:none;padding:0;line-height:1;transition:opacity .15s}.cf33uyw:hover{opacity:1}.cf33uyw:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);border-radius:var(--haze-radius-sm);outline:none}.b4666vo{border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);color:var(--haze-color-text-secondary);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.sag18gw{width:32px;height:32px;font-size:var(--haze-text-xs)}.m7cr8e2{width:40px;height:40px;font-size:var(--haze-text-sm)}.lmhruty{width:56px;height:56px;font-size:var(--haze-text-lg)}.imhjc6a{object-fit:cover;width:100%;height:100%}.b48ijb1{border-radius:var(--haze-radius-full);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);line-height:var(--haze-leading-tight);white-space:nowrap;align-items:center;display:inline-flex}.dnq0o02{background:var(--haze-color-bg-muted);color:var(--haze-color-text-secondary)}.syuh2ol{background:color-mix(in srgb, var(--haze-color-success) 15%, transparent);color:var(--haze-color-success)}.w8jmk6n{background:color-mix(in srgb, var(--haze-color-warning) 15%, transparent);color:var(--haze-color-warning)}.d6m6v51{background:color-mix(in srgb, var(--haze-color-danger) 15%, transparent);color:var(--haze-color-danger)}.i58ehqk{background:color-mix(in srgb, var(--haze-color-info) 15%, transparent);color:var(--haze-color-info)}.s1m88y0u{padding:var(--haze-space-0) var(--haze-space-2);font-size:var(--haze-text-xs)}.miqan6{padding:var(--haze-space-1) var(--haze-space-3);font-size:var(--haze-text-sm)}.n10d0fjb{font-family:var(--haze-font-sans);font-size:var(--haze-text-sm)}.l727nxp{align-items:center;gap:var(--haze-space-2);margin:0;padding:0;list-style:none;display:flex}.sjewi7s{color:var(--haze-color-text-muted);-webkit-user-select:none;user-select:none}.lr0896i{color:var(--haze-color-primary);-webkit-text-decoration:none;text-decoration:none;transition:color .15s}.lr0896i:hover{color:var(--haze-color-primary-hover);-webkit-text-decoration:underline;text-decoration:underline}.lr0896i:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);border-radius:var(--haze-radius-sm);outline:none}.cpuhw6u{color:var(--haze-color-text);font-weight:var(--haze-weight-medium)}.btwn6q9{justify-content:center;align-items:center;gap:var(--haze-space-2);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);line-height:var(--haze-leading-tight);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.btwn6q9:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.btwn6q9:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sfzq9n9{background:var(--haze-color-primary);color:var(--haze-color-text-inverse)}.sfzq9n9:hover{background:var(--haze-color-primary-hover)}.sfzq9n9:active{background:var(--haze-color-primary-active)}.o1dhij4n{border-color:var(--haze-color-border);color:var(--haze-color-text);background:0 0}.o1dhij4n:hover{border-color:var(--haze-color-border-hover);background:var(--haze-color-bg-subtle)}.o1dhij4n:active{background:var(--haze-color-bg-muted)}.ga83b1x{color:var(--haze-color-text);background:0 0}.ga83b1x:hover{background:var(--haze-color-bg-subtle)}.ga83b1x:active{background:var(--haze-color-bg-muted)}.svizdgc{padding:var(--haze-space-1) var(--haze-space-3);font-size:var(--haze-text-sm)}.m5okc3b{padding:var(--haze-space-2) var(--haze-space-4);font-size:var(--haze-text-sm)}.lqx8j9d{padding:var(--haze-space-3) var(--haze-space-6);font-size:var(--haze-text-base)}.suufezf{padding:var(--haze-space-1);font-size:var(--haze-text-sm)}.mrc88qd{padding:var(--haze-space-2);font-size:var(--haze-text-sm)}.l1i6iwg2{padding:var(--haze-space-3);font-size:var(--haze-text-base)}.b1r9ra2q{border-radius:var(--haze-radius-lg);padding:var(--haze-space-5);font-family:var(--haze-font-sans);color:var(--haze-color-text)}.eiercmf{background:var(--haze-color-bg);box-shadow:var(--haze-shadow-md)}.omgotjy{background:var(--haze-color-bg);border:1px solid var(--haze-color-border)}.f10uuhch{background:var(--haze-color-bg-subtle)}.w1vgcode{border-radius:var(--haze-radius-lg);position:relative;overflow:hidden}.t1gm45fg{-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;display:flex;overflow-x:auto}.t1gm45fg::-webkit-scrollbar{display:none}.nit1xjh{z-index:1;appearance:none;border-radius:var(--haze-radius-full);background:var(--haze-color-bg);width:36px;height:36px;color:var(--haze-color-text);font-size:var(--haze-text-lg);cursor:pointer;box-shadow:var(--haze-shadow-md);border:none;justify-content:center;align-items:center;transition:background .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.nit1xjh:hover{background:var(--haze-color-bg-subtle)}.nit1xjh:focus-visible{box-shadow:var(--haze-shadow-md),0 0 0 3px var(--haze-color-focus-ring);outline:none}.pabcbhr{left:var(--haze-space-2)}.nc7ezkr{right:var(--haze-space-2)}.i1o6048a{justify-content:center;gap:var(--haze-space-1);padding:var(--haze-space-2) 0;display:flex}.dhf6lgj{border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);cursor:pointer;border:none;width:8px;height:8px;padding:0;transition:background .15s}.dooaa69{background:var(--haze-color-primary)}.s10j4fk7{scroll-snap-snap-align:start;scroll-snap-align:start;flex:0 0 100%;min-width:0}.b187lfi8{appearance:none;border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-sm);background:var(--haze-color-bg);cursor:pointer;flex-shrink:0;width:18px;height:18px;transition:background .15s,border-color .15s,box-shadow .15s;position:relative}.b187lfi8:hover{border-color:var(--haze-color-border-hover)}.b187lfi8:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b187lfi8:checked{background:var(--haze-color-primary);border-color:var(--haze-color-primary)}.b187lfi8:checked:after{content:"";border:solid var(--haze-color-text-inverse);border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:2px;left:5px;transform:rotate(45deg)}.b187lfi8:disabled{opacity:.5;cursor:not-allowed}.w1hbn1o4{width:100%;display:inline-block;position:relative}.i4sk2nn{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);padding:var(--haze-space-2) var(--haze-space-3);line-height:var(--haze-leading-normal);box-sizing:border-box;transition:border-color .15s,box-shadow .15s;display:block}.i4sk2nn:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.luqji2p{z-index:1000;margin-top:var(--haze-space-1);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);max-height:200px;box-shadow:var(--haze-shadow-lg);position:absolute;top:100%;left:0;right:0;overflow-y:auto}.h1poubj5{display:none}.o1jce0x2{padding:var(--haze-space-2) var(--haze-space-3);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);cursor:pointer;align-items:center;transition:background .1s;display:flex}.o1jce0x2:hover,.h1rwzud7{background:var(--haze-color-bg-subtle)}.s10s5833{font-weight:var(--haze-weight-medium);color:var(--haze-color-primary)}.c1f9h0hb{padding:var(--haze-space-3);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm)}.hrefchg{-webkit-box-pack:justify;align-items:center;-ms-flex-pack:space-between;margin-bottom:var(--haze-space-2);justify-content:space-between;display:flex}.h144mm7c{appearance:none;color:var(--haze-color-text);cursor:pointer;padding:var(--haze-space-1);border-radius:var(--haze-radius-sm);font-size:var(--haze-text-sm);background:0 0;border:none;line-height:1}.h144mm7c:hover{background:var(--haze-color-bg-subtle)}.h144mm7c:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.hmmnmao{font-weight:var(--haze-weight-medium);color:var(--haze-color-text)}.g1f8zgbo{display:-ms-grid;-ms-grid-columns:repeat(7, 1fr);text-align:center;grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.w1onmyfp{padding:var(--haze-space-1);font-weight:var(--haze-weight-medium);color:var(--haze-color-text-muted);font-size:var(--haze-text-xs)}.d1om8hws{appearance:none;color:var(--haze-color-text);cursor:pointer;padding:var(--haze-space-1);border-radius:var(--haze-radius-sm);font-size:var(--haze-text-sm);background:0 0;border:none;line-height:1.5;transition:background .1s}.d1om8hws:hover{background:var(--haze-color-bg-subtle)}.d1om8hws:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.d1om8hws:disabled{opacity:.3;cursor:not-allowed}.dxg97in{background:var(--haze-color-primary);color:var(--haze-color-text-inverse)}.dxg97in:hover{background:var(--haze-color-primary-hover)}.dum096m{color:var(--haze-color-text-muted)}.w1m20gol{display:inline-block;position:relative}.i1ydf3w1{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);padding:var(--haze-space-2) var(--haze-space-3);line-height:var(--haze-leading-normal);cursor:pointer;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;display:block}.i1ydf3w1:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.d1flfxon{z-index:1000;margin-top:var(--haze-space-1);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-lg);background:var(--haze-color-bg);box-shadow:var(--haze-shadow-lg);position:absolute;top:100%;left:0}.hhbkpj1{display:none}.oxnde4s{border-radius:var(--haze-radius-xl);padding:var(--haze-space-6);background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);box-shadow:var(--haze-shadow-xl);border:none;width:100%;max-width:480px}.oxnde4s::backdrop{background:#0006}.oxnde4s:focus-visible{box-shadow:var(--haze-shadow-xl),0 0 0 3px var(--haze-color-focus-ring);outline:none}.d191itnz{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);overflow:hidden}.s1kaiz9e{-webkit-box-pack:justify;align-items:center;-ms-flex-pack:space-between;padding:var(--haze-space-3) var(--haze-space-4);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);color:var(--haze-color-text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;list-style:none;transition:background .15s;display:flex}.s1kaiz9e:hover{background:var(--haze-color-bg-subtle)}.s1kaiz9e:focus-visible{box-shadow:inset 0 0 0 3px var(--haze-color-focus-ring);outline:none}.s1kaiz9e::marker{display:none}.s1kaiz9e::-webkit-details-marker{display:none}.s1kaiz9e:after{content:"";border-right:2px solid var(--haze-color-text-muted);border-bottom:2px solid var(--haze-color-text-muted);-webkit-transition:-webkit-transform .2s;flex-shrink:0;width:8px;height:8px;transition:transform .2s;transform:rotate(-45deg)}details[open]>.s1kaiz9e:after{transform:rotate(45deg)}.cz931n3{padding:var(--haze-space-3) var(--haze-space-4);border-top:1px solid var(--haze-color-border);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text-secondary);line-height:var(--haze-leading-normal)}.h17p0ep7{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}.t1nmk3to{justify-content:center;align-items:center;gap:var(--haze-space-2);padding:var(--haze-space-2) var(--haze-space-4);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);cursor:pointer;transition:background .15s,border-color .15s;display:inline-flex}.t1nmk3to:hover{border-color:var(--haze-color-border-hover);background:var(--haze-color-bg-subtle)}.t1nmk3to:focus-within{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.b9t8w6f{display:flex}.b1din3i3{color:currentColor;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.b1din3i3>svg{fill:currentColor;stroke:currentColor;width:100%;height:100%}.smrq8s4>svg{fill:none}.swqgfs4{width:16px;height:16px}.m1gcmjlm{width:20px;height:20px}.ly5zzma{width:24px;height:24px}.w184eiu0{display:block;position:relative;overflow:hidden}.ifikscv{width:100%;height:100%;display:block}.f1rrks2c{background:var(--haze-color-bg-muted);width:100%;height:100%;color:var(--haze-color-text-muted);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);justify-content:center;align-items:center;display:flex}.b18dr76j{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);line-height:var(--haze-leading-normal);transition:border-color .15s,box-shadow .15s;display:block}.b18dr76j:hover{border-color:var(--haze-color-border-hover)}.b18dr76j:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b18dr76j:disabled{opacity:.5;cursor:not-allowed}.b18dr76j::-webkit-input-placeholder{color:var(--haze-color-text-muted)}.b18dr76j::placeholder{color:var(--haze-color-text-muted)}.b18dr76j:-ms-placeholder-shown{color:var(--haze-color-text-muted)}.b18dr76j::placeholder{color:var(--haze-color-text-muted)}.s1lt2bv9{padding:var(--haze-space-1) var(--haze-space-2);font-size:var(--haze-text-sm)}.m1aucp4h{padding:var(--haze-space-2) var(--haze-space-3);font-size:var(--haze-text-sm)}.lxj3cju{padding:var(--haze-space-3) var(--haze-space-4);font-size:var(--haze-text-base)}.b6y76mu{font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);line-height:var(--haze-leading-normal);padding-left:var(--haze-space-5);margin:0}.u31hqp2{list-style-type:disc}.o1ubwy3d{list-style-type:decimal}.ngsxhlv{padding-left:0;list-style-type:none}.inunl6n{padding:var(--haze-space-1) 0}.czio6g9{display:inline-flex;position:relative}.p2k9teu{z-index:1000;margin-top:var(--haze-space-1);min-width:160px;padding:var(--haze-space-1) 0;border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-lg);background:var(--haze-color-bg);box-shadow:var(--haze-shadow-lg);position:absolute;top:100%;left:0}.hn79qla{display:none}.d1sgpkj8{height:1px;margin:var(--haze-space-1) 0;background:var(--haze-color-border)}.iuktz9j{width:100%;padding:var(--haze-space-2) var(--haze-space-3);color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;transition:background .1s;display:flex}.iuktz9j:hover{background:var(--haze-color-bg-subtle)}.iuktz9j:focus-visible{background:var(--haze-color-bg-subtle);box-shadow:inset 0 0 0 2px var(--haze-color-focus-ring);outline:none}.iuktz9j:disabled{opacity:.5;cursor:not-allowed}.wcynu9m{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);align-items:stretch;transition:border-color .15s,box-shadow .15s;display:inline-flex;overflow:hidden}.wcynu9m:focus-within{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.ii249dk{background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);text-align:center;-moz-appearance:textfield;border:none;outline:none;width:60px}.ii249dk::-webkit-inner-spin-button{appearance:none;margin:0}.ii249dk::-webkit-outer-spin-button{appearance:none;margin:0}.sbzqw1p{appearance:none;background:var(--haze-color-bg-subtle);color:var(--haze-color-text);cursor:pointer;font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;transition:background .1s;display:flex}.sbzqw1p:hover{background:var(--haze-color-bg-muted)}.sbzqw1p:active{background:var(--haze-color-border)}.sbzqw1p:disabled{opacity:.5;cursor:not-allowed}.s6lc5ic{padding:var(--haze-space-1);font-size:var(--haze-text-sm)}.m128ncgb{padding:var(--haze-space-2);font-size:var(--haze-text-sm)}.lb15a7r{padding:var(--haze-space-3);font-size:var(--haze-text-base)}.sib90v8{padding:0 var(--haze-space-2);font-size:var(--haze-text-sm)}.m1w4o2c9{padding:0 var(--haze-space-3);font-size:var(--haze-text-sm)}.lx2lopi{padding:0 var(--haze-space-3);font-size:var(--haze-text-base)}.cpz20zo{display:inline-flex;position:relative}.p1og1db{z-index:1000;margin-top:var(--haze-space-1);padding:var(--haze-space-3);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-lg);background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);box-shadow:var(--haze-shadow-lg);min-width:200px;position:absolute;top:100%;left:0}.h12vxtuf{display:none}.r1wb1f2i{appearance:none;border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-full);background:var(--haze-color-bg);cursor:pointer;flex-shrink:0;width:18px;height:18px;transition:background .15s,border-color .15s,box-shadow .15s;position:relative}.r1wb1f2i:hover{border-color:var(--haze-color-border-hover)}.r1wb1f2i:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.r1wb1f2i:checked{border-color:var(--haze-color-primary)}.r1wb1f2i:checked:after{content:"";border-radius:var(--haze-radius-full);background:var(--haze-color-primary);width:10px;height:10px;position:absolute;top:3px;left:3px}.r1wb1f2i:disabled{opacity:.5;cursor:not-allowed}.l1avex36{align-items:center;gap:var(--haze-space-2);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);cursor:pointer;display:inline-flex}.b1bmwkyg{gap:var(--haze-space-2);border:none;flex-direction:column;margin:0;padding:0;display:flex}.b1peearv{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);line-height:var(--haze-leading-normal);appearance:none;-webkit-background-position:right var(--haze-space-3) center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M2.22 4.47a.75.75 0 0 1 1.06 0L6 7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06L6.53 8.78a.75.75 0 0 1-1.06 0L2.22 5.53a.75.75 0 0 1 0-1.06z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--haze-space-3) center;padding-right:var(--haze-space-8);cursor:pointer;transition:border-color .15s,box-shadow .15s;display:block}.b1peearv:hover{border-color:var(--haze-color-border-hover)}.b1peearv:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b1peearv:disabled{opacity:.5;cursor:not-allowed}.sjwza0y{padding:var(--haze-space-1) var(--haze-space-2);font-size:var(--haze-text-sm)}.mzar2ws{padding:var(--haze-space-2) var(--haze-space-3);font-size:var(--haze-text-sm)}.lhyvvui{padding:var(--haze-space-3) var(--haze-space-4);font-size:var(--haze-text-base)}.bpjjm1p{background:var(--haze-color-bg-muted);animation:1.5s ease-in-out infinite shimmer-bpjjm1p;display:block}@keyframes shimmer-bpjjm1p{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.t1ji0c5a{border-radius:var(--haze-radius-sm);height:1em}.c15uxer9{border-radius:var(--haze-radius-full)}.rkzquqq{border-radius:var(--haze-radius-md)}.bfgou5l{appearance:none;border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);cursor:pointer;outline:none;width:100%;height:6px;transition:background .15s}.bfgou5l::-webkit-slider-thumb{appearance:none;border-radius:var(--haze-radius-full);background:var(--haze-color-primary);border:2px solid var(--haze-color-bg);width:18px;height:18px;box-shadow:var(--haze-shadow-sm);cursor:pointer;transition:background .15s,box-shadow .15s}.bfgou5l::-moz-range-thumb{border-radius:var(--haze-radius-full);background:var(--haze-color-primary);border:2px solid var(--haze-color-bg);width:18px;height:18px;box-shadow:var(--haze-shadow-sm);cursor:pointer}.bfgou5l:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.bfgou5l:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.bfgou5l:disabled{opacity:.5;cursor:not-allowed}.t1js4uxc{border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);cursor:pointer;border:none;align-items:center;padding:2px;transition:background .2s;display:inline-flex;position:relative}.t1js4uxc:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.t1js4uxc:disabled{opacity:.5;cursor:not-allowed}.t1qb79fu{background:var(--haze-color-primary)}.t1ixneoj{border-radius:var(--haze-radius-full);-webkit-transition:-webkit-transform .2s;box-shadow:var(--haze-shadow-sm);background:#fff;transition:transform .2s;display:block}.so54z1g{width:32px;height:18px}.m9yt5eh{width:40px;height:22px}.lh99aoz{width:48px;height:26px}.s3tnk0a{width:14px;height:14px}.mf3ptdg{width:18px;height:18px}.l11o9w2z{width:22px;height:22px}.sew2awa{transform:translate(14px)}.m1dvw2o9{transform:translate(18px)}.l19clm6f{transform:translate(22px)}.b9fntfg{border-collapse:collapse;width:100%;font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text)}.sy1ks6b tbody tr:nth-child(2n){background:var(--haze-color-bg-subtle)}.b45kaep th,.b45kaep td{border:1px solid var(--haze-color-border)}.b7tlpbs td{padding:var(--haze-space-2) var(--haze-space-3);border-bottom:1px solid var(--haze-color-border);color:var(--haze-color-text-secondary)}.h188mbkb{border-bottom:2px solid var(--haze-color-border)}.h188mbkb th{text-align:left;padding:var(--haze-space-2) var(--haze-space-3);font-weight:var(--haze-weight-semibold);color:var(--haze-color-text)}.bgf9674{padding:var(--haze-space-2) var(--haze-space-4);color:var(--haze-color-text-muted);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;transition:color .15s,border-color .15s}.bgf9674:hover{color:var(--haze-color-text)}.bgf9674:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.a1prfgev{color:var(--haze-color-primary);border-bottom-color:var(--haze-color-primary)}.b1dqiroo{border-bottom:1px solid var(--haze-color-border);gap:0;display:flex}.bp1375a{padding:var(--haze-space-4) 0}.h1gs31v1{display:none}.b1cu6oqd{font-family:var(--haze-font-sans);flex-direction:column;display:flex}.b1t44wwy{align-items:center;gap:var(--haze-space-1);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);line-height:var(--haze-leading-tight);white-space:nowrap;display:inline-flex}.d14l1xxm{background:var(--haze-color-bg-muted);color:var(--haze-color-text-secondary)}.py5mbql{background:var(--haze-color-primary-subtle);color:var(--haze-color-primary)}.s1rwhzzg{background:color-mix(in srgb, var(--haze-color-success) 15%, transparent);color:var(--haze-color-success)}.wgefhgi{background:color-mix(in srgb, var(--haze-color-warning) 15%, transparent);color:var(--haze-color-warning)}.d141dsor{background:color-mix(in srgb, var(--haze-color-danger) 15%, transparent);color:var(--haze-color-danger)}.sp149c6{padding:var(--haze-space-0) var(--haze-space-2);font-size:var(--haze-text-xs)}.m10vceca{padding:var(--haze-space-1) var(--haze-space-3);font-size:var(--haze-text-sm)}.ciauw5q{appearance:none;color:inherit;cursor:pointer;font-size:inherit;opacity:.6;background:0 0;border:none;align-items:center;padding:0;line-height:1;transition:opacity .15s;display:inline-flex}.ciauw5q:hover{opacity:1}.ciauw5q:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);border-radius:var(--haze-radius-sm);outline:none}.b1n6cdld{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);line-height:var(--haze-leading-normal);resize:vertical;transition:border-color .15s,box-shadow .15s;display:block}.b1n6cdld:hover{border-color:var(--haze-color-border-hover)}.b1n6cdld:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b1n6cdld:disabled{opacity:.5;cursor:not-allowed}.b1n6cdld::-webkit-input-placeholder{color:var(--haze-color-text-muted)}.b1n6cdld::placeholder{color:var(--haze-color-text-muted)}.b1n6cdld:-ms-placeholder-shown{color:var(--haze-color-text-muted)}.b1n6cdld::placeholder{color:var(--haze-color-text-muted)}.svhqg3y{padding:var(--haze-space-1) var(--haze-space-2);font-size:var(--haze-text-sm)}.m1lnui41{padding:var(--haze-space-2) var(--haze-space-3);font-size:var(--haze-text-sm)}.l1ogff54{padding:var(--haze-space-3) var(--haze-space-4);font-size:var(--haze-text-base)}.blmvb4r{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:var(--haze-space-3);padding:var(--haze-space-3) var(--haze-space-4);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);line-height:var(--haze-leading-normal);box-shadow:var(--haze-shadow-lg);pointer-events:auto;animation:.2s ease-out toastIn-blmvb4r;display:flex}@keyframes toastIn-blmvb4r{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.iy49nz2{background:var(--haze-color-bg);color:var(--haze-color-text);border:1px solid var(--haze-color-border)}.swaipoh{background:color-mix(in srgb, var(--haze-color-success) 10%, var(--haze-color-bg));color:var(--haze-color-success);border:1px solid color-mix(in srgb, var(--haze-color-success) 25%, transparent)}.wxi28ov{background:color-mix(in srgb, var(--haze-color-warning) 10%, var(--haze-color-bg));color:var(--haze-color-warning);border:1px solid color-mix(in srgb, var(--haze-color-warning) 25%, transparent)}.dl2596s{background:color-mix(in srgb, var(--haze-color-danger) 10%, var(--haze-color-bg));color:var(--haze-color-danger);border:1px solid color-mix(in srgb, var(--haze-color-danger) 25%, transparent)}.cyr6umc{flex:1}.c19whxes{appearance:none;color:inherit;cursor:pointer;font-size:var(--haze-text-lg);opacity:.6;background:0 0;border:none;padding:0;line-height:1;transition:opacity .15s}.c19whxes:hover{opacity:1}.czbjunm{bottom:var(--haze-space-4);right:var(--haze-space-4);z-index:9999;gap:var(--haze-space-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}.wojk2bk{display:inline-flex;position:relative}.b1pzhi26{z-index:1000;padding:var(--haze-space-1) var(--haze-space-2);border-radius:var(--haze-radius-md);background:var(--haze-color-text);color:var(--haze-color-text-inverse);font-family:var(--haze-font-sans);font-size:var(--haze-text-xs);line-height:var(--haze-leading-normal);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;position:absolute}.t1eufnsf{margin-bottom:var(--haze-space-1);bottom:100%;left:50%;transform:translate(-50%)}.b17ctpvp{margin-top:var(--haze-space-1);top:100%;left:50%;transform:translate(-50%)}.l1fci34k{margin-right:var(--haze-space-1);top:50%;right:100%;transform:translateY(-50%)}.rtkbbwq{margin-left:var(--haze-space-1);top:50%;left:100%;transform:translateY(-50%)}.s16ged4s:hover>[role=tooltip],.s16ged4s:focus-within>[role=tooltip]{opacity:1}.l677mhi{--haze-color-primary:#06f;--haze-color-primary-hover:#0052cc;--haze-color-primary-active:#003d99;--haze-color-primary-subtle:#e6f0ff;--haze-color-bg:#fff;--haze-color-bg-subtle:#f7f8fa;--haze-color-bg-muted:#eef0f4;--haze-color-text:#1a1a1a;--haze-color-text-secondary:#4a4a4a;--haze-color-text-muted:#8a8a8a;--haze-color-text-inverse:#fff;--haze-color-border:#e0e0e0;--haze-color-border-hover:silver;--haze-color-success:#16a34a;--haze-color-warning:#f59e0b;--haze-color-danger:#dc2626;--haze-color-info:#2563eb;--haze-color-focus-ring:#06f6}.dves5ff{--haze-color-primary:#4d94ff;--haze-color-primary-hover:#6aa6ff;--haze-color-primary-active:#80b3ff;--haze-color-primary-subtle:#1a2e4a;--haze-color-bg:#121212;--haze-color-bg-subtle:#1e1e1e;--haze-color-bg-muted:#2a2a2a;--haze-color-text:#e8e8e8;--haze-color-text-secondary:#b0b0b0;--haze-color-text-muted:#707070;--haze-color-text-inverse:#1a1a1a;--haze-color-border:#333;--haze-color-border-hover:#4a4a4a;--haze-color-success:#22c55e;--haze-color-warning:#fbbf24;--haze-color-danger:#ef4444;--haze-color-info:#3b82f6;--haze-color-focus-ring:#4d94ff66}.s413e2t{--haze-space-0:0;--haze-space-1:4px;--haze-space-2:8px;--haze-space-3:12px;--haze-space-4:16px;--haze-space-5:20px;--haze-space-6:24px;--haze-space-8:32px;--haze-space-10:40px;--haze-space-12:48px;--haze-space-16:64px;--haze-radius-none:0;--haze-radius-sm:4px;--haze-radius-md:6px;--haze-radius-lg:8px;--haze-radius-xl:12px;--haze-radius-2xl:16px;--haze-radius-full:9999px;--haze-shadow-sm:0 1px 2px #0000000d;--haze-shadow-md:0 4px 6px #00000012;--haze-shadow-lg:0 10px 15px #0000001a;--haze-shadow-xl:0 20px 25px #0000001a}.tjcr6l1{--haze-font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--haze-font-mono:"SF Mono",SFMono-Regular,ui-monospace,"DejaVu Sans Mono",Menlo,Consolas,monospace;--haze-text-xs:12px;--haze-text-sm:14px;--haze-text-base:16px;--haze-text-lg:18px;--haze-text-xl:20px;--haze-text-2xl:24px;--haze-text-3xl:30px;--haze-leading-tight:1.25;--haze-leading-normal:1.5;--haze-leading-relaxed:1.75;--haze-weight-normal:400;--haze-weight-medium:500;--haze-weight-semibold:600;--haze-weight-bold:700}
1
+ .b1oalqve{width:100%}.i1sazm4o{border-bottom:1px solid var(--haze-color-border)}.i1sazm4o:first-of-type{border-top:1px solid var(--haze-color-border)}.s15fkg36{-webkit-box-pack:justify;align-items:center;-ms-flex-pack:space-between;padding:var(--haze-space-3) var(--haze-space-4);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);color:var(--haze-color-text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;list-style:none;transition:background .15s;display:flex}.s15fkg36:hover{background:var(--haze-color-bg-subtle)}.s15fkg36:focus-visible{box-shadow:inset 0 0 0 3px var(--haze-color-focus-ring);outline:none}.s15fkg36::marker{display:none}.s15fkg36::-webkit-details-marker{display:none}.s15fkg36:after{content:"";border-right:2px solid var(--haze-color-text-muted);border-bottom:2px solid var(--haze-color-text-muted);-webkit-transition:-webkit-transform .2s;flex-shrink:0;width:8px;height:8px;transition:transform .2s;transform:rotate(-45deg)}details[open]>.s15fkg36:after{transform:rotate(45deg)}.cvrhx3b{padding:0 var(--haze-space-4) var(--haze-space-4);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text-secondary);line-height:var(--haze-leading-normal)}.b1mir2ye{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:var(--haze-space-3);padding:var(--haze-space-3) var(--haze-space-4);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);line-height:var(--haze-leading-normal);display:flex}.iszr7j7{background:color-mix(in srgb, var(--haze-color-info) 10%, transparent);color:var(--haze-color-info);border:1px solid color-mix(in srgb, var(--haze-color-info) 25%, transparent)}.s1p0rp69{background:color-mix(in srgb, var(--haze-color-success) 10%, transparent);color:var(--haze-color-success);border:1px solid color-mix(in srgb, var(--haze-color-success) 25%, transparent)}.w1dv8644{background:color-mix(in srgb, var(--haze-color-warning) 10%, transparent);color:var(--haze-color-warning);border:1px solid color-mix(in srgb, var(--haze-color-warning) 25%, transparent)}.d13e6k4w{background:color-mix(in srgb, var(--haze-color-danger) 10%, transparent);color:var(--haze-color-danger);border:1px solid color-mix(in srgb, var(--haze-color-danger) 25%, transparent)}.c1rnnssd{flex:1}.cf33uyw{appearance:none;color:inherit;cursor:pointer;font-size:var(--haze-text-lg);opacity:.6;background:0 0;border:none;padding:0;line-height:1;transition:opacity .15s}.cf33uyw:hover{opacity:1}.cf33uyw:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);border-radius:var(--haze-radius-sm);outline:none}.b4666vo{border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);color:var(--haze-color-text-secondary);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.sag18gw{width:32px;height:32px;font-size:var(--haze-text-xs)}.m7cr8e2{width:40px;height:40px;font-size:var(--haze-text-sm)}.lmhruty{width:56px;height:56px;font-size:var(--haze-text-lg)}.imhjc6a{object-fit:cover;width:100%;height:100%}.b48ijb1{border-radius:var(--haze-radius-full);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);line-height:var(--haze-leading-tight);white-space:nowrap;align-items:center;display:inline-flex}.dnq0o02{background:var(--haze-color-bg-muted);color:var(--haze-color-text-secondary)}.syuh2ol{background:color-mix(in srgb, var(--haze-color-success) 15%, transparent);color:var(--haze-color-success)}.w8jmk6n{background:color-mix(in srgb, var(--haze-color-warning) 15%, transparent);color:var(--haze-color-warning)}.d6m6v51{background:color-mix(in srgb, var(--haze-color-danger) 15%, transparent);color:var(--haze-color-danger)}.i58ehqk{background:color-mix(in srgb, var(--haze-color-info) 15%, transparent);color:var(--haze-color-info)}.s1m88y0u{padding:var(--haze-space-0) var(--haze-space-2);font-size:var(--haze-text-xs)}.miqan6{padding:var(--haze-space-1) var(--haze-space-3);font-size:var(--haze-text-sm)}.n10d0fjb{font-family:var(--haze-font-sans);font-size:var(--haze-text-sm)}.l727nxp{align-items:center;gap:var(--haze-space-2);margin:0;padding:0;list-style:none;display:flex}.sjewi7s{color:var(--haze-color-text-muted);-webkit-user-select:none;user-select:none}.lr0896i{color:var(--haze-color-primary);-webkit-text-decoration:none;text-decoration:none;transition:color .15s}.lr0896i:hover{color:var(--haze-color-primary-hover);-webkit-text-decoration:underline;text-decoration:underline}.lr0896i:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);border-radius:var(--haze-radius-sm);outline:none}.cpuhw6u{color:var(--haze-color-text);font-weight:var(--haze-weight-medium)}.btwn6q9{justify-content:center;align-items:center;gap:var(--haze-space-2);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);line-height:var(--haze-leading-tight);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.btwn6q9:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.btwn6q9:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sfzq9n9{background:var(--haze-color-primary);color:var(--haze-color-text-inverse)}.sfzq9n9:hover{background:var(--haze-color-primary-hover)}.sfzq9n9:active{background:var(--haze-color-primary-active)}.o1dhij4n{border-color:var(--haze-color-border);color:var(--haze-color-text);background:0 0}.o1dhij4n:hover{border-color:var(--haze-color-border-hover);background:var(--haze-color-bg-subtle)}.o1dhij4n:active{background:var(--haze-color-bg-muted)}.ga83b1x{color:var(--haze-color-text);background:0 0}.ga83b1x:hover{background:var(--haze-color-bg-subtle)}.ga83b1x:active{background:var(--haze-color-bg-muted)}.svizdgc{padding:var(--haze-space-1) var(--haze-space-3);font-size:var(--haze-text-sm)}.m5okc3b{padding:var(--haze-space-2) var(--haze-space-4);font-size:var(--haze-text-sm)}.lqx8j9d{padding:var(--haze-space-3) var(--haze-space-6);font-size:var(--haze-text-base)}.suufezf{padding:var(--haze-space-1);font-size:var(--haze-text-sm)}.mrc88qd{padding:var(--haze-space-2);font-size:var(--haze-text-sm)}.l1i6iwg2{padding:var(--haze-space-3);font-size:var(--haze-text-base)}.b1r9ra2q{border-radius:var(--haze-radius-lg);padding:var(--haze-space-5);font-family:var(--haze-font-sans);color:var(--haze-color-text)}.eiercmf{background:var(--haze-color-bg);box-shadow:var(--haze-shadow-md)}.omgotjy{background:var(--haze-color-bg);border:1px solid var(--haze-color-border)}.f10uuhch{background:var(--haze-color-bg-subtle)}.w1vgcode{border-radius:var(--haze-radius-lg);position:relative;overflow:hidden}.t1gm45fg{-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;display:flex;overflow-x:auto}.t1gm45fg::-webkit-scrollbar{display:none}.nit1xjh{z-index:1;appearance:none;border-radius:var(--haze-radius-full);background:var(--haze-color-bg);width:36px;height:36px;color:var(--haze-color-text);font-size:var(--haze-text-lg);cursor:pointer;box-shadow:var(--haze-shadow-md);border:none;justify-content:center;align-items:center;transition:background .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.nit1xjh:hover{background:var(--haze-color-bg-subtle)}.nit1xjh:focus-visible{box-shadow:var(--haze-shadow-md),0 0 0 3px var(--haze-color-focus-ring);outline:none}.pabcbhr{left:var(--haze-space-2)}.nc7ezkr{right:var(--haze-space-2)}.i1o6048a{justify-content:center;gap:var(--haze-space-1);padding:var(--haze-space-2) 0;display:flex}.dhf6lgj{border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);cursor:pointer;border:none;width:8px;height:8px;padding:0;transition:background .15s}.dooaa69{background:var(--haze-color-primary)}.s10j4fk7{scroll-snap-snap-align:start;scroll-snap-align:start;flex:0 0 100%;min-width:0}.b187lfi8{appearance:none;border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-sm);background:var(--haze-color-bg);cursor:pointer;flex-shrink:0;width:18px;height:18px;transition:background .15s,border-color .15s,box-shadow .15s;position:relative}.b187lfi8:hover{border-color:var(--haze-color-border-hover)}.b187lfi8:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b187lfi8:checked{background:var(--haze-color-primary);border-color:var(--haze-color-primary)}.b187lfi8:checked:after{content:"";border:solid var(--haze-color-text-inverse);border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:2px;left:5px;transform:rotate(45deg)}.b187lfi8:disabled{opacity:.5;cursor:not-allowed}.w1hbn1o4{width:100%;display:inline-block;position:relative}.i4sk2nn{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);padding:var(--haze-space-2) var(--haze-space-3);line-height:var(--haze-leading-normal);box-sizing:border-box;transition:border-color .15s,box-shadow .15s;display:block}.i4sk2nn:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.luqji2p{z-index:1000;margin-top:var(--haze-space-1);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);max-height:200px;box-shadow:var(--haze-shadow-lg);position:absolute;top:100%;left:0;right:0;overflow-y:auto}.h1poubj5{display:none}.o1jce0x2{padding:var(--haze-space-2) var(--haze-space-3);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);cursor:pointer;align-items:center;transition:background .1s;display:flex}.o1jce0x2:hover,.h1rwzud7{background:var(--haze-color-bg-subtle)}.s10s5833{font-weight:var(--haze-weight-medium);color:var(--haze-color-primary)}.c1f9h0hb{padding:var(--haze-space-3);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm)}.hrefchg{-webkit-box-pack:justify;align-items:center;-ms-flex-pack:space-between;margin-bottom:var(--haze-space-2);justify-content:space-between;display:flex}.h144mm7c{appearance:none;color:var(--haze-color-text);cursor:pointer;padding:var(--haze-space-1);border-radius:var(--haze-radius-sm);font-size:var(--haze-text-sm);background:0 0;border:none;line-height:1}.h144mm7c:hover{background:var(--haze-color-bg-subtle)}.h144mm7c:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.hmmnmao{font-weight:var(--haze-weight-medium);color:var(--haze-color-text)}.g1f8zgbo{display:-ms-grid;-ms-grid-columns:repeat(7, 1fr);text-align:center;grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.w1onmyfp{padding:var(--haze-space-1);font-weight:var(--haze-weight-medium);color:var(--haze-color-text-muted);font-size:var(--haze-text-xs)}.d1om8hws{appearance:none;color:var(--haze-color-text);cursor:pointer;padding:var(--haze-space-1);border-radius:var(--haze-radius-sm);font-size:var(--haze-text-sm);background:0 0;border:none;line-height:1.5;transition:background .1s}.d1om8hws:hover{background:var(--haze-color-bg-subtle)}.d1om8hws:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.d1om8hws:disabled{opacity:.3;cursor:not-allowed}.dxg97in{background:var(--haze-color-primary);color:var(--haze-color-text-inverse)}.dxg97in:hover{background:var(--haze-color-primary-hover)}.dum096m{color:var(--haze-color-text-muted)}.w1m20gol{display:inline-block;position:relative}.i1ydf3w1{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);padding:var(--haze-space-2) var(--haze-space-3);line-height:var(--haze-leading-normal);cursor:pointer;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;display:block}.i1ydf3w1:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.d1flfxon{z-index:1000;margin-top:var(--haze-space-1);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-lg);background:var(--haze-color-bg);box-shadow:var(--haze-shadow-lg);position:absolute;top:100%;left:0}.hhbkpj1{display:none}.oxnde4s{border-radius:var(--haze-radius-xl);padding:var(--haze-space-6);background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);box-shadow:var(--haze-shadow-xl);border:none;width:100%;max-width:480px}.oxnde4s::backdrop{background:#0006}.oxnde4s:focus-visible{box-shadow:var(--haze-shadow-xl),0 0 0 3px var(--haze-color-focus-ring);outline:none}.d191itnz{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);overflow:hidden}.s1kaiz9e{-webkit-box-pack:justify;align-items:center;-ms-flex-pack:space-between;padding:var(--haze-space-3) var(--haze-space-4);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);color:var(--haze-color-text);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;list-style:none;transition:background .15s;display:flex}.s1kaiz9e:hover{background:var(--haze-color-bg-subtle)}.s1kaiz9e:focus-visible{box-shadow:inset 0 0 0 3px var(--haze-color-focus-ring);outline:none}.s1kaiz9e::marker{display:none}.s1kaiz9e::-webkit-details-marker{display:none}.s1kaiz9e:after{content:"";border-right:2px solid var(--haze-color-text-muted);border-bottom:2px solid var(--haze-color-text-muted);-webkit-transition:-webkit-transform .2s;flex-shrink:0;width:8px;height:8px;transition:transform .2s;transform:rotate(-45deg)}details[open]>.s1kaiz9e:after{transform:rotate(45deg)}.cz931n3{padding:var(--haze-space-3) var(--haze-space-4);border-top:1px solid var(--haze-color-border);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text-secondary);line-height:var(--haze-leading-normal)}.h17p0ep7{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}.t1nmk3to{justify-content:center;align-items:center;gap:var(--haze-space-2);padding:var(--haze-space-2) var(--haze-space-4);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);cursor:pointer;transition:background .15s,border-color .15s;display:inline-flex}.t1nmk3to:hover{border-color:var(--haze-color-border-hover);background:var(--haze-color-bg-subtle)}.t1nmk3to:focus-within{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.b9t8w6f{display:flex}.b1din3i3{color:currentColor;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.b1din3i3>svg{fill:currentColor;stroke:currentColor;width:100%;height:100%}.smrq8s4>svg{fill:none}.swqgfs4{width:16px;height:16px}.m1gcmjlm{width:20px;height:20px}.ly5zzma{width:24px;height:24px}.w184eiu0{display:block;position:relative;overflow:hidden}.ifikscv{width:100%;height:100%;display:block}.f1rrks2c{background:var(--haze-color-bg-muted);width:100%;height:100%;color:var(--haze-color-text-muted);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);justify-content:center;align-items:center;display:flex}.b18dr76j{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);line-height:var(--haze-leading-normal);transition:border-color .15s,box-shadow .15s;display:block}.b18dr76j:hover{border-color:var(--haze-color-border-hover)}.b18dr76j:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b18dr76j:disabled{opacity:.5;cursor:not-allowed}.b18dr76j::-webkit-input-placeholder{color:var(--haze-color-text-muted)}.b18dr76j::placeholder{color:var(--haze-color-text-muted)}.b18dr76j:-ms-placeholder-shown{color:var(--haze-color-text-muted)}.b18dr76j::placeholder{color:var(--haze-color-text-muted)}.s1lt2bv9{padding:var(--haze-space-1) var(--haze-space-2);font-size:var(--haze-text-sm)}.m1aucp4h{padding:var(--haze-space-2) var(--haze-space-3);font-size:var(--haze-text-sm)}.lxj3cju{padding:var(--haze-space-3) var(--haze-space-4);font-size:var(--haze-text-base)}.b6y76mu{font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);line-height:var(--haze-leading-normal);padding-left:var(--haze-space-5);margin:0}.u31hqp2{list-style-type:disc}.o1ubwy3d{list-style-type:decimal}.ngsxhlv{padding-left:0;list-style-type:none}.inunl6n{padding:var(--haze-space-1) 0}.czio6g9{display:inline-flex;position:relative}.p2k9teu{z-index:1000;margin-top:var(--haze-space-1);min-width:160px;padding:var(--haze-space-1) 0;border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-lg);background:var(--haze-color-bg);box-shadow:var(--haze-shadow-lg);position:absolute;top:100%;left:0}.hn79qla{display:none}.d1sgpkj8{height:1px;margin:var(--haze-space-1) 0;background:var(--haze-color-border)}.iuktz9j{width:100%;padding:var(--haze-space-2) var(--haze-space-3);color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;transition:background .1s;display:flex}.iuktz9j:hover{background:var(--haze-color-bg-subtle)}.iuktz9j:focus-visible{background:var(--haze-color-bg-subtle);box-shadow:inset 0 0 0 2px var(--haze-color-focus-ring);outline:none}.iuktz9j:disabled{opacity:.5;cursor:not-allowed}.wcynu9m{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);align-items:stretch;transition:border-color .15s,box-shadow .15s;display:inline-flex;overflow:hidden}.wcynu9m:focus-within{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.ii249dk{background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);text-align:center;-moz-appearance:textfield;border:none;outline:none;width:60px}.ii249dk::-webkit-inner-spin-button{appearance:none;margin:0}.ii249dk::-webkit-outer-spin-button{appearance:none;margin:0}.sbzqw1p{appearance:none;background:var(--haze-color-bg-subtle);color:var(--haze-color-text);cursor:pointer;font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;transition:background .1s;display:flex}.sbzqw1p:hover{background:var(--haze-color-bg-muted)}.sbzqw1p:active{background:var(--haze-color-border)}.sbzqw1p:disabled{opacity:.5;cursor:not-allowed}.s6lc5ic{padding:var(--haze-space-1);font-size:var(--haze-text-sm)}.m128ncgb{padding:var(--haze-space-2);font-size:var(--haze-text-sm)}.lb15a7r{padding:var(--haze-space-3);font-size:var(--haze-text-base)}.sib90v8{padding:0 var(--haze-space-2);font-size:var(--haze-text-sm)}.m1w4o2c9{padding:0 var(--haze-space-3);font-size:var(--haze-text-sm)}.lx2lopi{padding:0 var(--haze-space-3);font-size:var(--haze-text-base)}.cpz20zo{display:inline-flex;position:relative}.p1og1db{z-index:1000;margin-top:var(--haze-space-1);padding:var(--haze-space-3);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-lg);background:var(--haze-color-bg);color:var(--haze-color-text);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);box-shadow:var(--haze-shadow-lg);min-width:200px;position:absolute;top:100%;left:0}.h12vxtuf{display:none}.r1wb1f2i{appearance:none;border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-full);background:var(--haze-color-bg);cursor:pointer;flex-shrink:0;width:18px;height:18px;transition:background .15s,border-color .15s,box-shadow .15s;position:relative}.r1wb1f2i:hover{border-color:var(--haze-color-border-hover)}.r1wb1f2i:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.r1wb1f2i:checked{border-color:var(--haze-color-primary)}.r1wb1f2i:checked:after{content:"";border-radius:var(--haze-radius-full);background:var(--haze-color-primary);width:10px;height:10px;position:absolute;top:3px;left:3px}.r1wb1f2i:disabled{opacity:.5;cursor:not-allowed}.l1avex36{align-items:center;gap:var(--haze-space-2);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);cursor:pointer;display:inline-flex}.b1bmwkyg{gap:var(--haze-space-2);border:none;flex-direction:column;margin:0;padding:0;display:flex}.b1peearv{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);line-height:var(--haze-leading-normal);appearance:none;-webkit-background-position:right var(--haze-space-3) center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M2.22 4.47a.75.75 0 0 1 1.06 0L6 7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06L6.53 8.78a.75.75 0 0 1-1.06 0L2.22 5.53a.75.75 0 0 1 0-1.06z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--haze-space-3) center;padding-right:var(--haze-space-8);cursor:pointer;transition:border-color .15s,box-shadow .15s;display:block}.b1peearv:hover{border-color:var(--haze-color-border-hover)}.b1peearv:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b1peearv:disabled{opacity:.5;cursor:not-allowed}.sjwza0y{padding:var(--haze-space-1) var(--haze-space-2);font-size:var(--haze-text-sm)}.mzar2ws{padding:var(--haze-space-2) var(--haze-space-3);font-size:var(--haze-text-sm)}.lhyvvui{padding:var(--haze-space-3) var(--haze-space-4);font-size:var(--haze-text-base)}.bpjjm1p{background:var(--haze-color-bg-muted);animation:1.5s ease-in-out infinite shimmer-bpjjm1p;display:block}@keyframes shimmer-bpjjm1p{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.t1ji0c5a{border-radius:var(--haze-radius-sm);height:1em}.c15uxer9{border-radius:var(--haze-radius-full)}.rkzquqq{border-radius:var(--haze-radius-md)}.bfgou5l{appearance:none;border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);cursor:pointer;outline:none;width:100%;height:6px;transition:background .15s}.bfgou5l::-webkit-slider-thumb{appearance:none;border-radius:var(--haze-radius-full);background:var(--haze-color-primary);border:2px solid var(--haze-color-bg);width:18px;height:18px;box-shadow:var(--haze-shadow-sm);cursor:pointer;transition:background .15s,box-shadow .15s}.bfgou5l::-moz-range-thumb{border-radius:var(--haze-radius-full);background:var(--haze-color-primary);border:2px solid var(--haze-color-bg);width:18px;height:18px;box-shadow:var(--haze-shadow-sm);cursor:pointer}.bfgou5l:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.bfgou5l:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--haze-color-focus-ring)}.bfgou5l:disabled{opacity:.5;cursor:not-allowed}.t1js4uxc{border-radius:var(--haze-radius-full);background:var(--haze-color-bg-muted);cursor:pointer;border:none;align-items:center;padding:2px;transition:background .2s;display:inline-flex;position:relative}.t1js4uxc:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.t1js4uxc:disabled{opacity:.5;cursor:not-allowed}.t1qb79fu{background:var(--haze-color-primary)}.t1ixneoj{border-radius:var(--haze-radius-full);-webkit-transition:-webkit-transform .2s;box-shadow:var(--haze-shadow-sm);background:#fff;transition:transform .2s;display:block}.so54z1g{width:32px;height:18px}.m9yt5eh{width:40px;height:22px}.lh99aoz{width:48px;height:26px}.s3tnk0a{width:14px;height:14px}.mf3ptdg{width:18px;height:18px}.l11o9w2z{width:22px;height:22px}.sew2awa{transform:translate(14px)}.m1dvw2o9{transform:translate(18px)}.l19clm6f{transform:translate(22px)}.b9fntfg{border-collapse:collapse;width:100%;font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text)}.sy1ks6b tbody tr:nth-child(2n){background:var(--haze-color-bg-subtle)}.b45kaep th,.b45kaep td{border:1px solid var(--haze-color-border)}.b7tlpbs td{padding:var(--haze-space-2) var(--haze-space-3);border-bottom:1px solid var(--haze-color-border);color:var(--haze-color-text-secondary)}.h188mbkb{border-bottom:2px solid var(--haze-color-border)}.h188mbkb th{text-align:left;padding:var(--haze-space-2) var(--haze-space-3);font-weight:var(--haze-weight-semibold);color:var(--haze-color-text)}.bgf9674{padding:var(--haze-space-2) var(--haze-space-4);color:var(--haze-color-text-muted);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);font-weight:var(--haze-weight-medium);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;transition:color .15s,border-color .15s}.bgf9674:hover{color:var(--haze-color-text)}.bgf9674:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.a1prfgev{color:var(--haze-color-primary);border-bottom-color:var(--haze-color-primary)}.b1dqiroo{border-bottom:1px solid var(--haze-color-border);gap:0;display:flex}.bp1375a{padding:var(--haze-space-4) 0}.h1gs31v1{display:none}.b1cu6oqd{font-family:var(--haze-font-sans);flex-direction:column;display:flex}.b1t44wwy{align-items:center;gap:var(--haze-space-1);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-weight:var(--haze-weight-medium);line-height:var(--haze-leading-tight);white-space:nowrap;display:inline-flex}.d14l1xxm{background:var(--haze-color-bg-muted);color:var(--haze-color-text-secondary)}.py5mbql{background:var(--haze-color-primary-subtle);color:var(--haze-color-primary)}.s1rwhzzg{background:color-mix(in srgb, var(--haze-color-success) 15%, transparent);color:var(--haze-color-success)}.wgefhgi{background:color-mix(in srgb, var(--haze-color-warning) 15%, transparent);color:var(--haze-color-warning)}.d141dsor{background:color-mix(in srgb, var(--haze-color-danger) 15%, transparent);color:var(--haze-color-danger)}.sp149c6{padding:var(--haze-space-0) var(--haze-space-2);font-size:var(--haze-text-xs)}.m10vceca{padding:var(--haze-space-1) var(--haze-space-3);font-size:var(--haze-text-sm)}.ciauw5q{appearance:none;color:inherit;cursor:pointer;font-size:inherit;opacity:.6;background:0 0;border:none;align-items:center;padding:0;line-height:1;transition:opacity .15s;display:inline-flex}.ciauw5q:hover{opacity:1}.ciauw5q:focus-visible{box-shadow:0 0 0 3px var(--haze-color-focus-ring);border-radius:var(--haze-radius-sm);outline:none}.b1n6cdld{border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-md);background:var(--haze-color-bg);width:100%;color:var(--haze-color-text);font-family:var(--haze-font-sans);line-height:var(--haze-leading-normal);resize:vertical;transition:border-color .15s,box-shadow .15s;display:block}.b1n6cdld:hover{border-color:var(--haze-color-border-hover)}.b1n6cdld:focus{border-color:var(--haze-color-primary);box-shadow:0 0 0 3px var(--haze-color-focus-ring);outline:none}.b1n6cdld:disabled{opacity:.5;cursor:not-allowed}.b1n6cdld::-webkit-input-placeholder{color:var(--haze-color-text-muted)}.b1n6cdld::placeholder{color:var(--haze-color-text-muted)}.b1n6cdld:-ms-placeholder-shown{color:var(--haze-color-text-muted)}.b1n6cdld::placeholder{color:var(--haze-color-text-muted)}.svhqg3y{padding:var(--haze-space-1) var(--haze-space-2);font-size:var(--haze-text-sm)}.m1lnui41{padding:var(--haze-space-2) var(--haze-space-3);font-size:var(--haze-text-sm)}.l1ogff54{padding:var(--haze-space-3) var(--haze-space-4);font-size:var(--haze-text-base)}.blmvb4r{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:var(--haze-space-3);padding:var(--haze-space-3) var(--haze-space-4);border-radius:var(--haze-radius-md);font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);line-height:var(--haze-leading-normal);box-shadow:var(--haze-shadow-lg);pointer-events:auto;animation:.2s ease-out toastIn-blmvb4r;display:flex}@keyframes toastIn-blmvb4r{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.iy49nz2{background:var(--haze-color-bg);color:var(--haze-color-text);border:1px solid var(--haze-color-border)}.swaipoh{background:color-mix(in srgb, var(--haze-color-success) 10%, var(--haze-color-bg));color:var(--haze-color-success);border:1px solid color-mix(in srgb, var(--haze-color-success) 25%, transparent)}.wxi28ov{background:color-mix(in srgb, var(--haze-color-warning) 10%, var(--haze-color-bg));color:var(--haze-color-warning);border:1px solid color-mix(in srgb, var(--haze-color-warning) 25%, transparent)}.dl2596s{background:color-mix(in srgb, var(--haze-color-danger) 10%, var(--haze-color-bg));color:var(--haze-color-danger);border:1px solid color-mix(in srgb, var(--haze-color-danger) 25%, transparent)}.cyr6umc{flex:1}.c19whxes{appearance:none;color:inherit;cursor:pointer;font-size:var(--haze-text-lg);opacity:.6;background:0 0;border:none;padding:0;line-height:1;transition:opacity .15s}.c19whxes:hover{opacity:1}.czbjunm{bottom:var(--haze-space-4);right:var(--haze-space-4);z-index:9999;gap:var(--haze-space-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}.wojk2bk{display:inline-flex;position:relative}.b1pzhi26{z-index:1000;padding:var(--haze-space-1) var(--haze-space-2);border-radius:var(--haze-radius-md);background:var(--haze-color-text);color:var(--haze-color-text-inverse);font-family:var(--haze-font-sans);font-size:var(--haze-text-xs);line-height:var(--haze-leading-normal);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;position:absolute}.t1eufnsf{margin-bottom:var(--haze-space-1);bottom:100%;left:50%;transform:translate(-50%)}.b17ctpvp{margin-top:var(--haze-space-1);top:100%;left:50%;transform:translate(-50%)}.l1fci34k{margin-right:var(--haze-space-1);top:50%;right:100%;transform:translateY(-50%)}.rtkbbwq{margin-left:var(--haze-space-1);top:50%;left:100%;transform:translateY(-50%)}.s16ged4s:hover>[role=tooltip],.s16ged4s:focus-within>[role=tooltip]{opacity:1}.byqiwb1{font-family:var(--haze-font-sans);font-size:var(--haze-text-sm);color:var(--haze-color-text);overflow:auto}.i1rn21zx{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--haze-radius-sm);align-items:center;min-height:28px;padding:2px 0;transition:background .15s;display:flex}.i1rn21zx:hover{background:var(--haze-color-bg-subtle)}.i1rn21zx:focus-visible{box-shadow:inset 0 0 0 2px var(--haze-color-focus-ring);outline:none}.b15n7bsq{padding:var(--haze-space-1) var(--haze-space-2);margin:0 calc(-1 * var(--haze-space-1));border-radius:var(--haze-radius-sm)}.b15n7bsq:hover{background:var(--haze-color-bg-subtle)}.st8kw28{background:var(--haze-color-primary-subtle);color:var(--haze-color-primary);font-weight:var(--haze-weight-medium)}.dk6qa2p{opacity:.5;cursor:not-allowed;pointer-events:none}.s1puwz78{cursor:pointer;width:20px;height:20px;color:var(--haze-color-text-muted);-webkit-transition:-webkit-transform .2s;flex-shrink:0;justify-content:center;align-items:center;transition:transform .2s;display:inline-flex}.s1puwz78:hover{color:var(--haze-color-text)}.s1puwz78 svg{width:12px;height:12px}.ss5ce9u{transform:rotate(90deg)}.c181jvqa{width:16px;height:16px;margin-right:var(--haze-space-2);border:1px solid var(--haze-color-border);border-radius:var(--haze-radius-sm);background:var(--haze-color-bg);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.c181jvqa:hover{border-color:var(--haze-color-primary)}.c181jvqa svg{color:#fff;width:12px;height:12px}.c7s72cp,.c1fyhtnu{background:var(--haze-color-primary);border-color:var(--haze-color-primary)}.n1cauqet{width:16px;height:16px;margin-right:var(--haze-space-2);color:var(--haze-color-text-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.n1cauqet svg{width:16px;height:16px}.t1k02n76{font-size:var(--haze-text-sm);color:var(--haze-color-text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.l1xmbyic{animation:1s linear infinite spin-l1xmbyic;display:inline-flex}@keyframes spin-l1xmbyic{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.i1fswrkf{flex-shrink:0;width:24px;display:inline-block}.i1t8wtlt{border-left:1px solid var(--haze-color-border)}.l677mhi{--haze-color-primary:#06f;--haze-color-primary-hover:#0052cc;--haze-color-primary-active:#003d99;--haze-color-primary-subtle:#e6f0ff;--haze-color-bg:#fff;--haze-color-bg-subtle:#f7f8fa;--haze-color-bg-muted:#eef0f4;--haze-color-text:#1a1a1a;--haze-color-text-secondary:#4a4a4a;--haze-color-text-muted:#8a8a8a;--haze-color-text-inverse:#fff;--haze-color-border:#e0e0e0;--haze-color-border-hover:silver;--haze-color-success:#16a34a;--haze-color-warning:#f59e0b;--haze-color-danger:#dc2626;--haze-color-info:#2563eb;--haze-color-focus-ring:#06f6}.dves5ff{--haze-color-primary:#4d94ff;--haze-color-primary-hover:#6aa6ff;--haze-color-primary-active:#80b3ff;--haze-color-primary-subtle:#1a2e4a;--haze-color-bg:#121212;--haze-color-bg-subtle:#1e1e1e;--haze-color-bg-muted:#2a2a2a;--haze-color-text:#e8e8e8;--haze-color-text-secondary:#b0b0b0;--haze-color-text-muted:#707070;--haze-color-text-inverse:#1a1a1a;--haze-color-border:#333;--haze-color-border-hover:#4a4a4a;--haze-color-success:#22c55e;--haze-color-warning:#fbbf24;--haze-color-danger:#ef4444;--haze-color-info:#3b82f6;--haze-color-focus-ring:#4d94ff66}.s413e2t{--haze-space-0:0;--haze-space-1:4px;--haze-space-2:8px;--haze-space-3:12px;--haze-space-4:16px;--haze-space-5:20px;--haze-space-6:24px;--haze-space-8:32px;--haze-space-10:40px;--haze-space-12:48px;--haze-space-16:64px;--haze-radius-none:0;--haze-radius-sm:4px;--haze-radius-md:6px;--haze-radius-lg:8px;--haze-radius-xl:12px;--haze-radius-2xl:16px;--haze-radius-full:9999px;--haze-shadow-sm:0 1px 2px #0000000d;--haze-shadow-md:0 4px 6px #00000012;--haze-shadow-lg:0 10px 15px #0000001a;--haze-shadow-xl:0 20px 25px #0000001a}.tjcr6l1{--haze-font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--haze-font-mono:"SF Mono",SFMono-Regular,ui-monospace,"DejaVu Sans Mono",Menlo,Consolas,monospace;--haze-text-xs:12px;--haze-text-sm:14px;--haze-text-base:16px;--haze-text-lg:18px;--haze-text-xl:20px;--haze-text-2xl:24px;--haze-text-3xl:30px;--haze-leading-tight:1.25;--haze-leading-normal:1.5;--haze-leading-relaxed:1.75;--haze-weight-normal:400;--haze-weight-medium:500;--haze-weight-semibold:600;--haze-weight-bold:700}
2
2
  /*$vite$:1*/
package/dist/index.js CHANGED
@@ -52,5 +52,6 @@ import Q from "./components/Table/TableCell.js";
52
52
  import $ from "./components/Carousel/Carousel.js";
53
53
  import ee from "./components/Carousel/CarouselSlide.js";
54
54
  import te from "./components/Datepicker/Datepicker.js";
55
- import { useControl as ne } from "react-use-control";
56
- export { T as Accordion, E as AccordionItem, D as Alert, O as Avatar, f as Badge, P as Breadcrumb, F as BreadcrumbItem, o as Button, i as COMPONENT_TOKENS, g as Card, $ as Carousel, ee as CarouselSlide, u as Checkbox, q as Combobox, te as Datepicker, p as Dialog, I as Disclosure, V as FileInput, N as Flex, j as Icon, M as Image, s as Input, G as List, K as ListItem, L as Menu, z as MenuDivider, R as MenuItem, B as NumberInput, l as Option, h as Popover, _ as Radio, v as RadioGroup, c as Select, A as Skeleton, b as Slider, d as Switch, a as TOKEN_REGISTRY, C as Tab, S as TabList, w as TabPanel, J as Table, X as TableBody, Q as TableCell, Y as TableHead, Z as TableRow, x as Tabs, k as Tag, y as Textarea, H as Toast, U as ToastContainer, m as Tooltip, e as darkTheme, t as lightTheme, n as spacing, r as typography, ne as useControl, W as useToast };
55
+ import ne from "./components/Tree/Tree.js";
56
+ import { useControl as re } from "react-use-control";
57
+ export { T as Accordion, E as AccordionItem, D as Alert, O as Avatar, f as Badge, P as Breadcrumb, F as BreadcrumbItem, o as Button, i as COMPONENT_TOKENS, g as Card, $ as Carousel, ee as CarouselSlide, u as Checkbox, q as Combobox, te as Datepicker, p as Dialog, I as Disclosure, V as FileInput, N as Flex, j as Icon, M as Image, s as Input, G as List, K as ListItem, L as Menu, z as MenuDivider, R as MenuItem, B as NumberInput, l as Option, h as Popover, _ as Radio, v as RadioGroup, c as Select, A as Skeleton, b as Slider, d as Switch, a as TOKEN_REGISTRY, C as Tab, S as TabList, w as TabPanel, J as Table, X as TableBody, Q as TableCell, Y as TableHead, Z as TableRow, x as Tabs, k as Tag, y as Textarea, H as Toast, U as ToastContainer, m as Tooltip, ne as Tree, e as darkTheme, t as lightTheme, n as spacing, r as typography, re as useControl, W as useToast };
@@ -0,0 +1,3 @@
1
+ import type { TreeProps } from './types';
2
+ export default function Tree({ treeData, multiple, checkable, checkStrictly, selectable, disabled, blockNode, showLine, showIcon, switcherIcon, loadingIcon, titleRender, iconRender, expandedKeys: expandedKeysControl, selectedKeys: selectedKeysControl, checkedKeys: checkedKeysControl, className, onExpand, onSelect, onCheck, }: TreeProps): import("react/jsx-runtime").JSX.Element;
3
+ export type { TreeProps };
@@ -0,0 +1,26 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TreeNodeData } from './types';
3
+ type TreeItemProps = {
4
+ node: TreeNodeData;
5
+ level: number;
6
+ expanded: boolean;
7
+ selected: boolean;
8
+ checked: 'checked' | 'halfChecked' | 'unchecked';
9
+ disabled: boolean;
10
+ checkable: boolean;
11
+ selectable: boolean;
12
+ blockNode: boolean;
13
+ showLine: boolean;
14
+ showIcon: boolean;
15
+ switcherIcon?: ReactNode;
16
+ loadingIcon?: ReactNode;
17
+ loading: boolean;
18
+ titleRender?: (node: TreeNodeData) => ReactNode;
19
+ iconRender?: (node: TreeNodeData) => ReactNode;
20
+ isLast: boolean[];
21
+ onToggle: () => void;
22
+ onSelect: () => void;
23
+ onCheck: () => void;
24
+ };
25
+ export default function TreeItem({ node, level, expanded, selected, checked, disabled, checkable, selectable, blockNode, showLine, showIcon, switcherIcon, loadingIcon: loadingIconProp, loading, titleRender, iconRender, isLast, onToggle, onSelect, onCheck, }: TreeItemProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default as Tree } from './Tree';
2
+ export type { TreeProps, TreeNodeData } from './types';
@@ -0,0 +1,94 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { Control } from 'react-use-control';
3
+ /**
4
+ * Tree 节点数据接口
5
+ */
6
+ export type TreeNodeData = {
7
+ /** 节点唯一标识 */
8
+ key: string;
9
+ /** 节点标题 */
10
+ title: ReactNode;
11
+ /** 子节点 */
12
+ children?: TreeNodeData[];
13
+ /** 是否禁用 */
14
+ disabled?: boolean;
15
+ /** 是否可选中 */
16
+ selectable?: boolean;
17
+ /** 是否禁用复选框 */
18
+ disableCheckbox?: boolean;
19
+ /** 自定义图标 */
20
+ icon?: ReactNode;
21
+ /** 是否叶子节点 */
22
+ isLeaf?: boolean;
23
+ /** 自定义数据 */
24
+ [key: string]: unknown;
25
+ };
26
+ /**
27
+ * 展开/选择/复选状态
28
+ */
29
+ export type TreeState = {
30
+ expandedKeys: string[];
31
+ selectedKeys: string[];
32
+ checkedKeys: string[];
33
+ halfCheckedKeys: string[];
34
+ };
35
+ /**
36
+ * Tree 组件 Props
37
+ */
38
+ export type TreeProps = {
39
+ /** 树节点数据 */
40
+ treeData: TreeNodeData[];
41
+ /** 是否支持多选 */
42
+ multiple?: boolean;
43
+ /** 是否显示复选框 */
44
+ checkable?: boolean;
45
+ /** 是否完全受控复选(父子不关联) */
46
+ checkStrictly?: boolean;
47
+ /** 是否可选中 */
48
+ selectable?: boolean;
49
+ /** 是否禁用整棵树 */
50
+ disabled?: boolean;
51
+ /** 是否节点占据整行 */
52
+ blockNode?: boolean;
53
+ /** 是否显示连接线 */
54
+ showLine?: boolean;
55
+ /** 是否显示图标 */
56
+ showIcon?: boolean;
57
+ /** 自定义展开/折叠图标 */
58
+ switcherIcon?: ReactNode;
59
+ /** 自定义加载图标 */
60
+ loadingIcon?: ReactNode;
61
+ /** 自定义节点标题渲染 */
62
+ titleRender?: (node: TreeNodeData) => ReactNode;
63
+ /** 自定义节点图标渲染 */
64
+ iconRender?: (node: TreeNodeData) => ReactNode;
65
+ /** (受控)展开的节点 */
66
+ expandedKeys?: Control<string[]> | string[];
67
+ /** (受控)选中的节点 */
68
+ selectedKeys?: Control<string[]> | string[];
69
+ /** (受控)复选的节点 */
70
+ checkedKeys?: Control<string[]> | string[];
71
+ /** 自定义类名 */
72
+ className?: string;
73
+ /** 展开/收起回调 */
74
+ onExpand?: (expandedKeys: string[], info: {
75
+ expanded: boolean;
76
+ node: TreeNodeData;
77
+ }) => void;
78
+ /** 选中回调 */
79
+ onSelect?: (selectedKeys: string[], info: {
80
+ selected: boolean;
81
+ selectedNodes: TreeNodeData[];
82
+ node: TreeNodeData;
83
+ }) => void;
84
+ /** 复选回调 */
85
+ onCheck?: (checkedKeys: string[] | {
86
+ checked: string[];
87
+ halfChecked: string[];
88
+ }, info: {
89
+ checked: boolean;
90
+ checkedNodes: TreeNodeData[];
91
+ node: TreeNodeData;
92
+ halfCheckedKeys: string[];
93
+ }) => void;
94
+ };
@@ -0,0 +1,6 @@
1
+ import type { TreeNodeData } from './types';
2
+ export declare function flattenTreeData(data: TreeNodeData[]): TreeNodeData[];
3
+ export declare function findNodeByKey(data: TreeNodeData[], key: string): TreeNodeData | null;
4
+ export declare function getChildKeys(data: TreeNodeData[], parentKey: string): string[];
5
+ export declare function getParentKey(data: TreeNodeData[], targetKey: string, parentKey?: string): string | null;
6
+ export declare function getAllLeafKeys(data: TreeNodeData[]): string[];
@@ -30,9 +30,9 @@ export type { TextareaProps } from './components/Textarea';
30
30
  export { Slider } from './components/Slider';
31
31
  export type { SliderProps } from './components/Slider';
32
32
  export { Tabs, TabList, Tab, TabPanel } from './components/Tabs';
33
- export type { TabsProps, TabListProps, TabProps, TabPanelProps } from './components/Tabs';
33
+ export type { TabsProps, TabListProps, TabProps, TabPanelProps, } from './components/Tabs';
34
34
  export { Accordion, AccordionItem } from './components/Accordion';
35
- export type { AccordionProps, AccordionItemProps } from './components/Accordion';
35
+ export type { AccordionProps, AccordionItemProps, } from './components/Accordion';
36
36
  export { Alert } from './components/Alert';
37
37
  export type { AlertProps } from './components/Alert';
38
38
  export { Avatar } from './components/Avatar';
@@ -48,7 +48,7 @@ export type { ImageProps } from './components/Image';
48
48
  export { Flex } from './components/Flex';
49
49
  export type { FlexProps } from './components/Flex';
50
50
  export { Breadcrumb, BreadcrumbItem } from './components/Breadcrumb';
51
- export type { BreadcrumbProps, BreadcrumbItemProps } from './components/Breadcrumb';
51
+ export type { BreadcrumbProps, BreadcrumbItemProps, } from './components/Breadcrumb';
52
52
  export { Disclosure } from './components/Disclosure';
53
53
  export type { DisclosureProps } from './components/Disclosure';
54
54
  export { Menu, MenuItem, MenuDivider } from './components/Menu';
@@ -63,10 +63,12 @@ export { List, ListItem } from './components/List';
63
63
  export type { ListProps, ListItemProps } from './components/List';
64
64
  export { Combobox } from './components/Combobox';
65
65
  export type { ComboboxProps } from './components/Combobox';
66
- export { Table, TableHead, TableBody, TableRow, TableCell } from './components/Table';
67
- export type { TableProps, TableHeadProps, TableBodyProps, TableRowProps, TableCellProps } from './components/Table';
66
+ export { Table, TableHead, TableBody, TableRow, TableCell, } from './components/Table';
67
+ export type { TableProps, TableHeadProps, TableBodyProps, TableRowProps, TableCellProps, } from './components/Table';
68
68
  export { Carousel, CarouselSlide } from './components/Carousel';
69
69
  export type { CarouselProps, CarouselSlideProps } from './components/Carousel';
70
70
  export { Datepicker } from './components/Datepicker';
71
71
  export type { DatepickerProps } from './components/Datepicker';
72
+ export { Tree } from './components/Tree';
73
+ export type { TreeProps, TreeNodeData } from './components/Tree';
72
74
  export { useControl } from 'react-use-control';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haze-ui",
3
- "version": "1.4.2",
3
+ "version": "1.5.1",
4
4
  "type": "module",
5
5
  "description": "A React UI component library powered by react-use-control and Linaria",
6
6
  "main": "./dist/index.js",