@cueplusplus/ui 0.13.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 +4028 -0
- package/LICENSE +21 -0
- package/NOTICE.md +34 -0
- package/README.md +237 -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 +54 -0
- package/dist/brand/_chassis.js +81 -0
- package/dist/brand/_geometry.js +41 -0
- package/dist/brand/cue-logotype.d.ts +29 -0
- package/dist/brand/cue-logotype.js +60 -0
- package/dist/brand/cue-mark.d.ts +30 -0
- package/dist/brand/cue-mark.js +61 -0
- package/dist/brand/index.d.ts +5 -0
- package/dist/brand/plussie.d.ts +67 -0
- package/dist/brand/plussie.js +125 -0
- package/dist/charts/_token.js +39 -0
- package/dist/charts/container.d.ts +58 -0
- package/dist/charts/container.js +77 -0
- package/dist/charts/index.d.ts +5 -0
- package/dist/charts/index.js +5 -0
- package/dist/charts/ramps.d.ts +140 -0
- package/dist/charts/ramps.js +615 -0
- package/dist/charts/theme.d.ts +112 -0
- package/dist/charts/theme.js +165 -0
- package/dist/charts/tones.d.ts +111 -0
- package/dist/charts/tones.js +127 -0
- package/dist/chat/_glyphs.js +55 -0
- package/dist/chat/agent-color.d.ts +84 -0
- package/dist/chat/agent-color.js +101 -0
- package/dist/chat/agent-pile.d.ts +55 -0
- package/dist/chat/agent-pile.js +121 -0
- package/dist/chat/ask-box.d.ts +88 -0
- package/dist/chat/ask-box.js +341 -0
- package/dist/chat/composer.d.ts +66 -0
- package/dist/chat/composer.js +144 -0
- package/dist/chat/delegation-card.d.ts +60 -0
- package/dist/chat/delegation-card.js +129 -0
- package/dist/chat/index.d.ts +8 -0
- package/dist/chat/index.js +8 -0
- package/dist/chat/message-list.d.ts +45 -0
- package/dist/chat/message-list.js +141 -0
- package/dist/chat/message.d.ts +47 -0
- package/dist/chat/message.js +108 -0
- package/dist/chrome/_band.js +54 -0
- package/dist/chrome/_drag.js +59 -0
- package/dist/chrome/_edge-scroller.d.ts +45 -0
- package/dist/chrome/_edge-scroller.js +149 -0
- package/dist/chrome/_glyphs.js +119 -0
- package/dist/chrome/_status-bar-item.js +85 -0
- package/dist/chrome/_status-bar.d.ts +15 -0
- package/dist/chrome/_status-bar.js +171 -0
- package/dist/chrome/_tabs-scroll.d.ts +67 -0
- package/dist/chrome/_tabs-scroll.js +73 -0
- package/dist/chrome/_tree.d.ts +75 -0
- package/dist/chrome/_tree.js +49 -0
- package/dist/chrome/app-bar.d.ts +103 -0
- package/dist/chrome/app-bar.js +175 -0
- package/dist/chrome/app-shell.d.ts +243 -0
- package/dist/chrome/app-shell.js +266 -0
- package/dist/chrome/band.d.ts +106 -0
- package/dist/chrome/band.js +97 -0
- package/dist/chrome/empty-state.d.ts +37 -0
- package/dist/chrome/empty-state.js +57 -0
- package/dist/chrome/eyebrow.d.ts +29 -0
- package/dist/chrome/eyebrow.js +36 -0
- package/dist/chrome/footer.d.ts +88 -0
- package/dist/chrome/footer.js +83 -0
- package/dist/chrome/index.d.ts +24 -0
- package/dist/chrome/index.js +22 -0
- package/dist/chrome/inspector.d.ts +61 -0
- package/dist/chrome/inspector.js +121 -0
- package/dist/chrome/navigation-menu.d.ts +80 -0
- package/dist/chrome/navigation-menu.js +121 -0
- package/dist/chrome/page-shell.d.ts +38 -0
- package/dist/chrome/page-shell.js +76 -0
- package/dist/chrome/panel.d.ts +55 -0
- package/dist/chrome/panel.js +67 -0
- package/dist/chrome/row.d.ts +82 -0
- package/dist/chrome/row.js +106 -0
- package/dist/chrome/scroll-area.d.ts +39 -0
- package/dist/chrome/scroll-area.js +70 -0
- package/dist/chrome/section-header.d.ts +42 -0
- package/dist/chrome/section-header.js +79 -0
- package/dist/chrome/segmented-control.d.ts +77 -0
- package/dist/chrome/segmented-control.js +95 -0
- package/dist/chrome/status-bar.d.ts +129 -0
- package/dist/chrome/status-bar.js +120 -0
- package/dist/chrome/tabs.d.ts +80 -0
- package/dist/chrome/tabs.js +132 -0
- package/dist/chrome/title-bar.d.ts +47 -0
- package/dist/chrome/title-bar.js +43 -0
- package/dist/chrome/toolbar.d.ts +68 -0
- package/dist/chrome/toolbar.js +83 -0
- package/dist/chrome/tree.d.ts +98 -0
- package/dist/chrome/tree.js +248 -0
- package/dist/color/_checker.js +14 -0
- package/dist/color/_convert.d.ts +52 -0
- package/dist/color/_convert.js +66 -0
- package/dist/color/_glyphs.js +28 -0
- package/dist/color/_thumb.js +15 -0
- package/dist/color/_value.js +28 -0
- package/dist/color/color-area.d.ts +27 -0
- package/dist/color/color-area.js +40 -0
- package/dist/color/color-field.d.ts +32 -0
- package/dist/color/color-field.js +43 -0
- package/dist/color/color-picker.d.ts +71 -0
- package/dist/color/color-picker.js +178 -0
- package/dist/color/color-slider.d.ts +31 -0
- package/dist/color/color-slider.js +51 -0
- package/dist/color/color-swatch.d.ts +32 -0
- package/dist/color/color-swatch.js +44 -0
- package/dist/color/index.d.ts +7 -0
- package/dist/color/index.js +7 -0
- package/dist/configurator/_export.d.ts +78 -0
- package/dist/configurator/_export.js +302 -0
- package/dist/configurator/_glyphs.js +92 -0
- package/dist/configurator/_overrides.d.ts +266 -0
- package/dist/configurator/_overrides.js +541 -0
- package/dist/configurator/configurator.d.ts +71 -0
- package/dist/configurator/configurator.js +284 -0
- package/dist/configurator/export-dialog.d.ts +30 -0
- package/dist/configurator/export-dialog.js +121 -0
- package/dist/configurator/index.d.ts +8 -0
- package/dist/configurator/index.js +8 -0
- package/dist/configurator/panel-sections.d.ts +86 -0
- package/dist/configurator/panel-sections.js +352 -0
- package/dist/configurator/token-editor.d.ts +74 -0
- package/dist/configurator/token-editor.js +152 -0
- package/dist/configurator/use-zoom.d.ts +87 -0
- package/dist/configurator/use-zoom.js +113 -0
- package/dist/date/_glyphs.js +34 -0
- package/dist/date/_segments.js +101 -0
- package/dist/date/_trigger.js +31 -0
- package/dist/date/calendar.d.ts +25 -0
- package/dist/date/calendar.js +125 -0
- package/dist/date/date-field.d.ts +34 -0
- package/dist/date/date-field.js +41 -0
- package/dist/date/date-picker.d.ts +69 -0
- package/dist/date/date-picker.js +89 -0
- package/dist/date/date-range-picker.d.ts +65 -0
- package/dist/date/date-range-picker.js +92 -0
- package/dist/date/index.d.ts +6 -0
- package/dist/date/index.js +6 -0
- package/dist/date/time-field.d.ts +29 -0
- package/dist/date/time-field.js +36 -0
- package/dist/dmx/_ramp.d.ts +77 -0
- package/dist/dmx/_ramp.js +169 -0
- package/dist/dmx/_readout.js +53 -0
- package/dist/dmx/_universe.d.ts +105 -0
- package/dist/dmx/_universe.js +112 -0
- package/dist/dmx/channel-matrix.d.ts +81 -0
- package/dist/dmx/channel-matrix.js +285 -0
- package/dist/dmx/dmx-bar.d.ts +50 -0
- package/dist/dmx/dmx-bar.js +107 -0
- package/dist/dmx/dmx-strip.d.ts +41 -0
- package/dist/dmx/dmx-strip.js +196 -0
- package/dist/dmx/index.d.ts +7 -0
- package/dist/dmx/index.js +7 -0
- package/dist/dmx/universe-grid.d.ts +61 -0
- package/dist/dmx/universe-grid.js +182 -0
- 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 +123 -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 +108 -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/flow/_frame.d.ts +52 -0
- package/dist/flow/_frame.js +38 -0
- package/dist/flow/controls.d.ts +41 -0
- package/dist/flow/controls.js +53 -0
- package/dist/flow/flow.css +121 -0
- package/dist/flow/handles.d.ts +40 -0
- package/dist/flow/handles.js +61 -0
- package/dist/flow/index.d.ts +7 -0
- package/dist/flow/index.js +7 -0
- package/dist/flow/node-card.d.ts +71 -0
- package/dist/flow/node-card.js +102 -0
- package/dist/flow/signal-edge.d.ts +60 -0
- package/dist/flow/signal-edge.js +108 -0
- package/dist/flow/use-flow-theme.d.ts +69 -0
- package/dist/flow/use-flow-theme.js +109 -0
- package/dist/forms/_chassis.d.ts +164 -0
- package/dist/forms/_chassis.js +159 -0
- package/dist/forms/_glyphs.js +143 -0
- package/dist/forms/_listbox.js +55 -0
- package/dist/forms/autocomplete.d.ts +61 -0
- package/dist/forms/autocomplete.js +88 -0
- package/dist/forms/button-group.d.ts +47 -0
- package/dist/forms/button-group.js +52 -0
- package/dist/forms/checkbox.d.ts +51 -0
- package/dist/forms/checkbox.js +98 -0
- package/dist/forms/combobox.d.ts +73 -0
- package/dist/forms/combobox.js +108 -0
- package/dist/forms/env-var-input.d.ts +74 -0
- package/dist/forms/env-var-input.js +116 -0
- package/dist/forms/field.d.ts +89 -0
- package/dist/forms/field.js +102 -0
- package/dist/forms/file-upload.d.ts +113 -0
- package/dist/forms/file-upload.js +232 -0
- package/dist/forms/index.d.ts +26 -0
- package/dist/forms/index.js +26 -0
- package/dist/forms/input-group.d.ts +36 -0
- package/dist/forms/input-group.js +59 -0
- package/dist/forms/input.d.ts +45 -0
- package/dist/forms/input.js +36 -0
- package/dist/forms/multi-select.d.ts +62 -0
- package/dist/forms/multi-select.js +107 -0
- package/dist/forms/number-field.d.ts +39 -0
- package/dist/forms/number-field.js +65 -0
- package/dist/forms/otp-field.d.ts +54 -0
- package/dist/forms/otp-field.js +59 -0
- package/dist/forms/password-input.d.ts +46 -0
- package/dist/forms/password-input.js +62 -0
- package/dist/forms/radio-group.d.ts +50 -0
- package/dist/forms/radio-group.js +64 -0
- package/dist/forms/rating.d.ts +69 -0
- package/dist/forms/rating.js +103 -0
- package/dist/forms/scrub-input.d.ts +81 -0
- package/dist/forms/scrub-input.js +249 -0
- package/dist/forms/search-input.d.ts +54 -0
- package/dist/forms/search-input.js +112 -0
- package/dist/forms/select.d.ts +75 -0
- package/dist/forms/select.js +91 -0
- package/dist/forms/slider.d.ts +44 -0
- package/dist/forms/slider.js +65 -0
- package/dist/forms/switch.d.ts +36 -0
- package/dist/forms/switch.js +71 -0
- package/dist/forms/tags-input.d.ts +69 -0
- package/dist/forms/tags-input.js +148 -0
- package/dist/forms/textarea.d.ts +39 -0
- package/dist/forms/textarea.js +37 -0
- package/dist/forms/toggle-group.d.ts +41 -0
- package/dist/forms/toggle-group.js +56 -0
- package/dist/forms/toggle.d.ts +47 -0
- package/dist/forms/toggle.js +100 -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 +138 -0
- package/dist/index.js +124 -0
- package/dist/instruments/_ansi.js +116 -0
- package/dist/instruments/_data-row.d.ts +68 -0
- package/dist/instruments/_data-row.js +139 -0
- package/dist/instruments/_glyphs.js +90 -0
- package/dist/instruments/_ledger-disclosure.js +103 -0
- package/dist/instruments/_ledger.d.ts +21 -0
- package/dist/instruments/_ledger.js +5 -0
- package/dist/instruments/_motion.js +56 -0
- package/dist/instruments/_rem.js +21 -0
- package/dist/instruments/app-window-frame.d.ts +48 -0
- package/dist/instruments/app-window-frame.js +76 -0
- package/dist/instruments/code-block.d.ts +35 -0
- package/dist/instruments/code-block.js +173 -0
- package/dist/instruments/copy-button.d.ts +41 -0
- package/dist/instruments/copy-button.js +112 -0
- package/dist/instruments/data-row.d.ts +94 -0
- package/dist/instruments/data-row.js +151 -0
- package/dist/instruments/data-table.d.ts +168 -0
- package/dist/instruments/data-table.js +212 -0
- package/dist/instruments/data-tree.d.ts +126 -0
- package/dist/instruments/data-tree.js +303 -0
- package/dist/instruments/group-bar.d.ts +63 -0
- package/dist/instruments/group-bar.js +122 -0
- package/dist/instruments/index.d.ts +18 -0
- package/dist/instruments/index.js +18 -0
- package/dist/instruments/ledger.d.ts +204 -0
- package/dist/instruments/ledger.js +204 -0
- package/dist/instruments/log-viewer.d.ts +74 -0
- package/dist/instruments/log-viewer.js +215 -0
- package/dist/instruments/meter.d.ts +81 -0
- package/dist/instruments/meter.js +96 -0
- package/dist/instruments/progress.d.ts +61 -0
- package/dist/instruments/progress.js +79 -0
- package/dist/instruments/seam-grid.d.ts +66 -0
- package/dist/instruments/seam-grid.js +78 -0
- package/dist/instruments/sparkline.d.ts +39 -0
- package/dist/instruments/sparkline.js +85 -0
- package/dist/instruments/stat.d.ts +35 -0
- package/dist/instruments/stat.js +59 -0
- package/dist/instruments/table.d.ts +170 -0
- package/dist/instruments/table.js +237 -0
- package/dist/instruments/terminal-frame.d.ts +89 -0
- package/dist/instruments/terminal-frame.js +256 -0
- package/dist/instruments/two-step-button.d.ts +47 -0
- package/dist/instruments/two-step-button.js +166 -0
- package/dist/instruments/usage-chart.d.ts +55 -0
- package/dist/instruments/usage-chart.js +235 -0
- package/dist/layout/_collapse.js +46 -0
- package/dist/layout/_glyphs.js +45 -0
- package/dist/layout/_ground.d.ts +22 -0
- package/dist/layout/_ground.js +9 -0
- package/dist/layout/accordion.d.ts +52 -0
- package/dist/layout/accordion.js +81 -0
- package/dist/layout/bento.d.ts +144 -0
- package/dist/layout/bento.js +266 -0
- package/dist/layout/breadcrumb.d.ts +35 -0
- package/dist/layout/breadcrumb.js +67 -0
- package/dist/layout/card.d.ts +51 -0
- package/dist/layout/card.js +76 -0
- package/dist/layout/carousel.d.ts +96 -0
- package/dist/layout/carousel.js +211 -0
- package/dist/layout/collapsible.d.ts +74 -0
- package/dist/layout/collapsible.js +126 -0
- package/dist/layout/container.d.ts +27 -0
- package/dist/layout/container.js +43 -0
- package/dist/layout/description-list.d.ts +24 -0
- package/dist/layout/description-list.js +37 -0
- package/dist/layout/frames.d.ts +70 -0
- package/dist/layout/frames.js +298 -0
- package/dist/layout/grid.d.ts +40 -0
- package/dist/layout/grid.js +48 -0
- package/dist/layout/index.d.ts +19 -0
- package/dist/layout/index.js +18 -0
- package/dist/layout/item.d.ts +65 -0
- package/dist/layout/item.js +100 -0
- package/dist/layout/link.d.ts +48 -0
- package/dist/layout/link.js +63 -0
- package/dist/layout/pagination.d.ts +54 -0
- package/dist/layout/pagination.js +121 -0
- package/dist/layout/preview.d.ts +177 -0
- package/dist/layout/preview.js +628 -0
- package/dist/layout/resizable.d.ts +38 -0
- package/dist/layout/resizable.js +68 -0
- package/dist/layout/sidebar.d.ts +105 -0
- package/dist/layout/sidebar.js +158 -0
- package/dist/layout/stack.d.ts +46 -0
- package/dist/layout/stack.js +62 -0
- package/dist/layout/stepper.d.ts +49 -0
- package/dist/layout/stepper.js +81 -0
- package/dist/layout/timeline.d.ts +43 -0
- package/dist/layout/timeline.js +63 -0
- package/dist/lib/aria-class.js +24 -0
- package/dist/lib/cn.js +18 -0
- package/dist/lib/compose.js +38 -0
- package/dist/lib/cva.d.ts +18 -0
- package/dist/lib/cva.js +65 -0
- package/dist/midi/_notes.d.ts +101 -0
- package/dist/midi/_notes.js +183 -0
- package/dist/midi/_ruler.d.ts +100 -0
- package/dist/midi/_ruler.js +105 -0
- package/dist/midi/_time.d.ts +107 -0
- package/dist/midi/_time.js +130 -0
- package/dist/midi/index.d.ts +9 -0
- package/dist/midi/index.js +9 -0
- package/dist/midi/musical-time-input.d.ts +48 -0
- package/dist/midi/musical-time-input.js +154 -0
- package/dist/midi/piano-keyboard.d.ts +50 -0
- package/dist/midi/piano-keyboard.js +197 -0
- package/dist/midi/spectrum-visualizer.d.ts +65 -0
- package/dist/midi/spectrum-visualizer.js +213 -0
- package/dist/midi/threshold-rail.d.ts +72 -0
- package/dist/midi/threshold-rail.js +214 -0
- package/dist/midi/timeline-ruler.d.ts +83 -0
- package/dist/midi/timeline-ruler.js +152 -0
- package/dist/overlays/_debounce.js +34 -0
- package/dist/overlays/_glyphs.js +59 -0
- package/dist/overlays/_surface.d.ts +70 -0
- package/dist/overlays/_surface.js +70 -0
- package/dist/overlays/_wheel.js +42 -0
- package/dist/overlays/alert-dialog.d.ts +67 -0
- package/dist/overlays/alert-dialog.js +117 -0
- package/dist/overlays/command-palette.d.ts +93 -0
- package/dist/overlays/command-palette.js +193 -0
- package/dist/overlays/context-menu.d.ts +64 -0
- package/dist/overlays/context-menu.js +78 -0
- package/dist/overlays/dialog.d.ts +72 -0
- package/dist/overlays/dialog.js +124 -0
- package/dist/overlays/drawer.d.ts +75 -0
- package/dist/overlays/drawer.js +151 -0
- package/dist/overlays/dropdown-menu.d.ts +79 -0
- package/dist/overlays/dropdown-menu.js +156 -0
- package/dist/overlays/hover-card.d.ts +58 -0
- package/dist/overlays/hover-card.js +91 -0
- package/dist/overlays/index.d.ts +15 -0
- package/dist/overlays/index.js +15 -0
- package/dist/overlays/info-tip.d.ts +41 -0
- package/dist/overlays/info-tip.js +45 -0
- package/dist/overlays/menubar.d.ts +72 -0
- package/dist/overlays/menubar.js +100 -0
- package/dist/overlays/popover.d.ts +66 -0
- package/dist/overlays/popover.js +114 -0
- package/dist/overlays/sheet.d.ts +78 -0
- package/dist/overlays/sheet.js +131 -0
- package/dist/overlays/toast.d.ts +106 -0
- package/dist/overlays/toast.js +146 -0
- package/dist/overlays/tooltip.d.ts +57 -0
- package/dist/overlays/tooltip.js +95 -0
- package/dist/primitives/avatar.d.ts +51 -0
- package/dist/primitives/avatar.js +93 -0
- package/dist/primitives/button.d.ts +58 -0
- package/dist/primitives/button.js +104 -0
- package/dist/primitives/chip.d.ts +73 -0
- package/dist/primitives/chip.js +238 -0
- package/dist/primitives/icon-button.d.ts +41 -0
- package/dist/primitives/icon-button.js +59 -0
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.js +10 -0
- package/dist/primitives/kbd.d.ts +17 -0
- package/dist/primitives/kbd.js +24 -0
- package/dist/primitives/separator.d.ts +25 -0
- package/dist/primitives/separator.js +30 -0
- package/dist/primitives/skeleton.d.ts +20 -0
- package/dist/primitives/skeleton.js +27 -0
- package/dist/primitives/spinner.d.ts +26 -0
- package/dist/primitives/spinner.js +31 -0
- package/dist/primitives/status-dot.d.ts +51 -0
- package/dist/primitives/status-dot.js +57 -0
- package/dist/styles.css +97 -0
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/density.d.ts +73 -0
- package/dist/system/density.js +111 -0
- package/dist/system/index.d.ts +12 -0
- package/dist/system/index.js +10 -0
- package/dist/system/overrides.d.ts +80 -0
- package/dist/system/overrides.js +277 -0
- package/dist/system/portal.d.ts +56 -0
- package/dist/system/portal.js +193 -0
- package/dist/system/prepaint.d.ts +134 -0
- package/dist/system/prepaint.js +120 -0
- package/dist/system/theme-provider.d.ts +290 -0
- package/dist/system/theme-provider.js +543 -0
- package/dist/system/theme-registry.d.ts +53 -0
- package/dist/system/theme-registry.js +66 -0
- package/dist/system/use-density.d.ts +50 -0
- package/dist/system/use-density.js +232 -0
- package/dist/system/use-isomorphic-layout-effect.js +33 -0
- package/dist/system/use-theme.d.ts +30 -0
- package/dist/system/use-theme.js +36 -0
- package/dist/system/vocabulary.d.ts +16 -0
- package/dist/system/vocabulary.js +125 -0
- package/dist/theming/contrast.d.ts +2 -0
- package/dist/theming/contrast.js +2 -0
- package/dist/theming/create-theme.d.ts +195 -0
- package/dist/theming/create-theme.js +524 -0
- package/dist/theming/index.d.ts +4 -0
- package/dist/theming/index.js +4 -0
- package/dist/theming/serialize.d.ts +167 -0
- package/dist/theming/serialize.js +241 -0
- package/manifest/components/accordion.json +173 -0
- package/manifest/components/activity-graph.json +104 -0
- package/manifest/components/agent-card.json +150 -0
- package/manifest/components/agent-handoff.json +104 -0
- package/manifest/components/agent-mode-badge.json +102 -0
- package/manifest/components/agent-pile.json +147 -0
- package/manifest/components/agent-plan.json +74 -0
- package/manifest/components/agent-status.json +87 -0
- package/manifest/components/agent-surface.json +93 -0
- package/manifest/components/alert-dialog.json +215 -0
- package/manifest/components/animated-number.json +75 -0
- package/manifest/components/app-bar.json +297 -0
- package/manifest/components/app-shell.json +526 -0
- package/manifest/components/app-window-frame.json +124 -0
- package/manifest/components/approval-card.json +136 -0
- package/manifest/components/artifact-card.json +93 -0
- package/manifest/components/ask-box.json +288 -0
- package/manifest/components/audience-icon.json +46 -0
- package/manifest/components/autocomplete.json +262 -0
- package/manifest/components/avatar-group.json +83 -0
- package/manifest/components/avatar.json +113 -0
- package/manifest/components/background-inbox.json +79 -0
- package/manifest/components/band.json +104 -0
- package/manifest/components/bento.json +306 -0
- package/manifest/components/branch-picker.json +146 -0
- package/manifest/components/breadcrumb.json +85 -0
- package/manifest/components/button-group.json +91 -0
- package/manifest/components/button.json +163 -0
- package/manifest/components/calendar.json +65 -0
- package/manifest/components/canvas-split-body.json +66 -0
- package/manifest/components/canvas-split-document.json +55 -0
- package/manifest/components/canvas-split-header.json +97 -0
- package/manifest/components/canvas-split-line.json +66 -0
- package/manifest/components/canvas-split-message.json +70 -0
- package/manifest/components/canvas-split-thread.json +55 -0
- package/manifest/components/canvas-split.json +61 -0
- package/manifest/components/card.json +152 -0
- package/manifest/components/carousel.json +242 -0
- package/manifest/components/catalogue-icon.json +46 -0
- package/manifest/components/channel-beta-icon.json +46 -0
- package/manifest/components/channel-matrix.json +239 -0
- package/manifest/components/channel-released-icon.json +46 -0
- package/manifest/components/chart-container.json +127 -0
- package/manifest/components/chart-ramp.json +82 -0
- package/manifest/components/chart-swatch.json +72 -0
- package/manifest/components/chart-tooltip-content.json +140 -0
- package/manifest/components/chart.json +117 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +52 -0
- package/manifest/components/chat-panel-composer.json +74 -0
- package/manifest/components/chat-panel-messages.json +52 -0
- package/manifest/components/chat-panel-typing.json +52 -0
- package/manifest/components/chat-panel-user-message.json +52 -0
- package/manifest/components/chat-panel.json +58 -0
- package/manifest/components/checkbox-group.json +70 -0
- package/manifest/components/checkbox.json +106 -0
- package/manifest/components/checkpoint-history.json +91 -0
- package/manifest/components/chip.json +174 -0
- package/manifest/components/clamp.json +125 -0
- package/manifest/components/cli-tool-icon.json +46 -0
- package/manifest/components/code-block.json +107 -0
- package/manifest/components/code-diff.json +104 -0
- package/manifest/components/code-runner.json +124 -0
- package/manifest/components/collapsible.json +133 -0
- package/manifest/components/color-area.json +62 -0
- package/manifest/components/color-field.json +91 -0
- package/manifest/components/color-picker.json +235 -0
- package/manifest/components/color-slider.json +84 -0
- package/manifest/components/color-swatch.json +79 -0
- package/manifest/components/colors-section.json +70 -0
- package/manifest/components/combobox.json +265 -0
- package/manifest/components/command-palette.json +222 -0
- package/manifest/components/compaction-row.json +128 -0
- package/manifest/components/comparison-card.json +98 -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 +83 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +76 -0
- package/manifest/components/composer-command-item.json +85 -0
- package/manifest/components/composer-context.json +71 -0
- package/manifest/components/composer-input.json +77 -0
- package/manifest/components/composer-menu-item.json +75 -0
- package/manifest/components/composer-menu.json +89 -0
- package/manifest/components/composer-model-item.json +82 -0
- package/manifest/components/composer-model-trigger.json +81 -0
- package/manifest/components/composer-person-item.json +86 -0
- package/manifest/components/composer-send.json +86 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +71 -0
- package/manifest/components/composer-voice.json +81 -0
- package/manifest/components/composer.json +238 -0
- package/manifest/components/computer-use.json +98 -0
- package/manifest/components/confidence-marker.json +86 -0
- package/manifest/components/connection-state.json +103 -0
- package/manifest/components/container.json +75 -0
- package/manifest/components/context-breakdown.json +72 -0
- package/manifest/components/context-menu.json +134 -0
- package/manifest/components/context-usage.json +98 -0
- package/manifest/components/conversation-search.json +111 -0
- package/manifest/components/copy-button.json +118 -0
- package/manifest/components/cost-meter.json +84 -0
- package/manifest/components/cue-logotype.json +110 -0
- package/manifest/components/cue-mark.json +111 -0
- package/manifest/components/cue-portal-frame.json +65 -0
- package/manifest/components/data-row.json +222 -0
- package/manifest/components/data-table-pagination.json +97 -0
- package/manifest/components/data-table-toolbar.json +127 -0
- package/manifest/components/data-tree.json +185 -0
- package/manifest/components/date-field.json +93 -0
- package/manifest/components/date-picker.json +255 -0
- package/manifest/components/date-range-picker.json +255 -0
- package/manifest/components/day-separator.json +63 -0
- package/manifest/components/delegation-card.json +196 -0
- package/manifest/components/density.json +93 -0
- package/manifest/components/description-list.json +91 -0
- package/manifest/components/diagram.json +126 -0
- package/manifest/components/dialog.json +222 -0
- package/manifest/components/disclosure.json +134 -0
- package/manifest/components/dmx-bar.json +107 -0
- package/manifest/components/dmx-strip.json +117 -0
- package/manifest/components/document-reference.json +108 -0
- package/manifest/components/draft-restore.json +96 -0
- package/manifest/components/drawer.json +204 -0
- package/manifest/components/dropdown-menu.json +275 -0
- package/manifest/components/edit-message.json +131 -0
- package/manifest/components/elements-command-palette.json +122 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +75 -0
- package/manifest/components/elements-timeline.json +77 -0
- package/manifest/components/elicitation-form.json +130 -0
- package/manifest/components/empty-state-composer.json +71 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +60 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/empty-state.json +111 -0
- package/manifest/components/end-of-turn-summary.json +89 -0
- package/manifest/components/env-var-input.json +194 -0
- package/manifest/components/error-state.json +93 -0
- package/manifest/components/export-dialog.json +101 -0
- package/manifest/components/eyebrow.json +59 -0
- package/manifest/components/feedback-dialog.json +133 -0
- package/manifest/components/field-description.json +66 -0
- package/manifest/components/field-error.json +87 -0
- package/manifest/components/field-label.json +66 -0
- package/manifest/components/field.json +82 -0
- package/manifest/components/file-tree.json +96 -0
- package/manifest/components/file-upload.json +204 -0
- package/manifest/components/flow-background.json +50 -0
- package/manifest/components/flow-controls.json +50 -0
- package/manifest/components/flow-graph.json +86 -0
- package/manifest/components/folder-icon.json +46 -0
- package/manifest/components/footer.json +133 -0
- package/manifest/components/frac.json +68 -0
- package/manifest/components/frames.json +210 -0
- package/manifest/components/generation-loader.json +78 -0
- package/manifest/components/generative-ui.json +125 -0
- package/manifest/components/grid.json +132 -0
- package/manifest/components/group-bar.json +122 -0
- package/manifest/components/guardrail-notice.json +109 -0
- package/manifest/components/hover-card.json +189 -0
- package/manifest/components/icon-button.json +106 -0
- package/manifest/components/image-generation.json +73 -0
- package/manifest/components/info-tip.json +133 -0
- package/manifest/components/inline-citation.json +90 -0
- package/manifest/components/input-group.json +112 -0
- package/manifest/components/input.json +121 -0
- package/manifest/components/inspector.json +199 -0
- package/manifest/components/item.json +163 -0
- package/manifest/components/job-progress.json +116 -0
- package/manifest/components/kbd.json +52 -0
- package/manifest/components/launcher-bubble.json +130 -0
- package/manifest/components/ledger.json +330 -0
- package/manifest/components/link.json +94 -0
- package/manifest/components/live-region-announcer.json +95 -0
- package/manifest/components/log-viewer.json +172 -0
- package/manifest/components/map-answer.json +97 -0
- package/manifest/components/markdown-text.json +126 -0
- package/manifest/components/math-block.json +84 -0
- package/manifest/components/mcp-server-icon.json +46 -0
- package/manifest/components/mcp-server-panel.json +102 -0
- package/manifest/components/memory-chips.json +73 -0
- package/manifest/components/menubar.json +184 -0
- package/manifest/components/message-actions.json +125 -0
- package/manifest/components/message-attachments.json +71 -0
- package/manifest/components/message-branches.json +83 -0
- package/manifest/components/message-list.json +121 -0
- package/manifest/components/message-pair.json +107 -0
- package/manifest/components/message-queue.json +85 -0
- package/manifest/components/message-timing.json +69 -0
- package/manifest/components/message.json +149 -0
- package/manifest/components/meter.json +150 -0
- package/manifest/components/mobile-composer.json +163 -0
- package/manifest/components/model-picker.json +87 -0
- package/manifest/components/multi-select.json +255 -0
- package/manifest/components/musical-time-input.json +141 -0
- package/manifest/components/navigation-menu.json +269 -0
- package/manifest/components/node-card.json +144 -0
- package/manifest/components/node-handle.json +84 -0
- package/manifest/components/number-field.json +131 -0
- package/manifest/components/number-ticker.json +67 -0
- package/manifest/components/onboarding.json +100 -0
- package/manifest/components/otp-field.json +163 -0
- package/manifest/components/page-shell.json +129 -0
- package/manifest/components/pagination.json +108 -0
- package/manifest/components/panel-header.json +89 -0
- package/manifest/components/panel.json +71 -0
- package/manifest/components/password-input.json +171 -0
- package/manifest/components/permission-grant.json +115 -0
- package/manifest/components/permission-scopes.json +184 -0
- package/manifest/components/piano-keyboard.json +149 -0
- package/manifest/components/plussie.json +140 -0
- package/manifest/components/popover.json +231 -0
- package/manifest/components/preset-section.json +80 -0
- package/manifest/components/preview.json +294 -0
- package/manifest/components/progress.json +114 -0
- package/manifest/components/prompt-library.json +122 -0
- package/manifest/components/queue-dock.json +139 -0
- package/manifest/components/quota-banner.json +113 -0
- package/manifest/components/quote-reply.json +129 -0
- package/manifest/components/radio-group.json +83 -0
- package/manifest/components/radio.json +94 -0
- package/manifest/components/rating.json +188 -0
- package/manifest/components/read-aloud.json +139 -0
- package/manifest/components/reasoning-effort.json +95 -0
- package/manifest/components/reasoning-panel.json +135 -0
- package/manifest/components/recommendation-card.json +133 -0
- package/manifest/components/regenerate-menu.json +107 -0
- package/manifest/components/replay-player.json +124 -0
- package/manifest/components/research-report.json +87 -0
- package/manifest/components/resizable.json +91 -0
- package/manifest/components/retrieval-chunks.json +98 -0
- package/manifest/components/revert-dock.json +197 -0
- package/manifest/components/reviewable-diff.json +113 -0
- package/manifest/components/risk-badge.json +89 -0
- package/manifest/components/row.json +122 -0
- package/manifest/components/schedule-card.json +121 -0
- package/manifest/components/score-breakdown.json +108 -0
- package/manifest/components/scroll-anchor.json +84 -0
- package/manifest/components/scroll-area.json +114 -0
- package/manifest/components/scrollable-tabs-list.json +91 -0
- package/manifest/components/scrub-input.json +268 -0
- package/manifest/components/seam-cell.json +91 -0
- package/manifest/components/seam-grid.json +84 -0
- package/manifest/components/seam-list.json +56 -0
- package/manifest/components/search-input.json +195 -0
- package/manifest/components/section-header.json +140 -0
- package/manifest/components/segmented-control.json +178 -0
- package/manifest/components/select.json +253 -0
- package/manifest/components/separator.json +56 -0
- package/manifest/components/settings-panel.json +152 -0
- package/manifest/components/shape-section.json +70 -0
- package/manifest/components/shared-conversation.json +107 -0
- package/manifest/components/sheet.json +210 -0
- package/manifest/components/shimmer-label.json +61 -0
- package/manifest/components/sidebar.json +245 -0
- package/manifest/components/signal-edge.json +56 -0
- package/manifest/components/skeleton.json +46 -0
- package/manifest/components/skill-icon.json +46 -0
- package/manifest/components/slider.json +106 -0
- package/manifest/components/sources.json +97 -0
- package/manifest/components/sparkline.json +89 -0
- package/manifest/components/speaker-identity.json +66 -0
- package/manifest/components/spec-sheet.json +93 -0
- package/manifest/components/spectrum-visualizer.json +147 -0
- package/manifest/components/spinner.json +71 -0
- package/manifest/components/stack-icon.json +46 -0
- package/manifest/components/stack.json +143 -0
- package/manifest/components/stacks-matrix-icon.json +46 -0
- package/manifest/components/stat.json +111 -0
- package/manifest/components/status-bar.json +233 -0
- package/manifest/components/status-dot.json +97 -0
- package/manifest/components/stepper.json +107 -0
- package/manifest/components/stopped-run.json +97 -0
- package/manifest/components/streaming-text.json +82 -0
- package/manifest/components/sub.json +45 -0
- package/manifest/components/subagent-list.json +106 -0
- package/manifest/components/suggestions.json +106 -0
- package/manifest/components/sup.json +45 -0
- package/manifest/components/swap-label.json +86 -0
- package/manifest/components/switch.json +102 -0
- package/manifest/components/table-scroll-region.json +78 -0
- package/manifest/components/table.json +306 -0
- package/manifest/components/tabs.json +156 -0
- package/manifest/components/tags-input.json +255 -0
- package/manifest/components/tail-status.json +138 -0
- package/manifest/components/terminal-block.json +111 -0
- package/manifest/components/terminal-frame.json +146 -0
- package/manifest/components/textarea.json +104 -0
- package/manifest/components/theme-configurator.json +158 -0
- package/manifest/components/theme-provider.json +228 -0
- package/manifest/components/thinking-indicator.json +69 -0
- package/manifest/components/thread-list.json +87 -0
- package/manifest/components/thread-search.json +108 -0
- package/manifest/components/threshold-rail.json +223 -0
- package/manifest/components/time-boundary.json +68 -0
- package/manifest/components/time-field.json +93 -0
- package/manifest/components/timeline-ruler.json +178 -0
- package/manifest/components/timeline.json +131 -0
- package/manifest/components/title-bar.json +97 -0
- package/manifest/components/toast.json +140 -0
- package/manifest/components/todo-list.json +76 -0
- package/manifest/components/toggle-group.json +134 -0
- package/manifest/components/toggle.json +140 -0
- package/manifest/components/token-editor.json +106 -0
- package/manifest/components/tool-call-card.json +268 -0
- package/manifest/components/tool-call.json +147 -0
- package/manifest/components/tool-error.json +141 -0
- package/manifest/components/tool-group.json +97 -0
- package/manifest/components/tool-timeline.json +147 -0
- package/manifest/components/toolbar.json +192 -0
- package/manifest/components/tooltip.json +199 -0
- package/manifest/components/trace-waterfall.json +84 -0
- package/manifest/components/tree-visibility-toggle.json +99 -0
- package/manifest/components/tree.json +182 -0
- package/manifest/components/turn-footer.json +133 -0
- package/manifest/components/two-step-button.json +150 -0
- package/manifest/components/typing-indicator.json +60 -0
- package/manifest/components/universe-grid.json +155 -0
- package/manifest/components/unread-divider.json +58 -0
- package/manifest/components/usage-chart.json +162 -0
- package/manifest/components/verdict-row.json +106 -0
- package/manifest/components/voice-conversation.json +141 -0
- package/manifest/components/web-preview.json +105 -0
- package/manifest/components/web-search.json +108 -0
- package/manifest/components/work-collapse.json +125 -0
- package/manifest/fixtures.json +776 -0
- package/manifest/manifest.json +5037 -0
- package/manifest/tokens.json +288 -0
- package/package.json +278 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { activateRowFromClick, activateRowFromKeyDown, dataRowVariants } from "./_data-row.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/instruments/data-row.tsx
|
|
7
|
+
/**
|
|
8
|
+
* The roles that carry `aria-expanded`, per ARIA 1.2's own "supported in roles"
|
|
9
|
+
* list, filtered to the ones a row could plausibly be given.
|
|
10
|
+
*
|
|
11
|
+
* The absent case is the one that matters: no `role` at all. A `<div>` is
|
|
12
|
+
* `generic`, `generic` supports only the globals, and every engine drops an
|
|
13
|
+
* `aria-expanded` it finds there rather than exposing a state — so emitting it
|
|
14
|
+
* anyway buys nothing and costs a critical axe violation.
|
|
15
|
+
*/
|
|
16
|
+
const ROLES_SUPPORTING_EXPANDED = /* @__PURE__ */ new Set([
|
|
17
|
+
"application",
|
|
18
|
+
"button",
|
|
19
|
+
"checkbox",
|
|
20
|
+
"columnheader",
|
|
21
|
+
"combobox",
|
|
22
|
+
"grid",
|
|
23
|
+
"gridcell",
|
|
24
|
+
"link",
|
|
25
|
+
"listbox",
|
|
26
|
+
"menuitem",
|
|
27
|
+
"menuitemcheckbox",
|
|
28
|
+
"menuitemradio",
|
|
29
|
+
"row",
|
|
30
|
+
"rowheader",
|
|
31
|
+
"searchbox",
|
|
32
|
+
"switch",
|
|
33
|
+
"tab",
|
|
34
|
+
"table",
|
|
35
|
+
"textbox",
|
|
36
|
+
"treeitem"
|
|
37
|
+
]);
|
|
38
|
+
/**
|
|
39
|
+
* The dense interactive row, as one anatomy three surfaces share.
|
|
40
|
+
*
|
|
41
|
+
* `Ledger`, a grouped `Table` and `DataTree` are three drawings of the same row
|
|
42
|
+
* model, and this is the model: a marker, a label, a description, tags, a
|
|
43
|
+
* figure, and a trailing action cluster that is only there when you are looking
|
|
44
|
+
* at the row. Composing them yourself — rather than passing a `columns` array —
|
|
45
|
+
* is what keeps the primitive domain-neutral: a corpus of skills and a rig of
|
|
46
|
+
* fixtures need the same six slots and completely different columns.
|
|
47
|
+
*
|
|
48
|
+
* The slots are thin: each is a `<span>` with a `data-slot`, the type and
|
|
49
|
+
* truncation rule for its column, and nothing else. They may be used inside a
|
|
50
|
+
* `DataTree` row and inside a `Table.Cell` too — `Table.Row` carries the same
|
|
51
|
+
* `group/data-row` name, so `DataRow.Actions` reveals in the table idiom
|
|
52
|
+
* without a second implementation.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* <DataRow.Root interactive onActivate={() => open(skill)}>
|
|
56
|
+
* <DataRow.Marker><StatusDot tone="ok" /></DataRow.Marker>
|
|
57
|
+
* <DataRow.Label>{skill.name}</DataRow.Label>
|
|
58
|
+
* <DataRow.Meta>{skill.installs}</DataRow.Meta>
|
|
59
|
+
* </DataRow.Root>
|
|
60
|
+
*/
|
|
61
|
+
const DataRow = {
|
|
62
|
+
Root: React.forwardRef(function DataRowRoot({ className, interactive = false, selected = false, disabled = false, onActivate, disclosure, onClick, onKeyDown, role, ...elementProps }, ref) {
|
|
63
|
+
const expandable = role !== void 0 && ROLES_SUPPORTING_EXPANDED.has(role);
|
|
64
|
+
const activate = React.useCallback(() => {
|
|
65
|
+
if (!disabled) onActivate?.();
|
|
66
|
+
}, [disabled, onActivate]);
|
|
67
|
+
const handleClick = React.useCallback((event) => {
|
|
68
|
+
onClick?.(event);
|
|
69
|
+
if (interactive) activateRowFromClick(event, activate);
|
|
70
|
+
}, [
|
|
71
|
+
activate,
|
|
72
|
+
interactive,
|
|
73
|
+
onClick
|
|
74
|
+
]);
|
|
75
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
76
|
+
onKeyDown?.(event);
|
|
77
|
+
if (interactive) activateRowFromKeyDown(event, activate);
|
|
78
|
+
}, [
|
|
79
|
+
activate,
|
|
80
|
+
interactive,
|
|
81
|
+
onKeyDown
|
|
82
|
+
]);
|
|
83
|
+
return /* @__PURE__ */ jsx("div", {
|
|
84
|
+
ref,
|
|
85
|
+
...elementProps,
|
|
86
|
+
role,
|
|
87
|
+
"data-slot": "data-row",
|
|
88
|
+
"data-selected": selected ? "" : void 0,
|
|
89
|
+
"data-disabled": disabled ? "" : void 0,
|
|
90
|
+
"data-expanded": disclosure?.expanded === true ? "" : void 0,
|
|
91
|
+
tabIndex: interactive && !disabled ? 0 : void 0,
|
|
92
|
+
"aria-expanded": disclosure === void 0 || !expandable ? void 0 : disclosure.expanded,
|
|
93
|
+
"aria-controls": disclosure?.controls,
|
|
94
|
+
"aria-disabled": disabled ? true : void 0,
|
|
95
|
+
onClick: handleClick,
|
|
96
|
+
onKeyDown: handleKeyDown,
|
|
97
|
+
className: cn(dataRowVariants({ interactive }), className)
|
|
98
|
+
});
|
|
99
|
+
}),
|
|
100
|
+
Marker: React.forwardRef(function DataRowMarker({ className, ...elementProps }, ref) {
|
|
101
|
+
return /* @__PURE__ */ jsx("span", {
|
|
102
|
+
ref,
|
|
103
|
+
"data-slot": "data-row-marker",
|
|
104
|
+
className: cn("flex shrink-0 items-center", className),
|
|
105
|
+
...elementProps
|
|
106
|
+
});
|
|
107
|
+
}),
|
|
108
|
+
Label: React.forwardRef(function DataRowLabel({ className, ...elementProps }, ref) {
|
|
109
|
+
return /* @__PURE__ */ jsx("span", {
|
|
110
|
+
ref,
|
|
111
|
+
"data-slot": "data-row-label",
|
|
112
|
+
className: cn("min-w-0 truncate text-fg", className),
|
|
113
|
+
...elementProps
|
|
114
|
+
});
|
|
115
|
+
}),
|
|
116
|
+
Description: React.forwardRef(function DataRowDescription({ className, ...elementProps }, ref) {
|
|
117
|
+
return /* @__PURE__ */ jsx("span", {
|
|
118
|
+
ref,
|
|
119
|
+
"data-slot": "data-row-description",
|
|
120
|
+
className: cn("min-w-0 truncate text-(length:--cue-text-label) text-fg-muted", className),
|
|
121
|
+
...elementProps
|
|
122
|
+
});
|
|
123
|
+
}),
|
|
124
|
+
Tags: React.forwardRef(function DataRowTags({ className, ...elementProps }, ref) {
|
|
125
|
+
return /* @__PURE__ */ jsx("span", {
|
|
126
|
+
ref,
|
|
127
|
+
"data-slot": "data-row-tags",
|
|
128
|
+
className: cn("flex min-w-0 items-center gap-(--cue-space-1)", className),
|
|
129
|
+
...elementProps
|
|
130
|
+
});
|
|
131
|
+
}),
|
|
132
|
+
Meta: React.forwardRef(function DataRowMeta({ className, ...elementProps }, ref) {
|
|
133
|
+
return /* @__PURE__ */ jsx("span", {
|
|
134
|
+
ref,
|
|
135
|
+
"data-slot": "data-row-meta",
|
|
136
|
+
className: cn("shrink-0 tabular-nums text-fg-subtle", className),
|
|
137
|
+
...elementProps
|
|
138
|
+
});
|
|
139
|
+
}),
|
|
140
|
+
Actions: React.forwardRef(function DataRowActions({ className, ...elementProps }, ref) {
|
|
141
|
+
return /* @__PURE__ */ jsx("span", {
|
|
142
|
+
ref,
|
|
143
|
+
"data-slot": "data-row-actions",
|
|
144
|
+
"data-stop": "",
|
|
145
|
+
className: cn("invisible inline-flex shrink-0 items-center gap-(--cue-space-1) [&>*]:shrink-0", "group-hover/data-row:visible group-focus-within/data-row:visible group-data-[selected]/data-row:visible", "[@media(hover:none)]:visible", className),
|
|
146
|
+
...elementProps
|
|
147
|
+
});
|
|
148
|
+
})
|
|
149
|
+
};
|
|
150
|
+
//#endregion
|
|
151
|
+
export { DataRow };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ColumnHelper, ReactTable, RowData, TableOptions, flexRender } from "@tanstack/react-table";
|
|
3
|
+
//#region src/instruments/data-table.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The console table recipe. Not a component — deliberately.
|
|
6
|
+
*
|
|
7
|
+
* A `<DataTable columns={…} data={…} />` monolith has to own the markup of
|
|
8
|
+
* every cell, every header and every empty state, and the first column that
|
|
9
|
+
* needs a `Chip` or a `TwoStepButton` in it starts a prop-drilling arms race
|
|
10
|
+
* that ends with a component nobody can read. TanStack v9's whole point is that
|
|
11
|
+
* the markup stays yours and only the *logic* is shared, so what this module
|
|
12
|
+
* ships is the wiring:
|
|
13
|
+
*
|
|
14
|
+
* - {@link cueTableFeatures} — one opt-in feature set, so v9 can tree-shake
|
|
15
|
+
* everything the console does not use (grouping, faceting, pinning,
|
|
16
|
+
* virtualised column sizing).
|
|
17
|
+
* - {@link useCueTable} — that feature set, pre-bound, with sensible console
|
|
18
|
+
* defaults.
|
|
19
|
+
* - {@link createCueColumnHelper} — the column helper with the features
|
|
20
|
+
* already applied, so column defs infer.
|
|
21
|
+
* - {@link DataTableToolbar} / {@link DataTablePagination} — the two pieces of
|
|
22
|
+
* chrome every table needs and nobody enjoys writing twice.
|
|
23
|
+
*
|
|
24
|
+
* The rows render through the Phase 1 `Table`. There is a fully worked example
|
|
25
|
+
* in `test/instruments/data-table.test.tsx`.
|
|
26
|
+
*
|
|
27
|
+
* Ships from `@cueplusplus/ui/instruments/data-table`: `@tanstack/react-table`
|
|
28
|
+
* is an optional peer, and the core bundle must not require it.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Sorting, column filtering, global filtering and pagination — and nothing
|
|
32
|
+
* else.
|
|
33
|
+
*
|
|
34
|
+
* Named functions are registered individually rather than by spreading the
|
|
35
|
+
* built-in registries, because spreading puts every sort and filter
|
|
36
|
+
* implementation in the bundle whether or not a column names one.
|
|
37
|
+
*/
|
|
38
|
+
declare const cueTableFeatures: {
|
|
39
|
+
columnFilteringFeature: import("@tanstack/react-table").TableFeature;
|
|
40
|
+
globalFilteringFeature: import("@tanstack/react-table").TableFeature;
|
|
41
|
+
rowPaginationFeature: import("@tanstack/react-table").TableFeature;
|
|
42
|
+
rowSortingFeature: import("@tanstack/react-table").TableFeature;
|
|
43
|
+
filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
44
|
+
paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
45
|
+
sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
46
|
+
filterFns: {
|
|
47
|
+
includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
|
|
48
|
+
inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
|
|
49
|
+
};
|
|
50
|
+
sortFns: {
|
|
51
|
+
alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
52
|
+
basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
53
|
+
datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
54
|
+
text: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
/** The feature set every `useCueTable` instance carries. */
|
|
58
|
+
type CueTableFeatures = typeof cueTableFeatures;
|
|
59
|
+
/** A table instance produced by {@link useCueTable}. */
|
|
60
|
+
type CueTable<TData extends RowData> = ReactTable<CueTableFeatures, TData>;
|
|
61
|
+
/** Options for {@link useCueTable} — TanStack's, minus the features it supplies. */
|
|
62
|
+
interface UseCueTableOptions<TData extends RowData> extends Omit<TableOptions<CueTableFeatures, TData>, "features"> {}
|
|
63
|
+
/**
|
|
64
|
+
* A TanStack v9 table wired for the console.
|
|
65
|
+
*
|
|
66
|
+
* Adds one default on top of the feature set: `globalFilterFn: "includesString"`,
|
|
67
|
+
* which is what a single search box over a console table always means. Override
|
|
68
|
+
* it, or any other option, by passing it.
|
|
69
|
+
*
|
|
70
|
+
* @param options - Everything `useTable` takes except `features`.
|
|
71
|
+
* @returns The table instance, ready to render through `Table`.
|
|
72
|
+
* @example
|
|
73
|
+
* const table = useCueTable({ data, columns, state: { globalFilter }, onGlobalFilterChange });
|
|
74
|
+
*/
|
|
75
|
+
declare function useCueTable<TData extends RowData>(options: UseCueTableOptions<TData>): CueTable<TData>;
|
|
76
|
+
/**
|
|
77
|
+
* A column helper with {@link cueTableFeatures} already bound.
|
|
78
|
+
*
|
|
79
|
+
* @returns TanStack's `accessor` / `display` / `group` / `columns` builders.
|
|
80
|
+
* @example
|
|
81
|
+
* const helper = createCueColumnHelper<Fixture>();
|
|
82
|
+
* const columns = [helper.accessor("name", { header: "Fixture" })];
|
|
83
|
+
*/
|
|
84
|
+
declare function createCueColumnHelper<TData extends RowData>(): ColumnHelper<CueTableFeatures, TData>;
|
|
85
|
+
interface DataTableToolbarProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onChange"> {
|
|
86
|
+
/** The current query. Pair it with `onValueChange` and the table's global filter. */
|
|
87
|
+
value?: string;
|
|
88
|
+
/** Fired on every keystroke in the search box. */
|
|
89
|
+
onValueChange?: (value: string) => void;
|
|
90
|
+
/** Placeholder for the search box. Defaults to `"Filter…"`. */
|
|
91
|
+
placeholder?: string;
|
|
92
|
+
/** Accessible name for the search box. Defaults to `"Filter rows"`. */
|
|
93
|
+
searchLabel?: string;
|
|
94
|
+
/** Rows currently matching. Shown as `count/total` when both are given. */
|
|
95
|
+
count?: number;
|
|
96
|
+
/** Rows before filtering. */
|
|
97
|
+
total?: number;
|
|
98
|
+
/** Trailing controls — a column picker, an export button. */
|
|
99
|
+
children?: React.ReactNode;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The strip above a table: one search box, a match count, your controls.
|
|
103
|
+
*
|
|
104
|
+
* The count is the part worth having as a component. "12/340" next to a filter
|
|
105
|
+
* box is the difference between "the table is empty" and "the filter is too
|
|
106
|
+
* tight", and it is the first thing left out of a hand-rolled toolbar.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* <DataTableToolbar value={q} onValueChange={setQ} count={table.getRowCount()} total={data.length}>
|
|
110
|
+
* <Button variant="ghost" size="sm">Export</Button>
|
|
111
|
+
* </DataTableToolbar>
|
|
112
|
+
*/
|
|
113
|
+
declare const DataTableToolbar: React.ForwardRefExoticComponent<DataTableToolbarProps & React.RefAttributes<HTMLDivElement>>;
|
|
114
|
+
/**
|
|
115
|
+
* The slice of a table instance the pager reads.
|
|
116
|
+
*
|
|
117
|
+
* Structural rather than generic so `DataTablePagination` never has to be
|
|
118
|
+
* parameterised by `TData` — and so a server-paginated table that is not a
|
|
119
|
+
* TanStack instance at all can still use the control by supplying these seven
|
|
120
|
+
* members.
|
|
121
|
+
*/
|
|
122
|
+
interface DataTablePager {
|
|
123
|
+
getPageCount: () => number;
|
|
124
|
+
getRowCount: () => number;
|
|
125
|
+
getCanPreviousPage: () => boolean;
|
|
126
|
+
getCanNextPage: () => boolean;
|
|
127
|
+
firstPage: () => void;
|
|
128
|
+
previousPage: () => void;
|
|
129
|
+
nextPage: () => void;
|
|
130
|
+
lastPage: () => void;
|
|
131
|
+
readonly state: {
|
|
132
|
+
readonly pagination?: {
|
|
133
|
+
readonly pageIndex: number;
|
|
134
|
+
readonly pageSize: number;
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/** Names for the four pager buttons, for translation. */
|
|
139
|
+
interface DataTablePaginationLabels {
|
|
140
|
+
first: string;
|
|
141
|
+
previous: string;
|
|
142
|
+
next: string;
|
|
143
|
+
last: string;
|
|
144
|
+
}
|
|
145
|
+
interface DataTablePaginationProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
146
|
+
/** The table instance from {@link useCueTable}, or anything with the same seven members. */
|
|
147
|
+
table: DataTablePager;
|
|
148
|
+
/** Accessible names for the four buttons. */
|
|
149
|
+
labels?: Partial<DataTablePaginationLabels>;
|
|
150
|
+
/** Render the position readout. Defaults to `"2 / 7"`. */
|
|
151
|
+
formatPosition?: (page: number, pages: number) => string;
|
|
152
|
+
/** Render the row count. Defaults to `"340 rows"`. */
|
|
153
|
+
formatRowCount?: (rows: number) => string;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* The pager: four buttons, the position, and the row count.
|
|
157
|
+
*
|
|
158
|
+
* First and last are present because a console table is often sorted to put the
|
|
159
|
+
* interesting row at one end, and stepping there one page at a time is not a
|
|
160
|
+
* navigation strategy. Every button is an `IconButton` with a real accessible
|
|
161
|
+
* name — an arrow glyph alone announces as nothing.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* <DataTablePagination table={table} />
|
|
165
|
+
*/
|
|
166
|
+
declare const DataTablePagination: React.ForwardRefExoticComponent<DataTablePaginationProps & React.RefAttributes<HTMLDivElement>>;
|
|
167
|
+
//#endregion
|
|
168
|
+
export { CueTable, CueTableFeatures, DataTablePager, DataTablePagination, DataTablePaginationLabels, DataTablePaginationProps, DataTableToolbar, DataTableToolbarProps, UseCueTableOptions, createCueColumnHelper, cueTableFeatures, flexRender, useCueTable };
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { IconButton } from "../primitives/icon-button.js";
|
|
4
|
+
import { SearchInput } from "../forms/search-input.js";
|
|
5
|
+
import { ChevronLeftGlyph, ChevronRightGlyph, ChevronsLeftGlyph, ChevronsRightGlyph } from "./_glyphs.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { columnFilteringFeature, createColumnHelper, createFilteredRowModel, createPaginatedRowModel, createSortedRowModel, filterFn_inNumberRange, filterFn_includesString, flexRender, globalFilteringFeature, rowPaginationFeature, rowSortingFeature, sortFn_alphanumeric, sortFn_basic, sortFn_datetime, sortFn_text, tableFeatures, useTable } from "@tanstack/react-table";
|
|
9
|
+
//#region src/instruments/data-table.tsx
|
|
10
|
+
/**
|
|
11
|
+
* The console table recipe. Not a component — deliberately.
|
|
12
|
+
*
|
|
13
|
+
* A `<DataTable columns={…} data={…} />` monolith has to own the markup of
|
|
14
|
+
* every cell, every header and every empty state, and the first column that
|
|
15
|
+
* needs a `Chip` or a `TwoStepButton` in it starts a prop-drilling arms race
|
|
16
|
+
* that ends with a component nobody can read. TanStack v9's whole point is that
|
|
17
|
+
* the markup stays yours and only the *logic* is shared, so what this module
|
|
18
|
+
* ships is the wiring:
|
|
19
|
+
*
|
|
20
|
+
* - {@link cueTableFeatures} — one opt-in feature set, so v9 can tree-shake
|
|
21
|
+
* everything the console does not use (grouping, faceting, pinning,
|
|
22
|
+
* virtualised column sizing).
|
|
23
|
+
* - {@link useCueTable} — that feature set, pre-bound, with sensible console
|
|
24
|
+
* defaults.
|
|
25
|
+
* - {@link createCueColumnHelper} — the column helper with the features
|
|
26
|
+
* already applied, so column defs infer.
|
|
27
|
+
* - {@link DataTableToolbar} / {@link DataTablePagination} — the two pieces of
|
|
28
|
+
* chrome every table needs and nobody enjoys writing twice.
|
|
29
|
+
*
|
|
30
|
+
* The rows render through the Phase 1 `Table`. There is a fully worked example
|
|
31
|
+
* in `test/instruments/data-table.test.tsx`.
|
|
32
|
+
*
|
|
33
|
+
* Ships from `@cueplusplus/ui/instruments/data-table`: `@tanstack/react-table`
|
|
34
|
+
* is an optional peer, and the core bundle must not require it.
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Sorting, column filtering, global filtering and pagination — and nothing
|
|
38
|
+
* else.
|
|
39
|
+
*
|
|
40
|
+
* Named functions are registered individually rather than by spreading the
|
|
41
|
+
* built-in registries, because spreading puts every sort and filter
|
|
42
|
+
* implementation in the bundle whether or not a column names one.
|
|
43
|
+
*/
|
|
44
|
+
const cueTableFeatures = tableFeatures({
|
|
45
|
+
columnFilteringFeature,
|
|
46
|
+
globalFilteringFeature,
|
|
47
|
+
rowPaginationFeature,
|
|
48
|
+
rowSortingFeature,
|
|
49
|
+
filteredRowModel: createFilteredRowModel(),
|
|
50
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
51
|
+
sortedRowModel: createSortedRowModel(),
|
|
52
|
+
filterFns: {
|
|
53
|
+
includesString: filterFn_includesString,
|
|
54
|
+
inNumberRange: filterFn_inNumberRange
|
|
55
|
+
},
|
|
56
|
+
sortFns: {
|
|
57
|
+
alphanumeric: sortFn_alphanumeric,
|
|
58
|
+
basic: sortFn_basic,
|
|
59
|
+
datetime: sortFn_datetime,
|
|
60
|
+
text: sortFn_text
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* A TanStack v9 table wired for the console.
|
|
65
|
+
*
|
|
66
|
+
* Adds one default on top of the feature set: `globalFilterFn: "includesString"`,
|
|
67
|
+
* which is what a single search box over a console table always means. Override
|
|
68
|
+
* it, or any other option, by passing it.
|
|
69
|
+
*
|
|
70
|
+
* @param options - Everything `useTable` takes except `features`.
|
|
71
|
+
* @returns The table instance, ready to render through `Table`.
|
|
72
|
+
* @example
|
|
73
|
+
* const table = useCueTable({ data, columns, state: { globalFilter }, onGlobalFilterChange });
|
|
74
|
+
*/
|
|
75
|
+
function useCueTable(options) {
|
|
76
|
+
return useTable({
|
|
77
|
+
features: cueTableFeatures,
|
|
78
|
+
globalFilterFn: "includesString",
|
|
79
|
+
...options
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A column helper with {@link cueTableFeatures} already bound.
|
|
84
|
+
*
|
|
85
|
+
* @returns TanStack's `accessor` / `display` / `group` / `columns` builders.
|
|
86
|
+
* @example
|
|
87
|
+
* const helper = createCueColumnHelper<Fixture>();
|
|
88
|
+
* const columns = [helper.accessor("name", { header: "Fixture" })];
|
|
89
|
+
*/
|
|
90
|
+
function createCueColumnHelper() {
|
|
91
|
+
return createColumnHelper();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The strip above a table: one search box, a match count, your controls.
|
|
95
|
+
*
|
|
96
|
+
* The count is the part worth having as a component. "12/340" next to a filter
|
|
97
|
+
* box is the difference between "the table is empty" and "the filter is too
|
|
98
|
+
* tight", and it is the first thing left out of a hand-rolled toolbar.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* <DataTableToolbar value={q} onValueChange={setQ} count={table.getRowCount()} total={data.length}>
|
|
102
|
+
* <Button variant="ghost" size="sm">Export</Button>
|
|
103
|
+
* </DataTableToolbar>
|
|
104
|
+
*/
|
|
105
|
+
const DataTableToolbar = React.forwardRef(function DataTableToolbar({ className, value, onValueChange, placeholder = "Filter…", searchLabel = "Filter rows", count, total, children, ...elementProps }, ref) {
|
|
106
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
107
|
+
ref,
|
|
108
|
+
"data-slot": "data-table-toolbar",
|
|
109
|
+
className: cn("flex min-w-0 items-center gap-(--cue-space-3) py-(--cue-space-3)", className),
|
|
110
|
+
...elementProps,
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ jsx(SearchInput, {
|
|
113
|
+
size: "sm",
|
|
114
|
+
"aria-label": searchLabel,
|
|
115
|
+
placeholder,
|
|
116
|
+
value,
|
|
117
|
+
onValueChange,
|
|
118
|
+
className: "max-w-[16rem] min-w-0 flex-1"
|
|
119
|
+
}),
|
|
120
|
+
count === void 0 || total === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
121
|
+
"data-slot": "data-table-count",
|
|
122
|
+
className: "shrink-0 font-mono text-(length:--cue-text-label) tabular-nums text-fg-subtle",
|
|
123
|
+
children: `${count}/${total}`
|
|
124
|
+
}),
|
|
125
|
+
children === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
126
|
+
className: "ml-auto flex shrink-0 items-center gap-(--cue-space-2)",
|
|
127
|
+
children
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
const DEFAULT_PAGER_LABELS = {
|
|
133
|
+
first: "First page",
|
|
134
|
+
previous: "Previous page",
|
|
135
|
+
next: "Next page",
|
|
136
|
+
last: "Last page"
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* The pager: four buttons, the position, and the row count.
|
|
140
|
+
*
|
|
141
|
+
* First and last are present because a console table is often sorted to put the
|
|
142
|
+
* interesting row at one end, and stepping there one page at a time is not a
|
|
143
|
+
* navigation strategy. Every button is an `IconButton` with a real accessible
|
|
144
|
+
* name — an arrow glyph alone announces as nothing.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* <DataTablePagination table={table} />
|
|
148
|
+
*/
|
|
149
|
+
const DataTablePagination = React.forwardRef(function DataTablePagination({ className, table, labels, formatPosition = (page, pages) => `${page} / ${pages}`, formatRowCount = (rows) => `${rows} row${rows === 1 ? "" : "s"}`, ...elementProps }, ref) {
|
|
150
|
+
const names = {
|
|
151
|
+
...DEFAULT_PAGER_LABELS,
|
|
152
|
+
...labels
|
|
153
|
+
};
|
|
154
|
+
const pages = Math.max(1, table.getPageCount());
|
|
155
|
+
const page = (table.state.pagination?.pageIndex ?? 0) + 1;
|
|
156
|
+
const canPrevious = table.getCanPreviousPage();
|
|
157
|
+
const canNext = table.getCanNextPage();
|
|
158
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
159
|
+
ref,
|
|
160
|
+
"data-slot": "data-table-pagination",
|
|
161
|
+
className: cn("flex min-w-0 items-center gap-(--cue-space-3) py-(--cue-space-3) font-mono text-(length:--cue-text-label) text-fg-subtle", className),
|
|
162
|
+
...elementProps,
|
|
163
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
164
|
+
"data-slot": "data-table-rows",
|
|
165
|
+
className: "tabular-nums",
|
|
166
|
+
children: formatRowCount(table.getRowCount())
|
|
167
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
168
|
+
className: "ml-auto flex items-center gap-(--cue-space-1)",
|
|
169
|
+
children: [
|
|
170
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
171
|
+
size: "sm",
|
|
172
|
+
variant: "ghost",
|
|
173
|
+
"aria-label": names.first,
|
|
174
|
+
icon: ChevronsLeftGlyph,
|
|
175
|
+
disabled: !canPrevious,
|
|
176
|
+
onClick: () => table.firstPage()
|
|
177
|
+
}),
|
|
178
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
179
|
+
size: "sm",
|
|
180
|
+
variant: "ghost",
|
|
181
|
+
"aria-label": names.previous,
|
|
182
|
+
icon: ChevronLeftGlyph,
|
|
183
|
+
disabled: !canPrevious,
|
|
184
|
+
onClick: () => table.previousPage()
|
|
185
|
+
}),
|
|
186
|
+
/* @__PURE__ */ jsx("span", {
|
|
187
|
+
"data-slot": "data-table-position",
|
|
188
|
+
className: "px-(--cue-space-3) tabular-nums text-fg",
|
|
189
|
+
children: formatPosition(page, pages)
|
|
190
|
+
}),
|
|
191
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
192
|
+
size: "sm",
|
|
193
|
+
variant: "ghost",
|
|
194
|
+
"aria-label": names.next,
|
|
195
|
+
icon: ChevronRightGlyph,
|
|
196
|
+
disabled: !canNext,
|
|
197
|
+
onClick: () => table.nextPage()
|
|
198
|
+
}),
|
|
199
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
200
|
+
size: "sm",
|
|
201
|
+
variant: "ghost",
|
|
202
|
+
"aria-label": names.last,
|
|
203
|
+
icon: ChevronsRightGlyph,
|
|
204
|
+
disabled: !canNext,
|
|
205
|
+
onClick: () => table.lastPage()
|
|
206
|
+
})
|
|
207
|
+
]
|
|
208
|
+
})]
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
//#endregion
|
|
212
|
+
export { DataTablePagination, DataTableToolbar, createCueColumnHelper, cueTableFeatures, flexRender, useCueTable };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/data-tree.d.ts
|
|
3
|
+
/** What a row knows about itself when its content is a function. */
|
|
4
|
+
interface DataTreeRowState {
|
|
5
|
+
/** Depth from the roots; `0` for a root. */
|
|
6
|
+
level: number;
|
|
7
|
+
/** Whether the node declares children at all. */
|
|
8
|
+
hasChildren: boolean;
|
|
9
|
+
/** Whether those children are currently shown. */
|
|
10
|
+
expanded: boolean;
|
|
11
|
+
/** Whether this row is the selected one. */
|
|
12
|
+
selected: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** One node of the tree: an identity, a row's worth of content, and children. */
|
|
15
|
+
interface DataTreeItem {
|
|
16
|
+
/** Stable identity: what selection, expansion and focus are keyed on. */
|
|
17
|
+
id: string;
|
|
18
|
+
/**
|
|
19
|
+
* The row's content — normally `DataRow` slots, in the same order and with
|
|
20
|
+
* the same tracks as the other idioms drawing this dataset.
|
|
21
|
+
*
|
|
22
|
+
* A function receives the row's own state, for the cases where the content
|
|
23
|
+
* differs by it: a count that only shows while a node is folded, a different
|
|
24
|
+
* marker for an expanded parent.
|
|
25
|
+
*/
|
|
26
|
+
row: React.ReactNode | ((state: DataTreeRowState) => React.ReactNode);
|
|
27
|
+
/**
|
|
28
|
+
* Nested nodes. An empty array still makes the row a parent — an empty folder
|
|
29
|
+
* is a folder, and `aria-expanded` on it is the truth.
|
|
30
|
+
*/
|
|
31
|
+
children?: readonly DataTreeItem[];
|
|
32
|
+
/** Grey the row out; it stays reachable by keyboard but cannot be selected. */
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
}
|
|
35
|
+
interface DataTreeProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onSelect"> {
|
|
36
|
+
/** The roots, in display order. */
|
|
37
|
+
items: readonly DataTreeItem[];
|
|
38
|
+
/** Expanded ids when controlled. Pass with `onExpandedChange`. */
|
|
39
|
+
expanded?: readonly string[];
|
|
40
|
+
/** Initially expanded ids when uncontrolled. */
|
|
41
|
+
defaultExpanded?: readonly string[];
|
|
42
|
+
/** Called with the whole next expanded set whenever a row is folded or unfolded. */
|
|
43
|
+
onExpandedChange?: (expanded: string[]) => void;
|
|
44
|
+
/** Selected id when controlled. Pass with `onSelect`. */
|
|
45
|
+
selected?: string | null;
|
|
46
|
+
/** Initially selected id when uncontrolled. */
|
|
47
|
+
defaultSelected?: string | null;
|
|
48
|
+
/** Called with the id of the row the user selected. */
|
|
49
|
+
onSelect?: (id: string) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Draw the depth guides. Defaults to `true`.
|
|
52
|
+
*
|
|
53
|
+
* Roots never draw one — there is no ancestor to draw — so a flat tree draws
|
|
54
|
+
* none at all whatever this is set to.
|
|
55
|
+
*/
|
|
56
|
+
guides?: boolean;
|
|
57
|
+
/** Accessible name for the tree. Required in practice — name what it lists. */
|
|
58
|
+
"aria-label"?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A hierarchy of multi-column rows: the tree idiom over the `DataRow` anatomy.
|
|
62
|
+
*
|
|
63
|
+
* ## The ARIA pattern, chosen before the component was written
|
|
64
|
+
*
|
|
65
|
+
* `role="treegrid"` is **rejected** for this foundation. It is the semantically
|
|
66
|
+
* exact answer — tabular *and* hierarchical — and it is the one with the worst
|
|
67
|
+
* real-world assistive-technology record: Adrian Roselli's survey of expando
|
|
68
|
+
* tables calls its support poor and notes that the APG's own worked example
|
|
69
|
+
* carries unresolved issues; fancytree's maintainer describes treegrid support
|
|
70
|
+
* as unproven ground; MUI X shipped hierarchical rows with no `aria-level` /
|
|
71
|
+
* `aria-expanded` / `aria-setsize` at all and retrofitted them later. Treegrid
|
|
72
|
+
* earns its cost when cells are individually interactive or editable, because
|
|
73
|
+
* then a reader genuinely needs two-dimensional cell navigation. This surface is
|
|
74
|
+
* read-and-navigate: you move down rows, fold a branch, and open the thing a row
|
|
75
|
+
* names.
|
|
76
|
+
*
|
|
77
|
+
* So the pattern is `role="tree"` with `role="treeitem"` rows — VS Code's
|
|
78
|
+
* choice and Carbon's, and the best-supported composite pattern in ARIA:
|
|
79
|
+
*
|
|
80
|
+
* - A **flat DOM** with `aria-level` / `aria-posinset` / `aria-setsize` per row
|
|
81
|
+
* rather than nested `role="group"` wrappers.
|
|
82
|
+
* - **Roving tabindex**: the tree is one Tab stop and the arrows move inside it.
|
|
83
|
+
* - The **APG tree keyboard map**: Up/Down between visible rows, Home/End to the
|
|
84
|
+
* ends, Right to unfold then to descend, Left to fold then to ascend,
|
|
85
|
+
* Enter/Space to select.
|
|
86
|
+
* - Expansion lives on the **row**, as `aria-expanded` on the `treeitem` — that
|
|
87
|
+
* is what tree semantics mean by a parent, and it is why the chevron here is
|
|
88
|
+
* `role="presentation"` rather than a button. (The other half of this trade
|
|
89
|
+
* is `Table.GroupRow`, where the table's semantics own the grouping and a real
|
|
90
|
+
* `<button aria-expanded>` owns the disclosure. Two patterns, each internally
|
|
91
|
+
* consistent; what would be wrong is half of each.)
|
|
92
|
+
*
|
|
93
|
+
* **The documented trade**: columns are not independently navigable. A row's
|
|
94
|
+
* multi-column content lives *inside* the treeitem, so a screen-reader user
|
|
95
|
+
* hears the row as one string rather than moving cell to cell through it. For a
|
|
96
|
+
* dense browse-and-open surface that is the better bargain — `tree` works today
|
|
97
|
+
* on every screen reader, `treegrid` does not — but a surface whose cells are
|
|
98
|
+
* genuinely editable has outgrown this component and wants a real treegrid from
|
|
99
|
+
* a library that maintains one.
|
|
100
|
+
*
|
|
101
|
+
* ## Everything else
|
|
102
|
+
*
|
|
103
|
+
* Rows are the `DataRow` chassis: same padding, same hairline, same hover wash,
|
|
104
|
+
* same inset focus ring, same `group/data-row`, so `DataRow.Actions` reveals in
|
|
105
|
+
* a tree exactly as it does in a ledger. The row element itself is the
|
|
106
|
+
* treeitem — one element owns focus, expansion, selection and the click reading
|
|
107
|
+
* — and the caller's `DataRow.*` slots are its content.
|
|
108
|
+
*
|
|
109
|
+
* A tree whose items declare no children anywhere is a flat list: no chevrons,
|
|
110
|
+
* no spacer column where a chevron would be, no guides, and `aria-expanded` on
|
|
111
|
+
* nothing. A leaf row that carried `aria-expanded="false"` would tell a screen
|
|
112
|
+
* reader it has children it does not have.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* <DataTree
|
|
116
|
+
* aria-label="Patch"
|
|
117
|
+
* items={nodes}
|
|
118
|
+
* defaultExpanded={["inputs"]}
|
|
119
|
+
* selected={selected}
|
|
120
|
+
* onSelect={setSelected}
|
|
121
|
+
* className="[--cue-data-row-cols:1fr_8rem_auto]"
|
|
122
|
+
* />
|
|
123
|
+
*/
|
|
124
|
+
declare const DataTree: React.ForwardRefExoticComponent<DataTreeProps & React.RefAttributes<HTMLDivElement>>;
|
|
125
|
+
//#endregion
|
|
126
|
+
export { DataTree, DataTreeItem, DataTreeProps, DataTreeRowState };
|