@sequenceholdings/atlas-ui 0.1.3 → 0.1.5

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
@@ -5,8 +5,10 @@ import { ClassValue } from 'clsx';
5
5
  import { ColumnDef } from '@tanstack/react-table';
6
6
  import { ColumnFiltersState } from '@tanstack/react-table';
7
7
  import { Command as Command_2 } from 'cmdk';
8
+ import { ComponentProps } from 'react';
8
9
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
9
10
  import { DayPicker } from 'react-day-picker';
11
+ import { default as default_2 } from 'react';
10
12
  import * as DialogPrimitive from '@radix-ui/react-dialog';
11
13
  import { Dispatch } from 'react';
12
14
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
@@ -18,6 +20,7 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
18
20
  import { QueryKey } from '@tanstack/react-query';
19
21
  import * as React_2 from 'react';
20
22
  import { ReactNode } from 'react';
23
+ import * as RechartsPrimitive from 'recharts';
21
24
  import { Row } from '@tanstack/react-table';
22
25
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
23
26
  import * as SelectPrimitive from '@radix-ui/react-select';
@@ -36,62 +39,42 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
36
39
  import { UseMutationResult } from '@tanstack/react-query';
37
40
  import { VariantProps } from 'class-variance-authority';
38
41
 
39
- export declare function AckBadges({ ack1, ack2, currentUserId, requiredAcks, onAck, onUnack, disabled, disabledReason, className, }: AckBadgesProps): JSX.Element;
40
-
41
- export declare interface AckBadgesProps {
42
- ack1?: AckUser;
43
- ack2?: AckUser;
44
- currentUserId: string;
45
- requiredAcks: 1 | 2;
46
- onAck?: () => void;
47
- onUnack?: () => void;
48
- disabled?: boolean;
49
- disabledReason?: string;
50
- className?: string;
51
- }
52
-
53
- export declare interface AckUser {
54
- userId: string;
55
- displayName: string;
56
- at: string;
57
- }
58
-
59
42
  export declare const AGENT_TINTS: {
60
43
  readonly teal: {
61
- readonly bg: "bg-teal-50";
62
- readonly fg: "text-teal-700";
44
+ readonly bg: "bg-teal-50 dark:bg-teal-500/10";
45
+ readonly fg: "text-teal-700 dark:text-teal-300";
63
46
  };
64
47
  readonly violet: {
65
- readonly bg: "bg-violet-50";
66
- readonly fg: "text-violet-700";
48
+ readonly bg: "bg-violet-50 dark:bg-violet-500/10";
49
+ readonly fg: "text-violet-700 dark:text-violet-300";
67
50
  };
68
51
  readonly amber: {
69
- readonly bg: "bg-amber-50";
70
- readonly fg: "text-amber-700";
52
+ readonly bg: "bg-amber-50 dark:bg-amber-500/10";
53
+ readonly fg: "text-amber-700 dark:text-amber-300";
71
54
  };
72
55
  readonly rose: {
73
- readonly bg: "bg-rose-50";
74
- readonly fg: "text-rose-700";
56
+ readonly bg: "bg-rose-50 dark:bg-rose-500/10";
57
+ readonly fg: "text-rose-700 dark:text-rose-300";
75
58
  };
76
59
  readonly sky: {
77
- readonly bg: "bg-sky-50";
78
- readonly fg: "text-sky-700";
60
+ readonly bg: "bg-sky-50 dark:bg-sky-500/10";
61
+ readonly fg: "text-sky-700 dark:text-sky-300";
79
62
  };
80
63
  readonly emerald: {
81
- readonly bg: "bg-emerald-50";
82
- readonly fg: "text-emerald-700";
64
+ readonly bg: "bg-emerald-50 dark:bg-emerald-500/10";
65
+ readonly fg: "text-emerald-700 dark:text-emerald-300";
83
66
  };
84
67
  readonly orange: {
85
- readonly bg: "bg-orange-50";
86
- readonly fg: "text-orange-700";
68
+ readonly bg: "bg-orange-50 dark:bg-orange-500/10";
69
+ readonly fg: "text-orange-700 dark:text-orange-300";
87
70
  };
88
71
  readonly indigo: {
89
- readonly bg: "bg-indigo-50";
90
- readonly fg: "text-indigo-700";
72
+ readonly bg: "bg-indigo-50 dark:bg-indigo-500/10";
73
+ readonly fg: "text-indigo-700 dark:text-indigo-300";
91
74
  };
92
75
  readonly graphite: {
93
- readonly bg: "bg-black-6";
94
- readonly fg: "text-black-80";
76
+ readonly bg: "bg-muted";
77
+ readonly fg: "text-foreground";
95
78
  };
96
79
  };
97
80
 
@@ -103,7 +86,14 @@ export declare const AlertDialogAction: React_2.ForwardRefExoticComponent<Omit<A
103
86
 
104
87
  export declare const AlertDialogCancel: React_2.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & React_2.RefAttributes<HTMLButtonElement>>;
105
88
 
106
- export declare const AlertDialogContent: React_2.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
89
+ export declare const AlertDialogContent: React_2.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & {
90
+ /**
91
+ * Classes for the scrim behind the dialog. Pair with `className` when
92
+ * raising z-index — a lone `className="z-modal"` lifts only the panel and
93
+ * leaves the overlay at `z-50` (DES-315). Additive; defaults unchanged.
94
+ */
95
+ overlayClassName?: string;
96
+ } & React_2.RefAttributes<HTMLDivElement>>;
107
97
 
108
98
  export declare const AlertDialogDescription: React_2.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React_2.RefAttributes<HTMLParagraphElement>, "ref"> & React_2.RefAttributes<HTMLParagraphElement>>;
109
99
 
@@ -194,24 +184,113 @@ declare interface BadgeProps extends React_2.HTMLAttributes<HTMLSpanElement>, Va
194
184
  }
195
185
 
196
186
  export declare const badgeVariants: (props?: ({
197
- variant?: "success" | "default" | "secondary" | "destructive" | "outline" | "ghost" | "alpha" | "beta" | null | undefined;
187
+ variant?: "default" | "success" | "secondary" | "neutral" | "destructive" | "outline" | "warning" | "info" | "danger" | "identity" | "ghost" | "alpha" | "beta" | null | undefined;
188
+ size?: "default" | "sm" | null | undefined;
198
189
  } & ClassProp) | undefined) => string;
199
190
 
200
- export declare function Breadcrumb({ ...props }: React_2.ComponentProps<"nav">): JSX.Element;
191
+ export declare function Breadcrumb({ items, interactive, maxItems, variant, renderLink, ariaLabel, className, }: BreadcrumbProps): JSX.Element | null;
201
192
 
202
- export declare function BreadcrumbEllipsis({ className, ...props }: React_2.ComponentProps<"span">): JSX.Element;
193
+ declare function Breadcrumb_2({ ...props }: React_2.ComponentProps<"nav">): JSX.Element;
203
194
 
