@rinzai/zen 0.8.6 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animated-number/index.d.ts.map +1 -1
- package/dist/animated-number/index.js +19 -18
- package/dist/breadcrumbs/index.d.ts +15 -0
- package/dist/breadcrumbs/index.d.ts.map +1 -0
- package/dist/breadcrumbs/index.js +39 -0
- package/dist/card/index.d.ts +3 -1
- package/dist/card/index.d.ts.map +1 -1
- package/dist/card/index.js +3 -2
- package/dist/chart/donut.d.ts.map +1 -1
- package/dist/chart/donut.js +72 -70
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.js +154 -152
- package/dist/code-block/index.js +1 -1
- package/dist/code-input/index.d.ts +20 -0
- package/dist/code-input/index.d.ts.map +1 -0
- package/dist/code-input/index.js +44 -0
- package/dist/command-palette/index.d.ts +37 -0
- package/dist/command-palette/index.d.ts.map +1 -0
- package/dist/command-palette/index.js +120 -0
- package/dist/dialog/index.d.ts +9 -1
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +116 -32
- package/dist/empty-state/index.d.ts +14 -0
- package/dist/empty-state/index.d.ts.map +1 -0
- package/dist/empty-state/index.js +31 -0
- package/dist/file-drop/index.d.ts +18 -0
- package/dist/file-drop/index.d.ts.map +1 -0
- package/dist/file-drop/index.js +49 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib.js +75 -63
- package/dist/pagination/index.d.ts +26 -0
- package/dist/pagination/index.d.ts.map +1 -0
- package/dist/pagination/index.js +62 -0
- package/dist/skeleton/index.d.ts +12 -2
- package/dist/skeleton/index.d.ts.map +1 -1
- package/dist/skeleton/index.js +11 -5
- package/dist/sparkline/index.d.ts +15 -0
- package/dist/sparkline/index.d.ts.map +1 -0
- package/dist/sparkline/index.js +56 -0
- package/dist/stepper/index.d.ts +19 -0
- package/dist/stepper/index.d.ts.map +1 -0
- package/dist/stepper/index.js +53 -0
- package/dist/table/index.d.ts +6 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +78 -46
- package/dist/table-of-contents/index.d.ts +1 -0
- package/dist/table-of-contents/index.d.ts.map +1 -1
- package/dist/table-of-contents/index.js +25 -23
- package/dist/tag-input/index.d.ts +19 -0
- package/dist/tag-input/index.d.ts.map +1 -0
- package/dist/tag-input/index.js +61 -0
- package/dist/theme.css +159 -0
- package/dist/timeline/index.d.ts +18 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +45 -0
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +68 -67
- package/dist/utils/indicator.d.ts.map +1 -1
- package/dist/utils/indicator.js +1 -1
- package/dist/utils/motion.d.ts +3 -0
- package/dist/utils/motion.d.ts.map +1 -0
- package/dist/utils/motion.js +7 -0
- package/dist/utils/section-link.d.ts +9 -0
- package/dist/utils/section-link.d.ts.map +1 -0
- package/dist/utils/section-link.js +10 -0
- package/dist/utils/theme-wave.d.ts.map +1 -1
- package/dist/utils/theme-wave.js +72 -71
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +6 -1
- package/dist/utils/useSeen.d.ts +4 -0
- package/dist/utils/useSeen.d.ts.map +1 -0
- package/dist/utils/useSeen.js +17 -0
- package/dist/zen.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { useModal as t } from "../dialog/index.js";
|
|
4
|
+
import { useEffect as n, useId as r, useMemo as i, useRef as a, useState as o } from "react";
|
|
5
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
|
+
//#region packages/command-palette/index.tsx
|
|
7
|
+
function l({ open: l, onOpenChange: d, items: f, placeholder: p = "Search…", empty: m = "No results", label: h = "Commands", className: g }) {
|
|
8
|
+
let _ = a(null), v = a(null), y = a(null), b = r(), [x, S] = o(""), [C, w] = o(0);
|
|
9
|
+
t(_, l, v);
|
|
10
|
+
let [T, E] = o(l);
|
|
11
|
+
l !== T && (E(l), l && (S(""), w(0)));
|
|
12
|
+
let D = i(() => u(f, x), [f, x]), O = i(() => {
|
|
13
|
+
let e = /* @__PURE__ */ new Map();
|
|
14
|
+
return D.forEach((t, n) => {
|
|
15
|
+
let r = t.group ?? "";
|
|
16
|
+
e.set(r, [...e.get(r) ?? [], {
|
|
17
|
+
item: t,
|
|
18
|
+
index: n
|
|
19
|
+
}]);
|
|
20
|
+
}), e;
|
|
21
|
+
}, [D]), k = Math.min(C, D.length - 1);
|
|
22
|
+
n(() => {
|
|
23
|
+
y.current?.querySelector(`[data-index="${k}"]`)?.scrollIntoView({ block: "nearest" });
|
|
24
|
+
}, [k]);
|
|
25
|
+
let A = (e) => {
|
|
26
|
+
e && (d(!1), e.onSelect());
|
|
27
|
+
};
|
|
28
|
+
return /* @__PURE__ */ c("dialog", {
|
|
29
|
+
ref: _,
|
|
30
|
+
"aria-label": h,
|
|
31
|
+
className: e("zen__dialog zen__command-palette glass glass-blur glow-edge text-card-foreground bg-card/90! overflow-hidden p-0", "mx-auto mt-[12dvh] mb-auto w-[36rem] max-w-[calc(100vw-2rem)] rounded-xl", "backdrop:bg-[color:var(--backdrop-scrim,oklch(0_0_0/0.5))] backdrop:backdrop-blur-sm pointer-coarse:backdrop:backdrop-blur-none", g),
|
|
32
|
+
onCancel: (e) => {
|
|
33
|
+
e.preventDefault(), d(!1);
|
|
34
|
+
},
|
|
35
|
+
onClick: (e) => e.target === e.currentTarget && d(!1),
|
|
36
|
+
children: [/* @__PURE__ */ s("input", {
|
|
37
|
+
ref: v,
|
|
38
|
+
role: "combobox",
|
|
39
|
+
"aria-expanded": !0,
|
|
40
|
+
"aria-controls": `${b}-list`,
|
|
41
|
+
"aria-activedescendant": D.length ? `${b}-${k}` : void 0,
|
|
42
|
+
"aria-autocomplete": "list",
|
|
43
|
+
"aria-label": h,
|
|
44
|
+
placeholder: p,
|
|
45
|
+
value: x,
|
|
46
|
+
onChange: (e) => {
|
|
47
|
+
S(e.target.value), w(0);
|
|
48
|
+
},
|
|
49
|
+
onKeyDown: (e) => {
|
|
50
|
+
let t = D.length - 1, n = e.key === "ArrowDown" ? (k + 1) % (t + 1) : e.key === "ArrowUp" ? (k - 1 + t + 1) % (t + 1) : e.key === "Home" && e.ctrlKey ? 0 : e.key === "End" && e.ctrlKey ? t : null;
|
|
51
|
+
n !== null && D.length ? (e.preventDefault(), w(n)) : e.key === "Enter" && (e.preventDefault(), A(D[k]));
|
|
52
|
+
},
|
|
53
|
+
className: "border-tint/[0.07] h-14 w-full border-b bg-transparent px-5 text-base outline-hidden placeholder:text-[color:oklch(var(--muted-foreground)/var(--zen-placeholder))]"
|
|
54
|
+
}), /* @__PURE__ */ c("div", {
|
|
55
|
+
ref: y,
|
|
56
|
+
id: `${b}-list`,
|
|
57
|
+
role: "listbox",
|
|
58
|
+
"aria-label": h,
|
|
59
|
+
className: "max-h-[min(24rem,60dvh)] overflow-y-auto p-2",
|
|
60
|
+
children: [!D.length && /* @__PURE__ */ s("p", {
|
|
61
|
+
className: "text-muted-foreground my-0! px-3 py-8 text-center text-sm",
|
|
62
|
+
children: m
|
|
63
|
+
}), [...O].map(([e, t]) => /* @__PURE__ */ c("div", {
|
|
64
|
+
role: "group",
|
|
65
|
+
"aria-label": e || void 0,
|
|
66
|
+
className: "not-first:mt-2",
|
|
67
|
+
children: [e && /* @__PURE__ */ s("div", {
|
|
68
|
+
"aria-hidden": !0,
|
|
69
|
+
className: "text-muted-foreground text-2xs px-3 pt-2 pb-1 tracking-widest uppercase",
|
|
70
|
+
children: e
|
|
71
|
+
}), t.map(({ item: e, index: t }) => /* @__PURE__ */ c("div", {
|
|
72
|
+
id: `${b}-${t}`,
|
|
73
|
+
"data-index": t,
|
|
74
|
+
role: "option",
|
|
75
|
+
"aria-selected": t === k,
|
|
76
|
+
onPointerMove: () => t !== k && w(t),
|
|
77
|
+
onClick: () => A(e),
|
|
78
|
+
className: "text-muted-foreground aria-selected:bg-primary/15 aria-selected:text-foreground flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2.5 text-sm aria-selected:shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.25)] [&_svg]:size-4 [&_svg]:shrink-0",
|
|
79
|
+
children: [
|
|
80
|
+
e.icon,
|
|
81
|
+
/* @__PURE__ */ s("span", {
|
|
82
|
+
className: "min-w-0 flex-1 truncate",
|
|
83
|
+
children: e.label
|
|
84
|
+
}),
|
|
85
|
+
e.hint && /* @__PURE__ */ s("span", {
|
|
86
|
+
className: "text-muted-foreground text-xs",
|
|
87
|
+
children: e.hint
|
|
88
|
+
})
|
|
89
|
+
]
|
|
90
|
+
}, e.id ?? e.label))]
|
|
91
|
+
}, e))]
|
|
92
|
+
})]
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function u(e, t) {
|
|
96
|
+
let n = t.toLowerCase().split(/\s+/).filter(Boolean);
|
|
97
|
+
if (!n.length) return e;
|
|
98
|
+
let r = t.trim().toLowerCase(), i = e.filter((e) => {
|
|
99
|
+
let t = [
|
|
100
|
+
e.label,
|
|
101
|
+
...e.keywords ?? [],
|
|
102
|
+
e.group ?? ""
|
|
103
|
+
].join(" ").toLowerCase();
|
|
104
|
+
return n.every((e) => t.includes(e));
|
|
105
|
+
}), a = (e) => +!e.label.toLowerCase().startsWith(r);
|
|
106
|
+
return i.sort((e, t) => a(e) - a(t));
|
|
107
|
+
}
|
|
108
|
+
function d(e, t = "k") {
|
|
109
|
+
let r = a(e);
|
|
110
|
+
n(() => {
|
|
111
|
+
r.current = e;
|
|
112
|
+
}), n(() => {
|
|
113
|
+
let e = (e) => {
|
|
114
|
+
e.key.toLowerCase() !== t || !(e.metaKey || e.ctrlKey) || e.altKey || e.shiftKey || (e.preventDefault(), r.current());
|
|
115
|
+
};
|
|
116
|
+
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
117
|
+
}, [t]);
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
export { l as default, u as search, d as useCommandPaletteShortcut };
|
package/dist/dialog/index.d.ts
CHANGED
|
@@ -5,9 +5,17 @@ import { ComponentProps, ReactNode, RefObject } from 'react';
|
|
|
5
5
|
* the page behind is inert, and Escape closes it. `dismissible={false}` is for
|
|
6
6
|
* flows the user must finish (no Escape or outside-click close). With `side`,
|
|
7
7
|
* it's a sheet that slides in from that edge: a bottom sheet on phones, a side
|
|
8
|
-
* panel for filters or details.
|
|
8
|
+
* panel for filters or details. On touch, a sheet swipes back to its edge to close.
|
|
9
9
|
*/
|
|
10
10
|
export default function Dialog({ open, onOpenChange, title, description, children, dismissible, initialFocus, size, side, className, role, }: DialogProps): import('react').JSX.Element;
|
|
11
|
+
/**
|
|
12
|
+
* Opens and closes a <dialog> as a modal with `open`: focus moves in (to
|
|
13
|
+
* `initialFocus` if given) and back after, the page behind is inert and
|
|
14
|
+
* doesn't scroll, and toasts show inside it while it's open. For your own
|
|
15
|
+
* modal on a <dialog> (Dialog and CommandPalette use it); give the element
|
|
16
|
+
* the zen__dialog class for the open and close animation.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useModal(ref: RefObject<HTMLDialogElement | null>, open: boolean, initialFocus?: RefObject<HTMLElement | null>): void;
|
|
11
19
|
/** The row of actions at the end of a dialog, right-aligned. */
|
|
12
20
|
export declare function DialogFooter({ className, ...rest }: ComponentProps<'div'>): import('react').JSX.Element;
|
|
13
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/dialog/index.tsx"],"names":[],"mappings":"AACA,OAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EACH,cAAc,EAGd,SAAS,EACT,SAAS,EAKZ,MAAM,OAAO,CAAC;AAKf;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAkB,EAClB,YAAY,EACZ,IAAW,EACX,IAAI,EACJ,SAAS,EACT,IAAI,GACP,EAAE,WAAW,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/dialog/index.tsx"],"names":[],"mappings":"AACA,OAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EACH,cAAc,EAGd,SAAS,EACT,SAAS,EAKZ,MAAM,OAAO,CAAC;AAKf;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAkB,EAClB,YAAY,EACZ,IAAW,EACX,IAAI,EACJ,SAAS,EACT,IAAI,GACP,EAAE,WAAW,+BAyDb;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACpB,GAAG,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,EACxC,IAAI,EAAE,OAAO,EACb,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAC7C,IAAI,CA4BN;AA0ID,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,+BAEzE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,+BAW5D;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,sEAAsE;IACtE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3C"}
|
package/dist/dialog/index.js
CHANGED
|
@@ -7,64 +7,148 @@ import { createContext as i, useContext as a, useEffect as o, useId as s, useRef
|
|
|
7
7
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
8
|
//#region packages/dialog/index.tsx
|
|
9
9
|
var d = i(() => {});
|
|
10
|
-
function f({ open:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} else !n && e.open && e.close();
|
|
20
|
-
}
|
|
21
|
-
}, [n, h]), r(b, n), /* @__PURE__ */ l("dialog", {
|
|
22
|
-
ref: b,
|
|
23
|
-
role: y,
|
|
24
|
-
"aria-labelledby": x,
|
|
25
|
-
"aria-describedby": f ? S : void 0,
|
|
26
|
-
"data-side": _,
|
|
27
|
-
className: e("zen__dialog glass glass-blur glow-edge text-card-foreground bg-card/90! overflow-visible p-0", !_ && "m-auto max-h-[calc(100dvh-2rem)] max-w-[calc(100vw-2rem)] rounded-xl", !_ && (g === "lg" ? "w-[60rem]" : "w-[28rem]"), _ === "bottom" && "mx-auto mt-auto mb-0 max-h-[85dvh] w-full max-w-2xl rounded-t-2xl", (_ === "left" || _ === "right") && "my-0 h-dvh max-h-dvh w-[24rem] max-w-[calc(100vw-2.5rem)]", _ === "right" && "mr-0 ml-auto rounded-l-2xl", _ === "left" && "mr-auto ml-0 rounded-r-2xl", "backdrop:bg-[color:var(--backdrop-scrim,oklch(0_0_0/0.5))] backdrop:backdrop-blur-sm pointer-coarse:backdrop:backdrop-blur-none", v),
|
|
10
|
+
function f({ open: t, onOpenChange: n, title: r, description: i, children: a, dismissible: o = !0, initialFocus: f, size: m = "md", side: h, className: g, role: _ }) {
|
|
11
|
+
let y = c(null), b = s(), x = s();
|
|
12
|
+
return v(y, o && t ? h : void 0, () => n?.(!1)), p(y, t, f), /* @__PURE__ */ l("dialog", {
|
|
13
|
+
ref: y,
|
|
14
|
+
role: _,
|
|
15
|
+
"aria-labelledby": b,
|
|
16
|
+
"aria-describedby": i ? x : void 0,
|
|
17
|
+
"data-side": h,
|
|
18
|
+
className: e("zen__dialog glass glass-blur glow-edge text-card-foreground bg-card/90! overflow-visible p-0", !h && "m-auto max-h-[calc(100dvh-2rem)] max-w-[calc(100vw-2rem)] rounded-xl", !h && (m === "lg" ? "w-[60rem]" : "w-[28rem]"), h === "bottom" && "mx-auto mt-auto mb-0 max-h-[85dvh] w-full max-w-2xl rounded-t-2xl", (h === "left" || h === "right") && "my-0 h-dvh max-h-dvh w-[24rem] max-w-[calc(100vw-2.5rem)]", h === "right" && "mr-0 ml-auto rounded-l-2xl", h === "left" && "mr-auto ml-0 rounded-r-2xl", "backdrop:bg-[color:var(--backdrop-scrim,oklch(0_0_0/0.5))] backdrop:backdrop-blur-sm pointer-coarse:backdrop:backdrop-blur-none", g),
|
|
28
19
|
onCancel: (e) => {
|
|
29
|
-
e.preventDefault(),
|
|
20
|
+
e.preventDefault(), o && n?.(!1);
|
|
30
21
|
},
|
|
31
22
|
onClick: (e) => {
|
|
32
|
-
e.target === e.currentTarget &&
|
|
23
|
+
e.target === e.currentTarget && o && n?.(!1);
|
|
33
24
|
},
|
|
34
25
|
children: /* @__PURE__ */ u("div", {
|
|
35
|
-
className: e("flex flex-col gap-4 overflow-x-hidden overflow-y-auto p-6",
|
|
26
|
+
className: e("flex flex-col gap-4 overflow-x-hidden overflow-y-auto p-6", h ? h === "bottom" ? "max-h-[85dvh] pt-3" : "h-full" : "max-h-[calc(100dvh-2rem)]"),
|
|
36
27
|
children: [
|
|
37
|
-
|
|
28
|
+
h === "bottom" && /* @__PURE__ */ l("div", {
|
|
38
29
|
"aria-hidden": !0,
|
|
39
30
|
className: "bg-tint/20 mx-auto h-1 w-10 shrink-0 rounded-full"
|
|
40
31
|
}),
|
|
41
32
|
/* @__PURE__ */ u("div", {
|
|
42
33
|
className: "flex flex-col gap-2",
|
|
43
34
|
children: [/* @__PURE__ */ l("h2", {
|
|
44
|
-
id:
|
|
35
|
+
id: b,
|
|
45
36
|
className: "text-lg font-semibold tracking-tight text-balance",
|
|
46
|
-
children:
|
|
47
|
-
}),
|
|
48
|
-
id:
|
|
37
|
+
children: r
|
|
38
|
+
}), i && /* @__PURE__ */ l("p", {
|
|
39
|
+
id: x,
|
|
49
40
|
className: "text-muted-foreground mt-0! text-sm leading-5",
|
|
50
|
-
children:
|
|
41
|
+
children: i
|
|
51
42
|
})]
|
|
52
43
|
}),
|
|
53
44
|
/* @__PURE__ */ l(d.Provider, {
|
|
54
|
-
value: () =>
|
|
55
|
-
children:
|
|
45
|
+
value: () => n?.(!1),
|
|
46
|
+
children: a
|
|
56
47
|
})
|
|
57
48
|
]
|
|
58
49
|
})
|
|
59
50
|
});
|
|
60
51
|
}
|
|
61
|
-
function p(
|
|
52
|
+
function p(e, n, i) {
|
|
53
|
+
t(), o(() => {
|
|
54
|
+
let t = e.current;
|
|
55
|
+
if (t) {
|
|
56
|
+
if (n && !t.open) {
|
|
57
|
+
let e = document.documentElement;
|
|
58
|
+
e.toggleAttribute("data-zen-scrollbar", window.innerWidth > e.clientWidth);
|
|
59
|
+
let n = document.activeElement === document.body ? null : document.activeElement?.getBoundingClientRect(), r = !!n && !t.dataset.side;
|
|
60
|
+
if (t.toggleAttribute("data-zen-from", r), t.showModal(), r) {
|
|
61
|
+
let e = n.left + n.width / 2 - t.offsetLeft, r = n.top + n.height / 2 - t.offsetTop;
|
|
62
|
+
t.style.transformOrigin = `${Math.round(e)}px ${Math.round(r)}px`;
|
|
63
|
+
}
|
|
64
|
+
i?.current?.focus();
|
|
65
|
+
} else !n && t.open && t.close();
|
|
66
|
+
}
|
|
67
|
+
}, [
|
|
68
|
+
e,
|
|
69
|
+
n,
|
|
70
|
+
i
|
|
71
|
+
]), r(e, n);
|
|
72
|
+
}
|
|
73
|
+
var m = .3, h = .5, g = 100, _ = 8;
|
|
74
|
+
function v(e, t, n) {
|
|
75
|
+
let r = c(n);
|
|
76
|
+
o(() => {
|
|
77
|
+
r.current = n;
|
|
78
|
+
}), o(() => {
|
|
79
|
+
let n = e.current;
|
|
80
|
+
if (!n || (n.style.removeProperty("--zen-swipe"), n.style.removeProperty("--zen-swipe-progress"), !t)) return;
|
|
81
|
+
let i = t === "bottom" ? "y" : "x", a = t === "left" ? -1 : 1, o = null, s = !1, c = () => i === "y" ? n.offsetHeight : n.offsetWidth, l = (e) => (i === "y" ? e.clientY - o.y : e.clientX - o.x) * a, u = (e) => i === "y" ? e.clientX - o.x : e.clientY - o.y, d = (e) => {
|
|
82
|
+
let t = e > 0 ? e : e / 6;
|
|
83
|
+
n.style.setProperty("--zen-swipe", i === "y" ? `0 ${t}px` : `${t * a}px 0`), n.style.setProperty("--zen-swipe-progress", String(Math.max(0, Math.min(1, e / c()))));
|
|
84
|
+
}, f = (e) => {
|
|
85
|
+
let t = o?.on;
|
|
86
|
+
if (o = null, t) {
|
|
87
|
+
if (delete n.dataset.swiping, s = !0, e) return r.current();
|
|
88
|
+
n.style.removeProperty("--zen-swipe"), n.style.removeProperty("--zen-swipe-progress");
|
|
89
|
+
}
|
|
90
|
+
}, p = (e) => {
|
|
91
|
+
if (s = !1, e.pointerType === "touch") {
|
|
92
|
+
if (!e.isPrimary) return f(!1);
|
|
93
|
+
y(e.target, n, i) || (o = {
|
|
94
|
+
id: e.pointerId,
|
|
95
|
+
x: e.clientX,
|
|
96
|
+
y: e.clientY,
|
|
97
|
+
points: [[e.timeStamp, 0]],
|
|
98
|
+
on: !1
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}, v = (e) => {
|
|
102
|
+
if (!o || e.pointerId !== o.id) return;
|
|
103
|
+
let t = l(e);
|
|
104
|
+
if (!o.on) {
|
|
105
|
+
if (Math.hypot(t, u(e)) < _) return;
|
|
106
|
+
if (t <= 0 || Math.abs(u(e)) * 1.5 > t || b(e.target, n, i, a)) {
|
|
107
|
+
o = null;
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
o.on = !0, n.dataset.swiping = "", n.setPointerCapture?.(e.pointerId);
|
|
111
|
+
}
|
|
112
|
+
o.points = [...o.points.filter(([t]) => e.timeStamp - t < g), [e.timeStamp, t]], d(t);
|
|
113
|
+
}, x = (e) => {
|
|
114
|
+
if (!o || e.pointerId !== o.id) return;
|
|
115
|
+
let t = l(e), [n, r] = o.points.find(([t]) => e.timeStamp - t < g) ?? [e.timeStamp, t], i = (t - r) / Math.max(1, e.timeStamp - n);
|
|
116
|
+
f(e.type === "pointerup" && (t > c() * m || t > 0 && i > h));
|
|
117
|
+
}, S = (e) => {
|
|
118
|
+
o?.on && e.preventDefault();
|
|
119
|
+
}, C = (e) => {
|
|
120
|
+
s && (s = !1, e.stopPropagation(), e.preventDefault());
|
|
121
|
+
};
|
|
122
|
+
return n.addEventListener("pointerdown", p), n.addEventListener("pointermove", v), n.addEventListener("pointerup", x), n.addEventListener("pointercancel", x), n.addEventListener("touchmove", S, { passive: !1 }), n.addEventListener("click", C, !0), () => {
|
|
123
|
+
n.removeEventListener("pointerdown", p), n.removeEventListener("pointermove", v), n.removeEventListener("pointerup", x), n.removeEventListener("pointercancel", x), n.removeEventListener("touchmove", S), n.removeEventListener("click", C, !0), delete n.dataset.swiping;
|
|
124
|
+
};
|
|
125
|
+
}, [e, t]);
|
|
126
|
+
}
|
|
127
|
+
function y(e, t, n) {
|
|
128
|
+
if (e.closest("input, textarea, select, [contenteditable]:not([contenteditable=\"false\"])")) return !0;
|
|
129
|
+
let r = n === "y" ? /pan-(y|up|down)/ : /pan-(x|left|right)/;
|
|
130
|
+
for (let n = e; n && n !== t; n = n.parentElement) {
|
|
131
|
+
let e = getComputedStyle(n).touchAction;
|
|
132
|
+
if (e && e !== "auto" && e !== "manipulation" && !r.test(e)) return !0;
|
|
133
|
+
}
|
|
134
|
+
return !1;
|
|
135
|
+
}
|
|
136
|
+
function b(e, t, n, r) {
|
|
137
|
+
for (let i = e; i; i = i === t ? null : i.parentElement) {
|
|
138
|
+
let e = getComputedStyle(i);
|
|
139
|
+
if (!/auto|scroll/.test(n === "y" ? e.overflowY : e.overflowX)) continue;
|
|
140
|
+
let t = n === "y" ? i.scrollTop : i.scrollLeft, a = n === "y" ? i.scrollHeight - i.clientHeight : i.scrollWidth - i.clientWidth;
|
|
141
|
+
if (!(a <= 0) && (r > 0 ? t > 0 : t < a - 1)) return !0;
|
|
142
|
+
}
|
|
143
|
+
return !1;
|
|
144
|
+
}
|
|
145
|
+
function x({ className: t, ...n }) {
|
|
62
146
|
return /* @__PURE__ */ l("div", {
|
|
63
147
|
className: e("flex justify-end gap-2", t),
|
|
64
148
|
...n
|
|
65
149
|
});
|
|
66
150
|
}
|
|
67
|
-
function
|
|
151
|
+
function S({ onClick: e, ...t }) {
|
|
68
152
|
let r = a(d);
|
|
69
153
|
return /* @__PURE__ */ l(n, {
|
|
70
154
|
...t,
|
|
@@ -74,4 +158,4 @@ function m({ onClick: e, ...t }) {
|
|
|
74
158
|
});
|
|
75
159
|
}
|
|
76
160
|
//#endregion
|
|
77
|
-
export {
|
|
161
|
+
export { S as DialogClose, x as DialogFooter, f as default, p as useModal };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* What a list, table or page shows when there's nothing in it yet: an icon on
|
|
4
|
+
* a soft glow, a title, a line on what to do, and the action that does it
|
|
5
|
+
* (children, e.g. a Button).
|
|
6
|
+
*/
|
|
7
|
+
export default function EmptyState({ icon, title, description, className, children, ...rest }: EmptyStateProps): import('react').JSX.Element;
|
|
8
|
+
export interface EmptyStateProps extends Omit<ComponentProps<'div'>, 'title'> {
|
|
9
|
+
/** An icon, shown on the accent's glow. */
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
title: ReactNode;
|
|
12
|
+
description?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/empty-state/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,+BAqB7G;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzE,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;CAC3B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
//#region packages/empty-state/index.tsx
|
|
5
|
+
function r({ icon: r, title: i, description: a, className: o, children: s, ...c }) {
|
|
6
|
+
return /* @__PURE__ */ n("div", {
|
|
7
|
+
className: e("zen__empty-state flex flex-col items-center gap-3 px-6 py-10 text-center", o),
|
|
8
|
+
...c,
|
|
9
|
+
children: [
|
|
10
|
+
r && /* @__PURE__ */ t("div", {
|
|
11
|
+
"aria-hidden": !0,
|
|
12
|
+
className: "text-primary bg-primary/10 mb-1 grid size-12 place-items-center rounded-2xl shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.25),0_0_32px_-6px_oklch(var(--glow)/calc(0.6*var(--glow-k)))] [&_svg]:size-6",
|
|
13
|
+
children: r
|
|
14
|
+
}),
|
|
15
|
+
/* @__PURE__ */ t("p", {
|
|
16
|
+
className: "text-foreground mt-0! text-base font-semibold tracking-tight text-balance",
|
|
17
|
+
children: i
|
|
18
|
+
}),
|
|
19
|
+
a && /* @__PURE__ */ t("p", {
|
|
20
|
+
className: "text-muted-foreground mt-0! max-w-sm text-sm leading-6 text-balance",
|
|
21
|
+
children: a
|
|
22
|
+
}),
|
|
23
|
+
s && /* @__PURE__ */ t("div", {
|
|
24
|
+
className: "mt-2 flex flex-wrap justify-center gap-2",
|
|
25
|
+
children: s
|
|
26
|
+
})
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { r as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Somewhere to drop files, or click (or press Enter) to choose them: it lights
|
|
4
|
+
* up while files are dragged over it. `onFiles` gets those that `accept` allows
|
|
5
|
+
* (one, unless `multiple`). Children are what it says, e.g. "Drop a CSV here".
|
|
6
|
+
*/
|
|
7
|
+
export default function FileDrop({ onFiles, accept, multiple, disabled, className, children, ...rest }: FileDropProps): import('react').JSX.Element;
|
|
8
|
+
/** Whether `file` is one an <input accept> value allows: extensions (.csv), types (text/csv) and wildcards (image/*). */
|
|
9
|
+
export declare function accepts(file: File, accept?: string): boolean;
|
|
10
|
+
export interface FileDropProps extends Omit<ComponentProps<'label'>, 'onDrop'> {
|
|
11
|
+
onFiles: (files: File[]) => void;
|
|
12
|
+
/** As an <input type="file">'s accept: ".csv,.xlsx", "image/*". Dropped files are held to it too. */
|
|
13
|
+
accept?: string;
|
|
14
|
+
multiple?: boolean;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/file-drop/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAa,SAAS,EAAoB,MAAM,OAAO,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,QAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,aAAa,+BAiEf;AAED,yHAAyH;AACzH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAU5D;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACjC,qGAAqG;IACrG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { useRef as t, useState as n } from "react";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
+
//#region packages/file-drop/index.tsx
|
|
6
|
+
function a({ onFiles: a, accept: s, multiple: c = !1, disabled: l = !1, className: u, children: d, ...f }) {
|
|
7
|
+
let p = t(null), [m, h] = n(!1), g = t(0), _ = (e) => {
|
|
8
|
+
let t = e.filter((e) => o(e, s)).slice(0, c ? void 0 : 1);
|
|
9
|
+
t.length && a(t);
|
|
10
|
+
}, v = (e) => !l && e.dataTransfer.types.includes("Files");
|
|
11
|
+
return /* @__PURE__ */ i("label", {
|
|
12
|
+
...f,
|
|
13
|
+
"data-over": m || void 0,
|
|
14
|
+
onDragEnter: (e) => {
|
|
15
|
+
v(e) && (e.preventDefault(), g.current++, h(!0));
|
|
16
|
+
},
|
|
17
|
+
onDragOver: (e) => {
|
|
18
|
+
v(e) && (e.preventDefault(), e.dataTransfer.dropEffect = "copy");
|
|
19
|
+
},
|
|
20
|
+
onDragLeave: () => {
|
|
21
|
+
--g.current <= 0 && (g.current = 0, h(!1));
|
|
22
|
+
},
|
|
23
|
+
onDrop: (e) => {
|
|
24
|
+
v(e) && (e.preventDefault(), g.current = 0, h(!1), _([...e.dataTransfer.files]));
|
|
25
|
+
},
|
|
26
|
+
className: e("zen__file-drop glow-edge text-muted-foreground relative flex cursor-pointer flex-col items-center justify-center gap-2 rounded-xl border border-dashed p-8 text-center text-sm", "border-tint/15 bg-tint/[0.02] transition-[border-color,background-color,box-shadow,color] duration-200", "hover:border-tint/25 hover:text-foreground has-[input:focus-visible]:border-glow/60 has-[input:focus-visible]:shadow-glow-focus", "data-over:border-primary/60 data-over:bg-primary/10 data-over:text-foreground data-over:shadow-[0_0_32px_-8px_oklch(var(--glow)/calc(0.8*var(--glow-k)))]", l && "pointer-events-none opacity-50", u),
|
|
27
|
+
children: [/* @__PURE__ */ r("input", {
|
|
28
|
+
ref: p,
|
|
29
|
+
type: "file",
|
|
30
|
+
accept: s,
|
|
31
|
+
multiple: c,
|
|
32
|
+
disabled: l,
|
|
33
|
+
className: "sr-only",
|
|
34
|
+
onChange: (e) => {
|
|
35
|
+
_([...e.target.files ?? []]), e.target.value = "";
|
|
36
|
+
}
|
|
37
|
+
}), d]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function o(e, t) {
|
|
41
|
+
if (!t) return !0;
|
|
42
|
+
let n = e.name.toLowerCase(), r = e.type.toLowerCase();
|
|
43
|
+
return t.split(",").some((e) => {
|
|
44
|
+
let t = e.trim().toLowerCase();
|
|
45
|
+
return t.startsWith(".") ? n.endsWith(t) : t.endsWith("/*") ? r.startsWith(t.slice(0, -1)) : r === t;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { o as accepts, a as default };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { default as Chip, type ChipProps } from './chip';
|
|
|
11
11
|
export { default as Collapse } from './collapse';
|
|
12
12
|
export { default as Combobox, ComboboxCreate, ComboboxEmpty, ComboboxItem, ComboboxList, ComboboxPopup, type ComboboxProps, ComboboxSearch, ComboboxTrigger, } from './combobox';
|
|
13
13
|
export { default as ConfirmDialog } from './confirm-dialog';
|
|
14
|
-
export { default as Dialog, DialogClose, DialogFooter, type DialogProps } from './dialog';
|
|
14
|
+
export { default as Dialog, DialogClose, DialogFooter, type DialogProps, useModal } from './dialog';
|
|
15
15
|
export { default as EditableCell, type EditableCellProps } from './editable-cell';
|
|
16
16
|
export { default as Disclosure, DisclosureContent, type DisclosureProps, DisclosureTrigger } from './disclosure';
|
|
17
17
|
export { default as Field, type FieldControl, type FieldProps, FormMessage, type FormMessageProps, useField, useFieldProps, } from './field';
|
|
@@ -54,6 +54,8 @@ export { cva, type VariantProps } from './utils/cva';
|
|
|
54
54
|
export { cx } from './utils/cx';
|
|
55
55
|
export { type Appearance, applyPreset, applyTheme, contrastRatio, customize, DEFAULT_THEME, type Intensity, INTENSITIES, normalizeTheme, oklchToLinearRgb, type PresetId, PRESETS, resetTheme, type ThemeSettings, themeVars, } from './utils/theme';
|
|
56
56
|
export { prepareThemeWave, themeWave } from './utils/theme-wave';
|
|
57
|
+
export { followSectionLink } from './utils/section-link';
|
|
58
|
+
export { reducedMotion } from './utils/motion';
|
|
57
59
|
export { useHydrated } from './utils/useHydrated';
|
|
58
60
|
export { addMonths, currentMonth, formatMonth, fromMonthIndex, isMonth, type Month, monthIndex, monthNames, monthRange, monthsBetween, } from './utils/month';
|
|
59
61
|
export { addDays, addMonthsToDate, type DateRange, type DateString, type DateStyle, dayIndex, dayOfWeek, daysBetween, daysInMonth, formatDate, formatDateRange, fromDayIndex, isDate, today, weekdayNames, weekStart, } from './utils/date';
|
|
@@ -67,4 +69,14 @@ declare module 'react' {
|
|
|
67
69
|
[key: `--${string}`]: string | number;
|
|
68
70
|
}
|
|
69
71
|
}
|
|
72
|
+
export { Breadcrumb, type BreadcrumbProps, default as Breadcrumbs } from './breadcrumbs';
|
|
73
|
+
export { default as CodeInput, type CodeInputProps } from './code-input';
|
|
74
|
+
export { type CommandItem, default as CommandPalette, type CommandPaletteProps, useCommandPaletteShortcut, } from './command-palette';
|
|
75
|
+
export { default as EmptyState, type EmptyStateProps } from './empty-state';
|
|
76
|
+
export { accepts, default as FileDrop, type FileDropProps } from './file-drop';
|
|
77
|
+
export { pageRange, default as Pagination, type PaginationProps } from './pagination';
|
|
78
|
+
export { default as Sparkline, type SparklineProps } from './sparkline';
|
|
79
|
+
export { Step, type StepProps, default as Stepper, type StepperProps } from './stepper';
|
|
80
|
+
export { default as TagInput, type TagInputProps } from './tag-input';
|
|
81
|
+
export { default as Timeline, TimelineItem, type TimelineItemProps } from './timeline';
|
|
70
82
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC;AACf,OAAO,EACH,OAAO,IAAI,IAAI,EACf,WAAW,EACX,KAAK,gBAAgB,EACrB,UAAU,EACV,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,aAAa,EACb,WAAW,EACX,KAAK,gBAAgB,GACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EACH,OAAO,IAAI,IAAI,EACf,eAAe,EACf,UAAU,EACV,KAAK,SAAS,EACd,SAAS,EACT,KAAK,cAAc,EACnB,IAAI,EACJ,OAAO,GACV,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EACH,OAAO,IAAI,QAAQ,EACnB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,KAAK,aAAa,EAClB,cAAc,EACd,eAAe,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/index.ts"],"names":[],"mappings":"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"}
|