@cueplusplus/ui 0.20.0 → 0.21.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.
Files changed (190) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/dist/brand/particle-logo.js +11 -3
  3. package/dist/chat/agent-pile.js +2 -2
  4. package/dist/chrome/_status-bar.js +1 -1
  5. package/dist/chrome/app-shell.js +1 -1
  6. package/dist/chrome/navigation-menu.js +3 -3
  7. package/dist/chrome/row.js +1 -1
  8. package/dist/chrome/scroll-area.js +1 -1
  9. package/dist/chrome/section-header.js +1 -1
  10. package/dist/chrome/segmented-control.js +1 -1
  11. package/dist/chrome/tabs.js +1 -1
  12. package/dist/chrome/toolbar.js +1 -1
  13. package/dist/chrome/tree.js +3 -3
  14. package/dist/date/calendar.js +3 -3
  15. package/dist/dmx/channel-matrix.js +1 -1
  16. package/dist/dmx/universe-grid.js +1 -1
  17. package/dist/elements/agent-handoff.js +3 -3
  18. package/dist/elements/agent-plan.js +1 -1
  19. package/dist/elements/agent-status.js +1 -1
  20. package/dist/elements/agent-surface.d.ts +9 -6
  21. package/dist/elements/agent-surface.js +3 -2
  22. package/dist/elements/approval-card.d.ts +29 -3
  23. package/dist/elements/approval-card.js +18 -8
  24. package/dist/elements/artifact-card.js +2 -2
  25. package/dist/elements/canvas-split.js +3 -3
  26. package/dist/elements/chart.js +1 -1
  27. package/dist/elements/chat-panel.js +2 -2
  28. package/dist/elements/checkpoint-history.js +1 -1
  29. package/dist/elements/code-diff.js +1 -1
  30. package/dist/elements/code-runner.js +1 -1
  31. package/dist/elements/composer.d.ts +8 -2
  32. package/dist/elements/composer.js +20 -12
  33. package/dist/elements/computer-use.js +2 -2
  34. package/dist/elements/confidence-marker.js +1 -1
  35. package/dist/elements/connection-state.js +2 -2
  36. package/dist/elements/context-breakdown.js +1 -1
  37. package/dist/elements/context-usage.js +1 -1
  38. package/dist/elements/conversation-search.js +2 -2
  39. package/dist/elements/cost-meter.js +1 -1
  40. package/dist/elements/data-table.js +1 -1
  41. package/dist/elements/diagram.js +1 -1
  42. package/dist/elements/draft-restore.js +2 -2
  43. package/dist/elements/edit-message.js +1 -1
  44. package/dist/elements/elements.css +134 -0
  45. package/dist/elements/elicitation-form.d.ts +8 -1
  46. package/dist/elements/elicitation-form.js +24 -16
  47. package/dist/elements/empty-state.js +3 -3
  48. package/dist/elements/error-state.js +2 -2
  49. package/dist/elements/event-feed.d.ts +88 -0
  50. package/dist/elements/event-feed.js +190 -0
  51. package/dist/elements/feedback-dialog.js +2 -2
  52. package/dist/elements/file-tree.js +1 -1
  53. package/dist/elements/flow-graph.js +2 -2
  54. package/dist/elements/generative.css +13 -0
  55. package/dist/elements/generative.d.ts +8 -6
  56. package/dist/elements/generative.js +4 -3
  57. package/dist/elements/image-generation.js +2 -2
  58. package/dist/elements/index.d.ts +7 -3
  59. package/dist/elements/index.js +5 -2
  60. package/dist/elements/inline-citation.js +1 -1
  61. package/dist/elements/job-progress.js +1 -1
  62. package/dist/elements/launcher-bubble.js +3 -3
  63. package/dist/elements/loading-state.js +1 -1
  64. package/dist/elements/map-answer.js +1 -1
  65. package/dist/elements/math-block.js +1 -1
  66. package/dist/elements/mcp-server-panel.js +3 -3
  67. package/dist/elements/memory-chips.js +1 -1
  68. package/dist/elements/message-attachment.js +3 -3
  69. package/dist/elements/message-branches.js +1 -1
  70. package/dist/elements/message-pair.js +2 -2
  71. package/dist/elements/message-queue.js +1 -1
  72. package/dist/elements/message-timing.js +1 -1
  73. package/dist/elements/mobile-composer.js +1 -1
  74. package/dist/elements/model-picker.js +1 -1
  75. package/dist/elements/number-ticker.js +1 -1
  76. package/dist/elements/onboarding.js +3 -3
  77. package/dist/elements/permission-grant.js +3 -3
  78. package/dist/elements/prompt-library.js +1 -1
  79. package/dist/elements/question-card.d.ts +50 -0
  80. package/dist/elements/question-card.js +117 -0
  81. package/dist/elements/queue-dock.js +1 -1
  82. package/dist/elements/quota-banner.js +1 -1
  83. package/dist/elements/quote-reply.js +3 -3
  84. package/dist/elements/read-aloud.js +2 -2
  85. package/dist/elements/reasoning-effort.js +2 -2
  86. package/dist/elements/reasoning-panel.js +3 -3
  87. package/dist/elements/recommendation-card.js +2 -2
  88. package/dist/elements/regenerate-menu.js +1 -1
  89. package/dist/elements/request-delivery.js +31 -0
  90. package/dist/elements/research-report.js +1 -1
  91. package/dist/elements/retrieval-chunks.js +3 -3
  92. package/dist/elements/revert-dock.js +1 -1
  93. package/dist/elements/reviewable-diff.js +4 -4
  94. package/dist/elements/schedule-card.js +2 -2
  95. package/dist/elements/score-breakdown.js +2 -2
  96. package/dist/elements/scroll-anchor.js +2 -2
  97. package/dist/elements/settings-panel.js +3 -3
  98. package/dist/elements/sources.js +1 -1
  99. package/dist/elements/spec-sheet.js +1 -1
  100. package/dist/elements/stopped-run.js +2 -2
  101. package/dist/elements/streaming-text.js +2 -2
  102. package/dist/elements/subagent-list.js +4 -4
  103. package/dist/elements/suggestions.js +1 -1
  104. package/dist/elements/surfaces.d.ts +6 -6
  105. package/dist/elements/surfaces.js +7 -7
  106. package/dist/elements/tail-status.js +1 -1
  107. package/dist/elements/terminal-block.js +1 -1
  108. package/dist/elements/thinking-indicator.js +1 -1
  109. package/dist/elements/timeline.js +1 -1
  110. package/dist/elements/todo-list.js +1 -1
  111. package/dist/elements/tool-call.d.ts +18 -2
  112. package/dist/elements/tool-call.js +20 -11
  113. package/dist/elements/tool-error.js +2 -2
  114. package/dist/elements/tool-group.d.ts +11 -3
  115. package/dist/elements/tool-group.js +62 -38
  116. package/dist/elements/tool-state.d.ts +13 -0
  117. package/dist/elements/tool-state.js +44 -0
  118. package/dist/elements/tool-timeline.js +2 -2
  119. package/dist/elements/trace-waterfall.js +2 -2
  120. package/dist/elements/unsupported-request-card.d.ts +31 -0
  121. package/dist/elements/unsupported-request-card.js +80 -0
  122. package/dist/elements/vocabulary.d.ts +50 -1
  123. package/dist/elements/vocabulary.js +50 -1
  124. package/dist/elements/voice-conversation.js +5 -5
  125. package/dist/elements/web-preview.js +1 -1
  126. package/dist/elements/web-search.js +2 -2
  127. package/dist/elements/work-collapse.js +1 -1
  128. package/dist/forms/file-upload.js +1 -1
  129. package/dist/forms/rating.js +1 -1
  130. package/dist/forms/select.js +1 -1
  131. package/dist/forms/switch.js +2 -2
  132. package/dist/forms/toggle.js +1 -1
  133. package/dist/index.d.ts +3 -1
  134. package/dist/index.js +3 -1
  135. package/dist/instruments/_ledger-disclosure.js +1 -1
  136. package/dist/instruments/data-tree.js +1 -1
  137. package/dist/instruments/meter.js +1 -1
  138. package/dist/instruments/seam-grid.js +1 -1
  139. package/dist/layout/_collapse.js +3 -3
  140. package/dist/layout/bento.js +1 -1
  141. package/dist/layout/breadcrumb.js +1 -1
  142. package/dist/layout/carousel.js +1 -1
  143. package/dist/layout/collapsible.js +1 -1
  144. package/dist/layout/index.d.ts +3 -1
  145. package/dist/layout/index.js +3 -1
  146. package/dist/layout/item.js +1 -1
  147. package/dist/layout/link.js +1 -1
  148. package/dist/layout/pagination.js +1 -1
  149. package/dist/layout/pane-seam.d.ts +75 -0
  150. package/dist/layout/pane-seam.js +127 -0
  151. package/dist/layout/resizable.d.ts +2 -1
  152. package/dist/layout/resizable.js +3 -2
  153. package/dist/layout/reveal.js +10 -4
  154. package/dist/layout/sidebar.js +3 -3
  155. package/dist/layout/split-pane.d.ts +74 -0
  156. package/dist/layout/split-pane.js +135 -0
  157. package/dist/layout/stepper.js +1 -1
  158. package/dist/lib/auto-grow.js +42 -0
  159. package/dist/overlays/_surface.d.ts +4 -4
  160. package/dist/overlays/_surface.js +4 -4
  161. package/dist/overlays/drawer.js +1 -1
  162. package/dist/overlays/menubar.js +1 -1
  163. package/dist/overlays/sheet.js +1 -1
  164. package/dist/overlays/toast.js +1 -1
  165. package/dist/primitives/button.js +1 -1
  166. package/dist/primitives/chip.d.ts +1 -1
  167. package/dist/styles.css +12 -0
  168. package/dist/system/agent-skin.d.ts +11 -5
  169. package/dist/system/frame-clock.js +1 -0
  170. package/dist/system/theme-registry.d.ts +1 -1
  171. package/dist/system/theme-registry.js +1 -1
  172. package/manifest/components/agent-surface.json +5 -4
  173. package/manifest/components/approval-card.json +45 -7
  174. package/manifest/components/composer-input.json +16 -2
  175. package/manifest/components/elicitation-form.json +16 -1
  176. package/manifest/components/event-feed.json +171 -0
  177. package/manifest/components/event-row.json +116 -0
  178. package/manifest/components/generative-ui.json +4 -3
  179. package/manifest/components/pane-seam.json +171 -0
  180. package/manifest/components/question-card.json +157 -0
  181. package/manifest/components/resizable.json +1 -1
  182. package/manifest/components/reveal.json +3 -1
  183. package/manifest/components/split-pane.json +224 -0
  184. package/manifest/components/tool-call.json +46 -2
  185. package/manifest/components/tool-group.json +15 -3
  186. package/manifest/components/unsupported-request-card.json +117 -0
  187. package/manifest/fixtures.json +16 -0
  188. package/manifest/manifest.json +91 -13
  189. package/manifest/tokens.json +9 -2
  190. package/package.json +8 -6