204
- export declare function BreadcrumbItem({ className, ...props }: React_2.ComponentProps<"li">): JSX.Element;
195
+ /**
196
+ * Breadcrumb — the app-facing, presentational breadcrumb.
197
+ *
198
+ * App-agnostic on purpose so it ships in the published `atlas-ui` package and
199
+ * artifacts can use it: it takes the full `items` trail as a prop and does NOT
200
+ * touch any app registry, router, or `next/navigation`. Navigation defaults to
201
+ * plain `<a href>`; inject `renderLink` (e.g. a SPA `Link`) for client routing,
202
+ * or mount `BreadcrumbLinkProvider` once to supply it to a whole subtree (the
203
+ * Atlas shell does this). For the app-root crumb, prepend `useAppRootCrumb()`
204
+ * (`@platform/hooks/useAppRootCrumb`).
205
+ *
206
+ * Depth drives the affordance (`variant='auto'`): 0 ancestors → nothing, 1 →
207
+ * back button, 2+ → breadcrumb. Long trails collapse into an ellipsis dropdown
208
+ * (`maxItems`); every crumb truncates with a tooltip; `loading` crumbs show a
209
+ * pulsing skeleton.
210
+ */
211
+ export declare interface BreadcrumbCrumb {
212
+ label: React_2.ReactNode;
213
+ /** Navigation target for an ancestor crumb. Ignored on the last crumb (it
214
+ * renders as the current page). Prefer `href`; use `onClick` for custom nav. */
215
+ href?: string;
216
+ onClick?: () => void;
217
+ /** Render a pulsing skeleton in place of the label while its value loads. */
218
+ loading?: boolean;
219
+ }
220
+
221
+ declare function BreadcrumbEllipsis({ className, ...props }: React_2.ComponentProps<"span">): JSX.Element;
205
222
 
206
- export declare function BreadcrumbLink({ asChild, className, ...props }: React_2.ComponentProps<"a"> & {
223
+ declare function BreadcrumbItem({ className, ...props }: React_2.ComponentProps<"li">): JSX.Element;
224
+
225
+ declare function BreadcrumbLink({ asChild, className, ...props }: React_2.ComponentProps<"a"> & {
207
226
  asChild?: boolean;
208
227
  }): JSX.Element;
209
228
 
210
- export declare function BreadcrumbList({ className, ...props }: React_2.ComponentProps<"ol">): JSX.Element;
229
+ /**
230
+ * Supplies the router link that `Breadcrumb` uses for ancestor crumbs. Mount it
231
+ * once in the app shell with your SPA `Link` so every breadcrumb navigates
232
+ * client-side; without it (e.g. in a standalone artifact) breadcrumbs fall back
233
+ * to plain `<a href>`. A `renderLink` prop on an individual `Breadcrumb` still
234
+ * wins over this.
235
+ */
236
+ export declare function BreadcrumbLinkProvider({ renderLink, children, }: {
237
+ renderLink: BreadcrumbLinkRenderer;
238
+ children: React_2.ReactNode;
239
+ }): JSX.Element;
240
+
241
+ /** Renders a navigable crumb. Default is a plain `<a href>`; a host injects its
242
+ * router link (e.g. `<Link to={href}>`) so SPA nav works without coupling the
243
+ * shared component to any router. */
244
+ export declare type BreadcrumbLinkRenderer = (props: {
245
+ href: string;
246
+ onClick?: () => void;
247
+ className?: string;
248
+ children: React_2.ReactNode;
249
+ }) => React_2.ReactElement;
250
+
251
+ declare function BreadcrumbList({ className, ...props }: React_2.ComponentProps<"ol">): JSX.Element;
252
+
253
+ declare function BreadcrumbPage({ className, ...props }: React_2.ComponentProps<"span">): JSX.Element;
254
+
255
+ /**
256
+ * shadcn breadcrumb primitives, grouped under one namespace so the bare name
257
+ * `Breadcrumb` names the app-facing smart component (`./breadcrumb-nav`).
258
+ * Compose these directly only when building a bespoke trail; almost all code
259
+ * should use the smart `Breadcrumb` instead.
260
+ */
261
+ export declare const BreadcrumbPrimitive: {
262
+ Root: typeof Breadcrumb_2;
263
+ List: typeof BreadcrumbList;
264
+ Item: typeof BreadcrumbItem;
265
+ Link: typeof BreadcrumbLink;
266
+ Page: typeof BreadcrumbPage;
267
+ Separator: typeof BreadcrumbSeparator;
268
+ Ellipsis: typeof BreadcrumbEllipsis;
269
+ };
211
270
 
212
- export declare function BreadcrumbPage({ className, ...props }: React_2.ComponentProps<"span">): JSX.Element;
271
+ export declare interface BreadcrumbProps {
272
+ /** The full trail; the last item renders as the current page. */
273
+ items: BreadcrumbCrumb[];
274
+ /** When false, ancestor crumbs render as static text (e.g. loading states). */
275
+ interactive?: boolean;
276
+ /** Collapse the middle of long trails to an ellipsis-dropdown once the count
277
+ * exceeds this (clamped to >= 2 so the root + current page always show). */
278
+ maxItems?: number;
279
+ /**
280
+ * Which affordance to render. Defaults to `'auto'`, which picks by depth so
281
+ * callers never decide: **0 ancestors** → nothing; **1 ancestor** → a back
282
+ * button (a full breadcrumb is overkill one level deep); **2+ ancestors** →
283
+ * the breadcrumb trail. Force `'breadcrumb'` / `'back'` for a deliberate
284
+ * exception.
285
+ */
286
+ variant?: "auto" | "breadcrumb" | "back";
287
+ /** Injected router link. Defaults to a plain `<a href>`. */
288
+ renderLink?: BreadcrumbLinkRenderer;
289
+ ariaLabel?: string;
290
+ className?: string;
291
+ }
213
292
 
214
- export declare function BreadcrumbSeparator({ children, className, ...props }: React_2.ComponentProps<"li">): JSX.Element;
293
+ declare function BreadcrumbSeparator({ children, className, ...props }: React_2.ComponentProps<"li">): JSX.Element;
215
294
 
216
295
  /**
217
296
  * Generate heat-colored columns for time-period keys (dates, weeks, months).
@@ -242,12 +321,26 @@ export declare interface ButtonProps extends React_2.ButtonHTMLAttributes<HTMLBu
242
321
  }
243
322
 
244
323
  export declare const buttonVariants: (props?: ({
245
- variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
246
- size?: "default" | "icon" | "sm" | "lg" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
324
+ variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | "submit" | null | undefined;
325
+ size?: "default" | "sm" | "icon" | "lg" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
247
326
  } & ClassProp) | undefined) => string;
248
327
 
249
328
  export declare function Calendar({ className, classNames, showOutsideDays, ...props }: React_2.ComponentProps<typeof DayPicker>): JSX.Element;
250
329
 
330
+ export declare function CalendarGrid({ startHour, endHour, hourHeight, maxHeight, initialScrollHour, dayHeaders, children, loading, loadingText, }: CalendarGridProps): JSX.Element;
331
+
332
+ export declare interface CalendarGridProps {
333
+ startHour?: number;
334
+ endHour?: number;
335
+ hourHeight?: number;
336
+ maxHeight?: number;
337
+ initialScrollHour?: number;
338
+ dayHeaders?: default_2.ReactNode[];
339
+ children: (dayIdx: number) => default_2.ReactNode;
340
+ loading?: boolean;
341
+ loadingText?: string;
342
+ }
343
+
251
344
  /**
252
345
  * Card — the foundational surface for grouped content (dashboards,
253
346
  * metrics, forms, lists, detail pages).
@@ -266,11 +359,11 @@ export declare function Calendar({ className, classNames, showOutsideDays, ...pr
266
359
  * Drop shadows on cards quickly compound against each other in
267
360
  * dense dashboards (card-inside-card, kpi-tile-inside-card, etc.)
268
361
  * and visually muddy the hierarchy.
269
- * - Radius: `rounded-xl` via the design system — 12px at default
270
- * scale; per-app themes can tighten/loosen via `--radius`.
362
+ * - Radius: `rounded-surface` (DES-313) — the top-level-container
363
+ * radius role. Cards own their radius; call sites never pass one.
271
364
  *
272
365
  * When a card genuinely needs elevation (modal/popover-adjacent lifts,
273
- * drag affordances), opt in explicitly with `shadow-sm` / `shadow-md`
366
+ * drag affordances), opt in explicitly with `shadow-resting`
274
367
  * at the call site rather than baking it into the base.
275
368
  */
276
369
  export declare const Card: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLDivElement> & React_2.RefAttributes<HTMLDivElement>>;
@@ -283,10 +376,51 @@ export declare const CardHeader: React_2.ForwardRefExoticComponent<React_2.HTMLA
283
376
 
284
377
  export declare const CardTitle: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLDivElement> & React_2.RefAttributes<HTMLDivElement>>;
285
378
 
286
- declare interface CellCoord {
287
- rowId: string;
288
- columnId: string;
289
- }
379
+ export declare type ChartConfig = {
380
+ [key: string]: {
381
+ label?: React_2.ReactNode;
382
+ icon?: React_2.ComponentType;
383
+ } & ({
384
+ color?: string;
385
+ theme?: never;
386
+ } | {
387
+ color?: never;
388
+ theme: Record<keyof typeof THEMES, string>;
389
+ });
390
+ };
391
+
392
+ export declare function ChartContainer({ id, className, children, config, ...props }: React_2.ComponentProps<'div'> & {
393
+ config: ChartConfig;
394
+ children: React_2.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];
395
+ }): JSX.Element;
396
+
397
+ export declare const ChartLegend: typeof RechartsPrimitive.Legend;
398
+
399
+ export declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: {
400
+ className?: string;
401
+ hideIcon?: boolean;
402
+ payload?: LegendPayloadItem[];
403
+ verticalAlign?: 'top' | 'bottom';
404
+ nameKey?: string;
405
+ }): JSX.Element | null;
406
+
407
+ export declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
408
+
409
+ export declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: {
410
+ active?: boolean;
411
+ payload?: TooltipPayloadItem[];
412
+ className?: string;
413
+ indicator?: 'line' | 'dot' | 'dashed';
414
+ hideLabel?: boolean;
415
+ hideIndicator?: boolean;
416
+ label?: React_2.ReactNode;
417
+ labelFormatter?: (value: React_2.ReactNode, payload: TooltipPayloadItem[]) => React_2.ReactNode;
418
+ labelClassName?: string;
419
+ formatter?: (value: number | string, name: string | number, item: TooltipPayloadItem, index: number, payloadItem: Record<string, unknown> | undefined) => React_2.ReactNode;
420
+ color?: string;
421
+ nameKey?: string;
422
+ labelKey?: string;
423
+ }): JSX.Element | null;
290
424
 
