@robr0/design-system 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -10
- package/components/AgentStatus/AgentStatus.css +82 -22
- package/components/AgentStatus/AgentStatus.d.ts +6 -2
- package/components/AgentStatus/AgentStatus.js +38 -6
- package/components/AiButton/AiButton.css +163 -0
- package/components/AiButton/AiButton.d.ts +36 -0
- package/components/AiButton/AiButton.js +58 -0
- package/components/ChatHeader/ChatHeader.css +35 -0
- package/components/ChatHeader/ChatHeader.d.ts +30 -0
- package/components/ChatHeader/ChatHeader.js +17 -0
- package/components/ChatMarker/ChatMarker.css +52 -0
- package/components/ChatMarker/ChatMarker.d.ts +22 -0
- package/components/ChatMarker/ChatMarker.js +18 -0
- package/components/ChatMessage/ChatMessage.css +310 -0
- package/components/ChatMessage/ChatMessage.d.ts +74 -0
- package/components/ChatMessage/ChatMessage.js +71 -0
- package/components/ChatThread/ChatThread.css +171 -0
- package/components/ChatThread/ChatThread.d.ts +41 -0
- package/components/ChatThread/ChatThread.js +174 -0
- package/components/Chip/Chip.css +27 -0
- package/components/Chip/Chip.d.ts +2 -2
- package/components/CircularButton/CircularButton.d.ts +23 -8
- package/components/CircularButton/CircularButton.js +54 -52
- package/components/CodeBlock/CodeBlock.css +2 -2
- package/components/Composer/Composer.css +163 -0
- package/components/Composer/Composer.d.ts +67 -0
- package/components/Composer/Composer.js +120 -0
- package/components/DocumentChip/DocumentChip.css +181 -0
- package/components/DocumentChip/DocumentChip.d.ts +41 -0
- package/components/DocumentChip/DocumentChip.js +78 -0
- package/components/InterruptCard/InterruptCard.css +164 -0
- package/components/InterruptCard/InterruptCard.d.ts +55 -0
- package/components/InterruptCard/InterruptCard.js +57 -0
- package/components/MessageActions/MessageActions.css +76 -0
- package/components/MessageActions/MessageActions.d.ts +38 -0
- package/components/MessageActions/MessageActions.js +33 -0
- package/components/MessageCard/MessageCard.css +112 -0
- package/components/MessageCard/MessageCard.d.ts +35 -0
- package/components/MessageCard/MessageCard.js +28 -0
- package/components/NavList/NavList.css +155 -0
- package/components/NavList/NavList.d.ts +56 -0
- package/components/NavList/NavList.js +99 -0
- package/components/PromptSuggestions/PromptSuggestions.css +87 -0
- package/components/PromptSuggestions/PromptSuggestions.d.ts +51 -0
- package/components/PromptSuggestions/PromptSuggestions.js +34 -0
- package/components/Prose/Prose.css +252 -0
- package/components/Prose/Prose.d.ts +21 -0
- package/components/Prose/Prose.js +14 -0
- package/components/Reasoning/Reasoning.css +149 -25
- package/components/Reasoning/Reasoning.d.ts +19 -0
- package/components/Reasoning/Reasoning.js +32 -3
- package/components/SourceChip/SourceChip.css +102 -0
- package/components/SourceChip/SourceChip.d.ts +32 -0
- package/components/SourceChip/SourceChip.js +31 -0
- package/components/Stat/Stat.css +2 -2
- package/components/Timeline/Timeline.css +9 -1
- package/components/ToolCall/ToolCall.css +3 -3
- package/components/registry.json +113 -1
- package/components/registry.json.d.ts +113 -1
- package/components/registry.json.js +1 -1
- package/index.d.ts +14 -0
- package/index.js +28 -0
- package/package.json +1 -1
- package/tokens/registry.json +13 -0
- package/tokens/registry.json.d.ts +13 -0
- package/tokens/registry.json.js +1 -1
- package/tokens/tokens-dark.css +13 -0
- package/tokens/tokens-light.css +43 -0
- package/tokens/tokens-primitives.css +5 -0
- package/tokens/tokens-typography.css +24 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const categories = ["actions", "ai", "charts", "data-display", "feedback", "forms", "layout", "navigation", "overlays"];
|
|
2
|
-
const components = /* @__PURE__ */ JSON.parse(`[{"name":"Accordion","label":"Accordion","slug":"accordion","description":"Collapsible content sections for organising related information.","category":"data-display","client":true},{"name":"AgentStatus","label":"Agent status","slug":"agent-status","description":"A dot-matrix indicator and status line reporting what an agent is doing right now.","category":"ai","client":true},{"name":"Alert","label":"Alert","slug":"alert","description":"Contextual feedback with status variants, optional dismiss, and compact sizing.","category":"feedback","client":false},{"name":"AlertDialog","label":"Alert dialog","slug":"alert-dialog","description":"Modal confirmation overlay with title, description, and confirm / cancel actions.","category":"overlays","client":true},{"name":"AppLayout","label":"App layout","slug":"app-layout","description":"Full-page template pairing the collapsible App sidebar with a centred content area.","category":"layout","client":true},{"name":"AppSidebar","label":"App sidebar","slug":"app-sidebar","description":"Collapsible navigation rail with accordion sub-items, category headings, and profile section.","category":"layout","client":true},{"name":"Avatar","label":"Avatar","slug":"avatar","description":"User profile image with initials and icon fallback, status indicator, and multiple sizes.","category":"data-display","client":true},{"name":"Badge","label":"Badge","slug":"badge","description":"Small inline status labels with info, positive, warning, error, and neutral variants.","category":"data-display","client":false},{"name":"Breadcrumb","label":"Breadcrumb","slug":"breadcrumb","description":"Hierarchical navigation trail showing the user's location within the site.","category":"navigation","client":false},{"name":"Button","label":"Button","slug":"button","description":"Primary and secondary button variants in default and compact sizes, with icon support and multiple states.","category":"actions","client":true},{"name":"ButtonGroup","label":"Button group","slug":"button-group","description":"Horizontal and vertical button group layouts for related actions and navigation patterns.","category":"actions","client":false},{"name":"Card","label":"Card","slug":"card","description":"Card components for previews, navigation, and token documentation, from content cards to colour swatches and typography specimens.","category":"data-display","client":true},{"name":"Carousel","label":"Carousel","slug":"carousel","description":"Sliding content viewer with navigation arrows, dot indicators, auto-play, and keyboard support.","category":"data-display","client":true},{"name":"Chart","label":"Chart","slug":"chart","description":"Data visualisation components built on Recharts. Includes bar, line, pie, and radial chart types with design-system token integration.","category":"charts","client":false},{"name":"Checkbox","label":"Checkbox","slug":"checkbox","description":"Custom checkbox with check and indeterminate states, keyboard accessible with animated transitions.","category":"forms","client":true},{"name":"Chip","label":"Chip","slug":"chip","description":"Compact pills for attributes, filters, and inline metadata.","category":"data-display","client":false},{"name":"CircularButton","label":"Circular button","slug":"circular-button","description":"Round icon button with primary and secondary variants, default and compact sizes.","category":"actions","client":false},{"name":"CodeBlock","label":"Code block","slug":"code-block","description":"Monospace code with a header and one-click copy.","category":"data-display","client":true},{"name":"ColorPicker","label":"Colour picker","slug":"color-picker","description":"Swatch trigger opening a saturation area, hue and alpha sliders, and a hex field; controlled or uncontrolled.","category":"forms","client":true},{"name":"Combobox","label":"Combobox","slug":"combobox","description":"A filterable select that narrows options as the user types, with multi-select chips, grouping, and async loading.","category":"forms","client":true},{"name":"CommandPalette","label":"Command palette","slug":"command-palette","description":"A modal Cmd+K launcher that searches a grouped command list, with keyboard navigation and shortcut hints.","category":"overlays","client":true},{"name":"ContactCard","label":"Contact card","slug":"contact-card","description":"Linked contact method with icon, label, and value.","category":"data-display","client":true},{"name":"ContextMenu","label":"Context menu","slug":"context-menu","description":"Right-click menu at the pointer with groups, sub-menus, and shortcut hints.","category":"overlays","client":true},{"name":"ContributionGraph","label":"Contribution graph","slug":"contribution-graph","description":"A year of activity, one cell per day.","category":"charts","client":false},{"name":"DateInput","label":"Date input","slug":"date-input","description":"Date input with native picker, calendar icon, label, and validation states.","category":"forms","client":true},{"name":"DatePicker","label":"Date picker","slug":"date-picker","description":"Inline calendar with month navigation, day selection, and today indicator.","category":"forms","client":true},{"name":"Dialog","label":"Dialog","slug":"dialog","description":"A general-purpose modal for focused tasks, with sizes, an optional footer, and full focus management.","category":"overlays","client":true},{"name":"Divider","label":"Divider","slug":"divider","description":"A thin rule separating stacked content, with optional inline label and vertical orientation.","category":"layout","client":false},{"name":"Drawer","label":"Drawer","slug":"drawer","description":"An edge-anchored modal panel that slides in from any side, for filter panels, detail views, and mobile navigation.","category":"overlays","client":true},{"name":"Dropdown","label":"Dropdown","slug":"dropdown","description":"Custom select dropdown with keyboard navigation, disabled options, and error states.","category":"forms","client":true},{"name":"DropdownMenu","label":"Dropdown menu","slug":"dropdown-menu","description":"Contextual menu with sections, sub-menus, keyboard shortcuts, and inset-gap hover styling.","category":"overlays","client":true},{"name":"EmptyState","label":"Empty state","slug":"empty-state","description":"The placeholder for a list, table, or search with nothing to show: icon, headline, guidance, and a next action.","category":"feedback","client":false},{"name":"EntityCard","label":"Entity card","slug":"entity-card","description":"Compact display-only card with a centred icon or image and a label, used in the Icons and Logos galleries.","category":"data-display","client":false},{"name":"Field","label":"Field","slug":"field","description":"The shared scaffolding for labelled form controls: label, required marker, helper and error text, and the ARIA wiring that ties them together.","category":"forms","client":true},{"name":"Figure","label":"Figure","slug":"figure","description":"Images with captions, in the case-study frame.","category":"data-display","client":false},{"name":"FileInput","label":"File input","slug":"file-input","description":"A click-or-drop upload zone paired with a controlled file list showing size, progress, and per-file errors.","category":"forms","client":true},{"name":"Input","label":"Input","slug":"input","description":"Text input with label, placeholder, left and right icons, helper text, and error states.","category":"forms","client":true},{"name":"Instructions","label":"Instructions","slug":"instructions","description":"Step-by-step guidance with numbered badges, connecting lines, and horizontal layout.","category":"data-display","client":false},{"name":"Kbd","label":"Kbd","slug":"kbd","description":"A keyboard key rendered as a keycap, for shortcut hints in menus and prose.","category":"data-display","client":false},{"name":"LinkList","label":"Link list","slug":"link-list","description":"Linked items with logo, label, and subtitle.","category":"data-display","client":false},{"name":"Nav","label":"Navigation","slug":"navigation","description":"Desktop and mobile navigation components including top-level nav bar, collapsed mobile bar, and hamburger slide-out menu.","category":"navigation","client":false},{"name":"Pagination","label":"Pagination","slug":"pagination","description":"Numbered page navigation for long datasets, with ellipses, disabled end arrows, and a compact readout mode.","category":"navigation","client":true},{"name":"Popover","label":"Popover","slug":"popover","description":"Contextual overlay panel with click and hover triggers, positioned relative to its anchor.","category":"overlays","client":true},{"name":"ProgressBar","label":"Progress bar","slug":"progress-bar","description":"Horizontal bar indicating completion progress, with an optional percentage label.","category":"feedback","client":false},{"name":"Quote","label":"Quote","slug":"quote","description":"Blockquotes and pull-quotes with attribution.","category":"data-display","client":false},{"name":"RadioButton","label":"Radio button","slug":"radio-button","description":"Radio button and radio group with vertical and horizontal layouts, animated dot indicator.","category":"forms","client":true},{"name":"Reasoning","label":"Reasoning","slug":"reasoning","description":"A model's thinking, disclosed behind a one-line summary and collapsed once it finishes.","category":"ai","client":true},{"name":"SectionTitle","label":"Section title","slug":"section-title","description":"Heading with a divider line and optional trailing content for organising page sections.","category":"layout","client":false},{"name":"SegmentedControl","label":"Segmented control","slug":"segmented-control","description":"Pill-style toggle between related views with keyboard navigation and icon support.","category":"actions","client":true},{"name":"SelectionCard","label":"Selection card","slug":"selection-card","description":"Large selectable option cards with radio or checkbox indicators for high-visibility choices like settings and onboarding.","category":"data-display","client":true},{"name":"Skeleton","label":"Skeleton","slug":"skeleton","description":"Placeholder loading indicators with text, circular, and rectangular variants.","category":"feedback","client":false},{"name":"Slider","label":"Slider","slug":"slider","description":"Range input for selecting a value between a minimum and maximum, in default and compact sizes.","category":"forms","client":true},{"name":"Spinner","label":"Spinner","slug":"spinner","description":"Animated circular loading indicator in three sizes and primary, neutral, or inherit variants.","category":"feedback","client":false},{"name":"Stat","label":"Stat","slug":"stat","description":"Headline metrics with labels and trend deltas.","category":"data-display","client":false},{"name":"Swatch","label":"Swatch","slug":"swatch","description":"Clickable colour tile for preset palettes and picker triggers, with a theme-aware selection ring.","category":"forms","client":false},{"name":"Table","label":"Table","slug":"table","description":"Data table with flexible cell content, striped rows, compact sizing, and support for icons, inputs, buttons, and interactive controls.","category":"data-display","client":false},{"name":"Tabs","label":"Tabs","slug":"tabs","description":"Tab navigation with underline indicator, icon support, compact size, and full-width mode.","category":"navigation","client":true},{"name":"Textarea","label":"Textarea","slug":"textarea","description":"Multi-line text input with character counter, resize control, helper text, and error states.","category":"forms","client":true},{"name":"Timeline","label":"Timeline","slug":"timeline","description":"Ordered sequences: histories and steppers.","category":"data-display","client":false},{"name":"Toast","label":"Toast","slug":"toast","description":"Temporary notification with status variants, auto-dismiss, and stacking via ToastProvider.","category":"feedback","client":true},{"name":"ToggleGroup","label":"Toggle group","slug":"toggle-group","description":"A set of two-state buttons that can be toggled on or off, supporting text and icon items.","category":"actions","client":true},{"name":"ToggleSwitch","label":"Toggle switch","slug":"toggle-switch","description":"Binary on/off toggle control with sliding thumb and check indicator, used for settings like theme switching.","category":"forms","client":true},{"name":"ToolCall","label":"Tool call","slug":"tool-call","description":"The record of one tool invocation, with its arguments and result behind a disclosure.","category":"ai","client":true},{"name":"Tooltip","label":"Tooltip","slug":"tooltip","description":"Contextual text label that appears on hover or focus with position and delay options.","category":"overlays","client":true}]`);
|
|
2
|
+
const components = /* @__PURE__ */ JSON.parse(`[{"name":"Accordion","label":"Accordion","slug":"accordion","description":"Collapsible content sections for organising related information.","category":"data-display","client":true},{"name":"AgentStatus","label":"Agent status","slug":"agent-status","description":"A dot-matrix indicator and status line reporting what an agent is doing right now.","category":"ai","client":true},{"name":"AiButton","label":"AI button","slug":"ai-button","description":"The AI entry point: icon and label on a transparent field, ringed by a slowly turning gradient and a soft glow.","category":"ai","client":true},{"name":"Alert","label":"Alert","slug":"alert","description":"Contextual feedback with status variants, optional dismiss, and compact sizing.","category":"feedback","client":false},{"name":"AlertDialog","label":"Alert dialog","slug":"alert-dialog","description":"Modal confirmation overlay with title, description, and confirm / cancel actions.","category":"overlays","client":true},{"name":"AppLayout","label":"App layout","slug":"app-layout","description":"Full-page template pairing the collapsible App sidebar with a centred content area.","category":"layout","client":true},{"name":"AppSidebar","label":"App sidebar","slug":"app-sidebar","description":"Collapsible navigation rail with accordion sub-items, category headings, and profile section.","category":"layout","client":true},{"name":"Avatar","label":"Avatar","slug":"avatar","description":"User profile image with initials and icon fallback, status indicator, and multiple sizes.","category":"data-display","client":true},{"name":"Badge","label":"Badge","slug":"badge","description":"Small inline status labels with info, positive, warning, error, and neutral variants.","category":"data-display","client":false},{"name":"Breadcrumb","label":"Breadcrumb","slug":"breadcrumb","description":"Hierarchical navigation trail showing the user's location within the site.","category":"navigation","client":false},{"name":"Button","label":"Button","slug":"button","description":"Primary and secondary button variants in default and compact sizes, with icon support and multiple states.","category":"actions","client":true},{"name":"ButtonGroup","label":"Button group","slug":"button-group","description":"Horizontal and vertical button group layouts for related actions and navigation patterns.","category":"actions","client":false},{"name":"Card","label":"Card","slug":"card","description":"Card components for previews, navigation, and token documentation, from content cards to colour swatches and typography specimens.","category":"data-display","client":true},{"name":"Carousel","label":"Carousel","slug":"carousel","description":"Sliding content viewer with navigation arrows, dot indicators, auto-play, and keyboard support.","category":"data-display","client":true},{"name":"Chart","label":"Chart","slug":"chart","description":"Data visualisation components built on Recharts. Includes bar, line, pie, and radial chart types with design-system token integration.","category":"charts","client":false},{"name":"ChatHeader","label":"Chat header","slug":"chat-header","description":"The top row of a chat surface, with the conversation title and its controls.","category":"ai","client":false},{"name":"ChatMarker","label":"Chat marker","slug":"chat-marker","description":"An inline conversation separator for date breaks and system notes.","category":"ai","client":false},{"name":"ChatMessage","label":"Chat message","slug":"chat-message","description":"A single chat turn with avatar, author, timestamp, and bubble or plain content aligned by role.","category":"ai","client":false},{"name":"ChatThread","label":"Chat thread","slug":"chat-thread","description":"A scrollable conversation column with edge fades, send anchoring, and a subtle scrollbar.","category":"ai","client":true},{"name":"Checkbox","label":"Checkbox","slug":"checkbox","description":"Custom checkbox with check and indeterminate states, keyboard accessible with animated transitions.","category":"forms","client":true},{"name":"Chip","label":"Chip","slug":"chip","description":"Compact pills for attributes, filters, and inline metadata.","category":"data-display","client":false},{"name":"CircularButton","label":"Circular button","slug":"circular-button","description":"Round icon button with primary and secondary variants, default and compact sizes.","category":"actions","client":false},{"name":"CodeBlock","label":"Code block","slug":"code-block","description":"Monospace code with a header and one-click copy.","category":"data-display","client":true},{"name":"ColorPicker","label":"Colour picker","slug":"color-picker","description":"Swatch trigger opening a saturation area, hue and alpha sliders, and a hex field; controlled or uncontrolled.","category":"forms","client":true},{"name":"Combobox","label":"Combobox","slug":"combobox","description":"A filterable select that narrows options as the user types, with multi-select chips, grouping, and async loading.","category":"forms","client":true},{"name":"CommandPalette","label":"Command palette","slug":"command-palette","description":"A modal Cmd+K launcher that searches a grouped command list, with keyboard navigation and shortcut hints.","category":"overlays","client":true},{"name":"Composer","label":"Composer","slug":"composer","description":"An auto-growing message input with send and stop states, an attachment slot, and Enter-to-send.","category":"ai","client":true},{"name":"ContactCard","label":"Contact card","slug":"contact-card","description":"Linked contact method with icon, label, and value.","category":"data-display","client":true},{"name":"ContextMenu","label":"Context menu","slug":"context-menu","description":"Right-click menu at the pointer with groups, sub-menus, and shortcut hints.","category":"overlays","client":true},{"name":"ContributionGraph","label":"Contribution graph","slug":"contribution-graph","description":"A year of activity, one cell per day.","category":"charts","client":false},{"name":"DateInput","label":"Date input","slug":"date-input","description":"Date input with native picker, calendar icon, label, and validation states.","category":"forms","client":true},{"name":"DatePicker","label":"Date picker","slug":"date-picker","description":"Inline calendar with month navigation, day selection, and today indicator.","category":"forms","client":true},{"name":"Dialog","label":"Dialog","slug":"dialog","description":"A general-purpose modal for focused tasks, with sizes, an optional footer, and full focus management.","category":"overlays","client":true},{"name":"Divider","label":"Divider","slug":"divider","description":"A thin rule separating stacked content, with optional inline label and vertical orientation.","category":"layout","client":false},{"name":"DocumentChip","label":"Document chip","slug":"document-chip","description":"A compact file reference with a type icon, name, metadata, and optional remove.","category":"ai","client":false},{"name":"Drawer","label":"Drawer","slug":"drawer","description":"An edge-anchored modal panel that slides in from any side, for filter panels, detail views, and mobile navigation.","category":"overlays","client":true},{"name":"Dropdown","label":"Dropdown","slug":"dropdown","description":"Custom select dropdown with keyboard navigation, disabled options, and error states.","category":"forms","client":true},{"name":"DropdownMenu","label":"Dropdown menu","slug":"dropdown-menu","description":"Contextual menu with sections, sub-menus, keyboard shortcuts, and inset-gap hover styling.","category":"overlays","client":true},{"name":"EmptyState","label":"Empty state","slug":"empty-state","description":"The placeholder for a list, table, or search with nothing to show: icon, headline, guidance, and a next action.","category":"feedback","client":false},{"name":"EntityCard","label":"Entity card","slug":"entity-card","description":"Compact display-only card with a centred icon or image and a label, used in the Icons and Logos galleries.","category":"data-display","client":false},{"name":"Field","label":"Field","slug":"field","description":"The shared scaffolding for labelled form controls: label, required marker, helper and error text, and the ARIA wiring that ties them together.","category":"forms","client":true},{"name":"Figure","label":"Figure","slug":"figure","description":"Images with captions, in the case-study frame.","category":"data-display","client":false},{"name":"FileInput","label":"File input","slug":"file-input","description":"A click-or-drop upload zone paired with a controlled file list showing size, progress, and per-file errors.","category":"forms","client":true},{"name":"Input","label":"Input","slug":"input","description":"Text input with label, placeholder, left and right icons, helper text, and error states.","category":"forms","client":true},{"name":"Instructions","label":"Instructions","slug":"instructions","description":"Step-by-step guidance with numbered badges, connecting lines, and horizontal layout.","category":"data-display","client":false},{"name":"InterruptCard","label":"Interrupt card","slug":"interrupt-card","description":"A human-in-the-loop checkpoint with a question from the agent and option buttons to decide.","category":"ai","client":false},{"name":"Kbd","label":"Kbd","slug":"kbd","description":"A keyboard key rendered as a keycap, for shortcut hints in menus and prose.","category":"data-display","client":false},{"name":"LinkList","label":"Link list","slug":"link-list","description":"Linked items with logo, label, and subtitle.","category":"data-display","client":false},{"name":"MessageActions","label":"Message actions","slug":"message-actions","description":"An icon-button row for message-level actions like copy, retry, and feedback.","category":"ai","client":false},{"name":"MessageCard","label":"Message card","slug":"message-card","description":"A structured rich-content card embedded in a chat message, with media, title, body, and actions.","category":"ai","client":false},{"name":"Nav","label":"Navigation","slug":"navigation","description":"Desktop top navigation bar with a brand slot, horizontal button group, and optional trailing content.","category":"navigation","client":false},{"name":"NavList","label":"Nav list","slug":"nav-list","description":"Vertical list of navigation links for drawers and menus, with three indent levels and per-row expand toggles.","category":"navigation","client":true},{"name":"Pagination","label":"Pagination","slug":"pagination","description":"Numbered page navigation for long datasets, with ellipses, disabled end arrows, and a compact readout mode.","category":"navigation","client":true},{"name":"Popover","label":"Popover","slug":"popover","description":"Contextual overlay panel with click and hover triggers, positioned relative to its anchor.","category":"overlays","client":true},{"name":"ProgressBar","label":"Progress bar","slug":"progress-bar","description":"Horizontal bar indicating completion progress, with an optional percentage label.","category":"feedback","client":false},{"name":"PromptSuggestions","label":"Prompt suggestions","slug":"prompt-suggestions","description":"A horizontal row of tappable prompt suggestions to start or steer a conversation.","category":"ai","client":false},{"name":"Prose","label":"Prose","slug":"prose","description":"Token-styled typography for rendered markdown and rich agent output.","category":"ai","client":false},{"name":"Quote","label":"Quote","slug":"quote","description":"Blockquotes and pull-quotes with attribution.","category":"data-display","client":false},{"name":"RadioButton","label":"Radio button","slug":"radio-button","description":"Radio button and radio group with vertical and horizontal layouts, animated dot indicator.","category":"forms","client":true},{"name":"Reasoning","label":"Reasoning","slug":"reasoning","description":"A model's thinking, disclosed behind a one-line summary and collapsed once it finishes.","category":"ai","client":true},{"name":"SectionTitle","label":"Section title","slug":"section-title","description":"Heading with a divider line and optional trailing content for organising page sections.","category":"layout","client":false},{"name":"SegmentedControl","label":"Segmented control","slug":"segmented-control","description":"Pill-style toggle between related views with keyboard navigation and icon support.","category":"actions","client":true},{"name":"SelectionCard","label":"Selection card","slug":"selection-card","description":"Large selectable option cards with radio or checkbox indicators for high-visibility choices like settings and onboarding.","category":"data-display","client":true},{"name":"Skeleton","label":"Skeleton","slug":"skeleton","description":"Placeholder loading indicators with text, circular, and rectangular variants.","category":"feedback","client":false},{"name":"Slider","label":"Slider","slug":"slider","description":"Range input for selecting a value between a minimum and maximum, in default and compact sizes.","category":"forms","client":true},{"name":"SourceChip","label":"Source chip","slug":"source-chip","description":"A numbered citation pill linking a claim to its source.","category":"ai","client":false},{"name":"Spinner","label":"Spinner","slug":"spinner","description":"Animated circular loading indicator in three sizes and primary, neutral, or inherit variants.","category":"feedback","client":false},{"name":"Stat","label":"Stat","slug":"stat","description":"Headline metrics with labels and trend deltas.","category":"data-display","client":false},{"name":"Swatch","label":"Swatch","slug":"swatch","description":"Clickable colour tile for preset palettes and picker triggers, with a theme-aware selection ring.","category":"forms","client":false},{"name":"Table","label":"Table","slug":"table","description":"Data table with flexible cell content, striped rows, compact sizing, and support for icons, inputs, buttons, and interactive controls.","category":"data-display","client":false},{"name":"Tabs","label":"Tabs","slug":"tabs","description":"Tab navigation with underline indicator, icon support, compact size, and full-width mode.","category":"navigation","client":true},{"name":"Textarea","label":"Textarea","slug":"textarea","description":"Multi-line text input with character counter, resize control, helper text, and error states.","category":"forms","client":true},{"name":"Timeline","label":"Timeline","slug":"timeline","description":"Ordered sequences: histories and steppers.","category":"data-display","client":false},{"name":"Toast","label":"Toast","slug":"toast","description":"Temporary notification with status variants, auto-dismiss, and stacking via ToastProvider.","category":"feedback","client":true},{"name":"ToggleGroup","label":"Toggle group","slug":"toggle-group","description":"A set of two-state buttons that can be toggled on or off, supporting text and icon items.","category":"actions","client":true},{"name":"ToggleSwitch","label":"Toggle switch","slug":"toggle-switch","description":"Binary on/off toggle control with sliding thumb and check indicator, used for settings like theme switching.","category":"forms","client":true},{"name":"ToolCall","label":"Tool call","slug":"tool-call","description":"The record of one tool invocation, with its arguments and result behind a disclosure.","category":"ai","client":true},{"name":"Tooltip","label":"Tooltip","slug":"tooltip","description":"Contextual text label that appears on hover or focus with position and delay options.","category":"overlays","client":true}]`);
|
|
3
3
|
const registry = {
|
|
4
4
|
categories,
|
|
5
5
|
components
|
package/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export * from './components/Accordion/Accordion';
|
|
7
7
|
export * from './components/AgentStatus/AgentStatus';
|
|
8
8
|
export * from './components/AgentStatus/AgentStatusPatterns';
|
|
9
|
+
export * from './components/AiButton/AiButton';
|
|
9
10
|
export * from './components/Alert/Alert';
|
|
10
11
|
export * from './components/AlertDialog/AlertDialog';
|
|
11
12
|
export * from './components/AppLayout/AppLayout';
|
|
@@ -17,6 +18,10 @@ export * from './components/Button/Button';
|
|
|
17
18
|
export * from './components/ButtonGroup/ButtonGroup';
|
|
18
19
|
export * from './components/Card/Card';
|
|
19
20
|
export * from './components/Carousel/Carousel';
|
|
21
|
+
export * from './components/ChatHeader/ChatHeader';
|
|
22
|
+
export * from './components/ChatMarker/ChatMarker';
|
|
23
|
+
export * from './components/ChatMessage/ChatMessage';
|
|
24
|
+
export * from './components/ChatThread/ChatThread';
|
|
20
25
|
export * from './components/Checkbox/Checkbox';
|
|
21
26
|
export * from './components/Chip/Chip';
|
|
22
27
|
export * from './components/CircularButton/CircularButton';
|
|
@@ -24,6 +29,7 @@ export * from './components/CodeBlock/CodeBlock';
|
|
|
24
29
|
export * from './components/ColorPicker/ColorPicker';
|
|
25
30
|
export * from './components/Combobox/Combobox';
|
|
26
31
|
export * from './components/CommandPalette/CommandPalette';
|
|
32
|
+
export * from './components/Composer/Composer';
|
|
27
33
|
export * from './components/ContactCard/ContactCard';
|
|
28
34
|
export * from './components/ContextMenu/ContextMenu';
|
|
29
35
|
export * from './components/ContributionGraph/ContributionGraph';
|
|
@@ -31,6 +37,7 @@ export * from './components/DateInput/DateInput';
|
|
|
31
37
|
export * from './components/DatePicker/DatePicker';
|
|
32
38
|
export * from './components/Dialog/Dialog';
|
|
33
39
|
export * from './components/Divider/Divider';
|
|
40
|
+
export * from './components/DocumentChip/DocumentChip';
|
|
34
41
|
export * from './components/Drawer/Drawer';
|
|
35
42
|
export * from './components/Dropdown/Dropdown';
|
|
36
43
|
export * from './components/DropdownMenu/DropdownMenu';
|
|
@@ -42,12 +49,18 @@ export * from './components/Figure/Figure';
|
|
|
42
49
|
export * from './components/FileInput/FileInput';
|
|
43
50
|
export * from './components/Input/Input';
|
|
44
51
|
export * from './components/Instructions/Instructions';
|
|
52
|
+
export * from './components/InterruptCard/InterruptCard';
|
|
45
53
|
export * from './components/Kbd/Kbd';
|
|
46
54
|
export * from './components/LinkList/LinkList';
|
|
55
|
+
export * from './components/MessageActions/MessageActions';
|
|
56
|
+
export * from './components/MessageCard/MessageCard';
|
|
47
57
|
export * from './components/Nav/Nav';
|
|
58
|
+
export * from './components/NavList/NavList';
|
|
48
59
|
export * from './components/Pagination/Pagination';
|
|
49
60
|
export * from './components/Popover/Popover';
|
|
50
61
|
export * from './components/ProgressBar/ProgressBar';
|
|
62
|
+
export * from './components/PromptSuggestions/PromptSuggestions';
|
|
63
|
+
export * from './components/Prose/Prose';
|
|
51
64
|
export * from './components/Quote/Quote';
|
|
52
65
|
export * from './components/RadioButton/RadioButton';
|
|
53
66
|
export * from './components/Reasoning/Reasoning';
|
|
@@ -56,6 +69,7 @@ export * from './components/SegmentedControl/SegmentedControl';
|
|
|
56
69
|
export * from './components/SelectionCard/SelectionCard';
|
|
57
70
|
export * from './components/Skeleton/Skeleton';
|
|
58
71
|
export * from './components/Slider/Slider';
|
|
72
|
+
export * from './components/SourceChip/SourceChip';
|
|
59
73
|
export * from './components/Spinner/Spinner';
|
|
60
74
|
export * from './components/Stat/Stat';
|
|
61
75
|
export * from './components/Swatch/Swatch';
|
package/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Accordion } from "./components/Accordion/Accordion.js";
|
|
2
2
|
import { AgentStatus } from "./components/AgentStatus/AgentStatus.js";
|
|
3
3
|
import { agentStatusPatterns } from "./components/AgentStatus/AgentStatusPatterns.js";
|
|
4
|
+
import { AiButton } from "./components/AiButton/AiButton.js";
|
|
4
5
|
import { Alert } from "./components/Alert/Alert.js";
|
|
5
6
|
import { AlertDialog } from "./components/AlertDialog/AlertDialog.js";
|
|
6
7
|
import { AppLayout } from "./components/AppLayout/AppLayout.js";
|
|
@@ -12,6 +13,10 @@ import { Button } from "./components/Button/Button.js";
|
|
|
12
13
|
import { ButtonGroup } from "./components/ButtonGroup/ButtonGroup.js";
|
|
13
14
|
import { Card } from "./components/Card/Card.js";
|
|
14
15
|
import { Carousel } from "./components/Carousel/Carousel.js";
|
|
16
|
+
import { ChatHeader } from "./components/ChatHeader/ChatHeader.js";
|
|
17
|
+
import { ChatMarker } from "./components/ChatMarker/ChatMarker.js";
|
|
18
|
+
import { ChatMessage } from "./components/ChatMessage/ChatMessage.js";
|
|
19
|
+
import { ChatThread } from "./components/ChatThread/ChatThread.js";
|
|
15
20
|
import { Checkbox, CheckboxGroup } from "./components/Checkbox/Checkbox.js";
|
|
16
21
|
import { Chip } from "./components/Chip/Chip.js";
|
|
17
22
|
import { CircularButton } from "./components/CircularButton/CircularButton.js";
|
|
@@ -19,6 +24,7 @@ import { CodeBlock } from "./components/CodeBlock/CodeBlock.js";
|
|
|
19
24
|
import { ColorPicker } from "./components/ColorPicker/ColorPicker.js";
|
|
20
25
|
import { Combobox } from "./components/Combobox/Combobox.js";
|
|
21
26
|
import { CommandPalette } from "./components/CommandPalette/CommandPalette.js";
|
|
27
|
+
import { Composer } from "./components/Composer/Composer.js";
|
|
22
28
|
import { ContactCard } from "./components/ContactCard/ContactCard.js";
|
|
23
29
|
import { ContextMenu } from "./components/ContextMenu/ContextMenu.js";
|
|
24
30
|
import { ContributionGraph } from "./components/ContributionGraph/ContributionGraph.js";
|
|
@@ -26,6 +32,7 @@ import { DateInput } from "./components/DateInput/DateInput.js";
|
|
|
26
32
|
import { DatePicker } from "./components/DatePicker/DatePicker.js";
|
|
27
33
|
import { Dialog } from "./components/Dialog/Dialog.js";
|
|
28
34
|
import { Divider } from "./components/Divider/Divider.js";
|
|
35
|
+
import { DocumentChip } from "./components/DocumentChip/DocumentChip.js";
|
|
29
36
|
import { Drawer } from "./components/Drawer/Drawer.js";
|
|
30
37
|
import { Dropdown } from "./components/Dropdown/Dropdown.js";
|
|
31
38
|
import { DropdownMenu } from "./components/DropdownMenu/DropdownMenu.js";
|
|
@@ -37,12 +44,18 @@ import { Figure } from "./components/Figure/Figure.js";
|
|
|
37
44
|
import { FileInput } from "./components/FileInput/FileInput.js";
|
|
38
45
|
import { Input } from "./components/Input/Input.js";
|
|
39
46
|
import { Instructions } from "./components/Instructions/Instructions.js";
|
|
47
|
+
import { InterruptCard } from "./components/InterruptCard/InterruptCard.js";
|
|
40
48
|
import { Kbd } from "./components/Kbd/Kbd.js";
|
|
41
49
|
import { LinkList } from "./components/LinkList/LinkList.js";
|
|
50
|
+
import { MessageActions } from "./components/MessageActions/MessageActions.js";
|
|
51
|
+
import { MessageCard } from "./components/MessageCard/MessageCard.js";
|
|
42
52
|
import { Nav } from "./components/Nav/Nav.js";
|
|
53
|
+
import { NavList } from "./components/NavList/NavList.js";
|
|
43
54
|
import { Pagination } from "./components/Pagination/Pagination.js";
|
|
44
55
|
import { Popover } from "./components/Popover/Popover.js";
|
|
45
56
|
import { ProgressBar } from "./components/ProgressBar/ProgressBar.js";
|
|
57
|
+
import { PromptSuggestions } from "./components/PromptSuggestions/PromptSuggestions.js";
|
|
58
|
+
import { Prose } from "./components/Prose/Prose.js";
|
|
46
59
|
import { Quote } from "./components/Quote/Quote.js";
|
|
47
60
|
import { RadioButton, RadioGroup } from "./components/RadioButton/RadioButton.js";
|
|
48
61
|
import { Reasoning } from "./components/Reasoning/Reasoning.js";
|
|
@@ -51,6 +64,7 @@ import { SegmentedControl } from "./components/SegmentedControl/SegmentedControl
|
|
|
51
64
|
import { SelectionCard } from "./components/SelectionCard/SelectionCard.js";
|
|
52
65
|
import { Skeleton } from "./components/Skeleton/Skeleton.js";
|
|
53
66
|
import { Slider } from "./components/Slider/Slider.js";
|
|
67
|
+
import { SourceChip } from "./components/SourceChip/SourceChip.js";
|
|
54
68
|
import { Spinner } from "./components/Spinner/Spinner.js";
|
|
55
69
|
import { Stat } from "./components/Stat/Stat.js";
|
|
56
70
|
import { Swatch } from "./components/Swatch/Swatch.js";
|
|
@@ -68,6 +82,7 @@ import { TOKEN_COUNT, TOKEN_COUNTS, tokenRegistry } from "./tokens/registry.js";
|
|
|
68
82
|
export {
|
|
69
83
|
Accordion,
|
|
70
84
|
AgentStatus,
|
|
85
|
+
AiButton,
|
|
71
86
|
Alert,
|
|
72
87
|
AlertDialog,
|
|
73
88
|
AppLayout,
|
|
@@ -80,6 +95,10 @@ export {
|
|
|
80
95
|
COMPONENT_COUNT,
|
|
81
96
|
Card,
|
|
82
97
|
Carousel,
|
|
98
|
+
ChatHeader,
|
|
99
|
+
ChatMarker,
|
|
100
|
+
ChatMessage,
|
|
101
|
+
ChatThread,
|
|
83
102
|
Checkbox,
|
|
84
103
|
CheckboxGroup,
|
|
85
104
|
Chip,
|
|
@@ -88,6 +107,7 @@ export {
|
|
|
88
107
|
ColorPicker,
|
|
89
108
|
Combobox,
|
|
90
109
|
CommandPalette,
|
|
110
|
+
Composer,
|
|
91
111
|
ContactCard,
|
|
92
112
|
ContextMenu,
|
|
93
113
|
ContributionGraph,
|
|
@@ -95,6 +115,7 @@ export {
|
|
|
95
115
|
DatePicker,
|
|
96
116
|
Dialog,
|
|
97
117
|
Divider,
|
|
118
|
+
DocumentChip,
|
|
98
119
|
Drawer,
|
|
99
120
|
Dropdown,
|
|
100
121
|
DropdownMenu,
|
|
@@ -106,12 +127,18 @@ export {
|
|
|
106
127
|
FileInput,
|
|
107
128
|
Input,
|
|
108
129
|
Instructions,
|
|
130
|
+
InterruptCard,
|
|
109
131
|
Kbd,
|
|
110
132
|
LinkList,
|
|
133
|
+
MessageActions,
|
|
134
|
+
MessageCard,
|
|
111
135
|
Nav,
|
|
136
|
+
NavList,
|
|
112
137
|
Pagination,
|
|
113
138
|
Popover,
|
|
114
139
|
ProgressBar,
|
|
140
|
+
PromptSuggestions,
|
|
141
|
+
Prose,
|
|
115
142
|
Quote,
|
|
116
143
|
RadioButton,
|
|
117
144
|
RadioGroup,
|
|
@@ -121,6 +148,7 @@ export {
|
|
|
121
148
|
SelectionCard,
|
|
122
149
|
Skeleton,
|
|
123
150
|
Slider,
|
|
151
|
+
SourceChip,
|
|
124
152
|
Spinner,
|
|
125
153
|
Stat,
|
|
126
154
|
Swatch,
|
package/package.json
CHANGED
package/tokens/registry.json
CHANGED
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
"--color-action-primary-text-active",
|
|
19
19
|
"--color-action-primary-text-secondary",
|
|
20
20
|
"--color-action-primary-text-tertiary",
|
|
21
|
+
"--color-ai-gradient-end",
|
|
22
|
+
"--color-ai-gradient-mid",
|
|
23
|
+
"--color-ai-gradient-start",
|
|
21
24
|
"--color-bg-container-border",
|
|
22
25
|
"--color-bg-container-inverse",
|
|
23
26
|
"--color-bg-container-primary",
|
|
@@ -32,6 +35,10 @@
|
|
|
32
35
|
"--color-chart-contribution-2",
|
|
33
36
|
"--color-chart-contribution-3",
|
|
34
37
|
"--color-chart-contribution-4",
|
|
38
|
+
"--color-chat-bubble-received-bg",
|
|
39
|
+
"--color-chat-bubble-received-text",
|
|
40
|
+
"--color-chat-bubble-sent-bg",
|
|
41
|
+
"--color-chat-bubble-sent-text",
|
|
35
42
|
"--color-control-thumb",
|
|
36
43
|
"--color-core-accent-amber",
|
|
37
44
|
"--color-core-accent-cobalt",
|
|
@@ -87,6 +94,7 @@
|
|
|
87
94
|
"--font-display-2-line-height",
|
|
88
95
|
"--font-display-2-size",
|
|
89
96
|
"--font-display-2-weight",
|
|
97
|
+
"--font-family-code",
|
|
90
98
|
"--font-family-primary",
|
|
91
99
|
"--font-heading-1-family",
|
|
92
100
|
"--font-heading-1-letter-spacing",
|
|
@@ -151,17 +159,22 @@
|
|
|
151
159
|
"--gap-sm-md",
|
|
152
160
|
"--gap-xl",
|
|
153
161
|
"--gap-xs",
|
|
162
|
+
"--gap-xxl",
|
|
154
163
|
"--gap-xxs",
|
|
164
|
+
"--gap-xxxl",
|
|
165
|
+
"--gap-xxxxl",
|
|
155
166
|
"--padding-lg",
|
|
156
167
|
"--padding-md",
|
|
157
168
|
"--padding-sm",
|
|
158
169
|
"--padding-sm-md",
|
|
159
170
|
"--padding-xl",
|
|
160
171
|
"--padding-xs",
|
|
172
|
+
"--padding-xxl",
|
|
161
173
|
"--padding-xxs",
|
|
162
174
|
"--padding-xxxs"
|
|
163
175
|
],
|
|
164
176
|
"radius": [
|
|
177
|
+
"--radius-composer",
|
|
165
178
|
"--radius-full",
|
|
166
179
|
"--radius-lg",
|
|
167
180
|
"--radius-md",
|
|
@@ -18,6 +18,9 @@ declare const _default: {
|
|
|
18
18
|
"--color-action-primary-text-active",
|
|
19
19
|
"--color-action-primary-text-secondary",
|
|
20
20
|
"--color-action-primary-text-tertiary",
|
|
21
|
+
"--color-ai-gradient-end",
|
|
22
|
+
"--color-ai-gradient-mid",
|
|
23
|
+
"--color-ai-gradient-start",
|
|
21
24
|
"--color-bg-container-border",
|
|
22
25
|
"--color-bg-container-inverse",
|
|
23
26
|
"--color-bg-container-primary",
|
|
@@ -32,6 +35,10 @@ declare const _default: {
|
|
|
32
35
|
"--color-chart-contribution-2",
|
|
33
36
|
"--color-chart-contribution-3",
|
|
34
37
|
"--color-chart-contribution-4",
|
|
38
|
+
"--color-chat-bubble-received-bg",
|
|
39
|
+
"--color-chat-bubble-received-text",
|
|
40
|
+
"--color-chat-bubble-sent-bg",
|
|
41
|
+
"--color-chat-bubble-sent-text",
|
|
35
42
|
"--color-control-thumb",
|
|
36
43
|
"--color-core-accent-amber",
|
|
37
44
|
"--color-core-accent-cobalt",
|
|
@@ -87,6 +94,7 @@ declare const _default: {
|
|
|
87
94
|
"--font-display-2-line-height",
|
|
88
95
|
"--font-display-2-size",
|
|
89
96
|
"--font-display-2-weight",
|
|
97
|
+
"--font-family-code",
|
|
90
98
|
"--font-family-primary",
|
|
91
99
|
"--font-heading-1-family",
|
|
92
100
|
"--font-heading-1-letter-spacing",
|
|
@@ -151,17 +159,22 @@ declare const _default: {
|
|
|
151
159
|
"--gap-sm-md",
|
|
152
160
|
"--gap-xl",
|
|
153
161
|
"--gap-xs",
|
|
162
|
+
"--gap-xxl",
|
|
154
163
|
"--gap-xxs",
|
|
164
|
+
"--gap-xxxl",
|
|
165
|
+
"--gap-xxxxl",
|
|
155
166
|
"--padding-lg",
|
|
156
167
|
"--padding-md",
|
|
157
168
|
"--padding-sm",
|
|
158
169
|
"--padding-sm-md",
|
|
159
170
|
"--padding-xl",
|
|
160
171
|
"--padding-xs",
|
|
172
|
+
"--padding-xxl",
|
|
161
173
|
"--padding-xxs",
|
|
162
174
|
"--padding-xxxs"
|
|
163
175
|
],
|
|
164
176
|
"radius": [
|
|
177
|
+
"--radius-composer",
|
|
165
178
|
"--radius-full",
|
|
166
179
|
"--radius-lg",
|
|
167
180
|
"--radius-md",
|
package/tokens/registry.json.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const categories = { "colour": ["--color-action-icon-active", "--color-action-icon-default", "--color-action-passive-bg", "--color-action-passive-bg-active", "--color-action-passive-bg-hover", "--color-action-passive-text", "--color-action-primary-bg", "--color-action-primary-bg-active", "--color-action-primary-bg-hover", "--color-action-primary-border", "--color-action-primary-border-secondary", "--color-action-primary-border-tertiary", "--color-action-primary-text", "--color-action-primary-text-active", "--color-action-primary-text-secondary", "--color-action-primary-text-tertiary", "--color-bg-container-border", "--color-bg-container-inverse", "--color-bg-container-primary", "--color-bg-container-primary-semi", "--color-bg-container-primary-transparent", "--color-bg-container-secondary", "--color-bg-container-tertiary", "--color-bg-page-inverse", "--color-bg-page-primary", "--color-chart-contribution-0", "--color-chart-contribution-1", "--color-chart-contribution-2", "--color-chart-contribution-3", "--color-chart-contribution-4", "--color-control-thumb", "--color-core-accent-amber", "--color-core-accent-cobalt", "--color-core-accent-coral", "--color-core-accent-gold", "--color-core-accent-mint", "--color-core-accent-violet", "--color-core-ui-primary", "--color-core-ui-secondary", "--color-divider", "--color-icon-primary", "--color-icon-secondary", "--color-input-bg-disabled", "--color-input-bg-primary", "--color-input-border-disabled", "--color-input-border-hover", "--color-input-border-primary", "--color-input-border-selected", "--color-input-text-disabled", "--color-input-text-inverse", "--color-input-text-placeholder", "--color-input-text-primary", "--color-scrim", "--color-status-error-bg", "--color-status-error-border", "--color-status-error-text", "--color-status-info-bg", "--color-status-info-border", "--color-status-info-text", "--color-status-neutral-bg", "--color-status-neutral-border", "--color-status-neutral-text", "--color-status-positive-bg", "--color-status-positive-border", "--color-status-positive-text", "--color-status-warning-bg", "--color-status-warning-border", "--color-status-warning-text", "--color-text-inverse", "--color-text-on-inverse", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary"], "typography": ["--font-display-1-family", "--font-display-1-letter-spacing", "--font-display-1-line-height", "--font-display-1-size", "--font-display-1-weight", "--font-display-2-family", "--font-display-2-letter-spacing", "--font-display-2-line-height", "--font-display-2-size", "--font-display-2-weight", "--font-family-primary", "--font-heading-1-family", "--font-heading-1-letter-spacing", "--font-heading-1-line-height", "--font-heading-1-size", "--font-heading-1-weight", "--font-heading-2-family", "--font-heading-2-letter-spacing", "--font-heading-2-line-height", "--font-heading-2-size", "--font-heading-2-weight", "--font-heading-3-family", "--font-heading-3-letter-spacing", "--font-heading-3-line-height", "--font-heading-3-size", "--font-heading-3-weight", "--font-mega-1-family", "--font-mega-1-letter-spacing", "--font-mega-1-line-height", "--font-mega-1-size", "--font-mega-1-weight", "--font-mega-2-family", "--font-mega-2-letter-spacing", "--font-mega-2-line-height", "--font-mega-2-size", "--font-mega-2-weight", "--font-paragraph-em-family", "--font-paragraph-em-letter-spacing", "--font-paragraph-em-line-height", "--font-paragraph-em-size", "--font-paragraph-em-weight", "--font-paragraph-family", "--font-paragraph-letter-spacing", "--font-paragraph-line-height", "--font-paragraph-size", "--font-paragraph-sm-em-family", "--font-paragraph-sm-em-letter-spacing", "--font-paragraph-sm-em-line-height", "--font-paragraph-sm-em-size", "--font-paragraph-sm-em-weight", "--font-paragraph-sm-family", "--font-paragraph-sm-letter-spacing", "--font-paragraph-sm-line-height", "--font-paragraph-sm-size", "--font-paragraph-sm-weight", "--font-paragraph-weight", "--font-sub-display-family", "--font-sub-display-letter-spacing", "--font-sub-display-line-height", "--font-sub-display-size", "--font-sub-display-weight", "--font-title-body-family", "--font-title-body-letter-spacing", "--font-title-body-line-height", "--font-title-body-size", "--font-title-body-weight"], "spacing": ["--gap-lg", "--gap-md", "--gap-sm", "--gap-sm-md", "--gap-xl", "--gap-xs", "--gap-xxs", "--padding-lg", "--padding-md", "--padding-sm", "--padding-sm-md", "--padding-xl", "--padding-xs", "--padding-xxs", "--padding-xxxs"], "radius": ["--radius-full", "--radius-lg", "--radius-md", "--radius-sm", "--radius-xl", "--radius-xs", "--radius-xxl", "--radius-xxs"], "border": ["--border-md", "--border-xs"], "shadow": ["--shadow-floating", "--shadow-modal"], "icons": ["--icon-size-lg", "--icon-size-md", "--icon-size-sm", "--icon-size-xl"], "motion": ["--motion-duration-base", "--motion-duration-deliberate", "--motion-duration-fast", "--motion-duration-loop-matrix", "--motion-duration-loop-shimmer", "--motion-duration-loop-spin", "--motion-duration-slow", "--motion-duration-slower", "--motion-ease-emphasized", "--motion-ease-entrance", "--motion-ease-linear", "--motion-ease-spring", "--motion-ease-standard"] };
|
|
1
|
+
const categories = { "colour": ["--color-action-icon-active", "--color-action-icon-default", "--color-action-passive-bg", "--color-action-passive-bg-active", "--color-action-passive-bg-hover", "--color-action-passive-text", "--color-action-primary-bg", "--color-action-primary-bg-active", "--color-action-primary-bg-hover", "--color-action-primary-border", "--color-action-primary-border-secondary", "--color-action-primary-border-tertiary", "--color-action-primary-text", "--color-action-primary-text-active", "--color-action-primary-text-secondary", "--color-action-primary-text-tertiary", "--color-ai-gradient-end", "--color-ai-gradient-mid", "--color-ai-gradient-start", "--color-bg-container-border", "--color-bg-container-inverse", "--color-bg-container-primary", "--color-bg-container-primary-semi", "--color-bg-container-primary-transparent", "--color-bg-container-secondary", "--color-bg-container-tertiary", "--color-bg-page-inverse", "--color-bg-page-primary", "--color-chart-contribution-0", "--color-chart-contribution-1", "--color-chart-contribution-2", "--color-chart-contribution-3", "--color-chart-contribution-4", "--color-chat-bubble-received-bg", "--color-chat-bubble-received-text", "--color-chat-bubble-sent-bg", "--color-chat-bubble-sent-text", "--color-control-thumb", "--color-core-accent-amber", "--color-core-accent-cobalt", "--color-core-accent-coral", "--color-core-accent-gold", "--color-core-accent-mint", "--color-core-accent-violet", "--color-core-ui-primary", "--color-core-ui-secondary", "--color-divider", "--color-icon-primary", "--color-icon-secondary", "--color-input-bg-disabled", "--color-input-bg-primary", "--color-input-border-disabled", "--color-input-border-hover", "--color-input-border-primary", "--color-input-border-selected", "--color-input-text-disabled", "--color-input-text-inverse", "--color-input-text-placeholder", "--color-input-text-primary", "--color-scrim", "--color-status-error-bg", "--color-status-error-border", "--color-status-error-text", "--color-status-info-bg", "--color-status-info-border", "--color-status-info-text", "--color-status-neutral-bg", "--color-status-neutral-border", "--color-status-neutral-text", "--color-status-positive-bg", "--color-status-positive-border", "--color-status-positive-text", "--color-status-warning-bg", "--color-status-warning-border", "--color-status-warning-text", "--color-text-inverse", "--color-text-on-inverse", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary"], "typography": ["--font-display-1-family", "--font-display-1-letter-spacing", "--font-display-1-line-height", "--font-display-1-size", "--font-display-1-weight", "--font-display-2-family", "--font-display-2-letter-spacing", "--font-display-2-line-height", "--font-display-2-size", "--font-display-2-weight", "--font-family-code", "--font-family-primary", "--font-heading-1-family", "--font-heading-1-letter-spacing", "--font-heading-1-line-height", "--font-heading-1-size", "--font-heading-1-weight", "--font-heading-2-family", "--font-heading-2-letter-spacing", "--font-heading-2-line-height", "--font-heading-2-size", "--font-heading-2-weight", "--font-heading-3-family", "--font-heading-3-letter-spacing", "--font-heading-3-line-height", "--font-heading-3-size", "--font-heading-3-weight", "--font-mega-1-family", "--font-mega-1-letter-spacing", "--font-mega-1-line-height", "--font-mega-1-size", "--font-mega-1-weight", "--font-mega-2-family", "--font-mega-2-letter-spacing", "--font-mega-2-line-height", "--font-mega-2-size", "--font-mega-2-weight", "--font-paragraph-em-family", "--font-paragraph-em-letter-spacing", "--font-paragraph-em-line-height", "--font-paragraph-em-size", "--font-paragraph-em-weight", "--font-paragraph-family", "--font-paragraph-letter-spacing", "--font-paragraph-line-height", "--font-paragraph-size", "--font-paragraph-sm-em-family", "--font-paragraph-sm-em-letter-spacing", "--font-paragraph-sm-em-line-height", "--font-paragraph-sm-em-size", "--font-paragraph-sm-em-weight", "--font-paragraph-sm-family", "--font-paragraph-sm-letter-spacing", "--font-paragraph-sm-line-height", "--font-paragraph-sm-size", "--font-paragraph-sm-weight", "--font-paragraph-weight", "--font-sub-display-family", "--font-sub-display-letter-spacing", "--font-sub-display-line-height", "--font-sub-display-size", "--font-sub-display-weight", "--font-title-body-family", "--font-title-body-letter-spacing", "--font-title-body-line-height", "--font-title-body-size", "--font-title-body-weight"], "spacing": ["--gap-lg", "--gap-md", "--gap-sm", "--gap-sm-md", "--gap-xl", "--gap-xs", "--gap-xxl", "--gap-xxs", "--gap-xxxl", "--gap-xxxxl", "--padding-lg", "--padding-md", "--padding-sm", "--padding-sm-md", "--padding-xl", "--padding-xs", "--padding-xxl", "--padding-xxs", "--padding-xxxs"], "radius": ["--radius-composer", "--radius-full", "--radius-lg", "--radius-md", "--radius-sm", "--radius-xl", "--radius-xs", "--radius-xxl", "--radius-xxs"], "border": ["--border-md", "--border-xs"], "shadow": ["--shadow-floating", "--shadow-modal"], "icons": ["--icon-size-lg", "--icon-size-md", "--icon-size-sm", "--icon-size-xl"], "motion": ["--motion-duration-base", "--motion-duration-deliberate", "--motion-duration-fast", "--motion-duration-loop-matrix", "--motion-duration-loop-shimmer", "--motion-duration-loop-spin", "--motion-duration-slow", "--motion-duration-slower", "--motion-ease-emphasized", "--motion-ease-entrance", "--motion-ease-linear", "--motion-ease-spring", "--motion-ease-standard"] };
|
|
2
2
|
const registry = {
|
|
3
3
|
categories
|
|
4
4
|
};
|
package/tokens/tokens-dark.css
CHANGED
|
@@ -33,6 +33,13 @@
|
|
|
33
33
|
/* Divider */
|
|
34
34
|
--color-divider: var(--primitive-neutral-08-semi);
|
|
35
35
|
|
|
36
|
+
/* Chat bubbles — alias the same roles as light; the underlying container
|
|
37
|
+
and text tokens carry the theme swap. */
|
|
38
|
+
--color-chat-bubble-sent-bg: var(--color-bg-container-secondary);
|
|
39
|
+
--color-chat-bubble-sent-text: var(--color-text-primary);
|
|
40
|
+
--color-chat-bubble-received-bg: var(--color-bg-container-secondary);
|
|
41
|
+
--color-chat-bubble-received-text: var(--color-text-primary);
|
|
42
|
+
|
|
36
43
|
/* Overlay & controls */
|
|
37
44
|
--color-scrim: var(--primitive-true-black-strong);
|
|
38
45
|
--color-control-thumb: var(--primitive-neutral-01);
|
|
@@ -88,6 +95,12 @@
|
|
|
88
95
|
--color-status-neutral-border: var(--primitive-neutral-06);
|
|
89
96
|
--color-status-neutral-text: var(--primitive-neutral-01);
|
|
90
97
|
|
|
98
|
+
/* AI - The gradient accent, one step brighter than light mode so the ring
|
|
99
|
+
stays luminous on dark surfaces. */
|
|
100
|
+
--color-ai-gradient-start: var(--primitive-purple-05);
|
|
101
|
+
--color-ai-gradient-mid: var(--primitive-blue-05);
|
|
102
|
+
--color-ai-gradient-end: var(--primitive-teal-05);
|
|
103
|
+
|
|
91
104
|
/* Chart - Contribution heatmap ramp (level 0 = none → level 4 = most) */
|
|
92
105
|
--color-chart-contribution-0: var(--primitive-neutral-08);
|
|
93
106
|
--color-chart-contribution-1: var(--primitive-green-10);
|
package/tokens/tokens-light.css
CHANGED
|
@@ -34,6 +34,15 @@
|
|
|
34
34
|
/* Divider */
|
|
35
35
|
--color-divider: var(--primitive-neutral-02-semi);
|
|
36
36
|
|
|
37
|
+
/* Chat bubbles — sent (the person) and received (the agent). Both alias
|
|
38
|
+
the container-secondary / text-primary pair today; they exist as their
|
|
39
|
+
own roles so chat surfaces can be re-themed later without touching the
|
|
40
|
+
container ramp. */
|
|
41
|
+
--color-chat-bubble-sent-bg: var(--color-bg-container-secondary);
|
|
42
|
+
--color-chat-bubble-sent-text: var(--color-text-primary);
|
|
43
|
+
--color-chat-bubble-received-bg: var(--color-bg-container-secondary);
|
|
44
|
+
--color-chat-bubble-received-text: var(--color-text-primary);
|
|
45
|
+
|
|
37
46
|
/* Overlay & controls */
|
|
38
47
|
--color-scrim: var(--primitive-true-black-semi);
|
|
39
48
|
--color-control-thumb: var(--primitive-neutral-00);
|
|
@@ -99,6 +108,14 @@
|
|
|
99
108
|
--color-status-neutral-border: var(--primitive-neutral-07);
|
|
100
109
|
--color-status-neutral-text: var(--primitive-neutral-08);
|
|
101
110
|
|
|
111
|
+
/* AI - The gradient accent reserved for AI entry points and surfaces.
|
|
112
|
+
Purple → blue → teal, so the AI affordance is its own signature and the
|
|
113
|
+
flat action teal keeps meaning "click here". Used as gradient stops
|
|
114
|
+
(AiButton's ring and glow), never as fills for ordinary chrome. */
|
|
115
|
+
--color-ai-gradient-start: var(--primitive-purple-06);
|
|
116
|
+
--color-ai-gradient-mid: var(--primitive-blue-06);
|
|
117
|
+
--color-ai-gradient-end: var(--primitive-teal-06);
|
|
118
|
+
|
|
102
119
|
/* Chart - Contribution heatmap ramp (level 0 = none → level 4 = most) */
|
|
103
120
|
--color-chart-contribution-0: var(--color-bg-container-primary);
|
|
104
121
|
--color-chart-contribution-1: var(--primitive-green-02);
|
|
@@ -127,6 +144,7 @@
|
|
|
127
144
|
--radius-xl: var(--primitive-radius-xl);
|
|
128
145
|
--radius-xxl: var(--primitive-radius-xxl);
|
|
129
146
|
--radius-full: var(--primitive-radius-full);
|
|
147
|
+
--radius-composer: var(--primitive-radius-composer);
|
|
130
148
|
|
|
131
149
|
--padding-xxxs: var(--primitive-padding-xxxs);
|
|
132
150
|
--padding-xxs: var(--primitive-padding-xxs);
|
|
@@ -156,4 +174,29 @@
|
|
|
156
174
|
--gap-md: var(--primitive-gap-md);
|
|
157
175
|
--gap-lg: var(--primitive-gap-lg);
|
|
158
176
|
--gap-xl: var(--primitive-gap-xl);
|
|
177
|
+
|
|
178
|
+
/* Section rhythm — page-level spacing between major blocks. These are
|
|
179
|
+
the only spacing tokens with a responsive step (see the collapse
|
|
180
|
+
block at the bottom of this file). */
|
|
181
|
+
--gap-xxl: var(--primitive-gap-xxl); /* 60px */
|
|
182
|
+
--gap-xxxl: var(--primitive-gap-xxxl); /* 80px */
|
|
183
|
+
--gap-xxxxl: var(--primitive-gap-xxxxl); /* 120px */
|
|
184
|
+
--padding-xxl: var(--primitive-padding-xxl); /* 60px */
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/* ============================================
|
|
188
|
+
RESPONSIVE COLLAPSE
|
|
189
|
+
Section-rhythm spacing steps one notch down the primitive scale at
|
|
190
|
+
768px — the token layer's only breakpoint (typography collapses at the
|
|
191
|
+
same threshold in tokens-typography.css). Component-level spacing
|
|
192
|
+
(gap/padding xl and below) never steps.
|
|
193
|
+
============================================ */
|
|
194
|
+
|
|
195
|
+
@media (max-width: 768px) {
|
|
196
|
+
[data-theme="light"], :root {
|
|
197
|
+
--gap-xxl: var(--primitive-gap-xl); /* 60 → 40 */
|
|
198
|
+
--gap-xxxl: var(--primitive-gap-xxl); /* 80 → 60 */
|
|
199
|
+
--gap-xxxxl: var(--primitive-gap-xxxl); /* 120 → 80 */
|
|
200
|
+
--padding-xxl: var(--primitive-padding-xl); /* 60 → 40 */
|
|
201
|
+
}
|
|
159
202
|
}
|
|
@@ -136,6 +136,11 @@
|
|
|
136
136
|
--primitive-radius-xl: 24px;
|
|
137
137
|
--primitive-radius-xxl: 48px;
|
|
138
138
|
--primitive-radius-full: 999px;
|
|
139
|
+
/* The composer shell's corner: concentric with the 40px send button it
|
|
140
|
+
wraps (half the button + the padding-sm ring + the border width).
|
|
141
|
+
Held as a resolved constant so consumers re-theme it like any other
|
|
142
|
+
radius step. */
|
|
143
|
+
--primitive-radius-composer: 29px;
|
|
139
144
|
|
|
140
145
|
/* Padding */
|
|
141
146
|
--primitive-padding-xxxs: 2px;
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
|
|
12
12
|
--font-family-primary: 'Nunito Sans', sans-serif;
|
|
13
13
|
|
|
14
|
+
/* The one sanctioned monospace stack — CodeBlock, ToolCall names, and
|
|
15
|
+
Prose inline code. Anything monospace references this token. */
|
|
16
|
+
--font-family-code: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas,
|
|
17
|
+
monospace;
|
|
18
|
+
|
|
14
19
|
/* ============================================
|
|
15
20
|
DISPLAY STYLES (Large headlines)
|
|
16
21
|
============================================ */
|
|
@@ -114,3 +119,22 @@
|
|
|
114
119
|
--font-paragraph-sm-em-line-height: 20px;
|
|
115
120
|
--font-paragraph-sm-em-letter-spacing: 0;
|
|
116
121
|
}
|
|
122
|
+
|
|
123
|
+
/* ============================================
|
|
124
|
+
RESPONSIVE COLLAPSE
|
|
125
|
+
The display tier steps down once, at 768px — the token layer's only
|
|
126
|
+
breakpoint. Headings and body never step; weights and letter-spacing
|
|
127
|
+
never change at any breakpoint (weight contrast is the hierarchy rule).
|
|
128
|
+
============================================ */
|
|
129
|
+
|
|
130
|
+
@media (max-width: 768px) {
|
|
131
|
+
:root {
|
|
132
|
+
--font-mega-1-size: 64px;
|
|
133
|
+
--font-mega-2-size: 56px;
|
|
134
|
+
--font-display-1-size: 48px;
|
|
135
|
+
--font-display-2-size: 40px;
|
|
136
|
+
--font-display-2-line-height: 1.05;
|
|
137
|
+
--font-sub-display-size: 24px;
|
|
138
|
+
--font-sub-display-line-height: 36px;
|
|
139
|
+
}
|
|
140
|
+
}
|