@cueplusplus/ui 0.18.2 → 0.19.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 (136) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/brand/_motif-seed.js +20 -0
  3. package/dist/brand/gloss-object.d.ts +23 -0
  4. package/dist/brand/gloss-object.js +108 -0
  5. package/dist/brand/halftone.d.ts +23 -0
  6. package/dist/brand/halftone.js +54 -0
  7. package/dist/brand/index.d.ts +6 -1
  8. package/dist/brand/motif.d.ts +32 -0
  9. package/dist/brand/motif.js +71 -0
  10. package/dist/brand/particle-mark.d.ts +29 -0
  11. package/dist/brand/particle-mark.js +137 -0
  12. package/dist/brand/ribbon.d.ts +20 -0
  13. package/dist/brand/ribbon.js +54 -0
  14. package/dist/chrome/announcement-bar.d.ts +30 -0
  15. package/dist/chrome/announcement-bar.js +38 -0
  16. package/dist/chrome/app-bar.d.ts +4 -1
  17. package/dist/chrome/app-bar.js +7 -2
  18. package/dist/chrome/app-shell.js +8 -1
  19. package/dist/chrome/band.d.ts +3 -1
  20. package/dist/chrome/band.js +4 -3
  21. package/dist/chrome/hero.d.ts +61 -0
  22. package/dist/chrome/hero.js +108 -0
  23. package/dist/chrome/index.d.ts +6 -1
  24. package/dist/chrome/index.js +6 -1
  25. package/dist/chrome/keyword.d.ts +22 -0
  26. package/dist/chrome/keyword.js +28 -0
  27. package/dist/chrome/logo-strip.d.ts +23 -0
  28. package/dist/chrome/logo-strip.js +43 -0
  29. package/dist/chrome/page-shell.js +13 -1
  30. package/dist/chrome/stat-band.d.ts +32 -0
  31. package/dist/chrome/stat-band.js +39 -0
  32. package/dist/dmx/channel-matrix.js +5 -3
  33. package/dist/dmx/dmx-strip.js +5 -3
  34. package/dist/elements/animated-number.js +4 -1
  35. package/dist/elements/replay.d.ts +1 -1
  36. package/dist/elements/replay.js +5 -2
  37. package/dist/elements/scroll-anchor.js +4 -1
  38. package/dist/index.d.ts +13 -1
  39. package/dist/index.js +14 -2
  40. package/dist/instruments/index.js +1 -1
  41. package/dist/instruments/stat.js +1 -1
  42. package/dist/instruments/terminal-frame.js +5 -2
  43. package/dist/layout/grid.js +4 -2
  44. package/dist/layout/preview.js +4 -188
  45. package/dist/layout/sidebar.js +88 -52
  46. package/dist/overlays/_surface.d.ts +2 -2
  47. package/dist/primitives/button.js +22 -3
  48. package/dist/primitives/chip.js +62 -6
  49. package/dist/styles.css +26 -0
  50. package/dist/system/_scoped-pairing.js +18 -0
  51. package/dist/system/_stage-scope.js +199 -0
  52. package/dist/system/_style-check.js +1 -1
  53. package/dist/system/_style-chip.js +1 -1
  54. package/dist/system/_style-group-label.js +7 -3
  55. package/dist/system/_style-hero-title.js +41 -0
  56. package/dist/system/_style-kbd.js +1 -1
  57. package/dist/system/_style-label-ink.js +12 -5
  58. package/dist/system/_style-menu.js +1 -1
  59. package/dist/system/_style-page-title.js +1 -1
  60. package/dist/system/_style-segmented-control.js +1 -1
  61. package/dist/system/_style-skeleton.js +1 -1
  62. package/dist/system/_style-tab.js +1 -1
  63. package/dist/system/font-scope.d.ts +38 -0
  64. package/dist/system/font-scope.js +69 -0
  65. package/dist/system/index.d.ts +3 -1
  66. package/dist/system/index.js +3 -1
  67. package/dist/system/portal.js +7 -1
  68. package/dist/system/still.d.ts +32 -0
  69. package/dist/system/still.js +47 -0
  70. package/manifest/components/alert-dialog.json +1 -1
  71. package/manifest/components/announcement-bar.json +82 -0
  72. package/manifest/components/app-bar.json +3 -2
  73. package/manifest/components/app-shell.json +3 -0
  74. package/manifest/components/autocomplete.json +1 -0
  75. package/manifest/components/band.json +2 -1
  76. package/manifest/components/bento.json +12 -12
  77. package/manifest/components/button.json +1 -0
  78. package/manifest/components/channel-matrix.json +1 -0
  79. package/manifest/components/chart-tooltip-content.json +1 -0
  80. package/manifest/components/checkbox-group.json +1 -1
  81. package/manifest/components/checkbox.json +1 -1
  82. package/manifest/components/chip.json +1 -0
  83. package/manifest/components/combobox.json +1 -0
  84. package/manifest/components/command-palette.json +1 -0
  85. package/manifest/components/context-menu.json +1 -1
  86. package/manifest/components/density.json +6 -2
  87. package/manifest/components/dialog.json +1 -1
  88. package/manifest/components/dmx-bar.json +1 -1
  89. package/manifest/components/dmx-strip.json +1 -1
  90. package/manifest/components/drawer.json +1 -1
  91. package/manifest/components/dropdown-menu.json +1 -0
  92. package/manifest/components/font-scope.json +81 -0
  93. package/manifest/components/footer.json +0 -1
  94. package/manifest/components/gloss-object.json +81 -0
  95. package/manifest/components/grid.json +6 -6
  96. package/manifest/components/halftone.json +79 -0
  97. package/manifest/components/hero.json +204 -0
  98. package/manifest/components/hover-card.json +1 -1
  99. package/manifest/components/kbd.json +1 -0
  100. package/manifest/components/keyword.json +67 -0
  101. package/manifest/components/ledger.json +4 -4
  102. package/manifest/components/logo-strip.json +93 -0
  103. package/manifest/components/markdown-text.json +2 -2
  104. package/manifest/components/menubar.json +1 -1
  105. package/manifest/components/motif.json +90 -0
  106. package/manifest/components/multi-select.json +1 -0
  107. package/manifest/components/navigation-menu.json +1 -0
  108. package/manifest/components/page-shell.json +5 -0
  109. package/manifest/components/particle-mark.json +75 -0
  110. package/manifest/components/popover.json +1 -1
  111. package/manifest/components/preview.json +9 -4
  112. package/manifest/components/radio-group.json +0 -1
  113. package/manifest/components/radio.json +0 -1
  114. package/manifest/components/ribbon.json +65 -0
  115. package/manifest/components/scrollable-tabs-list.json +1 -0
  116. package/manifest/components/segmented-control.json +1 -0
  117. package/manifest/components/sheet.json +1 -1
  118. package/manifest/components/sidebar.json +1 -0
  119. package/manifest/components/skeleton.json +1 -0
  120. package/manifest/components/stack.json +4 -4
  121. package/manifest/components/stat-band.json +68 -0
  122. package/manifest/components/stat.json +1 -1
  123. package/manifest/components/still-provider.json +60 -0
  124. package/manifest/components/switch.json +0 -1
  125. package/manifest/components/table.json +1 -1
  126. package/manifest/components/tabs.json +1 -0
  127. package/manifest/components/tags-input.json +1 -0
  128. package/manifest/components/theme-configurator.json +1 -0
  129. package/manifest/components/theme-provider.json +9 -4
  130. package/manifest/components/toast.json +1 -0
  131. package/manifest/components/tooltip.json +1 -1
  132. package/manifest/fixtures.json +18 -0
  133. package/manifest/manifest.json +267 -55
  134. package/manifest/tokens.json +91 -3
  135. package/package.json +4 -4
  136. package/dist/system/_paint-ground-pattern.js +0 -30
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { mulberry32, usePrefersReducedMotion } from "../instruments/_motion.js";
4
+ import { useStill } from "../system/still.js";
3
5
  import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
