@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.
Files changed (424) hide show
  1. package/README.md +48 -2
  2. package/package.json +143 -4
  3. package/src/components/NavShell.tsx +776 -0
  4. package/src/components/SocialRow.tsx +87 -0
  5. package/src/components/Spinner.tsx +27 -0
  6. package/src/components/StackLogo.tsx +40 -0
  7. package/src/components/Terminal.tsx +110 -0
  8. package/src/components/TerminalManifest.tsx +212 -0
  9. package/src/components/ThemeProvider.tsx +271 -0
  10. package/src/components/account/AuthCard.tsx +309 -0
  11. package/src/components/assistant-ui/elements/mermaid-diagram.aui.tsx +63 -0
  12. package/src/components/assistant-ui/elements/mermaid-diagram.tsx +340 -0
  13. package/src/components/brand/BrandWordmark.tsx +32 -0
  14. package/src/components/changelog/ReleaseRail.tsx +81 -0
  15. package/src/components/changelog/index.ts +1 -0
  16. package/src/components/chat/ChatCodeBlock.tsx +67 -0
  17. package/src/components/chat/ChatMarkdown.tsx +66 -0
  18. package/src/components/chat/ChatMarkdownSource.tsx +203 -0
  19. package/src/components/chat/ChatMermaidBlock.tsx +202 -0
  20. package/src/components/chat/ChatMessage.tsx +77 -0
  21. package/src/components/chat/ChatPlayback.tsx +422 -0
  22. package/src/components/chat/ChatStreamCursor.tsx +25 -0
  23. package/src/components/chat/ChatThinking.tsx +113 -0
  24. package/src/components/chat/ChatToolCall.tsx +190 -0
  25. package/src/components/chat/ChatTranscript.tsx +60 -0
  26. package/src/components/chat/ChatWidgetFrame.tsx +107 -0
  27. package/src/components/chat/DigichatBootLoader.tsx +683 -0
  28. package/src/components/chat/DigichatLauncher.tsx +361 -0
  29. package/src/components/chat/DigichatThread.tsx +118 -0
  30. package/src/components/chat/DigichatThreadList.tsx +54 -0
  31. package/src/components/chat/DigichatWordmark.tsx +24 -0
  32. package/src/components/chat/DotMatrix.tsx +650 -0
  33. package/src/components/chat/boot-lab.tsx +766 -0
  34. package/src/components/chat/boot-signal.ts +144 -0
  35. package/src/components/chat/chat-surfaces.ts +52 -0
  36. package/src/components/chat/connection-status.ts +40 -0
  37. package/src/components/chat/digichat-wordmark.ts +355 -0
  38. package/src/components/chat/disclosure-chevron.tsx +49 -0
  39. package/src/components/chat/followable-href.ts +9 -0
  40. package/src/components/chat/gallery-thread/action-icons.tsx +25 -0
  41. package/src/components/chat/gallery-thread/attachment.aui.tsx +262 -0
  42. package/src/components/chat/gallery-thread/block-caret.tsx +439 -0
  43. package/src/components/chat/gallery-thread/cn.ts +1 -0
  44. package/src/components/chat/gallery-thread/composer-keyboard.ts +106 -0
  45. package/src/components/chat/gallery-thread/composer-trigger-popover.aui.tsx +235 -0
  46. package/src/components/chat/gallery-thread/css.d.ts +6 -0
  47. package/src/components/chat/gallery-thread/file.tsx +238 -0
  48. package/src/components/chat/gallery-thread/follow-up-suggestions.aui.tsx +92 -0
  49. package/src/components/chat/gallery-thread/format-json-dump.ts +112 -0
  50. package/src/components/chat/gallery-thread/hooks/use-attachment-src.ts +46 -0
  51. package/src/components/chat/gallery-thread/hooks/use-copy-to-clipboard.ts +9 -0
  52. package/src/components/chat/gallery-thread/image.tsx +519 -0
  53. package/src/components/chat/gallery-thread/markdown-text.tsx +278 -0
  54. package/src/components/chat/gallery-thread/message-error.aui.tsx +105 -0
  55. package/src/components/chat/gallery-thread/message-timing.aui.tsx +143 -0
  56. package/src/components/chat/gallery-thread/private-work-step.tsx +188 -0
  57. package/src/components/chat/gallery-thread/reasoning.tsx +332 -0
  58. package/src/components/chat/gallery-thread/scroll-mode.ts +174 -0
  59. package/src/components/chat/gallery-thread/source.tsx +76 -0
  60. package/src/components/chat/gallery-thread/thread.aui.tsx +1619 -0
  61. package/src/components/chat/gallery-thread/tooltip-icon-button.tsx +53 -0
  62. package/src/components/chat/gallery-thread/typed-welcome-copy.tsx +18 -0
  63. package/src/components/chat/gallery-thread/ui/tooltip.tsx +22 -0
  64. package/src/components/chat/gallery-thread/work-chain-summary.tsx +48 -0
  65. package/src/components/chat/gallery-thread/work-chain.tsx +110 -0
  66. package/src/components/chat/gallery-thread/work-status.ts +66 -0
  67. package/src/components/chat/overlay-scrollbar.tsx +86 -0
  68. package/src/components/chat/sanitize-mermaid-svg.ts +38 -0
  69. package/src/components/chat/skins/SOURCE.md +36 -0
  70. package/src/components/chat/skins/base/attachment.aui.tsx +287 -0
  71. package/src/components/chat/skins/base/aui-default/README.md +45 -0
  72. package/src/components/chat/skins/base/aui-default/collapsible-root.tsx +19 -0
  73. package/src/components/chat/skins/base/aui-default/collapsible.tsx +21 -0
  74. package/src/components/chat/skins/base/aui-default/reasoning.aui.tsx +120 -0
  75. package/src/components/chat/skins/base/aui-default/reasoning.tsx +331 -0
  76. package/src/components/chat/skins/base/aui-default/surfaces.ts +7 -0
  77. package/src/components/chat/skins/base/aui-default/tool-fallback.aui.tsx +772 -0
  78. package/src/components/chat/skins/base/aui-default/tool-group.aui.tsx +241 -0
  79. package/src/components/chat/skins/base/docs-model-options.ts +6 -0
  80. package/src/components/chat/skins/base/elements/assistant-trace.aui.tsx +169 -0
  81. package/src/components/chat/skins/base/elements/composer-trigger-popover.aui.tsx +271 -0
  82. package/src/components/chat/skins/base/elements/directive-text.aui.tsx +29 -0
  83. package/src/components/chat/skins/base/elements/directive-text.tsx +76 -0
  84. package/src/components/chat/skins/base/elements/message-timing.aui.tsx +104 -0
  85. package/src/components/chat/skins/base/elements/model-selector.aui.tsx +140 -0
  86. package/src/components/chat/skins/base/elements/model-selector.tsx +720 -0
  87. package/src/components/chat/skins/base/elements/quote.aui.tsx +290 -0
  88. package/src/components/chat/skins/base/elements/work-chain.tsx +100 -0
  89. package/src/components/chat/skins/base/markdown-text.tsx +294 -0
  90. package/src/components/chat/skins/base/model.ts +1 -0
  91. package/src/components/chat/skins/base/thread.tsx +1050 -0
  92. package/src/components/chat/skins/base/tooltip-icon-button.tsx +56 -0
  93. package/src/components/chat/skins/base/ui/avatar.tsx +115 -0
  94. package/src/components/chat/skins/base/ui/badge.tsx +51 -0
  95. package/src/components/chat/skins/base/ui/button.tsx +67 -0
  96. package/src/components/chat/skins/base/ui/command.tsx +185 -0
  97. package/src/components/chat/skins/base/ui/dialog.tsx +168 -0
  98. package/src/components/chat/skins/base/ui/dot-matrix.tsx +267 -0
  99. package/src/components/chat/skins/base/ui/popover.tsx +97 -0
  100. package/src/components/chat/skins/base/ui/skeleton.tsx +20 -0
  101. package/src/components/chat/skins/base/ui/textarea.tsx +24 -0
  102. package/src/components/chat/skins/base/ui/tooltip.tsx +73 -0
  103. package/src/components/chat/skins/base-assistant-ui/config-provider.tsx +90 -0
  104. package/src/components/chat/skins/base-assistant-ui/defaults.ts +419 -0
  105. package/src/components/chat/skins/base-assistant-ui/index.tsx +44 -0
  106. package/src/components/chat/skins/chatgpt.tsx +448 -0
  107. package/src/components/chat/skins/claude.tsx +380 -0
  108. package/src/components/chat/skins/digichat-composer-toolbar.tsx +151 -0
  109. package/src/components/chat/skins/digichat-context-meter-shares.ts +158 -0
  110. package/src/components/chat/skins/digichat-context-meter.tsx +243 -0
  111. package/src/components/chat/skins/digichat-meter-tone.ts +26 -0
  112. package/src/components/chat/skins/digichat-usage-meter.tsx +103 -0
  113. package/src/components/chat/skins/digichat.tsx +144 -0
  114. package/src/components/chat/skins/expo-react-native.tsx +29 -0
  115. package/src/components/chat/skins/gemini.tsx +322 -0
  116. package/src/components/chat/skins/grok-icon.tsx +34 -0
  117. package/src/components/chat/skins/grok.tsx +369 -0
  118. package/src/components/chat/skins/index.ts +46 -0
  119. package/src/components/chat/skins/perplexity.tsx +462 -0
  120. package/src/components/chat/skins/product-page-assistant/assistant-modal.tsx +73 -0
  121. package/src/components/chat/skins/product-page-assistant/index.tsx +19 -0
  122. package/src/components/chat/skins/product-page-assistant/product-dashboard.tsx +164 -0
  123. package/src/components/chat/skins/react-ink.tsx +97 -0
  124. package/src/components/chat/skins/thread-skin-host-contract.ts +102 -0
  125. package/src/components/chat/skins/thread-skin-view.tsx +156 -0
  126. package/src/components/chat/skins/thread-skins.ts +143 -0
  127. package/src/components/chat/skins/tooltip-icon-button.tsx +35 -0
  128. package/src/components/chat/skins/ui/dropdown-menu.tsx +272 -0
  129. package/src/components/chat/skins/webpage-assistant/assistant-config.ts +238 -0
  130. package/src/components/chat/skins/webpage-assistant/assistant-modal.tsx +78 -0
  131. package/src/components/chat/skins/webpage-assistant/config-provider.tsx +132 -0
  132. package/src/components/chat/skins/webpage-assistant/docs-app.tsx +106 -0
  133. package/src/components/chat/skins/webpage-assistant/docs-article.tsx +109 -0
  134. package/src/components/chat/skins/webpage-assistant/docs-assistant.tsx +73 -0
  135. package/src/components/chat/skins/webpage-assistant/docs-nav.tsx +81 -0
  136. package/src/components/chat/skins/webpage-assistant/host-ui.ts +79 -0
  137. package/src/components/chat/skins/webpage-assistant/index.tsx +12 -0
  138. package/src/components/chat/skins/webpage-assistant/markdown-page.tsx +11 -0
  139. package/src/components/chat/skins/webpage-assistant/pages.ts +9 -0
  140. package/src/components/chat/skins/webpage-assistant/types.ts +178 -0
  141. package/src/components/chat/skins/webpage-assistant/use-mobile.ts +19 -0
  142. package/src/components/chat/stock/SOURCE.md +90 -0
  143. package/src/components/chat/stock/artifacts-panel.tsx +305 -0
  144. package/src/components/chat/stock/attachment.aui.tsx +280 -0
  145. package/src/components/chat/stock/chat-notice.tsx +143 -0
  146. package/src/components/chat/stock/chat-private-mode.tsx +64 -0
  147. package/src/components/chat/stock/deploy-ui-context.tsx +89 -0
  148. package/src/components/chat/stock/embed-chat-prefs.tsx +471 -0
  149. package/src/components/chat/stock/file.tsx +265 -0
  150. package/src/components/chat/stock/follow-up-suggestions.aui.tsx +83 -0
  151. package/src/components/chat/stock/image.tsx +531 -0
  152. package/src/components/chat/stock/index.ts +129 -0
  153. package/src/components/chat/stock/json-view.tsx +140 -0
  154. package/src/components/chat/stock/markdown-text.tsx +319 -0
  155. package/src/components/chat/stock/message-error.aui.tsx +96 -0
  156. package/src/components/chat/stock/message-export-menu.tsx +156 -0
  157. package/src/components/chat/stock/palette-row-preview.tsx +26 -0
  158. package/src/components/chat/stock/reasoning.aui.tsx +120 -0
  159. package/src/components/chat/stock/reasoning.tsx +335 -0
  160. package/src/components/chat/stock/skin-chrome.tsx +81 -0
  161. package/src/components/chat/stock/skin-credit.tsx +63 -0
  162. package/src/components/chat/stock/skin-palette-bridge.tsx +235 -0
  163. package/src/components/chat/stock/skin-palette-context.ts +16 -0
  164. package/src/components/chat/stock/skin-runtime.tsx +52 -0
  165. package/src/components/chat/stock/skin-slash-palette.tsx +393 -0
  166. package/src/components/chat/stock/skin-types.ts +217 -0
  167. package/src/components/chat/stock/stock-chat-prefs-host.tsx +501 -0
  168. package/src/components/chat/stock/stock-send-gate.tsx +94 -0
  169. package/src/components/chat/stock/stock-shape.tsx +39 -0
  170. package/src/components/chat/stock/thread.aui.tsx +645 -0
  171. package/src/components/chat/stock/tool-display.ts +6 -0
  172. package/src/components/chat/stock/tool-fallback.aui.tsx +866 -0
  173. package/src/components/chat/stock/tool-group.aui.tsx +244 -0
  174. package/src/components/chat/stock/tool-surface.ts +120 -0
  175. package/src/components/chat/stock/tooltip-icon-button.tsx +49 -0
  176. package/src/components/chat/stock/ui/avatar.tsx +108 -0
  177. package/src/components/chat/stock/ui/button.tsx +81 -0
  178. package/src/components/chat/stock/ui/collapsible.tsx +21 -0
  179. package/src/components/chat/stock/ui/dialog.tsx +163 -0
  180. package/src/components/chat/stock/ui/skeleton.tsx +13 -0
  181. package/src/components/chat/stock/ui/textarea.tsx +20 -0
  182. package/src/components/chat/stock/ui/tooltip.tsx +68 -0
  183. package/src/components/chat/stock/use-attachment-src.ts +42 -0
  184. package/src/components/chat/stock/use-copy-to-clipboard.ts +29 -0
  185. package/src/components/chat/strip-model-boilerplate.ts +42 -0
  186. package/src/components/chat/suggestion-cycle.tsx +230 -0
  187. package/src/components/chat/suggestion-scroll-row.tsx +81 -0
  188. package/src/components/chat/trace-grouping/chain-group-by.ts +44 -0
  189. package/src/components/chat/trace-grouping/chain-state.ts +141 -0
  190. package/src/components/chat/trace-grouping/index.ts +32 -0
  191. package/src/components/chat/trace-grouping/tool-row.ts +74 -0
  192. package/src/components/chat/trace-grouping/use-deploy-work-disclosure.ts +35 -0
  193. package/src/components/chat/trace-grouping/use-work-chain.ts +103 -0
  194. package/src/components/chat/trace-i18n/core.ts +48 -0
  195. package/src/components/chat/trace-i18n/index.tsx +23 -0
  196. package/src/components/chat/trace-i18n/locales/en.ts +24 -0
  197. package/src/components/chat/trace-i18n/locales/fr.ts +28 -0
  198. package/src/components/chat/trace-i18n/types.ts +35 -0
  199. package/src/components/chat/trace-spacing.ts +249 -0
  200. package/src/components/chat/transcript/activity-view.ts +375 -0
  201. package/src/components/chat/transcript/chat-export.ts +133 -0
  202. package/src/components/chat/transcript/index.ts +10 -0
  203. package/src/components/chat/transcript/save-file.ts +209 -0
  204. package/src/components/chat/transcript/transcript-markdown.ts +428 -0
  205. package/src/components/chat/transcript/types.ts +81 -0
  206. package/src/components/chat/turn-outcome.ts +52 -0
  207. package/src/components/chat/use-warmup-phase.ts +18 -0
  208. package/src/components/chat/work-status-lead.tsx +49 -0
  209. package/src/components/chrome.tsx +264 -0
  210. package/src/components/command-palette/CommandPalette.tsx +404 -0
  211. package/src/components/command-palette/index.ts +6 -0
  212. package/src/components/contact/ContactMailto.tsx +112 -0
  213. package/src/components/contact/index.ts +5 -0
  214. package/src/components/conviction/ConvictionMeter.tsx +40 -0
  215. package/src/components/conviction/SignedConvictionBadge.tsx +26 -0
  216. package/src/components/conviction/index.ts +7 -0
  217. package/src/components/data-layout/BentoGrid.tsx +52 -0
  218. package/src/components/data-layout/CardRail.tsx +150 -0
  219. package/src/components/data-layout/DotMatrixStat.tsx +65 -0
  220. package/src/components/data-layout/FeatureCell.tsx +80 -0
  221. package/src/components/data-layout/MediaFrame.tsx +125 -0
  222. package/src/components/data-layout/ModuleGrid.tsx +735 -0
  223. package/src/components/data-layout/Odometer.tsx +149 -0
  224. package/src/components/data-layout/ProductFrame.tsx +79 -0
  225. package/src/components/data-layout/TestimonialWall.tsx +139 -0
  226. package/src/components/data-layout/index.ts +19 -0
  227. package/src/components/data-layout/treemap.ts +368 -0
  228. package/src/components/deck/DeckStack.tsx +243 -0
  229. package/src/components/desk/DataTable.tsx +373 -0
  230. package/src/components/desk/KpiGrid.tsx +80 -0
  231. package/src/components/desk/Sparkline.tsx +63 -0
  232. package/src/components/desk/StateBlock.tsx +132 -0
  233. package/src/components/desk/index.ts +18 -0
  234. package/src/components/diagrams/ArchitectureDiagram.tsx +350 -0
  235. package/src/components/diagrams/ArchitectureTour.tsx +912 -0
  236. package/src/components/diagrams/TerminalSchematic.tsx +192 -0
  237. package/src/components/diagrams/architecture-svg.tsx +384 -0
  238. package/src/components/diagrams/index.ts +30 -0
  239. package/src/components/diagrams/mermaid-theme.ts +115 -0
  240. package/src/components/diagrams/tour-camera.ts +171 -0
  241. package/src/components/docs/CodeTabs.tsx +90 -0
  242. package/src/components/docs/CopyCommand.tsx +151 -0
  243. package/src/components/docs/DocsLayout.tsx +197 -0
  244. package/src/components/docs/DocsSearch.tsx +97 -0
  245. package/src/components/docs/Endpoint.tsx +135 -0
  246. package/src/components/document/DocumentFrame.tsx +43 -0
  247. package/src/components/document/GlyphList.tsx +51 -0
  248. package/src/components/document/PageTitle.tsx +44 -0
  249. package/src/components/document/Prose.tsx +38 -0
  250. package/src/components/document/Section.tsx +55 -0
  251. package/src/components/document/index.ts +13 -0
  252. package/src/components/effects-chrome/AnnouncementBar.tsx +88 -0
  253. package/src/components/effects-chrome/HorizontalScrollTrack.tsx +461 -0
  254. package/src/components/effects-chrome/Pipeline.tsx +226 -0
  255. package/src/components/effects-chrome/RotatingPrompts.tsx +116 -0
  256. package/src/components/effects-chrome/StackingPanels.tsx +101 -0
  257. package/src/components/effects-chrome/TabStrip.tsx +232 -0
  258. package/src/components/effects-chrome/ToastStack.tsx +201 -0
  259. package/src/components/effects-chrome/horizontal-track-core.ts +70 -0
  260. package/src/components/effects-chrome/index.ts +35 -0
  261. package/src/components/emblems.tsx +188 -0
  262. package/src/components/faviconTheme.ts +23 -0
  263. package/src/components/figure/Figure.tsx +38 -0
  264. package/src/components/figure/index.ts +2 -0
  265. package/src/components/finance-charts/DrawdownPlot.tsx +76 -0
  266. package/src/components/finance-charts/EquityCurve.tsx +71 -0
  267. package/src/components/finance-charts/PriceChart.tsx +119 -0
  268. package/src/components/finance-charts/chart-host.tsx +236 -0
  269. package/src/components/finance-charts/chart-scale.ts +93 -0
  270. package/src/components/finance-charts/demo-data.ts +88 -0
  271. package/src/components/finance-charts/index.ts +46 -0
  272. package/src/components/finance-charts/lw-chart.tsx +292 -0
  273. package/src/components/finance-composites/MarketBar.tsx +243 -0
  274. package/src/components/finance-composites/OrderBook.tsx +133 -0
  275. package/src/components/finance-composites/PerformanceDashboard.tsx +185 -0
  276. package/src/components/finance-composites/SortableTable.tsx +144 -0
  277. package/src/components/finance-composites/StockTicker.tsx +65 -0
  278. package/src/components/finance-composites/SyncedTearsheet.tsx +226 -0
  279. package/src/components/finance-composites/index.ts +28 -0
  280. package/src/components/finance-tearsheet/KpiStrip.tsx +49 -0
  281. package/src/components/finance-tearsheet/LiveBadge.tsx +29 -0
  282. package/src/components/finance-tearsheet/ReturnsMatrix.tsx +321 -0
  283. package/src/components/finance-tearsheet/StrategyTearsheet.tsx +99 -0
  284. package/src/components/finance-tearsheet/TearsheetCard.tsx +54 -0
  285. package/src/components/finance-tearsheet/TradeLogTable.tsx +73 -0
  286. package/src/components/finance-tearsheet/charts.tsx +2624 -0
  287. package/src/components/finance-tearsheet/demo-data.ts +177 -0
  288. package/src/components/finance-tearsheet/format.ts +41 -0
  289. package/src/components/finance-tearsheet/index.ts +120 -0
  290. package/src/components/finance-tearsheet/print.ts +52 -0
  291. package/src/components/finance-tearsheet/risk-bands.ts +48 -0
  292. package/src/components/finance-tearsheet/stats.ts +35 -0
  293. package/src/components/finance-tearsheet/strategy-sheet-model.ts +238 -0
  294. package/src/components/finance-tearsheet/types.ts +58 -0
  295. package/src/components/footer/FooterCells.tsx +109 -0
  296. package/src/components/footer/index.ts +6 -0
  297. package/src/components/graph.tsx +158 -0
  298. package/src/components/icons.tsx +98 -0
  299. package/src/components/landing/PixelWordmark.tsx +36 -0
  300. package/src/components/logos.ts +39 -0
  301. package/src/components/marquee/Marquee.tsx +204 -0
  302. package/src/components/metrics/PerfMetrics.tsx +68 -0
  303. package/src/components/metrics/StatCounter.tsx +104 -0
  304. package/src/components/page-geometry.tsx +177 -0
  305. package/src/components/pricing/Pricing.tsx +174 -0
  306. package/src/components/pricing/PricingMatrix.tsx +219 -0
  307. package/src/components/prose/index.ts +2 -0
  308. package/src/components/prose/prose.tsx +86 -0
  309. package/src/components/repo-activity/RepoActivity.tsx +599 -0
  310. package/src/components/repo-activity/RepoHeatmap.tsx +225 -0
  311. package/src/components/repo-activity/demo.ts +201 -0
  312. package/src/components/repo-activity/fetch.ts +211 -0
  313. package/src/components/repo-activity/heatmap.ts +123 -0
  314. package/src/components/repo-activity/index.ts +28 -0
  315. package/src/components/repo-activity/types.ts +99 -0
  316. package/src/components/stages/NumberedStages.tsx +116 -0
  317. package/src/components/symbols/marks.tsx +116 -0
  318. package/src/components/symbols/terminal-lockup.tsx +136 -0
  319. package/src/components/symbols/terminal-marks.tsx +226 -0
  320. package/src/components/terminal/ChatResponseLoader.tsx +67 -0
  321. package/src/components/terminal/ContainerBootLoader.tsx +82 -0
  322. package/src/components/terminal/TerminalStepCaret.tsx +202 -0
  323. package/src/components/themeInit.ts +24 -0
  324. package/src/components/typography/MotionReveal.tsx +108 -0
  325. package/src/components/typography/TypewriterReveal.tsx +101 -0
  326. package/src/components/typography/WordReveal.tsx +143 -0
  327. package/src/data/modules.ts +378 -0
  328. package/src/data/subsystems.ts +101 -0
  329. package/src/index.ts +587 -0
  330. package/src/lib/base-path.ts +60 -0
  331. package/src/lib/cx.ts +25 -0
  332. package/src/lib/gloomberb.ts +69 -0
  333. package/src/lib/record.ts +19 -0
  334. package/src/lib/stub-payload.ts +183 -0
  335. package/src/lib/useBodyScrollLock.ts +44 -0
  336. package/src/lib/utils.ts +6 -0
  337. package/src/motion/primitives.tsx +105 -0
  338. package/src/motion/scroll-glide.ts +62 -0
  339. package/src/motion/scrolly-core.ts +38 -0
  340. package/src/motion/scrolly.tsx +95 -0
  341. package/src/navigation/HashScrollManager.tsx +167 -0
  342. package/src/navigation/hashScroll.ts +78 -0
  343. package/src/replay/browser.ts +280 -0
  344. package/src/replay/chat-export-run.ts +121 -0
  345. package/src/replay/export-format.ts +25 -0
  346. package/src/replay/export-mount.ts +32 -0
  347. package/src/replay/filename.ts +54 -0
  348. package/src/replay/index.ts +21 -0
  349. package/src/replay/redact-dom.ts +178 -0
  350. package/src/replay/redact.ts +113 -0
  351. package/src/replay/snapshot.ts +659 -0
  352. package/src/styles/account-auth.css +339 -0
  353. package/src/styles/brand-wordmark.css +11 -0
  354. package/src/styles/card-rail.css +120 -0
  355. package/src/styles/chat-aui.css +1143 -0
  356. package/src/styles/chat-core.css +469 -0
  357. package/src/styles/chat-digichat.css +2531 -0
  358. package/src/styles/chat-math.css +70 -0
  359. package/src/styles/chat-skin-palette.css +138 -0
  360. package/src/styles/chat-stock-menu.css +37 -0
  361. package/src/styles/chat-widgets.css +190 -0
  362. package/src/styles/command-palette.css +372 -0
  363. package/src/styles/controls-core.css +2261 -0
  364. package/src/styles/controls-overlay.css +603 -0
  365. package/src/styles/data-layout.css +288 -0
  366. package/src/styles/deck.css +141 -0
  367. package/src/styles/diagrams.css +1860 -0
  368. package/src/styles/digichat-app-theme.css +250 -0
  369. package/src/styles/digichat-boot-loader.css +487 -0
  370. package/src/styles/digichat-launcher.css +377 -0
  371. package/src/styles/docs.css +165 -0
  372. package/src/styles/effects-chrome.css +888 -0
  373. package/src/styles/finance-composites.css +214 -0
  374. package/src/styles/finance-tearsheet-overlay.css +90 -0
  375. package/src/styles/finance-tearsheet.css +945 -0
  376. package/src/styles/marquee.css +168 -0
  377. package/src/styles/metrics.css +82 -0
  378. package/src/styles/nav-shell.css +551 -0
  379. package/src/styles/pricing.css +79 -0
  380. package/src/styles/repo-activity.css +575 -0
  381. package/src/styles/stages.css +69 -0
  382. package/src/styles/terminal-loaders.css +122 -0
  383. package/src/styles/terminal-manifest.css +228 -0
  384. package/src/styles/web-theme.css +1007 -0
  385. package/src/styles/word-reveal.css +204 -0
  386. package/src/theme/apply-theme.ts +214 -0
  387. package/src/theme/index.ts +27 -0
  388. package/src/theme/palette-registry.ts +855 -0
  389. package/src/theme/tui-prefs.ts +64 -0
  390. package/src/ui/alert.tsx +78 -0
  391. package/src/ui/avatar.tsx +104 -0
  392. package/src/ui/badge.tsx +75 -0
  393. package/src/ui/breadcrumb.tsx +61 -0
  394. package/src/ui/button.tsx +67 -0
  395. package/src/ui/card.tsx +139 -0
  396. package/src/ui/checkbox.tsx +27 -0
  397. package/src/ui/collapsible.tsx +32 -0
  398. package/src/ui/date-pager.tsx +325 -0
  399. package/src/ui/dialog.tsx +157 -0
  400. package/src/ui/dropdown-menu.tsx +267 -0
  401. package/src/ui/empty-state.tsx +165 -0
  402. package/src/ui/field.tsx +104 -0
  403. package/src/ui/form.tsx +36 -0
  404. package/src/ui/icon-button.tsx +36 -0
  405. package/src/ui/index.ts +34 -0
  406. package/src/ui/input.tsx +33 -0
  407. package/src/ui/kbd.tsx +30 -0
  408. package/src/ui/label.tsx +32 -0
  409. package/src/ui/pager.tsx +119 -0
  410. package/src/ui/pagination.tsx +126 -0
  411. package/src/ui/radio-group.tsx +51 -0
  412. package/src/ui/search-bar.tsx +85 -0
  413. package/src/ui/segmented-control.tsx +76 -0
  414. package/src/ui/select.tsx +257 -0
  415. package/src/ui/separator.tsx +24 -0
  416. package/src/ui/sheet.tsx +141 -0
  417. package/src/ui/skeleton.tsx +76 -0
  418. package/src/ui/slider.tsx +76 -0
  419. package/src/ui/switch.tsx +31 -0
  420. package/src/ui/table.tsx +179 -0
  421. package/src/ui/tabs.tsx +89 -0
  422. package/src/ui/tags-input.tsx +168 -0
  423. package/src/ui/textarea.tsx +17 -0
  424. package/src/ui/tooltip.tsx +71 -0
