@invana/ui 0.0.20 → 0.0.22

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
@@ -60,12 +60,29 @@ declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.Ava
60
60
  declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
61
61
  declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
62
62
 
63
+ /**
64
+ * `variant` is the treatment, `tone` is the meaning.
65
+ *
66
+ * They are separate axes on purpose: "this is a warning" and "this is filled
67
+ * rather than outlined" are different questions, and crossing them into one
68
+ * enum (`warning-soft`, `warning-outline`, …) multiplies into a list nobody can
69
+ * hold. A tone sets two custom properties; the treatments read them. So `tone`
70
+ * recolours `default`, `outline` and `soft`, and leaves `secondary` and
71
+ * `destructive` alone — those are already a colour decision.
72
+ *
73
+ * No pill. A badge is structure, so it takes the structure radius, 0 (see
74
+ * `@invana/styling` › border radius, decided 01-09-2026). Where round *is* the
75
+ * object — a count bubble on a nav item, a state marker — that is `StatusDot`
76
+ * or an explicit `rounded-full`, never a badge variant.
77
+ */
63
78
  declare const badgeVariants: (props?: ({
64
79
  variant?: "default" | "destructive" | "outline" | "secondary" | "soft" | null | undefined;
80
+ tone?: "primary" | "success" | "warning" | "info" | "muted" | null | undefined;
81
+ size?: "default" | "xs" | "sm" | null | undefined;
65
82
  } & class_variance_authority_types.ClassProp) | undefined) => string;
66
83
  interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
67
84
  }
68
- declare function Badge({ className, variant, ...props }: BadgeProps): React$1.JSX.Element;
85
+ declare function Badge({ className, variant, tone, size, ...props }: BadgeProps): React$1.JSX.Element;
69
86
 
70
87
  declare const Breadcrumb: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
71
88
  separator?: React$1.ReactNode;
