@tangle-network/ui 11.40.2 → 11.41.0
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 +10 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/primitives/breadcrumb.d.ts +32 -0
- package/dist/primitives/breadcrumb.js +87 -0
- package/dist/primitives/hover-card.d.ts +16 -0
- package/dist/primitives/hover-card.js +63 -0
- package/dist/primitives.d.ts +3 -1
- package/dist/primitives.js +3 -1
- package/package.json +3 -2
- package/src/primitives/breadcrumb.tsx +126 -0
- package/src/primitives/hover-card-breadcrumb.test.tsx +92 -0
- package/src/primitives/hover-card.tsx +89 -0
- package/src/primitives/index.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @tangle-network/ui
|
|
2
2
|
|
|
3
|
+
## 11.41.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 13f5880: HoverCard and Breadcrumb: two high-value shadcn-convention components our products needed.
|
|
8
|
+
|
|
9
|
+
HoverCard: a rich hover preview (person, product, record) on the L4 overlay surface, lazy-mounted, Radix-backed. The face of every @mention, vendor name, and staff reference in a chat thread.
|
|
10
|
+
|
|
11
|
+
Breadcrumb: workspace navigation depth as one scrollable line — each crumb is a link except the last, which is the page. Fade-masked on narrow viewports, not wrapped.
|
|
12
|
+
|
|
3
13
|
## 11.40.2
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -99,6 +99,8 @@ import { StatusPill, StatusPillProps, StatusTone } from "./primitives/status-pil
|
|
|
99
99
|
import { Tag, TagProps } from "./primitives/tag.js";
|
|
100
100
|
import { Chip, ChipProps } from "./primitives/chip.js";
|
|
101
101
|
import { Wizard, WizardProps, WizardStep, WizardStepProps } from "./primitives/wizard.js";
|
|
102
|
+
import { HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger } from "./primitives/hover-card.js";
|
|
103
|
+
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./primitives/breadcrumb.js";
|
|
102
104
|
import { Metric, MetricProps, MetricStrip, MetricStripProps } from "./primitives/metric-strip.js";
|
|
103
105
|
import { FilterField, FilterFieldProps, Toolbar, ToolbarProps } from "./primitives/toolbar.js";
|
|
104
106
|
import { Logo, LogoProps, TangleKnot } from "./primitives.js";
|
|
@@ -137,4 +139,4 @@ import { QuestionPreview, QuestionPreviewProps } from "./tool-previews/question-
|
|
|
137
139
|
import { DiffPreview, DiffPreviewProps } from "./tool-previews/diff-preview.js";
|
|
138
140
|
import { RedactedDocSegment, RedactedDocument, RedactedDocumentData, RedactedDocumentProps, RevealResult } from "./redaction/redacted-document.js";
|
|
139
141
|
import "./redaction.js";
|
|
140
|
-
export { ActiveProjectActivity, ActiveSessionActivityOptions, ActiveSessionConnectionOptions, ActiveSessionConnectionState, ActiveSessionReconnectState, ActiveSessionRecord, ActiveSessionStatus, ActiveSessionTransportMode, ActiveSessionsState, AgentBranding, AgentStreamEvent, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, 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, Button, type ButtonProps, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, Calendar, type CalendarDate, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, ChatAuthor, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, Checkbox, Chip, type ChipProps, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, type CommandPreviewProps, CompleteAssistantMessageOptions, 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, 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, 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, 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, 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, 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, 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, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, 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 };
|
|
142
|
+
export { ActiveProjectActivity, ActiveSessionActivityOptions, ActiveSessionConnectionOptions, ActiveSessionConnectionState, ActiveSessionReconnectState, ActiveSessionRecord, ActiveSessionStatus, ActiveSessionTransportMode, ActiveSessionsState, AgentBranding, AgentStreamEvent, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, 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, ChatAuthor, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, Checkbox, Chip, type ChipProps, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, type CommandPreviewProps, CompleteAssistantMessageOptions, 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, 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, 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, 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, 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, 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, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, 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 };
|
package/dist/index.js
CHANGED
|
@@ -56,6 +56,8 @@ import { CATEGORY_TONES, TONE_CLASSES, toneFor } from "./primitives/tone.js";
|
|
|
56
56
|
import { Tag } from "./primitives/tag.js";
|
|
57
57
|
import { Chip } from "./primitives/chip.js";
|
|
58
58
|
import { Wizard, WizardStep } from "./primitives/wizard.js";
|
|
59
|
+
import { HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger } from "./primitives/hover-card.js";
|
|
60
|
+
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./primitives/breadcrumb.js";
|
|
59
61
|
import { IconTile, initialsOf } from "./primitives/icon-tile.js";
|
|
60
62
|
import { Metric, MetricStrip } from "./primitives/metric-strip.js";
|
|
61
63
|
import { FilterField, Toolbar } from "./primitives/toolbar.js";
|
|
@@ -121,4 +123,4 @@ import { addMessage, addParts, clearChat, isStreamingAtom, messagesAtom, partMap
|
|
|
121
123
|
import { copyText } from "./utils/copy-text.js";
|
|
122
124
|
import { timeAgo } from "./utils/time-ago.js";
|
|
123
125
|
import { RedactedDocument } from "./redaction/redacted-document.js";
|
|
124
|
-
export { AgentTimeline, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApiSchema, ApprovalCard, ApprovalDiffSummary, ArtifactPane, AuthHeader, Avatar, AvatarFallback, AvatarImage, Badge, Button, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatContainer, ChatMessage, Checkbox, Chip, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, 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, IconTile, InlineCode, InlineThinkingItem, InlineToolItem, Input, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageAuthor, MessageList, Metric, 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, SettingsList, SettingsListItem, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, Slider, 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, 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, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, 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 };
|
|
126
|
+
export { AgentTimeline, 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, 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, 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, SettingsList, SettingsListItem, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, Slider, 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, 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, numericColumns, parseCalendarDate, parseCsv, parseToolEvent, partMapAtom, plainTextFromMarkdown, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, 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 };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/primitives/breadcrumb.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Where you are inside a nested surface — the workspace, its settings, the
|
|
5
|
+
* section you're in. Each crumb is a link except the last, which is the page.
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <Breadcrumb>
|
|
9
|
+
* <BreadcrumbList>
|
|
10
|
+
* <BreadcrumbItem><BreadcrumbLink href="/workspaces/ws-1">Recenter demo</BreadcrumbLink></BreadcrumbItem>
|
|
11
|
+
* <BreadcrumbSeparator />
|
|
12
|
+
* <BreadcrumbItem><BreadcrumbLink href="/workspaces/ws-1/settings">Settings</BreadcrumbLink></BreadcrumbItem>
|
|
13
|
+
* <BreadcrumbSeparator />
|
|
14
|
+
* <BreadcrumbItem><BreadcrumbPage>Connections</BreadcrumbPage></BreadcrumbItem>
|
|
15
|
+
* </BreadcrumbList>
|
|
16
|
+
* </Breadcrumb>
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* On narrow viewports the list scrolls horizontally with a fade mask rather
|
|
20
|
+
* than wrapping — a crumb trail reads as one line, not a paragraph.
|
|
21
|
+
*/
|
|
22
|
+
declare const Breadcrumb: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & {
|
|
23
|
+
separator?: React.ReactNode;
|
|
24
|
+
} & React.RefAttributes<HTMLElement>>;
|
|
25
|
+
declare const BreadcrumbList: React.ForwardRefExoticComponent<React.OlHTMLAttributes<HTMLOListElement> & React.RefAttributes<HTMLOListElement>>;
|
|
26
|
+
declare const BreadcrumbItem: React.ForwardRefExoticComponent<React.LiHTMLAttributes<HTMLLIElement> & React.RefAttributes<HTMLLIElement>>;
|
|
27
|
+
declare const BreadcrumbLink: React.ForwardRefExoticComponent<React.AnchorHTMLAttributes<HTMLAnchorElement> & React.RefAttributes<HTMLAnchorElement>>;
|
|
28
|
+
declare const BreadcrumbPage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
|
|
29
|
+
declare const BreadcrumbSeparator: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
|
|
30
|
+
declare const BreadcrumbEllipsis: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { ChevronRight } from "lucide-react";
|
|
5
|
+
//#region src/primitives/breadcrumb.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Where you are inside a nested surface — the workspace, its settings, the
|
|
8
|
+
* section you're in. Each crumb is a link except the last, which is the page.
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <Breadcrumb>
|
|
12
|
+
* <BreadcrumbList>
|
|
13
|
+
* <BreadcrumbItem><BreadcrumbLink href="/workspaces/ws-1">Recenter demo</BreadcrumbLink></BreadcrumbItem>
|
|
14
|
+
* <BreadcrumbSeparator />
|
|
15
|
+
* <BreadcrumbItem><BreadcrumbLink href="/workspaces/ws-1/settings">Settings</BreadcrumbLink></BreadcrumbItem>
|
|
16
|
+
* <BreadcrumbSeparator />
|
|
17
|
+
* <BreadcrumbItem><BreadcrumbPage>Connections</BreadcrumbPage></BreadcrumbItem>
|
|
18
|
+
* </BreadcrumbList>
|
|
19
|
+
* </Breadcrumb>
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* On narrow viewports the list scrolls horizontally with a fade mask rather
|
|
23
|
+
* than wrapping — a crumb trail reads as one line, not a paragraph.
|
|
24
|
+
*/
|
|
25
|
+
const Breadcrumb = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("nav", {
|
|
26
|
+
ref,
|
|
27
|
+
"aria-label": "Breadcrumb",
|
|
28
|
+
className: cn("relative", className),
|
|
29
|
+
...props
|
|
30
|
+
}));
|
|
31
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
32
|
+
const BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("ol", {
|
|
33
|
+
ref,
|
|
34
|
+
className: cn("flex items-center gap-1.5 text-sm text-muted-foreground overflow-x-auto", "[mask-image:linear-gradient(to_right,transparent,black_16px,black_calc(100%-16px),transparent)]", "[-webkit-mask-image:linear-gradient(to_right,transparent,black_16px,black_calc(100%-16px),transparent)]", "scrollbar-none", className),
|
|
35
|
+
...props
|
|
36
|
+
}));
|
|
37
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
38
|
+
const BreadcrumbItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", {
|
|
39
|
+
ref,
|
|
40
|
+
className: cn("inline-flex items-center gap-1.5 shrink-0", className),
|
|
41
|
+
...props
|
|
42
|
+
}));
|
|
43
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
44
|
+
const BreadcrumbLink = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("a", {
|
|
45
|
+
ref,
|
|
46
|
+
className: cn("transition-colors hover:text-foreground", className),
|
|
47
|
+
...props
|
|
48
|
+
}));
|
|
49
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
50
|
+
const BreadcrumbPage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("span", {
|
|
51
|
+
ref,
|
|
52
|
+
role: "link",
|
|
53
|
+
"aria-disabled": "true",
|
|
54
|
+
"aria-current": "page",
|
|
55
|
+
className: cn("font-normal text-foreground", className),
|
|
56
|
+
...props
|
|
57
|
+
}));
|
|
58
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
59
|
+
const BreadcrumbSeparator = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("span", {
|
|
60
|
+
ref,
|
|
61
|
+
role: "presentation",
|
|
62
|
+
"aria-hidden": "true",
|
|
63
|
+
className: cn("shrink-0 text-muted-foreground/60", className),
|
|
64
|
+
...props,
|
|
65
|
+
children: children ?? /* @__PURE__ */ jsx(ChevronRight, {
|
|
66
|
+
className: "size-3.5",
|
|
67
|
+
"aria-hidden": true
|
|
68
|
+
})
|
|
69
|
+
}));
|
|
70
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
71
|
+
const BreadcrumbEllipsis = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("span", {
|
|
72
|
+
ref,
|
|
73
|
+
role: "presentation",
|
|
74
|
+
"aria-hidden": "true",
|
|
75
|
+
className: cn("flex size-6 items-center justify-center", className),
|
|
76
|
+
...props,
|
|
77
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
78
|
+
className: "text-muted-foreground",
|
|
79
|
+
children: "…"
|
|
80
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
81
|
+
className: "sr-only",
|
|
82
|
+
children: "More"
|
|
83
|
+
})]
|
|
84
|
+
}));
|
|
85
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
86
|
+
//#endregion
|
|
87
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
3
|
+
//#region src/primitives/hover-card.d.ts
|
|
4
|
+
declare const HoverCard: React.FC<HoverCardPrimitive.HoverCardProps>;
|
|
5
|
+
declare const HoverCardTrigger: React.ForwardRefExoticComponent<Omit<HoverCardPrimitive.HoverCardTriggerProps & React.RefAttributes<HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
|
|
6
|
+
declare const HoverCardContent: React.ForwardRefExoticComponent<Omit<HoverCardPrimitive.HoverCardContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
7
|
+
/** Which edge the card prefers. Defaults to bottom. */
|
|
8
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
9
|
+
/** Pixel gap from the trigger. Defaults to 6. */
|
|
10
|
+
alignOffset?: number;
|
|
11
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare function HoverCardHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
13
|
+
declare function HoverCardTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>): React.JSX.Element;
|
|
14
|
+
declare function HoverCardDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>): React.JSX.Element;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
5
|
+
//#region src/primitives/hover-card.tsx
|
|
6
|
+
/**
|
|
7
|
+
* A rich hover preview: the face of a person, product, or record that appears
|
|
8
|
+
* when you pause on its trigger. Radix HoverCard under the hood, styled on the
|
|
9
|
+
* md3 surface ladder — the card sits on `--md3-surface-container-highest`
|
|
10
|
+
* (L4, the overlay plane) so it reads as a floating layer above the page.
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <HoverCard>
|
|
14
|
+
* <HoverCardTrigger>@noa</HoverCardTrigger>
|
|
15
|
+
* <HoverCardContent>
|
|
16
|
+
* <HoverCardHeader>
|
|
17
|
+
* <HoverCardTitle>Noa</HoverCardTitle>
|
|
18
|
+
* <HoverCardDescription>Housekeeping · es</HoverCardDescription>
|
|
19
|
+
* </HoverCardHeader>
|
|
20
|
+
* <p>3 rooms today · 1 pending</p>
|
|
21
|
+
* </HoverCardContent>
|
|
22
|
+
* </HoverCard>
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* The content is **lazy** — it mounts only when hovered, so a page of 50
|
|
26
|
+
* triggers costs nothing until the person pauses on one.
|
|
27
|
+
*/
|
|
28
|
+
const HoverCard = HoverCardPrimitive.Root;
|
|
29
|
+
const HoverCardTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, {
|
|
30
|
+
ref,
|
|
31
|
+
className: cn("cursor-pointer underline-offset-4 hover:underline", className),
|
|
32
|
+
...props
|
|
33
|
+
}));
|
|
34
|
+
HoverCardTrigger.displayName = HoverCardPrimitive.Trigger.displayName;
|
|
35
|
+
const HoverCardContent = React.forwardRef(({ className, side = "bottom", alignOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
|
|
36
|
+
ref,
|
|
37
|
+
side,
|
|
38
|
+
alignOffset,
|
|
39
|
+
sideOffset: 6,
|
|
40
|
+
className: cn("z-50 w-64 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", className),
|
|
41
|
+
...props
|
|
42
|
+
}) }));
|
|
43
|
+
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
44
|
+
function HoverCardHeader({ className, ...props }) {
|
|
45
|
+
return /* @__PURE__ */ jsx("div", {
|
|
46
|
+
className: cn("flex flex-col gap-1 pb-2", className),
|
|
47
|
+
...props
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function HoverCardTitle({ className, ...props }) {
|
|
51
|
+
return /* @__PURE__ */ jsx("h4", {
|
|
52
|
+
className: cn("text-sm font-semibold leading-none", className),
|
|
53
|
+
...props
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function HoverCardDescription({ className, ...props }) {
|
|
57
|
+
return /* @__PURE__ */ jsx("p", {
|
|
58
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
59
|
+
...props
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
export { HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger };
|
package/dist/primitives.d.ts
CHANGED
|
@@ -53,7 +53,9 @@ import { StatusPill, StatusPillProps, StatusTone } from "./primitives/status-pil
|
|
|
53
53
|
import { Tag, TagProps } from "./primitives/tag.js";
|
|
54
54
|
import { Chip, ChipProps } from "./primitives/chip.js";
|
|
55
55
|
import { Wizard, WizardProps, WizardStep, WizardStepProps } from "./primitives/wizard.js";
|
|
56
|
+
import { HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger } from "./primitives/hover-card.js";
|
|
57
|
+
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./primitives/breadcrumb.js";
|
|
56
58
|
import { Metric, MetricProps, MetricStrip, MetricStripProps } from "./primitives/metric-strip.js";
|
|
57
59
|
import { FilterField, FilterFieldProps, Toolbar, ToolbarProps } from "./primitives/toolbar.js";
|
|
58
60
|
import { Logo, LogoProps, TangleKnot } from "@tangle-network/brand";
|
|
59
|
-
export { Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTone, ArtifactPane, type ArtifactPaneProps, Avatar, AvatarFallback, AvatarImage, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, CATEGORY_TONES, Calendar, type CalendarDate, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, Checkbox, Chip, type ChipProps, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DatePicker, type DatePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, Field, type FieldProps, FilterField, type FilterFieldProps, Heading, type HeadingProps, type HeadingVariant, HelpText, type HelpTextProps, IconTile, type IconTileProps, InlineCode, type InlineCodeProps, Input, type InputProps, Label, Logo, type LogoProps, Metric, type MetricProps, MetricStrip, type MetricStripProps, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Pagination, type PaginationProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, 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, StatCard, type StatCardProps, StatusPill, type StatusPillProps, type StatusTone, Switch, TONE_CLASSES, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TangleKnot, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, ThemeToggle, TimeSelect, type TimeSelectProps, type Toast, ToastContainer, ToastProvider, type Tone, type ToneClasses, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UploadFile, UploadProgress, type UploadProgressProps, Wizard, type WizardProps, WizardStep, type WizardStepProps, badgeVariants, buttonVariants, fieldMessageId, formatCalendarDate, initialsOf, localToday, parseCalendarDate, toneFor, useTheme, useToast };
|
|
61
|
+
export { Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTone, ArtifactPane, type ArtifactPaneProps, Avatar, AvatarFallback, AvatarImage, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, CATEGORY_TONES, Calendar, type CalendarDate, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, Checkbox, Chip, type ChipProps, CodeBlock, type CodeBlockProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DatePicker, type DatePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, Field, type FieldProps, FilterField, type FilterFieldProps, Heading, type HeadingProps, type HeadingVariant, HelpText, type HelpTextProps, HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger, IconTile, type IconTileProps, InlineCode, type InlineCodeProps, Input, type InputProps, Label, Logo, type LogoProps, Metric, type MetricProps, MetricStrip, type MetricStripProps, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Pagination, type PaginationProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, 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, StatCard, type StatCardProps, StatusPill, type StatusPillProps, type StatusTone, Switch, TONE_CLASSES, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TangleKnot, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, ThemeToggle, TimeSelect, type TimeSelectProps, type Toast, ToastContainer, ToastProvider, type Tone, type ToneClasses, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UploadFile, UploadProgress, type UploadProgressProps, Wizard, type WizardProps, WizardStep, type WizardStepProps, badgeVariants, buttonVariants, fieldMessageId, formatCalendarDate, initialsOf, localToday, parseCalendarDate, toneFor, useTheme, useToast };
|
package/dist/primitives.js
CHANGED
|
@@ -52,8 +52,10 @@ import { CATEGORY_TONES, TONE_CLASSES, toneFor } from "./primitives/tone.js";
|
|
|
52
52
|
import { Tag } from "./primitives/tag.js";
|
|
53
53
|
import { Chip } from "./primitives/chip.js";
|
|
54
54
|
import { Wizard, WizardStep } from "./primitives/wizard.js";
|
|
55
|
+
import { HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger } from "./primitives/hover-card.js";
|
|
56
|
+
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./primitives/breadcrumb.js";
|
|
55
57
|
import { IconTile, initialsOf } from "./primitives/icon-tile.js";
|
|
56
58
|
import { Metric, MetricStrip } from "./primitives/metric-strip.js";
|
|
57
59
|
import { FilterField, Toolbar } from "./primitives/toolbar.js";
|
|
58
60
|
import { Logo, TangleKnot } from "@tangle-network/brand";
|
|
59
|
-
export { Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ArtifactPane, Avatar, AvatarFallback, AvatarImage, Badge, Button, CATEGORY_TONES, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, 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, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, Field, FilterField, Heading, HelpText, IconTile, InlineCode, Input, Label, Logo, Metric, MetricStrip, PageHeader, PageShell, Pagination, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsList, SettingsListItem, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, Slider, StatCard, StatusPill, Switch, TONE_CLASSES, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TangleKnot, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea, ThemeToggle, TimeSelect, ToastContainer, ToastProvider, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UploadProgress, Wizard, WizardStep, badgeVariants, buttonVariants, fieldMessageId, formatCalendarDate, initialsOf, localToday, parseCalendarDate, toneFor, useTheme, useToast };
|
|
61
|
+
export { Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ArtifactPane, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CATEGORY_TONES, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Chip, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, 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, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, Field, FilterField, Heading, HelpText, HoverCard, HoverCardContent, HoverCardDescription, HoverCardHeader, HoverCardTitle, HoverCardTrigger, IconTile, InlineCode, Input, Label, Logo, Metric, MetricStrip, PageHeader, PageShell, Pagination, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsList, SettingsListItem, SettingsRow, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, Slider, StatCard, StatusPill, Switch, TONE_CLASSES, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TangleKnot, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea, ThemeToggle, TimeSelect, ToastContainer, ToastProvider, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UploadProgress, Wizard, WizardStep, badgeVariants, buttonVariants, fieldMessageId, formatCalendarDate, initialsOf, localToday, parseCalendarDate, toneFor, useTheme, useToast };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/ui",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.41.0",
|
|
4
4
|
"description": "Generic React UI components for Tangle products — primitives, chat, run, files, editor, markdown.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -137,6 +137,7 @@
|
|
|
137
137
|
"@radix-ui/react-context-menu": "^2.3.7",
|
|
138
138
|
"@radix-ui/react-dialog": "^1.1.23",
|
|
139
139
|
"@radix-ui/react-dropdown-menu": "^2.1.24",
|
|
140
|
+
"@radix-ui/react-hover-card": "^1.2.1",
|
|
140
141
|
"@radix-ui/react-label": "^2.1.15",
|
|
141
142
|
"@radix-ui/react-popover": "^1.1.23",
|
|
142
143
|
"@radix-ui/react-progress": "^1.1.16",
|
|
@@ -165,7 +166,7 @@
|
|
|
165
166
|
"peerDependencies": {
|
|
166
167
|
"@hocuspocus/provider": ">=2.15.0 <5.0.0",
|
|
167
168
|
"@nanostores/react": ">=0.8.4 <3.0.0",
|
|
168
|
-
"@tangle-network/brand": "^1.26.
|
|
169
|
+
"@tangle-network/brand": "^1.26.2",
|
|
169
170
|
"@tiptap/core": ">=3.20.4 <4.0.0",
|
|
170
171
|
"@tiptap/extension-collaboration": ">=3.20.4 <4.0.0",
|
|
171
172
|
"@tiptap/extension-collaboration-caret": ">=3.7.0 <4.0.0",
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { ChevronRight } from "lucide-react";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Where you are inside a nested surface — the workspace, its settings, the
|
|
7
|
+
* section you're in. Each crumb is a link except the last, which is the page.
|
|
8
|
+
*
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <Breadcrumb>
|
|
11
|
+
* <BreadcrumbList>
|
|
12
|
+
* <BreadcrumbItem><BreadcrumbLink href="/workspaces/ws-1">Recenter demo</BreadcrumbLink></BreadcrumbItem>
|
|
13
|
+
* <BreadcrumbSeparator />
|
|
14
|
+
* <BreadcrumbItem><BreadcrumbLink href="/workspaces/ws-1/settings">Settings</BreadcrumbLink></BreadcrumbItem>
|
|
15
|
+
* <BreadcrumbSeparator />
|
|
16
|
+
* <BreadcrumbItem><BreadcrumbPage>Connections</BreadcrumbPage></BreadcrumbItem>
|
|
17
|
+
* </BreadcrumbList>
|
|
18
|
+
* </Breadcrumb>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* On narrow viewports the list scrolls horizontally with a fade mask rather
|
|
22
|
+
* than wrapping — a crumb trail reads as one line, not a paragraph.
|
|
23
|
+
*/
|
|
24
|
+
const Breadcrumb = React.forwardRef<
|
|
25
|
+
HTMLElement,
|
|
26
|
+
React.HTMLAttributes<HTMLElement> & { separator?: React.ReactNode }
|
|
27
|
+
>(({ className, ...props }, ref) => (
|
|
28
|
+
<nav ref={ref} aria-label="Breadcrumb" className={cn("relative", className)} {...props} />
|
|
29
|
+
));
|
|
30
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
31
|
+
|
|
32
|
+
const BreadcrumbList = React.forwardRef<
|
|
33
|
+
HTMLOListElement,
|
|
34
|
+
React.OlHTMLAttributes<HTMLOListElement>
|
|
35
|
+
>(({ className, ...props }, ref) => (
|
|
36
|
+
<ol
|
|
37
|
+
ref={ref}
|
|
38
|
+
className={cn(
|
|
39
|
+
"flex items-center gap-1.5 text-sm text-muted-foreground overflow-x-auto",
|
|
40
|
+
"[mask-image:linear-gradient(to_right,transparent,black_16px,black_calc(100%-16px),transparent)]",
|
|
41
|
+
"[-webkit-mask-image:linear-gradient(to_right,transparent,black_16px,black_calc(100%-16px),transparent)]",
|
|
42
|
+
"scrollbar-none",
|
|
43
|
+
className
|
|
44
|
+
)}
|
|
45
|
+
{...props}
|
|
46
|
+
/>
|
|
47
|
+
));
|
|
48
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
49
|
+
|
|
50
|
+
const BreadcrumbItem = React.forwardRef<
|
|
51
|
+
HTMLLIElement,
|
|
52
|
+
React.LiHTMLAttributes<HTMLLIElement>
|
|
53
|
+
>(({ className, ...props }, ref) => (
|
|
54
|
+
<li ref={ref} className={cn("inline-flex items-center gap-1.5 shrink-0", className)} {...props} />
|
|
55
|
+
));
|
|
56
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
57
|
+
|
|
58
|
+
const BreadcrumbLink = React.forwardRef<
|
|
59
|
+
HTMLAnchorElement,
|
|
60
|
+
React.AnchorHTMLAttributes<HTMLAnchorElement>
|
|
61
|
+
>(({ className, ...props }, ref) => (
|
|
62
|
+
<a
|
|
63
|
+
ref={ref}
|
|
64
|
+
className={cn("transition-colors hover:text-foreground", className)}
|
|
65
|
+
{...props}
|
|
66
|
+
/>
|
|
67
|
+
));
|
|
68
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
69
|
+
|
|
70
|
+
const BreadcrumbPage = React.forwardRef<
|
|
71
|
+
HTMLSpanElement,
|
|
72
|
+
React.HTMLAttributes<HTMLSpanElement>
|
|
73
|
+
>(({ className, ...props }, ref) => (
|
|
74
|
+
<span
|
|
75
|
+
ref={ref}
|
|
76
|
+
role="link"
|
|
77
|
+
aria-disabled="true"
|
|
78
|
+
aria-current="page"
|
|
79
|
+
className={cn("font-normal text-foreground", className)}
|
|
80
|
+
{...props}
|
|
81
|
+
/>
|
|
82
|
+
));
|
|
83
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
84
|
+
|
|
85
|
+
const BreadcrumbSeparator = React.forwardRef<
|
|
86
|
+
HTMLSpanElement,
|
|
87
|
+
React.HTMLAttributes<HTMLSpanElement>
|
|
88
|
+
>(({ className, children, ...props }, ref) => (
|
|
89
|
+
<span
|
|
90
|
+
ref={ref}
|
|
91
|
+
role="presentation"
|
|
92
|
+
aria-hidden="true"
|
|
93
|
+
className={cn("shrink-0 text-muted-foreground/60", className)}
|
|
94
|
+
{...props}
|
|
95
|
+
>
|
|
96
|
+
{children ?? <ChevronRight className="size-3.5" aria-hidden />}
|
|
97
|
+
</span>
|
|
98
|
+
));
|
|
99
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
100
|
+
|
|
101
|
+
const BreadcrumbEllipsis = React.forwardRef<
|
|
102
|
+
HTMLSpanElement,
|
|
103
|
+
React.HTMLAttributes<HTMLSpanElement>
|
|
104
|
+
>(({ className, ...props }, ref) => (
|
|
105
|
+
<span
|
|
106
|
+
ref={ref}
|
|
107
|
+
role="presentation"
|
|
108
|
+
aria-hidden="true"
|
|
109
|
+
className={cn("flex size-6 items-center justify-center", className)}
|
|
110
|
+
{...props}
|
|
111
|
+
>
|
|
112
|
+
<span className="text-muted-foreground">…</span>
|
|
113
|
+
<span className="sr-only">More</span>
|
|
114
|
+
</span>
|
|
115
|
+
));
|
|
116
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
117
|
+
|
|
118
|
+
export {
|
|
119
|
+
Breadcrumb,
|
|
120
|
+
BreadcrumbList,
|
|
121
|
+
BreadcrumbItem,
|
|
122
|
+
BreadcrumbLink,
|
|
123
|
+
BreadcrumbPage,
|
|
124
|
+
BreadcrumbSeparator,
|
|
125
|
+
BreadcrumbEllipsis,
|
|
126
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { render, screen } from "@testing-library/react";
|
|
2
|
+
import userEvent from "@testing-library/user-event";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { describe, expect, it, vi } from "vitest";
|
|
5
|
+
import {
|
|
6
|
+
Breadcrumb,
|
|
7
|
+
BreadcrumbItem,
|
|
8
|
+
BreadcrumbLink,
|
|
9
|
+
BreadcrumbList,
|
|
10
|
+
BreadcrumbPage,
|
|
11
|
+
BreadcrumbSeparator,
|
|
12
|
+
} from "./breadcrumb";
|
|
13
|
+
import {
|
|
14
|
+
HoverCard,
|
|
15
|
+
HoverCardContent,
|
|
16
|
+
HoverCardDescription,
|
|
17
|
+
HoverCardHeader,
|
|
18
|
+
HoverCardTitle,
|
|
19
|
+
HoverCardTrigger,
|
|
20
|
+
} from "./hover-card";
|
|
21
|
+
|
|
22
|
+
describe("HoverCard", () => {
|
|
23
|
+
it("shows the trigger and hides content until hovered", () => {
|
|
24
|
+
render(
|
|
25
|
+
<HoverCard>
|
|
26
|
+
<HoverCardTrigger>@noa</HoverCardTrigger>
|
|
27
|
+
<HoverCardContent>
|
|
28
|
+
<HoverCardHeader>
|
|
29
|
+
<HoverCardTitle>Noa</HoverCardTitle>
|
|
30
|
+
<HoverCardDescription>Housekeeping · es</HoverCardDescription>
|
|
31
|
+
</HoverCardHeader>
|
|
32
|
+
</HoverCardContent>
|
|
33
|
+
</HoverCard>,
|
|
34
|
+
);
|
|
35
|
+
expect(screen.getByText("@noa")).toBeVisible();
|
|
36
|
+
// Portal content only renders when open
|
|
37
|
+
expect(screen.queryByText("Noa")).toBeNull();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("renders with a custom className on content", () => {
|
|
41
|
+
render(
|
|
42
|
+
<HoverCard open>
|
|
43
|
+
<HoverCardTrigger>hover me</HoverCardTrigger>
|
|
44
|
+
<HoverCardContent className="w-80" data-testid="card">
|
|
45
|
+
<p>Content</p>
|
|
46
|
+
</HoverCardContent>
|
|
47
|
+
</HoverCard>,
|
|
48
|
+
);
|
|
49
|
+
const card = screen.getByTestId("card");
|
|
50
|
+
expect(card).toBeInTheDocument();
|
|
51
|
+
expect(card.className).toContain("w-80");
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
describe("Breadcrumb", () => {
|
|
56
|
+
it("renders a trail with links and a terminal page", () => {
|
|
57
|
+
render(
|
|
58
|
+
<Breadcrumb>
|
|
59
|
+
<BreadcrumbList>
|
|
60
|
+
<BreadcrumbItem>
|
|
61
|
+
<BreadcrumbLink href="/ws-1">Workspace</BreadcrumbLink>
|
|
62
|
+
</BreadcrumbItem>
|
|
63
|
+
<BreadcrumbSeparator />
|
|
64
|
+
<BreadcrumbItem>
|
|
65
|
+
<BreadcrumbLink href="/ws-1/settings">Settings</BreadcrumbLink>
|
|
66
|
+
</BreadcrumbItem>
|
|
67
|
+
<BreadcrumbSeparator />
|
|
68
|
+
<BreadcrumbItem>
|
|
69
|
+
<BreadcrumbPage>Connections</BreadcrumbPage>
|
|
70
|
+
</BreadcrumbItem>
|
|
71
|
+
</BreadcrumbList>
|
|
72
|
+
</Breadcrumb>,
|
|
73
|
+
);
|
|
74
|
+
expect(screen.getByRole("navigation", { name: "Breadcrumb" })).toBeVisible();
|
|
75
|
+
expect(screen.getByText("Workspace")).toHaveAttribute("href", "/ws-1");
|
|
76
|
+
expect(screen.getByText("Connections")).toHaveAttribute("aria-current", "page");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("separates crumbs with chevrons by default", () => {
|
|
80
|
+
render(
|
|
81
|
+
<Breadcrumb>
|
|
82
|
+
<BreadcrumbList>
|
|
83
|
+
<BreadcrumbItem><BreadcrumbLink href="/a">A</BreadcrumbLink></BreadcrumbItem>
|
|
84
|
+
<BreadcrumbSeparator />
|
|
85
|
+
<BreadcrumbItem><BreadcrumbPage>B</BreadcrumbPage></BreadcrumbItem>
|
|
86
|
+
</BreadcrumbList>
|
|
87
|
+
</Breadcrumb>,
|
|
88
|
+
);
|
|
89
|
+
const separators = screen.getAllByRole("presentation", { hidden: true });
|
|
90
|
+
expect(separators.length).toBeGreaterThanOrEqual(1);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { cn } from "../lib/utils";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A rich hover preview: the face of a person, product, or record that appears
|
|
6
|
+
* when you pause on its trigger. Radix HoverCard under the hood, styled on the
|
|
7
|
+
* md3 surface ladder — the card sits on `--md3-surface-container-highest`
|
|
8
|
+
* (L4, the overlay plane) so it reads as a floating layer above the page.
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <HoverCard>
|
|
12
|
+
* <HoverCardTrigger>@noa</HoverCardTrigger>
|
|
13
|
+
* <HoverCardContent>
|
|
14
|
+
* <HoverCardHeader>
|
|
15
|
+
* <HoverCardTitle>Noa</HoverCardTitle>
|
|
16
|
+
* <HoverCardDescription>Housekeeping · es</HoverCardDescription>
|
|
17
|
+
* </HoverCardHeader>
|
|
18
|
+
* <p>3 rooms today · 1 pending</p>
|
|
19
|
+
* </HoverCardContent>
|
|
20
|
+
* </HoverCard>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* The content is **lazy** — it mounts only when hovered, so a page of 50
|
|
24
|
+
* triggers costs nothing until the person pauses on one.
|
|
25
|
+
*/
|
|
26
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
27
|
+
|
|
28
|
+
const HoverCard = HoverCardPrimitive.Root;
|
|
29
|
+
|
|
30
|
+
const HoverCardTrigger = React.forwardRef<
|
|
31
|
+
React.ElementRef<typeof HoverCardPrimitive.Trigger>,
|
|
32
|
+
React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Trigger>
|
|
33
|
+
>(({ className, ...props }, ref) => (
|
|
34
|
+
<HoverCardPrimitive.Trigger
|
|
35
|
+
ref={ref}
|
|
36
|
+
className={cn("cursor-pointer underline-offset-4 hover:underline", className)}
|
|
37
|
+
{...props}
|
|
38
|
+
/>
|
|
39
|
+
));
|
|
40
|
+
HoverCardTrigger.displayName = HoverCardPrimitive.Trigger.displayName;
|
|
41
|
+
|
|
42
|
+
const HoverCardContent = React.forwardRef<
|
|
43
|
+
React.ElementRef<typeof HoverCardPrimitive.Content>,
|
|
44
|
+
React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> & {
|
|
45
|
+
/** Which edge the card prefers. Defaults to bottom. */
|
|
46
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
47
|
+
/** Pixel gap from the trigger. Defaults to 6. */
|
|
48
|
+
alignOffset?: number;
|
|
49
|
+
}
|
|
50
|
+
>(({ className, side = "bottom", alignOffset = 6, ...props }, ref) => (
|
|
51
|
+
<HoverCardPrimitive.Portal>
|
|
52
|
+
<HoverCardPrimitive.Content
|
|
53
|
+
ref={ref}
|
|
54
|
+
side={side}
|
|
55
|
+
alignOffset={alignOffset}
|
|
56
|
+
sideOffset={6}
|
|
57
|
+
className={cn(
|
|
58
|
+
"z-50 w-64 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none",
|
|
59
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
60
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
61
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
62
|
+
className
|
|
63
|
+
)}
|
|
64
|
+
{...props}
|
|
65
|
+
/>
|
|
66
|
+
</HoverCardPrimitive.Portal>
|
|
67
|
+
));
|
|
68
|
+
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
69
|
+
|
|
70
|
+
function HoverCardHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
|
|
71
|
+
return <div className={cn("flex flex-col gap-1 pb-2", className)} {...props} />;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function HoverCardTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {
|
|
75
|
+
return <h4 className={cn("text-sm font-semibold leading-none", className)} {...props} />;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function HoverCardDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {
|
|
79
|
+
return <p className={cn("text-sm text-muted-foreground", className)} {...props} />;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export {
|
|
83
|
+
HoverCard,
|
|
84
|
+
HoverCardTrigger,
|
|
85
|
+
HoverCardContent,
|
|
86
|
+
HoverCardHeader,
|
|
87
|
+
HoverCardTitle,
|
|
88
|
+
HoverCardDescription,
|
|
89
|
+
};
|
package/src/primitives/index.ts
CHANGED
|
@@ -234,6 +234,9 @@ export { Chip } from "./chip";
|
|
|
234
234
|
export type { ChipProps } from "./chip";
|
|
235
235
|
|
|
236
236
|
export { Wizard, WizardStep } from "./wizard";
|
|
237
|
+
export { HoverCard, HoverCardTrigger, HoverCardContent, HoverCardHeader, HoverCardTitle, HoverCardDescription } from "./hover-card";
|
|
238
|
+
|
|
239
|
+
export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis } from "./breadcrumb";
|
|
237
240
|
export type { WizardProps, WizardStepProps } from "./wizard";
|
|
238
241
|
|
|
239
242
|
export { IconTile, initialsOf } from "./icon-tile";
|