291
425
  /**
292
426
  * Checkbox — matches shadcn's canonical 16×16 design:
@@ -337,10 +471,10 @@ export declare interface CheckboxOption<T extends string> {
337
471
  }
338
472
 
339
473
  declare const CHIP_TONES: {
340
- readonly default: "border-black-10 bg-black-2 text-black-70";
341
- readonly danger: "border-red-200 bg-red-50 text-red-700";
342
- readonly warning: "border-amber-200 bg-amber-50 text-amber-700";
343
- readonly success: "border-emerald-200 bg-emerald-50 text-emerald-700";
474
+ 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";
344
478
  };
345
479
 
346
480
  export declare const ChoiceCard: React_2.ForwardRefExoticComponent<ChoiceCardProps & React_2.RefAttributes<HTMLLabelElement>>;
@@ -472,6 +606,26 @@ declare interface ChoiceCardProps {
472
606
  className?: string;
473
607
  }
474
608
 
609
+ export declare function CitationChip({ fileName, url, kind, resolved, className, }: CitationChipProps): JSX.Element;
610
+
611
+ /**
612
+ * Inline citation chip — the rendered form of a resolved `[[cite:...]]` anchor.
613
+ * A `document` chip shows the source filename; a `web` chip shows the site (or
614
+ * host) and links out; an unresolved anchor renders a muted "source" pill so a
615
+ * fabricated/dropped citation is still visible rather than a raw token.
616
+ *
617
+ * The label truncates and reveals its full value on hover (via `TruncatedText`).
618
+ * When a `url` is present the chip is an anchor that opens in a new tab.
619
+ */
620
+ export declare interface CitationChipProps {
621
+ fileName?: string | null;
622
+ url?: string | null;
623
+ kind?: 'web' | 'document';
624
+ /** False renders the muted unresolved state. Defaults to true. */
625
+ resolved?: boolean;
626
+ className?: string;
627
+ }
628
+
475
629
  export declare function cn(...inputs: ClassValue[]): string;
476
630
 
477
631
  export declare const CodeBadge: React_2.ForwardRefExoticComponent<CodeBadgeProps & React_2.RefAttributes<HTMLSpanElement>>;
