@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,288 @@
1
+ /* ==========================================================================
2
+ @digithings-ai/ui — data-layout family CSS (components/data-layout/*:
3
+ <Odometer/> + <OdometerStrip/>, <DotMatrixStat/>, <BentoGrid/> +
4
+ <BentoCell/>, <ProductFrame/>, <FeatureCell/>; <TestimonialWall/> is
5
+ utilities-only and needs no rules here).
6
+
7
+ Import PLAINLY (no layer(…) wrapper) AFTER the token bridge — this sheet
8
+ manages its own layering per the cascade contract (MIGRATION.md):
9
+ single-class dress defaults sit in @layer components so call-site
10
+ utilities can override them; state/structural rules — nth-child hairline
11
+ grids, ::before art, :hover, descendant overrides, media collapses, and
12
+ the ProductFrame geometry its ResizeObserver contract depends on — stay
13
+ unlayered ON PURPOSE so they keep outranking plain utilities.
14
+
15
+ @import "tailwindcss";
16
+ @import "@digithings-ai/design/tokens.css";
17
+ @import "@digithings-ai/ui/styles/web-theme.css";
18
+ @import "@digithings-ai/ui/styles/data-layout.css";
19
+ @source "<path-to>/packages/ui/src/components/data-layout";
20
+
21
+ The @source line is load-bearing (path relative to the app's globals.css):
22
+ the components carry token-backed utilities, and Tailwind does not scan
23
+ package sources on its own.
24
+ ========================================================================== */
25
+
26
+ /* ── Odometer: reel mechanic + strip hairline grid ───────────────────────── */
27
+
28
+ @layer components {
29
+ /* the reel column; Odometer suspends/releases this transition imperatively
30
+ (transition-property + transform inline) when the figure enters view */
31
+ .odo-strip {
32
+ display: flex;
33
+ flex-direction: column;
34
+ transition: transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
35
+ will-change: transform;
36
+ }
37
+ }
38
+
39
+ @media (prefers-reduced-motion: reduce) {
40
+ .odo-strip {
41
+ transition: none;
42
+ }
43
+ }
44
+
45
+ /* hairline cell grid, keyed off the strip container's data-cols: first row
46
+ no top border, first column no left border (Tailwind can't express
47
+ nth-child) — same grammar as metrics.css's .perf-metric grid */
48
+ .odo-cell {
49
+ border-inline-start: 1px solid var(--hair);
50
+ border-top: 1px solid var(--hair);
51
+ }
52
+
53
+ .odo-grid[data-cols="4"] .odo-cell:nth-child(-n + 4),
54
+ .odo-grid[data-cols="3"] .odo-cell:nth-child(-n + 3),
55
+ .odo-grid[data-cols="2"] .odo-cell:nth-child(-n + 2) {
56
+ border-top: none;
57
+ }
58
+
59
+ .odo-grid[data-cols="4"] .odo-cell:nth-child(4n + 1),
60
+ .odo-grid[data-cols="3"] .odo-cell:nth-child(3n + 1),
61
+ .odo-grid[data-cols="2"] .odo-cell:nth-child(2n + 1) {
62
+ border-inline-start: none;
63
+ }
64
+
65
+ /* ≤ 720px the strip is two-up whatever data-cols says (matching the
66
+ component's max-[720px]:grid-cols-2 utility) — re-derive the hairlines.
67
+ Selectors keep the [data-cols] attr so they tie the desktop rules on
68
+ specificity and win by order. */
69
+ @media (max-width: 720px) {
70
+ .odo-grid[data-cols="4"] .odo-cell:nth-child(-n + 4),
71
+ .odo-grid[data-cols="3"] .odo-cell:nth-child(-n + 3) {
72
+ border-top: 1px solid var(--hair);
73
+ }
74
+
75
+ .odo-grid[data-cols] .odo-cell:nth-child(-n + 2) {
76
+ border-top: none;
77
+ }
78
+
79
+ .odo-grid[data-cols="4"] .odo-cell:nth-child(4n + 1),
80
+ .odo-grid[data-cols="3"] .odo-cell:nth-child(3n + 1) {
81
+ border-inline-start: 1px solid var(--hair);
82
+ }
83
+
84
+ .odo-grid[data-cols] .odo-cell:nth-child(2n + 1) {
85
+ border-inline-start: none;
86
+ }
87
+ }
88
+
89
+ /* ── DotMatrixStat: LED field ────────────────────────────────────────────── */
90
+
91
+ @layer components {
92
+ /* grid-template-columns is written inline by the component (cols prop) */
93
+ .dms-grid {
94
+ /* component tokens — LED field geometry */
95
+ --dms-gap: 6px;
96
+ --dms-dot: 8px;
97
+
98
+ display: grid;
99
+ gap: var(--dms-gap);
100
+ }
101
+
102
+ .dms-dot {
103
+ width: var(--dms-dot);
104
+ height: var(--dms-dot);
105
+ border-radius: 0;
106
+ background: color-mix(in srgb, var(--ink-mute) 20%, transparent);
107
+ }
108
+ }
109
+
110
+ /* lit state — unlayered on purpose (must outrank call-site utilities) */
111
+ .dms-dot.on {
112
+ background: var(--accent);
113
+ box-shadow: 0 0 9px color-mix(in srgb, var(--accent) 44%, transparent);
114
+ }
115
+
116
+ /* ── BentoGrid / BentoCell: asymmetric module bento ──────────────────────── */
117
+
118
+ @layer components {
119
+ .bento-grid {
120
+ /* component tokens — bento row rhythm */
121
+ --bento-row-h: 8.5rem;
122
+ --bento-gap: 0.9rem;
123
+ --bento-name-font: 1.3rem;
124
+
125
+ display: grid;
126
+ grid-template-columns: repeat(4, minmax(0, 1fr));
127
+ grid-auto-rows: var(--bento-row-h);
128
+ gap: var(--bento-gap);
129
+ }
130
+
131
+ /* position/overflow anchor the ::before hairline; background sits here so
132
+ the unlayered .bento-hero color-mix tint always wins */
133
+ .bento-cell {
134
+ position: relative;
135
+ background: var(--surface);
136
+ overflow: hidden;
137
+ transition: border-color 0.25s var(--ease), transform 0.25s var(--ease);
138
+ }
139
+ }
140
+
141
+ /* everything below is state/structural — unlayered on purpose */
142
+
143
+ /* accent hairline that fills on hover — the mod-card grammar */
144
+ .bento-cell::before {
145
+ content: "";
146
+ position: absolute;
147
+ inset: 0 0 auto 0;
148
+ height: 2px;
149
+ background: var(--accent);
150
+ transform: scaleX(0);
151
+ transform-origin: left;
152
+ transition: transform 0.3s var(--ease);
153
+ }
154
+
155
+ /* transform-origin has no logical keyword — the hairline fills from the
156
+ cell's inline-start, which is the right edge under dir=rtl. */
157
+ [dir="rtl"] .bento-cell::before {
158
+ transform-origin: right;
159
+ }
160
+
161
+ .bento-cell:hover {
162
+ transform: translateY(-2px);
163
+ border-color: color-mix(in srgb, var(--accent) 45%, var(--hair));
164
+ }
165
+
166
+ .bento-cell:hover::before {
167
+ transform: scaleX(1);
168
+ }
169
+
170
+ .bento-hero {
171
+ grid-column: span 2;
172
+ grid-row: span 2;
173
+ background: color-mix(in srgb, var(--accent) 6%, var(--surface));
174
+ }
175
+
176
+ .bento-wide {
177
+ grid-column: span 2;
178
+ }
179
+
180
+ .bento-tall {
181
+ grid-row: span 2;
182
+ }
183
+
184
+ /* hero cells set their name in larger type — consumers put `bento-name` on
185
+ the cell's heading to opt in */
186
+ .bento-hero .bento-name {
187
+ font-size: var(--bento-name-font, 1.3rem);
188
+ }
189
+
190
+ @media (max-width: 760px) {
191
+ .bento-grid {
192
+ grid-template-columns: 1fr;
193
+ grid-auto-rows: auto;
194
+ }
195
+
196
+ .bento-hero,
197
+ .bento-wide,
198
+ .bento-tall {
199
+ grid-column: auto;
200
+ grid-row: auto;
201
+ }
202
+ }
203
+
204
+ @media (prefers-reduced-motion: reduce) {
205
+ .bento-cell {
206
+ transition: border-color 0.25s var(--ease);
207
+ }
208
+
209
+ .bento-cell:hover {
210
+ transform: none;
211
+ }
212
+ }
213
+
214
+ /* ── ProductFrame: fixed artboard scaled to its container ────────────────── */
215
+
216
+ /* .pf-viewport / .pf-artboard are the geometry the ResizeObserver contract
217
+ depends on — unlayered on purpose. The component writes the real
218
+ aspect-ratio and artboard width/height inline (defaults below match the
219
+ 800×300 reference artboard). */
220
+ .pf-viewport {
221
+ /* component tokens — the 800×300 reference artboard */
222
+ --pf-artboard-w: 800px;
223
+ --pf-artboard-h: 300px;
224
+ --pf-tag-inset: 0.6rem;
225
+ --pf-tag-font: 0.58rem;
226
+ --pf-tag-pad-block: 0.15rem;
227
+ --pf-tag-pad-inline: 0.45rem;
228
+
229
+ position: relative;
230
+ container-type: inline-size;
231
+ border: 1px solid var(--hair);
232
+ border-radius: 0;
233
+ background: var(--bg);
234
+ overflow: hidden;
235
+ /* the artboard is 800 wide; height tracks it via the same scale factor */
236
+ aspect-ratio: 800 / 300;
237
+ }
238
+
239
+ .pf-artboard {
240
+ position: absolute;
241
+ top: 0;
242
+ inset-inline-start: 0;
243
+ width: var(--pf-artboard-w);
244
+ height: var(--pf-artboard-h);
245
+ transform-origin: top left;
246
+ /* scale factor is measured and written by ProductFrame (ResizeObserver);
247
+ origin top-left so the scaled artboard pins to the frame corner */
248
+ }
249
+
250
+ @layer components {
251
+ .pf-tag {
252
+ position: absolute;
253
+ inset-inline-end: var(--pf-tag-inset, 0.6rem);
254
+ top: var(--pf-tag-inset, 0.6rem);
255
+ z-index: 2;
256
+ font-family: var(--font-mono);
257
+ font-size: var(--pf-tag-font, 0.58rem);
258
+ letter-spacing: 0.06em;
259
+ color: var(--ink);
260
+ /* Solid --surface, not a color-mix + backdrop-filter blur: this tag sits
261
+ over arbitrary crop content (a screenshot/mock), and a solid fill reads
262
+ legibly against any of it without reaching for this system's one
263
+ glassmorphism exception — surfaces here are flat, full stop. */
264
+ background: var(--surface);
265
+ border: 1px solid var(--hair);
266
+ border-radius: 0;
267
+ padding: var(--pf-tag-pad-block, 0.15rem) var(--pf-tag-pad-inline, 0.45rem);
268
+ }
269
+ }
270
+
271
+ /* ── FeatureCell: combinator + state rules only ──────────────────────────── */
272
+
273
+ /* even-numbered sibling cells swap copy/visual columns — unlayered */
274
+ .fc-cell:nth-child(even) .fc-copy {
275
+ order: 2;
276
+ }
277
+
278
+ .fc-link:hover {
279
+ text-decoration: underline;
280
+ }
281
+
282
+ @media (max-width: 760px) {
283
+ /* single column ≤ 760px (the cell's max-[760px]:grid-cols-1 utility) —
284
+ copy back on top for even cells too */
285
+ .fc-cell:nth-child(even) .fc-copy {
286
+ order: 0;
287
+ }
288
+ }
@@ -0,0 +1,141 @@
1
+ /* Deck stack — sticky stacking card deck (the cavemen.dev pattern), promoted
2
+ from the design reference's card deck (data/card-deck, #1450).
3
+ <DeckStack/> renders the shared .deck-slots container (+ the optional
4
+ .deck-rail progress column); <DeckCard/> is one sticky card. Wiring and
5
+ the component contract live in components/deck/DeckStack.tsx.
6
+
7
+ Import this sheet PLAINLY (no layer(…)) — it manages its own layering per
8
+ the cascade contract (MIGRATION.md): the single-class card surface default
9
+ sits in @layer components so an app dress class (unlayered app CSS) or
10
+ call-site token utilities can re-dress a card, while the sticky cascade,
11
+ slots runway, rail state rules and the narrow-viewport collapse stay
12
+ unlayered on purpose — structural mechanics must outrank plain utilities. */
13
+
14
+ /* Card surface — opaque surface + 1px hairline + radius. Deliberately NO
15
+ drop shadow and NO clip box: the seam between stacked cards is the next
16
+ opaque card covering this one. */
17
+ @layer components {
18
+ .deck-card {
19
+ /* component tokens — deck card surface */
20
+ --deck-card-pad: 1rem;
21
+
22
+ background: var(--surface);
23
+ border: 1px solid var(--hair);
24
+ border-radius: 0;
25
+ padding: var(--deck-card-pad);
26
+ }
27
+ }
28
+
29
+ /* Cards are DIRECT children of one shared container: a sticky element can
30
+ never leave its containing block, so per-card wrappers would drag each
31
+ card away as its own wrapper scrolls past. Sharing the container keeps
32
+ every card pinned until the whole deck ends; the gap is the scroll
33
+ runway between pins. */
34
+ .deck-slots {
35
+ --deck-gap-narrow: 0.9rem;
36
+
37
+ display: grid;
38
+ gap: var(--deck-gap, 55svh);
39
+ }
40
+ /* Tail runway: enough scroll after the last card enters for it to ride up to its
41
+ pinned offset, so the completed stack is the section's final state. It MUST be
42
+ a trailing grid track, not the container's padding-bottom: a grid item's sticky
43
+ containing block is its own track, and container padding does not extend it —
44
+ so a padding tail leaves the LAST card with no room to pin (it slides straight
45
+ through and never rests, unlike the others, which get their runway from the
46
+ following card's track). The ::after is that following track for the last card.
47
+ Height = tail − the gap that precedes it, so the total hold stays --deck-tail.
48
+ Consumers can shorten the hold via --deck-tail. */
49
+ .deck-slots::after {
50
+ content: "";
51
+ display: block;
52
+ height: max(0px, calc(var(--deck-tail, 65svh) - var(--deck-gap, 55svh)));
53
+ }
54
+
55
+ .deck-card {
56
+ position: sticky;
57
+ /* nav clearance (--deck-top; the 5rem default fits the reference's
58
+ ~3.4rem site nav + breathing room) + a per-card cascade (--deck-peek)
59
+ so every pinned card keeps a visible top edge under the one covering it. */
60
+ top: calc(var(--deck-top, 5rem) + var(--deck-peek, 2.4rem) * var(--stack-index, 0));
61
+ will-change: transform;
62
+ }
63
+
64
+ /* Progress rail — mono labels pinned beside the stack; the active row lights
65
+ its dot with the accent. Rendered by DeckStack only when `rail` is given.
66
+ The column wrapper stretches to the grid row MINUS the tail runway (via
67
+ bottom margin), so the sticky pin releases with the last card instead of
68
+ hanging through the empty scroll-hold. */
69
+ .deck-rail-col {
70
+ align-self: stretch;
71
+ min-height: 0;
72
+ margin-bottom: var(--deck-tail, 65svh);
73
+ }
74
+ .deck-rail-pin {
75
+ --deck-rail-top: 38vh;
76
+ --deck-rail-font: 0.7rem;
77
+ --deck-rail-gap: 0.7rem;
78
+ --deck-rail-pad: 0.8rem;
79
+ --deck-dot: 7px;
80
+
81
+ position: sticky;
82
+ top: var(--deck-rail-top);
83
+ }
84
+
85
+ .deck-rail {
86
+ list-style: none;
87
+ margin: 0;
88
+ padding: 0 0 0 var(--deck-rail-pad, 0.8rem);
89
+ border-inline-start: 1px solid var(--hair);
90
+ display: flex;
91
+ flex-direction: column;
92
+ gap: var(--deck-rail-gap, 0.7rem);
93
+ }
94
+
95
+ .deck-rail li {
96
+ display: flex;
97
+ align-items: center;
98
+ gap: var(--space-2);
99
+ color: var(--ink-mute);
100
+ font-family: var(--font-mono);
101
+ font-size: var(--deck-rail-font, 0.7rem);
102
+ }
103
+
104
+ .deck-rail .dot {
105
+ width: var(--deck-dot, 7px);
106
+ height: var(--deck-dot, 7px);
107
+ border-radius: 0;
108
+ background: color-mix(in srgb, var(--ink-mute) 20%, transparent);
109
+ flex-shrink: 0;
110
+ }
111
+
112
+ .deck-rail li.on {
113
+ color: var(--ink);
114
+ }
115
+
116
+ .deck-rail li.on .dot {
117
+ background: var(--accent);
118
+ }
119
+
120
+ /* Narrow: no stacking — the cards simply appear in sequence. The JS side
121
+ (DeckStack) gates its scale transform off below 901px too. */
122
+ @media (max-width: 900px) {
123
+ .deck-slots {
124
+ gap: var(--deck-gap-narrow, 0.9rem);
125
+ }
126
+
127
+ /* no sticky = no runway needed; drop the tail track so it can't leave dead
128
+ space below the last card (matches the former padding-bottom: 0). */
129
+ .deck-slots::after {
130
+ display: none;
131
+ }
132
+
133
+ .deck-card {
134
+ position: relative;
135
+ top: 0;
136
+ }
137
+
138
+ .deck-rail-col {
139
+ display: none;
140
+ }
141
+ }