package/dist/index.d.ts CHANGED
@@ -105,7 +105,9 @@ import { Accordion, AccordionHeaderProps, AccordionItemProps, AccordionPanelProp
105
105
  import { SpaceStep, Stack, StackAlign, StackJustify, StackProps } from "./layout/stack.js";
106
106
  import { Bento, BentoColumns, BentoMinHeight, BentoRootProps, BentoRowSpan, BentoRows, BentoSpan, BentoTileProps } from "./layout/bento.js";
107
107
  import { Breadcrumb, BreadcrumbItem, BreadcrumbProps } from "./layout/breadcrumb.js";
108
+ import { PaneSeam, PaneSeamEdge, PaneSeamOrientation, PaneSeamProps } from "./layout/pane-seam.js";
108
109
  import { Reveal, RevealProps } from "./layout/reveal.js";
110
+ import { SplitPane, SplitPaneLayout, SplitPaneProps } from "./layout/split-pane.js";
109
111
  import { Card, CardContentProps, CardDescriptionProps, CardFooterProps, CardHeaderProps, CardRootProps, CardTitleProps } from "./layout/card.js";
110
112
  import { Collapsible, CollapsiblePanelProps, CollapsibleRootProps, CollapsibleTriggerProps, Disclosure, DisclosureProps } from "./layout/collapsible.js";
111
113
  import { DescriptionList, DescriptionListDetailProps, DescriptionListLayout, DescriptionListRootProps, DescriptionListTermProps } from "./layout/description-list.js";
@@ -152,4 +154,4 @@ import { StillProvider, StillProviderProps, useStill } from "./system/still.js";
152
154
  import { FrameClockOptions, useFrameClock } from "./system/frame-clock.js";
153
155
  import { FontScope, FontScopeProps } from "./system/font-scope.js";
154
156
  import { DEFAULT_PAINT, DEFAULT_STYLE_SET, DensityEntry, DensityLevel, FontEntry, FontName, Mode, PAINTS, Paint, STYLE_SETS, StyleSet, ThemeManifest, ThemeName } from "./system/index.js";
155
- export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, Accordion, type AccordionHeaderProps, type AccordionItemProps, type AccordionPanelProps, type AccordionRootProps, type AccordionTriggerProps, type AgentColorOptions, AgentPile, type AgentPileEntry, type AgentPileProps, type AgentPileSize, AlertDialog, type AlertDialogActionProps, type AlertDialogCancelProps, type AlertDialogContentProps, type AlertDialogDescriptionProps, type AlertDialogFooterProps, type AlertDialogRootProps, type AlertDialogTitleProps, type AlertDialogTriggerProps, AnnouncementBar, type AnnouncementBarAction, type AnnouncementBarProps, AppBar, type AppBarActionsProps, type AppBarBrandProps, type AppBarLinkProps, type AppBarNavProps, type AppBarRegister, type AppBarRootProps, type AppBarSeparatorProps, AppShell, type AppShellAsideProps, type AppShellBarProps, type AppShellBodyProps, type AppShellContentProps, type AppShellNavTriggerProps, type AppShellRootProps, type AppShellScrollerProps, type AppShellSidebarProps, AppWindowFrame, type AppWindowFrameProps, type AskAnswer, AskBox, type AskBoxProps, type AskDanger, type AskKind, type AskOption, AudienceIcon, Autocomplete, type AutocompleteProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize, Band, type BandProps, type BandSeparation, type BandWidth, type BarOverflow, Bento, type BentoColumns, type BentoMinHeight, type BentoRootProps, type BentoRowSpan, type BentoRows, type BentoSpan, type BentoTileProps, type BrandAssetProps, type BrandSize, type BrandTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, type ButtonProps, Card, type CardContentProps, type CardDescriptionProps, type CardFooterProps, type CardHeaderProps, type CardRootProps, type CardTitleProps, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Chip, type ChipProps, CliToolIcon, CodeBlock, type CodeBlockProps, Collapsible, type CollapsiblePanelProps, type CollapsibleRootProps, type CollapsibleTriggerProps, Combobox, type ComboboxOption, type ComboboxProps, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, Composer, type ComposerProps, type ComposerSubmitKey, Container, type ContainerProps, type ContainerWidth, ContextMenu, type ContextMenuContentProps, type ContextMenuRootProps, type ContextMenuTriggerProps, type ControlSize, type ControlVariantProps, CopyButton, type CopyButtonProps, CueLogotype, type CueLogotypeProps, CueMark, type CueMarkProps, CuePortalFrame, type CuePortalFrameProps, DEFAULT_PAINT, DEFAULT_STORAGE_KEY, DEFAULT_STYLE_SET, DataRow, type DataRowDisclosure, type DataRowRootProps, type DataRowSlotProps, DataTree, type DataTreeItem, type DataTreeProps, type DataTreeRowState, DelegationCard, type DelegationCardProps, type DelegationDirection, type DelegationStatus, Density, type DensityEntry, type DensityLevel, type DensityProps, DescriptionList, type DescriptionListDetailProps, type DescriptionListLayout, type DescriptionListRootProps, type DescriptionListTermProps, Dialog, type DialogCloseProps, type DialogContentProps, type DialogDescriptionProps, type DialogFooterProps, type DialogRootProps, type DialogTitleProps, type DialogTriggerProps, Disclosure, type DisclosureProps, Drawer, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerRootProps, type DrawerSwipeDirection, type DrawerTitleProps, type DrawerTriggerProps, DropdownMenu, type DropdownMenuCheckboxItemProps, type DropdownMenuContentProps, type DropdownMenuGroupProps, type DropdownMenuItemProps, type DropdownMenuLabelProps, type DropdownMenuRootProps, type DropdownMenuSeparatorProps, type DropdownMenuTriggerProps, EmptyState, type EmptyStateProps, EnvVarInput, type EnvVarInputProps, Eyebrow, type EyebrowProps, Field, FieldDescription, type FieldDescriptionProps, FieldError, type FieldErrorProps, type FieldIssue, FieldLabel, type FieldLabelProps, type FieldProps, type FilePartition, type FilePartitionOptions, type FileRejectReason, type FileRejection, FileUpload, type FileUploadProps, FolderIcon, type FontEntry, type FontFamilies, type FontName, FontScope, type FontScopeProps, Footer, type FooterProps, type FormControlSize, type FrameClockOptions, Frames, type FramesHeight, type FramesItemProps, type FramesLayout, type FramesRootProps, GlossObject, type GlossObjectProps, Grid, type GridColumns, type GridProps, GroupBar, type GroupBarItem, type GroupBarProps, type GroupBarTone, Halftone, type HalftoneProps, Hero, type HeroProps, HoverCard, type HoverCardContentProps, type HoverCardRootProps, type HoverCardTriggerProps, IconButton, type IconButtonProps, InfoTip, type InfoTipProps, Input, InputGroup, type InputGroupProps, type InputProps, Inspector, type InspectorFooterProps, type InspectorRootProps, type InspectorRowProps, type InspectorSectionProps, Item, type ItemProps, Kbd, type KbdProps, Keyword, type KeywordProps, Ledger, type LedgerEmptyProps, type LedgerGroupProps, type LedgerRootProps, type LedgerTierProps, Link, type LinkProps, LogoStrip, type LogoStripProps, McpServerIcon, Menubar, type MenubarContentProps, type MenubarMenuProps, type MenubarRootProps, type MenubarTriggerProps, Message, MessageList, type MessageListProps, type MessageProps, type MessageRole, Meter, type MeterProps, type MeterProvenance, type MeterTone, type Mode, Motif, type MotifProps, type MotifVariant, MultiSelect, type MultiSelectProps, NavigationMenu, type NavigationMenuContentProps, type NavigationMenuItemProps, type NavigationMenuLinkProps, type NavigationMenuListProps, type NavigationMenuRootProps, type NavigationMenuTriggerProps, type NavigationMenuViewportProps, NumberField, type NumberFieldProps, OTPField, type OTPFieldProps, OVERLAY_SIDE_OFFSET, PAINTS, PageShell, type PageShellProps, type PageWidth, Pagination, type PaginationEntry, type PaginationProps, type Paint, Panel, PanelHeader, type PanelHeaderProps, type PanelProps, ParticleLogo, type ParticleLogoProps, ParticleMark, type ParticleMarkProps, PasswordInput, type PasswordInputProps, type PersistedPreferences, Plussie, type PlussieExpression, type PlussieProps, Popover, type PopoverCloseProps, type PopoverContentProps, type PopoverDescriptionProps, type PopoverRootProps, type PopoverTitleProps, type PopoverTriggerProps, type PrepaintDefaults, type PrepaintOptions, Preview, type PreviewAxis, type PreviewGround, type PreviewPresentation, type PreviewProps, type PreviewResizeOptions, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, Rating, type RatingProps, type RatingSize, type ResolvedMode, Reveal, type RevealProps, Ribbon, type RibbonProps, Row, type RowProps, STYLE_SETS, ScrollArea, type ScrollAreaOrientation, type ScrollAreaProps, type ScrollEdges, ScrollableTabsList, type ScrollableTabsListProps, ScrubInput, type ScrubInputProps, SeamCell, type SeamCellProps, SeamGrid, type SeamGridProps, type SeamGround, SeamList, type SeamListProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlItem, type SegmentedControlProps, type SegmentedControlSize, Select, type SelectOption, type SelectProps, Separator, type SeparatorProps, Sheet, type SheetCloseProps, type SheetContentProps, type SheetDescriptionProps, type SheetFooterProps, type SheetRootProps, type SheetTitleProps, type SheetTriggerProps, Sidebar, type SidebarItemProps, type SidebarRailProps, type SidebarRootProps, type SidebarSectionProps, Skeleton, type SkeletonProps, SkillIcon, Slider, type SliderProps, type SpaceStep, Sparkline, type SparklineProps, Spinner, type SpinnerProps, Stack, type StackAlign, StackIcon, type StackJustify, type StackProps, StacksMatrixIcon, Stat, StatBand, type StatBandProps, type StatBandStat, type StatProps, type StatTone, StatusBar, type StatusBarGroupProps, type StatusBarItemProps, type StatusBarProminence, type StatusBarProps, type StatusBarTone, StatusDot, type StatusDotProps, type StatusTone, Stepper, type StepperProps, type StepperState, type StepperStep, StillProvider, type StillProviderProps, type StyleSet, Switch, type SwitchProps, TAB_FADE_PX, TREE_GUIDE_GLYPHS, Table, type TableCaptionProps, type TableCellProps, type TableGroupRowProps, type TableHeadProps, type TableRootProps, type TableRowProps, TableScrollRegion, type TableScrollRegionProps, type TableSectionProps, Tabs, type TabsListProps, type TabsPanelProps, type TabsRootProps, type TabsTabProps, TagsInput, type TagsInputProps, TerminalFrame, type TerminalFrameLine, type TerminalFrameProps, type TerminalLine, type TerminalLineTone, type TerminalScript, type TerminalStep, TextScramble, type TextScrambleProps, Textarea, type TextareaProps, type ThemeContextValue, type ThemeManifest, type ThemeName, ThemeProvider, type ThemeProviderProps, type ThemeRegistry, Timeline, type TimelineContentProps, type TimelineItemProps, type TimelineMarkerProps, type TimelineRootProps, TitleBar, type TitleBarProps, Toast, type ToastManager, type ToastOptions, type ToastProviderProps, type ToastTone, type ToastViewportProps, Toggle, ToggleGroup, type ToggleGroupProps, type ToggleProps, type TokenOverrides, Toolbar, type ToolbarButtonProps, type ToolbarGroupProps, type ToolbarRootProps, type ToolbarSeparatorProps, Tooltip, type TooltipContentProps, type TooltipProviderProps, type TooltipRootProps, type TooltipTriggerProps, Tree, type TreeGuide, type TreeItem, type TreeProps, type TreeRow, type TreeVisibility, TreeVisibilityToggle, type TreeVisibilityToggleProps, TwoStepButton, type TwoStepButtonProps, type TwoStepTone, type UploadFile, type UploadStatus, UsageChart, type UsageChartPoint, type UsageChartProps, type UsageChartTone, activateRowFromClick, activateRowFromKeyDown, agentColor, agentColorStyle, bareControlClasses, buttonVariants, chipVariants, computeScrollEdges, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, edgeFadeMask, envReference, flattenTree, isSafeTokenValue, itemVariants, linkVariants, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, paginationRange, parseEnvReference, partitionFiles, prepaintScript, rowVariants, scrimClasses, useControlHeight, useCuePortalProps, useDensities, useDensity, useFonts, useFrameClock, useSidebar, useStill, useTheme, useThemes, useToast };
157
+ export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, Accordion, type AccordionHeaderProps, type AccordionItemProps, type AccordionPanelProps, type AccordionRootProps, type AccordionTriggerProps, type AgentColorOptions, AgentPile, type AgentPileEntry, type AgentPileProps, type AgentPileSize, AlertDialog, type AlertDialogActionProps, type AlertDialogCancelProps, type AlertDialogContentProps, type AlertDialogDescriptionProps, type AlertDialogFooterProps, type AlertDialogRootProps, type AlertDialogTitleProps, type AlertDialogTriggerProps, AnnouncementBar, type AnnouncementBarAction, type AnnouncementBarProps, AppBar, type AppBarActionsProps, type AppBarBrandProps, type AppBarLinkProps, type AppBarNavProps, type AppBarRegister, type AppBarRootProps, type AppBarSeparatorProps, AppShell, type AppShellAsideProps, type AppShellBarProps, type AppShellBodyProps, type AppShellContentProps, type AppShellNavTriggerProps, type AppShellRootProps, type AppShellScrollerProps, type AppShellSidebarProps, AppWindowFrame, type AppWindowFrameProps, type AskAnswer, AskBox, type AskBoxProps, type AskDanger, type AskKind, type AskOption, AudienceIcon, Autocomplete, type AutocompleteProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize, Band, type BandProps, type BandSeparation, type BandWidth, type BarOverflow, Bento, type BentoColumns, type BentoMinHeight, type BentoRootProps, type BentoRowSpan, type BentoRows, type BentoSpan, type BentoTileProps, type BrandAssetProps, type BrandSize, type BrandTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, type ButtonProps, Card, type CardContentProps, type CardDescriptionProps, type CardFooterProps, type CardHeaderProps, type CardRootProps, type CardTitleProps, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Chip, type ChipProps, CliToolIcon, CodeBlock, type CodeBlockProps, Collapsible, type CollapsiblePanelProps, type CollapsibleRootProps, type CollapsibleTriggerProps, Combobox, type ComboboxOption, type ComboboxProps, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, Composer, type ComposerProps, type ComposerSubmitKey, Container, type ContainerProps, type ContainerWidth, ContextMenu, type ContextMenuContentProps, type ContextMenuRootProps, type ContextMenuTriggerProps, type ControlSize, type ControlVariantProps, CopyButton, type CopyButtonProps, CueLogotype, type CueLogotypeProps, CueMark, type CueMarkProps, CuePortalFrame, type CuePortalFrameProps, DEFAULT_PAINT, DEFAULT_STORAGE_KEY, DEFAULT_STYLE_SET, DataRow, type DataRowDisclosure, type DataRowRootProps, type DataRowSlotProps, DataTree, type DataTreeItem, type DataTreeProps, type DataTreeRowState, DelegationCard, type DelegationCardProps, type DelegationDirection, type DelegationStatus, Density, type DensityEntry, type DensityLevel, type DensityProps, DescriptionList, type DescriptionListDetailProps, type DescriptionListLayout, type DescriptionListRootProps, type DescriptionListTermProps, Dialog, type DialogCloseProps, type DialogContentProps, type DialogDescriptionProps, type DialogFooterProps, type DialogRootProps, type DialogTitleProps, type DialogTriggerProps, Disclosure, type DisclosureProps, Drawer, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerRootProps, type DrawerSwipeDirection, type DrawerTitleProps, type DrawerTriggerProps, DropdownMenu, type DropdownMenuCheckboxItemProps, type DropdownMenuContentProps, type DropdownMenuGroupProps, type DropdownMenuItemProps, type DropdownMenuLabelProps, type DropdownMenuRootProps, type DropdownMenuSeparatorProps, type DropdownMenuTriggerProps, EmptyState, type EmptyStateProps, EnvVarInput, type EnvVarInputProps, Eyebrow, type EyebrowProps, Field, FieldDescription, type FieldDescriptionProps, FieldError, type FieldErrorProps, type FieldIssue, FieldLabel, type FieldLabelProps, type FieldProps, type FilePartition, type FilePartitionOptions, type FileRejectReason, type FileRejection, FileUpload, type FileUploadProps, FolderIcon, type FontEntry, type FontFamilies, type FontName, FontScope, type FontScopeProps, Footer, type FooterProps, type FormControlSize, type FrameClockOptions, Frames, type FramesHeight, type FramesItemProps, type FramesLayout, type FramesRootProps, GlossObject, type GlossObjectProps, Grid, type GridColumns, type GridProps, GroupBar, type GroupBarItem, type GroupBarProps, type GroupBarTone, Halftone, type HalftoneProps, Hero, type HeroProps, HoverCard, type HoverCardContentProps, type HoverCardRootProps, type HoverCardTriggerProps, IconButton, type IconButtonProps, InfoTip, type InfoTipProps, Input, InputGroup, type InputGroupProps, type InputProps, Inspector, type InspectorFooterProps, type InspectorRootProps, type InspectorRowProps, type InspectorSectionProps, Item, type ItemProps, Kbd, type KbdProps, Keyword, type KeywordProps, Ledger, type LedgerEmptyProps, type LedgerGroupProps, type LedgerRootProps, type LedgerTierProps, Link, type LinkProps, LogoStrip, type LogoStripProps, McpServerIcon, Menubar, type MenubarContentProps, type MenubarMenuProps, type MenubarRootProps, type MenubarTriggerProps, Message, MessageList, type MessageListProps, type MessageProps, type MessageRole, Meter, type MeterProps, type MeterProvenance, type MeterTone, type Mode, Motif, type MotifProps, type MotifVariant, MultiSelect, type MultiSelectProps, NavigationMenu, type NavigationMenuContentProps, type NavigationMenuItemProps, type NavigationMenuLinkProps, type NavigationMenuListProps, type NavigationMenuRootProps, type NavigationMenuTriggerProps, type NavigationMenuViewportProps, NumberField, type NumberFieldProps, OTPField, type OTPFieldProps, OVERLAY_SIDE_OFFSET, PAINTS, PageShell, type PageShellProps, type PageWidth, Pagination, type PaginationEntry, type PaginationProps, type Paint, PaneSeam, type PaneSeamEdge, type PaneSeamOrientation, type PaneSeamProps, Panel, PanelHeader, type PanelHeaderProps, type PanelProps, ParticleLogo, type ParticleLogoProps, ParticleMark, type ParticleMarkProps, PasswordInput, type PasswordInputProps, type PersistedPreferences, Plussie, type PlussieExpression, type PlussieProps, Popover, type PopoverCloseProps, type PopoverContentProps, type PopoverDescriptionProps, type PopoverRootProps, type PopoverTitleProps, type PopoverTriggerProps, type PrepaintDefaults, type PrepaintOptions, Preview, type PreviewAxis, type PreviewGround, type PreviewPresentation, type PreviewProps, type PreviewResizeOptions, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, Rating, type RatingProps, type RatingSize, type ResolvedMode, Reveal, type RevealProps, Ribbon, type RibbonProps, Row, type RowProps, STYLE_SETS, ScrollArea, type ScrollAreaOrientation, type ScrollAreaProps, type ScrollEdges, ScrollableTabsList, type ScrollableTabsListProps, ScrubInput, type ScrubInputProps, SeamCell, type SeamCellProps, SeamGrid, type SeamGridProps, type SeamGround, SeamList, type SeamListProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlItem, type SegmentedControlProps, type SegmentedControlSize, Select, type SelectOption, type SelectProps, Separator, type SeparatorProps, Sheet, type SheetCloseProps, type SheetContentProps, type SheetDescriptionProps, type SheetFooterProps, type SheetRootProps, type SheetTitleProps, type SheetTriggerProps, Sidebar, type SidebarItemProps, type SidebarRailProps, type SidebarRootProps, type SidebarSectionProps, Skeleton, type SkeletonProps, SkillIcon, Slider, type SliderProps, type SpaceStep, Sparkline, type SparklineProps, Spinner, type SpinnerProps, SplitPane, type SplitPaneLayout, type SplitPaneProps, Stack, type StackAlign, StackIcon, type StackJustify, type StackProps, StacksMatrixIcon, Stat, StatBand, type StatBandProps, type StatBandStat, type StatProps, type StatTone, StatusBar, type StatusBarGroupProps, type StatusBarItemProps, type StatusBarProminence, type StatusBarProps, type StatusBarTone, StatusDot, type StatusDotProps, type StatusTone, Stepper, type StepperProps, type StepperState, type StepperStep, StillProvider, type StillProviderProps, type StyleSet, Switch, type SwitchProps, TAB_FADE_PX, TREE_GUIDE_GLYPHS, Table, type TableCaptionProps, type TableCellProps, type TableGroupRowProps, type TableHeadProps, type TableRootProps, type TableRowProps, TableScrollRegion, type TableScrollRegionProps, type TableSectionProps, Tabs, type TabsListProps, type TabsPanelProps, type TabsRootProps, type TabsTabProps, TagsInput, type TagsInputProps, TerminalFrame, type TerminalFrameLine, type TerminalFrameProps, type TerminalLine, type TerminalLineTone, type TerminalScript, type TerminalStep, TextScramble, type TextScrambleProps, Textarea, type TextareaProps, type ThemeContextValue, type ThemeManifest, type ThemeName, ThemeProvider, type ThemeProviderProps, type ThemeRegistry, Timeline, type TimelineContentProps, type TimelineItemProps, type TimelineMarkerProps, type TimelineRootProps, TitleBar, type TitleBarProps, Toast, type ToastManager, type ToastOptions, type ToastProviderProps, type ToastTone, type ToastViewportProps, Toggle, ToggleGroup, type ToggleGroupProps, type ToggleProps, type TokenOverrides, Toolbar, type ToolbarButtonProps, type ToolbarGroupProps, type ToolbarRootProps, type ToolbarSeparatorProps, Tooltip, type TooltipContentProps, type TooltipProviderProps, type TooltipRootProps, type TooltipTriggerProps, Tree, type TreeGuide, type TreeItem, type TreeProps, type TreeRow, type TreeVisibility, TreeVisibilityToggle, type TreeVisibilityToggleProps, TwoStepButton, type TwoStepButtonProps, type TwoStepTone, type UploadFile, type UploadStatus, UsageChart, type UsageChartPoint, type UsageChartProps, type UsageChartTone, activateRowFromClick, activateRowFromKeyDown, agentColor, agentColorStyle, bareControlClasses, buttonVariants, chipVariants, computeScrollEdges, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, edgeFadeMask, envReference, flattenTree, isSafeTokenValue, itemVariants, linkVariants, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, paginationRange, parseEnvReference, partitionFiles, prepaintScript, rowVariants, scrimClasses, useControlHeight, useCuePortalProps, useDensities, useDensity, useFonts, useFrameClock, useSidebar, useStill, useTheme, useThemes, useToast };
package/dist/index.js CHANGED
@@ -105,7 +105,9 @@ import { Accordion } from "./layout/accordion.js";
105
105
  import { Stack } from "./layout/stack.js";
