@invana/ui 0.0.31 → 0.0.32

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.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import * as React$1 from 'react';
3
- import React__default, { Component, ReactNode } from 'react';
3
+ import React__default, { Component, ReactNode, ErrorInfo, ElementType, CSSProperties } from 'react';
4
4
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
6
6
  import { VariantProps } from 'class-variance-authority';
@@ -16,6 +16,7 @@ import * as MenubarPrimitive from '@radix-ui/react-menubar';
16
16
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
17
17
  import * as PopoverPrimitive from '@radix-ui/react-popover';
18
18
  import * as ProgressPrimitive from '@radix-ui/react-progress';
19
+ import { Questionnaire as Questionnaire$1 } from '@shadcn/react/questionnaire';
19
20
  import { Separator as Separator$1, Panel, Group } from 'react-resizable-panels';
20
21
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
21
22
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
@@ -25,24 +26,6 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
25
26
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
26
27
  import { LucideIcon } from 'lucide-react';
27
28
 
28
- /**
29
- * `clsx` + `tailwind-merge`, and nothing else.
30
- *
31
- * This used to be an `extendTailwindMerge` that registered one class group.
32
- * `text-*` is ambiguous — it is both the font-size scale and the text-colour
33
- * scale — so tailwind-merge decides which group a class belongs to by matching
34
- * its value against Tailwind's built-in size names. `meta` was not one of them,
35
- * so `text-meta` was read as a *colour* and silently dropped whatever colour
36
- * class came before it:
37
- *
38
- * cn("text-[var(--badge-ink)]", "text-meta") → "text-meta" // colour lost
39
- *
40
- * The type ladder is now `base · sm · xs` (`@invana/styling`), every one of
41
- * them a Tailwind built-in, so there is nothing left to register and the
42
- * footgun is gone with the token that caused it. If a future `--text-*` token
43
- * invents a name Tailwind does not know, bring the `extend` back in the same
44
- * breath — it will eat colours at a distance and the cause will not be obvious.
45
- */
46
29
  declare function cn(...inputs: ClassValue[]): string;
47
30
 
48
31
  declare const Accordion: React$1.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React$1.RefAttributes<HTMLDivElement>>;
@@ -52,6 +35,7 @@ declare const AccordionContent: React$1.ForwardRefExoticComponent<Omit<Accordion
52
35
 
53
36
  declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
54
37
  variant?: "default" | "destructive" | null | undefined;
38
+ tone?: "destructive" | "info" | "success" | "warning" | null | undefined;
55
39
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
56
40
  declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
57
41
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
@@ -74,9 +58,31 @@ declare const AlertDialogDescription: React$1.ForwardRefExoticComponent<Omit<Ale
74
58
  declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
75
59
  declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
76
60
 