4
6
  import { useCuePortalProps } from "../system/portal.js";
5
7
  import { toRem } from "../instruments/_rem.js";
6
- import { mulberry32, usePrefersReducedMotion } from "../instruments/_motion.js";
7
8
  import { dmxPalette, dmxPaletteColor } from "./_ramp.js";
8
9
  import { DmxReadout } from "./_readout.js";
9
10
  import * as React from "react";
@@ -54,8 +55,9 @@ const DmxStrip = React.forwardRef(function DmxStrip({ className, cells = DEFAULT
54
55
  const valueElementRef = React.useRef(null);
55
56
  const [hover, setHover] = React.useState(null);
56
57
  const portal = useCuePortalProps();
57
- const reduced = usePrefersReducedMotion();
58
- const animating = simulate && !reduced;
58
+ const prefersReduced = usePrefersReducedMotion();
59
+ const held = useStill();
60
+ const animating = simulate && !(prefersReduced || held);
59
61
  useIsomorphicLayoutEffect(() => {
60
62
  const context = canvasRef.current?.getContext("2d");
61
63
  if (!context) return;
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { usePrefersReducedMotion } from "../instruments/_motion.js";
4
+ import { useStill } from "../system/still.js";
4
5
  import * as React from "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/elements/animated-number.tsx
@@ -71,7 +72,9 @@ const GROUPED = (value) => value.toLocaleString("en-US");
71
72
  */
72
73
  const AnimatedNumber = React.forwardRef(function AnimatedNumber({ value, duration = 400, format = GROUPED, className, ...elementProps }, ref) {
73
74
  const target = Number.isFinite(value) ? value : 0;
74
- const reduced = usePrefersReducedMotion();
75
+ const prefersReduced = usePrefersReducedMotion();
76
+ const held = useStill();
77
+ const reduced = prefersReduced || held;
75
78
  const [shown, setShown] = React.useState(target);
76
79
  const painted = React.useRef(target);
77
80
  React.useEffect(() => {
@@ -84,7 +84,7 @@ interface ReplayTransport {
84
84
  state: ReplayState;
85
85
  /** Whether the clock is running. Always `false` under reduced motion. */
86
86
  playing: boolean;
87
- /** Whether the reader asked for reduced motion, in which case nothing is ever scheduled. */
87
+ /** Whether the reader asked for reduced motion, or the subtree is held still (`StillProvider`): either way nothing is ever scheduled. */
88
88
  reduced: boolean;
89
89
  /** The current rate multiplier. */
90
90
  rate: number;
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { usePrefersReducedMotion } from "../instruments/_motion.js";
4
+ import { useStill } from "../system/still.js";
3
5
  import { Chip } from "../primitives/chip.js";
4
6
  import { IconButton } from "../primitives/icon-button.js";
5
7
  import { Slider } from "../forms/slider.js";
6
- import { usePrefersReducedMotion } from "../instruments/_motion.js";
7
8
  import * as React from "react";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
10
  //#region src/elements/replay.tsx
@@ -119,7 +120,9 @@ function useReplay(script, options = {}) {
119
120
  const last = count - 1;
120
121
  const starts = React.useMemo(() => startsOf(frames), [frames]);
121
122
  const duration = starts[Math.max(0, last)] ?? 0;
122
- const reduced = usePrefersReducedMotion();
123
+ const prefersReduced = usePrefersReducedMotion();
124
+ const held = useStill();
125
+ const reduced = prefersReduced || held;
123
126
  const seat = clamp(startAt ?? 0, last);
124
127
  const playable = count > 1 && duration > 0;
125
128
  const [index, setIndex] = React.useState(() => seat);
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { usePrefersReducedMotion } from "../instruments/_motion.js";
4
+ import { useStill } from "../system/still.js";
4
5
  import { field, paper } from "./surfaces.js";
5
6
  import { useCallback, useEffect, useRef, useState } from "react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -22,7 +23,9 @@ const APPEND_MS = 1300;
22
23
  * />
23
24
  */
24
25
  function ScrollAnchor({ messages, paused = false, onSettled, className, ...props }) {
25
- const reduced = usePrefersReducedMotion();
26
+ const prefersReduced = usePrefersReducedMotion();
27
+ const held = useStill();
28
+ const reduced = prefersReduced || held;
26
29
  const viewportRef = useRef(null);
27
30
  const [count, setCount] = useState(INITIAL_COUNT);
28
31
  const [pinned, setPinned] = useState(true);
package/dist/index.d.ts CHANGED
@@ -33,6 +33,11 @@ import { ScrollableTabsList, ScrollableTabsListProps, Tabs, TabsListProps, TabsP
33
33
  import { TitleBar, TitleBarProps } from "./chrome/title-bar.js";
34
34
  import { Tree, TreeProps, TreeVisibility, TreeVisibilityToggle, TreeVisibilityToggleProps } from "./chrome/tree.js";
35
35
  import { Toolbar, ToolbarButtonProps, ToolbarGroupProps, ToolbarRootProps, ToolbarSeparatorProps } from "./chrome/toolbar.js";
36
+ import { AnnouncementBar, AnnouncementBarAction, AnnouncementBarProps } from "./chrome/announcement-bar.js";
37
+ import { Hero, HeroProps } from "./chrome/hero.js";
38
+ import { Keyword, KeywordProps } from "./chrome/keyword.js";
39
+ import { LogoStrip, LogoStripProps } from "./chrome/logo-strip.js";
40
+ import { StatBand, StatBandProps, StatBandStat } from "./chrome/stat-band.js";
36
41
  import "./chrome/index.js";
37
42
  import { FormControlSize } from "./forms/_chassis-size.js";
38
43
  import { ControlVariantProps, bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants } from "./forms/_chassis.js";
@@ -67,6 +72,11 @@ import { BrandAssetProps, BrandSize, BrandTone } from "./brand/_chassis.js";
67
72
  import { CueLogotype, CueLogotypeProps } from "./brand/cue-logotype.js";
68
73
  import { CueMark, CueMarkProps } from "./brand/cue-mark.js";
69
74
  import { Plussie, PlussieExpression, PlussieProps } from "./brand/plussie.js";
75
+ import { GlossObject, GlossObjectProps } from "./brand/gloss-object.js";
76
+ import { Halftone, HalftoneProps } from "./brand/halftone.js";
77
+ import { Motif, MotifProps, MotifVariant } from "./brand/motif.js";
78
+ import { ParticleMark, ParticleMarkProps } from "./brand/particle-mark.js";
79
+ import { Ribbon, RibbonProps } from "./brand/ribbon.js";
70
80
  import "./brand/index.js";
71
81
  import { AudienceIcon, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, CliToolIcon, FolderIcon, McpServerIcon, SkillIcon, StackIcon, StacksMatrixIcon } from "./icons/containers.js";
72
82
  import "./icons/index.js";
@@ -135,5 +145,7 @@ import { ThemeRegistry } from "./system/vocabulary.js";
135
145
  import { useDensities, useFonts, useThemes } from "./system/theme-registry.js";
136
146
  import { ControlSize, useControlHeight, useDensity } from "./system/use-density.js";
137
147
  import { useTheme } from "./system/use-theme.js";
148
+ import { StillProvider, StillProviderProps, useStill } from "./system/still.js";
149
+ import { FontScope, FontScopeProps } from "./system/font-scope.js";
138
150
  import { DEFAULT_PAINT, DEFAULT_STYLE_SET, DensityEntry, DensityLevel, FontEntry, FontName, Mode, PAINTS, Paint, STYLE_SETS, StyleSet, ThemeManifest, ThemeName } from "./system/index.js";
139
- 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, 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, Footer, type FooterProps, type FormControlSize, Frames, type FramesHeight, type FramesItemProps, type FramesLayout, type FramesRootProps, Grid, type GridColumns, type GridProps, GroupBar, type GroupBarItem, type GroupBarProps, type GroupBarTone, 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, Ledger, type LedgerEmptyProps, type LedgerGroupProps, type LedgerRootProps, type LedgerTierProps, Link, type LinkProps, 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, 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, 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, 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, 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, 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, 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, useSidebar, useTheme, useThemes, useToast };
151
+ 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, 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, 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, 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, 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, useSidebar, useStill, useTheme, useThemes, useToast };
package/dist/index.js CHANGED
@@ -1,6 +1,12 @@
1
1
  import { CueLogotype } from "./brand/cue-logotype.js";
2
2
  import { CueMark } from "./brand/cue-mark.js";
3
3
  import { Plussie } from "./brand/plussie.js";
4
+ import { GlossObject } from "./brand/gloss-object.js";
5
+ import { Halftone } from "./brand/halftone.js";
6
+ import { StillProvider, useStill } from "./system/still.js";
7
+ import { ParticleMark } from "./brand/particle-mark.js";
8
+ import { Ribbon } from "./brand/ribbon.js";
9
+ import { Motif } from "./brand/motif.js";
4
10
  import { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, agentColor, agentColorStyle } from "./chat/agent-color.js";
5
11
  import { AgentPile } from "./chat/agent-pile.js";
6
12
  import { Checkbox, CheckboxGroup } from "./forms/checkbox.js";
@@ -51,6 +57,12 @@ import { ScrollableTabsList, Tabs } from "./chrome/tabs.js";
51
57
  import { TitleBar } from "./chrome/title-bar.js";
52
58
  import { Tree, TreeVisibilityToggle } from "./chrome/tree.js";
53
59
  import { Toolbar } from "./chrome/toolbar.js";
60
+ import { AnnouncementBar } from "./chrome/announcement-bar.js";
61
+ import { Hero } from "./chrome/hero.js";
62
+ import { Keyword } from "./chrome/keyword.js";
63
+ import { LogoStrip } from "./chrome/logo-strip.js";
64
+ import { Stat } from "./instruments/stat.js";
65
+ import { StatBand } from "./chrome/stat-band.js";
54
66
  import { Autocomplete } from "./forms/autocomplete.js";
55
67
  import { ButtonGroup } from "./forms/button-group.js";
56
68
  import { Combobox } from "./forms/combobox.js";
@@ -83,7 +95,6 @@ import { Meter } from "./instruments/meter.js";
83
95
  import { Progress } from "./instruments/progress.js";
84
96
  import { SeamCell, SeamGrid } from "./instruments/seam-grid.js";
85
97
  import { Sparkline } from "./instruments/sparkline.js";
86
- import { Stat } from "./instruments/stat.js";
87
98
  import { Table, TableScrollRegion } from "./instruments/table.js";
88
99
  import { TerminalFrame } from "./instruments/terminal-frame.js";
89
100
  import { TwoStepButton } from "./instruments/two-step-button.js";
@@ -120,5 +131,6 @@ import { Kbd } from "./primitives/kbd.js";
120
131
  import { Skeleton } from "./primitives/skeleton.js";
121
132
  import { useControlHeight, useDensity } from "./system/use-density.js";
122
133
  import { useTheme } from "./system/use-theme.js";
134
+ import { FontScope } from "./system/font-scope.js";
123
135
  import { DEFAULT_PAINT, DEFAULT_STYLE_SET, PAINTS, STYLE_SETS } from "./system/index.js";
124
- export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, Accordion, AgentPile, AlertDialog, 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, Footer, Frames, Grid, GroupBar, HoverCard, IconButton, InfoTip, Input, InputGroup, Inspector, Item, Kbd, Ledger, Link, McpServerIcon, Menubar, Message, MessageList, Meter, MultiSelect, NavigationMenu, NumberField, OTPField, OVERLAY_SIDE_OFFSET, PAINTS, PageShell, Pagination, Panel, PanelHeader, PasswordInput, Plussie, Popover, Preview, Progress, Radio, RadioGroup, Rating, 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, StatusBar, StatusDot, Stepper, Switch, TAB_FADE_PX, TREE_GUIDE_GLYPHS, Table, TableScrollRegion, Tabs, TagsInput, TerminalFrame, 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, useSidebar, useTheme, useThemes, useToast };
136
+ 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, ParticleMark, PasswordInput, Plussie, Popover, Preview, Progress, Radio, RadioGroup, Rating, 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, 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, useSidebar, useStill, useTheme, useThemes, useToast };
@@ -1,3 +1,4 @@
1
+ import { Stat } from "./stat.js";
1
2
  import { activateRowFromClick, activateRowFromKeyDown } from "./_data-row.js";
2
3
  import { AppWindowFrame } from "./app-window-frame.js";
3
4
  import { CopyButton } from "./copy-button.js";
@@ -10,7 +11,6 @@ import { Meter } from "./meter.js";
10
11
  import { Progress } from "./progress.js";
11
12
  import { SeamCell, SeamGrid } from "./seam-grid.js";
12
13
  import { Sparkline } from "./sparkline.js";
13
- import { Stat } from "./stat.js";
14
14
  import { Table, TableScrollRegion } from "./table.js";
15
15
  import { TerminalFrame } from "./terminal-frame.js";
16
16
  import { TwoStepButton } from "./two-step-button.js";
@@ -12,7 +12,7 @@ import * as React from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  //#region src/instruments/stat.tsx
14
14
  const VALUE_TONE_CLASSES = {
15
- neutral: "text-fg",
15
+ neutral: "text-[color:var(--cue-style-stat-numeral-ink,var(--cue-fg))]",
16
16
  accent: "text-accent",
17
17
  ok: "text-ok",
18
18
  busy: "text-busy",
@@ -1,10 +1,11 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { mulberry32, usePrefersReducedMotion } from "./_motion.js";
4
+ import { useStill } from "../system/still.js";
3
5
  import { LABEL_INK_SUBTLE } from "../system/_style-label-ink.js";
4
6
  import { LABEL_SIZE } from "../system/_style-label-size.js";
5
7
  import { CopyButton } from "./copy-button.js";
6
8
  import { toRem } from "./_rem.js";
7
- import { mulberry32, usePrefersReducedMotion } from "./_motion.js";
8
9
  import * as React from "react";
9
10
  import { jsx, jsxs } from "react/jsx-runtime";
10
11
  //#region src/instruments/terminal-frame.tsx
@@ -76,7 +77,9 @@ function finalLines(script) {
76
77
  * <TerminalFrame simulate={SCRIPT} />
77
78
  */
78
79
  const TerminalFrame = React.forwardRef(function TerminalFrame({ className, title, lines, prompt = "$", copy = false, copyValue, simulate, height, children, ...elementProps }, ref) {
79
- const reduced = usePrefersReducedMotion();
80
+ const prefersReduced = usePrefersReducedMotion();
81
+ const held = useStill();
82
+ const reduced = prefersReduced || held;
80
83
  const [transcript, setTranscript] = React.useState(IDLE);
81
84
  React.useEffect(() => {
82
85
  if (simulate === void 0) {
@@ -15,9 +15,11 @@ const COLUMN_CLASSES = {
15
15
  /**
16
16
  * The auto-filling track. The measure travels as a custom property rather than
17
17
  * as an arbitrary value, so the track definition is one static class the
18
- * scanner always sees instead of a fresh one per call site.
18
+ * scanner always sees instead of a fresh one per call site. The minimum is
19
+ * capped at the grid's own width, so a column narrower than `minItemWidth` (a
20
+ * phone) gets one full-width track instead of one that overflows it.
19
21
  */
20
- const AUTO_FILL_CLASS = "grid-cols-[repeat(auto-fill,minmax(var(--cue-grid-min),1fr))]";
22
+ const AUTO_FILL_CLASS = "grid-cols-[repeat(auto-fill,minmax(min(var(--cue-grid-min),100%),1fr))]";
21
23
  /**
22
24
  * Two-dimensional layout: equal columns, or as many as fit.
23
25
  *
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
4
- import { usePublish, useRead } from "../system/published.js";
5
- import { AmbientThemeContext, DensityContext, PaintContext, RootAxesContext, StyleSetContext, rootAxes, useFollowedAxes, useRestateReady } from "../system/density.js";
6
- import { OverridesContext } from "../system/overrides.js";
7
- import { NO_PAIRING_SEED, PairingSeedContext, ThemeContext } from "../system/theme-provider.js";
4
+ import { useRead } from "../system/published.js";
5
+ import { DensityContext, PaintContext, StyleSetContext, useFollowedAxes, useRestateReady } from "../system/density.js";
6
+ import { ThemeContext } from "../system/theme-provider.js";
8
7
  import { GROUND_CLASSES } from "./_ground.js";
9
8
  import { STAGE_MARKS } from "../system/_style-stage-marks.js";
9
+ import { StageScope, stageAttributes } from "../system/_stage-scope.js";
10
10
  import * as React from "react";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
12
  //#region src/layout/preview.tsx
@@ -212,190 +212,6 @@ function effectiveBounds(options, available) {
212
212
  };
213
213
  }
214
214
  /**
215
- * The attributes the stage carries — and, when nothing is asked, none at all.
216
- *
217
- * Inheriting is the *absence* of attributes, which is why every branch below
218
- * is conditional. Three branches add a second attribute, each for a reason in
219
- * the stylesheets rather than in taste.
220
- *
221
- * A theme's light block is the compound selector
222
- * `[data-theme="t"][data-mode="light"]`, so a mode with no theme restates the
223
- * page's theme on the same element. Read the other way, a theme with no mode
224
- * repeats the page's mode. Otherwise the stage would match the theme's dark
225
- * block under a light page, while every popup opened on it came up light:
226
- * popups are stamped from the context `StageScope` publishes, which carries
227
- * the page's mode.
228
- *
229
- * A theme's density overrides are addressed through `data-cue-theme`, the
230
- * stamp `<Density>` writes, so a density names the nearest theme the same way.
231
- *
232
- * A stage that ends up naming a theme and no rung — its own theme, or the
233
- * page's restated beside a mode (`scoped`, below) — restates the rung in force
234
- * around it, as `data-density` with the theme as `data-cue-theme` (spec
235
- * 2026-09-26-looks-fidelity §4.1.1). A theme's rung retunes are keyed on the
236
- * theme and the rung on one element, or a rung below the theme, so a stage that
237
- * re-themes with no `data-density` of its own inherits the rung already
238
- * resolved against the PAGE's theme, and its own theme's retune of that rung
239
- * never applies. `/looks` opens every stage this way: a theme and no rung. It
240
- * is what a nested `ThemeProvider` that names a theme already does — theme,
241
- * rung and mode together. The rung is the one `DensityContext` carries: `null`
242
- * outside every provider, where nothing is restated, and never `useDensity()`'s
243
- * `compact` fallback, which would invent one.
244
- *
245
- * The style set adds no second attribute, and that is the difference worth
246
- * writing down beside the three that do: a `[data-style]` block is a single
247
- * attribute selector naming no other axis, so a set stamped alone matches on
248
- * its own.
249
- *
250
- * But a stage that re-themes, re-modes or re-faces restates the set and the pack
251
- * in force around it (`around`), for a reason in custom properties rather than
252
- * in selectors. Their blocks declare names whose values read those axes — a
253
- * pack's stroke stops are the theme's borders, a set's band rule and ground are
254
- * the theme's border and surface — and a custom property's `var()`s are
255
- * substituted where it is declared. Declared only on the page, they arrive at
256
- * the stage already resolved against the page's theme and pairing; restated on
257
- * the stage, beside its own `data-theme` or `data-font`, they resolve against
258
- * those. A rung alone changes no ink and restates nothing. `around` is `null`
259
- * until the stage may restate: under a root that persists, not before the stage
260
- * has mounted, when the set and pack in force are the root's props rather than
261
- * the visitor's (see `useRestateReady`).
262
- *
263
- * The page's mode and rung, restated beside a stage theme — and the page's
264
- * theme, restated beside a stage mode or as a stage rung's `data-cue-theme` —
265
- * wait for the same mount on the same terms (tracking plan F13): under a
266
- * persisting root each is the root's, whose value on the server is its prop
267
- * while `<html>` carries the visitor's. So until then `followed` holds it back,
268
- * and `data-cue-follows` names it instead — the theme stylesheets' blocks each
269
- * have a twin keyed on `<html>`'s value and that marker (a followed rung
270
- * included: the base rung's twin in `axes.css`, and each theme's retune of it
271
- * keyed on the stage's own `data-theme`), and a rung node with no
272
- * `data-cue-theme` is reached by the rung rules' structural form, so the stage
273
- * paints the visitor's theme, mode and rung from the first frame (see
274
- * `useFollowedAxes`). A theme, mode or rung the stage names, or one named
275
- * between it and the root, is stamped as it always was. A followed rung takes
276
- * its `data-cue-theme` with it: the stamp addresses a `data-density` on the
277
- * same element, and there is none to address until the rung is stamped.
278
- */
279
- function stageAttributes(asked, page, around, aroundDensity, followed) {
280
- const attributes = {};
281
- const scoped = asked.theme ?? (asked.mode === void 0 ? null : page?.theme ?? null);
282
- if (scoped !== null && (asked.theme !== void 0 || !followed.theme)) attributes["data-theme"] = scoped;
283
- const moded = asked.mode ?? (asked.theme === void 0 ? void 0 : page?.mode);
284
- if (moded !== void 0 && !followed.mode) attributes["data-mode"] = moded;
285
- if (asked.density !== void 0) {
286
- attributes["data-density"] = asked.density;
287
- const nearest = asked.theme ?? page?.theme ?? null;
288
- if (nearest !== null && (asked.theme !== void 0 || !followed.theme)) attributes["data-cue-theme"] = nearest;
289
- } else if (scoped !== null && aroundDensity !== null && !followed.density) {
290
- attributes["data-density"] = aroundDensity;
291
- if (asked.theme !== void 0 || !followed.theme) attributes["data-cue-theme"] = scoped;
292
- }
293
- if (followed.marker !== null) attributes["data-cue-follows"] = followed.marker;
294
- if (asked.font !== void 0) attributes["data-font"] = asked.font;
295
- if (asked.styleSet !== void 0) attributes["data-style"] = asked.styleSet;
296
- if (asked.paint !== void 0) attributes["data-paint"] = asked.paint;
297
- const restates = around !== null && (scoped !== null || moded !== void 0 || asked.font !== void 0);
298
- if (restates && asked.styleSet === void 0 && around.styleSet !== null) attributes["data-style"] = around.styleSet;
299
- if (restates && asked.paint === void 0 && around.paint !== null) attributes["data-paint"] = around.paint;
300
- return attributes;
301
- }
302
- /**
303
- * The contexts the stage republishes, so an overlay opened on it follows it.
304
- *
305
- * `useCuePortalProps()` stamps a portal container from `ThemeContext` and
306
- * `DensityContext`; a popup mounts on `<body>` and inherits nothing from the
307
- * stage's DOM. So the stage's subtree reads a theme context with the stage's
308
- * theme and mode, and a density context with the stage's rung. The tools and
309
- * footer are outside this subtree, so what they open follows the page. A theme
310
- * the provider did not register leaves `manifest` null, which is what
311
- * `useTheme()` already reports for a name nobody registered.
312
- *
313
- * The style set travels with the density for the same reason and by the same
314
- * route: `useCuePortalProps()` stamps a portal container from `StyleSetContext`,
315
- * and a popup opened on the stage inherits nothing from the stage's DOM.
316
- *
317
- * And the pairing travels in the theme context, because that is where the
318
- * portal stamp reads `data-font` from (`theme?.font`). It used not to: the
319
- * stage stamped `data-font` on its own element and republished nothing, so a
320
- * popover opened on a `plex` stage came up in the root's pairing — a limit the
321
- * `font` prop's docblock stated rather than a rule anybody chose. A pairing on
322
- * the stage is the stage's, exactly as its theme is; `setFont` read here still
323
- * drives the root, because the pairing's setter has no island form.
324
- */
325
- function StageScope({ theme, mode, density, font, styleSet, paint, children }) {
326
- const outer = useRead(ThemeContext);
327
- const outerOverrides = useRead(OverridesContext);
328
- const outerDensity = useRead(DensityContext);
329
- const outerAmbient = useRead(AmbientThemeContext);
330
- const outerStyleSet = useRead(StyleSetContext);
331
- const outerPaint = useRead(PaintContext);
332
- const value = React.useMemo(() => {
333
- if (outer === null || theme === void 0 && mode === void 0 && font === void 0) return outer;
334
- const scoped = theme ?? outer.theme;
335
- return {
336
- ...outer,
337
- theme: scoped,
338
- manifest: scoped === outer.theme ? outer.manifest : null,
339
- mode: mode ?? outer.mode,
340
- font: font ?? outer.font,
341
- resolvedMode: mode === "dark" || mode === "light" ? mode : outer.resolvedMode
342
- };
343
- }, [
344
- outer,
345
- theme,
346
- mode,
347
- font
348
- ]);
349
- const stamped = theme !== void 0 || mode !== void 0;
350
- const inputs = [
351
- theme,
352
- mode,
353
- density,
354
- font,
355
- styleSet,
356
- paint,
357
- React.useContext(ThemeContext),
358
- React.useContext(OverridesContext),
359
- React.useContext(DensityContext),
360
- React.useContext(AmbientThemeContext),
361
- React.useContext(StyleSetContext),
362
- React.useContext(PaintContext)
363
- ];
364
- const publishedAmbient = usePublish(theme ?? outerAmbient, inputs);
365
- const publishedDensity = usePublish(density ?? outerDensity, inputs);
366
- const publishedStyleSet = usePublish(styleSet ?? outerStyleSet, inputs);
367
- const publishedPaint = usePublish(paint ?? outerPaint, inputs);
368
- const publishedOverrides = usePublish(stamped ? null : outerOverrides, inputs);
369
- const publishedValue = usePublish(value, inputs);
370
- const outerPairingSeed = React.useContext(PairingSeedContext);
371
- const outerRootAxes = React.useContext(RootAxesContext);
372
- return /* @__PURE__ */ jsx(RootAxesContext.Provider, {
373
- value: rootAxes(outerRootAxes.theme && theme === void 0, outerRootAxes.mode && mode === void 0, outerRootAxes.density && density === void 0),
374
- children: /* @__PURE__ */ jsx(AmbientThemeContext.Provider, {
375
- value: publishedAmbient,
376
- children: /* @__PURE__ */ jsx(DensityContext.Provider, {
377
- value: publishedDensity,
378
- children: /* @__PURE__ */ jsx(StyleSetContext.Provider, {
379
- value: publishedStyleSet,
380
- children: /* @__PURE__ */ jsx(PaintContext.Provider, {
381
- value: publishedPaint,
382
- children: /* @__PURE__ */ jsx(OverridesContext.Provider, {
383
- value: publishedOverrides,
384
- children: /* @__PURE__ */ jsx(PairingSeedContext.Provider, {
385
- value: font === void 0 ? outerPairingSeed : NO_PAIRING_SEED,
386
- children: /* @__PURE__ */ jsx(ThemeContext.Provider, {
387
- value: publishedValue,
388
- children
389
- })
390
- })
391
- })
392
- })
393
- })
394
- })
395
- })
396
- });
397
- }
398
- /**
399
215
  * The stage's size: explicit per axis once a reader has moved it, and the size
400
216
  * the layout gives it before that — `null` on an axis, which is also what a
401
217
  * double-click returns an axis to.