gridsmith-ui 0.6.0 → 0.6.2
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/charts.js +2 -2
- package/dist/{chunk-XUBVMRIE.js → chunk-GX6O72IV.js} +7 -7
- package/dist/chunk-GX6O72IV.js.map +1 -0
- package/dist/{chunk-OUYJXVLQ.js → chunk-QGBG72OB.js} +3 -3
- package/dist/{chunk-OUYJXVLQ.js.map → chunk-QGBG72OB.js.map} +1 -1
- package/dist/{chunk-CHNY75QI.js → chunk-R5QGJURZ.js} +3 -3
- package/dist/{chunk-CHNY75QI.js.map → chunk-R5QGJURZ.js.map} +1 -1
- package/dist/{chunk-IUBWNDUK.js → chunk-TTZSZNJ6.js} +7 -3
- package/dist/chunk-TTZSZNJ6.js.map +1 -0
- package/dist/{chunk-4SDKQDYV.js → chunk-TYU2LQGK.js} +5 -5
- package/dist/{chunk-4SDKQDYV.js.map → chunk-TYU2LQGK.js.map} +1 -1
- package/dist/data-grid.js +3 -3
- package/dist/editor.js +6 -6
- package/dist/editor.js.map +1 -1
- package/dist/{feather-V32UNIQL.js → feather-U45EQTAU.js} +4 -3
- package/dist/feather-U45EQTAU.js.map +1 -0
- package/dist/{heroicons-CA5OQ76O.js → heroicons-D3G7QU45.js} +4 -3
- package/dist/heroicons-D3G7QU45.js.map +1 -0
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.js +92 -49
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +4 -4
- package/dist/{lucide-AILUUOAJ.js → lucide-OGUV44TQ.js} +4 -3
- package/dist/lucide-OGUV44TQ.js.map +1 -0
- package/dist/{phosphor-A4JOBGMT.js → phosphor-QG2ZMEMZ.js} +4 -3
- package/dist/phosphor-QG2ZMEMZ.js.map +1 -0
- package/dist/resizable.js +3 -3
- package/dist/resizable.js.map +1 -1
- package/dist/roots.css +4 -3
- package/dist/{tabler-TVOR6AFM.js → tabler-MW2HN55L.js} +4 -3
- package/dist/tabler-MW2HN55L.js.map +1 -0
- package/dist/tokens.css +3 -2
- package/dist/utils.d.ts +5 -1
- package/dist/utils.js +1 -1
- package/dist/virtualized.js +1 -1
- package/dist-static/tokens.css +3 -2
- package/package.json +1 -1
- package/dist/chunk-IUBWNDUK.js.map +0 -1
- package/dist/chunk-XUBVMRIE.js.map +0 -1
- package/dist/feather-V32UNIQL.js.map +0 -1
- package/dist/heroicons-CA5OQ76O.js.map +0 -1
- package/dist/lucide-AILUUOAJ.js.map +0 -1
- package/dist/phosphor-A4JOBGMT.js.map +0 -1
- package/dist/tabler-TVOR6AFM.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Skeleton } from './chunk-
|
|
2
|
-
export { Skeleton } from './chunk-
|
|
3
|
-
import { Badge } from './chunk-
|
|
4
|
-
export { Badge } from './chunk-
|
|
1
|
+
import { Skeleton } from './chunk-QGBG72OB.js';
|
|
2
|
+
export { Skeleton } from './chunk-QGBG72OB.js';
|
|
3
|
+
import { Badge } from './chunk-TYU2LQGK.js';
|
|
4
|
+
export { Badge } from './chunk-TYU2LQGK.js';
|
|
5
5
|
import { useBreakpoint } from './chunk-DPF6776I.js';
|
|
6
6
|
export { BreakpointWidthProvider, useBreakpoint } from './chunk-DPF6776I.js';
|
|
7
|
-
import { Tooltip, useTextOverflow, usePosition, Slot } from './chunk-
|
|
8
|
-
export { Tooltip, useTextOverflow } from './chunk-
|
|
9
|
-
import { Icon } from './chunk-
|
|
10
|
-
import { cn, GLASS_SURFACE, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY } from './chunk-
|
|
7
|
+
import { Tooltip, useTextOverflow, usePosition, Slot } from './chunk-R5QGJURZ.js';
|
|
8
|
+
export { Tooltip, useTextOverflow } from './chunk-R5QGJURZ.js';
|
|
9
|
+
import { Icon } from './chunk-GX6O72IV.js';
|
|
10
|
+
import { cn, GLASS_SURFACE, ACTIVE_RING, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY, HAS_FOCUS_RING, FOCUS_RING, FOCUS_WITHIN_RING } from './chunk-TTZSZNJ6.js';
|
|
11
11
|
import { createContext, forwardRef, useContext, useState, useRef, useEffect, useCallback, useId, isValidElement, cloneElement, useMemo, Children, Fragment as Fragment$1, useLayoutEffect } from 'react';
|
|
12
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
13
13
|
import { createPortal } from 'react-dom';
|
|
@@ -81,6 +81,7 @@ var Button = forwardRef(function Button2({ variant = "default", size: sizeProp,
|
|
|
81
81
|
"button",
|
|
82
82
|
{
|
|
83
83
|
ref,
|
|
84
|
+
"data-variant": variant,
|
|
84
85
|
className: cn(
|
|
85
86
|
"relative inline-flex items-center justify-center gap-ds-2 whitespace-nowrap font-medium",
|
|
86
87
|
isLink ? cn(
|
|
@@ -323,7 +324,7 @@ function Input({ className, size = "md", error = false, prefix, suffix, ...props
|
|
|
323
324
|
"rounded-[var(--ds-radius-md)]",
|
|
324
325
|
"shadow-[var(--ds-input-shadow)]",
|
|
325
326
|
hoverBorder,
|
|
326
|
-
|
|
327
|
+
HAS_FOCUS_RING,
|
|
327
328
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
328
329
|
props.disabled && "cursor-not-allowed opacity-disabled",
|
|
329
330
|
props.readOnly && "bg-[var(--ds-bg-muted)] cursor-default",
|
|
@@ -365,7 +366,7 @@ function Input({ className, size = "md", error = false, prefix, suffix, ...props
|
|
|
365
366
|
"shadow-[var(--ds-input-shadow)]",
|
|
366
367
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
367
368
|
hoverBorder,
|
|
368
|
-
|
|
369
|
+
FOCUS_RING,
|
|
369
370
|
"disabled:cursor-not-allowed disabled:opacity-disabled",
|
|
370
371
|
"read-only:bg-[var(--ds-bg-muted)] read-only:text-[var(--ds-text-secondary)] read-only:cursor-default",
|
|
371
372
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
@@ -405,7 +406,7 @@ function Textarea({ className, autoResize, maxRows, ref, ...props }) {
|
|
|
405
406
|
"shadow-[var(--ds-input-shadow)]",
|
|
406
407
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
407
408
|
"hover:border-[var(--ds-input-border-hover)]",
|
|
408
|
-
|
|
409
|
+
FOCUS_RING,
|
|
409
410
|
"disabled:cursor-not-allowed disabled:opacity-disabled disabled:hover:border-[var(--ds-input-border)]",
|
|
410
411
|
"read-only:bg-[var(--ds-bg-muted)] read-only:text-[var(--ds-text-secondary)] read-only:cursor-default read-only:hover:border-[var(--ds-input-border)]",
|
|
411
412
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
@@ -598,12 +599,13 @@ function Dropdown({
|
|
|
598
599
|
focusOption(current < 0 ? els.length - 1 : current - 1);
|
|
599
600
|
return;
|
|
600
601
|
}
|
|
601
|
-
|
|
602
|
+
const inSearch = document.activeElement === searchRef.current;
|
|
603
|
+
if (e.key === "Home" && !inSearch) {
|
|
602
604
|
e.preventDefault();
|
|
603
605
|
focusOption(0);
|
|
604
606
|
return;
|
|
605
607
|
}
|
|
606
|
-
if (e.key === "End") {
|
|
608
|
+
if (e.key === "End" && !inSearch) {
|
|
607
609
|
e.preventDefault();
|
|
608
610
|
focusOption(els.length - 1);
|
|
609
611
|
return;
|
|
@@ -675,8 +677,8 @@ function Dropdown({
|
|
|
675
677
|
"shadow-[var(--ds-input-shadow)]",
|
|
676
678
|
"transition-colors",
|
|
677
679
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
678
|
-
open && !error &&
|
|
679
|
-
|
|
680
|
+
open && !error && ACTIVE_RING,
|
|
681
|
+
FOCUS_RING,
|
|
680
682
|
"cursor-pointer disabled:cursor-not-allowed disabled:opacity-disabled",
|
|
681
683
|
!selectedValues.length && "text-[var(--ds-text-muted)]"
|
|
682
684
|
),
|
|
@@ -883,7 +885,7 @@ function Combobox({ value, onChange, options, placeholder = "Search\u2026", disa
|
|
|
883
885
|
"shadow-[var(--ds-input-shadow)]",
|
|
884
886
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
885
887
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
886
|
-
|
|
888
|
+
HAS_FOCUS_RING,
|
|
887
889
|
disabled && "opacity-disabled pointer-events-none"
|
|
888
890
|
),
|
|
889
891
|
children: [
|
|
@@ -1152,6 +1154,38 @@ function RadioGroup({ value, onChange, options, orientation = "vertical", classN
|
|
|
1152
1154
|
)
|
|
1153
1155
|
] });
|
|
1154
1156
|
}
|
|
1157
|
+
var FOCUSABLE = 'a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])';
|
|
1158
|
+
var FIELD = "input, select, textarea, [contenteditable='true']";
|
|
1159
|
+
var SAFE_BUTTON = 'button:not([data-variant="destructive"])';
|
|
1160
|
+
var OVERLAY_CLOSE_ATTR = "data-overlay-close";
|
|
1161
|
+
function focusInitial(root, opts = {}) {
|
|
1162
|
+
if (!root) return false;
|
|
1163
|
+
const all = Array.from(root.querySelectorAll(FOCUSABLE));
|
|
1164
|
+
if (!all.length) return false;
|
|
1165
|
+
const candidates = all.filter((el) => !el.hasAttribute(OVERLAY_CLOSE_ATTR));
|
|
1166
|
+
if (opts.destructive) {
|
|
1167
|
+
const safe = candidates.find((el) => el.matches(SAFE_BUTTON));
|
|
1168
|
+
if (safe) {
|
|
1169
|
+
safe.focus();
|
|
1170
|
+
return true;
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
const target = candidates.find((el) => el.matches(FIELD)) ?? candidates[0] ?? all[0];
|
|
1174
|
+
target.focus();
|
|
1175
|
+
return true;
|
|
1176
|
+
}
|
|
1177
|
+
function useReturnFocus(open) {
|
|
1178
|
+
const triggerRef = useRef(null);
|
|
1179
|
+
useEffect(() => {
|
|
1180
|
+
if (open) {
|
|
1181
|
+
triggerRef.current = document.activeElement;
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
const el = triggerRef.current;
|
|
1185
|
+
triggerRef.current = null;
|
|
1186
|
+
if (el && el.isConnected && typeof el.focus === "function") el.focus();
|
|
1187
|
+
}, [open]);
|
|
1188
|
+
}
|
|
1155
1189
|
var DAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
1156
1190
|
var MONTHS = [
|
|
1157
1191
|
"January",
|
|
@@ -1214,6 +1248,10 @@ function DatePicker({ value, onChange, placeholder = "Pick a date", disabled, cl
|
|
|
1214
1248
|
const nextMonth = () => setViewDate(new Date(year, month + 1, 1));
|
|
1215
1249
|
const startOf = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
1216
1250
|
const isDisabledDay = (d) => !!min && d < startOf(min) || !!max && d > startOf(max);
|
|
1251
|
+
useReturnFocus(open);
|
|
1252
|
+
useEffect(() => {
|
|
1253
|
+
if (open) requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
1254
|
+
}, [open]);
|
|
1217
1255
|
const selectDay = (day) => {
|
|
1218
1256
|
const d = new Date(year, month, day);
|
|
1219
1257
|
if (isDisabledDay(d)) return;
|
|
@@ -1252,7 +1290,7 @@ function DatePicker({ value, onChange, placeholder = "Pick a date", disabled, cl
|
|
|
1252
1290
|
"transition-colors cursor-pointer",
|
|
1253
1291
|
"px-ds-3 py-ds-2",
|
|
1254
1292
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
1255
|
-
open &&
|
|
1293
|
+
open && ACTIVE_RING,
|
|
1256
1294
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
1257
1295
|
value ? "text-[var(--ds-text-primary)]" : "text-[var(--ds-text-muted)]"
|
|
1258
1296
|
),
|
|
@@ -1589,6 +1627,10 @@ function DateRangePicker({
|
|
|
1589
1627
|
const pos = usePosition(triggerRef, panelRef, open, { side: "bottom", align: "start", offset: 4, flip: true });
|
|
1590
1628
|
const today = useMemo(() => startOfDay(/* @__PURE__ */ new Date()), []);
|
|
1591
1629
|
const dayNames = getOrderedDayNamesShort(weekStartsOn);
|
|
1630
|
+
useReturnFocus(open);
|
|
1631
|
+
useEffect(() => {
|
|
1632
|
+
if (open) requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
1633
|
+
}, [open]);
|
|
1592
1634
|
useEffect(() => {
|
|
1593
1635
|
if (!open) return;
|
|
1594
1636
|
const onMouse = (e) => {
|
|
@@ -1653,8 +1695,8 @@ function DateRangePicker({
|
|
|
1653
1695
|
"transition-colors cursor-pointer",
|
|
1654
1696
|
"px-ds-3 py-ds-2",
|
|
1655
1697
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
1656
|
-
open &&
|
|
1657
|
-
|
|
1698
|
+
open && ACTIVE_RING,
|
|
1699
|
+
FOCUS_RING,
|
|
1658
1700
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
1659
1701
|
summary ? "text-[var(--ds-text-primary)]" : "text-[var(--ds-text-muted)]"
|
|
1660
1702
|
),
|
|
@@ -1865,7 +1907,7 @@ function FileUpload({ onFiles, accept, multiple = true, maxSize, className, erro
|
|
|
1865
1907
|
"flex flex-col items-center justify-center gap-ds-2 cursor-pointer group",
|
|
1866
1908
|
"border-2 border-dashed rounded-[var(--ds-radius-md)]",
|
|
1867
1909
|
"transition-colors",
|
|
1868
|
-
error ? "border-[var(--ds-status-error)]" : dragOver ?
|
|
1910
|
+
error ? "border-[var(--ds-status-error)]" : dragOver ? `${ACTIVE_RING} bg-[var(--ds-accent-whisper)]` : "border-[var(--ds-border-default)] hover:border-[var(--ds-accent-primary)] hover:bg-[var(--ds-accent-whisper)]"
|
|
1869
1911
|
),
|
|
1870
1912
|
style: { padding: "var(--ds-space-8) var(--ds-space-4)" },
|
|
1871
1913
|
children: [
|
|
@@ -2148,7 +2190,7 @@ function TimePicker({
|
|
|
2148
2190
|
"transition-colors cursor-pointer",
|
|
2149
2191
|
"px-ds-3 py-ds-2",
|
|
2150
2192
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
2151
|
-
open &&
|
|
2193
|
+
open && ACTIVE_RING,
|
|
2152
2194
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
2153
2195
|
value ? "text-[var(--ds-text-primary)]" : "text-[var(--ds-text-muted)]"
|
|
2154
2196
|
),
|
|
@@ -2340,7 +2382,8 @@ function NumberInput({
|
|
|
2340
2382
|
"bg-[var(--ds-input-bg)]",
|
|
2341
2383
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
2342
2384
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
2343
|
-
|
|
2385
|
+
FOCUS_WITHIN_RING,
|
|
2386
|
+
"focus-within:hover:border-[var(--ds-border-focus)]",
|
|
2344
2387
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
2345
2388
|
className
|
|
2346
2389
|
),
|
|
@@ -2612,7 +2655,7 @@ function TagInput({
|
|
|
2612
2655
|
"shadow-[var(--ds-input-shadow)]",
|
|
2613
2656
|
"transition-colors duration-[var(--ds-transition-speed)] cursor-text",
|
|
2614
2657
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
2615
|
-
|
|
2658
|
+
HAS_FOCUS_RING,
|
|
2616
2659
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
2617
2660
|
className
|
|
2618
2661
|
),
|
|
@@ -2754,7 +2797,7 @@ function PinInput({
|
|
|
2754
2797
|
"shadow-[var(--ds-input-shadow)]",
|
|
2755
2798
|
"transition-colors",
|
|
2756
2799
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
2757
|
-
|
|
2800
|
+
FOCUS_RING,
|
|
2758
2801
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
2759
2802
|
sizes3[size],
|
|
2760
2803
|
disabled && "opacity-disabled cursor-not-allowed"
|
|
@@ -3115,7 +3158,7 @@ function ColorPicker({
|
|
|
3115
3158
|
"border-[length:var(--ds-border-width)] border-[var(--ds-input-border)]",
|
|
3116
3159
|
"rounded-[var(--ds-radius-sm)]",
|
|
3117
3160
|
"hover:border-[var(--ds-input-border-hover)]",
|
|
3118
|
-
|
|
3161
|
+
FOCUS_RING
|
|
3119
3162
|
)
|
|
3120
3163
|
}
|
|
3121
3164
|
)
|
|
@@ -3133,7 +3176,7 @@ function ColorPicker({
|
|
|
3133
3176
|
"border-[length:var(--ds-border-width)]",
|
|
3134
3177
|
"hover:scale-110 transition-transform",
|
|
3135
3178
|
"focus-visible:shadow-[var(--ds-shadow-focus)] outline-none",
|
|
3136
|
-
swatch.toLowerCase() === value.toLowerCase() ?
|
|
3179
|
+
swatch.toLowerCase() === value.toLowerCase() ? ACTIVE_RING : "border-[var(--ds-border-default)]"
|
|
3137
3180
|
),
|
|
3138
3181
|
style: { backgroundColor: swatch },
|
|
3139
3182
|
"aria-label": swatch
|
|
@@ -3724,7 +3767,7 @@ function MentionInput({
|
|
|
3724
3767
|
"shadow-[var(--ds-input-shadow)]",
|
|
3725
3768
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
3726
3769
|
"hover:border-[var(--ds-input-border-hover)]",
|
|
3727
|
-
|
|
3770
|
+
FOCUS_RING,
|
|
3728
3771
|
"disabled:cursor-not-allowed disabled:opacity-disabled disabled:hover:border-[var(--ds-input-border)]",
|
|
3729
3772
|
"transition-colors duration-[var(--ds-transition-speed)]"
|
|
3730
3773
|
)
|
|
@@ -3948,8 +3991,8 @@ var Card = forwardRef(function Card2({
|
|
|
3948
3991
|
isSelectable && !disabled && "cursor-pointer select-none transition-all duration-[var(--ds-transition-speed)] ease-[var(--ds-transition-ease)]",
|
|
3949
3992
|
isSelectable && !disabled && !selected && "hover:border-[var(--ds-accent-primary)]",
|
|
3950
3993
|
isSelectable && "focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]",
|
|
3951
|
-
showRing &&
|
|
3952
|
-
hasSelectType && selected && "
|
|
3994
|
+
(showRing || hasSelectType && selected) && ACTIVE_RING,
|
|
3995
|
+
hasSelectType && selected && "bg-[var(--ds-accent-subtle)]",
|
|
3953
3996
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
3954
3997
|
className
|
|
3955
3998
|
),
|
|
@@ -4494,7 +4537,7 @@ function Table({
|
|
|
4494
4537
|
"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
|
|
4495
4538
|
"rounded-[var(--ds-radius-md)] bg-[var(--ds-bg-surface)]",
|
|
4496
4539
|
"p-ds-4 space-y-ds-2",
|
|
4497
|
-
isSelected &&
|
|
4540
|
+
isSelected && ACTIVE_RING,
|
|
4498
4541
|
onRowClick && "cursor-pointer hover:bg-[var(--ds-bg-muted)] focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]"
|
|
4499
4542
|
),
|
|
4500
4543
|
onClick: onRowClick ? () => onRowClick(row, originalIdx) : void 0,
|
|
@@ -7067,7 +7110,7 @@ function ChatInputBar({ onSend }) {
|
|
|
7067
7110
|
"border-[length:var(--ds-border-width)] border-[var(--ds-border-default)]",
|
|
7068
7111
|
"bg-[var(--ds-input-bg)]",
|
|
7069
7112
|
"shadow-[var(--ds-input-shadow)]",
|
|
7070
|
-
|
|
7113
|
+
FOCUS_WITHIN_RING,
|
|
7071
7114
|
"transition-colors duration-[var(--ds-transition-speed)]"
|
|
7072
7115
|
),
|
|
7073
7116
|
children: [
|
|
@@ -7776,7 +7819,7 @@ function Popover({ open, onOpenChange, trigger, children, side = "bottom", align
|
|
|
7776
7819
|
};
|
|
7777
7820
|
}, [open, onOpenChange]);
|
|
7778
7821
|
useEffect(() => {
|
|
7779
|
-
if (open) floatingRef.current
|
|
7822
|
+
if (open) focusInitial(floatingRef.current);
|
|
7780
7823
|
}, [open]);
|
|
7781
7824
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7782
7825
|
/* @__PURE__ */ jsx(
|
|
@@ -8061,9 +8104,9 @@ function StepCircle({ status, index, onClick, clickable }) {
|
|
|
8061
8104
|
clickable && "cursor-pointer",
|
|
8062
8105
|
!clickable && "cursor-default",
|
|
8063
8106
|
status === "complete" && "bg-[var(--ds-accent-primary)] [background-image:var(--ds-gradient)] text-[var(--ds-text-on-primary)]",
|
|
8064
|
-
status === "current" &&
|
|
8107
|
+
status === "current" && `border-2 ${ACTIVE_RING} text-[var(--ds-accent-primary)] bg-[var(--ds-bg-surface)]`,
|
|
8065
8108
|
status === "error" && "bg-[var(--ds-status-error)] text-[var(--ds-text-on-primary)]",
|
|
8066
|
-
status === "loading" &&
|
|
8109
|
+
status === "loading" && `border-2 ${ACTIVE_RING} text-[var(--ds-accent-primary)] bg-[var(--ds-bg-surface)] animate-pulse`,
|
|
8067
8110
|
status === "upcoming" && "border-[length:var(--ds-border-width)] border-[var(--ds-border-default)] text-[var(--ds-text-muted)] bg-[var(--ds-bg-surface)]"
|
|
8068
8111
|
),
|
|
8069
8112
|
children: status === "complete" ? /* @__PURE__ */ jsx(Icon, { name: "check", size: 14 }) : status === "error" ? /* @__PURE__ */ jsx(Icon, { name: "warning", size: 14 }) : index + 1
|
|
@@ -9910,11 +9953,12 @@ function Drawer({ open, onClose, position = "right", width = "400px", title, chi
|
|
|
9910
9953
|
if (!container) unlockBodyScroll();
|
|
9911
9954
|
};
|
|
9912
9955
|
}, [open, container]);
|
|
9956
|
+
useReturnFocus(open);
|
|
9913
9957
|
useEffect(() => {
|
|
9914
|
-
if (!open) return;
|
|
9915
|
-
const
|
|
9916
|
-
|
|
9917
|
-
}, [open]);
|
|
9958
|
+
if (!open || !mounted) return;
|
|
9959
|
+
const raf = requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
9960
|
+
return () => cancelAnimationFrame(raf);
|
|
9961
|
+
}, [open, mounted]);
|
|
9918
9962
|
if (!mounted) return null;
|
|
9919
9963
|
const slide = slideClasses[position];
|
|
9920
9964
|
const isHorizontal = position === "left" || position === "right";
|
|
@@ -9984,6 +10028,7 @@ function Drawer({ open, onClose, position = "right", width = "400px", title, chi
|
|
|
9984
10028
|
"button",
|
|
9985
10029
|
{
|
|
9986
10030
|
onClick: onClose,
|
|
10031
|
+
...{ [OVERLAY_CLOSE_ATTR]: "" },
|
|
9987
10032
|
className: "text-[var(--ds-text-muted)] hover:text-[var(--ds-text-primary)] transition-colors cursor-pointer",
|
|
9988
10033
|
"aria-label": "Close",
|
|
9989
10034
|
children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 18 })
|
|
@@ -10552,7 +10597,6 @@ var sizeClasses = {
|
|
|
10552
10597
|
xl: "max-w-4xl",
|
|
10553
10598
|
full: "max-w-[calc(100vw-2rem)]"
|
|
10554
10599
|
};
|
|
10555
|
-
var FOCUSABLE = 'a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])';
|
|
10556
10600
|
function Dialog({ open, onClose, title, description, children, footer, variant = "default", size = "md", alert = false, container, onSubmit }) {
|
|
10557
10601
|
const titleId = useId();
|
|
10558
10602
|
const descriptionId = useId();
|
|
@@ -10584,14 +10628,7 @@ function Dialog({ open, onClose, title, description, children, footer, variant =
|
|
|
10584
10628
|
if (!open) return;
|
|
10585
10629
|
triggerRef.current = document.activeElement;
|
|
10586
10630
|
requestAnimationFrame(() => {
|
|
10587
|
-
|
|
10588
|
-
if (focusable?.length) {
|
|
10589
|
-
if (variant === "destructive" && focusable.length > 1) {
|
|
10590
|
-
focusable[focusable.length - 1].focus();
|
|
10591
|
-
} else {
|
|
10592
|
-
focusable[0].focus();
|
|
10593
|
-
}
|
|
10594
|
-
}
|
|
10631
|
+
focusInitial(dialogRef.current, { destructive: variant === "destructive" });
|
|
10595
10632
|
});
|
|
10596
10633
|
}, [open, variant]);
|
|
10597
10634
|
useEffect(() => {
|
|
@@ -10662,6 +10699,7 @@ function Dialog({ open, onClose, title, description, children, footer, variant =
|
|
|
10662
10699
|
{
|
|
10663
10700
|
type: "button",
|
|
10664
10701
|
onClick: onClose,
|
|
10702
|
+
...{ [OVERLAY_CLOSE_ATTR]: "" },
|
|
10665
10703
|
className: "absolute right-4 top-4 text-[var(--ds-text-muted)] hover:text-[var(--ds-text-primary)] transition-colors cursor-pointer",
|
|
10666
10704
|
"aria-label": "Close",
|
|
10667
10705
|
children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 18 })
|
|
@@ -11070,6 +11108,12 @@ function Sheet({ open, onClose, title, children, footer, snapPoints = [0.5, 0.92
|
|
|
11070
11108
|
function handleTransitionEnd() {
|
|
11071
11109
|
if (!open) setMounted(false);
|
|
11072
11110
|
}
|
|
11111
|
+
useReturnFocus(open);
|
|
11112
|
+
useEffect(() => {
|
|
11113
|
+
if (!open || !mounted) return;
|
|
11114
|
+
const raf = requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
11115
|
+
return () => cancelAnimationFrame(raf);
|
|
11116
|
+
}, [open, mounted]);
|
|
11073
11117
|
useEffect(() => {
|
|
11074
11118
|
if (!open) return;
|
|
11075
11119
|
const onKeyDown = (e) => {
|
|
@@ -11182,6 +11226,7 @@ function Sheet({ open, onClose, title, children, footer, snapPoints = [0.5, 0.92
|
|
|
11182
11226
|
"button",
|
|
11183
11227
|
{
|
|
11184
11228
|
onClick: onClose,
|
|
11229
|
+
...{ [OVERLAY_CLOSE_ATTR]: "" },
|
|
11185
11230
|
className: "text-[var(--ds-text-muted)] hover:text-[var(--ds-text-primary)] transition-colors cursor-pointer",
|
|
11186
11231
|
"aria-label": "Close",
|
|
11187
11232
|
children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 18 })
|
|
@@ -11953,8 +11998,6 @@ var toastSeq = 0;
|
|
|
11953
11998
|
function ToastProvider({ children, maxVisible = 3, position = "bottom-right", duration = 3e3, mode, pauseOnHover = true }) {
|
|
11954
11999
|
const [queue, setQueue] = useState([]);
|
|
11955
12000
|
const isMobile = useBreakpoint("sm");
|
|
11956
|
-
const queueRef = useRef(queue);
|
|
11957
|
-
queueRef.current = queue;
|
|
11958
12001
|
const dismiss = useCallback((id) => {
|
|
11959
12002
|
setQueue((q) => q.filter((t) => t.id !== id));
|
|
11960
12003
|
}, []);
|