@gratiaos/ui 1.0.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/LICENSE +243 -0
- package/README.md +170 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useMissingScrew.d.ts +40 -0
- package/dist/hooks/useMissingScrew.d.ts.map +1 -0
- package/dist/hooks/useMissingScrew.js +76 -0
- package/dist/hooks/useMissingScrew.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/pad/Button.d.ts +10 -0
- package/dist/pad/Button.d.ts.map +1 -0
- package/dist/pad/Button.js +7 -0
- package/dist/pad/Button.js.map +1 -0
- package/dist/pad/Card.d.ts +8 -0
- package/dist/pad/Card.d.ts.map +1 -0
- package/dist/pad/Card.js +3 -0
- package/dist/pad/Card.js.map +1 -0
- package/dist/primitives/badge.d.ts +66 -0
- package/dist/primitives/badge.d.ts.map +1 -0
- package/dist/primitives/badge.js +23 -0
- package/dist/primitives/badge.js.map +1 -0
- package/dist/primitives/button.d.ts +60 -0
- package/dist/primitives/button.d.ts.map +1 -0
- package/dist/primitives/button.js +39 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/card.d.ts +54 -0
- package/dist/primitives/card.d.ts.map +1 -0
- package/dist/primitives/card.js +11 -0
- package/dist/primitives/card.js.map +1 -0
- package/dist/primitives/field.d.ts +107 -0
- package/dist/primitives/field.d.ts.map +1 -0
- package/dist/primitives/field.js +154 -0
- package/dist/primitives/field.js.map +1 -0
- package/dist/primitives/pill.d.ts +59 -0
- package/dist/primitives/pill.d.ts.map +1 -0
- package/dist/primitives/pill.js +26 -0
- package/dist/primitives/pill.js.map +1 -0
- package/dist/primitives/slot.d.ts +7 -0
- package/dist/primitives/slot.d.ts.map +1 -0
- package/dist/primitives/slot.js +9 -0
- package/dist/primitives/slot.js.map +1 -0
- package/dist/primitives/toast.d.ts +125 -0
- package/dist/primitives/toast.d.ts.map +1 -0
- package/dist/primitives/toast.js +462 -0
- package/dist/primitives/toast.js.map +1 -0
- package/package.json +87 -0
- package/styles/badge.css +175 -0
- package/styles/base.css +7 -0
- package/styles/button.css +257 -0
- package/styles/card.css +195 -0
- package/styles/field.css +195 -0
- package/styles/pad.css +140 -0
- package/styles/pill.css +167 -0
- package/styles/theme.css +492 -0
- package/styles/toast.css +286 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Garden UI — Toast primitive (headless)
|
|
4
|
+
* --------------------------------------
|
|
5
|
+
* Rendering is data-attribute driven; visuals live in styles/toast.css.
|
|
6
|
+
* Emit with `showToast(...)` (CustomEvent), render with `<Toaster/>`.
|
|
7
|
+
*
|
|
8
|
+
* A11y
|
|
9
|
+
* • Each item is `role="status"` with `aria-atomic="true"` so screen readers
|
|
10
|
+
* announce the toast as a single unit.
|
|
11
|
+
* • Items are focusable by default (tabIndex=0). Focus/hover pauses auto‑dismiss;
|
|
12
|
+
* blur/mouseleave resumes. Keyboard: Enter/Space dismiss (when dismissOnClick),
|
|
13
|
+
* Escape always dismisses.
|
|
14
|
+
*
|
|
15
|
+
* Theming
|
|
16
|
+
* • Duration prefers `--dur-toast`; otherwise derives from `--dur-pulse` with a
|
|
17
|
+
* generous hold. Colors/shape come from tokens: `--elev`, `--text`, `--border`,
|
|
18
|
+
* and `--color-*` accents.
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* UI data‑states (handled by the primitive)
|
|
22
|
+
* • Each toast mounts with `data-state="entering"` and clears it on next frame
|
|
23
|
+
* so CSS can ease in.
|
|
24
|
+
* • On dismiss, we set `data-state="leaving"` and remove the node after the
|
|
25
|
+
* tokenized transition (see styles/toast.css).
|
|
26
|
+
*
|
|
27
|
+
* Event API (headless, global)
|
|
28
|
+
* • showToast("Saved ✓", { variant: "positive" })
|
|
29
|
+
* • showToast({ key: "sync", title: "Syncing…", variant: "neutral" }) // keyed upsert
|
|
30
|
+
* • clearToast() // remove all
|
|
31
|
+
* • clearToast("sync") // remove item(s) with key
|
|
32
|
+
*/
|
|
33
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
34
|
+
// Detect dev mode without importing Node types (works in browser ESM).
|
|
35
|
+
function isDevEnvironment() {
|
|
36
|
+
const globalProcess = globalThis.process;
|
|
37
|
+
const env = globalProcess && typeof globalProcess === 'object' ? globalProcess.env : undefined;
|
|
38
|
+
const mode = env && typeof env === 'object' && 'NODE_ENV' in env ? env.NODE_ENV : undefined;
|
|
39
|
+
return mode !== 'production';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Dev helper — `useToasterTest()`
|
|
43
|
+
* --------------------------------
|
|
44
|
+
* Whisper: "debug should feel playful, not noisy." 🌬️
|
|
45
|
+
*
|
|
46
|
+
* Purpose
|
|
47
|
+
* • Tiny opt‑in hook to exercise the toast stack during development.
|
|
48
|
+
* • Provides a keyboard hotkey (Alt+T) that cycles demo toasts and Alt+Y to clear.
|
|
49
|
+
* • Exposes helpers to fire, clear, and run an interval-based "auto" demo.
|
|
50
|
+
*
|
|
51
|
+
* Usage
|
|
52
|
+
* import { Toaster, useToasterTest } from '@gratiaos/ui';
|
|
53
|
+
* ...
|
|
54
|
+
* function DevRoot() {
|
|
55
|
+
* useToasterTest(); // Alt+T to push a demo toast, Alt+Y to clear
|
|
56
|
+
* return <Toaster />;
|
|
57
|
+
* }
|
|
58
|
+
*/
|
|
59
|
+
export function useToasterTest(opts) {
|
|
60
|
+
const enabled = opts?.enabled ?? isDevEnvironment();
|
|
61
|
+
const intervalMs = Math.max(800, opts?.intervalMs ?? 3200);
|
|
62
|
+
const idxRef = React.useRef(0);
|
|
63
|
+
const autoRef = React.useRef(null);
|
|
64
|
+
const fireDemo = React.useCallback(() => {
|
|
65
|
+
if (typeof window === 'undefined')
|
|
66
|
+
return;
|
|
67
|
+
// A small sequence that shows: neutral → positive → warning → danger,
|
|
68
|
+
// plus a keyed upsert pair ("sync" → "synced").
|
|
69
|
+
const sequence = [
|
|
70
|
+
{ message: 'A little breeze — hello there', icon: '🪁', variant: 'neutral' },
|
|
71
|
+
{ title: 'Saved', desc: 'Your note is tucked in the timeline.', icon: '🌈', variant: 'positive' },
|
|
72
|
+
{ message: 'Heads up — something wobbled', icon: '🪶', variant: 'warning' },
|
|
73
|
+
{ key: 'sync', title: 'Syncing…', desc: 'Holding steady', icon: '🪁', variant: 'neutral' },
|
|
74
|
+
{ key: 'sync', title: 'Synced', desc: 'All good', icon: '🌈', variant: 'positive' },
|
|
75
|
+
{ title: 'Plot twist', desc: 'We rolled back the change.', icon: '🎭', variant: 'danger' },
|
|
76
|
+
];
|
|
77
|
+
const i = idxRef.current++ % sequence.length;
|
|
78
|
+
showToast(sequence[i]);
|
|
79
|
+
}, []);
|
|
80
|
+
const clearDemo = React.useCallback(() => {
|
|
81
|
+
clearToast();
|
|
82
|
+
}, []);
|
|
83
|
+
const startAuto = React.useCallback(() => {
|
|
84
|
+
if (typeof window === 'undefined')
|
|
85
|
+
return;
|
|
86
|
+
if (autoRef.current != null)
|
|
87
|
+
return; // already running
|
|
88
|
+
autoRef.current = window.setInterval(() => {
|
|
89
|
+
fireDemo();
|
|
90
|
+
}, intervalMs);
|
|
91
|
+
}, [fireDemo, intervalMs]);
|
|
92
|
+
const stopAuto = React.useCallback(() => {
|
|
93
|
+
if (autoRef.current != null) {
|
|
94
|
+
clearInterval(autoRef.current);
|
|
95
|
+
autoRef.current = null;
|
|
96
|
+
}
|
|
97
|
+
}, []);
|
|
98
|
+
React.useEffect(() => {
|
|
99
|
+
if (!enabled || typeof window === 'undefined')
|
|
100
|
+
return;
|
|
101
|
+
const onKey = (e) => {
|
|
102
|
+
// Alt+T → demo toast, Alt+Y → clear
|
|
103
|
+
const key = (e.key || '').toLowerCase();
|
|
104
|
+
if (e.altKey && key === 't') {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
fireDemo();
|
|
107
|
+
}
|
|
108
|
+
else if (e.altKey && key === 'y') {
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
clearDemo();
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
window.addEventListener('keydown', onKey);
|
|
114
|
+
// Friendly console hint (non-fatal if console is blocked)
|
|
115
|
+
try {
|
|
116
|
+
// eslint-disable-next-line no-console
|
|
117
|
+
console.info('[garden/ui] useToasterTest — Alt+T: demo toast · Alt+Y: clear · startAuto()/stopAuto() available');
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
/* noop */
|
|
121
|
+
}
|
|
122
|
+
return () => {
|
|
123
|
+
window.removeEventListener('keydown', onKey);
|
|
124
|
+
stopAuto();
|
|
125
|
+
};
|
|
126
|
+
}, [enabled, fireDemo, clearDemo, stopAuto]);
|
|
127
|
+
return {
|
|
128
|
+
fireDemo,
|
|
129
|
+
clearDemo,
|
|
130
|
+
startAuto,
|
|
131
|
+
stopAuto,
|
|
132
|
+
get running() {
|
|
133
|
+
return autoRef.current != null;
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export function showToast(messageOrOpts, opts = {}) {
|
|
138
|
+
try {
|
|
139
|
+
// SSR-safe: silently no-op when window is missing
|
|
140
|
+
if (typeof window === 'undefined')
|
|
141
|
+
return;
|
|
142
|
+
const detail = typeof messageOrOpts === 'string' ? { message: messageOrOpts, ...opts } : messageOrOpts ?? {};
|
|
143
|
+
// Ensure at least one renderable field is present
|
|
144
|
+
if (!detail.message && !detail.title && !detail.desc)
|
|
145
|
+
return;
|
|
146
|
+
window.dispatchEvent(new CustomEvent('garden:toast', { detail }));
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
/* noop */
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Clear by key or all. */
|
|
153
|
+
export function clearToast(key) {
|
|
154
|
+
try {
|
|
155
|
+
if (typeof window === 'undefined')
|
|
156
|
+
return;
|
|
157
|
+
window.dispatchEvent(new CustomEvent('garden:toast:clear', { detail: { key } }));
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
/* noop */
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function readToastBaseMs() {
|
|
164
|
+
try {
|
|
165
|
+
const css = getComputedStyle(document.documentElement);
|
|
166
|
+
// 1) Prefer explicit toast duration token if present
|
|
167
|
+
const t = css.getPropertyValue('--dur-toast').trim();
|
|
168
|
+
if (t) {
|
|
169
|
+
if (t.endsWith('ms'))
|
|
170
|
+
return Math.max(1800, parseFloat(t));
|
|
171
|
+
if (t.endsWith('s'))
|
|
172
|
+
return Math.max(1800, parseFloat(t) * 1000);
|
|
173
|
+
const n = parseFloat(t);
|
|
174
|
+
if (Number.isFinite(n))
|
|
175
|
+
return Math.max(1800, n);
|
|
176
|
+
}
|
|
177
|
+
// 2) Fallback: derive from pulse duration with a bigger hold
|
|
178
|
+
const raw = css.getPropertyValue('--dur-pulse').trim();
|
|
179
|
+
if (raw) {
|
|
180
|
+
if (raw.endsWith('ms'))
|
|
181
|
+
return Math.max(3600, parseFloat(raw) * 5);
|
|
182
|
+
if (raw.endsWith('s'))
|
|
183
|
+
return Math.max(3600, parseFloat(raw) * 1000 * 5);
|
|
184
|
+
const n = parseFloat(raw);
|
|
185
|
+
if (Number.isFinite(n))
|
|
186
|
+
return Math.max(3600, n * 5);
|
|
187
|
+
}
|
|
188
|
+
// 3) Final fallback
|
|
189
|
+
return 4200; // a touch longer than before
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return 4200;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function readTransitionMs() {
|
|
196
|
+
try {
|
|
197
|
+
const css = getComputedStyle(document.documentElement);
|
|
198
|
+
const t = css.getPropertyValue('--duration-snug').trim();
|
|
199
|
+
if (t.endsWith('ms'))
|
|
200
|
+
return Math.max(120, parseFloat(t));
|
|
201
|
+
if (t.endsWith('s'))
|
|
202
|
+
return Math.max(120, parseFloat(t) * 1000);
|
|
203
|
+
const n = parseFloat(t);
|
|
204
|
+
return Number.isFinite(n) ? Math.max(120, n) : 180;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
return 180;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Toaster — headless renderer using data attributes only.
|
|
212
|
+
* Visuals are provided by styles/toast.css.
|
|
213
|
+
*/
|
|
214
|
+
export const Toaster = ({ position = 'bottom-center', max = 3, dismissOnClick = true, className, renderIcon, focusable = true, }) => {
|
|
215
|
+
const [items, setItems] = useState([]);
|
|
216
|
+
const idRef = useRef(1);
|
|
217
|
+
const baseDuration = useMemo(() => readToastBaseMs(), []);
|
|
218
|
+
const transitionMs = useMemo(() => readTransitionMs(), []);
|
|
219
|
+
const timersRef = useRef(new Map());
|
|
220
|
+
// Stack ref for burst auto-scroll
|
|
221
|
+
const stackRef = useRef(null);
|
|
222
|
+
const hoveringStackRef = useRef(false);
|
|
223
|
+
const pinnedScrollRef = useRef(false); // true when user has scrolled away from the edge
|
|
224
|
+
// Dev visibility for auto-scroll state (pinned|free)
|
|
225
|
+
const [autoscrollPinned, setAutoscrollPinned] = useState(false);
|
|
226
|
+
function atTop(el) {
|
|
227
|
+
return el.scrollTop <= 12;
|
|
228
|
+
}
|
|
229
|
+
function atBottom(el) {
|
|
230
|
+
return el.scrollHeight - el.scrollTop - el.clientHeight <= 12;
|
|
231
|
+
}
|
|
232
|
+
// Dismiss helper that also clears timer state
|
|
233
|
+
const dismiss = (id) => {
|
|
234
|
+
// snapshot callback before state changes
|
|
235
|
+
const target = items.find((t) => t.id === id);
|
|
236
|
+
const onDismissCb = target?.onDismiss;
|
|
237
|
+
// clear timer bookkeeping first
|
|
238
|
+
const info = timersRef.current.get(id);
|
|
239
|
+
if (info?.timeoutId != null)
|
|
240
|
+
clearTimeout(info.timeoutId);
|
|
241
|
+
timersRef.current.delete(id);
|
|
242
|
+
// flag leaving to trigger CSS exit; then hard-remove after tokenized delay
|
|
243
|
+
setItems((prev) => prev.map((t) => (t.id === id ? { ...t, uiState: 'leaving' } : t)));
|
|
244
|
+
window.setTimeout(() => {
|
|
245
|
+
setItems((prev) => prev.filter((t) => t.id !== id));
|
|
246
|
+
try {
|
|
247
|
+
onDismissCb?.();
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
/* ignore */
|
|
251
|
+
}
|
|
252
|
+
}, Math.max(120, transitionMs));
|
|
253
|
+
};
|
|
254
|
+
// Schedule/clear/pause/resume helpers
|
|
255
|
+
const clearTimer = (id) => {
|
|
256
|
+
const info = timersRef.current.get(id);
|
|
257
|
+
if (info?.timeoutId != null)
|
|
258
|
+
clearTimeout(info.timeoutId);
|
|
259
|
+
};
|
|
260
|
+
const schedule = (id, delay) => {
|
|
261
|
+
clearTimer(id);
|
|
262
|
+
const startedAt = Date.now();
|
|
263
|
+
const timeoutId = window.setTimeout(() => dismiss(id), Math.max(0, delay));
|
|
264
|
+
timersRef.current.set(id, { timeoutId, startedAt, remainingMs: delay });
|
|
265
|
+
};
|
|
266
|
+
const pause = (id) => {
|
|
267
|
+
const info = timersRef.current.get(id);
|
|
268
|
+
if (!info)
|
|
269
|
+
return;
|
|
270
|
+
const elapsed = Date.now() - info.startedAt;
|
|
271
|
+
const remaining = Math.max(0, info.remainingMs - elapsed);
|
|
272
|
+
clearTimer(id);
|
|
273
|
+
timersRef.current.set(id, { timeoutId: null, startedAt: Date.now(), remainingMs: remaining });
|
|
274
|
+
};
|
|
275
|
+
const resume = (id) => {
|
|
276
|
+
const info = timersRef.current.get(id);
|
|
277
|
+
if (!info)
|
|
278
|
+
return;
|
|
279
|
+
const delay = info.remainingMs;
|
|
280
|
+
if (delay <= 0) {
|
|
281
|
+
dismiss(id);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
schedule(id, delay);
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
useEffect(() => {
|
|
288
|
+
function onToast(ev) {
|
|
289
|
+
const ce = ev;
|
|
290
|
+
const d = ce?.detail ?? {};
|
|
291
|
+
const hasContent = Boolean(d.title || d.desc || d.message);
|
|
292
|
+
if (!hasContent)
|
|
293
|
+
return;
|
|
294
|
+
const variant = d.variant ?? 'neutral';
|
|
295
|
+
const durationMs = Number(d.durationMs ?? baseDuration);
|
|
296
|
+
// Upsert by key when provided
|
|
297
|
+
if (d.key) {
|
|
298
|
+
setItems((prev) => {
|
|
299
|
+
const idx = prev.findIndex((x) => x.key === d.key);
|
|
300
|
+
if (idx >= 0) {
|
|
301
|
+
const existing = prev[idx];
|
|
302
|
+
const updated = {
|
|
303
|
+
...existing,
|
|
304
|
+
variant,
|
|
305
|
+
durationMs,
|
|
306
|
+
title: d.title ?? existing.title,
|
|
307
|
+
desc: d.desc ?? existing.desc,
|
|
308
|
+
message: d.message ?? existing.message,
|
|
309
|
+
icon: d.icon ?? existing.icon,
|
|
310
|
+
onDismiss: d.onDismiss ?? existing.onDismiss,
|
|
311
|
+
onClick: d.onClick ?? existing.onClick,
|
|
312
|
+
};
|
|
313
|
+
const next = [...prev];
|
|
314
|
+
next[idx] = updated;
|
|
315
|
+
// reschedule timer for the existing id
|
|
316
|
+
schedule(existing.id, Math.max(800, durationMs));
|
|
317
|
+
return next.slice(Math.max(0, next.length - max));
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
const id = idRef.current++;
|
|
321
|
+
const item = {
|
|
322
|
+
id,
|
|
323
|
+
key: d.key,
|
|
324
|
+
variant,
|
|
325
|
+
durationMs,
|
|
326
|
+
title: d.title,
|
|
327
|
+
desc: d.desc,
|
|
328
|
+
message: d.message,
|
|
329
|
+
icon: d.icon,
|
|
330
|
+
onDismiss: d.onDismiss,
|
|
331
|
+
onClick: d.onClick,
|
|
332
|
+
uiState: 'entering',
|
|
333
|
+
};
|
|
334
|
+
const next = [...prev, item];
|
|
335
|
+
// clear entering pose on next frame so CSS can ease to settled state
|
|
336
|
+
queueMicrotask?.(() => {
|
|
337
|
+
requestAnimationFrame(() => {
|
|
338
|
+
setItems((curr) => curr.map((t) => (t.id === id ? { ...t, uiState: undefined } : t)));
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
schedule(id, Math.max(800, durationMs));
|
|
342
|
+
return next.slice(Math.max(0, next.length - max));
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
// Normal append (no key)
|
|
348
|
+
const id = idRef.current++;
|
|
349
|
+
const item = {
|
|
350
|
+
id,
|
|
351
|
+
variant,
|
|
352
|
+
durationMs,
|
|
353
|
+
title: d.title,
|
|
354
|
+
desc: d.desc,
|
|
355
|
+
message: d.message,
|
|
356
|
+
icon: d.icon,
|
|
357
|
+
onDismiss: d.onDismiss,
|
|
358
|
+
onClick: d.onClick,
|
|
359
|
+
uiState: 'entering',
|
|
360
|
+
};
|
|
361
|
+
setItems((prev) => {
|
|
362
|
+
const next = [...prev, item];
|
|
363
|
+
return next.slice(Math.max(0, next.length - max));
|
|
364
|
+
});
|
|
365
|
+
// clear entering pose on the next frame; then set up auto-dismiss
|
|
366
|
+
queueMicrotask?.(() => {
|
|
367
|
+
requestAnimationFrame(() => {
|
|
368
|
+
setItems((curr) => curr.map((t) => (t.id === id ? { ...t, uiState: undefined } : t)));
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
const hold = Math.max(800, durationMs);
|
|
372
|
+
schedule(id, hold);
|
|
373
|
+
}
|
|
374
|
+
function onClear(ev) {
|
|
375
|
+
const ce = ev;
|
|
376
|
+
const key = ce?.detail?.key;
|
|
377
|
+
const targets = key ? items.filter((it) => it.key === key) : items.slice();
|
|
378
|
+
for (const it of targets) {
|
|
379
|
+
dismiss(it.id);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
window.addEventListener('garden:toast', onToast);
|
|
383
|
+
window.addEventListener('garden:toast:clear', onClear);
|
|
384
|
+
return () => {
|
|
385
|
+
window.removeEventListener('garden:toast', onToast);
|
|
386
|
+
window.removeEventListener('garden:toast:clear', onClear);
|
|
387
|
+
// cleanup all timers on unmount
|
|
388
|
+
for (const info of timersRef.current.values()) {
|
|
389
|
+
if (info.timeoutId != null)
|
|
390
|
+
clearTimeout(info.timeoutId);
|
|
391
|
+
}
|
|
392
|
+
timersRef.current.clear();
|
|
393
|
+
};
|
|
394
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
395
|
+
}, [baseDuration, max, items, transitionMs]);
|
|
396
|
+
// Auto-scroll the stack to the newest toast on bursts,
|
|
397
|
+
// but only when the user isn't hovering or manually scrolled away.
|
|
398
|
+
useEffect(() => {
|
|
399
|
+
const el = stackRef.current;
|
|
400
|
+
if (!el)
|
|
401
|
+
return;
|
|
402
|
+
const isBottom = position.startsWith('bottom');
|
|
403
|
+
const nearEdge = isBottom ? atBottom(el) : atTop(el);
|
|
404
|
+
// reflect current pin state for dev visibility
|
|
405
|
+
setAutoscrollPinned(hoveringStackRef.current || pinnedScrollRef.current);
|
|
406
|
+
// Only auto-scroll when we're already near the edge to avoid stealing scroll
|
|
407
|
+
if (hoveringStackRef.current || pinnedScrollRef.current || !nearEdge)
|
|
408
|
+
return;
|
|
409
|
+
// Defer until items are laid out
|
|
410
|
+
requestAnimationFrame(() => {
|
|
411
|
+
const node = stackRef.current;
|
|
412
|
+
if (!node)
|
|
413
|
+
return;
|
|
414
|
+
if (isBottom) {
|
|
415
|
+
node.scrollTo({ top: node.scrollHeight, behavior: 'smooth' });
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
node.scrollTo({ top: 0, behavior: 'smooth' });
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
}, [items, position]);
|
|
422
|
+
return (_jsx("div", { "data-ui": "toast", "data-position": position, "aria-live": "polite", className: className, children: _jsx("div", { "data-role": "stack", "data-autoscroll": autoscrollPinned ? 'pinned' : 'free', ref: stackRef, onMouseEnter: () => {
|
|
423
|
+
hoveringStackRef.current = true;
|
|
424
|
+
setAutoscrollPinned(true);
|
|
425
|
+
}, onMouseLeave: () => {
|
|
426
|
+
hoveringStackRef.current = false;
|
|
427
|
+
// reflect whether user has scrolled away from the auto edge
|
|
428
|
+
setAutoscrollPinned(pinnedScrollRef.current);
|
|
429
|
+
}, onScroll: (e) => {
|
|
430
|
+
const el = e.currentTarget;
|
|
431
|
+
const isBottom = position.startsWith('bottom');
|
|
432
|
+
pinnedScrollRef.current = isBottom ? !atBottom(el) : !atTop(el);
|
|
433
|
+
setAutoscrollPinned(pinnedScrollRef.current);
|
|
434
|
+
}, children: items.map((t) => {
|
|
435
|
+
const hasRich = Boolean(t.title || t.desc);
|
|
436
|
+
const renderedIcon = renderIcon
|
|
437
|
+
? renderIcon({ variant: t.variant, title: t.title, desc: t.desc, message: t.message, icon: t.icon, key: t.key })
|
|
438
|
+
: undefined;
|
|
439
|
+
const iconNode = renderedIcon ?? (t.icon ? _jsx("span", { "aria-hidden": true, children: t.icon }) : null);
|
|
440
|
+
const invokeClick = () => {
|
|
441
|
+
try {
|
|
442
|
+
t.onClick?.();
|
|
443
|
+
}
|
|
444
|
+
catch {
|
|
445
|
+
/* ignore */
|
|
446
|
+
}
|
|
447
|
+
if (dismissOnClick)
|
|
448
|
+
dismiss(t.id);
|
|
449
|
+
};
|
|
450
|
+
return (_jsxs("div", { role: "status", "aria-atomic": "true", "data-ui": "toast-item", "data-variant": t.variant, "data-state": t.uiState, onClick: t.onClick || dismissOnClick ? invokeClick : undefined, onMouseEnter: () => pause(t.id), onMouseLeave: () => resume(t.id), title: dismissOnClick ? 'Click to dismiss' : undefined, tabIndex: focusable ? 0 : -1, onFocus: () => pause(t.id), onBlur: () => resume(t.id), onKeyDown: (e) => {
|
|
451
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
452
|
+
e.preventDefault();
|
|
453
|
+
invokeClick();
|
|
454
|
+
}
|
|
455
|
+
else if (e.key === 'Escape') {
|
|
456
|
+
e.preventDefault();
|
|
457
|
+
dismiss(t.id);
|
|
458
|
+
}
|
|
459
|
+
}, children: [iconNode ? (_jsx("span", { "data-role": "icon", "aria-hidden": true, children: iconNode })) : null, hasRich ? (_jsxs("div", { "data-role": "content", children: [t.title ? _jsx("span", { "data-role": "title", children: t.title }) : null, t.desc ? _jsx("span", { "data-role": "desc", children: t.desc }) : null] })) : (_jsx("span", { "data-role": "message", children: t.message }))] }, t.id));
|
|
460
|
+
}) }) }));
|
|
461
|
+
};
|
|
462
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/primitives/toast.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gratiaos/ui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"funding": "https://github.com/sponsors/GratiaOS",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./primitives/Button": {
|
|
14
|
+
"types": "./dist/primitives/button.d.ts",
|
|
15
|
+
"import": "./dist/primitives/button.js"
|
|
16
|
+
},
|
|
17
|
+
"./primitives/Card": {
|
|
18
|
+
"types": "./dist/primitives/card.d.ts",
|
|
19
|
+
"import": "./dist/primitives/card.js"
|
|
20
|
+
},
|
|
21
|
+
"./primitives/Pill": {
|
|
22
|
+
"types": "./dist/primitives/pill.d.ts",
|
|
23
|
+
"import": "./dist/primitives/pill.js"
|
|
24
|
+
},
|
|
25
|
+
"./primitives/Field": {
|
|
26
|
+
"types": "./dist/primitives/field.d.ts",
|
|
27
|
+
"import": "./dist/primitives/field.js"
|
|
28
|
+
},
|
|
29
|
+
"./primitives/Toast": {
|
|
30
|
+
"types": "./dist/primitives/toast.d.ts",
|
|
31
|
+
"import": "./dist/primitives/toast.js"
|
|
32
|
+
},
|
|
33
|
+
"./primitives/Badge": {
|
|
34
|
+
"types": "./dist/primitives/badge.d.ts",
|
|
35
|
+
"import": "./dist/primitives/badge.js"
|
|
36
|
+
},
|
|
37
|
+
"./styles/base.css": {
|
|
38
|
+
"default": "./styles/base.css"
|
|
39
|
+
},
|
|
40
|
+
"./styles/button.css": {
|
|
41
|
+
"default": "./styles/button.css"
|
|
42
|
+
},
|
|
43
|
+
"./styles/card.css": {
|
|
44
|
+
"default": "./styles/card.css"
|
|
45
|
+
},
|
|
46
|
+
"./styles/field.css": {
|
|
47
|
+
"default": "./styles/field.css"
|
|
48
|
+
},
|
|
49
|
+
"./styles/toast.css": {
|
|
50
|
+
"default": "./styles/toast.css"
|
|
51
|
+
},
|
|
52
|
+
"./styles/pad.css": {
|
|
53
|
+
"default": "./styles/pad.css"
|
|
54
|
+
},
|
|
55
|
+
"./styles/theme.css": {
|
|
56
|
+
"default": "./styles/theme.css"
|
|
57
|
+
},
|
|
58
|
+
"./styles/pill.css": {
|
|
59
|
+
"default": "./styles/pill.css"
|
|
60
|
+
},
|
|
61
|
+
"./styles/badge.css": {
|
|
62
|
+
"default": "./styles/badge.css"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"files": [
|
|
66
|
+
"dist/**",
|
|
67
|
+
"styles/**",
|
|
68
|
+
"README.md",
|
|
69
|
+
"LICENSE"
|
|
70
|
+
],
|
|
71
|
+
"sideEffects": [
|
|
72
|
+
"**/*.css",
|
|
73
|
+
"styles/*.css"
|
|
74
|
+
],
|
|
75
|
+
"peerDependencies": {
|
|
76
|
+
"react": "^18 || ^19"
|
|
77
|
+
},
|
|
78
|
+
"devDependencies": {
|
|
79
|
+
"typescript": "^5.6.3",
|
|
80
|
+
"react": "^19.1.1",
|
|
81
|
+
"@types/react": "^19.1.13"
|
|
82
|
+
},
|
|
83
|
+
"scripts": {
|
|
84
|
+
"build": "tsc -p tsconfig.build.json && node ./scripts/copy-styles.mjs",
|
|
85
|
+
"check:headers": "node ./scripts/check-headers.mjs"
|
|
86
|
+
}
|
|
87
|
+
}
|