@tangle-network/ui 11.49.0 → 11.50.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/chat/agent-timeline.js +4 -3
  3. package/dist/chat/speaker.d.ts +3 -3
  4. package/dist/chat/speaker.js +12 -18
  5. package/dist/index.d.ts +3 -3
  6. package/dist/index.js +3 -3
  7. package/dist/lib/code-presentation.js +1 -1
  8. package/dist/markdown/code-block.js +3 -3
  9. package/dist/presentation.d.ts +12 -0
  10. package/dist/presentation.js +85 -1
  11. package/dist/primitives/metric-strip.d.ts +2 -2
  12. package/dist/primitives/page-shell.d.ts +6 -3
  13. package/dist/primitives/page-shell.js +3 -60
  14. package/dist/primitives/progress.d.ts +8 -0
  15. package/dist/primitives/progress.js +8 -2
  16. package/dist/primitives/settings.d.ts +28 -1
  17. package/dist/primitives/settings.js +78 -29
  18. package/dist/primitives/status-pill.js +11 -2
  19. package/dist/primitives.d.ts +3 -3
  20. package/dist/primitives.js +3 -3
  21. package/package.json +2 -2
  22. package/src/chat/agent-timeline.test.tsx +9 -0
  23. package/src/chat/agent-timeline.tsx +4 -3
  24. package/src/chat/speaker.test.tsx +3 -1
  25. package/src/chat/speaker.tsx +13 -14
  26. package/src/lib/code-presentation.ts +1 -1
  27. package/src/markdown/code-block.test.tsx +0 -6
  28. package/src/markdown/code-block.tsx +4 -3
  29. package/src/markdown/markdown.stories.tsx +20 -0
  30. package/src/presentation.ts +68 -0
  31. package/src/primitives/index.ts +2 -1
  32. package/src/primitives/metric-strip.tsx +2 -2
  33. package/src/primitives/page-shell.tsx +9 -58
  34. package/src/primitives/progress.stories.tsx +10 -0
  35. package/src/primitives/progress.tsx +13 -2
  36. package/src/primitives/settings.stories.tsx +94 -3
  37. package/src/primitives/settings.tsx +80 -19
  38. package/src/primitives/status-pill.tsx +8 -1
  39. package/src/styles/presentation.css +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @tangle-network/ui
2
2
 
