@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,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "../../../lib/utils";
|
|
4
|
+
import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
5
|
+
|
|
6
|
+
type TooltipIconButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
7
|
+
tooltip?: string;
|
|
8
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
9
|
+
variant?: string;
|
|
10
|
+
size?: string;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const TooltipIconButton = forwardRef<HTMLButtonElement, TooltipIconButtonProps>(
|
|
15
|
+
function TooltipIconButton(
|
|
16
|
+
{ tooltip, className, children, variant: _variant, size: _size, side: _side, ...props },
|
|
17
|
+
ref,
|
|
18
|
+
) {
|
|
19
|
+
return (
|
|
20
|
+
<button
|
|
21
|
+
type="button"
|
|
22
|
+
ref={ref}
|
|
23
|
+
aria-label={tooltip}
|
|
24
|
+
title={tooltip}
|
|
25
|
+
className={cn(
|
|
26
|
+
"inline-flex size-8 items-center justify-center rounded-md transition-colors hover:bg-muted disabled:opacity-50",
|
|
27
|
+
className,
|
|
28
|
+
)}
|
|
29
|
+
{...props}
|
|
30
|
+
>
|
|
31
|
+
{children}
|
|
32
|
+
</button>
|
|
33
|
+
);
|
|
34
|
+
},
|
|
35
|
+
);
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Menu as MenuPrimitive } from "@base-ui/react/menu";
|
|
5
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
|
6
|
+
|
|
7
|
+
import { cn } from "../../../../lib/utils";
|
|
8
|
+
|
|
9
|
+
function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {
|
|
10
|
+
return <MenuPrimitive.Root data-slot="dropdown-menu" {...props} />;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {
|
|
14
|
+
return <MenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {
|
|
18
|
+
return <MenuPrimitive.Trigger data-slot="dropdown-menu-trigger" {...props} />;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function DropdownMenuContent({
|
|
22
|
+
align = "start",
|
|
23
|
+
alignOffset = 0,
|
|
24
|
+
side = "bottom",
|
|
25
|
+
sideOffset = 4,
|
|
26
|
+
className,
|
|
27
|
+
...props
|
|
28
|
+
}: MenuPrimitive.Popup.Props &
|
|
29
|
+
Pick<
|
|
30
|
+
MenuPrimitive.Positioner.Props,
|
|
31
|
+
"align" | "alignOffset" | "side" | "sideOffset"
|
|
32
|
+
>) {
|
|
33
|
+
return (
|
|
34
|
+
<MenuPrimitive.Portal>
|
|
35
|
+
<MenuPrimitive.Positioner
|
|
36
|
+
className="isolate z-50 outline-none"
|
|
37
|
+
align={align}
|
|
38
|
+
alignOffset={alignOffset}
|
|
39
|
+
side={side}
|
|
40
|
+
sideOffset={sideOffset}
|
|
41
|
+
>
|
|
42
|
+
<MenuPrimitive.Popup
|
|
43
|
+
data-slot="dropdown-menu-content"
|
|
44
|
+
className={cn(
|
|
45
|
+
"bg-popover text-popover-foreground data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 ring-foreground/10 z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--radius-surface,var(--radius-lg))] p-1.5 ring-1 duration-100 outline-none data-closed:overflow-hidden",
|
|
46
|
+
className,
|
|
47
|
+
)}
|
|
48
|
+
{...props}
|
|
49
|
+
/>
|
|
50
|
+
</MenuPrimitive.Positioner>
|
|
51
|
+
</MenuPrimitive.Portal>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {
|
|
56
|
+
return <MenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function DropdownMenuLabel({
|
|
60
|
+
className,
|
|
61
|
+
inset,
|
|
62
|
+
...props
|
|
63
|
+
}: MenuPrimitive.GroupLabel.Props & {
|
|
64
|
+
inset?: boolean;
|
|
65
|
+
}) {
|
|
66
|
+
return (
|
|
67
|
+
<MenuPrimitive.GroupLabel
|
|
68
|
+
data-slot="dropdown-menu-label"
|
|
69
|
+
data-inset={inset}
|
|
70
|
+
className={cn(
|
|
71
|
+
"text-muted-foreground px-2 py-1.5 font-mono text-[11px] font-medium tracking-wide uppercase data-inset:pl-7",
|
|
72
|
+
className,
|
|
73
|
+
)}
|
|
74
|
+
{...props}
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function DropdownMenuItem({
|
|
80
|
+
className,
|
|
81
|
+
inset,
|
|
82
|
+
variant = "default",
|
|
83
|
+
...props
|
|
84
|
+
}: MenuPrimitive.Item.Props & {
|
|
85
|
+
inset?: boolean;
|
|
86
|
+
variant?: "default" | "destructive";
|
|
87
|
+
}) {
|
|
88
|
+
return (
|
|
89
|
+
<MenuPrimitive.Item
|
|
90
|
+
data-slot="dropdown-menu-item"
|
|
91
|
+
data-inset={inset}
|
|
92
|
+
data-variant={variant}
|
|
93
|
+
className={cn(
|
|
94
|
+
"focus:bg-foreground/[0.06] data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:*:[svg]:text-destructive group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
95
|
+
className,
|
|
96
|
+
)}
|
|
97
|
+
{...props}
|
|
98
|
+
/>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {
|
|
103
|
+
return <MenuPrimitive.SubmenuRoot data-slot="dropdown-menu-sub" {...props} />;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function DropdownMenuSubTrigger({
|
|
107
|
+
className,
|
|
108
|
+
inset,
|
|
109
|
+
children,
|
|
110
|
+
...props
|
|
111
|
+
}: MenuPrimitive.SubmenuTrigger.Props & {
|
|
112
|
+
inset?: boolean;
|
|
113
|
+
}) {
|
|
114
|
+
return (
|
|
115
|
+
<MenuPrimitive.SubmenuTrigger
|
|
116
|
+
data-slot="dropdown-menu-sub-trigger"
|
|
117
|
+
data-inset={inset}
|
|
118
|
+
className={cn(
|
|
119
|
+
"focus:bg-foreground/[0.06] data-open:bg-foreground/[0.06] data-popup-open:bg-foreground/[0.06] flex cursor-default items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
120
|
+
className,
|
|
121
|
+
)}
|
|
122
|
+
{...props}
|
|
123
|
+
>
|
|
124
|
+
{children}
|
|
125
|
+
<ChevronRightIcon className="ms-auto size-4 rtl:rotate-180" />
|
|
126
|
+
</MenuPrimitive.SubmenuTrigger>
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function DropdownMenuSubContent({
|
|
131
|
+
align = "start",
|
|
132
|
+
alignOffset = -3,
|
|
133
|
+
side = "right",
|
|
134
|
+
sideOffset = 0,
|
|
135
|
+
className,
|
|
136
|
+
...props
|
|
137
|
+
}: React.ComponentProps<typeof DropdownMenuContent>) {
|
|
138
|
+
return (
|
|
139
|
+
<DropdownMenuContent
|
|
140
|
+
data-slot="dropdown-menu-sub-content"
|
|
141
|
+
className={cn(
|
|
142
|
+
"bg-popover text-popover-foreground data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 ring-foreground/10 w-auto min-w-[96px] rounded-[var(--radius-surface,var(--radius-lg))] p-1 ring-1 duration-100",
|
|
143
|
+
className,
|
|
144
|
+
)}
|
|
145
|
+
align={align}
|
|
146
|
+
alignOffset={alignOffset}
|
|
147
|
+
side={side}
|
|
148
|
+
sideOffset={sideOffset}
|
|
149
|
+
{...props}
|
|
150
|
+
/>
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function DropdownMenuCheckboxItem({
|
|
155
|
+
className,
|
|
156
|
+
children,
|
|
157
|
+
checked,
|
|
158
|
+
inset,
|
|
159
|
+
...props
|
|
160
|
+
}: MenuPrimitive.CheckboxItem.Props & {
|
|
161
|
+
inset?: boolean;
|
|
162
|
+
}) {
|
|
163
|
+
return (
|
|
164
|
+
<MenuPrimitive.CheckboxItem
|
|
165
|
+
data-slot="dropdown-menu-checkbox-item"
|
|
166
|
+
data-inset={inset}
|
|
167
|
+
className={cn(
|
|
168
|
+
"focus:bg-foreground/[0.06] relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
169
|
+
className,
|
|
170
|
+
)}
|
|
171
|
+
checked={checked}
|
|
172
|
+
{...props}
|
|
173
|
+
>
|
|
174
|
+
<span
|
|
175
|
+
className="pointer-events-none absolute right-2 flex items-center justify-center"
|
|
176
|
+
data-slot="dropdown-menu-checkbox-item-indicator"
|
|
177
|
+
>
|
|
178
|
+
<MenuPrimitive.CheckboxItemIndicator>
|
|
179
|
+
<CheckIcon className="size-4" />
|
|
180
|
+
</MenuPrimitive.CheckboxItemIndicator>
|
|
181
|
+
</span>
|
|
182
|
+
{children}
|
|
183
|
+
</MenuPrimitive.CheckboxItem>
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {
|
|
188
|
+
return (
|
|
189
|
+
<MenuPrimitive.RadioGroup
|
|
190
|
+
data-slot="dropdown-menu-radio-group"
|
|
191
|
+
{...props}
|
|
192
|
+
/>
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function DropdownMenuRadioItem({
|
|
197
|
+
className,
|
|
198
|
+
children,
|
|
199
|
+
inset,
|
|
200
|
+
...props
|
|
201
|
+
}: MenuPrimitive.RadioItem.Props & {
|
|
202
|
+
inset?: boolean;
|
|
203
|
+
}) {
|
|
204
|
+
return (
|
|
205
|
+
<MenuPrimitive.RadioItem
|
|
206
|
+
data-slot="dropdown-menu-radio-item"
|
|
207
|
+
data-inset={inset}
|
|
208
|
+
className={cn(
|
|
209
|
+
"focus:bg-foreground/[0.06] relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
210
|
+
className,
|
|
211
|
+
)}
|
|
212
|
+
{...props}
|
|
213
|
+
>
|
|
214
|
+
<span
|
|
215
|
+
className="pointer-events-none absolute right-2 flex items-center justify-center"
|
|
216
|
+
data-slot="dropdown-menu-radio-item-indicator"
|
|
217
|
+
>
|
|
218
|
+
<MenuPrimitive.RadioItemIndicator>
|
|
219
|
+
<CircleIcon className="size-2 fill-current" />
|
|
220
|
+
</MenuPrimitive.RadioItemIndicator>
|
|
221
|
+
</span>
|
|
222
|
+
{children}
|
|
223
|
+
</MenuPrimitive.RadioItem>
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
function DropdownMenuSeparator({
|
|
228
|
+
className,
|
|
229
|
+
...props
|
|
230
|
+
}: MenuPrimitive.Separator.Props) {
|
|
231
|
+
return (
|
|
232
|
+
<MenuPrimitive.Separator
|
|
233
|
+
data-slot="dropdown-menu-separator"
|
|
234
|
+
className={cn("bg-foreground/10 -mx-1.5 my-1 h-px", className)}
|
|
235
|
+
{...props}
|
|
236
|
+
/>
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function DropdownMenuShortcut({
|
|
241
|
+
className,
|
|
242
|
+
...props
|
|
243
|
+
}: React.ComponentProps<"span">) {
|
|
244
|
+
return (
|
|
245
|
+
<span
|
|
246
|
+
data-slot="dropdown-menu-shortcut"
|
|
247
|
+
className={cn(
|
|
248
|
+
"text-muted-foreground ml-auto font-mono text-[11px] tracking-wider",
|
|
249
|
+
className,
|
|
250
|
+
)}
|
|
251
|
+
{...props}
|
|
252
|
+
/>
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export {
|
|
257
|
+
DropdownMenu,
|
|
258
|
+
DropdownMenuPortal,
|
|
259
|
+
DropdownMenuTrigger,
|
|
260
|
+
DropdownMenuContent,
|
|
261
|
+
DropdownMenuGroup,
|
|
262
|
+
DropdownMenuLabel,
|
|
263
|
+
DropdownMenuItem,
|
|
264
|
+
DropdownMenuCheckboxItem,
|
|
265
|
+
DropdownMenuRadioGroup,
|
|
266
|
+
DropdownMenuRadioItem,
|
|
267
|
+
DropdownMenuSeparator,
|
|
268
|
+
DropdownMenuShortcut,
|
|
269
|
+
DropdownMenuSub,
|
|
270
|
+
DropdownMenuSubTrigger,
|
|
271
|
+
DropdownMenuSubContent,
|
|
272
|
+
};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import type { DocsAssistantConfig } from "./types";
|
|
2
|
+
|
|
3
|
+
export const docsAssistantConfig = {
|
|
4
|
+
"productName": "Northstar Docs",
|
|
5
|
+
"docsName": "Product Guides",
|
|
6
|
+
"assistantName": "Product Docs Assistant",
|
|
7
|
+
"welcome": {
|
|
8
|
+
"headline": "Ask Product Guides",
|
|
9
|
+
"body": "Search source pages, preview related content, and get concise answers grounded in these docs."
|
|
10
|
+
},
|
|
11
|
+
"labels": {
|
|
12
|
+
"currentPage": "Current page",
|
|
13
|
+
"source": "Source",
|
|
14
|
+
"relatedPages": "Related pages",
|
|
15
|
+
"openPage": "Open in preview",
|
|
16
|
+
"headerSearch": "Search Product Guides with the assistant",
|
|
17
|
+
"articleCtaTitle": "Need a targeted answer?",
|
|
18
|
+
"articleCtaBody": "Use the assistant to search these docs with this page as context.",
|
|
19
|
+
"articleCtaAction": "Ask Product Docs Assistant",
|
|
20
|
+
"composerPlaceholder": "Ask about setup, auth, webhooks, examples, or the current page...",
|
|
21
|
+
"previewWarning": "Preview config could not be loaded. Showing default template."
|
|
22
|
+
},
|
|
23
|
+
"suggestedPrompts": [
|
|
24
|
+
{
|
|
25
|
+
"title": "How do I get started?",
|
|
26
|
+
"description": "Search the quickstart and related setup pages.",
|
|
27
|
+
"prompt": "Find the fastest product setup path",
|
|
28
|
+
"flowId": "auth401"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"title": "Find release notes",
|
|
32
|
+
"description": "Open product update docs.",
|
|
33
|
+
"prompt": "Find release note docs"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"tools": [
|
|
37
|
+
{
|
|
38
|
+
"id": "searchDocs",
|
|
39
|
+
"displayName": "Search docs",
|
|
40
|
+
"aiDescription": "Search the documentation corpus and return relevant source pages with snippets.",
|
|
41
|
+
"realImplementationHint": "Replace the mock search with your docs index, vector store, or search provider.",
|
|
42
|
+
"rendererType": "sourceResults"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "openPage",
|
|
46
|
+
"displayName": "Open page metadata",
|
|
47
|
+
"aiDescription": "Return metadata and a preview for a documentation page. This does not mutate the visible page.",
|
|
48
|
+
"realImplementationHint": "Look up the page by id or URL in your CMS and return safe metadata.",
|
|
49
|
+
"rendererType": "pagePreview"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "generateCodeSnippet",
|
|
53
|
+
"displayName": "Generate code snippet",
|
|
54
|
+
"aiDescription": "Return a short implementation snippet for a docs topic and programming language.",
|
|
55
|
+
"realImplementationHint": "Use your SDK examples or an internal snippet library for production code.",
|
|
56
|
+
"rendererType": "codeSnippet"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"demoModeNotice": "Demo mode is deterministic because no OPENAI_API_KEY is set. Add a key to enable live model responses.",
|
|
60
|
+
"demoFlows": {
|
|
61
|
+
"auth401": {
|
|
62
|
+
"title": "Search Guided Onboarding",
|
|
63
|
+
"triggerPhrases": [
|
|
64
|
+
"401",
|
|
65
|
+
"auth",
|
|
66
|
+
"authentication",
|
|
67
|
+
"api key",
|
|
68
|
+
"setup"
|
|
69
|
+
],
|
|
70
|
+
"steps": [
|
|
71
|
+
{
|
|
72
|
+
"id": "search-auth-docs",
|
|
73
|
+
"assistantText": "I will search the source docs first.",
|
|
74
|
+
"toolId": "searchDocs",
|
|
75
|
+
"input": {
|
|
76
|
+
"query": "Guided Onboarding setup",
|
|
77
|
+
"limit": 3
|
|
78
|
+
},
|
|
79
|
+
"output": {
|
|
80
|
+
"query": "Guided Onboarding setup",
|
|
81
|
+
"results": [
|
|
82
|
+
{
|
|
83
|
+
"pageId": "guided-onboarding",
|
|
84
|
+
"title": "Guided Onboarding",
|
|
85
|
+
"section": "Product guides",
|
|
86
|
+
"url": "/docs/guided-onboarding",
|
|
87
|
+
"snippet": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
88
|
+
"score": 90
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"pageId": "guided-onboarding",
|
|
92
|
+
"title": "Guided Onboarding",
|
|
93
|
+
"section": "Product guides",
|
|
94
|
+
"url": "/docs/guided-onboarding",
|
|
95
|
+
"snippet": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
96
|
+
"score": 78
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "open-auth-page",
|
|
103
|
+
"assistantText": "This page is the strongest source match.",
|
|
104
|
+
"toolId": "openPage",
|
|
105
|
+
"input": {
|
|
106
|
+
"pageId": "guided-onboarding"
|
|
107
|
+
},
|
|
108
|
+
"output": {
|
|
109
|
+
"pageId": "guided-onboarding",
|
|
110
|
+
"title": "Guided Onboarding",
|
|
111
|
+
"section": "Product guides",
|
|
112
|
+
"url": "/docs/guided-onboarding",
|
|
113
|
+
"description": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
114
|
+
"relatedPageIds": [
|
|
115
|
+
"roles-and-permissions",
|
|
116
|
+
"release-notes"
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"finalResponse": "Use Guided Onboarding as the source of truth, then verify related setup on Guided Onboarding."
|
|
122
|
+
},
|
|
123
|
+
"webhooks": {
|
|
124
|
+
"title": "Find Guided Onboarding",
|
|
125
|
+
"triggerPhrases": [
|
|
126
|
+
"webhook",
|
|
127
|
+
"webhooks",
|
|
128
|
+
"event",
|
|
129
|
+
"events"
|
|
130
|
+
],
|
|
131
|
+
"steps": [
|
|
132
|
+
{
|
|
133
|
+
"id": "search-webhook-docs",
|
|
134
|
+
"assistantText": "I will search for the relevant event or webhook page.",
|
|
135
|
+
"toolId": "searchDocs",
|
|
136
|
+
"input": {
|
|
137
|
+
"query": "Guided Onboarding setup",
|
|
138
|
+
"limit": 3
|
|
139
|
+
},
|
|
140
|
+
"output": {
|
|
141
|
+
"query": "Guided Onboarding setup",
|
|
142
|
+
"results": [
|
|
143
|
+
{
|
|
144
|
+
"pageId": "guided-onboarding",
|
|
145
|
+
"title": "Guided Onboarding",
|
|
146
|
+
"section": "Product guides",
|
|
147
|
+
"url": "/docs/guided-onboarding",
|
|
148
|
+
"snippet": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
149
|
+
"score": 90
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"pageId": "guided-onboarding",
|
|
153
|
+
"title": "Guided Onboarding",
|
|
154
|
+
"section": "Product guides",
|
|
155
|
+
"url": "/docs/guided-onboarding",
|
|
156
|
+
"snippet": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
157
|
+
"score": 78
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "open-webhook-page",
|
|
164
|
+
"assistantText": "I will open the best matching page metadata.",
|
|
165
|
+
"toolId": "openPage",
|
|
166
|
+
"input": {
|
|
167
|
+
"pageId": "guided-onboarding"
|
|
168
|
+
},
|
|
169
|
+
"output": {
|
|
170
|
+
"pageId": "guided-onboarding",
|
|
171
|
+
"title": "Guided Onboarding",
|
|
172
|
+
"section": "Product guides",
|
|
173
|
+
"url": "/docs/guided-onboarding",
|
|
174
|
+
"description": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
175
|
+
"relatedPageIds": [
|
|
176
|
+
"roles-and-permissions",
|
|
177
|
+
"release-notes"
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"finalResponse": "Start with Guided Onboarding, then review related pages before implementation."
|
|
183
|
+
},
|
|
184
|
+
"codeExample": {
|
|
185
|
+
"title": "Generate Guided Onboarding",
|
|
186
|
+
"triggerPhrases": [
|
|
187
|
+
"code",
|
|
188
|
+
"snippet",
|
|
189
|
+
"example",
|
|
190
|
+
"typescript",
|
|
191
|
+
"curl"
|
|
192
|
+
],
|
|
193
|
+
"steps": [
|
|
194
|
+
{
|
|
195
|
+
"id": "search-example-docs",
|
|
196
|
+
"assistantText": "I will search for the source page for this example.",
|
|
197
|
+
"toolId": "searchDocs",
|
|
198
|
+
"input": {
|
|
199
|
+
"query": "Guided Onboarding code example",
|
|
200
|
+
"limit": 3
|
|
201
|
+
},
|
|
202
|
+
"output": {
|
|
203
|
+
"query": "Guided Onboarding code example",
|
|
204
|
+
"results": [
|
|
205
|
+
{
|
|
206
|
+
"pageId": "guided-onboarding",
|
|
207
|
+
"title": "Guided Onboarding",
|
|
208
|
+
"section": "Product guides",
|
|
209
|
+
"url": "/docs/guided-onboarding",
|
|
210
|
+
"snippet": "Set up a workspace, invite teammates, and publish your first customer guide.",
|
|
211
|
+
"score": 90
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "generate-example",
|
|
218
|
+
"assistantText": "I will return a focused implementation snippet.",
|
|
219
|
+
"toolId": "generateCodeSnippet",
|
|
220
|
+
"input": {
|
|
221
|
+
"topic": "Guided Onboarding",
|
|
222
|
+
"language": "typescript"
|
|
223
|
+
},
|
|
224
|
+
"output": {
|
|
225
|
+
"topic": "Guided Onboarding",
|
|
226
|
+
"language": "typescript",
|
|
227
|
+
"docsUrl": "/docs/guided-onboarding",
|
|
228
|
+
"notes": [
|
|
229
|
+
"Replace this demo snippet with your production example."
|
|
230
|
+
],
|
|
231
|
+
"code": "const response = await fetch(\"/api/example\");"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
],
|
|
235
|
+
"finalResponse": "Use this typescript example as a starting point, then adapt environment variables and error handling for your app."
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
} satisfies DocsAssistantConfig;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { BotIcon, ChevronDownIcon } from "lucide-react";
|
|
4
|
+
|
|
5
|
+
import { type FC, forwardRef, type ReactNode } from "react";
|
|
6
|
+
import { AssistantModalPrimitive } from "@assistant-ui/react";
|
|
7
|
+
|
|
8
|
+
import { Thread } from "../../stock/thread.aui";
|
|
9
|
+
import { cn } from "../../../../lib/utils";
|
|
10
|
+
|
|
11
|
+
export const AssistantModal: FC<{
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
tooltipOpen?: string;
|
|
14
|
+
tooltipClosed?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
defaultOpen?: boolean;
|
|
17
|
+
}> = ({
|
|
18
|
+
children,
|
|
19
|
+
tooltipOpen = "Close Assistant",
|
|
20
|
+
tooltipClosed = "Open Assistant",
|
|
21
|
+
className,
|
|
22
|
+
defaultOpen = false,
|
|
23
|
+
}) => {
|
|
24
|
+
return (
|
|
25
|
+
<AssistantModalPrimitive.Root defaultOpen={defaultOpen}>
|
|
26
|
+
<AssistantModalPrimitive.Anchor className="aui-root aui-modal-anchor fixed end-4 bottom-4 z-50 size-11">
|
|
27
|
+
<AssistantModalPrimitive.Trigger asChild>
|
|
28
|
+
<AssistantModalButton tooltipOpen={tooltipOpen} tooltipClosed={tooltipClosed} />
|
|
29
|
+
</AssistantModalPrimitive.Trigger>
|
|
30
|
+
</AssistantModalPrimitive.Anchor>
|
|
31
|
+
<AssistantModalPrimitive.Content
|
|
32
|
+
sideOffset={16}
|
|
33
|
+
className={cn(
|
|
34
|
+
"aui-root aui-modal-content data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-bottom-1/2 data-[state=closed]:slide-out-to-right-1/2 data-[state=closed]:zoom-out data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom-1/2 data-[state=open]:slide-in-from-right-1/2 data-[state=open]:zoom-in bg-popover text-popover-foreground data-[state=closed]:animate-out data-[state=open]:animate-in z-50 h-[min(680px,calc(100dvh-6rem))] w-[min(420px,calc(100vw-2rem))] overflow-clip overscroll-contain rounded-xl border p-0 shadow-md outline-none [&>.aui-thread-root]:bg-inherit [&>.aui-thread-root_.aui-thread-viewport-footer]:bg-inherit",
|
|
35
|
+
className,
|
|
36
|
+
)}
|
|
37
|
+
>
|
|
38
|
+
{children ?? <Thread />}
|
|
39
|
+
</AssistantModalPrimitive.Content>
|
|
40
|
+
</AssistantModalPrimitive.Root>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
type AssistantModalButtonProps = {
|
|
45
|
+
"data-state"?: "open" | "closed";
|
|
46
|
+
tooltipOpen: string;
|
|
47
|
+
tooltipClosed: string;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const AssistantModalButton = forwardRef<HTMLButtonElement, AssistantModalButtonProps>(
|
|
51
|
+
({ "data-state": state, tooltipOpen, tooltipClosed, ...rest }, ref) => {
|
|
52
|
+
const tooltip = state === "open" ? tooltipOpen : tooltipClosed;
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<button
|
|
56
|
+
type="button"
|
|
57
|
+
aria-label={tooltip}
|
|
58
|
+
title={tooltip}
|
|
59
|
+
{...rest}
|
|
60
|
+
className="aui-modal-button bg-primary text-primary-foreground relative flex size-full items-center justify-center rounded-full shadow transition-transform hover:scale-110 hover:bg-primary/90 active:scale-90"
|
|
61
|
+
ref={ref}
|
|
62
|
+
>
|
|
63
|
+
<BotIcon
|
|
64
|
+
data-state={state}
|
|
65
|
+
className="aui-modal-button-closed-icon absolute size-6 transition-all data-[state=closed]:scale-100 data-[state=closed]:rotate-0 data-[state=open]:scale-0 data-[state=open]:rotate-90"
|
|
66
|
+
/>
|
|
67
|
+
|
|
68
|
+
<ChevronDownIcon
|
|
69
|
+
data-state={state}
|
|
70
|
+
className="aui-modal-button-open-icon absolute size-6 transition-all data-[state=closed]:scale-0 data-[state=closed]:-rotate-90 data-[state=open]:scale-100 data-[state=open]:rotate-0"
|
|
71
|
+
/>
|
|
72
|
+
<span className="aui-sr-only sr-only">{tooltip}</span>
|
|
73
|
+
</button>
|
|
74
|
+
);
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
AssistantModalButton.displayName = "AssistantModalButton";
|