77
- declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
61
+ /**
62
+ * Sizes are the control scale, so an avatar sits in a row of controls at the
63
+ * row's height: `xs` 22 · `sm` 26 · `md` 32 · `lg` 40px at a 13px root. `lg`
64
+ * is the default — the size it always had. Its initials step down with it.
65
+ */
66
+ declare const avatarVariants: (props?: ({
67
+ size?: "xs" | "sm" | "lg" | "md" | null | undefined;
68
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
69
+ interface AvatarProps extends React$1.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>, VariantProps<typeof avatarVariants> {
70
+ }
71
+ declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
78
72
  declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
79
73
  declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
74
+ interface AvatarGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
75
+ /** Show this many and fold the rest into a `+n` avatar. */
76
+ max?: number;
77
+ /** The size of the `+n` avatar — the same as the avatars it follows. */
78
+ size?: AvatarProps["size"];
79
+ }
80
+ /**
81
+ * Avatars overlapping in a row — who is on a run, a thread, a review — each
82
+ * ringed in the background so the overlap reads as edges. Past `max`, the rest
83
+ * are one `+n`.
84
+ */
85
+ declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
80
86
 
81
87
  /**
82
88
  * `variant` is the treatment, `tone` is the meaning.
@@ -88,15 +94,15 @@ declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimi
88
94
  * recolours `default`, `outline` and `soft`, and leaves `secondary` and
89
95
  * `destructive` alone — those are already a colour decision.
90
96
  *
91
- * No pill. A badge is structure, so it takes the structure radius, 0 (see
92
- * `@invana/styling` › border radius, decided 01-09-2026). Where round *is* the
93
- * object — a count bubble on a nav item, a state marker — that is `StatusDot`
94
- * or an explicit `rounded-full`, never a badge variant.
97
+ * No pill. A badge sits at control height beside buttons, so it takes the
98
+ * control radius, `rounded-control` (see `@invana/styling` › border radius).
99
+ * Where round *is* the object — a count bubble on a nav item, a state marker —
100
+ * that is `StatusDot` or an explicit `rounded-full`, never a badge variant.
95
101
  */
96
102
  declare const badgeVariants: (props?: ({
97
103
  variant?: "default" | "destructive" | "outline" | "secondary" | "soft" | null | undefined;
98
- tone?: "primary" | "success" | "warning" | "info" | "muted" | null | undefined;
99
- size?: "default" | "xs" | "sm" | null | undefined;
104
+ tone?: "destructive" | "info" | "success" | "warning" | "primary" | "muted" | null | undefined;
105
+ size?: "xs" | "sm" | null | undefined;
100
106
  } & class_variance_authority_types.ClassProp) | undefined) => string;
101
107
  interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
102
108
  }
@@ -122,7 +128,7 @@ declare const BreadcrumbEllipsis: {
122
128
 
123
129
  declare const buttonVariants: (props?: ({
124
130
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "soft" | null | undefined;
125
- size?: "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon" | "nav-icon" | null | undefined;
131
+ size?: "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon" | "nav-icon" | null | undefined;
126
132
  } & class_variance_authority_types.ClassProp) | undefined) => string;
127
133
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
128
134
  asChild?: boolean;
@@ -302,8 +308,10 @@ declare const itemVariants: (props?: ({
302
308
  variant?: "default" | "outline" | "muted" | null | undefined;
303
309
  size?: "default" | "xs" | "sm" | null | undefined;
304
310
  selected?: boolean | null | undefined;
311
+ dim?: boolean | null | undefined;
312
+ struck?: boolean | null | undefined;
305
313
  } & class_variance_authority_types.ClassProp) | undefined) => string;
306
- declare function Item({ className, variant, size, selected, asChild, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
314
+ declare function Item({ className, variant, size, selected, dim, struck, asChild, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
307
315
  asChild?: boolean;
308
316
  }): React$1.JSX.Element;
309
317
  declare const itemMediaVariants: (props?: ({
@@ -453,6 +461,75 @@ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive
453
461
  size?: ProgressSize;
454
462
  } & React$1.RefAttributes<HTMLDivElement>>;
455
463
 
464
+ type NavProps = Pick<ButtonProps, "size" | "variant">;
465
+ declare function Questionnaire({ className, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Root>): React$1.JSX.Element;
466
+ /**
467
+ * The progress line on its own — a label and a bar filled to `value` (0–1).
468
+ * `QuestionnaireProgress` draws it from the questionnaire's position; a step
469
+ * outside the items, such as a review before submitting, draws it directly.
470
+ */
471
+ declare function QuestionnaireProgressBar({ label, value, className, ...props }: React$1.ComponentProps<"div"> & {
472
+ label?: React$1.ReactNode;
473
+ value: number;
474
+ }): React$1.JSX.Element;
475
+ /**
476
+ * `1 of 3` and a bar that fills as the steps are answered. Pass children to
477
+ * replace the count's words; the bar stays.
478
+ */
479
+ declare function QuestionnaireProgress({ className, children, ...props }: Omit<React$1.ComponentProps<typeof Questionnaire$1.Progress>, "render">): React$1.JSX.Element;
480
+ declare function QuestionnaireItem({ className, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Item>): React$1.JSX.Element;
481
+ declare function QuestionnaireTitle({ className, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Title>): React$1.JSX.Element;
482
+ declare function QuestionnaireDescription({ className, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Description>): React$1.JSX.Element;
483
+ declare function QuestionnaireChoices({ className, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Choices>): React$1.JSX.Element;
484
+ interface QuestionnaireChoiceProps extends React$1.ComponentProps<typeof Questionnaire$1.Choice> {
485
+ /**
486
+ * Where the choice comes from, on the right in mono — `142 open POs`,
487
+ * `pnl.total`. What makes an option read as something the data holds.
488
+ */
489
+ detail?: React$1.ReactNode;
490
+ /**
491
+ * A settled answer: the choice is shown, not offered. Unlike `disabled` it
492
+ * keeps full strength, so the answer still reads.
493
+ */
494
+ readOnly?: boolean;
495
+ /**
496
+ * A short tag or an icon in a box before the choice — `BV`, a store. What
497
+ * the choice is, read before its name.
498
+ */
499
+ lead?: React$1.ReactNode;
500
+ /**
501
+ * A figure on the right, in place of `detail` — the value over its unit,
502
+ * `2,480` over `kg/ha`. What the choice would give, read before picking it.
503
+ */
504
+ figure?: QuestionnaireChoiceFigure;
505
+ }
506
+ /**
507
+ * The tones the kit draws specially — **suggestions, not a limit.** Anything
508
+ * else renders in the foreground.
509
+ */
510
+ type QuestionnaireFigureTone = "success" | "warning" | "error" | (string & {});
511
+ interface QuestionnaireChoiceFigure {
512
+ value: React$1.ReactNode;
513
+ unit?: React$1.ReactNode;
514
+ tone?: QuestionnaireFigureTone;
515
+ }
516
+ declare function QuestionnaireChoice({ children, className, detail, readOnly, disabled, lead, figure, ...props }: QuestionnaireChoiceProps): React$1.JSX.Element;
517
+ /** The choice itself — `Delegation`. Sits above an optional description. */
518
+ declare function QuestionnaireChoiceTitle({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
519
+ /** What the choice means — `Show how work moves to a specialist.` */
520
+ declare function QuestionnaireChoiceDescription({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
521
+ interface QuestionnaireInputProps extends React$1.ComponentProps<typeof Questionnaire$1.Input> {
522
+ /** The unit, on the right in mono — `%`, `kg/ha`. Open vocabulary. */
523
+ unit?: React$1.ReactNode;
524
+ }
525
+ declare function QuestionnaireInput({ className, unit, ...props }: QuestionnaireInputProps): React$1.JSX.Element;
526
+ declare function QuestionnaireError({ className, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Error>): React$1.JSX.Element;
527
+ declare function QuestionnaireActions({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
528
+ declare function QuestionnairePrevious({ children, className, size, variant, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Previous> & NavProps): React$1.JSX.Element;
529
+ declare function QuestionnaireSkip({ children, className, size, variant, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Skip> & NavProps): React$1.JSX.Element;
530
+ declare function QuestionnaireNext({ children, className, size, variant, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Next> & NavProps): React$1.JSX.Element;
531
+ declare function QuestionnaireSubmit({ children, className, size, variant, ...props }: React$1.ComponentProps<typeof Questionnaire$1.Submit> & NavProps): React$1.JSX.Element;
532
+
456
533
  declare const ResizablePanelGroup: (props: React.ComponentProps<typeof Group>) => React$1.JSX.Element;
457
534
  declare const ResizablePanel: typeof Panel;
458
535
  declare const ResizableHandle: ({ withHandle, className, ...props }: React.ComponentProps<typeof Separator$1> & {
@@ -466,19 +543,40 @@ interface SegmentedOption {
466
543
  /** What the caller gets back. */
467
544
  value: string;
468
545
  label: React$1.ReactNode;
546
+ /** A second line under the label, smaller and muted — `±1.4 pp`. */
547
+ sub?: React$1.ReactNode;
469
548
  disabled?: boolean;
470
549
  }
471
550
  interface SegmentedControlProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
472
551
  options: SegmentedOption[];
473
- /** Controlled. Pass it with {@link onValueChange}. */
474
- value?: string;
475
- /** Uncontrolled starting option. Defaults to the first. */
476
- defaultValue?: string;
552
+ /** Controlled. Pass it with {@link onValueChange}; `null` is no pick. */
553
+ value?: string | null;
554
+ /**
555
+ * Uncontrolled starting option. Defaults to the first, because a reading is
556
+ * never off. `null` starts with none picked — a question not yet answered,
557
+ * where picking the first for the reader would answer it for them.
558
+ */
559
+ defaultValue?: string | null;
477
560
  onValueChange?: (value: string) => void;
478
- /** `xs` is 22px — a pagehead slot. `sm` is 26px, for a panel header. */
479
- size?: "xs" | "sm";
561
+ /**
562
+ * The control scale: `xs` (22px) inside a row, `sm` (26px) beside a search
563
+ * or filter chips, `md` (32px, the default — as for every control) in a
564
+ * standalone form.
565
+ */
566
+ size?: "xs" | "sm" | "md";
480
567
  /** Fill the width given, each option an equal share of it. */
481
568
  stretch?: boolean;
569
+ /**
570
+ * `tint` marks the active option with the primary tint — a reading of the
571
+ * page. `solid` fills it with primary and rules the options apart — an
572
+ * answer to a question, where the pick is the thing being read.
573
+ */
574
+ variant?: "tint" | "solid";
575
+ /**
576
+ * A settled answer: the pick is shown, not offered. Unlike disabling every
577
+ * option it keeps full strength, so the answer still reads.
578
+ */
579
+ readOnly?: boolean;
482
580
  }
483
581
  /**
484
582
  * One page, read another way.
@@ -508,7 +606,7 @@ declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dial
508
606
  declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
509
607
  declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
510
608
  declare const sheetVariants: (props?: ({
511
- side?: "top" | "right" | "bottom" | "left" | null | undefined;
609
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
512
610
  } & class_variance_authority_types.ClassProp) | undefined) => string;
513
611
  interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
514
612
  }
@@ -598,6 +696,26 @@ declare const Toaster: ({ ...props }: ToasterProps) => React$1.JSX.Element;
598
696
 
599
697
  declare function Spinner({ className, ...props }: React.ComponentProps<"svg">): React$1.JSX.Element;
600
698
 
699
+ /**
700
+ * Things laid out one after another, a set gap apart: a column (the default)
701
+ * or a row. The layout every screen and story otherwise writes by hand as
702
+ * `flex flex-col gap-4` — so the gaps come from one short scale, in `rem`, and
703
+ * follow the root as the type does.
704
+ *
705
+ * `gap` is the space between, never around: a stack draws no padding, border
706
+ * or background, so it can sit inside anything without changing its frame.
707
+ */
708
+ declare const stackVariants: (props?: ({
709
+ direction?: "row" | "column" | null | undefined;
710
+ gap?: "none" | "xs" | "sm" | "lg" | "md" | "xl" | null | undefined;
711
+ align?: "end" | "start" | "center" | "stretch" | "baseline" | null | undefined;
712
+ justify?: "end" | "start" | "center" | "between" | null | undefined;
713
+ wrap?: boolean | null | undefined;
714
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
715
+ interface StackProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof stackVariants> {
716
+ }
717
+ declare const Stack: React$1.ForwardRefExoticComponent<StackProps & React$1.RefAttributes<HTMLDivElement>>;
718
+
601
719
  /**
602
720
  * The state of one thing, as a dot.
603
721
  *
@@ -617,7 +735,7 @@ declare function Spinner({ className, ...props }: React.ComponentProps<"svg">):
617
735
  * `motion-reduce` variant below honours by design.
618
736
  */
619
737
  declare const statusDotVariants: (props?: ({
620
- tone?: "success" | "warning" | "info" | "muted" | "error" | "running" | "queued" | null | undefined;
738
+ tone?: "info" | "success" | "warning" | "muted" | "error" | "running" | "queued" | null | undefined;
621
739
  size?: "xs" | "sm" | "lg" | "md" | null | undefined;
622
740
  } & class_variance_authority_types.ClassProp) | undefined) => string;
623
741
  interface StatusDotProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children">, VariantProps<typeof statusDotVariants> {
@@ -631,8 +749,51 @@ interface StatusDotProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "
631
749
  }
632
750
  declare const StatusDot: React$1.ForwardRefExoticComponent<StatusDotProps & React$1.RefAttributes<HTMLSpanElement>>;
633
751
 
752
+ declare const statusIconVariants: (props?: ({
753
+ state?: "alert" | "success" | "error" | "waiting" | "running" | "queued" | "question" | "cancelled" | null | undefined;
754
+ size?: "sm" | "md" | null | undefined;
755
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
756
+ type StatusIconState = "success" | "error" | "running" | "queued" | "waiting" | "question" | "alert" | "cancelled";
757
+ interface StatusIconProps extends Omit<React$1.SVGAttributes<SVGSVGElement>, "children">, VariantProps<typeof statusIconVariants> {
758
+ state: StatusIconState;
759
+ /**
760
+ * What this state is called — the accessible name and the tooltip.
761
+ *
762
+ * Pass it whenever the glyph stands alone, which is the reason to use one.
763
+ */
764
+ label?: string;
765
+ }
766
+ declare const StatusIcon: React$1.ForwardRefExoticComponent<StatusIconProps & React$1.RefAttributes<SVGSVGElement>>;
767
+
768
+ /**
769
+ * How much room a row gets. The type size never moves — a row is the root size
770
+ * at every density — only the height and the cell padding do.
771
+ *
772
+ * - `compact` — the control scale's `sm`, 26px: a journal, a trace, a
773
+ * step's output, a log.
774
+ * - `default` — `md`, 32px: a list in an application.
775
+ * - `comfortable` — `lg`, 40px: a table standing alone on a page, a settings
776
+ * list.
777
+ *
778
+ * The px are at a 13px root. Every density is a ratio of the root, like the
779
+ * type, so a site that sets a 16px root gets proportionally roomier rows.
780
+ */
781
+ type TableDensity = "compact" | "default" | "comfortable";
634
782
  declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & {
635
- density?: "default" | "compact";
783
+ density?: TableDensity;
784
+ /**
785
+ * No box, and nothing wasted on its outside: only the rules between rows
786
+ * are drawn, and the first and last columns sit flush with the text around
787
+ * the table. For a table inside a card, a panel or an answer, whose edge
788
+ * already frames it — a second border a few pixels in reads as a box
789
+ * inside a box.
790
+ */
791
+ seamless?: boolean;
792
+ /**
793
+ * Draw the box. Off for a wrapper that draws the box itself, as `DataTable`
794
+ * does. `seamless` draws no box either way.
795
+ */
796
+ bordered?: boolean;
636
797
  } & React$1.RefAttributes<HTMLTableElement>>;
637
798
  declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
638
799
  declare const TableBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
@@ -794,6 +955,168 @@ interface AgentChipProps extends React$1.HTMLAttributes<HTMLSpanElement>, Varian
794
955
  */
795
956
  declare const AgentChip: React$1.ForwardRefExoticComponent<AgentChipProps & React$1.RefAttributes<HTMLSpanElement>>;
796
957
 
958
+ /** One published model, and what this session may do with it. */
959
+ interface DataReachModel {
960
+ id: string;
961
+ /** `Accounts`, `Funding rounds`. */
962
+ name: string;
963
+ /**
964
+ * Records this session can see, after its slice — not the model's size.
965
+ * `null` or left out while the count is on its way.
966
+ */
967
+ records?: number | null;
968
+ /**
969
+ * What it may do — `["read"]`, `["read", "write"]` — or `"denied"`. An open
970
+ * vocabulary: a product that adds `export` passes it and it is written out.
971
+ */
972
+ access: string[] | "denied";
973
+ /** What the session's view of it is narrowed to — `time 2019 → now · axis announced_at`. */
974
+ slice?: React$1.ReactNode;
975
+ }
976
+ /** What a session can reach, summed: the models it may read and the records in them. */
977
+ declare function summarizeReach(models: DataReachModel[]): {
978
+ readable: number;
979
+ total: number;
980
+ records: number;
981
+ counting: boolean;
982
+ };
983
+ /** `1.2M`, `84K` — how a record count is written where room is short. */
984
+ declare const formatRecords: (n: number) => string;
985
+ interface DataReachProps extends React$1.HTMLAttributes<HTMLDivElement> {
986
+ models: DataReachModel[];
987
+ /**
988
+ * Ask for the denied models. Shown only when some are denied; it receives
989
+ * their ids. What a request does is the host's.
990
+ */
991
+ onRequestAccess?: (models: string[]) => void;
992
+ }
993
+ /**
994
+ * The data a session can reach: every published model, the records it can see
995
+ * in each, what it may do with them, and what its view is narrowed to.
996
+ *
997
+ * **Denied models are listed, muted, never left out.** What a session cannot
998
+ * see is what a bigger question would need, and a list of only what is open
999
+ * would make the agent look more capable than it is. A count still on its way
1000
+ * says so (`counting…`) rather than drawing a zero.
1001
+ *
1002
+ * Counts are what *this session* sees after its slice — a model's full size
1003
+ * would overstate what the agent can answer from.
1004
+ */
1005
+ declare const DataReach: React$1.ForwardRefExoticComponent<DataReachProps & React$1.RefAttributes<HTMLDivElement>>;
1006
+
1007
+ /**
1008
+ * What of the Graph's data may accompany a call across the boundary.
1009
+ *
1010
+ * A **closed** set, because an open one is a list nobody can audit: a reader
1011
+ * has to know that what is not named cannot be sent, and that only holds if the
1012
+ * vocabulary is fixed.
1013
+ */
1014
+ type EgressClass = "type_names" | "property_names" | "the_question" | "property_values" | "record_ids" | "aggregates" | "everything";
1015
+ interface EgressListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1016
+ /** The destination this governs — `llm/anthropic-prod/claude-opus-5`. */
1017
+ to: string;
1018
+ /** What may be sent. **Empty is the default and means nothing may.** */
1019
+ classes?: EgressClass[];
1020
+ /**
1021
+ * What was actually withheld on a real crossing. Absent reads as a **rule**
1022
+ * at rest; present reads as an **event** — see the note below.
1023
+ */
1024
+ cut?: EgressClass[];
1025
+ }
1026
+ /**
1027
+ * Per destination: what may be sent, and what was cut.
1028
+ *
1029
+ * **Egress is declared per destination, on the rule that matched it.** A
1030
+ * run-wide setting would have to be the strictest of its destinations, which is
1031
+ * the least useful one — so this component is always about *one* address, and a
1032
+ * surface showing several renders several.
1033
+ *
1034
+ * **Reading a thing and sending it are different permissions.** A query may
1035
+ * filter on `Deal.revenue` while the value never enters a prompt — used to
1036
+ * **compute**, not to **reason**. That is the distinction this list exists to
1037
+ * make visible, and it is why `property_values` being absent is worth as much
1038
+ * screen as the classes that are present.
1039
+ *
1040
+ * **`cut` is what makes it evidence rather than configuration.** The same
1041
+ * component states the bound before a run and what the bound actually withheld
1042
+ * after one; without `cut`, a reader cannot tell a rule that did work from a
1043
+ * rule that never bit.
1044
+ *
1045
+ * An empty `classes` is drawn in words, because the lens default is `[]` and a
1046
+ * blank row would read as *not configured* rather than *nothing may leave*.
1047
+ */
1048
+ declare const EgressList: React$1.ForwardRefExoticComponent<EgressListProps & React$1.RefAttributes<HTMLDivElement>>;
1049
+
1050
+ interface AgentHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1051
+ /** What the session is — its name, or a switcher that lists the others. */
1052
+ title: React$1.ReactNode;
1053
+ /** Who is answering — `Analyst`, `v2`, `sonnet-5.5`. */
1054
+ agent?: {
1055
+ name: string;
1056
+ version?: string;
1057
+ model?: string;
1058
+ };
1059
+ /** Where the session is — `running…`, `needs input (1)`, `idle`. `short` is said under 420px. */
1060
+ status?: {
1061
+ tone: NonNullable<StatusDotProps["tone"]>;
1062
+ label: string;
1063
+ short?: string;
1064
+ };
1065
+ /** At the end of the first line — a menu of the session's actions, a close. */
1066
+ actions?: React$1.ReactNode;
1067
+ /** The data the session can reach: the whole world it opened on, or an access group's share. */
1068
+ access?: {
1069
+ kind: "world" | "group";
1070
+ label: string;
1071
+ models?: DataReachModel[];
1072
+ };
1073
+ /** The lens the session reads through — `Funding watch`. */
1074
+ lens?: string;
1075
+ /** Tokens spent of the session's budget. Tokens, never money. */
1076
+ budget?: {
1077
+ used: number;
1078
+ limit: number;
1079
+ };
1080
+ /** The rules it runs under: the strictest as the badge, every one in its popover. */
1081
+ governance?: {
1082
+ summary: string;
1083
+ rules?: {
1084
+ label: string;
1085
+ value: string;
1086
+ }[];
1087
+ egress?: {
1088
+ to: string;
1089
+ classes?: EgressClass[];
1090
+ }[];
1091
+ };
1092
+ /** The marks before the access, the lens and the governance badge. The kit ships no icons. */
1093
+ icons?: {
1094
+ world?: React$1.ReactNode;
1095
+ group?: React$1.ReactNode;
1096
+ lens?: React$1.ReactNode;
1097
+ governance?: React$1.ReactNode;
1098
+ };
1099
+ /** Ask for the denied models — their ids. Shown in the data reach when some are denied. */
1100
+ onRequestAccess?: (models: string[]) => void;
1101
+ /** The host's settings, at a section — `data`, `governance`. Shown as a link in each popover. */
1102
+ onOpenSettings?: (section: "data" | "governance") => void;
1103
+ }
1104
+ /**
1105
+ * The header of an agent's session: who is answering and where it stands,
1106
+ * then what it can reach and the rules it runs under.
1107
+ *
1108
+ * Line one is the session, the agent and its status, and the host's actions.
1109
+ * Line two — drawn when any of it is given — is the data reach (opens every
1110
+ * model, the records this session sees in each, and what it may do), the
1111
+ * lens, the token budget and the governance badge (opens the rules and what
1112
+ * may leave, per destination). Under 420px of its own width the second line
1113
+ * keeps its marks and counts and drops the words.
1114
+ *
1115
+ * Plain props, no conversation: pass it as a `ChatSession`'s `header`, or
1116
+ * over a run view or a board that shows the same session.
1117
+ */
1118
+ declare const AgentHeader: React$1.ForwardRefExoticComponent<AgentHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
1119
+
797
1120
  declare const stateVariants: (props?: ({
798
1121
  tone?: "active" | "error" | "running" | "draft" | "review" | null | undefined;
799
1122
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -806,7 +1129,7 @@ interface AppStatusBarProps extends React$1.HTMLAttributes<HTMLDivElement>, Vari
806
1129
  end?: React$1.ReactNode;
807
1130
  }
808
1131
  /**
809
- * The 25px line at the bottom of the window.
1132
+ * The `sm` line at the bottom of the window — a control's height.
810
1133
  *
811
1134
  * It describes the **session**, not the screen: what is loaded, what state it
812
1135
  * is in, which build is running. That is why it barely changes as you navigate
@@ -838,9 +1161,18 @@ interface Artifact {
838
1161
  * existed and is gone* is a different fact from *no file was written*.
839
1162
  */
840
1163
  gone?: boolean;
1164
+ /** A glyph before the name, in `list` — the file's type. Passed in: the kit ships no icon set. */
1165
+ icon?: React$1.ReactNode;
841
1166
  }
842
1167
  interface ArtifactTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
843
1168
  files: Artifact[];
1169
+ /**
1170
+ * `table` (default) — the step's full record: header, kind, written, and an
1171
+ * Open / Download per row. `list` — name, size and digest in bare rows, for
1172
+ * the files an answer hands over, where the header and buttons would
1173
+ * outweigh two or three names.
1174
+ */
1175
+ variant?: "table" | "list";
844
1176
  onOpen?: (file: Artifact, index: number) => void;
845
1177
  onDownload?: (file: Artifact, index: number) => void;
846
1178
  /** Anything else a row offers. Replaces the two defaults when given. */
@@ -863,145 +1195,18 @@ interface ArtifactTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
863
1195
  * wrote an empty file.
864
1196
  */
865
1197
  declare const ArtifactTable: React$1.ForwardRefExoticComponent<ArtifactTableProps & React$1.RefAttributes<HTMLDivElement>>;
866
-
867
- interface AttemptRow {
868
- /** `queued` · `attempt 1` · `attempt 2` · `settled`. */
869
- label: React$1.ReactNode;
870
- /** When it started, on the run's own clock — `+44.5s`. */
871
- started?: React$1.ReactNode;
872
- /** How long it took — `30.0s`, or `4.2s…` while it is still running. */
873
- took?: React$1.ReactNode;
874
- /** What happened, in one line. */
875
- what?: React$1.ReactNode;
876
- tone?: "muted" | "info" | "success" | "warning" | "destructive";
877
- /** It ran and it did not stick. **Struck, never dropped.** */
878
- struck?: boolean;
879
- }
880
- interface AttemptClockProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
881
- rows: AttemptRow[];
882
- /**
883
- * What the two numbers are — `elapsed 32.4s · working 2.3s · the gap is the
884
- * attempt that timed out`.
885
- *
886
- * **Stated, never left as arithmetic.** A reader who has to subtract two
887
- * durations to find a 30-second timeout has been handed a sum instead of an
888
- * answer.
889
- */
890
- summary?: React$1.ReactNode;
891
- }
892
- /**
893
- * A step's clock, attempt by attempt.
894
- *
895
- * One duration cannot say what happened to a step that timed out once and then
896
- * returned: `2.1s` is what it *did*, `32.4s` is what a reader waited, and the
897
- * gap between them **is** the first attempt. So the clock is a row per attempt
898
- * — queued, each try, settled — and the try that failed keeps its place, struck.
899
- *
900
- * Nothing new is recorded for this: it is the `timing` and `attempt` fields the
901
- * interpreter already writes, read as a list instead of as a total.
902
- */
903
- declare const AttemptClock: React$1.ForwardRefExoticComponent<AttemptClockProps & React$1.RefAttributes<HTMLDivElement>>;
904
-
905
- /**
906
- * TODO — provisional. Built ahead of its design review.
907
- *
908
- * The chart set was deliberately deferred while the rest of the kit was built,
909
- * because charts are the one group with a real design question in them rather
910
- * than a markup question: which forms this product actually needs, at what
911
- * sizes, and how much a 330px drawer can carry. This component satisfies the
912
- * dataviz rules and the validated palette, but the *form inventory* has not been
913
- * agreed — treat the API as unsettled until a board screen uses it in anger.
914
- */
915
-
916
- interface BarDatum {
917
- label: React$1.ReactNode;
918
- value: number;
919
- /**
920
- * Overrides the series colour for this bar. Use a data-palette token
921
- * (`var(--color-data-3)`) when the bar's identity is an entity — a node type,
922
- * a theme — so it matches that entity everywhere else it appears.
923
- */
924
- color?: string;
925
- /** What the tip should read, if not the raw value. */
926
- display?: React$1.ReactNode;
927
- }
928
- interface BarChartHProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
929
- data: BarDatum[];
930
- /** Fixes the scale. Defaults to the largest value present. */
931
- max?: number;
932
- /** Width of the label column, so bars start on the same x. */
933
- labelWidth?: number;
934
- /** Series colour when a datum does not override it. */
935
- color?: string;
936
- /** Names what is plotted. A single series needs no legend when this is set. */
937
- caption?: React$1.ReactNode;
938
- }
939
- /**
940
- * Magnitude across a handful of named things.
941
- *
942
- * Horizontal because the labels are words — a stock, a pattern, a theme — and
943
- * words read badly rotated under a column. Bars grow from a single baseline on
944
- * the left, so length is the only thing carrying the value.
945
- *
946
- * One series, so there is no legend: `caption` names what is plotted. Every bar
947
- * is directly labelled at its tip, which is also what discharges the light-mode
948
- * contrast obligation on the data palette — identity and value are never
949
- * carried by hue alone.
950
- */
951
- declare const BarChartH: React$1.ForwardRefExoticComponent<BarChartHProps & React$1.RefAttributes<HTMLDivElement>>;
952
-
953
- /**
954
- * TODO — provisional. Built ahead of its design review.
955
- *
956
- * The chart set was deliberately deferred while the rest of the kit was built,
957
- * because charts are the one group with a real design question in them rather
958
- * than a markup question: which forms this product actually needs, at what
959
- * sizes, and how much a 330px drawer can carry. This component satisfies the
960
- * dataviz rules and the validated palette, but the *form inventory* has not been
961
- * agreed — treat the API as unsettled until a board screen uses it in anger.
962
- */
963
-
964
- interface ColumnDatum {
965
- /** The period — `wk 36`. */
966
- label: React$1.ReactNode;
967
- /** A second line under the label — `1–5 Sep`. */
968
- sublabel?: React$1.ReactNode;
969
- value: number;
970
- display?: React$1.ReactNode;
971
- }
972
- interface BarChartVProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
973
- data: ColumnDatum[];
974
- /** Fixes the scale. Defaults to the largest value present. */
975
- max?: number;
976
- /** Values to draw a hairline at — `[50, 75, 100]`. */
977
- gridlines?: number[];
978
- height?: number;
979
- color?: string;
980
- /** Colour for the column the story is about. Defaults to `color`. */
981
- highlightColor?: string;
982
- /** Which column carries the emphasis — usually the most recent. */
983
- highlightIndex?: number;
984
- /**
985
- * Which columns get a value on the cap.
986
- *
987
- * `last` by default. A number on every column stops being a label and becomes
988
- * texture; the gridlines carry the rest.
989
- */
990
- labelMode?: "last" | "all" | "none";
991
- caption?: React$1.ReactNode;
1198
+ interface ArtifactCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1199
+ file: Artifact;
1200
+ /** The line under the name — `48 KB · kept for 7 days`, `412 rows · missing store code`. */
1201
+ note?: React$1.ReactNode;
1202
+ /** At the right — a `Download` button, or a tag saying what the file is. */
1203
+ aside?: React$1.ReactNode;
992
1204
  }
993
1205
  /**
994
- * One measure over a few periods.
995
- *
996
- * Vertical because the x-axis is time and time reads left to right. Columns are
997
- * capped at 24px and separated by real gaps, so the band's leftover is air
998
- * rather than a fatter bar.
999
- *
1000
- * `labelMode` defaults to `last`: the current period is the one being asked
1001
- * about, and the gridlines carry the others. One series, so no legend —
1002
- * `caption` says what is plotted.
1206
+ * One file, as the whole of what an answer hands over: its type, its name,
1207
+ * what it holds and what to do with it. Several files are an `ArtifactTable`.
1003
1208
  */
1004
- declare const BarChartV: React$1.ForwardRefExoticComponent<BarChartVProps & React$1.RefAttributes<HTMLDivElement>>;
1209
+ declare const ArtifactCard: React$1.ForwardRefExoticComponent<ArtifactCardProps & React$1.RefAttributes<HTMLDivElement>>;
1005
1210
 
1006
1211
  /**
1007
1212
  * The capabilities Invana ships today — **suggestions, not a limit.**
@@ -1092,6 +1297,11 @@ interface CannotAnswerCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1092
1297
  remedy?: React$1.ReactNode;
1093
1298
  /** Overrides the label. Defaults to `cannot answer`. */
1094
1299
  label?: React$1.ReactNode;
1300
+ /**
1301
+ * `info` for an answer given in part: the card says which part the data
1302
+ * does not hold, above the answer that covers the rest.
1303
+ */
1304
+ tone?: "default" | "info";
1095
1305
  }
1096
1306
  /**
1097
1307
  * The graph does not hold what was asked.
@@ -1117,7 +1327,7 @@ declare const CannotAnswerCard: React$1.ForwardRefExoticComponent<CannotAnswerCa
1117
1327
  *
1118
1328
  * `agent` is the **spine**: the runtime itself, which does the participating
1119
1329
  * rather than being a participant, and is never governed. Nothing in this file
1120
- * knows that — a band says so with `spine`, see `LayerStrip`.
1330
+ * knows that — the surface that draws the layers says so.
1121
1331
  */
1122
1332
  type KnownLayer = "graph_data" | "llm" | "third_party" | "cache" | "human" | "agent";
1123
1333
  /**
@@ -1219,7 +1429,7 @@ interface LayerChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "
1219
1429
  /**
1220
1430
  * One class of participant, as a swatch and a name.
1221
1431
  *
1222
- * It heads a `LayerSection`, bands a run's `LayerStrip`, and counts a layer in
1432
+ * It heads a `LayerSection`, names a layer's row in a run's `Gantt`, and counts a layer in
1223
1433
  * the Worlds drawer — everywhere a reader has to know *what kind of thing this
1224
1434
  * is* before reading which one.
1225
1435
  *
@@ -1325,6 +1535,8 @@ interface CastTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "c
1325
1535
  */
1326
1536
  resolved?: CastResolution[];
1327
1537
  readOnly?: boolean;
1538
+ /** Passed to the table: no box, outer columns flush — for a cast inside a panel. */
1539
+ seamless?: boolean;
1328
1540
  }
1329
1541
  /**
1330
1542
  * `role → resolves to → why this one`, four fixed rows.
@@ -1347,6 +1559,30 @@ interface CastTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "c
1347
1559
  */
1348
1560
  declare const CastTable: React$1.ForwardRefExoticComponent<CastTableProps & React$1.RefAttributes<HTMLDivElement>>;
1349
1561
 
1562
+ interface CaveatNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
1563
+ /** The kind of caveat, one word — `indicative`, `association`, `simulation`. */
1564
+ label: React$1.ReactNode;
1565
+ /** What was excluded, imputed or assumed, and how far to trust the figure. */
1566
+ children?: React$1.ReactNode;
1567
+ /**
1568
+ * `warning` (the default) qualifies the figure. `info` says what was filled
1569
+ * in rather than measured; `destructive` says the data itself is wrong or late.
1570
+ */
1571
+ tone?: "warning" | "info" | "destructive";
1572
+ /** A link after the text, to what the caveat is about — `Show the 4 stores`. */
1573
+ action?: React$1.ReactNode;
1574
+ onAction?: () => void;
1575
+ }
1576
+ /**
1577
+ * How far to trust the figure above it.
1578
+ *
1579
+ * What was excluded, imputed or assumed, said beside the answer rather than
1580
+ * in a footnote, and labelled with its kind so a reader scanning several
1581
+ * answers can tell an association from a simulation at a glance. Tinted, not
1582
+ * bordered: it qualifies the answer, it is not an error.
1583
+ */
1584
+ declare const CaveatNote: React$1.ForwardRefExoticComponent<CaveatNoteProps & React$1.RefAttributes<HTMLDivElement>>;
1585
+
1350
1586
  interface ChatSessionProps {
1351
1587
  /** The message list — typically `<ChatSessionMessage />` nodes. */
1352
1588
  children?: React$1.ReactNode;
@@ -1375,6 +1611,8 @@ interface ChatSessionProps {
1375
1611
  * ResizeObserver watches the message column), but only while the user is already
1376
1612
  * near the bottom — scroll up to read history and the view stays put. Layout and
1377
1613
  * scroll behaviour only; it owns no session state.
1614
+ *
1615
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1378
1616
  */
1379
1617
  declare function ChatSession({ children, footer, emptyState, autoScrollKey, followThreshold, className, bodyClassName, }: ChatSessionProps): React$1.JSX.Element;
1380
1618
 
@@ -1412,6 +1650,8 @@ interface ChatSessionMessageProps {
1412
1650
  *
1413
1651
  * Presentational only — no data fetching or state — so it composes over any
1414
1652
  * backend.
1653
+ *
1654
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1415
1655
  */
1416
1656
  declare function ChatSessionMessage({ role, children, status, icon, meta, actions, footer, className, }: ChatSessionMessageProps): React$1.JSX.Element;
1417
1657
 
@@ -1447,6 +1687,8 @@ interface ChatSessionMessageOptionsProps {
1447
1687
  *
1448
1688
  * Purely presentational and icon-agnostic: you supply the icons and handlers, so
1449
1689
  * it slots into any backend.
1690
+ *
1691
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1450
1692
  */
1451
1693
  declare function ChatSessionMessageOptions({ actions, className, }: ChatSessionMessageOptionsProps): React$1.JSX.Element;
1452
1694
 
@@ -1487,6 +1729,8 @@ interface ChatSessionComposerProps {
1487
1729
  * Deliberately dependency-free — no query-language editor or provider selects
1488
1730
  * are baked in. Drop your own controls into `toolbarStart` / `toolbarEnd` (and
1489
1731
  * a QL editor into a custom layout if you need one).
1732
+ *
1733
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1490
1734
  */
1491
1735
  declare function ChatSessionComposer({ value, onChange, onSend, onStop, isRunning, disabled, placeholder, toolbarStart, toolbarEnd, attachments, sendIcon, stopIcon, sendDisabled, className, textareaClassName, }: ChatSessionComposerProps): React$1.JSX.Element;
1492
1736
 
@@ -1495,6 +1739,8 @@ declare function ChatSessionComposer({ value, onChange, onSend, onStop, isRunnin
1495
1739
  * status dot, prompt caret, spinner — occupies this fixed-width column so all
1496
1740
  * body text starts on one left edge ({@link ChatSessionPromptRow},
1497
1741
  * {@link ChatSessionProgressLine} and this row all use it).
1742
+ *
1743
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1498
1744
  */
1499
1745
  declare const chatSessionGutterClass = "w-3.5 shrink-0 flex justify-center";
1500
1746
  /**
@@ -1526,6 +1772,8 @@ interface ChatSessionActivityRowProps {
1526
1772
  * `actions` for the re-run / view-query / copy / vote toolbar.
1527
1773
  *
1528
1774
  * Presentational only — no data fetching or state.
1775
+ *
1776
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1529
1777
  */
1530
1778
  declare function ChatSessionActivityRow({ status, marker, children, actions, meta, footer, className, }: ChatSessionActivityRowProps): React$1.JSX.Element;
1531
1779
  interface ChatSessionActivitySubLineProps {
@@ -1538,6 +1786,8 @@ interface ChatSessionActivitySubLineProps {
1538
1786
  * An indented detail line under an activity row — "└ Backgrounded agent
1539
1787
  * (↓ to manage)", an interruption note, a one-line result. Render inside the
1540
1788
  * row's `footer` (or directly after the body in `children`).
1789
+ *
1790
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1541
1791
  */
1542
1792
  declare function ChatSessionActivitySubLine({ elbow, children, className, }: ChatSessionActivitySubLineProps): React$1.JSX.Element;
1543
1793
 
@@ -1558,6 +1808,8 @@ interface ChatSessionPromptRowProps {
1558
1808
  * Full bleed assumes the default `ChatSession` body padding (`p-3`) — the
1559
1809
  * negative margins here cancel it. If you override `bodyClassName` with a
1560
1810
  * different horizontal padding, pass matching `-mx-*`/`px-*` via `className`.
1811
+ *
1812
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1561
1813
  */
1562
1814
  declare function ChatSessionPromptRow({ children, caret, meta, className, }: ChatSessionPromptRowProps): React$1.JSX.Element;
1563
1815
 
@@ -1574,6 +1826,8 @@ interface ChatSessionProgressLineProps {
1574
1826
  * A transient "work in flight" line in the transcript — spinner in the shared
1575
1827
  * gutter, label, and an optional right-aligned elapsed readout. Replace it with
1576
1828
  * a settled {@link ChatSessionActivityRow} when the run finishes.
1829
+ *
1830
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1577
1831
  */
1578
1832
  declare function ChatSessionProgressLine({ children, spinner, elapsed, className, }: ChatSessionProgressLineProps): React$1.JSX.Element;
1579
1833
 
@@ -1589,6 +1843,13 @@ interface ChatSessionDisclosureProps {
1589
1843
  /** Uncontrolled initial state. Defaults to closed. */
1590
1844
  defaultOpen?: boolean;
1591
1845
  onOpenChange?: (open: boolean) => void;
1846
+ /**
1847
+ * `card` (default) is a bordered block under an activity row. `inline` is a
1848
+ * bare line inside an answer — `▸ method` with its meta at the right in mono —
1849
+ * that opens onto a preformatted code block when its content is text, or onto
1850
+ * the content as given — code, the facts under it, a list of steps — when not.
1851
+ */
1852
+ variant?: "card" | "inline";
1592
1853
  /** Custom chevron node; the default "▸" rotates when open. */
1593
1854
  chevron?: React$1.ReactNode;
1594
1855
  className?: string;
@@ -1602,8 +1863,30 @@ interface ChatSessionDisclosureProps {
1602
1863
  * `overflow-x-auto` body, matching the transcript's nested-detail grammar.
1603
1864
  *
1604
1865
  * Controlled (`open` + `onOpenChange`) or uncontrolled (`defaultOpen`).
1866
+ *
1867
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1868
+ */
1869
+ declare function ChatSessionDisclosure({ label, meta, children, open, defaultOpen, onOpenChange, variant, chevron, className, contentClassName, }: ChatSessionDisclosureProps): React$1.JSX.Element;
1870
+ /**
1871
+ * The code an inline disclosure opens onto, when it opens onto more than code:
1872
+ * a query, a formula, a model. `<strong>` inside marks its keywords.
1873
+ *
1874
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1605
1875
  */
1606
- declare function ChatSessionDisclosure({ label, meta, children, open, defaultOpen, onOpenChange, chevron, className, contentClassName, }: ChatSessionDisclosureProps): React$1.JSX.Element;
1876
+ declare function ChatSessionDisclosureCode({ className, ...props }: React$1.HTMLAttributes<HTMLPreElement>): React$1.JSX.Element;
1877
+ interface ChatSessionDisclosureStepsProps extends React$1.OlHTMLAttributes<HTMLOListElement> {
1878
+ /** Each step in the order it ran, with its count or time at the right. */
1879
+ steps: {
1880
+ label: React$1.ReactNode;
1881
+ detail?: React$1.ReactNode;
1882
+ }[];
1883
+ }
1884
+ /**
1885
+ * A method of several steps, numbered in the order they ran.
1886
+ *
1887
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1888
+ */
1889
+ declare function ChatSessionDisclosureSteps({ steps, className, ...props }: ChatSessionDisclosureStepsProps): React$1.JSX.Element;
1607
1890
 
1608
1891
  /**
1609
1892
  * Lifecycle of a background task / session. Mapped to the status tokens from
@@ -1629,7 +1912,9 @@ interface ChatSessionTaskRowProps {
1629
1912
  /**
1630
1913
  * One background task / agent / session: status dot, bold name, truncating
1631
1914
  * description, right-aligned meta. Used both in the pinned strip under a
1632
- * transcript and in the grouped task dashboard ({@link ChatSessionTaskGroup}).
1915
+ * transcript and in the grouped task board ({@link ChatSessionTaskGroup}).
1916
+ *
1917
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1633
1918
  */
1634
1919
  declare function ChatSessionTaskRow({ status, indicator, name, description, meta, onClick, className, }: ChatSessionTaskRowProps): React$1.JSX.Element;
1635
1920
  interface ChatSessionTaskGroupProps {
@@ -1641,7 +1926,9 @@ interface ChatSessionTaskGroupProps {
1641
1926
  }
1642
1927
  /**
1643
1928
  * A titled section of task rows — the "Needs input" / "Completed" groups of a
1644
- * session dashboard.
1929
+ * session board.
1930
+ *
1931
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1645
1932
  */
1646
1933
  declare function ChatSessionTaskGroup({ heading, children, className, }: ChatSessionTaskGroupProps): React$1.JSX.Element;
1647
1934
 
@@ -1656,6 +1943,8 @@ interface ChatSessionStatusBarProps {
1656
1943
  * The slim bar under a chat session's composer — mode indicator, view
1657
1944
  * switches, agent counts, keyboard hints. Two slots, muted by default; put
1658
1945
  * interactive elements (buttons, toggles) straight into the slots.
1946
+ *
1947
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1659
1948
  */
1660
1949
  declare function ChatSessionStatusBar({ start, end, className, }: ChatSessionStatusBarProps): React$1.JSX.Element;
1661
1950
 
@@ -1679,19 +1968,46 @@ interface ChatSessionContextChipProps extends React$1.HTMLAttributes<HTMLDivElem
1679
1968
  *
1680
1969
  * It states the binding in words. A highlight on the canvas alone would leave
1681
1970
  * the reader guessing what scope their question has.
1971
+ *
1972
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1682
1973
  */
1683
1974
  declare function ChatSessionContextChip({ icon, onDismiss, dismissLabel, className, children, ...props }: ChatSessionContextChipProps): React$1.JSX.Element;
1684
1975
 
1976
+ /**
1977
+ * The cursor at the end of text that is still being written. A block, not a
1978
+ * bar: it reads as the place the next word lands.
1979
+ *
1980
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1981
+ */
1982
+ declare function ChatSessionCaret({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
1983
+
1685
1984
  interface CitationRowProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "children"> {
1686
1985
  /** What kind of record this is — `Article`, `Bar`, `Event`. */
1687
- kind: React$1.ReactNode;
1986
+ kind?: React$1.ReactNode;
1987
+ /**
1988
+ * The number an answer cites it by — `1` renders as `[1]`. Numbered rows are
1989
+ * how an answer's markers are resolved, so the number leads the row.
1990
+ */
1991
+ marker?: React$1.ReactNode;
1688
1992
  /** The record itself, in the words it was stored with. */
1689
1993
  children?: React$1.ReactNode;
1690
1994
  /** Where it came from — the dataset, the publisher, the timestamp. */
1691
1995
  source?: React$1.ReactNode;
1996
+ /** How many records it contributed — `3,406`, `5 days`. Mono, at the right. */
1997
+ count?: React$1.ReactNode;
1998
+ /** A second line under the record — what kind of source it is and how fresh: `table · loaded 28 Sep`. */
1999
+ detail?: React$1.ReactNode;
2000
+ /** The row the reader is on — the one a lit marker in the prose points to. */
2001
+ active?: boolean;
1692
2002
  }
1693
2003
  interface CitationListProps extends React$1.HTMLAttributes<HTMLUListElement> {
1694
2004
  children?: React$1.ReactNode;
2005
+ /**
2006
+ * A line under the sources. `warning` when it says the answer rests on no
2007
+ * records — which is said out loud, never left for the zeros to imply.
2008
+ */
2009
+ note?: React$1.ReactNode;
2010
+ noteTone?: "muted" | "warning";
1695
2011
  }
1696
2012
  /**
1697
2013
  * The records an answer rests on.
@@ -1747,21 +2063,56 @@ interface ClarifyOption {
1747
2063
  detail?: React$1.ReactNode;
1748
2064
  disabled?: boolean;
1749
2065
  }
2066
+ /**
2067
+ * Where the ask is in its life. `pending` waits on the reader; the rest are
2068
+ * settled and read-only. Open: a surface may name its own.
2069
+ */
2070
+ type ClarifyState = "pending" | "answered" | "skipped" | "superseded" | "expired" | (string & {});
1750
2071
  interface ClarifyCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
2072
+ /** @default "pending" */
2073
+ state?: ClarifyState;
2074
+ /** The header's word while the ask waits — `confirm` for a yes-or-no. @default "question" */
2075
+ kind?: React$1.ReactNode;
1751
2076
  /** Which step asked — `understand`. */
1752
2077
  step?: React$1.ReactNode;
1753
2078
  /** How long it has been waiting — `parked 14 min`. */
1754
2079
  waiting?: React$1.ReactNode;
2080
+ /** When it settled — `just now`, `2 min ago`. At the header's right, after `waiting`. */
2081
+ time?: React$1.ReactNode;
1755
2082
  /** The question. One sentence. */
1756
- question: React$1.ReactNode;
1757
- options: ClarifyOption[];
2083
+ question?: React$1.ReactNode;
2084
+ /** The choices, as one Questionnaire item. Ignored when `children` is given. */
2085
+ options?: ClarifyOption[];
1758
2086
  value?: string;
1759
2087
  onSelect?: (value: string) => void;
1760
- /** The confirm control. */
1761
- actions?: React$1.ReactNode;
1762
- /** Why these options and not others. */
1763
- footnote?: React$1.ReactNode;
2088
+ /**
2089
+ * Any other control, in place of `options` — a `Questionnaire` of several
2090
+ * steps, a form, a summary of the answers.
2091
+ */
2092
+ children?: React$1.ReactNode;
2093
+ /** Why these options and not others, or where a default came from. */
2094
+ footnote?: React$1.ReactNode;
2095
+ /** The confirm control. */
2096
+ actions?: React$1.ReactNode;
2097
+ /** Which edge the actions sit on. @default "start" */
2098
+ actionsAlign?: "start" | "end";
1764
2099
  }
2100
+ interface ClarifyFootnoteProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
2101
+ children?: React$1.ReactNode;
2102
+ }
2103
+ /** The line under an ask: why these options, or where a default came from. *
2104
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
2105
+ */
2106
+ declare const ClarifyFootnote: React$1.ForwardRefExoticComponent<ClarifyFootnoteProps & React$1.RefAttributes<HTMLParagraphElement>>;
2107
+ interface ClarifyActionsProps extends React$1.HTMLAttributes<HTMLDivElement> {
2108
+ /** Which edge the actions sit on. @default "start" */
2109
+ align?: "start" | "end";
2110
+ children?: React$1.ReactNode;
2111
+ }
2112
+ /** The row of controls that answers, skips or changes an ask. *
2113
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
2114
+ */
2115
+ declare const ClarifyActions: React$1.ForwardRefExoticComponent<ClarifyActionsProps & React$1.RefAttributes<HTMLDivElement>>;
1765
2116
  /**
1766
2117
  * The run stopped and asked, rather than guessing.
1767
2118
  *
@@ -1774,6 +2125,14 @@ interface ClarifyCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
1774
2125
  * holds, which is why `detail` exists and why `footnote` is worth saying out
1775
2126
  * loud. A card that offered invented options would undo the grounding the rest
1776
2127
  * of the system is built on.
2128
+ *
2129
+ * **One card through the ask's whole life.** `pending` offers the choice; once
2130
+ * `answered`, `skipped`, `superseded` or `expired` the header says so and the
2131
+ * body is read-only. The body is `options` for a choice, or any control passed
2132
+ * as `children` — a `Questionnaire` of several steps (with its progress and
2133
+ * Skip / Next), a form, or the answers of a finished multi-step ask.
2134
+ *
2135
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1777
2136
  */
1778
2137
  declare const ClarifyCard: React$1.ForwardRefExoticComponent<ClarifyCardProps & React$1.RefAttributes<HTMLDivElement>>;
1779
2138
 
@@ -1792,7 +2151,8 @@ interface ContextBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
1792
2151
  hint?: React$1.ReactNode;
1793
2152
  }
1794
2153
  /**
1795
- * The 28px bar between a panel and the status bar.
2154
+ * The `sm` bar between a panel and the status bar — a control's height, so
2155
+ * it lines up with the controls it sits beside.
1796
2156
  *
1797
2157
  * It answers "where am I, and what is true right now" — the view switch, the
1798
2158
  * counts that matter for the work in front of you, and the shortcut that
@@ -1856,100 +2216,19 @@ interface DiffListProps extends React$1.HTMLAttributes<HTMLUListElement> {
1856
2216
  declare const DiffList: React$1.ForwardRefExoticComponent<DiffListProps & React$1.RefAttributes<HTMLUListElement>>;
1857
2217
  declare const DiffRow: React$1.ForwardRefExoticComponent<DiffRowProps & React$1.RefAttributes<HTMLLIElement>>;
1858
2218
 
1859
- /**
1860
- * TODO — provisional. Built ahead of its design review.
1861
- *
1862
- * The chart set was deliberately deferred while the rest of the kit was built,
1863
- * because charts are the one group with a real design question in them rather
1864
- * than a markup question: which forms this product actually needs, at what
1865
- * sizes, and how much a 330px drawer can carry. This component satisfies the
1866
- * dataviz rules and the validated palette, but the *form inventory* has not been
1867
- * agreed — treat the API as unsettled until a board screen uses it in anger.
1868
- */
1869
-
1870
- interface DivergingDatum {
1871
- label: React$1.ReactNode;
1872
- /** Signed. The sign is the whole point of this chart. */
1873
- value: number;
1874
- display?: React$1.ReactNode;
1875
- }
1876
- interface DivergingBarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1877
- data: DivergingDatum[];
1878
- /** Fixes the scale on both sides. Defaults to the largest magnitude present. */
1879
- max?: number;
1880
- labelWidth?: number;
1881
- /** Above the midpoint. Defaults to `--color-success`. */
1882
- positiveColor?: string;
1883
- /** Below it. Defaults to `--color-destructive`. */
1884
- negativeColor?: string;
1885
- caption?: React$1.ReactNode;
1886
- }
1887
- /**
1888
- * Polarity — how far either side of zero.
1889
- *
1890
- * A net learning weight, a delta against a baseline, a sentiment score. The
1891
- * midpoint is a real zero line, drawn in the neutral border colour, and both
1892
- * sides share one scale so a `−9` is visibly longer than a `+6`.
1893
- *
1894
- * The poles use the **status** colours rather than data-palette hues, because
1895
- * this chart's two directions are good and bad, not two categories. That is the
1896
- * one place status colour belongs on a chart — it is encoding valence, not
1897
- * identity, so it is never "series 1 and series 2". Every bar is directly
1898
- * labelled, so the sign is readable without seeing colour at all.
1899
- */
1900
- declare const DivergingBar: React$1.ForwardRefExoticComponent<DivergingBarProps & React$1.RefAttributes<HTMLDivElement>>;
1901
-
1902
- /**
1903
- * What of the Graph's data may accompany a call across the boundary.
1904
- *
1905
- * A **closed** set, because an open one is a list nobody can audit: a reader
1906
- * has to know that what is not named cannot be sent, and that only holds if the
1907
- * vocabulary is fixed.
1908
- */
1909
- type EgressClass = "type_names" | "property_names" | "the_question" | "property_values" | "record_ids" | "aggregates" | "everything";
1910
- interface EgressListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1911
- /** The destination this governs — `llm/anthropic-prod/claude-opus-5`. */
1912
- to: string;
1913
- /** What may be sent. **Empty is the default and means nothing may.** */
1914
- classes?: EgressClass[];
1915
- /**
1916
- * What was actually withheld on a real crossing. Absent reads as a **rule**
1917
- * at rest; present reads as an **event** — see the note below.
1918
- */
1919
- cut?: EgressClass[];
1920
- }
1921
- /**
1922
- * Per destination: what may be sent, and what was cut.
1923
- *
1924
- * **Egress is declared per destination, on the rule that matched it.** A
1925
- * run-wide setting would have to be the strictest of its destinations, which is
1926
- * the least useful one — so this component is always about *one* address, and a
1927
- * surface showing several renders several.
1928
- *
1929
- * **Reading a thing and sending it are different permissions.** A query may
1930
- * filter on `Deal.revenue` while the value never enters a prompt — used to
1931
- * **compute**, not to **reason**. That is the distinction this list exists to
1932
- * make visible, and it is why `property_values` being absent is worth as much
1933
- * screen as the classes that are present.
1934
- *
1935
- * **`cut` is what makes it evidence rather than configuration.** The same
1936
- * component states the bound before a run and what the bound actually withheld
1937
- * after one; without `cut`, a reader cannot tell a rule that did work from a
1938
- * rule that never bit.
1939
- *
1940
- * An empty `classes` is drawn in words, because the lens default is `[]` and a
1941
- * blank row would read as *not configured* rather than *nothing may leave*.
1942
- */
1943
- declare const EgressList: React$1.ForwardRefExoticComponent<EgressListProps & React$1.RefAttributes<HTMLDivElement>>;
1944
-
1945
2219
  /**
1946
2220
  * How an answer's records are rendered. A kind is a *body inside* the emission
1947
2221
  * card, never a block of its own (DS9) — so this names the body, it does not
1948
2222
  * pick a different container.
2223
+ *
2224
+ * Open: the names below are the common ones, and an assistant answer labels
2225
+ * its card in the grammar's own words — `ranked`, `scenario`, `model check`.
1949
2226
  */
1950
- type EmissionKind = "metric" | "table" | "chart" | "subgraph" | "prose" | "empty" | "html";
1951
- interface EmissionHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
2227
+ type EmissionKind = "metric" | "table" | "chart" | "subgraph" | "prose" | "empty" | "html" | (string & {});
2228
+ interface EmissionHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1952
2229
  kind: EmissionKind;
2230
+ /** What the card shows, in words — `Apex Components, weekly lead time`. */
2231
+ title?: React$1.ReactNode;
1953
2232
  /** The projection template that rendered it — `table-compact@3`. Shown in mono. */
1954
2233
  template?: React$1.ReactNode;
1955
2234
  /**
@@ -1966,6 +2245,7 @@ interface EmissionHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
1966
2245
  actions?: React$1.ReactNode;
1967
2246
  }
1968
2247
  interface EmissionCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title">, Omit<EmissionHeaderProps, keyof React$1.HTMLAttributes<HTMLDivElement>> {
2248
+ title?: React$1.ReactNode;
1969
2249
  /** Set false to render the body alone, where a surface supplies its own header. */
1970
2250
  showHeader?: boolean;
1971
2251
  children?: React$1.ReactNode;
@@ -1977,6 +2257,8 @@ interface EmissionCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
1977
2257
  * result, a scheduled answer (DS7). It is exported on its own so a surface that
1978
2258
  * already owns its container can still show the same header rather than
1979
2259
  * inventing a second one that drifts.
2260
+ *
2261
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1980
2262
  */
1981
2263
  declare const EmissionHeader: React$1.ForwardRefExoticComponent<EmissionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
1982
2264
  /**
@@ -1991,11 +2273,21 @@ declare const EmissionHeader: React$1.ForwardRefExoticComponent<EmissionHeaderPr
1991
2273
  * object (DS6). It does not know what an Observation is, and it does not fetch,
1992
2274
  * re-render or re-query anything; switching templates is the caller's job,
1993
2275
  * handed in through `actions`.
2276
+ *
2277
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1994
2278
  */
1995
2279
  declare const EmissionCard: React$1.ForwardRefExoticComponent<EmissionCardProps & React$1.RefAttributes<HTMLDivElement>>;
2280
+ /**
2281
+ * The card's body: its blocks in one padded column, each a step apart.
2282
+ *
2283
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
2284
+ */
2285
+ declare const EmissionBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
1996
2286
  /**
1997
2287
  * The `prose` body's citation marker — the superscript that ties a clause to
1998
- * the records behind it.
2288
+ * the records behind it. Set `data-active` while its source is the one in view.
2289
+ *
2290
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1999
2291
  */
2000
2292
  declare const CitationMarker: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
2001
2293
 
@@ -2029,18 +2321,40 @@ declare const EmptyState: React$1.ForwardRefExoticComponent<EmptyStateProps & Re
2029
2321
  /** One not-yet-available surface, and the condition that opens it. */
2030
2322
  declare const EmptyStateLock: React$1.ForwardRefExoticComponent<EmptyStateLockProps & React$1.RefAttributes<HTMLSpanElement>>;
2031
2323
 
2032
- declare class ErrorBoundary extends Component<{
2324
+ interface ErrorBoundaryProps {
2033
2325
  children: ReactNode;
2034
- }, {
2326
+ /**
2327
+ * Called once for each error the boundary catches, with React's component
2328
+ * stack — where an app reports the error (a log, a counter). The boundary
2329
+ * still shows its fallback; this only observes.
2330
+ */
2331
+ onError?: (error: Error, info: ErrorInfo) => void;
2332
+ /** What to show instead of the children once they have thrown. Defaults to a short notice. */
2333
+ fallback?: ReactNode;
2334
+ }
2335
+ /**
2336
+ * Catches a render error in its children and shows a fallback in their place,
2337
+ * so one broken region does not blank the whole screen.
2338
+ *
2339
+ * Usage:
2340
+ *
2341
+ * ```tsx
2342
+ * <ErrorBoundary onError={(error) => report(error)}>
2343
+ * <Region />
2344
+ * </ErrorBoundary>
2345
+ * ```
2346
+ *
2347
+ * `onError` is how an app learns what broke; without it the error goes to the
2348
+ * console only.
2349
+ */
2350
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
2035
2351
  hasError: boolean;
2036
2352
  }> {
2037
- constructor(props: {
2038
- children: ReactNode;
2039
- });
2040
- static getDerivedStateFromError(_: Error): {
2353
+ constructor(props: ErrorBoundaryProps);
2354
+ static getDerivedStateFromError(): {
2041
2355
  hasError: boolean;
2042
2356
  };
2043
- componentDidCatch(error: Error, errorInfo: any): void;
2357
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
2044
2358
  render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | React$1.ReactPortal | React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | React$1.JSX.Element | null | undefined;
2045
2359
  }
2046
2360
 
@@ -2117,6 +2431,18 @@ interface EyebrowProps extends React$1.HTMLAttributes<HTMLDivElement> {
2117
2431
  */
2118
2432
  declare const Eyebrow: React$1.ForwardRefExoticComponent<EyebrowProps & React$1.RefAttributes<HTMLDivElement>>;
2119
2433
 
2434
+ interface ExpandToggleProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
2435
+ open: boolean;
2436
+ /** What opens — `fetch_filings` — read as `Open fetch_filings` / `Close fetch_filings`. */
2437
+ label?: string;
2438
+ }
2439
+ declare function Spacer({ className }: {
2440
+ className?: string;
2441
+ }): React$1.JSX.Element;
2442
+ declare const ExpandToggle: React$1.ForwardRefExoticComponent<ExpandToggleProps & React$1.RefAttributes<HTMLButtonElement>> & {
2443
+ Spacer: typeof Spacer;
2444
+ };
2445
+
2120
2446
  interface FilterBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
2121
2447
  /** The filter controls. `FilterChip`s, a `SearchInput`, a toggle. */
2122
2448
  children?: React$1.ReactNode;
@@ -2127,6 +2453,12 @@ interface FilterBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
2127
2453
  * filters ask, so it belongs on the same line as them and nowhere else.
2128
2454
  */
2129
2455
  summary?: React$1.ReactNode;
2456
+ /**
2457
+ * No rule under it and no padding at its ends: whatever holds it is the
2458
+ * frame — a table's border under it, the table's edges either side. Off by
2459
+ * default, so a bar over a bare list keeps the rule that divides the two.
2460
+ */
2461
+ seamless?: boolean;
2130
2462
  }
2131
2463
  interface FilterChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
2132
2464
  /** The dimension — `status`, `kind`, `agent`, `age`. */
@@ -2161,62 +2493,72 @@ declare const FilterBar: React$1.ForwardRefExoticComponent<FilterBarProps & Reac
2161
2493
  /**
2162
2494
  * One dimension, as a chip that opens a menu.
2163
2495
  *
2164
- * The caret is drawn rather than iconised so the chip stays 22px and reads as
2165
- * one token — `status ▾` — instead of a control with an icon glued to it.
2496
+ * The caret is drawn rather than iconised so the chip reads as
2497
+ * one token — `status ▾` — instead of a control with an icon glued to it. It is
2498
+ * a `sm` button: the control scale's 26px, the height of the `sm` search
2499
+ * beside it.
2166
2500
  */
2167
2501
  declare const FilterChip: React$1.ForwardRefExoticComponent<FilterChipProps & React$1.RefAttributes<HTMLButtonElement>>;
2168
-
2502
+ /** One choice in a {@link MultiFilterChip}: its value, or a value with a label. */
2503
+ type FilterChipOption = string | {
2504
+ value: string;
2505
+ label?: React$1.ReactNode;
2506
+ };
2507
+ interface MultiFilterChipProps {
2508
+ /** The dimension — `kind`, `agent`, `status`. */
2509
+ label: React$1.ReactNode;
2510
+ options: FilterChipOption[];
2511
+ /** What it is narrowed to. Empty means "not filtered". */
2512
+ value: string[];
2513
+ onChange: (next: string[]) => void;
2514
+ /**
2515
+ * Many at once (the default) — a row matches any of them — or one, where
2516
+ * picking a choice replaces the last and picking it again clears it.
2517
+ */
2518
+ multiple?: boolean;
2519
+ }
2169
2520
  /**
2170
- * TODO — provisional. Built ahead of its design review.
2171
- *
2172
- * The chart set was deliberately deferred while the rest of the kit was built,
2173
- * because charts are the one group with a real design question in them rather
2174
- * than a markup question: which forms this product actually needs, at what
2175
- * sizes, and how much a 330px drawer can carry. This component satisfies the
2176
- * dataviz rules and the validated palette, but the *form inventory* has not been
2177
- * agreed — treat the API as unsettled until a board screen uses it in anger.
2521
+ * A `FilterChip` with its menu: the choices for one dimension, checked as
2522
+ * they narrow the list. The chip reads what it is set to — the value, or
2523
+ * `3 selected` — and, once set, carries the × that clears it.
2178
2524
  */
2525
+ declare function MultiFilterChip({ label, options, value, onChange, multiple, }: MultiFilterChipProps): React$1.JSX.Element;
2179
2526
 
2180
- interface HeatCell {
2181
- /** When this cell is — `09:45`. Used in the hover title. */
2182
- at: React$1.ReactNode;
2183
- /** Which state key this cell is in. Must exist in `states`. */
2184
- state: string;
2185
- /** Extra detail for the hover title — `2 names: BPCL, HINDPETRO`. */
2186
- detail?: React$1.ReactNode;
2187
- }
2188
- interface HeatState {
2189
- key: string;
2190
- /** What the state is called. Shown in the legend and the hover title. */
2191
- label: React$1.ReactNode;
2192
- color?: string;
2193
- /** Renders as a ring rather than a fill — for "nothing happened here". */
2194
- hollow?: boolean;
2195
- }
2196
- interface HeatStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
2197
- cells: HeatCell[];
2198
- states: HeatState[];
2199
- /** Axis ticks under the strip — `[{at: 0, label: '09'}, …]`. */
2200
- ticks?: {
2201
- at: number;
2202
- label: React$1.ReactNode;
2203
- }[];
2204
- cellSize?: number;
2527
+ interface FloatingPanelProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
2528
+ /** What the panel is — `Activity`, `Logs`. */
2529
+ title: React$1.ReactNode;
2530
+ /** Beside the title — a `live` dot, a count, a view switch. */
2531
+ aside?: React$1.ReactNode;
2532
+ /** Folded to its bar: the body is hidden and `summary` takes the title's room. */
2533
+ collapsed?: boolean;
2534
+ onCollapsedChange?: (collapsed: boolean) => void;
2535
+ /** What a folded panel still says — `● 3 · 4 layers`. */
2536
+ summary?: React$1.ReactNode;
2537
+ /** Shows a close control at the end of the bar. */
2538
+ onClose?: () => void;
2539
+ /** Under the body, above the edge — a total, a link out. */
2540
+ footer?: React$1.ReactNode;
2541
+ children?: React$1.ReactNode;
2542
+ bodyClassName?: string;
2205
2543
  }
2206
2544
  /**
2207
- * A run of firings, one square each, in time order.
2545
+ * A panel that floats over the work — the run's activity, its log — rather
2546
+ * than taking a split of it.
2547
+ *
2548
+ * It stays open over the work, so it is drawn as a card that is lifted — the
2549
+ * card ground, a border and a shadow — and not as a popover, which is the
2550
+ * ground of what opens and closes in a moment. Its bar is chrome, as every
2551
+ * panel's header is.
2208
2552
  *
2209
- * A schedule's day: twenty-one firings, most served, one skipped, one that could
2210
- * not answer. The shape of the day is the point — a reader sees the run of green
2211
- * and the one square that is not, without reading any of them.
2553
+ * It sits **on** a canvas, so it can be folded to its bar and closed: a panel
2554
+ * that could only be moved out of the way by resizing the work would be a
2555
+ * split, and a split is `AppLayoutV2`'s. Folded, it keeps one line of what it
2556
+ * would say, so folding it never hides that something is happening.
2212
2557
  *
2213
- * These are **status** colours, so they are reserved and never stand in for
2214
- * categories. The legend is mandatory rather than optional: a square carries no
2215
- * label of its own, so without the legend the strip would be colour-alone. Each
2216
- * cell also names its state in the hover title, which is what a screen reader
2217
- * and a keyboard user get.
2558
+ * Content-height up to its parent, then its body scrolls: two of these stacked
2559
+ * in a column share the height between them.
2218
2560
  */
2219
- declare const HeatStrip: React$1.ForwardRefExoticComponent<HeatStripProps & React$1.RefAttributes<HTMLDivElement>>;
2561
+ declare const FloatingPanel: React$1.ForwardRefExoticComponent<FloatingPanelProps & React$1.RefAttributes<HTMLDivElement>>;
2220
2562
 
2221
2563
  /**
2222
2564
  * The kinds of run Invana opens today — **suggestions, not a limit.**
@@ -2293,306 +2635,11 @@ interface LayerSectionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
2293
2635
  */
2294
2636
  declare const LayerSection: React$1.ForwardRefExoticComponent<LayerSectionProps & React$1.RefAttributes<HTMLDivElement>>;
2295
2637
 
2296
- /**
2297
- * What an item is doing where it sits — the two tenses in one vocabulary.
2298
- *
2299
- * `declared` is the plan tense: this is what the playbook **will** engage.
2300
- * `out` · `in` · `refused` · `skipped` are the run tense: what it did engage,
2301
- * what a bound stopped, and what it never reached for. Refused and skipped stay
2302
- * two different facts, and both are drawn — a drawing that showed only what
2303
- * happened would answer *what did this run do* and not *what was it stopped
2304
- * from doing*, and the second is the question the strip exists for.
2305
- */
2306
- type KnownLayerItemState = "declared" | "out" | "in" | "refused" | "skipped";
2307
- /**
2308
- * What an item is doing — **suggestions, not a limit.** A run that grows a
2309
- * `deferred` or a `retried` passes it and the bar draws: the neutral edge, and
2310
- * the state's own name under the label. Only the states above carry special
2311
- * drawing, because only they have a meaning defined here to draw.
2312
- */
2313
- type LayerItemState = KnownLayerItemState | (string & {});
2314
- /** The run half of {@link LayerItemState}, as the ledger's `direction` column. */
2315
- type TouchDirection = Exclude<KnownLayerItemState, "declared"> | (string & {});
2316
- /**
2317
- * One participant under a band — the row a task actually lands on.
2318
- *
2319
- * A band says *llm*; a part says **which** llm, or which role a caller may
2320
- * re-cast: `role: decide`, `model/Orders@v2`, `third_party/app/email`. Reading
2321
- * a plan is reading its parts, because that is the list a world is checked
2322
- * against.
2323
- */
2324
- interface LayerPart {
2325
- id: string;
2326
- /** The participant address, or the role — `model/Orders@v2`, `role: decide`. */
2327
- label: string;
2328
- /** What the caller still owes, or what the crossing is — `egress: the note`. */
2329
- note?: string;
2330
- }
2331
- interface LayerBand {
2332
- layer: Layer;
2333
- /** Overrides the layer's own name. */
2334
- label?: React$1.ReactNode;
2335
- /** Right of the name — `declared · 1`, `nothing declared`, `2 roles`. */
2336
- note?: string;
2337
- /** The participants under it, each its own row. */
2338
- parts?: LayerPart[];
2339
- /**
2340
- * This band is the **spine** — the runtime's own dispatches, which the other
2341
- * bands are timed against and which is never governed. Its wire runs the
2342
- * whole axis and it is never drawn as unspent.
2343
- *
2344
- * The band says so rather than the component recognising a layer by name:
2345
- * `agent` is Invana's spine, but the layer vocabulary is a product's to grow
2346
- * and a strip that hard-coded one of its values would be a strip that had to
2347
- * be edited before anyone could rename it.
2348
- */
2349
- spine?: boolean;
2350
- }
2351
- /**
2352
- * One task, where it sits and how long it takes.
2353
- *
2354
- * `start` and `end` are in the axis's own unit — a step ordinal under `seq`, a
2355
- * millisecond under `elapsed`. A task with no `end` is an instant and is drawn
2356
- * at the minimum width.
2357
- */
2358
- interface LayerItem {
2359
- id: string;
2360
- /** The task. This is the only place a task name is written. */
2361
- label: string;
2362
- layer: Layer;
2363
- /** The {@link LayerPart} it lands on. Omitted, it sits on the band itself. */
2364
- part?: string;
2365
- start: number;
2366
- end?: number;
2367
- state?: LayerItemState;
2368
- /** Under the name — `decide`, `${supplier_id}`, `form: human`. */
2369
- note?: string;
2370
- /** The rule that refused it, when one did. */
2371
- ruleMatched?: string;
2372
- /** What this task usually takes — see {@link LayerForecast}. */
2373
- forecast?: LayerForecast;
2374
- }
2375
- /**
2376
- * What this task usually costs, drawn **on** the bar that says what it cost
2377
- * this time.
2378
- *
2379
- * `p50` is a **duration in the axis's own unit**, not a position: the median is
2380
- * a length of time a step takes, and placing it as an absolute moment would
2381
- * make the same forecast wrong for every run that started the step a second
2382
- * later. The strip turns it into a mark at `start + p50`, so the overrun is the
2383
- * gap between the mark and the bar's end — visible, rather than two numbers a
2384
- * reader has to subtract.
2385
- *
2386
- * Drawn for a task that came in **under** its median too. *Faster than usual*
2387
- * is a finding, and a forecast that only ever showed overruns would be a
2388
- * warning light rather than a comparison.
2389
- */
2390
- interface LayerForecast {
2391
- /** The median, as a duration in the axis's unit. */
2392
- p50: number;
2393
- /** The gap in the caller's words — `+11%`, `−33%`, `inside p95`. */
2394
- note?: React$1.ReactNode;
2395
- }
2396
- /** A bounded repetition over a stretch of the axis — `loop · max 3`. */
2397
- interface LayerBracket {
2398
- id: string;
2399
- start: number;
2400
- end: number;
2401
- label: string;
2402
- }
2403
- /**
2404
- * A **seam** — a moment on the axis where everything stops at once.
2405
- *
2406
- * A gate belongs to no band. It is not dispatched, it holds no slot and it has
2407
- * no participant, so it cannot be a bar: it is a condition on the way into a
2408
- * step, and it stops every layer together. That makes it a **position on the
2409
- * axis**, drawn as a rule the bands are crossed by — which is also the only
2410
- * drawing left once task names stop being the axis, because there are no
2411
- * columns for it to sit between.
2412
- *
2413
- * **Which side of the line the label sits on is the price of saying no.**
2414
- * `before` means nothing has been spent yet; `after` means the work up to here
2415
- * is already paid for. A reader gets what declining costs from where the mark
2416
- * sits, before reading a word of it.
2417
- */
2418
- interface LayerSeam {
2419
- id: string;
2420
- /**
2421
- * Where it sits, in the axis's own unit. **Omitted, it has no position** —
2422
- * it can be raised at any dispatch, and it is drawn across the whole axis
2423
- * rather than at a point. Placing such a gate on one moment would be a guess.
2424
- */
2425
- at?: number;
2426
- /** What it is — `approval · before dispatch`, `verdict · after the pass`. */
2427
- label: string;
2428
- /** Which side of the line the cost falls on. Defaults to `before`. */
2429
- edge?: "before" | "after";
2430
- /**
2431
- * It is not on the plan: it resolves at dispatch, so the same plan is gated
2432
- * for one caller and not another. Drawn dashed — *this may appear*.
2433
- */
2434
- conditional?: boolean;
2435
- /**
2436
- * **Nothing can forecast this one.** How long a person takes to say yes is
2437
- * not in the record, so a gate marked this way is drawn dashed like a
2438
- * conditional one and its note carries the actual instead of a comparison.
2439
- *
2440
- * It exists as its own flag rather than as a caller's choice of words because
2441
- * *there is no estimate* and *the estimate was met* must not look alike on a
2442
- * drawing whose whole subject is forecast against actual. Drawing a guess
2443
- * here would be the one dishonest mark on the strip.
2444
- */
2445
- noEstimate?: boolean;
2446
- /** Under the label — `nothing spent · finance-approvers · 4h`. */
2447
- note?: string;
2448
- }
2449
- /** What the axis counts. */
2450
- type LayerScale = "seq" | "elapsed";
2451
- interface LayerStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children" | "onSelect"> {
2452
- bands: LayerBand[];
2453
- items: LayerItem[];
2454
- /**
2455
- * `seq` is a plan's time — what happens before what, one unit per step.
2456
- * `elapsed` is a run's, in milliseconds from the run opening.
2457
- */
2458
- scale?: LayerScale;
2459
- /** The axis extent. Defaults to the items' own. */
2460
- domain?: [number, number];
2461
- /** Tick positions in axis units. Defaults to integers (`seq`) or five (`elapsed`). */
2462
- ticks?: number[];
2463
- formatTick?: (value: number) => string;
2464
- brackets?: LayerBracket[];
2465
- /**
2466
- * The gates — the moments the whole drawing stops at. They get a row of their
2467
- * own above the bands *and* a rule down the track, because a gate has to read
2468
- * both as a thing with a name and as something every band is stopped by.
2469
- */
2470
- seams?: LayerSeam[];
2471
- onSelectItem?: (itemId: string) => void;
2472
- selectedItem?: string;
2473
- /**
2474
- * The bands whose participants are folded away, uncontrolled. Their tasks do
2475
- * not disappear with them: they drop onto the band's own line, which is the
2476
- * whole point of shutting one.
2477
- */
2478
- defaultCollapsed?: Layer[];
2479
- /** The same, controlled. Pass it with `onCollapsedChange`. */
2480
- collapsed?: Layer[];
2481
- onCollapsedChange?: (layers: Layer[]) => void;
2482
- /**
2483
- * Offer the disclosures at all. Off, the bands render as given and a caller
2484
- * that wants an overview passes the bands it wants shut in `collapsed`.
2485
- */
2486
- collapsible?: boolean;
2487
- /**
2488
- * A hover card on each task, saying what the bar cannot fit: the participant
2489
- * it spends, when it runs and for how long, and the rule that refused it. On
2490
- * by default; off falls back to the native `title`.
2491
- */
2492
- hoverDetail?: boolean;
2493
- /** What that card says, when the default is not what this surface owes. */
2494
- itemDetail?: (item: LayerItem) => React$1.ReactNode;
2495
- /**
2496
- * Keep the band labels in place while time scrolls. On by default: a run with
2497
- * forty steps scrolls, and a band you cannot name is a row of marks.
2498
- */
2499
- frozenLabels?: boolean;
2500
- /**
2501
- * The label column, in `rem`. The default fits a layer name at the root size
2502
- * beside its note — `human` and `3 rounds · 6m 01s` on one line.
2503
- */
2504
- labelWidth?: number;
2505
- /** The narrowest the track is drawn before it scrolls, in `rem`. */
2506
- minTrackWidth?: number;
2507
- /**
2508
- * The narrowest one tick may be squeezed to, in `rem`. Past that the strip
2509
- * scrolls rather than shrinking: a bar too narrow to carry its task's name
2510
- * has stopped being a drawing of that task.
2511
- */
2512
- minSlotWidth?: number;
2513
- /**
2514
- * What the layers are painted with. The same map reaches the band chips and
2515
- * the bars, so a strip never disagrees with its own labels; a layer left out
2516
- * draws in the neutral.
2517
- */
2518
- palette?: LayerPalette;
2519
- }
2520
- /** An unknown state is still a state: it says its own name. */
2521
- declare const stateLabel: (state: LayerItemState) => string;
2522
- /**
2523
- * A plan or a run as layer bands over a time axis — a gantt, not a matrix.
2524
- *
2525
- * **Time is the x axis, in whichever tense the drawing is in.** A plan's time
2526
- * is its order (`seq` — what happens before what); a run's is the wall clock
2527
- * (`elapsed`). Task names are not an axis: a task is a bar, written once where
2528
- * it sits, so a reader answers *what does this engage, and for how long* by
2529
- * scanning across, and *what spends this participant* by scanning down.
2530
- *
2531
- * **A band opens into its participants.** `llm` is a band; `role: decide` and
2532
- * `role: extract` are the rows under it, and the task sits on the row it
2533
- * actually spends. The band alone cannot say which model a step will reach, and
2534
- * that is the list a world is checked against.
2535
- *
2536
- * **A band folds its participants away without losing its tasks.** Shut, the
2537
- * rows go and every task the layer spends drops onto the band's own line —
2538
- * which is the overview: six lines, every task placed in time, *what was this
2539
- * layer busy with* answered without reading twelve rows. Open, the same tasks
2540
- * sit on the participant that spends them. `collapse all` in the header does it
2541
- * to every band that has participants to fold, and nothing is hidden either
2542
- * way: folding moves a task up a row, it never drops it.
2543
- *
2544
- * **A bar says what it is; hovering it says what it cannot fit.** The card
2545
- * carries the participant the row truncates or folding took away, when the task
2546
- * runs and for how long, and the rule that refused it — so a bar can stay a bar
2547
- * rather than growing a second line for every fact somebody might want.
2548
- *
2549
- * **Refusals are struck in place, not removed.** A refused engagement keeps its
2550
- * bar and takes a struck label, because the gap it would otherwise leave is
2551
- * indistinguishable from a stretch of time that never reached for that layer.
2552
- *
2553
- * **A row nothing spent is drawn muted, never dropped.** A band no task
2554
- * touched takes the muted ground **across its whole width** — label column and
2555
- * track together — and so does a participant row under an open band:
2556
- * `role: extract` declared and never reached reads as *this run did not get
2557
- * that far*, not as an ordinary empty row. A dropped row would say nothing at
2558
- * all, and *this plan never reaches for a cache* is a finding.
2559
- *
2560
- * The ground is the carrier, not the type colour. A row is unspent because it
2561
- * is *empty*, and an empty row has no text to mute past its own name — greying
2562
- * the chip while the row keeps the card ground says *this label is quiet* when
2563
- * the fact is *nothing spends this layer*.
2564
- *
2565
- * **A bar wears its layer, and its state is the edge.** The hue tints the bar's
2566
- * ground and border and runs down its rail; dashed says the task never ran, and
2567
- * the destructive token says a rule refused it — the one fact that outranks
2568
- * whose bar it is. The label itself stays on a text token: the data palette is
2569
- * a surface palette here, which keeps `cache` as legible as `human`.
2570
- *
2571
- * **Refused is not unspent.** A row whose only task was refused keeps its full
2572
- * weight: being stopped from reaching a participant and never reaching for one
2573
- * are the two facts this drawing exists to separate.
2574
- *
2575
- * **A gate is a seam, not a row.** Nothing is dispatched at a gate, so it has
2576
- * no participant and cannot be a bar; it stops every band at once, so it is a
2577
- * position on the axis and the bands are crossed by it. Which side of the line
2578
- * its label hangs on is what saying no costs — `before` and nothing is spent,
2579
- * `after` and the pass is already paid for. A gate that can be raised at any
2580
- * dispatch has no position and draws across the whole axis instead.
2581
- *
2582
- * **The spine band is always drawn**, with its wire running the whole axis: the
2583
- * runtime's own dispatches are what the other bands are timed against, and it
2584
- * is never governed. A band declares itself the spine with `spine` — the strip
2585
- * recognises no layer by name. A spine that has dispatched nothing recedes like
2586
- * any other empty row: the wire still says *this is the clock*, and the muted
2587
- * ground says *it has not run yet*, which are two different facts.
2588
- *
2589
- * DOM over a fixed track, not canvas: it binds to no canvas store, it lives in
2590
- * `mainSection` where no canvas exists, and frozen row labels plus text
2591
- * selection are free here and expensive there.
2592
- */
2593
- declare const LayerStrip: React$1.ForwardRefExoticComponent<LayerStripProps & React$1.RefAttributes<HTMLDivElement>>;
2594
-
2595
- type LegendSwatchKind = "dot" | "line" | "dashed" | "arrow" | "ring"
2638
+ type LegendSwatchKind = "dot"
2639
+ /** A filled square — a column or a bar. */
2640
+ | "box"
2641
+ /** A dashed square outline — a plan or a target a column stands inside. */
2642
+ | "outline" | "line" | "dashed" | "arrow" | "ring"
2596
2643
  /** The rail down a row — how a trace says which layer a step spent. */
2597
2644
  | "stripe"
2598
2645
  /** A box around what it holds — a bounded repetition, drawn by containment. */
@@ -2634,35 +2681,107 @@ interface LegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
2634
2681
  declare const Legend: React$1.ForwardRefExoticComponent<LegendProps & React$1.RefAttributes<HTMLDivElement>>;
2635
2682
  declare const LegendItem: React$1.ForwardRefExoticComponent<LegendItemProps & React$1.RefAttributes<HTMLDivElement>>;
2636
2683
 
2637
- interface LensChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children" | "onClick"> {
2684
+ type TerminalLineKind = "prompt" | "output" | "comment";
2685
+ /**
2686
+ * The severity a **log** line was emitted at, as the runtime recorded it.
2687
+ *
2688
+ * Distinct from `kind`, which says what part of a *transcript* a line is — a
2689
+ * command you typed, what it printed, a comment. A run's log has no prompts and
2690
+ * no comments; every line is output, and what varies is how loud it is.
2691
+ */
2692
+ type KnownTerminalLevel = "info" | "warn" | "error" | "debug";
2693
+ /**
2694
+ * The values the kit draws specially — **suggestions, not a limit.** Anything
2695
+ * else renders with the neutral token and its own name.
2696
+ */
2697
+ type TerminalLevel = KnownTerminalLevel | (string & {});
2698
+ interface TerminalLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
2699
+ kind?: TerminalLineKind;
2700
+ /**
2701
+ * How loud this line is. Tints **one** cell — the one named by
2702
+ * `levelColumn` — and nothing else.
2703
+ *
2704
+ * Only the level word is coloured, never the message: a wall of amber
2705
+ * sentences is unreadable, and what a reader scans is the column, not the
2706
+ * prose. Setting this also drops the `kind` marker — a log line is not a
2707
+ * transcript line and does not want a `→` in front of it.
2708
+ *
2709
+ * The level **word** stays in `columns`. Colour is never the carrier.
2710
+ */
2711
+ level?: TerminalLevel;
2638
2712
  /**
2639
- * The lens in force. **`undefined` is a real, common state** and reads
2640
- * `Everything` — see below.
2713
+ * Which cell of `columns` holds the level word. Defaults to `1`, because a
2714
+ * log line reads `time · LEVEL · source · message` and the timestamp comes
2715
+ * first in every log anyone has ever read.
2641
2716
  */
2642
- lens?: {
2643
- name: string;
2644
- kind?: "world" | "guardrail";
2645
- };
2646
- /** Open the picker. Absent leaves the chip as a statement. */
2647
- onPick?: () => void;
2717
+ levelColumn?: number;
2718
+ /**
2719
+ * Columns, for the step-shaped output a run prints — name, detail, timing,
2720
+ * result. Given as cells so they align down the transcript instead of each
2721
+ * line padding itself with spaces.
2722
+ */
2723
+ columns?: React$1.ReactNode[];
2724
+ children?: React$1.ReactNode;
2725
+ }
2726
+ interface TerminalProps extends React$1.HTMLAttributes<HTMLDivElement> {
2727
+ children?: React$1.ReactNode;
2728
+ /** Shows a blinking block at the end. */
2729
+ cursor?: boolean;
2730
+ /**
2731
+ * `grid-template-columns` for every columned line in this transcript.
2732
+ *
2733
+ * Set once here rather than per line, because the point of columns is that
2734
+ * they line up *down* the transcript — a width chosen per row aligns nothing.
2735
+ */
2736
+ columnTemplate?: string;
2648
2737
  }
2649
2738
  /**
2650
- * Which world a run is being read under — the header's right-hand chip, and the
2651
- * one on an agent's row.
2739
+ * A shell transcript, as a first-class surface.
2652
2740
  *
2653
- * **No lens reads `Everything`, never blank and never `None`.** A Graph that
2654
- * sets no lens sees the whole global model, every configured provider and every
2655
- * third party its agents are credentialed for: the widest state is the default,
2656
- * and it is a *state*, not a missing value. `None` would suggest nothing is in
2657
- * view, which is the exact opposite of what is true. `Everything` is also still
2658
- * inside the guardrails, which is why a guardrail is not a lens you pick.
2741
+ * Some of this product's work happens outside Studio — imports run from the
2742
+ * CLI, a scheduler calls the Python API — and the hand-off has to be shown
2743
+ * honestly rather than redrawn as a wizard. So this renders what the terminal
2744
+ * actually printed.
2659
2745
  *
2660
- * It is the smallest surface in Govern and the one most often on screen, so it
2661
- * carries the name and nothing else. What that world narrows belongs in the
2662
- * drawer the chip opens — a chip that listed its rules would be a rule list
2663
- * that happened to be in a header.
2746
+ * It is presentational: a record of a run that already happened, not a live
2747
+ * console. There is no input here, and it does not scroll itself.
2664
2748
  */
2665
- declare const LensChip: React$1.ForwardRefExoticComponent<LensChipProps & React$1.RefAttributes<HTMLSpanElement>>;
2749
+ declare const Terminal: React$1.ForwardRefExoticComponent<TerminalProps & React$1.RefAttributes<HTMLDivElement>>;
2750
+ declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps & React$1.RefAttributes<HTMLDivElement>>;
2751
+
2752
+ /** One line of a run's log, as the runtime emitted it. */
2753
+ interface LogLine {
2754
+ id?: string;
2755
+ /** When, already worded — `10:42:01`. */
2756
+ at: string;
2757
+ level: TerminalLevel;
2758
+ /** What emitted it — `graph.query`, `egress`. */
2759
+ source?: string;
2760
+ message: string;
2761
+ }
2762
+ /** How loud a line must be to show: everything, warnings and up, errors only. */
2763
+ type LogFloor = "all" | "warn" | "error";
2764
+ interface LogCardProps extends Omit<FloatingPanelProps, "title" | "children" | "summary" | "aside"> {
2765
+ /** @default "Logs" */
2766
+ title?: React$1.ReactNode;
2767
+ /** Every line so far, oldest first. New lines are appended as they arrive. */
2768
+ lines: LogLine[];
2769
+ /** Lines are still arriving. */
2770
+ live?: boolean;
2771
+ /** Only lines from this source — a call opened in the activity panel. Controlled with `onSourceChange`. */
2772
+ source?: string | null;
2773
+ onSourceChange?: (source: string | null) => void;
2774
+ }
2775
+ /**
2776
+ * The run's log, as it is written — in a panel that floats over the work.
2777
+ *
2778
+ * The raw record behind the activity panel: every line the runtime emitted,
2779
+ * its level the one coloured word ({@link TerminalLine}). It follows new lines
2780
+ * while live; **pausing freezes what is shown**, so a line can be read while
2781
+ * the run keeps writing, and resuming catches up. Filter by how loud a line
2782
+ * is, by words, or by the source a call wrote it from.
2783
+ */
2784
+ declare const LogCard: React$1.ForwardRefExoticComponent<LogCardProps & React$1.RefAttributes<HTMLDivElement>>;
2666
2785
 
2667
2786
  /** What the mark means, as a tone. The same seven `StatusDot` uses, less the dot. */
2668
2787
  type MarkTone = "muted" | "info" | "success" | "warning" | "destructive";
@@ -2744,6 +2863,11 @@ interface MenuItem {
2744
2863
  onClick?: () => void;
2745
2864
  children?: MenuItem[];
2746
2865
  }
2866
+ /**
2867
+ * A row of a menu; with `children`, a submenu that opens beside it. The submenu
2868
+ * opens on hover and on focus, and from the keyboard: → or Enter opens it on its
2869
+ * first row, ← or Escape closes it back to its row.
2870
+ */
2747
2871
  declare const MenuItem: React$1.FC<MenuItemProps>;
2748
2872
 
2749
2873
  /**
@@ -2753,7 +2877,7 @@ declare const MenuItem: React$1.FC<MenuItemProps>;
2753
2877
  * Omit it for an ordinary measurement. A grid where every tile is coloured
2754
2878
  * carries no signal, and a number that is merely large is not a warning.
2755
2879
  */
2756
- type KnownMetricTone = "running" | "success" | "warning" | "error" | "info";
2880
+ type KnownMetricTone = "running" | "success" | "warning" | "error" | "info" | "muted";
2757
2881
  /**
2758
2882
  * The values the kit draws specially — **suggestions, not a limit.** Anything
2759
2883
  * else renders with the neutral token and its own name.
@@ -2768,6 +2892,11 @@ interface MetricTileProps extends React$1.HTMLAttributes<HTMLDivElement> {
2768
2892
  caption?: React$1.ReactNode;
2769
2893
  /** Tints the value. See {@link MetricTone} — most tiles should not set it. */
2770
2894
  tone?: MetricTone;
2895
+ /**
2896
+ * Tints the caption instead — for a caption that is a change, `▲ 8 d vs
2897
+ * normal`, where the direction is the signal and the value is a plain figure.
2898
+ */
2899
+ captionTone?: MetricTone;
2771
2900
  /**
2772
2901
  * How much of a known ceiling has been spent, `0`–`1`, as a 4px bar under the
2773
2902
  * caption. Takes `tone`'s colour when one is set.
@@ -2778,6 +2907,36 @@ interface MetricTileProps extends React$1.HTMLAttributes<HTMLDivElement> {
2778
2907
  * a deadline that does not exist.
2779
2908
  */
2780
2909
  meter?: number;
2910
+ /**
2911
+ * The figure against a target, as a bar under it: `fill` is how far the
2912
+ * figure has come and `mark` where the target sits, both `0`–`1` of the
2913
+ * scale. `labels` writes the scale's start, the target and its end under it.
2914
+ *
2915
+ * Unlike `meter`, the target is a line the figure is read against, not a
2916
+ * ceiling it spends — the fill may pass it.
2917
+ */
2918
+ gauge?: {
2919
+ fill: number;
2920
+ mark: number;
2921
+ labels?: [React$1.ReactNode, React$1.ReactNode, React$1.ReactNode];
2922
+ };
2923
+ /**
2924
+ * Set on the warning ground: the one tile in a band that needs a second look
2925
+ * — a figure resting on too few records. Say why in a line under the band.
2926
+ */
2927
+ flagged?: boolean;
2928
+ /** Beside the figure, at the right, bottom-aligned — a sparkline of its recent run. */
2929
+ aside?: React$1.ReactNode;
2930
+ /**
2931
+ * `tile` is one of several, boxed, in a strip. `hero` is the one figure an
2932
+ * answer turns on — the adjusted odds ratio, net revenue retention — set
2933
+ * large on the surface it sits in: no box, the label in sentence case over
2934
+ * it, the caption in mono under it, so it reads as a result, not a gauge.
2935
+ * `figure` is one of a band of figures inside an answer — boxed like a tile
2936
+ * but set like a small hero: the label in sentence case, the value in a
2937
+ * larger sans, the caption in mono.
2938
+ */
2939
+ variant?: "tile" | "hero" | "figure";
2781
2940
  /** A sparkline, or anything else that sits under the value. */
2782
2941
  children?: React$1.ReactNode;
2783
2942
  }
@@ -2789,10 +2948,28 @@ interface MetricGridProps extends React$1.HTMLAttributes<HTMLDivElement> {
2789
2948
  *
2790
2949
  * It is a prop because a tile strip is usually one band of something larger,
2791
2950
  * and a grid that keeps its own tighter rhythm makes the whole surface read
2792
- * as two grids. A dashboard passes its own gap; a standalone strip keeps the
2951
+ * as two grids. A board passes its own gap; a standalone strip keeps the
2793
2952
  * default.
2794
2953
  */
2795
2954
  gap?: number;
2955
+ /**
2956
+ * One strip, the tiles divided by rules instead of spaced apart — for a
2957
+ * band of figures that belong to one answer and read left to right. `gap`
2958
+ * is ignored.
2959
+ */
2960
+ joined?: boolean;
2961
+ /**
2962
+ * With `joined`: no box around the strip, and nothing wasted on its outside
2963
+ * — only the rules between tiles are drawn, and the outer tiles sit flush
2964
+ * with the text around the grid, as a seamless table's outer columns do.
2965
+ * For a strip inside a card or an answer, whose edge already frames it.
2966
+ */
2967
+ seamless?: boolean;
2968
+ /**
2969
+ * A fixed number of columns instead of fitting to the width — for a band
2970
+ * whose shape is part of what it says: three across, two by two.
2971
+ */
2972
+ columns?: number;
2796
2973
  children?: React$1.ReactNode;
2797
2974
  }
2798
2975
  /**
@@ -2832,6 +3009,12 @@ interface NavMenuItem {
2832
3009
  /** Draw a separator immediately above this row. */
2833
3010
  separatorBefore?: boolean;
2834
3011
  onSelect?: () => void;
3012
+ /**
3013
+ * A submenu: the row opens these beside it (hover, → or Enter; ← or Escape
3014
+ * closes it). Its own `onSelect` is not called — the rows inside are the
3015
+ * choices.
3016
+ */
3017
+ children?: NavMenuItem[];
2835
3018
  }
2836
3019
  /**
2837
3020
  * NavItemConfig - Shared configuration for a single navigation item, used by
@@ -2894,6 +3077,12 @@ interface NavItemConfig {
2894
3077
  * is why a tab strip could not be built on nav items before.
2895
3078
  */
2896
3079
  menuTrigger?: "item" | "caret";
3080
+ /**
3081
+ * Draws an inline `×` inside the item — a tab that is closed rather than
3082
+ * managed. The body still selects; only the `×` closes. Like the caret, it
3083
+ * makes the item host a button, so the item itself renders as a `<div>`.
3084
+ */
3085
+ onClose?: () => void;
2897
3086
  /**
2898
3087
  * A count pinned to the item's top-right — unread reviews, waiting questions.
2899
3088
  *
@@ -2910,11 +3099,11 @@ interface NavItemConfig {
2910
3099
  /**
2911
3100
  * The visual treatments a strip of nav items can wear.
2912
3101
  *
2913
- * One table, because the kit draws all three and used to draw two of them by
2914
- * hand in separate components. `nav` is what nav items have always looked
2915
- * like; `underline` and `folder` are the two tab strips — a panel's views and
2916
- * a workbook's pages — lifted out of `TabbedPanel` and
2917
- * `CanvasPagesViewPanel` unchanged, so migrating those renders identically.
3102
+ * One table, because the kit used to draw these by hand in separate
3103
+ * components. `nav` is what nav items have always looked like; `underline` and
3104
+ * `folder` are the two tab strips — a panel's views (`TabbedPanel`) and a
3105
+ * workbook's pages (`Workbook`) — and `folder-bottom` is the workbook's strip
3106
+ * under its pages.
2918
3107
  */
2919
3108
  declare const VARIANT: {
2920
3109
  /** The capsule: a filled, ringed chip. Toolbars, rails, header actions. */
@@ -2944,6 +3133,14 @@ declare const VARIANT: {
2944
3133
  readonly active: "mb-[-1px] rounded-t-md border border-b-0 border-primary text-primary";
2945
3134
  readonly strip: "items-stretch";
2946
3135
  };
3136
+ /** The folder tab turned over, for a strip under its pages: open at the top, rounded below. */
3137
+ readonly "folder-bottom": {
3138
+ readonly item: "h-full rounded-none px-3 py-2 gap-1.5";
3139
+ readonly hover: "hover:text-foreground";
3140
+ readonly open: "data-[state=open]:text-foreground";
3141
+ readonly active: "mt-[-1px] rounded-b-md border border-t-0 border-primary text-primary";
3142
+ readonly strip: "items-stretch";
3143
+ };
2947
3144
  };
2948
3145
  type NavItemsVariant = keyof typeof VARIANT;
2949
3146
  interface NavItemsProps {
@@ -3206,8 +3403,12 @@ interface NestedMenuProps {
3206
3403
  declare const NestedMenu: React__default.FC<NestedMenuProps>;
3207
3404
 
3208
3405
  interface PanelBoxProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
3209
- /** What this band is — `Input · what opened this run`, `result.json`, `Log`. */
3210
- title: React$1.ReactNode;
3406
+ /**
3407
+ * What this band is — `Input · what opened this run`, `result.json`, `Log`.
3408
+ * Without one there is no label bar: the box still frames its content, which
3409
+ * is how a band of figures sits on a board as it sits in an answer card.
3410
+ */
3411
+ title?: React$1.ReactNode;
3211
3412
  /**
3212
3413
  * The fact on the right of the header — `214 lines · tailing`, `rendered from
3213
3414
  * result.json`, a `<Badge>`, a count.
@@ -3226,9 +3427,10 @@ interface PanelBoxProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "ti
3226
3427
  bodyClassName?: string;
3227
3428
  }
3228
3429
  /**
3229
- * One band of a dashboard: a bordered box with a label bar over it.
3430
+ * One band of a board: a bordered box, with a label bar over it when it
3431
+ * has a `title`.
3230
3432
  *
3231
- * A dashboard is a scrolling column of these — tiles, then the flow, then
3433
+ * A board is a scrolling column of these — tiles, then the flow, then
3232
3434
  * Input beside `result.json`, then the Log. Each box is **content-height and
3233
3435
  * owns no scroller**: the column scrolls, so a band that scrolled itself would
3234
3436
  * hide its own content behind a second bar.
@@ -3251,6 +3453,11 @@ interface PanelContentProps {
3251
3453
  title?: React__default.ReactNode;
3252
3454
  /** Header title as plain text, rendered in the default panel header style. */
3253
3455
  titleText?: string;
3456
+ /**
3457
+ * How many things the panel holds — `4`, `12 changed` — beside the title,
3458
+ * muted. A fact about the panel, so always shown, unlike its actions.
3459
+ */
3460
+ count?: React__default.ReactNode;
3254
3461
  children?: React__default.ReactNode;
3255
3462
  /** Classes for the outer card. */
3256
3463
  className?: string;
@@ -3291,7 +3498,7 @@ interface PanelContentProps {
3291
3498
  */
3292
3499
  actionsOnHover?: boolean;
3293
3500
  }
3294
- declare function PanelContent({ title, titleText, children, className, headerClassName, bodyClassName, footerContent, footerClassName, headerActions, actionsOnHover, }: PanelContentProps): React__default.JSX.Element;
3501
+ declare function PanelContent({ title, titleText, count, children, className, headerClassName, bodyClassName, footerContent, footerClassName, headerActions, actionsOnHover, }: PanelContentProps): React__default.JSX.Element;
3295
3502
 
3296
3503
  interface PanelStackSection {
3297
3504
  /** Unique identifier for the section within the stack. */
@@ -3308,6 +3515,12 @@ interface PanelStackSection {
3308
3515
  content: React$1.ReactNode;
3309
3516
  /** Optional leading icon component, shown before the title. */
3310
3517
  icon?: React$1.ElementType;
3518
+ /**
3519
+ * How many things the section holds — `4`, `12 changed` — beside the title,
3520
+ * muted. A fact, not an action: always shown, even while the actions wait
3521
+ * for hover, and while the section is collapsed.
3522
+ */
3523
+ count?: React$1.ReactNode;
3311
3524
  /**
3312
3525
  * Actions on the right of the title bar, as `NavHorizontal` items — the same
3313
3526
  * list `PanelContent` and `TabbedPanel` take, so a header is described once
@@ -3329,7 +3542,7 @@ interface PanelStackSection {
3329
3542
  /**
3330
3543
  * Keep `headerActions` hidden until the header is hovered or focused (or a
3331
3544
  * menu inside them is open) — VS Code's quiet view header. Defaults to
3332
- * `true`. Chrome that must always read, like a count, belongs in `title`.
3545
+ * `true`. A count that must always read is `count`.
3333
3546
  */
3334
3547
  actionsOnHover?: boolean;
3335
3548
  /** Start the section collapsed (header only). Defaults to `false`. */
@@ -3477,8 +3690,15 @@ interface PropertyListProps extends React$1.HTMLAttributes<HTMLDListElement> {
3477
3690
  /**
3478
3691
  * Width of the label column. One value for the whole list, so every value
3479
3692
  * starts on the same x — the reason to use this rather than a row of flexes.
3693
+ * `"auto"` sizes the column to the widest label, for a short list of known
3694
+ * labels such as the answers to an ask.
3695
+ */
3696
+ labelWidth?: number | "auto" | (string & {});
3697
+ /**
3698
+ * `summary` sets the rows tight — a settled answer read at a glance, such as
3699
+ * the values an ask was answered with, or a proposal's terms.
3480
3700
  */
3481
- labelWidth?: number | string;
3701
+ variant?: "default" | "summary";
3482
3702
  children?: React$1.ReactNode;
3483
3703
  }
3484
3704
  interface PropertyRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
@@ -3502,14 +3722,26 @@ declare const PropertyList: React$1.ForwardRefExoticComponent<PropertyListProps
3502
3722
  declare const PropertyRow: React$1.ForwardRefExoticComponent<PropertyRowProps & React$1.RefAttributes<HTMLDivElement>>;
3503
3723
 
3504
3724
  interface ProposalCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
3505
- /** What is being proposed — `Draft pattern`. */
3506
- title: React$1.ReactNode;
3725
+ /** What is being proposed — `Draft pattern`. Left out when the frame around the card already says it. */
3726
+ title?: React$1.ReactNode;
3507
3727
  /** Where it came from — `from the agent's result`. */
3508
3728
  source?: React$1.ReactNode;
3509
3729
  /** The draft itself. A `PropertyList`, usually. */
3510
3730
  children?: React$1.ReactNode;
3731
+ /**
3732
+ * The draft without its muted box — for a card whose frame is already its
3733
+ * own, such as a proposal under an answer, where a box inside it is a box
3734
+ * inside a box.
3735
+ */
3736
+ flush?: boolean;
3511
3737
  /** What the proposal rests on — the instances, as a table or list. */
3512
3738
  evidence?: React$1.ReactNode;
3739
+ /**
3740
+ * The evidence without its box — for evidence that is a `seamless` table or
3741
+ * grid, drawing only the rules between its rows, whose edge the card's own
3742
+ * frame already is.
3743
+ */
3744
+ seamless?: boolean;
3513
3745
  /** A heading for the evidence — `The six instances`. */
3514
3746
  evidenceTitle?: React$1.ReactNode;
3515
3747
  /** Scope of the evidence — `30 days`. */
@@ -3518,6 +3750,8 @@ interface ProposalCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
3518
3750
  consequence?: React$1.ReactNode;
3519
3751
  /** Author / reject / reassign. */
3520
3752
  actions?: React$1.ReactNode;
3753
+ /** Written: what was made — `Alert created` — stamped above the draft. */
3754
+ done?: React$1.ReactNode;
3521
3755
  }
3522
3756
  /**
3523
3757
  * An agent proposes; a person publishes.
@@ -3596,15 +3830,22 @@ interface RecordHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
3596
3830
  chips?: React$1.ReactNode;
3597
3831
  /** What you can do to it — prev/next, a view switch, buttons, a `…` menu. */
3598
3832
  actions?: React$1.ReactNode;
3833
+ /**
3834
+ * The bar's height, on the control scale — a bar is as tall as a control of
3835
+ * its size. `lg` (40px at a 13px root) tops a page or a board; `md`
3836
+ * (32px) tops a panel or a drawer, level with a `PanelBox` header. Either
3837
+ * holds `sm` chips and buttons.
3838
+ */
3839
+ size?: "md" | "lg";
3599
3840
  }
3600
3841
  /**
3601
3842
  * Which record you are looking at, across the top of the surface showing it.
3602
3843
  *
3603
- * A run dashboard, a step dashboard, a plan, a draft — every one of them opens
3844
+ * A run board, a step board, a plan, a draft — every one of them opens
3604
3845
  * with this line, so a reader who followed a link knows what they are reading
3605
3846
  * before they read any of it.
3606
3847
  *
3607
- * It is **not** a `ContextBar`. That is 28px under a panel and describes the
3848
+ * It is **not** a `ContextBar`. That is the `sm` bar under a panel and describes the
3608
3849
  * *view* — counts, a keyboard hint, a tab-shaped switch. This is above the
3609
3850
  * content and names the *record*, which is why the crumbs are mono: they are
3610
3851
  * identifiers, not prose.
@@ -3641,6 +3882,34 @@ interface RecordPagerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
3641
3882
  */
3642
3883
  declare const RecordPager: React$1.ForwardRefExoticComponent<RecordPagerProps & React$1.RefAttributes<HTMLDivElement>>;
3643
3884
 
3885
+ interface RefusalCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
3886
+ /**
3887
+ * Which bound refused it, as a short label — `refused · the agent's
3888
+ * guardrail`. The bound is the point: it says whom to ask.
3889
+ */
3890
+ label?: React$1.ReactNode;
3891
+ /**
3892
+ * What was refused and why, in one or two sentences — *This ask was not run.
3893
+ * In Everything, decide is cast to … and … does not allow it.*
3894
+ */
3895
+ children?: React$1.ReactNode;
3896
+ /** The way round it — another world, another agent, a person to ask. */
3897
+ remedy?: React$1.ReactNode;
3898
+ }
3899
+ /**
3900
+ * A bound refused the work **before it ran**.
3901
+ *
3902
+ * Not a cannot-answer and not a failure, and its own component for the same
3903
+ * reason those are (DS8): nothing was read, so there is nothing the graph does
3904
+ * not hold; nothing broke, so there is no fault to diagnose. A rule said no,
3905
+ * and the card names the rule's side so the reader knows whose rule to change.
3906
+ *
3907
+ * Tinted with the destructive token, because the reader has to act before
3908
+ * anything happens — but no citation strip and no retry, since running it again
3909
+ * under the same bounds would be refused again.
3910
+ */
3911
+ declare const RefusalCard: React$1.ForwardRefExoticComponent<RefusalCardProps & React$1.RefAttributes<HTMLDivElement>>;
3912
+
3644
3913
  interface RepairNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
3645
3914
  /** What was wrong — `unknown property Theme.velocity5d`. */
3646
3915
  from: React$1.ReactNode;
@@ -3681,13 +3950,40 @@ interface RichSelectOption {
3681
3950
  value: string;
3682
3951
  /** Rich primary content — string or JSX. */
3683
3952
  label: React$1.ReactNode;
3684
- /** Secondary line shown muted under the label. */
3685
- description?: React$1.ReactNode;
3686
- /** Lucide glyph or any component accepting `{ size }`. */
3953
+ /** Secondary line shown muted under the label. */
3954
+ description?: React$1.ReactNode;
3955
+ /** Lucide glyph or any component accepting `{ size }`. */
3956
+ icon?: React$1.ElementType;
3957
+ /** Trailing content (e.g. a count or status badge), pushed to the right. */
3958
+ badge?: React$1.ReactNode;
3959
+ disabled?: boolean;
3960
+ /**
3961
+ * Why a disabled option cannot be picked, shown under it in the warning
3962
+ * tone. A greyed-out row with no reason is a refusal nobody can act on.
3963
+ */
3964
+ disabledReason?: React$1.ReactNode;
3965
+ }
3966
+ /**
3967
+ * An on/off setting beside the choice — *Next ask only* on a world picker. It
3968
+ * is not an option: it scopes the choice, so it sits below the options and
3969
+ * toggling it keeps the menu open.
3970
+ */
3971
+ interface RichSelectToggle {
3972
+ id: string;
3973
+ label: React$1.ReactNode;
3974
+ checked: boolean;
3975
+ onCheckedChange: (checked: boolean) => void;
3976
+ disabled?: boolean;
3977
+ }
3978
+ /**
3979
+ * Something to do rather than something to pick — *Manage worlds…*. It sits
3980
+ * last, below a separator, so it is never mistaken for a value.
3981
+ */
3982
+ interface RichSelectAction {
3983
+ id: string;
3984
+ label: React$1.ReactNode;
3687
3985
  icon?: React$1.ElementType;
3688
- /** Trailing content (e.g. a count or status badge), pushed to the right. */
3689
- badge?: React$1.ReactNode;
3690
- disabled?: boolean;
3986
+ onSelect: () => void;
3691
3987
  }
3692
3988
  interface RichSelectProps {
3693
3989
  options: RichSelectOption[];
@@ -3717,6 +4013,25 @@ interface RichSelectProps {
3717
4013
  side?: "top" | "right" | "bottom" | "left";
3718
4014
  /** Gap in px between the trigger and the menu. Default `4`. */
3719
4015
  sideOffset?: number;
4016
+ /**
4017
+ * `field` (default) is an outlined control for a form. `inline` is the
4018
+ * borderless, compact trigger a toolbar uses — every control in a chat
4019
+ * composer is one, so the ask kind and the world read as one row.
4020
+ */
4021
+ appearance?: "field" | "inline";
4022
+ /** Glyph before the selected value on the trigger — a globe for a world. */
4023
+ triggerIcon?: React$1.ElementType;
4024
+ /** A short tag after the value on the trigger — `next ask only`. */
4025
+ triggerTag?: React$1.ReactNode;
4026
+ /** Settings that scope the choice; rendered below the options. */
4027
+ toggles?: RichSelectToggle[];
4028
+ /** Acts, not values; rendered last. */
4029
+ actions?: RichSelectAction[];
4030
+ /**
4031
+ * The trigger's accessible name — *Ask kind*, *World*. An inline trigger
4032
+ * shows only the current value, which names the choice made, not the control.
4033
+ */
4034
+ triggerAriaLabel?: string;
3720
4035
  /** Trigger tooltip content; omit to disable the tooltip. */
3721
4036
  tooltip?: React$1.ReactNode;
3722
4037
  /** Side the trigger tooltip is placed on. Default `'top'`. */
@@ -3734,8 +4049,13 @@ interface RichSelectProps {
3734
4049
  * rich content (`label`, `description`, `icon`, `badge`) and both the rows and
3735
4050
  * the trigger are fully customizable via `renderOption` / `renderValue`.
3736
4051
  * Supports single (radio) and multi (checkbox) selection via `multiple`.
4052
+ *
4053
+ * Beyond the choice it can carry **toggles** that scope it and **actions**
4054
+ * below it, and an `inline` trigger for toolbars — which is what lets every
4055
+ * control in a chat composer (ask kind, query language, world, timeout) be the
4056
+ * same component rather than a `Select` beside a hand-rolled menu.
3737
4057
  */
3738
- declare function RichSelect({ options, value, onChange, multiple, label, placeholder, renderOption, renderValue, align, side, sideOffset, tooltip, tooltipSide, disabled, triggerClassName, contentClassName, className, }: RichSelectProps): React$1.JSX.Element;
4058
+ declare function RichSelect({ options, value, onChange, multiple, label, placeholder, renderOption, renderValue, align, side, sideOffset, tooltip, tooltipSide, disabled, appearance, triggerIcon: TriggerIcon, triggerTag, triggerAriaLabel, toggles, actions, triggerClassName, contentClassName, className, }: RichSelectProps): React$1.JSX.Element;
3739
4059
 
3740
4060
  /** A slice along the axes the matched model **declared**. */
3741
4061
  interface RuleSelect {
@@ -3871,7 +4191,7 @@ declare const RuleRow: React$1.ForwardRefExoticComponent<RuleRowProps & React$1.
3871
4191
  * limit.** An unknown status still renders: it says its own name, in the
3872
4192
  * neutral.
3873
4193
  */
3874
- type KnownRunStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled" | "cannot_answer" | "awaiting_approval" | "skipped" | "held" | "purged";
4194
+ type KnownRunStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled" | "cannot_answer" | "awaiting_approval" | "awaiting_input" | "partial" | "skipped" | "held" | "purged";
3875
4195
  type RunStatus = KnownRunStatus | (string & {});
3876
4196
  /**
3877
4197
  * Which tone each status is read in.
@@ -3908,23 +4228,37 @@ interface RunStatusTextProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement
3908
4228
  * The word is always present, so colour is never the only carrier of the state.
3909
4229
  */
3910
4230
  declare const RunStatusText: React$1.ForwardRefExoticComponent<RunStatusTextProps & React$1.RefAttributes<HTMLSpanElement>>;
4231
+ /**
4232
+ * Which glyph each status is drawn with, where the word is not beside it.
4233
+ *
4234
+ * The shape is the point: every state a reader acts on differently gets its own
4235
+ * — done, broken, moving, not started, **waiting on you**, could not answer,
4236
+ * answered in part, stopped. An unknown status reads as not started.
4237
+ */
4238
+ declare const ICON: Record<string, StatusIconState>;
3911
4239
 
3912
4240
  interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "onSelect"> {
3913
4241
  status: RunStatus;
3914
- /** Overrides the tone the status resolves to. */
3915
- tone?: StatusDotProps["tone"];
4242
+ /** Overrides the glyph the status resolves to — `partial` on a run that succeeded. */
4243
+ state?: StatusIconState;
3916
4244
  kind?: RunKind;
4245
+ /**
4246
+ * What it was about, in the words it was opened with — the question as typed,
4247
+ * the query text, the dataset loaded. **Line one**, because it is what a
4248
+ * reader scans the journal for.
4249
+ */
4250
+ title: React$1.ReactNode;
4251
+ /** The title is a query, not a sentence — drawn mono. */
4252
+ titleMono?: boolean;
3917
4253
  /**
3918
4254
  * The run's address — the last eight characters of its uuid, mono.
3919
4255
  *
3920
- * **First on the row, before anything measured.** A row a reader cannot
3921
- * quote into a log line, a support thread or `GET …/runs/{id}` has made them
3922
- * drill in to find out what they are looking at.
4256
+ * **First on line two.** A row a reader cannot quote into a log line, a
4257
+ * support thread or `GET …/runs/{id}` has made them drill in to find out what
4258
+ * they are looking at.
3923
4259
  */
3924
4260
  address?: React$1.ReactNode;
3925
- /** What it was about — the question asked, the dataset loaded, the stitch run. */
3926
- title: React$1.ReactNode;
3927
- /** Under it — `2m 51s · 21.4k · 9/9 · 4 mins ago`. */
4261
+ /** After the address — `nl-query@5 · 2m 51s · 21.4k · 9/9 · 4 mins ago`. */
3928
4262
  meta?: React$1.ReactNode;
3929
4263
  /** Hard right — a badge, a count, an outcome. */
3930
4264
  aside?: React$1.ReactNode;
@@ -3942,10 +4276,9 @@ interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "titl
3942
4276
  * and no panel per kind: the kind is a chip and a filter value, which is what
3943
4277
  * keeps one journal from becoming four lists that drift apart.
3944
4278
  *
3945
- * The order on the row is addressed, then described, then measured: the id, the
3946
- * kind, what it was about, and the numbers underneath. A reader scanning for
3947
- * *the run I was just looking at* finds it by id; a reader scanning for *what
3948
- * has this system been doing* reads the line under it.
4279
+ * Line one is what it was about; line two is the id, then what it spent. The
4280
+ * status is a glyph in the leading slot and **not a word** — the shape carries
4281
+ * it, so the badge's column goes back to the prompt.
3949
4282
  *
3950
4283
  * With `onSelect` the whole row is one button, so the accessible name is the
3951
4284
  * whole row — the id, the kind and the summary in one string, which is exactly
@@ -3953,20 +4286,92 @@ interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "titl
3953
4286
  */
3954
4287
  declare const RunRow: React$1.ForwardRefExoticComponent<RunRowProps & React$1.RefAttributes<HTMLDivElement>>;
3955
4288
 
4289
+ interface ScopeLineChoice {
4290
+ value: string;
4291
+ label: React$1.ReactNode;
4292
+ /** At the right of the choice, in mono — `188`, `2 of 3`. */
4293
+ detail?: React$1.ReactNode;
4294
+ }
4295
+ /** A part with more to say than its text. */
4296
+ interface ScopeLinePart {
4297
+ text: React$1.ReactNode;
4298
+ /**
4299
+ * `changed` — this part differs from the question it was carried from;
4300
+ * `stale` — the data behind it is late.
4301
+ */
4302
+ mark?: "changed" | "stale";
4303
+ /** What the part can be changed to. Opening the part lists them under the line. */
4304
+ choices?: ScopeLineChoice[];
4305
+ }
4306
+ interface ScopeLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
4307
+ /** What the figure covers, in order — period, comparison, filters, population, freshness. */
4308
+ parts: (React$1.ReactNode | ScopeLinePart)[];
4309
+ /**
4310
+ * Makes the text parts editable in place: click one, type, `Enter` to send
4311
+ * the new value, `Escape` or leaving it to keep the old one. Called only
4312
+ * when the value changed.
4313
+ */
4314
+ onPartChange?: (index: number, value: string) => void;
4315
+ /**
4316
+ * Parts that stay as stated even when the rest can be edited — the data's
4317
+ * freshness is a fact about the load, not a choice of the analyst's.
4318
+ */
4319
+ fixedParts?: number[];
4320
+ /** The part whose choices are showing. Controlled; see `defaultOpenPart`. */
4321
+ openPart?: number | null;
4322
+ /** The part whose choices show at first, uncontrolled. */
4323
+ defaultOpenPart?: number;
4324
+ onOpenPartChange?: (index: number | null) => void;
4325
+ /** A line under the scope — `Click any part to change it and re-run`. */
4326
+ note?: React$1.ReactNode;
4327
+ /** `warning` when the note is about late data. */
4328
+ noteTone?: "muted" | "warning";
4329
+ /**
4330
+ * No box, and nothing wasted on its outside: only the rules between parts
4331
+ * are drawn, and the first part sits flush with the text around the strip.
4332
+ * For a scope inside a card or an answer, whose edge already frames it.
4333
+ */
4334
+ seamless?: boolean;
4335
+ }
4336
+ /**
4337
+ * What an answer covers, stated in one strip: `Q3 2026 · vs Q2 · Stores,
4338
+ * Online · 214 stores · as of 06:00`.
4339
+ *
4340
+ * Every analytic answer carries one, above its figures, so a number is never
4341
+ * read without the period and population it was computed over. The parts are
4342
+ * exactly as applied — the filters the query ran with, not the ones asked for.
4343
+ *
4344
+ * With `onPartChange` the scope is also where it is changed: a part is edited
4345
+ * where it is read, rather than by asking the question again.
4346
+ */
4347
+ declare const ScopeLine: React$1.ForwardRefExoticComponent<ScopeLineProps & React$1.RefAttributes<HTMLDivElement>>;
4348
+
3956
4349
  /**
3957
- * `sm` (26px) is the application field — a search box docked in a panel header,
3958
- * beside a 30px tab strip. `default` (40px) stays the page size.
4350
+ * The control scale: `sm` (26px) is the application field — a search box
4351
+ * docked in a panel header or a table toolbar; `default` (32px) a standalone
4352
+ * form; `lg` (40px) a page. Size is height only: every size reads at the root,
4353
+ * the size of the rows being searched.
3959
4354
  *
3960
4355
  * Named `inputSize` for the same reason `Input` is: `size` is already an
3961
4356
  * `<input>` attribute meaning "how many characters wide".
3962
4357
  */
3963
- type SearchInputSize = 'default' | 'sm';
4358
+ type SearchInputSize = 'sm' | 'default' | 'lg';
3964
4359
  interface SearchInputProps extends Omit<React__default.ComponentProps<'input'>, 'value' | 'onChange' | 'size' | 'type'> {
4360
+ /** Sits on the box around the field — its width, its place in a row. */
3965
4361
  className?: string;
3966
4362
  value: string;
3967
4363
  /** Receives the raw string, not the event — a search box has one value. */
3968
4364
  onChange: (value: string) => void;
3969
4365
  inputSize?: SearchInputSize;
4366
+ /**
4367
+ * A clear button at the end of the field while it holds text, and Escape
4368
+ * clears it too; both send `onChange("")`. On by default.
4369
+ */
4370
+ clearable?: boolean;
4371
+ /** The clear button's glyph — yours, at 14px. Default: a plain cross. */
4372
+ clearIcon?: React__default.ReactNode;
4373
+ /** The clear button's accessible name. */
4374
+ clearLabel?: string;
3970
4375
  }
3971
4376
  declare const SearchInput: React__default.FC<SearchInputProps>;
3972
4377
 
@@ -4000,41 +4405,6 @@ interface SectionHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
4000
4405
  */
4001
4406
  declare const SectionHeader: React$1.ForwardRefExoticComponent<SectionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
4002
4407
 
4003
- /**
4004
- * TODO — provisional. Built ahead of its design review.
4005
- *
4006
- * The chart set was deliberately deferred while the rest of the kit was built,
4007
- * because charts are the one group with a real design question in them rather
4008
- * than a markup question: which forms this product actually needs, at what
4009
- * sizes, and how much a 330px drawer can carry. This component satisfies the
4010
- * dataviz rules and the validated palette, but the *form inventory* has not been
4011
- * agreed — treat the API as unsettled until a board screen uses it in anger.
4012
- */
4013
-
4014
- interface SparklineProps extends Omit<React$1.SVGAttributes<SVGSVGElement>, "children" | "values"> {
4015
- values: number[];
4016
- width?: number;
4017
- height?: number;
4018
- color?: string;
4019
- /** Washes the area under the line at 10%. Off by default at this size. */
4020
- area?: boolean;
4021
- /** A filled dot on the last point, ringed in the surface colour. */
4022
- endMarker?: boolean;
4023
- /** What the line is, for assistive tech. The surface around it usually says. */
4024
- label?: string;
4025
- }
4026
- /**
4027
- * The shape of a series, small enough to sit inside a row.
4028
- *
4029
- * No axis, no gridlines, no labels — a sparkline answers "which way, and how
4030
- * steadily", and the number it accompanies answers "how much". If a reader
4031
- * needs to read a value off it, it wanted to be a chart.
4032
- *
4033
- * The end marker carries a 2px ring in the surface colour so it stays legible
4034
- * where the line runs under it.
4035
- */
4036
- declare const Sparkline: React$1.ForwardRefExoticComponent<SparklineProps & React$1.RefAttributes<SVGSVGElement>>;
4037
-
4038
4408
  interface TabConfig {
4039
4409
  /** Unique identifier for the tab */
4040
4410
  value: string;
@@ -4051,6 +4421,8 @@ interface TabConfig {
4051
4421
  content: React__default.ReactNode;
4052
4422
  /** Whether this tab should be disabled */
4053
4423
  disabled?: boolean;
4424
+ /** Draw a close button on the tab; pressing it calls the panel's `onTabClose`. */
4425
+ closable?: boolean;
4054
4426
  }
4055
4427
  interface TabbedPanelProps {
4056
4428
  /** Array of tab configurations */
@@ -4061,6 +4433,11 @@ interface TabbedPanelProps {
4061
4433
  activeTab?: string;
4062
4434
  /** Callback when tab changes */
4063
4435
  onTabChange?: (value: string) => void;
4436
+ /**
4437
+ * A `closable` tab's close was pressed, by its value. The tabs are yours, so
4438
+ * closing is too: drop it from `tabs`, and move `activeTab` if it was open.
4439
+ */
4440
+ onTabClose?: (value: string) => void;
4064
4441
  /**
4065
4442
  * Actions on the right of the tab bar, as `NavHorizontal` items. A panel
4066
4443
  * header has one action area — the right — so this is the item list itself
@@ -4077,6 +4454,16 @@ interface TabbedPanelProps {
4077
4454
  * ```
4078
4455
  */
4079
4456
  headerActions?: NavHorizontalItem[];
4457
+ /**
4458
+ * A control on the right of the tab strip, before `headerActions`, that
4459
+ * applies to **every** tab: a time window, a version. Not a place for a
4460
+ * tab's own controls — those belong in that tab's body.
4461
+ *
4462
+ * ```tsx
4463
+ * headerContent={<ToggleGroup type="single" size="sm">…</ToggleGroup>}
4464
+ * ```
4465
+ */
4466
+ headerContent?: React__default.ReactNode;
4080
4467
  /**
4081
4468
  * Fold the tabs that do not fit the header into a `…` dropdown at the end of
4082
4469
  * the strip, instead of letting the strip set the panel's minimum width.
@@ -4114,7 +4501,7 @@ interface TabbedPanelProps {
4114
4501
  footerContent?: React__default.ReactNode;
4115
4502
  }
4116
4503
  /**
4117
- * TabbedPanel — a panel whose views sit behind one 30px tab strip.
4504
+ * TabbedPanel — a panel whose views sit behind one `md` tab strip.
4118
4505
  *
4119
4506
  * The strip is a `NavItems` tab list (`variant="underline"`), not a Radix
4120
4507
  * `Tabs`: the same component draws this kit's nav rails and its workbook tabs,
@@ -4124,47 +4511,129 @@ interface TabbedPanelProps {
4124
4511
  * `TabsContent`, and a panel that tears its canvas down on every tab switch is
4125
4512
  * not a panel anyone wants.
4126
4513
  */
4127
- declare function TabbedPanel({ tabs, defaultTab, activeTab, onTabChange, headerActions, overflow, overflowLabel, keepMounted, className, headerClassName, bodyClassName, footerClassName, footerContent, }: TabbedPanelProps): React__default.JSX.Element;
4514
+ declare function TabbedPanel({ tabs, defaultTab, activeTab, onTabChange, onTabClose, headerActions, headerContent, overflow, overflowLabel, keepMounted, className, headerClassName, bodyClassName, footerClassName, footerContent, }: TabbedPanelProps): React__default.JSX.Element;
4128
4515
 
4129
4516
  /**
4130
- * What a task did with its slice of the run's clock.
4517
+ * Which rows of a tree are open, by key — `true` for every one. The same shape
4518
+ * as a `DataTable`'s `expanded`, so a page holding both passes one value.
4519
+ */
4520
+ type ExpandedKeys = true | Record<string, boolean>;
4521
+ interface UseExpandedKeysOptions {
4522
+ /** Controlled. Pair it with `onExpandedChange`. */
4523
+ expanded?: ExpandedKeys;
4524
+ /** Uncontrolled: what is open at first. Closed by default. */
4525
+ defaultExpanded?: ExpandedKeys;
4526
+ onExpandedChange?: (expanded: ExpandedKeys) => void;
4527
+ /** Every key that can open, so closing one row of `true` keeps the rest open. */
4528
+ keys: string[];
4529
+ }
4530
+ /**
4531
+ * Open and close the rows of a tree, controlled or not. What a chart drawn as
4532
+ * rows uses to nest — a Gantt's subtasks, a heat strip's children — so each
4533
+ * opens the same way and reports the same value.
4534
+ */
4535
+ declare function useExpandedKeys({ expanded, defaultExpanded, onExpandedChange, keys, }: UseExpandedKeysOptions): {
4536
+ isOpen: (key: string) => boolean;
4537
+ toggle: (key: string) => void;
4538
+ };
4539
+
4540
+ /**
4541
+ * What a bar did with its slice of the clock.
4131
4542
  *
4132
4543
  * These are the engine's own step statuses (`StepStatus`, plus `skipped` for a
4133
4544
  * branch that never ran), not a second vocabulary: a Gantt row and a log line
4134
- * are the same task seen twice, so they say the same word for the same state.
4545
+ * are the same work seen twice, so they say the same word for the same state.
4546
+ * `refused` is what a rule stopped — reached for and not allowed — which is a
4547
+ * different fact from `skipped`, and both are drawn.
4135
4548
  */
4136
- type TaskGanttStatus = "succeeded" | "running" | "failed" | "needs_input" | "stopped" | "skipped" | "queued";
4549
+ type GanttStatus = "succeeded" | "running" | "failed" | "needs_input" | "stopped" | "skipped" | "queued" | "refused";
4137
4550
  /** A `Date`, an ISO string, or epoch milliseconds — whatever the JSON carried. */
4138
- type TaskGanttInstant = string | number | Date;
4551
+ type GanttInstant = string | number | Date;
4139
4552
  /**
4140
- * One bar. A task is usually one of these; a retried task is two or more, the
4141
- * failed attempt sitting to the left of the one that stuck.
4553
+ * One bar on the clock. A row's own bar is one of these, so is each earlier
4554
+ * attempt — the failed one sitting to the left of the one that stuck — and so
4555
+ * is each of the row's `bars`.
4142
4556
  */
4143
- interface TaskGanttSegment {
4557
+ interface GanttBar {
4144
4558
  /** Offset from the run's zero. Use this, or `startedAt` with `origin`. */
4145
4559
  startMs?: number;
4146
4560
  durationMs?: number;
4147
- startedAt?: TaskGanttInstant;
4148
- finishedAt?: TaskGanttInstant;
4149
- status?: TaskGanttStatus;
4561
+ startedAt?: GanttInstant;
4562
+ finishedAt?: GanttInstant;
4563
+ status?: GanttStatus;
4150
4564
  /** Overrides the hover text, which otherwise reads `key · status · duration`. */
4151
4565
  title?: string;
4566
+ /**
4567
+ * Names the bar, so it can be picked on its own — `fetch_source#1`. Only a
4568
+ * bar in a row's `bars` has one; the row's own bar is picked with the row.
4569
+ */
4570
+ key?: string;
4571
+ /**
4572
+ * Written in the bar — the task a slot held, the participant a layer reached.
4573
+ * A row with a labelled bar grows to the `xs` control height to carry it, and
4574
+ * the bar draws as a card with its fill as a rail, so the text stays legible
4575
+ * on any status or palette colour.
4576
+ */
4577
+ label?: React$1.ReactNode;
4578
+ /**
4579
+ * Which entry of `palette` paints it, in place of its status fill — a layer,
4580
+ * a lane, an agent. A group the palette does not name keeps the status fill,
4581
+ * and a `failed` or `refused` bar is always drawn as one.
4582
+ */
4583
+ group?: string;
4584
+ /**
4585
+ * `solid` (the default) is spent time. `outline` is time held but not spent
4586
+ * — queued, waiting on a gate; `dashed` is time that may be spent — declared,
4587
+ * not yet dispatched.
4588
+ */
4589
+ variant?: "solid" | "outline" | "dashed";
4590
+ /**
4591
+ * A second line under the label — `1,204 of 1,251`, `503`. A row with one
4592
+ * grows to the `md` control height to carry both lines.
4593
+ */
4594
+ note?: React$1.ReactNode;
4595
+ /** A small mark at the bar's end — a `Badge`, an icon, a count. Drawn with a label. */
4596
+ chip?: React$1.ReactNode;
4597
+ /**
4598
+ * What this bar did, for its own hover card — the same fields a row's card
4599
+ * reads. A row with a bar that has one opens no card of its own: its bars
4600
+ * do, so the reader gets the bar under the cursor rather than the row.
4601
+ */
4602
+ summary?: React$1.ReactNode;
4603
+ result?: React$1.ReactNode | Record<string, unknown>;
4604
+ error?: {
4605
+ code?: React$1.ReactNode;
4606
+ message?: React$1.ReactNode;
4607
+ detail?: React$1.ReactNode;
4608
+ };
4609
+ log?: React$1.ReactNode;
4152
4610
  }
4153
- interface TaskGanttTask extends TaskGanttSegment {
4154
- /** `task_key` — what the log lines call this task. Also the row's label. */
4611
+ /**
4612
+ * One row: a task on a run's clock, a worker slot, a layer, a participant —
4613
+ * whatever the surface groups time by. It carries its own bar, earlier
4614
+ * attempts, many `bars` of its own, and the `rows` it opens into.
4615
+ */
4616
+ interface GanttRow extends GanttBar {
4617
+ /** What the log lines call it — `task_key`, `slot-1`, `ingest`. Also the row's label. */
4155
4618
  key: string;
4156
4619
  /** Shown instead of `key`, when the row wants a human name. */
4157
4620
  label?: React$1.ReactNode;
4158
4621
  /** Earlier attempts, oldest first. A failed one draws in `destructive`. */
4159
- attempts?: TaskGanttSegment[];
4160
- /** Overrides the right-hand duration cell. `—` when the task never ran. */
4622
+ attempts?: GanttBar[];
4623
+ /**
4624
+ * Many bars on one row, each a thing of its own rather than a retry — what a
4625
+ * worker slot held in order, what a layer was reached for. Drawn with the
4626
+ * row's own bar, if it has one; give each a `label` to say what it was.
4627
+ */
4628
+ bars?: GanttBar[];
4629
+ /** Overrides the right-hand duration cell. `—` when the row never ran. */
4161
4630
  duration?: React$1.ReactNode;
4162
- /** One line — what the task said. The card's last line. */
4631
+ /** One line — what it said. The card's last line. */
4163
4632
  log?: React$1.ReactNode;
4164
4633
  /** A sentence under the card's header, when the row wants one. */
4165
4634
  summary?: React$1.ReactNode;
4166
4635
  /**
4167
- * What the task produced — its `result.json`, or any part of it.
4636
+ * What it produced — its `result.json`, or any part of it.
4168
4637
  *
4169
4638
  * An object renders as label/value pairs, with nested values as JSON; a node
4170
4639
  * renders as given, which is the hook for a kind-specific card (a table
@@ -4179,12 +4648,44 @@ interface TaskGanttTask extends TaskGanttSegment {
4179
4648
  };
4180
4649
  /** Replaces this row's card body entirely. */
4181
4650
  detail?: React$1.ReactNode;
4651
+ /**
4652
+ * The rows this one opens into — the tasks it split into, the participants
4653
+ * of a layer — drawn under it, indented, when it is open. A row with no
4654
+ * timing of its own draws the stretch its rows cover.
4655
+ */
4656
+ rows?: GanttRow[];
4657
+ }
4658
+ /**
4659
+ * A bounded repetition — a loop's rounds — drawn as a bracket over the rows
4660
+ * it holds, with its label on a line of its own above them.
4661
+ */
4662
+ interface GanttBracket {
4663
+ /** The first row it holds, by `key`. */
4664
+ from: string;
4665
+ /** The last row it holds, by `key`. Rows are matched in order, first hit. */
4666
+ to: string;
4667
+ /** `↻ 2 of 3 rounds — understood on round 2`. */
4668
+ label: React$1.ReactNode;
4669
+ }
4670
+ /**
4671
+ * A gate — a moment the run held and spent nothing — drawn as a rule across
4672
+ * the stretch of the clock it held, between the rows it lies between.
4673
+ */
4674
+ interface GanttSeam extends Pick<GanttBar, "startMs" | "durationMs" | "startedAt" | "finishedAt"> {
4675
+ /** The row it follows, by `key`. */
4676
+ after: string;
4677
+ /** The label column's word — `approval`. */
4678
+ label: React$1.ReactNode;
4679
+ /** What it was and how it resolved, written on the rule — `approved by ravi`. */
4680
+ note?: React$1.ReactNode;
4681
+ /** Overrides the right-hand cell, which otherwise reads the time it held. */
4682
+ duration?: React$1.ReactNode;
4182
4683
  }
4183
- interface TaskGanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
4184
- /** One entry per task, in plan order — the run's `steps`, grouped by task. */
4185
- tasks: TaskGanttTask[];
4186
- /** The run's zero, when tasks carry timestamps. Defaults to the earliest one. */
4187
- origin?: TaskGanttInstant;
4684
+ interface GanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
4685
+ /** One entry per row, in order — a run's tasks, its slots, its layers. */
4686
+ rows: GanttRow[];
4687
+ /** The clock's zero, when bars carry timestamps. Defaults to the earliest one. */
4688
+ origin?: GanttInstant;
4188
4689
  /** The clock's ceiling. Defaults to the last end, or `nowMs` if that is later. */
4189
4690
  spanMs?: number;
4190
4691
  /** Draws the *now* line. Set it while the run is in flight; omit it after. */
@@ -4195,10 +4696,32 @@ interface TaskGanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
4195
4696
  ticks?: number;
4196
4697
  formatTick?: (ms: number) => string;
4197
4698
  formatDuration?: (ms: number) => string;
4198
- /** The key column, in px. 112 in the drawer, wider on a dashboard. */
4699
+ /**
4700
+ * The key column, in px. Omit it and the column takes its longest label,
4701
+ * up to 40% of the width — the surface decides the width, never the chart.
4702
+ */
4199
4703
  labelWidth?: number;
4200
4704
  /**
4201
- * `compact` in a drawer, `comfortable` on a dashboard. It moves the bar's
4705
+ * The right-hand duration column, in px. Omit it and it takes its widest
4706
+ * cell; set it on charts stacked over one clock so their tracks end together.
4707
+ */
4708
+ durationWidth?: number;
4709
+ /** Loops, bracketed over their rounds. */
4710
+ brackets?: GanttBracket[];
4711
+ /** Gates, ruled across the time they held. */
4712
+ seams?: GanttSeam[];
4713
+ /**
4714
+ * What each bar `group` is painted with — `{ ingest: "bg-data-1" }`. The
4715
+ * kit ships no hues: a group nobody painted keeps its status fill.
4716
+ */
4717
+ palette?: Record<string, string>;
4718
+ /**
4719
+ * The inside of a bar, for every bar in `bars` — a chip, an icon, a count. Return
4720
+ * `null` for a bar that should stay a plain fill. Wins over `label`.
4721
+ */
4722
+ renderBar?: (bar: GanttBar, row: GanttRow) => React$1.ReactNode;
4723
+ /**
4724
+ * `compact` in a drawer, `comfortable` on a board. It moves the bar's
4202
4725
  * height, not the type scale — one component, three surfaces (SR14).
4203
4726
  */
4204
4727
  density?: "compact" | "comfortable";
@@ -4213,18 +4736,33 @@ interface TaskGanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
4213
4736
  * Replaces the default card body, for every row. Return `null` for a row that
4214
4737
  * should not open one.
4215
4738
  */
4216
- renderDetail?: (task: TaskGanttTask) => React$1.ReactNode;
4739
+ renderDetail?: (row: GanttRow) => React$1.ReactNode;
4217
4740
  /** Where the card sits, how fast it opens, and how wide it is. */
4218
- detailProps?: TaskGanttDetailProps;
4219
- /** The task the log is currently filtered to (SR15). */
4741
+ detailProps?: GanttDetailProps;
4742
+ /** The row or bar picked — what the log is currently filtered to (SR15). */
4220
4743
  selectedKey?: string | null;
4221
4744
  /** Makes the rows pickable. Picking one is what filters the log. */
4222
- onSelectTask?: (key: string) => void;
4745
+ onSelectRow?: (key: string) => void;
4746
+ /**
4747
+ * Makes each keyed bar pickable on its own — the task a layer was reached
4748
+ * for, rather than the layer. A row whose bars are keyed is then
4749
+ * picked by its bars, not as a whole, so a bar is never a button inside a
4750
+ * button. `selectedKey` lights a bar with that key as it lights a row.
4751
+ */
4752
+ onSelectBar?: (barKey: string, rowKey: string) => void;
4753
+ /** Which rows with `rows` are open, by key — `true` for all. Controlled. */
4754
+ expanded?: ExpandedKeys;
4755
+ /** Which are open at first, uncontrolled. Closed by default. */
4756
+ defaultExpanded?: ExpandedKeys;
4757
+ /** A row opened or closed: every open key, as a `DataTable`'s `expanded` reads. */
4758
+ onExpandedChange?: (expanded: ExpandedKeys) => void;
4223
4759
  }
4224
- interface TaskGanttDetailProps {
4225
- /** @default "right" */
4760
+ /**
4761
+ * Where the card opens. With neither `side` nor `align` it opens beside the
4762
+ * cursor, under the row; set either and it is placed against the row instead.
4763
+ */
4764
+ interface GanttDetailProps {
4226
4765
  side?: "top" | "right" | "bottom" | "left";
4227
- /** @default "start" */
4228
4766
  align?: "start" | "center" | "end";
4229
4767
  sideOffset?: number;
4230
4768
  /** @default 200 */
@@ -4235,14 +4773,14 @@ interface TaskGanttDetailProps {
4235
4773
  width?: number | string;
4236
4774
  className?: string;
4237
4775
  }
4238
- interface TaskGanttDetailCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4239
- task: TaskGanttTask;
4240
- /** Elapsed so far, for a task still running — it has no `durationMs` yet. */
4776
+ interface GanttDetailCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4777
+ row: GanttRow;
4778
+ /** Elapsed so far, for a row still running — it has no `durationMs` yet. */
4241
4779
  elapsedMs?: number;
4242
4780
  formatDuration?: (ms: number) => string;
4243
4781
  }
4244
4782
  /**
4245
- * What one task did, as a card.
4783
+ * What one row — or one bar — did, as a card.
4246
4784
  *
4247
4785
  * The body of the hover card, and exported so a surface can compose its own
4248
4786
  * around the same header — `renderDetail` returning this with a kind-specific
@@ -4252,25 +4790,30 @@ interface TaskGanttDetailCardProps extends Omit<React$1.HTMLAttributes<HTMLDivEl
4252
4790
  * Order is fixed and is the order a reader asks in: what state, how long, what
4253
4791
  * went wrong, what came out, what it said last.
4254
4792
  */
4255
- declare const TaskGanttDetailCard: React$1.ForwardRefExoticComponent<TaskGanttDetailCardProps & React$1.RefAttributes<HTMLDivElement>>;
4793
+ declare const GanttDetailCard: React$1.ForwardRefExoticComponent<GanttDetailCardProps & React$1.RefAttributes<HTMLDivElement>>;
4256
4794
  /**
4257
- * Where the time went — one row per task, on the run's own clock.
4795
+ * Where the time went — rows of bars on one clock.
4258
4796
  *
4259
- * Duration is the question a run detail is opened with, and a step list with a
4260
- * duration column answers it one row at a time. A bar placed by start and sized
4261
- * by duration puts the slow task, the retry and the branch that never ran in one
4262
- * glance (SR14).
4797
+ * A row is whatever a surface groups time by. Read by **task**, it answers the
4798
+ * question a run detail is opened with: a bar placed by start and sized by
4799
+ * duration puts the slow task, the retry and the branch that never ran in one
4800
+ * glance (SR14). Read by **layer**, the same drawing answers what the run
4801
+ * reached and what it was stopped from reaching: a row per layer opens into its
4802
+ * participants, and each holds the `bars` of the tasks that reached it, painted
4803
+ * by `palette` — `refused` where a rule said no, `dashed` where it was declared
4804
+ * and never dispatched. Read by **slot**, each row is a worker and its bars are
4805
+ * what it ran, in order.
4263
4806
  *
4264
- * It is one component across three surfaces — the Runs drawer (compact, with a
4265
- * line of log per row), the run dashboard (full width, logs off) and the
4266
- * document rendering — so `density` and `showLogs` are props, not three
4267
- * drawings.
4807
+ * A row opens into its `rows`, indented under it, and a parent with no timing
4808
+ * of its own draws the stretch they cover as a thin rule — so a closed plan
4809
+ * still says how long it took. The clock is milliseconds by default; a plan
4810
+ * read in order passes step numbers and a `formatTick` that names them.
4268
4811
  *
4269
- * Colour never carries state alone: every row names its duration, the bar
4270
- * titles itself with its status, and a task that never ran is an *outline*
4271
- * rather than a paler fill.
4812
+ * Colour never carries state alone: every row names its duration, a bar titles
4813
+ * itself with its status, a row that never ran is an *outline* rather than a
4814
+ * paler fill, and a refused bar's name is struck through.
4272
4815
  */
4273
- declare const TaskGantt: React$1.ForwardRefExoticComponent<TaskGanttProps & React$1.RefAttributes<HTMLDivElement>>;
4816
+ declare const Gantt: React$1.ForwardRefExoticComponent<GanttProps & React$1.RefAttributes<HTMLDivElement>>;
4274
4817
 
4275
4818
  interface TaskNodeTag {
4276
4819
  /** `3 lanes`, `attempt 2`, `map_over: datasets`. */
@@ -4367,76 +4910,10 @@ interface TemplatePickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement
4367
4910
  * again**. That is why unavailable options are listed rather than hidden — the
4368
4911
  * reason a template does not fit ("needs a time column") is information about
4369
4912
  * the data, and hiding it would leave the reader wondering what else exists.
4370
- */
4371
- declare const TemplatePicker: React$1.ForwardRefExoticComponent<TemplatePickerProps & React$1.RefAttributes<HTMLDivElement>>;
4372
-
4373
- type TerminalLineKind = "prompt" | "output" | "comment";
4374
- /**
4375
- * The severity a **log** line was emitted at, as the runtime recorded it.
4376
- *
4377
- * Distinct from `kind`, which says what part of a *transcript* a line is — a
4378
- * command you typed, what it printed, a comment. A run's log has no prompts and
4379
- * no comments; every line is output, and what varies is how loud it is.
4380
- */
4381
- type KnownTerminalLevel = "info" | "warn" | "error" | "debug";
4382
- /**
4383
- * The values the kit draws specially — **suggestions, not a limit.** Anything
4384
- * else renders with the neutral token and its own name.
4385
- */
4386
- type TerminalLevel = KnownTerminalLevel | (string & {});
4387
- interface TerminalLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4388
- kind?: TerminalLineKind;
4389
- /**
4390
- * How loud this line is. Tints **one** cell — the one named by
4391
- * `levelColumn` — and nothing else.
4392
- *
4393
- * Only the level word is coloured, never the message: a wall of amber
4394
- * sentences is unreadable, and what a reader scans is the column, not the
4395
- * prose. Setting this also drops the `kind` marker — a log line is not a
4396
- * transcript line and does not want a `→` in front of it.
4397
- *
4398
- * The level **word** stays in `columns`. Colour is never the carrier.
4399
- */
4400
- level?: TerminalLevel;
4401
- /**
4402
- * Which cell of `columns` holds the level word. Defaults to `1`, because a
4403
- * log line reads `time · LEVEL · source · message` and the timestamp comes
4404
- * first in every log anyone has ever read.
4405
- */
4406
- levelColumn?: number;
4407
- /**
4408
- * Columns, for the step-shaped output a run prints — name, detail, timing,
4409
- * result. Given as cells so they align down the transcript instead of each
4410
- * line padding itself with spaces.
4411
- */
4412
- columns?: React$1.ReactNode[];
4413
- children?: React$1.ReactNode;
4414
- }
4415
- interface TerminalProps extends React$1.HTMLAttributes<HTMLDivElement> {
4416
- children?: React$1.ReactNode;
4417
- /** Shows a blinking block at the end. */
4418
- cursor?: boolean;
4419
- /**
4420
- * `grid-template-columns` for every columned line in this transcript.
4421
- *
4422
- * Set once here rather than per line, because the point of columns is that
4423
- * they line up *down* the transcript — a width chosen per row aligns nothing.
4424
- */
4425
- columnTemplate?: string;
4426
- }
4427
- /**
4428
- * A shell transcript, as a first-class surface.
4429
- *
4430
- * Some of this product's work happens outside Studio — imports run from the
4431
- * CLI, a scheduler calls the Python API — and the hand-off has to be shown
4432
- * honestly rather than redrawn as a wizard. So this renders what the terminal
4433
- * actually printed.
4434
4913
  *
4435
- * It is presentational: a record of a run that already happened, not a live
4436
- * console. There is no input here, and it does not scroll itself.
4914
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
4437
4915
  */
4438
- declare const Terminal: React$1.ForwardRefExoticComponent<TerminalProps & React$1.RefAttributes<HTMLDivElement>>;
4439
- declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps & React$1.RefAttributes<HTMLDivElement>>;
4916
+ declare const TemplatePicker: React$1.ForwardRefExoticComponent<TemplatePickerProps & React$1.RefAttributes<HTMLDivElement>>;
4440
4917
 
4441
4918
  /**
4442
4919
  * How the list arranges one entry.
@@ -4448,8 +4925,12 @@ declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps
4448
4925
  * `rail` — `when` sits above the title and a line threads the markers. For a
4449
4926
  * narrow card or sidebar, where a 72px column would eat a third of the width
4450
4927
  * and titles wrap anyway; the rail supplies the alignment the column was.
4928
+ *
4929
+ * `compact` — `when`, the marker and the text on one line, no rules. For a few
4930
+ * dated events inside an answer, `wk 8 · Yantian port congestion notice`,
4931
+ * where rules between two lines would outweigh the lines.
4451
4932
  */
4452
- type TimelineVariant = "columns" | "rail";
4933
+ type TimelineVariant = "columns" | "rail" | "compact";
4453
4934
  interface TimelineEntryProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "title"> {
4454
4935
  /** When — `Fri 5 Sep`, `09:47`, `Sun`. */
4455
4936
  when: React$1.ReactNode;
@@ -4457,6 +4938,21 @@ interface TimelineEntryProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>,
4457
4938
  title?: React$1.ReactNode;
4458
4939
  /** A marker in the rail — a `StatusDot`, usually. */
4459
4940
  marker?: React$1.ReactNode;
4941
+ /**
4942
+ * Calls the entry out on a tinted ground — the anomaly the events around it
4943
+ * explain. `compact` only.
4944
+ */
4945
+ highlight?: "error" | "warning" | "success" | "info";
4946
+ /**
4947
+ * The events this one breaks into — `TimelineEntry`s drawn under it, in the
4948
+ * list's variant, when it is open. A chevron beside the entry opens it.
4949
+ */
4950
+ nested?: React$1.ReactNode;
4951
+ /** Controlled. Pair it with `onOpenChange`. */
4952
+ open?: boolean;
4953
+ /** Uncontrolled: open at first. Closed by default. */
4954
+ defaultOpen?: boolean;
4955
+ onOpenChange?: (open: boolean) => void;
4460
4956
  children?: React$1.ReactNode;
4461
4957
  }
4462
4958
  interface TimelineListProps extends React$1.HTMLAttributes<HTMLOListElement> {
@@ -4474,7 +4970,9 @@ interface TimelineFooterProps extends React$1.HTMLAttributes<HTMLLIElement> {
4474
4970
  * because the order carries meaning — these are events in sequence, not a set.
4475
4971
  *
4476
4972
  * Both variants take the same entries; only the arrangement differs. See
4477
- * `TimelineVariant` for which one a surface wants.
4973
+ * `TimelineVariant` for which one a surface wants. An entry that breaks into
4974
+ * smaller events carries them as `nested` entries, drawn under it, in the
4975
+ * same variant, once it is opened.
4478
4976
  */
4479
4977
  declare const TimelineList: React$1.ForwardRefExoticComponent<TimelineListProps & React$1.RefAttributes<HTMLOListElement>>;
4480
4978
  declare const TimelineEntry: React$1.ForwardRefExoticComponent<TimelineEntryProps & React$1.RefAttributes<HTMLLIElement>>;
@@ -4488,8 +4986,43 @@ declare const TimelineEntry: React$1.ForwardRefExoticComponent<TimelineEntryProp
4488
4986
  * `columns` has no rail to run on, so the footer is a plain last row there.
4489
4987
  */
4490
4988
  declare const TimelineFooter: React$1.ForwardRefExoticComponent<TimelineFooterProps & React$1.RefAttributes<HTMLLIElement>>;
4989
+ interface TimelineSectionProps extends React$1.HTMLAttributes<HTMLLIElement> {
4990
+ children?: React$1.ReactNode;
4991
+ }
4992
+ /**
4993
+ * A label over a run of entries — `Before`, `Spike`, `After` — for events read
4994
+ * around one moment rather than as one sequence.
4995
+ */
4996
+ declare const TimelineSection: React$1.ForwardRefExoticComponent<TimelineSectionProps & React$1.RefAttributes<HTMLLIElement>>;
4491
4997
 
4492
- declare const Toolbar: React__default.FC;
4998
+ /** One control of a toolbar: a word, or an icon named by its tooltip. */
4999
+ interface ToolbarAction {
5000
+ id: string;
5001
+ /** The word, or — with an `icon` — the tooltip and accessible name. */
5002
+ label: string;
5003
+ /** Draws the control as an icon; the caller's, at 16px. */
5004
+ icon?: React$1.ReactNode;
5005
+ /** A toggle that is on — `Lock` while the canvas is locked. */
5006
+ pressed?: boolean;
5007
+ disabled?: boolean;
5008
+ }
5009
+ /** A rule between groups of controls. */
5010
+ interface ToolbarSeparator {
5011
+ separator: true;
5012
+ }
5013
+ type ToolbarItem = ToolbarAction | ToolbarSeparator;
5014
+ interface ToolbarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
5015
+ items: ToolbarItem[];
5016
+ /** A control was pressed, by its `id`. */
5017
+ onAction?: (id: string) => void;
5018
+ }
5019
+ /**
5020
+ * A row of controls over a canvas or a panel — icon toggles named by their
5021
+ * tooltips, words, and rules between groups — on the control scale a step
5022
+ * below its bar (`sm`). What each control does is the caller's: it says which
5023
+ * was pressed.
5024
+ */
5025
+ declare const Toolbar: React$1.ForwardRefExoticComponent<ToolbarProps & React$1.RefAttributes<HTMLDivElement>>;
4493
5026
 
4494
5027
  interface TouchItem {
4495
5028
  layer: Layer;
@@ -4505,6 +5038,12 @@ interface TouchItem {
4505
5038
  interface TouchStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4506
5039
  items: TouchItem[];
4507
5040
  palette?: LayerPalette;
5041
+ /**
5042
+ * `row` (default) is one cell per layer on one line, above a trace. `column`
5043
+ * is one line per layer, the note right-aligned — how a 420px panel reads the
5044
+ * same summary, where six cells on a line would truncate every note.
5045
+ */
5046
+ orientation?: "row" | "column";
4508
5047
  }
4509
5048
  /**
4510
5049
  * What a run touched at all — one cell per layer, on one line.
@@ -4626,6 +5165,13 @@ interface TourProps {
4626
5165
  declare function Tour({ controller, steps, onExit, onComplete, badgeLabel, prevLabel, nextLabel, finishLabel, exitLabel, showExit, showCounter, showProgressBar, position, className, }: TourProps): React$1.JSX.Element | null;
4627
5166
 
4628
5167
  interface TraceListProps extends React$1.HTMLAttributes<HTMLDivElement> {
5168
+ /**
5169
+ * `default` is the run view: stripe, sequence, layer, duration. `progress` is
5170
+ * the trace a running answer streams — a dot per step (filled when done,
5171
+ * pulsing while it runs, hollow while it waits), the step in plain text, and
5172
+ * its timing or count at the right in mono.
5173
+ */
5174
+ variant?: "default" | "progress";
4629
5175
  children?: React$1.ReactNode;
4630
5176
  }
4631
5177
  /**
@@ -4638,7 +5184,7 @@ interface TraceListProps extends React$1.HTMLAttributes<HTMLDivElement> {
4638
5184
  *
4639
5185
  * Nothing here is an axis. The layer a step spent is a column on its row, so a
4640
5186
  * list nests for free and a second round is simply another row inside the box
4641
- * that holds it. The clock reading of the same trace is `LayerStrip`.
5187
+ * that holds it. The clock reading of the same trace is `Gantt`, by task or by layer.
4642
5188
  */
4643
5189
  declare const TraceList: React$1.ForwardRefExoticComponent<TraceListProps & React$1.RefAttributes<HTMLDivElement>>;
4644
5190
  interface TraceStepProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect" | "role"> {
@@ -4667,6 +5213,15 @@ interface TraceStepProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
4667
5213
  struck?: boolean;
4668
5214
  selected?: boolean;
4669
5215
  onSelect?: () => void;
5216
+ /**
5217
+ * Where the step is, in a `progress` list: `done`, `running`, `pending`,
5218
+ * `failed`, `waiting` on the reader, `retrying` after a failed attempt, or
5219
+ * `stopped` by the reader. Defaults to `done`. The run view says the same
5220
+ * with `dim` and `struck`.
5221
+ */
5222
+ status?: "done" | "running" | "pending" | "failed" | "waiting" | "retrying" | "stopped";
5223
+ /** Why a failed step failed, on a line under it in a `progress` list. */
5224
+ error?: React$1.ReactNode;
4670
5225
  }
4671
5226
  /**
4672
5227
  * One event of a run: a step, and everything that is true of it.
@@ -4756,64 +5311,169 @@ interface UnderDevelopmentProps extends VariantProps<typeof underDevelopmentVari
4756
5311
  }
4757
5312
  declare function UnderDevelopment({ title, description, iconSize, size, className, }: UnderDevelopmentProps): React$1.JSX.Element;
4758
5313
 
4759
- interface TypographyPreProps extends React$1.HTMLAttributes<HTMLPreElement> {
5314
+ /** One page in the strip — its tab label plus the content shown when active. */
5315
+ interface WorkbookPage {
5316
+ /** Stable identity — the key for mounting and the value passed to callbacks. */
5317
+ id: string;
5318
+ /** Tab label. */
5319
+ title: string;
5320
+ /** What renders in the body when this page is active (or, with
5321
+ * `keepMounted`, stays mounted-but-hidden while another page is active). */
5322
+ content: ReactNode;
5323
+ /** Optional leading icon in the tab. */
5324
+ icon?: ElementType;
5325
+ /** Disable selecting this tab. */
5326
+ disabled?: boolean;
5327
+ /** Extra classes for *this* tab button (win over the built-ins via
5328
+ * tailwind-merge) — e.g. a per-page accent. */
5329
+ tabClassName?: string;
5330
+ /** Inline styles for *this* tab button — e.g. a custom brand colour. */
5331
+ tabStyle?: CSSProperties;
5332
+ /** Draw an inline `×` on this tab (active or not) that calls the view's
5333
+ * `onClose`, in place of the caret menu — for a page with nothing to manage
5334
+ * but its own closing. Needs `onClose`. */
5335
+ closable?: boolean;
5336
+ }
5337
+ /**
5338
+ * One entry in the active tab's actions dropdown. The consumer supplies the list
5339
+ * (`pageMenuItems`); each item's `onSelect` is invoked with the id of the page
5340
+ * whose menu is open. This is how a host declares what a page can do — rename,
5341
+ * duplicate, remove, export, … — without the view knowing any of those verbs.
5342
+ */
5343
+ interface WorkbookPageMenuItem {
5344
+ /** Stable key for the row. */
5345
+ id: string;
5346
+ /** Row label. */
5347
+ label: string;
5348
+ /** Optional leading icon. */
5349
+ icon?: ElementType;
5350
+ /** Invoked with the active page's id when the row is chosen. */
5351
+ onSelect: (pageId: string) => void;
5352
+ /** Render with destructive (danger) styling — e.g. "Remove". */
5353
+ destructive?: boolean;
5354
+ /** Disable the row — a boolean, or a predicate on the page id (e.g. disable
5355
+ * "Remove" on the last remaining page). */
5356
+ disabled?: boolean | ((pageId: string) => boolean);
5357
+ /** Draw a separator immediately *before* this row (to group actions). */
5358
+ separatorBefore?: boolean;
5359
+ }
5360
+ /**
5361
+ * An extra icon button for the header's right-pinned control cluster (next to the
5362
+ * pager / `+`) — e.g. settings, about, help. Strip-level, not per-page: its
5363
+ * `onSelect` takes no page id. The consumer supplies the list via `headerActions`.
5364
+ */
5365
+ interface WorkbookAction {
5366
+ /** Stable key for the button. */
5367
+ id: string;
5368
+ /** Accessible label / tooltip. */
5369
+ label: string;
5370
+ /** Icon component. */
5371
+ icon: ElementType;
5372
+ /** Click handler. */
5373
+ onClick: () => void;
5374
+ /** Optional disabled state. */
5375
+ disabled?: boolean;
4760
5376
  }
5377
+ interface WorkbookProps {
5378
+ /** The pages, in tab order. */
5379
+ pages: WorkbookPage[];
5380
+ /** Id of the active page. */
5381
+ activeId: string;
5382
+ /** Select a page (tab click). */
5383
+ onSelect: (id: string) => void;
5384
+ /** Show a `+` (in the pager cluster) that requests a new page. Omit to hide it. */
5385
+ onAdd?: () => void;
5386
+ /** Which edge of the body the tab strip sits on — `'top'` (default) or
5387
+ * `'bottom'`, the spreadsheet look, with each tab open at its top. */
5388
+ tabPosition?: 'top' | 'bottom';
5389
+ /** Which end of the strip the pager cluster (prev / next / `+`) docks at —
5390
+ * `'start'` (left of the tabs) or `'end'` (right of the tabs). Default `'end'`. */
5391
+ pagerPosition?: 'start' | 'end';
5392
+ /** Extra icon buttons pinned to the far right of the strip (right of the pager)
5393
+ * — e.g. settings, about. Optional. */
5394
+ headerActions?: WorkbookAction[];
5395
+ /** Actions offered on the **active** tab via a caret dropdown. Omit (or pass an
5396
+ * empty list) to hide the caret entirely. */
5397
+ pageMenuItems?: WorkbookPageMenuItem[];
5398
+ /** Close a page — invoked by the `×` on a `closable` page. */
5399
+ onClose?: (id: string) => void;
5400
+ /** Tooltip / aria label for the add button. */
5401
+ addLabel?: string;
5402
+ /** Fold tabs that don't fit into a `…` menu at the end of the strip, instead of
5403
+ * scrolling the strip horizontally. Default `true` — the pager still steps
5404
+ * through every page, folded or not. */
5405
+ overflow?: boolean;
5406
+ /** Accessible label / tooltip for the overflow (`…`) trigger. */
5407
+ overflowLabel?: string;
5408
+ /** Keep every page mounted and hide the inactive ones (default `true`), so a
5409
+ * page's state survives tab switches — a canvas's camera and layout, a
5410
+ * board's scroll and fetched data. Set `false` to mount only the active page. */
5411
+ keepMounted?: boolean;
5412
+ /** Extra classes on the root column. */
5413
+ className?: string;
5414
+ /** Extra classes on the header (tab strip). */
5415
+ headerClassName?: string;
5416
+ /** Extra classes on the body. */
5417
+ bodyClassName?: string;
5418
+ /** Extra classes applied to *every* tab button (win over the built-ins via
5419
+ * tailwind-merge). Per-page `WorkbookPage.tabClassName` layers on top of this. */
5420
+ tabClassName?: string;
5421
+ /** Extra classes applied to the **active** tab only — override the default
5422
+ * folder-tab look (e.g. a different accent colour). */
5423
+ activeTabClassName?: string;
5424
+ }
5425
+ /**
5426
+ * A folder-tab strip over independent pages. The active tab carries a
5427
+ * caret dropdown of consumer-supplied {@link WorkbookPageMenuItem}s (rename /
5428
+ * duplicate / remove / …). Presentational and engine-agnostic — the consumer owns
5429
+ * the page list + active id and applies the reported intents. See the module
5430
+ * header for `keepMounted` and strip-renderer notes.
5431
+ */
5432
+ declare function Workbook({ pages, activeId, onSelect, onAdd, tabPosition, pagerPosition, headerActions, pageMenuItems, onClose, addLabel, overflow, overflowLabel, keepMounted, className, headerClassName, bodyClassName, tabClassName, activeTabClassName, }: WorkbookProps): React$1.JSX.Element;
5433
+
5434
+ type TypographyPreProps = React$1.HTMLAttributes<HTMLPreElement>;
4761
5435
  declare const TypographyPre: React$1.ForwardRefExoticComponent<TypographyPreProps & React$1.RefAttributes<HTMLPreElement>>;
4762
5436
 
4763
- interface TypographyListProps extends React$1.HTMLAttributes<HTMLUListElement> {
4764
- }
5437
+ type TypographyListProps = React$1.HTMLAttributes<HTMLUListElement>;
4765
5438
  declare const TypographyList: React$1.ForwardRefExoticComponent<TypographyListProps & React$1.RefAttributes<HTMLUListElement>>;
4766
5439
 
4767
- interface TypographyMutedProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
4768
- }
5440
+ type TypographyMutedProps = React$1.HTMLAttributes<HTMLParagraphElement>;
4769
5441
  declare const TypographyMuted: React$1.ForwardRefExoticComponent<TypographyMutedProps & React$1.RefAttributes<HTMLParagraphElement>>;
4770
5442
 
4771
- interface TypographySmallProps extends React$1.HTMLAttributes<HTMLElement> {
4772
- }
5443
+ type TypographySmallProps = React$1.HTMLAttributes<HTMLElement>;
4773
5444
  declare const TypographySmall: React$1.ForwardRefExoticComponent<TypographySmallProps & React$1.RefAttributes<HTMLElement>>;
4774
5445
 
4775
- interface TypographyLargeProps extends React$1.HTMLAttributes<HTMLDivElement> {
4776
- }
5446
+ type TypographyLargeProps = React$1.HTMLAttributes<HTMLDivElement>;
4777
5447
  declare const TypographyLarge: React$1.ForwardRefExoticComponent<TypographyLargeProps & React$1.RefAttributes<HTMLDivElement>>;
4778
5448
 
4779
- interface TypographyLeadProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
4780
- }
5449
+ type TypographyLeadProps = React$1.HTMLAttributes<HTMLParagraphElement>;
4781
5450
  declare const TypographyLead: React$1.ForwardRefExoticComponent<TypographyLeadProps & React$1.RefAttributes<HTMLParagraphElement>>;
4782
5451
 
4783
- interface TypographyInlineCodeProps extends React$1.HTMLAttributes<HTMLElement> {
4784
- }
5452
+ type TypographyInlineCodeProps = React$1.HTMLAttributes<HTMLElement>;
4785
5453
  declare const TypographyInlineCode: React$1.ForwardRefExoticComponent<TypographyInlineCodeProps & React$1.RefAttributes<HTMLElement>>;
4786
5454
 
4787
- interface TypographyBlockquoteProps extends React$1.BlockquoteHTMLAttributes<HTMLQuoteElement> {
4788
- }
5455
+ type TypographyBlockquoteProps = React$1.BlockquoteHTMLAttributes<HTMLQuoteElement>;
4789
5456
  declare const TypographyBlockquote: React$1.ForwardRefExoticComponent<TypographyBlockquoteProps & React$1.RefAttributes<HTMLQuoteElement>>;
4790
5457
 
4791
- interface TypographyPProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
4792
- }
5458
+ type TypographyPProps = React$1.HTMLAttributes<HTMLParagraphElement>;
4793
5459
  declare const TypographyP: React$1.ForwardRefExoticComponent<TypographyPProps & React$1.RefAttributes<HTMLParagraphElement>>;
4794
5460
 
4795
- interface TypographyH6Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4796
- }
5461
+ type TypographyH6Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4797
5462
  declare const TypographyH6: React$1.ForwardRefExoticComponent<TypographyH6Props & React$1.RefAttributes<HTMLHeadingElement>>;
4798
5463
 
4799
- interface TypographyH5Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4800
- }
5464
+ type TypographyH5Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4801
5465
  declare const TypographyH5: React$1.ForwardRefExoticComponent<TypographyH5Props & React$1.RefAttributes<HTMLHeadingElement>>;
4802
5466
 
4803
- interface TypographyH4Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4804
- }
5467
+ type TypographyH4Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4805
5468
  declare const TypographyH4: React$1.ForwardRefExoticComponent<TypographyH4Props & React$1.RefAttributes<HTMLHeadingElement>>;
4806
5469
 
4807
- interface TypographyH3Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4808
- }
5470
+ type TypographyH3Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4809
5471
  declare const TypographyH3: React$1.ForwardRefExoticComponent<TypographyH3Props & React$1.RefAttributes<HTMLHeadingElement>>;
4810
5472
 
4811
- interface TypographyH2Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4812
- }
5473
+ type TypographyH2Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4813
5474
  declare const TypographyH2: React$1.ForwardRefExoticComponent<TypographyH2Props & React$1.RefAttributes<HTMLHeadingElement>>;
4814
5475
 
4815
- interface TypographyH1Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4816
- }
5476
+ type TypographyH1Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4817
5477
  declare const TypographyH1: React$1.ForwardRefExoticComponent<TypographyH1Props & React$1.RefAttributes<HTMLHeadingElement>>;
4818
5478
 
4819
5479
  declare const Typography: {
@@ -4906,4 +5566,4 @@ interface UseOverflowItemsResult {
4906
5566
  */
4907
5567
  declare function useOverflowItems({ count, enabled, pinnedIndex, reserve, }: UseOverflowItemsOptions): UseOverflowItemsResult;
4908
5568
 
4909
- export { AbsenceNote, type AbsenceNoteProps, type AbsenceReason, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AddressChip, type AddressChipProps, type AddressTone, AgentChip, type AgentChipProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, type AppStatusBarProps, type Artifact, ArtifactTable, type ArtifactTableProps, AttemptClock, type AttemptClockProps, type AttemptRow, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, BarChartH, type BarChartHProps, BarChartV, type BarChartVProps, type BarDatum, type BaseNavProps, type Bound, BoundChip, type BoundChipProps, type BoundPalette, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, ButtonWithTooltip, type ButtonWithTooltipProps, CAST_ROLES, CannotAnswerCard, type CannotAnswerCardProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CastResolution, type CastRole, type CastSource, CastTable, type CastTableProps, ChatSession, ChatSessionActivityRow, type ChatSessionActivityRowProps, type ChatSessionActivityStatus, ChatSessionActivitySubLine, type ChatSessionActivitySubLineProps, ChatSessionComposer, type ChatSessionComposerProps, ChatSessionContextChip, type ChatSessionContextChipProps, ChatSessionDisclosure, type ChatSessionDisclosureProps, ChatSessionMessage, type ChatSessionMessageAction, ChatSessionMessageOptions, type ChatSessionMessageOptionsProps, type ChatSessionMessageProps, type ChatSessionMessageRole, type ChatSessionMessageStatus, ChatSessionProgressLine, type ChatSessionProgressLineProps, ChatSessionPromptRow, type ChatSessionPromptRowProps, type ChatSessionProps, ChatSessionStatusBar, type ChatSessionStatusBarProps, ChatSessionTaskGroup, type ChatSessionTaskGroupProps, ChatSessionTaskRow, type ChatSessionTaskRowProps, type ChatSessionTaskStatus, CitationList, type CitationListProps, CitationMarker, CitationRow, type CitationRowProps, ClampedText, type ClampedTextProps, ClarifyCard, type ClarifyCardProps, type ClarifyOption, type ColumnDatum, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, type ContextBarProps, type DeclaredAxes, DiagnosisCard, type DiagnosisCardProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffList, type DiffListProps, type DiffOp, DiffRow, type DiffRowProps, DivergingBar, type DivergingBarProps, type DivergingDatum, DotRating, type DotRatingProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type EgressClass, EgressList, type EgressListProps, EmissionCard, type EmissionCardProps, EmissionHeader, type EmissionHeaderProps, type EmissionKind, EmptyState, EmptyStateLock, type EmptyStateLockProps, type EmptyStateProps, ErrorBoundary, type ExchangeOption, ExchangeRecord, type ExchangeRecordProps, Eyebrow, type EyebrowProps, FilterBar, type FilterBarProps, FilterChip, type FilterChipProps, type HeatCell, type HeatState, HeatStrip, type HeatStripProps, HoverCard, HoverCardContent, HoverCardTrigger, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KindChip, type KindChipProps, type KnownAddressTone, type KnownBound, type KnownDiffOp, type KnownLayer, type KnownLayerItemState, type KnownMetricTone, type KnownParticipantVerdict, type KnownRunKind, type KnownRunStatus, type KnownTerminalLevel, type Layer, type LayerBand, type LayerBracket, LayerChip, type LayerChipProps, type LayerForecast, type LayerItem, type LayerItemState, type LayerPaint, type LayerPalette, type LayerPart, type LayerScale, type LayerSeam, LayerSection, type LayerSectionProps, LayerStrip, type LayerStripProps, Legend, LegendItem, type LegendItemProps, type LegendProps, type LegendSwatchKind, LensChip, type LensChipProps, LensRow, type LensRowProps, type LensUsage, Link, type LinkProps, MarkChip, type MarkChipProps, type MarkTone, type MatchCandidate, MatchPreview, type MatchPreviewProps, MenuItem, type MenuItemProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricGrid, type MetricGridProps, MetricTile, type MetricTileProps, type MetricTone, type Narrowing, NavBase, NavHorizontal, type NavHorizontalItem, NavHorizontalItems, type NavHorizontalItemsProps, type NavHorizontalProps, type NavItemConfig, NavItems, type NavItemsProps, type NavItemsVariant, type NavMenuItem, type NavSection, NavVertical, type NavVerticalItem, NavVerticalItems, type NavVerticalItemsProps, type NavVerticalProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NestedMenu, type NestedMenuProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PanelBox, type PanelBoxProps, PanelContent, type PanelContentProps, PanelStack, type PanelStackHandle, type PanelStackProps, type PanelStackSection, ParticipantRow, type ParticipantRowProps, type ParticipantVerdict, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, type PropertyListProps, PropertyRow, type PropertyRowProps, ProposalCard, type ProposalCardProps, RatingControl, type RatingControlProps, RecordHeader, type RecordHeaderProps, RecordPager, type RecordPagerProps, RepairNote, type RepairNoteProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, type RetryNoteProps, RichSelect, type RichSelectOption, type RichSelectProps, type RuleEgress, type RuleProperties, RuleRow, type RuleRowProps, type RuleSelect, type RunKind, RunRow, type RunRowProps, type RunStatus, RunStatusText, type RunStatusTextProps, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchInputSize, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SliceLine, SliceSummary, type SliceSummaryProps, Sparkline, type SparklineProps, Spinner, StatusDot, type StatusDotProps, type TabConfig, TabbedPanel, type TabbedPanelProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskGantt, TaskGanttDetailCard, type TaskGanttDetailCardProps, type TaskGanttDetailProps, type TaskGanttInstant, type TaskGanttProps, type TaskGanttSegment, type TaskGanttStatus, type TaskGanttTask, TaskNode, type TaskNodeProps, type TaskNodeTag, type TemplateOption, TemplatePicker, type TemplatePickerProps, Terminal, type TerminalLevel, TerminalLine, type TerminalLineKind, type TerminalLineProps, type TerminalProps, TimelineEntry, type TimelineEntryProps, TimelineFooter, type TimelineFooterProps, TimelineList, type TimelineListProps, type TimelineVariant, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TouchDirection, type TouchItem, TouchStrip, type TouchStripProps, Tour, type TourController, type TourProps, type TourReference, type TourStep, TraceGate, type TraceGateProps, TraceList, type TraceListProps, TraceLoop, type TraceLoopProps, TraceStep, type TraceStepProps, TreeItem, TreeView, type TreeViewProps, Typography, TypographyBlockquote, type TypographyBlockquoteProps, TypographyH1, type TypographyH1Props, TypographyH2, type TypographyH2Props, TypographyH3, type TypographyH3Props, TypographyH4, type TypographyH4Props, TypographyH5, type TypographyH5Props, TypographyH6, type TypographyH6Props, TypographyInlineCode, type TypographyInlineCodeProps, TypographyLarge, type TypographyLargeProps, TypographyLead, type TypographyLeadProps, TypographyList, type TypographyListProps, TypographyMuted, type TypographyMutedProps, TypographyP, type TypographyPProps, TypographyPre, type TypographyPreProps, TypographySmall, type TypographySmallProps, UnderDevelopment, type UnderDevelopmentProps, type UseOverflowItemsOptions, type UseOverflowItemsResult, type UseTourOptions, type Verdict, agentChipVariants, badgeVariants, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, describeSlice, stateLabel as layerItemLabel, layerLabel, layerPaint, linkVariants, navigationMenuTriggerStyle, TONE as runStatusTones, split as splitAddress, statusDotVariants, toggleVariants, useOverflowItems, useSidebar, useTour };
5569
+ export { AbsenceNote, type AbsenceNoteProps, type AbsenceReason, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AddressChip, type AddressChipProps, type AddressTone, AgentChip, type AgentChipProps, AgentHeader, type AgentHeaderProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, type AppStatusBarProps, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactTable, type ArtifactTableProps, Avatar, AvatarFallback, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarProps, Badge, type BadgeProps, type BaseNavProps, type Bound, BoundChip, type BoundChipProps, type BoundPalette, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, ButtonWithTooltip, type ButtonWithTooltipProps, CAST_ROLES, CannotAnswerCard, type CannotAnswerCardProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CastResolution, type CastRole, type CastSource, CastTable, type CastTableProps, CaveatNote, type CaveatNoteProps, ChatSession, ChatSessionActivityRow, type ChatSessionActivityRowProps, type ChatSessionActivityStatus, ChatSessionActivitySubLine, type ChatSessionActivitySubLineProps, ChatSessionCaret, ChatSessionComposer, type ChatSessionComposerProps, ChatSessionContextChip, type ChatSessionContextChipProps, ChatSessionDisclosure, ChatSessionDisclosureCode, type ChatSessionDisclosureProps, ChatSessionDisclosureSteps, type ChatSessionDisclosureStepsProps, ChatSessionMessage, type ChatSessionMessageAction, ChatSessionMessageOptions, type ChatSessionMessageOptionsProps, type ChatSessionMessageProps, type ChatSessionMessageRole, type ChatSessionMessageStatus, ChatSessionProgressLine, type ChatSessionProgressLineProps, ChatSessionPromptRow, type ChatSessionPromptRowProps, type ChatSessionProps, ChatSessionStatusBar, type ChatSessionStatusBarProps, ChatSessionTaskGroup, type ChatSessionTaskGroupProps, ChatSessionTaskRow, type ChatSessionTaskRowProps, type ChatSessionTaskStatus, CitationList, type CitationListProps, CitationMarker, CitationRow, type CitationRowProps, ClampedText, type ClampedTextProps, ClarifyActions, type ClarifyActionsProps, ClarifyCard, type ClarifyCardProps, ClarifyFootnote, type ClarifyFootnoteProps, type ClarifyOption, type ClarifyState, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, type ContextBarProps, DataReach, type DataReachModel, type DataReachProps, type DeclaredAxes, DiagnosisCard, type DiagnosisCardProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffList, type DiffListProps, type DiffOp, DiffRow, type DiffRowProps, DotRating, type DotRatingProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type EgressClass, EgressList, type EgressListProps, EmissionBody, EmissionCard, type EmissionCardProps, EmissionHeader, type EmissionHeaderProps, type EmissionKind, EmptyState, EmptyStateLock, type EmptyStateLockProps, type EmptyStateProps, ErrorBoundary, type ErrorBoundaryProps, type ExchangeOption, ExchangeRecord, type ExchangeRecordProps, ExpandToggle, type ExpandToggleProps, type ExpandedKeys, Eyebrow, type EyebrowProps, FilterBar, type FilterBarProps, FilterChip, type FilterChipOption, type FilterChipProps, FloatingPanel, type FloatingPanelProps, Gantt, type GanttBar, type GanttBracket, GanttDetailCard, type GanttDetailCardProps, type GanttDetailProps, type GanttInstant, type GanttProps, type GanttRow, type GanttSeam, type GanttStatus, HoverCard, HoverCardContent, HoverCardTrigger, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KindChip, type KindChipProps, type KnownAddressTone, type KnownBound, type KnownDiffOp, type KnownLayer, type KnownMetricTone, type KnownParticipantVerdict, type KnownRunKind, type KnownRunStatus, type KnownTerminalLevel, type Layer, LayerChip, type LayerChipProps, type LayerPaint, type LayerPalette, LayerSection, type LayerSectionProps, Legend, LegendItem, type LegendItemProps, type LegendProps, type LegendSwatchKind, LensRow, type LensRowProps, type LensUsage, Link, type LinkProps, LogCard, type LogCardProps, type LogFloor, type LogLine, MarkChip, type MarkChipProps, type MarkTone, type MatchCandidate, MatchPreview, type MatchPreviewProps, MenuItem, type MenuItemProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricGrid, type MetricGridProps, MetricTile, type MetricTileProps, type MetricTone, MultiFilterChip, type MultiFilterChipProps, type Narrowing, NavBase, NavHorizontal, type NavHorizontalItem, NavHorizontalItems, type NavHorizontalItemsProps, type NavHorizontalProps, type NavItemConfig, NavItems, type NavItemsProps, type NavItemsVariant, type NavMenuItem, type NavSection, NavVertical, type NavVerticalItem, NavVerticalItems, type NavVerticalItemsProps, type NavVerticalProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NestedMenu, type NestedMenuProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PanelBox, type PanelBoxProps, PanelContent, type PanelContentProps, PanelStack, type PanelStackHandle, type PanelStackProps, type PanelStackSection, ParticipantRow, type ParticipantRowProps, type ParticipantVerdict, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, type PropertyListProps, PropertyRow, type PropertyRowProps, ProposalCard, type ProposalCardProps, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, type QuestionnaireChoiceFigure, type QuestionnaireChoiceProps, QuestionnaireChoiceTitle, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, type QuestionnaireFigureTone, QuestionnaireInput, type QuestionnaireInputProps, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireProgressBar, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RatingControl, type RatingControlProps, RecordHeader, type RecordHeaderProps, RecordPager, type RecordPagerProps, RefusalCard, type RefusalCardProps, RepairNote, type RepairNoteProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, type RetryNoteProps, RichSelect, type RichSelectAction, type RichSelectOption, type RichSelectProps, type RichSelectToggle, type RuleEgress, type RuleProperties, RuleRow, type RuleRowProps, type RuleSelect, type RunKind, RunRow, type RunRowProps, type RunStatus, RunStatusText, type RunStatusTextProps, ScopeLine, type ScopeLineChoice, type ScopeLinePart, type ScopeLineProps, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchInputSize, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SliceLine, SliceSummary, type SliceSummaryProps, Spinner, Stack, type StackProps, StatusDot, type StatusDotProps, StatusIcon, type StatusIconProps, type StatusIconState, type TabConfig, TabbedPanel, type TabbedPanelProps, Table, TableBody, TableCaption, TableCell, type TableDensity, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskNode, type TaskNodeProps, type TaskNodeTag, type TemplateOption, TemplatePicker, type TemplatePickerProps, Terminal, type TerminalLevel, TerminalLine, type TerminalLineKind, type TerminalLineProps, type TerminalProps, TimelineEntry, type TimelineEntryProps, TimelineFooter, type TimelineFooterProps, TimelineList, type TimelineListProps, TimelineSection, type TimelineSectionProps, type TimelineVariant, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarAction, type ToolbarItem, type ToolbarProps, type ToolbarSeparator, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TouchItem, TouchStrip, type TouchStripProps, Tour, type TourController, type TourProps, type TourReference, type TourStep, TraceGate, type TraceGateProps, TraceList, type TraceListProps, TraceLoop, type TraceLoopProps, TraceStep, type TraceStepProps, TreeItem, TreeView, type TreeViewProps, Typography, TypographyBlockquote, type TypographyBlockquoteProps, TypographyH1, type TypographyH1Props, TypographyH2, type TypographyH2Props, TypographyH3, type TypographyH3Props, TypographyH4, type TypographyH4Props, TypographyH5, type TypographyH5Props, TypographyH6, type TypographyH6Props, TypographyInlineCode, type TypographyInlineCodeProps, TypographyLarge, type TypographyLargeProps, TypographyLead, type TypographyLeadProps, TypographyList, type TypographyListProps, TypographyMuted, type TypographyMutedProps, TypographyP, type TypographyPProps, TypographyPre, type TypographyPreProps, TypographySmall, type TypographySmallProps, UnderDevelopment, type UnderDevelopmentProps, type UseExpandedKeysOptions, type UseOverflowItemsOptions, type UseOverflowItemsResult, type UseTourOptions, type Verdict, Workbook, type WorkbookAction, type WorkbookPage, type WorkbookPageMenuItem, type WorkbookProps, agentChipVariants, avatarVariants, badgeVariants, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, describeSlice, formatRecords, layerLabel, layerPaint, linkVariants, navigationMenuTriggerStyle, ICON as runStatusIcons, TONE as runStatusTones, split as splitAddress, stackVariants, statusDotVariants, statusIconVariants, summarizeReach, toggleVariants, useExpandedKeys, useOverflowItems, useSidebar, useTour };