@@ -646,7 +800,7 @@ export declare function DashboardShell({ title, range, actions, children, classN
646
800
  * - Don't render a page subtitle (e.g. "N total") under the title — those
647
801
  * belong in section headers or on the table itself.
648
802
  * - Don't nest a `<DashboardShell>` inside another scroll container.
649
- * - Title renders at 16px (`--font-size-md` / `text-base`).
803
+ * - Title renders at 16px (`text-base`).
650
804
  */
651
805
  declare interface DashboardShellProps {
652
806
  /** Page title — 16px, semibold. Usually a short noun ("Agents", "Schedules"). */
@@ -661,83 +815,6 @@ declare interface DashboardShellProps {
661
815
  bodyClassName?: string;
662
816
  }
663
817
 
664
- export declare function DataReviewTable<T extends {
665
- id: string;
666
- _version?: number;
667
- }>({ columns, data, selectedRows: controlledSelected, onSelectionChange, defaultSort, emptyMessage, className, maxHeight, highlightedRowIds, enableSorting, selectionDisabled, enableCellSelection, selectedCells: controlledCells, onCellSelectionChange, }: DataReviewTableProps<T>): JSX.Element;
668
-
669
- export declare interface DataReviewTableProps<T extends {
670
- id: string;
671
- _version?: number;
672
- }> {
673
- columns: ColumnDef<T, unknown>[];
674
- data: T[];
675
- /**
676
- * Controlled selection. When provided, the table reflects this value and
677
- * fires `onSelectionChange` on user interaction without mutating internal
678
- * state. When omitted, the table manages selection itself (uncontrolled
679
- * mode) — useful when the caller only needs the callback or no callback
680
- * at all. Mixing controlled/uncontrolled across renders is undefined
681
- * behavior (standard React convention).
682
- */
683
- selectedRows?: string[];
684
- onSelectionChange?: (rowIds: string[]) => void;
685
- defaultSort?: SortingState;
686
- emptyMessage?: string;
687
- className?: string;
688
- /**
689
- * Height cap on the internal scroll container. Required for the virtualized
690
- * path (rows >= VIRTUALIZATION_THRESHOLD) — without a bounded scroll
691
- * element, `useVirtualizer` only sees the initial viewport and rows below
692
- * the fold stay unreachable. Accepts any CSS length (`'70vh'`, `'600px'`,
693
- * `'calc(100vh - 12rem)'`) or a pixel `number`. Default is `'70vh'`.
694
- */
695
- maxHeight?: string | number;
696
- /**
697
- * Row IDs to highlight with a transient amber background — typically used
698
- * to flash rows that conflicted during a batch mutation so the user can
699
- * see which rows changed underneath them. The caller owns the lifecycle
700
- * (populate on conflict, clear on timer).
701
- */
702
- highlightedRowIds?: Set<string>;
703
- /**
704
- * When false, column headers do not respond to clicks and rows are
705
- * rendered in `data` order. Use this when sorting is implemented server-
706
- * side or when sorting a paginated subset would produce cross-page
707
- * inconsistencies. Default `true` preserves the previous client-side
708
- * sort behavior.
709
- */
710
- enableSorting?: boolean;
711
- /**
712
- * When true, the leading checkbox column is removed entirely AND any
713
- * internal/uncontrolled selection state is dropped. Use this for
714
- * read-only views (e.g. a LOCKED migration table) where ack actions
715
- * are forbidden — without this prop the table would silently keep its
716
- * own selection in uncontrolled mode even when the parent thinks
717
- * selection is disabled, surfacing a checkbox column the user can
718
- * tick but never act on.
719
- */
720
- selectionDisabled?: boolean;
721
- /**
722
- * When true, switches the table into Excel-grade cell selection mode.
723
- * The leading checkbox column is NOT rendered and row-selection plumbing
724
- * is disabled; users interact with individual cells instead. Supports
725
- * click, shift-click (rectangular range), cmd/ctrl-click (additive),
726
- * mouse drag, Escape to clear, and Cmd/Ctrl+A to select all visible
727
- * cells. The caller can observe or drive selection via
728
- * `selectedCells` / `onCellSelectionChange`.
729
- */
730
- enableCellSelection?: boolean;
731
- /**
732
- * Controlled cell selection. When provided, the table reflects this
733
- * value and fires `onCellSelectionChange` on user interaction without
734
- * mutating internal state. Only applies when `enableCellSelection` is
735
- * true.
736
- */
737
- selectedCells?: CellCoord[];
738
- onCellSelectionChange?: (cells: CellCoord[]) => void;
739
- }
740
-
741
818
  export declare function DataTable<T>({ columns, data, pageSize, defaultSort, emptyMessage, onRowClick, rowClassName, className, }: DataTableProps<T>): JSX.Element;
742
819
 
743
820
  declare interface DataTableProps<T> {
@@ -851,15 +928,6 @@ declare interface DateFieldSingleProps extends DateFieldCommonProps {
851
928
  onChange: (next: Date | null) => void;
852
929
  }
853
930
 
854
- export declare function DatePicker({ value, onChange, placeholder, className }: DatePickerProps): JSX.Element;
855
-
856
- declare interface DatePickerProps {
857
- value: string | null;
858
- onChange: (date: string | null) => void;
859
- placeholder?: string;
860
- className?: string;
861
- }
862
-
863
931
  export declare interface DateRange {
864
932
  from: Date;
865
933
  to: Date;
@@ -941,8 +1009,11 @@ export declare type DefaultTaskStatus = 'todo' | 'in_progress' | 'blocked' | 'do
941
1009
  * `aria-hidden` bookkeeping for nested layers.
942
1010
  * - Title renders at `text-base` (16px) semibold — NOT `text-lg`
943
1011
  * (which in Atlas's token scale is 26px / hero size).
944
- * - Overlay is `bg-foreground/50` with a light backdrop blur.
945
- * - Content rounds to `rounded-md` (10px, `--radius-md`).
1012
+ * - Overlay is `bg-overlay` with a light backdrop blur — a
1013
+ * mode-independent dark scrim, NOT an alpha of `--foreground`
1014
+ * (see `DialogOverlay`).
1015
+ * - Content rounds to `rounded-surface` (DES-313) — the top-level
1016
+ * container radius role shared with Card.
946
1017
  */
947
1018
  export declare const Dialog: React_2.FC<DialogPrimitive.DialogProps>;
948
1019
 
@@ -973,6 +1044,12 @@ export declare const DialogContent: React_2.ForwardRefExoticComponent<Omit<Dialo
973
1044
  * controlled `open` + an `onOpenChange` guard for full lockout.
974
1045
  */
975
1046
  showCloseButton?: boolean;
1047
+ /**
1048
+ * Classes for the scrim behind the dialog. Pair with `className` when
1049
+ * raising z-index — a lone `className="z-modal"` lifts only the panel and
1050
+ * leaves the overlay at `z-50` (DES-315). Additive; defaults unchanged.
1051
+ */
1052
+ overlayClassName?: string;
976
1053
  } & React_2.RefAttributes<HTMLDivElement>>;
977
1054
 
978
1055
  export declare const DialogDescription: React_2.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React_2.RefAttributes<HTMLParagraphElement>, "ref"> & React_2.RefAttributes<HTMLParagraphElement>>;
@@ -997,25 +1074,6 @@ export declare const DialogTitle: React_2.ForwardRefExoticComponent<Omit<DialogP
997
1074
 
998
1075
  export declare const DialogTrigger: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
999
1076
 
1000
- export declare function DiffCell({ before, after, editable, onChange, className, }: DiffCellProps): JSX.Element;
1001
-
1002
- export declare interface DiffCellProps {
1003
- before: string | number | null;
1004
- after: string | number | null;
1005
- editable?: boolean;
1006
- onChange?: (newValue: string) => void;
1007
- className?: string;
1008
- }
1009
-
1010
- export declare function DotLabel({ color, children, bold, className }: DotLabelProps): JSX.Element;
1011
-
1012
- declare interface DotLabelProps {
1013
- color: string;
1014
- children: string;
1015
- bold?: boolean;
1016
- className?: string;
1017
- }
1018
-
1019
1077
  export declare const DropdownMenu: React_2.FC<DropdownMenuPrimitive.DropdownMenuProps>;
1020
1078
 
1021
1079
  export declare const DropdownMenuCheckboxItem: React_2.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
@@ -1264,6 +1322,15 @@ export declare interface EmptyStateProps {
1264
1322
  className?: string;
1265
1323
  }
1266
1324
 
1325
+ /**
1326
+ * The canonical inline failure banner — one treatment for "this panel could not
1327
+ * load", used across apps so a failure reads the same everywhere.
1328
+ *
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.
1333
+ */
1267
1334
  export declare function ErrorState({ message, className }: ErrorStateProps): JSX.Element;
1268
1335
 
1269
1336
  declare interface ErrorStateProps {
@@ -1426,6 +1493,7 @@ export declare interface FileRejection {
1426
1493
  message: string;
1427
1494
  }
1428
1495
 
1496
+ /** @deprecated Use `MultiSelectOption` from `./multi-select`. */
1429
1497
  export declare interface FilterOption<T extends string> {
1430
1498
  value: T;
1431
1499
  label: string;
@@ -1455,8 +1523,14 @@ export declare function FilterPill({ label, options, selected, onChange }: Filte
1455
1523
  *
1456
1524
  * - Height: h-9 (36px)
1457
1525
  * - Radius: rounded-sm (8px, `--radius-sm`)
1458
- * - Border/bg: `border bg-background` — `--input` color, white
1459
- * surface — same palette as Select/Input
1526
+ * - Border/bg: `border bg-card` — `--input` border, raised surface,
1527
+ * same palette as Select/Input. NOT `background`: that is
1528
+ * the PAGE role (ds-neutral-50 under v2, not white), which
1529
+ * rendered the pill as a grey chip next to the white
1530
+ * outline controls beside it. `Button variant="outline"`
1531
+ * carries the same note and the same `dark:bg-input/30`
1532
+ * lift, since in dark the resting fill matches the darkest
1533
+ * surface and vanishes.
1460
1534
  * - Padding: px-3 py-1
1461
1535
  * - Text: text-base md:text-sm (14px on desktop)
1462
1536
  * - Focus ring: focus:ring-1 focus:ring-ring (keyboard-visible)
@@ -1483,6 +1557,13 @@ declare interface FilterPillProps {
1483
1557
  }
1484
1558
 
1485
1559
  /**
1560
+ * @deprecated Do not use in new code, and migrate existing usages off it.
1561
+ * `FilterSelect` is retired in favor of `MultiSelect` (searchable cmdk list,
1562
+ * always-visible checkboxes, stacked trigger icons). It is still exported from
1563
+ * `@sequenceholdings/atlas-ui` (deprecated) so remaining consumers keep
1564
+ * compiling — remove only after the blast-radius scan is clean (FilterPill /
1565
+ * DES-261 deprecate-before-delete pattern).
1566
+ *
1486
1567
  * A compact multi-select filter for a table/list toolbar: a trigger with a count
1487
1568
  * chip when active, and a popover of swatch + label rows with a check on the
1488
1569
  * selected ones. Reusable for any short enum filter (status, health, type, …).
@@ -1493,6 +1574,7 @@ declare interface FilterPillProps {
1493
1574
  */
1494
1575
  export declare function FilterSelect<T extends string>({ label, options, selected, onChange, }: FilterSelectProps<T>): JSX.Element;
1495
1576
 
1577
+ /** @deprecated Use `MultiSelect` props instead. */
1496
1578
  export declare interface FilterSelectProps<T extends string> {
1497
1579
  label: string;
1498
1580
  options: FilterOption<T>[];
@@ -1571,7 +1653,7 @@ export declare interface FormDialogProps {
1571
1653
  * FormField does is still reachable as individual primitives. Use FormField
1572
1654
  * when you want the 90% case in one line.
1573
1655
  */
1574
- export declare function FormField({ label, required, error, description, id: providedId, children, className, }: FormFieldProps): JSX.Element;
1656
+ export declare function FormField({ label, required, error, description, descriptionPlacement, id: providedId, children, className, }: FormFieldProps): JSX.Element;
1575
1657
 
1576
1658
  export declare interface FormFieldProps {
1577
1659
  /**
@@ -1593,11 +1675,19 @@ export declare interface FormFieldProps {
1593
1675
  */
1594
1676
  error?: string;
1595
1677
  /**
1596
- * Helper text rendered below the control in muted color (field hint,
1597
- * input format, etc). Hidden when `error` is set — the error message
1598
- * takes the same slot.
1678
+ * Helper text rendered in muted color (field hint, input format, etc).
1679
+ * Placement is controlled by {@link descriptionPlacement}. When placed
1680
+ * `below` (default), an `error` takes the same slot and hides it.
1599
1681
  */
1600
1682
  description?: React_2.ReactNode;
1683
+ /**
1684
+ * Where the {@link description} sits relative to the control:
1685
+ * - `below` (default) — the classic helper-text slot beneath the control.
1686
+ * - `above` — a caption between the label and the control, for fields
1687
+ * where the description explains what to pick before you pick it
1688
+ * (e.g. a multi-select of capabilities). An `error` still renders below.
1689
+ */
1690
+ descriptionPlacement?: 'above' | 'below';
1601
1691
  /**
1602
1692
  * DOM id for the control. If omitted, `useId()` generates one so
1603
1693
  * `<label htmlFor>` and `aria-describedby` wire up automatically.
@@ -1633,7 +1723,7 @@ export declare function heatColor(value: number, min: number, max: number): stri
1633
1723
  * Pair with `buildPeriodColumns` and `buildTotalColumn` for time-series
1634
1724
  * data, or supply your own `ColumnDef` array for any tabular layout.
1635
1725
  */
1636
- export declare function HeatmapTable<T>({ data, columns, pageSize, defaultSort, onRowClick, entityLabel, className, }: HeatmapTableProps<T>): JSX.Element;
1726
+ export declare function HeatmapTable<T>({ data, columns, pageSize, defaultSort, onRowClick, entityLabel, density, className, }: HeatmapTableProps<T>): JSX.Element;
1637
1727
 
1638
1728
  export declare interface HeatmapTableProps<T> {
1639
1729
  data: T[];
@@ -1643,6 +1733,8 @@ export declare interface HeatmapTableProps<T> {
1643
1733
  onRowClick?: (row: T) => void;
1644
1734
  /** Label used in pagination ("1–10 of 42 {entityLabel}") and empty state. */
1645
1735
  entityLabel?: string;
1736
+ /** Tightens cell padding for dense, many-column matrices. */
1737
+ density?: 'default' | 'compact' | 'dense';
1646
1738
  className?: string;
1647
1739
  }
1648
1740
 
@@ -1815,6 +1907,12 @@ declare interface LabelOwnProps {
1815
1907
  required?: boolean;
1816
1908
  }
1817
1909
 
1910
+ declare type LegendPayloadItem = {
1911
+ value?: string | number;
1912
+ dataKey?: string | number;
1913
+ color?: string;
1914
+ };
1915
+
1818
1916
  export declare function LineSparklineCell({ values, width, height, scaleMax, color, label, className, }: LineSparklineCellProps): JSX.Element;
1819
1917
 
1820
1918
  declare interface LineSparklineCellProps {
@@ -1844,7 +1942,7 @@ export declare interface MetricAreaChartPoint {
1844
1942
 
1845
1943
  export declare interface MetricAreaChartProps {
1846
1944
  points: MetricAreaChartPoint[];
1847
- /** Stroke / fill color for the area. Defaults to emerald. */
1945
+ /** Stroke / fill color for the area. Defaults to the semantic "positive series" token. */
1848
1946
  color?: string;
1849
1947
  height?: number;
1850
1948
  /** `spark` = compact, axis-less (cards); `full` = axes + grid + tooltip. */
@@ -1922,7 +2020,7 @@ declare interface MultiSelectListProps extends MultiSelectCoreProps {
1922
2020
  * - Checkbox (Radix) for per-row selection state.
1923
2021
  *
1924
2022
  * Visual contract for the trigger mirrors `SelectTrigger` (h-9, rounded-sm,
1925
- * border + bg-background) so a toolbar of MultiSelect + Input + Select reads
2023
+ * border + bg-field) so a toolbar of MultiSelect + Input + Select reads
1926
2024
  * as one coherent control row. Active state stacks up to `maxStackedIcons`
1927
2025
  * selected-row icons (with a generic silhouette for icon-less rows) and
1928
2026
  * shows "{count} {countLabel}" alongside.
@@ -2256,7 +2354,7 @@ declare interface ProColumnMetaSticky extends ProColumnMetaBase {
2256
2354
  grow?: never;
2257
2355
  }
2258
2356
 
2259
- export declare function ProDataTable<T>({ columns, data, 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;
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;
2260
2358
 
2261
2359
  /**
2262
2360
  * Native segmented filter for the toolbar (e.g. All / Groups / People). The
@@ -2295,6 +2393,40 @@ declare interface ProDataTablePaginationProps<T> {
2295
2393
  declare interface ProDataTableProps<T> {
2296
2394
  columns: ProColumnDef<T>[];
2297
2395
  data: T[];
2396
+ /**
2397
+ * Render a leading, left-pinned selection checkbox column (with a select-all
2398
+ * header), backed by TanStack's row-selection model. The table owns the
2399
+ * column and the state — pass `getRowId` for stable keys and read the result
2400
+ * via `onSelectionChange`, or drive it with `selectedRowIds`. Prefer this
2401
+ * over hand-rolling a checkbox column + selection `Set`.
2402
+ */
2403
+ selectable?: boolean;
2404
+ /**
2405
+ * Stable id per row. Strongly recommended with `selectable` — without it
2406
+ * selection is keyed by row index and won't survive sort/filter/paging.
2407
+ */
2408
+ getRowId?: (row: T) => string;
2409
+ /** Controlled selection (row ids). Omit for uncontrolled; read via `onSelectionChange`. */
2410
+ selectedRowIds?: string[];
2411
+ /** Called with the selected row ids whenever selection changes. */
2412
+ onSelectionChange?: (ids: string[]) => void;
2413
+ /** Gate which rows can be selected. Defaults to all rows selectable. */
2414
+ enableRowSelection?: (row: T) => boolean;
2415
+ /**
2416
+ * Render a trailing, right-pinned overflow (⋯) menu, resolved per row. Return
2417
+ * the actions for that row — an empty array (or all `hidden`) renders no
2418
+ * button. Destructive actions automatically drop below a divider. Prefer this
2419
+ * over hand-rolling an end-of-row action button + `DropdownMenu`.
2420
+ */
2421
+ rowActions?: (row: T) => RowAction[];
2422
+ /**
2423
+ * Human-readable per-row label for accessibility. When set, the injected
2424
+ * selection checkbox and row-actions (⋯) trigger get row-specific aria-labels
2425
+ * ("Select <label>" / "Actions for <label>") instead of generic repeated ones,
2426
+ * so screen-reader users can tell which record they're acting on. Recommended
2427
+ * whenever `selectable` or `rowActions` is used.
2428
+ */
2429
+ getRowLabel?: (row: T) => string;
2298
2430
  /**
2299
2431
  * Enable a client-side search input in the table header. Filters rows by
2300
2432
  * concatenating every cell's accessor value (default) or via a custom
@@ -2423,7 +2555,7 @@ declare interface ProDataTableProps<T> {
2423
2555
  bordered?: boolean;
2424
2556
  /**
2425
2557
  * `table` (default) renders column headers (sortable). `list` hides the
2426
- * header row for a clean borderless list — rows still carry the `black-6`
2558
+ * header row for a clean borderless list — rows still carry the `border`
2427
2559
  * inset dividers. Use for identity lists (people / groups) where column
2428
2560
  * labels are noise. Sorting via header click isn't available in `list`;
2429
2561
  * pass `defaultSort` for a fixed order.
@@ -2452,13 +2584,30 @@ declare interface ProDataTableSearchable<T> {
2452
2584
  /**
2453
2585
  * Controlled (server-side) search. When `onChange` is provided the table
2454
2586
  * stops filtering client-side and hands the debounced query to the parent,
2455
- * which refetches — pair with `manualPagination`. `value` is the current
2456
- * query (keeps the input in sync if the parent resets it). Omit both for the
2457
- * default client-side filter over the loaded `data`.
2587
+ * which refetches — pair with `manualPagination`. Omit both for the default
2588
+ * client-side filter over the loaded `data`.
2589
+ *
2590
+ * Once `value` is provided it is the source of truth for the input:
2591
+ * keystrokes show instantly, but as soon as the debounce emits, the field
2592
+ * renders `value` again. So rejecting or rewriting the query in `onChange` is
2593
+ * reflected in the box rather than leaving a stale private copy behind, and a
2594
+ * `value` the parent changes on its own cancels any unsent keystroke.
2595
+ *
2596
+ * Set your state to the emitted value synchronously inside `onChange` — the
2597
+ * normal controlled-input contract. A `value` that only catches up after a
2598
+ * round-trip leaves the field showing the pre-emit query until it does, and
2599
+ * anything typed while that update is in flight is dropped when it lands.
2458
2600
  */
2459
2601
  value?: string;
2460
2602
  onChange?: (value: string) => void;
2461
- /** Debounce before a controlled `onChange` fires, in ms. Default 300. */
2603
+ /**
2604
+ * Debounce before a controlled `onChange` fires, in ms. Default 300.
2605
+ *
2606
+ * `0` (or negative) means no debounce at all — `onChange` fires inline on the
2607
+ * keystroke, with no timer. Use it for search that filters rows already in
2608
+ * memory: a debounce only adds keystroke lag there, and emitting inline also
2609
+ * means the field is never showing a query the parent has not been handed.
2610
+ */
2462
2611
  debounceMs?: number;
2463
2612
  }
2464
2613
 
@@ -2487,32 +2636,6 @@ declare interface ProgressBarProps {
2487
2636
  className?: string;
2488
2637
  }
2489
2638
 
2490
- export declare function ProgressCard({ title, description, total, counts, assignees, footer, onClick, locked, className, }: ProgressCardProps): JSX.Element;
2491
-
2492
- export declare interface ProgressCardAssignee {
2493
- id: string;
2494
- displayName: string;
2495
- avatarUrl?: string;
2496
- }
2497
-
2498
- export declare interface ProgressCardCounts {
2499
- todo: number;
2500
- pending: number;
2501
- done: number;
2502
- }
2503
-
2504
- export declare interface ProgressCardProps {
2505
- title: string;
2506
- description?: string;
2507
- total: number;
2508
- counts: ProgressCardCounts;
2509
- assignees?: ProgressCardAssignee[];
2510
- footer?: React_2.ReactNode;
2511
- onClick?: () => void;
2512
- locked?: boolean;
2513
- className?: string;
2514
- }
2515
-
2516
2639
  /**
2517
2640
  * A quiet live/refresh indicator: a small green dot (muted when paused) that
2518
2641
  * pulses subtly while a refresh is in flight, doubling as a manual-refresh
@@ -2560,6 +2683,23 @@ export declare interface RouteLoadingProps {
2560
2683
 
2561
2684
  export { Row }
2562
2685
 
2686
+ /**
2687
+ * A single entry in a row's overflow (⋯) menu. The consumer resolves these
2688
+ * per-row via `rowActions`, so `onSelect` closes over the row itself — no row
2689
+ * argument needed here.
2690
+ */
2691
+ declare interface RowAction {
2692
+ label: React_2.ReactNode;
2693
+ onSelect: () => void;
2694
+ /** Optional leading icon (e.g. `<IconPencil />`). */
2695
+ icon?: React_2.ReactNode;
2696
+ /** Render below a divider with destructive styling (Delete, Remove, …). */
2697
+ destructive?: boolean;
2698
+ disabled?: boolean;
2699
+ /** Omit this action for this row entirely. */
2700
+ hidden?: boolean;
2701
+ }
2702
+
2563
2703
  export declare function scoreBand(value: number): 'green' | 'amber' | 'red';
2564
2704
 
2565
2705
  export declare function ScoreBarCell({ value, className, }: {
@@ -2714,7 +2854,7 @@ export declare const SheetTitle: React_2.ForwardRefExoticComponent<Omit<DialogPr
2714
2854
  export declare const SheetTrigger: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
2715
2855
 
2716
2856
  declare const sheetVariants: (props?: ({
2717
- side?: "left" | "right" | "bottom" | "top" | null | undefined;
2857
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
2718
2858
  } & ClassProp) | undefined) => string;
2719
2859
 
2720
2860
  /**
@@ -2727,78 +2867,6 @@ export declare function showFieldInline({ show, hasValue, }: {
2727
2867
  hasValue: boolean;
2728
2868
  }): boolean;
2729
2869
 
2730
- /**
2731
- * SidebarNav — shared primitives for app-sidebar navigation.
2732
- *
2733
- * Two levels:
2734
- * - `SidebarNavItem` — the top-level row with icon + label (app entry)
2735
- * - `SidebarNavSubList` — the indented, rail-connected secondary nav
2736
- * rendered directly beneath a parent SidebarNavItem
2737
- *
2738
- * The pattern mirrors what Atlas's shell sidebar has been rendering
2739
- * inline for a long time, but extracted here so every consumer
2740
- * (Atlas, embedded MFEs, the design system gallery) gets the same
2741
- * visual treatment and spacing rules for free.
2742
- *
2743
- * Spacing contract
2744
- * ----------------
2745
- * Parent item label x-position = `itemPaddingX + iconSize + iconGap`.
2746
- * The sub-list is designed so its labels land at the SAME x-position
2747
- * by default — with defaults of `itemPaddingX=8`, `iconSize=24`,
2748
- * `iconGap=12` the sub-list labels indent by 44px. A rail sits at the
2749
- * horizontal center of the parent icon (x = 8 + 24/2 = 20).
2750
- *
2751
- * If a consumer uses a different parent item geometry, pass
2752
- * `labelIndent` / `railIndent` to match.
2753
- */
2754
- export declare interface SidebarNavSubItem {
2755
- id: string;
2756
- label: string;
2757
- /** Link href. Omit when using `onSelect` with a custom navigator. */
2758
- href?: string;
2759
- /** True for the currently-selected item — gets weight + color emphasis. */
2760
- active?: boolean;
2761
- /** Optional tail counter (e.g., "12"). Rendered right-aligned. */
2762
- count?: number | string;
2763
- /** Optional uppercase chip (e.g., "NEW", "BETA"). Rendered right-aligned. */
2764
- tag?: string;
2765
- /**
2766
- * Render as visible but non-interactive. Use for placeholder items that
2767
- * will become clickable later (feature gating, coming-soon, etc.).
2768
- */
2769
- parked?: boolean;
2770
- }
2771
-
2772
- /**
2773
- * Indented secondary navigation with a vertical connector rail. Renders
2774
- * nothing when `items` is empty.
2775
- */
2776
- export declare function SidebarNavSubList({ items, onSelect, labelIndent, railIndent, className, ariaLabel, }: SidebarNavSubListProps): JSX.Element | null;
2777
-
2778
- export declare interface SidebarNavSubListProps {
2779
- items: SidebarNavSubItem[];
2780
- /**
2781
- * Called when the user activates an item (click, keyboard enter).
2782
- * Use this to route with your SPA router; if omitted, the `<a href>`
2783
- * does a full navigation. Parked items never fire this.
2784
- */
2785
- onSelect?: (item: SidebarNavSubItem, event: React_2.MouseEvent<HTMLAnchorElement>) => void;
2786
- /**
2787
- * Horizontal distance (px) from the list's left edge at which item
2788
- * labels begin. Should equal the parent item's label x-position so
2789
- * the two stacks visually line up. Default 44.
2790
- */
2791
- labelIndent?: number;
2792
- /**
2793
- * X-position (px) of the vertical connector rail. Usually the center
2794
- * of the parent item's icon. Default 20.
2795
- */
2796
- railIndent?: number;
2797
- className?: string;
2798
- /** Accessible name for the list (e.g., "Agent Builder pages"). */
2799
- ariaLabel?: string;
2800
- }
2801
-
2802
2870
  /**
2803
2871
  * SingleSelectList — the single-select sibling of `MultiSelectList`. Same
2804
2872
  * searchable cmdk body, pinned grouping, and icon column, but rows carry a
@@ -2876,74 +2944,74 @@ export declare const spinnerVariants: (props?: ({
2876
2944
 
2877
2945
  export declare const STATUS_TONES: {
2878
2946
  readonly healthy: {
2879
- readonly bg: "bg-emerald-50";
2880
- readonly fg: "text-emerald-700";
2947
+ readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2948
+ readonly fg: "text-emerald-700 dark:text-emerald-300";
2881
2949
  readonly dot: "bg-emerald-500";
2882
2950
  };
2883
2951
  readonly active: {
2884
- readonly bg: "bg-emerald-50";
2885
- readonly fg: "text-emerald-700";
2952
+ readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2953
+ readonly fg: "text-emerald-700 dark:text-emerald-300";
2886
2954
  readonly dot: "bg-emerald-500";
2887
2955
  };
2888
2956
  readonly completed: {
2889
- readonly bg: "bg-emerald-50";
2890
- readonly fg: "text-emerald-700";
2957
+ readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2958
+ readonly fg: "text-emerald-700 dark:text-emerald-300";
2891
2959
  readonly dot: "bg-emerald-500";
2892
2960
  };
2893
2961
  readonly success: {
2894
- readonly bg: "bg-emerald-50";
2895
- readonly fg: "text-emerald-700";
2962
+ readonly bg: "bg-emerald-50 dark:bg-emerald-500/15";
2963
+ readonly fg: "text-emerald-700 dark:text-emerald-300";
2896
2964
  readonly dot: "bg-emerald-500";
2897
2965
  };
2898
2966
  readonly running: {
2899
- readonly bg: "bg-sky-50";
2900
- readonly fg: "text-sky-700";
2967
+ readonly bg: "bg-sky-50 dark:bg-sky-500/15";
2968
+ readonly fg: "text-sky-700 dark:text-sky-300";
2901
2969
  readonly dot: "bg-sky-500";
2902
2970
  };
2903
2971
  readonly info: {
2904
- readonly bg: "bg-sky-50";
2905
- readonly fg: "text-sky-700";
2972
+ readonly bg: "bg-sky-50 dark:bg-sky-500/15";
2973
+ readonly fg: "text-sky-700 dark:text-sky-300";
2906
2974
  readonly dot: "bg-sky-500";
2907
2975
  };
2908
2976
  readonly queued: {
2909
- readonly bg: "bg-sky-50";
2910
- readonly fg: "text-sky-700";
2977
+ readonly bg: "bg-sky-50 dark:bg-sky-500/15";
2978
+ readonly fg: "text-sky-700 dark:text-sky-300";
2911
2979
  readonly dot: "bg-sky-500";
2912
2980
  };
2913
2981
  readonly drift: {
2914
- readonly bg: "bg-amber-50";
2915
- readonly fg: "text-amber-700";
2982
+ readonly bg: "bg-amber-50 dark:bg-amber-500/15";
2983
+ readonly fg: "text-amber-700 dark:text-amber-300";
2916
2984
  readonly dot: "bg-amber-500";
2917
2985
  };
2918
2986
  readonly warn: {
2919
- readonly bg: "bg-amber-50";
2920
- readonly fg: "text-amber-700";
2987
+ readonly bg: "bg-amber-50 dark:bg-amber-500/15";
2988
+ readonly fg: "text-amber-700 dark:text-amber-300";
2921
2989
  readonly dot: "bg-amber-500";
2922
2990
  };
2923
2991
  readonly failing: {
2924
- readonly bg: "bg-rose-50";
2925
- readonly fg: "text-rose-700";
2992
+ readonly bg: "bg-rose-50 dark:bg-rose-500/15";
2993
+ readonly fg: "text-rose-700 dark:text-rose-300";
2926
2994
  readonly dot: "bg-rose-500";
2927
2995
  };
2928
2996
  readonly failed: {
2929
- readonly bg: "bg-rose-50";
2930
- readonly fg: "text-rose-700";
2997
+ readonly bg: "bg-rose-50 dark:bg-rose-500/15";
2998
+ readonly fg: "text-rose-700 dark:text-rose-300";
2931
2999
  readonly dot: "bg-rose-500";
2932
3000
  };
2933
3001
  readonly error: {
2934
- readonly bg: "bg-rose-50";
2935
- readonly fg: "text-rose-700";
3002
+ readonly bg: "bg-rose-50 dark:bg-rose-500/15";
3003
+ readonly fg: "text-rose-700 dark:text-rose-300";
2936
3004
  readonly dot: "bg-rose-500";
2937
3005
  };
2938
3006
  readonly paused: {
2939
- readonly bg: "bg-black-6";
2940
- readonly fg: "text-black-60";
2941
- readonly dot: "bg-black-30";
3007
+ readonly bg: "bg-muted";
3008
+ readonly fg: "text-muted-foreground";
3009
+ readonly dot: "bg-muted-foreground";
2942
3010
  };
2943
3011
  readonly neutral: {
2944
- readonly bg: "bg-black-6";
2945
- readonly fg: "text-black-60";
2946
- readonly dot: "bg-black-30";
3012
+ readonly bg: "bg-muted";
3013
+ readonly fg: "text-muted-foreground";
3014
+ readonly dot: "bg-muted-foreground";
2947
3015
  };
2948
3016
  };
2949
3017
 
@@ -2992,14 +3060,6 @@ export declare const TableHeader: React_2.ForwardRefExoticComponent<React_2.HTML
2992
3060
 
2993
3061
  export declare const TableRow: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableRowElement> & React_2.RefAttributes<HTMLTableRowElement>>;
2994
3062
 
2995
- export declare function TabPage({ children, maxWidth, className }: TabPageProps): JSX.Element;
2996
-
2997
- declare interface TabPageProps {
2998
- children: ReactNode;
2999
- maxWidth?: 'md' | 'lg' | 'xl' | '2xl' | '4xl' | '6xl' | '7xl' | 'full';
3000
- className?: string;
3001
- }
3002
-
3003
3063
  export declare const Tabs: React_2.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React_2.RefAttributes<HTMLDivElement>>;
3004
3064
 
3005
3065
  export declare const TabsContent: React_2.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
@@ -3493,6 +3553,22 @@ declare interface TextareaOwnProps {
3493
3553
 
3494
3554
  export declare type TextareaProps = React_2.ComponentProps<"textarea"> & TextareaOwnProps;
3495
3555
 
3556
+ /**
3557
+ * shadcn/ui chart primitive (recharts-based).
3558
+ *
3559
+ * Provides a themeable container + tooltip/legend chrome so charts across
3560
+ * Atlas share one styling contract instead of each app hand-rolling recharts
3561
+ * markup. New charts should compose `ChartContainer` + a `ChartConfig` and let
3562
+ * this primitive resolve colors from the `--chart-*` design tokens.
3563
+ *
3564
+ * Jarvis is migrating its bespoke recharts usage onto this primitive — prefer
3565
+ * it over importing recharts directly in new code.
3566
+ */
3567
+ declare const THEMES: {
3568
+ readonly light: "";
3569
+ readonly dark: ".dark";
3570
+ };
3571
+
3496
3572
  export declare function tintForString(seed: string): AgentTint;
3497
3573
 
3498
3574
  export { toast }
@@ -3514,7 +3590,7 @@ export { toast }
3514
3590
  * the same without re-specifying options at the call site.
3515
3591
  * 2. Binds Sonner's internal classes to Atlas design tokens via
3516
3592
  * `toastOptions.classNames` — `bg-card`, `border-border`,
3517
- * `shadow-lg`, `rounded-md`, and the `--destructive` /
3593
+ * `shadow-popover`, `rounded-md`, and the `--destructive` /
3518
3594
  * `--primary` / `--muted` pairs. Matches Dialog / Popover /
3519
3595
  * DropdownMenu so all floating UI reads as one visual family.
3520
3596
  * 3. Uses `richColors` for the semantic variants
@@ -3602,6 +3678,15 @@ export declare const TooltipContent: React_2.ForwardRefExoticComponent<Omit<Tool
3602
3678
  container?: HTMLElement | null;
3603
3679
  } & React_2.RefAttributes<HTMLDivElement>>;
3604
3680
 
3681
+ declare type TooltipPayloadItem = {
3682
+ name?: string | number;
3683
+ dataKey?: string | number;
3684
+ value?: number | string;
3685
+ color?: string;
3686
+ payload?: Record<string, unknown>;
3687
+ fill?: string;
3688
+ };
3689
+
3605
3690
  /**
3606
3691
  * Tooltip — contextual helper text anchored to a trigger.
3607
3692
  *
@@ -3651,6 +3736,41 @@ declare interface TrendBadgeProps {
3651
3736
  invertColors?: boolean;
3652
3737
  }
3653
3738
 
3739
+ /**
3740
+ * Text that truncates with an ellipsis and reveals its full value in a tooltip —
3741
+ * **but only when actually clipped**. The one place the overflow-detection +
3742
+ * tooltip pattern lives, so every truncating title/label gets it for free.
3743
+ *
3744
+ * Use for **titles and labels** (page/tab titles, table cells, breadcrumbs, list
3745
+ * rows) — anything single-line that must fit a bounded width. Do **not** use for
3746
+ * body or long-form copy: that should wrap, not truncate.
3747
+ *
3748
+ * ```tsx
3749
+ * <TruncatedText className="max-w-[16rem]">{customer.name}</TruncatedText>
3750
+ *
3751
+ * // asChild — the link itself truncates; pass the text as `tooltip`:
3752
+ * <TruncatedText asChild tooltip={repo.name}>
3753
+ * <a href={href} className="max-w-[14rem]">{repo.name}</a>
3754
+ * </TruncatedText>
3755
+ * ```
3756
+ */
3757
+ export declare function TruncatedText({ asChild, tooltip, side, className, children, ref: forwardedRef, ...props }: TruncatedTextProps): JSX.Element;
3758
+
3759
+ declare type TruncatedTextProps = ComponentProps<'span'> & {
3760
+ /**
3761
+ * Merge the truncation + tooltip onto the child element instead of rendering a
3762
+ * `<span>` (shadcn `asChild`). Use when the truncating element must be a link,
3763
+ * button, or heading. When set, pass `tooltip` explicitly — `children` is an
3764
+ * element, not the text.
3765
+ */
3766
+ asChild?: boolean;
3767
+ /** Tooltip content. Defaults to `children` (correct only when they're the raw
3768
+ * text — i.e. not `asChild`). */
3769
+ tooltip?: ReactNode;
3770
+ /** Tooltip side; forwarded to `TooltipContent`. */
3771
+ side?: ComponentProps<typeof TooltipContent>['side'];
3772
+ };
3773
+
3654
3774
  export declare function useAppClassName(): string | undefined;
3655
3775
 
3656
3776
  /**
@@ -3909,23 +4029,6 @@ export declare interface UserChipUser {
3909
4029
  initials?: string;
3910
4030
  }
3911
4031
 
3912
- /**
3913
- * A person rendered as one inline unit: a neutral avatar icon followed by their
3914
- * full name. For lightweight person references (a lead, an assignee label) where
3915
- * you only have a name. When you have full identity (email/org) and want the
3916
- * hover card, use `UserChip` instead.
3917
- *
3918
- * Inherits font size/color from its container so it drops into any context.
3919
- */
3920
- export declare function UserLabel({ name, size, className }: UserLabelProps): JSX.Element;
3921
-
3922
- export declare interface UserLabelProps {
3923
- name: string;
3924
- /** Avatar size in px. Defaults to 18. */
3925
- size?: number;
3926
- className?: string;
3927
- }
3928
-
3929
4032
  /**
3930
4033
  * Resolve a `ParsedDate` (year/month/day, any of which may be null)
3931
4034
  * into a concrete `Date`, using the reference date and `dayDefault`