@invana/ui 0.0.31 → 0.0.33

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,27 @@ 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
+ fill?: boolean | null | undefined;
715
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
716
+ interface StackProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof stackVariants> {
717
+ }
718
+ declare const Stack: React$1.ForwardRefExoticComponent<StackProps & React$1.RefAttributes<HTMLDivElement>>;
719
+
601
720
  /**
602
721
  * The state of one thing, as a dot.
603
722
  *
@@ -617,7 +736,7 @@ declare function Spinner({ className, ...props }: React.ComponentProps<"svg">):
617
736
  * `motion-reduce` variant below honours by design.
618
737
  */
619
738
  declare const statusDotVariants: (props?: ({
620
- tone?: "success" | "warning" | "info" | "muted" | "error" | "running" | "queued" | null | undefined;
739
+ tone?: "info" | "success" | "warning" | "muted" | "error" | "running" | "queued" | null | undefined;
621
740
  size?: "xs" | "sm" | "lg" | "md" | null | undefined;
622
741
  } & class_variance_authority_types.ClassProp) | undefined) => string;
623
742
  interface StatusDotProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children">, VariantProps<typeof statusDotVariants> {
@@ -631,8 +750,51 @@ interface StatusDotProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "
631
750
  }
632
751
  declare const StatusDot: React$1.ForwardRefExoticComponent<StatusDotProps & React$1.RefAttributes<HTMLSpanElement>>;
633
752
 
753
+ declare const statusIconVariants: (props?: ({
754
+ state?: "alert" | "success" | "error" | "waiting" | "running" | "queued" | "question" | "cancelled" | null | undefined;
755
+ size?: "sm" | "md" | null | undefined;
756
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
757
+ type StatusIconState = "success" | "error" | "running" | "queued" | "waiting" | "question" | "alert" | "cancelled";
758
+ interface StatusIconProps extends Omit<React$1.SVGAttributes<SVGSVGElement>, "children">, VariantProps<typeof statusIconVariants> {
759
+ state: StatusIconState;
760
+ /**
761
+ * What this state is called — the accessible name and the tooltip.
762
+ *
763
+ * Pass it whenever the glyph stands alone, which is the reason to use one.
764
+ */
765
+ label?: string;
766
+ }
767
+ declare const StatusIcon: React$1.ForwardRefExoticComponent<StatusIconProps & React$1.RefAttributes<SVGSVGElement>>;
768
+
769
+ /**
770
+ * How much room a row gets. The type size never moves — a row is the root size
771
+ * at every density — only the height and the cell padding do.
772
+ *
773
+ * - `compact` — the control scale's `sm`, 26px: a journal, a trace, a
774
+ * step's output, a log.
775
+ * - `default` — `md`, 32px: a list in an application.
776
+ * - `comfortable` — `lg`, 40px: a table standing alone on a page, a settings
777
+ * list.
778
+ *
779
+ * The px are at a 13px root. Every density is a ratio of the root, like the
780
+ * type, so a site that sets a 16px root gets proportionally roomier rows.
781
+ */
782
+ type TableDensity = "compact" | "default" | "comfortable";
634
783
  declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & {
635
- density?: "default" | "compact";
784
+ density?: TableDensity;
785
+ /**
786
+ * No box, and nothing wasted on its outside: only the rules between rows
787
+ * are drawn, and the first and last columns sit flush with the text around
788
+ * the table. For a table inside a card, a panel or an answer, whose edge
789
+ * already frames it — a second border a few pixels in reads as a box
790
+ * inside a box.
791
+ */
792
+ seamless?: boolean;
793
+ /**
794
+ * Draw the box. Off for a wrapper that draws the box itself, as `DataTable`
795
+ * does. `seamless` draws no box either way.
796
+ */
797
+ bordered?: boolean;
636
798
  } & React$1.RefAttributes<HTMLTableElement>>;
637
799
  declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
638
800
  declare const TableBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
@@ -794,6 +956,168 @@ interface AgentChipProps extends React$1.HTMLAttributes<HTMLSpanElement>, Varian
794
956
  */
795
957
  declare const AgentChip: React$1.ForwardRefExoticComponent<AgentChipProps & React$1.RefAttributes<HTMLSpanElement>>;
796
958
 
959
+ /** One published model, and what this session may do with it. */
960
+ interface DataReachModel {
961
+ id: string;
962
+ /** `Accounts`, `Funding rounds`. */
963
+ name: string;
964
+ /**
965
+ * Records this session can see, after its slice — not the model's size.
966
+ * `null` or left out while the count is on its way.
967
+ */
968
+ records?: number | null;
969
+ /**
970
+ * What it may do — `["read"]`, `["read", "write"]` — or `"denied"`. An open
971
+ * vocabulary: a product that adds `export` passes it and it is written out.
972
+ */
973
+ access: string[] | "denied";
974
+ /** What the session's view of it is narrowed to — `time 2019 → now · axis announced_at`. */
975
+ slice?: React$1.ReactNode;
976
+ }
977
+ /** What a session can reach, summed: the models it may read and the records in them. */
978
+ declare function summarizeReach(models: DataReachModel[]): {
979
+ readable: number;
980
+ total: number;
981
+ records: number;
982
+ counting: boolean;
983
+ };
984
+ /** `1.2M`, `84K` — how a record count is written where room is short. */
985
+ declare const formatRecords: (n: number) => string;
986
+ interface DataReachProps extends React$1.HTMLAttributes<HTMLDivElement> {
987
+ models: DataReachModel[];
988
+ /**
989
+ * Ask for the denied models. Shown only when some are denied; it receives
990
+ * their ids. What a request does is the host's.
991
+ */
992
+ onRequestAccess?: (models: string[]) => void;
993
+ }
994
+ /**
995
+ * The data a session can reach: every published model, the records it can see
996
+ * in each, what it may do with them, and what its view is narrowed to.
997
+ *
998
+ * **Denied models are listed, muted, never left out.** What a session cannot
999
+ * see is what a bigger question would need, and a list of only what is open
1000
+ * would make the agent look more capable than it is. A count still on its way
1001
+ * says so (`counting…`) rather than drawing a zero.
1002
+ *
1003
+ * Counts are what *this session* sees after its slice — a model's full size
1004
+ * would overstate what the agent can answer from.
1005
+ */
1006
+ declare const DataReach: React$1.ForwardRefExoticComponent<DataReachProps & React$1.RefAttributes<HTMLDivElement>>;
1007
+
1008
+ /**
1009
+ * What of the Graph's data may accompany a call across the boundary.
1010
+ *
1011
+ * A **closed** set, because an open one is a list nobody can audit: a reader
1012
+ * has to know that what is not named cannot be sent, and that only holds if the
1013
+ * vocabulary is fixed.
1014
+ */
1015
+ type EgressClass = "type_names" | "property_names" | "the_question" | "property_values" | "record_ids" | "aggregates" | "everything";
1016
+ interface EgressListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1017
+ /** The destination this governs — `llm/anthropic-prod/claude-opus-5`. */
1018
+ to: string;
1019
+ /** What may be sent. **Empty is the default and means nothing may.** */
1020
+ classes?: EgressClass[];
1021
+ /**
1022
+ * What was actually withheld on a real crossing. Absent reads as a **rule**
1023
+ * at rest; present reads as an **event** — see the note below.
1024
+ */
1025
+ cut?: EgressClass[];
1026
+ }
1027
+ /**
1028
+ * Per destination: what may be sent, and what was cut.
1029
+ *
1030
+ * **Egress is declared per destination, on the rule that matched it.** A
1031
+ * run-wide setting would have to be the strictest of its destinations, which is
1032
+ * the least useful one — so this component is always about *one* address, and a
1033
+ * surface showing several renders several.
1034
+ *
1035
+ * **Reading a thing and sending it are different permissions.** A query may
1036
+ * filter on `Deal.revenue` while the value never enters a prompt — used to
1037
+ * **compute**, not to **reason**. That is the distinction this list exists to
1038
+ * make visible, and it is why `property_values` being absent is worth as much
1039
+ * screen as the classes that are present.
1040
+ *
1041
+ * **`cut` is what makes it evidence rather than configuration.** The same
1042
+ * component states the bound before a run and what the bound actually withheld
1043
+ * after one; without `cut`, a reader cannot tell a rule that did work from a
1044
+ * rule that never bit.
1045
+ *
1046
+ * An empty `classes` is drawn in words, because the lens default is `[]` and a
1047
+ * blank row would read as *not configured* rather than *nothing may leave*.
1048
+ */
1049
+ declare const EgressList: React$1.ForwardRefExoticComponent<EgressListProps & React$1.RefAttributes<HTMLDivElement>>;
1050
+
1051
+ interface AgentHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1052
+ /** What the session is — its name, or a switcher that lists the others. */
1053
+ title: React$1.ReactNode;
1054
+ /** Who is answering — `Analyst`, `v2`, `sonnet-5.5`. */
1055
+ agent?: {
1056
+ name: string;
1057
+ version?: string;
1058
+ model?: string;
1059
+ };
1060
+ /** Where the session is — `running…`, `needs input (1)`, `idle`. `short` is said under 420px. */
1061
+ status?: {
1062
+ tone: NonNullable<StatusDotProps["tone"]>;
1063
+ label: string;
1064
+ short?: string;
1065
+ };
1066
+ /** At the end of the first line — a menu of the session's actions, a close. */
1067
+ actions?: React$1.ReactNode;
1068
+ /** The data the session can reach: the whole world it opened on, or an access group's share. */
1069
+ access?: {
1070
+ kind: "world" | "group";
1071
+ label: string;
1072
+ models?: DataReachModel[];
1073
+ };
1074
+ /** The lens the session reads through — `Funding watch`. */
1075
+ lens?: string;
1076
+ /** Tokens spent of the session's budget. Tokens, never money. */
1077
+ budget?: {
1078
+ used: number;
1079
+ limit: number;
1080
+ };
1081
+ /** The rules it runs under: the strictest as the badge, every one in its popover. */
1082
+ governance?: {
1083
+ summary: string;
1084
+ rules?: {
1085
+ label: string;
1086
+ value: string;
1087
+ }[];
1088
+ egress?: {
1089
+ to: string;
1090
+ classes?: EgressClass[];
1091
+ }[];
1092
+ };
1093
+ /** The marks before the access, the lens and the governance badge. The kit ships no icons. */
1094
+ icons?: {
1095
+ world?: React$1.ReactNode;
1096
+ group?: React$1.ReactNode;
1097
+ lens?: React$1.ReactNode;
1098
+ governance?: React$1.ReactNode;
1099
+ };
1100
+ /** Ask for the denied models — their ids. Shown in the data reach when some are denied. */
1101
+ onRequestAccess?: (models: string[]) => void;
1102
+ /** The host's settings, at a section — `data`, `governance`. Shown as a link in each popover. */
1103
+ onOpenSettings?: (section: "data" | "governance") => void;
1104
+ }
1105
+ /**
1106
+ * The header of an agent's session: who is answering and where it stands,
1107
+ * then what it can reach and the rules it runs under.
1108
+ *
1109
+ * Line one is the session, the agent and its status, and the host's actions.
1110
+ * Line two — drawn when any of it is given — is the data reach (opens every
1111
+ * model, the records this session sees in each, and what it may do), the
1112
+ * lens, the token budget and the governance badge (opens the rules and what
1113
+ * may leave, per destination). Under 420px of its own width the second line
1114
+ * keeps its marks and counts and drops the words.
1115
+ *
1116
+ * Plain props, no conversation: pass it as a `ChatSession`'s `header`, or
1117
+ * over a run view or a board that shows the same session.
1118
+ */
1119
+ declare const AgentHeader: React$1.ForwardRefExoticComponent<AgentHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
1120
+
797
1121
  declare const stateVariants: (props?: ({
798
1122
  tone?: "active" | "error" | "running" | "draft" | "review" | null | undefined;
799
1123
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -806,7 +1130,7 @@ interface AppStatusBarProps extends React$1.HTMLAttributes<HTMLDivElement>, Vari
806
1130
  end?: React$1.ReactNode;
807
1131
  }
808
1132
  /**
809
- * The 25px line at the bottom of the window.
1133
+ * The `sm` line at the bottom of the window — a control's height.
810
1134
  *
811
1135
  * It describes the **session**, not the screen: what is loaded, what state it
812
1136
  * is in, which build is running. That is why it barely changes as you navigate
@@ -838,9 +1162,18 @@ interface Artifact {
838
1162
  * existed and is gone* is a different fact from *no file was written*.
839
1163
  */
840
1164
  gone?: boolean;
1165
+ /** A glyph before the name, in `list` — the file's type. Passed in: the kit ships no icon set. */
1166
+ icon?: React$1.ReactNode;
841
1167
  }
842
1168
  interface ArtifactTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
843
1169
  files: Artifact[];
1170
+ /**
1171
+ * `table` (default) — the step's full record: header, kind, written, and an
1172
+ * Open / Download per row. `list` — name, size and digest in bare rows, for
1173
+ * the files an answer hands over, where the header and buttons would
1174
+ * outweigh two or three names.
1175
+ */
1176
+ variant?: "table" | "list";
844
1177
  onOpen?: (file: Artifact, index: number) => void;
845
1178
  onDownload?: (file: Artifact, index: number) => void;
846
1179
  /** Anything else a row offers. Replaces the two defaults when given. */
@@ -863,145 +1196,18 @@ interface ArtifactTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
863
1196
  * wrote an empty file.
864
1197
  */
865
1198
  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;
1199
+ interface ArtifactCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1200
+ file: Artifact;
1201
+ /** The line under the name — `48 KB · kept for 7 days`, `412 rows · missing store code`. */
1202
+ note?: React$1.ReactNode;
1203
+ /** At the right — a `Download` button, or a tag saying what the file is. */
1204
+ aside?: React$1.ReactNode;
992
1205
  }
993
1206
  /**
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.
1207
+ * One file, as the whole of what an answer hands over: its type, its name,
1208
+ * what it holds and what to do with it. Several files are an `ArtifactTable`.
1003
1209
  */
1004
- declare const BarChartV: React$1.ForwardRefExoticComponent<BarChartVProps & React$1.RefAttributes<HTMLDivElement>>;
1210
+ declare const ArtifactCard: React$1.ForwardRefExoticComponent<ArtifactCardProps & React$1.RefAttributes<HTMLDivElement>>;
1005
1211
 
1006
1212
  /**
1007
1213
  * The capabilities Invana ships today — **suggestions, not a limit.**
@@ -1092,6 +1298,11 @@ interface CannotAnswerCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1092
1298
  remedy?: React$1.ReactNode;
1093
1299
  /** Overrides the label. Defaults to `cannot answer`. */
1094
1300
  label?: React$1.ReactNode;
1301
+ /**
1302
+ * `info` for an answer given in part: the card says which part the data
1303
+ * does not hold, above the answer that covers the rest.
1304
+ */
1305
+ tone?: "default" | "info";
1095
1306
  }
1096
1307
  /**
1097
1308
  * The graph does not hold what was asked.
@@ -1117,7 +1328,7 @@ declare const CannotAnswerCard: React$1.ForwardRefExoticComponent<CannotAnswerCa
1117
1328
  *
1118
1329
  * `agent` is the **spine**: the runtime itself, which does the participating
1119
1330
  * rather than being a participant, and is never governed. Nothing in this file
1120
- * knows that — a band says so with `spine`, see `LayerStrip`.
1331
+ * knows that — the surface that draws the layers says so.
1121
1332
  */
1122
1333
  type KnownLayer = "graph_data" | "llm" | "third_party" | "cache" | "human" | "agent";
1123
1334
  /**
@@ -1219,7 +1430,7 @@ interface LayerChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "
1219
1430
  /**
1220
1431
  * One class of participant, as a swatch and a name.
1221
1432
  *
1222
- * It heads a `LayerSection`, bands a run's `LayerStrip`, and counts a layer in
1433
+ * It heads a `LayerSection`, names a layer's row in a run's `Gantt`, and counts a layer in
1223
1434
  * the Worlds drawer — everywhere a reader has to know *what kind of thing this
1224
1435
  * is* before reading which one.
1225
1436
  *
@@ -1325,6 +1536,8 @@ interface CastTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "c
1325
1536
  */
1326
1537
  resolved?: CastResolution[];
