@cueplusplus/ui 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2250 -0
- package/dist/agent-runtime/_glyphs.js +43 -0
- package/dist/agent-runtime/branch-picker.d.ts +45 -0
- package/dist/agent-runtime/branch-picker.js +87 -0
- package/dist/agent-runtime/index.d.ts +4 -0
- package/dist/agent-runtime/index.js +4 -0
- package/dist/agent-runtime/tool-call-card.d.ts +69 -0
- package/dist/agent-runtime/tool-call-card.js +187 -0
- package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
- package/dist/agent-runtime/use-agent-thread.js +251 -0
- package/dist/brand/_chassis.d.ts +1 -1
- package/dist/brand/cue-mark.d.ts +1 -1
- package/dist/brand/cue-mark.js +1 -1
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/message-list.d.ts +6 -0
- package/dist/chat/message-list.js +35 -0
- package/dist/chrome/_edge-scroller.js +12 -1
- package/dist/chrome/_tabs-scroll.d.ts +1 -1
- package/dist/chrome/_tabs-scroll.js +1 -1
- package/dist/chrome/app-shell.d.ts +52 -2
- package/dist/chrome/app-shell.js +80 -8
- package/dist/chrome/index.d.ts +2 -2
- package/dist/configurator/_export.js +3 -2
- package/dist/configurator/_overrides.d.ts +1 -1
- package/dist/configurator/_overrides.js +18 -6
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/_segments.js +37 -2
- package/dist/elements/activity-graph.d.ts +40 -0
- package/dist/elements/activity-graph.js +81 -0
- package/dist/elements/agent-card.d.ts +49 -0
- package/dist/elements/agent-card.js +91 -0
- package/dist/elements/agent-handoff.d.ts +24 -0
- package/dist/elements/agent-handoff.js +53 -0
- package/dist/elements/agent-mode-badge.d.ts +72 -0
- package/dist/elements/agent-mode-badge.js +110 -0
- package/dist/elements/agent-plan.d.ts +24 -0
- package/dist/elements/agent-plan.js +74 -0
- package/dist/elements/agent-status.d.ts +29 -0
- package/dist/elements/agent-status.js +46 -0
- package/dist/elements/agent-surface.d.ts +65 -0
- package/dist/elements/agent-surface.js +68 -0
- package/dist/elements/animated-number.d.ts +86 -0
- package/dist/elements/animated-number.js +118 -0
- package/dist/elements/approval-card.d.ts +40 -0
- package/dist/elements/approval-card.js +78 -0
- package/dist/elements/artifact-card.d.ts +30 -0
- package/dist/elements/artifact-card.js +58 -0
- package/dist/elements/background-inbox.d.ts +39 -0
- package/dist/elements/background-inbox.js +60 -0
- package/dist/elements/canvas-split.d.ts +77 -0
- package/dist/elements/canvas-split.js +138 -0
- package/dist/elements/chart.d.ts +41 -0
- package/dist/elements/chart.js +117 -0
- package/dist/elements/chat-panel.d.ts +46 -0
- package/dist/elements/chat-panel.js +104 -0
- package/dist/elements/checkpoint-history.d.ts +31 -0
- package/dist/elements/checkpoint-history.js +65 -0
- package/dist/elements/clamp.d.ts +90 -0
- package/dist/elements/clamp.js +109 -0
- package/dist/elements/code-diff.d.ts +42 -0
- package/dist/elements/code-diff.js +69 -0
- package/dist/elements/code-runner.d.ts +38 -0
- package/dist/elements/code-runner.js +84 -0
- package/dist/elements/command-palette.d.ts +48 -0
- package/dist/elements/command-palette.js +129 -0
- package/dist/elements/compaction-row.d.ts +63 -0
- package/dist/elements/compaction-row.js +110 -0
- package/dist/elements/comparison-card.d.ts +47 -0
- package/dist/elements/comparison-card.js +69 -0
- package/dist/elements/composer.d.ts +274 -0
- package/dist/elements/composer.js +505 -0
- package/dist/elements/computer-use.d.ts +40 -0
- package/dist/elements/computer-use.js +92 -0
- package/dist/elements/confidence-marker.d.ts +39 -0
- package/dist/elements/confidence-marker.js +64 -0
- package/dist/elements/connection-state.d.ts +29 -0
- package/dist/elements/connection-state.js +66 -0
- package/dist/elements/context-breakdown.d.ts +30 -0
- package/dist/elements/context-breakdown.js +86 -0
- package/dist/elements/context-usage.d.ts +99 -0
- package/dist/elements/context-usage.js +225 -0
- package/dist/elements/conversation-search.d.ts +48 -0
- package/dist/elements/conversation-search.js +88 -0
- package/dist/elements/cost-meter.d.ts +33 -0
- package/dist/elements/cost-meter.js +75 -0
- package/dist/elements/data-table.d.ts +31 -0
- package/dist/elements/data-table.js +67 -0
- package/dist/elements/day-separator.d.ts +34 -0
- package/dist/elements/day-separator.js +50 -0
- package/dist/elements/diagram.d.ts +34 -0
- package/dist/elements/diagram.js +75 -0
- package/dist/elements/document-reference.d.ts +37 -0
- package/dist/elements/document-reference.js +66 -0
- package/dist/elements/draft-restore.d.ts +27 -0
- package/dist/elements/draft-restore.js +54 -0
- package/dist/elements/edit-message.d.ts +36 -0
- package/dist/elements/edit-message.js +77 -0
- package/dist/elements/elements.css +459 -0
- package/dist/elements/elicitation-form.d.ts +48 -0
- package/dist/elements/elicitation-form.js +106 -0
- package/dist/elements/empty-state.d.ts +52 -0
- package/dist/elements/empty-state.js +98 -0
- package/dist/elements/end-of-turn-summary.d.ts +60 -0
- package/dist/elements/end-of-turn-summary.js +75 -0
- package/dist/elements/error-state.d.ts +29 -0
- package/dist/elements/error-state.js +55 -0
- package/dist/elements/feedback-dialog.d.ts +36 -0
- package/dist/elements/feedback-dialog.js +81 -0
- package/dist/elements/file-tree.d.ts +45 -0
- package/dist/elements/file-tree.js +84 -0
- package/dist/elements/flow-graph.d.ts +45 -0
- package/dist/elements/flow-graph.js +78 -0
- package/dist/elements/generative/chart.js +200 -0
- package/dist/elements/generative/faults.js +111 -0
- package/dist/elements/generative/icons.d.ts +41 -0
- package/dist/elements/generative/icons.js +190 -0
- package/dist/elements/generative/intrinsics.js +483 -0
- package/dist/elements/generative/spec.d.ts +110 -0
- package/dist/elements/generative/spec.js +366 -0
- package/dist/elements/generative.css +1145 -0
- package/dist/elements/generative.d.ts +144 -0
- package/dist/elements/generative.js +126 -0
- package/dist/elements/guardrail-notice.d.ts +29 -0
- package/dist/elements/guardrail-notice.js +63 -0
- package/dist/elements/image-generation.d.ts +18 -0
- package/dist/elements/image-generation.js +64 -0
- package/dist/elements/index.d.ts +116 -0
- package/dist/elements/index.js +115 -0
- package/dist/elements/inline-citation.d.ts +43 -0
- package/dist/elements/inline-citation.js +93 -0
- package/dist/elements/job-progress.d.ts +49 -0
- package/dist/elements/job-progress.js +74 -0
- package/dist/elements/launcher-bubble.d.ts +34 -0
- package/dist/elements/launcher-bubble.js +72 -0
- package/dist/elements/live-region-announcer.d.ts +130 -0
- package/dist/elements/live-region-announcer.js +230 -0
- package/dist/elements/loading-state.d.ts +27 -0
- package/dist/elements/loading-state.js +36 -0
- package/dist/elements/map-answer.d.ts +38 -0
- package/dist/elements/map-answer.js +93 -0
- package/dist/elements/markdown.d.ts +131 -0
- package/dist/elements/markdown.js +528 -0
- package/dist/elements/math-block.d.ts +51 -0
- package/dist/elements/math-block.js +70 -0
- package/dist/elements/mcp-server-panel.d.ts +41 -0
- package/dist/elements/mcp-server-panel.js +115 -0
- package/dist/elements/memory-chips.d.ts +30 -0
- package/dist/elements/memory-chips.js +43 -0
- package/dist/elements/message-actions.d.ts +38 -0
- package/dist/elements/message-actions.js +71 -0
- package/dist/elements/message-attachment.d.ts +48 -0
- package/dist/elements/message-attachment.js +63 -0
- package/dist/elements/message-branches.d.ts +25 -0
- package/dist/elements/message-branches.js +65 -0
- package/dist/elements/message-pair.d.ts +33 -0
- package/dist/elements/message-pair.js +65 -0
- package/dist/elements/message-queue.d.ts +31 -0
- package/dist/elements/message-queue.js +80 -0
- package/dist/elements/message-timing.d.ts +33 -0
- package/dist/elements/message-timing.js +37 -0
- package/dist/elements/mobile-composer.d.ts +44 -0
- package/dist/elements/mobile-composer.js +88 -0
- package/dist/elements/model-picker.d.ts +38 -0
- package/dist/elements/model-picker.js +69 -0
- package/dist/elements/number-ticker.d.ts +18 -0
- package/dist/elements/number-ticker.js +47 -0
- package/dist/elements/onboarding.d.ts +30 -0
- package/dist/elements/onboarding.js +75 -0
- package/dist/elements/permission-grant.d.ts +35 -0
- package/dist/elements/permission-grant.js +86 -0
- package/dist/elements/permission-scopes.d.ts +215 -0
- package/dist/elements/permission-scopes.js +249 -0
- package/dist/elements/prompt-library.d.ts +43 -0
- package/dist/elements/prompt-library.js +117 -0
- package/dist/elements/queue-dock.d.ts +101 -0
- package/dist/elements/queue-dock.js +132 -0
- package/dist/elements/quota-banner.d.ts +26 -0
- package/dist/elements/quota-banner.js +66 -0
- package/dist/elements/quote-reply.d.ts +44 -0
- package/dist/elements/quote-reply.js +79 -0
- package/dist/elements/range.d.ts +29 -0
- package/dist/elements/range.js +45 -0
- package/dist/elements/read-aloud.d.ts +45 -0
- package/dist/elements/read-aloud.js +75 -0
- package/dist/elements/reasoning-effort.d.ts +36 -0
- package/dist/elements/reasoning-effort.js +67 -0
- package/dist/elements/reasoning-panel.d.ts +46 -0
- package/dist/elements/reasoning-panel.js +75 -0
- package/dist/elements/recommendation-card.d.ts +45 -0
- package/dist/elements/recommendation-card.js +83 -0
- package/dist/elements/regenerate-menu.d.ts +45 -0
- package/dist/elements/regenerate-menu.js +51 -0
- package/dist/elements/replay.d.ts +217 -0
- package/dist/elements/replay.js +498 -0
- package/dist/elements/research-report.d.ts +38 -0
- package/dist/elements/research-report.js +69 -0
- package/dist/elements/retrieval-chunks.d.ts +43 -0
- package/dist/elements/retrieval-chunks.js +81 -0
- package/dist/elements/revert-dock.d.ts +159 -0
- package/dist/elements/revert-dock.js +327 -0
- package/dist/elements/reviewable-diff.d.ts +45 -0
- package/dist/elements/reviewable-diff.js +110 -0
- package/dist/elements/risk-badge.d.ts +52 -0
- package/dist/elements/risk-badge.js +91 -0
- package/dist/elements/schedule-card.d.ts +42 -0
- package/dist/elements/schedule-card.js +90 -0
- package/dist/elements/score-breakdown.d.ts +47 -0
- package/dist/elements/score-breakdown.js +82 -0
- package/dist/elements/scroll-anchor.d.ts +32 -0
- package/dist/elements/scroll-anchor.js +121 -0
- package/dist/elements/settings-panel.d.ts +52 -0
- package/dist/elements/settings-panel.js +107 -0
- package/dist/elements/shared-conversation.d.ts +39 -0
- package/dist/elements/shared-conversation.js +68 -0
- package/dist/elements/sources.d.ts +33 -0
- package/dist/elements/sources.js +61 -0
- package/dist/elements/speaker-identity.d.ts +32 -0
- package/dist/elements/speaker-identity.js +51 -0
- package/dist/elements/spec-sheet.d.ts +31 -0
- package/dist/elements/spec-sheet.js +45 -0
- package/dist/elements/stopped-run.d.ts +22 -0
- package/dist/elements/stopped-run.js +50 -0
- package/dist/elements/streaming-text.d.ts +31 -0
- package/dist/elements/streaming-text.js +45 -0
- package/dist/elements/subagent-list.d.ts +37 -0
- package/dist/elements/subagent-list.js +79 -0
- package/dist/elements/suggestions.d.ts +30 -0
- package/dist/elements/suggestions.js +36 -0
- package/dist/elements/surfaces.d.ts +85 -0
- package/dist/elements/surfaces.js +107 -0
- package/dist/elements/tail-status.d.ts +131 -0
- package/dist/elements/tail-status.js +94 -0
- package/dist/elements/terminal-block.d.ts +29 -0
- package/dist/elements/terminal-block.js +54 -0
- package/dist/elements/thinking-indicator.d.ts +18 -0
- package/dist/elements/thinking-indicator.js +36 -0
- package/dist/elements/thread-list.d.ts +35 -0
- package/dist/elements/thread-list.js +68 -0
- package/dist/elements/thread-search.d.ts +42 -0
- package/dist/elements/thread-search.js +99 -0
- package/dist/elements/timeline.d.ts +37 -0
- package/dist/elements/timeline.js +46 -0
- package/dist/elements/todo-list.d.ts +42 -0
- package/dist/elements/todo-list.js +59 -0
- package/dist/elements/tool-call.d.ts +41 -0
- package/dist/elements/tool-call.js +85 -0
- package/dist/elements/tool-error.d.ts +39 -0
- package/dist/elements/tool-error.js +76 -0
- package/dist/elements/tool-group.d.ts +45 -0
- package/dist/elements/tool-group.js +71 -0
- package/dist/elements/tool-timeline.d.ts +65 -0
- package/dist/elements/tool-timeline.js +88 -0
- package/dist/elements/trace-waterfall.d.ts +37 -0
- package/dist/elements/trace-waterfall.js +69 -0
- package/dist/elements/transcript-rules.d.ts +67 -0
- package/dist/elements/transcript-rules.js +95 -0
- package/dist/elements/turn-footer.d.ts +74 -0
- package/dist/elements/turn-footer.js +101 -0
- package/dist/elements/typing-indicator.d.ts +16 -0
- package/dist/elements/typing-indicator.js +51 -0
- package/dist/elements/verdict-row.d.ts +89 -0
- package/dist/elements/verdict-row.js +150 -0
- package/dist/elements/vocabulary.d.ts +612 -0
- package/dist/elements/vocabulary.js +611 -0
- package/dist/elements/voice-conversation.d.ts +49 -0
- package/dist/elements/voice-conversation.js +123 -0
- package/dist/elements/web-preview.d.ts +32 -0
- package/dist/elements/web-preview.js +66 -0
- package/dist/elements/web-search.d.ts +37 -0
- package/dist/elements/web-search.js +66 -0
- package/dist/elements/work-collapse.d.ts +103 -0
- package/dist/elements/work-collapse.js +131 -0
- package/dist/icons/containers.d.ts +89 -0
- package/dist/icons/containers.js +295 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +9 -7
- package/dist/index.js +3 -2
- package/dist/instruments/index.d.ts +2 -2
- package/dist/instruments/index.js +2 -2
- package/dist/instruments/table.d.ts +14 -1
- package/dist/instruments/table.js +20 -1
- package/dist/instruments/two-step-button.js +25 -6
- package/dist/layout/sidebar.d.ts +19 -1
- package/dist/layout/sidebar.js +19 -1
- package/dist/primitives/button.js +11 -1
- package/dist/primitives/chip.d.ts +34 -8
- package/dist/primitives/chip.js +97 -11
- package/dist/styles.css +11 -1
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/index.d.ts +3 -3
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +36 -8
- package/dist/system/prepaint.d.ts +20 -2
- package/dist/system/prepaint.js +39 -33
- package/dist/system/theme-provider.d.ts +13 -2
- package/dist/system/theme-provider.js +107 -26
- package/dist/system/use-density.d.ts +9 -0
- package/dist/system/use-density.js +9 -0
- package/dist/system/use-isomorphic-layout-effect.js +19 -1
- package/dist/theming/_presets.d.ts +1 -1
- package/dist/theming/_presets.js +124 -8
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +8 -4
- package/dist/theming/create-theme.js +56 -20
- package/dist/theming/serialize.d.ts +11 -2
- package/dist/theming/serialize.js +87 -9
- package/manifest/components/accordion.json +154 -0
- package/manifest/components/activity-graph.json +88 -0
- package/manifest/components/agent-card.json +120 -0
- package/manifest/components/agent-handoff.json +87 -0
- package/manifest/components/agent-mode-badge.json +84 -0
- package/manifest/components/agent-pile.json +116 -0
- package/manifest/components/agent-plan.json +67 -0
- package/manifest/components/agent-status.json +73 -0
- package/manifest/components/agent-surface.json +78 -0
- package/manifest/components/alert-dialog.json +190 -0
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-bar.json +244 -0
- package/manifest/components/app-shell.json +383 -0
- package/manifest/components/app-window-frame.json +102 -0
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/ask-box.json +209 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/autocomplete.json +197 -0
- package/manifest/components/avatar-group.json +72 -0
- package/manifest/components/avatar.json +95 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/breadcrumb.json +74 -0
- package/manifest/components/button-group.json +74 -0
- package/manifest/components/button.json +126 -0
- package/manifest/components/calendar.json +65 -0
- package/manifest/components/canvas-split-body.json +62 -0
- package/manifest/components/canvas-split-document.json +54 -0
- package/manifest/components/canvas-split-header.json +83 -0
- package/manifest/components/canvas-split-line.json +62 -0
- package/manifest/components/canvas-split-message.json +62 -0
- package/manifest/components/canvas-split-thread.json +54 -0
- package/manifest/components/canvas-split.json +60 -0
- package/manifest/components/card.json +140 -0
- package/manifest/components/carousel.json +200 -0
- package/manifest/components/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-matrix.json +173 -0
- package/manifest/components/channel-released-icon.json +52 -0
- package/manifest/components/chart-container.json +111 -0
- package/manifest/components/chart-ramp.json +72 -0
- package/manifest/components/chart-swatch.json +65 -0
- package/manifest/components/chart-tooltip-content.json +114 -0
- package/manifest/components/chart.json +93 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +51 -0
- package/manifest/components/chat-panel-composer.json +66 -0
- package/manifest/components/chat-panel-messages.json +51 -0
- package/manifest/components/chat-panel-typing.json +51 -0
- package/manifest/components/chat-panel-user-message.json +51 -0
- package/manifest/components/chat-panel.json +57 -0
- package/manifest/components/checkbox-group.json +68 -0
- package/manifest/components/checkbox.json +93 -0
- package/manifest/components/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +144 -0
- package/manifest/components/clamp.json +102 -0
- package/manifest/components/cli-tool-icon.json +52 -0
- package/manifest/components/code-diff.json +87 -0
- package/manifest/components/code-runner.json +97 -0
- package/manifest/components/collapsible.json +120 -0
- package/manifest/components/color-area.json +59 -0
- package/manifest/components/color-field.json +79 -0
- package/manifest/components/color-picker.json +175 -0
- package/manifest/components/color-slider.json +75 -0
- package/manifest/components/color-swatch.json +68 -0
- package/manifest/components/colors-section.json +66 -0
- package/manifest/components/combobox.json +198 -0
- package/manifest/components/command-palette.json +177 -0
- package/manifest/components/compaction-row.json +100 -0
- package/manifest/components/comparison-card.json +83 -0
- package/manifest/components/composer-actions.json +65 -0
- package/manifest/components/composer-attach-button.json +65 -0
- package/manifest/components/composer-attachment-chip.json +75 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +73 -0
- package/manifest/components/composer-command-item.json +79 -0
- package/manifest/components/composer-context.json +67 -0
- package/manifest/components/composer-input.json +73 -0
- package/manifest/components/composer-menu-item.json +72 -0
- package/manifest/components/composer-menu.json +79 -0
- package/manifest/components/composer-model-item.json +75 -0
- package/manifest/components/composer-model-trigger.json +75 -0
- package/manifest/components/composer-person-item.json +79 -0
- package/manifest/components/composer-send.json +80 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +68 -0
- package/manifest/components/composer-voice.json +75 -0
- package/manifest/components/composer.json +176 -0
- package/manifest/components/computer-use.json +84 -0
- package/manifest/components/confidence-marker.json +74 -0
- package/manifest/components/connection-state.json +84 -0
- package/manifest/components/container.json +60 -0
- package/manifest/components/context-breakdown.json +65 -0
- package/manifest/components/context-menu.json +121 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/copy-button.json +93 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-logotype.json +96 -0
- package/manifest/components/cue-mark.json +97 -0
- package/manifest/components/cue-portal-frame.json +55 -0
- package/manifest/components/data-table-pagination.json +83 -0
- package/manifest/components/data-table-toolbar.json +104 -0
- package/manifest/components/date-field.json +80 -0
- package/manifest/components/date-picker.json +191 -0
- package/manifest/components/date-range-picker.json +191 -0
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +144 -0
- package/manifest/components/density.json +58 -0
- package/manifest/components/description-list.json +84 -0
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/dialog.json +198 -0
- package/manifest/components/disclosure.json +109 -0
- package/manifest/components/dmx-bar.json +94 -0
- package/manifest/components/dmx-strip.json +101 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +179 -0
- package/manifest/components/dropdown-menu.json +229 -0
- package/manifest/components/edit-message.json +105 -0
- package/manifest/components/elements-command-palette.json +100 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +68 -0
- package/manifest/components/elements-timeline.json +69 -0
- package/manifest/components/elicitation-form.json +103 -0
- package/manifest/components/empty-state-composer.json +64 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +57 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/empty-state.json +90 -0
- package/manifest/components/end-of-turn-summary.json +77 -0
- package/manifest/components/env-var-input.json +150 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/export-dialog.json +84 -0
- package/manifest/components/eyebrow.json +56 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/field-description.json +63 -0
- package/manifest/components/field-error.json +77 -0
- package/manifest/components/field-label.json +63 -0
- package/manifest/components/field.json +79 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/file-upload.json +159 -0
- package/manifest/components/flow-background.json +50 -0
- package/manifest/components/flow-controls.json +50 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -0
- package/manifest/components/footer.json +112 -0
- package/manifest/components/frac.json +59 -0
- package/manifest/components/generation-loader.json +64 -0
- package/manifest/components/generative-ui.json +93 -0
- package/manifest/components/grid.json +81 -0
- package/manifest/components/group-bar.json +102 -0
- package/manifest/components/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +151 -0
- package/manifest/components/icon-button.json +88 -0
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +98 -0
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/input-group.json +91 -0
- package/manifest/components/input.json +89 -0
- package/manifest/components/item.json +129 -0
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/kbd.json +52 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/link.json +81 -0
- package/manifest/components/live-region-announcer.json +79 -0
- package/manifest/components/log-viewer.json +139 -0
- package/manifest/components/map-answer.json +83 -0
- package/manifest/components/markdown-text.json +94 -0
- package/manifest/components/math-block.json +74 -0
- package/manifest/components/mcp-server-icon.json +52 -0
- package/manifest/components/mcp-server-panel.json +87 -0
- package/manifest/components/memory-chips.json +65 -0
- package/manifest/components/menubar.json +157 -0
- package/manifest/components/message-actions.json +99 -0
- package/manifest/components/message-attachments.json +63 -0
- package/manifest/components/message-branches.json +71 -0
- package/manifest/components/message-list.json +100 -0
- package/manifest/components/message-pair.json +86 -0
- package/manifest/components/message-queue.json +74 -0
- package/manifest/components/message-timing.json +62 -0
- package/manifest/components/message.json +116 -0
- package/manifest/components/meter.json +114 -0
- package/manifest/components/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/multi-select.json +190 -0
- package/manifest/components/musical-time-input.json +113 -0
- package/manifest/components/navigation-menu.json +226 -0
- package/manifest/components/node-card.json +109 -0
- package/manifest/components/node-handle.json +69 -0
- package/manifest/components/number-field.json +107 -0
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +128 -0
- package/manifest/components/page-shell.json +96 -0
- package/manifest/components/pagination.json +92 -0
- package/manifest/components/panel-header.json +77 -0
- package/manifest/components/panel.json +71 -0
- package/manifest/components/password-input.json +119 -0
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/piano-keyboard.json +120 -0
- package/manifest/components/plussie.json +111 -0
- package/manifest/components/popover.json +193 -0
- package/manifest/components/preset-section.json +73 -0
- package/manifest/components/progress.json +95 -0
- package/manifest/components/prompt-library.json +99 -0
- package/manifest/components/queue-dock.json +110 -0
- package/manifest/components/quota-banner.json +94 -0
- package/manifest/components/quote-reply.json +105 -0
- package/manifest/components/radio-group.json +73 -0
- package/manifest/components/radio.json +80 -0
- package/manifest/components/rating.json +141 -0
- package/manifest/components/read-aloud.json +111 -0
- package/manifest/components/reasoning-effort.json +81 -0
- package/manifest/components/reasoning-panel.json +108 -0
- package/manifest/components/recommendation-card.json +107 -0
- package/manifest/components/regenerate-menu.json +89 -0
- package/manifest/components/replay-player.json +102 -0
- package/manifest/components/research-report.json +76 -0
- package/manifest/components/resizable.json +88 -0
- package/manifest/components/retrieval-chunks.json +84 -0
- package/manifest/components/revert-dock.json +150 -0
- package/manifest/components/reviewable-diff.json +93 -0
- package/manifest/components/risk-badge.json +74 -0
- package/manifest/components/row.json +109 -0
- package/manifest/components/schedule-card.json +101 -0
- package/manifest/components/score-breakdown.json +91 -0
- package/manifest/components/scroll-anchor.json +72 -0
- package/manifest/components/scroll-area.json +91 -0
- package/manifest/components/scrollable-tabs-list.json +83 -0
- package/manifest/components/scrub-input.json +200 -0
- package/manifest/components/seam-cell.json +75 -0
- package/manifest/components/seam-grid.json +75 -0
- package/manifest/components/seam-list.json +56 -0
- package/manifest/components/search-input.json +134 -0
- package/manifest/components/section-header.json +112 -0
- package/manifest/components/segmented-control.json +138 -0
- package/manifest/components/select.json +194 -0
- package/manifest/components/separator.json +53 -0
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shape-section.json +66 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/sheet.json +186 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/sidebar.json +198 -0
- package/manifest/components/signal-edge.json +56 -0
- package/manifest/components/skeleton.json +46 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/slider.json +89 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/sparkline.json +76 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/spectrum-visualizer.json +115 -0
- package/manifest/components/spinner.json +61 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stack.json +96 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +87 -0
- package/manifest/components/status-bar.json +58 -0
- package/manifest/components/status-dot.json +78 -0
- package/manifest/components/stepper.json +89 -0
- package/manifest/components/stopped-run.json +81 -0
- package/manifest/components/streaming-text.json +71 -0
- package/manifest/components/sub.json +44 -0
- package/manifest/components/subagent-list.json +88 -0
- package/manifest/components/suggestions.json +84 -0
- package/manifest/components/sup.json +44 -0
- package/manifest/components/swap-label.json +71 -0
- package/manifest/components/switch.json +87 -0
- package/manifest/components/table-scroll-region.json +69 -0
- package/manifest/components/table.json +155 -0
- package/manifest/components/tabs.json +145 -0
- package/manifest/components/tags-input.json +190 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/terminal-frame.json +119 -0
- package/manifest/components/textarea.json +76 -0
- package/manifest/components/theme-configurator.json +124 -0
- package/manifest/components/theme-provider.json +134 -0
- package/manifest/components/thinking-indicator.json +63 -0
- package/manifest/components/thread-list.json +76 -0
- package/manifest/components/thread-search.json +90 -0
- package/manifest/components/threshold-rail.json +160 -0
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/time-field.json +80 -0
- package/manifest/components/timeline-ruler.json +139 -0
- package/manifest/components/timeline.json +115 -0
- package/manifest/components/title-bar.json +82 -0
- package/manifest/components/toast.json +130 -0
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +106 -0
- package/manifest/components/toggle.json +109 -0
- package/manifest/components/token-editor.json +90 -0
- package/manifest/components/tool-call-card.json +200 -0
- package/manifest/components/tool-call.json +119 -0
- package/manifest/components/tool-error.json +114 -0
- package/manifest/components/tool-group.json +83 -0
- package/manifest/components/tool-timeline.json +119 -0
- package/manifest/components/toolbar.json +163 -0
- package/manifest/components/tooltip.json +164 -0
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/tree-visibility-toggle.json +84 -0
- package/manifest/components/tree.json +140 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/two-step-button.json +113 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/universe-grid.json +127 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +124 -0
- package/manifest/components/verdict-row.json +91 -0
- package/manifest/components/voice-conversation.json +109 -0
- package/manifest/components/web-preview.json +87 -0
- package/manifest/components/web-search.json +92 -0
- package/manifest/components/work-collapse.json +102 -0
- package/manifest/manifest.json +4779 -0
- package/manifest/tokens.json +159 -0
- package/package.json +54 -5
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScrollAnchor",
|
|
3
|
+
"slug": "scroll-anchor",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Streaming never steals your scroll position; a pill offers the way back down.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "messages",
|
|
14
|
+
"type": "ScrollAnchorMessage[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Conversation messages appended over time inside the scroll viewport."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "paused",
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": "false",
|
|
24
|
+
"description": "Freezes the scene where it is; replay happens by remounting."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onSettled",
|
|
28
|
+
"type": "(() => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called once every message has landed and the viewport is pinned."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"messages\" | \"paused\" | \"onSettled\"\n> & {\n /** Conversation messages appended over time inside the scroll viewport. */\n messages: ScrollAnchorMessage[];\n /** Freezes the scene where it is; replay happens by remounting. */\n paused?: boolean;\n /** Called once every message has landed and the viewport is pinned. */\n onSettled?: () => void;\n}"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg-muted",
|
|
43
|
+
"--cue-radius-overlay",
|
|
44
|
+
"--cue-surface-1",
|
|
45
|
+
"--cue-text-ui"
|
|
46
|
+
],
|
|
47
|
+
"summary": "Streaming never steals your scroll position; a pill offers the way back down.",
|
|
48
|
+
"examples": [
|
|
49
|
+
{
|
|
50
|
+
"title": "Usage",
|
|
51
|
+
"code": "import { ScrollAnchor } from \"@cueplusplus/ui/elements\";\n\n<ScrollAnchor\n messages={[\n { role: \"user\", text: \"Keep scrolling pinned?\" },\n { role: \"assistant\", text: \"Only when you are already at the bottom.\" },\n ]}\n/>",
|
|
52
|
+
"language": "tsx"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"status": "todo-docs",
|
|
56
|
+
"url": "/docs/components/scroll-anchor",
|
|
57
|
+
"mdUrl": "/docs/components/scroll-anchor.md",
|
|
58
|
+
"jsonUrl": "/r/components/scroll-anchor.json",
|
|
59
|
+
"specimens": [
|
|
60
|
+
{
|
|
61
|
+
"title": "ScrollAnchor",
|
|
62
|
+
"group": "elements-thread",
|
|
63
|
+
"components": [
|
|
64
|
+
"ScrollAnchor"
|
|
65
|
+
],
|
|
66
|
+
"code": "<Specimens>\n <Specimen label=\"arriving\">\n <ScrollAnchor messages={ARRIVING} />\n </Specimen>\n <Specimen label=\"paused at the top\">\n <ScrollAnchor messages={ARRIVING} paused />\n </Specimen>\n</Specimens>",
|
|
67
|
+
"note": "The rule every transcript needs and few get: streaming may only move the viewport if you were already at the bottom of it. Scroll up to read something and the answer keeps arriving behind you; a pill counts what landed and takes you back down. It is the family's one element that runs a clock of its own — the turns append on a timer so the behaviour can be seen standing still.",
|
|
68
|
+
"interaction": "the pill is a button. Both scrolls are CSS `scroll-smooth`, not `scrollTo({ behavior })`, because only the declarative one can be withdrawn: `motion-reduce:scroll-auto` makes them instant, and the timer stops outright, painting the finished transcript in one go."
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"todo": true
|
|
72
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScrollArea",
|
|
3
|
+
"slug": "scroll-area",
|
|
4
|
+
"group": "chrome",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A scrolling region with the system's own scrollbar instead of the platform's.\n\nWraps Base UI's `ScrollArea`, which keeps native scrolling (and therefore\nnative momentum, keyboard and trackpad behaviour) and only re-skins the bar.\nThe frame must be given a bounded height by the caller — `h-full` inside a\nflex parent, or an explicit height — or there is nothing to scroll.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "className",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Extra classes for the frame. Give it a height, or nothing will scroll."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "children",
|
|
19
|
+
"type": "ReactNode",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "The scrolling content."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "orientation",
|
|
26
|
+
"type": "\"both\" | \"horizontal\" | \"vertical\"",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "vertical",
|
|
29
|
+
"description": "Which axes may scroll. Defaults to `\"vertical\"`."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "viewportClassName",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Extra classes for the scrolling viewport (padding belongs here)."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "keepScrollbarsMounted",
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "false",
|
|
43
|
+
"description": "Keep the scrollbar tracks mounted even when the content fits. Use for a\npanel whose content grows and shrinks, where a track appearing and\ndisappearing would reflow everything beside it."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "viewportRef",
|
|
47
|
+
"type": "Ref<HTMLDivElement>",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Ref to the scrolling element itself — for virtualizers and scroll restore."
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"typeReferences": [
|
|
54
|
+
"Omit<BaseScrollArea.Root.Props, \"className\">"
|
|
55
|
+
],
|
|
56
|
+
"subcomponents": [],
|
|
57
|
+
"parts": [],
|
|
58
|
+
"variants": {},
|
|
59
|
+
"defaultVariants": {},
|
|
60
|
+
"tokensUsed": [
|
|
61
|
+
"--cue-accent",
|
|
62
|
+
"--cue-border-strong",
|
|
63
|
+
"--cue-space-3",
|
|
64
|
+
"--cue-space-4"
|
|
65
|
+
],
|
|
66
|
+
"summary": "A scrolling region with the system's own scrollbar instead of the platform's.",
|
|
67
|
+
"examples": [
|
|
68
|
+
{
|
|
69
|
+
"title": "Usage",
|
|
70
|
+
"code": "<ScrollArea className=\"h-64\" viewportClassName=\"p-(--cue-space-4)\">\n {cues.map((c) => <Row key={c.id}>{c.name}</Row>)}\n</ScrollArea>",
|
|
71
|
+
"language": "tsx"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"status": "todo-docs",
|
|
75
|
+
"url": "/docs/components/scroll-area",
|
|
76
|
+
"mdUrl": "/docs/components/scroll-area.md",
|
|
77
|
+
"jsonUrl": "/r/components/scroll-area.json",
|
|
78
|
+
"specimens": [
|
|
79
|
+
{
|
|
80
|
+
"title": "ScrollArea",
|
|
81
|
+
"group": "chrome",
|
|
82
|
+
"components": [
|
|
83
|
+
"ScrollArea"
|
|
84
|
+
],
|
|
85
|
+
"code": "<ScrollArea className=\"h-[9rem] w-full max-w-[24rem] rounded-(--radius-surface) border border-border\">\n <div className=\"flex flex-col gap-(--cue-space-2) p-(--cue-space-4)\">\n {Array.from({ length: 16 }, (_, index) => (\n <span\n key={index}\n className=\"font-mono text-(length:--cue-text-ui) text-fg-muted tabular-nums\"\n >\n channel {String(index + 1).padStart(3, \"0\")} · {index * 6} %\n </span>\n ))}\n </div>\n</ScrollArea>",
|
|
86
|
+
"note": "A themed scroller in either axis, so an overflowing panel does not fall back to the platform bar.",
|
|
87
|
+
"interaction": "the thumb fades in on hover over the area and stays while dragging."
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"todo": true
|
|
91
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScrollableTabsList",
|
|
3
|
+
"slug": "scrollable-tabs-list",
|
|
4
|
+
"group": "chrome",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A {@link TabsList} that scrolls when its tabs do not fit, and says so.\n\nUse instead of `Tabs.List` wherever the tab count can outgrow the container:\na plain flex row silently clips its labels (\"SETTINGS\" rendering as \"INGS\"),\nwhich reads as a layout bug rather than as \"scroll me\".\n\nThe affordance is two things, and it needs both. The mask fades the content\nat whichever edge still hides tabs; the chevron buttons are the visible half,\nbecause what sits at an overflowing edge is usually the gap *between* two\ntabs and fading empty space produces nothing anyone can see. The chevrons\ndouble as the control for anyone without a horizontal-scroll device.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "className",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Extra classes for the strip."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "containerClassName",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Classes for the outer frame (background, rim). It spans the full width even\nwhile the strip inside it is scrolled."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "activeValue",
|
|
26
|
+
"type": "any",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "The active tab's value. When it changes, that tab is scrolled into view — a\ntab selected in code (a deep link, a keyboard shortcut) can be off-screen."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"TabsListProps"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-accent",
|
|
41
|
+
"--cue-border",
|
|
42
|
+
"--cue-chrome-toolbar",
|
|
43
|
+
"--cue-control-md",
|
|
44
|
+
"--cue-edge-fade",
|
|
45
|
+
"--cue-fg",
|
|
46
|
+
"--cue-fg-muted",
|
|
47
|
+
"--cue-font-mono",
|
|
48
|
+
"--cue-icon-sm",
|
|
49
|
+
"--cue-radius-control",
|
|
50
|
+
"--cue-space-1",
|
|
51
|
+
"--cue-space-2",
|
|
52
|
+
"--cue-space-4",
|
|
53
|
+
"--cue-space-5",
|
|
54
|
+
"--cue-surface-1",
|
|
55
|
+
"--cue-surface-2",
|
|
56
|
+
"--cue-text-ui"
|
|
57
|
+
],
|
|
58
|
+
"summary": "A {@link TabsList} that scrolls when its tabs do not fit, and says so.",
|
|
59
|
+
"examples": [
|
|
60
|
+
{
|
|
61
|
+
"title": "Usage",
|
|
62
|
+
"code": "<Tabs.Root defaultValue={view}>\n <ScrollableTabsList activeValue={view}>\n {views.map((v) => <Tabs.Tab key={v} value={v}>{v}</Tabs.Tab>)}\n </ScrollableTabsList>\n</Tabs.Root>",
|
|
63
|
+
"language": "tsx"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"status": "todo-docs",
|
|
67
|
+
"url": "/docs/components/scrollable-tabs-list",
|
|
68
|
+
"mdUrl": "/docs/components/scrollable-tabs-list.md",
|
|
69
|
+
"jsonUrl": "/r/components/scrollable-tabs-list.json",
|
|
70
|
+
"specimens": [
|
|
71
|
+
{
|
|
72
|
+
"title": "ScrollableTabsList",
|
|
73
|
+
"group": "chrome",
|
|
74
|
+
"components": [
|
|
75
|
+
"ScrollableTabsList"
|
|
76
|
+
],
|
|
77
|
+
"code": "<Tabs.Root\n value={scrollTab}\n onValueChange={setScrollTab}\n className=\"w-full max-w-[24rem]\"\n>\n <ScrollableTabsList activeValue={scrollTab ?? undefined}>\n {SCROLL_TABS.map((label) => (\n <Tabs.Tab key={label} value={label}>\n {label}\n </Tabs.Tab>\n ))}\n </ScrollableTabsList>\n</Tabs.Root>",
|
|
78
|
+
"note": "The same list when it does not fit: a mask fade at each overflowing edge, plus chevron buttons.",
|
|
79
|
+
"interaction": "the chevrons appear only on the side that actually overflows."
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"todo": true
|
|
83
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScrubInput",
|
|
3
|
+
"slug": "scrub-input",
|
|
4
|
+
"group": "forms",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A number you scrub: drag up to raise it, down to lower it, click to type it.\n\nThe console's answer to `<input type=\"number\">`. Native spinners are two 4px\narrows that only appear on hover — unusable at this density and invisible on\ntouch — while a slider costs 200px of width to say one number. Dragging on the\nnumber itself costs nothing and is the interaction every audio and lighting\ntool has converged on: pointer capture so the cursor may leave the box, Shift\nfor fine adjustment, `cursor-ns-resize` to advertise the axis.\n\nClick-to-type is not a fallback, it is the other half of the control: a\ngesture is for *approximately*, typing is for *exactly*, and a value you can\nonly reach by dragging is a value you cannot enter from a cue sheet.\n\n`role=\"spinbutton\"` is what makes any of this reachable without a pointer —\narrow keys step, Page keys jump ten, Home/End go to the bounds — and it is why\nthe resting element is not an `<input>`: a spinbutton announces its value,\nwhere a text box would announce its editable string on every drag frame.\n\nThe `onChange`/`onCommit` split is the same undo-coalescing contract as\n{@link Slider }: one drag is one undo entry, not two hundred.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "value",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The value. Always controlled — a scrub is a stream of edits, not a state to lose."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "onChange",
|
|
19
|
+
"type": "(value: number) => void",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Called with every new value: each drag frame, each arrow-key step, and the\ncommitted result of a typed edit. Not a DOM change event."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "onLiveDrag",
|
|
26
|
+
"type": "((value: number) => void)",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Called only for values produced by a drag, for hosts that throttle live writes."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "onDragStart",
|
|
33
|
+
"type": "(() => void)",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Called once when a drag actually begins — after the click threshold, not on press."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "onDragEnd",
|
|
40
|
+
"type": "(() => void)",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "Called once when a drag ends."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "onCommit",
|
|
47
|
+
"type": "((value: number) => void)",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Called once per finished gesture: pointer-up after a drag, each key step, a\ncommitted typed value. Hang undo entries, network writes and persistence\nhere — `onChange` fires dozens of times per drag."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "min",
|
|
54
|
+
"type": "number",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": "Number.NEGATIVE_INFINITY",
|
|
57
|
+
"description": "Lower bound. Defaults to `-Infinity`."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "max",
|
|
61
|
+
"type": "number",
|
|
62
|
+
"required": false,
|
|
63
|
+
"defaultValue": "Number.POSITIVE_INFINITY",
|
|
64
|
+
"description": "Upper bound. Defaults to `Infinity`."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "step",
|
|
68
|
+
"type": "number",
|
|
69
|
+
"required": false,
|
|
70
|
+
"defaultValue": "1",
|
|
71
|
+
"description": "Grid the value snaps to. Defaults to `1`."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "precision",
|
|
75
|
+
"type": "number",
|
|
76
|
+
"required": false,
|
|
77
|
+
"defaultValue": null,
|
|
78
|
+
"description": "Decimal places shown. Defaults to whatever `step` implies."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "unit",
|
|
82
|
+
"type": "string",
|
|
83
|
+
"required": false,
|
|
84
|
+
"defaultValue": null,
|
|
85
|
+
"description": "Suffix drawn after the number — `%`, `s`, `dB`."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "units",
|
|
89
|
+
"type": "readonly string[]",
|
|
90
|
+
"required": false,
|
|
91
|
+
"defaultValue": null,
|
|
92
|
+
"description": "The units this value can be expressed in. With more than one the suffix\nbecomes a button that cycles through them and reports via `onUnitChange`."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "onUnitChange",
|
|
96
|
+
"type": "((unit: string) => void)",
|
|
97
|
+
"required": false,
|
|
98
|
+
"defaultValue": null,
|
|
99
|
+
"description": "Called with the next unit when the suffix is clicked."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "size",
|
|
103
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
104
|
+
"required": false,
|
|
105
|
+
"defaultValue": "md",
|
|
106
|
+
"description": "Rung of the control ladder. Defaults to `\"md\"`."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "disabled",
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"required": false,
|
|
112
|
+
"defaultValue": "false",
|
|
113
|
+
"description": "Refuse dragging, typing and keyboard steps."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "aria-label",
|
|
117
|
+
"type": "string",
|
|
118
|
+
"required": false,
|
|
119
|
+
"defaultValue": null,
|
|
120
|
+
"description": "Accessible name for the control."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "aria-labelledby",
|
|
124
|
+
"type": "string",
|
|
125
|
+
"required": false,
|
|
126
|
+
"defaultValue": null,
|
|
127
|
+
"description": "Id of the element naming the control."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "className",
|
|
131
|
+
"type": "string",
|
|
132
|
+
"required": false,
|
|
133
|
+
"defaultValue": null,
|
|
134
|
+
"description": "Extra classes for the control."
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"typeReferences": [
|
|
138
|
+
"Omit<\n React.ComponentPropsWithoutRef<\"div\">,\n \"onChange\" | \"defaultValue\" | \"onDragStart\" | \"onDragEnd\"\n >"
|
|
139
|
+
],
|
|
140
|
+
"subcomponents": [],
|
|
141
|
+
"parts": [],
|
|
142
|
+
"variants": {},
|
|
143
|
+
"defaultVariants": {},
|
|
144
|
+
"tokensUsed": [
|
|
145
|
+
"--cue-accent",
|
|
146
|
+
"--cue-border",
|
|
147
|
+
"--cue-control-lg",
|
|
148
|
+
"--cue-control-md",
|
|
149
|
+
"--cue-control-sm",
|
|
150
|
+
"--cue-danger",
|
|
151
|
+
"--cue-fg",
|
|
152
|
+
"--cue-fg-subtle",
|
|
153
|
+
"--cue-font-mono",
|
|
154
|
+
"--cue-radius-control",
|
|
155
|
+
"--cue-space-2",
|
|
156
|
+
"--cue-space-3",
|
|
157
|
+
"--cue-space-4",
|
|
158
|
+
"--cue-space-5",
|
|
159
|
+
"--cue-sunken",
|
|
160
|
+
"--cue-text-body",
|
|
161
|
+
"--cue-text-label",
|
|
162
|
+
"--cue-text-ui"
|
|
163
|
+
],
|
|
164
|
+
"summary": "A number you drag to change and click to type.",
|
|
165
|
+
"examples": [
|
|
166
|
+
{
|
|
167
|
+
"title": "Usage",
|
|
168
|
+
"code": "<ScrubInput aria-label=\"Intensity\" value={level} onChange={setLevel} onCommit={pushUndo} />\n<ScrubInput aria-label=\"Fade\" value={fade} onChange={setFade} step={0.1} unit=\"s\" min={0} />",
|
|
169
|
+
"language": "tsx"
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"status": "stable",
|
|
173
|
+
"url": "/docs/components/scrub-input",
|
|
174
|
+
"mdUrl": "/docs/components/scrub-input.md",
|
|
175
|
+
"jsonUrl": "/r/components/scrub-input.json",
|
|
176
|
+
"whenToUse": [
|
|
177
|
+
"A bounded number adjusted by feel: level, angle, tempo, opacity.",
|
|
178
|
+
"Anywhere a native number input's spinners are too small to hit, which at console density is everywhere."
|
|
179
|
+
],
|
|
180
|
+
"whenNotToUse": [
|
|
181
|
+
"A value with no useful gesture, like an id or a port. Use `Input`.",
|
|
182
|
+
"A range whose extent has to be visible. Use `Slider`."
|
|
183
|
+
],
|
|
184
|
+
"commonMistakes": [
|
|
185
|
+
"Treating every live change as a commit. `onChange` fires through the drag; `onCommit` fires once on release, and that is the undo boundary.",
|
|
186
|
+
"Omitting `min` and `max`, which leaves the spinbutton without bounds for assistive tech."
|
|
187
|
+
],
|
|
188
|
+
"specimens": [
|
|
189
|
+
{
|
|
190
|
+
"title": "ScrubInput",
|
|
191
|
+
"group": "forms",
|
|
192
|
+
"components": [
|
|
193
|
+
"ScrubInput"
|
|
194
|
+
],
|
|
195
|
+
"code": "<Specimens>\n <Specimen label=\"value\">\n <ScrubInput\n aria-label=\"Gain\"\n value={gain}\n onChange={setGain}\n min={0}\n max={100}\n unit=\"%\"\n />\n </Specimen>\n <Specimen label=\"units\">\n <ScrubInput\n aria-label=\"Fade\"\n value={gain}\n onChange={setGain}\n min={0}\n max={100}\n units={[\"%\", \"dB\"]}\n />\n </Specimen>\n <Specimen label=\"disabled\">\n <ScrubInput aria-label=\"Gain, disabled\" value={gain} onChange={setGain} disabled />\n </Specimen>\n</Specimens>",
|
|
196
|
+
"note": "Drag the value the way a DAW does: pointer capture, `ns-resize`, shift for fine. Click to type instead. Reports live values while dragging and exactly one `onCommit` on release.",
|
|
197
|
+
"interaction": "arrow keys step, Home and End jump to the bounds; it is a `spinbutton`, so the value is spoken."
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SeamCell",
|
|
3
|
+
"slug": "seam-cell",
|
|
4
|
+
"group": "instruments",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "One filled cell of a {@link SeamGrid} — or of the Phase 1 `SeamList`.\n\nThe fill is the load-bearing part: an unfilled cell lets the container's\nborder colour through everywhere, not just at the gap, and the seam\ndisappears into a solid block.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "ground",
|
|
12
|
+
"type": "\"bg\" | \"sunken\" | \"surface-1\" | \"surface-2\" | \"surface-3\"",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": "surface-1",
|
|
15
|
+
"description": "Which rung of the elevation ladder to fill with. Defaults to `\"surface-1\"`."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "interactive",
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "false",
|
|
22
|
+
"description": "Add the hover feedback of a clickable cell. Put the control inside it."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "flush",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "false",
|
|
29
|
+
"description": "Drop the built-in padding — for a cell that holds a chart or a canvas."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-bg",
|
|
41
|
+
"--cue-border",
|
|
42
|
+
"--cue-radius-surface",
|
|
43
|
+
"--cue-space-5",
|
|
44
|
+
"--cue-sunken",
|
|
45
|
+
"--cue-surface-1",
|
|
46
|
+
"--cue-surface-2",
|
|
47
|
+
"--cue-surface-3"
|
|
48
|
+
],
|
|
49
|
+
"summary": "One filled cell of a {@link SeamGrid} — or of the Phase 1 `SeamList`.",
|
|
50
|
+
"examples": [
|
|
51
|
+
{
|
|
52
|
+
"title": "Usage",
|
|
53
|
+
"code": "<SeamCell ground=\"sunken\" flush><Sparkline values={series} /></SeamCell>",
|
|
54
|
+
"language": "tsx"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"status": "todo-docs",
|
|
58
|
+
"url": "/docs/components/seam-cell",
|
|
59
|
+
"mdUrl": "/docs/components/seam-cell.md",
|
|
60
|
+
"jsonUrl": "/r/components/seam-cell.json",
|
|
61
|
+
"specimens": [
|
|
62
|
+
{
|
|
63
|
+
"title": "SeamGrid / SeamCell",
|
|
64
|
+
"group": "instruments",
|
|
65
|
+
"components": [
|
|
66
|
+
"SeamGrid",
|
|
67
|
+
"SeamCell"
|
|
68
|
+
],
|
|
69
|
+
"code": "<SeamGrid columns={4} bordered className=\"w-full max-w-[36rem]\">\n {[\"bg\", \"sunken\", \"surface-1\", \"surface-2\"].map((ground) => (\n <SeamCell\n key={ground}\n ground={ground as \"bg\" | \"sunken\" | \"surface-1\" | \"surface-2\"}\n className=\"p-(--cue-space-4) text-center font-mono text-(length:--cue-text-label) text-fg-subtle\"\n >\n {ground}\n </SeamCell>\n ))}\n <SeamCell interactive className=\"p-(--cue-space-4) text-center font-mono text-(length:--cue-text-label)\">\n interactive\n </SeamCell>\n <SeamCell flush className=\"p-(--cue-space-4) text-center font-mono text-(length:--cue-text-label)\">\n flush\n </SeamCell>\n</SeamGrid>",
|
|
70
|
+
"note": "The 1px-gap hairline idiom as a two-dimensional component: the grid's own background shows through the gaps.",
|
|
71
|
+
"interaction": "`interactive` cells take a hover ground and a focus ring."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"todo": true
|
|
75
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SeamGrid",
|
|
3
|
+
"slug": "seam-grid",
|
|
4
|
+
"group": "instruments",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "The seam idiom as a component: cells separated by hairlines, no borders.\n\nA grid whose `gap` is 1px over the border colour. Every cell paints its own\nground, so the only place the container shows through is the gap — which\nreads as a hairline between neighbours, aligns perfectly at every corner, and\nnever doubles up. This is snuffle's signature primitive; it was inlined at\neighteen call sites before it was a component.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "columns",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Fixed column count. Ignored when {@link SeamGridProps.min} is set."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "min",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Minimum cell width in px at the 16px root. Switches the track to\n`auto-fit`, so the grid reflows without a media query."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "bordered",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "false",
|
|
29
|
+
"description": "Draw a hairline rim around the whole grid as well as between the cells."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-bg",
|
|
41
|
+
"--cue-border",
|
|
42
|
+
"--cue-radius-surface",
|
|
43
|
+
"--cue-space-5",
|
|
44
|
+
"--cue-sunken",
|
|
45
|
+
"--cue-surface-1",
|
|
46
|
+
"--cue-surface-2",
|
|
47
|
+
"--cue-surface-3"
|
|
48
|
+
],
|
|
49
|
+
"summary": "The seam idiom as a component: cells separated by hairlines, no borders.",
|
|
50
|
+
"examples": [
|
|
51
|
+
{
|
|
52
|
+
"title": "Usage",
|
|
53
|
+
"code": "<SeamGrid columns={3}>\n <SeamCell>001</SeamCell>\n <SeamCell>002</SeamCell>\n <SeamCell>003</SeamCell>\n</SeamGrid>\n// Reflowing, no media query:\n<SeamGrid min={180} bordered>{cells}</SeamGrid>",
|
|
54
|
+
"language": "tsx"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"status": "todo-docs",
|
|
58
|
+
"url": "/docs/components/seam-grid",
|
|
59
|
+
"mdUrl": "/docs/components/seam-grid.md",
|
|
60
|
+
"jsonUrl": "/r/components/seam-grid.json",
|
|
61
|
+
"specimens": [
|
|
62
|
+
{
|
|
63
|
+
"title": "SeamGrid / SeamCell",
|
|
64
|
+
"group": "instruments",
|
|
65
|
+
"components": [
|
|
66
|
+
"SeamGrid",
|
|
67
|
+
"SeamCell"
|
|
68
|
+
],
|
|
69
|
+
"code": "<SeamGrid columns={4} bordered className=\"w-full max-w-[36rem]\">\n {[\"bg\", \"sunken\", \"surface-1\", \"surface-2\"].map((ground) => (\n <SeamCell\n key={ground}\n ground={ground as \"bg\" | \"sunken\" | \"surface-1\" | \"surface-2\"}\n className=\"p-(--cue-space-4) text-center font-mono text-(length:--cue-text-label) text-fg-subtle\"\n >\n {ground}\n </SeamCell>\n ))}\n <SeamCell interactive className=\"p-(--cue-space-4) text-center font-mono text-(length:--cue-text-label)\">\n interactive\n </SeamCell>\n <SeamCell flush className=\"p-(--cue-space-4) text-center font-mono text-(length:--cue-text-label)\">\n flush\n </SeamCell>\n</SeamGrid>",
|
|
70
|
+
"note": "The 1px-gap hairline idiom as a two-dimensional component: the grid's own background shows through the gaps.",
|
|
71
|
+
"interaction": "`interactive` cells take a hover ground and a focus ring."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"todo": true
|
|
75
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SeamList",
|
|
3
|
+
"slug": "seam-list",
|
|
4
|
+
"group": "chrome",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "A list whose separators are gaps, not borders.\n\nThe container is filled with the border colour and its children are spaced\n`1px` apart; each child paints its own opaque fill, so what shows through the\ngap is a perfect hairline that can never double up with a row's own border or\ndisagree with it at a rounded corner.\n\nPair with `<Row seam>`. Use it where rows are cards in their own right (a\ncue list, a fixture list); use a plain `Panel` + `Row` where they are lines\nof one table.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [],
|
|
10
|
+
"typeReferences": [
|
|
11
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
12
|
+
],
|
|
13
|
+
"subcomponents": [],
|
|
14
|
+
"parts": [],
|
|
15
|
+
"variants": {},
|
|
16
|
+
"defaultVariants": {},
|
|
17
|
+
"tokensUsed": [
|
|
18
|
+
"--cue-accent",
|
|
19
|
+
"--cue-bg",
|
|
20
|
+
"--cue-border",
|
|
21
|
+
"--cue-fg",
|
|
22
|
+
"--cue-font-mono",
|
|
23
|
+
"--cue-pad-row-x",
|
|
24
|
+
"--cue-pad-row-y",
|
|
25
|
+
"--cue-radius-surface",
|
|
26
|
+
"--cue-space-3",
|
|
27
|
+
"--cue-surface-2",
|
|
28
|
+
"--cue-text-ui"
|
|
29
|
+
],
|
|
30
|
+
"summary": "A list whose separators are gaps, not borders.",
|
|
31
|
+
"examples": [
|
|
32
|
+
{
|
|
33
|
+
"title": "Usage",
|
|
34
|
+
"code": "<SeamList>\n <Row seam>Cue 1</Row>\n <Row seam>Cue 2</Row>\n</SeamList>",
|
|
35
|
+
"language": "tsx"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"status": "todo-docs",
|
|
39
|
+
"url": "/docs/components/seam-list",
|
|
40
|
+
"mdUrl": "/docs/components/seam-list.md",
|
|
41
|
+
"jsonUrl": "/r/components/seam-list.json",
|
|
42
|
+
"specimens": [
|
|
43
|
+
{
|
|
44
|
+
"title": "Row / SeamList",
|
|
45
|
+
"group": "chrome",
|
|
46
|
+
"components": [
|
|
47
|
+
"Row",
|
|
48
|
+
"SeamList"
|
|
49
|
+
],
|
|
50
|
+
"code": "<div className=\"grid w-full gap-(--cue-space-5) lg:grid-cols-2\">\n <Panel>\n <Row>Default row</Row>\n <Row interactive>Interactive row</Row>\n <Row interactive disabled>\n Disabled row\n </Row>\n </Panel>\n <SeamList>\n <Row seam>Seam row</Row>\n <Row seam interactive>\n Seam row, interactive\n </Row>\n <Row seam>Seam row</Row>\n </SeamList>\n</div>",
|
|
51
|
+
"note": "Hairline rows, and the 1px-gap variant where the gaps themselves are the rule.",
|
|
52
|
+
"interaction": "pass `interactive` for a hover ground and a focus ring; `disabled` dims and stops pointer events."
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"todo": true
|
|
56
|
+
}
|