@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,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
|
+
}
|