@rinzai/zen 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/animated-number/index.js +33 -0
- package/dist/avatar/index.js +38 -0
- package/dist/backdrop/index.d.ts +7 -3
- package/dist/backdrop/index.d.ts.map +1 -1
- package/dist/backdrop/index.js +98 -0
- package/dist/badge/index.d.ts +1 -1
- package/dist/badge/index.js +24 -0
- package/dist/button/index.d.ts +10 -3
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +54 -0
- package/dist/calendar/index.d.ts +44 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +161 -0
- package/dist/card/index.d.ts +15 -6
- package/dist/card/index.d.ts.map +1 -1
- package/dist/card/index.js +60 -0
- package/dist/chart/donut.d.ts +30 -0
- package/dist/chart/donut.d.ts.map +1 -0
- package/dist/chart/donut.js +96 -0
- package/dist/chart/index.d.ts +81 -0
- package/dist/chart/index.d.ts.map +1 -0
- package/dist/chart/index.js +362 -0
- package/dist/chart/tooltip.d.ts +25 -0
- package/dist/chart/tooltip.d.ts.map +1 -0
- package/dist/chart/tooltip.js +51 -0
- package/dist/checkbox/index.d.ts +20 -0
- package/dist/checkbox/index.d.ts.map +1 -0
- package/dist/checkbox/index.js +61 -0
- package/dist/chip/index.d.ts +12 -0
- package/dist/chip/index.d.ts.map +1 -0
- package/dist/chip/index.js +14 -0
- package/dist/code-block/index.js +36 -0
- package/dist/collapse/index.d.ts +17 -7
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +82 -0
- package/dist/combobox/index.d.ts +89 -0
- package/dist/combobox/index.d.ts.map +1 -0
- package/dist/combobox/index.js +262 -0
- package/dist/confirm-dialog/index.d.ts.map +1 -1
- package/dist/confirm-dialog/index.js +25 -0
- package/dist/date-picker/index.d.ts +48 -0
- package/dist/date-picker/index.d.ts.map +1 -0
- package/dist/date-picker/index.js +112 -0
- package/dist/dialog/index.d.ts +14 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +77 -0
- package/dist/disclosure/index.d.ts +25 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/disclosure/index.js +66 -0
- package/dist/editable-cell/index.js +24 -0
- package/dist/field/index.d.ts +42 -3
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +66 -0
- package/dist/header/index.js +17 -0
- package/dist/icons/chevron-down.js +21 -0
- package/dist/icons/chevron-left.js +21 -0
- package/dist/icons/chevron-right.js +21 -0
- package/dist/icons/chevron-up.js +21 -0
- package/dist/icons/ellipsis.d.ts +4 -0
- package/dist/icons/ellipsis.d.ts.map +1 -0
- package/dist/icons/ellipsis.js +31 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/search.js +21 -0
- package/dist/icons/x-mark.js +21 -0
- package/dist/index.d.ts +22 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +16 -0
- package/dist/input-group/index.d.ts.map +1 -1
- package/dist/input-group/index.js +36 -0
- package/dist/inset/index.d.ts +16 -0
- package/dist/inset/index.d.ts.map +1 -0
- package/dist/inset/index.js +23 -0
- package/dist/lib.js +74 -0
- package/dist/menu/index.d.ts +55 -0
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/menu/index.js +118 -0
- package/dist/meter/index.js +41 -0
- package/dist/money-input/index.d.ts +77 -7
- package/dist/money-input/index.d.ts.map +1 -1
- package/dist/money-input/index.js +304 -0
- package/dist/month-picker/index.d.ts +4 -3
- package/dist/month-picker/index.d.ts.map +1 -1
- package/dist/month-picker/index.js +93 -0
- package/dist/page-header/index.js +26 -0
- package/dist/pills/index.d.ts +35 -0
- package/dist/pills/index.d.ts.map +1 -0
- package/dist/pills/index.js +50 -0
- package/dist/popover/index.d.ts +41 -22
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +75 -0
- package/dist/progress-ring/index.js +49 -0
- package/dist/radio-cards/index.d.ts +34 -0
- package/dist/radio-cards/index.d.ts.map +1 -0
- package/dist/radio-cards/index.js +48 -0
- package/dist/radio-group/index.d.ts +39 -0
- package/dist/radio-group/index.d.ts.map +1 -0
- package/dist/radio-group/index.js +63 -0
- package/dist/segmented/index.d.ts +16 -6
- package/dist/segmented/index.d.ts.map +1 -1
- package/dist/segmented/index.js +58 -0
- package/dist/select/index.d.ts +28 -14
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +187 -0
- package/dist/side-nav/index.js +37 -0
- package/dist/skeleton/index.js +12 -0
- package/dist/slider/index.js +34 -0
- package/dist/spinner/index.js +14 -0
- package/dist/tab-bar/index.d.ts +3 -0
- package/dist/tab-bar/index.d.ts.map +1 -1
- package/dist/tab-bar/index.js +34 -0
- package/dist/table/index.js +148 -0
- package/dist/table-of-contents/index.js +37 -0
- package/dist/tabs/index.d.ts +3 -2
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +114 -0
- package/dist/tailwind.css +1 -1
- package/dist/textarea/index.d.ts.map +1 -1
- package/dist/textarea/index.js +16 -0
- package/dist/theme-toggle/index.js +43 -0
- package/dist/theme.css +178 -13
- package/dist/toast/index.d.ts +6 -1
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +248 -0
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +26 -0
- package/dist/tooltip/index.d.ts +25 -0
- package/dist/tooltip/index.d.ts.map +1 -0
- package/dist/tooltip/index.js +108 -0
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +135 -0
- package/dist/utils/cva.js +25 -0
- package/dist/utils/cx.js +6 -0
- package/dist/utils/date.d.ts +37 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +68 -0
- package/dist/utils/field-chevron.js +19 -0
- package/dist/utils/fx.d.ts +30 -0
- package/dist/utils/fx.d.ts.map +1 -0
- package/dist/utils/fx.js +21 -0
- package/dist/utils/graphics.js +33 -0
- package/dist/utils/indicator.d.ts +24 -0
- package/dist/utils/indicator.d.ts.map +1 -0
- package/dist/utils/indicator.js +37 -0
- package/dist/utils/merge.js +305 -0
- package/dist/utils/money.js +73 -0
- package/dist/utils/month.js +46 -0
- package/dist/utils/slot.d.ts +9 -5
- package/dist/utils/slot.d.ts.map +1 -1
- package/dist/utils/slot.js +25 -0
- package/dist/utils/status-icons.js +48 -0
- package/dist/utils/styles.d.ts +6 -6
- package/dist/utils/styles.d.ts.map +1 -1
- package/dist/utils/styles.js +6 -0
- package/dist/utils/theme.js +200 -0
- package/dist/utils/useAnchoredPopup.d.ts +8 -2
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +63 -0
- package/dist/utils/useHydrated.js +9 -0
- package/dist/utils/useVirtualList.js +45 -0
- package/dist/variables.css +22 -0
- package/dist/zen.css +1 -1
- package/package.json +9 -4
- package/dist/actions-menu/index.d.ts +0 -18
- package/dist/actions-menu/index.d.ts.map +0 -1
- package/dist/dropdown/index.d.ts +0 -28
- package/dist/dropdown/index.d.ts.map +0 -1
- package/dist/nav-pills/index.d.ts +0 -31
- package/dist/nav-pills/index.d.ts.map +0 -1
- package/dist/zen.js +0 -2970
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region packages/utils/theme.ts
|
|
3
|
+
var e = [
|
|
4
|
+
"mono",
|
|
5
|
+
"muted",
|
|
6
|
+
"balanced",
|
|
7
|
+
"vivid"
|
|
8
|
+
], t = [
|
|
9
|
+
{
|
|
10
|
+
id: "violet",
|
|
11
|
+
label: "Violet",
|
|
12
|
+
hue: 295,
|
|
13
|
+
intensity: "balanced",
|
|
14
|
+
tint: "tinted"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "ocean",
|
|
18
|
+
label: "Ocean",
|
|
19
|
+
hue: 250,
|
|
20
|
+
intensity: "balanced",
|
|
21
|
+
tint: "tinted"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "teal",
|
|
25
|
+
label: "Teal",
|
|
26
|
+
hue: 195,
|
|
27
|
+
intensity: "balanced",
|
|
28
|
+
tint: "tinted"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "forest",
|
|
32
|
+
label: "Forest",
|
|
33
|
+
hue: 150,
|
|
34
|
+
intensity: "muted",
|
|
35
|
+
tint: "tinted"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "amber",
|
|
39
|
+
label: "Amber",
|
|
40
|
+
hue: 75,
|
|
41
|
+
intensity: "balanced",
|
|
42
|
+
tint: "neutral"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "rose",
|
|
46
|
+
label: "Rose",
|
|
47
|
+
hue: 15,
|
|
48
|
+
intensity: "muted",
|
|
49
|
+
tint: "neutral"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "graphite",
|
|
53
|
+
label: "Graphite",
|
|
54
|
+
hue: 270,
|
|
55
|
+
intensity: "mono",
|
|
56
|
+
tint: "neutral"
|
|
57
|
+
}
|
|
58
|
+
], n = {
|
|
59
|
+
preset: "violet",
|
|
60
|
+
hue: 295,
|
|
61
|
+
intensity: "balanced",
|
|
62
|
+
tint: "tinted",
|
|
63
|
+
contrast: "standard",
|
|
64
|
+
glow: "soft",
|
|
65
|
+
topography: "subtle"
|
|
66
|
+
};
|
|
67
|
+
function r(e, n) {
|
|
68
|
+
let r = t.find((e) => e.id === n);
|
|
69
|
+
return {
|
|
70
|
+
...e,
|
|
71
|
+
preset: r.id,
|
|
72
|
+
hue: r.hue,
|
|
73
|
+
intensity: r.intensity,
|
|
74
|
+
tint: r.tint
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function i(e, t) {
|
|
78
|
+
return {
|
|
79
|
+
...e,
|
|
80
|
+
...t,
|
|
81
|
+
preset: "custom"
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
var a = {
|
|
85
|
+
mono: .012,
|
|
86
|
+
muted: .07,
|
|
87
|
+
balanced: .13,
|
|
88
|
+
vivid: .19
|
|
89
|
+
}, o = (e, t, n) => `${s(e, 3)} ${s(t, 3)} ${s((n % 360 + 360) % 360, 1)}`, s = (e, t) => Math.round(e * 10 ** t) / 10 ** t;
|
|
90
|
+
function c(e, t = "dark") {
|
|
91
|
+
let n = e.hue, r = a[e.intensity], i = e.contrast === "high", s = e.tint === "tinted" ? Math.min(.014, r * .12) : .003, c = e.intensity === "mono", l = (e, t = 1) => o(e, s * t, n), u = { "topo-strength": String({
|
|
92
|
+
off: 0,
|
|
93
|
+
subtle: .55,
|
|
94
|
+
visible: 1
|
|
95
|
+
}[e.topography]) };
|
|
96
|
+
return t === "light" ? {
|
|
97
|
+
background: l(i ? .995 : .985, .4),
|
|
98
|
+
foreground: o(i ? .16 : .21, .02, n),
|
|
99
|
+
card: o(1, 0, 0),
|
|
100
|
+
"card-foreground": o(i ? .16 : .21, .02, n),
|
|
101
|
+
popover: o(1, 0, 0),
|
|
102
|
+
"popover-foreground": o(i ? .16 : .21, .02, n),
|
|
103
|
+
secondary: l(.955, .6),
|
|
104
|
+
"secondary-foreground": o(.21, .02, n),
|
|
105
|
+
muted: l(.96, .5),
|
|
106
|
+
"muted-foreground": l(i ? .42 : .5, 1.5),
|
|
107
|
+
border: l(i ? .78 : .91, .8),
|
|
108
|
+
input: l(i ? .78 : .91, .8),
|
|
109
|
+
primary: o(c ? .3 : .48, c ? .02 : Math.min(.22, r * 1.5), n),
|
|
110
|
+
"primary-foreground": o(.985, 0, 0),
|
|
111
|
+
accent: o(.95, c ? .005 : r * .25, n),
|
|
112
|
+
"accent-foreground": o(.42, c ? .02 : Math.min(.16, r * .9), n),
|
|
113
|
+
ring: o(c ? .3 : .48, c ? .02 : Math.min(.22, r * 1.5), n),
|
|
114
|
+
destructive: o(.55, .22, 25),
|
|
115
|
+
"destructive-foreground": o(.985, 0, 0),
|
|
116
|
+
glow: o(.62, c ? .02 : Math.min(.2, r * 1.4), n),
|
|
117
|
+
"glow-2": o(.65, c ? .02 : r * 1.05, n + 30),
|
|
118
|
+
tint: o(.21, .02, n),
|
|
119
|
+
"glow-strength": String({
|
|
120
|
+
off: 0,
|
|
121
|
+
soft: .4,
|
|
122
|
+
bright: .8
|
|
123
|
+
}[e.glow]),
|
|
124
|
+
...u
|
|
125
|
+
} : {
|
|
126
|
+
background: l(i ? .13 : .155),
|
|
127
|
+
foreground: o(.97, .004, n),
|
|
128
|
+
card: l(i ? .17 : .195),
|
|
129
|
+
"card-foreground": o(.97, .004, n),
|
|
130
|
+
popover: l(i ? .18 : .21),
|
|
131
|
+
"popover-foreground": o(.97, .004, n),
|
|
132
|
+
secondary: l(.25),
|
|
133
|
+
"secondary-foreground": o(.97, .004, n),
|
|
134
|
+
muted: l(.235),
|
|
135
|
+
"muted-foreground": l(i ? .84 : .72, 1.5),
|
|
136
|
+
border: l(i ? .4 : .28, 1.5),
|
|
137
|
+
input: l(i ? .4 : .28, 1.5),
|
|
138
|
+
primary: o(c ? .88 : .72, r, n),
|
|
139
|
+
"primary-foreground": o(c ? .2 : .17, c ? .01 : .03, n),
|
|
140
|
+
accent: o(.3, r * .35, n),
|
|
141
|
+
"accent-foreground": o(.88, r * .5, n),
|
|
142
|
+
ring: o(.72, r, n),
|
|
143
|
+
destructive: o(.64, .2, 25),
|
|
144
|
+
"destructive-foreground": o(.985, 0, 0),
|
|
145
|
+
glow: o(.7, c ? .02 : r, n),
|
|
146
|
+
"glow-2": o(.72, c ? .02 : r * .75, n + 30),
|
|
147
|
+
tint: o(1, 0, 0),
|
|
148
|
+
"glow-strength": String({
|
|
149
|
+
off: 0,
|
|
150
|
+
soft: .55,
|
|
151
|
+
bright: 1
|
|
152
|
+
}[e.glow]),
|
|
153
|
+
...u
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function l(e, { appearance: t = "dark", target: n } = {}) {
|
|
157
|
+
let r = n ?? document.documentElement;
|
|
158
|
+
for (let [n, i] of Object.entries(c(e, t))) r.style.setProperty(`--${n}`, i);
|
|
159
|
+
}
|
|
160
|
+
function u(e) {
|
|
161
|
+
let t = e ?? document.documentElement;
|
|
162
|
+
for (let e of Object.keys(c(n))) t.style.removeProperty(`--${e}`);
|
|
163
|
+
}
|
|
164
|
+
function d(r) {
|
|
165
|
+
let i = typeof r == "object" && r ? r : {}, a = (e, t, n) => t.includes(e) ? e : n, o = n, s = t.map((e) => e.id);
|
|
166
|
+
return {
|
|
167
|
+
preset: typeof i.preset == "string" && (i.preset === "custom" || s.includes(i.preset)) ? i.preset : o.preset,
|
|
168
|
+
hue: typeof i.hue == "number" && Number.isFinite(i.hue) ? (Math.round(i.hue) % 360 + 360) % 360 : o.hue,
|
|
169
|
+
intensity: a(i.intensity, e, o.intensity),
|
|
170
|
+
tint: a(i.tint, ["neutral", "tinted"], o.tint),
|
|
171
|
+
contrast: a(i.contrast, ["standard", "high"], o.contrast),
|
|
172
|
+
glow: a(i.glow, [
|
|
173
|
+
"off",
|
|
174
|
+
"soft",
|
|
175
|
+
"bright"
|
|
176
|
+
], o.glow),
|
|
177
|
+
topography: a(i.topography, [
|
|
178
|
+
"off",
|
|
179
|
+
"subtle",
|
|
180
|
+
"visible"
|
|
181
|
+
], o.topography)
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function f(e) {
|
|
185
|
+
let [t, n, r] = e.split(" ").map(Number), i = n * Math.cos(r * Math.PI / 180), a = n * Math.sin(r * Math.PI / 180), o = (t + .3963377774 * i + .2158037573 * a) ** 3, s = (t - .1055613458 * i - .0638541728 * a) ** 3, c = (t - .0894841775 * i - 1.291485548 * a) ** 3, l = (e) => Math.min(1, Math.max(0, e));
|
|
186
|
+
return [
|
|
187
|
+
l(4.0767416621 * o - 3.3077115913 * s + .2309699292 * c),
|
|
188
|
+
l(-1.2684380046 * o + 2.6097574011 * s - .3413193965 * c),
|
|
189
|
+
l(-.0041960863 * o - .7034186147 * s + 1.707614701 * c)
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
function p(e, t) {
|
|
193
|
+
let n = (e) => {
|
|
194
|
+
let [t, n, r] = f(e);
|
|
195
|
+
return .2126 * t + .7152 * n + .0722 * r;
|
|
196
|
+
}, [r, i] = [n(e), n(t)].sort((e, t) => t - e);
|
|
197
|
+
return (r + .05) / (i + .05);
|
|
198
|
+
}
|
|
199
|
+
//#endregion
|
|
200
|
+
export { n as DEFAULT_THEME, e as INTENSITIES, t as PRESETS, r as applyPreset, l as applyTheme, p as contrastRatio, i as customize, d as normalizeTheme, f as oklchToLinearRgb, u as resetTheme, c as themeVars };
|
|
@@ -24,9 +24,15 @@ export declare function useAnchoredPopup<T extends HTMLElement = HTMLDivElement>
|
|
|
24
24
|
};
|
|
25
25
|
popupRef: import('react').RefObject<T | null>;
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* The popup's position: below the trigger (above it if there's no room below),
|
|
29
|
+
* lined up with its start or end edge, or centred on it. For parts that take
|
|
30
|
+
* their own `align`/`offset` (PopoverContent, MenuContent).
|
|
31
|
+
*/
|
|
32
|
+
export declare function anchoredStyle(id: string, { align, offset, matchWidth }?: Omit<AnchoredPopupOptions, 'onOpenChange'>): CSSProperties;
|
|
27
33
|
export interface AnchoredPopupOptions {
|
|
28
|
-
/** Line the popup up with the trigger's start (default) or end edge. */
|
|
29
|
-
align?: 'start' | 'end';
|
|
34
|
+
/** Line the popup up with the trigger's start (default) or end edge, or centre it. */
|
|
35
|
+
align?: 'start' | 'end' | 'center';
|
|
30
36
|
/** Gap below the trigger, in px. */
|
|
31
37
|
offset?: number;
|
|
32
38
|
/** At least as wide as the trigger (e.g. a select's list). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnchoredPopup.d.ts","sourceRoot":"","sources":["../../packages/utils/useAnchoredPopup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmD,MAAM,OAAO,CAAC;AAEvF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EAAE,EACrE,KAAe,EACf,MAAU,EACV,UAAkB,EAClB,YAAY,GACf,GAAE,oBAAyB;;;oBAgBb,OAAO;;;;;;eA4BsB,aAAa
|
|
1
|
+
{"version":3,"file":"useAnchoredPopup.d.ts","sourceRoot":"","sources":["../../packages/utils/useAnchoredPopup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmD,MAAM,OAAO,CAAC;AAEvF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EAAE,EACrE,KAAe,EACf,MAAU,EACV,UAAkB,EAClB,YAAY,GACf,GAAE,oBAAyB;;;oBAgBb,OAAO;;;;;;eA4BsB,aAAa;;;;;;;;;EAWxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CACzB,EAAE,EAAE,MAAM,EACV,EAAE,KAAe,EAAE,MAAU,EAAE,UAAkB,EAAE,GAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAM,GACrG,aAAa,CAcf;AAED,MAAM,WAAW,oBAAoB;IACjC,sFAAsF;IACtF,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback as e, useEffect as t, useId as n, useRef as r, useState as i } from "react";
|
|
3
|
+
//#region packages/utils/useAnchoredPopup.ts
|
|
4
|
+
function a({ align: a = "start", offset: s = 4, matchWidth: c = !1, onOpenChange: l } = {}) {
|
|
5
|
+
let u = `zen__popup-${n().replace(/[^\w-]/g, "")}`, d = r(null), [f, p] = i(!1), m = r(l);
|
|
6
|
+
m.current = l;
|
|
7
|
+
let h = r(!1), g = e((e) => {
|
|
8
|
+
p(e), h.current !== e && (h.current = e, m.current?.(e));
|
|
9
|
+
}, []), _ = e((e) => {
|
|
10
|
+
let t = d.current;
|
|
11
|
+
if (t) {
|
|
12
|
+
try {
|
|
13
|
+
e ? t.showPopover?.() : t.hidePopover?.();
|
|
14
|
+
} catch {}
|
|
15
|
+
g(e);
|
|
16
|
+
}
|
|
17
|
+
}, [g]);
|
|
18
|
+
return t(() => {
|
|
19
|
+
let e = d.current;
|
|
20
|
+
if (!e) return;
|
|
21
|
+
let t = (e) => g(e.newState === "open");
|
|
22
|
+
return e.addEventListener("toggle", t), () => e.removeEventListener("toggle", t);
|
|
23
|
+
}, [g]), {
|
|
24
|
+
id: u,
|
|
25
|
+
open: f,
|
|
26
|
+
setOpen: _,
|
|
27
|
+
triggerProps: {
|
|
28
|
+
popoverTarget: u,
|
|
29
|
+
"aria-expanded": f,
|
|
30
|
+
"aria-controls": u,
|
|
31
|
+
"data-popup-open": f || void 0,
|
|
32
|
+
style: { anchorName: `--${u}` }
|
|
33
|
+
},
|
|
34
|
+
popupProps: {
|
|
35
|
+
ref: d,
|
|
36
|
+
id: u,
|
|
37
|
+
popover: "auto",
|
|
38
|
+
style: o(u, {
|
|
39
|
+
align: a,
|
|
40
|
+
offset: s,
|
|
41
|
+
matchWidth: c
|
|
42
|
+
})
|
|
43
|
+
},
|
|
44
|
+
popupRef: d
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function o(e, { align: t = "start", offset: n = 4, matchWidth: r = !1 } = {}) {
|
|
48
|
+
let i = {
|
|
49
|
+
start: "block-end span-inline-end",
|
|
50
|
+
end: "block-end span-inline-start",
|
|
51
|
+
center: "block-end center"
|
|
52
|
+
}[t];
|
|
53
|
+
return {
|
|
54
|
+
positionAnchor: `--${e}`,
|
|
55
|
+
positionArea: i,
|
|
56
|
+
positionTryFallbacks: "flip-block",
|
|
57
|
+
inset: "auto",
|
|
58
|
+
margin: `${n}px 0`,
|
|
59
|
+
...r && { minWidth: "anchor-size(width)" }
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
export { o as anchoredStyle, a as useAnchoredPopup };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLayoutEffect as e, useState as t } from "react";
|
|
3
|
+
//#region packages/utils/useVirtualList.ts
|
|
4
|
+
function n({ count: n, itemHeight: r, scrollRef: i, overscan: a = 6 }) {
|
|
5
|
+
let o = (e, t) => {
|
|
6
|
+
let i = t || r * 10;
|
|
7
|
+
return {
|
|
8
|
+
first: Math.max(0, Math.floor(e / r) - a),
|
|
9
|
+
last: Math.min(n, Math.ceil((e + i) / r) + a)
|
|
10
|
+
};
|
|
11
|
+
}, [s, c] = t(() => o(0, 0));
|
|
12
|
+
e(() => {
|
|
13
|
+
let e = i.current;
|
|
14
|
+
if (!e) return;
|
|
15
|
+
let t = () => {
|
|
16
|
+
let t = o(e.scrollTop, e.clientHeight);
|
|
17
|
+
c((e) => e.first === t.first && e.last === t.last ? e : t);
|
|
18
|
+
};
|
|
19
|
+
t(), e.addEventListener("scroll", t, { passive: !0 });
|
|
20
|
+
let n = typeof ResizeObserver > "u" ? null : new ResizeObserver(t);
|
|
21
|
+
return n?.observe(e), () => {
|
|
22
|
+
e.removeEventListener("scroll", t), n?.disconnect();
|
|
23
|
+
};
|
|
24
|
+
}, [
|
|
25
|
+
i,
|
|
26
|
+
n,
|
|
27
|
+
r,
|
|
28
|
+
a
|
|
29
|
+
]);
|
|
30
|
+
let l = Math.min(s.first, n), u = Math.min(s.last, n), d = [];
|
|
31
|
+
for (let e = l; e < u; e++) d.push({
|
|
32
|
+
index: e,
|
|
33
|
+
start: e * r,
|
|
34
|
+
size: r
|
|
35
|
+
});
|
|
36
|
+
let f = n * r;
|
|
37
|
+
return {
|
|
38
|
+
items: d,
|
|
39
|
+
totalSize: f,
|
|
40
|
+
paddingTop: d.length ? d[0].start : 0,
|
|
41
|
+
paddingBottom: d.length ? f - (d[d.length - 1].start + r) : 0
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { n as useVirtualList };
|
package/dist/variables.css
CHANGED
|
@@ -48,6 +48,19 @@
|
|
|
48
48
|
--toast-shadow: 0 18px 50px -20px oklch(0 0 0 / 0.8);
|
|
49
49
|
--backdrop-scrim: oklch(0 0 0 / 0.5);
|
|
50
50
|
--topo-strength: 0.55;
|
|
51
|
+
/*
|
|
52
|
+
* Chart series, in this order (full colours, not L C H triplets). Validated as a
|
|
53
|
+
* set on the dark and light surfaces: lightness band, chroma, colour-blind
|
|
54
|
+
* separation of neighbours, contrast. Assign in order; never cycle past 8.
|
|
55
|
+
*/
|
|
56
|
+
--chart-1: #3987e5;
|
|
57
|
+
--chart-2: #d95926;
|
|
58
|
+
--chart-3: #199e70;
|
|
59
|
+
--chart-4: #c98500;
|
|
60
|
+
--chart-5: #d55181;
|
|
61
|
+
--chart-6: #008300;
|
|
62
|
+
--chart-7: #9085e9;
|
|
63
|
+
--chart-8: #e66767;
|
|
51
64
|
--mx: -9999px; /* pointer position, set by <Backdrop> */
|
|
52
65
|
--my: -9999px;
|
|
53
66
|
}
|
|
@@ -87,4 +100,13 @@
|
|
|
87
100
|
--toast-shadow: 0 18px 50px -20px oklch(0.3 0.05 295 / 0.35);
|
|
88
101
|
--backdrop-scrim: oklch(0.21 0.02 295 / 0.3);
|
|
89
102
|
--topo-strength: 0.55;
|
|
103
|
+
|
|
104
|
+
--chart-1: #2a78d6;
|
|
105
|
+
--chart-2: #eb6834;
|
|
106
|
+
--chart-3: #1baf7a;
|
|
107
|
+
--chart-4: #eda100;
|
|
108
|
+
--chart-5: #e87ba4;
|
|
109
|
+
--chart-6: #008300;
|
|
110
|
+
--chart-7: #4a3aa7;
|
|
111
|
+
--chart-8: #e34948;
|
|
90
112
|
}
|