1327
1538
  readOnly?: boolean;
1539
+ /** Passed to the table: no box, outer columns flush — for a cast inside a panel. */
1540
+ seamless?: boolean;
1328
1541
  }
1329
1542
  /**
1330
1543
  * `role → resolves to → why this one`, four fixed rows.
@@ -1347,6 +1560,30 @@ interface CastTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "c
1347
1560
  */
1348
1561
  declare const CastTable: React$1.ForwardRefExoticComponent<CastTableProps & React$1.RefAttributes<HTMLDivElement>>;
1349
1562
 
1563
+ interface CaveatNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
1564
+ /** The kind of caveat, one word — `indicative`, `association`, `simulation`. */
1565
+ label: React$1.ReactNode;
1566
+ /** What was excluded, imputed or assumed, and how far to trust the figure. */
1567
+ children?: React$1.ReactNode;
1568
+ /**
1569
+ * `warning` (the default) qualifies the figure. `info` says what was filled
1570
+ * in rather than measured; `destructive` says the data itself is wrong or late.
1571
+ */
1572
+ tone?: "warning" | "info" | "destructive";
1573
+ /** A link after the text, to what the caveat is about — `Show the 4 stores`. */
1574
+ action?: React$1.ReactNode;
1575
+ onAction?: () => void;
1576
+ }
1577
+ /**
1578
+ * How far to trust the figure above it.
1579
+ *
1580
+ * What was excluded, imputed or assumed, said beside the answer rather than
1581
+ * in a footnote, and labelled with its kind so a reader scanning several
1582
+ * answers can tell an association from a simulation at a glance. Tinted, not
1583
+ * bordered: it qualifies the answer, it is not an error.
1584
+ */
1585
+ declare const CaveatNote: React$1.ForwardRefExoticComponent<CaveatNoteProps & React$1.RefAttributes<HTMLDivElement>>;
1586
+
1350
1587
  interface ChatSessionProps {
1351
1588
  /** The message list — typically `<ChatSessionMessage />` nodes. */
1352
1589
  children?: React$1.ReactNode;
@@ -1375,6 +1612,8 @@ interface ChatSessionProps {
1375
1612
  * ResizeObserver watches the message column), but only while the user is already
1376
1613
  * near the bottom — scroll up to read history and the view stays put. Layout and
1377
1614
  * scroll behaviour only; it owns no session state.
1615
+ *
1616
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1378
1617
  */
1379
1618
  declare function ChatSession({ children, footer, emptyState, autoScrollKey, followThreshold, className, bodyClassName, }: ChatSessionProps): React$1.JSX.Element;
1380
1619
 
@@ -1412,6 +1651,8 @@ interface ChatSessionMessageProps {
1412
1651
  *
1413
1652
  * Presentational only — no data fetching or state — so it composes over any
1414
1653
  * backend.
1654
+ *
1655
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1415
1656
  */
1416
1657
  declare function ChatSessionMessage({ role, children, status, icon, meta, actions, footer, className, }: ChatSessionMessageProps): React$1.JSX.Element;
1417
1658
 
@@ -1447,6 +1688,8 @@ interface ChatSessionMessageOptionsProps {
1447
1688
  *
1448
1689
  * Purely presentational and icon-agnostic: you supply the icons and handlers, so
1449
1690
  * it slots into any backend.
1691
+ *
1692
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1450
1693
  */
1451
1694
  declare function ChatSessionMessageOptions({ actions, className, }: ChatSessionMessageOptionsProps): React$1.JSX.Element;
1452
1695
 
@@ -1487,6 +1730,8 @@ interface ChatSessionComposerProps {
1487
1730
  * Deliberately dependency-free — no query-language editor or provider selects
1488
1731
  * are baked in. Drop your own controls into `toolbarStart` / `toolbarEnd` (and
1489
1732
  * a QL editor into a custom layout if you need one).
1733
+ *
1734
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1490
1735
  */
1491
1736
  declare function ChatSessionComposer({ value, onChange, onSend, onStop, isRunning, disabled, placeholder, toolbarStart, toolbarEnd, attachments, sendIcon, stopIcon, sendDisabled, className, textareaClassName, }: ChatSessionComposerProps): React$1.JSX.Element;
1492
1737
 
@@ -1495,6 +1740,8 @@ declare function ChatSessionComposer({ value, onChange, onSend, onStop, isRunnin
1495
1740
  * status dot, prompt caret, spinner — occupies this fixed-width column so all
1496
1741
  * body text starts on one left edge ({@link ChatSessionPromptRow},
1497
1742
  * {@link ChatSessionProgressLine} and this row all use it).
1743
+ *
1744
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1498
1745
  */
1499
1746
  declare const chatSessionGutterClass = "w-3.5 shrink-0 flex justify-center";
1500
1747
  /**
@@ -1526,6 +1773,8 @@ interface ChatSessionActivityRowProps {
1526
1773
  * `actions` for the re-run / view-query / copy / vote toolbar.
1527
1774
  *
1528
1775
  * Presentational only — no data fetching or state.
1776
+ *
1777
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1529
1778
  */
1530
1779
  declare function ChatSessionActivityRow({ status, marker, children, actions, meta, footer, className, }: ChatSessionActivityRowProps): React$1.JSX.Element;
1531
1780
  interface ChatSessionActivitySubLineProps {
@@ -1538,6 +1787,8 @@ interface ChatSessionActivitySubLineProps {
1538
1787
  * An indented detail line under an activity row — "└ Backgrounded agent
1539
1788
  * (↓ to manage)", an interruption note, a one-line result. Render inside the
1540
1789
  * row's `footer` (or directly after the body in `children`).
1790
+ *
1791
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1541
1792
  */
1542
1793
  declare function ChatSessionActivitySubLine({ elbow, children, className, }: ChatSessionActivitySubLineProps): React$1.JSX.Element;
1543
1794
 
@@ -1558,6 +1809,8 @@ interface ChatSessionPromptRowProps {
1558
1809
  * Full bleed assumes the default `ChatSession` body padding (`p-3`) — the
1559
1810
  * negative margins here cancel it. If you override `bodyClassName` with a
1560
1811
  * different horizontal padding, pass matching `-mx-*`/`px-*` via `className`.
1812
+ *
1813
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1561
1814
  */
1562
1815
  declare function ChatSessionPromptRow({ children, caret, meta, className, }: ChatSessionPromptRowProps): React$1.JSX.Element;
1563
1816
 
@@ -1574,6 +1827,8 @@ interface ChatSessionProgressLineProps {
1574
1827
  * A transient "work in flight" line in the transcript — spinner in the shared
1575
1828
  * gutter, label, and an optional right-aligned elapsed readout. Replace it with
1576
1829
  * a settled {@link ChatSessionActivityRow} when the run finishes.
1830
+ *
1831
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1577
1832
  */
1578
1833
  declare function ChatSessionProgressLine({ children, spinner, elapsed, className, }: ChatSessionProgressLineProps): React$1.JSX.Element;
1579
1834
 
@@ -1589,6 +1844,13 @@ interface ChatSessionDisclosureProps {
1589
1844
  /** Uncontrolled initial state. Defaults to closed. */
1590
1845
  defaultOpen?: boolean;
1591
1846
  onOpenChange?: (open: boolean) => void;
1847
+ /**
1848
+ * `card` (default) is a bordered block under an activity row. `inline` is a
1849
+ * bare line inside an answer — `▸ method` with its meta at the right in mono —
1850
+ * that opens onto a preformatted code block when its content is text, or onto
1851
+ * the content as given — code, the facts under it, a list of steps — when not.
1852
+ */
1853
+ variant?: "card" | "inline";
1592
1854
  /** Custom chevron node; the default "▸" rotates when open. */
1593
1855
  chevron?: React$1.ReactNode;
1594
1856
  className?: string;
@@ -1602,8 +1864,30 @@ interface ChatSessionDisclosureProps {
1602
1864
  * `overflow-x-auto` body, matching the transcript's nested-detail grammar.
1603
1865
  *
1604
1866
  * Controlled (`open` + `onOpenChange`) or uncontrolled (`defaultOpen`).
1867
+ *
1868
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1869
+ */
1870
+ declare function ChatSessionDisclosure({ label, meta, children, open, defaultOpen, onOpenChange, variant, chevron, className, contentClassName, }: ChatSessionDisclosureProps): React$1.JSX.Element;
1871
+ /**
1872
+ * The code an inline disclosure opens onto, when it opens onto more than code:
1873
+ * a query, a formula, a model. `<strong>` inside marks its keywords.
1874
+ *
1875
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1605
1876
  */
1606
- declare function ChatSessionDisclosure({ label, meta, children, open, defaultOpen, onOpenChange, chevron, className, contentClassName, }: ChatSessionDisclosureProps): React$1.JSX.Element;
1877
+ declare function ChatSessionDisclosureCode({ className, ...props }: React$1.HTMLAttributes<HTMLPreElement>): React$1.JSX.Element;
1878
+ interface ChatSessionDisclosureStepsProps extends React$1.OlHTMLAttributes<HTMLOListElement> {
1879
+ /** Each step in the order it ran, with its count or time at the right. */
1880
+ steps: {
1881
+ label: React$1.ReactNode;
1882
+ detail?: React$1.ReactNode;
1883
+ }[];
1884
+ }
1885
+ /**
1886
+ * A method of several steps, numbered in the order they ran.
1887
+ *
1888
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1889
+ */
1890
+ declare function ChatSessionDisclosureSteps({ steps, className, ...props }: ChatSessionDisclosureStepsProps): React$1.JSX.Element;
1607
1891
 
1608
1892
  /**
1609
1893
  * Lifecycle of a background task / session. Mapped to the status tokens from
@@ -1629,7 +1913,9 @@ interface ChatSessionTaskRowProps {
1629
1913
  /**
1630
1914
  * One background task / agent / session: status dot, bold name, truncating
1631
1915
  * description, right-aligned meta. Used both in the pinned strip under a
1632
- * transcript and in the grouped task dashboard ({@link ChatSessionTaskGroup}).
1916
+ * transcript and in the grouped task board ({@link ChatSessionTaskGroup}).
1917
+ *
1918
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1633
1919
  */
1634
1920
  declare function ChatSessionTaskRow({ status, indicator, name, description, meta, onClick, className, }: ChatSessionTaskRowProps): React$1.JSX.Element;
1635
1921
  interface ChatSessionTaskGroupProps {
@@ -1641,7 +1927,9 @@ interface ChatSessionTaskGroupProps {
1641
1927
  }
1642
1928
  /**
1643
1929
  * A titled section of task rows — the "Needs input" / "Completed" groups of a
1644
- * session dashboard.
1930
+ * session board.
1931
+ *
1932
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1645
1933
  */
1646
1934
  declare function ChatSessionTaskGroup({ heading, children, className, }: ChatSessionTaskGroupProps): React$1.JSX.Element;
1647
1935
 
@@ -1656,6 +1944,8 @@ interface ChatSessionStatusBarProps {
1656
1944
  * The slim bar under a chat session's composer — mode indicator, view
1657
1945
  * switches, agent counts, keyboard hints. Two slots, muted by default; put
1658
1946
  * interactive elements (buttons, toggles) straight into the slots.
1947
+ *
1948
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1659
1949
  */
1660
1950
  declare function ChatSessionStatusBar({ start, end, className, }: ChatSessionStatusBarProps): React$1.JSX.Element;
1661
1951
 
@@ -1679,19 +1969,46 @@ interface ChatSessionContextChipProps extends React$1.HTMLAttributes<HTMLDivElem
1679
1969
  *
1680
1970
  * It states the binding in words. A highlight on the canvas alone would leave
1681
1971
  * the reader guessing what scope their question has.
1972
+ *
1973
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1682
1974
  */
1683
1975
  declare function ChatSessionContextChip({ icon, onDismiss, dismissLabel, className, children, ...props }: ChatSessionContextChipProps): React$1.JSX.Element;
1684
1976
 
1977
+ /**
1978
+ * The cursor at the end of text that is still being written. A block, not a
1979
+ * bar: it reads as the place the next word lands.
1980
+ *
1981
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1982
+ */
1983
+ declare function ChatSessionCaret({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
1984
+
1685
1985
  interface CitationRowProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "children"> {
1686
1986
  /** What kind of record this is — `Article`, `Bar`, `Event`. */
1687
- kind: React$1.ReactNode;
1987
+ kind?: React$1.ReactNode;
1988
+ /**
1989
+ * The number an answer cites it by — `1` renders as `[1]`. Numbered rows are
1990
+ * how an answer's markers are resolved, so the number leads the row.
1991
+ */
1992
+ marker?: React$1.ReactNode;
1688
1993
  /** The record itself, in the words it was stored with. */
1689
1994
  children?: React$1.ReactNode;
1690
1995
  /** Where it came from — the dataset, the publisher, the timestamp. */
1691
1996
  source?: React$1.ReactNode;
1997
+ /** How many records it contributed — `3,406`, `5 days`. Mono, at the right. */
1998
+ count?: React$1.ReactNode;
1999
+ /** A second line under the record — what kind of source it is and how fresh: `table · loaded 28 Sep`. */
2000
+ detail?: React$1.ReactNode;
2001
+ /** The row the reader is on — the one a lit marker in the prose points to. */
2002
+ active?: boolean;
1692
2003
  }
1693
2004
  interface CitationListProps extends React$1.HTMLAttributes<HTMLUListElement> {
1694
2005
  children?: React$1.ReactNode;
2006
+ /**
2007
+ * A line under the sources. `warning` when it says the answer rests on no
2008
+ * records — which is said out loud, never left for the zeros to imply.
2009
+ */
2010
+ note?: React$1.ReactNode;
2011
+ noteTone?: "muted" | "warning";
1695
2012
  }
1696
2013
  /**
1697
2014
  * The records an answer rests on.
@@ -1747,21 +2064,56 @@ interface ClarifyOption {
1747
2064
  detail?: React$1.ReactNode;
1748
2065
  disabled?: boolean;
1749
2066
  }
2067
+ /**
2068
+ * Where the ask is in its life. `pending` waits on the reader; the rest are
2069
+ * settled and read-only. Open: a surface may name its own.
2070
+ */
2071
+ type ClarifyState = "pending" | "answered" | "skipped" | "superseded" | "expired" | (string & {});
1750
2072
  interface ClarifyCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
2073
+ /** @default "pending" */
2074
+ state?: ClarifyState;
2075
+ /** The header's word while the ask waits — `confirm` for a yes-or-no. @default "question" */
2076
+ kind?: React$1.ReactNode;
1751
2077
  /** Which step asked — `understand`. */
1752
2078
  step?: React$1.ReactNode;
1753
2079
  /** How long it has been waiting — `parked 14 min`. */
1754
2080
  waiting?: React$1.ReactNode;
2081
+ /** When it settled — `just now`, `2 min ago`. At the header's right, after `waiting`. */
2082
+ time?: React$1.ReactNode;
1755
2083
  /** The question. One sentence. */
1756
- question: React$1.ReactNode;
1757
- options: ClarifyOption[];
2084
+ question?: React$1.ReactNode;
2085
+ /** The choices, as one Questionnaire item. Ignored when `children` is given. */
2086
+ options?: ClarifyOption[];
1758
2087
  value?: string;
1759
2088
  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;
2089
+ /**
2090
+ * Any other control, in place of `options` — a `Questionnaire` of several
2091
+ * steps, a form, a summary of the answers.
2092
+ */
2093
+ children?: React$1.ReactNode;
2094
+ /** Why these options and not others, or where a default came from. */
2095
+ footnote?: React$1.ReactNode;
2096
+ /** The confirm control. */
2097
+ actions?: React$1.ReactNode;
2098
+ /** Which edge the actions sit on. @default "start" */
2099
+ actionsAlign?: "start" | "end";
2100
+ }
2101
+ interface ClarifyFootnoteProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
2102
+ children?: React$1.ReactNode;
2103
+ }
2104
+ /** The line under an ask: why these options, or where a default came from. *
2105
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
2106
+ */
2107
+ declare const ClarifyFootnote: React$1.ForwardRefExoticComponent<ClarifyFootnoteProps & React$1.RefAttributes<HTMLParagraphElement>>;
2108
+ interface ClarifyActionsProps extends React$1.HTMLAttributes<HTMLDivElement> {
2109
+ /** Which edge the actions sit on. @default "start" */
2110
+ align?: "start" | "end";
2111
+ children?: React$1.ReactNode;
1764
2112
  }
2113
+ /** The row of controls that answers, skips or changes an ask. *
2114
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
2115
+ */
2116
+ declare const ClarifyActions: React$1.ForwardRefExoticComponent<ClarifyActionsProps & React$1.RefAttributes<HTMLDivElement>>;
1765
2117
  /**
1766
2118
  * The run stopped and asked, rather than guessing.
1767
2119
  *
@@ -1774,6 +2126,14 @@ interface ClarifyCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
1774
2126
  * holds, which is why `detail` exists and why `footnote` is worth saying out
1775
2127
  * loud. A card that offered invented options would undo the grounding the rest
1776
2128
  * of the system is built on.
2129
+ *
2130
+ * **One card through the ask's whole life.** `pending` offers the choice; once
2131
+ * `answered`, `skipped`, `superseded` or `expired` the header says so and the
2132
+ * body is read-only. The body is `options` for a choice, or any control passed
2133
+ * as `children` — a `Questionnaire` of several steps (with its progress and
2134
+ * Skip / Next), a form, or the answers of a finished multi-step ask.
2135
+ *
2136
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1777
2137
  */
1778
2138
  declare const ClarifyCard: React$1.ForwardRefExoticComponent<ClarifyCardProps & React$1.RefAttributes<HTMLDivElement>>;
1779
2139
 
@@ -1792,7 +2152,8 @@ interface ContextBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
1792
2152
  hint?: React$1.ReactNode;
1793
2153
  }
1794
2154
  /**
1795
- * The 28px bar between a panel and the status bar.
2155
+ * The `sm` bar between a panel and the status bar — a control's height, so
2156
+ * it lines up with the controls it sits beside.
1796
2157
  *
1797
2158
  * It answers "where am I, and what is true right now" — the view switch, the
1798
2159
  * counts that matter for the work in front of you, and the shortcut that
@@ -1856,100 +2217,19 @@ interface DiffListProps extends React$1.HTMLAttributes<HTMLUListElement> {
1856
2217
  declare const DiffList: React$1.ForwardRefExoticComponent<DiffListProps & React$1.RefAttributes<HTMLUListElement>>;
1857
2218
  declare const DiffRow: React$1.ForwardRefExoticComponent<DiffRowProps & React$1.RefAttributes<HTMLLIElement>>;
1858
2219
 
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
2220
  /**
1946
2221
  * How an answer's records are rendered. A kind is a *body inside* the emission
1947
2222
  * card, never a block of its own (DS9) — so this names the body, it does not
1948
2223
  * pick a different container.
2224
+ *
2225
+ * Open: the names below are the common ones, and an assistant answer labels
2226
+ * its card in the grammar's own words — `ranked`, `scenario`, `model check`.
1949
2227
  */
1950
- type EmissionKind = "metric" | "table" | "chart" | "subgraph" | "prose" | "empty" | "html";
1951
- interface EmissionHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
2228
+ type EmissionKind = "metric" | "table" | "chart" | "subgraph" | "prose" | "empty" | "html" | (string & {});
2229
+ interface EmissionHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1952
2230
  kind: EmissionKind;
2231
+ /** What the card shows, in words — `Apex Components, weekly lead time`. */
2232
+ title?: React$1.ReactNode;
1953
2233
  /** The projection template that rendered it — `table-compact@3`. Shown in mono. */
1954
2234
  template?: React$1.ReactNode;
1955
2235
  /**
@@ -1966,6 +2246,7 @@ interface EmissionHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
1966
2246
  actions?: React$1.ReactNode;
1967
2247
  }
1968
2248
  interface EmissionCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title">, Omit<EmissionHeaderProps, keyof React$1.HTMLAttributes<HTMLDivElement>> {
2249
+ title?: React$1.ReactNode;
1969
2250
  /** Set false to render the body alone, where a surface supplies its own header. */
1970
2251
  showHeader?: boolean;
1971
2252
  children?: React$1.ReactNode;
@@ -1977,6 +2258,8 @@ interface EmissionCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
1977
2258
  * result, a scheduled answer (DS7). It is exported on its own so a surface that
1978
2259
  * already owns its container can still show the same header rather than
1979
2260
  * inventing a second one that drifts.
2261
+ *
2262
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1980
2263
  */
1981
2264
  declare const EmissionHeader: React$1.ForwardRefExoticComponent<EmissionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
1982
2265
  /**
@@ -1991,11 +2274,21 @@ declare const EmissionHeader: React$1.ForwardRefExoticComponent<EmissionHeaderPr
1991
2274
  * object (DS6). It does not know what an Observation is, and it does not fetch,
1992
2275
  * re-render or re-query anything; switching templates is the caller's job,
1993
2276
  * handed in through `actions`.
2277
+ *
2278
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1994
2279
  */
1995
2280
  declare const EmissionCard: React$1.ForwardRefExoticComponent<EmissionCardProps & React$1.RefAttributes<HTMLDivElement>>;
2281
+ /**
2282
+ * The card's body: its blocks in one padded column, each a step apart.
2283
+ *
2284
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
2285
+ */
2286
+ declare const EmissionBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
1996
2287
  /**
1997
2288
  * The `prose` body's citation marker — the superscript that ties a clause to
1998
- * the records behind it.
2289
+ * the records behind it. Set `data-active` while its source is the one in view.
2290
+ *
2291
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
1999
2292
  */
2000
2293
  declare const CitationMarker: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
2001
2294
 
@@ -2029,18 +2322,40 @@ declare const EmptyState: React$1.ForwardRefExoticComponent<EmptyStateProps & Re
2029
2322
  /** One not-yet-available surface, and the condition that opens it. */
2030
2323
  declare const EmptyStateLock: React$1.ForwardRefExoticComponent<EmptyStateLockProps & React$1.RefAttributes<HTMLSpanElement>>;
2031
2324
 
2032
- declare class ErrorBoundary extends Component<{
2325
+ interface ErrorBoundaryProps {
2033
2326
  children: ReactNode;
2034
- }, {
2327
+ /**
2328
+ * Called once for each error the boundary catches, with React's component
2329
+ * stack — where an app reports the error (a log, a counter). The boundary
2330
+ * still shows its fallback; this only observes.
2331
+ */
2332
+ onError?: (error: Error, info: ErrorInfo) => void;
2333
+ /** What to show instead of the children once they have thrown. Defaults to a short notice. */
2334
+ fallback?: ReactNode;
2335
+ }
2336
+ /**
2337
+ * Catches a render error in its children and shows a fallback in their place,
2338
+ * so one broken region does not blank the whole screen.
2339
+ *
2340
+ * Usage:
2341
+ *
2342
+ * ```tsx
2343
+ * <ErrorBoundary onError={(error) => report(error)}>
2344
+ * <Region />
2345
+ * </ErrorBoundary>
2346
+ * ```
2347
+ *
2348
+ * `onError` is how an app learns what broke; without it the error goes to the
2349
+ * console only.
2350
+ */
2351
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, {
2035
2352
  hasError: boolean;
2036
2353
  }> {
2037
- constructor(props: {
2038
- children: ReactNode;
2039
- });
2040
- static getDerivedStateFromError(_: Error): {
2354
+ constructor(props: ErrorBoundaryProps);
2355
+ static getDerivedStateFromError(): {
2041
2356
  hasError: boolean;
2042
2357
  };
2043
- componentDidCatch(error: Error, errorInfo: any): void;
2358
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
2044
2359
  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
2360
  }
2046
2361
 
@@ -2114,9 +2429,24 @@ interface EyebrowProps extends React$1.HTMLAttributes<HTMLDivElement> {
2114
2429
  * `tone="accent"` is for a label that names something the reader is being
2115
2430
  * *taught* rather than something they are scanning — a callout's kind, a
2116
2431
  * concept's name. Use it rarely; muted is the default for a reason.
2432
+ *
2433
+ * The label and the aside are centred on each other, not set on one baseline:
2434
+ * an aside is often badges or buttons, and a baseline drops them below the label.
2117
2435
  */
2118
2436
  declare const Eyebrow: React$1.ForwardRefExoticComponent<EyebrowProps & React$1.RefAttributes<HTMLDivElement>>;
2119
2437
 
2438
+ interface ExpandToggleProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
2439
+ open: boolean;
2440
+ /** What opens — `fetch_filings` — read as `Open fetch_filings` / `Close fetch_filings`. */
2441
+ label?: string;
2442
+ }
2443
+ declare function Spacer({ className }: {
2444
+ className?: string;
2445
+ }): React$1.JSX.Element;
2446
+ declare const ExpandToggle: React$1.ForwardRefExoticComponent<ExpandToggleProps & React$1.RefAttributes<HTMLButtonElement>> & {
2447
+ Spacer: typeof Spacer;
2448
+ };
2449
+
2120
2450
  interface FilterBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
2121
2451
  /** The filter controls. `FilterChip`s, a `SearchInput`, a toggle. */
2122
2452
  children?: React$1.ReactNode;
@@ -2127,6 +2457,12 @@ interface FilterBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
2127
2457
  * filters ask, so it belongs on the same line as them and nowhere else.
2128
2458
  */
2129
2459
  summary?: React$1.ReactNode;
2460
+ /**
2461
+ * No rule under it and no padding at its ends: whatever holds it is the
2462
+ * frame — a table's border under it, the table's edges either side. Off by
2463
+ * default, so a bar over a bare list keeps the rule that divides the two.
2464
+ */
2465
+ seamless?: boolean;
2130
2466
  }
2131
2467
  interface FilterChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
2132
2468
  /** The dimension — `status`, `kind`, `agent`, `age`. */
@@ -2161,62 +2497,72 @@ declare const FilterBar: React$1.ForwardRefExoticComponent<FilterBarProps & Reac
2161
2497
  /**
2162
2498
  * One dimension, as a chip that opens a menu.
2163
2499
  *
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.
2500
+ * The caret is drawn rather than iconised so the chip reads as
2501
+ * one token — `status ▾` — instead of a control with an icon glued to it. It is
2502
+ * a `sm` button: the control scale's 26px, the height of the `sm` search
2503
+ * beside it.
2166
2504
  */
2167
2505
  declare const FilterChip: React$1.ForwardRefExoticComponent<FilterChipProps & React$1.RefAttributes<HTMLButtonElement>>;
2168
-
2506
+ /** One choice in a {@link MultiFilterChip}: its value, or a value with a label. */
2507
+ type FilterChipOption = string | {
2508
+ value: string;
2509
+ label?: React$1.ReactNode;
2510
+ };
2511
+ interface MultiFilterChipProps {
2512
+ /** The dimension — `kind`, `agent`, `status`. */
2513
+ label: React$1.ReactNode;
2514
+ options: FilterChipOption[];
2515
+ /** What it is narrowed to. Empty means "not filtered". */
2516
+ value: string[];
2517
+ onChange: (next: string[]) => void;
2518
+ /**
2519
+ * Many at once (the default) — a row matches any of them — or one, where
2520
+ * picking a choice replaces the last and picking it again clears it.
2521
+ */
2522
+ multiple?: boolean;
2523
+ }
2169
2524
  /**
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.
2525
+ * A `FilterChip` with its menu: the choices for one dimension, checked as
2526
+ * they narrow the list. The chip reads what it is set to — the value, or
2527
+ * `3 selected` — and, once set, carries the × that clears it.
2178
2528
  */
2529
+ declare function MultiFilterChip({ label, options, value, onChange, multiple, }: MultiFilterChipProps): React$1.JSX.Element;
2179
2530
 
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;
2531
+ interface FloatingPanelProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
2532
+ /** What the panel is — `Activity`, `Logs`. */
2533
+ title: React$1.ReactNode;
2534
+ /** Beside the title — a `live` dot, a count, a view switch. */
2535
+ aside?: React$1.ReactNode;
2536
+ /** Folded to its bar: the body is hidden and `summary` takes the title's room. */
2537
+ collapsed?: boolean;
2538
+ onCollapsedChange?: (collapsed: boolean) => void;
2539
+ /** What a folded panel still says — `● 3 · 4 layers`. */
2540
+ summary?: React$1.ReactNode;
2541
+ /** Shows a close control at the end of the bar. */
2542
+ onClose?: () => void;
2543
+ /** Under the body, above the edge — a total, a link out. */
2544
+ footer?: React$1.ReactNode;
2545
+ children?: React$1.ReactNode;
2546
+ bodyClassName?: string;
2205
2547
  }
2206
2548
  /**
2207
- * A run of firings, one square each, in time order.
2549
+ * A panel that floats over the work — the run's activity, its log — rather
2550
+ * than taking a split of it.
2551
+ *
2552
+ * It stays open over the work, so it is drawn as a card that is lifted — the
2553
+ * card ground, a border and a shadow — and not as a popover, which is the
2554
+ * ground of what opens and closes in a moment. Its bar is chrome, as every
2555
+ * panel's header is.
2208
2556
  *
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.
2557
+ * It sits **on** a canvas, so it can be folded to its bar and closed: a panel
2558
+ * that could only be moved out of the way by resizing the work would be a
2559
+ * split, and a split is `AppLayoutV2`'s. Folded, it keeps one line of what it
2560
+ * would say, so folding it never hides that something is happening.
2212
2561
  *
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.
2562
+ * Content-height up to its parent, then its body scrolls: two of these stacked
2563
+ * in a column share the height between them.
2218
2564
  */
2219
- declare const HeatStrip: React$1.ForwardRefExoticComponent<HeatStripProps & React$1.RefAttributes<HTMLDivElement>>;
2565
+ declare const FloatingPanel: React$1.ForwardRefExoticComponent<FloatingPanelProps & React$1.RefAttributes<HTMLDivElement>>;
2220
2566
 
2221
2567
  /**
2222
2568
  * The kinds of run Invana opens today — **suggestions, not a limit.**
@@ -2293,306 +2639,11 @@ interface LayerSectionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
2293
2639
  */
2294
2640
  declare const LayerSection: React$1.ForwardRefExoticComponent<LayerSectionProps & React$1.RefAttributes<HTMLDivElement>>;
2295
2641
 
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"
2642
+ type LegendSwatchKind = "dot"
2643
+ /** A filled square — a column or a bar. */
2644
+ | "box"
2645
+ /** A dashed square outline — a plan or a target a column stands inside. */
2646
+ | "outline" | "line" | "dashed" | "arrow" | "ring"
2596
2647
  /** The rail down a row — how a trace says which layer a step spent. */
2597
2648
  | "stripe"
2598
2649
  /** A box around what it holds — a bounded repetition, drawn by containment. */
@@ -2634,35 +2685,107 @@ interface LegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
2634
2685
  declare const Legend: React$1.ForwardRefExoticComponent<LegendProps & React$1.RefAttributes<HTMLDivElement>>;
2635
2686
  declare const LegendItem: React$1.ForwardRefExoticComponent<LegendItemProps & React$1.RefAttributes<HTMLDivElement>>;
2636
2687
 
2637
- interface LensChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children" | "onClick"> {
2688
+ type TerminalLineKind = "prompt" | "output" | "comment";
2689
+ /**
2690
+ * The severity a **log** line was emitted at, as the runtime recorded it.
2691
+ *
2692
+ * Distinct from `kind`, which says what part of a *transcript* a line is — a
2693
+ * command you typed, what it printed, a comment. A run's log has no prompts and
2694
+ * no comments; every line is output, and what varies is how loud it is.
2695
+ */
2696
+ type KnownTerminalLevel = "info" | "warn" | "error" | "debug";
2697
+ /**
2698
+ * The values the kit draws specially — **suggestions, not a limit.** Anything
2699
+ * else renders with the neutral token and its own name.
2700
+ */
2701
+ type TerminalLevel = KnownTerminalLevel | (string & {});
2702
+ interface TerminalLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
2703
+ kind?: TerminalLineKind;
2638
2704
  /**
2639
- * The lens in force. **`undefined` is a real, common state** and reads
2640
- * `Everything` — see below.
2705
+ * How loud this line is. Tints **one** cell — the one named by
2706
+ * `levelColumn` — and nothing else.
2707
+ *
2708
+ * Only the level word is coloured, never the message: a wall of amber
2709
+ * sentences is unreadable, and what a reader scans is the column, not the
2710
+ * prose. Setting this also drops the `kind` marker — a log line is not a
2711
+ * transcript line and does not want a `→` in front of it.
2712
+ *
2713
+ * The level **word** stays in `columns`. Colour is never the carrier.
2641
2714
  */
2642
- lens?: {
2643
- name: string;
2644
- kind?: "world" | "guardrail";
2645
- };
2646
- /** Open the picker. Absent leaves the chip as a statement. */
2647
- onPick?: () => void;
2715
+ level?: TerminalLevel;
2716
+ /**
2717
+ * Which cell of `columns` holds the level word. Defaults to `1`, because a
2718
+ * log line reads `time · LEVEL · source · message` and the timestamp comes
2719
+ * first in every log anyone has ever read.
2720
+ */
2721
+ levelColumn?: number;
2722
+ /**
2723
+ * Columns, for the step-shaped output a run prints — name, detail, timing,
2724
+ * result. Given as cells so they align down the transcript instead of each
2725
+ * line padding itself with spaces.
2726
+ */
2727
+ columns?: React$1.ReactNode[];
2728
+ children?: React$1.ReactNode;
2729
+ }
2730
+ interface TerminalProps extends React$1.HTMLAttributes<HTMLDivElement> {
2731
+ children?: React$1.ReactNode;
2732
+ /** Shows a blinking block at the end. */
2733
+ cursor?: boolean;
2734
+ /**
2735
+ * `grid-template-columns` for every columned line in this transcript.
2736
+ *
2737
+ * Set once here rather than per line, because the point of columns is that
2738
+ * they line up *down* the transcript — a width chosen per row aligns nothing.
2739
+ */
2740
+ columnTemplate?: string;
2648
2741
  }
2649
2742
  /**
2650
- * Which world a run is being read under — the header's right-hand chip, and the
2651
- * one on an agent's row.
2743
+ * A shell transcript, as a first-class surface.
2652
2744
  *
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.
2745
+ * Some of this product's work happens outside Studio — imports run from the
2746
+ * CLI, a scheduler calls the Python API — and the hand-off has to be shown
2747
+ * honestly rather than redrawn as a wizard. So this renders what the terminal
2748
+ * actually printed.
2659
2749
  *
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.
2750
+ * It is presentational: a record of a run that already happened, not a live
2751
+ * console. There is no input here, and it does not scroll itself.
2664
2752
  */
2665
- declare const LensChip: React$1.ForwardRefExoticComponent<LensChipProps & React$1.RefAttributes<HTMLSpanElement>>;
2753
+ declare const Terminal: React$1.ForwardRefExoticComponent<TerminalProps & React$1.RefAttributes<HTMLDivElement>>;
2754
+ declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps & React$1.RefAttributes<HTMLDivElement>>;
2755
+
2756
+ /** One line of a run's log, as the runtime emitted it. */
2757
+ interface LogLine {
2758
+ id?: string;
2759
+ /** When, already worded — `10:42:01`. */
2760
+ at: string;
2761
+ level: TerminalLevel;
2762
+ /** What emitted it — `graph.query`, `egress`. */
2763
+ source?: string;
2764
+ message: string;
2765
+ }
2766
+ /** How loud a line must be to show: everything, warnings and up, errors only. */
2767
+ type LogFloor = "all" | "warn" | "error";
2768
+ interface LogCardProps extends Omit<FloatingPanelProps, "title" | "children" | "summary" | "aside"> {
2769
+ /** @default "Logs" */
2770
+ title?: React$1.ReactNode;
2771
+ /** Every line so far, oldest first. New lines are appended as they arrive. */
2772
+ lines: LogLine[];
2773
+ /** Lines are still arriving. */
2774
+ live?: boolean;
2775
+ /** Only lines from this source — a call opened in the activity panel. Controlled with `onSourceChange`. */
2776
+ source?: string | null;
2777
+ onSourceChange?: (source: string | null) => void;
2778
+ }
2779
+ /**
2780
+ * The run's log, as it is written — in a panel that floats over the work.
2781
+ *
2782
+ * The raw record behind the activity panel: every line the runtime emitted,
2783
+ * its level the one coloured word ({@link TerminalLine}). It follows new lines
2784
+ * while live; **pausing freezes what is shown**, so a line can be read while
2785
+ * the run keeps writing, and resuming catches up. Filter by how loud a line
2786
+ * is, by words, or by the source a call wrote it from.
2787
+ */
2788
+ declare const LogCard: React$1.ForwardRefExoticComponent<LogCardProps & React$1.RefAttributes<HTMLDivElement>>;
2666
2789
 
2667
2790
  /** What the mark means, as a tone. The same seven `StatusDot` uses, less the dot. */
2668
2791
  type MarkTone = "muted" | "info" | "success" | "warning" | "destructive";
@@ -2744,6 +2867,11 @@ interface MenuItem {
2744
2867
  onClick?: () => void;
2745
2868
  children?: MenuItem[];
2746
2869
  }
2870
+ /**
2871
+ * A row of a menu; with `children`, a submenu that opens beside it. The submenu
2872
+ * opens on hover and on focus, and from the keyboard: → or Enter opens it on its
2873
+ * first row, ← or Escape closes it back to its row.
2874
+ */
2747
2875
  declare const MenuItem: React$1.FC<MenuItemProps>;
2748
2876
 
2749
2877
  /**
@@ -2753,7 +2881,7 @@ declare const MenuItem: React$1.FC<MenuItemProps>;
2753
2881
  * Omit it for an ordinary measurement. A grid where every tile is coloured
2754
2882
  * carries no signal, and a number that is merely large is not a warning.
2755
2883
  */
2756
- type KnownMetricTone = "running" | "success" | "warning" | "error" | "info";
2884
+ type KnownMetricTone = "running" | "success" | "warning" | "error" | "info" | "muted";
2757
2885
  /**
2758
2886
  * The values the kit draws specially — **suggestions, not a limit.** Anything
2759
2887
  * else renders with the neutral token and its own name.
@@ -2768,6 +2896,11 @@ interface MetricTileProps extends React$1.HTMLAttributes<HTMLDivElement> {
2768
2896
  caption?: React$1.ReactNode;
2769
2897
  /** Tints the value. See {@link MetricTone} — most tiles should not set it. */
2770
2898
  tone?: MetricTone;
2899
+ /**
2900
+ * Tints the caption instead — for a caption that is a change, `▲ 8 d vs
2901
+ * normal`, where the direction is the signal and the value is a plain figure.
2902
+ */
2903
+ captionTone?: MetricTone;
2771
2904
  /**
2772
2905
  * How much of a known ceiling has been spent, `0`–`1`, as a 4px bar under the
2773
2906
  * caption. Takes `tone`'s colour when one is set.
@@ -2778,6 +2911,36 @@ interface MetricTileProps extends React$1.HTMLAttributes<HTMLDivElement> {
2778
2911
  * a deadline that does not exist.
2779
2912
  */
2780
2913
  meter?: number;
2914
+ /**
2915
+ * The figure against a target, as a bar under it: `fill` is how far the
2916
+ * figure has come and `mark` where the target sits, both `0`–`1` of the
2917
+ * scale. `labels` writes the scale's start, the target and its end under it.
2918
+ *
2919
+ * Unlike `meter`, the target is a line the figure is read against, not a
2920
+ * ceiling it spends — the fill may pass it.
2921
+ */
2922
+ gauge?: {
2923
+ fill: number;
2924
+ mark: number;
2925
+ labels?: [React$1.ReactNode, React$1.ReactNode, React$1.ReactNode];
2926
+ };
2927
+ /**
2928
+ * Set on the warning ground: the one tile in a band that needs a second look
2929
+ * — a figure resting on too few records. Say why in a line under the band.
2930
+ */
2931
+ flagged?: boolean;
2932
+ /** Beside the figure, at the right, bottom-aligned — a sparkline of its recent run. */
2933
+ aside?: React$1.ReactNode;
2934
+ /**
2935
+ * `tile` is one of several, boxed, in a strip. `hero` is the one figure an
2936
+ * answer turns on — the adjusted odds ratio, net revenue retention — set
2937
+ * large on the surface it sits in: no box, the label in sentence case over
2938
+ * it, the caption in mono under it, so it reads as a result, not a gauge.
2939
+ * `figure` is one of a band of figures inside an answer — boxed like a tile
2940
+ * but set like a small hero: the label in sentence case, the value in a
2941
+ * larger sans, the caption in mono.
2942
+ */
2943
+ variant?: "tile" | "hero" | "figure";
2781
2944
  /** A sparkline, or anything else that sits under the value. */
2782
2945
  children?: React$1.ReactNode;
2783
2946
  }
@@ -2789,10 +2952,28 @@ interface MetricGridProps extends React$1.HTMLAttributes<HTMLDivElement> {
2789
2952
  *
2790
2953
  * It is a prop because a tile strip is usually one band of something larger,
2791
2954
  * 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
2955
+ * as two grids. A board passes its own gap; a standalone strip keeps the
2793
2956
  * default.
2794
2957
  */
2795
2958
  gap?: number;
2959
+ /**
2960
+ * One strip, the tiles divided by rules instead of spaced apart — for a
2961
+ * band of figures that belong to one answer and read left to right. `gap`
2962
+ * is ignored.
2963
+ */
2964
+ joined?: boolean;
2965
+ /**
2966
+ * With `joined`: no box around the strip, and nothing wasted on its outside
2967
+ * — only the rules between tiles are drawn, and the outer tiles sit flush
2968
+ * with the text around the grid, as a seamless table's outer columns do.
2969
+ * For a strip inside a card or an answer, whose edge already frames it.
2970
+ */
2971
+ seamless?: boolean;
2972
+ /**
2973
+ * A fixed number of columns instead of fitting to the width — for a band
2974
+ * whose shape is part of what it says: three across, two by two.
2975
+ */
2976
+ columns?: number;
2796
2977
  children?: React$1.ReactNode;
2797
2978
  }
2798
2979
  /**
@@ -2832,6 +3013,12 @@ interface NavMenuItem {
2832
3013
  /** Draw a separator immediately above this row. */
2833
3014
  separatorBefore?: boolean;
2834
3015
  onSelect?: () => void;
3016
+ /**
3017
+ * A submenu: the row opens these beside it (hover, → or Enter; ← or Escape
3018
+ * closes it). Its own `onSelect` is not called — the rows inside are the
3019
+ * choices.
3020
+ */
3021
+ children?: NavMenuItem[];
2835
3022
  }
2836
3023
  /**
2837
3024
  * NavItemConfig - Shared configuration for a single navigation item, used by
@@ -2894,6 +3081,12 @@ interface NavItemConfig {
2894
3081
  * is why a tab strip could not be built on nav items before.
2895
3082
  */
2896
3083
  menuTrigger?: "item" | "caret";
3084
+ /**
3085
+ * Draws an inline `×` inside the item — a tab that is closed rather than
3086
+ * managed. The body still selects; only the `×` closes. Like the caret, it
3087
+ * makes the item host a button, so the item itself renders as a `<div>`.
3088
+ */
3089
+ onClose?: () => void;
2897
3090
  /**
2898
3091
  * A count pinned to the item's top-right — unread reviews, waiting questions.
2899
3092
  *
@@ -2910,11 +3103,11 @@ interface NavItemConfig {
2910
3103
  /**
2911
3104
  * The visual treatments a strip of nav items can wear.
2912
3105
  *
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.
3106
+ * One table, because the kit used to draw these by hand in separate
3107
+ * components. `nav` is what nav items have always looked like; `underline` and
3108
+ * `folder` are the two tab strips — a panel's views (`TabbedPanel`) and a
3109
+ * workbook's pages (`Workbook`) — and `folder-bottom` is the workbook's strip
3110
+ * under its pages.
2918
3111
  */
2919
3112
  declare const VARIANT: {
2920
3113
  /** The capsule: a filled, ringed chip. Toolbars, rails, header actions. */
@@ -2930,18 +3123,29 @@ declare const VARIANT: {
2930
3123
  readonly item: "h-full rounded-none px-3 py-2";
2931
3124
  readonly hover: "hover:text-foreground";
2932
3125
  readonly open: "data-[state=open]:text-foreground";
2933
- readonly active: "bg-primary/10 text-primary border-b-2 border-primary mb-[-1px]";
3126
+ readonly active: "bg-primary/10 text-primary border-b-2 border-primary translate-y-px";
2934
3127
  readonly strip: "items-stretch";
2935
3128
  };
2936
3129
  /**
2937
3130
  * The workbook tab: boxed on top / left / right with an *open bottom*, so it
2938
- * punches through the strip's own rule — the classic folder-tab notch.
3131
+ * punches through the strip's own rule — the classic folder-tab notch. The
3132
+ * box wears the rule's own colour and the body's fill, so the active tab and
3133
+ * its page read as one surface; the accent is the label plus a 2px line on
3134
+ * the tab's outer edge.
2939
3135
  */
2940
3136
  readonly folder: {
2941
3137
  readonly item: "h-full rounded-none px-3 py-2 gap-1.5";
2942
3138
  readonly hover: "hover:text-foreground";
2943
3139
  readonly open: "data-[state=open]:text-foreground";
2944
- readonly active: "mb-[-1px] rounded-t-md border border-b-0 border-primary text-primary";
3140
+ readonly active: "z-10 translate-y-px rounded-t-md border border-b-0 border-border bg-card text-primary shadow-[inset_0_2px_0_var(--color-primary)]";
3141
+ readonly strip: "items-stretch";
3142
+ };
3143
+ /** The folder tab turned over, for a strip under its pages: open at the top, rounded below, accent line underneath. */
3144
+ readonly "folder-bottom": {
3145
+ readonly item: "h-full rounded-none px-3 py-2 gap-1.5";
3146
+ readonly hover: "hover:text-foreground";
3147
+ readonly open: "data-[state=open]:text-foreground";
3148
+ readonly active: "z-10 mt-[-1px] rounded-b-md border border-t-0 border-border bg-card text-primary shadow-[inset_0_-2px_0_var(--color-primary)]";
2945
3149
  readonly strip: "items-stretch";
2946
3150
  };
2947
3151
  };
@@ -3206,8 +3410,12 @@ interface NestedMenuProps {
3206
3410
  declare const NestedMenu: React__default.FC<NestedMenuProps>;
3207
3411
 
3208
3412
  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;
3413
+ /**
3414
+ * What this band is — `Input · what opened this run`, `result.json`, `Log`.
3415
+ * Without one there is no label bar: the box still frames its content, which
3416
+ * is how a band of figures sits on a board as it sits in an answer card.
3417
+ */
3418
+ title?: React$1.ReactNode;
3211
3419
  /**
3212
3420
  * The fact on the right of the header — `214 lines · tailing`, `rendered from
3213
3421
  * result.json`, a `<Badge>`, a count.
@@ -3221,14 +3429,21 @@ interface PanelBoxProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "ti
3221
3429
  * `DataTable` whose header rule should line up with the box, a chart.
3222
3430
  */
3223
3431
  flush?: boolean;
3432
+ /**
3433
+ * Take the parent's height instead of the content's, the body growing into
3434
+ * it — a canvas or a map that is the whole page, which has no content height
3435
+ * of its own and would otherwise draw at 0.
3436
+ */
3437
+ fill?: boolean;
3224
3438
  children?: React$1.ReactNode;
3225
3439
  headerClassName?: string;
3226
3440
  bodyClassName?: string;
3227
3441
  }
3228
3442
  /**
3229
- * One band of a dashboard: a bordered box with a label bar over it.
3443
+ * One band of a board: a bordered box, with a label bar over it when it
3444
+ * has a `title`.
3230
3445
  *
3231
- * A dashboard is a scrolling column of these — tiles, then the flow, then
3446
+ * A board is a scrolling column of these — tiles, then the flow, then
3232
3447
  * Input beside `result.json`, then the Log. Each box is **content-height and
3233
3448
  * owns no scroller**: the column scrolls, so a band that scrolled itself would
3234
3449
  * hide its own content behind a second bar.
@@ -3251,6 +3466,11 @@ interface PanelContentProps {
3251
3466
  title?: React__default.ReactNode;
3252
3467
  /** Header title as plain text, rendered in the default panel header style. */
3253
3468
  titleText?: string;
3469
+ /**
3470
+ * How many things the panel holds — `4`, `12 changed` — beside the title,
3471
+ * muted. A fact about the panel, so always shown, unlike its actions.
3472
+ */
3473
+ count?: React__default.ReactNode;
3254
3474
  children?: React__default.ReactNode;
3255
3475
  /** Classes for the outer card. */
3256
3476
  className?: string;
@@ -3291,7 +3511,7 @@ interface PanelContentProps {
3291
3511
  */
3292
3512
  actionsOnHover?: boolean;
3293
3513
  }
3294
- declare function PanelContent({ title, titleText, children, className, headerClassName, bodyClassName, footerContent, footerClassName, headerActions, actionsOnHover, }: PanelContentProps): React__default.JSX.Element;
3514
+ declare function PanelContent({ title, titleText, count, children, className, headerClassName, bodyClassName, footerContent, footerClassName, headerActions, actionsOnHover, }: PanelContentProps): React__default.JSX.Element;
3295
3515
 
3296
3516
  interface PanelStackSection {
3297
3517
  /** Unique identifier for the section within the stack. */
@@ -3308,6 +3528,12 @@ interface PanelStackSection {
3308
3528
  content: React$1.ReactNode;
3309
3529
  /** Optional leading icon component, shown before the title. */
3310
3530
  icon?: React$1.ElementType;
3531
+ /**
3532
+ * How many things the section holds — `4`, `12 changed` — beside the title,
3533
+ * muted. A fact, not an action: always shown, even while the actions wait
3534
+ * for hover, and while the section is collapsed.
3535
+ */
3536
+ count?: React$1.ReactNode;
3311
3537
  /**
3312
3538
  * Actions on the right of the title bar, as `NavHorizontal` items — the same
3313
3539
  * list `PanelContent` and `TabbedPanel` take, so a header is described once
@@ -3329,7 +3555,7 @@ interface PanelStackSection {
3329
3555
  /**
3330
3556
  * Keep `headerActions` hidden until the header is hovered or focused (or a
3331
3557
  * 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`.
3558
+ * `true`. A count that must always read is `count`.
3333
3559
  */
3334
3560
  actionsOnHover?: boolean;
3335
3561
  /** Start the section collapsed (header only). Defaults to `false`. */
@@ -3477,8 +3703,15 @@ interface PropertyListProps extends React$1.HTMLAttributes<HTMLDListElement> {
3477
3703
  /**
3478
3704
  * Width of the label column. One value for the whole list, so every value
3479
3705
  * starts on the same x — the reason to use this rather than a row of flexes.
3706
+ * `"auto"` sizes the column to the widest label, for a short list of known
3707
+ * labels such as the answers to an ask.
3708
+ */
3709
+ labelWidth?: number | "auto" | (string & {});
3710
+ /**
3711
+ * `summary` sets the rows tight — a settled answer read at a glance, such as
3712
+ * the values an ask was answered with, or a proposal's terms.
3480
3713
  */
3481
- labelWidth?: number | string;
3714
+ variant?: "default" | "summary";
3482
3715
  children?: React$1.ReactNode;
3483
3716
  }
3484
3717
  interface PropertyRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
@@ -3502,14 +3735,26 @@ declare const PropertyList: React$1.ForwardRefExoticComponent<PropertyListProps
3502
3735
  declare const PropertyRow: React$1.ForwardRefExoticComponent<PropertyRowProps & React$1.RefAttributes<HTMLDivElement>>;
3503
3736
 
3504
3737
  interface ProposalCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
3505
- /** What is being proposed — `Draft pattern`. */
3506
- title: React$1.ReactNode;
3738
+ /** What is being proposed — `Draft pattern`. Left out when the frame around the card already says it. */
3739
+ title?: React$1.ReactNode;
3507
3740
  /** Where it came from — `from the agent's result`. */
3508
3741
  source?: React$1.ReactNode;
3509
3742
  /** The draft itself. A `PropertyList`, usually. */
3510
3743
  children?: React$1.ReactNode;
3744
+ /**
3745
+ * The draft without its muted box — for a card whose frame is already its
3746
+ * own, such as a proposal under an answer, where a box inside it is a box
3747
+ * inside a box.
3748
+ */
3749
+ flush?: boolean;
3511
3750
  /** What the proposal rests on — the instances, as a table or list. */
3512
3751
  evidence?: React$1.ReactNode;
3752
+ /**
3753
+ * The evidence without its box — for evidence that is a `seamless` table or
3754
+ * grid, drawing only the rules between its rows, whose edge the card's own
3755
+ * frame already is.
3756
+ */
3757
+ seamless?: boolean;
3513
3758
  /** A heading for the evidence — `The six instances`. */
3514
3759
  evidenceTitle?: React$1.ReactNode;
3515
3760
  /** Scope of the evidence — `30 days`. */
@@ -3518,6 +3763,8 @@ interface ProposalCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
3518
3763
  consequence?: React$1.ReactNode;
3519
3764
  /** Author / reject / reassign. */
3520
3765
  actions?: React$1.ReactNode;
3766
+ /** Written: what was made — `Alert created` — stamped above the draft. */
3767
+ done?: React$1.ReactNode;
3521
3768
  }
3522
3769
  /**
3523
3770
  * An agent proposes; a person publishes.
@@ -3596,15 +3843,22 @@ interface RecordHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
3596
3843
  chips?: React$1.ReactNode;
3597
3844
  /** What you can do to it — prev/next, a view switch, buttons, a `…` menu. */
3598
3845
  actions?: React$1.ReactNode;
3846
+ /**
3847
+ * The bar's height, on the control scale — a bar is as tall as a control of
3848
+ * its size. `lg` (40px at a 13px root) tops a page or a board; `md`
3849
+ * (32px) tops a panel or a drawer, level with a `PanelBox` header. Either
3850
+ * holds `sm` chips and buttons.
3851
+ */
3852
+ size?: "md" | "lg";
3599
3853
  }
3600
3854
  /**
3601
3855
  * Which record you are looking at, across the top of the surface showing it.
3602
3856
  *
3603
- * A run dashboard, a step dashboard, a plan, a draft — every one of them opens
3857
+ * A run board, a step board, a plan, a draft — every one of them opens
3604
3858
  * with this line, so a reader who followed a link knows what they are reading
3605
3859
  * before they read any of it.
3606
3860
  *
3607
- * It is **not** a `ContextBar`. That is 28px under a panel and describes the
3861
+ * It is **not** a `ContextBar`. That is the `sm` bar under a panel and describes the
3608
3862
  * *view* — counts, a keyboard hint, a tab-shaped switch. This is above the
3609
3863
  * content and names the *record*, which is why the crumbs are mono: they are
3610
3864
  * identifiers, not prose.
@@ -3641,6 +3895,34 @@ interface RecordPagerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
3641
3895
  */
3642
3896
  declare const RecordPager: React$1.ForwardRefExoticComponent<RecordPagerProps & React$1.RefAttributes<HTMLDivElement>>;
3643
3897
 
3898
+ interface RefusalCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
3899
+ /**
3900
+ * Which bound refused it, as a short label — `refused · the agent's
3901
+ * guardrail`. The bound is the point: it says whom to ask.
3902
+ */
3903
+ label?: React$1.ReactNode;
3904
+ /**
3905
+ * What was refused and why, in one or two sentences — *This ask was not run.
3906
+ * In Everything, decide is cast to … and … does not allow it.*
3907
+ */
3908
+ children?: React$1.ReactNode;
3909
+ /** The way round it — another world, another agent, a person to ask. */
3910
+ remedy?: React$1.ReactNode;
3911
+ }
3912
+ /**
3913
+ * A bound refused the work **before it ran**.
3914
+ *
3915
+ * Not a cannot-answer and not a failure, and its own component for the same
3916
+ * reason those are (DS8): nothing was read, so there is nothing the graph does
3917
+ * not hold; nothing broke, so there is no fault to diagnose. A rule said no,
3918
+ * and the card names the rule's side so the reader knows whose rule to change.
3919
+ *
3920
+ * Tinted with the destructive token, because the reader has to act before
3921
+ * anything happens — but no citation strip and no retry, since running it again
3922
+ * under the same bounds would be refused again.
3923
+ */
3924
+ declare const RefusalCard: React$1.ForwardRefExoticComponent<RefusalCardProps & React$1.RefAttributes<HTMLDivElement>>;
3925
+
3644
3926
  interface RepairNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
3645
3927
  /** What was wrong — `unknown property Theme.velocity5d`. */
3646
3928
  from: React$1.ReactNode;
@@ -3685,9 +3967,36 @@ interface RichSelectOption {
3685
3967
  description?: React$1.ReactNode;
3686
3968
  /** Lucide glyph or any component accepting `{ size }`. */
3687
3969
  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;
3970
+ /** Trailing content (e.g. a count or status badge), pushed to the right. */
3971
+ badge?: React$1.ReactNode;
3972
+ disabled?: boolean;
3973
+ /**
3974
+ * Why a disabled option cannot be picked, shown under it in the warning
3975
+ * tone. A greyed-out row with no reason is a refusal nobody can act on.
3976
+ */
3977
+ disabledReason?: React$1.ReactNode;
3978
+ }
3979
+ /**
3980
+ * An on/off setting beside the choice — *Next ask only* on a world picker. It
3981
+ * is not an option: it scopes the choice, so it sits below the options and
3982
+ * toggling it keeps the menu open.
3983
+ */
3984
+ interface RichSelectToggle {
3985
+ id: string;
3986
+ label: React$1.ReactNode;
3987
+ checked: boolean;
3988
+ onCheckedChange: (checked: boolean) => void;
3989
+ disabled?: boolean;
3990
+ }
3991
+ /**
3992
+ * Something to do rather than something to pick — *Manage worlds…*. It sits
3993
+ * last, below a separator, so it is never mistaken for a value.
3994
+ */
3995
+ interface RichSelectAction {
3996
+ id: string;
3997
+ label: React$1.ReactNode;
3998
+ icon?: React$1.ElementType;
3999
+ onSelect: () => void;
3691
4000
  }
3692
4001
  interface RichSelectProps {
3693
4002
  options: RichSelectOption[];
@@ -3717,6 +4026,25 @@ interface RichSelectProps {
3717
4026
  side?: "top" | "right" | "bottom" | "left";
3718
4027
  /** Gap in px between the trigger and the menu. Default `4`. */
3719
4028
  sideOffset?: number;
4029
+ /**
4030
+ * `field` (default) is an outlined control for a form. `inline` is the
4031
+ * borderless, compact trigger a toolbar uses — every control in a chat
4032
+ * composer is one, so the ask kind and the world read as one row.
4033
+ */
4034
+ appearance?: "field" | "inline";
4035
+ /** Glyph before the selected value on the trigger — a globe for a world. */
4036
+ triggerIcon?: React$1.ElementType;
4037
+ /** A short tag after the value on the trigger — `next ask only`. */
4038
+ triggerTag?: React$1.ReactNode;
4039
+ /** Settings that scope the choice; rendered below the options. */
4040
+ toggles?: RichSelectToggle[];
4041
+ /** Acts, not values; rendered last. */
4042
+ actions?: RichSelectAction[];
4043
+ /**
4044
+ * The trigger's accessible name — *Ask kind*, *World*. An inline trigger
4045
+ * shows only the current value, which names the choice made, not the control.
4046
+ */
4047
+ triggerAriaLabel?: string;
3720
4048
  /** Trigger tooltip content; omit to disable the tooltip. */
3721
4049
  tooltip?: React$1.ReactNode;
3722
4050
  /** Side the trigger tooltip is placed on. Default `'top'`. */
@@ -3734,8 +4062,13 @@ interface RichSelectProps {
3734
4062
  * rich content (`label`, `description`, `icon`, `badge`) and both the rows and
3735
4063
  * the trigger are fully customizable via `renderOption` / `renderValue`.
3736
4064
  * Supports single (radio) and multi (checkbox) selection via `multiple`.
4065
+ *
4066
+ * Beyond the choice it can carry **toggles** that scope it and **actions**
4067
+ * below it, and an `inline` trigger for toolbars — which is what lets every
4068
+ * control in a chat composer (ask kind, query language, world, timeout) be the
4069
+ * same component rather than a `Select` beside a hand-rolled menu.
3737
4070
  */
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;
4071
+ 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
4072
 
3740
4073
  /** A slice along the axes the matched model **declared**. */
3741
4074
  interface RuleSelect {
@@ -3871,7 +4204,7 @@ declare const RuleRow: React$1.ForwardRefExoticComponent<RuleRowProps & React$1.
3871
4204
  * limit.** An unknown status still renders: it says its own name, in the
3872
4205
  * neutral.
3873
4206
  */
3874
- type KnownRunStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled" | "cannot_answer" | "awaiting_approval" | "skipped" | "held" | "purged";
4207
+ type KnownRunStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled" | "cannot_answer" | "awaiting_approval" | "awaiting_input" | "partial" | "skipped" | "held" | "purged";
3875
4208
  type RunStatus = KnownRunStatus | (string & {});
3876
4209
  /**
3877
4210
  * Which tone each status is read in.
@@ -3908,23 +4241,37 @@ interface RunStatusTextProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement
3908
4241
  * The word is always present, so colour is never the only carrier of the state.
3909
4242
  */
3910
4243
  declare const RunStatusText: React$1.ForwardRefExoticComponent<RunStatusTextProps & React$1.RefAttributes<HTMLSpanElement>>;
4244
+ /**
4245
+ * Which glyph each status is drawn with, where the word is not beside it.
4246
+ *
4247
+ * The shape is the point: every state a reader acts on differently gets its own
4248
+ * — done, broken, moving, not started, **waiting on you**, could not answer,
4249
+ * answered in part, stopped. An unknown status reads as not started.
4250
+ */
4251
+ declare const ICON: Record<string, StatusIconState>;
3911
4252
 
3912
4253
  interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "onSelect"> {
3913
4254
  status: RunStatus;
3914
- /** Overrides the tone the status resolves to. */
3915
- tone?: StatusDotProps["tone"];
4255
+ /** Overrides the glyph the status resolves to — `partial` on a run that succeeded. */
4256
+ state?: StatusIconState;
3916
4257
  kind?: RunKind;
4258
+ /**
4259
+ * What it was about, in the words it was opened with — the question as typed,
4260
+ * the query text, the dataset loaded. **Line one**, because it is what a
4261
+ * reader scans the journal for.
4262
+ */
4263
+ title: React$1.ReactNode;
4264
+ /** The title is a query, not a sentence — drawn mono. */
4265
+ titleMono?: boolean;
3917
4266
  /**
3918
4267
  * The run's address — the last eight characters of its uuid, mono.
3919
4268
  *
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.
4269
+ * **First on line two.** A row a reader cannot quote into a log line, a
4270
+ * support thread or `GET …/runs/{id}` has made them drill in to find out what
4271
+ * they are looking at.
3923
4272
  */
3924
4273
  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`. */
4274
+ /** After the address — `nl-query@5 · 2m 51s · 21.4k · 9/9 · 4 mins ago`. */
3928
4275
  meta?: React$1.ReactNode;
3929
4276
  /** Hard right — a badge, a count, an outcome. */
3930
4277
  aside?: React$1.ReactNode;
@@ -3942,10 +4289,9 @@ interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "titl
3942
4289
  * and no panel per kind: the kind is a chip and a filter value, which is what
3943
4290
  * keeps one journal from becoming four lists that drift apart.
3944
4291
  *
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.
4292
+ * Line one is what it was about; line two is the id, then what it spent. The
4293
+ * status is a glyph in the leading slot and **not a word** — the shape carries
4294
+ * it, so the badge's column goes back to the prompt.
3949
4295
  *
3950
4296
  * With `onSelect` the whole row is one button, so the accessible name is the
3951
4297
  * whole row — the id, the kind and the summary in one string, which is exactly
@@ -3953,20 +4299,92 @@ interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "titl
3953
4299
  */
3954
4300
  declare const RunRow: React$1.ForwardRefExoticComponent<RunRowProps & React$1.RefAttributes<HTMLDivElement>>;
3955
4301
 
4302
+ interface ScopeLineChoice {
4303
+ value: string;
4304
+ label: React$1.ReactNode;
4305
+ /** At the right of the choice, in mono — `188`, `2 of 3`. */
4306
+ detail?: React$1.ReactNode;
4307
+ }
4308
+ /** A part with more to say than its text. */
4309
+ interface ScopeLinePart {
4310
+ text: React$1.ReactNode;
4311
+ /**
4312
+ * `changed` — this part differs from the question it was carried from;
4313
+ * `stale` — the data behind it is late.
4314
+ */
4315
+ mark?: "changed" | "stale";
4316
+ /** What the part can be changed to. Opening the part lists them under the line. */
4317
+ choices?: ScopeLineChoice[];
4318
+ }
4319
+ interface ScopeLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
4320
+ /** What the figure covers, in order — period, comparison, filters, population, freshness. */
4321
+ parts: (React$1.ReactNode | ScopeLinePart)[];
4322
+ /**
4323
+ * Makes the text parts editable in place: click one, type, `Enter` to send
4324
+ * the new value, `Escape` or leaving it to keep the old one. Called only
4325
+ * when the value changed.
4326
+ */
4327
+ onPartChange?: (index: number, value: string) => void;
4328
+ /**
4329
+ * Parts that stay as stated even when the rest can be edited — the data's
4330
+ * freshness is a fact about the load, not a choice of the analyst's.
4331
+ */
4332
+ fixedParts?: number[];
4333
+ /** The part whose choices are showing. Controlled; see `defaultOpenPart`. */
4334
+ openPart?: number | null;
4335
+ /** The part whose choices show at first, uncontrolled. */
4336
+ defaultOpenPart?: number;
4337
+ onOpenPartChange?: (index: number | null) => void;
4338
+ /** A line under the scope — `Click any part to change it and re-run`. */
4339
+ note?: React$1.ReactNode;
4340
+ /** `warning` when the note is about late data. */
4341
+ noteTone?: "muted" | "warning";
4342
+ /**
4343
+ * No box, and nothing wasted on its outside: only the rules between parts
4344
+ * are drawn, and the first part sits flush with the text around the strip.
4345
+ * For a scope inside a card or an answer, whose edge already frames it.
4346
+ */
4347
+ seamless?: boolean;
4348
+ }
4349
+ /**
4350
+ * What an answer covers, stated in one strip: `Q3 2026 · vs Q2 · Stores,
4351
+ * Online · 214 stores · as of 06:00`.
4352
+ *
4353
+ * Every analytic answer carries one, above its figures, so a number is never
4354
+ * read without the period and population it was computed over. The parts are
4355
+ * exactly as applied — the filters the query ran with, not the ones asked for.
4356
+ *
4357
+ * With `onPartChange` the scope is also where it is changed: a part is edited
4358
+ * where it is read, rather than by asking the question again.
4359
+ */
4360
+ declare const ScopeLine: React$1.ForwardRefExoticComponent<ScopeLineProps & React$1.RefAttributes<HTMLDivElement>>;
4361
+
3956
4362
  /**
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.
4363
+ * The control scale: `sm` (26px) is the application field — a search box
4364
+ * docked in a panel header or a table toolbar; `default` (32px) a standalone
4365
+ * form; `lg` (40px) a page. Size is height only: every size reads at the root,
4366
+ * the size of the rows being searched.
3959
4367
  *
3960
4368
  * Named `inputSize` for the same reason `Input` is: `size` is already an
3961
4369
  * `<input>` attribute meaning "how many characters wide".
3962
4370
  */
3963
- type SearchInputSize = 'default' | 'sm';
4371
+ type SearchInputSize = 'sm' | 'default' | 'lg';
3964
4372
  interface SearchInputProps extends Omit<React__default.ComponentProps<'input'>, 'value' | 'onChange' | 'size' | 'type'> {
4373
+ /** Sits on the box around the field — its width, its place in a row. */
3965
4374
  className?: string;
3966
4375
  value: string;
3967
4376
  /** Receives the raw string, not the event — a search box has one value. */
3968
4377
  onChange: (value: string) => void;
3969
4378
  inputSize?: SearchInputSize;
4379
+ /**
4380
+ * A clear button at the end of the field while it holds text, and Escape
4381
+ * clears it too; both send `onChange("")`. On by default.
4382
+ */
4383
+ clearable?: boolean;
4384
+ /** The clear button's glyph — yours, at 14px. Default: a plain cross. */
4385
+ clearIcon?: React__default.ReactNode;
4386
+ /** The clear button's accessible name. */
4387
+ clearLabel?: string;
3970
4388
  }
3971
4389
  declare const SearchInput: React__default.FC<SearchInputProps>;
3972
4390
 
@@ -4000,40 +4418,30 @@ interface SectionHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
4000
4418
  */
4001
4419
  declare const SectionHeader: React$1.ForwardRefExoticComponent<SectionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
4002
4420
 
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;
4421
+ interface StageTrailStep {
4422
+ id: string;
4423
+ /** `Research`, `Dataset`. */
4424
+ label: string;
4425
+ /** Done, the one the work is at, or not reached yet. */
4426
+ state: "done" | "current" | "todo";
4427
+ }
4428
+ interface StageTrailProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onSelect"> {
4429
+ steps: StageTrailStep[];
4430
+ /** A step was picked — open its page. Without it the trail only shows. */
4431
+ onPick?: (id: string) => void;
4025
4432
  }
4026
4433
  /**
4027
- * The shape of a series, small enough to sit inside a row.
4434
+ * Where a piece of work stands in a fixed run of stages — Research, Dataset,
4435
+ * Model, Import, Explore — each a dot and its name, joined by a short rule.
4436
+ * It sits in an app header's centre, so it gives up width before anything
4437
+ * else does: under 560px of its own width only the current stage keeps its
4438
+ * name (the others keep a dot, and name themselves on hover), and the rules
4439
+ * shorten. It never pushes the header wider.
4028
4440
  *
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.
4441
+ * Not {@link TimelineList}, which is events in time; this is a fixed sequence
4442
+ * and where the work is in it.
4035
4443
  */
4036
- declare const Sparkline: React$1.ForwardRefExoticComponent<SparklineProps & React$1.RefAttributes<SVGSVGElement>>;
4444
+ declare const StageTrail: React$1.ForwardRefExoticComponent<StageTrailProps & React$1.RefAttributes<HTMLElement>>;
4037
4445
 
4038
4446
  interface TabConfig {
4039
4447
  /** Unique identifier for the tab */
@@ -4051,6 +4459,8 @@ interface TabConfig {
4051
4459
  content: React__default.ReactNode;
4052
4460
  /** Whether this tab should be disabled */
4053
4461
  disabled?: boolean;
4462
+ /** Draw a close button on the tab; pressing it calls the panel's `onTabClose`. */
4463
+ closable?: boolean;
4054
4464
  }
4055
4465
  interface TabbedPanelProps {
4056
4466
  /** Array of tab configurations */
@@ -4061,6 +4471,11 @@ interface TabbedPanelProps {
4061
4471
  activeTab?: string;
4062
4472
  /** Callback when tab changes */
4063
4473
  onTabChange?: (value: string) => void;
4474
+ /**
4475
+ * A `closable` tab's close was pressed, by its value. The tabs are yours, so
4476
+ * closing is too: drop it from `tabs`, and move `activeTab` if it was open.
4477
+ */
4478
+ onTabClose?: (value: string) => void;
4064
4479
  /**
4065
4480
  * Actions on the right of the tab bar, as `NavHorizontal` items. A panel
4066
4481
  * header has one action area — the right — so this is the item list itself
@@ -4077,6 +4492,16 @@ interface TabbedPanelProps {
4077
4492
  * ```
4078
4493
  */
4079
4494
  headerActions?: NavHorizontalItem[];
4495
+ /**
4496
+ * A control on the right of the tab strip, before `headerActions`, that
4497
+ * applies to **every** tab: a time window, a version. Not a place for a
4498
+ * tab's own controls — those belong in that tab's body.
4499
+ *
4500
+ * ```tsx
4501
+ * headerContent={<ToggleGroup type="single" size="sm">…</ToggleGroup>}
4502
+ * ```
4503
+ */
4504
+ headerContent?: React__default.ReactNode;
4080
4505
  /**
4081
4506
  * Fold the tabs that do not fit the header into a `…` dropdown at the end of
4082
4507
  * the strip, instead of letting the strip set the panel's minimum width.
@@ -4114,7 +4539,7 @@ interface TabbedPanelProps {
4114
4539
  footerContent?: React__default.ReactNode;
4115
4540
  }
4116
4541
  /**
4117
- * TabbedPanel — a panel whose views sit behind one 30px tab strip.
4542
+ * TabbedPanel — a panel whose views sit behind one `md` tab strip.
4118
4543
  *
4119
4544
  * The strip is a `NavItems` tab list (`variant="underline"`), not a Radix
4120
4545
  * `Tabs`: the same component draws this kit's nav rails and its workbook tabs,
@@ -4124,47 +4549,129 @@ interface TabbedPanelProps {
4124
4549
  * `TabsContent`, and a panel that tears its canvas down on every tab switch is
4125
4550
  * not a panel anyone wants.
4126
4551
  */
4127
- declare function TabbedPanel({ tabs, defaultTab, activeTab, onTabChange, headerActions, overflow, overflowLabel, keepMounted, className, headerClassName, bodyClassName, footerClassName, footerContent, }: TabbedPanelProps): React__default.JSX.Element;
4552
+ declare function TabbedPanel({ tabs, defaultTab, activeTab, onTabChange, onTabClose, headerActions, headerContent, overflow, overflowLabel, keepMounted, className, headerClassName, bodyClassName, footerClassName, footerContent, }: TabbedPanelProps): React__default.JSX.Element;
4128
4553
 
4129
4554
  /**
4130
- * What a task did with its slice of the run's clock.
4555
+ * Which rows of a tree are open, by key — `true` for every one. The same shape
4556
+ * as a `DataTable`'s `expanded`, so a page holding both passes one value.
4557
+ */
4558
+ type ExpandedKeys = true | Record<string, boolean>;
4559
+ interface UseExpandedKeysOptions {
4560
+ /** Controlled. Pair it with `onExpandedChange`. */
4561
+ expanded?: ExpandedKeys;
4562
+ /** Uncontrolled: what is open at first. Closed by default. */
4563
+ defaultExpanded?: ExpandedKeys;
4564
+ onExpandedChange?: (expanded: ExpandedKeys) => void;
4565
+ /** Every key that can open, so closing one row of `true` keeps the rest open. */
4566
+ keys: string[];
4567
+ }
4568
+ /**
4569
+ * Open and close the rows of a tree, controlled or not. What a chart drawn as
4570
+ * rows uses to nest — a Gantt's subtasks, a heat strip's children — so each
4571
+ * opens the same way and reports the same value.
4572
+ */
4573
+ declare function useExpandedKeys({ expanded, defaultExpanded, onExpandedChange, keys, }: UseExpandedKeysOptions): {
4574
+ isOpen: (key: string) => boolean;
4575
+ toggle: (key: string) => void;
4576
+ };
4577
+
4578
+ /**
4579
+ * What a bar did with its slice of the clock.
4131
4580
  *
4132
4581
  * These are the engine's own step statuses (`StepStatus`, plus `skipped` for a
4133
4582
  * 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.
4583
+ * are the same work seen twice, so they say the same word for the same state.
4584
+ * `refused` is what a rule stopped — reached for and not allowed — which is a
4585
+ * different fact from `skipped`, and both are drawn.
4135
4586
  */
4136
- type TaskGanttStatus = "succeeded" | "running" | "failed" | "needs_input" | "stopped" | "skipped" | "queued";
4587
+ type GanttStatus = "succeeded" | "running" | "failed" | "needs_input" | "stopped" | "skipped" | "queued" | "refused";
4137
4588
  /** A `Date`, an ISO string, or epoch milliseconds — whatever the JSON carried. */
4138
- type TaskGanttInstant = string | number | Date;
4589
+ type GanttInstant = string | number | Date;
4139
4590
  /**
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.
4591
+ * One bar on the clock. A row's own bar is one of these, so is each earlier
4592
+ * attempt — the failed one sitting to the left of the one that stuck — and so
4593
+ * is each of the row's `bars`.
4142
4594
  */
4143
- interface TaskGanttSegment {
4595
+ interface GanttBar {
4144
4596
  /** Offset from the run's zero. Use this, or `startedAt` with `origin`. */
4145
4597
  startMs?: number;
4146
4598
  durationMs?: number;
4147
- startedAt?: TaskGanttInstant;
4148
- finishedAt?: TaskGanttInstant;
4149
- status?: TaskGanttStatus;
4599
+ startedAt?: GanttInstant;
4600
+ finishedAt?: GanttInstant;
4601
+ status?: GanttStatus;
4150
4602
  /** Overrides the hover text, which otherwise reads `key · status · duration`. */
4151
4603
  title?: string;
4604
+ /**
4605
+ * Names the bar, so it can be picked on its own — `fetch_source#1`. Only a
4606
+ * bar in a row's `bars` has one; the row's own bar is picked with the row.
4607
+ */
4608
+ key?: string;
4609
+ /**
4610
+ * Written in the bar — the task a slot held, the participant a layer reached.
4611
+ * A row with a labelled bar grows to the `xs` control height to carry it, and
4612
+ * the bar draws as a card with its fill as a rail, so the text stays legible
4613
+ * on any status or palette colour.
4614
+ */
4615
+ label?: React$1.ReactNode;
4616
+ /**
4617
+ * Which entry of `palette` paints it, in place of its status fill — a layer,
4618
+ * a lane, an agent. A group the palette does not name keeps the status fill,
4619
+ * and a `failed` or `refused` bar is always drawn as one.
4620
+ */
4621
+ group?: string;
4622
+ /**
4623
+ * `solid` (the default) is spent time. `outline` is time held but not spent
4624
+ * — queued, waiting on a gate; `dashed` is time that may be spent — declared,
4625
+ * not yet dispatched.
4626
+ */
4627
+ variant?: "solid" | "outline" | "dashed";
4628
+ /**
4629
+ * A second line under the label — `1,204 of 1,251`, `503`. A row with one
4630
+ * grows to the `md` control height to carry both lines.
4631
+ */
4632
+ note?: React$1.ReactNode;
4633
+ /** A small mark at the bar's end — a `Badge`, an icon, a count. Drawn with a label. */
4634
+ chip?: React$1.ReactNode;
4635
+ /**
4636
+ * What this bar did, for its own hover card — the same fields a row's card
4637
+ * reads. A row with a bar that has one opens no card of its own: its bars
4638
+ * do, so the reader gets the bar under the cursor rather than the row.
4639
+ */
4640
+ summary?: React$1.ReactNode;
4641
+ result?: React$1.ReactNode | Record<string, unknown>;
4642
+ error?: {
4643
+ code?: React$1.ReactNode;
4644
+ message?: React$1.ReactNode;
4645
+ detail?: React$1.ReactNode;
4646
+ };
4647
+ log?: React$1.ReactNode;
4152
4648
  }
4153
- interface TaskGanttTask extends TaskGanttSegment {
4154
- /** `task_key` — what the log lines call this task. Also the row's label. */
4649
+ /**
4650
+ * One row: a task on a run's clock, a worker slot, a layer, a participant —
4651
+ * whatever the surface groups time by. It carries its own bar, earlier
4652
+ * attempts, many `bars` of its own, and the `rows` it opens into.
4653
+ */
4654
+ interface GanttRow extends GanttBar {
4655
+ /** What the log lines call it — `task_key`, `slot-1`, `ingest`. Also the row's label. */
4155
4656
  key: string;
4156
4657
  /** Shown instead of `key`, when the row wants a human name. */
4157
4658
  label?: React$1.ReactNode;
4158
4659
  /** 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. */
4660
+ attempts?: GanttBar[];
4661
+ /**
4662
+ * Many bars on one row, each a thing of its own rather than a retry — what a
4663
+ * worker slot held in order, what a layer was reached for. Drawn with the
4664
+ * row's own bar, if it has one; give each a `label` to say what it was.
4665
+ */
4666
+ bars?: GanttBar[];
4667
+ /** Overrides the right-hand duration cell. `—` when the row never ran. */
4161
4668
  duration?: React$1.ReactNode;
4162
- /** One line — what the task said. The card's last line. */
4669
+ /** One line — what it said. The card's last line. */
4163
4670
  log?: React$1.ReactNode;
4164
4671
  /** A sentence under the card's header, when the row wants one. */
4165
4672
  summary?: React$1.ReactNode;
4166
4673
  /**
4167
- * What the task produced — its `result.json`, or any part of it.
4674
+ * What it produced — its `result.json`, or any part of it.
4168
4675
  *
4169
4676
  * An object renders as label/value pairs, with nested values as JSON; a node
4170
4677
  * renders as given, which is the hook for a kind-specific card (a table
@@ -4179,12 +4686,44 @@ interface TaskGanttTask extends TaskGanttSegment {
4179
4686
  };
4180
4687
  /** Replaces this row's card body entirely. */
4181
4688
  detail?: React$1.ReactNode;
4689
+ /**
4690
+ * The rows this one opens into — the tasks it split into, the participants
4691
+ * of a layer — drawn under it, indented, when it is open. A row with no
4692
+ * timing of its own draws the stretch its rows cover.
4693
+ */
4694
+ rows?: GanttRow[];
4695
+ }
4696
+ /**
4697
+ * A bounded repetition — a loop's rounds — drawn as a bracket over the rows
4698
+ * it holds, with its label on a line of its own above them.
4699
+ */
4700
+ interface GanttBracket {
4701
+ /** The first row it holds, by `key`. */
4702
+ from: string;
4703
+ /** The last row it holds, by `key`. Rows are matched in order, first hit. */
4704
+ to: string;
4705
+ /** `↻ 2 of 3 rounds — understood on round 2`. */
4706
+ label: React$1.ReactNode;
4707
+ }
4708
+ /**
4709
+ * A gate — a moment the run held and spent nothing — drawn as a rule across
4710
+ * the stretch of the clock it held, between the rows it lies between.
4711
+ */
4712
+ interface GanttSeam extends Pick<GanttBar, "startMs" | "durationMs" | "startedAt" | "finishedAt"> {
4713
+ /** The row it follows, by `key`. */
4714
+ after: string;
4715
+ /** The label column's word — `approval`. */
4716
+ label: React$1.ReactNode;
4717
+ /** What it was and how it resolved, written on the rule — `approved by ravi`. */
4718
+ note?: React$1.ReactNode;
4719
+ /** Overrides the right-hand cell, which otherwise reads the time it held. */
4720
+ duration?: React$1.ReactNode;
4182
4721
  }
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;
4722
+ interface GanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
4723
+ /** One entry per row, in order — a run's tasks, its slots, its layers. */
4724
+ rows: GanttRow[];
4725
+ /** The clock's zero, when bars carry timestamps. Defaults to the earliest one. */
4726
+ origin?: GanttInstant;
4188
4727
  /** The clock's ceiling. Defaults to the last end, or `nowMs` if that is later. */
4189
4728
  spanMs?: number;
4190
4729
  /** Draws the *now* line. Set it while the run is in flight; omit it after. */
@@ -4195,10 +4734,32 @@ interface TaskGanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
4195
4734
  ticks?: number;
4196
4735
  formatTick?: (ms: number) => string;
4197
4736
  formatDuration?: (ms: number) => string;
4198
- /** The key column, in px. 112 in the drawer, wider on a dashboard. */
4737
+ /**
4738
+ * The key column, in px. Omit it and the column takes its longest label,
4739
+ * up to 40% of the width — the surface decides the width, never the chart.
4740
+ */
4199
4741
  labelWidth?: number;
4200
4742
  /**
4201
- * `compact` in a drawer, `comfortable` on a dashboard. It moves the bar's
4743
+ * The right-hand duration column, in px. Omit it and it takes its widest
4744
+ * cell; set it on charts stacked over one clock so their tracks end together.
4745
+ */
4746
+ durationWidth?: number;
4747
+ /** Loops, bracketed over their rounds. */
4748
+ brackets?: GanttBracket[];
4749
+ /** Gates, ruled across the time they held. */
4750
+ seams?: GanttSeam[];
4751
+ /**
4752
+ * What each bar `group` is painted with — `{ ingest: "bg-data-1" }`. The
4753
+ * kit ships no hues: a group nobody painted keeps its status fill.
4754
+ */
4755
+ palette?: Record<string, string>;
4756
+ /**
4757
+ * The inside of a bar, for every bar in `bars` — a chip, an icon, a count. Return
4758
+ * `null` for a bar that should stay a plain fill. Wins over `label`.
4759
+ */
4760
+ renderBar?: (bar: GanttBar, row: GanttRow) => React$1.ReactNode;
4761
+ /**
4762
+ * `compact` in a drawer, `comfortable` on a board. It moves the bar's
4202
4763
  * height, not the type scale — one component, three surfaces (SR14).
4203
4764
  */
4204
4765
  density?: "compact" | "comfortable";
@@ -4213,18 +4774,33 @@ interface TaskGanttProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
4213
4774
  * Replaces the default card body, for every row. Return `null` for a row that
4214
4775
  * should not open one.
4215
4776
  */
4216
- renderDetail?: (task: TaskGanttTask) => React$1.ReactNode;
4777
+ renderDetail?: (row: GanttRow) => React$1.ReactNode;
4217
4778
  /** 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). */
4779
+ detailProps?: GanttDetailProps;
4780
+ /** The row or bar picked — what the log is currently filtered to (SR15). */
4220
4781
  selectedKey?: string | null;
4221
4782
  /** Makes the rows pickable. Picking one is what filters the log. */
4222
- onSelectTask?: (key: string) => void;
4783
+ onSelectRow?: (key: string) => void;
4784
+ /**
4785
+ * Makes each keyed bar pickable on its own — the task a layer was reached
4786
+ * for, rather than the layer. A row whose bars are keyed is then
4787
+ * picked by its bars, not as a whole, so a bar is never a button inside a
4788
+ * button. `selectedKey` lights a bar with that key as it lights a row.
4789
+ */
4790
+ onSelectBar?: (barKey: string, rowKey: string) => void;
4791
+ /** Which rows with `rows` are open, by key — `true` for all. Controlled. */
4792
+ expanded?: ExpandedKeys;
4793
+ /** Which are open at first, uncontrolled. Closed by default. */
4794
+ defaultExpanded?: ExpandedKeys;
4795
+ /** A row opened or closed: every open key, as a `DataTable`'s `expanded` reads. */
4796
+ onExpandedChange?: (expanded: ExpandedKeys) => void;
4223
4797
  }
4224
- interface TaskGanttDetailProps {
4225
- /** @default "right" */
4798
+ /**
4799
+ * Where the card opens. With neither `side` nor `align` it opens beside the
4800
+ * cursor, under the row; set either and it is placed against the row instead.
4801
+ */
4802
+ interface GanttDetailProps {
4226
4803
  side?: "top" | "right" | "bottom" | "left";
4227
- /** @default "start" */
4228
4804
  align?: "start" | "center" | "end";
4229
4805
  sideOffset?: number;
4230
4806
  /** @default 200 */
@@ -4235,14 +4811,14 @@ interface TaskGanttDetailProps {
4235
4811
  width?: number | string;
4236
4812
  className?: string;
4237
4813
  }
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. */
4814
+ interface GanttDetailCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4815
+ row: GanttRow;
4816
+ /** Elapsed so far, for a row still running — it has no `durationMs` yet. */
4241
4817
  elapsedMs?: number;
4242
4818
  formatDuration?: (ms: number) => string;
4243
4819
  }
4244
4820
  /**
4245
- * What one task did, as a card.
4821
+ * What one row — or one bar — did, as a card.
4246
4822
  *
4247
4823
  * The body of the hover card, and exported so a surface can compose its own
4248
4824
  * around the same header — `renderDetail` returning this with a kind-specific
@@ -4252,25 +4828,49 @@ interface TaskGanttDetailCardProps extends Omit<React$1.HTMLAttributes<HTMLDivEl
4252
4828
  * Order is fixed and is the order a reader asks in: what state, how long, what
4253
4829
  * went wrong, what came out, what it said last.
4254
4830
  */
4255
- declare const TaskGanttDetailCard: React$1.ForwardRefExoticComponent<TaskGanttDetailCardProps & React$1.RefAttributes<HTMLDivElement>>;
4831
+ declare const GanttDetailCard: React$1.ForwardRefExoticComponent<GanttDetailCardProps & React$1.RefAttributes<HTMLDivElement>>;
4256
4832
  /**
4257
- * Where the time went — one row per task, on the run's own clock.
4833
+ * Where the time went — rows of bars on one clock.
4258
4834
  *
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).
4835
+ * A row is whatever a surface groups time by. Read by **task**, it answers the
4836
+ * question a run detail is opened with: a bar placed by start and sized by
4837
+ * duration puts the slow task, the retry and the branch that never ran in one
4838
+ * glance (SR14). Read by **layer**, the same drawing answers what the run
4839
+ * reached and what it was stopped from reaching: a row per layer opens into its
4840
+ * participants, and each holds the `bars` of the tasks that reached it, painted
4841
+ * by `palette` — `refused` where a rule said no, `dashed` where it was declared
4842
+ * and never dispatched. Read by **slot**, each row is a worker and its bars are
4843
+ * what it ran, in order.
4263
4844
  *
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.
4845
+ * A row opens into its `rows`, indented under it, and a parent with no timing
4846
+ * of its own draws the stretch they cover as a thin rule — so a closed plan
4847
+ * still says how long it took. The clock is milliseconds by default; a plan
4848
+ * read in order passes step numbers and a `formatTick` that names them.
4268
4849
  *
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.
4850
+ * Colour never carries state alone: every row names its duration, a bar titles
4851
+ * itself with its status, a row that never ran is an *outline* rather than a
4852
+ * paler fill, and a refused bar's name is struck through.
4853
+ */
4854
+ declare const Gantt: React$1.ForwardRefExoticComponent<GanttProps & React$1.RefAttributes<HTMLDivElement>>;
4855
+
4856
+ interface HeaderTrailCrumb {
4857
+ label: string;
4858
+ href?: string;
4859
+ onClick?: () => void;
4860
+ }
4861
+ interface HeaderTrailProps extends React$1.HTMLAttributes<HTMLElement> {
4862
+ /** The product's mark — a wordmark or a logo. */
4863
+ brand: React$1.ReactNode;
4864
+ /** Where the reader is, outermost first — `ravi-merugu`, `chickpea-breeding`. */
4865
+ crumbs: HeaderTrailCrumb[];
4866
+ }
4867
+ /**
4868
+ * The left of an app header: the brand, a rule, then the trail to where the
4869
+ * reader is — the account, the project. The brand keeps its width; the trail
4870
+ * truncates, innermost crumb last to go, so a narrow header never grows wider
4871
+ * for it.
4272
4872
  */
4273
- declare const TaskGantt: React$1.ForwardRefExoticComponent<TaskGanttProps & React$1.RefAttributes<HTMLDivElement>>;
4873
+ declare const HeaderTrail: React$1.ForwardRefExoticComponent<HeaderTrailProps & React$1.RefAttributes<HTMLElement>>;
4274
4874
 
4275
4875
  interface TaskNodeTag {
4276
4876
  /** `3 lanes`, `attempt 2`, `map_over: datasets`. */
@@ -4367,76 +4967,10 @@ interface TemplatePickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement
4367
4967
  * again**. That is why unavailable options are listed rather than hidden — the
4368
4968
  * reason a template does not fit ("needs a time column") is information about
4369
4969
  * 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
4970
  *
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.
4971
+ * @deprecated Import from `@invana/assistant`. This export leaves `@invana/ui` in the next release.
4437
4972
  */
4438
- declare const Terminal: React$1.ForwardRefExoticComponent<TerminalProps & React$1.RefAttributes<HTMLDivElement>>;
4439
- declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps & React$1.RefAttributes<HTMLDivElement>>;
4973
+ declare const TemplatePicker: React$1.ForwardRefExoticComponent<TemplatePickerProps & React$1.RefAttributes<HTMLDivElement>>;
4440
4974
 
4441
4975
  /**
4442
4976
  * How the list arranges one entry.
@@ -4448,8 +4982,12 @@ declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps
4448
4982
  * `rail` — `when` sits above the title and a line threads the markers. For a
4449
4983
  * narrow card or sidebar, where a 72px column would eat a third of the width
4450
4984
  * and titles wrap anyway; the rail supplies the alignment the column was.
4985
+ *
4986
+ * `compact` — `when`, the marker and the text on one line, no rules. For a few
4987
+ * dated events inside an answer, `wk 8 · Yantian port congestion notice`,
4988
+ * where rules between two lines would outweigh the lines.
4451
4989
  */
4452
- type TimelineVariant = "columns" | "rail";
4990
+ type TimelineVariant = "columns" | "rail" | "compact";
4453
4991
  interface TimelineEntryProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "title"> {
4454
4992
  /** When — `Fri 5 Sep`, `09:47`, `Sun`. */
4455
4993
  when: React$1.ReactNode;
@@ -4457,6 +4995,21 @@ interface TimelineEntryProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>,
4457
4995
  title?: React$1.ReactNode;
4458
4996
  /** A marker in the rail — a `StatusDot`, usually. */
4459
4997
  marker?: React$1.ReactNode;
4998
+ /**
4999
+ * Calls the entry out on a tinted ground — the anomaly the events around it
5000
+ * explain. `compact` only.
5001
+ */
5002
+ highlight?: "error" | "warning" | "success" | "info";
5003
+ /**
5004
+ * The events this one breaks into — `TimelineEntry`s drawn under it, in the
5005
+ * list's variant, when it is open. A chevron beside the entry opens it.
5006
+ */
5007
+ nested?: React$1.ReactNode;
5008
+ /** Controlled. Pair it with `onOpenChange`. */
5009
+ open?: boolean;
5010
+ /** Uncontrolled: open at first. Closed by default. */
5011
+ defaultOpen?: boolean;
5012
+ onOpenChange?: (open: boolean) => void;
4460
5013
  children?: React$1.ReactNode;
4461
5014
  }
4462
5015
  interface TimelineListProps extends React$1.HTMLAttributes<HTMLOListElement> {
@@ -4474,7 +5027,9 @@ interface TimelineFooterProps extends React$1.HTMLAttributes<HTMLLIElement> {
4474
5027
  * because the order carries meaning — these are events in sequence, not a set.
4475
5028
  *
4476
5029
  * Both variants take the same entries; only the arrangement differs. See
4477
- * `TimelineVariant` for which one a surface wants.
5030
+ * `TimelineVariant` for which one a surface wants. An entry that breaks into
5031
+ * smaller events carries them as `nested` entries, drawn under it, in the
5032
+ * same variant, once it is opened.
4478
5033
  */
4479
5034
  declare const TimelineList: React$1.ForwardRefExoticComponent<TimelineListProps & React$1.RefAttributes<HTMLOListElement>>;
4480
5035
  declare const TimelineEntry: React$1.ForwardRefExoticComponent<TimelineEntryProps & React$1.RefAttributes<HTMLLIElement>>;
@@ -4488,8 +5043,43 @@ declare const TimelineEntry: React$1.ForwardRefExoticComponent<TimelineEntryProp
4488
5043
  * `columns` has no rail to run on, so the footer is a plain last row there.
4489
5044
  */
4490
5045
  declare const TimelineFooter: React$1.ForwardRefExoticComponent<TimelineFooterProps & React$1.RefAttributes<HTMLLIElement>>;
5046
+ interface TimelineSectionProps extends React$1.HTMLAttributes<HTMLLIElement> {
5047
+ children?: React$1.ReactNode;
5048
+ }
5049
+ /**
5050
+ * A label over a run of entries — `Before`, `Spike`, `After` — for events read
5051
+ * around one moment rather than as one sequence.
5052
+ */
5053
+ declare const TimelineSection: React$1.ForwardRefExoticComponent<TimelineSectionProps & React$1.RefAttributes<HTMLLIElement>>;
4491
5054
 
4492
- declare const Toolbar: React__default.FC;
5055
+ /** One control of a toolbar: a word, or an icon named by its tooltip. */
5056
+ interface ToolbarAction {
5057
+ id: string;
5058
+ /** The word, or — with an `icon` — the tooltip and accessible name. */
5059
+ label: string;
5060
+ /** Draws the control as an icon; the caller's, at 16px. */
5061
+ icon?: React$1.ReactNode;
5062
+ /** A toggle that is on — `Lock` while the canvas is locked. */
5063
+ pressed?: boolean;
5064
+ disabled?: boolean;
5065
+ }
5066
+ /** A rule between groups of controls. */
5067
+ interface ToolbarSeparator {
5068
+ separator: true;
5069
+ }
5070
+ type ToolbarItem = ToolbarAction | ToolbarSeparator;
5071
+ interface ToolbarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
5072
+ items: ToolbarItem[];
5073
+ /** A control was pressed, by its `id`. */
5074
+ onAction?: (id: string) => void;
5075
+ }
5076
+ /**
5077
+ * A row of controls over a canvas or a panel — icon toggles named by their
5078
+ * tooltips, words, and rules between groups — on the control scale a step
5079
+ * below its bar (`sm`). What each control does is the caller's: it says which
5080
+ * was pressed.
5081
+ */
5082
+ declare const Toolbar: React$1.ForwardRefExoticComponent<ToolbarProps & React$1.RefAttributes<HTMLDivElement>>;
4493
5083
 
4494
5084
  interface TouchItem {
4495
5085
  layer: Layer;
@@ -4505,6 +5095,12 @@ interface TouchItem {
4505
5095
  interface TouchStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4506
5096
  items: TouchItem[];
4507
5097
  palette?: LayerPalette;
5098
+ /**
5099
+ * `row` (default) is one cell per layer on one line, above a trace. `column`
5100
+ * is one line per layer, the note right-aligned — how a 420px panel reads the
5101
+ * same summary, where six cells on a line would truncate every note.
5102
+ */
5103
+ orientation?: "row" | "column";
4508
5104
  }
4509
5105
  /**
4510
5106
  * What a run touched at all — one cell per layer, on one line.
@@ -4626,6 +5222,13 @@ interface TourProps {
4626
5222
  declare function Tour({ controller, steps, onExit, onComplete, badgeLabel, prevLabel, nextLabel, finishLabel, exitLabel, showExit, showCounter, showProgressBar, position, className, }: TourProps): React$1.JSX.Element | null;
4627
5223
 
4628
5224
  interface TraceListProps extends React$1.HTMLAttributes<HTMLDivElement> {
5225
+ /**
5226
+ * `default` is the run view: stripe, sequence, layer, duration. `progress` is
5227
+ * the trace a running answer streams — a dot per step (filled when done,
5228
+ * pulsing while it runs, hollow while it waits), the step in plain text, and
5229
+ * its timing or count at the right in mono.
5230
+ */
5231
+ variant?: "default" | "progress";
4629
5232
  children?: React$1.ReactNode;
4630
5233
  }
4631
5234
  /**
@@ -4638,7 +5241,7 @@ interface TraceListProps extends React$1.HTMLAttributes<HTMLDivElement> {
4638
5241
  *
4639
5242
  * Nothing here is an axis. The layer a step spent is a column on its row, so a
4640
5243
  * 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`.
5244
+ * that holds it. The clock reading of the same trace is `Gantt`, by task or by layer.
4642
5245
  */
4643
5246
  declare const TraceList: React$1.ForwardRefExoticComponent<TraceListProps & React$1.RefAttributes<HTMLDivElement>>;
4644
5247
  interface TraceStepProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect" | "role"> {
@@ -4667,6 +5270,15 @@ interface TraceStepProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
4667
5270
  struck?: boolean;
4668
5271
  selected?: boolean;
4669
5272
  onSelect?: () => void;
5273
+ /**
5274
+ * Where the step is, in a `progress` list: `done`, `running`, `pending`,
5275
+ * `failed`, `waiting` on the reader, `retrying` after a failed attempt, or
5276
+ * `stopped` by the reader. Defaults to `done`. The run view says the same
5277
+ * with `dim` and `struck`.
5278
+ */
5279
+ status?: "done" | "running" | "pending" | "failed" | "waiting" | "retrying" | "stopped";
5280
+ /** Why a failed step failed, on a line under it in a `progress` list. */
5281
+ error?: React$1.ReactNode;
4670
5282
  }
4671
5283
  /**
4672
5284
  * One event of a run: a step, and everything that is true of it.
@@ -4756,64 +5368,169 @@ interface UnderDevelopmentProps extends VariantProps<typeof underDevelopmentVari
4756
5368
  }
4757
5369
  declare function UnderDevelopment({ title, description, iconSize, size, className, }: UnderDevelopmentProps): React$1.JSX.Element;
4758
5370
 
4759
- interface TypographyPreProps extends React$1.HTMLAttributes<HTMLPreElement> {
5371
+ /** One page in the strip — its tab label plus the content shown when active. */
5372
+ interface WorkbookPage {
5373
+ /** Stable identity — the key for mounting and the value passed to callbacks. */
5374
+ id: string;
5375
+ /** Tab label. */
5376
+ title: string;
5377
+ /** What renders in the body when this page is active (or, with
5378
+ * `keepMounted`, stays mounted-but-hidden while another page is active). */
5379
+ content: ReactNode;
5380
+ /** Optional leading icon in the tab. */
5381
+ icon?: ElementType;
5382
+ /** Disable selecting this tab. */
5383
+ disabled?: boolean;
5384
+ /** Extra classes for *this* tab button (win over the built-ins via
5385
+ * tailwind-merge) — e.g. a per-page accent. */
5386
+ tabClassName?: string;
5387
+ /** Inline styles for *this* tab button — e.g. a custom brand colour. */
5388
+ tabStyle?: CSSProperties;
5389
+ /** Draw an inline `×` on this tab (active or not) that calls the view's
5390
+ * `onClose`, in place of the caret menu — for a page with nothing to manage
5391
+ * but its own closing. Needs `onClose`. */
5392
+ closable?: boolean;
5393
+ }
5394
+ /**
5395
+ * One entry in the active tab's actions dropdown. The consumer supplies the list
5396
+ * (`pageMenuItems`); each item's `onSelect` is invoked with the id of the page
5397
+ * whose menu is open. This is how a host declares what a page can do — rename,
5398
+ * duplicate, remove, export, … — without the view knowing any of those verbs.
5399
+ */
5400
+ interface WorkbookPageMenuItem {
5401
+ /** Stable key for the row. */
5402
+ id: string;
5403
+ /** Row label. */
5404
+ label: string;
5405
+ /** Optional leading icon. */
5406
+ icon?: ElementType;
5407
+ /** Invoked with the active page's id when the row is chosen. */
5408
+ onSelect: (pageId: string) => void;
5409
+ /** Render with destructive (danger) styling — e.g. "Remove". */
5410
+ destructive?: boolean;
5411
+ /** Disable the row — a boolean, or a predicate on the page id (e.g. disable
5412
+ * "Remove" on the last remaining page). */
5413
+ disabled?: boolean | ((pageId: string) => boolean);
5414
+ /** Draw a separator immediately *before* this row (to group actions). */
5415
+ separatorBefore?: boolean;
5416
+ }
5417
+ /**
5418
+ * An extra icon button for the header's right-pinned control cluster (next to the
5419
+ * pager / `+`) — e.g. settings, about, help. Strip-level, not per-page: its
5420
+ * `onSelect` takes no page id. The consumer supplies the list via `headerActions`.
5421
+ */
5422
+ interface WorkbookAction {
5423
+ /** Stable key for the button. */
5424
+ id: string;
5425
+ /** Accessible label / tooltip. */
5426
+ label: string;
5427
+ /** Icon component. */
5428
+ icon: ElementType;
5429
+ /** Click handler. */
5430
+ onClick: () => void;
5431
+ /** Optional disabled state. */
5432
+ disabled?: boolean;
4760
5433
  }
5434
+ interface WorkbookProps {
5435
+ /** The pages, in tab order. */
5436
+ pages: WorkbookPage[];
5437
+ /** Id of the active page. */
5438
+ activeId: string;
5439
+ /** Select a page (tab click). */
5440
+ onSelect: (id: string) => void;
5441
+ /** Show a `+` (in the pager cluster) that requests a new page. Omit to hide it. */
5442
+ onAdd?: () => void;
5443
+ /** Which edge of the body the tab strip sits on — `'top'` (default) or
5444
+ * `'bottom'`, the spreadsheet look, with each tab open at its top. */
5445
+ tabPosition?: 'top' | 'bottom';
5446
+ /** Which end of the strip the pager cluster (prev / next / `+`) docks at —
5447
+ * `'start'` (left of the tabs) or `'end'` (right of the tabs). Default `'end'`. */
5448
+ pagerPosition?: 'start' | 'end';
5449
+ /** Extra icon buttons pinned to the far right of the strip (right of the pager)
5450
+ * — e.g. settings, about. Optional. */
5451
+ headerActions?: WorkbookAction[];
5452
+ /** Actions offered on the **active** tab via a caret dropdown. Omit (or pass an
5453
+ * empty list) to hide the caret entirely. */
5454
+ pageMenuItems?: WorkbookPageMenuItem[];
5455
+ /** Close a page — invoked by the `×` on a `closable` page. */
5456
+ onClose?: (id: string) => void;
5457
+ /** Tooltip / aria label for the add button. */
5458
+ addLabel?: string;
5459
+ /** Fold tabs that don't fit into a `…` menu at the end of the strip, instead of
5460
+ * scrolling the strip horizontally. Default `true` — the pager still steps
5461
+ * through every page, folded or not. */
5462
+ overflow?: boolean;
5463
+ /** Accessible label / tooltip for the overflow (`…`) trigger. */
5464
+ overflowLabel?: string;
5465
+ /** Keep every page mounted and hide the inactive ones (default `true`), so a
5466
+ * page's state survives tab switches — a canvas's camera and layout, a
5467
+ * board's scroll and fetched data. Set `false` to mount only the active page. */
5468
+ keepMounted?: boolean;
5469
+ /** Extra classes on the root column. */
5470
+ className?: string;
5471
+ /** Extra classes on the header (tab strip). */
5472
+ headerClassName?: string;
5473
+ /** Extra classes on the body. */
5474
+ bodyClassName?: string;
5475
+ /** Extra classes applied to *every* tab button (win over the built-ins via
5476
+ * tailwind-merge). Per-page `WorkbookPage.tabClassName` layers on top of this. */
5477
+ tabClassName?: string;
5478
+ /** Extra classes applied to the **active** tab only — override the default
5479
+ * folder-tab look (e.g. a different accent colour). */
5480
+ activeTabClassName?: string;
5481
+ }
5482
+ /**
5483
+ * A folder-tab strip over independent pages. The active tab carries a
5484
+ * caret dropdown of consumer-supplied {@link WorkbookPageMenuItem}s (rename /
5485
+ * duplicate / remove / …). Presentational and engine-agnostic — the consumer owns
5486
+ * the page list + active id and applies the reported intents. See the module
5487
+ * header for `keepMounted` and strip-renderer notes.
5488
+ */
5489
+ 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;
5490
+
5491
+ type TypographyPreProps = React$1.HTMLAttributes<HTMLPreElement>;
4761
5492
  declare const TypographyPre: React$1.ForwardRefExoticComponent<TypographyPreProps & React$1.RefAttributes<HTMLPreElement>>;
4762
5493
 
4763
- interface TypographyListProps extends React$1.HTMLAttributes<HTMLUListElement> {
4764
- }
5494
+ type TypographyListProps = React$1.HTMLAttributes<HTMLUListElement>;
4765
5495
  declare const TypographyList: React$1.ForwardRefExoticComponent<TypographyListProps & React$1.RefAttributes<HTMLUListElement>>;
4766
5496
 
4767
- interface TypographyMutedProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
4768
- }
5497
+ type TypographyMutedProps = React$1.HTMLAttributes<HTMLParagraphElement>;
4769
5498
  declare const TypographyMuted: React$1.ForwardRefExoticComponent<TypographyMutedProps & React$1.RefAttributes<HTMLParagraphElement>>;
4770
5499
 
4771
- interface TypographySmallProps extends React$1.HTMLAttributes<HTMLElement> {
4772
- }
5500
+ type TypographySmallProps = React$1.HTMLAttributes<HTMLElement>;
4773
5501
  declare const TypographySmall: React$1.ForwardRefExoticComponent<TypographySmallProps & React$1.RefAttributes<HTMLElement>>;
4774
5502
 
4775
- interface TypographyLargeProps extends React$1.HTMLAttributes<HTMLDivElement> {
4776
- }
5503
+ type TypographyLargeProps = React$1.HTMLAttributes<HTMLDivElement>;
4777
5504
  declare const TypographyLarge: React$1.ForwardRefExoticComponent<TypographyLargeProps & React$1.RefAttributes<HTMLDivElement>>;
4778
5505
 
4779
- interface TypographyLeadProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
4780
- }
5506
+ type TypographyLeadProps = React$1.HTMLAttributes<HTMLParagraphElement>;
4781
5507
  declare const TypographyLead: React$1.ForwardRefExoticComponent<TypographyLeadProps & React$1.RefAttributes<HTMLParagraphElement>>;
4782
5508
 
4783
- interface TypographyInlineCodeProps extends React$1.HTMLAttributes<HTMLElement> {
4784
- }
5509
+ type TypographyInlineCodeProps = React$1.HTMLAttributes<HTMLElement>;
4785
5510
  declare const TypographyInlineCode: React$1.ForwardRefExoticComponent<TypographyInlineCodeProps & React$1.RefAttributes<HTMLElement>>;
4786
5511
 
4787
- interface TypographyBlockquoteProps extends React$1.BlockquoteHTMLAttributes<HTMLQuoteElement> {
4788
- }
5512
+ type TypographyBlockquoteProps = React$1.BlockquoteHTMLAttributes<HTMLQuoteElement>;
4789
5513
  declare const TypographyBlockquote: React$1.ForwardRefExoticComponent<TypographyBlockquoteProps & React$1.RefAttributes<HTMLQuoteElement>>;
4790
5514
 
4791
- interface TypographyPProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
4792
- }
5515
+ type TypographyPProps = React$1.HTMLAttributes<HTMLParagraphElement>;
4793
5516
  declare const TypographyP: React$1.ForwardRefExoticComponent<TypographyPProps & React$1.RefAttributes<HTMLParagraphElement>>;
4794
5517
 
4795
- interface TypographyH6Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4796
- }
5518
+ type TypographyH6Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4797
5519
  declare const TypographyH6: React$1.ForwardRefExoticComponent<TypographyH6Props & React$1.RefAttributes<HTMLHeadingElement>>;
4798
5520
 
4799
- interface TypographyH5Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4800
- }
5521
+ type TypographyH5Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4801
5522
  declare const TypographyH5: React$1.ForwardRefExoticComponent<TypographyH5Props & React$1.RefAttributes<HTMLHeadingElement>>;
4802
5523
 
4803
- interface TypographyH4Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4804
- }
5524
+ type TypographyH4Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4805
5525
  declare const TypographyH4: React$1.ForwardRefExoticComponent<TypographyH4Props & React$1.RefAttributes<HTMLHeadingElement>>;
4806
5526
 
4807
- interface TypographyH3Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4808
- }
5527
+ type TypographyH3Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4809
5528
  declare const TypographyH3: React$1.ForwardRefExoticComponent<TypographyH3Props & React$1.RefAttributes<HTMLHeadingElement>>;
4810
5529
 
4811
- interface TypographyH2Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4812
- }
5530
+ type TypographyH2Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4813
5531
  declare const TypographyH2: React$1.ForwardRefExoticComponent<TypographyH2Props & React$1.RefAttributes<HTMLHeadingElement>>;
4814
5532
 
4815
- interface TypographyH1Props extends React$1.HTMLAttributes<HTMLHeadingElement> {
4816
- }
5533
+ type TypographyH1Props = React$1.HTMLAttributes<HTMLHeadingElement>;
4817
5534
  declare const TypographyH1: React$1.ForwardRefExoticComponent<TypographyH1Props & React$1.RefAttributes<HTMLHeadingElement>>;
4818
5535
 
4819
5536
  declare const Typography: {
@@ -4906,4 +5623,4 @@ interface UseOverflowItemsResult {
4906
5623
  */
4907
5624
  declare function useOverflowItems({ count, enabled, pinnedIndex, reserve, }: UseOverflowItemsOptions): UseOverflowItemsResult;
4908
5625
 
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 };
5626
+ 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, HeaderTrail, type HeaderTrailCrumb, type HeaderTrailProps, 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, StageTrail, type StageTrailProps, type StageTrailStep, 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 };