106
106
  import { Bento } from "./layout/bento.js";
107
107
  import { Breadcrumb } from "./layout/breadcrumb.js";
108
+ import { PaneSeam } from "./layout/pane-seam.js";
108
109
  import { Reveal } from "./layout/reveal.js";
110
+ import { SplitPane } from "./layout/split-pane.js";
109
111
  import { Card } from "./layout/card.js";
110
112
  import { Collapsible, Disclosure } from "./layout/collapsible.js";
111
113
  import { DescriptionList } from "./layout/description-list.js";
@@ -137,4 +139,4 @@ import { useTheme } from "./system/use-theme.js";
137
139
  import { useFrameClock } from "./system/frame-clock.js";
138
140
  import { FontScope } from "./system/font-scope.js";
139
141
  import { DEFAULT_PAINT, DEFAULT_STYLE_SET, PAINTS, STYLE_SETS } from "./system/index.js";
140
- export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, Accordion, AgentPile, AlertDialog, AnnouncementBar, AppBar, AppShell, AppWindowFrame, AskBox, AudienceIcon, Autocomplete, Avatar, AvatarGroup, Band, Bento, Breadcrumb, Button, ButtonGroup, Card, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, Checkbox, CheckboxGroup, Chip, CliToolIcon, CodeBlock, Collapsible, Combobox, CommandPalette, Composer, Container, ContextMenu, CopyButton, CueLogotype, CueMark, CuePortalFrame, DEFAULT_PAINT, DEFAULT_STORAGE_KEY, DEFAULT_STYLE_SET, DataRow, DataTree, DelegationCard, Density, DescriptionList, Dialog, Disclosure, Drawer, DropdownMenu, EmptyState, EnvVarInput, Eyebrow, Field, FieldDescription, FieldError, FieldLabel, FileUpload, FolderIcon, FontScope, Footer, Frames, GlossObject, Grid, GroupBar, Halftone, Hero, HoverCard, IconButton, InfoTip, Input, InputGroup, Inspector, Item, Kbd, Keyword, Ledger, Link, LogoStrip, McpServerIcon, Menubar, Message, MessageList, Meter, Motif, MultiSelect, NavigationMenu, NumberField, OTPField, OVERLAY_SIDE_OFFSET, PAINTS, PageShell, Pagination, Panel, PanelHeader, ParticleLogo, ParticleMark, PasswordInput, Plussie, Popover, Preview, Progress, Radio, RadioGroup, Rating, Reveal, Ribbon, Row, STYLE_SETS, ScrollArea, ScrollableTabsList, ScrubInput, SeamCell, SeamGrid, SeamList, SearchInput, SectionHeader, SegmentedControl, Select, Separator, Sheet, Sidebar, Skeleton, SkillIcon, Slider, Sparkline, Spinner, Stack, StackIcon, StacksMatrixIcon, Stat, StatBand, StatusBar, StatusDot, Stepper, StillProvider, Switch, TAB_FADE_PX, TREE_GUIDE_GLYPHS, Table, TableScrollRegion, Tabs, TagsInput, TerminalFrame, TextScramble, Textarea, ThemeProvider, Timeline, TitleBar, Toast, Toggle, ToggleGroup, Toolbar, Tooltip, Tree, TreeVisibilityToggle, TwoStepButton, UsageChart, activateRowFromClick, activateRowFromKeyDown, agentColor, agentColorStyle, bareControlClasses, buttonVariants, chipVariants, computeScrollEdges, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, edgeFadeMask, envReference, flattenTree, isSafeTokenValue, itemVariants, linkVariants, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, paginationRange, parseEnvReference, partitionFiles, prepaintScript, rowVariants, scrimClasses, useControlHeight, useCuePortalProps, useDensities, useDensity, useFonts, useFrameClock, useSidebar, useStill, useTheme, useThemes, useToast };
142
+ export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, Accordion, AgentPile, AlertDialog, AnnouncementBar, AppBar, AppShell, AppWindowFrame, AskBox, AudienceIcon, Autocomplete, Avatar, AvatarGroup, Band, Bento, Breadcrumb, Button, ButtonGroup, Card, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, Checkbox, CheckboxGroup, Chip, CliToolIcon, CodeBlock, Collapsible, Combobox, CommandPalette, Composer, Container, ContextMenu, CopyButton, CueLogotype, CueMark, CuePortalFrame, DEFAULT_PAINT, DEFAULT_STORAGE_KEY, DEFAULT_STYLE_SET, DataRow, DataTree, DelegationCard, Density, DescriptionList, Dialog, Disclosure, Drawer, DropdownMenu, EmptyState, EnvVarInput, Eyebrow, Field, FieldDescription, FieldError, FieldLabel, FileUpload, FolderIcon, FontScope, Footer, Frames, GlossObject, Grid, GroupBar, Halftone, Hero, HoverCard, IconButton, InfoTip, Input, InputGroup, Inspector, Item, Kbd, Keyword, Ledger, Link, LogoStrip, McpServerIcon, Menubar, Message, MessageList, Meter, Motif, MultiSelect, NavigationMenu, NumberField, OTPField, OVERLAY_SIDE_OFFSET, PAINTS, PageShell, Pagination, PaneSeam, Panel, PanelHeader, ParticleLogo, ParticleMark, PasswordInput, Plussie, Popover, Preview, Progress, Radio, RadioGroup, Rating, Reveal, Ribbon, Row, STYLE_SETS, ScrollArea, ScrollableTabsList, ScrubInput, SeamCell, SeamGrid, SeamList, SearchInput, SectionHeader, SegmentedControl, Select, Separator, Sheet, Sidebar, Skeleton, SkillIcon, Slider, Sparkline, Spinner, SplitPane, Stack, StackIcon, StacksMatrixIcon, Stat, StatBand, StatusBar, StatusDot, Stepper, StillProvider, Switch, TAB_FADE_PX, TREE_GUIDE_GLYPHS, Table, TableScrollRegion, Tabs, TagsInput, TerminalFrame, TextScramble, Textarea, ThemeProvider, Timeline, TitleBar, Toast, Toggle, ToggleGroup, Toolbar, Tooltip, Tree, TreeVisibilityToggle, TwoStepButton, UsageChart, activateRowFromClick, activateRowFromKeyDown, agentColor, agentColorStyle, bareControlClasses, buttonVariants, chipVariants, computeScrollEdges, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, edgeFadeMask, envReference, flattenTree, isSafeTokenValue, itemVariants, linkVariants, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, paginationRange, parseEnvReference, partitionFiles, prepaintScript, rowVariants, scrimClasses, useControlHeight, useCuePortalProps, useDensities, useDensity, useFonts, useFrameClock, useSidebar, useStill, useTheme, useThemes, useToast };
@@ -88,7 +88,7 @@ function LedgerDisclosure({ headingLevel, headingSlot, headingClassName, toggleS
88
88
  children: [/* @__PURE__ */ jsx(ChevronRightGlyph, {
89
89
  "aria-hidden": "true",
90
90
  "data-slot": `${toggleSlot}-glyph`,
91
- className: cn("size-icon-sm shrink-0 self-center transition-transform duration-150 motion-reduce:transition-none", expanded ? "rotate-90" : null)
91
+ className: cn("size-icon-sm shrink-0 self-center transition-transform duration-fast motion-reduce:transition-none", expanded ? "rotate-90" : null)
92
92
  }), label]
93
93
  })