@@ -0,0 +1,70 @@
1
+ /* ==========================================================================
2
+ Chat math (@digithings-ai/ui) — KaTeX layout + the token palette over it.
3
+ ==========================================================================
4
+
5
+ Split out of chat-core.css deliberately. The @import below pulls KaTeX's
6
+ own stylesheet, which drags in 60 font files — about 1 MB of assets. While
7
+ it lived in chat-core.css, every app importing that sheet paid for it:
8
+ dashboard shipped 1.03 MB of KaTeX fonts and 407 `.katex` selectors inside an
9
+ 11 MB static export while declaring no katex dependency and rendering no
10
+ math at all, and the design reference did the same.
11
+
12
+ So import this sheet ONLY from an app that actually renders math — today
13
+ digichat and digithings-web, both of which render <DigiChatSession> and so
14
+ reach remark-math/rehype-katex. An app that only uses <ChatMarkdown>'s
15
+ children path (dashboard, via SafeMarkdown) must not import it.
16
+
17
+ Import it AFTER chat-core.css: the `.chat-md .katex` rules below are the
18
+ token palette laid over KaTeX's metric-accurate layout, and @import is only
19
+ legal before other rules, so it has to head its own file.
20
+
21
+ katex is a dependency of @digithings-ai/ui and hoists to the workspace root,
22
+ so the bare specifier resolves from every consumer.
23
+ ========================================================================== */
24
+ @import "katex/dist/katex.min.css";
25
+
26
+ /* ── math (KaTeX) ─────────────────────────────────────────────────────────
27
+ The imported katex sheet lays glyphs out; everything visible here is a
28
+ token, so `$e^{i\pi}$` converts with [data-theme] like any other ink. */
29
+
30
+ .chat-md .katex {
31
+ color: var(--ink);
32
+ font-size: 1.04em;
33
+ }
34
+
35
+ /* Display math is a block of its own — scrolls inside its box rather than
36
+ widening the turn (a long derivation must not stretch the transcript). */
37
+ .chat-md .katex-display {
38
+ margin: 0.9rem 0;
39
+ padding: 0.15rem 0;
40
+ overflow-x: auto;
41
+ overflow-y: hidden;
42
+ }
43
+
44
+ .chat-md .katex .mord,
45
+ .chat-md .katex .mrel,
46
+ .chat-md .katex .mbin,
47
+ .chat-md .katex .mopen,
48
+ .chat-md .katex .mclose,
49
+ .chat-md .katex .mpunct {
50
+ color: inherit;
51
+ }
52
+
53
+ /* Rules (fraction bars, \overline, \sqrt) default to currentColor in katex —
54
+ pin them to ink so they never inherit a muted container colour. */
55
+ .chat-md .katex .frac-line,
56
+ .chat-md .katex .overline .overline-line,
57
+ .chat-md .katex .underline .underline-line,
58
+ .chat-md .katex .hline,
59
+ .chat-md .katex .rule {
60
+ border-color: var(--ink);
61
+ background: var(--ink);
62
+ }
63
+
64
+ /* Unparseable TeX: KaTeX keeps the source, we tint it with the negative token
65
+ (ChatMarkdownSource passes errorColor: var(--down) for the same reason). */
66
+ .chat-md .katex-error {
67
+ color: var(--down);
68
+ font-family: var(--font-mono);
69
+ font-size: 0.82em;
70
+ }
@@ -0,0 +1,138 @@
1
+ /*
2
+ * Skin-agnostic product palette (`/` commands, `@` tools, and the panes they
3
+ * open) for every skin that is not digichat. SkinPaletteBridge marks the
4
+ * thread composer form with [data-skin-palette-composer] and portals the
5
+ * popovers into it.
6
+ *
7
+ * Colours come only from the shared shadcn tokens (--popover, --border,
8
+ * --muted-foreground; light at :root, dark under .dark), so the
9
+ * palette follows each skin's light/dark theme without per-skin rules. The
10
+ * digichat surface tokens the popover and panes read (--ink, --bg, --hair, …)
11
+ * are pointed at those shared tokens on the palette elements only. The
12
+ * doubled classes outrank the digichat stylesheet when both are loaded.
13
+ */
14
+
15
+ [data-skin-palette-composer] {
16
+ position: relative;
17
+ }
18
+
19
+ [data-skin-palette-composer] :is(.skin-palette, .dc-composer-menu) {
20
+ --ink: var(--popover-foreground, CanvasText);
21
+ --ink-mute: var(--muted-foreground, GrayText);
22
+ --bg: var(--popover, Canvas);
23
+ --surface: var(--popover, Canvas);
24
+ --surface-2: var(--popover, Canvas);
25
+ --term-bg: var(--popover, Canvas);
26
+ --hair: var(--border, color-mix(in oklab, CanvasText 15%, transparent));
27
+ }
28
+
29
+ [data-skin-palette-composer] :is(.skin-palette, .dc-composer-menu):is(.skin-palette, .dc-composer-menu) {
30
+ margin-bottom: 0.375rem;
31
+ border: 1px solid var(--hair);
32
+ border-radius: 0.75rem;
33
+ background: var(--bg);
34
+ color: var(--ink);
35
+ box-shadow:
36
+ 0 8px 24px -8px rgb(0 0 0 / 0.18),
37
+ 0 2px 6px -2px rgb(0 0 0 / 0.08);
38
+ font-family: inherit;
39
+ text-align: start;
40
+ }
41
+
42
+ /* One row style for the slash palette and every composer menu page (theme,
43
+ view, density, language, models...): same inset, radius, padding. */
44
+ [data-skin-palette-composer] .skin-palette.skin-palette [data-slot="composer-trigger-popover-item"],
45
+ [data-skin-palette-composer] .skin-palette.skin-palette [role="option"],
46
+ [data-skin-palette-composer] .dc-composer-menu.dc-composer-menu [data-slot="composer-menu-row"] {
47
+ margin-inline: 0.25rem;
48
+ width: calc(100% - 0.5rem);
49
+ border-radius: 0.5rem;
50
+ padding: 0.375rem 0.625rem;
51
+ color: var(--ink);
52
+ background: transparent;
53
+ }
54
+
55
+ /* A neutral wash mixed from the popover's own colours. --accent is not used:
56
+ brand accent themes repoint it to a saturated colour. */
57
+ [data-skin-palette-composer] .skin-palette.skin-palette [data-highlighted],
58
+ [data-skin-palette-composer] .dc-composer-menu [data-cursor="true"],
59
+ [data-skin-palette-composer] .dc-composer-menu.dc-composer-menu [data-slot="composer-menu-row"][data-cursor="true"] {
60
+ background: color-mix(in oklab, var(--ink) 9%, var(--bg));
61
+ color: var(--ink);
62
+ outline: none;
63
+ }
64
+
65
+ [data-skin-palette-composer] .skin-palette.skin-palette :is([data-slot="palette-value"], [data-slot="palette-detail"]),
66
+ [data-skin-palette-composer] .skin-palette.skin-palette .text-ink-mute {
67
+ color: var(--ink-mute);
68
+ }
69
+
70
+ /* Pane scroll indicator (the digichat stylesheet only loads with that skin). */
71
+ [data-skin-palette-composer] .dc-composer-menu .dc-composer-menu-scroll {
72
+ position: absolute;
73
+ top: 0;
74
+ right: 2px;
75
+ bottom: 0;
76
+ width: 6px;
77
+ pointer-events: none;
78
+ }
79
+
80
+ [data-skin-palette-composer] .dc-composer-menu .dc-composer-menu-thumb {
81
+ position: absolute;
82
+ right: 0;
83
+ width: 6px;
84
+ border-radius: 3px;
85
+ background: color-mix(in oklab, var(--ink-mute) 32%, transparent);
86
+ pointer-events: auto;
87
+ }
88
+
89
+ /*
90
+ * `/density` for skins that are not digichat. The digichat thread has its own
91
+ * density tokens; here the scope's [data-skin-density] respaces the messages
92
+ * the stock assistant-ui markup renders ([data-message-id]). "default" changes
93
+ * nothing.
94
+ */
95
+ [data-skin-density="compact"] [data-message-id] {
96
+ line-height: 1.45;
97
+ }
98
+ [data-skin-density="compact"] [data-message-id] :is(p, ul, ol, pre, blockquote) {
99
+ margin-block: 0.35em;
100
+ }
101
+ [data-skin-density="compact"] [data-slot="aui_message-group"],
102
+ [data-skin-density="compact"] :has(> [data-message-id] + [data-message-id]) {
103
+ row-gap: 0.75rem;
104
+ }
105
+ [data-skin-density="airy"] [data-message-id] {
106
+ line-height: 1.85;
107
+ }
108
+ [data-skin-density="airy"] [data-message-id] :is(p, ul, ol, pre, blockquote) {
109
+ margin-block: 1em;
110
+ }
111
+ [data-skin-density="airy"] [data-slot="aui_message-group"],
112
+ [data-skin-density="airy"] :has(> [data-message-id] + [data-message-id]) {
113
+ row-gap: 2.5rem;
114
+ }
115
+
116
+ /*
117
+ * `/scrollbar` for skins that are not digichat. The digichat thread keys its
118
+ * bars on its own root; here the scope's [data-skin-scrollbars] reaches the
119
+ * skin's scroll surfaces: the thread viewport (base marks it with
120
+ * data-slot; the clone skins only carry Tailwind overflow utilities) and any
121
+ * scrolling block inside it.
122
+ * always — a thin visible bar in a reserved gutter.
123
+ * auto — no bar and no gutter (the content still scrolls).
124
+ */
125
+ [data-skin-scrollbars="always"]
126
+ :is([data-slot="aui_thread-viewport"], .overflow-y-scroll, .overflow-y-auto, .overflow-auto) {
127
+ scrollbar-gutter: stable;
128
+ scrollbar-width: thin;
129
+ scrollbar-color: color-mix(in oklab, currentColor 38%, transparent) transparent;
130
+ }
131
+ [data-skin-scrollbars="auto"]
132
+ :is([data-slot="aui_thread-viewport"], .overflow-y-scroll, .overflow-y-auto, .overflow-auto) {
133
+ /* The composer sits inside the viewport, so a hover or focus reveal would
134
+ show the bar nearly all the time; auto hides it and wheel, touch and
135
+ keyboard scrolling still work. */
136
+ scrollbar-gutter: auto;
137
+ scrollbar-width: none;
138
+ }
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Stock skin "…" menu and its side panels (expo-react-native,
3
+ * webpage-assistant, product-page-assistant).
4
+ *
5
+ * The menu's classes ask for `bg-surface-2`. chat-aui.css emits that utility
6
+ * only inside the stock thread and its marked portals; this menu is portaled
7
+ * unmarked and paints its own fill from `--surface-2` below. These rules stay unlayered so the
8
+ * panel keeps its border, shadow and row highlight whichever sheet loads first. The menu is portaled to <body>, so
9
+ * it reads the page-level tokens, which follow the light/dark theme.
10
+ *
11
+ * Selector is the stock menu's own class pair, so other skins' menus
12
+ * (base: bg-popover; digichat: its own rules) are untouched. The radius is
13
+ * assistant-ui's own (rounded-xl panel, rounded-lg rows) and lives on the
14
+ * classes in thread.aui.tsx. The row highlight is a tint of the text colour:
15
+ * --muted is too close to --surface-2 in light mode to show.
16
+ */
17
+ .aui-action-bar-more-content.bg-surface-2 {
18
+ border-color: var(--hair, var(--border));
19
+ background-color: var(--surface-2, var(--popover, Canvas));
20
+ color: var(--ink, var(--popover-foreground, CanvasText));
21
+ box-shadow:
22
+ 0 8px 24px -8px rgb(0 0 0 / 0.18),
23
+ 0 2px 6px -2px rgb(0 0 0 / 0.08);
24
+ }
25
+
26
+ .aui-action-bar-more-content.bg-surface-2
27
+ .aui-action-bar-more-item:is(:hover, :focus-visible, [data-highlighted], [data-state="open"]) {
28
+ background-color: color-mix(in oklab, var(--ink, CanvasText) 8%, transparent);
29
+ }
30
+
31
+ /* Keyboard focus: a visible ring on the focused row (the tint alone is under
32
+ 3:1 against the panel). --ink-soft on the panel measures 5.53:1 in light
33
+ and 6.61:1 in dark. */
34
+ .aui-action-bar-more-content.bg-surface-2 .aui-action-bar-more-item:focus-visible {
35
+ outline: 2px solid var(--ink-soft, var(--ink, CanvasText));
36
+ outline-offset: -2px;
37
+ }
@@ -0,0 +1,190 @@
1
+ /* ==========================================================================
2
+ @digithings-ai/ui — chat activity-widget CSS (components/chat/*, #1418).
3
+ The digichat activity grammar promoted from the chatbot reference family:
4
+ collapsible tool-call blocks (ChatToolCall), the thinking/reasoning
5
+ disclosure (ChatThinking), and the framed-embed widget grammar
6
+ (ChatWidgetFrame / ChatWidgetButton). Import AFTER the token bridge, in the
7
+ app's globals.css:
8
+ @import "tailwindcss";
9
+ @import "@digithings-ai/design/tokens.css";
10
+ @import "@digithings-ai/ui/styles/web-theme.css";
11
+ @import "@digithings-ai/ui/styles/chat-widgets.css";
12
+ @source "<path-to>/packages/ui/src/components/chat";
13
+ The @source line is load-bearing (path relative to the app's globals.css):
14
+ the components carry token-backed utilities, and Tailwind does not scan
15
+ package sources on its own.
16
+
17
+ Utilities in the components carry layout/spacing/color/type. This file
18
+ holds only what must stay CSS: thinking caret/dot art, the aria-expanded
19
+ rotate combinators, color-mix rails and hover states, and the pulse/reveal
20
+ keyframes (all off under reduced motion).
21
+ ========================================================================== */
22
+
23
+ /* ── collapsible tool-call block (ChatToolCall) ─────────────────────── */
24
+
25
+ .tc {
26
+ /* component sizing tokens (chat-widgets) */
27
+ --tc-rail-w: 2px;
28
+ --tc-pad-inline: 0.75rem;
29
+ --tc-caret-size: 0.55rem;
30
+ border-inline-start: var(--tc-rail-w) solid color-mix(in srgb, var(--accent) 40%, var(--term-hair));
31
+ /* Space between the chain rail and the tool name — lives here (not a
32
+ Tailwind ps-*) so it still applies when the utility isn't regenerated. */
33
+ padding-inline-start: var(--tc-pad-inline);
34
+ }
35
+
36
+ .tc--err {
37
+ border-inline-start-color: color-mix(in srgb, var(--danger) 55%, var(--term-hair));
38
+ }
39
+
40
+ .tc-dump {
41
+ /* Own root token: the dump is not required to sit inside .tc. */
42
+ --tc-dump-max-h: 8.5rem;
43
+ max-height: var(--tc-dump-max-h);
44
+ overflow: auto;
45
+ overscroll-behavior: contain;
46
+ scrollbar-width: thin;
47
+ }
48
+
49
+ .tc-caret {
50
+ display: inline-flex;
51
+ flex-shrink: 0;
52
+ align-items: center;
53
+ justify-content: center;
54
+ width: var(--tc-caret-size);
55
+ height: var(--tc-caret-size);
56
+ color: var(--term-mute, var(--ink-mute));
57
+ transform: none;
58
+ transform-origin: 50% 50%;
59
+ }
60
+
61
+ .tc-caret [data-slot="dot-matrix"] {
62
+ width: var(--tc-caret-size);
63
+ height: var(--tc-caret-size);
64
+ }
65
+
66
+ .tc-caret.open,
67
+ button.tc-head[aria-expanded="true"] .tc-caret {
68
+ transform: rotate(90deg);
69
+ }
70
+
71
+ .tc-run {
72
+ color: var(--term-mute, var(--ink-mute));
73
+ }
74
+
75
+ /* ── thinking / reasoning disclosure (ChatThinking) ─────────────────── */
76
+
77
+ .think-chip {
78
+ --think-caret-size: 0.55rem;
79
+ background: transparent;
80
+ transition: color 0.2s var(--ease);
81
+ }
82
+
83
+ .think-chip:hover {
84
+ color: var(--ink-soft);
85
+ border-color: color-mix(in srgb, var(--accent) 40%, var(--hair));
86
+ }
87
+
88
+ .think-caret {
89
+ display: inline-flex;
90
+ flex-shrink: 0;
91
+ align-items: center;
92
+ justify-content: center;
93
+ width: var(--think-caret-size);
94
+ height: var(--think-caret-size);
95
+ margin-inline-start: auto;
96
+ transform: none;
97
+ transform-origin: 50% 50%;
98
+ }
99
+
100
+ .think-caret [data-slot="dot-matrix"] {
101
+ width: var(--think-caret-size);
102
+ height: var(--think-caret-size);
103
+ }
104
+
105
+ .think-chip.open .think-caret {
106
+ transform: rotate(90deg);
107
+ }
108
+
109
+ .think-dot {
110
+ display: inline-flex;
111
+ flex-shrink: 0;
112
+ color: var(--accent);
113
+ }
114
+
115
+ .think-steps {
116
+ /* own tokens: the list is a sibling of .think-chip, not a descendant */
117
+ --think-rail-w: 2px;
118
+ --think-bullet-size: 6px;
119
+ --think-bullet-inset: -1.62rem;
120
+ border-inline-start: var(--think-rail-w) solid color-mix(in srgb, var(--accent) 30%, var(--hair));
121
+ }
122
+
123
+ .think-steps li {
124
+ opacity: 0;
125
+ transform: translateY(4px);
126
+ transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
127
+ }
128
+
129
+ .think-steps li::before {
130
+ content: "";
131
+ position: absolute;
132
+ inset-inline-start: var(--think-bullet-inset);
133
+ top: var(--space-2, 0.5rem);
134
+ width: var(--think-bullet-size);
135
+ height: var(--think-bullet-size);
136
+ border-radius: 999px;
137
+ background: color-mix(in srgb, var(--accent) 55%, var(--hair));
138
+ }
139
+
140
+ .think-steps.in li {
141
+ opacity: 1;
142
+ transform: none;
143
+ }
144
+
145
+ /* ── widget-frame action buttons (ChatWidgetButton) ─────────────────── */
146
+
147
+ .cw-btn {
148
+ transition:
149
+ border-color var(--dur-tap, 120ms) var(--ease),
150
+ background var(--dur-tap, 120ms) var(--ease);
151
+ }
152
+
153
+ .cw-btn:disabled {
154
+ opacity: 0.4;
155
+ cursor: not-allowed;
156
+ }
157
+
158
+ .cw-btn--primary {
159
+ color: var(--bg);
160
+ }
161
+
162
+ .cw-btn--ghost:hover {
163
+ border-color: color-mix(in srgb, var(--accent) 50%, var(--hair));
164
+ }
165
+
166
+ .cw-btn--danger {
167
+ border-color: color-mix(in srgb, var(--danger) 40%, var(--hair));
168
+ }
169
+
170
+ .cw-btn--danger:hover {
171
+ background: color-mix(in srgb, var(--danger) 10%, transparent);
172
+ }
173
+
174
+ /* ── reduced motion ─────────────────────────────────────────────────── */
175
+
176
+ @media (prefers-reduced-motion: reduce) {
177
+ .think-caret,
178
+ .tc-caret {
179
+ transition: none;
180
+ }
181
+ .tc-run,
182
+ .think-dot.is-live {
183
+ animation: none;
184
+ }
185
+ .think-steps li {
186
+ opacity: 1;
187
+ transform: none;
188
+ transition: none;
189
+ }
190
+ }