@@ -87,7 +104,7 @@ declare const BreadcrumbEllipsis: {
87
104
 
88
105
  declare const buttonVariants: (props?: ({
89
106
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "soft" | null | undefined;
90
- size?: "default" | "sm" | "lg" | "icon" | "nav-icon" | null | undefined;
107
+ size?: "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon" | "nav-icon" | null | undefined;
91
108
  } & class_variance_authority_types.ClassProp) | undefined) => string;
92
109
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
93
110
  asChild?: boolean;
@@ -265,9 +282,10 @@ declare function ItemGroup({ className, ...props }: React$1.ComponentProps<"div"
265
282
  declare function ItemSeparator({ className, ...props }: React$1.ComponentProps<typeof Separator>): React$1.JSX.Element;
266
283
  declare const itemVariants: (props?: ({
267
284
  variant?: "default" | "outline" | "muted" | null | undefined;
268
- size?: "default" | "sm" | null | undefined;
285
+ size?: "default" | "xs" | "sm" | null | undefined;
286
+ selected?: boolean | null | undefined;
269
287
  } & class_variance_authority_types.ClassProp) | undefined) => string;
270
- declare function Item({ className, variant, size, asChild, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
288
+ declare function Item({ className, variant, size, selected, asChild, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
271
289
  asChild?: boolean;
272
290
  }): React$1.JSX.Element;
273
291
  declare const itemMediaVariants: (props?: ({
@@ -350,7 +368,15 @@ declare const Popover: React$1.FC<PopoverPrimitive.PopoverProps>;
350
368
  declare const PopoverTrigger: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
351
369
  declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
352
370
 
353
- declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
371
+ /**
372
+ * `sm` (4px) is the inline meter — a budget bar under a figure, a quota in a
373
+ * row. At that height it reads as part of the number above it rather than as a
374
+ * control, which is the point: nobody drags it.
375
+ */
376
+ type ProgressSize = "default" | "sm";
377
+ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
378
+ size?: ProgressSize;
379
+ } & React$1.RefAttributes<HTMLDivElement>>;
354
380
 
355
381
  declare const ResizablePanelGroup: (props: React.ComponentProps<typeof Group>) => React$1.JSX.Element;
356
382
  declare const ResizablePanel: typeof Panel;
@@ -367,7 +393,7 @@ declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dial
367
393
  declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
368
394
  declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
369
395
  declare const sheetVariants: (props?: ({
370
- side?: "top" | "right" | "bottom" | "left" | null | undefined;
396
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
371
397
  } & class_variance_authority_types.ClassProp) | undefined) => string;
372
398
  interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
373
399
  }
@@ -457,7 +483,42 @@ declare const Toaster: ({ ...props }: ToasterProps) => React$1.JSX.Element;
457
483
 
458
484
  declare function Spinner({ className, ...props }: React.ComponentProps<"svg">): React$1.JSX.Element;
459
485
 
460
- declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & React$1.RefAttributes<HTMLTableElement>>;
486
+ /**
487
+ * The state of one thing, as a dot.
488
+ *
489
+ * It appears beside almost everything that has a state — a step in a run, an
490
+ * agent in a roster, a dataset, a schedule firing, a node type in a legend.
491
+ * Extracted from `ChatSessionTaskRow`, which had grown its own copy: the same
492
+ * six states were being re-declared per surface, and two of them had already
493
+ * drifted apart.
494
+ *
495
+ * `rounded-full` is correct here and not a violation of the radius rule — a
496
+ * status dot is one of the shapes where round *is* the object, alongside
497
+ * avatars and spinners (see `@invana/styling` › border radius).
498
+ *
499
+ * **A dot is never the only carrier of state.** Every use names the state
500
+ * beside it, or exposes it through `label`. Colour alone fails colour-blind
501
+ * readers, and a `running` pulse fails anyone with motion reduced — which the
502
+ * `motion-reduce` variant below honours by design.
503
+ */
504
+ declare const statusDotVariants: (props?: ({
505
+ tone?: "success" | "warning" | "info" | "muted" | "error" | "running" | "queued" | null | undefined;
506
+ size?: "xs" | "sm" | "lg" | "md" | null | undefined;
507
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
508
+ interface StatusDotProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children">, VariantProps<typeof statusDotVariants> {
509
+ /**
510
+ * What this state is called, for a screen reader.
511
+ *
512
+ * Pass it when the dot is the only thing carrying the state. Omit it when
513
+ * the state is already written beside the dot, so it is not announced twice.
514
+ */
515
+ label?: string;
516
+ }
517
+ declare const StatusDot: React$1.ForwardRefExoticComponent<StatusDotProps & React$1.RefAttributes<HTMLSpanElement>>;
518
+
519
+ declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & {
520
+ density?: "default" | "compact";
521
+ } & React$1.RefAttributes<HTMLTableElement>>;
461
522
  declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
462
523
  declare const TableBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
463
524
  declare const TableFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
@@ -466,7 +527,21 @@ declare const TableHead: React$1.ForwardRefExoticComponent<React$1.ThHTMLAttribu
466
527
  declare const TableCell: React$1.ForwardRefExoticComponent<React$1.TdHTMLAttributes<HTMLTableCellElement> & React$1.RefAttributes<HTMLTableCellElement>>;
467
528
  declare const TableCaption: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableCaptionElement> & React$1.RefAttributes<HTMLTableCaptionElement>>;
468
529
 
469
- declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
530
+ /**
531
+ * Density for a tab strip.
532
+ *
533
+ * `sm` (28px) is the application tab strip — a panel's views, a canvas's open
534
+ * tabs. It drops the list's inset background and padding: at that height the
535
+ * tray reads as a second toolbar, and the strip sits directly on the panel's
536
+ * own rule instead.
537
+ *
538
+ * Passed through context rather than as a prop on every part, so a caller sets
539
+ * it once on `<Tabs>` and the list and triggers follow.
540
+ */
541
+ type TabsSize = "default" | "sm";
542
+ declare const Tabs: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
543
+ size?: TabsSize;
544
+ } & React$1.RefAttributes<HTMLDivElement>>;
470
545
  declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
471
546
  declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
472
547
  declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
@@ -489,11 +564,186 @@ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGrou
489
564
  size?: "default" | "sm" | "lg" | null | undefined;
490
565
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
491
566
 
567
+ declare const agentChipVariants: (props?: ({
568
+ kind?: "agent" | "person" | null | undefined;
569
+ inactive?: boolean | null | undefined;
570
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
571
+ interface AgentChipProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof agentChipVariants> {
572
+ /** A 12px lucide icon, or an `<Avatar>`. */
573
+ icon?: React$1.ReactNode;
574
+ name: React$1.ReactNode;
575
+ }
576
+ /**
577
+ * Who did this — an agent or a person — as a 22px chip.
578
+ *
579
+ * It appears wherever work has a holder: a task row's assignee, a step's actor,
580
+ * a skill's users, a rule's audience, a proposal's author.
581
+ *
582
+ * Deliberately not a `Badge`. A badge carries a *state* and takes a tone from
583
+ * the status palette; this carries an *identity* and must never look like a
584
+ * status. Same reason it does not take a colour: agents are told apart by name,
585
+ * not by hue.
586
+ */
587
+ declare const AgentChip: React$1.ForwardRefExoticComponent<AgentChipProps & React$1.RefAttributes<HTMLSpanElement>>;
588
+
589
+ declare const stateVariants: (props?: ({
590
+ tone?: "active" | "error" | "running" | "draft" | "review" | null | undefined;
591
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
592
+ interface AppStatusBarProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof stateVariants> {
593
+ /** The session's state — `ACTIVE`, `DRAFT`, `RUNNING`, `REVIEW`. */
594
+ state?: React$1.ReactNode;
595
+ /** What the session currently holds — `26 nodes · 41 edges · 60 fps`. */
596
+ children?: React$1.ReactNode;
597
+ /** Right-hand slot. The build version, usually. */
598
+ end?: React$1.ReactNode;
599
+ }
600
+ /**
601
+ * The 25px line at the bottom of the window.
602
+ *
603
+ * It describes the **session**, not the screen: what is loaded, what state it
604
+ * is in, which build is running. That is why it barely changes as you navigate
605
+ * — a status bar that flickered with every route would stop being somewhere the
606
+ * eye can rest.
607
+ *
608
+ * Generalised from `ChatSessionStatusBar`, which is the same bar scoped to a
609
+ * thread. This one adds the state marker, because at the application level
610
+ * "what state is this in" is the first question and a bare row of counters does
611
+ * not answer it.
612
+ */
613
+ declare const AppStatusBar: React$1.ForwardRefExoticComponent<AppStatusBarProps & React$1.RefAttributes<HTMLDivElement>>;
614
+
615
+ /**
616
+ * TODO — provisional. Built ahead of its design review.
617
+ *
618
+ * The chart set was deliberately deferred while the rest of the kit was built,
619
+ * because charts are the one group with a real design question in them rather
620
+ * than a markup question: which forms this product actually needs, at what
621
+ * sizes, and how much a 330px drawer can carry. This component satisfies the
622
+ * dataviz rules and the validated palette, but the *form inventory* has not been
623
+ * agreed — treat the API as unsettled until a board screen uses it in anger.
624
+ */
625
+
626
+ interface BarDatum {
627
+ label: React$1.ReactNode;
628
+ value: number;
629
+ /**
630
+ * Overrides the series colour for this bar. Use a data-palette token
631
+ * (`var(--color-data-3)`) when the bar's identity is an entity — a node type,
632
+ * a theme — so it matches that entity everywhere else it appears.
633
+ */
634
+ color?: string;
635
+ /** What the tip should read, if not the raw value. */
636
+ display?: React$1.ReactNode;
637
+ }
638
+ interface BarChartHProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
639
+ data: BarDatum[];
640
+ /** Fixes the scale. Defaults to the largest value present. */
641
+ max?: number;
642
+ /** Width of the label column, so bars start on the same x. */
643
+ labelWidth?: number;
644
+ /** Series colour when a datum does not override it. */
645
+ color?: string;
646
+ /** Names what is plotted. A single series needs no legend when this is set. */
647
+ caption?: React$1.ReactNode;
648
+ }
649
+ /**
650
+ * Magnitude across a handful of named things.
651
+ *
652
+ * Horizontal because the labels are words — a stock, a pattern, a theme — and
653
+ * words read badly rotated under a column. Bars grow from a single baseline on
654
+ * the left, so length is the only thing carrying the value.
655
+ *
656
+ * One series, so there is no legend: `caption` names what is plotted. Every bar
657
+ * is directly labelled at its tip, which is also what discharges the light-mode
658
+ * contrast obligation on the data palette — identity and value are never
659
+ * carried by hue alone.
660
+ */
661
+ declare const BarChartH: React$1.ForwardRefExoticComponent<BarChartHProps & React$1.RefAttributes<HTMLDivElement>>;
662
+
663
+ /**
664
+ * TODO — provisional. Built ahead of its design review.
665
+ *
666
+ * The chart set was deliberately deferred while the rest of the kit was built,
667
+ * because charts are the one group with a real design question in them rather
668
+ * than a markup question: which forms this product actually needs, at what
669
+ * sizes, and how much a 330px drawer can carry. This component satisfies the
670
+ * dataviz rules and the validated palette, but the *form inventory* has not been
671
+ * agreed — treat the API as unsettled until a board screen uses it in anger.
672
+ */
673
+
674
+ interface ColumnDatum {
675
+ /** The period — `wk 36`. */
676
+ label: React$1.ReactNode;
677
+ /** A second line under the label — `1–5 Sep`. */
678
+ sublabel?: React$1.ReactNode;
679
+ value: number;
680
+ display?: React$1.ReactNode;
681
+ }
682
+ interface BarChartVProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
683
+ data: ColumnDatum[];
684
+ /** Fixes the scale. Defaults to the largest value present. */
685
+ max?: number;
686
+ /** Values to draw a hairline at — `[50, 75, 100]`. */
687
+ gridlines?: number[];
688
+ height?: number;
689
+ color?: string;
690
+ /** Colour for the column the story is about. Defaults to `color`. */
691
+ highlightColor?: string;
692
+ /** Which column carries the emphasis — usually the most recent. */
693
+ highlightIndex?: number;
694
+ /**
695
+ * Which columns get a value on the cap.
696
+ *
697
+ * `last` by default. A number on every column stops being a label and becomes
698
+ * texture; the gridlines carry the rest.
699
+ */
700
+ labelMode?: "last" | "all" | "none";
701
+ caption?: React$1.ReactNode;
702
+ }
703
+ /**
704
+ * One measure over a few periods.
705
+ *
706
+ * Vertical because the x-axis is time and time reads left to right. Columns are
707
+ * capped at 24px and separated by real gaps, so the band's leftover is air
708
+ * rather than a fatter bar.
709
+ *
710
+ * `labelMode` defaults to `last`: the current period is the one being asked
711
+ * about, and the gridlines carry the others. One series, so no legend —
712
+ * `caption` says what is plotted.
713
+ */
714
+ declare const BarChartV: React$1.ForwardRefExoticComponent<BarChartVProps & React$1.RefAttributes<HTMLDivElement>>;
715
+
492
716
  interface ButtonWithTooltipProps extends ButtonProps {
493
717
  tooltip: React__default.ReactNode;
494
718
  }
495
719
  declare function ButtonWithTooltip(props: ButtonWithTooltipProps): React__default.JSX.Element;
496
720
 
721
+ interface CannotAnswerCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
722
+ /** What the graph does not hold. One sentence, in the graph's own terms. */
723
+ children?: React$1.ReactNode;
724
+ /**
725
+ * What would change the answer — an import, a connector, a missing model.
726
+ *
727
+ * Not optional in spirit. A refusal without a next step is a dead end, and the
728
+ * reader is left unable to tell "never" from "not yet".
729
+ */
730
+ remedy?: React$1.ReactNode;
731
+ /** Overrides the label. Defaults to `cannot answer`. */
732
+ label?: React$1.ReactNode;
733
+ }
734
+ /**
735
+ * The graph does not hold what was asked.
736
+ *
737
+ * One of the four run outcomes, and its own component rather than a variant
738
+ * (DS8) — because it is neither a failure nor an empty answer, and it must not
739
+ * be reachable by flipping a prop on either.
740
+ *
741
+ * Dashed, and with **no citation strip**: there is nothing to cite, and an empty
742
+ * strip would read as an uncited claim. This is the surface that keeps the
743
+ * system's promise that it says so when it cannot answer.
744
+ */
745
+ declare const CannotAnswerCard: React$1.ForwardRefExoticComponent<CannotAnswerCardProps & React$1.RefAttributes<HTMLDivElement>>;
746
+
497
747
  interface ChatSessionProps {
498
748
  /** The message list — typically `<ChatSessionMessage />` nodes. */
499
749
  children?: React$1.ReactNode;
@@ -806,6 +1056,304 @@ interface ChatSessionStatusBarProps {
806
1056
  */
807
1057
  declare function ChatSessionStatusBar({ start, end, className, }: ChatSessionStatusBarProps): React$1.JSX.Element;
808
1058
 
1059
+ interface ChatSessionContextChipProps extends React$1.HTMLAttributes<HTMLDivElement> {
1060
+ /** A small icon for what is bound — a node, a dataset, a task. */
1061
+ icon?: React$1.ReactNode;
1062
+ /** What the question will be about — `Asking about obs_20260908_bpcl_01`. */
1063
+ children?: React$1.ReactNode;
1064
+ /** Unbinds it. Omit to make the binding fixed. */
1065
+ onDismiss?: () => void;
1066
+ dismissLabel?: string;
1067
+ }
1068
+ /**
1069
+ * What the next question is about, shown above the composer.
1070
+ *
1071
+ * Selecting something on a canvas binds it here, so the thing you are looking
1072
+ * at is the thing you are asking about — that is the whole point of the chip.
1073
+ * It fills `ChatSessionComposer`'s `attachments` slot rather than living inside
1074
+ * the composer, because what is bound is the surface's business, not the
1075
+ * composer's.
1076
+ *
1077
+ * It states the binding in words. A highlight on the canvas alone would leave
1078
+ * the reader guessing what scope their question has.
1079
+ */
1080
+ declare function ChatSessionContextChip({ icon, onDismiss, dismissLabel, className, children, ...props }: ChatSessionContextChipProps): React$1.JSX.Element;
1081
+
1082
+ interface CitationRowProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "children"> {
1083
+ /** What kind of record this is — `Article`, `Bar`, `Event`. */
1084
+ kind: React$1.ReactNode;
1085
+ /** The record itself, in the words it was stored with. */
1086
+ children?: React$1.ReactNode;
1087
+ /** Where it came from — the dataset, the publisher, the timestamp. */
1088
+ source?: React$1.ReactNode;
1089
+ }
1090
+ interface CitationListProps extends React$1.HTMLAttributes<HTMLUListElement> {
1091
+ children?: React$1.ReactNode;
1092
+ }
1093
+ /**
1094
+ * The records an answer rests on.
1095
+ *
1096
+ * Every claim in this system is traceable to records, and this is where that
1097
+ * trace is read. A row names the **kind** first because that is what tells the
1098
+ * reader whether the claim is grounded in the right sort of evidence — a
1099
+ * recommendation citing three Articles and no Bar is a different thing from one
1100
+ * citing both.
1101
+ *
1102
+ * `source` is not optional in spirit: a citation you cannot locate is not a
1103
+ * citation. An absent one should mean the record has no source, not that the
1104
+ * caller could not be bothered.
1105
+ */
1106
+ declare const CitationList: React$1.ForwardRefExoticComponent<CitationListProps & React$1.RefAttributes<HTMLUListElement>>;
1107
+ declare const CitationRow: React$1.ForwardRefExoticComponent<CitationRowProps & React$1.RefAttributes<HTMLLIElement>>;
1108
+
1109
+ interface ClarifyOption {
1110
+ /** Stable id handed back to `onSelect`. */
1111
+ value: string;
1112
+ /** The choice, in the user's terms — `Theme velocity, 5 sessions`. */
1113
+ label: React$1.ReactNode;
1114
+ /**
1115
+ * Where the choice comes from in the model — `Theme.velocity_5d · 14 themes`.
1116
+ *
1117
+ * This is what makes the question answerable rather than a guess: the reader
1118
+ * can see that each option is a measure the graph actually holds.
1119
+ */
1120
+ detail?: React$1.ReactNode;
1121
+ disabled?: boolean;
1122
+ }
1123
+ interface ClarifyCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
1124
+ /** Which step asked — `understand`. */
1125
+ step?: React$1.ReactNode;
1126
+ /** How long it has been waiting — `parked 14 min`. */
1127
+ waiting?: React$1.ReactNode;
1128
+ /** The question. One sentence. */
1129
+ question: React$1.ReactNode;
1130
+ options: ClarifyOption[];
1131
+ value?: string;
1132
+ onSelect?: (value: string) => void;
1133
+ /** The confirm control. */
1134
+ actions?: React$1.ReactNode;
1135
+ /** Why these options and not others. */
1136
+ footnote?: React$1.ReactNode;
1137
+ }
1138
+ /**
1139
+ * The run stopped and asked, rather than guessing.
1140
+ *
1141
+ * A thinking that cannot tell which of two measures was meant parks and asks —
1142
+ * parked, not failed. Answering resumes *that* thinking rather than starting a
1143
+ * new one, which is why this renders inline in the thread and not as a modal:
1144
+ * the question belongs to the run above it.
1145
+ *
1146
+ * **Options are declared, never generated.** Each one names a measure the model
1147
+ * holds, which is why `detail` exists and why `footnote` is worth saying out
1148
+ * loud. A card that offered invented options would undo the grounding the rest
1149
+ * of the system is built on.
1150
+ */
1151
+ declare const ClarifyCard: React$1.ForwardRefExoticComponent<ClarifyCardProps & React$1.RefAttributes<HTMLDivElement>>;
1152
+
1153
+ interface ContextBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
1154
+ /**
1155
+ * What this surface is showing — usually tabs, or a tab-shaped set of views.
1156
+ * Sits first because it is the only thing here that changes what you see.
1157
+ */
1158
+ children?: React$1.ReactNode;
1159
+ /**
1160
+ * Counts and states about the current view — `1 running`, `2 in review`.
1161
+ * Facts, never controls: nothing here should be clickable.
1162
+ */
1163
+ counters?: React$1.ReactNode;
1164
+ /** The keyboard route out — `⌘↵ accept`, `⌘N new task`. */
1165
+ hint?: React$1.ReactNode;
1166
+ }
1167
+ /**
1168
+ * The 28px bar between a panel and the status bar.
1169
+ *
1170
+ * It answers "where am I, and what is true right now" — the view switch, the
1171
+ * counts that matter for the work in front of you, and the shortcut that
1172
+ * finishes it.
1173
+ *
1174
+ * Distinct from `AppStatusBar` below it: this describes the *surface* you are
1175
+ * on and changes as you move around; the status bar describes the *session* and
1176
+ * barely changes at all. Two bars because they answer different questions —
1177
+ * merging them would make a stable line flicker with navigation.
1178
+ */
1179
+ declare const ContextBar: React$1.ForwardRefExoticComponent<ContextBarProps & React$1.RefAttributes<HTMLDivElement>>;
1180
+
1181
+ interface DiagnosisCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1182
+ /** Where it broke and how — `execute · connection_refused`. Shown in mono. */
1183
+ code: React$1.ReactNode;
1184
+ /** One sentence a person can act on. Not a stack trace. */
1185
+ children?: React$1.ReactNode;
1186
+ /** The query, command or request that was attempted. Mono, wraps. */
1187
+ attempted?: React$1.ReactNode;
1188
+ /** What it ran against, and how hard — `bolt://…:7687 · 2 attempts · 4.1s`. */
1189
+ target?: React$1.ReactNode;
1190
+ /** `Open the trace`, `Retry`. */
1191
+ actions?: React$1.ReactNode;
1192
+ }
1193
+ /**
1194
+ * Something broke, and it is named.
1195
+ *
1196
+ * One of the four run outcomes, and its own component (DS8) — a failure must
1197
+ * never be one prop away from an answer.
1198
+ *
1199
+ * Built from evidence: what was tried, against what, how many times. It carries
1200
+ * its next step, and nothing partial is dressed up as a result — which is why
1201
+ * there is no slot here for "the rows we did get".
1202
+ */
1203
+ declare const DiagnosisCard: React$1.ForwardRefExoticComponent<DiagnosisCardProps & React$1.RefAttributes<HTMLDivElement>>;
1204
+
1205
+ type DiffOp = "add" | "remove" | "change";
1206
+ interface DiffRowProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "children"> {
1207
+ op?: DiffOp;
1208
+ /** What kind of thing changed — `node`, `edge`, `property`. */
1209
+ kind?: React$1.ReactNode;
1210
+ children?: React$1.ReactNode;
1211
+ }
1212
+ interface DiffListProps extends React$1.HTMLAttributes<HTMLUListElement> {
1213
+ children?: React$1.ReactNode;
1214
+ }
1215
+ /**
1216
+ * What a change would do, before it is committed.
1217
+ *
1218
+ * Staged model edits, a schedule's firing diff against the previous run, a
1219
+ * proposal's additions. It is a *preview*, which is why the sign is spelled out
1220
+ * per row rather than implied by colour alone — a reader who cannot separate
1221
+ * red from green still has to be able to tell an addition from a removal before
1222
+ * approving it.
1223
+ */
1224
+ declare const DiffList: React$1.ForwardRefExoticComponent<DiffListProps & React$1.RefAttributes<HTMLUListElement>>;
1225
+ declare const DiffRow: React$1.ForwardRefExoticComponent<DiffRowProps & React$1.RefAttributes<HTMLLIElement>>;
1226
+
1227
+ /**
1228
+ * TODO — provisional. Built ahead of its design review.
1229
+ *
1230
+ * The chart set was deliberately deferred while the rest of the kit was built,
1231
+ * because charts are the one group with a real design question in them rather
1232
+ * than a markup question: which forms this product actually needs, at what
1233
+ * sizes, and how much a 330px drawer can carry. This component satisfies the
1234
+ * dataviz rules and the validated palette, but the *form inventory* has not been
1235
+ * agreed — treat the API as unsettled until a board screen uses it in anger.
1236
+ */
1237
+
1238
+ interface DivergingDatum {
1239
+ label: React$1.ReactNode;
1240
+ /** Signed. The sign is the whole point of this chart. */
1241
+ value: number;
1242
+ display?: React$1.ReactNode;
1243
+ }
1244
+ interface DivergingBarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1245
+ data: DivergingDatum[];
1246
+ /** Fixes the scale on both sides. Defaults to the largest magnitude present. */
1247
+ max?: number;
1248
+ labelWidth?: number;
1249
+ /** Above the midpoint. Defaults to `--color-success`. */
1250
+ positiveColor?: string;
1251
+ /** Below it. Defaults to `--color-destructive`. */
1252
+ negativeColor?: string;
1253
+ caption?: React$1.ReactNode;
1254
+ }
1255
+ /**
1256
+ * Polarity — how far either side of zero.
1257
+ *
1258
+ * A net learning weight, a delta against a baseline, a sentiment score. The
1259
+ * midpoint is a real zero line, drawn in the neutral border colour, and both
1260
+ * sides share one scale so a `−9` is visibly longer than a `+6`.
1261
+ *
1262
+ * The poles use the **status** colours rather than data-palette hues, because
1263
+ * this chart's two directions are good and bad, not two categories. That is the
1264
+ * one place status colour belongs on a chart — it is encoding valence, not
1265
+ * identity, so it is never "series 1 and series 2". Every bar is directly
1266
+ * labelled, so the sign is readable without seeing colour at all.
1267
+ */
1268
+ declare const DivergingBar: React$1.ForwardRefExoticComponent<DivergingBarProps & React$1.RefAttributes<HTMLDivElement>>;
1269
+
1270
+ /**
1271
+ * How an answer's records are rendered. A kind is a *body inside* the emission
1272
+ * card, never a block of its own (DS9) — so this names the body, it does not
1273
+ * pick a different container.
1274
+ */
1275
+ type EmissionKind = "metric" | "table" | "chart" | "subgraph" | "prose" | "empty" | "html";
1276
+ interface EmissionHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
1277
+ kind: EmissionKind;
1278
+ /** The projection template that rendered it — `table-compact@3`. Shown in mono. */
1279
+ template?: React$1.ReactNode;
1280
+ /**
1281
+ * What the answer is grounded in — `cite · 214 records`.
1282
+ *
1283
+ * Absent means *not applicable*, not *none*: an emission with nothing to cite
1284
+ * says so with `0 records`. A missing strip must never read as an uncited
1285
+ * claim.
1286
+ */
1287
+ citation?: React$1.ReactNode;
1288
+ /** A short state word — `in use`, `switched`. */
1289
+ note?: React$1.ReactNode;
1290
+ /** Trailing controls, usually the template switcher. */
1291
+ actions?: React$1.ReactNode;
1292
+ }
1293
+ interface EmissionCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title">, Omit<EmissionHeaderProps, keyof React$1.HTMLAttributes<HTMLDivElement>> {
1294
+ /** Set false to render the body alone, where a surface supplies its own header. */
1295
+ showHeader?: boolean;
1296
+ children?: React$1.ReactNode;
1297
+ }
1298
+ /**
1299
+ * The strip that says what an emission is and what it is grounded in.
1300
+ *
1301
+ * One component wherever an emission appears — the assistant thread, a task
1302
+ * result, a scheduled answer (DS7). It is exported on its own so a surface that
1303
+ * already owns its container can still show the same header rather than
1304
+ * inventing a second one that drifts.
1305
+ */
1306
+ declare const EmissionHeader: React$1.ForwardRefExoticComponent<EmissionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
1307
+ /**
1308
+ * One rendered piece of an answer.
1309
+ *
1310
+ * Every emission renders through this card, whatever its kind (DS9): a metric,
1311
+ * a table, a chart, a subgraph, cited prose, an empty result. That is what makes
1312
+ * an answer scannable — the reader learns one shape and then only reads the
1313
+ * body.
1314
+ *
1315
+ * The card takes a **kind, a template name and children** — never a domain
1316
+ * object (DS6). It does not know what an Observation is, and it does not fetch,
1317
+ * re-render or re-query anything; switching templates is the caller's job,
1318
+ * handed in through `actions`.
1319
+ */
1320
+ declare const EmissionCard: React$1.ForwardRefExoticComponent<EmissionCardProps & React$1.RefAttributes<HTMLDivElement>>;
1321
+ /**
1322
+ * The `prose` body's citation marker — the superscript that ties a clause to
1323
+ * the records behind it.
1324
+ */
1325
+ declare const CitationMarker: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
1326
+
1327
+ interface EmptyStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1328
+ /** An icon or illustration. Sized by the caller. */
1329
+ icon?: React$1.ReactNode;
1330
+ /** What is not here — `Nothing loaded yet`. States the fact, not an apology. */
1331
+ title: React$1.ReactNode;
1332
+ /** The path out of it, in order. */
1333
+ description?: React$1.ReactNode;
1334
+ /** Live actions the user can take now. */
1335
+ actions?: React$1.ReactNode;
1336
+ /** What is not available yet, and what unlocks it. See `EmptyStateLock`. */
1337
+ locks?: React$1.ReactNode;
1338
+ }
1339
+ interface EmptyStateLockProps extends React$1.HTMLAttributes<HTMLSpanElement> {
1340
+ icon?: React$1.ReactNode;
1341
+ children?: React$1.ReactNode;
1342
+ }
1343
+ /**
1344
+ * A surface with nothing in it yet.
1345
+ *
1346
+ * The important half is `locks`. An empty product that only says "nothing here"
1347
+ * leaves the user guessing whether they are stuck or simply early; naming the
1348
+ * thing that unlocks each surface turns an empty screen into a sequence.
1349
+ *
1350
+ * Separate from `UnderDevelopment`, which says *we* have not built it. This one
1351
+ * says *you* have not filled it — different cause, different next step.
1352
+ */
1353
+ declare const EmptyState: React$1.ForwardRefExoticComponent<EmptyStateProps & React$1.RefAttributes<HTMLDivElement>>;
1354
+ /** One not-yet-available surface, and the condition that opens it. */
1355
+ declare const EmptyStateLock: React$1.ForwardRefExoticComponent<EmptyStateLockProps & React$1.RefAttributes<HTMLSpanElement>>;
1356
+
809
1357
  declare class ErrorBoundary extends Component<{
810
1358
  children: ReactNode;
811
1359
  }, {
@@ -821,6 +1369,131 @@ declare class ErrorBoundary extends Component<{
821
1369
  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;
822
1370
  }
823
1371
 
1372
+ interface FilterBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
1373
+ /** The filter controls. `FilterChip`s, a `SearchInput`, a toggle. */
1374
+ children?: React$1.ReactNode;
1375
+ /**
1376
+ * What the filters left behind — `8 datasets`, `6 tasks`, `7 waiting`.
1377
+ *
1378
+ * Sits after a spacer, hard right. It is the answer to the question the
1379
+ * filters ask, so it belongs on the same line as them and nowhere else.
1380
+ */
1381
+ summary?: React$1.ReactNode;
1382
+ }
1383
+ interface FilterChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
1384
+ /** The dimension — `status`, `kind`, `agent`, `age`. */
1385
+ label: React$1.ReactNode;
1386
+ /** What it is narrowed to. Absent means "not filtered". */
1387
+ value?: React$1.ReactNode;
1388
+ /** Marks the chip as narrowing the list, so an active filter is visible while scrolling. */
1389
+ active?: boolean;
1390
+ }
1391
+ /**
1392
+ * The row above a list that narrows it.
1393
+ *
1394
+ * Every list surface in the system has one: the roster, datasets, tasks,
1395
+ * schedules, workflows, the review queue. It is a `<Toolbar>`-shaped thing but
1396
+ * kept separate — a toolbar holds actions that *do* something, this holds
1397
+ * controls that *hide* rows, and mixing them costs the reader the guarantee
1398
+ * that nothing here changes their data.
1399
+ */
1400
+ declare const FilterBar: React$1.ForwardRefExoticComponent<FilterBarProps & React$1.RefAttributes<HTMLDivElement>>;
1401
+ /**
1402
+ * One dimension, as a chip that opens a menu.
1403
+ *
1404
+ * The caret is drawn rather than iconised so the chip stays 22px and reads as
1405
+ * one token — `status ▾` — instead of a control with an icon glued to it.
1406
+ */
1407
+ declare const FilterChip: React$1.ForwardRefExoticComponent<FilterChipProps & React$1.RefAttributes<HTMLButtonElement>>;
1408
+
1409
+ /**
1410
+ * TODO — provisional. Built ahead of its design review.
1411
+ *
1412
+ * The chart set was deliberately deferred while the rest of the kit was built,
1413
+ * because charts are the one group with a real design question in them rather
1414
+ * than a markup question: which forms this product actually needs, at what
1415
+ * sizes, and how much a 330px drawer can carry. This component satisfies the
1416
+ * dataviz rules and the validated palette, but the *form inventory* has not been
1417
+ * agreed — treat the API as unsettled until a board screen uses it in anger.
1418
+ */
1419
+
1420
+ interface HeatCell {
1421
+ /** When this cell is — `09:45`. Used in the hover title. */
1422
+ at: React$1.ReactNode;
1423
+ /** Which state key this cell is in. Must exist in `states`. */
1424
+ state: string;
1425
+ /** Extra detail for the hover title — `2 names: BPCL, HINDPETRO`. */
1426
+ detail?: React$1.ReactNode;
1427
+ }
1428
+ interface HeatState {
1429
+ key: string;
1430
+ /** What the state is called. Shown in the legend and the hover title. */
1431
+ label: React$1.ReactNode;
1432
+ color?: string;
1433
+ /** Renders as a ring rather than a fill — for "nothing happened here". */
1434
+ hollow?: boolean;
1435
+ }
1436
+ interface HeatStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1437
+ cells: HeatCell[];
1438
+ states: HeatState[];
1439
+ /** Axis ticks under the strip — `[{at: 0, label: '09'}, …]`. */
1440
+ ticks?: {
1441
+ at: number;
1442
+ label: React$1.ReactNode;
1443
+ }[];
1444
+ cellSize?: number;
1445
+ }
1446
+ /**
1447
+ * A run of firings, one square each, in time order.
1448
+ *
1449
+ * A schedule's day: twenty-one firings, most served, one skipped, one that could
1450
+ * not answer. The shape of the day is the point — a reader sees the run of green
1451
+ * and the one square that is not, without reading any of them.
1452
+ *
1453
+ * These are **status** colours, so they are reserved and never stand in for
1454
+ * categories. The legend is mandatory rather than optional: a square carries no
1455
+ * label of its own, so without the legend the strip would be colour-alone. Each
1456
+ * cell also names its state in the hover title, which is what a screen reader
1457
+ * and a keyboard user get.
1458
+ */
1459
+ declare const HeatStrip: React$1.ForwardRefExoticComponent<HeatStripProps & React$1.RefAttributes<HTMLDivElement>>;
1460
+
1461
+ type LegendSwatchKind = "dot" | "line" | "dashed" | "arrow" | "ring";
1462
+ interface LegendItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "color"> {
1463
+ /**
1464
+ * What the mark looks like on the canvas. A legend that draws a dot for
1465
+ * something rendered as a dashed line is worse than no legend.
1466
+ */
1467
+ kind?: LegendSwatchKind;
1468
+ /**
1469
+ * The mark's colour — a CSS colour or, preferably, a data-palette token:
1470
+ * `var(--color-data-3)`. Defaults to the current text colour.
1471
+ */
1472
+ color?: string;
1473
+ label: React$1.ReactNode;
1474
+ /** Trailing count — `1,912`, `52,100`. */
1475
+ count?: React$1.ReactNode;
1476
+ }
1477
+ interface LegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
1478
+ /** `row` wraps inline under a canvas; `column` stacks in a panel. */
1479
+ orientation?: "row" | "column";
1480
+ children?: React$1.ReactNode;
1481
+ }
1482
+ /**
1483
+ * What the colours on a canvas mean.
1484
+ *
1485
+ * Every canvas in the system carries one: node types, edge kinds, run outcomes,
1486
+ * schedule firings, plan dependencies. It is the other half of the rule that
1487
+ * colour never carries meaning alone — the palette says which hue, the legend
1488
+ * says what the hue is.
1489
+ *
1490
+ * `kind` exists because these canvases draw more than dots. A dependency that
1491
+ * renders as a dashed arrow needs a dashed arrow in the legend, or the legend
1492
+ * is describing a different picture.
1493
+ */
1494
+ declare const Legend: React$1.ForwardRefExoticComponent<LegendProps & React$1.RefAttributes<HTMLDivElement>>;
1495
+ declare const LegendItem: React$1.ForwardRefExoticComponent<LegendItemProps & React$1.RefAttributes<HTMLDivElement>>;
1496
+
824
1497
  interface MenuItemProps extends MenuItem {
825
1498
  level?: number;
826
1499
  }
@@ -836,6 +1509,59 @@ interface MenuItem {
836
1509
  }
837
1510
  declare const MenuItem: React$1.FC<MenuItemProps>;
838
1511
 
1512
+ interface MetricTileProps extends React$1.HTMLAttributes<HTMLDivElement> {
1513
+ /** What is being measured — `accepted`, `served (plan.verified)`, `hit rate`. */
1514
+ label: React$1.ReactNode;
1515
+ /** The number. `31 of 38`, `91%`, `9.6 s`, `$38.20`. */
1516
+ value: React$1.ReactNode;
1517
+ /** Why the number is what it is — the denominator, the window, the caveat. */
1518
+ caption?: React$1.ReactNode;
1519
+ /** A bar, a sparkline, anything that sits under the value. */
1520
+ children?: React$1.ReactNode;
1521
+ }
1522
+ interface MetricGridProps extends React$1.HTMLAttributes<HTMLDivElement> {
1523
+ /** Smallest a tile may get before the grid drops a column. */
1524
+ minTileWidth?: number;
1525
+ children?: React$1.ReactNode;
1526
+ }
1527
+ /**
1528
+ * One number, with enough around it to be read correctly.
1529
+ *
1530
+ * `caption` is not decoration. A tile that says `91%` and nothing else invites
1531
+ * the reader to supply their own denominator; `of thinkings` stops that. If
1532
+ * there is no honest caption, the number probably needs a different surface.
1533
+ */
1534
+ declare const MetricTile: React$1.ForwardRefExoticComponent<MetricTileProps & React$1.RefAttributes<HTMLDivElement>>;
1535
+ /**
1536
+ * Tiles at whatever width the panel gives them.
1537
+ *
1538
+ * `auto-fit` rather than a column count, because the same set of tiles appears
1539
+ * in a 420px panel and across a full-width board and should not need a
1540
+ * different call site for each.
1541
+ */
1542
+ declare const MetricGrid: React$1.ForwardRefExoticComponent<MetricGridProps & React$1.RefAttributes<HTMLDivElement>>;
1543
+
1544
+ /**
1545
+ * NavMenuItem - one row of the dropdown a nav item can open. Give an item
1546
+ * `menuItems` and it becomes a menu trigger instead of a plain button: the
1547
+ * `…` overflow in a panel header, a "New…" split action, an account menu.
1548
+ */
1549
+ interface NavMenuItem {
1550
+ /** Unique identifier within the menu. */
1551
+ id: string;
1552
+ /** Row label — a string, or any node if you need your own markup. */
1553
+ label: React__default.ReactNode;
1554
+ /** Optional leading icon component. */
1555
+ icon?: React__default.ElementType;
1556
+ /** Keyboard hint, shown right-aligned (display only — bind the key yourself). */
1557
+ shortcut?: string;
1558
+ disabled?: boolean;
1559
+ /** Render the row in the destructive colour (delete, drop, remove…). */
1560
+ destructive?: boolean;
1561
+ /** Draw a separator immediately above this row. */
1562
+ separatorBefore?: boolean;
1563
+ onSelect?: () => void;
1564
+ }
839
1565
  /**
840
1566
  * NavItemConfig - Shared configuration for a single navigation item, used by
841
1567
  * both NavHorizontal and NavVertical. An item renders as an `<a>` (when `href`
@@ -868,6 +1594,24 @@ interface NavItemConfig {
868
1594
  icon?: React__default.ElementType | LucideIcon;
869
1595
  /** Custom tooltip content (overrides name) */
870
1596
  tooltip?: React__default.ReactNode;
1597
+ /**
1598
+ * Rows of a dropdown opened by this item. With `menuItems` the item is a
1599
+ * menu trigger — it needs no `onClick`, and stays highlighted while its menu
1600
+ * is open. Ignored when `href` is set.
1601
+ */
1602
+ menuItems?: NavMenuItem[];
1603
+ /**
1604
+ * A count pinned to the item's top-right — unread reviews, waiting questions.
1605
+ *
1606
+ * The one place in the kit where a rounded capsule is right: a count bubble
1607
+ * is a round object, not a rectangle with soft ends (see `@invana/styling`
1608
+ * › border radius). Keep it short; it is a signal, not a readout.
1609
+ *
1610
+ * The badge text sits inside the item, so it contributes to the accessible
1611
+ * name; the item's `name` reaches assistive tech through its tooltip. Pass a
1612
+ * bare number — anything longer belongs in the tooltip.
1613
+ */
1614
+ badge?: React__default.ReactNode;
871
1615
  }