3
+ ## 11.50.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 035f031: `codePresentation.header` carries the header's type (`font-sans text-sm`), so a server-rendered code block header built from it shows its label and a text copy button in the header type, not the code font. The React `CodeBlock` label takes it from the header.
8
+
9
+ ## 11.50.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 22512f2: `SpeakerHeader` keeps the responder's name whole on a narrow row: the `@handle` truncates first.
14
+ - d9ad4c2: `SpeakerHeader` draws its Answering and Failed glyphs with `RunStatusIcon`, and an `AgentTimeline` status card with tone `error` shows the failed glyph (`statusMeta("failed")`, CircleX) instead of the warning triangle. On a narrow row a speaker's handle now takes only the space its name and state leave, so the name never shows an ellipsis while the handle can still give way.
15
+
16
+ ## 11.50.0
17
+
18
+ ### Minor Changes
19
+
20
+ - dec4a5b: Settings gaps found while adopting the settings system (#414, #415, #422):
21
+
22
+ - `SettingsNote`: a line or block of a `SettingsSection` that is not a row (an empty list, a loading line, a notice, a refusal, or a figure such as a `MetricStrip`), on the rows' gutters and divider, with `tone` (`default`, `muted`, `warning`, `danger`) and `role`. Warning and danger lead with a glyph.
23
+ - `SettingsListItem` takes `tone` (a `StatusTone`): the state leads with the tone's glyph in its ink, and its text keeps its colour.
24
+ - List titles and meta, and row values, keep a URL, address or event name whole: it moves to the next line, and one wider than its column breaks only at its punctuation.
25
+ - `MetricStrip columns={2}`, one column below `sm`.
26
+ - `bindSettingsNav` in `@tangle-network/ui/presentation` binds PageShell's settings nav in any host, React or server-rendered. A plain click on a link to another document marks it current at once; a back-forward restore shows the link the page left.
27
+ - A host whose page scrolls under its own sticky header sets `--tangle-settings-sticky-top`, and the settings nav sticks below it.
28
+ - A labelled `CopyButton` uses the header's sans 14px type instead of the code font.
29
+ - `Progress` takes `tone` (`neutral`, `success`, `warning`, `danger`), filled with that status ink.
30
+
3
31
  ## 11.49.0
4
32
 
5
33
  ### Minor Changes
@@ -1,5 +1,6 @@
1
1
  import { focusRing } from "../lib/focus.js";
2
2
  import { cn } from "../lib/utils.js";
3
+ import { statusMeta } from "../run/status-meta.js";
3
4
  import { Markdown } from "../markdown/markdown.js";
4
5
  import "./transcript-text.js";
5
6
  import { MessageAuthor } from "./message-author.js";
@@ -8,7 +9,7 @@ import { ThinkingIndicator } from "./thinking-indicator.js";
8
9
  import { ToolCallGroup, ToolCallStep } from "../run/tool-call-step.js";
9
10
  import { useState } from "react";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
11
- import { AlertTriangle, CheckCircle2, CircleDot, FileText, Info } from "lucide-react";
12
+ import { AlertTriangle, CircleDot, FileText, Info } from "lucide-react";
12
13
  // src/chat/agent-timeline.tsx
13
14
  const TONE_STYLES = {
14
15
  default: {
@@ -27,7 +28,7 @@ const TONE_STYLES = {
27
28
  card: "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)]",
28
29
  text: "text-[var(--surface-success-text)]",
29
30
  supportingText: "text-[var(--surface-success-text)]",
30
- icon: CheckCircle2
31
+ icon: statusMeta("done").icon
31
32
  },
32
33
  warning: {
33
34
  card: "border-[var(--surface-warning-border)] bg-[var(--surface-warning-bg)]",
@@ -39,7 +40,7 @@ const TONE_STYLES = {
39
40
  card: "border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)]",
40
41
  text: "text-[var(--surface-danger-text)]",
41
42
  supportingText: "text-[var(--surface-danger-text)]",
42
- icon: AlertTriangle
43
+ icon: statusMeta("failed").icon
43
44
  }
44
45
  };
45
46
  /** What a row is, for the gap above the next one. */
@@ -50,8 +50,8 @@ export interface SpeakerHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>,
50
50
  * gets, then the handle a person types to address the agent, then its state.
51
51
  *
52
52
  * The state comes from the speaker's own end state, else from `live`. An
53
- * answering responder shows the status grammar's open ring with the word, a
54
- * failed one its cross with the word, and a finished one nothing, as a settled
55
- * run row does. `data-speaker-state` carries all three.
53
+ * answering responder shows the running glyph with the word, a failed one the
54
+ * failed glyph with the word, both from `RunStatusIcon`, and a finished one
55
+ * nothing, as a settled run row does. `data-speaker-state` carries all three.
56
56
  */
57
57
  export declare function SpeakerHeader({ speaker, live, ...props }: SpeakerHeaderProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import { StatusPill } from "../primitives/status-pill.js";
1
+ import { RunStatusIcon } from "../run/status-meta.js";
2
2
  import { MessageAuthor } from "./message-author.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  // src/chat/speaker.tsx
@@ -49,9 +49,9 @@ function partitionBySpeaker(parts) {
49
49
  * gets, then the handle a person types to address the agent, then its state.
50
50
  *
51
51
  * The state comes from the speaker's own end state, else from `live`. An
52
- * answering responder shows the status grammar's open ring with the word, a
53
- * failed one its cross with the word, and a finished one nothing, as a settled
54
- * run row does. `data-speaker-state` carries all three.
52
+ * answering responder shows the running glyph with the word, a failed one the
53
+ * failed glyph with the word, both from `RunStatusIcon`, and a finished one
54
+ * nothing, as a settled run row does. `data-speaker-state` carries all three.
55
55
  */
56
56
  function SpeakerHeader({ speaker, live = false, ...props }) {
57
57
  const state = speaker.state ?? (live ? "answering" : "done");
@@ -63,22 +63,16 @@ function SpeakerHeader({ speaker, live = false, ...props }) {
63
63
  "data-speaker-state": state,
64
64
  ...props,
65
65
  children: [speaker.handle ? /* @__PURE__ */ jsxs("span", {
66
- className: "min-w-0 truncate text-muted-foreground text-sm",
66
+ className: "min-w-0 max-w-fit flex-1 truncate text-muted-foreground text-sm",
67
67
  title: `@${speaker.handle}`,
68
68
  children: ["@", speaker.handle]
69
- }) : null, state === "answering" ? /* @__PURE__ */ jsx(StatusPill, {
70
- tone: "running",
71
- bare: true,
72
- size: "md",
73
- className: "shrink-0 py-0",
74
- children: "Answering"
75
- }) : state === "failed" ? /* @__PURE__ */ jsx(StatusPill, {
76
- tone: "danger",
77
- bare: true,
78
- size: "md",
79
- className: "shrink-0 py-0",
80
- children: "Failed"
81
- }) : null]
69
+ }) : null, state === "done" ? null : /* @__PURE__ */ jsxs("span", {
70
+ className: "inline-flex shrink-0 items-center gap-1.5 font-medium text-sm",
71
+ children: [/* @__PURE__ */ jsx(RunStatusIcon, {
72
+ status: state === "failed" ? "failed" : "running",
73
+ "aria-hidden": true
74
+ }), state === "failed" ? "Failed" : "Answering"]
75
+ })]
82
76
  });
83
77
  }
84
78
  export { SpeakerHeader, partitionBySpeaker };
package/dist/index.d.ts CHANGED
@@ -92,11 +92,11 @@ import { ThemeToggle, useTheme } from "./primitives/theme-toggle.js";
92
92
  import { Heading, HeadingProps, HeadingVariant } from "./primitives/heading.js";
93
93
  import { PageShell, PageShellProps } from "./primitives/page-shell.js";
94
94
  import { Field, FieldProps, fieldMessageId } from "./primitives/field.js";
95
- import { SettingsList, SettingsListAction, SettingsListColumns, SettingsListItem, SettingsListItemProps, SettingsListMenuItem, SettingsListProps, SettingsRow, SettingsRowLayout, SettingsRowProps, SettingsSection, SettingsSectionProps } from "./primitives/settings.js";
95
+ import { StatusPill, StatusPillProps, StatusTone } from "./primitives/status-pill.js";
96
+ import { SettingsList, SettingsListAction, SettingsListColumns, SettingsListItem, SettingsListItemProps, SettingsListMenuItem, SettingsListProps, SettingsNote, SettingsNoteProps, SettingsRow, SettingsRowLayout, SettingsRowProps, SettingsSection, SettingsSectionProps } from "./primitives/settings.js";
96
97
  import { PageHeader, PageHeaderProps } from "./primitives/page-header.js";
97
98
  import { Alert, AlertDescription, AlertProps, AlertTitle, AlertTone } from "./primitives/alert.js";
98
99
  import { Pagination, PaginationProps } from "./primitives/pagination.js";
99
- import { StatusPill, StatusPillProps, StatusTone } from "./primitives/status-pill.js";
100
100
  import { ComplianceBadge, ComplianceBadgeProps, ComplianceProduct, ComplianceStatus } from "./primitives/compliance-badge.js";
101
101
  import { Tag, TagProps } from "./primitives/tag.js";
102
102
  import { Chip, ChipProps } from "./primitives/chip.js";
@@ -145,4 +145,4 @@ import { QuestionPreview, QuestionPreviewProps } from "./tool-previews/question-
145
145
  import { DiffPreview, DiffPreviewProps } from "./tool-previews/diff-preview.js";
146
146
  import { RedactedDocSegment, RedactedDocument, RedactedDocumentData, RedactedDocumentProps, RevealResult } from "./redaction/redacted-document.js";
147
147
  import "./redaction.js";
148
- export { ActiveProjectActivity, ActiveSessionActivityOptions, ActiveSessionConnectionOptions, ActiveSessionConnectionState, ActiveSessionReconnectState, ActiveSessionRecord, ActiveSessionStatus, ActiveSessionTransportMode, ActiveSessionsState, AgentBranding, AgentStreamEvent, AgentTimeline, type AgentTimelineArtifactItem, AgentTimelineColumn, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, AgentTimelineStep, type AgentTimelineStepKind, type AgentTimelineStepProps, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTone, ApiSchema, type ApiSchemaProps, AppendUserMessageOptions, ApplySdkEventOptions, ApprovalCard, type ApprovalCardProps, type ApprovalDiffFile, ApprovalDiffSummary, type ApprovalPlanStep, ArtifactPane, type ArtifactPaneProps, AuthHeader, type AuthHeaderProps, AuthUser, AutomationStreamEvent, Avatar, AvatarFallback, AvatarImage, type AvatarProps, Badge, type BadgeProps, BeginAssistantMessageOptions, BotStreamEvent, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, Calendar, type CalendarDate, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, type ChartReferenceLine, ChatAuthor, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, Checkbox, Chip, type ChipProps, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, type CommandPreviewProps, CompleteAssistantMessageOptions, ComplianceBadge, type ComplianceBadgeProps, type ComplianceProduct, type ComplianceStatus, ConnectionState, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CopyButtonProps, CustomToolRenderer, DatePicker, type DatePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, type DiffPreviewProps, DisplayVariant, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, ExpandedToolDetail, type ExpandedToolDetailProps, type FeedSegment, Field, type FieldProps, FileArtifactPane, type FileArtifactPaneProps, FileCard, type FileCardProps, type FileDetails, type FileFormat, FileList, type FileListItem, type FileListProps, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, type FileUploader, FilterField, type FilterFieldProps, FinalTextPart, GitHubLoginButton, type GitHubLoginButtonProps, GlobResultsPreview, type GlobResultsPreviewProps, GrepResultsPreview, type GrepResultsPreviewProps, GroupedMessage, Heading, type HeadingProps, type HeadingVariant, HelpText, type HelpTextProps, HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger, IconTile, type IconTileProps, InlineCode, type InlineCodeProps, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, Input, type InputProps, Label, LiveDuration, LoginLayout, type LoginLayoutProps, Logo, type LogoProps, Markdown, type MarkdownLinkChip, type MarkdownLinkChipResolver, type MarkdownProps, MessageAuthor, type MessageAuthorProps, MessageList, type MessageListProps, type MessageRole, MessageRun, MessageUser, Metric, MetricChart, type MetricChartProps, type MetricProps, MetricStrip, type MetricStripProps, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, type OpenUIAction, type OpenUIActionsNode, OpenUIArtifactRenderer, type OpenUIArtifactRendererProps, type OpenUIBadgeNode, type OpenUICardNode, type OpenUICodeNode, type OpenUIComponentNode, type OpenUIGridNode, type OpenUIHeadingNode, type OpenUIKeyValueNode, type OpenUIMarkdownNode, type OpenUIPrimitive, type OpenUISchemaIssue, type OpenUISchemaValidation, type OpenUISeparatorNode, type OpenUIStackNode, type OpenUIStatNode, type OpenUITableNode, type OpenUITextNode, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Pagination, type PaginationProps, PdfViewer, type PdfViewerConfig, type PdfViewerProps, type PeriodDelta, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, QuestionPreview, type QuestionPreviewProps, RadioGroup, RadioGroupItem, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, ReasoningPart, type RedactedDocSegment, RedactedDocument, type RedactedDocumentData, type RedactedDocumentProps, RegisterActiveSessionOptions, type RevealResult, RichFileTree, type RichFileTreeGitEntry, type RichFileTreeGitStatus, type RichFileTreeProps, type RichFileTreeThemeVars, Run, RunGroup, type RunGroupProps, type RunPhase, RunPhaseList, RunRowShell, type RunRowShellProps, type RunRowStatus, RunRowStatusDot, RunStats, type RunStatus, RunStatusIcon, type RunStatusIconProps, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeriesExtent, type SeriesPoint, type SeriesPointInput, type SeriesScale, SeriesSparkline, type SeriesSparklineProps, SessionMessage, SessionPart, SessionProjectKey, type SessionUser, SettingsList, type SettingsListAction, type SettingsListColumns, SettingsListItem, type SettingsListItemProps, type SettingsListMenuItem, type SettingsListProps, SettingsRow, type SettingsRowLayout, type SettingsRowProps, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, type SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, Slider, type Speaker, SpeakerHeader, type SpeakerHeaderProps, type SpeakerPart, type SpeakerSection, type SpeakerState, StatCard, type StatCardProps, type StatusMeta, StatusPill, type StatusPillProps, type StatusTone, Switch, TONE_CLASSES, TOOL_CATEGORY_ICONS, TRANSCRIPT_TEXT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TangleKnot, TaskList, type TaskListItem, type TaskListProps, type TaskStatus, TaskStreamEvent, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TerminalStreamEvent, TextPart, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, ThemeToggle, ThinkingIndicator, type ThinkingIndicatorProps, TimeSelect, type TimeSelectProps, type Toast, ToastContainer, ToastProvider, type Tone, type ToneClasses, type ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, ToolCategory, ToolDisplayMetadata, ToolPart, ToolState, ToolStatus, ToolTime, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UploadFile, UploadProgress, type UploadProgressProps, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, UserMenu, type UserMenuProps, UserMessage, type UserMessageProps, WebSearchPreview, type WebSearchPreviewProps, Wizard, type WizardProps, WizardStep, type WizardStepProps, WriteFilePreview, type WriteFilePreviewProps, activeSessionsAtom, addMessage, addParts, agentTimelineStepKind, badgeVariants, bumpActiveSessionActivity, buttonVariants, clearChat, cn, codeBlockGrammar, configurePdfViewer, copyText, createAuthFetcher, detectFileFormat, fenceInfo, fieldMessageId, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatCalendarDate, formatDuration, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, localToday, messagesAtom, normalizeSeries, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, partitionBySpeaker, periodDelta, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, runStatus, seriesAreaPath, seriesExtent, seriesLinePath, seriesMean, seriesScale, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, showsTaskPriority, statusMeta, tableCsv, taskProgress, taskStatus, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useProjectActivity, useProjectSessions, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useSessionsByActivity, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
148
+ export { ActiveProjectActivity, ActiveSessionActivityOptions, ActiveSessionConnectionOptions, ActiveSessionConnectionState, ActiveSessionReconnectState, ActiveSessionRecord, ActiveSessionStatus, ActiveSessionTransportMode, ActiveSessionsState, AgentBranding, AgentStreamEvent, AgentTimeline, type AgentTimelineArtifactItem, AgentTimelineColumn, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, AgentTimelineStep, type AgentTimelineStepKind, type AgentTimelineStepProps, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTone, ApiSchema, type ApiSchemaProps, AppendUserMessageOptions, ApplySdkEventOptions, ApprovalCard, type ApprovalCardProps, type ApprovalDiffFile, ApprovalDiffSummary, type ApprovalPlanStep, ArtifactPane, type ArtifactPaneProps, AuthHeader, type AuthHeaderProps, AuthUser, AutomationStreamEvent, Avatar, AvatarFallback, AvatarImage, type AvatarProps, Badge, type BadgeProps, BeginAssistantMessageOptions, BotStreamEvent, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, Calendar, type CalendarDate, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, type ChartReferenceLine, ChatAuthor, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, Checkbox, Chip, type ChipProps, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, type CommandPreviewProps, CompleteAssistantMessageOptions, ComplianceBadge, type ComplianceBadgeProps, type ComplianceProduct, type ComplianceStatus, ConnectionState, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CopyButtonProps, CustomToolRenderer, DatePicker, type DatePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, type DiffPreviewProps, DisplayVariant, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, ExpandedToolDetail, type ExpandedToolDetailProps, type FeedSegment, Field, type FieldProps, FileArtifactPane, type FileArtifactPaneProps, FileCard, type FileCardProps, type FileDetails, type FileFormat, FileList, type FileListItem, type FileListProps, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, type FileUploader, FilterField, type FilterFieldProps, FinalTextPart, GitHubLoginButton, type GitHubLoginButtonProps, GlobResultsPreview, type GlobResultsPreviewProps, GrepResultsPreview, type GrepResultsPreviewProps, GroupedMessage, Heading, type HeadingProps, type HeadingVariant, HelpText, type HelpTextProps, HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger, IconTile, type IconTileProps, InlineCode, type InlineCodeProps, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, Input, type InputProps, Label, LiveDuration, LoginLayout, type LoginLayoutProps, Logo, type LogoProps, Markdown, type MarkdownLinkChip, type MarkdownLinkChipResolver, type MarkdownProps, MessageAuthor, type MessageAuthorProps, MessageList, type MessageListProps, type MessageRole, MessageRun, MessageUser, Metric, MetricChart, type MetricChartProps, type MetricProps, MetricStrip, type MetricStripProps, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, type OpenUIAction, type OpenUIActionsNode, OpenUIArtifactRenderer, type OpenUIArtifactRendererProps, type OpenUIBadgeNode, type OpenUICardNode, type OpenUICodeNode, type OpenUIComponentNode, type OpenUIGridNode, type OpenUIHeadingNode, type OpenUIKeyValueNode, type OpenUIMarkdownNode, type OpenUIPrimitive, type OpenUISchemaIssue, type OpenUISchemaValidation, type OpenUISeparatorNode, type OpenUIStackNode, type OpenUIStatNode, type OpenUITableNode, type OpenUITextNode, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Pagination, type PaginationProps, PdfViewer, type PdfViewerConfig, type PdfViewerProps, type PeriodDelta, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, QuestionPreview, type QuestionPreviewProps, RadioGroup, RadioGroupItem, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, ReasoningPart, type RedactedDocSegment, RedactedDocument, type RedactedDocumentData, type RedactedDocumentProps, RegisterActiveSessionOptions, type RevealResult, RichFileTree, type RichFileTreeGitEntry, type RichFileTreeGitStatus, type RichFileTreeProps, type RichFileTreeThemeVars, Run, RunGroup, type RunGroupProps, type RunPhase, RunPhaseList, RunRowShell, type RunRowShellProps, type RunRowStatus, RunRowStatusDot, RunStats, type RunStatus, RunStatusIcon, type RunStatusIconProps, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeriesExtent, type SeriesPoint, type SeriesPointInput, type SeriesScale, SeriesSparkline, type SeriesSparklineProps, SessionMessage, SessionPart, SessionProjectKey, type SessionUser, SettingsList, type SettingsListAction, type SettingsListColumns, SettingsListItem, type SettingsListItemProps, type SettingsListMenuItem, type SettingsListProps, SettingsNote, type SettingsNoteProps, SettingsRow, type SettingsRowLayout, type SettingsRowProps, SettingsSection, type SettingsSectionProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, type SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, Slider, type Speaker, SpeakerHeader, type SpeakerHeaderProps, type SpeakerPart, type SpeakerSection, type SpeakerState, StatCard, type StatCardProps, type StatusMeta, StatusPill, type StatusPillProps, type StatusTone, Switch, TONE_CLASSES, TOOL_CATEGORY_ICONS, TRANSCRIPT_TEXT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TangleKnot, TaskList, type TaskListItem, type TaskListProps, type TaskStatus, TaskStreamEvent, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TerminalStreamEvent, TextPart, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, ThemeToggle, ThinkingIndicator, type ThinkingIndicatorProps, TimeSelect, type TimeSelectProps, type Toast, ToastContainer, ToastProvider, type Tone, type ToneClasses, type ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, ToolCategory, ToolDisplayMetadata, ToolPart, ToolState, ToolStatus, ToolTime, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UploadFile, UploadProgress, type UploadProgressProps, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, UserMenu, type UserMenuProps, UserMessage, type UserMessageProps, WebSearchPreview, type WebSearchPreviewProps, Wizard, type WizardProps, WizardStep, type WizardStepProps, WriteFilePreview, type WriteFilePreviewProps, activeSessionsAtom, addMessage, addParts, agentTimelineStepKind, badgeVariants, bumpActiveSessionActivity, buttonVariants, clearChat, cn, codeBlockGrammar, configurePdfViewer, copyText, createAuthFetcher, detectFileFormat, fenceInfo, fieldMessageId, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatCalendarDate, formatDuration, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, localToday, messagesAtom, normalizeSeries, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, partitionBySpeaker, periodDelta, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, runStatus, seriesAreaPath, seriesExtent, seriesLinePath, seriesMean, seriesScale, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, showsTaskPriority, statusMeta, tableCsv, taskProgress, taskStatus, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useProjectActivity, useProjectSessions, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useSessionsByActivity, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
package/dist/index.js CHANGED
@@ -47,11 +47,11 @@ import { InlineCode } from "./primitives/code-block.js";
47
47
  import { ThemeToggle, useTheme } from "./primitives/theme-toggle.js";
48
48
  import { PageShell } from "./primitives/page-shell.js";
49
49
  import { Field, fieldMessageId } from "./primitives/field.js";
50
- import { SettingsList, SettingsListItem, SettingsRow, SettingsSection } from "./primitives/settings.js";
50
+ import { StatusPill } from "./primitives/status-pill.js";
51
+ import { SettingsList, SettingsListItem, SettingsNote, SettingsRow, SettingsSection } from "./primitives/settings.js";
51
52
  import { PageHeader } from "./primitives/page-header.js";
52
53
  import { Alert, AlertDescription, AlertTitle } from "./primitives/alert.js";
53
54
  import { Pagination } from "./primitives/pagination.js";
54
- import { StatusPill } from "./primitives/status-pill.js";
55
55
  import { ComplianceBadge } from "./primitives/compliance-badge.js";
56
56
  import { CATEGORY_TONES, TONE_CLASSES, toneFor } from "./primitives/tone.js";
57
57
  import { Tag } from "./primitives/tag.js";
@@ -129,4 +129,4 @@ import { addMessage, addParts, clearChat, isStreamingAtom, messagesAtom, partMap
129
129
  import { copyText } from "./utils/copy-text.js";
130
130
  import { timeAgo } from "./utils/time-ago.js";
131
131
  import { RedactedDocument } from "./redaction/redacted-document.js";
132
- export { AgentTimeline, AgentTimelineColumn, AgentTimelineStep, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApiSchema, ApprovalCard, ApprovalDiffSummary, ArtifactPane, AuthHeader, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatContainer, ChatMessage, Checkbox, Chip, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, ComplianceBadge, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ExpandedToolDetail, Field, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, FilterField, GitHubLoginButton, GlobResultsPreview, GrepResultsPreview, Heading, HelpText, HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger, IconTile, InlineCode, InlineThinkingItem, InlineToolItem, Input, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageAuthor, MessageList, Metric, MetricChart, MetricStrip, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, PageHeader, PageShell, Pagination, PdfViewer, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, QuestionPreview, RadioGroup, RadioGroupItem, RealtimeSessionRegistry, RedactedDocument, RichFileTree, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, RunStatusIcon, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SeriesSparkline, SettingsList, SettingsListItem, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, Slider, SpeakerHeader, StatCard, StatusPill, Switch, TONE_CLASSES, TOOL_CATEGORY_ICONS, TRANSCRIPT_TEXT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TangleKnot, TaskList, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea, ThemeToggle, ThinkingIndicator, TimeSelect, ToastContainer, ToastProvider, ToolCallFeed, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UploadProgress, UserMenu, UserMessage, WebSearchPreview, Wizard, WizardStep, WriteFilePreview, activeSessionsAtom, addMessage, addParts, agentTimelineStepKind, badgeVariants, bumpActiveSessionActivity, buttonVariants, clearChat, cn, codeBlockGrammar, configurePdfViewer, copyText, createAuthFetcher, detectFileFormat, fenceInfo, fieldMessageId, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatCalendarDate, formatDuration, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, localToday, messagesAtom, normalizeSeries, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, partitionBySpeaker, periodDelta, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, runStatus, seriesAreaPath, seriesExtent, seriesLinePath, seriesMean, seriesScale, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, showsTaskPriority, statusMeta, tableCsv, taskProgress, taskStatus, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useProjectActivity, useProjectSessions, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useSessionsByActivity, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
132
+ export { AgentTimeline, AgentTimelineColumn, AgentTimelineStep, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApiSchema, ApprovalCard, ApprovalDiffSummary, ArtifactPane, AuthHeader, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatContainer, ChatMessage, Checkbox, Chip, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, ComplianceBadge, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ExpandedToolDetail, Field, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, FilterField, GitHubLoginButton, GlobResultsPreview, GrepResultsPreview, Heading, HelpText, HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger, IconTile, InlineCode, InlineThinkingItem, InlineToolItem, Input, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageAuthor, MessageList, Metric, MetricChart, MetricStrip, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, PageHeader, PageShell, Pagination, PdfViewer, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, QuestionPreview, RadioGroup, RadioGroupItem, RealtimeSessionRegistry, RedactedDocument, RichFileTree, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, RunStatusIcon, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SeriesSparkline, SettingsList, SettingsListItem, SettingsNote, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, Slider, SpeakerHeader, StatCard, StatusPill, Switch, TONE_CLASSES, TOOL_CATEGORY_ICONS, TRANSCRIPT_TEXT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TangleKnot, TaskList, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea, ThemeToggle, ThinkingIndicator, TimeSelect, ToastContainer, ToastProvider, ToolCallFeed, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UploadProgress, UserMenu, UserMessage, WebSearchPreview, Wizard, WizardStep, WriteFilePreview, activeSessionsAtom, addMessage, addParts, agentTimelineStepKind, badgeVariants, bumpActiveSessionActivity, buttonVariants, clearChat, cn, codeBlockGrammar, configurePdfViewer, copyText, createAuthFetcher, detectFileFormat, fenceInfo, fieldMessageId, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatCalendarDate, formatDuration, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, ixControl, ixControlAfter, ixControlSoft, ixField, ixRow, ixSelected, ixTabUnderline, localToday, messagesAtom, normalizeSeries, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, partitionBySpeaker, periodDelta, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, runStatus, seriesAreaPath, seriesExtent, seriesLinePath, seriesMean, seriesScale, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, showsTaskPriority, statusMeta, tableCsv, taskProgress, taskStatus, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useProjectActivity, useProjectSessions, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useSessionsByActivity, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
@@ -189,7 +189,7 @@ const codePresentation = {
189
189
  tabs: `tangle-code-tabs ${tabsPresentation.list.underline}`,
190
190
  tab: tabsPresentation.trigger.underline,
191
191
  root: "group relative min-w-0 overflow-hidden rounded-lg border font-mono bg-card border-border",
192
- header: "flex flex-wrap items-center justify-between gap-3 border-b border-border px-3 py-1.5 bg-[var(--code-header-bg,hsl(var(--background)))]",
192
+ header: "flex flex-wrap items-center justify-between gap-3 border-b border-border px-3 py-1.5 font-sans text-sm bg-[var(--code-header-bg,hsl(var(--background)))]",
193
193
  copy: "flex items-center justify-center min-w-8 min-h-8 pointer-coarse:min-w-11 pointer-coarse:min-h-11 rounded-md bg-muted border border-border hover:border-[var(--border-strong)] transition-colors data-[copy-loading=true]:after:content-['…'] data-[copy-loading=true]:gap-1",
194
194
  copyStatus: "sr-only data-[copy-long-work=true]:not-sr-only data-[copy-long-work=true]:text-xs data-[copy-long-work=true]:text-muted-foreground"
195
195
  };
@@ -58,7 +58,7 @@ const CodeBlock = memo(({ code: defaultCode, language: defaultLanguage, label, f
58
58
  children: apiMetadataText(metadata)
59
59
  }),
60
60
  filename ? /* @__PURE__ */ jsxs("span", {
61
- className: "flex min-w-0 items-center gap-2 font-sans text-sm",
61
+ className: "flex min-w-0 items-center gap-2",
62
62
  children: [
63
63
  /* @__PURE__ */ jsx(FileCode2, {
64
64
  "aria-hidden": true,
@@ -75,7 +75,7 @@ const CodeBlock = memo(({ code: defaultCode, language: defaultLanguage, label, f
75
75
  })
76
76
  ]
77
77
  }) : /* @__PURE__ */ jsx("span", {
78
- className: "font-sans text-sm font-medium text-muted-foreground",
78
+ className: "font-medium text-muted-foreground",
79
79
  children: headerLabel
80
80
  }),
81
81
  children,
@@ -165,7 +165,7 @@ const CopyButton = memo(({ text, label: actionLabel, copiedLabel = "Copied", fai
165
165
  "data-copy-loading": !!loading,
166
166
  type: "button",
167
167
  onClick: handleCopy,
168
- className: cn(codePresentation.copy, actionLabel && "gap-2 px-3", focusRing, className),
168
+ className: cn(codePresentation.copy, actionLabel && "gap-2 px-3 font-sans text-sm", focusRing, className),
169
169
  "aria-label": pending ? "Copying to clipboard" : label,
170
170
  "aria-busy": pending || props["aria-busy"],
171
171
  "aria-disabled": pending || props["aria-disabled"],
@@ -36,6 +36,7 @@ export declare const metricPresentation: {
36
36
  readonly hint: "mt-0.5 whitespace-normal [overflow-wrap:anywhere] text-[var(--text-dim)] text-xs";
37
37
  };
38
38
  export declare const metricLayouts: {
39
+ readonly 2: "grid-cols-1 sm:grid-cols-2 max-sm:[&>div+div]:border-t sm:[&>div:not(:nth-child(2n+1))]:border-l";
39
40
  readonly 3: "grid-cols-2 sm:grid-cols-3 max-sm:[&>div:not(:nth-child(2n+1))]:border-l sm:[&>div:not(:nth-child(3n+1))]:border-l";
40
41
  readonly 4: "grid-cols-2 sm:grid-cols-4 max-sm:[&>div:not(:nth-child(2n+1))]:border-l sm:[&>div:not(:nth-child(4n+1))]:border-l";
41
42
  readonly 5: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 max-sm:[&>div:not(:nth-child(2n+1))]:border-l sm:max-lg:[&>div:not(:nth-child(3n+1))]:border-l lg:[&>div:not(:nth-child(5n+1))]:border-l";
@@ -67,6 +68,17 @@ export declare const dialogPresentation: {
67
68
  };
68
69
  /** Native-dialog adapter for Hono/static markup. Radix remains the React Dialog/Sheet owner. */
69
70
  export declare function bindDialog(dialog: HTMLDialogElement, trigger: HTMLElement): () => void;
71
+ /**
72
+ * The settings section links of PageShell `measure="settings"`, for any host: PageShell binds its
73
+ * nav with it, and a server-rendered host binds the same markup. On the tab strip the current link
74
+ * (`aria-current="page"`) is centred by scrolling the strip only, never the page. It centres when
75
+ * the current link changes or first becomes reachable, never on scroll or on a change that keeps
76
+ * the same current link, so a user who scrolled to the first or last section stays there; resize
77
+ * and font swaps re-centre only until the user first scrolls the strip. A plain click on a link to
78
+ * another document makes it current at once, while that document loads, and a page restored from
79
+ * the back-forward cache shows the link it left.
80
+ */
81
+ export declare function bindSettingsNav(nav: HTMLElement): () => void;
70
82
  export declare const labelVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
71
83
  export declare const helpPresentation: {
72
84
  root: string;
@@ -84,6 +84,7 @@ const metricPresentation = {
84
84
  hint: "mt-0.5 whitespace-normal [overflow-wrap:anywhere] text-[var(--text-dim)] text-xs"
85
85
  };
86
86
  const metricLayouts = {
87
+ 2: "grid-cols-1 sm:grid-cols-2 max-sm:[&>div+div]:border-t sm:[&>div:not(:nth-child(2n+1))]:border-l",
87
88
  3: "grid-cols-2 sm:grid-cols-3 max-sm:[&>div:not(:nth-child(2n+1))]:border-l sm:[&>div:not(:nth-child(3n+1))]:border-l",
88
89
  4: "grid-cols-2 sm:grid-cols-4 max-sm:[&>div:not(:nth-child(2n+1))]:border-l sm:[&>div:not(:nth-child(4n+1))]:border-l",
89
90
  5: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 max-sm:[&>div:not(:nth-child(2n+1))]:border-l sm:max-lg:[&>div:not(:nth-child(3n+1))]:border-l lg:[&>div:not(:nth-child(5n+1))]:border-l",
@@ -164,6 +165,89 @@ function bindDialog(dialog, trigger) {
164
165
  dialog.removeEventListener("keydown", key);
165
166
  };
166
167
  }
168
+ /**
169
+ * The settings section links of PageShell `measure="settings"`, for any host: PageShell binds its
170
+ * nav with it, and a server-rendered host binds the same markup. On the tab strip the current link
171
+ * (`aria-current="page"`) is centred by scrolling the strip only, never the page. It centres when
172
+ * the current link changes or first becomes reachable, never on scroll or on a change that keeps
173
+ * the same current link, so a user who scrolled to the first or last section stays there; resize
174
+ * and font swaps re-centre only until the user first scrolls the strip. A plain click on a link to
175
+ * another document makes it current at once, while that document loads, and a page restored from
176
+ * the back-forward cache shows the link it left.
177
+ */
178
+ function bindSettingsNav(nav) {
179
+ let centredKey = null;
180
+ let userScrolled = false;
181
+ let left = null;
182
+ const current = () => nav.querySelector("[aria-current=\"page\"]");
183
+ const reveal = (layoutOnly) => {
184
+ const link = current();
185
+ if (nav.scrollWidth <= nav.clientWidth || !link) return;
186
+ const key = link.getAttribute("href") ?? link.textContent ?? "";
187
+ if (key !== centredKey) userScrolled = false;
188
+ else if (!layoutOnly || userScrolled) return;
189
+ centredKey = key;
190
+ const strip = nav.getBoundingClientRect(), box = link.getBoundingClientRect();
191
+ nav.scrollLeft += box.left + box.width / 2 - (strip.left + strip.width / 2);
192
+ };
193
+ const mark = (from, to) => {
194
+ from?.removeAttribute("aria-current");
195
+ to?.setAttribute("aria-current", "page");
196
+ };
197
+ const click = (event) => {
198
+ if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
199
+ const link = event.target instanceof Element ? event.target.closest("a[href]") : null;
200
+ if (!(link instanceof HTMLAnchorElement) || !nav.contains(link) || link.target && link.target !== "_self" || link.hasAttribute("download")) return;
201
+ if (link.origin !== location.origin || link.pathname + link.search === location.pathname + location.search) return;
202
+ const from = current();
203
+ if (from === link) return;
204
+ left = {
205
+ from,
206
+ to: link
207
+ };
208
+ mark(from, link);
209
+ };
210
+ const restore = (event) => {
211
+ if (!event.persisted || !left) return;
212
+ mark(left.to, left.from);
213
+ left = null;
214
+ };
215
+ const onUser = () => {
216
+ userScrolled = true;
217
+ };
218
+ const userEvents = [
219
+ "pointerdown",
220
+ "touchstart",
221
+ "wheel",
222
+ "keydown"
223
+ ];
224
+ for (const type of userEvents) nav.addEventListener(type, onUser, { passive: true });
225
+ window.addEventListener("click", click);
226
+ window.addEventListener("pageshow", restore);
227
+ let live = true;
228
+ reveal(false);
229
+ document.fonts?.ready.then(() => {
230
+ if (live) reveal(true);
231
+ });
232
+ const resize = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(() => reveal(true));
233
+ resize?.observe(nav);
234
+ const links = new MutationObserver(() => reveal(false));
235
+ links.observe(nav, {
236
+ subtree: true,
237
+ childList: true,
238
+ characterData: true,
239
+ attributes: true,
240
+ attributeFilter: ["aria-current"]
241
+ });
242
+ return () => {
243
+ live = false;
244
+ resize?.disconnect();
245
+ links.disconnect();
246
+ for (const type of userEvents) nav.removeEventListener(type, onUser);
247
+ window.removeEventListener("click", click);
248
+ window.removeEventListener("pageshow", restore);
249
+ };
250
+ }
167
251
  const labelVariants = cva("font-medium text-[length:var(--font-size-label,0.875rem)] leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
168
252
  const helpPresentation = {
169
253
  root: "text-[length:var(--font-size-help,0.75rem)] leading-4",
@@ -193,4 +277,4 @@ const tabsPresentation = {
193
277
  underline: `inline-flex items-center justify-center whitespace-nowrap rounded-t-md pb-3 text-sm font-medium ${controlMotion} ${focusRing} disabled:pointer-events-none disabled:opacity-50 border-b-2 border-transparent data-[state=inactive]:text-muted-foreground ${ixTabUnderline}`
194
278
  }
195
279
  };
196
- export { bindDialog, buttonVariants, cardPresentation, chartPresentation, controlHeight, controlMotion, controlRadius, controlSizes, controlText, dialogPresentation, emptyStatePresentation, fieldPresentation, fieldSizes, fieldTouchText, helpPresentation, inputVariants, ixControlSoft, ixSelected, ixTabUnderline, labelVariants, metricLayouts, metricPresentation, tablePresentation, tabsPresentation };
280
+ export { bindDialog, bindSettingsNav, buttonVariants, cardPresentation, chartPresentation, controlHeight, controlMotion, controlRadius, controlSizes, controlText, dialogPresentation, emptyStatePresentation, fieldPresentation, fieldSizes, fieldTouchText, helpPresentation, inputVariants, ixControlSoft, ixSelected, ixTabUnderline, labelVariants, metricLayouts, metricPresentation, tablePresentation, tabsPresentation };
@@ -4,8 +4,8 @@ import * as React from "react";
4
4
  export interface MetricStripProps extends React.HTMLAttributes<HTMLDListElement> {
5
5
  children: React.ReactNode;
6
6
  /** Desktop columns. Default retains the existing two / sm:four layout.
7
- * Five and six use three columns between sm and lg. Never inferred from data. */
8
- columns?: 3 | 4 | 5 | 6;
7
+ * Two stack below sm; five and six use three columns between sm and lg. Never inferred from data. */
8
+ columns?: 2 | 3 | 4 | 5 | 6;
9
9
  }
10
10
  declare const MetricStrip: React.ForwardRefExoticComponent<MetricStripProps & React.RefAttributes<HTMLDListElement>>;
11
11
  export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -13,9 +13,12 @@ export interface PageShellProps {
13
13
  * column. `settings` is a 48rem column of cards whose navigation is a sticky
14
14
  * 13rem column of rows when its frame is at least 60rem wide, and a sticky
15
15
  * 56px tab strip under the header below that; the current link
16
- * (`aria-current="page"`) is centred by scrolling the strip only. Put
17
- * links (or a list of links) in `navigation`; an `svg` in a link shows only
18
- * in the column, and an element with `data-count` sits at its end.
16
+ * (`aria-current="page"`) is centred by scrolling the strip only
17
+ * ({@link bindSettingsNav}). Put links (or a list of links) in `navigation`;
18
+ * an `svg` in a link shows only in the column, and an element with
19
+ * `data-count` sits at its end. A host whose page scrolls under its own
20
+ * sticky header sets `--tangle-settings-sticky-top` on the frame or an
21
+ * ancestor, such as `var(--shell-header-height)`, and the nav sticks below it.
19
22
  */
20
23
  measure?: "reading" | "settings";
21
24
  navigationLabel?: string;
@@ -1,68 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/utils.js";
3
+ import { bindSettingsNav } from "../presentation.js";
3
4
  import * as React from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  // src/primitives/page-shell.tsx
6
7
  /**
7
- * Centre the current link of a horizontally scrolling nav, so the links on
8
- * both sides show that the strip scrolls. It moves the strip, never the page.
9
- * It centres when the current link changes (or first becomes reachable), never
10
- * on scroll, arrow taps or re-renders that keep the same current link, so a
11
- * user who scrolls to the first or last section stays there. Resize and font
12
- * swaps re-centre only until the user first scrolls the strip.
13
- */
14
- function useCurrentLinkInView(ref, enabled) {
15
- React.useEffect(() => {
16
- const nav = ref.current;
17
- if (!enabled || !nav) return;
18
- let centredKey = null;
19
- let userScrolled = false;
20
- const reveal = (layoutOnly) => {
21
- if (nav.scrollWidth <= nav.clientWidth) return;
22
- const current = nav.querySelector("[aria-current=\"page\"]");
23
- if (!current) return;
24
- const key = current.getAttribute("href") ?? current.textContent ?? "";
25
- if (key !== centredKey) userScrolled = false;
26
- else if (!layoutOnly || userScrolled) return;
27
- centredKey = key;
28
- const strip = nav.getBoundingClientRect();
29
- const link = current.getBoundingClientRect();
30
- nav.scrollLeft += link.left + link.width / 2 - (strip.left + strip.width / 2);
31
- };
32
- const onUser = () => {
33
- userScrolled = true;
34
- };
35
- nav.addEventListener("pointerdown", onUser, { passive: true });
36
- nav.addEventListener("touchstart", onUser, { passive: true });
37
- nav.addEventListener("wheel", onUser, { passive: true });
38
- nav.addEventListener("keydown", onUser);
39
- let live = true;
40
- reveal(false);
41
- document.fonts?.ready.then(() => {
42
- if (live) reveal(true);
43
- });
44
- const resize = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(() => reveal(true));
45
- resize?.observe(nav);
46
- const links = new MutationObserver(() => reveal(false));
47
- links.observe(nav, {
48
- subtree: true,
49
- childList: true,
50
- characterData: true,
51
- attributes: true,
52
- attributeFilter: ["aria-current"]
53
- });
54
- return () => {
55
- live = false;
56
- resize?.disconnect();
57
- links.disconnect();
58
- nav.removeEventListener("pointerdown", onUser);
59
- nav.removeEventListener("touchstart", onUser);
60
- nav.removeEventListener("wheel", onUser);
61
- nav.removeEventListener("keydown", onUser);
62
- };
63
- }, [ref, enabled]);
64
- }
65
- /**
66
8
  * Ported from sandbox-ui/src/primitives/page-shell.tsx. An optional bounded
67
9
  * width, gutter and vertical rhythm, not an application shell or a card grid.
68
10
  * The caller owns landmarks, routing, auth, navigation and data state.
@@ -74,7 +16,8 @@ function useCurrentLinkInView(ref, enabled) {
74
16
  function PageShell({ children, className, navigation, article, outline, header, measure = "reading", navigationLabel = "Sections", outlineLabel = "On this page" }) {
75
17
  const navRef = React.useRef(null);
76
18
  const settings = measure === "settings";
77
- useCurrentLinkInView(navRef, settings && Boolean(navigation));
19
+ const hasNavigation = Boolean(navigation);
20
+ React.useEffect(() => settings && hasNavigation && navRef.current ? bindSettingsNav(navRef.current) : void 0, [settings, hasNavigation]);
78
21
  if (navigation || article || outline || header || settings) {
79
22
  const shell = /* @__PURE__ */ jsxs("div", {
80
23
  className: cn("tangle-reading-shell", !settings && className),
@@ -1,7 +1,15 @@
1
1
  import * as React from "react";
2
2
  import * as ProgressPrimitive from "@radix-ui/react-progress";
3
+ declare const TONE_FILL: {
4
+ neutral: string;
5
+ success: string;
6
+ warning: string;
7
+ danger: string;
8
+ };
3
9
  declare const Progress: React.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
4
10
  variant?: "default" | "sandbox";
11
+ /** A state the reading is in, such as `danger` at a limit; it replaces the variant's fill. */
12
+ tone?: keyof typeof TONE_FILL;
5
13
  showValue?: boolean;
6
14
  } & React.RefAttributes<HTMLDivElement>>;
7
15
  export { Progress };
@@ -3,7 +3,13 @@ import * as React from "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import * as ProgressPrimitive from "@radix-ui/react-progress";
5
5
  // src/primitives/progress.tsx
6
- const Progress = React.forwardRef(({ className, value, variant = "default", showValue = false, ...props }, ref) => {
6
+ const TONE_FILL = {
7
+ neutral: "bg-[var(--surface-neutral-text)]",
8
+ success: "bg-[var(--surface-success-text)]",
9
+ warning: "bg-[var(--surface-warning-text)]",
10
+ danger: "bg-[var(--surface-danger-text)]"
11
+ };
12
+ const Progress = React.forwardRef(({ className, value, variant = "default", tone, showValue = false, ...props }, ref) => {
7
13
  const indicatorVariants = {
8
14
  default: "bg-primary",
9
15
  sandbox: "bg-[image:var(--accent-gradient-strong)]"
@@ -15,7 +21,7 @@ const Progress = React.forwardRef(({ className, value, variant = "default", show
15
21
  className: cn("relative h-2 w-full overflow-hidden rounded-full bg-muted", className),
16
22
  ...props,
17
23
  children: /* @__PURE__ */ jsx(ProgressPrimitive.Indicator, {
18
- className: cn("h-full w-full flex-1 transition-all duration-300 ease-out", indicatorVariants[variant]),
24
+ className: cn("h-full w-full flex-1 transition-all duration-300 ease-out", tone ? TONE_FILL[tone] : indicatorVariants[variant]),
19
25
  style: { transform: `translateX(-${100 - (value || 0)}%)` }
20
26
  })
21
27
  }), showValue && /* @__PURE__ */ jsxs("span", {
@@ -1,3 +1,4 @@
1
+ import { StatusTone } from "./status-pill.js";
1
2
  import * as React from "react";
2
3
  export type SettingsRowLayout = "inline" | "compact" | "stacked";
3
4
  export interface SettingsRowProps {
@@ -65,6 +66,29 @@ export interface SettingsSectionProps {
65
66
  * width container its rows and lists respond to.
66
67
  */
67
68
  export declare function SettingsSection({ id, title, description, info, actions, tone, footer, children }: SettingsSectionProps): React.JSX.Element;
69
+ declare const NOTE_TONE: {
70
+ readonly default: "text-foreground";
71
+ readonly muted: "text-muted-foreground";
72
+ readonly warning: "text-[color:var(--surface-warning-text)]";
73
+ readonly danger: "text-[color:var(--surface-danger-text)]";
74
+ };
75
+ export interface SettingsNoteProps {
76
+ /**
77
+ * `default` keeps the body ink, for a figure such as a MetricStrip or an inline form.
78
+ * `muted` is an empty list or a loading line. `warning` (a notice) and `danger` (a refusal)
79
+ * lead with a glyph, so the tone is not carried by colour alone.
80
+ */
81
+ tone?: keyof typeof NOTE_TONE;
82
+ /** `status` announces a change politely; `alert` announces a refusal at once. */
83
+ role?: "status" | "alert";
84
+ children?: React.ReactNode;
85
+ }
86
+ /**
87
+ * A line or block of a {@link SettingsSection} that is not a row: an empty list, a loading line,
88
+ * a notice, a refusal or a figure. It takes the rows' gutters and divider, so it lines up with
89
+ * the rows and lists around it.
90
+ */
91
+ export declare function SettingsNote({ tone, role, children }: SettingsNoteProps): React.JSX.Element;
68
92
  /** Track widths for a {@link SettingsList}. Every slot its items use needs a column, except status and menu, which have fallbacks. */
69
93
  export interface SettingsListColumns {
70
94
  /** A logo or avatar column, such as `"36px"`. */
@@ -112,6 +136,8 @@ export interface SettingsListItemProps {
112
136
  meta?: React.ReactNode;
113
137
  /** The item's state as plain text, or a control that sets it (a role select). */
114
138
  status?: React.ReactNode;
139
+ /** The state's tone, drawn as a glyph before it in the tone's ink; the state's text keeps its colour. */
140
+ tone?: StatusTone;
115
141
  /** Shown under the meta in danger text and announced. */
116
142
  error?: React.ReactNode;
117
143
  /** The one verb the item needs at rest. It is drawn as an outline button, so it never reads as the state beside it. */
@@ -124,4 +150,5 @@ export interface SettingsListItemProps {
124
150
  * that name. Without a status column the state follows the meta, and without
125
151
  * a menu column the ⋯ menu ends the action cell.
126
152
  */
127
- export declare function SettingsListItem({ leading, title, meta, status, error, action, menu }: SettingsListItemProps): React.JSX.Element;
153
+ export declare function SettingsListItem({ leading, title, meta, status, tone, error, action, menu }: SettingsListItemProps): React.JSX.Element;
154
+ export {};