@tangle-network/ui 11.48.0 → 11.50.1
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/CHANGELOG.md +28 -0
- package/dist/chat/agent-timeline.js +4 -3
- package/dist/chat/speaker.d.ts +3 -3
- package/dist/chat/speaker.js +12 -18
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -3
- package/dist/markdown/code-block.js +1 -1
- package/dist/presentation.d.ts +12 -0
- package/dist/presentation.js +85 -1
- package/dist/primitives/metric-strip.d.ts +2 -2
- package/dist/primitives/page-shell.d.ts +6 -3
- package/dist/primitives/page-shell.js +3 -60
- package/dist/primitives/progress.d.ts +8 -0
- package/dist/primitives/progress.js +8 -2
- package/dist/primitives/settings.d.ts +28 -1
- package/dist/primitives/settings.js +78 -29
- package/dist/primitives/status-pill.js +11 -2
- package/dist/primitives.d.ts +3 -3
- package/dist/primitives.js +3 -3
- package/dist/run/expanded-tool-detail.js +12 -4
- package/dist/run/run-group.js +21 -9
- package/dist/run/run-phase-list.js +5 -8
- package/dist/run/status-meta.d.ts +25 -0
- package/dist/run/status-meta.js +105 -0
- package/dist/run.d.ts +2 -1
- package/dist/run.js +2 -1
- package/package.json +2 -2
- package/src/chat/agent-timeline.test.tsx +9 -0
- package/src/chat/agent-timeline.tsx +4 -3
- package/src/chat/speaker.test.tsx +3 -1
- package/src/chat/speaker.tsx +13 -14
- package/src/markdown/code-block.tsx +2 -1
- package/src/markdown/markdown.stories.tsx +11 -0
- package/src/presentation.ts +68 -0
- package/src/primitives/index.ts +2 -1
- package/src/primitives/metric-strip.tsx +2 -2
- package/src/primitives/page-shell.tsx +9 -58
- package/src/primitives/progress.stories.tsx +10 -0
- package/src/primitives/progress.tsx +13 -2
- package/src/primitives/settings.stories.tsx +94 -3
- package/src/primitives/settings.tsx +80 -19
- package/src/primitives/status-pill.tsx +8 -1
- package/src/run/expanded-tool-detail.tsx +4 -10
- package/src/run/index.ts +8 -0
- package/src/run/run-group.tsx +8 -16
- package/src/run/run-phase-list.stories.tsx +19 -0
- package/src/run/run-phase-list.test.tsx +9 -1
- package/src/run/run-phase-list.tsx +3 -3
- package/src/run/status-meta.tsx +92 -0
- 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.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 22512f2: `SpeakerHeader` keeps the responder's name whole on a narrow row: the `@handle` truncates first.
|
|
8
|
+
- 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.
|
|
9
|
+
|
|
10
|
+
## 11.50.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- dec4a5b: Settings gaps found while adopting the settings system (#414, #415, #422):
|
|
15
|
+
|
|
16
|
+
- `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.
|
|
17
|
+
- `SettingsListItem` takes `tone` (a `StatusTone`): the state leads with the tone's glyph in its ink, and its text keeps its colour.
|
|
18
|
+
- 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.
|
|
19
|
+
- `MetricStrip columns={2}`, one column below `sm`.
|
|
20
|
+
- `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.
|
|
21
|
+
- A host whose page scrolls under its own sticky header sets `--tangle-settings-sticky-top`, and the settings nav sticks below it.
|
|
22
|
+
- A labelled `CopyButton` uses the header's sans 14px type instead of the code font.
|
|
23
|
+
- `Progress` takes `tone` (`neutral`, `success`, `warning`, `danger`), filled with that status ink.
|
|
24
|
+
|
|
25
|
+
## 11.49.0
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- 29e2a49: `statusMeta(status)` returns the one `{ label, icon, token }` for Running, Waiting, Needs you, Done, Failed, Stopped, Idle and Unknown, and `RunStatusIcon` draws it on the 16px lucide grid at stroke 1.75. `runStatus` maps the vocabularies ui already speaks (completed, error, attention-needed, cancelled …) and reads anything else as Unknown. Failed is always CircleX; only Needs you takes the warning amber; Running breathes on `--motion-ambient` instead of spinning. `RunPhaseList`, `ExpandedToolDetail` and `RunGroup` render their status through it, so a failed phase reads "Failed" with CircleX and a finished run reads "Done" with CircleCheck.
|
|
30
|
+
|
|
3
31
|
## 11.48.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,
|
|
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:
|
|
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:
|
|
43
|
+
icon: statusMeta("failed").icon
|
|
43
44
|
}
|
|
44
45
|
};
|
|
45
46
|
/** What a row is, for the gap above the next one. */
|
package/dist/chat/speaker.d.ts
CHANGED
|
@@ -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
|
|
54
|
-
* failed
|
|
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;
|
package/dist/chat/speaker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
|
53
|
-
* failed
|
|
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 === "
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
})
|
|
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 {
|
|
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";
|
|
@@ -118,6 +118,7 @@ import { LiveDuration } from "./run/run-item-primitives.js";
|
|
|
118
118
|
import { TaskList, TaskListItem, TaskListProps, TaskStatus, showsTaskPriority, taskProgress, taskStatus } from "./run/task-list.js";
|
|
119
119
|
import { ApprovalCard, ApprovalCardProps, ApprovalDiffFile, ApprovalDiffSummary, ApprovalPlanStep } from "./run/approval-card.js";
|
|
120
120
|
import { RunPhase, RunPhaseList } from "./run/run-phase-list.js";
|
|
121
|
+
import { RunStatus, RunStatusIcon, RunStatusIconProps, StatusMeta, runStatus, statusMeta } from "./run/status-meta.js";
|
|
121
122
|
import "./run.js";
|
|
122
123
|
import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES } from "./openui/schema-data.js";
|
|
123
124
|
import { OpenUISchemaIssue, OpenUISchemaValidation, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui-schema.js";
|
|
@@ -144,4 +145,4 @@ import { QuestionPreview, QuestionPreviewProps } from "./tool-previews/question-
|
|
|
144
145
|
import { DiffPreview, DiffPreviewProps } from "./tool-previews/diff-preview.js";
|
|
145
146
|
import { RedactedDocSegment, RedactedDocument, RedactedDocumentData, RedactedDocumentProps, RevealResult } from "./redaction/redacted-document.js";
|
|
146
147
|
import "./redaction.js";
|
|
147
|
-
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, 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, 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, seriesAreaPath, seriesExtent, seriesLinePath, seriesMean, seriesScale, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, showsTaskPriority, 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 {
|
|
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";
|
|
@@ -79,6 +79,7 @@ import { GlobResultsPreview } from "./tool-previews/glob-results-preview.js";
|
|
|
79
79
|
import { WebSearchPreview } from "./tool-previews/web-search-preview.js";
|
|
80
80
|
import { QuestionPreview } from "./tool-previews/question-preview.js";
|
|
81
81
|
import { DiffPreview } from "./tool-previews/diff-preview.js";
|
|
82
|
+
import { RunStatusIcon, runStatus, statusMeta } from "./run/status-meta.js";
|
|
82
83
|
import { ExpandedToolDetail } from "./run/expanded-tool-detail.js";
|
|
83
84
|
import { RunRowShell, RunRowStatusDot } from "./run/run-row-shell.js";
|
|
84
85
|
import { InlineToolItem } from "./run/inline-tool-item.js";
|
|
@@ -128,4 +129,4 @@ import { addMessage, addParts, clearChat, isStreamingAtom, messagesAtom, partMap
|
|
|
128
129
|
import { copyText } from "./utils/copy-text.js";
|
|
129
130
|
import { timeAgo } from "./utils/time-ago.js";
|
|
130
131
|
import { RedactedDocument } from "./redaction/redacted-document.js";
|
|
131
|
-
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, 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, seriesAreaPath, seriesExtent, seriesLinePath, seriesMean, seriesScale, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, showsTaskPriority, 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 };
|
|
@@ -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"],
|
package/dist/presentation.d.ts
CHANGED
|
@@ -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;
|
package/dist/presentation.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
|
17
|
-
* links (or a list of links) in `navigation`;
|
|
18
|
-
* in the column, and an element with
|
|
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
|
-
|
|
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
|
|
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 {};
|