@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,350 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/**
|
|
3
|
+
* Architecture diagram — a system drawn the way engineers draw it: named boxes
|
|
4
|
+
* for services, a boundary around what you own, and labelled connectors between
|
|
5
|
+
* them.
|
|
6
|
+
*
|
|
7
|
+
* WHAT IT IS. Mermaid's `architecture-beta` grammar (added in mermaid 11.1,
|
|
8
|
+
* refined in 11.16 with `align`), rendered through the exact pipeline the chat
|
|
9
|
+
* surface already uses — `theme: "base"` with every `themeVariable` filled from
|
|
10
|
+
* the computed design tokens, lazily imported, sanitized by mermaid's own
|
|
11
|
+
* strict mode, source-preserving as the no-JS fallback. See
|
|
12
|
+
* `ChatMermaidBlock.tsx` for the four canon rules; this component inherits all
|
|
13
|
+
* of them and adds nothing to the package that was not already there.
|
|
14
|
+
*
|
|
15
|
+
* WHY MERMAID RATHER THAN A NEW DEPENDENCY. `mermaid` is already a `packages/ui`
|
|
16
|
+
* dependency (the chat fence draws with it), so an architecture diagram costs
|
|
17
|
+
* the bundle nothing new and inherits the token theming for free. The house
|
|
18
|
+
* alternative, `beautiful-mermaid`, is pure and build-time safe but supports
|
|
19
|
+
* only flowchart/state/sequence/class/ER/charts — it has no architecture
|
|
20
|
+
* grammar. If the force-directed layout ever becomes the blocker, the escape
|
|
21
|
+
* hatch is `@xyflow/react` + `elkjs` with a kit-owned grammar; this component's
|
|
22
|
+
* prop surface is deliberately the declarative spec, so only the renderer would
|
|
23
|
+
* change.
|
|
24
|
+
*
|
|
25
|
+
* THE SPEC IS THE API, NOT THE MERMAID SOURCE. Callers pass a small typed spec
|
|
26
|
+
* and `toMermaid()` emits the diagram source. That keeps mermaid's syntax in one
|
|
27
|
+
* place, makes the diagram unit-testable without a DOM (see
|
|
28
|
+
* `architecture.test.ts`), and means the same spec can later be handed to an
|
|
29
|
+
* export path, a docs page, or a model prompt.
|
|
30
|
+
*
|
|
31
|
+
* KNOWN LIMITATION, DOCUMENTED SO NOBODY REDISCOVERS IT. architecture-beta is
|
|
32
|
+
* still beta and its layout is force-directed: a service can carry only ONE
|
|
33
|
+
* edge per side, so two connectors leaving the same side of the same box are
|
|
34
|
+
* not representable — the last one wins. Use the `fromSide`/`toSide` fields to
|
|
35
|
+
* spread a fan-out across sides, or introduce a `junction` (spec `junctions`)
|
|
36
|
+
* when a genuine four-way split is needed. There is no manual positioning and
|
|
37
|
+
* edges cannot carry labels.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
41
|
+
|
|
42
|
+
import { ArchitectureSvg, hasLayout } from "./architecture-svg";
|
|
43
|
+
import { tokenThemeVariables } from "./mermaid-theme";
|
|
44
|
+
|
|
45
|
+
/** The five icons mermaid's architecture grammar ships with. */
|
|
46
|
+
export type ArchIcon = "cloud" | "database" | "disk" | "internet" | "server";
|
|
47
|
+
|
|
48
|
+
/** Which side of a box a connector attaches to. */
|
|
49
|
+
export type ArchSide = "T" | "R" | "B" | "L";
|
|
50
|
+
|
|
51
|
+
/** A titled boundary. Nesting is expressed with `parent`. */
|
|
52
|
+
export interface ArchGroup {
|
|
53
|
+
id: string;
|
|
54
|
+
label: string;
|
|
55
|
+
icon?: ArchIcon;
|
|
56
|
+
/** Id of the group this one sits inside. */
|
|
57
|
+
parent?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Grid rect for the kit's own SVG renderer: top-left cell plus the span. All
|
|
60
|
+
* four are required for a declared rect; omit them and the rect is computed
|
|
61
|
+
* from the group's members.
|
|
62
|
+
*/
|
|
63
|
+
col?: number;
|
|
64
|
+
row?: number;
|
|
65
|
+
cols?: number;
|
|
66
|
+
rows?: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* One service box. `group` places it inside a boundary.
|
|
71
|
+
*
|
|
72
|
+
* `col`/`row` are the kit SVG renderer's grid slot. When every service carries
|
|
73
|
+
* one, `ArchitectureDiagram` draws its own positioned SVG (see
|
|
74
|
+
* `architecture-svg.tsx` for why); otherwise it falls back to mermaid.
|
|
75
|
+
*/
|
|
76
|
+
export interface ArchService {
|
|
77
|
+
id: string;
|
|
78
|
+
label: string;
|
|
79
|
+
icon?: ArchIcon;
|
|
80
|
+
/**
|
|
81
|
+
* Brand mark slug from the kit's logo registry (`ICONS` in
|
|
82
|
+
* components/logos.ts), drawn in place of the kind glyph. Only slugs the
|
|
83
|
+
* installed simple-icons set actually ships resolve — anything else falls
|
|
84
|
+
* back to `icon`, so a spec can name a product (Pinecone, LangSmith) that
|
|
85
|
+
* has no monochrome mark without breaking. Ignored by the mermaid export,
|
|
86
|
+
* which only knows the five plates.
|
|
87
|
+
*/
|
|
88
|
+
logo?: string;
|
|
89
|
+
group?: string;
|
|
90
|
+
col?: number;
|
|
91
|
+
row?: number;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** One connector. Sides are explicit because mermaid cannot fan out a side. */
|
|
95
|
+
export interface ArchEdge {
|
|
96
|
+
from: string;
|
|
97
|
+
to: string;
|
|
98
|
+
/** Defaults to "R". */
|
|
99
|
+
fromSide?: ArchSide;
|
|
100
|
+
/** Defaults to "L". */
|
|
101
|
+
toSide?: ArchSide;
|
|
102
|
+
/** Arrow only at `to` (the default), only at `from`, or neither. */
|
|
103
|
+
arrow?: "to" | "from" | "none";
|
|
104
|
+
/**
|
|
105
|
+
* What travels along the connector ("https", "sql", "traces"). Plain words and
|
|
106
|
+
* spaces only — mermaid's edge-title token is the same restricted one the box
|
|
107
|
+
* titles use, so punctuation is not representable here.
|
|
108
|
+
*/
|
|
109
|
+
label?: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** A four-way split point. Rarely needed; see the module docblock. */
|
|
113
|
+
export interface ArchJunction {
|
|
114
|
+
id: string;
|
|
115
|
+
group?: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** `align row a b c` / `align column a b c`, for taming the force layout. */
|
|
119
|
+
export interface ArchAlign {
|
|
120
|
+
axis: "row" | "column";
|
|
121
|
+
ids: string[];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface ArchSpec {
|
|
125
|
+
/** Short accessible title. */
|
|
126
|
+
title: string;
|
|
127
|
+
/** One sentence describing the shape, for screen readers. */
|
|
128
|
+
description: string;
|
|
129
|
+
groups?: ArchGroup[];
|
|
130
|
+
services: ArchService[];
|
|
131
|
+
junctions?: ArchJunction[];
|
|
132
|
+
edges: ArchEdge[];
|
|
133
|
+
aligns?: ArchAlign[];
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* A box title. mermaid's `ARCH_TITLE` token accepts one of three shapes — a
|
|
138
|
+
* double-quoted string, a single-quoted string, or `[\w ]+` unquoted — so any
|
|
139
|
+
* punctuation (a `·`, a colon, an em dash) forces the quoted form. Escaping
|
|
140
|
+
* `\` and `"` is the caller's text surviving the grammar's own escape rule.
|
|
141
|
+
*/
|
|
142
|
+
function archTitle(text: string): string {
|
|
143
|
+
if (/^[\w ]*$/.test(text)) return `[${text}]`;
|
|
144
|
+
return `["${text.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"]`;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function groupDeclaration(group: ArchGroup): string {
|
|
148
|
+
const icon = group.icon ? `(${group.icon})` : "";
|
|
149
|
+
const parent = group.parent ? ` in ${group.parent}` : "";
|
|
150
|
+
return `group ${group.id}${icon}${archTitle(group.label)}${parent}`;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function serviceDeclaration(service: ArchService): string {
|
|
154
|
+
const icon = service.icon ? `(${service.icon})` : "";
|
|
155
|
+
const group = service.group ? ` in ${service.group}` : "";
|
|
156
|
+
return `service ${service.id}${icon}${archTitle(service.label)}${group}`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* One connector. mermaid's arrow grammar is `lhs:SIDE [<] (-- | -[label]-) [>] SIDE:rhs`,
|
|
161
|
+
* so an arrow and a label coexist as `-[label]->` and a bare edge is `--`.
|
|
162
|
+
*/
|
|
163
|
+
function edgeDeclaration(edge: ArchEdge): string {
|
|
164
|
+
const fromSide = edge.fromSide ?? "R";
|
|
165
|
+
const toSide = edge.toSide ?? "L";
|
|
166
|
+
const arrow = edge.arrow ?? "to";
|
|
167
|
+
const dash = edge.label ? `-[${edge.label}]-` : "--";
|
|
168
|
+
const left = arrow === "from" ? "<" : "";
|
|
169
|
+
const right = arrow === "to" ? ">" : "";
|
|
170
|
+
return `${edge.from}:${fromSide} ${left}${dash}${right} ${toSide}:${edge.to}`;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Parents before children, so a nested `group ... in parent` is never emitted
|
|
175
|
+
* before the group it names. Stable for a flat list.
|
|
176
|
+
*/
|
|
177
|
+
function groupsInOrder(groups: readonly ArchGroup[]): ArchGroup[] {
|
|
178
|
+
const byId = new Map(groups.map((group) => [group.id, group]));
|
|
179
|
+
const seen = new Set<string>();
|
|
180
|
+
const out: ArchGroup[] = [];
|
|
181
|
+
const visit = (group: ArchGroup, guard: Set<string>): void => {
|
|
182
|
+
if (seen.has(group.id) || guard.has(group.id)) return;
|
|
183
|
+
guard.add(group.id);
|
|
184
|
+
if (group.parent) {
|
|
185
|
+
const parent = byId.get(group.parent);
|
|
186
|
+
if (parent) visit(parent, guard);
|
|
187
|
+
}
|
|
188
|
+
seen.add(group.id);
|
|
189
|
+
out.push(group);
|
|
190
|
+
};
|
|
191
|
+
for (const group of groups) visit(group, new Set());
|
|
192
|
+
return out;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Render the spec as `architecture-beta` source. Pure — no DOM, no async — so
|
|
197
|
+
* a unit test can assert the exact diagram a caller will draw.
|
|
198
|
+
*/
|
|
199
|
+
export function toMermaid(spec: ArchSpec): string {
|
|
200
|
+
const lines: string[] = ["architecture-beta"];
|
|
201
|
+
lines.push(` accTitle: ${spec.title}`);
|
|
202
|
+
lines.push(` accDescr: ${spec.description}`);
|
|
203
|
+
|
|
204
|
+
const groups = groupsInOrder(spec.groups ?? []);
|
|
205
|
+
if (groups.length > 0) {
|
|
206
|
+
lines.push("");
|
|
207
|
+
for (const group of groups) lines.push(` ${groupDeclaration(group)}`);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
lines.push("");
|
|
211
|
+
for (const service of spec.services) lines.push(` ${serviceDeclaration(service)}`);
|
|
212
|
+
|
|
213
|
+
const junctions = spec.junctions ?? [];
|
|
214
|
+
if (junctions.length > 0) {
|
|
215
|
+
lines.push("");
|
|
216
|
+
for (const junction of junctions) {
|
|
217
|
+
lines.push(` junction ${junction.id}${junction.group ? ` in ${junction.group}` : ""}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (spec.edges.length > 0) {
|
|
222
|
+
lines.push("");
|
|
223
|
+
for (const edge of spec.edges) lines.push(` ${edgeDeclaration(edge)}`);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const aligns = spec.aligns ?? [];
|
|
227
|
+
if (aligns.length > 0) {
|
|
228
|
+
lines.push("");
|
|
229
|
+
for (const align of aligns) {
|
|
230
|
+
lines.push(` align ${align.axis} ${align.ids.join(" ")}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return lines.join("\n");
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export type ArchitectureDiagramProps = {
|
|
238
|
+
spec: ArchSpec;
|
|
239
|
+
/** Mono caption under the figure. Defaults to the spec title. */
|
|
240
|
+
caption?: string;
|
|
241
|
+
/** Service and group ids to mark as the current step (the tour's handles). */
|
|
242
|
+
lit?: readonly string[];
|
|
243
|
+
/**
|
|
244
|
+
* Stretch the positioned drawing's gutters to the body's measured shape, so
|
|
245
|
+
* it fills the frame instead of letterboxing. Only meaningful where the body
|
|
246
|
+
* has a height of its own (a fixed frame); a body sized by its SVG would
|
|
247
|
+
* chase itself.
|
|
248
|
+
*/
|
|
249
|
+
fit?: boolean;
|
|
250
|
+
className?: string;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
export function ArchitectureDiagram({ spec, caption, lit, fit, className }: ArchitectureDiagramProps) {
|
|
254
|
+
const [svg, setSvg] = useState("");
|
|
255
|
+
const [failed, setFailed] = useState(false);
|
|
256
|
+
const [themeTick, setThemeTick] = useState(0);
|
|
257
|
+
const [aspect, setAspect] = useState<number | undefined>(undefined);
|
|
258
|
+
const hostRef = useRef<HTMLElement>(null);
|
|
259
|
+
const bodyRef = useRef<HTMLDivElement>(null);
|
|
260
|
+
const id = `arch-${useId().replace(/[^a-zA-Z0-9]/g, "")}`;
|
|
261
|
+
const source = toMermaid(spec);
|
|
262
|
+
// A spec that declares a grid slot per service is drawn by the kit's own
|
|
263
|
+
// positioned renderer; mermaid is the fallback for a spec without one (see
|
|
264
|
+
// architecture-svg.tsx for why the beta grammar could not be repaired).
|
|
265
|
+
const laidOut = hasLayout(spec);
|
|
266
|
+
|
|
267
|
+
useEffect(() => {
|
|
268
|
+
const observer = new MutationObserver(() => setThemeTick((n) => n + 1));
|
|
269
|
+
observer.observe(document.documentElement, {
|
|
270
|
+
attributes: true,
|
|
271
|
+
attributeFilter: ["data-theme"],
|
|
272
|
+
});
|
|
273
|
+
return () => observer.disconnect();
|
|
274
|
+
}, []);
|
|
275
|
+
|
|
276
|
+
useEffect(() => {
|
|
277
|
+
const body = bodyRef.current;
|
|
278
|
+
if (!fit || !laidOut || !body) return;
|
|
279
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
280
|
+
const box = entry?.contentRect;
|
|
281
|
+
if (!box || box.width <= 0 || box.height <= 0) return;
|
|
282
|
+
const next = Math.round((box.width / box.height) * 100) / 100;
|
|
283
|
+
setAspect((prev) => (prev === next ? prev : next));
|
|
284
|
+
});
|
|
285
|
+
observer.observe(body);
|
|
286
|
+
return () => observer.disconnect();
|
|
287
|
+
}, [fit, laidOut]);
|
|
288
|
+
|
|
289
|
+
useEffect(() => {
|
|
290
|
+
const host = hostRef.current;
|
|
291
|
+
if (!host || laidOut) return;
|
|
292
|
+
let cancelled = false;
|
|
293
|
+
|
|
294
|
+
void (async () => {
|
|
295
|
+
try {
|
|
296
|
+
const mermaid = (await import("mermaid")).default;
|
|
297
|
+
mermaid.initialize({
|
|
298
|
+
startOnLoad: false,
|
|
299
|
+
securityLevel: "strict",
|
|
300
|
+
suppressErrorRendering: true,
|
|
301
|
+
theme: "base",
|
|
302
|
+
themeVariables: tokenThemeVariables(host),
|
|
303
|
+
flowchart: { htmlLabels: false, useMaxWidth: true },
|
|
304
|
+
sequence: { useMaxWidth: true },
|
|
305
|
+
});
|
|
306
|
+
// Validate first: parse throws on a malformed graph without touching
|
|
307
|
+
// the document, so the failure path never leaves stray nodes behind.
|
|
308
|
+
await mermaid.parse(source);
|
|
309
|
+
const rendered = await mermaid.render(id, source);
|
|
310
|
+
if (cancelled) return;
|
|
311
|
+
setSvg(rendered.svg);
|
|
312
|
+
setFailed(false);
|
|
313
|
+
} catch {
|
|
314
|
+
if (cancelled) return;
|
|
315
|
+
setSvg("");
|
|
316
|
+
setFailed(true);
|
|
317
|
+
}
|
|
318
|
+
})();
|
|
319
|
+
|
|
320
|
+
return () => {
|
|
321
|
+
cancelled = true;
|
|
322
|
+
};
|
|
323
|
+
}, [source, id, themeTick, laidOut]);
|
|
324
|
+
|
|
325
|
+
const drawn = laidOut || (Boolean(svg) && !failed);
|
|
326
|
+
const cls = ["arch-figure", className ?? ""].filter(Boolean).join(" ");
|
|
327
|
+
const state = laidOut ? "diagram" : failed ? "source" : drawn ? "diagram" : "pending";
|
|
328
|
+
|
|
329
|
+
return (
|
|
330
|
+
<figure ref={hostRef} className={cls} data-state={state}>
|
|
331
|
+
<div
|
|
332
|
+
ref={bodyRef}
|
|
333
|
+
className="arch-figure__body"
|
|
334
|
+
role="img"
|
|
335
|
+
aria-label={`${spec.title}. ${spec.description}`}
|
|
336
|
+
// For the mermaid fallback: mermaid.render returns a sanitized SVG
|
|
337
|
+
// string under securityLevel: "strict" — see ChatMermaidBlock.
|
|
338
|
+
dangerouslySetInnerHTML={!laidOut && drawn ? { __html: svg } : undefined}
|
|
339
|
+
>
|
|
340
|
+
{laidOut ? <ArchitectureSvg spec={spec} lit={lit} aspect={fit ? aspect : undefined} /> : null}
|
|
341
|
+
</div>
|
|
342
|
+
{!drawn ? (
|
|
343
|
+
<pre className="arch-figure__source">
|
|
344
|
+
<code>{source}</code>
|
|
345
|
+
</pre>
|
|
346
|
+
) : null}
|
|
347
|
+
<figcaption className="arch-figure__caption">{caption ?? spec.title}</figcaption>
|
|
348
|
+
</figure>
|
|
349
|
+
);
|
|
350
|
+
}
|