jamdesk 1.0.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/LICENSE +21 -0
- package/README.md +323 -0
- package/bin/jamdesk.js +76 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.d.ts +8 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.js +165 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.js.map +1 -0
- package/dist/__tests__/integration/migrate.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/migrate.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/migrate.integration.test.js +64 -0
- package/dist/__tests__/integration/migrate.integration.test.js.map +1 -0
- package/dist/__tests__/integration/prepublish.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/prepublish.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/prepublish.integration.test.js +27 -0
- package/dist/__tests__/integration/prepublish.integration.test.js.map +1 -0
- package/dist/__tests__/integration/validate.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/validate.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/validate.integration.test.js +56 -0
- package/dist/__tests__/integration/validate.integration.test.js.map +1 -0
- package/dist/__tests__/unit/deploy-templates.test.d.ts +2 -0
- package/dist/__tests__/unit/deploy-templates.test.d.ts.map +1 -0
- package/dist/__tests__/unit/deploy-templates.test.js +124 -0
- package/dist/__tests__/unit/deploy-templates.test.js.map +1 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.d.ts +2 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.js +69 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.js.map +1 -0
- package/dist/__tests__/unit/deps-sync.test.d.ts +14 -0
- package/dist/__tests__/unit/deps-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/deps-sync.test.js +166 -0
- package/dist/__tests__/unit/deps-sync.test.js.map +1 -0
- package/dist/__tests__/unit/docs-config.test.d.ts +2 -0
- package/dist/__tests__/unit/docs-config.test.d.ts.map +1 -0
- package/dist/__tests__/unit/docs-config.test.js +288 -0
- package/dist/__tests__/unit/docs-config.test.js.map +1 -0
- package/dist/__tests__/unit/errors.test.d.ts +2 -0
- package/dist/__tests__/unit/errors.test.d.ts.map +1 -0
- package/dist/__tests__/unit/errors.test.js +27 -0
- package/dist/__tests__/unit/errors.test.js.map +1 -0
- package/dist/__tests__/unit/extract-hooks.test.d.ts +5 -0
- package/dist/__tests__/unit/extract-hooks.test.d.ts.map +1 -0
- package/dist/__tests__/unit/extract-hooks.test.js +205 -0
- package/dist/__tests__/unit/extract-hooks.test.js.map +1 -0
- package/dist/__tests__/unit/frontmatter-sync.test.d.ts +8 -0
- package/dist/__tests__/unit/frontmatter-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/frontmatter-sync.test.js +26 -0
- package/dist/__tests__/unit/frontmatter-sync.test.js.map +1 -0
- package/dist/__tests__/unit/mdx-validator.test.d.ts +2 -0
- package/dist/__tests__/unit/mdx-validator.test.d.ts.map +1 -0
- package/dist/__tests__/unit/mdx-validator.test.js +264 -0
- package/dist/__tests__/unit/mdx-validator.test.js.map +1 -0
- package/dist/__tests__/unit/migrate-convert.test.d.ts +2 -0
- package/dist/__tests__/unit/migrate-convert.test.d.ts.map +1 -0
- package/dist/__tests__/unit/migrate-convert.test.js +297 -0
- package/dist/__tests__/unit/migrate-convert.test.js.map +1 -0
- package/dist/__tests__/unit/migrate-detect.test.d.ts +2 -0
- package/dist/__tests__/unit/migrate-detect.test.d.ts.map +1 -0
- package/dist/__tests__/unit/migrate-detect.test.js +35 -0
- package/dist/__tests__/unit/migrate-detect.test.js.map +1 -0
- package/dist/__tests__/unit/migrate-mdx.test.d.ts +2 -0
- package/dist/__tests__/unit/migrate-mdx.test.d.ts.map +1 -0
- package/dist/__tests__/unit/migrate-mdx.test.js +158 -0
- package/dist/__tests__/unit/migrate-mdx.test.js.map +1 -0
- package/dist/__tests__/unit/openapi.test.d.ts +2 -0
- package/dist/__tests__/unit/openapi.test.d.ts.map +1 -0
- package/dist/__tests__/unit/openapi.test.js +52 -0
- package/dist/__tests__/unit/openapi.test.js.map +1 -0
- package/dist/__tests__/unit/package-config.test.d.ts +2 -0
- package/dist/__tests__/unit/package-config.test.d.ts.map +1 -0
- package/dist/__tests__/unit/package-config.test.js +63 -0
- package/dist/__tests__/unit/package-config.test.js.map +1 -0
- package/dist/__tests__/unit/port.test.d.ts +2 -0
- package/dist/__tests__/unit/port.test.d.ts.map +1 -0
- package/dist/__tests__/unit/port.test.js +20 -0
- package/dist/__tests__/unit/port.test.js.map +1 -0
- package/dist/__tests__/unit/vendored-sync.test.d.ts +14 -0
- package/dist/__tests__/unit/vendored-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/vendored-sync.test.js +90 -0
- package/dist/__tests__/unit/vendored-sync.test.js.map +1 -0
- package/dist/commands/broken-links.d.ts +11 -0
- package/dist/commands/broken-links.d.ts.map +1 -0
- package/dist/commands/broken-links.js +95 -0
- package/dist/commands/broken-links.js.map +1 -0
- package/dist/commands/clean.d.ts +7 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +59 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/deploy/cloudflare.d.ts +12 -0
- package/dist/commands/deploy/cloudflare.d.ts.map +1 -0
- package/dist/commands/deploy/cloudflare.js +409 -0
- package/dist/commands/deploy/cloudflare.js.map +1 -0
- package/dist/commands/deploy/templates.d.ts +23 -0
- package/dist/commands/deploy/templates.d.ts.map +1 -0
- package/dist/commands/deploy/templates.js +179 -0
- package/dist/commands/deploy/templates.js.map +1 -0
- package/dist/commands/deploy/types.d.ts +19 -0
- package/dist/commands/deploy/types.d.ts.map +1 -0
- package/dist/commands/deploy/types.js +5 -0
- package/dist/commands/deploy/types.js.map +1 -0
- package/dist/commands/dev.d.ts +14 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +817 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +159 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +96 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate/convert-mdx.d.ts +50 -0
- package/dist/commands/migrate/convert-mdx.d.ts.map +1 -0
- package/dist/commands/migrate/convert-mdx.js +108 -0
- package/dist/commands/migrate/convert-mdx.js.map +1 -0
- package/dist/commands/migrate/convert.d.ts +80 -0
- package/dist/commands/migrate/convert.d.ts.map +1 -0
- package/dist/commands/migrate/convert.js +158 -0
- package/dist/commands/migrate/convert.js.map +1 -0
- package/dist/commands/migrate/detect.d.ts +31 -0
- package/dist/commands/migrate/detect.d.ts.map +1 -0
- package/dist/commands/migrate/detect.js +62 -0
- package/dist/commands/migrate/detect.js.map +1 -0
- package/dist/commands/migrate/extract-hooks.d.ts +71 -0
- package/dist/commands/migrate/extract-hooks.d.ts.map +1 -0
- package/dist/commands/migrate/extract-hooks.js +473 -0
- package/dist/commands/migrate/extract-hooks.js.map +1 -0
- package/dist/commands/migrate/index.d.ts +17 -0
- package/dist/commands/migrate/index.d.ts.map +1 -0
- package/dist/commands/migrate/index.js +282 -0
- package/dist/commands/migrate/index.js.map +1 -0
- package/dist/commands/migrate/prompts.d.ts +22 -0
- package/dist/commands/migrate/prompts.d.ts.map +1 -0
- package/dist/commands/migrate/prompts.js +67 -0
- package/dist/commands/migrate/prompts.js.map +1 -0
- package/dist/commands/migrate/types.d.ts +22 -0
- package/dist/commands/migrate/types.d.ts.map +1 -0
- package/dist/commands/migrate/types.js +26 -0
- package/dist/commands/migrate/types.js.map +1 -0
- package/dist/commands/openapi-check.d.ts +11 -0
- package/dist/commands/openapi-check.d.ts.map +1 -0
- package/dist/commands/openapi-check.js +88 -0
- package/dist/commands/openapi-check.js.map +1 -0
- package/dist/commands/rename.d.ts +10 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +125 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/update.d.ts +10 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +57 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +12 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +163 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +334 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +18 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/deprecated-components.d.ts +72 -0
- package/dist/lib/deprecated-components.d.ts.map +1 -0
- package/dist/lib/deprecated-components.js +138 -0
- package/dist/lib/deprecated-components.js.map +1 -0
- package/dist/lib/deps.d.ts +17 -0
- package/dist/lib/deps.d.ts.map +1 -0
- package/dist/lib/deps.js +186 -0
- package/dist/lib/deps.js.map +1 -0
- package/dist/lib/docs-config.d.ts +67 -0
- package/dist/lib/docs-config.d.ts.map +1 -0
- package/dist/lib/docs-config.js +294 -0
- package/dist/lib/docs-config.js.map +1 -0
- package/dist/lib/errors.d.ts +23 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +32 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/frontmatter-utils.d.ts +25 -0
- package/dist/lib/frontmatter-utils.d.ts.map +1 -0
- package/dist/lib/frontmatter-utils.js +64 -0
- package/dist/lib/frontmatter-utils.js.map +1 -0
- package/dist/lib/mdx-validator.d.ts +27 -0
- package/dist/lib/mdx-validator.d.ts.map +1 -0
- package/dist/lib/mdx-validator.js +148 -0
- package/dist/lib/mdx-validator.js.map +1 -0
- package/dist/lib/navigation-validator.d.ts +31 -0
- package/dist/lib/navigation-validator.d.ts.map +1 -0
- package/dist/lib/navigation-validator.js +75 -0
- package/dist/lib/navigation-validator.js.map +1 -0
- package/dist/lib/normalize-config.d.ts +57 -0
- package/dist/lib/normalize-config.d.ts.map +1 -0
- package/dist/lib/normalize-config.js +63 -0
- package/dist/lib/normalize-config.js.map +1 -0
- package/dist/lib/openapi/cache.d.ts +40 -0
- package/dist/lib/openapi/cache.d.ts.map +1 -0
- package/dist/lib/openapi/cache.js +76 -0
- package/dist/lib/openapi/cache.js.map +1 -0
- package/dist/lib/openapi/errors.d.ts +36 -0
- package/dist/lib/openapi/errors.d.ts.map +1 -0
- package/dist/lib/openapi/errors.js +162 -0
- package/dist/lib/openapi/errors.js.map +1 -0
- package/dist/lib/openapi/index.d.ts +10 -0
- package/dist/lib/openapi/index.d.ts.map +1 -0
- package/dist/lib/openapi/index.js +12 -0
- package/dist/lib/openapi/index.js.map +1 -0
- package/dist/lib/openapi/types.d.ts +198 -0
- package/dist/lib/openapi/types.d.ts.map +1 -0
- package/dist/lib/openapi/types.js +8 -0
- package/dist/lib/openapi/types.js.map +1 -0
- package/dist/lib/openapi/validator.d.ts +45 -0
- package/dist/lib/openapi/validator.d.ts.map +1 -0
- package/dist/lib/openapi/validator.js +128 -0
- package/dist/lib/openapi/validator.js.map +1 -0
- package/dist/lib/openapi.d.ts +7 -0
- package/dist/lib/openapi.d.ts.map +1 -0
- package/dist/lib/openapi.js +7 -0
- package/dist/lib/openapi.js.map +1 -0
- package/dist/lib/output.d.ts +14 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +19 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/path-security.d.ts +23 -0
- package/dist/lib/path-security.d.ts.map +1 -0
- package/dist/lib/path-security.js +35 -0
- package/dist/lib/path-security.js.map +1 -0
- package/dist/lib/port.d.ts +18 -0
- package/dist/lib/port.d.ts.map +1 -0
- package/dist/lib/port.js +65 -0
- package/dist/lib/port.js.map +1 -0
- package/dist/lib/spinner.d.ts +4 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +16 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +49 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/utils/update-checker.d.ts +34 -0
- package/dist/utils/update-checker.d.ts.map +1 -0
- package/dist/utils/update-checker.js +142 -0
- package/dist/utils/update-checker.js.map +1 -0
- package/package.json +125 -0
- package/templates/docs.json +11 -0
- package/templates/introduction.mdx +19 -0
- package/templates/quickstart.mdx +20 -0
- package/vendored/app/[[...slug]]/error.tsx +103 -0
- package/vendored/app/[[...slug]]/page.tsx +690 -0
- package/vendored/app/api/assets/[...path]/route.ts +78 -0
- package/vendored/app/api/ev/route.ts +61 -0
- package/vendored/app/api/isr-health/route.ts +66 -0
- package/vendored/app/api/mcp/[project]/route.ts +435 -0
- package/vendored/app/api/og/route.tsx +167 -0
- package/vendored/app/api/r2/[project]/[...path]/route.ts +214 -0
- package/vendored/app/api/revalidate/route.ts +76 -0
- package/vendored/app/globals.css +37 -0
- package/vendored/app/layout.tsx +571 -0
- package/vendored/app/not-found.tsx +47 -0
- package/vendored/components/CodeBlockCopyButton.tsx +146 -0
- package/vendored/components/HeaderLinkCopy.tsx +135 -0
- package/vendored/components/errors/NotFoundContent.tsx +147 -0
- package/vendored/components/layout/LayoutWrapper.tsx +128 -0
- package/vendored/components/mdx/Accordion.tsx +91 -0
- package/vendored/components/mdx/ApiCodePanel.tsx +51 -0
- package/vendored/components/mdx/ApiEndpoint.tsx +104 -0
- package/vendored/components/mdx/ApiPage.tsx +379 -0
- package/vendored/components/mdx/Badge.tsx +169 -0
- package/vendored/components/mdx/Callouts.tsx +140 -0
- package/vendored/components/mdx/Card.tsx +214 -0
- package/vendored/components/mdx/CodeGroup.tsx +136 -0
- package/vendored/components/mdx/Color.tsx +244 -0
- package/vendored/components/mdx/Columns.tsx +37 -0
- package/vendored/components/mdx/Expandable.tsx +37 -0
- package/vendored/components/mdx/Frame.tsx +51 -0
- package/vendored/components/mdx/Icon.tsx +132 -0
- package/vendored/components/mdx/Latex.tsx +75 -0
- package/vendored/components/mdx/MDXComponents.tsx +414 -0
- package/vendored/components/mdx/Mermaid.tsx +35 -0
- package/vendored/components/mdx/MermaidInner.tsx +342 -0
- package/vendored/components/mdx/OpenApiEndpoint.tsx +971 -0
- package/vendored/components/mdx/Panel.tsx +26 -0
- package/vendored/components/mdx/PanelWrapper.tsx +100 -0
- package/vendored/components/mdx/ParamField.tsx +75 -0
- package/vendored/components/mdx/RequestExample.tsx +91 -0
- package/vendored/components/mdx/ResponseExample.tsx +145 -0
- package/vendored/components/mdx/ResponseField.tsx +109 -0
- package/vendored/components/mdx/Steps.tsx +173 -0
- package/vendored/components/mdx/Table.tsx +352 -0
- package/vendored/components/mdx/Tabs.tsx +147 -0
- package/vendored/components/mdx/Tile.tsx +127 -0
- package/vendored/components/mdx/Tooltip.tsx +111 -0
- package/vendored/components/mdx/Tree.tsx +484 -0
- package/vendored/components/mdx/Update.tsx +90 -0
- package/vendored/components/mdx/View.tsx +354 -0
- package/vendored/components/mdx/YouTube.tsx +35 -0
- package/vendored/components/mdx/ZoomableImage.tsx +83 -0
- package/vendored/components/navigation/Breadcrumb.tsx +241 -0
- package/vendored/components/navigation/DefaultLogo.tsx +81 -0
- package/vendored/components/navigation/Header.tsx +512 -0
- package/vendored/components/navigation/LanguageSelector.tsx +249 -0
- package/vendored/components/navigation/PageNavigation.tsx +174 -0
- package/vendored/components/navigation/Sidebar.tsx +713 -0
- package/vendored/components/navigation/SocialFooter.tsx +186 -0
- package/vendored/components/navigation/TableOfContents.tsx +435 -0
- package/vendored/components/navigation/TabsNav.tsx +182 -0
- package/vendored/components/search/LazySearchModal.tsx +19 -0
- package/vendored/components/search/SearchModal.tsx +573 -0
- package/vendored/components/snippets/ProjectSnippets.tsx +4 -0
- package/vendored/components/theme/ThemeProvider.tsx +31 -0
- package/vendored/components/theme/ThemeToggle.tsx +134 -0
- package/vendored/components/ui/CodePanel.tsx +517 -0
- package/vendored/components/ui/CodePanelModal.tsx +342 -0
- package/vendored/contexts/TabSyncContext.tsx +30 -0
- package/vendored/hooks/useFocusTrap.ts +42 -0
- package/vendored/hooks/useHashNavigation.ts +39 -0
- package/vendored/hooks/useShikiHighlight.ts +101 -0
- package/vendored/lib/analytics-client.ts +77 -0
- package/vendored/lib/build/cache.ts +138 -0
- package/vendored/lib/build/error-parser.ts +690 -0
- package/vendored/lib/build/estimation.ts +113 -0
- package/vendored/lib/build/index.ts +17 -0
- package/vendored/lib/build/page-file-map.ts +48 -0
- package/vendored/lib/build/r2-upload.ts +179 -0
- package/vendored/lib/cache-keys.ts +117 -0
- package/vendored/lib/code-utils.ts +42 -0
- package/vendored/lib/content-loader.ts +176 -0
- package/vendored/lib/deprecated-components.ts +185 -0
- package/vendored/lib/docs-isr.ts +180 -0
- package/vendored/lib/docs-types.ts +874 -0
- package/vendored/lib/docs.ts +203 -0
- package/vendored/lib/domain-helpers.ts +107 -0
- package/vendored/lib/email-notifier.ts +102 -0
- package/vendored/lib/email-templates/build-failure.tsx +193 -0
- package/vendored/lib/email-templates/components/base-layout.tsx +150 -0
- package/vendored/lib/email-templates/components/error-box.tsx +88 -0
- package/vendored/lib/email-templates/components/info-row.tsx +63 -0
- package/vendored/lib/email-templates/index.ts +13 -0
- package/vendored/lib/empty-polyfill.js +3 -0
- package/vendored/lib/extract-highlights.ts +124 -0
- package/vendored/lib/fonts.ts +227 -0
- package/vendored/lib/frontmatter-utils.ts +77 -0
- package/vendored/lib/fs-utils.ts +20 -0
- package/vendored/lib/git-utils.ts +87 -0
- package/vendored/lib/health-checks.ts +224 -0
- package/vendored/lib/icon-utils.ts +492 -0
- package/vendored/lib/infer-page-type.ts +14 -0
- package/vendored/lib/isr-build-executor.ts +185 -0
- package/vendored/lib/language-icons.ts +152 -0
- package/vendored/lib/language-utils.ts +338 -0
- package/vendored/lib/latex-config.ts +64 -0
- package/vendored/lib/link-prefix-context.tsx +32 -0
- package/vendored/lib/logger.ts +63 -0
- package/vendored/lib/mcp-search.ts +255 -0
- package/vendored/lib/mdx-inline-components.ts +155 -0
- package/vendored/lib/mdx.ts +100 -0
- package/vendored/lib/middleware-helpers.ts +519 -0
- package/vendored/lib/navigation-resolver.ts +621 -0
- package/vendored/lib/navigation-utils.ts +103 -0
- package/vendored/lib/normalize-config.ts +94 -0
- package/vendored/lib/openapi/cache.ts +92 -0
- package/vendored/lib/openapi/code-examples.ts +389 -0
- package/vendored/lib/openapi/errors.ts +253 -0
- package/vendored/lib/openapi/generator.ts +230 -0
- package/vendored/lib/openapi/index.ts +84 -0
- package/vendored/lib/openapi/parser.ts +474 -0
- package/vendored/lib/openapi/types.ts +232 -0
- package/vendored/lib/openapi/validator.ts +156 -0
- package/vendored/lib/openapi-isr.ts +121 -0
- package/vendored/lib/page-isr-helpers.ts +137 -0
- package/vendored/lib/path-safety.ts +130 -0
- package/vendored/lib/paths.ts +35 -0
- package/vendored/lib/preprocess-mdx.ts +951 -0
- package/vendored/lib/process-mdx-with-exports.ts +75 -0
- package/vendored/lib/project-resolver.ts +165 -0
- package/vendored/lib/r2-content.ts +60 -0
- package/vendored/lib/r2-manifest.ts +84 -0
- package/vendored/lib/recent-searches.ts +41 -0
- package/vendored/lib/recma-compound-components.ts +84 -0
- package/vendored/lib/redirect-compiler.ts +160 -0
- package/vendored/lib/redirect-matcher.ts +296 -0
- package/vendored/lib/redis.ts +23 -0
- package/vendored/lib/rehype-class-to-classname.ts +31 -0
- package/vendored/lib/rehype-code-meta.ts +275 -0
- package/vendored/lib/rehype-nozoom-to-data.ts +45 -0
- package/vendored/lib/remark-extract-exports.ts +104 -0
- package/vendored/lib/resilience.ts +260 -0
- package/vendored/lib/revalidation-helpers.ts +200 -0
- package/vendored/lib/revalidation-trigger.ts +150 -0
- package/vendored/lib/screenshot-capture.ts +229 -0
- package/vendored/lib/search-client.ts +91 -0
- package/vendored/lib/search-suggestions.ts +38 -0
- package/vendored/lib/search.ts +158 -0
- package/vendored/lib/seo.ts +264 -0
- package/vendored/lib/shiki-client.ts +131 -0
- package/vendored/lib/shiki-config.ts +289 -0
- package/vendored/lib/shiki-css-theme.ts +46 -0
- package/vendored/lib/shiki-highlighter.ts +62 -0
- package/vendored/lib/shiki-transformers.ts +337 -0
- package/vendored/lib/slack-notifier.ts +248 -0
- package/vendored/lib/snippet-compiler-isr.ts +114 -0
- package/vendored/lib/snippet-loader-isr.ts +276 -0
- package/vendored/lib/static-artifacts.ts +375 -0
- package/vendored/lib/static-file-route.ts +72 -0
- package/vendored/lib/tracking-script.ts +19 -0
- package/vendored/lib/typography-config.ts +42 -0
- package/vendored/lib/validate-config.ts +268 -0
- package/vendored/next.config.js +45 -0
- package/vendored/postcss.config.js +6 -0
- package/vendored/schema/README.md +28 -0
- package/vendored/schema/docs-schema.json +4631 -0
- package/vendored/scripts/build-project.cjs +174 -0
- package/vendored/scripts/build-search-index.cjs +347 -0
- package/vendored/scripts/compile-snippets.cjs +488 -0
- package/vendored/scripts/copy-files.cjs +295 -0
- package/vendored/scripts/dev-project.cjs +534 -0
- package/vendored/scripts/enhance-navigation.cjs +354 -0
- package/vendored/scripts/validate-links.cjs +423 -0
- package/vendored/shared/constants.ts +6 -0
- package/vendored/shared/index.ts +19 -0
- package/vendored/shared/logger.ts +62 -0
- package/vendored/shared/memory-monitor.ts +190 -0
- package/vendored/shared/navigation-validator.ts +101 -0
- package/vendored/shared/path-security.ts +39 -0
- package/vendored/shared/status-reporter.ts +199 -0
- package/vendored/shared/timer.ts +51 -0
- package/vendored/shared/types.ts +102 -0
- package/vendored/tailwind.config.ts +39 -0
- package/vendored/themes/base.css +1311 -0
- package/vendored/themes/index.ts +119 -0
- package/vendored/themes/jam/variables.css +835 -0
- package/vendored/themes/nebula/variables.css +282 -0
- package/vendored/themes/pulsar/variables.css +1009 -0
- package/vendored/themes/types.ts +89 -0
- package/vendored/tsconfig.json +48 -0
|
@@ -0,0 +1,1009 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pulsar Theme - CSS Variables
|
|
3
|
+
* Clean, modern documentation theme with Inter font and blue accent
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
/* Border radius - rounded style */
|
|
8
|
+
--radius-sm: 0.375rem; /* 6px */
|
|
9
|
+
--radius-md: 0.5rem; /* 8px */
|
|
10
|
+
--radius-lg: 0.75rem; /* 12px */
|
|
11
|
+
--radius-xl: 1rem; /* 16px */
|
|
12
|
+
--radius-2xl: 1.5rem; /* 24px */
|
|
13
|
+
--radius-full: 9999px;
|
|
14
|
+
|
|
15
|
+
/* Light theme colors */
|
|
16
|
+
--color-bg-primary: #ffffff;
|
|
17
|
+
--color-bg-secondary: #f8fafc;
|
|
18
|
+
--color-bg-tertiary: #f1f5f9;
|
|
19
|
+
--color-bg-hover: #e2e8f0;
|
|
20
|
+
|
|
21
|
+
--color-border: #e2e8f0;
|
|
22
|
+
--color-border-hover: #cbd5e1;
|
|
23
|
+
--border-width: 0.5px;
|
|
24
|
+
|
|
25
|
+
--color-text-primary: #0a0a0a;
|
|
26
|
+
--color-text-secondary: #404144;
|
|
27
|
+
--color-text-tertiary: #525252;
|
|
28
|
+
--color-text-muted: #737373;
|
|
29
|
+
--color-marker: #94a3b8;
|
|
30
|
+
|
|
31
|
+
--color-accent: #3b82f6;
|
|
32
|
+
--color-accent-hover: #2563eb;
|
|
33
|
+
--color-accent-light: #dbeafe;
|
|
34
|
+
--color-accent-text: #1d4ed8;
|
|
35
|
+
|
|
36
|
+
/* Code block colors - light */
|
|
37
|
+
--color-code-bg: #f8fafc;
|
|
38
|
+
--color-code-border: var(--color-border);
|
|
39
|
+
--color-code-text: #1e293b;
|
|
40
|
+
|
|
41
|
+
/* Note callout colors - light (blue) */
|
|
42
|
+
--color-note-bg: #eff6ff;
|
|
43
|
+
--color-note-border: #bfdbfe;
|
|
44
|
+
--color-note-text: #1e40af;
|
|
45
|
+
|
|
46
|
+
/* Info callout colors - light (grey) */
|
|
47
|
+
--color-info-bg: #fdfdfd;
|
|
48
|
+
--color-info-border: #ebebeb;
|
|
49
|
+
--color-info-text: #1a1a1a;
|
|
50
|
+
|
|
51
|
+
--color-warning-bg: #fffbeb;
|
|
52
|
+
--color-warning-border: #fde68a;
|
|
53
|
+
--color-warning-text: #78350f;
|
|
54
|
+
|
|
55
|
+
--color-error-bg: #fef2f2;
|
|
56
|
+
--color-error-border: #fecaca;
|
|
57
|
+
--color-error-text: #991b1b;
|
|
58
|
+
|
|
59
|
+
--color-success-bg: #f0fdf4;
|
|
60
|
+
--color-success-border: #bbf7d0;
|
|
61
|
+
--color-success-text: #166534;
|
|
62
|
+
|
|
63
|
+
/* Layout constraints */
|
|
64
|
+
--layout-max-width: none; /* Full browser width for Pulsar theme */
|
|
65
|
+
--content-max-width: 780px; /* Centered content column width */
|
|
66
|
+
--sidebar-item-spacing: 4px; /* Vertical spacing between sidebar nav items */
|
|
67
|
+
--right-column-width: 288px; /* TOC width (w-72 = 18rem = 288px) */
|
|
68
|
+
--code-panels-width: 460px; /* API code panels width */
|
|
69
|
+
|
|
70
|
+
/* Shadows - Pulsar theme uses no shadows for a cleaner look */
|
|
71
|
+
--shadow-sm: none;
|
|
72
|
+
--shadow-md: none;
|
|
73
|
+
--shadow-lg: none;
|
|
74
|
+
--shadow-xl: none;
|
|
75
|
+
--shadow-2xl: none;
|
|
76
|
+
|
|
77
|
+
/* ===== TYPOGRAPHY SYSTEM ===== */
|
|
78
|
+
|
|
79
|
+
/* Content Typography (Prose) */
|
|
80
|
+
--prose-h1-size: 30px;
|
|
81
|
+
--prose-h1-line-height: 1.25;
|
|
82
|
+
--prose-h1-weight: 600;
|
|
83
|
+
--prose-h1-tracking: -0.02em;
|
|
84
|
+
|
|
85
|
+
--prose-h2-size: 24px;
|
|
86
|
+
--prose-h2-line-height: 1.35;
|
|
87
|
+
--prose-h2-weight: 500;
|
|
88
|
+
--prose-h2-tracking: -0.02em;
|
|
89
|
+
|
|
90
|
+
--prose-h3-size: 20px;
|
|
91
|
+
--prose-h3-line-height: 1.4;
|
|
92
|
+
--prose-h3-weight: 500;
|
|
93
|
+
--prose-h3-tracking: -0.01em;
|
|
94
|
+
|
|
95
|
+
--prose-h4-size: 18px;
|
|
96
|
+
--prose-h4-line-height: 1.5;
|
|
97
|
+
--prose-h4-weight: 500;
|
|
98
|
+
--prose-h4-tracking: -0.01em;
|
|
99
|
+
|
|
100
|
+
--prose-body-size: 16px;
|
|
101
|
+
--prose-body-line-height: 1.625;
|
|
102
|
+
--prose-body-weight: 300;
|
|
103
|
+
--prose-body-tracking: 0;
|
|
104
|
+
|
|
105
|
+
--prose-small-size: 14px;
|
|
106
|
+
--prose-small-line-height: 1.5;
|
|
107
|
+
--prose-small-weight: 400;
|
|
108
|
+
|
|
109
|
+
/* Navigation Typography */
|
|
110
|
+
--nav-anchor-size: 14px;
|
|
111
|
+
--nav-anchor-line-height: 1.5;
|
|
112
|
+
--nav-anchor-weight: 500;
|
|
113
|
+
|
|
114
|
+
--nav-group-size: 12px;
|
|
115
|
+
--nav-group-line-height: 1.5;
|
|
116
|
+
--nav-group-weight: 600;
|
|
117
|
+
--nav-group-tracking: 0.02em;
|
|
118
|
+
|
|
119
|
+
--nav-page-size: 14px;
|
|
120
|
+
--nav-page-line-height: 1.5;
|
|
121
|
+
--nav-page-weight: 300;
|
|
122
|
+
--nav-page-active-weight: 500;
|
|
123
|
+
|
|
124
|
+
--nav-tab-size: 14px;
|
|
125
|
+
--nav-tab-line-height: 1.5;
|
|
126
|
+
--nav-tab-weight: 500;
|
|
127
|
+
|
|
128
|
+
--nav-breadcrumb-size: 14px;
|
|
129
|
+
--nav-breadcrumb-line-height: 1.5;
|
|
130
|
+
--nav-breadcrumb-weight: 400;
|
|
131
|
+
|
|
132
|
+
/* Code Typography */
|
|
133
|
+
--code-inline-size: 14px;
|
|
134
|
+
--code-block-size: 13px;
|
|
135
|
+
--code-block-line-height: 1.6;
|
|
136
|
+
--code-panel-size: 11.5px;
|
|
137
|
+
--code-panel-line-height: 1.5;
|
|
138
|
+
|
|
139
|
+
/* UI Typography */
|
|
140
|
+
--ui-badge-size: 10px;
|
|
141
|
+
--ui-badge-line-height: 1.4;
|
|
142
|
+
--ui-badge-weight: 700;
|
|
143
|
+
--ui-badge-tracking: 0.02em;
|
|
144
|
+
|
|
145
|
+
--ui-tag-size: 10px;
|
|
146
|
+
--ui-tag-line-height: 1.4;
|
|
147
|
+
--ui-tag-weight: 600;
|
|
148
|
+
|
|
149
|
+
--ui-tag-small-size: 9px;
|
|
150
|
+
--ui-tag-small-weight: 600;
|
|
151
|
+
|
|
152
|
+
--ui-kbd-size: 12px;
|
|
153
|
+
--ui-kbd-weight: 500;
|
|
154
|
+
|
|
155
|
+
--ui-label-size: 12px;
|
|
156
|
+
--ui-label-weight: 500;
|
|
157
|
+
|
|
158
|
+
--ui-button-size: 14px;
|
|
159
|
+
--ui-button-weight: 500;
|
|
160
|
+
|
|
161
|
+
/* Code box height calculations for sidebar */
|
|
162
|
+
--code-box-font-size: 11.5px;
|
|
163
|
+
--code-box-line-height: 1.5;
|
|
164
|
+
--code-box-line-height-px: calc(var(--code-box-font-size) * var(--code-box-line-height)); /* ~17.25px */
|
|
165
|
+
--code-box-min-lines: 5;
|
|
166
|
+
--code-box-max-lines: 25;
|
|
167
|
+
--code-box-min-height: calc(var(--code-box-line-height-px) * var(--code-box-min-lines)); /* ~86px */
|
|
168
|
+
--code-box-max-height: calc(var(--code-box-line-height-px) * var(--code-box-max-lines)); /* ~431px */
|
|
169
|
+
--code-box-header-height: 60px; /* Approximate header height (tabs + title) */
|
|
170
|
+
--code-box-padding: 32px; /* 16px top + 16px bottom */
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
/* ===== PULSAR THEME TYPOGRAPHY STYLES ===== */
|
|
175
|
+
|
|
176
|
+
/* Prose body */
|
|
177
|
+
.prose {
|
|
178
|
+
font-family: 'Inter', sans-serif;
|
|
179
|
+
font-size: var(--prose-body-size);
|
|
180
|
+
line-height: var(--prose-body-line-height);
|
|
181
|
+
font-weight: var(--prose-body-weight);
|
|
182
|
+
letter-spacing: var(--prose-body-tracking);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* Prose headings */
|
|
186
|
+
.prose h1,
|
|
187
|
+
h1 {
|
|
188
|
+
font-size: var(--prose-h1-size);
|
|
189
|
+
line-height: var(--prose-h1-line-height);
|
|
190
|
+
font-weight: var(--prose-h1-weight);
|
|
191
|
+
letter-spacing: var(--prose-h1-tracking);
|
|
192
|
+
color: var(--color-text-primary);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.prose h2 {
|
|
196
|
+
font-size: var(--prose-h2-size);
|
|
197
|
+
line-height: var(--prose-h2-line-height);
|
|
198
|
+
font-weight: var(--prose-h2-weight);
|
|
199
|
+
letter-spacing: var(--prose-h2-tracking);
|
|
200
|
+
color: var(--color-text-primary);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.prose h3 {
|
|
204
|
+
font-size: var(--prose-h3-size);
|
|
205
|
+
line-height: var(--prose-h3-line-height);
|
|
206
|
+
font-weight: var(--prose-h3-weight);
|
|
207
|
+
letter-spacing: var(--prose-h3-tracking);
|
|
208
|
+
color: var(--color-text-primary);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.prose h4 {
|
|
212
|
+
font-size: var(--prose-h4-size);
|
|
213
|
+
line-height: var(--prose-h4-line-height);
|
|
214
|
+
font-weight: var(--prose-h4-weight);
|
|
215
|
+
letter-spacing: var(--prose-h4-tracking);
|
|
216
|
+
color: var(--color-text-primary);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* Pulsar inline code styling */
|
|
220
|
+
.prose code:not([class*="language-"]) {
|
|
221
|
+
background-color: var(--color-code-bg);
|
|
222
|
+
color: var(--color-code-text);
|
|
223
|
+
padding: 0.125rem 0.375rem;
|
|
224
|
+
border-radius: var(--radius-sm);
|
|
225
|
+
font-family: 'JetBrains Mono', monospace;
|
|
226
|
+
font-size: var(--code-inline-size);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/* Pulsar code block styling - adds border to match other UI elements */
|
|
230
|
+
.prose pre.shiki {
|
|
231
|
+
border: 0.5px solid var(--color-border);
|
|
232
|
+
background-color: var(--color-code-bg);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/* Navigation anchor styling for Pulsar theme */
|
|
236
|
+
[data-nav-anchor] {
|
|
237
|
+
padding: 0 0 8px 0;
|
|
238
|
+
position: relative;
|
|
239
|
+
margin-left: 24px;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
[data-nav-anchor]:first-of-type {
|
|
243
|
+
margin-top: 0;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
[data-nav-anchor]::before {
|
|
247
|
+
content: '';
|
|
248
|
+
position: absolute;
|
|
249
|
+
top: -8px;
|
|
250
|
+
left: -12px;
|
|
251
|
+
right: 24px;
|
|
252
|
+
bottom: 8px;
|
|
253
|
+
border-radius: var(--radius-md);
|
|
254
|
+
background-color: transparent;
|
|
255
|
+
transition: background-color 0.2s;
|
|
256
|
+
z-index: -1;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
[data-nav-anchor][data-active="false"]:hover::before {
|
|
260
|
+
background-color: var(--color-bg-tertiary);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Active nav anchor icons use solid variant for visual emphasis */
|
|
264
|
+
[data-nav-anchor][data-active="true"] [class*="fa-"]:not(.fa-brands) {
|
|
265
|
+
font-weight: 900 !important;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* Navigation page link styling for Pulsar theme */
|
|
269
|
+
/* Uses left border line style matching TOC: border-l-2 -ml-px on links */
|
|
270
|
+
/* Link border overlaps container's 1px border (container has padding-left: 12px) */
|
|
271
|
+
.sidebar-scroll ul li a {
|
|
272
|
+
position: relative;
|
|
273
|
+
font-weight: var(--nav-page-weight) !important;
|
|
274
|
+
border-left: 2px solid transparent;
|
|
275
|
+
border-radius: 0 !important; /* Ensure straight border line, no curves */
|
|
276
|
+
margin-left: -13px; /* Pull back 12px padding + 1px to overlap border */
|
|
277
|
+
padding-left: 11px; /* Restore visual spacing (13px - 2px border = 11px) */
|
|
278
|
+
transition: border-color 0.2s, color 0.2s;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Group headers - no border styling, straight edges for border-left line */
|
|
282
|
+
.sidebar-scroll .nav-group-l1 {
|
|
283
|
+
position: relative;
|
|
284
|
+
font-weight: var(--nav-page-weight) !important;
|
|
285
|
+
border-radius: 0 !important;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/* Active nav links - primary color border and text */
|
|
289
|
+
.sidebar-scroll ul li a.nav-active {
|
|
290
|
+
font-weight: var(--nav-page-active-weight) !important;
|
|
291
|
+
border-left-color: var(--color-primary) !important;
|
|
292
|
+
color: var(--color-primary) !important;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/* Hover state - show border line (links only) */
|
|
296
|
+
.sidebar-scroll ul li a:hover:not(.nav-active) {
|
|
297
|
+
border-left-color: var(--color-border-hover);
|
|
298
|
+
color: var(--color-text-primary);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* Tab nav links - match sidebar nav border-radius (no rounding) */
|
|
302
|
+
body[data-theme="pulsar"] .nav-tab-link {
|
|
303
|
+
border-radius: 0 !important;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/* Horizontal rule (divider) styling for Pulsar theme */
|
|
307
|
+
.prose hr,
|
|
308
|
+
hr {
|
|
309
|
+
border: none;
|
|
310
|
+
border-top: var(--border-width) solid var(--color-border);
|
|
311
|
+
margin: 2rem 0;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/* Hide divider under anchors in sidebar and add spacing */
|
|
315
|
+
.sidebar-scroll nav > .mx-4.border-t {
|
|
316
|
+
display: none;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/* Add spacing below anchors since divider is hidden */
|
|
320
|
+
.sidebar-scroll nav > .flex.flex-col.gap-1.px-4.pt-4 {
|
|
321
|
+
padding-bottom: 2rem;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/* Pulsar theme: smaller, more rounded theme toggle (desktop) */
|
|
325
|
+
@media (min-width: 1024px) {
|
|
326
|
+
[data-theme-toggle] {
|
|
327
|
+
gap: 1px !important;
|
|
328
|
+
padding: 1px !important;
|
|
329
|
+
border-radius: 9999px !important;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
[data-theme-toggle] button {
|
|
333
|
+
width: 16px !important;
|
|
334
|
+
height: 16px !important;
|
|
335
|
+
padding: 0 !important;
|
|
336
|
+
display: flex !important;
|
|
337
|
+
align-items: center !important;
|
|
338
|
+
justify-content: center !important;
|
|
339
|
+
border-radius: 9999px !important;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
[data-theme-toggle] button i {
|
|
343
|
+
font-size: 8px !important;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/* Mobile sidebar uses ThemeToggleCycle (single icon button) - no overrides needed */
|
|
348
|
+
|
|
349
|
+
.dark {
|
|
350
|
+
/* Dark theme colors */
|
|
351
|
+
--color-bg-primary: #0F0B0B;
|
|
352
|
+
--color-bg-secondary: #18181b;
|
|
353
|
+
--color-bg-tertiary: #27272a;
|
|
354
|
+
--color-bg-hover: #475569;
|
|
355
|
+
|
|
356
|
+
--color-border: #334155;
|
|
357
|
+
--color-border-hover: #475569;
|
|
358
|
+
--border-width: 0.5px;
|
|
359
|
+
|
|
360
|
+
--color-text-primary: #ffffff;
|
|
361
|
+
--color-text-secondary: #b8bbbe;
|
|
362
|
+
--color-text-tertiary: #8a8d90;
|
|
363
|
+
--color-text-muted: #6a6d70;
|
|
364
|
+
--color-marker: #64748b;
|
|
365
|
+
|
|
366
|
+
--color-accent: #3b82f6;
|
|
367
|
+
--color-accent-hover: #60a5fa;
|
|
368
|
+
--color-accent-light: #1e3a5f;
|
|
369
|
+
--color-accent-text: #93c5fd;
|
|
370
|
+
|
|
371
|
+
/* Code block colors - dark */
|
|
372
|
+
--color-code-bg: #0f172a;
|
|
373
|
+
--color-code-border: var(--color-border);
|
|
374
|
+
--color-code-text: #e2e8f0;
|
|
375
|
+
|
|
376
|
+
/* Note callout colors - dark (blue) */
|
|
377
|
+
--color-note-bg: rgba(59, 130, 246, 0.1);
|
|
378
|
+
--color-note-border: rgba(59, 130, 246, 0.3);
|
|
379
|
+
--color-note-text: #93c5fd;
|
|
380
|
+
|
|
381
|
+
/* Info callout colors - dark (grey) */
|
|
382
|
+
--color-info-bg: rgba(255, 255, 255, 0.05);
|
|
383
|
+
--color-info-border: rgba(255, 255, 255, 0.15);
|
|
384
|
+
--color-info-text: #e5e5e5;
|
|
385
|
+
|
|
386
|
+
--color-warning-bg: rgba(251, 191, 36, 0.1);
|
|
387
|
+
--color-warning-border: rgba(251, 191, 36, 0.3);
|
|
388
|
+
--color-warning-text: #fde68a;
|
|
389
|
+
|
|
390
|
+
--color-error-bg: rgba(239, 68, 68, 0.1);
|
|
391
|
+
--color-error-border: rgba(239, 68, 68, 0.3);
|
|
392
|
+
--color-error-text: #fca5a5;
|
|
393
|
+
|
|
394
|
+
--color-success-bg: rgba(34, 197, 94, 0.1);
|
|
395
|
+
--color-success-border: rgba(34, 197, 94, 0.3);
|
|
396
|
+
--color-success-text: #86efac;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/* ===== CODE PANELS SIDEBAR STYLING ===== */
|
|
400
|
+
|
|
401
|
+
/*
|
|
402
|
+
* Code boxes dynamically size to their content:
|
|
403
|
+
* - Size to content up to 25 lines max, then scroll internally
|
|
404
|
+
* - When viewport shrinks, bottom panel shrinks first (to 5 lines min), then top
|
|
405
|
+
* - Sidebar container doesn't scroll - each panel handles its own scrolling
|
|
406
|
+
*/
|
|
407
|
+
.code-panels-sidebar {
|
|
408
|
+
overflow-y: hidden !important;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/* Code boxes in sidebar use dynamic heights controlled by JS */
|
|
412
|
+
.code-panels-sidebar [data-code-panel] {
|
|
413
|
+
flex: 0 0 auto !important;
|
|
414
|
+
/* Allow internal scrolling when content exceeds panel height */
|
|
415
|
+
overflow: hidden !important;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/* Code content area scrolls when content exceeds visible height */
|
|
419
|
+
/* Background must match code panel bg so scrollbar area blends in */
|
|
420
|
+
.code-panels-sidebar [data-code-panel] > div[class*="grid"] {
|
|
421
|
+
padding-bottom: 0 !important;
|
|
422
|
+
margin-bottom: 0 !important;
|
|
423
|
+
background-color: var(--code-panel-bg, #0d1117) !important;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/* Consistent 16px padding on all sides */
|
|
427
|
+
.code-panels-sidebar [data-code-panel] pre {
|
|
428
|
+
padding: 16px !important;
|
|
429
|
+
margin-bottom: 0 !important;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.code-panels-sidebar [data-code-panel] pre.shiki {
|
|
433
|
+
padding: 16px !important;
|
|
434
|
+
margin-bottom: 0 !important;
|
|
435
|
+
/* Let parent grid container control background so scrollbar area matches */
|
|
436
|
+
background: transparent !important;
|
|
437
|
+
background-color: transparent !important;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/* Hide native scrollbar on tabs container - using custom scrollbar instead */
|
|
441
|
+
.code-panels-sidebar [data-code-panel] .code-panel-tabs-scroll {
|
|
442
|
+
scrollbar-width: none; /* Firefox */
|
|
443
|
+
-ms-overflow-style: none; /* IE/Edge */
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.code-panels-sidebar [data-code-panel] .code-panel-tabs-scroll::-webkit-scrollbar {
|
|
447
|
+
display: none; /* Chrome/Safari */
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/* Transparent scrollbar background in code panels */
|
|
451
|
+
.code-panels-sidebar [data-code-panel] ::-webkit-scrollbar {
|
|
452
|
+
width: 8px;
|
|
453
|
+
height: 8px;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
.code-panels-sidebar [data-code-panel] ::-webkit-scrollbar-track {
|
|
457
|
+
background: transparent;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.code-panels-sidebar [data-code-panel] ::-webkit-scrollbar-thumb {
|
|
461
|
+
background: rgba(255, 255, 255, 0.2);
|
|
462
|
+
border-radius: var(--radius-sm);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.code-panels-sidebar [data-code-panel] ::-webkit-scrollbar-thumb:hover {
|
|
466
|
+
background: rgba(255, 255, 255, 0.3);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/* Firefox scrollbar styling */
|
|
470
|
+
.code-panels-sidebar [data-code-panel] * {
|
|
471
|
+
scrollbar-width: thin;
|
|
472
|
+
scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/* ===== PULSAR THEME SIDEBAR ===== */
|
|
476
|
+
|
|
477
|
+
/* Add subtle border between sidebar and main content */
|
|
478
|
+
aside {
|
|
479
|
+
border-right: 0.5px solid var(--color-border) !important;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/* Reduce whitespace in nav section */
|
|
483
|
+
.sidebar-scroll nav {
|
|
484
|
+
padding-top: 8px !important;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
.sidebar-scroll nav > div:first-child {
|
|
488
|
+
padding-top: 0 !important;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/* Vertical spacing between sidebar navigation items - all levels */
|
|
492
|
+
.sidebar-scroll .sidebar-nav-groups {
|
|
493
|
+
display: flex !important;
|
|
494
|
+
flex-direction: column !important;
|
|
495
|
+
gap: var(--sidebar-item-spacing) !important;
|
|
496
|
+
padding-top: 0 !important;
|
|
497
|
+
padding-bottom: 2rem !important;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.sidebar-scroll .sidebar-nav-groups > div {
|
|
501
|
+
display: flex !important;
|
|
502
|
+
flex-direction: column !important;
|
|
503
|
+
gap: var(--sidebar-item-spacing) !important;
|
|
504
|
+
margin-top: 24px !important;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.sidebar-scroll .sidebar-nav-groups > div:first-child {
|
|
508
|
+
margin-top: 0 !important;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/* Sidebar positioning - full height from top with left padding for symmetry */
|
|
512
|
+
@media (min-width: 1024px) {
|
|
513
|
+
.sidebar-scroll {
|
|
514
|
+
top: 0 !important;
|
|
515
|
+
height: 100vh !important;
|
|
516
|
+
padding-left: 1rem !important;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/* Add space after logo to align search/nav with breadcrumbs and TOC */
|
|
520
|
+
body[data-theme="pulsar"] .sidebar-scroll > div:first-child {
|
|
521
|
+
margin-bottom: 0.75rem !important;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
.sidebar-scroll ul {
|
|
526
|
+
display: flex !important;
|
|
527
|
+
flex-direction: column !important;
|
|
528
|
+
gap: var(--sidebar-item-spacing) !important;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/* Border on ul elements - consecutive pages are grouped into single ul */
|
|
532
|
+
/* Border aligns with the start of group name text */
|
|
533
|
+
/* Pseudo-element extends border down to cover gap to next element */
|
|
534
|
+
.sidebar-scroll .sidebar-nav-groups ul {
|
|
535
|
+
position: relative;
|
|
536
|
+
border-left: 1px solid var(--color-border);
|
|
537
|
+
padding-left: 12px;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.sidebar-scroll .sidebar-nav-groups ul::after {
|
|
541
|
+
content: '';
|
|
542
|
+
position: absolute;
|
|
543
|
+
left: -1px;
|
|
544
|
+
bottom: 0;
|
|
545
|
+
width: 1px;
|
|
546
|
+
height: var(--sidebar-item-spacing);
|
|
547
|
+
background-color: var(--color-border);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* Last ul before a level 0 group should not extend (no next sibling in same group) */
|
|
551
|
+
.sidebar-scroll .sidebar-nav-groups > div > div > ul:last-child::after {
|
|
552
|
+
display: none;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/* Level 1 nested group headers get border to connect with elements above/below */
|
|
556
|
+
/* Pseudo-elements extend border up and down to cover gaps */
|
|
557
|
+
.sidebar-scroll .sidebar-nav-groups .nav-group-l1 {
|
|
558
|
+
position: relative;
|
|
559
|
+
border-left: 1px solid var(--color-border);
|
|
560
|
+
margin-left: 0;
|
|
561
|
+
padding-left: 12px;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
.sidebar-scroll .sidebar-nav-groups .nav-group-l1::before {
|
|
565
|
+
content: '';
|
|
566
|
+
position: absolute;
|
|
567
|
+
left: -1px;
|
|
568
|
+
top: calc(var(--sidebar-item-spacing) * -1);
|
|
569
|
+
width: 1px;
|
|
570
|
+
height: var(--sidebar-item-spacing);
|
|
571
|
+
background-color: var(--color-border);
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.sidebar-scroll .sidebar-nav-groups .nav-group-l1::after {
|
|
575
|
+
content: '';
|
|
576
|
+
position: absolute;
|
|
577
|
+
left: -1px;
|
|
578
|
+
bottom: 0;
|
|
579
|
+
width: 1px;
|
|
580
|
+
height: var(--sidebar-item-spacing);
|
|
581
|
+
background-color: var(--color-border);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/* Last nav-group-l1 in a group should not extend down */
|
|
585
|
+
.sidebar-scroll .sidebar-nav-groups > div > div > div:last-child .nav-group-l1::after {
|
|
586
|
+
display: none;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/* Nested group containers */
|
|
590
|
+
.sidebar-scroll nav div div {
|
|
591
|
+
display: flex !important;
|
|
592
|
+
flex-direction: column !important;
|
|
593
|
+
gap: var(--sidebar-item-spacing) !important;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/* ===== PULSAR THEME DEFAULT ICON STYLE ===== */
|
|
597
|
+
/*
|
|
598
|
+
* The pulsar theme uses FontAwesome light variant (fa-light) by default.
|
|
599
|
+
* This gives icons a thinner, more refined appearance.
|
|
600
|
+
*
|
|
601
|
+
* FontAwesome uses font-weight to switch variants:
|
|
602
|
+
* - fa-light: font-weight: 300
|
|
603
|
+
* - fa-regular: font-weight: 400
|
|
604
|
+
* - fa-solid: font-weight: 900
|
|
605
|
+
*
|
|
606
|
+
* Excludes brand icons (.fa-brands) which have their own fixed styling.
|
|
607
|
+
*/
|
|
608
|
+
[class*="fa-"]:not(.fa-brands) {
|
|
609
|
+
font-weight: 300 !important;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/* ===== PULSAR THEME API PARAMETER STYLING ===== */
|
|
613
|
+
|
|
614
|
+
/*
|
|
615
|
+
* Parameter fields in API documentation:
|
|
616
|
+
* - Parameter name: plain monospace text (no badge)
|
|
617
|
+
* - Type (String, integer, etc): styled badge
|
|
618
|
+
* - Required indicator: styled badge with distinct color
|
|
619
|
+
*/
|
|
620
|
+
|
|
621
|
+
/* Parameter name - plain text, no badge styling */
|
|
622
|
+
.param-name {
|
|
623
|
+
background: transparent !important;
|
|
624
|
+
background-color: transparent !important;
|
|
625
|
+
border: none !important;
|
|
626
|
+
padding: 0 !important;
|
|
627
|
+
font-size: 14px;
|
|
628
|
+
font-weight: 600;
|
|
629
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
630
|
+
color: var(--color-text-primary);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/* Type badge styling - subtle gray background */
|
|
634
|
+
.param-type-badge {
|
|
635
|
+
display: inline-flex;
|
|
636
|
+
align-items: center;
|
|
637
|
+
padding: 2px 8px;
|
|
638
|
+
font-size: 11px;
|
|
639
|
+
font-weight: 500;
|
|
640
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
641
|
+
border-radius: var(--radius-sm);
|
|
642
|
+
background-color: var(--color-bg-tertiary);
|
|
643
|
+
color: var(--color-text-muted);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
/* Required badge styling - red tint to indicate importance */
|
|
647
|
+
.param-required-badge {
|
|
648
|
+
display: inline-flex;
|
|
649
|
+
align-items: center;
|
|
650
|
+
padding: 2px 8px;
|
|
651
|
+
font-size: 11px;
|
|
652
|
+
font-weight: 500;
|
|
653
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
654
|
+
border-radius: var(--radius-sm);
|
|
655
|
+
background-color: rgba(239, 68, 68, 0.1);
|
|
656
|
+
color: #ef4444;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.dark .param-type-badge {
|
|
660
|
+
background-color: var(--color-bg-tertiary);
|
|
661
|
+
color: var(--color-text-secondary);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
.dark .param-required-badge {
|
|
665
|
+
background-color: rgba(239, 68, 68, 0.15);
|
|
666
|
+
color: #f87171;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
/* Parameter divider - thin 0.5px border matching top nav */
|
|
670
|
+
.param-divider {
|
|
671
|
+
border-bottom: 0.5px solid var(--color-border);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
.param-divider:last-child {
|
|
675
|
+
border-bottom: none;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/* ===== PULSAR THEME BUTTON STYLING ===== */
|
|
679
|
+
/*
|
|
680
|
+
* Buttons in the Pulsar theme use the primary color from docs.json
|
|
681
|
+
* instead of the default accent color.
|
|
682
|
+
*/
|
|
683
|
+
|
|
684
|
+
/* Primary buttons - solid background */
|
|
685
|
+
button[class*="bg-[var(--color-accent)]"],
|
|
686
|
+
a[class*="bg-[var(--color-accent)]"] {
|
|
687
|
+
background-color: var(--color-primary) !important;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
/* Button hover states */
|
|
691
|
+
button[class*="bg-[var(--color-accent)]"]:hover,
|
|
692
|
+
a[class*="bg-[var(--color-accent)]"]:hover {
|
|
693
|
+
opacity: 0.9;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
/* ===== PULSAR THEME TAB ACTIVE INDICATOR ===== */
|
|
697
|
+
/* Active tab underline uses primary color */
|
|
698
|
+
header nav span[class*="bg-[var(--color-accent)]"] {
|
|
699
|
+
background-color: var(--color-primary) !important;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/* ===== PULSAR THEME CODE PANEL ALIGNMENT ===== */
|
|
703
|
+
/* Align code panel right edge with header content edge */
|
|
704
|
+
@media (min-width: 1024px) {
|
|
705
|
+
.code-panels-sidebar {
|
|
706
|
+
width: 460px !important;
|
|
707
|
+
padding-right: 16px;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
/* ===== PULSAR THEME MEDIA STYLING ===== */
|
|
712
|
+
/* Remove border, padding, and rounded corners from images and videos */
|
|
713
|
+
.prose img,
|
|
714
|
+
.prose video {
|
|
715
|
+
border: none !important;
|
|
716
|
+
border-radius: 0 !important;
|
|
717
|
+
padding: 0 !important;
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
/* ===== PULSAR THEME HTTP METHOD BADGES ===== */
|
|
721
|
+
/* Pill-shaped badges for GET/POST/PUT/PATCH/DELETE in sidebar nav */
|
|
722
|
+
.sidebar-scroll a > span.w-12.text-center {
|
|
723
|
+
border-radius: 9999px !important;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
/* ===== PULSAR FULL-WIDTH LAYOUT ===== */
|
|
727
|
+
/*
|
|
728
|
+
* Full-browser-width layout:
|
|
729
|
+
* - Left sidebar fixed to left edge (already done via sidebar-scroll)
|
|
730
|
+
* - Content centered at 780px max-width
|
|
731
|
+
* - Right column (TOC/code panels) fixed to right edge
|
|
732
|
+
*
|
|
733
|
+
* This creates a layout where all three columns are edge-anchored,
|
|
734
|
+
* with natural spacing that grows on ultra-wide screens.
|
|
735
|
+
*
|
|
736
|
+
* We target existing DOM elements using specific selectors rather than
|
|
737
|
+
* adding new classes, making this a CSS-only change.
|
|
738
|
+
*/
|
|
739
|
+
|
|
740
|
+
/* Hide header on desktop only when it has no tabs - Pulsar uses sidebar-logo layout so header only has hamburger on mobile */
|
|
741
|
+
@media (min-width: 1024px) {
|
|
742
|
+
body[data-theme="pulsar"] header[data-has-tabs="false"] {
|
|
743
|
+
display: none !important;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/* Header full-width - for mobile view where header is still shown */
|
|
748
|
+
body[data-theme="pulsar"] header > div {
|
|
749
|
+
max-width: none !important;
|
|
750
|
+
margin: 0 24px !important;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
/* Hide theme toggle in header - it's in the sidebar for Pulsar */
|
|
754
|
+
body[data-theme="pulsar"] header [data-theme-toggle] {
|
|
755
|
+
display: none !important;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
/* Desktop xl+ layout - three columns edge-anchored */
|
|
759
|
+
@media (min-width: 1280px) {
|
|
760
|
+
/*
|
|
761
|
+
* Content scroll container - center content within it
|
|
762
|
+
* Targets: #content-scroll-container in page.tsx, ApiPage.tsx, PanelWrapper.tsx
|
|
763
|
+
*/
|
|
764
|
+
body[data-theme="pulsar"] #content-scroll-container {
|
|
765
|
+
display: flex;
|
|
766
|
+
justify-content: center;
|
|
767
|
+
/* Hide scrollbar but keep scrollable */
|
|
768
|
+
scrollbar-width: none; /* Firefox */
|
|
769
|
+
-ms-overflow-style: none; /* IE/Edge */
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
body[data-theme="pulsar"] #content-scroll-container::-webkit-scrollbar {
|
|
773
|
+
display: none; /* Chrome, Safari, Opera */
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/*
|
|
777
|
+
* Article content - constrain to max-width
|
|
778
|
+
* The article is the direct child of the scroll container
|
|
779
|
+
*/
|
|
780
|
+
body[data-theme="pulsar"] #content-scroll-container > article,
|
|
781
|
+
body[data-theme="pulsar"] #content-scroll-container > .api-page-layout {
|
|
782
|
+
max-width: var(--content-max-width, 780px);
|
|
783
|
+
width: 100%;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
/*
|
|
787
|
+
* TOC sidebar - fixed to right edge
|
|
788
|
+
* Targets: the aside.toc-scroll in page.tsx and PanelWrapper.tsx
|
|
789
|
+
* Overrides Tailwind: hidden xl:block w-72 flex-shrink-0 xl:h-full xl:overflow-y-auto xl:ml-0.5 pr-2
|
|
790
|
+
*/
|
|
791
|
+
body[data-theme="pulsar"] #main-content > div.flex > aside.toc-scroll,
|
|
792
|
+
body[data-theme="pulsar"] aside.toc-scroll {
|
|
793
|
+
position: fixed !important;
|
|
794
|
+
right: 0 !important;
|
|
795
|
+
top: 57px !important; /* Below header */
|
|
796
|
+
height: calc(100vh - 57px) !important;
|
|
797
|
+
width: var(--right-column-width, 288px) !important;
|
|
798
|
+
z-index: 30;
|
|
799
|
+
background-color: var(--color-bg-primary);
|
|
800
|
+
padding: 0 1rem 0 0.5rem; /* No vertical padding - inner div handles it */
|
|
801
|
+
margin-left: 0 !important;
|
|
802
|
+
overflow-y: auto;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
/*
|
|
807
|
+
* Code panels sidebar - fixed to right edge (wider)
|
|
808
|
+
* Targets: .code-panels-sidebar in ApiPage.tsx
|
|
809
|
+
* Overrides Tailwind: lg:ml-0.5
|
|
810
|
+
*/
|
|
811
|
+
body[data-theme="pulsar"] .code-panels-sidebar {
|
|
812
|
+
position: fixed !important;
|
|
813
|
+
right: 0 !important;
|
|
814
|
+
top: 0 !important; /* Start at top when header is hidden */
|
|
815
|
+
height: 100vh !important;
|
|
816
|
+
width: var(--code-panels-width, 460px) !important;
|
|
817
|
+
z-index: 30;
|
|
818
|
+
background-color: var(--color-bg-primary);
|
|
819
|
+
margin-left: 0 !important;
|
|
820
|
+
overflow-y: auto;
|
|
821
|
+
box-sizing: border-box;
|
|
822
|
+
padding: 2.5rem 1rem 1rem 0; /* Match article py-10, align right edge with TOC */
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
/* When header has tabs (visible), push code panels down */
|
|
826
|
+
body[data-theme="pulsar"]:has(header[data-has-tabs="true"]) .code-panels-sidebar {
|
|
827
|
+
top: 57px !important; /* Header height */
|
|
828
|
+
height: calc(100vh - 57px) !important;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
/*
|
|
832
|
+
* Panel sidebar content wrapper - fixed positioning
|
|
833
|
+
* Targets: .panel-sidebar in PanelWrapper.tsx
|
|
834
|
+
*/
|
|
835
|
+
body[data-theme="pulsar"] .panel-sidebar {
|
|
836
|
+
position: fixed !important;
|
|
837
|
+
right: 0 !important;
|
|
838
|
+
top: 0 !important;
|
|
839
|
+
height: 100vh !important;
|
|
840
|
+
width: var(--right-column-width, 288px) !important;
|
|
841
|
+
z-index: 30;
|
|
842
|
+
background-color: var(--color-bg-primary);
|
|
843
|
+
overflow-y: auto;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
/* When header has tabs (visible), push panel sidebar down */
|
|
847
|
+
body[data-theme="pulsar"]:has(header[data-has-tabs="true"]) .panel-sidebar {
|
|
848
|
+
top: 57px !important; /* Header height */
|
|
849
|
+
height: calc(100vh - 57px) !important;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
/*
|
|
853
|
+
* Reserve space for fixed right column
|
|
854
|
+
* The parent flex container needs padding to prevent content overlapping fixed columns
|
|
855
|
+
* Use :has() to only add padding when the right column actually exists
|
|
856
|
+
*/
|
|
857
|
+
|
|
858
|
+
/* TOC pages: add padding when aside.toc-scroll exists */
|
|
859
|
+
body[data-theme="pulsar"] #main-content > div.flex:has(aside.toc-scroll) {
|
|
860
|
+
padding-right: var(--right-column-width, 288px);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
/* API pages: add padding for wider code panels */
|
|
864
|
+
body[data-theme="pulsar"] #main-content > div.flex:has(.code-panels-sidebar) {
|
|
865
|
+
padding-right: var(--code-panels-width, 460px);
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
/* Panel pages: add padding when .panel-sidebar exists */
|
|
869
|
+
body[data-theme="pulsar"] #main-content > div.flex:has(.panel-sidebar) {
|
|
870
|
+
padding-right: var(--right-column-width, 288px);
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/* ===== PULSAR MOBILE RESPONSIVE STYLES ===== */
|
|
875
|
+
|
|
876
|
+
/* Phase 1: Responsive Typography */
|
|
877
|
+
@media (max-width: 639px) {
|
|
878
|
+
:root {
|
|
879
|
+
--prose-h1-size: 24px;
|
|
880
|
+
--prose-h2-size: 20px;
|
|
881
|
+
--prose-h3-size: 18px;
|
|
882
|
+
--prose-h4-size: 16px;
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
@media (min-width: 640px) and (max-width: 1023px) {
|
|
887
|
+
:root {
|
|
888
|
+
--prose-h1-size: 27px;
|
|
889
|
+
--prose-h2-size: 22px;
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/* Phase 2: Header Responsive Margins */
|
|
894
|
+
@media (max-width: 639px) {
|
|
895
|
+
body[data-theme="pulsar"] header > div {
|
|
896
|
+
margin: 0 16px !important;
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
/* Phase 3: Touch Targets for Sidebar */
|
|
901
|
+
@media (max-width: 1023px) {
|
|
902
|
+
:root {
|
|
903
|
+
--sidebar-item-spacing: 6px;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.sidebar-scroll ul li a {
|
|
907
|
+
padding-top: 10px !important;
|
|
908
|
+
padding-bottom: 10px !important;
|
|
909
|
+
min-height: 44px;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
.sidebar-scroll .nav-group-l1 {
|
|
913
|
+
padding-top: 10px !important;
|
|
914
|
+
padding-bottom: 10px !important;
|
|
915
|
+
min-height: 44px;
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
/* Phase 4: API Parameter Overflow */
|
|
920
|
+
@media (max-width: 639px) {
|
|
921
|
+
.param-name {
|
|
922
|
+
font-size: 13px;
|
|
923
|
+
word-break: break-word;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
.param-type-badge,
|
|
927
|
+
.param-required-badge {
|
|
928
|
+
font-size: 10px;
|
|
929
|
+
padding: 1px 6px;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
/* Reduce nesting indent on mobile */
|
|
933
|
+
.pl-4.border-l-2 {
|
|
934
|
+
padding-left: 12px !important;
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
/* Phase 6: Tablet Layout Adjustments */
|
|
939
|
+
@media (min-width: 768px) and (max-width: 1279px) {
|
|
940
|
+
body[data-theme="pulsar"] {
|
|
941
|
+
--content-max-width: 680px;
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
/* ===== PULSAR TABLET CODE PANELS (1024-1279px) ===== */
|
|
946
|
+
/* Between lg and xl breakpoints, Pulsar keeps code panels inline (like mobile)
|
|
947
|
+
* because the fixed three-column layout only works at xl (1280px)+.
|
|
948
|
+
* The JS in ApiPage.tsx uses 1280px breakpoint for Pulsar theme. */
|
|
949
|
+
@media (min-width: 1024px) and (max-width: 1279px) {
|
|
950
|
+
/* Hide the empty sidebar container */
|
|
951
|
+
body[data-theme="pulsar"] .code-panels-sidebar {
|
|
952
|
+
display: none !important;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
/* Override base.css which hides prose panels at lg+ - Pulsar shows them until xl */
|
|
956
|
+
body[data-theme="pulsar"] .api-page-layout .prose [data-code-panel] {
|
|
957
|
+
display: flex !important;
|
|
958
|
+
flex-direction: column;
|
|
959
|
+
margin-top: 1rem;
|
|
960
|
+
margin-bottom: 1rem;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
/* Use flexbox ordering to position panels after endpoint badge (match mobile) */
|
|
964
|
+
body[data-theme="pulsar"] .api-page-layout .prose {
|
|
965
|
+
display: flex;
|
|
966
|
+
flex-direction: column;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
body[data-theme="pulsar"] .api-page-layout .prose > [data-api-endpoint] {
|
|
970
|
+
order: 0;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
body[data-theme="pulsar"] .api-page-layout .prose > [data-code-panel] {
|
|
974
|
+
order: 1;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
body[data-theme="pulsar"] .api-page-layout .prose > * {
|
|
978
|
+
order: 2;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
body[data-theme="pulsar"] .api-page-layout .prose > .openapi-endpoint {
|
|
982
|
+
order: 0;
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/* Mobile safe area and background fixes */
|
|
987
|
+
@media (max-width: 1023px) {
|
|
988
|
+
/* Ensure html/body have correct background on mobile */
|
|
989
|
+
html,
|
|
990
|
+
body[data-theme="pulsar"] {
|
|
991
|
+
background-color: var(--color-bg-primary);
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
/* Extend sidebar to cover safe area at top */
|
|
995
|
+
body[data-theme="pulsar"] .sidebar-scroll {
|
|
996
|
+
padding-top: env(safe-area-inset-top, 0);
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
/* Make header fully opaque on mobile (no transparency showing through) */
|
|
1000
|
+
body[data-theme="pulsar"] header {
|
|
1001
|
+
background-color: var(--color-bg-primary) !important;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
/* Ensure content area starts at top with no gap */
|
|
1005
|
+
body[data-theme="pulsar"] > div {
|
|
1006
|
+
min-height: 100vh;
|
|
1007
|
+
min-height: 100dvh; /* Dynamic viewport height for mobile browsers */
|
|
1008
|
+
}
|
|
1009
|
+
}
|