872
1616
  interface NavItemsProps {
873
1617
  items: NavItemConfig[];
@@ -1069,18 +1813,51 @@ interface NestedMenuProps {
1069
1813
  declare const NestedMenu: React__default.FC<NestedMenuProps>;
1070
1814
 
1071
1815
  interface PanelContentProps {
1816
+ /** Header title as a node — rendered as-is, so you own its typography. */
1072
1817
  title?: React__default.ReactNode;
1818
+ /** Header title as plain text, rendered in the default panel header style. */
1073
1819
  titleText?: string;
1074
1820
  children?: React__default.ReactNode;
1821
+ /** Classes for the outer card. */
1822
+ className?: string;
1075
1823
  headerClassName?: string;
1076
1824
  bodyClassName?: string;
1077
1825
  footerContent?: React__default.ReactNode;
1078
1826
  footerClassName?: string;
1079
- onClose?: () => void;
1080
- showClose?: boolean;
1081
- closeIcon?: React__default.ReactNode;
1827
+ /**
1828
+ * Actions on the right of the title bar, as `NavHorizontal` items. A panel
1829
+ * header has one action area — the right — so this is the item list itself
1830
+ * rather than the full `NavHorizontal` props that `PanelStack` and
1831
+ * `TabbedPanel` take: there is no left or centre slot to fill here, and the
1832
+ * title already owns the left.
1833
+ *
1834
+ * Give an item `menuItems` and it becomes a `…` overflow dropdown.
1835
+ *
1836
+ * ```tsx
1837
+ * headerActions={[
1838
+ * { name: "Refresh", icon: RefreshCw, onClick: refetch },
1839
+ * { name: "More options", icon: MoreHorizontal, menuItems: [
1840
+ * { id: "export", label: "Export as CSV", onSelect: exportCsv },
1841
+ * ] },
1842
+ * { name: "Close panel", icon: X, onClick: close },
1843
+ * ]}
1844
+ * ```
1845
+ *
1846
+ * Closing is one of these and nothing more — there is no `onClose` prop. A
1847
+ * panel that dismisses lists a close item like any other action, which is
1848
+ * why the two look and behave identically.
1849
+ */
1850
+ headerActions?: NavHorizontalItem[];
1851
+ /**
1852
+ * Keep the header actions hidden until the header is hovered or focused (or
1853
+ * a menu inside them is open). Defaults to `false` — unlike a `PanelStack`
1854
+ * section, a `PanelContent` is one panel rather than one of a column, so its
1855
+ * actions are not noise. A close affordance in particular should not have to
1856
+ * be hunted for.
1857
+ */
1858
+ actionsOnHover?: boolean;
1082
1859
  }
1083
- declare function PanelContent({ title, titleText, children, onClose, showClose, headerClassName, bodyClassName, footerContent, footerClassName, closeIcon }: PanelContentProps): React__default.JSX.Element;
1860
+ declare function PanelContent({ title, titleText, children, className, headerClassName, bodyClassName, footerContent, footerClassName, headerActions, actionsOnHover, }: PanelContentProps): React__default.JSX.Element;
1084
1861
 
1085
1862
  interface PanelStackSection {
1086
1863
  /** Unique identifier for the section within the stack. */
@@ -1098,10 +1875,29 @@ interface PanelStackSection {
1098
1875
  /** Optional leading icon component, shown before the title. */
1099
1876
  icon?: React$1.ElementType;
1100
1877
  /**
1101
- * Header actions (buttons, badges) rendered on the right of the title bar.
1102
- * Only shown while the section is expanded, mirroring VS Code's view header.
1878
+ * Actions on the right of the title bar, as `NavHorizontal` items — the same
1879
+ * list `PanelContent` and `TabbedPanel` take, so a header is described once
1880
+ * and reads the same everywhere. A header has one action area, so this is
1881
+ * the item list itself rather than left/centre/right slots; the title owns
1882
+ * the left. Give an item `menuItems` and it becomes the `…` overflow
1883
+ * dropdown.
1884
+ *
1885
+ * ```tsx
1886
+ * headerActions: [
1887
+ * { name: "Refresh", icon: RefreshCw, onClick: refetch },
1888
+ * { name: "More options", icon: MoreHorizontal, menuItems: [
1889
+ * { id: "sort", label: "Sort oldest first", onSelect: sort },
1890
+ * ] },
1891
+ * ]
1892
+ * ```
1103
1893
  */
1104
- actions?: React$1.ReactNode;
1894
+ headerActions?: NavHorizontalItem[];
1895
+ /**
1896
+ * Keep `headerActions` hidden until the header is hovered or focused (or a
1897
+ * menu inside them is open) — VS Code's quiet view header. Defaults to
1898
+ * `true`. Chrome that must always read, like a count, belongs in `title`.
1899
+ */
1900
+ actionsOnHover?: boolean;
1105
1901
  /** Start the section collapsed (header only). Defaults to `false`. */
1106
1902
  defaultCollapsed?: boolean;
1107
1903
  /**
@@ -1157,6 +1953,145 @@ interface PanelStackProps {
1157
1953
  */
1158
1954
  declare function PanelStack({ sections, headerHeight, withHandle, className, headerClassName, bodyClassName, }: PanelStackProps): React$1.JSX.Element;
1159
1955
 
1956
+ interface PropertyListProps extends React$1.HTMLAttributes<HTMLDListElement> {
1957
+ /**
1958
+ * Width of the label column. One value for the whole list, so every value
1959
+ * starts on the same x — the reason to use this rather than a row of flexes.
1960
+ */
1961
+ labelWidth?: number | string;
1962
+ children?: React$1.ReactNode;
1963
+ }
1964
+ interface PropertyRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1965
+ label: React$1.ReactNode;
1966
+ children?: React$1.ReactNode;
1967
+ /** Renders the value in the mono face — an id, a key, a query fragment. */
1968
+ mono?: boolean;
1969
+ }
1970
+ /**
1971
+ * What one selected thing *is*, as label/value pairs.
1972
+ *
1973
+ * The inspector's body: a node's properties, an agent's bindings, a proposal's
1974
+ * draft, a run's parameters. A `<dl>` because that is what this is — pairs, not
1975
+ * a two-column table and not a form.
1976
+ *
1977
+ * The label column is fixed by the list rather than by each row, so values line
1978
+ * up down the panel. A ragged value column is the thing that makes an inspector
1979
+ * read as noise.
1980
+ */
1981
+ declare const PropertyList: React$1.ForwardRefExoticComponent<PropertyListProps & React$1.RefAttributes<HTMLDListElement>>;
1982
+ declare const PropertyRow: React$1.ForwardRefExoticComponent<PropertyRowProps & React$1.RefAttributes<HTMLDivElement>>;
1983
+
1984
+ interface ProposalCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1985
+ /** What is being proposed — `Draft pattern`. */
1986
+ title: React$1.ReactNode;
1987
+ /** Where it came from — `from the agent's result`. */
1988
+ source?: React$1.ReactNode;
1989
+ /** The draft itself. A `PropertyList`, usually. */
1990
+ children?: React$1.ReactNode;
1991
+ /** What the proposal rests on — the instances, as a table or list. */
1992
+ evidence?: React$1.ReactNode;
1993
+ /** A heading for the evidence — `The six instances`. */
1994
+ evidenceTitle?: React$1.ReactNode;
1995
+ /** Scope of the evidence — `30 days`. */
1996
+ evidenceMeta?: React$1.ReactNode;
1997
+ /** What authoring would actually write. */
1998
+ consequence?: React$1.ReactNode;
1999
+ /** Author / reject / reassign. */
2000
+ actions?: React$1.ReactNode;
2001
+ }
2002
+ /**
2003
+ * An agent proposes; a person publishes.
2004
+ *
2005
+ * Nothing here exists in the graph yet — the draft is a shape the agent found,
2006
+ * and authoring is what writes it. The card is built so that separation is
2007
+ * legible: the draft and the evidence it rests on are shown together, so the
2008
+ * decision is made against the instances rather than against a summary of them.
2009
+ *
2010
+ * `consequence` says what authoring will write. A person approving something
2011
+ * should not have to infer the side effects.
2012
+ */
2013
+ declare const ProposalCard: React$1.ForwardRefExoticComponent<ProposalCardProps & React$1.RefAttributes<HTMLDivElement>>;
2014
+
2015
+ type Verdict = "appreciate" | "depreciate";
2016
+ interface DotRatingProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
2017
+ value: number;
2018
+ max?: number;
2019
+ onChange?: (value: number) => void;
2020
+ /** Read-only display, e.g. inside a history entry. */
2021
+ readOnly?: boolean;
2022
+ label?: string;
2023
+ }
2024
+ interface RatingControlProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
2025
+ verdict?: Verdict;
2026
+ onVerdictChange?: (v: Verdict) => void;
2027
+ weight: number;
2028
+ onWeightChange?: (w: number) => void;
2029
+ maxWeight?: number;
2030
+ /** What the rating refines — a pattern name. */
2031
+ refines?: React$1.ReactNode;
2032
+ /** Who is rating. An `AgentChip`, usually. */
2033
+ by?: React$1.ReactNode;
2034
+ /** The note field, and anything else the caller wants under the controls. */
2035
+ children?: React$1.ReactNode;
2036
+ }
2037
+ /**
2038
+ * A small integer, as dots.
2039
+ *
2040
+ * Weight is 1–3, so a slider or a number input would both be heavier than the
2041
+ * value they carry. Dots read at a glance and are still a real radio group
2042
+ * underneath. Lives beside `RatingControl` rather than in `ui/` because it is
2043
+ * the only thing that uses it; promote it if a second caller appears.
2044
+ */
2045
+ declare const DotRating: React$1.ForwardRefExoticComponent<DotRatingProps & React$1.RefAttributes<HTMLDivElement>>;
2046
+ /**
2047
+ * A person's verdict on an agent's result.
2048
+ *
2049
+ * This is the capture signal the learning loop runs on: accepting or rejecting
2050
+ * with a weight becomes a Learning that rates the observation and refines the
2051
+ * pattern behind it. So the control states its consequence rather than implying
2052
+ * it — `by` and `refines` are shown on the control itself.
2053
+ *
2054
+ * Appreciate and depreciate are one control with two positions, not two
2055
+ * buttons: it is a single decision with a sign, and two buttons would invite
2056
+ * pressing both.
2057
+ */
2058
+ declare const RatingControl: React$1.ForwardRefExoticComponent<RatingControlProps & React$1.RefAttributes<HTMLDivElement>>;
2059
+
2060
+ interface RepairNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
2061
+ /** What was wrong — `unknown property Theme.velocity5d`. */
2062
+ from: React$1.ReactNode;
2063
+ /** What it became — `Theme.velocity_5d`. */
2064
+ to: React$1.ReactNode;
2065
+ }
2066
+ /**
2067
+ * The query went back once, carrying its error, and came back correct.
2068
+ *
2069
+ * One of the four run outcomes (DS8). It renders **on the step that repaired
2070
+ * it**, never as a message in the thread — a repair is a detail of how the
2071
+ * answer was reached, not something asked of the reader. Promoting it to a card
2072
+ * would make a successful run look like a problem.
2073
+ */
2074
+ declare const RepairNote: React$1.ForwardRefExoticComponent<RepairNoteProps & React$1.RefAttributes<HTMLDivElement>>;
2075
+
2076
+ interface RetryNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
2077
+ /** Which attempt this is — `retry 1 of 2`. */
2078
+ attempt?: React$1.ReactNode;
2079
+ /** What happened, in time — `no response in 2.0s; the second returned in 0.6s`. */
2080
+ children?: React$1.ReactNode;
2081
+ }
2082
+ /**
2083
+ * The database was slow, not wrong.
2084
+ *
2085
+ * One of the four run outcomes (DS8), and like a repair it renders on its step
2086
+ * rather than as a card. Transient: nothing is asked of the reader, because it
2087
+ * is already retrying — visibly — and the answer still arrives.
2088
+ *
2089
+ * Separate from `RepairNote` on purpose. A retry means *the same query, again*;
2090
+ * a repair means *a different query*. Collapsing them into one component with a
2091
+ * `reason` prop would lose the only distinction that matters to the reader.
2092
+ */
2093
+ declare const RetryNote: React$1.ForwardRefExoticComponent<RetryNoteProps & React$1.RefAttributes<HTMLDivElement>>;
2094
+
1160
2095
  interface RichSelectOption {
1161
2096
  /** Stable key used as the selection value. */
1162
2097
  value: string;
@@ -1218,6 +2153,88 @@ interface RichSelectProps {
1218
2153
  */
1219
2154
  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;
1220
2155
 
2156
+ /**
2157
+ * `sm` (26px) is the application field — a search box docked in a panel header,
2158
+ * beside a 30px tab strip. `default` (40px) stays the page size.
2159
+ *
2160
+ * Named `inputSize` for the same reason `Input` is: `size` is already an
2161
+ * `<input>` attribute meaning "how many characters wide".
2162
+ */
2163
+ type SearchInputSize = 'default' | 'sm';
2164
+ interface SearchInputProps extends Omit<React__default.ComponentProps<'input'>, 'value' | 'onChange' | 'size' | 'type'> {
2165
+ className?: string;
2166
+ value: string;
2167
+ /** Receives the raw string, not the event — a search box has one value. */
2168
+ onChange: (value: string) => void;
2169
+ inputSize?: SearchInputSize;
2170
+ }
2171
+ declare const SearchInput: React__default.FC<SearchInputProps>;
2172
+
2173
+ interface SectionHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
2174
+ /** Sits before the title. A 14px lucide icon, usually. */
2175
+ icon?: React$1.ReactNode;
2176
+ /** What this section is. */
2177
+ title: React$1.ReactNode;
2178
+ /**
2179
+ * How many things are in it — `4`, `6 shown · 1 hidden`, `derived`.
2180
+ *
2181
+ * Kept separate from `actions` because a count is a fact about the section
2182
+ * and an action is something you do to it. They read differently and they
2183
+ * align differently.
2184
+ */
2185
+ count?: React$1.ReactNode;
2186
+ /** Trailing controls — `+ add`, `edit`, a toggle. */
2187
+ actions?: React$1.ReactNode;
2188
+ /** Renders the header without its bottom rule, for a section that opens a card. */
2189
+ bare?: boolean;
2190
+ }
2191
+ /**
2192
+ * The bar that titles one section of a panel.
2193
+ *
2194
+ * A panel is a stack of these: Node types, Edge types, Relationships, Selected,
2195
+ * Anchors, Recent plans. It is 35px because that is what reads as a heading
2196
+ * against 30px rows without becoming a second toolbar.
2197
+ *
2198
+ * Not a `<Card>` header — a section is a band inside a scrolling panel, not a
2199
+ * container, so it carries a rule rather than a border box.
2200
+ */
2201
+ declare const SectionHeader: React$1.ForwardRefExoticComponent<SectionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
2202
+
2203
+ /**
2204
+ * TODO — provisional. Built ahead of its design review.
2205
+ *
2206
+ * The chart set was deliberately deferred while the rest of the kit was built,
2207
+ * because charts are the one group with a real design question in them rather
2208
+ * than a markup question: which forms this product actually needs, at what
2209
+ * sizes, and how much a 330px drawer can carry. This component satisfies the
2210
+ * dataviz rules and the validated palette, but the *form inventory* has not been
2211
+ * agreed — treat the API as unsettled until a board screen uses it in anger.
2212
+ */
2213
+
2214
+ interface SparklineProps extends Omit<React$1.SVGAttributes<SVGSVGElement>, "children" | "values"> {
2215
+ values: number[];
2216
+ width?: number;
2217
+ height?: number;
2218
+ color?: string;
2219
+ /** Washes the area under the line at 10%. Off by default at this size. */
2220
+ area?: boolean;
2221
+ /** A filled dot on the last point, ringed in the surface colour. */
2222
+ endMarker?: boolean;
2223
+ /** What the line is, for assistive tech. The surface around it usually says. */
2224
+ label?: string;
2225
+ }
2226
+ /**
2227
+ * The shape of a series, small enough to sit inside a row.
2228
+ *
2229
+ * No axis, no gridlines, no labels — a sparkline answers "which way, and how
2230
+ * steadily", and the number it accompanies answers "how much". If a reader
2231
+ * needs to read a value off it, it wanted to be a chart.
2232
+ *
2233
+ * The end marker carries a 2px ring in the surface colour so it stays legible
2234
+ * where the line runs under it.
2235
+ */
2236
+ declare const Sparkline: React$1.ForwardRefExoticComponent<SparklineProps & React$1.RefAttributes<SVGSVGElement>>;
2237
+
1221
2238
  interface TabConfig {
1222
2239
  /** Unique identifier for the tab */
1223
2240
  value: string;
@@ -1239,8 +2256,22 @@ interface TabbedPanelProps {
1239
2256
  activeTab?: string;
1240
2257
  /** Callback when tab changes */
1241
2258
  onTabChange?: (value: string) => void;
1242
- /** Full NavHorizontal props for header right-side actions */
1243
- headerActions?: NavHorizontalProps;
2259
+ /**
2260
+ * Actions on the right of the tab bar, as `NavHorizontal` items. A panel
2261
+ * header has one action area — the right — so this is the item list itself
2262
+ * rather than full `NavHorizontal` props: the tabs already own the left.
2263
+ *
2264
+ * Give an item `menuItems` and it becomes a `…` overflow dropdown. Closing
2265
+ * is one of these items and nothing more; there is no close prop.
2266
+ *
2267
+ * ```tsx
2268
+ * headerActions={[
2269
+ * { name: "Split editor", icon: Columns2, onClick: split },
2270
+ * { name: "Close panel", icon: X, onClick: close },
2271
+ * ]}
2272
+ * ```
2273
+ */
2274
+ headerActions?: NavHorizontalItem[];
1244
2275
  /** Additional CSS classes for the container */
1245
2276
  className?: string;
1246
2277
  /** Additional CSS classes for the header */
@@ -1251,21 +2282,107 @@ interface TabbedPanelProps {
1251
2282
  footerClassName?: string;
1252
2283
  /** Optional footer content */
1253
2284
  footerContent?: React__default.ReactNode;
1254
- /** Whether to show default close button */
1255
- showClose?: boolean;
1256
- /** Callback when close button is clicked */
1257
- onClose?: () => void;
1258
- /** Custom close icon component */
1259
- closeIcon?: React__default.ReactNode;
1260
2285
  }
1261
- declare function TabbedPanel({ tabs, defaultTab, activeTab, onTabChange, headerActions, className, headerClassName, bodyClassName, footerClassName, footerContent, showClose: _showClose, onClose: _onClose, closeIcon: _closeIcon, }: TabbedPanelProps): React__default.JSX.Element;
2286
+ declare function TabbedPanel({ tabs, defaultTab, activeTab, onTabChange, headerActions, className, headerClassName, bodyClassName, footerClassName, footerContent, }: TabbedPanelProps): React__default.JSX.Element;
1262
2287
 
1263
- interface SearchInputProps {
1264
- className?: string;
1265
- value: string;
1266
- onChange: (value: string) => void;
2288
+ interface TemplateOption {
2289
+ /** The projection template — `table-compact@3`. */
2290
+ id: string;
2291
+ kind: EmissionKind;
2292
+ /**
2293
+ * Why it cannot be used on these records — `needs a time column`,
2294
+ * `needs 1 record, has 4`.
2295
+ *
2296
+ * Present means unavailable. Saying *why* is the point: a greyed row with no
2297
+ * reason reads as a bug.
2298
+ */
2299
+ unavailable?: React$1.ReactNode;
2300
+ /** A note on an available row — `in use`, `sandboxed`. */
2301
+ note?: React$1.ReactNode;
1267
2302
  }
1268
- declare const SearchInput: React__default.FC<SearchInputProps>;
2303
+ interface TemplatePickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect"> {
2304
+ /** How many records are being re-rendered — `Render these 4 records as`. */
2305
+ heading?: React$1.ReactNode;
2306
+ options: TemplateOption[];
2307
+ value?: string;
2308
+ onSelect?: (id: string) => void;
2309
+ /** The reassurance under the list. */
2310
+ footnote?: React$1.ReactNode;
2311
+ }
2312
+ /**
2313
+ * Render the same records a different way.
2314
+ *
2315
+ * It hangs off an emission's header, because a template belongs to **that
2316
+ * emission** — not to the thread, and not to a setting somewhere else.
2317
+ *
2318
+ * Switching re-renders from records already in hand: **the query does not run
2319
+ * again**. That is why unavailable options are listed rather than hidden — the
2320
+ * reason a template does not fit ("needs a time column") is information about
2321
+ * the data, and hiding it would leave the reader wondering what else exists.
2322
+ */
2323
+ declare const TemplatePicker: React$1.ForwardRefExoticComponent<TemplatePickerProps & React$1.RefAttributes<HTMLDivElement>>;
2324
+
2325
+ type TerminalLineKind = "prompt" | "output" | "comment";
2326
+ interface TerminalLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
2327
+ kind?: TerminalLineKind;
2328
+ /**
2329
+ * Columns, for the step-shaped output a run prints — name, detail, timing,
2330
+ * result. Given as cells so they align down the transcript instead of each
2331
+ * line padding itself with spaces.
2332
+ */
2333
+ columns?: React$1.ReactNode[];
2334
+ children?: React$1.ReactNode;
2335
+ }
2336
+ interface TerminalProps extends React$1.HTMLAttributes<HTMLDivElement> {
2337
+ children?: React$1.ReactNode;
2338
+ /** Shows a blinking block at the end. */
2339
+ cursor?: boolean;
2340
+ /**
2341
+ * `grid-template-columns` for every columned line in this transcript.
2342
+ *
2343
+ * Set once here rather than per line, because the point of columns is that
2344
+ * they line up *down* the transcript — a width chosen per row aligns nothing.
2345
+ */
2346
+ columnTemplate?: string;
2347
+ }
2348
+ /**
2349
+ * A shell transcript, as a first-class surface.
2350
+ *
2351
+ * Some of this product's work happens outside Studio — imports run from the
2352
+ * CLI, a scheduler calls the Python API — and the hand-off has to be shown
2353
+ * honestly rather than redrawn as a wizard. So this renders what the terminal
2354
+ * actually printed.
2355
+ *
2356
+ * It is presentational: a record of a run that already happened, not a live
2357
+ * console. There is no input here, and it does not scroll itself.
2358
+ */
2359
+ declare const Terminal: React$1.ForwardRefExoticComponent<TerminalProps & React$1.RefAttributes<HTMLDivElement>>;
2360
+ declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps & React$1.RefAttributes<HTMLDivElement>>;
2361
+
2362
+ interface TimelineEntryProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "title"> {
2363
+ /** When — `Fri 5 Sep`, `09:47`, `Sun`. */
2364
+ when: React$1.ReactNode;
2365
+ /** A one-line summary. The body below carries the detail. */
2366
+ title?: React$1.ReactNode;
2367
+ /** A marker in the rail — a `StatusDot`, usually. */
2368
+ marker?: React$1.ReactNode;
2369
+ children?: React$1.ReactNode;
2370
+ }
2371
+ interface TimelineListProps extends React$1.HTMLAttributes<HTMLOListElement> {
2372
+ children?: React$1.ReactNode;
2373
+ }
2374
+ /**
2375
+ * What happened, newest first.
2376
+ *
2377
+ * A task's history, a session's past rounds, a schedule's firings. An `<ol>`
2378
+ * because the order carries meaning — these are events in sequence, not a set.
2379
+ *
2380
+ * `when` is a column rather than a line above the entry, so a reader scanning
2381
+ * for "what changed on Friday" reads down one edge instead of hunting through
2382
+ * prose.
2383
+ */
2384
+ declare const TimelineList: React$1.ForwardRefExoticComponent<TimelineListProps & React$1.RefAttributes<HTMLOListElement>>;
2385
+ declare const TimelineEntry: React$1.ForwardRefExoticComponent<TimelineEntryProps & React$1.RefAttributes<HTMLLIElement>>;
1269
2386
 
1270
2387
  declare const Toolbar: React__default.FC;
1271
2388
 
@@ -1481,4 +2598,4 @@ declare const Typography: {
1481
2598
  Pre: React$1.ForwardRefExoticComponent<TypographyPreProps & React$1.RefAttributes<HTMLPreElement>>;
1482
2599
  };
1483
2600
 
1484
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, type BaseNavProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, ButtonWithTooltip, type ButtonWithTooltipProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChatSession, ChatSessionActivityRow, type ChatSessionActivityRowProps, type ChatSessionActivityStatus, ChatSessionActivitySubLine, type ChatSessionActivitySubLineProps, ChatSessionComposer, type ChatSessionComposerProps, 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, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ErrorBoundary, HoverCard, HoverCardContent, HoverCardTrigger, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, MenuItem, type MenuItemProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavBase, NavHorizontal, type NavHorizontalItem, NavHorizontalItems, type NavHorizontalItemsProps, type NavHorizontalProps, type NavItemConfig, NavItems, type NavItemsProps, 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, PanelContent, type PanelContentProps, PanelStack, type PanelStackProps, type PanelStackSection, Popover, PopoverContent, PopoverTrigger, Progress, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichSelect, type RichSelectOption, type RichSelectProps, ScrollArea, ScrollBar, SearchInput, 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, Spinner, type TabConfig, TabbedPanel, type TabbedPanelProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, type TourController, type TourProps, type TourReference, type TourStep, 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 UseTourOptions, badgeVariants, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, navigationMenuTriggerStyle, toggleVariants, useSidebar, useTour };
2601
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentChip, type AgentChipProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, type AppStatusBarProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, BarChartH, type BarChartHProps, BarChartV, type BarChartVProps, type BarDatum, type BaseNavProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, ButtonWithTooltip, type ButtonWithTooltipProps, CannotAnswerCard, type CannotAnswerCardProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, 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, ClarifyCard, type ClarifyCardProps, type ClarifyOption, type ColumnDatum, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, type ContextBarProps, 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, EmissionCard, type EmissionCardProps, EmissionHeader, type EmissionHeaderProps, type EmissionKind, EmptyState, EmptyStateLock, type EmptyStateLockProps, type EmptyStateProps, ErrorBoundary, 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, Legend, LegendItem, type LegendItemProps, type LegendProps, type LegendSwatchKind, 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, NavBase, NavHorizontal, type NavHorizontalItem, NavHorizontalItems, type NavHorizontalItemsProps, type NavHorizontalProps, type NavItemConfig, NavItems, type NavItemsProps, 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, PanelContent, type PanelContentProps, PanelStack, type PanelStackProps, type PanelStackSection, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, type PropertyListProps, PropertyRow, type PropertyRowProps, ProposalCard, type ProposalCardProps, RatingControl, type RatingControlProps, RepairNote, type RepairNoteProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, type RetryNoteProps, RichSelect, type RichSelectOption, type RichSelectProps, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchInputSize, SectionHeader, type SectionHeaderProps, 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, Sparkline, type SparklineProps, Spinner, StatusDot, type StatusDotProps, type TabConfig, TabbedPanel, type TabbedPanelProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, type TemplateOption, TemplatePicker, type TemplatePickerProps, Terminal, TerminalLine, type TerminalLineKind, type TerminalLineProps, type TerminalProps, TimelineEntry, type TimelineEntryProps, TimelineList, type TimelineListProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, type TourController, type TourProps, type TourReference, type TourStep, 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 UseTourOptions, type Verdict, agentChipVariants, badgeVariants, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, navigationMenuTriggerStyle, statusDotVariants, toggleVariants, useSidebar, useTour };