94
94
  }), /* @__PURE__ */ jsx("div", {
@@ -286,7 +286,7 @@ const DataTree = React.forwardRef(function DataTree({ className, items, expanded
286
286
  setExpanded(item.id, !row.expanded);
287
287
  },
288
288
  className: "flex size-icon-sm shrink-0 cursor-pointer items-center justify-center text-fg-subtle",
289
- children: /* @__PURE__ */ jsx(ChevronRightGlyph, { className: cn("size-icon-sm transition-transform duration-150 motion-reduce:transition-none", row.expanded ? "rotate-90" : null) })
289
+ children: /* @__PURE__ */ jsx(ChevronRightGlyph, { className: cn("size-icon-sm transition-transform duration-fast motion-reduce:transition-none", row.expanded ? "rotate-90" : null) })
290
290
  }) : /* @__PURE__ */ jsx("span", {
291
291
  "aria-hidden": "true",
292
292
  className: "size-icon-sm shrink-0"
@@ -80,7 +80,7 @@ const Meter = React.forwardRef(function Meter({ className, percent, tone = "ok",
80
80
  ...elementProps,
81
81
  children: [hasLevel ? /* @__PURE__ */ jsx("div", {
82
82
  "data-slot": "meter-fill",
83
- className: cn("absolute inset-y-0 left-0 bg-current transition-[width] duration-150 ease-out motion-reduce:transition-none", overPace ? "animate-pulse motion-reduce:animate-none" : null),
83
+ className: cn("absolute inset-y-0 left-0 bg-current transition-[width] duration-fast ease-out motion-reduce:transition-none", overPace ? "animate-pulse motion-reduce:animate-none" : null),
84
84
  style: {
85
85
  width: `${pct}%`,
86
86
  backgroundImage: provenance === "estimated" ? ESTIMATED_HATCH : void 0
@@ -72,7 +72,7 @@ const SeamCell = React.forwardRef(function SeamCell({ className, ground = "surfa
72
72
  ref,
73
73
  "data-slot": "seam-cell",
74
74
  "data-ground": ground,
75
- className: cn("min-w-0", GROUNDS[ground], flush ? null : "p-(--cue-space-5)", interactive ? "cursor-pointer transition-colors duration-150 hover:bg-surface-2 motion-reduce:transition-none" : null, className),
75
+ className: cn("min-w-0", GROUNDS[ground], flush ? null : "p-(--cue-space-5)", interactive ? "cursor-pointer transition-colors duration-fast hover:bg-surface-2 motion-reduce:transition-none" : null, className),
76
76
  ...elementProps
77
77
  });
78
78
  });
@@ -30,7 +30,7 @@ import { QUIET_INK } from "../system/_style-quiet-ink.js";
30
30
  * size and leading and the hover ground, and lane R6.Z its weight (falling back
31
31
  * through the label weight to the `400` it drew), the same way.
32
32
  */
33
- const collapseTriggerClasses = `group/collapse flex ${COLLAPSE_HEIGHT} w-full cursor-pointer items-center ${COLLAPSE_GAP} ${COLLAPSE_PAD} ${COLLAPSE_RADIUS} text-left ${CONTROL_FACE} ${COLLAPSE_SIZE} ${COLLAPSE_LEADING} ${QUIET_INK} ${COLLAPSE_WEIGHT} transition-colors duration-150 outline-none select-none ${COLLAPSE_HOVER_INK} ${COLLAPSE_HOVER_GROUND} ${COLLAPSE_FOCUS_RING} ${COLLAPSE_OPEN_INK} data-[disabled]:pointer-events-none data-[disabled]:opacity-40`;
33
+ const collapseTriggerClasses = `group/collapse flex ${COLLAPSE_HEIGHT} w-full cursor-pointer items-center ${COLLAPSE_GAP} ${COLLAPSE_PAD} ${COLLAPSE_RADIUS} text-left ${CONTROL_FACE} ${COLLAPSE_SIZE} ${COLLAPSE_LEADING} ${QUIET_INK} ${COLLAPSE_WEIGHT} transition-colors duration-fast outline-none select-none ${COLLAPSE_HOVER_INK} ${COLLAPSE_HOVER_GROUND} ${COLLAPSE_FOCUS_RING} ${COLLAPSE_OPEN_INK} data-[disabled]:pointer-events-none data-[disabled]:opacity-40`;
34
34
  /** The label between the summary row's gutters — truncates, never wraps. */
35
35
  const collapseLabelClasses = "min-w-0 flex-1 truncate";
36
36
  /**
@@ -39,7 +39,7 @@ const collapseLabelClasses = "min-w-0 flex-1 truncate";
39
39
  * Its size and ink read the style set (round 6, lane R6.Z), falling back to
40
40
  * the `icon-sm` and `fg-subtle` it drew.
41
41
  */
42
- const collapseCaretClasses = `${COLLAPSE_CARET_SIZE} shrink-0 ${COLLAPSE_CARET_INK} ${COLLAPSE_CARET_OPACITY} transition-transform duration-150 ease-out group-data-[panel-open]/collapse:rotate-90 motion-reduce:transition-none`;
42
+ const collapseCaretClasses = `${COLLAPSE_CARET_SIZE} shrink-0 ${COLLAPSE_CARET_INK} ${COLLAPSE_CARET_OPACITY} transition-transform duration-fast ease-out group-data-[panel-open]/collapse:rotate-90 motion-reduce:transition-none`;
43
43
  /**
44
44
  * Enter/exit for a panel, animated from the height Base UI measures for us.
45
45
  *
@@ -48,7 +48,7 @@ const collapseCaretClasses = `${COLLAPSE_CARET_SIZE} shrink-0 ${COLLAPSE_CARET_I
48
48
  * make the panel jump at both ends. The body lives one element in — see
49
49
  * {@link collapsePanelBodyClasses}.
50
50
  */
51
- const PANEL_MOTION = "overflow-hidden transition-[height] duration-150 ease-out motion-reduce:transition-none data-[starting-style]:h-0 data-[ending-style]:h-0";
51
+ const PANEL_MOTION = "overflow-hidden transition-[height] duration-fast ease-out motion-reduce:transition-none data-[starting-style]:h-0 data-[ending-style]:h-0";
52
52
  /** {@link PANEL_MOTION} against the accordion's measured height. */
53
53
  const accordionPanelClasses = `${PANEL_MOTION} h-(--accordion-panel-height)`;
54
54
  /** {@link PANEL_MOTION} against the collapsible's measured height. */
@@ -58,7 +58,7 @@ const MIN_HEIGHT_CLASSES = {
58
58
  /** The tile surface, shared by both variants so a link tile is not a second look. */
59
59
  const TILE_CLASS = "flex flex-col gap-(--cue-space-3) overflow-hidden rounded-surface border border-border bg-surface-1 p-(--cue-space-5)";
60
60
  /** What a link tile adds: the hover tint and the focus ring the whole surface takes. */
61
- const LINK_TILE_CLASS = `no-underline transition-colors duration-150 outline-none hover:bg-surface-2 ${FOCUS_RING_OFFSET_2}`;
61
+ const LINK_TILE_CLASS = `no-underline transition-colors duration-fast outline-none hover:bg-surface-2 ${FOCUS_RING_OFFSET_2}`;
62
62
  /** The host elements a link tile may not contain, plus anything carrying `tabIndex`. */
63
63
  const INTERACTIVE_TAGS = /* @__PURE__ */ new Set([
64
64
  "a",
@@ -11,7 +11,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
11
11
  * face, hover ink and the trail's gap read the style set (round 6, spec §11,
12
12
  * lane R6.Z: `_style-crumb.ts`), each falling back to what it drew.
13
13
  */
14
- const CRUMB_LINK_CLASSES = `cursor-pointer rounded-control border-0 bg-transparent p-0 ${CRUMB_FACE} ${CRUMB_SIZE} ${CRUMB_INK} no-underline transition-colors duration-150 outline-none ${CRUMB_HOVER_INK} ${FOCUS_RING_OFFSET_2}`;
14
+ const CRUMB_LINK_CLASSES = `cursor-pointer rounded-control border-0 bg-transparent p-0 ${CRUMB_FACE} ${CRUMB_SIZE} ${CRUMB_INK} no-underline transition-colors duration-fast outline-none ${CRUMB_HOVER_INK} ${FOCUS_RING_OFFSET_2}`;
15
15
  /**
16
16
  * Where you are, and how to get back.
17
17
  *
@@ -203,7 +203,7 @@ const Carousel = {
203
203
  "aria-label": dotLabel(index),
204
204
  "aria-current": index === selectedIndex ? "true" : void 0,
205
205
  onClick: () => scrollTo(index),
206
- className: cn(`size-[0.25rem] cursor-pointer rounded-full border-0 p-0 transition-colors duration-150 outline-none ${FOCUS_RING_OFFSET_2} motion-reduce:transition-none`, index === selectedIndex ? "bg-accent" : "bg-border-strong")
206
+ className: cn(`size-[0.25rem] cursor-pointer rounded-full border-0 p-0 transition-colors duration-fast outline-none ${FOCUS_RING_OFFSET_2} motion-reduce:transition-none`, index === selectedIndex ? "bg-accent" : "bg-border-strong")
207
207
  }, index))
208
208
  });
209
209
  })
@@ -99,7 +99,7 @@ const Disclosure = React.forwardRef(function Disclosure({ className, label = "ad
99
99
  children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
100
100
  ref,
101
101
  "data-slot": "disclosure-trigger",
102
- className: cn(`group/disclosure inline-flex cursor-pointer items-center gap-(--cue-space-2) self-start border-0 bg-transparent p-0 py-(--cue-space-2) text-(length:--cue-text-label) ${DISCLOSURE_INK} ${DISCLOSURE_WEIGHT} transition-colors duration-150 outline-none select-none ${DISCLOSURE_HOVER_INK} ${FOCUS_RING_OFFSET_2}`, LABEL_FACE, LABEL_TRACKING, LABEL_CASE, className),
102
+ className: cn(`group/disclosure inline-flex cursor-pointer items-center gap-(--cue-space-2) self-start border-0 bg-transparent p-0 py-(--cue-space-2) text-(length:--cue-text-label) ${DISCLOSURE_INK} ${DISCLOSURE_WEIGHT} transition-colors duration-fast outline-none select-none ${DISCLOSURE_HOVER_INK} ${FOCUS_RING_OFFSET_2}`, LABEL_FACE, LABEL_TRACKING, LABEL_CASE, className),
103
103
  ...elementProps,
104
104
  children: [
105
105
  /* @__PURE__ */ jsx("span", {
@@ -5,7 +5,9 @@ import { Accordion, AccordionHeaderProps, AccordionItemProps, AccordionPanelProp
5
5
  import { SpaceStep, Stack, StackAlign, StackJustify, StackProps } from "./stack.js";
6
6
  import { Bento, BentoColumns, BentoMinHeight, BentoRootProps, BentoRowSpan, BentoRows, BentoSpan, BentoTileProps } from "./bento.js";
7
7
  import { Breadcrumb, BreadcrumbItem, BreadcrumbProps } from "./breadcrumb.js";
8
+ import { PaneSeam, PaneSeamEdge, PaneSeamOrientation, PaneSeamProps } from "./pane-seam.js";
8
9
  import { Reveal, RevealProps } from "./reveal.js";
10
+ import { SplitPane, SplitPaneLayout, SplitPaneProps } from "./split-pane.js";
9
11
  import { Card, CardContentProps, CardDescriptionProps, CardFooterProps, CardHeaderProps, CardRootProps, CardTitleProps } from "./card.js";
10
12
  import { Collapsible, CollapsiblePanelProps, CollapsibleRootProps, CollapsibleTriggerProps, Disclosure, DisclosureProps } from "./collapsible.js";
11
13
  import { DescriptionList, DescriptionListDetailProps, DescriptionListLayout, DescriptionListRootProps, DescriptionListTermProps } from "./description-list.js";
@@ -17,4 +19,4 @@ import { Pagination, PaginationEntry, PaginationProps, paginationRange } from ".
17
19
  import { Preview, PreviewAxis, PreviewPresentation, PreviewProps, PreviewResizeOptions } from "./preview.js";
18
20
  import { Stepper, StepperProps, StepperState, StepperStep } from "./stepper.js";
19
21
  import { Timeline, TimelineContentProps, TimelineItemProps, TimelineMarkerProps, TimelineRootProps } from "./timeline.js";
20
- export { Accordion, type AccordionHeaderProps, type AccordionItemProps, type AccordionPanelProps, type AccordionRootProps, type AccordionTriggerProps, Bento, type BentoColumns, type BentoMinHeight, type BentoRootProps, type BentoRowSpan, type BentoRows, type BentoSpan, type BentoTileProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Card, type CardContentProps, type CardDescriptionProps, type CardFooterProps, type CardHeaderProps, type CardRootProps, type CardTitleProps, Collapsible, type CollapsiblePanelProps, type CollapsibleRootProps, type CollapsibleTriggerProps, Container, type ContainerProps, type ContainerWidth, DescriptionList, type DescriptionListDetailProps, type DescriptionListLayout, type DescriptionListRootProps, type DescriptionListTermProps, Disclosure, type DisclosureProps, Frames, type FramesHeight, type FramesItemProps, type FramesLayout, type FramesRootProps, Grid, type GridColumns, type GridProps, Item, type ItemProps, Link, type LinkProps, Pagination, type PaginationEntry, type PaginationProps, Preview, type PreviewAxis, type PreviewGround, type PreviewPresentation, type PreviewProps, type PreviewResizeOptions, Reveal, type RevealProps, Sidebar, type SidebarItemProps, type SidebarRailProps, type SidebarRootProps, type SidebarSectionProps, type SpaceStep, Stack, type StackAlign, type StackJustify, type StackProps, Stepper, type StepperProps, type StepperState, type StepperStep, Timeline, type TimelineContentProps, type TimelineItemProps, type TimelineMarkerProps, type TimelineRootProps, itemVariants, linkVariants, paginationRange, useSidebar };
22
+ export { Accordion, type AccordionHeaderProps, type AccordionItemProps, type AccordionPanelProps, type AccordionRootProps, type AccordionTriggerProps, Bento, type BentoColumns, type BentoMinHeight, type BentoRootProps, type BentoRowSpan, type BentoRows, type BentoSpan, type BentoTileProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Card, type CardContentProps, type CardDescriptionProps, type CardFooterProps, type CardHeaderProps, type CardRootProps, type CardTitleProps, Collapsible, type CollapsiblePanelProps, type CollapsibleRootProps, type CollapsibleTriggerProps, Container, type ContainerProps, type ContainerWidth, DescriptionList, type DescriptionListDetailProps, type DescriptionListLayout, type DescriptionListRootProps, type DescriptionListTermProps, Disclosure, type DisclosureProps, Frames, type FramesHeight, type FramesItemProps, type FramesLayout, type FramesRootProps, Grid, type GridColumns, type GridProps, Item, type ItemProps, Link, type LinkProps, Pagination, type PaginationEntry, type PaginationProps, PaneSeam, type PaneSeamEdge, type PaneSeamOrientation, type PaneSeamProps, Preview, type PreviewAxis, type PreviewGround, type PreviewPresentation, type PreviewProps, type PreviewResizeOptions, Reveal, type RevealProps, Sidebar, type SidebarItemProps, type SidebarRailProps, type SidebarRootProps, type SidebarSectionProps, type SpaceStep, SplitPane, type SplitPaneLayout, type SplitPaneProps, Stack, type StackAlign, type StackJustify, type StackProps, Stepper, type StepperProps, type StepperState, type StepperStep, Timeline, type TimelineContentProps, type TimelineItemProps, type TimelineMarkerProps, type TimelineRootProps, itemVariants, linkVariants, paginationRange, useSidebar };
@@ -5,7 +5,9 @@ import { Accordion } from "./accordion.js";
5
5
  import { Stack } from "./stack.js";
6
6
  import { Bento } from "./bento.js";
7
7
  import { Breadcrumb } from "./breadcrumb.js";
8
+ import { PaneSeam } from "./pane-seam.js";
8
9
  import { Reveal } from "./reveal.js";
10
+ import { SplitPane } from "./split-pane.js";
9
11
  import { Card } from "./card.js";
10
12
  import { Collapsible, Disclosure } from "./collapsible.js";
11
13
  import { DescriptionList } from "./description-list.js";
@@ -16,4 +18,4 @@ import { Pagination, paginationRange } from "./pagination.js";
16
18
  import { Preview } from "./preview.js";
17
19
  import { Stepper } from "./stepper.js";
18
20
  import { Timeline } from "./timeline.js";
19
- export { Accordion, Bento, Breadcrumb, Card, Collapsible, Container, DescriptionList, Disclosure, Frames, Grid, Item, Link, Pagination, Preview, Reveal, Sidebar, Stack, Stepper, Timeline, itemVariants, linkVariants, paginationRange, useSidebar };
21
+ export { Accordion, Bento, Breadcrumb, Card, Collapsible, Container, DescriptionList, Disclosure, Frames, Grid, Item, Link, Pagination, PaneSeam, Preview, Reveal, Sidebar, SplitPane, Stack, Stepper, Timeline, itemVariants, linkVariants, paginationRange, useSidebar };
@@ -24,7 +24,7 @@ const itemVariants = cva("flex w-full items-center gap-(--cue-space-4) rounded-c
24
24
  soft: "bg-surface-2"
25
25
  },
26
26
  interactive: {
27
- true: `cursor-pointer transition-colors duration-150 outline-none hover:bg-surface-2 ${FOCUS_RING} disabled:pointer-events-none disabled:opacity-40`,
27
+ true: `cursor-pointer transition-colors duration-fast outline-none hover:bg-surface-2 ${FOCUS_RING} disabled:pointer-events-none disabled:opacity-40`,
28
28
  false: ""
29
29
  }
30
30
  },
@@ -38,7 +38,7 @@ import { useRender } from "@base-ui/react/use-render";
38
38
  * @example
39
39
  * <a className={linkVariants({ variant: "underline" })} href="/docs">Docs</a>
40
40
  */
41
- const linkVariants = cva(`cursor-pointer rounded-control ${CONTROL_FACE} ${LINK_WEIGHT} transition-colors duration-150 outline-none ${HOVER_INK} ${LINK_FOCUS_RING}`, {
41
+ const linkVariants = cva(`cursor-pointer rounded-control ${CONTROL_FACE} ${LINK_WEIGHT} transition-colors duration-fast outline-none ${HOVER_INK} ${LINK_FOCUS_RING}`, {
42
42
  variants: { variant: {
43
43
  plain: `no-underline ${LINK_INK}`,
44
44
  underline: `underline ${INLINE_LINK_INK} ${LINK_RULE} ${LINK_OFFSET} ${HOVER_RULE}`
@@ -62,7 +62,7 @@ function paginationRange(page, pageCount, siblingCount = 1) {
62
62
  return typeof before === "number" && typeof after === "number" && after - before === 2 ? before + 1 : entry;
63
63
  });
64
64
  }
65
- const PAGE_BUTTON_CLASSES = `inline-flex h-control-sm min-w-control-sm cursor-pointer items-center justify-center rounded-control border-0 bg-transparent px-(--cue-space-2) ${CONTROL_FACE} font-[number:var(--cue-style-control-weight,inherit)] text-(length:--cue-text-ui) tabular-nums ${GHOST_INK} transition-colors duration-150 outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET}`;
65
+ const PAGE_BUTTON_CLASSES = `inline-flex h-control-sm min-w-control-sm cursor-pointer items-center justify-center rounded-control border-0 bg-transparent px-(--cue-space-2) ${CONTROL_FACE} font-[number:var(--cue-style-control-weight,inherit)] text-(length:--cue-text-ui) tabular-nums ${GHOST_INK} transition-colors duration-fast outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET}`;
66
66
  /**
67
67
  * The pager: previous, a window of page numbers, next.
68
68
  *
@@ -0,0 +1,75 @@
1
+ import * as React from "react";
2
+ //#region src/layout/pane-seam.d.ts
3
+ /** Which way the seam runs: between side-by-side panes, or between stacked ones. */
4
+ type PaneSeamOrientation = "vertical" | "horizontal";
5
+ /** Which side of the seam the pane it resizes sits on. */
6
+ type PaneSeamEdge = "start" | "end";
7
+ interface PaneSeamProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children" | "defaultValue" | "onChange"> {
8
+ /**
9
+ * The name a screen reader lists the seam by: `Resize the inspector`. Required,
10
+ * because a separator nobody can name is one a keyboard user cannot find.
11
+ */
12
+ label: string;
13
+ /** The pane's size in pixels, when the caller holds it. */
14
+ value?: number;
15
+ /** The size to start from when nothing controls it. Defaults to `min`. */
16
+ defaultValue?: number;
17
+ /** Called with every new size, already clamped to `min` and `max`. */
18
+ onValueChange?: (value: number) => void;
19
+ /** The smallest the pane may become, in pixels. */
20
+ min: number;
21
+ /** The largest the pane may become, in pixels. */
22
+ max: number;
23
+ /** How far one arrow press moves the seam, in pixels. Defaults to 16. */
24
+ step?: number;
25
+ /** How far Shift with an arrow moves it, in pixels. Defaults to 64. */
26
+ largeStep?: number;
27
+ /**
28
+ * `vertical`, the default, divides side-by-side panes and resizes a width;
29
+ * `horizontal` divides stacked panes and resizes a height.
30
+ */
31
+ orientation?: PaneSeamOrientation;
32
+ /**
33
+ * Where the pane sits: `start`, the default, before the seam (left, or top),
34
+ * or `end`, after it. Moving the seam away from the pane grows it. A vertical
35
+ * seam reads the document's direction, so `start` is the right-hand pane
36
+ * under `dir="rtl"`.
37
+ */
38
+ edge?: PaneSeamEdge;
39
+ }
40
+ /**
41
+ * One accessible seam that resizes one pane, with no dependency (cue-ui-55).
42
+ *
43
+ * `Resizable` divides a frame between panel groups on `react-resizable-panels`,
44
+ * an optional peer. Most consoles need one thing less: a side pane whose edge a
45
+ * reader can drag, and move from the keyboard. This is that edge, and nothing
46
+ * else. It owns a number, not a layout: apply `value` to the pane's width (or
47
+ * height) and the seam supplies the rest.
48
+ *
49
+ * The rest is the part a hand-written separator forgets. It is a focusable
50
+ * `role="separator"` that says its size and its bounds (`aria-valuenow`,
51
+ * `-valuemin`, `-valuemax`), so the width is spoken as well as draggable. The
52
+ * arrows move it by `step`, Shift by `largeStep`, and Home and End jump to the
53
+ * bounds. Every value is clamped, so the pane can never squeeze its neighbour
54
+ * out of use.
55
+ *
56
+ * @example
57
+ * const [width, setWidth] = React.useState(320);
58
+ * const inspector = { width };
59
+ *
60
+ * <div className="flex">
61
+ * <main className="min-w-0 flex-1">…</main>
62
+ * <PaneSeam
63
+ * label="Resize the inspector"
64
+ * edge="end"
65
+ * min={240}
66
+ * max={640}
67
+ * value={width}
68
+ * onValueChange={setWidth}
69
+ * />
70
+ * <aside style={inspector}>…</aside>
71
+ * </div>
72
+ */
73
+ declare const PaneSeam: React.ForwardRefExoticComponent<PaneSeamProps & React.RefAttributes<HTMLDivElement>>;
74
+ //#endregion
75
+ export { PaneSeam, PaneSeamEdge, PaneSeamOrientation, PaneSeamProps };
@@ -0,0 +1,127 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { FOCUS_RING_INSET_2 } from "../system/_focus-ring.js";
4
+ import * as React from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/layout/pane-seam.tsx
7
+ const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
8
+ /**
9
+ * One accessible seam that resizes one pane, with no dependency (cue-ui-55).
10
+ *
11
+ * `Resizable` divides a frame between panel groups on `react-resizable-panels`,
12
+ * an optional peer. Most consoles need one thing less: a side pane whose edge a
13
+ * reader can drag, and move from the keyboard. This is that edge, and nothing
14
+ * else. It owns a number, not a layout: apply `value` to the pane's width (or
15
+ * height) and the seam supplies the rest.
16
+ *
17
+ * The rest is the part a hand-written separator forgets. It is a focusable
18
+ * `role="separator"` that says its size and its bounds (`aria-valuenow`,
19
+ * `-valuemin`, `-valuemax`), so the width is spoken as well as draggable. The
20
+ * arrows move it by `step`, Shift by `largeStep`, and Home and End jump to the
21
+ * bounds. Every value is clamped, so the pane can never squeeze its neighbour
22
+ * out of use.
23
+ *
24
+ * @example
25
+ * const [width, setWidth] = React.useState(320);
26
+ * const inspector = { width };
27
+ *
28
+ * <div className="flex">
29
+ * <main className="min-w-0 flex-1">…</main>
30
+ * <PaneSeam
31
+ * label="Resize the inspector"
32
+ * edge="end"
33
+ * min={240}
34
+ * max={640}
35
+ * value={width}
36
+ * onValueChange={setWidth}
37
+ * />
38
+ * <aside style={inspector}>…</aside>
39
+ * </div>
40
+ */
41
+ const PaneSeam = React.forwardRef(function PaneSeam({ label, value, defaultValue, onValueChange, min, max, step = 16, largeStep = 64, orientation = "vertical", edge = "start", className, onKeyDown, onPointerDown, onPointerMove, onPointerUp, onPointerCancel, ...elementProps }, ref) {
42
+ const [own, setOwn] = React.useState(() => clamp(defaultValue ?? min, min, max));
43
+ const current = clamp(value ?? own, min, max);
44
+ const drag = React.useRef(null);
45
+ const [dragging, setDragging] = React.useState(false);
46
+ const commit = (next) => {
47
+ const clamped = clamp(Math.round(next), min, max);
48
+ if (clamped === current) return;
49
+ if (value === void 0) setOwn(clamped);
50
+ onValueChange?.(clamped);
51
+ };
52
+ /**
53
+ * Which physical direction grows the pane: +1 is right (or down), -1 left (or
54
+ * up). Read at the moment of input, from the nearest `dir`, so a seam moved
55
+ * into a right-to-left subtree follows it.
56
+ */
57
+ const growth = (element) => {
58
+ const away = edge === "start" ? 1 : -1;
59
+ if (orientation === "horizontal") return away;
60
+ return element.closest("[dir]")?.getAttribute("dir") === "rtl" ? -away : away;
61
+ };
62
+ return /* @__PURE__ */ jsx("div", {
63
+ ref,
64
+ role: "separator",
65
+ tabIndex: 0,
66
+ "aria-label": label,
67
+ "aria-orientation": orientation,
68
+ "aria-valuenow": current,
69
+ "aria-valuemin": min,
70
+ "aria-valuemax": max,
71
+ "data-slot": "pane-seam",
72
+ "data-orientation": orientation,
73
+ "data-edge": edge,
74
+ "data-dragging": dragging || void 0,
75
+ className: cn(`relative shrink-0 touch-none bg-border transition-colors duration-fast outline-none select-none hover:bg-accent data-dragging:bg-accent focus-visible:bg-accent ${FOCUS_RING_INSET_2} motion-reduce:transition-none`, orientation === "vertical" ? "min-h-8 w-[0.25rem] cursor-col-resize self-stretch" : "h-[0.25rem] w-full cursor-row-resize", className),
76
+ onKeyDown: (event) => {
77
+ onKeyDown?.(event);
78
+ if (event.defaultPrevented) return;
79
+ const by = event.shiftKey ? largeStep : step;
80
+ const forward = orientation === "vertical" ? "ArrowRight" : "ArrowDown";
81
+ const back = orientation === "vertical" ? "ArrowLeft" : "ArrowUp";
82
+ let next;
83
+ if (event.key === forward) next = current + by * growth(event.currentTarget);
84
+ else if (event.key === back) next = current - by * growth(event.currentTarget);
85
+ else if (event.key === "Home") next = min;
86
+ else if (event.key === "End") next = max;
87
+ if (next === void 0) return;
88
+ event.preventDefault();
89
+ commit(next);
90
+ },
91
+ onPointerDown: (event) => {
92
+ onPointerDown?.(event);
93
+ if (event.defaultPrevented || event.button !== 0) return;
94
+ event.preventDefault();
95
+ event.currentTarget.setPointerCapture?.(event.pointerId);
96
+ drag.current = {
97
+ pointer: event.pointerId,
98
+ from: orientation === "vertical" ? event.clientX : event.clientY,
99
+ size: current,
100
+ grow: growth(event.currentTarget)
101
+ };
102
+ setDragging(true);
103
+ },
104
+ onPointerMove: (event) => {
105
+ onPointerMove?.(event);
106
+ const held = drag.current;
107
+ if (held === null || held.pointer !== event.pointerId) return;
108
+ const at = orientation === "vertical" ? event.clientX : event.clientY;
109
+ commit(held.size + (at - held.from) * held.grow);
110
+ },
111
+ onPointerUp: (event) => {
112
+ onPointerUp?.(event);
113
+ if (drag.current?.pointer !== event.pointerId) return;
114
+ drag.current = null;
115
+ setDragging(false);
116
+ event.currentTarget.releasePointerCapture?.(event.pointerId);
117
+ },
118
+ onPointerCancel: (event) => {
119
+ onPointerCancel?.(event);
120
+ drag.current = null;
121
+ setDragging(false);
122
+ },
123
+ ...elementProps
124
+ });
125
+ });
126
+ //#endregion
127
+ export { PaneSeam };
@@ -20,7 +20,8 @@ interface ResizableHandleProps extends React.ComponentProps<typeof Separator> {
20
20
  *
21
21
  * `react-resizable-panels` is an **optional peer**: import this from
22
22
  * `@cueplusplus/ui/layout/resizable`, never from the core barrel, so an app
23
- * with no split view never installs one.
23
+ * with no split view never installs one. For one seam beside one pane,
24
+ * `PaneSeam` in the core barrel needs no peer at all.
24
25
  *
25
26
  * @example
26
27
  * <Resizable.Group orientation="horizontal">
@@ -18,7 +18,8 @@ const ResizableOrientationContext = React.createContext("horizontal");
18
18
  *
19
19
  * `react-resizable-panels` is an **optional peer**: import this from
20
20
  * `@cueplusplus/ui/layout/resizable`, never from the core barrel, so an app
21
- * with no split view never installs one.
21
+ * with no split view never installs one. For one seam beside one pane,
22
+ * `PaneSeam` in the core barrel needs no peer at all.
22
23
  *
23
24
  * @example
24
25
  * <Resizable.Group orientation="horizontal">
@@ -55,7 +56,7 @@ const Resizable = {
55
56
  return /* @__PURE__ */ jsxs(Separator, {
56
57
  elementRef: elementRef ?? ref,
57
58
  "data-slot": "resizable-handle",
58
- className: cn(`relative flex items-center justify-center bg-border transition-colors duration-150 outline-none data-[separator=hover]:bg-accent data-[separator=active]:bg-accent data-[separator=focus]:bg-accent ${FOCUS_RING_INSET_2} data-[separator=disabled]:opacity-40 motion-reduce:transition-none`, orientation === "vertical" ? "h-[0.25rem] w-full" : "w-[0.25rem] self-stretch", className),
59
+ className: cn(`relative flex items-center justify-center bg-border transition-colors duration-fast outline-none data-[separator=hover]:bg-accent data-[separator=active]:bg-accent data-[separator=focus]:bg-accent ${FOCUS_RING_INSET_2} data-[separator=disabled]:opacity-40 motion-reduce:transition-none`, orientation === "vertical" ? "h-[0.25rem] w-full" : "w-[0.25rem] self-stretch", className),
59
60
  ...elementProps,
60
61
  children: [withGrip ? /* @__PURE__ */ jsx("span", {
61
62
  "data-slot": "resizable-grip",
@@ -23,9 +23,10 @@ const EASE_OUT = "cubic-bezier(0, 0, 0.58, 1)";
23
23
  * <div data-reveal-item>Reason</div>
24
24
  * </Reveal>
25
25
  */
26
- const Reveal = React.forwardRef(function Reveal({ distance = 28, rootMargin = "-12% 0px", duration = 500, stagger = 0, className, children, ...props }, ref) {
26
+ const Reveal = React.forwardRef(function Reveal({ distance = 28, rootMargin = "-12% 0px", duration = 500, stagger = 0, className, style, children, ...props }, ref) {
27
27
  const box = React.useRef(null);
28
28
  const still = useStill();
29
+ const [mounted, setMounted] = React.useState(false);
29
30
  const entered = React.useRef(false);
30
31
  const targets = React.useCallback(() => {
31
32
  const element = box.current;
@@ -33,11 +34,11 @@ const Reveal = React.forwardRef(function Reveal({ distance = 28, rootMargin = "-
33
34
  return stagger > 0 ? [...element.querySelectorAll("[data-reveal-item]")] : [element];
34
35
  }, [stagger]);
35
36
  React.useLayoutEffect(() => {
36
- if (still || entered.current) return;
37
- for (const target of targets()) {
37
+ if (!still && !entered.current) for (const target of targets()) {
38
38
  target.style.opacity = "0";
39
39
  target.style.transform = `translateY(${distance}px)`;
40
40
  }
41
+ setMounted(true);
41
42
  }, [
42
43
  still,
43
44
  distance,
@@ -97,7 +98,12 @@ const Reveal = React.forwardRef(function Reveal({ distance = 28, rootMargin = "-
97
98
  else if (ref !== null) ref.current = node;
98
99
  },
99
100
  "data-slot": "reveal",
100
- className: cn(className),
101
+ "data-reveal-stagger": stagger > 0 ? "" : void 0,
102
+ className: cn(!still && !mounted && "cue-reveal-pending", className),
103
+ style: !still && !mounted ? {
104
+ ...style,
105
+ "--cue-reveal-distance": `${distance}px`
106
+ } : style,
101
107
  ...props,
102
108
  children
103
109
  });
@@ -100,7 +100,7 @@ const SidebarRoot = React.forwardRef(function SidebarRoot({ className, landmark
100
100
  ref,
101
101
  "data-slot": "sidebar",
102
102
  "data-collapsed": collapsed ? "" : void 0,
103
- className: cn("group/sidebar relative flex h-full min-h-0 shrink-0 flex-col border-r border-border bg-surface-1 transition-[width] duration-150 ease-out motion-reduce:transition-none", "[counter-reset:cue-rail]", className),
103
+ className: cn("group/sidebar relative flex h-full min-h-0 shrink-0 flex-col border-r border-border bg-surface-1 transition-[width] duration-fast ease-out motion-reduce:transition-none", "[counter-reset:cue-rail]", className),
104
104
  style: {
105
105
  width: collapsed ? collapsedWidth : width,
106
106
  ...style
@@ -161,7 +161,7 @@ const Sidebar = {
161
161
  "data-slot": "sidebar-item",
162
162
  "data-active": active ? "" : void 0,
163
163
  "aria-current": active ? "page" : void 0,
164
- className: cn(`relative flex h-control-md w-full cursor-pointer items-center gap-(--cue-space-3) rounded-control border-0 bg-transparent px-(--cue-space-3) text-left font-mono text-(length:--cue-text-ui) no-underline transition-colors duration-150 outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET} ${NAV_ITEM} ${RAIL_COUNTER} disabled:pointer-events-none disabled:opacity-40`, className),
164
+ className: cn(`relative flex h-control-md w-full cursor-pointer items-center gap-(--cue-space-3) rounded-control border-0 bg-transparent px-(--cue-space-3) text-left font-mono text-(length:--cue-text-ui) no-underline transition-colors duration-fast outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET} ${NAV_ITEM} ${RAIL_COUNTER} disabled:pointer-events-none disabled:opacity-40`, className),
165
165
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
166
166
  Icon === void 0 ? null : /* @__PURE__ */ jsx(Icon, {
167
167
  "aria-hidden": "true",
@@ -193,7 +193,7 @@ const Sidebar = {
193
193
  onClick?.(event);
194
194
  if (!event.defaultPrevented) toggle();
195
195
  },
196
- className: cn(`absolute inset-y-0 right-0 w-[0.25rem] translate-x-1/2 cursor-ew-resize border-0 bg-transparent p-0 transition-colors duration-150 outline-none hover:bg-accent ${FOCUS_RING_INSET_2} motion-reduce:transition-none`, className),
196
+ className: cn(`absolute inset-y-0 right-0 w-[0.25rem] translate-x-1/2 cursor-ew-resize border-0 bg-transparent p-0 transition-colors duration-fast outline-none hover:bg-accent ${FOCUS_RING_INSET_2} motion-reduce:transition-none`, className),
197
197
  ...elementProps
198
198
  });
199
199
  })