gridsmith-ui 0.6.1 → 0.6.3
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.d.ts +3 -1
- package/dist/charts.js +8 -6
- package/dist/charts.js.map +1 -1
- 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-UYGTAVKR.js → chunk-TYU2LQGK.js} +4 -4
- package/dist/{chunk-UYGTAVKR.js.map → chunk-TYU2LQGK.js.map} +1 -1
- package/dist/data-grid.js +2 -2
- package/dist/editor.js +5 -5
- package/dist/editor.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.js +84 -38
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +3 -3
- package/dist/resizable.js +2 -2
- package/dist/resizable.js.map +1 -1
- package/dist/roots.css +4 -3
- 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/index.d.ts
CHANGED
|
@@ -658,15 +658,18 @@ interface TagProps {
|
|
|
658
658
|
declare const Tag: react.ForwardRefExoticComponent<TagProps & react.RefAttributes<HTMLSpanElement>>;
|
|
659
659
|
|
|
660
660
|
type AvatarStatus = "online" | "away" | "busy" | "offline";
|
|
661
|
+
type AvatarColor = "auto" | "accent" | "neutral" | 1 | 2 | 3 | 4 | 5;
|
|
661
662
|
interface AvatarProps {
|
|
662
663
|
initials?: string;
|
|
663
664
|
src?: string;
|
|
664
665
|
alt?: string;
|
|
665
666
|
size?: "sm" | "md" | "lg";
|
|
666
667
|
status?: AvatarStatus;
|
|
668
|
+
/** Initials background. "auto" (default) derives a stable palette tint from alt/initials so groups vary; use "accent" sparingly. */
|
|
669
|
+
color?: AvatarColor;
|
|
667
670
|
className?: string;
|
|
668
671
|
}
|
|
669
|
-
declare function Avatar({ initials, src, alt, size, status, className }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
672
|
+
declare function Avatar({ initials, src, alt, size, status, color, className }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
670
673
|
|
|
671
674
|
interface AvatarGroupItem {
|
|
672
675
|
/** Display name — used for the tooltip and, when initials are omitted, to derive them. */
|
|
@@ -675,6 +678,7 @@ interface AvatarGroupItem {
|
|
|
675
678
|
src?: string;
|
|
676
679
|
alt?: string;
|
|
677
680
|
status?: AvatarStatus;
|
|
681
|
+
color?: AvatarColor;
|
|
678
682
|
}
|
|
679
683
|
interface AvatarGroupProps {
|
|
680
684
|
items: AvatarGroupItem[];
|
|
@@ -879,12 +883,17 @@ interface Tab {
|
|
|
879
883
|
disabled?: boolean;
|
|
880
884
|
/** Truncate long labels and show tooltip on hover. */
|
|
881
885
|
truncate?: boolean;
|
|
886
|
+
/** Section heading in vertical layouts; becomes the option group in the mobile Dropdown. */
|
|
887
|
+
group?: string;
|
|
882
888
|
}
|
|
883
889
|
interface TabsArrayProps {
|
|
884
890
|
tabs: Tab[];
|
|
885
891
|
activeTab: string;
|
|
886
892
|
onTabChange: (id: string) => void;
|
|
887
|
-
|
|
893
|
+
/** "responsive" renders vertical from the md breakpoint up and collapses to a Dropdown below it. */
|
|
894
|
+
orientation?: "horizontal" | "vertical" | "responsive";
|
|
895
|
+
/** Below md, tabs either side-scroll (default) or collapse to a Dropdown. "responsive" implies "dropdown". */
|
|
896
|
+
mobile?: "scroll" | "dropdown";
|
|
888
897
|
variant?: TabsVariant;
|
|
889
898
|
fullWidth?: boolean;
|
|
890
899
|
overflow?: TabsOverflow;
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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-
|
|
7
|
+
import { Tooltip, useTextOverflow, usePosition, Slot } from './chunk-R5QGJURZ.js';
|
|
8
|
+
export { Tooltip, useTextOverflow } from './chunk-R5QGJURZ.js';
|
|
9
9
|
import { Icon } from './chunk-GX6O72IV.js';
|
|
10
|
-
import { cn, GLASS_SURFACE, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY } from './chunk-
|
|
11
|
-
import { createContext, forwardRef, useContext, useState, useRef, useEffect, useCallback, useId, isValidElement, cloneElement,
|
|
10
|
+
import { cn, GLASS_SURFACE, ACTIVE_RING, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY, FOCUS_RING, HAS_FOCUS_RING, FOCUS_WITHIN_RING } from './chunk-TTZSZNJ6.js';
|
|
11
|
+
import { createContext, forwardRef, useContext, useState, useRef, useEffect, useCallback, useId, isValidElement, cloneElement, Fragment as Fragment$1, useMemo, Children, useLayoutEffect } from 'react';
|
|
12
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
13
13
|
import { createPortal } from 'react-dom';
|
|
14
14
|
|
|
@@ -324,7 +324,7 @@ function Input({ className, size = "md", error = false, prefix, suffix, ...props
|
|
|
324
324
|
"rounded-[var(--ds-radius-md)]",
|
|
325
325
|
"shadow-[var(--ds-input-shadow)]",
|
|
326
326
|
hoverBorder,
|
|
327
|
-
|
|
327
|
+
HAS_FOCUS_RING,
|
|
328
328
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
329
329
|
props.disabled && "cursor-not-allowed opacity-disabled",
|
|
330
330
|
props.readOnly && "bg-[var(--ds-bg-muted)] cursor-default",
|
|
@@ -366,7 +366,7 @@ function Input({ className, size = "md", error = false, prefix, suffix, ...props
|
|
|
366
366
|
"shadow-[var(--ds-input-shadow)]",
|
|
367
367
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
368
368
|
hoverBorder,
|
|
369
|
-
|
|
369
|
+
FOCUS_RING,
|
|
370
370
|
"disabled:cursor-not-allowed disabled:opacity-disabled",
|
|
371
371
|
"read-only:bg-[var(--ds-bg-muted)] read-only:text-[var(--ds-text-secondary)] read-only:cursor-default",
|
|
372
372
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
@@ -406,7 +406,7 @@ function Textarea({ className, autoResize, maxRows, ref, ...props }) {
|
|
|
406
406
|
"shadow-[var(--ds-input-shadow)]",
|
|
407
407
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
408
408
|
"hover:border-[var(--ds-input-border-hover)]",
|
|
409
|
-
|
|
409
|
+
FOCUS_RING,
|
|
410
410
|
"disabled:cursor-not-allowed disabled:opacity-disabled disabled:hover:border-[var(--ds-input-border)]",
|
|
411
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)]",
|
|
412
412
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
@@ -677,8 +677,8 @@ function Dropdown({
|
|
|
677
677
|
"shadow-[var(--ds-input-shadow)]",
|
|
678
678
|
"transition-colors",
|
|
679
679
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
680
|
-
open && !error &&
|
|
681
|
-
|
|
680
|
+
open && !error && ACTIVE_RING,
|
|
681
|
+
FOCUS_RING,
|
|
682
682
|
"cursor-pointer disabled:cursor-not-allowed disabled:opacity-disabled",
|
|
683
683
|
!selectedValues.length && "text-[var(--ds-text-muted)]"
|
|
684
684
|
),
|
|
@@ -885,7 +885,7 @@ function Combobox({ value, onChange, options, placeholder = "Search\u2026", disa
|
|
|
885
885
|
"shadow-[var(--ds-input-shadow)]",
|
|
886
886
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
887
887
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
888
|
-
|
|
888
|
+
HAS_FOCUS_RING,
|
|
889
889
|
disabled && "opacity-disabled pointer-events-none"
|
|
890
890
|
),
|
|
891
891
|
children: [
|
|
@@ -1290,7 +1290,7 @@ function DatePicker({ value, onChange, placeholder = "Pick a date", disabled, cl
|
|
|
1290
1290
|
"transition-colors cursor-pointer",
|
|
1291
1291
|
"px-ds-3 py-ds-2",
|
|
1292
1292
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
1293
|
-
open &&
|
|
1293
|
+
open && ACTIVE_RING,
|
|
1294
1294
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
1295
1295
|
value ? "text-[var(--ds-text-primary)]" : "text-[var(--ds-text-muted)]"
|
|
1296
1296
|
),
|
|
@@ -1695,8 +1695,8 @@ function DateRangePicker({
|
|
|
1695
1695
|
"transition-colors cursor-pointer",
|
|
1696
1696
|
"px-ds-3 py-ds-2",
|
|
1697
1697
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
1698
|
-
open &&
|
|
1699
|
-
|
|
1698
|
+
open && ACTIVE_RING,
|
|
1699
|
+
FOCUS_RING,
|
|
1700
1700
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
1701
1701
|
summary ? "text-[var(--ds-text-primary)]" : "text-[var(--ds-text-muted)]"
|
|
1702
1702
|
),
|
|
@@ -1907,7 +1907,7 @@ function FileUpload({ onFiles, accept, multiple = true, maxSize, className, erro
|
|
|
1907
1907
|
"flex flex-col items-center justify-center gap-ds-2 cursor-pointer group",
|
|
1908
1908
|
"border-2 border-dashed rounded-[var(--ds-radius-md)]",
|
|
1909
1909
|
"transition-colors",
|
|
1910
|
-
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)]"
|
|
1911
1911
|
),
|
|
1912
1912
|
style: { padding: "var(--ds-space-8) var(--ds-space-4)" },
|
|
1913
1913
|
children: [
|
|
@@ -2190,7 +2190,7 @@ function TimePicker({
|
|
|
2190
2190
|
"transition-colors cursor-pointer",
|
|
2191
2191
|
"px-ds-3 py-ds-2",
|
|
2192
2192
|
!error && !disabled && !open && "hover:border-[var(--ds-input-border-hover)]",
|
|
2193
|
-
open &&
|
|
2193
|
+
open && ACTIVE_RING,
|
|
2194
2194
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
2195
2195
|
value ? "text-[var(--ds-text-primary)]" : "text-[var(--ds-text-muted)]"
|
|
2196
2196
|
),
|
|
@@ -2382,7 +2382,8 @@ function NumberInput({
|
|
|
2382
2382
|
"bg-[var(--ds-input-bg)]",
|
|
2383
2383
|
"transition-colors duration-[var(--ds-transition-speed)]",
|
|
2384
2384
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
2385
|
-
|
|
2385
|
+
FOCUS_WITHIN_RING,
|
|
2386
|
+
"focus-within:hover:border-[var(--ds-border-focus)]",
|
|
2386
2387
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
2387
2388
|
className
|
|
2388
2389
|
),
|
|
@@ -2654,7 +2655,7 @@ function TagInput({
|
|
|
2654
2655
|
"shadow-[var(--ds-input-shadow)]",
|
|
2655
2656
|
"transition-colors duration-[var(--ds-transition-speed)] cursor-text",
|
|
2656
2657
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
2657
|
-
|
|
2658
|
+
HAS_FOCUS_RING,
|
|
2658
2659
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
2659
2660
|
className
|
|
2660
2661
|
),
|
|
@@ -2796,7 +2797,7 @@ function PinInput({
|
|
|
2796
2797
|
"shadow-[var(--ds-input-shadow)]",
|
|
2797
2798
|
"transition-colors",
|
|
2798
2799
|
!error && !disabled && "hover:border-[var(--ds-input-border-hover)]",
|
|
2799
|
-
|
|
2800
|
+
FOCUS_RING,
|
|
2800
2801
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
2801
2802
|
sizes3[size],
|
|
2802
2803
|
disabled && "opacity-disabled cursor-not-allowed"
|
|
@@ -3157,7 +3158,7 @@ function ColorPicker({
|
|
|
3157
3158
|
"border-[length:var(--ds-border-width)] border-[var(--ds-input-border)]",
|
|
3158
3159
|
"rounded-[var(--ds-radius-sm)]",
|
|
3159
3160
|
"hover:border-[var(--ds-input-border-hover)]",
|
|
3160
|
-
|
|
3161
|
+
FOCUS_RING
|
|
3161
3162
|
)
|
|
3162
3163
|
}
|
|
3163
3164
|
)
|
|
@@ -3175,7 +3176,7 @@ function ColorPicker({
|
|
|
3175
3176
|
"border-[length:var(--ds-border-width)]",
|
|
3176
3177
|
"hover:scale-110 transition-transform",
|
|
3177
3178
|
"focus-visible:shadow-[var(--ds-shadow-focus)] outline-none",
|
|
3178
|
-
swatch.toLowerCase() === value.toLowerCase() ?
|
|
3179
|
+
swatch.toLowerCase() === value.toLowerCase() ? ACTIVE_RING : "border-[var(--ds-border-default)]"
|
|
3179
3180
|
),
|
|
3180
3181
|
style: { backgroundColor: swatch },
|
|
3181
3182
|
"aria-label": swatch
|
|
@@ -3579,13 +3580,30 @@ var sizeStyles3 = {
|
|
|
3579
3580
|
md: "h-10 w-10 text-sm",
|
|
3580
3581
|
lg: "h-12 w-12 text-base"
|
|
3581
3582
|
};
|
|
3583
|
+
var paletteStyles = {
|
|
3584
|
+
1: "bg-[var(--ds-palette-1-bg,var(--ds-bg-muted))] text-[var(--ds-palette-1-text,var(--ds-text-secondary))]",
|
|
3585
|
+
2: "bg-[var(--ds-palette-2-bg,var(--ds-bg-muted))] text-[var(--ds-palette-2-text,var(--ds-text-secondary))]",
|
|
3586
|
+
3: "bg-[var(--ds-palette-3-bg,var(--ds-bg-muted))] text-[var(--ds-palette-3-text,var(--ds-text-secondary))]",
|
|
3587
|
+
4: "bg-[var(--ds-palette-4-bg,var(--ds-bg-muted))] text-[var(--ds-palette-4-text,var(--ds-text-secondary))]",
|
|
3588
|
+
5: "bg-[var(--ds-palette-5-bg,var(--ds-bg-muted))] text-[var(--ds-palette-5-text,var(--ds-text-secondary))]"
|
|
3589
|
+
};
|
|
3590
|
+
function paletteFor(seed) {
|
|
3591
|
+
let h = 0;
|
|
3592
|
+
for (const ch of seed) h = h * 31 + ch.charCodeAt(0) >>> 0;
|
|
3593
|
+
return h % 5 + 1;
|
|
3594
|
+
}
|
|
3595
|
+
function colorStyles(color, seed) {
|
|
3596
|
+
if (color === "accent") return "bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]";
|
|
3597
|
+
if (color === "neutral") return "bg-[var(--ds-bg-muted)] text-[var(--ds-text-secondary)]";
|
|
3598
|
+
return paletteStyles[color === "auto" ? paletteFor(seed) : color];
|
|
3599
|
+
}
|
|
3582
3600
|
var statusVariantMap = {
|
|
3583
3601
|
online: "success",
|
|
3584
3602
|
away: "warning",
|
|
3585
3603
|
busy: "error",
|
|
3586
3604
|
offline: "offline"
|
|
3587
3605
|
};
|
|
3588
|
-
function Avatar({ initials, src, alt, size = "md", status, className }) {
|
|
3606
|
+
function Avatar({ initials, src, alt, size = "md", status, color = "auto", className }) {
|
|
3589
3607
|
const base = cn(
|
|
3590
3608
|
"inline-flex items-center justify-center font-medium shrink-0",
|
|
3591
3609
|
"rounded-[var(--ds-radius-full)]",
|
|
@@ -3604,7 +3622,7 @@ function Avatar({ initials, src, alt, size = "md", status, className }) {
|
|
|
3604
3622
|
{
|
|
3605
3623
|
className: cn(
|
|
3606
3624
|
base,
|
|
3607
|
-
|
|
3625
|
+
colorStyles(color, alt ?? initials ?? ""),
|
|
3608
3626
|
"border-[length:var(--ds-border-width)] border-transparent"
|
|
3609
3627
|
),
|
|
3610
3628
|
children: initials
|
|
@@ -3766,7 +3784,7 @@ function MentionInput({
|
|
|
3766
3784
|
"shadow-[var(--ds-input-shadow)]",
|
|
3767
3785
|
"placeholder:text-[var(--ds-text-muted)]",
|
|
3768
3786
|
"hover:border-[var(--ds-input-border-hover)]",
|
|
3769
|
-
|
|
3787
|
+
FOCUS_RING,
|
|
3770
3788
|
"disabled:cursor-not-allowed disabled:opacity-disabled disabled:hover:border-[var(--ds-input-border)]",
|
|
3771
3789
|
"transition-colors duration-[var(--ds-transition-speed)]"
|
|
3772
3790
|
)
|
|
@@ -3990,8 +4008,8 @@ var Card = forwardRef(function Card2({
|
|
|
3990
4008
|
isSelectable && !disabled && "cursor-pointer select-none transition-all duration-[var(--ds-transition-speed)] ease-[var(--ds-transition-ease)]",
|
|
3991
4009
|
isSelectable && !disabled && !selected && "hover:border-[var(--ds-accent-primary)]",
|
|
3992
4010
|
isSelectable && "focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]",
|
|
3993
|
-
showRing &&
|
|
3994
|
-
hasSelectType && selected && "
|
|
4011
|
+
(showRing || hasSelectType && selected) && ACTIVE_RING,
|
|
4012
|
+
hasSelectType && selected && "bg-[var(--ds-accent-subtle)]",
|
|
3995
4013
|
disabled && "opacity-disabled cursor-not-allowed",
|
|
3996
4014
|
className
|
|
3997
4015
|
),
|
|
@@ -4536,7 +4554,7 @@ function Table({
|
|
|
4536
4554
|
"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
|
|
4537
4555
|
"rounded-[var(--ds-radius-md)] bg-[var(--ds-bg-surface)]",
|
|
4538
4556
|
"p-ds-4 space-y-ds-2",
|
|
4539
|
-
isSelected &&
|
|
4557
|
+
isSelected && ACTIVE_RING,
|
|
4540
4558
|
onRowClick && "cursor-pointer hover:bg-[var(--ds-bg-muted)] focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]"
|
|
4541
4559
|
),
|
|
4542
4560
|
onClick: onRowClick ? () => onRowClick(row, originalIdx) : void 0,
|
|
@@ -6343,6 +6361,7 @@ function AvatarGroup({ items, max = 4, size = "sm", ring = "canvas", onOverflowC
|
|
|
6343
6361
|
initials,
|
|
6344
6362
|
size,
|
|
6345
6363
|
status: item.status,
|
|
6364
|
+
color: item.color,
|
|
6346
6365
|
className: ringClass
|
|
6347
6366
|
},
|
|
6348
6367
|
i
|
|
@@ -7109,7 +7128,7 @@ function ChatInputBar({ onSend }) {
|
|
|
7109
7128
|
"border-[length:var(--ds-border-width)] border-[var(--ds-border-default)]",
|
|
7110
7129
|
"bg-[var(--ds-input-bg)]",
|
|
7111
7130
|
"shadow-[var(--ds-input-shadow)]",
|
|
7112
|
-
|
|
7131
|
+
FOCUS_WITHIN_RING,
|
|
7113
7132
|
"transition-colors duration-[var(--ds-transition-speed)]"
|
|
7114
7133
|
),
|
|
7115
7134
|
children: [
|
|
@@ -7560,9 +7579,23 @@ function TabsRoot(props) {
|
|
|
7560
7579
|
overflow = "scroll",
|
|
7561
7580
|
className
|
|
7562
7581
|
} = props;
|
|
7582
|
+
const isMobile = useBreakpoint("md");
|
|
7583
|
+
const effectiveOrientation = orientation === "responsive" ? "vertical" : orientation;
|
|
7563
7584
|
if ("tabs" in props && props.tabs) {
|
|
7564
|
-
const { tabs } = props;
|
|
7565
|
-
|
|
7585
|
+
const { tabs, mobile = "scroll" } = props;
|
|
7586
|
+
const collapseToDropdown = isMobile && (orientation === "responsive" || mobile === "dropdown");
|
|
7587
|
+
if (collapseToDropdown) {
|
|
7588
|
+
return /* @__PURE__ */ jsx(
|
|
7589
|
+
Dropdown,
|
|
7590
|
+
{
|
|
7591
|
+
options: tabs.filter((t) => !t.disabled).map((t) => ({ id: t.id, label: t.label, group: t.group })),
|
|
7592
|
+
value: activeTab,
|
|
7593
|
+
onChange: (v) => onTabChange(v),
|
|
7594
|
+
className
|
|
7595
|
+
}
|
|
7596
|
+
);
|
|
7597
|
+
}
|
|
7598
|
+
if (effectiveOrientation === "vertical") {
|
|
7566
7599
|
return /* @__PURE__ */ jsx(
|
|
7567
7600
|
"div",
|
|
7568
7601
|
{
|
|
@@ -7573,7 +7606,20 @@ function TabsRoot(props) {
|
|
|
7573
7606
|
variant === "underline" && "border-r-[length:var(--ds-border-width)] border-[var(--ds-border-default)] pr-ds-1",
|
|
7574
7607
|
className
|
|
7575
7608
|
),
|
|
7576
|
-
children: tabs.map((tab) => /* @__PURE__ */
|
|
7609
|
+
children: tabs.map((tab, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
7610
|
+
tab.group && tab.group !== tabs[i - 1]?.group && /* @__PURE__ */ jsx(
|
|
7611
|
+
"span",
|
|
7612
|
+
{
|
|
7613
|
+
"aria-hidden": "true",
|
|
7614
|
+
className: cn(
|
|
7615
|
+
"px-ds-3 pb-ds-1 text-xs font-semibold uppercase tracking-wider text-[var(--ds-text-muted)]",
|
|
7616
|
+
i > 0 && "mt-ds-3"
|
|
7617
|
+
),
|
|
7618
|
+
children: tab.group
|
|
7619
|
+
}
|
|
7620
|
+
),
|
|
7621
|
+
/* @__PURE__ */ jsx(TabButton, { hasPanel: false, ...tab, orientation: effectiveOrientation, variant, activeTab, onTabChange, fullWidth, onKeyDown: (e) => handleTabKeyDown(e, tab.id, () => tabs, effectiveOrientation, onTabChange) })
|
|
7622
|
+
] }, tab.id))
|
|
7577
7623
|
}
|
|
7578
7624
|
);
|
|
7579
7625
|
}
|
|
@@ -7590,11 +7636,11 @@ function TabsRoot(props) {
|
|
|
7590
7636
|
fullWidth && "w-full",
|
|
7591
7637
|
className
|
|
7592
7638
|
),
|
|
7593
|
-
children: tabs.map((tab) => /* @__PURE__ */ jsx(TabButton, { hasPanel: false, ...tab, orientation, variant, activeTab, onTabChange, fullWidth, onKeyDown: (e) => handleTabKeyDown(e, tab.id, () => tabs,
|
|
7639
|
+
children: tabs.map((tab) => /* @__PURE__ */ jsx(TabButton, { hasPanel: false, ...tab, orientation: effectiveOrientation, variant, activeTab, onTabChange, fullWidth, onKeyDown: (e) => handleTabKeyDown(e, tab.id, () => tabs, effectiveOrientation, onTabChange) }, tab.id))
|
|
7594
7640
|
}
|
|
7595
7641
|
);
|
|
7596
7642
|
}
|
|
7597
|
-
return /* @__PURE__ */ jsx(TabsContext.Provider, { value: { activeTab, onTabChange, orientation, variant, fullWidth, overflow }, children: /* @__PURE__ */ jsx("div", { className, children: props.children }) });
|
|
7643
|
+
return /* @__PURE__ */ jsx(TabsContext.Provider, { value: { activeTab, onTabChange, orientation: effectiveOrientation, variant, fullWidth, overflow }, children: /* @__PURE__ */ jsx("div", { className, children: props.children }) });
|
|
7598
7644
|
}
|
|
7599
7645
|
var Tabs = Object.assign(TabsRoot, {
|
|
7600
7646
|
List: TabsList,
|
|
@@ -8103,9 +8149,9 @@ function StepCircle({ status, index, onClick, clickable }) {
|
|
|
8103
8149
|
clickable && "cursor-pointer",
|
|
8104
8150
|
!clickable && "cursor-default",
|
|
8105
8151
|
status === "complete" && "bg-[var(--ds-accent-primary)] [background-image:var(--ds-gradient)] text-[var(--ds-text-on-primary)]",
|
|
8106
|
-
status === "current" &&
|
|
8152
|
+
status === "current" && `border-2 ${ACTIVE_RING} text-[var(--ds-accent-primary)] bg-[var(--ds-bg-surface)]`,
|
|
8107
8153
|
status === "error" && "bg-[var(--ds-status-error)] text-[var(--ds-text-on-primary)]",
|
|
8108
|
-
status === "loading" &&
|
|
8154
|
+
status === "loading" && `border-2 ${ACTIVE_RING} text-[var(--ds-accent-primary)] bg-[var(--ds-bg-surface)] animate-pulse`,
|
|
8109
8155
|
status === "upcoming" && "border-[length:var(--ds-border-width)] border-[var(--ds-border-default)] text-[var(--ds-text-muted)] bg-[var(--ds-bg-surface)]"
|
|
8110
8156
|
),
|
|
8111
8157
|
children: status === "complete" ? /* @__PURE__ */ jsx(Icon, { name: "check", size: 14 }) : status === "error" ? /* @__PURE__ */ jsx(Icon, { name: "warning", size: 14 }) : index + 1
|