@sequenceholdings/atlas-ui 0.1.5 → 0.3.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/index.d.ts CHANGED
@@ -18,6 +18,7 @@ import { JSX } from 'react/jsx-runtime';
18
18
  import * as LabelPrimitive from '@radix-ui/react-label';
19
19
  import * as PopoverPrimitive from '@radix-ui/react-popover';
20
20
  import { QueryKey } from '@tanstack/react-query';
21
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
21
22
  import * as React_2 from 'react';
22
23
  import { ReactNode } from 'react';
23
24
  import * as RechartsPrimitive from 'recharts';
@@ -40,39 +41,39 @@ import { UseMutationResult } from '@tanstack/react-query';
40
41
  import { VariantProps } from 'class-variance-authority';
41
42
 
42
43
  export declare const AGENT_TINTS: {
43
- readonly teal: {
44
- readonly bg: "bg-teal-50 dark:bg-teal-500/10";
45
- readonly fg: "text-teal-700 dark:text-teal-300";
44
+ readonly 'identity-1': {
45
+ readonly bg: "bg-identity-1";
46
+ readonly fg: "text-identity-1-text";
46
47
  };
47
- readonly violet: {
48
- readonly bg: "bg-violet-50 dark:bg-violet-500/10";
49
- readonly fg: "text-violet-700 dark:text-violet-300";
48
+ readonly 'identity-2': {
49
+ readonly bg: "bg-identity-2";
50
+ readonly fg: "text-identity-2-text";
50
51
  };
51
- readonly amber: {
52
- readonly bg: "bg-amber-50 dark:bg-amber-500/10";
53
- readonly fg: "text-amber-700 dark:text-amber-300";
52
+ readonly 'identity-3': {
53
+ readonly bg: "bg-identity-3";
54
+ readonly fg: "text-identity-3-text";
54
55
  };
55
- readonly rose: {
56
- readonly bg: "bg-rose-50 dark:bg-rose-500/10";
57
- readonly fg: "text-rose-700 dark:text-rose-300";
56
+ readonly 'identity-4': {
57
+ readonly bg: "bg-identity-4";
58
+ readonly fg: "text-identity-4-text";
58
59
  };
59
- readonly sky: {
60
- readonly bg: "bg-sky-50 dark:bg-sky-500/10";
61
- readonly fg: "text-sky-700 dark:text-sky-300";
60
+ readonly 'identity-5': {
61
+ readonly bg: "bg-identity-5";
62
+ readonly fg: "text-identity-5-text";
62
63
  };
63
- readonly emerald: {
64
- readonly bg: "bg-emerald-50 dark:bg-emerald-500/10";
65
- readonly fg: "text-emerald-700 dark:text-emerald-300";
64
+ readonly 'identity-6': {
65
+ readonly bg: "bg-identity-6";
66
+ readonly fg: "text-identity-6-text";
66
67
  };
67
- readonly orange: {
68
- readonly bg: "bg-orange-50 dark:bg-orange-500/10";
69
- readonly fg: "text-orange-700 dark:text-orange-300";
68
+ readonly 'identity-7': {
69
+ readonly bg: "bg-identity-7";
70
+ readonly fg: "text-identity-7-text";
70
71
  };
71
- readonly indigo: {
72
- readonly bg: "bg-indigo-50 dark:bg-indigo-500/10";
73
- readonly fg: "text-indigo-700 dark:text-indigo-300";
72
+ readonly 'identity-8': {
73
+ readonly bg: "bg-identity-8";
74
+ readonly fg: "text-identity-8-text";
74
75
  };
75
- readonly graphite: {
76
+ readonly neutral: {
76
77
  readonly bg: "bg-muted";
77
78
  readonly fg: "text-foreground";
78
79
  };
@@ -80,7 +81,11 @@ export declare const AGENT_TINTS: {
80
81
 
81
82
  export declare type AgentTint = keyof typeof AGENT_TINTS;
82
83
 
83
- export declare const AlertDialog: React_2.FC<AlertDialogPrimitive.AlertDialogProps>;
84
+ export declare function AlertDialog({ open, defaultOpen, onOpenChange, ...props }: React_2.ComponentProps<typeof AlertDialogPrimitive.Root>): JSX.Element;
85
+
86
+ export declare namespace AlertDialog {
87
+ var displayName: string | undefined;
88
+ }
84
89
 
85
90
  export declare const AlertDialogAction: React_2.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & React_2.RefAttributes<HTMLButtonElement>>;
86
91
 
@@ -406,7 +411,7 @@ export declare function ChartLegendContent({ className, hideIcon, payload, verti
406
411
 
407
412
  export declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
408
413
 
409
- export declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: {
414
+ export declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, footer, }: {
410
415
  active?: boolean;
411
416
  payload?: TooltipPayloadItem[];
412
417
  className?: string;
@@ -420,16 +425,22 @@ export declare function ChartTooltipContent({ active, payload, className, indica
420
425
  color?: string;
421
426
  nameKey?: string;
422
427
  labelKey?: string;
428
+ footer?: (visible: TooltipPayloadItem[]) => React_2.ReactNode;
423
429
  }): JSX.Element | null;
424
430
 
425
431
  /**
426
432
  * Checkbox — matches shadcn's canonical 16×16 design:
427
433
  *
428
434
  * - `size-4` (16px)
429
- * - `rounded-xs` (4px, `--radius-xs`) — a square with softened corners,
430
- * NOT a circle. Atlas's scale shifted `--radius-sm` up to 8px, which
431
- * would render a 16px checkbox as a 50% pill. `--radius-xs` closes
432
- * the gap at the tight end specifically for cases like this.
435
+ * - `rounded-badge` (4px) — a square with softened corners, NOT a
436
+ * circle. This is chosen for its VALUE, not its name: a checkbox is
437
+ * not a label about something, but `badge` is the only radius role
438
+ * that stays 4px in both flag states, and 4px is the only step that
439
+ * keeps a 16px box reading as a square. `rounded-control` would make
440
+ * it a full circle — that is a radio button, not a checkbox — and
441
+ * `rounded-surface-nested` (8px) would render it as a 50% pill.
442
+ * Kept off the legacy `rounded-xs` so it survives the DES-324
443
+ * deletion of the legacy scale (DES-379).
433
444
  * - Neutral `border-input` when unchecked; flips to `border-primary`
434
445
  * when checked/indeterminate so the outline blends with the fill.
435
446
  * - No drop shadow — consistent with the rest of Atlas's form
@@ -472,9 +483,9 @@ export declare interface CheckboxOption<T extends string> {
472
483
 
473
484
  declare const CHIP_TONES: {
474
485
  readonly default: "border-border bg-accent text-muted-foreground";
475
- readonly danger: "border-red-200 bg-red-50 text-red-700 dark:border-red-500/30 dark:bg-red-500/15 dark:text-red-300";
476
- readonly warning: "border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/15 dark:text-amber-300";
477
- readonly success: "border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/15 dark:text-emerald-300";
486
+ readonly danger: "border-danger/30 bg-danger-tint text-danger-text";
487
+ readonly warning: "border-warning/30 bg-warning-tint text-warning-text";
488
+ readonly success: "border-success/30 bg-success-tint text-success-text";
478
489
  };
479
490
 
480
491
  export declare const ChoiceCard: React_2.ForwardRefExoticComponent<ChoiceCardProps & React_2.RefAttributes<HTMLLabelElement>>;
@@ -792,7 +803,7 @@ export declare function DashboardShell({ title, range, actions, children, classN
792
803
  * >
793
804
  * <KpiTileGrid columns={4}>…</KpiTileGrid>
794
805
  * <ChartCard />
795
- * <ProDataTable … />
806
+ * <Table … />
796
807
  * </DashboardShell>
797
808
  * ```
798
809
  *
@@ -815,19 +826,6 @@ declare interface DashboardShellProps {
815
826
  bodyClassName?: string;
816
827
  }
817
828
 
818
- export declare function DataTable<T>({ columns, data, pageSize, defaultSort, emptyMessage, onRowClick, rowClassName, className, }: DataTableProps<T>): JSX.Element;
819
-
820
- declare interface DataTableProps<T> {
821
- columns: ColumnDef<T, unknown>[];
822
- data: T[];
823
- pageSize?: number;
824
- defaultSort?: SortingState;
825
- emptyMessage?: string;
826
- onRowClick?: (row: T) => void;
827
- rowClassName?: (row: Row<T>) => string | undefined;
828
- className?: string;
829
- }
830
-
831
829
  /**
832
830
  * Date picker working in `Date | null` (or `DateRange | null` in `mode="range"`).
833
831
  * Radix popover + react-day-picker calendar + free-text parsing + presets.
@@ -1015,7 +1013,11 @@ export declare type DefaultTaskStatus = 'todo' | 'in_progress' | 'blocked' | 'do
1015
1013
  * - Content rounds to `rounded-surface` (DES-313) — the top-level
1016
1014
  * container radius role shared with Card.
1017
1015
  */
1018
- export declare const Dialog: React_2.FC<DialogPrimitive.DialogProps>;
1016
+ export declare function Dialog({ open, defaultOpen, onOpenChange, ...props }: React_2.ComponentProps<typeof DialogPrimitive.Root>): JSX.Element;
1017
+
1018
+ export declare namespace Dialog {
1019
+ var displayName: string | undefined;
1020
+ }
1019
1021
 
1020
1022
  /**
1021
1023
  * DialogBody — the scrollable body region between DialogHeader and
@@ -1312,6 +1314,10 @@ export declare function EditorTopBarStatusBadge({ tone, label, }: {
1312
1314
 
1313
1315
  /**
1314
1316
  * Consistent empty-state placeholder for tables and content areas.
1317
+ *
1318
+ * For a full-route / full-panel "instead of content" screen (404, access
1319
+ * denied, page error), use {@link PageState} from `./page-state` instead —
1320
+ * this component is the small inline placeholder, not the page template.
1315
1321
  */
1316
1322
  export declare function EmptyState({ icon, message, detail, className }: EmptyStateProps): JSX.Element;
1317
1323
 
@@ -1326,10 +1332,9 @@ export declare interface EmptyStateProps {
1326
1332
  * The canonical inline failure banner — one treatment for "this panel could not
1327
1333
  * load", used across apps so a failure reads the same everywhere.
1328
1334
  *
1329
- * The red hue is fixed on purpose: it carries meaning, not theme. What it does
1330
- * carry is a dark pair — the `-50`/`-200`/`-700` triplet is tuned for a white
1331
- * surface and goes near-illegible on a dark one, so `.dark` lifts the fill to a
1332
- * translucent step and lightens the ink. Light is byte-identical.
1335
+ * Status roles (`danger-tint` / `danger-text` / `danger`) carry the hue and
1336
+ * flip under dark mode — no hand-rolled `dark:` pairs needed here. Distinct
1337
+ * from {@link PageState}, which is the full-surface utility layout.
1333
1338
  */
1334
1339
  export declare function ErrorState({ message, className }: ErrorStateProps): JSX.Element;
1335
1340
 
@@ -1522,7 +1527,7 @@ export declare function FilterPill({ label, options, selected, onChange }: Filte
1522
1527
  * grab-bag of visual treatments:
1523
1528
  *
1524
1529
  * - Height: h-9 (36px)
1525
- * - Radius: rounded-sm (8px, `--radius-sm`)
1530
+ * - Radius: `rounded-control` — operable and one line tall
1526
1531
  * - Border/bg: `border bg-card` — `--input` border, raised surface,
1527
1532
  * same palette as Select/Input. NOT `background`: that is
1528
1533
  * the PAGE role (ds-neutral-50 under v2, not white), which
@@ -1744,24 +1749,6 @@ export declare const HoverCardContent: React_2.ForwardRefExoticComponent<Omit<Ho
1744
1749
 
1745
1750
  export declare const HoverCardTrigger: React_2.ForwardRefExoticComponent<HoverCardPrimitive.HoverCardTriggerProps & React_2.RefAttributes<HTMLAnchorElement>>;
1746
1751
 
1747
- /**
1748
- * Click-to-edit date cell. Shows a custom (or default) display until clicked,
1749
- * then a native date input that commits on change/blur. The closed display is a
1750
- * render prop so callers can style it (e.g. a due-date heat pill).
1751
- */
1752
- export declare function InlineDateCell({ value, onCommit, renderDisplay, placeholder, title, className, }: InlineDateCellProps): JSX.Element;
1753
-
1754
- export declare interface InlineDateCellProps {
1755
- /** ISO date string (YYYY-MM-DD) or null. */
1756
- value: string | null;
1757
- onCommit: (value: string | null) => void | Promise<void>;
1758
- /** Closed-state display for the value; defaults to the raw date or a dash. */
1759
- renderDisplay?: (value: string | null) => ReactNode;
1760
- placeholder?: string;
1761
- title?: string;
1762
- className?: string;
1763
- }
1764
-
1765
1752
  /**
1766
1753
  * Click-to-edit text cell. Reads as plain text until clicked, then becomes a
1767
1754
  * borderless auto-growing textarea that commits on blur / Enter (⌘/Ctrl+Enter
@@ -1870,32 +1857,6 @@ declare type KpiTone = 'neutral' | 'warn' | 'info';
1870
1857
 
1871
1858
  export declare const Label: React_2.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React_2.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: ClassProp | undefined) => string> & LabelOwnProps & React_2.RefAttributes<HTMLLabelElement>>;
1872
1859
 
1873
- export declare function LabeledSelect({ label, icon, value, options, onChange, ariaLabel, prefixHiddenValues, className, }: LabeledSelectProps): JSX.Element;
1874
-
1875
- export declare interface LabeledSelectOption {
1876
- value: string;
1877
- label: string;
1878
- }
1879
-
1880
- export declare interface LabeledSelectProps {
1881
- /** Muted prefix shown before the value, e.g. `"Group by"` / `"Sorted by"`. */
1882
- label: string;
1883
- /** Leading glyph (kept small + muted by the pill). */
1884
- icon?: React_2.ReactNode;
1885
- value: string;
1886
- options: LabeledSelectOption[];
1887
- onChange: (value: string) => void;
1888
- /** Accessible name for the trigger. Defaults to `label`. */
1889
- ariaLabel?: string;
1890
- /**
1891
- * Values for which the muted prefix is hidden — the pill shows just the
1892
- * value. Use for "off"/"none" states where the prefix reads awkwardly
1893
- * (e.g. `'none'` → "No grouping", not "Group by No grouping").
1894
- */
1895
- prefixHiddenValues?: readonly string[];
1896
- className?: string;
1897
- }
1898
-
1899
1860
  declare interface LabelOwnProps {
1900
1861
  /**
1901
1862
  * When true, appends a red `*` marker after the label text. Prefer this
@@ -2019,7 +1980,7 @@ declare interface MultiSelectListProps extends MultiSelectCoreProps {
2019
1980
  * - Command (cmdk) for the searchable list and keyboard nav.
2020
1981
  * - Checkbox (Radix) for per-row selection state.
2021
1982
  *
2022
- * Visual contract for the trigger mirrors `SelectTrigger` (h-9, rounded-sm,
1983
+ * Visual contract for the trigger mirrors `SelectTrigger` (h-9, rounded-field,
2023
1984
  * border + bg-field) so a toolbar of MultiSelect + Input + Select reads
2024
1985
  * as one coherent control row. Active state stacks up to `maxStackedIcons`
2025
1986
  * selected-row icons (with a generic silhouette for icon-less rows) and
@@ -2111,25 +2072,30 @@ export declare interface OptimisticResourceContext<TData> {
2111
2072
  }
2112
2073
 
2113
2074
  /**
2114
- * A small, reusable inline picker: the current value renders as a clickable
2115
- * badge/dot that opens a popover of the actual options (each shown with its own
2116
- * swatch + a check on the active one). A nicer, on-brand replacement for a
2117
- * native <select> for short, visual enum fields like status and health.
2075
+ * Overlay scope (DES-368) — how far an overlay's scrim and panel reach.
2076
+ *
2077
+ * "viewport" — covers the whole shell, chrome included. A modal is a
2078
+ * platform-level interruption: it blocks everything, so it dims
2079
+ * everything. This is Dialog / AlertDialog, and it is why they stay
2080
+ * `fixed`.
2081
+ *
2082
+ * "surface" — covers only the app it belongs to. A slide-out panel is
2083
+ * an extension of the current app, not an interruption of the
2084
+ * platform, so it must not black out the sidebar and header. This is
2085
+ * Sheet's default.
2086
+ *
2087
+ * Surface scope is plain `absolute` — it bounds itself against the nearest
2088
+ * positioned ancestor, which is each app's own root (`.atlas-shell-routes`
2089
+ * for most apps, `#chat-container` in Chat). No portal retargeting and no
2090
+ * app-surface context: overlays already portal in-tree at the app layout
2091
+ * root, so the app box is the containing block on offer.
2092
+ *
2093
+ * The attribute is stamped into the DOM as well as driving the classes.
2094
+ * It is the seam other layers key off — chat.css rebinds surface-scoped
2095
+ * overlays, and the artifact sandbox bridge reads it to decide whether a
2096
+ * scrim should elevate to the host shell.
2118
2097
  */
2119
- export declare function OptionPicker<T extends string>({ value, options, onChange, children, ariaLabel, align, triggerClassName, contentClassName, }: OptionPickerProps<T>): JSX.Element;
2120
-
2121
- export declare interface OptionPickerProps<T extends string> {
2122
- value: T;
2123
- options: PickerOption<T>[];
2124
- onChange: (value: T) => void;
2125
- /** Closed-state trigger content (the badge / dot shown in the row). */
2126
- children: ReactNode;
2127
- ariaLabel?: string;
2128
- align?: 'start' | 'center' | 'end';
2129
- /** Extra classes for the trigger button (e.g. padding around a small dot). */
2130
- triggerClassName?: string;
2131
- contentClassName?: string;
2132
- }
2098
+ declare type OverlayScope = "viewport" | "surface";
2133
2099
 
2134
2100
  export declare function PageSkeleton({ variant, className }: PageSkeletonProps): JSX.Element;
2135
2101
 
@@ -2140,6 +2106,28 @@ export declare interface PageSkeletonProps {
2140
2106
 
2141
2107
  export declare type PageSkeletonVariant = 'default' | 'list' | 'detail' | 'dashboard';
2142
2108
 
2109
+ export declare function PageState({ icon, tone, title, description, actions, details, detailsLabel, size, className, align, }: PageStateProps): JSX.Element;
2110
+
2111
+ export declare interface PageStateProps {
2112
+ /** Tabler (or other) icon element — never an emoji. The template owns the medallion. */
2113
+ icon: ReactNode;
2114
+ tone?: PageStateTone;
2115
+ title: string;
2116
+ description?: ReactNode;
2117
+ /** Shared `Button`s (primary + optional secondary). */
2118
+ actions?: ReactNode;
2119
+ /** Optional disclosure body (stack trace / error digest). Uses Collapsible + Button — never a native `<button>`. */
2120
+ details?: ReactNode;
2121
+ detailsLabel?: string;
2122
+ size?: PageStateSize;
2123
+ className?: string;
2124
+ align?: 'start' | 'center';
2125
+ }
2126
+
2127
+ export declare type PageStateSize = NonNullable<VariantProps<typeof sizeShell>['size']>;
2128
+
2129
+ export declare type PageStateTone = NonNullable<VariantProps<typeof toneMedallion>['tone']>;
2130
+
2143
2131
  export declare function pctChange(current: number, previous: number): number | null;
2144
2132
 
2145
2133
  export declare function PercentCell({ value, dangerBelow, className, }: {
@@ -2148,14 +2136,6 @@ export declare function PercentCell({ value, dangerBelow, className, }: {
2148
2136
  className?: string;
2149
2137
  }): JSX.Element;
2150
2138
 
2151
- export declare interface PickerOption<T extends string> {
2152
- value: T;
2153
- /** Optional text label; omit when the swatch already reads as the option. */
2154
- label?: string;
2155
- /** The option's visual — a colored badge, dot, etc. */
2156
- swatch: ReactNode;
2157
- }
2158
-
2159
2139
  export declare const Popover: React_2.FC<PopoverPrimitive.PopoverProps>;
2160
2140
 
2161
2141
  export declare const PopoverAnchor: React_2.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React_2.RefAttributes<HTMLDivElement>>;
@@ -2181,8 +2161,9 @@ export declare type ProColumnDef<T> = ColumnDef<T, unknown> & {
2181
2161
  };
2182
2162
 
2183
2163
  /**
2184
- * ProDataTable — opinionated extension of the shadcn table for dashboard-style
2185
- * lists. Layered on top of `DataTable` so apps can opt into richer chrome:
2164
+ * Table — opinionated data table for dashboard-style lists (DES-267 canonical).
2165
+ * Formerly `ProDataTable`; that name remains as a temporary alias (DES-262).
2166
+ * Layered on the shadcn `TablePrimitive` parts for richer chrome:
2186
2167
  * - toolbar slot (search + filters + extras) above the header row
2187
2168
  * - uppercase, compact header cells with sort arrows (stateful)
2188
2169
  * - sticky-left columns for "name" identity (horizontal-scroll safe)
@@ -2354,8 +2335,6 @@ declare interface ProColumnMetaSticky extends ProColumnMetaBase {
2354
2335
  grow?: never;
2355
2336
  }
2356
2337
 
2357
- export declare function ProDataTable<T>({ columns, data, selectable, getRowId, selectedRowIds, onSelectionChange, enableRowSelection, rowActions, getRowLabel, searchable, filters, toolbar, actions, footer, pageSize, disablePagination, resizableColumns, columnSizingStorageKey, defaultSort, manualPagination, rowCount, pageIndex, onPageChange, manualSorting, sorting: controlledSorting, onSortingChange, manualFiltering, columnFilters: controlledColumnFilters, onColumnFiltersChange, loading, emptyMessage, onRowClick, rowHref, rowClassName, minWidth, height, bordered, variant, ariaLabel, className, }: ProDataTableProps<T>): JSX.Element;
2358
-
2359
2338
  /**
2360
2339
  * Native segmented filter for the toolbar (e.g. All / Groups / People). The
2361
2340
  * table renders the pills; the caller owns the active value and the actual
@@ -2563,6 +2542,11 @@ declare interface ProDataTableProps<T> {
2563
2542
  variant?: 'table' | 'list';
2564
2543
  /** Shown when the table is selected in a multi-table shell (optional). */
2565
2544
  ariaLabel?: string;
2545
+ /**
2546
+ * Layout only (`h-auto`, `flex-none`, width). Card fill (`bg-card`) and
2547
+ * toolbar/header chrome colors/sizes are owned by the component — do not
2548
+ * pass `bg-*` here expecting it to restyle the table surface.
2549
+ */
2566
2550
  className?: string;
2567
2551
  }
2568
2552
 
@@ -2637,24 +2621,32 @@ declare interface ProgressBarProps {
2637
2621
  }
2638
2622
 
2639
2623
  /**
2640
- * A quiet live/refresh indicator: a small green dot (muted when paused) that
2641
- * pulses subtly while a refresh is in flight, doubling as a manual-refresh
2642
- * button. Deliberately text-free — the freshness detail lives in the tooltip so
2643
- * the UI doesn't churn a ticking label.
2624
+ * Radio group — sibling of `checkbox.tsx`, sized + tokened to match.
2625
+ *
2626
+ * - 16×16 (`size-4`) so the controls align next to the same line-height
2627
+ * body text the existing Checkbox does.
2628
+ * - `rounded-full` (radios are circles).
2629
+ * - `border-input` when unchecked; flips to `border-primary` when checked
2630
+ * so the outline blends with the fill, same pattern as `checkbox.tsx`.
2631
+ * - Inner dot is a `RadioGroupPrimitive.Indicator` filled `bg-primary`,
2632
+ * sized to leave a 3px gap to the outer ring — the canonical shadcn
2633
+ * radio look.
2634
+ * - No drop shadow; matches Input/Select/Button/Checkbox primitives.
2635
+ *
2636
+ * Usage:
2637
+ *
2638
+ * <RadioGroup value={selected} onValueChange={setSelected}>
2639
+ * <RadioGroupItem value="a" id="a" />
2640
+ * <Label htmlFor="a">Option A</Label>
2641
+ * ...
2642
+ * </RadioGroup>
2643
+ *
2644
+ * Each item must have a stable `value` — that's what Radix uses for the
2645
+ * controlled group state.
2644
2646
  */
2645
- export declare function RefreshIndicator({ onRefresh, isFetching, isPaused, updatedAt, className, }: RefreshIndicatorProps): JSX.Element;
2647
+ export declare const RadioGroup: React_2.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
2646
2648
 
2647
- export declare interface RefreshIndicatorProps {
2648
- /** Manually trigger a refresh. */
2649
- onRefresh: () => void;
2650
- /** A background refresh is in flight — shows a subtle pulse. */
2651
- isFetching?: boolean;
2652
- /** Auto-refresh is paused (e.g. while editing) — shows a muted dot. */
2653
- isPaused?: boolean;
2654
- /** Last successful refresh time (ms epoch) — surfaced in the tooltip only. */
2655
- updatedAt?: number;
2656
- className?: string;
2657
- }
2649
+ export declare const RadioGroupItem: React_2.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & React_2.RefAttributes<HTMLButtonElement>>;
2658
2650
 
2659
2651
  export declare function RelativeTimeCell({ primary, secondary, className, }: {
2660
2652
  primary: React_2.ReactNode;
@@ -2831,6 +2823,20 @@ export declare const SheetContent: React_2.ForwardRefExoticComponent<SheetConten
2831
2823
 
2832
2824
  declare interface SheetContentProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
2833
2825
  hideCloseButton?: boolean;
2826
+ /**
2827
+ * How far the panel and its scrim reach. Defaults to `"surface"` — a
2828
+ * slide-out belongs to the app that opened it and should leave the
2829
+ * shell's sidebar and header reachable and undimmed.
2830
+ *
2831
+ * Use `"viewport"` only for a panel that genuinely speaks for the
2832
+ * platform rather than the current app (a shell-level nav drawer, say).
2833
+ * If you are reaching for it to escape a clipping ancestor, fix the
2834
+ * ancestor instead — covering the whole shell to dodge `overflow:hidden`
2835
+ * is the bug DES-368 was filed about.
2836
+ */
2837
+ scope?: OverlayScope;
2838
+ /** Classes for the scrim, mirroring `DialogContent`'s `overlayClassName`. */
2839
+ overlayClassName?: string;
2834
2840
  }
2835
2841
 
2836
2842
  export declare const SheetDescription: React_2.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React_2.RefAttributes<HTMLParagraphElement>, "ref"> & React_2.RefAttributes<HTMLParagraphElement>>;
@@ -2845,7 +2851,9 @@ export declare const SheetHeader: {
2845
2851
  displayName: string;
2846
2852
  };
2847
2853
 
2848
- export declare const SheetOverlay: React_2.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
2854
+ export declare const SheetOverlay: React_2.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & {
2855
+ scope?: OverlayScope;
2856
+ } & React_2.RefAttributes<HTMLDivElement>>;
2849
2857
 
2850
2858
  export declare function SheetPortal({ container, ...props }: React_2.ComponentProps<typeof DialogPrimitive.Portal>): JSX.Element;
2851
2859
 
@@ -2854,6 +2862,7 @@ export declare const SheetTitle: React_2.ForwardRefExoticComponent<Omit<DialogPr
2854
2862
  export declare const SheetTrigger: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
2855
2863
 
2856
2864
  declare const sheetVariants: (props?: ({
2865
+ scope?: "surface" | "viewport" | null | undefined;
2857
2866
  side?: "bottom" | "left" | "right" | "top" | null | undefined;
2858
2867
  } & ClassProp) | undefined) => string;
2859
2868
 
@@ -2905,6 +2914,10 @@ declare interface SingleSelectListProps {
2905
2914
  searchable?: boolean;
2906
2915
  }
2907
2916
 
2917
+ declare const sizeShell: (props?: ({
2918
+ size?: "page" | "panel" | null | undefined;
2919
+ } & ClassProp) | undefined) => string;
2920
+
2908
2921
  export declare function Skeleton({ className, ...props }: React.ComponentProps<'div'>): JSX.Element;
2909
2922
 
2910
2923
  export declare function SkeletonBlock({ className, style }: {
@@ -2944,64 +2957,64 @@ export declare const spinnerVariants: (props?: ({
2944
2957
 
2945
2958
  export declare const STATUS_TONES: {
2946
2959
  readonly healthy: {
2947
- readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2948
- readonly fg: "text-emerald-700 dark:text-emerald-300";
2949
- readonly dot: "bg-emerald-500";
2960
+ readonly bg: "bg-success-tint";
2961
+ readonly fg: "text-success-text";
2962
+ readonly dot: "bg-success";
2950
2963
  };
2951
2964
  readonly active: {
2952
- readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2953
- readonly fg: "text-emerald-700 dark:text-emerald-300";
2954
- readonly dot: "bg-emerald-500";
2965
+ readonly bg: "bg-success-tint";
2966
+ readonly fg: "text-success-text";
2967
+ readonly dot: "bg-success";
2955
2968
  };
2956
2969
  readonly completed: {
2957
- readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2958
- readonly fg: "text-emerald-700 dark:text-emerald-300";
2959
- readonly dot: "bg-emerald-500";
2970
+ readonly bg: "bg-success-tint";
2971
+ readonly fg: "text-success-text";
2972
+ readonly dot: "bg-success";
2960
2973
  };
2961
2974
  readonly success: {
2962
- readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2963
- readonly fg: "text-emerald-700 dark:text-emerald-300";
2964
- readonly dot: "bg-emerald-500";
2975
+ readonly bg: "bg-success-tint";
2976
+ readonly fg: "text-success-text";
2977
+ readonly dot: "bg-success";
2965
2978
  };
2966
2979
  readonly running: {
2967
- readonly bg: "bg-sky-50 dark:bg-sky-500/15";
2968
- readonly fg: "text-sky-700 dark:text-sky-300";
2969
- readonly dot: "bg-sky-500";
2980
+ readonly bg: "bg-info-tint";
2981
+ readonly fg: "text-info-text";
2982
+ readonly dot: "bg-info";
2970
2983
  };
2971
2984
  readonly info: {
2972
- readonly bg: "bg-sky-50 dark:bg-sky-500/15";
2973
- readonly fg: "text-sky-700 dark:text-sky-300";
2974
- readonly dot: "bg-sky-500";
2985
+ readonly bg: "bg-info-tint";
2986
+ readonly fg: "text-info-text";
2987
+ readonly dot: "bg-info";
2975
2988
  };
2976
2989
  readonly queued: {
2977
- readonly bg: "bg-sky-50 dark:bg-sky-500/15";
2978
- readonly fg: "text-sky-700 dark:text-sky-300";
2979
- readonly dot: "bg-sky-500";
2990
+ readonly bg: "bg-info-tint";
2991
+ readonly fg: "text-info-text";
2992
+ readonly dot: "bg-info";
2980
2993
  };
2981
2994
  readonly drift: {
2982
- readonly bg: "bg-amber-50 dark:bg-amber-500/15";
2983
- readonly fg: "text-amber-700 dark:text-amber-300";
2984
- readonly dot: "bg-amber-500";
2995
+ readonly bg: "bg-warning-tint";
2996
+ readonly fg: "text-warning-text";
2997
+ readonly dot: "bg-warning";
2985
2998
  };
2986
2999
  readonly warn: {
2987
- readonly bg: "bg-amber-50 dark:bg-amber-500/15";
2988
- readonly fg: "text-amber-700 dark:text-amber-300";
2989
- readonly dot: "bg-amber-500";
3000
+ readonly bg: "bg-warning-tint";
3001
+ readonly fg: "text-warning-text";
3002
+ readonly dot: "bg-warning";
2990
3003
  };
2991
3004
  readonly failing: {
2992
- readonly bg: "bg-rose-50 dark:bg-rose-500/15";
2993
- readonly fg: "text-rose-700 dark:text-rose-300";
2994
- readonly dot: "bg-rose-500";
3005
+ readonly bg: "bg-danger-tint";
3006
+ readonly fg: "text-danger-text";
3007
+ readonly dot: "bg-danger";
2995
3008
  };
2996
3009
  readonly failed: {
2997
- readonly bg: "bg-rose-50 dark:bg-rose-500/15";
2998
- readonly fg: "text-rose-700 dark:text-rose-300";
2999
- readonly dot: "bg-rose-500";
3010
+ readonly bg: "bg-danger-tint";
3011
+ readonly fg: "text-danger-text";
3012
+ readonly dot: "bg-danger";
3000
3013
  };
3001
3014
  readonly error: {
3002
- readonly bg: "bg-rose-50 dark:bg-rose-500/15";
3003
- readonly fg: "text-rose-700 dark:text-rose-300";
3004
- readonly dot: "bg-rose-500";
3015
+ readonly bg: "bg-danger-tint";
3016
+ readonly fg: "text-danger-text";
3017
+ readonly dot: "bg-danger";
3005
3018
  };
3006
3019
  readonly paused: {
3007
3020
  readonly bg: "bg-muted";
@@ -3044,7 +3057,10 @@ export declare type StatusTone = keyof typeof STATUS_TONES;
3044
3057
  */
3045
3058
  export declare const Switch: React_2.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & React_2.RefAttributes<HTMLButtonElement>>;
3046
3059
 
3047
- export declare const Table: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableElement> & React_2.RefAttributes<HTMLTableElement>>;
3060
+ declare function Table<T>({ columns, data, selectable, getRowId, selectedRowIds, onSelectionChange, enableRowSelection, rowActions, getRowLabel, searchable, filters, toolbar, actions, footer, pageSize, disablePagination, resizableColumns, columnSizingStorageKey, defaultSort, manualPagination, rowCount, pageIndex, onPageChange, manualSorting, sorting: controlledSorting, onSortingChange, manualFiltering, columnFilters: controlledColumnFilters, onColumnFiltersChange, loading, emptyMessage, onRowClick, rowHref, rowClassName, minWidth, height, bordered, variant, ariaLabel, className, }: ProDataTableProps<T>): JSX.Element;
3061
+ export { Table as DataTable }
3062
+ export { Table as ProDataTable }
3063
+ export { Table }
3048
3064
 
3049
3065
  export declare const TableBody: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;
3050
3066
 
@@ -3058,6 +3074,17 @@ export declare const TableHead: React_2.ForwardRefExoticComponent<React_2.ThHTML
3058
3074
 
3059
3075
  export declare const TableHeader: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;
3060
3076
 
3077
+ export declare const TablePrimitive: {
3078
+ Root: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableElement> & React_2.RefAttributes<HTMLTableElement>>;
3079
+ Header: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;
3080
+ Body: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;
3081
+ Footer: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;
3082
+ Head: React_2.ForwardRefExoticComponent<React_2.ThHTMLAttributes<HTMLTableCellElement> & React_2.RefAttributes<HTMLTableCellElement>>;
3083
+ Row: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableRowElement> & React_2.RefAttributes<HTMLTableRowElement>>;
3084
+ Cell: React_2.ForwardRefExoticComponent<React_2.TdHTMLAttributes<HTMLTableCellElement> & React_2.RefAttributes<HTMLTableCellElement>>;
3085
+ Caption: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableCaptionElement> & React_2.RefAttributes<HTMLTableCaptionElement>>;
3086
+ };
3087
+
3061
3088
  export declare const TableRow: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableRowElement> & React_2.RefAttributes<HTMLTableRowElement>>;
3062
3089
 
3063
3090
  export declare const Tabs: React_2.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React_2.RefAttributes<HTMLDivElement>>;
@@ -3590,7 +3617,7 @@ export { toast }
3590
3617
  * the same without re-specifying options at the call site.
3591
3618
  * 2. Binds Sonner's internal classes to Atlas design tokens via
3592
3619
  * `toastOptions.classNames` — `bg-card`, `border-border`,
3593
- * `shadow-popover`, `rounded-md`, and the `--destructive` /
3620
+ * `shadow-popover`, `rounded-surface`, and the `--destructive` /
3594
3621
  * `--primary` / `--muted` pairs. Matches Dialog / Popover /
3595
3622
  * DropdownMenu so all floating UI reads as one visual family.
3596
3623
  * 3. Uses `richColors` for the semantic variants
@@ -3644,6 +3671,21 @@ export declare const toggleVariants: (props?: ({
3644
3671
  size?: "default" | "sm" | "lg" | null | undefined;
3645
3672
  } & ClassProp) | undefined) => string;
3646
3673
 
3674
+ /**
3675
+ * Full-surface utility layout for "instead of content" screens — 404, access
3676
+ * denied, page error, empty route. Distinct from {@link EmptyState} in
3677
+ * `loading-state.tsx`, which is the small inline placeholder for tables and
3678
+ * section panels. Reach for `PageState` when the whole content area (or a
3679
+ * bounded panel) is the message; reach for `EmptyState` when a table/list
3680
+ * inside an otherwise-loaded page has no rows.
3681
+ *
3682
+ * Tone → status-role mapping lives **once** here. Call sites pass a Tabler
3683
+ * glyph via `icon` and never write medallion colors themselves.
3684
+ */
3685
+ declare const toneMedallion: (props?: ({
3686
+ tone?: "neutral" | "warning" | "danger" | "restricted" | null | undefined;
3687
+ } & ClassProp) | undefined) => string;
3688
+
3647
3689
  export declare const Tooltip: React_2.FC<TooltipPrimitive.TooltipProps>;
3648
3690
 
3649
3691
  /**
@@ -4055,10 +4097,3 @@ export declare interface UserChipUser {
4055
4097
  declare type YearBias = 'past' | 'future';
4056
4098
 
4057
4099
  export { }
4058
-
4059
-
4060
- declare module 'chart.js' {
4061
- interface TooltipPositionerMap {
4062
- cursor: TooltipPositionerFunction<ChartType>;
4063
- }
4064
- }