@digithings-ai/ui 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -2
- package/package.json +143 -4
- package/src/components/NavShell.tsx +776 -0
- package/src/components/SocialRow.tsx +87 -0
- package/src/components/Spinner.tsx +27 -0
- package/src/components/StackLogo.tsx +40 -0
- package/src/components/Terminal.tsx +110 -0
- package/src/components/TerminalManifest.tsx +212 -0
- package/src/components/ThemeProvider.tsx +271 -0
- package/src/components/account/AuthCard.tsx +309 -0
- package/src/components/assistant-ui/elements/mermaid-diagram.aui.tsx +63 -0
- package/src/components/assistant-ui/elements/mermaid-diagram.tsx +340 -0
- package/src/components/brand/BrandWordmark.tsx +32 -0
- package/src/components/changelog/ReleaseRail.tsx +81 -0
- package/src/components/changelog/index.ts +1 -0
- package/src/components/chat/ChatCodeBlock.tsx +67 -0
- package/src/components/chat/ChatMarkdown.tsx +66 -0
- package/src/components/chat/ChatMarkdownSource.tsx +203 -0
- package/src/components/chat/ChatMermaidBlock.tsx +202 -0
- package/src/components/chat/ChatMessage.tsx +77 -0
- package/src/components/chat/ChatPlayback.tsx +422 -0
- package/src/components/chat/ChatStreamCursor.tsx +25 -0
- package/src/components/chat/ChatThinking.tsx +113 -0
- package/src/components/chat/ChatToolCall.tsx +190 -0
- package/src/components/chat/ChatTranscript.tsx +60 -0
- package/src/components/chat/ChatWidgetFrame.tsx +107 -0
- package/src/components/chat/DigichatBootLoader.tsx +683 -0
- package/src/components/chat/DigichatLauncher.tsx +361 -0
- package/src/components/chat/DigichatThread.tsx +118 -0
- package/src/components/chat/DigichatThreadList.tsx +54 -0
- package/src/components/chat/DigichatWordmark.tsx +24 -0
- package/src/components/chat/DotMatrix.tsx +650 -0
- package/src/components/chat/boot-lab.tsx +766 -0
- package/src/components/chat/boot-signal.ts +144 -0
- package/src/components/chat/chat-surfaces.ts +52 -0
- package/src/components/chat/connection-status.ts +40 -0
- package/src/components/chat/digichat-wordmark.ts +355 -0
- package/src/components/chat/disclosure-chevron.tsx +49 -0
- package/src/components/chat/followable-href.ts +9 -0
- package/src/components/chat/gallery-thread/action-icons.tsx +25 -0
- package/src/components/chat/gallery-thread/attachment.aui.tsx +262 -0
- package/src/components/chat/gallery-thread/block-caret.tsx +439 -0
- package/src/components/chat/gallery-thread/cn.ts +1 -0
- package/src/components/chat/gallery-thread/composer-keyboard.ts +106 -0
- package/src/components/chat/gallery-thread/composer-trigger-popover.aui.tsx +235 -0
- package/src/components/chat/gallery-thread/css.d.ts +6 -0
- package/src/components/chat/gallery-thread/file.tsx +238 -0
- package/src/components/chat/gallery-thread/follow-up-suggestions.aui.tsx +92 -0
- package/src/components/chat/gallery-thread/format-json-dump.ts +112 -0
- package/src/components/chat/gallery-thread/hooks/use-attachment-src.ts +46 -0
- package/src/components/chat/gallery-thread/hooks/use-copy-to-clipboard.ts +9 -0
- package/src/components/chat/gallery-thread/image.tsx +519 -0
- package/src/components/chat/gallery-thread/markdown-text.tsx +278 -0
- package/src/components/chat/gallery-thread/message-error.aui.tsx +105 -0
- package/src/components/chat/gallery-thread/message-timing.aui.tsx +143 -0
- package/src/components/chat/gallery-thread/private-work-step.tsx +188 -0
- package/src/components/chat/gallery-thread/reasoning.tsx +332 -0
- package/src/components/chat/gallery-thread/scroll-mode.ts +174 -0
- package/src/components/chat/gallery-thread/source.tsx +76 -0
- package/src/components/chat/gallery-thread/thread.aui.tsx +1619 -0
- package/src/components/chat/gallery-thread/tooltip-icon-button.tsx +53 -0
- package/src/components/chat/gallery-thread/typed-welcome-copy.tsx +18 -0
- package/src/components/chat/gallery-thread/ui/tooltip.tsx +22 -0
- package/src/components/chat/gallery-thread/work-chain-summary.tsx +48 -0
- package/src/components/chat/gallery-thread/work-chain.tsx +110 -0
- package/src/components/chat/gallery-thread/work-status.ts +66 -0
- package/src/components/chat/overlay-scrollbar.tsx +86 -0
- package/src/components/chat/sanitize-mermaid-svg.ts +38 -0
- package/src/components/chat/skins/SOURCE.md +36 -0
- package/src/components/chat/skins/base/attachment.aui.tsx +287 -0
- package/src/components/chat/skins/base/aui-default/README.md +45 -0
- package/src/components/chat/skins/base/aui-default/collapsible-root.tsx +19 -0
- package/src/components/chat/skins/base/aui-default/collapsible.tsx +21 -0
- package/src/components/chat/skins/base/aui-default/reasoning.aui.tsx +120 -0
- package/src/components/chat/skins/base/aui-default/reasoning.tsx +331 -0
- package/src/components/chat/skins/base/aui-default/surfaces.ts +7 -0
- package/src/components/chat/skins/base/aui-default/tool-fallback.aui.tsx +772 -0
- package/src/components/chat/skins/base/aui-default/tool-group.aui.tsx +241 -0
- package/src/components/chat/skins/base/docs-model-options.ts +6 -0
- package/src/components/chat/skins/base/elements/assistant-trace.aui.tsx +169 -0
- package/src/components/chat/skins/base/elements/composer-trigger-popover.aui.tsx +271 -0
- package/src/components/chat/skins/base/elements/directive-text.aui.tsx +29 -0
- package/src/components/chat/skins/base/elements/directive-text.tsx +76 -0
- package/src/components/chat/skins/base/elements/message-timing.aui.tsx +104 -0
- package/src/components/chat/skins/base/elements/model-selector.aui.tsx +140 -0
- package/src/components/chat/skins/base/elements/model-selector.tsx +720 -0
- package/src/components/chat/skins/base/elements/quote.aui.tsx +290 -0
- package/src/components/chat/skins/base/elements/work-chain.tsx +100 -0
- package/src/components/chat/skins/base/markdown-text.tsx +294 -0
- package/src/components/chat/skins/base/model.ts +1 -0
- package/src/components/chat/skins/base/thread.tsx +1050 -0
- package/src/components/chat/skins/base/tooltip-icon-button.tsx +56 -0
- package/src/components/chat/skins/base/ui/avatar.tsx +115 -0
- package/src/components/chat/skins/base/ui/badge.tsx +51 -0
- package/src/components/chat/skins/base/ui/button.tsx +67 -0
- package/src/components/chat/skins/base/ui/command.tsx +185 -0
- package/src/components/chat/skins/base/ui/dialog.tsx +168 -0
- package/src/components/chat/skins/base/ui/dot-matrix.tsx +267 -0
- package/src/components/chat/skins/base/ui/popover.tsx +97 -0
- package/src/components/chat/skins/base/ui/skeleton.tsx +20 -0
- package/src/components/chat/skins/base/ui/textarea.tsx +24 -0
- package/src/components/chat/skins/base/ui/tooltip.tsx +73 -0
- package/src/components/chat/skins/base-assistant-ui/config-provider.tsx +90 -0
- package/src/components/chat/skins/base-assistant-ui/defaults.ts +419 -0
- package/src/components/chat/skins/base-assistant-ui/index.tsx +44 -0
- package/src/components/chat/skins/chatgpt.tsx +448 -0
- package/src/components/chat/skins/claude.tsx +380 -0
- package/src/components/chat/skins/digichat-composer-toolbar.tsx +151 -0
- package/src/components/chat/skins/digichat-context-meter-shares.ts +158 -0
- package/src/components/chat/skins/digichat-context-meter.tsx +243 -0
- package/src/components/chat/skins/digichat-meter-tone.ts +26 -0
- package/src/components/chat/skins/digichat-usage-meter.tsx +103 -0
- package/src/components/chat/skins/digichat.tsx +144 -0
- package/src/components/chat/skins/expo-react-native.tsx +29 -0
- package/src/components/chat/skins/gemini.tsx +322 -0
- package/src/components/chat/skins/grok-icon.tsx +34 -0
- package/src/components/chat/skins/grok.tsx +369 -0
- package/src/components/chat/skins/index.ts +46 -0
- package/src/components/chat/skins/perplexity.tsx +462 -0
- package/src/components/chat/skins/product-page-assistant/assistant-modal.tsx +73 -0
- package/src/components/chat/skins/product-page-assistant/index.tsx +19 -0
- package/src/components/chat/skins/product-page-assistant/product-dashboard.tsx +164 -0
- package/src/components/chat/skins/react-ink.tsx +97 -0
- package/src/components/chat/skins/thread-skin-host-contract.ts +102 -0
- package/src/components/chat/skins/thread-skin-view.tsx +156 -0
- package/src/components/chat/skins/thread-skins.ts +143 -0
- package/src/components/chat/skins/tooltip-icon-button.tsx +35 -0
- package/src/components/chat/skins/ui/dropdown-menu.tsx +272 -0
- package/src/components/chat/skins/webpage-assistant/assistant-config.ts +238 -0
- package/src/components/chat/skins/webpage-assistant/assistant-modal.tsx +78 -0
- package/src/components/chat/skins/webpage-assistant/config-provider.tsx +132 -0
- package/src/components/chat/skins/webpage-assistant/docs-app.tsx +106 -0
- package/src/components/chat/skins/webpage-assistant/docs-article.tsx +109 -0
- package/src/components/chat/skins/webpage-assistant/docs-assistant.tsx +73 -0
- package/src/components/chat/skins/webpage-assistant/docs-nav.tsx +81 -0
- package/src/components/chat/skins/webpage-assistant/host-ui.ts +79 -0
- package/src/components/chat/skins/webpage-assistant/index.tsx +12 -0
- package/src/components/chat/skins/webpage-assistant/markdown-page.tsx +11 -0
- package/src/components/chat/skins/webpage-assistant/pages.ts +9 -0
- package/src/components/chat/skins/webpage-assistant/types.ts +178 -0
- package/src/components/chat/skins/webpage-assistant/use-mobile.ts +19 -0
- package/src/components/chat/stock/SOURCE.md +90 -0
- package/src/components/chat/stock/artifacts-panel.tsx +305 -0
- package/src/components/chat/stock/attachment.aui.tsx +280 -0
- package/src/components/chat/stock/chat-notice.tsx +143 -0
- package/src/components/chat/stock/chat-private-mode.tsx +64 -0
- package/src/components/chat/stock/deploy-ui-context.tsx +89 -0
- package/src/components/chat/stock/embed-chat-prefs.tsx +471 -0
- package/src/components/chat/stock/file.tsx +265 -0
- package/src/components/chat/stock/follow-up-suggestions.aui.tsx +83 -0
- package/src/components/chat/stock/image.tsx +531 -0
- package/src/components/chat/stock/index.ts +129 -0
- package/src/components/chat/stock/json-view.tsx +140 -0
- package/src/components/chat/stock/markdown-text.tsx +319 -0
- package/src/components/chat/stock/message-error.aui.tsx +96 -0
- package/src/components/chat/stock/message-export-menu.tsx +156 -0
- package/src/components/chat/stock/palette-row-preview.tsx +26 -0
- package/src/components/chat/stock/reasoning.aui.tsx +120 -0
- package/src/components/chat/stock/reasoning.tsx +335 -0
- package/src/components/chat/stock/skin-chrome.tsx +81 -0
- package/src/components/chat/stock/skin-credit.tsx +63 -0
- package/src/components/chat/stock/skin-palette-bridge.tsx +235 -0
- package/src/components/chat/stock/skin-palette-context.ts +16 -0
- package/src/components/chat/stock/skin-runtime.tsx +52 -0
- package/src/components/chat/stock/skin-slash-palette.tsx +393 -0
- package/src/components/chat/stock/skin-types.ts +217 -0
- package/src/components/chat/stock/stock-chat-prefs-host.tsx +501 -0
- package/src/components/chat/stock/stock-send-gate.tsx +94 -0
- package/src/components/chat/stock/stock-shape.tsx +39 -0
- package/src/components/chat/stock/thread.aui.tsx +645 -0
- package/src/components/chat/stock/tool-display.ts +6 -0
- package/src/components/chat/stock/tool-fallback.aui.tsx +866 -0
- package/src/components/chat/stock/tool-group.aui.tsx +244 -0
- package/src/components/chat/stock/tool-surface.ts +120 -0
- package/src/components/chat/stock/tooltip-icon-button.tsx +49 -0
- package/src/components/chat/stock/ui/avatar.tsx +108 -0
- package/src/components/chat/stock/ui/button.tsx +81 -0
- package/src/components/chat/stock/ui/collapsible.tsx +21 -0
- package/src/components/chat/stock/ui/dialog.tsx +163 -0
- package/src/components/chat/stock/ui/skeleton.tsx +13 -0
- package/src/components/chat/stock/ui/textarea.tsx +20 -0
- package/src/components/chat/stock/ui/tooltip.tsx +68 -0
- package/src/components/chat/stock/use-attachment-src.ts +42 -0
- package/src/components/chat/stock/use-copy-to-clipboard.ts +29 -0
- package/src/components/chat/strip-model-boilerplate.ts +42 -0
- package/src/components/chat/suggestion-cycle.tsx +230 -0
- package/src/components/chat/suggestion-scroll-row.tsx +81 -0
- package/src/components/chat/trace-grouping/chain-group-by.ts +44 -0
- package/src/components/chat/trace-grouping/chain-state.ts +141 -0
- package/src/components/chat/trace-grouping/index.ts +32 -0
- package/src/components/chat/trace-grouping/tool-row.ts +74 -0
- package/src/components/chat/trace-grouping/use-deploy-work-disclosure.ts +35 -0
- package/src/components/chat/trace-grouping/use-work-chain.ts +103 -0
- package/src/components/chat/trace-i18n/core.ts +48 -0
- package/src/components/chat/trace-i18n/index.tsx +23 -0
- package/src/components/chat/trace-i18n/locales/en.ts +24 -0
- package/src/components/chat/trace-i18n/locales/fr.ts +28 -0
- package/src/components/chat/trace-i18n/types.ts +35 -0
- package/src/components/chat/trace-spacing.ts +249 -0
- package/src/components/chat/transcript/activity-view.ts +375 -0
- package/src/components/chat/transcript/chat-export.ts +133 -0
- package/src/components/chat/transcript/index.ts +10 -0
- package/src/components/chat/transcript/save-file.ts +209 -0
- package/src/components/chat/transcript/transcript-markdown.ts +428 -0
- package/src/components/chat/transcript/types.ts +81 -0
- package/src/components/chat/turn-outcome.ts +52 -0
- package/src/components/chat/use-warmup-phase.ts +18 -0
- package/src/components/chat/work-status-lead.tsx +49 -0
- package/src/components/chrome.tsx +264 -0
- package/src/components/command-palette/CommandPalette.tsx +404 -0
- package/src/components/command-palette/index.ts +6 -0
- package/src/components/contact/ContactMailto.tsx +112 -0
- package/src/components/contact/index.ts +5 -0
- package/src/components/conviction/ConvictionMeter.tsx +40 -0
- package/src/components/conviction/SignedConvictionBadge.tsx +26 -0
- package/src/components/conviction/index.ts +7 -0
- package/src/components/data-layout/BentoGrid.tsx +52 -0
- package/src/components/data-layout/CardRail.tsx +150 -0
- package/src/components/data-layout/DotMatrixStat.tsx +65 -0
- package/src/components/data-layout/FeatureCell.tsx +80 -0
- package/src/components/data-layout/MediaFrame.tsx +125 -0
- package/src/components/data-layout/ModuleGrid.tsx +735 -0
- package/src/components/data-layout/Odometer.tsx +149 -0
- package/src/components/data-layout/ProductFrame.tsx +79 -0
- package/src/components/data-layout/TestimonialWall.tsx +139 -0
- package/src/components/data-layout/index.ts +19 -0
- package/src/components/data-layout/treemap.ts +368 -0
- package/src/components/deck/DeckStack.tsx +243 -0
- package/src/components/desk/DataTable.tsx +373 -0
- package/src/components/desk/KpiGrid.tsx +80 -0
- package/src/components/desk/Sparkline.tsx +63 -0
- package/src/components/desk/StateBlock.tsx +132 -0
- package/src/components/desk/index.ts +18 -0
- package/src/components/diagrams/ArchitectureDiagram.tsx +350 -0
- package/src/components/diagrams/ArchitectureTour.tsx +912 -0
- package/src/components/diagrams/TerminalSchematic.tsx +192 -0
- package/src/components/diagrams/architecture-svg.tsx +384 -0
- package/src/components/diagrams/index.ts +30 -0
- package/src/components/diagrams/mermaid-theme.ts +115 -0
- package/src/components/diagrams/tour-camera.ts +171 -0
- package/src/components/docs/CodeTabs.tsx +90 -0
- package/src/components/docs/CopyCommand.tsx +151 -0
- package/src/components/docs/DocsLayout.tsx +197 -0
- package/src/components/docs/DocsSearch.tsx +97 -0
- package/src/components/docs/Endpoint.tsx +135 -0
- package/src/components/document/DocumentFrame.tsx +43 -0
- package/src/components/document/GlyphList.tsx +51 -0
- package/src/components/document/PageTitle.tsx +44 -0
- package/src/components/document/Prose.tsx +38 -0
- package/src/components/document/Section.tsx +55 -0
- package/src/components/document/index.ts +13 -0
- package/src/components/effects-chrome/AnnouncementBar.tsx +88 -0
- package/src/components/effects-chrome/HorizontalScrollTrack.tsx +461 -0
- package/src/components/effects-chrome/Pipeline.tsx +226 -0
- package/src/components/effects-chrome/RotatingPrompts.tsx +116 -0
- package/src/components/effects-chrome/StackingPanels.tsx +101 -0
- package/src/components/effects-chrome/TabStrip.tsx +232 -0
- package/src/components/effects-chrome/ToastStack.tsx +201 -0
- package/src/components/effects-chrome/horizontal-track-core.ts +70 -0
- package/src/components/effects-chrome/index.ts +35 -0
- package/src/components/emblems.tsx +188 -0
- package/src/components/faviconTheme.ts +23 -0
- package/src/components/figure/Figure.tsx +38 -0
- package/src/components/figure/index.ts +2 -0
- package/src/components/finance-charts/DrawdownPlot.tsx +76 -0
- package/src/components/finance-charts/EquityCurve.tsx +71 -0
- package/src/components/finance-charts/PriceChart.tsx +119 -0
- package/src/components/finance-charts/chart-host.tsx +236 -0
- package/src/components/finance-charts/chart-scale.ts +93 -0
- package/src/components/finance-charts/demo-data.ts +88 -0
- package/src/components/finance-charts/index.ts +46 -0
- package/src/components/finance-charts/lw-chart.tsx +292 -0
- package/src/components/finance-composites/MarketBar.tsx +243 -0
- package/src/components/finance-composites/OrderBook.tsx +133 -0
- package/src/components/finance-composites/PerformanceDashboard.tsx +185 -0
- package/src/components/finance-composites/SortableTable.tsx +144 -0
- package/src/components/finance-composites/StockTicker.tsx +65 -0
- package/src/components/finance-composites/SyncedTearsheet.tsx +226 -0
- package/src/components/finance-composites/index.ts +28 -0
- package/src/components/finance-tearsheet/KpiStrip.tsx +49 -0
- package/src/components/finance-tearsheet/LiveBadge.tsx +29 -0
- package/src/components/finance-tearsheet/ReturnsMatrix.tsx +321 -0
- package/src/components/finance-tearsheet/StrategyTearsheet.tsx +99 -0
- package/src/components/finance-tearsheet/TearsheetCard.tsx +54 -0
- package/src/components/finance-tearsheet/TradeLogTable.tsx +73 -0
- package/src/components/finance-tearsheet/charts.tsx +2624 -0
- package/src/components/finance-tearsheet/demo-data.ts +177 -0
- package/src/components/finance-tearsheet/format.ts +41 -0
- package/src/components/finance-tearsheet/index.ts +120 -0
- package/src/components/finance-tearsheet/print.ts +52 -0
- package/src/components/finance-tearsheet/risk-bands.ts +48 -0
- package/src/components/finance-tearsheet/stats.ts +35 -0
- package/src/components/finance-tearsheet/strategy-sheet-model.ts +238 -0
- package/src/components/finance-tearsheet/types.ts +58 -0
- package/src/components/footer/FooterCells.tsx +109 -0
- package/src/components/footer/index.ts +6 -0
- package/src/components/graph.tsx +158 -0
- package/src/components/icons.tsx +98 -0
- package/src/components/landing/PixelWordmark.tsx +36 -0
- package/src/components/logos.ts +39 -0
- package/src/components/marquee/Marquee.tsx +204 -0
- package/src/components/metrics/PerfMetrics.tsx +68 -0
- package/src/components/metrics/StatCounter.tsx +104 -0
- package/src/components/page-geometry.tsx +177 -0
- package/src/components/pricing/Pricing.tsx +174 -0
- package/src/components/pricing/PricingMatrix.tsx +219 -0
- package/src/components/prose/index.ts +2 -0
- package/src/components/prose/prose.tsx +86 -0
- package/src/components/repo-activity/RepoActivity.tsx +599 -0
- package/src/components/repo-activity/RepoHeatmap.tsx +225 -0
- package/src/components/repo-activity/demo.ts +201 -0
- package/src/components/repo-activity/fetch.ts +211 -0
- package/src/components/repo-activity/heatmap.ts +123 -0
- package/src/components/repo-activity/index.ts +28 -0
- package/src/components/repo-activity/types.ts +99 -0
- package/src/components/stages/NumberedStages.tsx +116 -0
- package/src/components/symbols/marks.tsx +116 -0
- package/src/components/symbols/terminal-lockup.tsx +136 -0
- package/src/components/symbols/terminal-marks.tsx +226 -0
- package/src/components/terminal/ChatResponseLoader.tsx +67 -0
- package/src/components/terminal/ContainerBootLoader.tsx +82 -0
- package/src/components/terminal/TerminalStepCaret.tsx +202 -0
- package/src/components/themeInit.ts +24 -0
- package/src/components/typography/MotionReveal.tsx +108 -0
- package/src/components/typography/TypewriterReveal.tsx +101 -0
- package/src/components/typography/WordReveal.tsx +143 -0
- package/src/data/modules.ts +378 -0
- package/src/data/subsystems.ts +101 -0
- package/src/index.ts +587 -0
- package/src/lib/base-path.ts +60 -0
- package/src/lib/cx.ts +25 -0
- package/src/lib/gloomberb.ts +69 -0
- package/src/lib/record.ts +19 -0
- package/src/lib/stub-payload.ts +183 -0
- package/src/lib/useBodyScrollLock.ts +44 -0
- package/src/lib/utils.ts +6 -0
- package/src/motion/primitives.tsx +105 -0
- package/src/motion/scroll-glide.ts +62 -0
- package/src/motion/scrolly-core.ts +38 -0
- package/src/motion/scrolly.tsx +95 -0
- package/src/navigation/HashScrollManager.tsx +167 -0
- package/src/navigation/hashScroll.ts +78 -0
- package/src/replay/browser.ts +280 -0
- package/src/replay/chat-export-run.ts +121 -0
- package/src/replay/export-format.ts +25 -0
- package/src/replay/export-mount.ts +32 -0
- package/src/replay/filename.ts +54 -0
- package/src/replay/index.ts +21 -0
- package/src/replay/redact-dom.ts +178 -0
- package/src/replay/redact.ts +113 -0
- package/src/replay/snapshot.ts +659 -0
- package/src/styles/account-auth.css +339 -0
- package/src/styles/brand-wordmark.css +11 -0
- package/src/styles/card-rail.css +120 -0
- package/src/styles/chat-aui.css +1143 -0
- package/src/styles/chat-core.css +469 -0
- package/src/styles/chat-digichat.css +2531 -0
- package/src/styles/chat-math.css +70 -0
- package/src/styles/chat-skin-palette.css +138 -0
- package/src/styles/chat-stock-menu.css +37 -0
- package/src/styles/chat-widgets.css +190 -0
- package/src/styles/command-palette.css +372 -0
- package/src/styles/controls-core.css +2261 -0
- package/src/styles/controls-overlay.css +603 -0
- package/src/styles/data-layout.css +288 -0
- package/src/styles/deck.css +141 -0
- package/src/styles/diagrams.css +1860 -0
- package/src/styles/digichat-app-theme.css +250 -0
- package/src/styles/digichat-boot-loader.css +487 -0
- package/src/styles/digichat-launcher.css +377 -0
- package/src/styles/docs.css +165 -0
- package/src/styles/effects-chrome.css +888 -0
- package/src/styles/finance-composites.css +214 -0
- package/src/styles/finance-tearsheet-overlay.css +90 -0
- package/src/styles/finance-tearsheet.css +945 -0
- package/src/styles/marquee.css +168 -0
- package/src/styles/metrics.css +82 -0
- package/src/styles/nav-shell.css +551 -0
- package/src/styles/pricing.css +79 -0
- package/src/styles/repo-activity.css +575 -0
- package/src/styles/stages.css +69 -0
- package/src/styles/terminal-loaders.css +122 -0
- package/src/styles/terminal-manifest.css +228 -0
- package/src/styles/web-theme.css +1007 -0
- package/src/styles/word-reveal.css +204 -0
- package/src/theme/apply-theme.ts +214 -0
- package/src/theme/index.ts +27 -0
- package/src/theme/palette-registry.ts +855 -0
- package/src/theme/tui-prefs.ts +64 -0
- package/src/ui/alert.tsx +78 -0
- package/src/ui/avatar.tsx +104 -0
- package/src/ui/badge.tsx +75 -0
- package/src/ui/breadcrumb.tsx +61 -0
- package/src/ui/button.tsx +67 -0
- package/src/ui/card.tsx +139 -0
- package/src/ui/checkbox.tsx +27 -0
- package/src/ui/collapsible.tsx +32 -0
- package/src/ui/date-pager.tsx +325 -0
- package/src/ui/dialog.tsx +157 -0
- package/src/ui/dropdown-menu.tsx +267 -0
- package/src/ui/empty-state.tsx +165 -0
- package/src/ui/field.tsx +104 -0
- package/src/ui/form.tsx +36 -0
- package/src/ui/icon-button.tsx +36 -0
- package/src/ui/index.ts +34 -0
- package/src/ui/input.tsx +33 -0
- package/src/ui/kbd.tsx +30 -0
- package/src/ui/label.tsx +32 -0
- package/src/ui/pager.tsx +119 -0
- package/src/ui/pagination.tsx +126 -0
- package/src/ui/radio-group.tsx +51 -0
- package/src/ui/search-bar.tsx +85 -0
- package/src/ui/segmented-control.tsx +76 -0
- package/src/ui/select.tsx +257 -0
- package/src/ui/separator.tsx +24 -0
- package/src/ui/sheet.tsx +141 -0
- package/src/ui/skeleton.tsx +76 -0
- package/src/ui/slider.tsx +76 -0
- package/src/ui/switch.tsx +31 -0
- package/src/ui/table.tsx +179 -0
- package/src/ui/tabs.tsx +89 -0
- package/src/ui/tags-input.tsx +168 -0
- package/src/ui/textarea.tsx +17 -0
- package/src/ui/tooltip.tsx +71 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/**
|
|
3
|
+
* ChatToolCall — the collapsible tool-call block promoted from the chatbot
|
|
4
|
+
* reference family (#1418): one mono line — tool(args) · status mark ·
|
|
5
|
+
* timing — that folds its output away, the Claude Code / opencode chain
|
|
6
|
+
* pattern. The tool name takes the surface accent; ok/error wear the
|
|
7
|
+
* money-adjacent up/down reads; a running call breathes its mark. Sits on the
|
|
8
|
+
* terminal palette (term-* tokens), so it expects a term-bg transcript around
|
|
9
|
+
* it. Uncontrolled by default (`defaultOpen`) or controlled via
|
|
10
|
+
* `open`/`onOpenChange`. Output arrives as `lines` (string, or
|
|
11
|
+
* `{ text, tone }` for up/down reads) and/or arbitrary `children` rendered
|
|
12
|
+
* after them — enough surface for digichat’s assistant-ui tool part UI (and
|
|
13
|
+
* any other chat surface) to rebuild tool_call / tool_result / trace kinds. A call with no
|
|
14
|
+
* body renders its head as a plain row (no button). The left rail, color-mix
|
|
15
|
+
* borders, and the running pulse live in styles/chat-widgets.css (import it
|
|
16
|
+
* once app-wide; see the wiring note there). Click the head to expand —
|
|
17
|
+
* a caret glyph plus `aria-expanded` carry the disclosure state.
|
|
18
|
+
*/
|
|
19
|
+
import { useEffect, useRef, useState, type ReactNode } from "react";
|
|
20
|
+
|
|
21
|
+
export type ChatToolCallStatus = "running" | "ok" | "error";
|
|
22
|
+
|
|
23
|
+
export type ChatToolCallLine = string | { text: string; tone?: "up" | "down" };
|
|
24
|
+
|
|
25
|
+
export type ChatToolCallProps = {
|
|
26
|
+
/** Tool name, e.g. `digiquant.backtest` — rendered in the accent. */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Argument summary, rendered `(args)` and truncated when long. */
|
|
29
|
+
args?: string;
|
|
30
|
+
/** ok → up ✓, error → down ✕, running → pulsing ellipsis. */
|
|
31
|
+
status?: ChatToolCallStatus;
|
|
32
|
+
/** Right-aligned mono timing, e.g. `412ms`. */
|
|
33
|
+
duration?: string;
|
|
34
|
+
/** Output lines; a tone gives a line the up/down read. */
|
|
35
|
+
lines?: ChatToolCallLine[];
|
|
36
|
+
/** Custom output body (hit lists, rich results) rendered after `lines`. */
|
|
37
|
+
children?: ReactNode;
|
|
38
|
+
defaultOpen?: boolean;
|
|
39
|
+
/** Controlled open state; omit to let the block own it. */
|
|
40
|
+
open?: boolean;
|
|
41
|
+
onOpenChange?: (open: boolean) => void;
|
|
42
|
+
className?: string;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const MARKS: Record<ChatToolCallStatus, { glyph: string; cls: string }> = {
|
|
46
|
+
running: { glyph: "…", cls: "tc-run text-term-mute" },
|
|
47
|
+
ok: { glyph: "✓", cls: "text-up" },
|
|
48
|
+
error: { glyph: "✕", cls: "text-danger" },
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const HEAD_CLS =
|
|
52
|
+
"tc-head flex w-full items-center gap-[0.5rem] border-0 bg-transparent px-0 py-[0.2rem] text-start font-mono text-[0.78rem] text-term-ink";
|
|
53
|
+
|
|
54
|
+
function HeadContent({
|
|
55
|
+
name,
|
|
56
|
+
args,
|
|
57
|
+
status,
|
|
58
|
+
duration,
|
|
59
|
+
showCaret,
|
|
60
|
+
isOpen,
|
|
61
|
+
}: {
|
|
62
|
+
name: string;
|
|
63
|
+
args?: string;
|
|
64
|
+
status: ChatToolCallStatus;
|
|
65
|
+
duration?: string;
|
|
66
|
+
showCaret: boolean;
|
|
67
|
+
isOpen: boolean;
|
|
68
|
+
}) {
|
|
69
|
+
const mark = MARKS[status];
|
|
70
|
+
return (
|
|
71
|
+
<>
|
|
72
|
+
{showCaret ? (
|
|
73
|
+
<span className={`tc-caret${isOpen ? " open" : ""}`} aria-hidden="true" />
|
|
74
|
+
) : null}
|
|
75
|
+
{/* `shrink-0 whitespace-nowrap`: the name is the one thing on this line
|
|
76
|
+
that must never break. Without them a flex row under width pressure
|
|
77
|
+
(a narrow embed, a long args string) shrinks every item somewhat
|
|
78
|
+
evenly, and a shrunk name span with the default `white-space: normal`
|
|
79
|
+
wraps mid-word — "file_search" split "file_ / searc / h" across three
|
|
80
|
+
lines, observed live. `args` carries `min-w-0 flex-1 truncate` so it
|
|
81
|
+
is the one thing that absorbs the missing space, ellipsised, never
|
|
82
|
+
the name. */}
|
|
83
|
+
<span className="shrink-0 whitespace-nowrap text-accent">{name}</span>
|
|
84
|
+
{args ? (
|
|
85
|
+
<span className="min-w-0 flex-1 truncate text-term-mute">({args})</span>
|
|
86
|
+
) : null}
|
|
87
|
+
<span className={`ms-auto shrink-0 ${mark.cls}`}>{mark.glyph}</span>
|
|
88
|
+
{duration ? (
|
|
89
|
+
<span className="min-w-[3rem] shrink-0 text-end text-[0.7rem] text-term-mute">
|
|
90
|
+
{duration}
|
|
91
|
+
</span>
|
|
92
|
+
) : null}
|
|
93
|
+
</>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function ChatToolCall({
|
|
98
|
+
name,
|
|
99
|
+
args,
|
|
100
|
+
status = "ok",
|
|
101
|
+
duration,
|
|
102
|
+
lines,
|
|
103
|
+
children,
|
|
104
|
+
defaultOpen = false,
|
|
105
|
+
open,
|
|
106
|
+
onOpenChange,
|
|
107
|
+
className,
|
|
108
|
+
}: ChatToolCallProps) {
|
|
109
|
+
const [ownOpen, setOwnOpen] = useState(defaultOpen);
|
|
110
|
+
// Tracks a real user toggle. Streaming rows keep a stable React key across
|
|
111
|
+
// tool_call → tool_result (see digichat-ui activity-view identityKey), so
|
|
112
|
+
// `defaultOpen` can flip true on settle without a remount — and useState
|
|
113
|
+
// only reads its initial argument. Adopt the new default until the reader
|
|
114
|
+
// has touched the control; after that, their choice wins.
|
|
115
|
+
const touched = useRef(false);
|
|
116
|
+
const isOpen = open !== undefined ? open : ownOpen;
|
|
117
|
+
const hasBody = Boolean(lines?.length) || (children !== undefined && children !== null);
|
|
118
|
+
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
if (open !== undefined) return;
|
|
121
|
+
if (touched.current) return;
|
|
122
|
+
if (defaultOpen) setOwnOpen(true);
|
|
123
|
+
}, [defaultOpen, open]);
|
|
124
|
+
|
|
125
|
+
const toggle = () => {
|
|
126
|
+
const next = !isOpen;
|
|
127
|
+
touched.current = true;
|
|
128
|
+
if (open === undefined) setOwnOpen(next);
|
|
129
|
+
onOpenChange?.(next);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
return (
|
|
133
|
+
<div
|
|
134
|
+
className={`tc${status === "error" ? " tc--err" : ""}${
|
|
135
|
+
className ? ` ${className}` : ""
|
|
136
|
+
}`}
|
|
137
|
+
>
|
|
138
|
+
{hasBody ? (
|
|
139
|
+
<button
|
|
140
|
+
type="button"
|
|
141
|
+
className={`${HEAD_CLS} cursor-pointer`}
|
|
142
|
+
aria-expanded={isOpen}
|
|
143
|
+
onClick={toggle}
|
|
144
|
+
>
|
|
145
|
+
<HeadContent
|
|
146
|
+
name={name}
|
|
147
|
+
args={args}
|
|
148
|
+
status={status}
|
|
149
|
+
duration={duration}
|
|
150
|
+
showCaret
|
|
151
|
+
isOpen={isOpen}
|
|
152
|
+
/>
|
|
153
|
+
</button>
|
|
154
|
+
) : (
|
|
155
|
+
<div className={HEAD_CLS}>
|
|
156
|
+
<HeadContent
|
|
157
|
+
name={name}
|
|
158
|
+
args={args}
|
|
159
|
+
status={status}
|
|
160
|
+
duration={duration}
|
|
161
|
+
showCaret={false}
|
|
162
|
+
isOpen={false}
|
|
163
|
+
/>
|
|
164
|
+
</div>
|
|
165
|
+
)}
|
|
166
|
+
{hasBody && isOpen ? (
|
|
167
|
+
<div className="pb-[0.4rem] ps-[0.75rem] pt-[0.15rem]">
|
|
168
|
+
{lines?.map((l) => {
|
|
169
|
+
const line = typeof l === "string" ? { text: l, tone: undefined } : l;
|
|
170
|
+
const tone =
|
|
171
|
+
line.tone === "down"
|
|
172
|
+
? "text-down"
|
|
173
|
+
: line.tone === "up"
|
|
174
|
+
? "text-up"
|
|
175
|
+
: "text-term-mute";
|
|
176
|
+
return (
|
|
177
|
+
<p
|
|
178
|
+
key={line.text}
|
|
179
|
+
className={`my-[0.12rem] font-mono text-[0.74rem] leading-[1.5] ${tone}`}
|
|
180
|
+
>
|
|
181
|
+
{line.text}
|
|
182
|
+
</p>
|
|
183
|
+
);
|
|
184
|
+
})}
|
|
185
|
+
{children}
|
|
186
|
+
</div>
|
|
187
|
+
) : null}
|
|
188
|
+
</div>
|
|
189
|
+
);
|
|
190
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat transcript — the term-surface scrollback pane behind the chatbot
|
|
3
|
+
* family (#1418): a rounded terminal wash (bg-term-bg / term-hair, mono)
|
|
4
|
+
* framing a column of <ChatMessage> turns. `session` draws the faint
|
|
5
|
+
* "digichat — session" header as ::before chrome; `flat` drops the floating
|
|
6
|
+
* shadow (the stream-transcript read); `scroll`/`live` turn the pane into a
|
|
7
|
+
* live thread (digichat-ui's .dc-thread rebuilds on this: overflow-y auto,
|
|
8
|
+
* thin scrollbar, contained overscroll, polite live region — the consumer
|
|
9
|
+
* owns scroll position). The pane deliberately sets no row gap, text size,
|
|
10
|
+
* or max-width: density is the consumer's call via className (the reference
|
|
11
|
+
* uses gap-[0.7rem] for turn stacks, leading-[2.1] for dense scrollback).
|
|
12
|
+
* Shadow, light-theme surface override, and the session ::before live in
|
|
13
|
+
* styles/chat-core.css (import it once app-wide).
|
|
14
|
+
*/
|
|
15
|
+
import type { ReactNode } from "react";
|
|
16
|
+
|
|
17
|
+
export type ChatTranscriptProps = {
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
/** Faint session header line, e.g. `digichat — session`; omit for none. */
|
|
20
|
+
session?: string;
|
|
21
|
+
/** Drop the pane's floating shadow (flush embeds, dense scrollback). */
|
|
22
|
+
flat?: boolean;
|
|
23
|
+
/** Scrollable live-thread behavior (overflow-y auto, thin scrollbar). */
|
|
24
|
+
scroll?: boolean;
|
|
25
|
+
/** Announce streamed-in turns politely (aria-live region). */
|
|
26
|
+
live?: boolean;
|
|
27
|
+
className?: string;
|
|
28
|
+
"aria-label"?: string;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export function ChatTranscript({
|
|
32
|
+
children,
|
|
33
|
+
session,
|
|
34
|
+
flat,
|
|
35
|
+
scroll,
|
|
36
|
+
live,
|
|
37
|
+
className,
|
|
38
|
+
"aria-label": ariaLabel,
|
|
39
|
+
}: ChatTranscriptProps) {
|
|
40
|
+
const cls = [
|
|
41
|
+
"chat-transcript",
|
|
42
|
+
flat ? "chat-transcript--flat" : "",
|
|
43
|
+
scroll ? "chat-transcript--scroll min-h-0 overflow-y-auto overscroll-contain" : "",
|
|
44
|
+
"flex flex-col rounded-none border border-term-hair bg-term-bg px-[1.15rem] pt-[1rem] pb-[1.2rem] font-mono",
|
|
45
|
+
className ?? "",
|
|
46
|
+
]
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
.join(" ");
|
|
49
|
+
return (
|
|
50
|
+
<div
|
|
51
|
+
className={cls}
|
|
52
|
+
data-session={session}
|
|
53
|
+
aria-label={ariaLabel}
|
|
54
|
+
aria-live={live ? "polite" : undefined}
|
|
55
|
+
aria-atomic={live ? false : undefined}
|
|
56
|
+
>
|
|
57
|
+
{children}
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatWidgetFrame — the framed-embed grammar promoted from the chatbot
|
|
3
|
+
* reference family (#1418): the container for any object the assistant drops
|
|
4
|
+
* into a turn. Two variants:
|
|
5
|
+
* - "card" (default): a surface card — optional head row (micro-caps accent
|
|
6
|
+
* eyebrow, mono title, right-side badge), unpadded body (children carry
|
|
7
|
+
* their own padding, so grids can run edge-to-edge), and an optional
|
|
8
|
+
* bordered actions footer. The result cards and approval gates.
|
|
9
|
+
* - "embed": a bare hairline media frame (radius 0, overflow clipped) for
|
|
10
|
+
* inline charts/graphs — the frame is promoted, the chart/graph internals
|
|
11
|
+
* stay with the consumer.
|
|
12
|
+
* Server component — no state, no effects. Action buttons come from
|
|
13
|
+
* ChatWidgetButton (primary / ghost / danger tones); their transitions and
|
|
14
|
+
* color-mix hovers live in styles/chat-widgets.css (import it once app-wide;
|
|
15
|
+
* see the wiring note there). digichat 2.0 maps tool/status cards via
|
|
16
|
+
* assistant-ui part components onto these primitives (ChatActivities removed).
|
|
17
|
+
*/
|
|
18
|
+
import type { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
19
|
+
|
|
20
|
+
export type ChatWidgetFrameVariant = "card" | "embed";
|
|
21
|
+
|
|
22
|
+
export type ChatWidgetFrameProps = {
|
|
23
|
+
/** Micro-caps accent line above the title, e.g. `backtest complete`. */
|
|
24
|
+
eyebrow?: string;
|
|
25
|
+
/** Mono head title, e.g. `trend_xsec · ETH-USD · 8y`. */
|
|
26
|
+
title?: ReactNode;
|
|
27
|
+
/** Right side of the head row — a status badge, an icon. */
|
|
28
|
+
badge?: ReactNode;
|
|
29
|
+
/** Footer action row (compose ChatWidgetButton here). Card variant only. */
|
|
30
|
+
actions?: ReactNode;
|
|
31
|
+
variant?: ChatWidgetFrameVariant;
|
|
32
|
+
/** Unpadded body — children own their padding. */
|
|
33
|
+
children?: ReactNode;
|
|
34
|
+
className?: string;
|
|
35
|
+
"aria-label"?: string;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export function ChatWidgetFrame({
|
|
39
|
+
eyebrow,
|
|
40
|
+
title,
|
|
41
|
+
badge,
|
|
42
|
+
actions,
|
|
43
|
+
variant = "card",
|
|
44
|
+
children,
|
|
45
|
+
className,
|
|
46
|
+
"aria-label": ariaLabel,
|
|
47
|
+
}: ChatWidgetFrameProps) {
|
|
48
|
+
const frame =
|
|
49
|
+
variant === "embed"
|
|
50
|
+
? "overflow-hidden rounded-none border border-hair"
|
|
51
|
+
: "overflow-hidden rounded-none border border-hair bg-surface";
|
|
52
|
+
const hasHead = Boolean(eyebrow || title || badge);
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<article className={`${frame}${className ? ` ${className}` : ""}`} aria-label={ariaLabel}>
|
|
56
|
+
{hasHead ? (
|
|
57
|
+
<header className="flex items-start justify-between gap-[1rem] border-b border-hair px-[1rem] py-[0.85rem]">
|
|
58
|
+
<div>
|
|
59
|
+
{eyebrow ? (
|
|
60
|
+
<p className="m-0 mb-[0.2rem] font-mono text-[0.58rem] uppercase tracking-[0.1em] text-accent">
|
|
61
|
+
{eyebrow}
|
|
62
|
+
</p>
|
|
63
|
+
) : null}
|
|
64
|
+
{title ? <h3 className="m-0 font-mono text-[0.86rem] text-ink">{title}</h3> : null}
|
|
65
|
+
</div>
|
|
66
|
+
{badge ? <span className="shrink-0">{badge}</span> : null}
|
|
67
|
+
</header>
|
|
68
|
+
) : null}
|
|
69
|
+
{children}
|
|
70
|
+
{actions ? (
|
|
71
|
+
<footer className="flex gap-[0.6rem] border-t border-hair px-[1rem] py-[0.8rem]">
|
|
72
|
+
{actions}
|
|
73
|
+
</footer>
|
|
74
|
+
) : null}
|
|
75
|
+
</article>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export type ChatWidgetButtonTone = "primary" | "ghost" | "danger";
|
|
80
|
+
|
|
81
|
+
export type ChatWidgetButtonProps = ComponentPropsWithoutRef<"button"> & {
|
|
82
|
+
/** primary = ink/paper fill, ghost = hairline, danger = danger-toned hairline. */
|
|
83
|
+
tone?: ChatWidgetButtonTone;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const TONES: Record<ChatWidgetButtonTone, string> = {
|
|
87
|
+
primary: "cw-btn--primary border-transparent bg-ink text-bg",
|
|
88
|
+
ghost: "cw-btn--ghost border-hair bg-transparent text-ink",
|
|
89
|
+
danger: "cw-btn--danger bg-transparent text-danger",
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export function ChatWidgetButton({
|
|
93
|
+
tone = "ghost",
|
|
94
|
+
className,
|
|
95
|
+
type,
|
|
96
|
+
...rest
|
|
97
|
+
}: ChatWidgetButtonProps) {
|
|
98
|
+
return (
|
|
99
|
+
<button
|
|
100
|
+
type={type ?? "button"}
|
|
101
|
+
className={`cw-btn cursor-pointer rounded-none border px-[1rem] py-[0.5rem] font-mono text-[0.72rem] ${TONES[tone]}${
|
|
102
|
+
className ? ` ${className}` : ""
|
|
103
|
+
}`}
|
|
104
|
+
{...rest}
|
|
105
|
+
/>
|
|
106
|
+
);
|
|
107
|
+
}
|