@ciderpress/ui 1.0.0-rc.1
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/LICENSE +21 -0
- package/README.md +23 -0
- package/dist/0~142.js +2 -0
- package/dist/0~164.js +2 -0
- package/dist/0~2.js +2 -0
- package/dist/0~225.js +2 -0
- package/dist/0~288.js +2 -0
- package/dist/0~299.js +2 -0
- package/dist/0~3.js +2 -0
- package/dist/0~301.js +2 -0
- package/dist/0~311.js +2 -0
- package/dist/0~326.js +2 -0
- package/dist/0~40.js +2 -0
- package/dist/0~43.js +2 -0
- package/dist/0~433.js +2 -0
- package/dist/0~453.js +2 -0
- package/dist/0~457.js +2 -0
- package/dist/0~497.js +2 -0
- package/dist/0~511.js +2 -0
- package/dist/0~603.js +2 -0
- package/dist/0~616.js +2 -0
- package/dist/0~659.js +2 -0
- package/dist/0~670.js +2 -0
- package/dist/0~687.js +2 -0
- package/dist/0~706.js +2 -0
- package/dist/0~729.js +2 -0
- package/dist/0~768.js +2 -0
- package/dist/0~819.js +2 -0
- package/dist/0~830.js +2 -0
- package/dist/0~854.js +2 -0
- package/dist/0~863.js +2 -0
- package/dist/0~879.js +2 -0
- package/dist/0~96.js +2 -0
- package/dist/0~97.js +2 -0
- package/dist/components/FileTree/FileTree.css +90 -0
- package/dist/components/FileTree/FileTree.d.ts +7 -0
- package/dist/components/FileTree/FileTree.js +531 -0
- package/dist/components/FileTree/FileTreeItem.d.ts +8 -0
- package/dist/components/FileTree/RemoteSvgIcon.d.ts +11 -0
- package/dist/components/FileTree/index.d.ts +4 -0
- package/dist/components/folder-icons.d.ts +32 -0
- package/dist/components/languages.d.ts +7 -0
- package/dist/components/tree-parser/tree-parser.d.ts +12 -0
- package/dist/components/tree-parser/types.d.ts +11 -0
- package/dist/head/css/loader-apple.css +1 -0
- package/dist/head/css/loader-backdrop.css +1 -0
- package/dist/head/css/loader-dots.css +1 -0
- package/dist/head/css/themes/amber.css +1 -0
- package/dist/head/css/themes/arcade.css +1 -0
- package/dist/head/css/themes/grannysmith.css +1 -0
- package/dist/head/css/themes/honeycrisp.css +1 -0
- package/dist/head/css/themes/midnight.css +1 -0
- package/dist/head/css/themes/mulled.css +1 -0
- package/dist/head/js/loader-dots.js +1 -0
- package/dist/head/js/vscode-nav.js +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.mjs +40 -0
- package/dist/node.d.ts +81 -0
- package/dist/node.mjs +17762 -0
- package/dist/plugins/mermaid/MermaidRenderer.tsx +480 -0
- package/dist/plugins/mermaid/mermaid.css +199 -0
- package/dist/theme/components/announcement/announcement-bar.css +103 -0
- package/dist/theme/components/announcement/announcement-bar.tsx +173 -0
- package/dist/theme/components/ask-ai/ask-ai-button.css +52 -0
- package/dist/theme/components/ask-ai/ask-ai-button.tsx +56 -0
- package/dist/theme/components/content-footer/content-footer-portal.tsx +70 -0
- package/dist/theme/components/content-footer/feedback.css +47 -0
- package/dist/theme/components/content-footer/feedback.tsx +96 -0
- package/dist/theme/components/content-footer/meta-actions.css +25 -0
- package/dist/theme/components/content-footer/meta-actions.tsx +57 -0
- package/dist/theme/components/content-footer/page-pager.css +61 -0
- package/dist/theme/components/content-footer/page-pager.tsx +110 -0
- package/dist/theme/components/edit-source-button.tsx +97 -0
- package/dist/theme/components/footer/site-footer.css +179 -0
- package/dist/theme/components/footer/site-footer.tsx +115 -0
- package/dist/theme/components/home/cta.css +67 -0
- package/dist/theme/components/home/cta.tsx +77 -0
- package/dist/theme/components/home/feature-card.css +52 -0
- package/dist/theme/components/home/feature-card.tsx +131 -0
- package/dist/theme/components/home/feature.tsx +79 -0
- package/dist/theme/components/home/hero-demo.css +66 -0
- package/dist/theme/components/home/hero-demo.tsx +46 -0
- package/dist/theme/components/home/hero.css +96 -0
- package/dist/theme/components/home/hero.tsx +111 -0
- package/dist/theme/components/home/layout.tsx +183 -0
- package/dist/theme/components/home/page-rail.css +21 -0
- package/dist/theme/components/home/page-rail.tsx +19 -0
- package/dist/theme/components/home/split.css +148 -0
- package/dist/theme/components/home/split.tsx +120 -0
- package/dist/theme/components/home/trust-strip.css +33 -0
- package/dist/theme/components/home/trust-strip.tsx +43 -0
- package/dist/theme/components/home/workspaces.tsx +71 -0
- package/dist/theme/components/nav/branch-tag.css +54 -0
- package/dist/theme/components/nav/branch-tag.tsx +101 -0
- package/dist/theme/components/nav/ciderpress-doc-layout.tsx +247 -0
- package/dist/theme/components/nav/ciderpress-docs-bar.css +505 -0
- package/dist/theme/components/nav/ciderpress-docs-bar.tsx +426 -0
- package/dist/theme/components/nav/ciderpress-header.css +172 -0
- package/dist/theme/components/nav/ciderpress-header.tsx +113 -0
- package/dist/theme/components/nav/ciderpress-layout-context.tsx +49 -0
- package/dist/theme/components/nav/ciderpress-nav-hamburger.css +193 -0
- package/dist/theme/components/nav/ciderpress-nav-hamburger.tsx +112 -0
- package/dist/theme/components/nav/ciderpress-nav-menu.css +130 -0
- package/dist/theme/components/nav/ciderpress-nav-menu.tsx +372 -0
- package/dist/theme/components/nav/ciderpress-nav-search.css +73 -0
- package/dist/theme/components/nav/ciderpress-nav-search.tsx +55 -0
- package/dist/theme/components/nav/ciderpress-nav-social-links.css +35 -0
- package/dist/theme/components/nav/ciderpress-nav-social-links.tsx +87 -0
- package/dist/theme/components/nav/floating-branch-indicator.css +106 -0
- package/dist/theme/components/nav/floating-branch-indicator.tsx +109 -0
- package/dist/theme/components/nav/layout.tsx +268 -0
- package/dist/theme/components/nav/mobile-nav-cta.tsx +79 -0
- package/dist/theme/components/nav/nav-divider.css +15 -0
- package/dist/theme/components/nav/nav-divider.tsx +19 -0
- package/dist/theme/components/nav/nav-logo.css +42 -0
- package/dist/theme/components/nav/nav-logo.tsx +262 -0
- package/dist/theme/components/nav/theme-switcher.css +92 -0
- package/dist/theme/components/nav/theme-switcher.tsx +298 -0
- package/dist/theme/components/nav/topbar-cta.css +45 -0
- package/dist/theme/components/nav/topbar-cta.tsx +39 -0
- package/dist/theme/components/nav/variant-toggle.css +70 -0
- package/dist/theme/components/nav/variant-toggle.tsx +83 -0
- package/dist/theme/components/nav/version-chip.css +31 -0
- package/dist/theme/components/nav/version-chip.tsx +45 -0
- package/dist/theme/components/nav/vscode-tag.css +32 -0
- package/dist/theme/components/nav/vscode-tag.tsx +20 -0
- package/dist/theme/components/openapi/code-sample.tsx +341 -0
- package/dist/theme/components/openapi/copy-markdown-button.tsx +41 -0
- package/dist/theme/components/openapi/icons.tsx +45 -0
- package/dist/theme/components/openapi/index.ts +6 -0
- package/dist/theme/components/openapi/method-badge.tsx +24 -0
- package/dist/theme/components/openapi/openapi.css +665 -0
- package/dist/theme/components/openapi/operation.tsx +200 -0
- package/dist/theme/components/openapi/overview.tsx +207 -0
- package/dist/theme/components/openapi/parameters-table.tsx +149 -0
- package/dist/theme/components/openapi/request-body.tsx +90 -0
- package/dist/theme/components/openapi/response-list.tsx +112 -0
- package/dist/theme/components/openapi/schema-viewer.tsx +277 -0
- package/dist/theme/components/openapi/security-badges.tsx +63 -0
- package/dist/theme/components/openapi/spec-utils.ts +122 -0
- package/dist/theme/components/shared/accordion.css +118 -0
- package/dist/theme/components/shared/accordion.stories.tsx +96 -0
- package/dist/theme/components/shared/accordion.tsx +191 -0
- package/dist/theme/components/shared/brand-logo.stories.tsx +49 -0
- package/dist/theme/components/shared/brand-mark.stories.tsx +53 -0
- package/dist/theme/components/shared/browser-window.css +1 -0
- package/dist/theme/components/shared/browser-window.stories.tsx +100 -0
- package/dist/theme/components/shared/browser-window.tsx +2 -0
- package/dist/theme/components/shared/card.stories.tsx +50 -0
- package/dist/theme/components/shared/card.tsx +35 -0
- package/dist/theme/components/shared/ciderpress-logo.tsx +93 -0
- package/dist/theme/components/shared/ciderpress-mark.tsx +77 -0
- package/dist/theme/components/shared/color.css +56 -0
- package/dist/theme/components/shared/color.stories.tsx +47 -0
- package/dist/theme/components/shared/color.tsx +69 -0
- package/dist/theme/components/shared/columns.css +37 -0
- package/dist/theme/components/shared/columns.stories.tsx +91 -0
- package/dist/theme/components/shared/columns.tsx +50 -0
- package/dist/theme/components/shared/desktop-window.css +339 -0
- package/dist/theme/components/shared/desktop-window.tsx +535 -0
- package/dist/theme/components/shared/field.css +158 -0
- package/dist/theme/components/shared/field.stories.tsx +100 -0
- package/dist/theme/components/shared/field.tsx +186 -0
- package/dist/theme/components/shared/frame.css +39 -0
- package/dist/theme/components/shared/frame.stories.tsx +49 -0
- package/dist/theme/components/shared/frame.tsx +76 -0
- package/dist/theme/components/shared/icon.stories.tsx +90 -0
- package/dist/theme/components/shared/icon.tsx +41 -0
- package/dist/theme/components/shared/prompt.css +178 -0
- package/dist/theme/components/shared/prompt.stories.tsx +57 -0
- package/dist/theme/components/shared/prompt.tsx +369 -0
- package/dist/theme/components/shared/resolve-card-icon.ts +28 -0
- package/dist/theme/components/shared/section-card.stories.tsx +51 -0
- package/dist/theme/components/shared/section-card.tsx +44 -0
- package/dist/theme/components/shared/section-grid.stories.tsx +46 -0
- package/dist/theme/components/shared/section-grid.tsx +15 -0
- package/dist/theme/components/shared/status-badge.css +37 -0
- package/dist/theme/components/shared/status-badge.stories.tsx +61 -0
- package/dist/theme/components/shared/status-badge.tsx +74 -0
- package/dist/theme/components/shared/steps.css +88 -0
- package/dist/theme/components/shared/steps.stories.tsx +68 -0
- package/dist/theme/components/shared/steps.tsx +100 -0
- package/dist/theme/components/shared/tech-icon-table.stories.tsx +29 -0
- package/dist/theme/components/shared/tech-icon-table.tsx +71 -0
- package/dist/theme/components/shared/tech-tag.stories.tsx +40 -0
- package/dist/theme/components/shared/tech-tag.tsx +31 -0
- package/dist/theme/components/shared/theme-color-palette.css +80 -0
- package/dist/theme/components/shared/theme-color-palette.stories.tsx +52 -0
- package/dist/theme/components/shared/theme-color-palette.tsx +275 -0
- package/dist/theme/components/shared/tooltip.css +69 -0
- package/dist/theme/components/shared/tooltip.stories.tsx +72 -0
- package/dist/theme/components/shared/tooltip.tsx +77 -0
- package/dist/theme/components/sidebar/framework-picker.css +77 -0
- package/dist/theme/components/sidebar/framework-picker.tsx +78 -0
- package/dist/theme/components/sidebar/sidebar-filter.test.ts +140 -0
- package/dist/theme/components/sidebar/sidebar-filter.ts +79 -0
- package/dist/theme/components/sidebar/sidebar-links.css +102 -0
- package/dist/theme/components/sidebar/sidebar-links.tsx +122 -0
- package/dist/theme/components/sidebar/sidebar-promo.css +42 -0
- package/dist/theme/components/sidebar/sidebar-promo.tsx +52 -0
- package/dist/theme/components/sidebar/sidebar-scope.tsx +151 -0
- package/dist/theme/components/sidebar/sidebar-toggle.css +181 -0
- package/dist/theme/components/sidebar/sidebar-toggle.tsx +127 -0
- package/dist/theme/components/theme-provider.tsx +637 -0
- package/dist/theme/components/workspaces/card.css +151 -0
- package/dist/theme/components/workspaces/card.tsx +166 -0
- package/dist/theme/components/workspaces/grid.tsx +62 -0
- package/dist/theme/css.d.ts +1 -0
- package/dist/theme/env.d.ts +12 -0
- package/dist/theme/fonts/GeistMono-Variable.woff2 +0 -0
- package/dist/theme/fonts/GeistPixel-Square.woff2 +0 -0
- package/dist/theme/fonts/GeistSans-Variable.woff2 +0 -0
- package/dist/theme/hooks/use-ciderpress.ts +61 -0
- package/dist/theme/hooks/use-nav-items.ts +76 -0
- package/dist/theme/icons/index.ts +2 -0
- package/dist/theme/icons/tech-map.ts +228 -0
- package/dist/theme/index.tsx +180 -0
- package/dist/theme/lib/read-social-links.ts +27 -0
- package/dist/theme/lib/route-link.tsx +126 -0
- package/dist/theme/lib/safe-url.test.ts +0 -0
- package/dist/theme/lib/safe-url.ts +68 -0
- package/dist/theme/lib/theme-favicon.ts +125 -0
- package/dist/theme/lib/user-config-stub.ts +12 -0
- package/dist/theme/styles/layers.css +32 -0
- package/dist/theme/styles/overrides/badge.css +26 -0
- package/dist/theme/styles/overrides/content-footer.css +80 -0
- package/dist/theme/styles/overrides/details.css +61 -0
- package/dist/theme/styles/overrides/fonts.css +32 -0
- package/dist/theme/styles/overrides/home-card.css +133 -0
- package/dist/theme/styles/overrides/home.css +243 -0
- package/dist/theme/styles/overrides/rail.css +337 -0
- package/dist/theme/styles/overrides/rspress.css +62 -0
- package/dist/theme/styles/overrides/scrollbar.css +25 -0
- package/dist/theme/styles/overrides/section-card.css +114 -0
- package/dist/theme/styles/overrides/sidebar.css +144 -0
- package/dist/theme/styles/overrides/tokens.css +288 -0
- package/dist/theme/styles/overrides/vscode.css +88 -0
- package/dist/theme/styles/themes/amber.css +545 -0
- package/dist/theme/styles/themes/arcade-fx.css +366 -0
- package/dist/theme/styles/themes/arcade.css +273 -0
- package/dist/theme/styles/themes/grannysmith.css +545 -0
- package/dist/theme/styles/themes/honeycrisp.css +545 -0
- package/dist/theme/styles/themes/midnight.css +273 -0
- package/dist/theme/styles/themes/mulled.css +817 -0
- package/package.json +103 -0
- package/src/theme/components/announcement/announcement-bar.css +103 -0
- package/src/theme/components/announcement/announcement-bar.tsx +173 -0
- package/src/theme/components/ask-ai/ask-ai-button.css +52 -0
- package/src/theme/components/ask-ai/ask-ai-button.tsx +56 -0
- package/src/theme/components/content-footer/content-footer-portal.tsx +70 -0
- package/src/theme/components/content-footer/feedback.css +47 -0
- package/src/theme/components/content-footer/feedback.tsx +96 -0
- package/src/theme/components/content-footer/meta-actions.css +25 -0
- package/src/theme/components/content-footer/meta-actions.tsx +57 -0
- package/src/theme/components/content-footer/page-pager.css +61 -0
- package/src/theme/components/content-footer/page-pager.tsx +110 -0
- package/src/theme/components/edit-source-button.tsx +97 -0
- package/src/theme/components/footer/site-footer.css +179 -0
- package/src/theme/components/footer/site-footer.tsx +115 -0
- package/src/theme/components/home/cta.css +67 -0
- package/src/theme/components/home/cta.tsx +77 -0
- package/src/theme/components/home/feature-card.css +52 -0
- package/src/theme/components/home/feature-card.tsx +131 -0
- package/src/theme/components/home/feature.tsx +79 -0
- package/src/theme/components/home/hero-demo.css +66 -0
- package/src/theme/components/home/hero-demo.tsx +46 -0
- package/src/theme/components/home/hero.css +96 -0
- package/src/theme/components/home/hero.tsx +111 -0
- package/src/theme/components/home/layout.tsx +183 -0
- package/src/theme/components/home/page-rail.css +21 -0
- package/src/theme/components/home/page-rail.tsx +19 -0
- package/src/theme/components/home/split.css +148 -0
- package/src/theme/components/home/split.tsx +120 -0
- package/src/theme/components/home/trust-strip.css +33 -0
- package/src/theme/components/home/trust-strip.tsx +43 -0
- package/src/theme/components/home/workspaces.tsx +71 -0
- package/src/theme/components/nav/branch-tag.css +54 -0
- package/src/theme/components/nav/branch-tag.tsx +101 -0
- package/src/theme/components/nav/ciderpress-doc-layout.tsx +247 -0
- package/src/theme/components/nav/ciderpress-docs-bar.css +505 -0
- package/src/theme/components/nav/ciderpress-docs-bar.tsx +426 -0
- package/src/theme/components/nav/ciderpress-header.css +172 -0
- package/src/theme/components/nav/ciderpress-header.tsx +113 -0
- package/src/theme/components/nav/ciderpress-layout-context.tsx +49 -0
- package/src/theme/components/nav/ciderpress-nav-hamburger.css +193 -0
- package/src/theme/components/nav/ciderpress-nav-hamburger.tsx +112 -0
- package/src/theme/components/nav/ciderpress-nav-menu.css +130 -0
- package/src/theme/components/nav/ciderpress-nav-menu.tsx +372 -0
- package/src/theme/components/nav/ciderpress-nav-search.css +73 -0
- package/src/theme/components/nav/ciderpress-nav-search.tsx +55 -0
- package/src/theme/components/nav/ciderpress-nav-social-links.css +35 -0
- package/src/theme/components/nav/ciderpress-nav-social-links.tsx +87 -0
- package/src/theme/components/nav/floating-branch-indicator.css +106 -0
- package/src/theme/components/nav/floating-branch-indicator.tsx +109 -0
- package/src/theme/components/nav/layout.tsx +268 -0
- package/src/theme/components/nav/mobile-nav-cta.tsx +79 -0
- package/src/theme/components/nav/nav-divider.css +15 -0
- package/src/theme/components/nav/nav-divider.tsx +19 -0
- package/src/theme/components/nav/nav-logo.css +42 -0
- package/src/theme/components/nav/nav-logo.tsx +262 -0
- package/src/theme/components/nav/theme-switcher.css +92 -0
- package/src/theme/components/nav/theme-switcher.tsx +298 -0
- package/src/theme/components/nav/topbar-cta.css +45 -0
- package/src/theme/components/nav/topbar-cta.tsx +39 -0
- package/src/theme/components/nav/variant-toggle.css +70 -0
- package/src/theme/components/nav/variant-toggle.tsx +83 -0
- package/src/theme/components/nav/version-chip.css +31 -0
- package/src/theme/components/nav/version-chip.tsx +45 -0
- package/src/theme/components/nav/vscode-tag.css +32 -0
- package/src/theme/components/nav/vscode-tag.tsx +20 -0
- package/src/theme/components/openapi/code-sample.tsx +341 -0
- package/src/theme/components/openapi/copy-markdown-button.tsx +41 -0
- package/src/theme/components/openapi/icons.tsx +45 -0
- package/src/theme/components/openapi/index.ts +6 -0
- package/src/theme/components/openapi/method-badge.tsx +24 -0
- package/src/theme/components/openapi/openapi.css +665 -0
- package/src/theme/components/openapi/operation.tsx +200 -0
- package/src/theme/components/openapi/overview.tsx +207 -0
- package/src/theme/components/openapi/parameters-table.tsx +149 -0
- package/src/theme/components/openapi/request-body.tsx +90 -0
- package/src/theme/components/openapi/response-list.tsx +112 -0
- package/src/theme/components/openapi/schema-viewer.tsx +277 -0
- package/src/theme/components/openapi/security-badges.tsx +63 -0
- package/src/theme/components/openapi/spec-utils.ts +122 -0
- package/src/theme/components/shared/accordion.css +118 -0
- package/src/theme/components/shared/accordion.stories.tsx +96 -0
- package/src/theme/components/shared/accordion.tsx +191 -0
- package/src/theme/components/shared/brand-logo.stories.tsx +49 -0
- package/src/theme/components/shared/brand-mark.stories.tsx +53 -0
- package/src/theme/components/shared/browser-window.css +1 -0
- package/src/theme/components/shared/browser-window.stories.tsx +100 -0
- package/src/theme/components/shared/browser-window.tsx +2 -0
- package/src/theme/components/shared/card.stories.tsx +50 -0
- package/src/theme/components/shared/card.tsx +35 -0
- package/src/theme/components/shared/ciderpress-logo.tsx +93 -0
- package/src/theme/components/shared/ciderpress-mark.tsx +77 -0
- package/src/theme/components/shared/color.css +56 -0
- package/src/theme/components/shared/color.stories.tsx +47 -0
- package/src/theme/components/shared/color.tsx +69 -0
- package/src/theme/components/shared/columns.css +37 -0
- package/src/theme/components/shared/columns.stories.tsx +91 -0
- package/src/theme/components/shared/columns.tsx +50 -0
- package/src/theme/components/shared/desktop-window.css +339 -0
- package/src/theme/components/shared/desktop-window.tsx +535 -0
- package/src/theme/components/shared/field.css +158 -0
- package/src/theme/components/shared/field.stories.tsx +100 -0
- package/src/theme/components/shared/field.tsx +186 -0
- package/src/theme/components/shared/frame.css +39 -0
- package/src/theme/components/shared/frame.stories.tsx +49 -0
- package/src/theme/components/shared/frame.tsx +76 -0
- package/src/theme/components/shared/icon.stories.tsx +90 -0
- package/src/theme/components/shared/icon.tsx +41 -0
- package/src/theme/components/shared/prompt.css +178 -0
- package/src/theme/components/shared/prompt.stories.tsx +57 -0
- package/src/theme/components/shared/prompt.tsx +369 -0
- package/src/theme/components/shared/resolve-card-icon.ts +28 -0
- package/src/theme/components/shared/section-card.stories.tsx +51 -0
- package/src/theme/components/shared/section-card.tsx +44 -0
- package/src/theme/components/shared/section-grid.stories.tsx +46 -0
- package/src/theme/components/shared/section-grid.tsx +15 -0
- package/src/theme/components/shared/status-badge.css +37 -0
- package/src/theme/components/shared/status-badge.stories.tsx +61 -0
- package/src/theme/components/shared/status-badge.tsx +74 -0
- package/src/theme/components/shared/steps.css +88 -0
- package/src/theme/components/shared/steps.stories.tsx +68 -0
- package/src/theme/components/shared/steps.tsx +100 -0
- package/src/theme/components/shared/tech-icon-table.stories.tsx +29 -0
- package/src/theme/components/shared/tech-icon-table.tsx +71 -0
- package/src/theme/components/shared/tech-tag.stories.tsx +40 -0
- package/src/theme/components/shared/tech-tag.tsx +31 -0
- package/src/theme/components/shared/theme-color-palette.css +80 -0
- package/src/theme/components/shared/theme-color-palette.stories.tsx +52 -0
- package/src/theme/components/shared/theme-color-palette.tsx +275 -0
- package/src/theme/components/shared/tooltip.css +69 -0
- package/src/theme/components/shared/tooltip.stories.tsx +72 -0
- package/src/theme/components/shared/tooltip.tsx +77 -0
- package/src/theme/components/sidebar/framework-picker.css +77 -0
- package/src/theme/components/sidebar/framework-picker.tsx +78 -0
- package/src/theme/components/sidebar/sidebar-filter.test.ts +140 -0
- package/src/theme/components/sidebar/sidebar-filter.ts +79 -0
- package/src/theme/components/sidebar/sidebar-links.css +102 -0
- package/src/theme/components/sidebar/sidebar-links.tsx +122 -0
- package/src/theme/components/sidebar/sidebar-promo.css +42 -0
- package/src/theme/components/sidebar/sidebar-promo.tsx +52 -0
- package/src/theme/components/sidebar/sidebar-scope.tsx +151 -0
- package/src/theme/components/sidebar/sidebar-toggle.css +181 -0
- package/src/theme/components/sidebar/sidebar-toggle.tsx +127 -0
- package/src/theme/components/theme-provider.tsx +637 -0
- package/src/theme/components/workspaces/card.css +151 -0
- package/src/theme/components/workspaces/card.tsx +166 -0
- package/src/theme/components/workspaces/grid.tsx +62 -0
- package/src/theme/css.d.ts +1 -0
- package/src/theme/env.d.ts +12 -0
- package/src/theme/fonts/GeistMono-Variable.woff2 +0 -0
- package/src/theme/fonts/GeistPixel-Square.woff2 +0 -0
- package/src/theme/fonts/GeistSans-Variable.woff2 +0 -0
- package/src/theme/hooks/use-ciderpress.ts +61 -0
- package/src/theme/hooks/use-nav-items.ts +76 -0
- package/src/theme/icons/index.ts +2 -0
- package/src/theme/icons/tech-map.ts +228 -0
- package/src/theme/index.tsx +180 -0
- package/src/theme/lib/read-social-links.ts +27 -0
- package/src/theme/lib/route-link.tsx +126 -0
- package/src/theme/lib/safe-url.test.ts +0 -0
- package/src/theme/lib/safe-url.ts +68 -0
- package/src/theme/lib/theme-favicon.ts +125 -0
- package/src/theme/lib/user-config-stub.ts +12 -0
- package/src/theme/styles/layers.css +32 -0
- package/src/theme/styles/overrides/badge.css +26 -0
- package/src/theme/styles/overrides/content-footer.css +80 -0
- package/src/theme/styles/overrides/details.css +61 -0
- package/src/theme/styles/overrides/fonts.css +32 -0
- package/src/theme/styles/overrides/home-card.css +133 -0
- package/src/theme/styles/overrides/home.css +243 -0
- package/src/theme/styles/overrides/rail.css +337 -0
- package/src/theme/styles/overrides/rspress.css +62 -0
- package/src/theme/styles/overrides/scrollbar.css +25 -0
- package/src/theme/styles/overrides/section-card.css +114 -0
- package/src/theme/styles/overrides/sidebar.css +144 -0
- package/src/theme/styles/overrides/tokens.css +288 -0
- package/src/theme/styles/overrides/vscode.css +88 -0
- package/src/theme/styles/themes/amber.css +545 -0
- package/src/theme/styles/themes/arcade-fx.css +366 -0
- package/src/theme/styles/themes/arcade.css +273 -0
- package/src/theme/styles/themes/grannysmith.css +545 -0
- package/src/theme/styles/themes/honeycrisp.css +545 -0
- package/src/theme/styles/themes/midnight.css +273 -0
- package/src/theme/styles/themes/mulled.css +817 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Home page overrides — hero image sizing, Rspress card/code tweaks.
|
|
3
|
+
*
|
|
4
|
+
* Cascade layer: `ciderpress.overrides` (see styles/layers.css).
|
|
5
|
+
*
|
|
6
|
+
* `!important` inventory (task 8.2):
|
|
7
|
+
* - Before: 24
|
|
8
|
+
* - After: 17
|
|
9
|
+
*
|
|
10
|
+
* Retained `!important` declarations override Rspress styles that are
|
|
11
|
+
* authored outside the `ciderpress.*` layer stack — either unlayered (Rspress's
|
|
12
|
+
* `.rp-home-hero*` component CSS, which beats layered rules in the normal
|
|
13
|
+
* cascade) or inside Rspress's own `@layer rp-base` (e.g. shiki's
|
|
14
|
+
* `[class*=language-]` border-radius). Both cases require `!important` to
|
|
15
|
+
* win from inside `@layer ciderpress.overrides`.
|
|
16
|
+
*
|
|
17
|
+
* Removed `!important` declarations targeted selectors with no competing
|
|
18
|
+
* Rspress rule (`.rp-home-hero__name`, `.rp-home-hero__text`, and the
|
|
19
|
+
* `padding-bottom`/`line-height` properties on `.rp-home-hero__tagline`),
|
|
20
|
+
* so the layer cascade alone is sufficient.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
@layer ciderpress.overrides {
|
|
24
|
+
/* ── Rspress home hero image sizing ──────────────────────── */
|
|
25
|
+
html .rp-home-hero__image {
|
|
26
|
+
flex: none;
|
|
27
|
+
width: 548px;
|
|
28
|
+
margin-left: 24px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
html .rp-home-hero__image-img {
|
|
32
|
+
width: 548px;
|
|
33
|
+
height: auto;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* ── Rspress home hero padding ─────────────────────────── */
|
|
37
|
+
html .rp-home-hero {
|
|
38
|
+
padding-left: 0 !important;
|
|
39
|
+
padding-right: 0 !important;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* ── Rspress home hero container ────────────────────────── */
|
|
43
|
+
html .rp-home-hero__container {
|
|
44
|
+
gap: 16px !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* ── Rspress home hero text sizing & spacing ───────────── */
|
|
48
|
+
/* No `!important`: Rspress does not define `.rp-home-hero__name` or
|
|
49
|
+
* `.rp-home-hero__text`, and `.rp-home-hero__tagline` has no competing
|
|
50
|
+
* `padding-bottom` rule, so the layer cascade is sufficient. */
|
|
51
|
+
html .rp-home-hero__name {
|
|
52
|
+
font-size: 1.25rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
html .rp-home-hero__text {
|
|
56
|
+
font-size: 2.5rem;
|
|
57
|
+
margin-bottom: 8px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
html .rp-home-hero__tagline {
|
|
61
|
+
padding-bottom: 16px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
html .rp-home-hero__actions {
|
|
65
|
+
gap: 1.25rem !important;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@media (max-width: 1000px) {
|
|
69
|
+
html .rp-home-hero {
|
|
70
|
+
padding-bottom: 24px !important;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
html .rp-home-hero__image {
|
|
74
|
+
width: 400px;
|
|
75
|
+
margin-left: 0;
|
|
76
|
+
margin-top: 32px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
html .rp-home-hero__image-img {
|
|
80
|
+
width: 400px;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@media (max-width: 1184px) {
|
|
85
|
+
html .rp-home-hero {
|
|
86
|
+
padding-left: 16px !important;
|
|
87
|
+
padding-right: 16px !important;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* ── Mobile overrides ────────────────────────────────────── */
|
|
92
|
+
@media (max-width: 768px) {
|
|
93
|
+
html .rp-home-hero__container {
|
|
94
|
+
gap: 8px !important;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
html .rp-home-hero__image {
|
|
98
|
+
width: 100%;
|
|
99
|
+
max-width: 90vw !important;
|
|
100
|
+
margin-left: 0;
|
|
101
|
+
margin-top: 24px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
html .rp-home-hero__image-img {
|
|
105
|
+
width: 100%;
|
|
106
|
+
max-width: 90vw !important;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
html .rp-home-hero__name {
|
|
110
|
+
font-size: 1.125rem;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
html .rp-home-hero__text {
|
|
114
|
+
font-size: 2rem;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
html .rp-home-hero__tagline {
|
|
118
|
+
/* `!important` retained on `font-size` because Rspress defines
|
|
119
|
+
* `.rp-home-hero__tagline { font-size: 1.125rem }` at
|
|
120
|
+
* `(width >= 640px)` and `(width >= 768px)`, which still match at the
|
|
121
|
+
* `max-width: 768px` breakpoint. `line-height` has no competing rule. */
|
|
122
|
+
font-size: 1rem !important;
|
|
123
|
+
line-height: 1.5;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* ── Feature section ───────────────────────────────────────── */
|
|
128
|
+
.cp-feature-section {
|
|
129
|
+
padding: 64px 32px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@media (max-width: 720px) {
|
|
133
|
+
.cp-feature-section {
|
|
134
|
+
padding: 48px 20px;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Inside doc pages (MDX-driven), the surrounding `.rp-doc` already
|
|
139
|
+
constrains the content column — additional horizontal padding here
|
|
140
|
+
just misaligns the feature grid with the body paragraphs above it.
|
|
141
|
+
Strip it so cards land on the same left edge as prose. */
|
|
142
|
+
.rp-doc .cp-feature-section {
|
|
143
|
+
padding-left: 0;
|
|
144
|
+
padding-right: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* Eyebrow + title above the feature grid (mockup pattern) */
|
|
148
|
+
.cp-feature-section-head {
|
|
149
|
+
text-align: center;
|
|
150
|
+
margin-bottom: 56px;
|
|
151
|
+
max-width: 720px;
|
|
152
|
+
margin-left: auto;
|
|
153
|
+
margin-right: auto;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.cp-feature-section-head__eyebrow {
|
|
157
|
+
font-family: var(--cp-font-family-mono);
|
|
158
|
+
font-size: 11px;
|
|
159
|
+
text-transform: uppercase;
|
|
160
|
+
letter-spacing: 0.1em;
|
|
161
|
+
color: var(--cp-c-brand-1);
|
|
162
|
+
margin-bottom: 12px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.cp-feature-section-head__title {
|
|
166
|
+
font-size: clamp(28px, 4vw, 44px);
|
|
167
|
+
font-weight: 600;
|
|
168
|
+
letter-spacing: -0.025em;
|
|
169
|
+
line-height: 1.1;
|
|
170
|
+
margin: 0 0 16px;
|
|
171
|
+
color: var(--cp-c-text-1);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.cp-feature-section-head__sub {
|
|
175
|
+
font-size: 17px;
|
|
176
|
+
color: var(--cp-c-text-2);
|
|
177
|
+
margin: 0;
|
|
178
|
+
line-height: 1.55;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* ── Feature grid — hairline-divider grid (mockup pattern) ─── */
|
|
182
|
+
/* The grid has `gap: 1px` on a border-color background so the gap shows
|
|
183
|
+
through as hairlines between cells. Each cell paints its own panel bg. */
|
|
184
|
+
.cp-feature-grid {
|
|
185
|
+
display: grid;
|
|
186
|
+
grid-template-columns: repeat(3, 1fr);
|
|
187
|
+
gap: 1px;
|
|
188
|
+
background: var(--cp-c-border);
|
|
189
|
+
border: 1px solid var(--cp-c-border);
|
|
190
|
+
border-radius: var(--cp-radius-frame);
|
|
191
|
+
overflow: hidden;
|
|
192
|
+
max-width: 1200px;
|
|
193
|
+
margin: 0 auto;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
@media (max-width: 880px) {
|
|
197
|
+
.cp-feature-grid {
|
|
198
|
+
grid-template-columns: 1fr;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.cp-feature-grid__item {
|
|
203
|
+
position: relative;
|
|
204
|
+
background: var(--cp-c-bg-elv);
|
|
205
|
+
transition: background 0.15s ease;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.cp-feature-grid__item:hover {
|
|
209
|
+
background: var(--cp-c-bg-soft);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* Strip the inner card chrome; the grid gutter does the work now */
|
|
213
|
+
.cp-feature-grid__item .cp-card,
|
|
214
|
+
.cp-feature-grid__item .cp-feature-card {
|
|
215
|
+
background: transparent !important;
|
|
216
|
+
border: 0 !important;
|
|
217
|
+
border-radius: 0 !important;
|
|
218
|
+
padding: 28px 24px !important;
|
|
219
|
+
box-shadow: none !important;
|
|
220
|
+
height: 100%;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.cp-feature-grid__item-wrap {
|
|
224
|
+
height: 100%;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* Span system retained but neutralized — every item takes one grid column. */
|
|
228
|
+
.cp-feature-grid__item--span-2,
|
|
229
|
+
.cp-feature-grid__item--span-3,
|
|
230
|
+
.cp-feature-grid__item--span-4,
|
|
231
|
+
.cp-feature-grid__item--span-6 {
|
|
232
|
+
width: auto;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/* ── Code blocks ─────────────────────────────────────────── */
|
|
236
|
+
div[class*='language-'] {
|
|
237
|
+
border-radius: var(--rp-radius) !important;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
code:not(pre code) {
|
|
241
|
+
border-radius: var(--rp-radius-small);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page rail — the structural pattern that bounds the docs body content
|
|
3
|
+
* with hairlines on each side and a thin canvas gutter between the rail
|
|
4
|
+
* and the viewport.
|
|
5
|
+
*
|
|
6
|
+
* Applied to Rspress's `.rp-doc-layout__container` (the flex row that
|
|
7
|
+
* holds sidebar / content / outline). Selectors are prefixed with `html`
|
|
8
|
+
* to win the specificity war against Rspress's default DocLayout CSS,
|
|
9
|
+
* which loads after our overrides in the bundle and would otherwise
|
|
10
|
+
* reset the gutter.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the approved `gutter` mockup variant.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* ── Token overrides — tighten Rspress defaults to match mockup ── */
|
|
16
|
+
html:root {
|
|
17
|
+
/* Define ciderpress sticky-stack heights at root so the docs bar's
|
|
18
|
+
`top:` and the `--rp-nav-height` override calc in
|
|
19
|
+
`ciderpress-header.css` resolve against the SAME value when a theme
|
|
20
|
+
overrides either token. Without these, both sides only see their
|
|
21
|
+
hard-coded `var(..., 56px)` / `var(..., 46px)` fallbacks. */
|
|
22
|
+
--cp-header-height: 56px;
|
|
23
|
+
--cp-docs-bar-height: 46px;
|
|
24
|
+
/* `--rp-nav-height` drives:
|
|
25
|
+
- sidebar / outline sticky-top (DocLayout/index.css)
|
|
26
|
+
- scroll-padding-top on <html> (styles/base.css) for anchor jumps
|
|
27
|
+
The viewport-blocking stack on docs pages is:
|
|
28
|
+
[ <AnnouncementBar /> ] + [ <CiderpressHeader /> ] + [ <CiderpressDocsBar /> ]
|
|
29
|
+
`--cp-announcement-height` is set by <AnnouncementBar /> itself
|
|
30
|
+
(it injects a `<style>` tag, same pattern Rspress's `<Banner />`
|
|
31
|
+
uses) so it tracks the actual rendered height and collapses to
|
|
32
|
+
`0px` when the bar is dismissed. Defining the calc at `html:root`
|
|
33
|
+
wins over Rspress's `:root` default (`64px`) on specificity. */
|
|
34
|
+
--rp-nav-height: calc(
|
|
35
|
+
var(--cp-header-height) + var(--cp-docs-bar-height) + var(--cp-announcement-height, 0px)
|
|
36
|
+
);
|
|
37
|
+
--rp-sidebar-width: 260px;
|
|
38
|
+
--rp-sidebar-padding: 0px;
|
|
39
|
+
--rp-outline-width: 240px;
|
|
40
|
+
/* Zero out Rspress's `--rp-sidebar-menu-height` (default 46px).
|
|
41
|
+
Rspress consumes it in three places:
|
|
42
|
+
1. `.rp-doc-layout__sidebar { margin-top: calc(-1 * var(--rp-sidebar-menu-height)) }`
|
|
43
|
+
— pulls the sidebar UP 46px to overlap the `.rp-doc-layout__menu` bar.
|
|
44
|
+
2. `.rp-doc-layout__outline { margin-top: var(--rp-sidebar-menu-height) }`
|
|
45
|
+
— pushes the outline DOWN 46px to clear that same bar.
|
|
46
|
+
3. `html { scroll-padding-top: calc(... + var(--rp-sidebar-menu-height)) }`
|
|
47
|
+
— accounts for the bar when scrolling to anchors.
|
|
48
|
+
Our `<CiderpressDocLayout />` doesn't render `.rp-doc-layout__menu`,
|
|
49
|
+
so leaving the token at its default phantom-offsets the rails
|
|
50
|
+
(sidebar's `.cp-sidebar-top` band leaks under `<CiderpressDocsBar />`,
|
|
51
|
+
outline gets an extra 46px of dead space at the top, anchors land
|
|
52
|
+
46px low). Zero kills all three at the source. */
|
|
53
|
+
--rp-sidebar-menu-height: 0px;
|
|
54
|
+
--rp-content-padding-x: 64px;
|
|
55
|
+
--rp-content-padding-y: 56px;
|
|
56
|
+
/* Set this MUCH wider than typical viewports so Rspress's `.rp-doc-layout__doc`
|
|
57
|
+
fills the available flex space between sidebar and outline. The reading
|
|
58
|
+
width cap lives on the inner doc-container instead — see below. */
|
|
59
|
+
--rp-content-max-width: 100vw;
|
|
60
|
+
/* Zero out Rspress's calculated gap that pushes the sidebar away from
|
|
61
|
+
the rail's left edge and the outline away from the rail's right edge.
|
|
62
|
+
The mockup wants sidebar / content / outline to butt up against each
|
|
63
|
+
other with hairlines as the only separator. */
|
|
64
|
+
--rp-sidebar-margin-left: 0px;
|
|
65
|
+
--rp-outline-margin-right: 0px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
html body {
|
|
69
|
+
background: var(--cp-c-bg);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* ── Doc body rail ──────────────────────────────────────── */
|
|
73
|
+
/* `width: auto` overrides Rspress's default `width: 100%` so that the
|
|
74
|
+
horizontal margins actually inset the rail (otherwise margin pushes
|
|
75
|
+
the box past the viewport edge). */
|
|
76
|
+
html .rp-doc-layout__container {
|
|
77
|
+
width: auto;
|
|
78
|
+
margin: 0 var(--cp-frame-gutter);
|
|
79
|
+
background: var(--cp-c-bg);
|
|
80
|
+
border-left: 1px solid var(--cp-c-border);
|
|
81
|
+
border-right: 1px solid var(--cp-c-border);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Note: `.rp-doc-layout__menu` is no longer rendered at all — see
|
|
85
|
+
`<CiderpressDocLayout />`, our DocLayout override that re-exports
|
|
86
|
+
from the theme entry. `<CiderpressDocsBar />` (inserted via the
|
|
87
|
+
`beforeDoc` slot) replaces it with breadcrumbs + active-section
|
|
88
|
+
chrome. No CSS override needed for the old element. */
|
|
89
|
+
|
|
90
|
+
/* ── Sidebar / content / outline dividers ──────────────── */
|
|
91
|
+
html .rp-doc-layout__sidebar {
|
|
92
|
+
background: var(--cp-c-bg);
|
|
93
|
+
border-right: 1px solid var(--cp-c-border);
|
|
94
|
+
/* Flex column so the bottom band can grow to fill remaining space
|
|
95
|
+
(sidebar layout: nav items stack from the top, bottom band fills
|
|
96
|
+
the rest). No vertical padding — the sticky top/bottom wrappers
|
|
97
|
+
supply their own internal padding so they hug the actual edges
|
|
98
|
+
(sticky `top: 0` / `bottom: 0` would otherwise sit inside the
|
|
99
|
+
padding box and leave a "see-through" gap above/below). The
|
|
100
|
+
`:first-child:not(.cp-sidebar-top)` rule below restores top
|
|
101
|
+
breathing room for nav items when no above-links are configured. */
|
|
102
|
+
display: flex;
|
|
103
|
+
flex-direction: column;
|
|
104
|
+
padding: 0 8px;
|
|
105
|
+
/* Hide the sidebar's scrollbar entirely — modern doc-site pattern.
|
|
106
|
+
Avoids both the reserved scrollbar gutter (which would push the
|
|
107
|
+
bottom band's edge 12px short of the right border) and the visual
|
|
108
|
+
confusion of a scrollbar appearing to extend through the sticky
|
|
109
|
+
bottom band. Scrolling still works via wheel/trackpad/keyboard. */
|
|
110
|
+
scrollbar-gutter: auto;
|
|
111
|
+
scrollbar-width: none;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
html .rp-doc-layout__sidebar::-webkit-scrollbar {
|
|
115
|
+
display: none;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ── Sidebar sticky bands ──────────────────────────────────
|
|
119
|
+
* The sidebar itself is the scrolling container; the top and bottom
|
|
120
|
+
* regions sit `position: sticky` against the viewport edges so only the
|
|
121
|
+
* middle nav tree scrolls. Backgrounds are required so the scrolling
|
|
122
|
+
* nav-tree content doesn't bleed through.
|
|
123
|
+
*
|
|
124
|
+
* Wrappers come from `nav/layout.tsx` and only render when there's
|
|
125
|
+
* something to pin (above-links for the top, below-links + promo for
|
|
126
|
+
* the bottom). When neither is configured, the sidebar scrolls cleanly
|
|
127
|
+
* with no empty bands.
|
|
128
|
+
* ────────────────────────────────────────────────────────── */
|
|
129
|
+
html .cp-sidebar-top {
|
|
130
|
+
position: sticky;
|
|
131
|
+
top: 0;
|
|
132
|
+
z-index: 2;
|
|
133
|
+
background: var(--cp-c-bg);
|
|
134
|
+
border-bottom: 1px solid var(--cp-c-divider);
|
|
135
|
+
/* Edge-to-edge horizontal extension over the sidebar's 8px padding
|
|
136
|
+
so the divider hairline spans the full sidebar width. */
|
|
137
|
+
margin: 0 -8px;
|
|
138
|
+
padding: 12px 8px;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Without a top wrapper, the first nav item butts right against the
|
|
142
|
+
topbar's border-bottom — give it breathing room. */
|
|
143
|
+
html .rp-doc-layout__sidebar > :first-child:not(.cp-sidebar-top) {
|
|
144
|
+
margin-top: 12px;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
html .cp-sidebar-bottom {
|
|
148
|
+
/* Grow to fill the remaining sidebar space so the nav tree stacks
|
|
149
|
+
from the top and this band occupies everything below it. When the
|
|
150
|
+
nav tree is short, the band is tall and its content (promo +
|
|
151
|
+
below-links) sits at its bottom via `justify-content: flex-end`. */
|
|
152
|
+
flex: 1 0 auto;
|
|
153
|
+
display: flex;
|
|
154
|
+
flex-direction: column;
|
|
155
|
+
justify-content: flex-end;
|
|
156
|
+
/* When the sidebar scrolls (nav tree taller than viewport), this band
|
|
157
|
+
stays glued to the viewport bottom so the promo is always visible.
|
|
158
|
+
`z-index: 3` so the band paints above the thin overlay scrollbar
|
|
159
|
+
thumb so it doesn't appear to "go through" the band region. */
|
|
160
|
+
position: sticky;
|
|
161
|
+
bottom: 0;
|
|
162
|
+
z-index: 3;
|
|
163
|
+
background: var(--cp-c-bg);
|
|
164
|
+
border-top: 1px solid var(--cp-c-divider);
|
|
165
|
+
/* Negative left/right margins extend the band edge-to-edge over the
|
|
166
|
+
sidebar's horizontal padding so the divider hairline (and the
|
|
167
|
+
band's bg) run flush to the sidebar's right border, covering any
|
|
168
|
+
scrollbar lane that would otherwise show through. */
|
|
169
|
+
margin: 0 -8px;
|
|
170
|
+
padding: 12px 8px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
html .rp-doc-layout__outline {
|
|
174
|
+
background: var(--cp-c-bg);
|
|
175
|
+
border-left: 1px solid var(--cp-c-border);
|
|
176
|
+
box-shadow: none;
|
|
177
|
+
/* `padding-top: 12px` matches the rhythm of `.cp-sidebar-top` /
|
|
178
|
+
first-child margin on the left sidebar so the first TOC link and
|
|
179
|
+
the first nav link land at the same y. */
|
|
180
|
+
padding: 12px 16px;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* Hide the outline's built-in "On this page" title — the same label
|
|
184
|
+
lives in <CiderpressDocsBar /> above it, so showing both is
|
|
185
|
+
redundant. (The Rspress `<ReadPercent />` indicator nested inside
|
|
186
|
+
the title goes with it; not worth preserving for a doc rail that
|
|
187
|
+
already lists every heading.) */
|
|
188
|
+
html .rp-outline__title {
|
|
189
|
+
display: none;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
html .rp-doc-layout__doc {
|
|
193
|
+
background: var(--cp-c-bg);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* Cap the prose reading width INSIDE the doc-container — sidebar and
|
|
197
|
+
outline stay pinned to the rail edges; the gutter lives here as
|
|
198
|
+
centered whitespace around the article body.
|
|
199
|
+
|
|
200
|
+
`width: 100%` + `min-width: 0` pin the container to its parent's
|
|
201
|
+
cross-axis size and break the flex `min-content` calculation so
|
|
202
|
+
wide inner elements (Shiki code blocks, ASCII trees) scroll inside
|
|
203
|
+
themselves (their own `overflow-x: auto`) instead of pushing the
|
|
204
|
+
container past `.rp-doc-layout__doc`'s width, which otherwise
|
|
205
|
+
clips prose at the viewport edge. */
|
|
206
|
+
html .rp-doc-layout__doc-container {
|
|
207
|
+
width: 100%;
|
|
208
|
+
max-width: var(--cp-content-reading-max, 1000px);
|
|
209
|
+
margin: 0 auto;
|
|
210
|
+
min-width: 0;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* ── H1 — match mockup (36px / weight 600 / tight line-height) ── */
|
|
214
|
+
html .rp-doc-layout__doc-container h1,
|
|
215
|
+
html .rp-doc h1 {
|
|
216
|
+
font-size: 36px;
|
|
217
|
+
font-weight: 600;
|
|
218
|
+
letter-spacing: -0.025em;
|
|
219
|
+
line-height: 1.1;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* ── First H2 divider — tighten Rspress's default spacing.
|
|
223
|
+
Rspress paints a hairline as `::before` on the first h2 in `.rp-doc`
|
|
224
|
+
with `margin-top: 3rem` on the h2 and `margin-bottom: 3rem` on the
|
|
225
|
+
pseudo, leaving the line floating in ~48px of dead space on each side.
|
|
226
|
+
Pull both gaps in so the divider reads as a clean separator between
|
|
227
|
+
the intro paragraph and the first heading. */
|
|
228
|
+
html .rp-doc h2:first-of-type {
|
|
229
|
+
margin-top: 1.5rem;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
html .rp-doc h2:first-of-type::before {
|
|
233
|
+
margin-bottom: 1rem;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* ── Right rail (TOC) typography — tighten to mockup ── */
|
|
237
|
+
html .rp-doc-layout__outline a,
|
|
238
|
+
html .rp-aside a {
|
|
239
|
+
font-size: 12.5px;
|
|
240
|
+
line-height: 1.4;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* ── Topbar ────────────────────────────────────────────── */
|
|
244
|
+
/* All topbar chrome is now rendered by `<CiderpressHeader />`. The
|
|
245
|
+
Rspress `.rp-nav` is hidden by a rule inside that component's CSS,
|
|
246
|
+
so no overrides are required here. */
|
|
247
|
+
|
|
248
|
+
/* Tighten nav typography to match the mockup */
|
|
249
|
+
html .rp-nav-menu__item,
|
|
250
|
+
html .rp-nav-menu a,
|
|
251
|
+
html .rp-nav__menu a {
|
|
252
|
+
font-size: 13px;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* Pin `font-weight` AND `font-size` across ALL nav item states (idle,
|
|
256
|
+
hover, active) so the box never reflows when the active page changes
|
|
257
|
+
or on hover.
|
|
258
|
+
|
|
259
|
+
CRITICAL: Rspress styles the INNER `.rp-nav-menu__item__container`
|
|
260
|
+
element (not the outer `__item`) and ships rules with `font-size: 14px`
|
|
261
|
+
on `:hover` and `--active` states + `font-weight: 600` on the mobile
|
|
262
|
+
screen menu active. Without overriding the container, color flips on
|
|
263
|
+
hover/active drag the text along with a size + weight change, which
|
|
264
|
+
reflows the topbar layout.
|
|
265
|
+
|
|
266
|
+
Color change alone marks state — pin every size/weight token. */
|
|
267
|
+
html .rp-nav-menu__item,
|
|
268
|
+
html .rp-nav-menu__item .rp-nav-menu__item__container,
|
|
269
|
+
html .rp-nav-menu__item:hover .rp-nav-menu__item__container,
|
|
270
|
+
html .rp-nav-menu__item--active .rp-nav-menu__item__container,
|
|
271
|
+
html .rp-nav-menu a,
|
|
272
|
+
html .rp-nav__menu a,
|
|
273
|
+
html .rp-hover-group__item,
|
|
274
|
+
html .rp-hover-group__item:hover,
|
|
275
|
+
html .rp-hover-group__item--active,
|
|
276
|
+
html .rp-nav-screen-menu-item,
|
|
277
|
+
html .rp-nav-screen-menu-item:hover,
|
|
278
|
+
html .rp-nav-screen-menu-item--active {
|
|
279
|
+
font-size: 13px;
|
|
280
|
+
font-weight: 500;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/* ── Landing page navbar — wraps the rail with vertical hairlines so
|
|
284
|
+
the lines run continuously from the top of the navbar to the bottom
|
|
285
|
+
of the footer. Detected by the presence of `.cp-page-rail` in the
|
|
286
|
+
document. ───────────────────────────────────────────── */
|
|
287
|
+
html body:has(.cp-page-rail) .rspress-nav,
|
|
288
|
+
html body:has(.cp-page-rail) .rp-nav {
|
|
289
|
+
border-left: 1px solid var(--cp-c-border);
|
|
290
|
+
border-right: 1px solid var(--cp-c-border);
|
|
291
|
+
margin: 0 var(--cp-frame-gutter);
|
|
292
|
+
max-width: var(--cp-landing-max-width);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
@media (min-width: 1248px) {
|
|
296
|
+
html body:has(.cp-page-rail) .rspress-nav,
|
|
297
|
+
html body:has(.cp-page-rail) .rp-nav {
|
|
298
|
+
margin: 0 auto;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/* ── Footer ────────────────────────────────────────────── */
|
|
303
|
+
/* Footer inherits the page background — only the hairline at the top
|
|
304
|
+
separates it from the content above. */
|
|
305
|
+
html .cp-site-footer {
|
|
306
|
+
background: transparent;
|
|
307
|
+
border-top: 1px solid var(--cp-c-border);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* The docs rail keeps its 12px frame gutter at all viewport widths.
|
|
311
|
+
Sidebar and outline stay pinned to the rail's edges; only the prose
|
|
312
|
+
inside the doc-container is capped + centered to keep reading width
|
|
313
|
+
comfortable at wide viewports. */
|
|
314
|
+
|
|
315
|
+
/* ── Mobile: drop the gutter + vertical hairlines on the rail so it
|
|
316
|
+
goes edge-to-edge with the header and docs bar above it. Breakpoint
|
|
317
|
+
matches `<CiderpressHeader />`, `<CiderpressNavHamburger />`, and
|
|
318
|
+
`<CiderpressDocsBar />` (all at `max-width: 1024px`) so the entire
|
|
319
|
+
top-of-page stack transitions to full-bleed in one beat instead of
|
|
320
|
+
leaving the rail inset under a full-bleed docs bar. */
|
|
321
|
+
@media (max-width: 1024px) {
|
|
322
|
+
html .rp-doc-layout__container,
|
|
323
|
+
html .rp-doc-layout__menu {
|
|
324
|
+
margin: 0;
|
|
325
|
+
border-left: 0;
|
|
326
|
+
border-right: 0;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/* At very narrow viewports, tighten the prose's inner horizontal
|
|
331
|
+
padding so the article body keeps breathing room without eating into
|
|
332
|
+
the reading width. */
|
|
333
|
+
@media (max-width: 720px) {
|
|
334
|
+
html:root {
|
|
335
|
+
--rp-content-padding-x: 20px;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rspress structural overrides.
|
|
3
|
+
*
|
|
4
|
+
* Color definitions have moved to theme files (styles/themes/*.css).
|
|
5
|
+
* This file retains only structural overrides: fonts, layout, LLMs UI.
|
|
6
|
+
*
|
|
7
|
+
* Cascade layer: `ciderpress.overrides` (see styles/layers.css).
|
|
8
|
+
*
|
|
9
|
+
* `!important` inventory (task 8.2):
|
|
10
|
+
* - Before: 0
|
|
11
|
+
* - After: 0
|
|
12
|
+
*
|
|
13
|
+
* No `!important` declarations are needed here — `html .rp-*` specificity
|
|
14
|
+
* combined with the `ciderpress.overrides` layer is sufficient against Rspress's
|
|
15
|
+
* font and LLMs UI defaults.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
@layer ciderpress.overrides {
|
|
19
|
+
html:root {
|
|
20
|
+
/* Fonts — map Geist into Rspress's font stack */
|
|
21
|
+
--rp-font-family-base: 'Geist', ui-sans-serif, system-ui, sans-serif;
|
|
22
|
+
--rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* ── LLMs UI — Ciderpress mounts its own `<LlmsContainer />` inside
|
|
26
|
+
`<CiderpressDocsBar />`. The H1 placement is suppressed natively
|
|
27
|
+
by setting `themeConfig.llmsUI.placement: 'outline'` (see
|
|
28
|
+
`packages/ui/src/config.ts`). That moves Rspress's auto-render
|
|
29
|
+
into the outline rail (`<LlmsCopyRow />` + `<LlmsOpenRow />`),
|
|
30
|
+
which we then hide here so the bar is the single source of
|
|
31
|
+
truth. ───────────────────────────────────────────────────── */
|
|
32
|
+
html .rp-outline .rp-outline__action-row,
|
|
33
|
+
html .rp-outline .rp-outline__open-in-wrapper {
|
|
34
|
+
display: none;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* ── Buttons — pill shape ─────────────────────────────────── */
|
|
38
|
+
html .rp-button--medium,
|
|
39
|
+
html .rp-button--big {
|
|
40
|
+
border-radius: 9999px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* ── Tables ──────────────────────────────────────────────── */
|
|
44
|
+
html table {
|
|
45
|
+
border-radius: var(--rp-radius);
|
|
46
|
+
overflow: hidden;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* ── Single-variant themes — hide the appearance toggle when the
|
|
51
|
+
active theme only ships one variant.
|
|
52
|
+
|
|
53
|
+
Intentionally **unlayered**: Rspress ships its appearance toggle styles
|
|
54
|
+
unlayered, and unlayered rules always win over layered ones regardless
|
|
55
|
+
of specificity. Hoisting this rule out of `@layer ciderpress.overrides` is
|
|
56
|
+
the only way to win the cascade without `!important`. ────────────── */
|
|
57
|
+
html[data-cp-variants='dark'] .rp-switch-appearance,
|
|
58
|
+
html[data-cp-variants='light'] .rp-switch-appearance,
|
|
59
|
+
html[data-cp-variants='dark'] .rp-nav-screen-appearance,
|
|
60
|
+
html[data-cp-variants='light'] .rp-nav-screen-appearance {
|
|
61
|
+
display: none;
|
|
62
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dark scrollbar overrides.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
.rp-dark ::-webkit-scrollbar,
|
|
6
|
+
html[data-dark='true'] ::-webkit-scrollbar {
|
|
7
|
+
width: 6px;
|
|
8
|
+
height: 6px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.rp-dark ::-webkit-scrollbar-track,
|
|
12
|
+
html[data-dark='true'] ::-webkit-scrollbar-track {
|
|
13
|
+
background: transparent;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.rp-dark ::-webkit-scrollbar-thumb,
|
|
17
|
+
html[data-dark='true'] ::-webkit-scrollbar-thumb {
|
|
18
|
+
background: var(--cp-c-scrollbar-thumb);
|
|
19
|
+
border-radius: 3px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.rp-dark ::-webkit-scrollbar-thumb:hover,
|
|
23
|
+
html[data-dark='true'] ::-webkit-scrollbar-thumb:hover {
|
|
24
|
+
background: var(--cp-c-scrollbar-thumb-hover);
|
|
25
|
+
}
|