@rinzai/zen 0.9.0 → 0.10.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.
- package/dist/animated-number/index.d.ts +6 -2
- package/dist/animated-number/index.d.ts.map +1 -1
- package/dist/animated-number/index.js +68 -17
- package/dist/calendar-heatmap/index.d.ts +25 -0
- package/dist/calendar-heatmap/index.d.ts.map +1 -0
- package/dist/calendar-heatmap/index.js +48 -0
- package/dist/chart/allocation.d.ts +30 -0
- package/dist/chart/allocation.d.ts.map +1 -0
- package/dist/chart/allocation.js +69 -0
- package/dist/chart/index.d.ts +1 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.js +85 -83
- package/dist/code-block/index.d.ts +1 -1
- package/dist/code-block/index.d.ts.map +1 -1
- package/dist/code-block/index.js +31 -22
- package/dist/collapse/index.d.ts +3 -2
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +1 -1
- package/dist/date-picker/index.d.ts +10 -2
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +43 -21
- package/dist/dialog/index.d.ts +4 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +69 -113
- package/dist/editable-cell/index.d.ts +2 -1
- package/dist/editable-cell/index.d.ts.map +1 -1
- package/dist/editable-cell/index.js +24 -17
- package/dist/filter-bar/index.d.ts +21 -0
- package/dist/filter-bar/index.d.ts.map +1 -0
- package/dist/filter-bar/index.js +90 -0
- package/dist/icon-picker/index.d.ts +38 -0
- package/dist/icon-picker/index.d.ts.map +1 -0
- package/dist/icon-picker/index.js +112 -0
- package/dist/icons/arrow-left.js +23 -0
- package/dist/icons/micro/arrow-trending-down.d.ts +3 -0
- package/dist/icons/micro/arrow-trending-down.d.ts.map +1 -0
- package/dist/icons/micro/arrow-trending-down.js +21 -0
- package/dist/icons/micro/arrow-trending-up.d.ts +3 -0
- package/dist/icons/micro/arrow-trending-up.d.ts.map +1 -0
- package/dist/icons/micro/arrow-trending-up.js +21 -0
- package/dist/index.d.ts +17 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/kbd/index.d.ts +4 -0
- package/dist/kbd/index.d.ts.map +1 -0
- package/dist/kbd/index.js +12 -0
- package/dist/keypad/index.d.ts +20 -0
- package/dist/keypad/index.d.ts.map +1 -0
- package/dist/keypad/index.js +42 -0
- package/dist/lib.js +92 -77
- package/dist/load-more/index.d.ts +19 -0
- package/dist/load-more/index.d.ts.map +1 -0
- package/dist/load-more/index.js +37 -0
- package/dist/menu/index.d.ts +22 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +139 -48
- package/dist/meter/index.d.ts +3 -1
- package/dist/meter/index.d.ts.map +1 -1
- package/dist/meter/index.js +19 -14
- package/dist/money-input/index.d.ts +3 -3
- package/dist/page-transition/index.d.ts +10 -0
- package/dist/page-transition/index.d.ts.map +1 -0
- package/dist/page-transition/index.js +16 -0
- package/dist/progress-ring/index.d.ts +4 -1
- package/dist/progress-ring/index.d.ts.map +1 -1
- package/dist/progress-ring/index.js +47 -38
- package/dist/range-slider/index.d.ts +26 -0
- package/dist/range-slider/index.d.ts.map +1 -0
- package/dist/range-slider/index.js +44 -0
- package/dist/repeat-picker/index.d.ts +22 -0
- package/dist/repeat-picker/index.d.ts.map +1 -0
- package/dist/repeat-picker/index.js +115 -0
- package/dist/slider/index.d.ts +2 -0
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +19 -18
- package/dist/sortable/index.d.ts +33 -0
- package/dist/sortable/index.d.ts.map +1 -0
- package/dist/sortable/index.js +147 -0
- package/dist/table/index.d.ts +5 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +90 -58
- package/dist/table/selection.d.ts +55 -0
- package/dist/table/selection.d.ts.map +1 -0
- package/dist/table/selection.js +83 -0
- package/dist/table/swipe.d.ts +18 -0
- package/dist/table/swipe.d.ts.map +1 -0
- package/dist/table/swipe.js +53 -0
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +101 -51
- package/dist/theme-toggle/index.js +6 -6
- package/dist/theme.css +184 -11
- package/dist/toast/index.js +25 -25
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +1 -1
- package/dist/trend/index.d.ts +19 -0
- package/dist/trend/index.d.ts.map +1 -0
- package/dist/trend/index.js +27 -0
- package/dist/utils/date.d.ts +34 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +45 -12
- package/dist/utils/money.d.ts +3 -1
- package/dist/utils/money.d.ts.map +1 -1
- package/dist/utils/money.js +24 -1
- package/dist/utils/repeat.d.ts +17 -0
- package/dist/utils/repeat.d.ts.map +1 -0
- package/dist/utils/repeat.js +38 -0
- package/dist/utils/swipe.d.ts +29 -0
- package/dist/utils/swipe.d.ts.map +1 -0
- package/dist/utils/swipe.js +85 -0
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +3 -9
- package/dist/zen.css +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import t from "../chip/index.js";
|
|
4
|
+
import n from "../input/index.js";
|
|
5
|
+
import { dayOfWeek as r, formatDate as i, weekStart as a, weekdayNames as o } from "../utils/date.js";
|
|
6
|
+
import s, { SelectItem as c } from "../select/index.js";
|
|
7
|
+
import { describeRepeat as l, nextOccurrences as u } from "../utils/repeat.js";
|
|
8
|
+
import { useState as d } from "react";
|
|
9
|
+
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
10
|
+
//#region packages/repeat-picker/index.tsx
|
|
11
|
+
var h = [
|
|
12
|
+
"day",
|
|
13
|
+
"week",
|
|
14
|
+
"month",
|
|
15
|
+
"year"
|
|
16
|
+
];
|
|
17
|
+
function g({ value: g, onChange: _, locale: v, start: y, weekStartsOn: b = a(v), label: x = "Repeats", className: S }) {
|
|
18
|
+
let [C, w] = d(String(g.every));
|
|
19
|
+
Number(C) !== g.every && C !== "" && w(String(g.every));
|
|
20
|
+
let T = o(v), E = Array.from({ length: 7 }, (e, t) => (b + t) % 7), D = g.weekdays ?? (y ? [r(y)] : []), O = g.every !== 1;
|
|
21
|
+
return /* @__PURE__ */ m("fieldset", {
|
|
22
|
+
className: e("zen__repeat-picker flex flex-col gap-3", S),
|
|
23
|
+
children: [
|
|
24
|
+
/* @__PURE__ */ p("legend", {
|
|
25
|
+
className: "sr-only",
|
|
26
|
+
children: x
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ m("div", {
|
|
29
|
+
className: "flex items-center gap-2 text-sm",
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ p("span", {
|
|
32
|
+
className: "text-muted-foreground",
|
|
33
|
+
children: "Every"
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ p(n, {
|
|
36
|
+
"aria-label": "How many",
|
|
37
|
+
inputMode: "numeric",
|
|
38
|
+
value: C,
|
|
39
|
+
onChange: (e) => {
|
|
40
|
+
let t = e.target.value.replace(/\D/g, "").slice(0, 3);
|
|
41
|
+
w(t), Number(t) >= 1 && _({
|
|
42
|
+
...g,
|
|
43
|
+
every: Number(t)
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
onBlur: () => w(String(g.every)),
|
|
47
|
+
className: "w-16 text-center tabular-nums"
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ p(s, {
|
|
50
|
+
"aria-label": "Unit",
|
|
51
|
+
value: g.unit,
|
|
52
|
+
onChange: (e) => {
|
|
53
|
+
let t = {
|
|
54
|
+
every: g.every,
|
|
55
|
+
unit: e
|
|
56
|
+
};
|
|
57
|
+
e === "week" && y && (t.weekdays = [r(y)]), e === "month" && (t.day = y ? Number(y.slice(8)) : 1), _(t);
|
|
58
|
+
},
|
|
59
|
+
className: "w-32",
|
|
60
|
+
children: h.map((e) => /* @__PURE__ */ p(c, {
|
|
61
|
+
value: e,
|
|
62
|
+
children: O ? `${e}s` : e
|
|
63
|
+
}, e))
|
|
64
|
+
})
|
|
65
|
+
]
|
|
66
|
+
}),
|
|
67
|
+
g.unit === "week" && /* @__PURE__ */ p("div", {
|
|
68
|
+
role: "group",
|
|
69
|
+
"aria-label": "On",
|
|
70
|
+
className: "flex flex-wrap gap-1.5",
|
|
71
|
+
children: E.map((e) => {
|
|
72
|
+
let n = D.includes(e);
|
|
73
|
+
return /* @__PURE__ */ p(t, {
|
|
74
|
+
pressed: n,
|
|
75
|
+
onClick: () => {
|
|
76
|
+
n && D.length === 1 || _({
|
|
77
|
+
...g,
|
|
78
|
+
weekdays: n ? D.filter((t) => t !== e) : [...D, e]
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
children: T[e]
|
|
82
|
+
}, e);
|
|
83
|
+
})
|
|
84
|
+
}),
|
|
85
|
+
g.unit === "month" && /* @__PURE__ */ m(s, {
|
|
86
|
+
"aria-label": "On",
|
|
87
|
+
value: String(g.day ?? (y ? Number(y.slice(8)) : 1)),
|
|
88
|
+
onChange: (e) => _({
|
|
89
|
+
...g,
|
|
90
|
+
day: Number(e)
|
|
91
|
+
}),
|
|
92
|
+
className: "w-40",
|
|
93
|
+
children: [Array.from({ length: 31 }, (e, t) => /* @__PURE__ */ m(c, {
|
|
94
|
+
value: String(t + 1),
|
|
95
|
+
children: ["Day ", t + 1]
|
|
96
|
+
}, t + 1)), /* @__PURE__ */ p(c, {
|
|
97
|
+
value: "-1",
|
|
98
|
+
children: "Last day"
|
|
99
|
+
})]
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ m("p", {
|
|
102
|
+
"aria-live": "polite",
|
|
103
|
+
className: "text-muted-foreground text-sm",
|
|
104
|
+
children: [l(g, v, y), y && /* @__PURE__ */ m(f, { children: [
|
|
105
|
+
/* @__PURE__ */ p("br", {}),
|
|
106
|
+
"Next:",
|
|
107
|
+
" ",
|
|
108
|
+
u(g, y, 3).map((e) => i(e, v)).join(", ")
|
|
109
|
+
] })]
|
|
110
|
+
})
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
export { g as default };
|
package/dist/slider/index.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { ComponentProps } from 'react';
|
|
|
6
6
|
* gradient), and a glowing thumb.
|
|
7
7
|
*/
|
|
8
8
|
export default function Slider({ value, min, max, step, onValueChange, onValueCommit, trackBackground, thumbColor, valueText, className, style, ...rest }: SliderProps): import('react').JSX.Element;
|
|
9
|
+
/** The glowing thumb, with its focus ring: Slider's and RangeSlider's. */
|
|
10
|
+
export declare const THUMB: string;
|
|
9
11
|
export interface SliderProps extends Omit<ComponentProps<'input'>, 'type' | 'value' | 'min' | 'max' | 'step' | 'onChange' | 'defaultValue'> {
|
|
10
12
|
value: number;
|
|
11
13
|
min?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAoC,MAAM,OAAO,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,KAAK,EACL,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACV,EAAE,WAAW,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAoC,MAAM,OAAO,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,KAAK,EACL,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACV,EAAE,WAAW,+BA6Cb;AAED,0EAA0E;AAC1E,eAAO,MAAM,KAAK,QAI+E,CAAC;AAElG,MAAM,WAAW,WAAY,SAAQ,IAAI,CACrC,cAAc,CAAC,OAAO,CAAC,EACvB,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAC1E;IACG,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC"}
|
package/dist/slider/index.js
CHANGED
|
@@ -3,32 +3,33 @@ import { cx as e } from "../utils/cx.js";
|
|
|
3
3
|
import { useEffect as t, useRef as n } from "react";
|
|
4
4
|
import { jsx as r } from "react/jsx-runtime";
|
|
5
5
|
//#region packages/slider/index.tsx
|
|
6
|
-
function i({ value: i, min:
|
|
7
|
-
let
|
|
8
|
-
|
|
9
|
-
let e =
|
|
6
|
+
function i({ value: i, min: o = 0, max: s = 100, step: c = 1, onValueChange: l, onValueCommit: u, trackBackground: d, thumbColor: f, valueText: p, className: m, style: h, ...g }) {
|
|
7
|
+
let _ = n(null), v = n(u);
|
|
8
|
+
v.current = u, t(() => {
|
|
9
|
+
let e = _.current;
|
|
10
10
|
if (!e) return;
|
|
11
|
-
let t = () =>
|
|
11
|
+
let t = () => v.current?.(Number(e.value));
|
|
12
12
|
return e.addEventListener("change", t), () => e.removeEventListener("change", t);
|
|
13
13
|
}, []);
|
|
14
|
-
let
|
|
14
|
+
let y = s > o ? (i - o) / (s - o) * 100 : 0, b = d ?? `linear-gradient(to right, oklch(var(--primary)) ${y}%, oklch(var(--muted)) ${y}%)`;
|
|
15
15
|
return /* @__PURE__ */ r("input", {
|
|
16
|
-
ref:
|
|
16
|
+
ref: _,
|
|
17
17
|
type: "range",
|
|
18
|
-
min:
|
|
19
|
-
max:
|
|
20
|
-
step:
|
|
18
|
+
min: o,
|
|
19
|
+
max: s,
|
|
20
|
+
step: c,
|
|
21
21
|
value: i,
|
|
22
|
-
"aria-valuetext":
|
|
23
|
-
onChange: (e) =>
|
|
22
|
+
"aria-valuetext": p?.(i),
|
|
23
|
+
onChange: (e) => l?.(Number(e.target.value)),
|
|
24
24
|
style: {
|
|
25
|
-
...
|
|
26
|
-
"--zen-track":
|
|
27
|
-
"--zen-thumb":
|
|
25
|
+
...h,
|
|
26
|
+
"--zen-track": b,
|
|
27
|
+
"--zen-thumb": f ?? "oklch(var(--primary))"
|
|
28
28
|
},
|
|
29
|
-
className: e("zen__slider h-5 w-full cursor-pointer appearance-none bg-transparent outline-hidden disabled:cursor-not-allowed disabled:opacity-50", "[&::-webkit-slider-runnable-track]:h-2.5 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:[background:var(--zen-track)]", "[&::-moz-range-track]:h-2.5 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:[background:var(--zen-track)]",
|
|
30
|
-
...
|
|
29
|
+
className: e("zen__slider h-5 w-full cursor-pointer appearance-none bg-transparent outline-hidden disabled:cursor-not-allowed disabled:opacity-50", "[&::-webkit-slider-runnable-track]:h-2.5 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:[background:var(--zen-track)]", "[&::-moz-range-track]:h-2.5 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:[background:var(--zen-track)]", a, m),
|
|
30
|
+
...g
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
+
var a = "[&::-webkit-slider-thumb]:-mt-[5px] [&::-webkit-slider-thumb]:size-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] [&::-webkit-slider-thumb]:[background:var(--zen-thumb)] [&::-moz-range-thumb]:size-5 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] [&::-moz-range-thumb]:[background:var(--zen-thumb)] focus-visible:[&::-webkit-slider-thumb]:ring-ring/40 focus-visible:[&::-webkit-slider-thumb]:ring-4 focus-visible:[&::-moz-range-thumb]:ring-ring/40 focus-visible:[&::-moz-range-thumb]:ring-4";
|
|
33
34
|
//#endregion
|
|
34
|
-
export { i as default };
|
|
35
|
+
export { a as THUMB, i as default };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A list put in order by dragging, e.g. budget categories: drag an item by its
|
|
4
|
+
* SortableHandle and the others make way (a phone taps lightly at each new
|
|
5
|
+
* place); it settles into place when let go.
|
|
6
|
+
* From the keyboard, Space or Enter on a handle picks the item up, the arrow
|
|
7
|
+
* keys move it, Space or Enter drops it and Escape puts it back; each step is
|
|
8
|
+
* announced. `value` is the ids in order; render a SortableItem for each.
|
|
9
|
+
*/
|
|
10
|
+
export declare function SortableList({ value, onChange, className, children, ...rest }: SortableListProps): import('react').JSX.Element;
|
|
11
|
+
/** One item in a SortableList; give it the `id` it has in the list's value. */
|
|
12
|
+
export declare function SortableItem({ id, className, ...rest }: SortableItemProps): import('react').JSX.Element;
|
|
13
|
+
/**
|
|
14
|
+
* What an item is dragged by: a grip button. `label` names the item ("Rent");
|
|
15
|
+
* the button reads "Reorder Rent". It takes no scroll gestures, so dragging it
|
|
16
|
+
* never scrolls the page.
|
|
17
|
+
*/
|
|
18
|
+
export declare function SortableHandle({ id, label, className, children, ...rest }: SortableHandleProps): import('react').JSX.Element;
|
|
19
|
+
export interface SortableListProps extends Omit<ComponentProps<'ul'>, 'onChange'> {
|
|
20
|
+
/** The items' ids, in order. */
|
|
21
|
+
value: readonly string[];
|
|
22
|
+
onChange: (value: string[]) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface SortableItemProps extends ComponentProps<'li'> {
|
|
25
|
+
id: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SortableHandleProps extends Omit<ComponentProps<'button'>, 'id'> {
|
|
28
|
+
/** The item's id, as in the list's value. */
|
|
29
|
+
id: string;
|
|
30
|
+
/** The item's name, e.g. "Rent". */
|
|
31
|
+
label: string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/sortable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,cAAc,EASjB,MAAM,OAAO,CAAC;AA2Bf;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,+BAuJhG;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,+BAazE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,+BAwB9F;AAUD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC7E,gCAAgC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,IAAI,CAAC;IAC3D,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC7E,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { reducedMotion as t } from "../utils/motion.js";
|
|
4
|
+
import { createContext as n, useContext as r, useEffect as i, useLayoutEffect as a, useRef as o, useState as s } from "react";
|
|
5
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
//#region packages/sortable/index.tsx
|
|
7
|
+
var u = typeof window > "u" ? i : a, d = {
|
|
8
|
+
duration: 220,
|
|
9
|
+
easing: "cubic-bezier(0.2, 0.8, 0.2, 1)"
|
|
10
|
+
}, f = 48, p = n(null);
|
|
11
|
+
function m(e) {
|
|
12
|
+
let t = r(p);
|
|
13
|
+
if (!t) throw Error(`<${e}> must be inside <SortableList>`);
|
|
14
|
+
return t;
|
|
15
|
+
}
|
|
16
|
+
var h = (e, t, n) => {
|
|
17
|
+
let r = [...e];
|
|
18
|
+
return r.splice(n, 0, ...r.splice(t, 1)), r;
|
|
19
|
+
};
|
|
20
|
+
function g({ value: n, onChange: r, className: i, children: a, ...m }) {
|
|
21
|
+
let g = o(null), [_, v] = s(null), [b, x] = s(""), S = o(null), C = o(null), w = () => [...g.current?.querySelectorAll(":scope > [data-sortable-id]") ?? []], T = () => new Map(w().map((e) => [e.dataset.sortableId, e.getBoundingClientRect().top])), E = (e) => {
|
|
22
|
+
S.current = T(), r(e);
|
|
23
|
+
};
|
|
24
|
+
return u(() => {
|
|
25
|
+
let e = S.current;
|
|
26
|
+
if (S.current = null, e) for (let n of w()) {
|
|
27
|
+
n.style.removeProperty("translate");
|
|
28
|
+
let r = e.get(n.dataset.sortableId), i = r === void 0 ? 0 : r - n.getBoundingClientRect().top;
|
|
29
|
+
i && !t() && n.animate?.({ translate: [`0 ${i}px`, "0 0"] }, d);
|
|
30
|
+
}
|
|
31
|
+
}, [n]), /* @__PURE__ */ l(p.Provider, {
|
|
32
|
+
value: {
|
|
33
|
+
grab: (e, r) => {
|
|
34
|
+
if (e.button !== 0 || _) return;
|
|
35
|
+
let i = w(), a = i.findIndex((e) => e.dataset.sortableId === r), o = i[a];
|
|
36
|
+
if (!o) return;
|
|
37
|
+
e.preventDefault();
|
|
38
|
+
let s = e.currentTarget;
|
|
39
|
+
s.setPointerCapture?.(e.pointerId);
|
|
40
|
+
let c = y(g.current), l = c.scrollTop, u = e.clientY, p = i.map((e) => e.getBoundingClientRect()), m = p.length > 1 ? p[1].top - p[0].bottom : 0, v = p[a].height + m, b = p.map((e) => e.top + e.height / 2), x = a, C = e.clientY, D = 0;
|
|
41
|
+
o.dataset.dragging = "", g.current.dataset.sorting = "";
|
|
42
|
+
let O = () => {
|
|
43
|
+
let e = C - u + c.scrollTop - l;
|
|
44
|
+
o.style.translate = `0 ${e}px`;
|
|
45
|
+
let t = b[a] + e, n = x;
|
|
46
|
+
for (x = a; x < i.length - 1 && t > b[x + 1];) x++;
|
|
47
|
+
for (; x > 0 && t < b[x - 1];) x--;
|
|
48
|
+
x !== n && navigator.vibrate?.(5), i.forEach((e, t) => {
|
|
49
|
+
if (t === a) return;
|
|
50
|
+
let n = a < t && t <= x ? -v : x <= t && t < a ? v : 0;
|
|
51
|
+
e.style.translate = n ? `0 ${n}px` : "";
|
|
52
|
+
});
|
|
53
|
+
}, k = () => {
|
|
54
|
+
D = 0;
|
|
55
|
+
let e = c === document.scrollingElement ? {
|
|
56
|
+
top: 0,
|
|
57
|
+
bottom: innerHeight
|
|
58
|
+
} : c.getBoundingClientRect(), t = C < e.top + f ? -(e.top + f - C) : C > e.bottom - f ? C - (e.bottom - f) : 0;
|
|
59
|
+
t && (c.scrollTop += t / 3, O(), D = requestAnimationFrame(k));
|
|
60
|
+
}, A = (t) => {
|
|
61
|
+
t.pointerId === e.pointerId && (C = t.clientY, O(), D ||= requestAnimationFrame(k));
|
|
62
|
+
}, j = (r) => {
|
|
63
|
+
if (r.pointerId === e.pointerId) {
|
|
64
|
+
if (s.removeEventListener("pointermove", A), s.removeEventListener("pointerup", j), s.removeEventListener("pointercancel", j), cancelAnimationFrame(D), delete o.dataset.dragging, delete g.current?.dataset.sorting, r.type === "pointerup" && x !== a) E(h(n, a, x));
|
|
65
|
+
else {
|
|
66
|
+
S.current = T();
|
|
67
|
+
for (let e of i) e.style.removeProperty("translate");
|
|
68
|
+
for (let e of i) {
|
|
69
|
+
let n = S.current.get(e.dataset.sortableId) - e.getBoundingClientRect().top;
|
|
70
|
+
n && !t() && e.animate?.({ translate: [`0 ${n}px`, "0 0"] }, d);
|
|
71
|
+
}
|
|
72
|
+
S.current = null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
s.addEventListener("pointermove", A), s.addEventListener("pointerup", j), s.addEventListener("pointercancel", j);
|
|
77
|
+
},
|
|
78
|
+
key: (e, t, r) => {
|
|
79
|
+
let i = n.indexOf(t), a = `${i + 1} of ${n.length}`;
|
|
80
|
+
if (e.key === " " || e.key === "Enter") e.preventDefault(), _ === t ? (v(null), C.current = null, x(`${r} dropped, ${a}.`)) : _ || (v(t), C.current = n, x(`${r} picked up, ${a}. Arrow keys move it, Space drops it, Escape puts it back.`));
|
|
81
|
+
else if (_ === t && (e.key === "ArrowUp" || e.key === "ArrowDown")) {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
let t = i + (e.key === "ArrowUp" ? -1 : 1);
|
|
84
|
+
if (t < 0 || t >= n.length) return;
|
|
85
|
+
E(h(n, i, t)), x(`${r}, ${t + 1} of ${n.length}.`);
|
|
86
|
+
} else if (_ === t && e.key === "Escape") {
|
|
87
|
+
e.preventDefault();
|
|
88
|
+
let i = C.current ?? n;
|
|
89
|
+
v(null), C.current = null, i !== n && E([...i]), x(`${r} put back, ${i.indexOf(t) + 1} of ${i.length}.`);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
lifted: _
|
|
93
|
+
},
|
|
94
|
+
children: [/* @__PURE__ */ c("ul", {
|
|
95
|
+
ref: g,
|
|
96
|
+
className: e("zen__sortable relative flex flex-col", i),
|
|
97
|
+
...m,
|
|
98
|
+
children: a
|
|
99
|
+
}), /* @__PURE__ */ c("span", {
|
|
100
|
+
"aria-live": "assertive",
|
|
101
|
+
className: "sr-only",
|
|
102
|
+
children: b
|
|
103
|
+
})]
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function _({ id: t, className: n, ...r }) {
|
|
107
|
+
let { lifted: i } = m("SortableItem");
|
|
108
|
+
return /* @__PURE__ */ c("li", {
|
|
109
|
+
"data-sortable-id": t,
|
|
110
|
+
"data-lifted": i === t || void 0,
|
|
111
|
+
className: e("zen__sortable-item relative transition-[box-shadow,scale] duration-200 data-dragging:z-10 data-dragging:scale-[1.02] data-dragging:shadow-[0_12px_32px_-12px_oklch(0_0_0/0.6)] data-lifted:z-10 data-lifted:shadow-[0_0_0_2px_oklch(var(--primary)/0.6)]", n),
|
|
112
|
+
...r
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function v({ id: t, label: n, className: r, children: i, ...a }) {
|
|
116
|
+
let { grab: o, key: s, lifted: l } = m("SortableHandle");
|
|
117
|
+
return /* @__PURE__ */ c("button", {
|
|
118
|
+
type: "button",
|
|
119
|
+
"aria-label": `Reorder ${n}`,
|
|
120
|
+
"aria-pressed": l === t,
|
|
121
|
+
onPointerDown: (e) => o(e, t),
|
|
122
|
+
onKeyDown: (e) => s(e, t, n),
|
|
123
|
+
className: e("text-muted-foreground hover:text-foreground focus-visible:ring-ring/50 grid size-8 shrink-0 cursor-grab touch-none place-items-center rounded-md outline-hidden select-none focus-visible:ring-2 active:cursor-grabbing", r),
|
|
124
|
+
...a,
|
|
125
|
+
children: i ?? /* @__PURE__ */ c("svg", {
|
|
126
|
+
"aria-hidden": !0,
|
|
127
|
+
viewBox: "0 0 16 16",
|
|
128
|
+
fill: "currentColor",
|
|
129
|
+
className: "size-4",
|
|
130
|
+
children: [
|
|
131
|
+
4,
|
|
132
|
+
8,
|
|
133
|
+
12
|
|
134
|
+
].flatMap((e) => [5.5, 10.5].map((t) => /* @__PURE__ */ c("circle", {
|
|
135
|
+
cx: t,
|
|
136
|
+
cy: e,
|
|
137
|
+
r: "1.25"
|
|
138
|
+
}, `${t}${e}`)))
|
|
139
|
+
})
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function y(e) {
|
|
143
|
+
for (let t = e.parentElement; t; t = t.parentElement) if (/auto|scroll/.test(getComputedStyle(t).overflowY) && t.scrollHeight > t.clientHeight) return t;
|
|
144
|
+
return document.scrollingElement ?? document.documentElement;
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
export { v as SortableHandle, _ as SortableItem, g as SortableList };
|
package/dist/table/index.d.ts
CHANGED
|
@@ -20,7 +20,9 @@ export declare function TableBody({ ref, ...rest }: ComponentProps<'tbody'>): im
|
|
|
20
20
|
/** Rows that stay at the bottom while the body scrolls (totals, balances). */
|
|
21
21
|
export declare function TableFooter({ className, ...rest }: ComponentProps<'tfoot'>): import('react').JSX.Element;
|
|
22
22
|
/** A row; its cells light up together on hover. */
|
|
23
|
-
export declare function TableRow({ className, ...rest }: ComponentProps<'tr'>
|
|
23
|
+
export declare function TableRow({ selected, className, ...rest }: ComponentProps<'tr'> & {
|
|
24
|
+
selected?: boolean;
|
|
25
|
+
}): import('react').JSX.Element;
|
|
24
26
|
/**
|
|
25
27
|
* Column heading: small spaced caps (TableHeader keeps the row at the top). With `onSort`, it's a
|
|
26
28
|
* button that shows the direction and announces it (aria-sort).
|
|
@@ -82,4 +84,6 @@ export interface TableCellProps extends ComponentProps<'td'> {
|
|
|
82
84
|
/** Stay in view when the table scrolls sideways. */
|
|
83
85
|
sticky?: 'left';
|
|
84
86
|
}
|
|
87
|
+
export { SelectionBar, type SelectionBarProps, TableSelectCell, type TableSelectCellProps, TableSelectHead, type TableSelectHeadProps, useSelection, } from './selection';
|
|
88
|
+
export { TableSwipeAction, type TableSwipeActionProps, TableSwipeRow, type TableSwipeRowProps } from './swipe';
|
|
85
89
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/table/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAsE,MAAM,OAAO,CAAC;AAUtH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,+BAsD/F;AAED,2EAA2E;AAC3E,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,+BAE5E;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,+BAE1E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/table/index.tsx"],"names":[],"mappings":"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"}
|