doccupine 0.0.89 → 0.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/index.js +127 -1
- package/dist/templates/components/layout/Button.d.ts +1 -1
- package/dist/templates/components/layout/Button.js +9 -0
- package/dist/templates/components/layout/Footer.d.ts +1 -1
- package/dist/templates/components/layout/Footer.js +1 -1
- package/dist/templates/llms/llmsFull.d.ts +12 -0
- package/dist/templates/llms/llmsFull.js +59 -0
- package/dist/templates/llms/llmsIndex.d.ts +9 -0
- package/dist/templates/llms/llmsIndex.js +105 -0
- package/dist/templates/llms/llmsPage.d.ts +2 -0
- package/dist/templates/llms/llmsPage.js +20 -0
- package/dist/templates/mdx/accordion.mdx.d.ts +1 -1
- package/dist/templates/mdx/accordion.mdx.js +21 -16
- package/dist/templates/mdx/ai-assistant.mdx.d.ts +1 -1
- package/dist/templates/mdx/ai-assistant.mdx.js +22 -5
- package/dist/templates/mdx/analytics.mdx.d.ts +1 -1
- package/dist/templates/mdx/analytics.mdx.js +15 -4
- package/dist/templates/mdx/buttons.mdx.d.ts +1 -1
- package/dist/templates/mdx/buttons.mdx.js +10 -2
- package/dist/templates/mdx/callouts.mdx.d.ts +1 -1
- package/dist/templates/mdx/callouts.mdx.js +10 -17
- package/dist/templates/mdx/cards.mdx.d.ts +1 -1
- package/dist/templates/mdx/cards.mdx.js +10 -5
- package/dist/templates/mdx/code.mdx.d.ts +1 -1
- package/dist/templates/mdx/code.mdx.js +7 -3
- package/dist/templates/mdx/color-swatches.mdx.d.ts +1 -1
- package/dist/templates/mdx/color-swatches.mdx.js +7 -4
- package/dist/templates/mdx/columns.mdx.d.ts +1 -1
- package/dist/templates/mdx/columns.mdx.js +3 -0
- package/dist/templates/mdx/commands.mdx.d.ts +1 -1
- package/dist/templates/mdx/commands.mdx.js +7 -4
- package/dist/templates/mdx/components.mdx.d.ts +1 -1
- package/dist/templates/mdx/components.mdx.js +1 -0
- package/dist/templates/mdx/deployment-and-hosting.mdx.d.ts +1 -1
- package/dist/templates/mdx/deployment-and-hosting.mdx.js +6 -0
- package/dist/templates/mdx/fields.mdx.d.ts +1 -1
- package/dist/templates/mdx/fields.mdx.js +3 -0
- package/dist/templates/mdx/fonts.mdx.d.ts +1 -1
- package/dist/templates/mdx/fonts.mdx.js +13 -2
- package/dist/templates/mdx/footer-links.mdx.d.ts +1 -1
- package/dist/templates/mdx/footer-links.mdx.js +5 -0
- package/dist/templates/mdx/globals.mdx.d.ts +1 -1
- package/dist/templates/mdx/globals.mdx.js +16 -13
- package/dist/templates/mdx/headers-and-text.mdx.d.ts +1 -1
- package/dist/templates/mdx/headers-and-text.mdx.js +22 -2
- package/dist/templates/mdx/icons.mdx.d.ts +1 -1
- package/dist/templates/mdx/icons.mdx.js +3 -0
- package/dist/templates/mdx/image-and-embeds.mdx.d.ts +1 -1
- package/dist/templates/mdx/image-and-embeds.mdx.js +19 -10
- package/dist/templates/mdx/index.mdx.d.ts +1 -1
- package/dist/templates/mdx/index.mdx.js +2 -2
- package/dist/templates/mdx/lists-and-tables.mdx.d.ts +1 -1
- package/dist/templates/mdx/lists-and-tables.mdx.js +8 -2
- package/dist/templates/mdx/media-and-assets.mdx.d.ts +1 -1
- package/dist/templates/mdx/media-and-assets.mdx.js +14 -5
- package/dist/templates/mdx/model-context-protocol.mdx.d.ts +1 -1
- package/dist/templates/mdx/model-context-protocol.mdx.js +31 -15
- package/dist/templates/mdx/navigation.mdx.d.ts +1 -1
- package/dist/templates/mdx/navigation.mdx.js +9 -0
- package/dist/templates/mdx/platform/ai-assistant.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/ai-assistant.mdx.js +7 -0
- package/dist/templates/mdx/platform/analytics.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/analytics.mdx.js +7 -0
- package/dist/templates/mdx/platform/billing.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/billing.mdx.js +8 -0
- package/dist/templates/mdx/platform/build-and-deploy.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/build-and-deploy.mdx.js +6 -0
- package/dist/templates/mdx/platform/creating-a-project.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/creating-a-project.mdx.js +7 -0
- package/dist/templates/mdx/platform/custom-domains.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/custom-domains.mdx.js +5 -0
- package/dist/templates/mdx/platform/external-links.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/external-links.mdx.js +5 -0
- package/dist/templates/mdx/platform/file-editor.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/file-editor.mdx.js +7 -0
- package/dist/templates/mdx/platform/fonts-settings.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/fonts-settings.mdx.js +5 -0
- package/dist/templates/mdx/platform/index.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/index.mdx.js +5 -0
- package/dist/templates/mdx/platform/navigation-settings.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/navigation-settings.mdx.js +20 -4
- package/dist/templates/mdx/platform/project-settings.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/project-settings.mdx.js +4 -0
- package/dist/templates/mdx/platform/publishing.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/publishing.mdx.js +6 -0
- package/dist/templates/mdx/platform/site-settings.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/site-settings.mdx.js +8 -0
- package/dist/templates/mdx/platform/team-members.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/team-members.mdx.js +8 -0
- package/dist/templates/mdx/platform/theme-settings.mdx.d.ts +1 -1
- package/dist/templates/mdx/platform/theme-settings.mdx.js +7 -0
- package/dist/templates/mdx/sections.mdx.d.ts +1 -1
- package/dist/templates/mdx/sections.mdx.js +22 -1
- package/dist/templates/mdx/steps.mdx.d.ts +1 -1
- package/dist/templates/mdx/steps.mdx.js +7 -5
- package/dist/templates/mdx/tabs.mdx.d.ts +1 -1
- package/dist/templates/mdx/tabs.mdx.js +7 -2
- package/dist/templates/mdx/theme.mdx.d.ts +1 -1
- package/dist/templates/mdx/theme.mdx.js +10 -0
- package/dist/templates/mdx/update.mdx.d.ts +1 -1
- package/dist/templates/mdx/update.mdx.js +17 -12
- package/dist/templates/package.js +14 -14
- package/dist/templates/pnpmWorkspace.d.ts +1 -0
- package/dist/templates/pnpmWorkspace.js +7 -0
- package/package.json +6 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const platformThemeSettingsMdxTemplate = "---\ntitle: \"Theme Settings\"\ndescription: \"Customize your documentation site's color palette, logos, and dark mode appearance.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 2\norder: 1\nsection: \"Platform\"\n---\n# Theme Settings\nThe Theme settings page gives you full control over your documentation site's visual appearance. Customize colors, upload logos, and configure separate light and dark mode palettes.\n\n## Color palette\nThe theme system uses an 18-color palette organized into groups:\n\n- **Primary** (light, base, dark) - your brand's main color, used for links, buttons, and accents\n- **Secondary** (light, base, dark) - complementary color for secondary elements\n- **Tertiary** (light, base, dark) - additional accent color\n- **Gray** (light, base, dark) - neutral tones for text, borders, and backgrounds\n- **Status colors** (success, error, warning, info) - used for callouts and status indicators\n- **Base colors** (dark, light) - the core background and foreground colors\n\nClick any color swatch to open a color picker and adjust the value.\n\n## Dark mode\nEnable the dark mode toggle to configure a separate palette for dark mode. When enabled, your site automatically switches based on the visitor's system preference.\n\nThe dark mode palette uses the same 18-color structure, letting you fine-tune every color for both appearances.\n\n## Logos\nUpload separate logo images for light and dark backgrounds:\n\n- **Light background logo** - shown when the site is in light mode\n- **Dark background logo** - shown when the site is in dark mode\n\n<Callout type=\"note\">\n If you only upload one logo, it will be used for both modes.\n</Callout>\n\n## Reset to defaults\nEach palette section has a **Reset to defaults** button that restores the original Doccupine color values. This is useful if you want to start over after experimenting.\n\n## How it works\nTheme settings are stored in `theme.json` at the root of your repository. Like all configuration, changes are staged as pending and go live when you publish.";
|
|
1
|
+
export declare const platformThemeSettingsMdxTemplate = "---\ntitle: \"Theme Settings\"\ndescription: \"Customize your documentation site's color palette, logos, and dark mode appearance.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 2\norder: 1\nsection: \"Platform\"\n---\n\n# Theme Settings\n\nThe Theme settings page gives you full control over your documentation site's visual appearance. Customize colors, upload logos, and configure separate light and dark mode palettes.\n\n## Color palette\n\nThe theme system uses an 18-color palette organized into groups:\n\n- **Primary** (light, base, dark) - your brand's main color, used for links, buttons, and accents\n- **Secondary** (light, base, dark) - complementary color for secondary elements\n- **Tertiary** (light, base, dark) - additional accent color\n- **Gray** (light, base, dark) - neutral tones for text, borders, and backgrounds\n- **Status colors** (success, error, warning, info) - used for callouts and status indicators\n- **Base colors** (dark, light) - the core background and foreground colors\n\nClick any color swatch to open a color picker and adjust the value.\n\n## Dark mode\n\nEnable the dark mode toggle to configure a separate palette for dark mode. When enabled, your site automatically switches based on the visitor's system preference.\n\nThe dark mode palette uses the same 18-color structure, letting you fine-tune every color for both appearances.\n\n## Logos\n\nUpload separate logo images for light and dark backgrounds:\n\n- **Light background logo** - shown when the site is in light mode\n- **Dark background logo** - shown when the site is in dark mode\n\n<Callout type=\"note\">\n If you only upload one logo, it will be used for both modes.\n</Callout>\n\n## Reset to defaults\n\nEach palette section has a **Reset to defaults** button that restores the original Doccupine color values. This is useful if you want to start over after experimenting.\n\n## How it works\n\nTheme settings are stored in `theme.json` at the root of your repository. Like all configuration, changes are staged as pending and go live when you publish.";
|
|
@@ -7,10 +7,13 @@ categoryOrder: 2
|
|
|
7
7
|
order: 1
|
|
8
8
|
section: "Platform"
|
|
9
9
|
---
|
|
10
|
+
|
|
10
11
|
# Theme Settings
|
|
12
|
+
|
|
11
13
|
The Theme settings page gives you full control over your documentation site's visual appearance. Customize colors, upload logos, and configure separate light and dark mode palettes.
|
|
12
14
|
|
|
13
15
|
## Color palette
|
|
16
|
+
|
|
14
17
|
The theme system uses an 18-color palette organized into groups:
|
|
15
18
|
|
|
16
19
|
- **Primary** (light, base, dark) - your brand's main color, used for links, buttons, and accents
|
|
@@ -23,11 +26,13 @@ The theme system uses an 18-color palette organized into groups:
|
|
|
23
26
|
Click any color swatch to open a color picker and adjust the value.
|
|
24
27
|
|
|
25
28
|
## Dark mode
|
|
29
|
+
|
|
26
30
|
Enable the dark mode toggle to configure a separate palette for dark mode. When enabled, your site automatically switches based on the visitor's system preference.
|
|
27
31
|
|
|
28
32
|
The dark mode palette uses the same 18-color structure, letting you fine-tune every color for both appearances.
|
|
29
33
|
|
|
30
34
|
## Logos
|
|
35
|
+
|
|
31
36
|
Upload separate logo images for light and dark backgrounds:
|
|
32
37
|
|
|
33
38
|
- **Light background logo** - shown when the site is in light mode
|
|
@@ -38,7 +43,9 @@ Upload separate logo images for light and dark backgrounds:
|
|
|
38
43
|
</Callout>
|
|
39
44
|
|
|
40
45
|
## Reset to defaults
|
|
46
|
+
|
|
41
47
|
Each palette section has a **Reset to defaults** button that restores the original Doccupine color values. This is useful if you want to start over after experimenting.
|
|
42
48
|
|
|
43
49
|
## How it works
|
|
50
|
+
|
|
44
51
|
Theme settings are stored in \`theme.json\` at the root of your repository. Like all configuration, changes are staged as pending and go live when you publish.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const sectionsMdxTemplate = "---\ntitle: \"Sections\"\ndescription: \"Split your documentation into top-level sections with independent sidebars.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 3\n---\n# Sections\nSections let you divide your documentation into separate top-level areas - for example \"Guides\", \"API Reference\", and \"SDKs\". Each section gets its own sidebar and appears as a horizontal tab bar below the site header.\n\n<Callout type=\"note\">\n Sections are entirely opt-in. If you don't configure them, nothing changes - your site works exactly as before with a single flat navigation.\n</Callout>\n\n## Automatic sections (frontmatter)\nThe simplest way to add sections is through page frontmatter. Add a `section` field to group pages, and an optional `sectionOrder` to control the order of sections in the bar.\n\n### Frontmatter fields\n- **section**: The display name for the section this page belongs to (e.g. \"API Reference\").\n- **sectionOrder**: Controls the position of the section in the bar. Lower numbers appear first.\n\nThe section slug is derived automatically from the label - lowercased with spaces replaced by hyphens. So \"API Reference\" becomes `api-reference`.\n\nPages without a `section` field stay at the root URL and appear under a default tab labeled \"Docs\". You can rename this tab with the `sectionLabel` field on your `index.mdx`:\n\n```text\n---\ntitle: \"Welcome\"\nsectionLabel: \"Guides\"\n---\n```\n\n### Directory-based organization\nYou can organize each section's files in a subdirectory that matches the section slug. When the directory name matches, Doccupine automatically assigns the files to that section and strips the directory from the URL.\n\n```text\ndocs/\n index.mdx\n getting-started.mdx\n platform/\n index.mdx -> /platform\n auth.mdx -> /platform/auth\n```\n\nWhere `platform/index.mdx` has:\n\n```text\n---\ntitle: \"Platform Overview\"\nsection: \"Platform\"\nsectionOrder: 1\ncategory: \"Getting Started\"\n---\n```\n\nThe directory `platform/` matches the section slug `platform`, so it is stripped. `platform/index.mdx` serves at `/platform/` and `platform/auth.mdx` serves at `/platform/auth`.\n\n<Callout type=\"info\">\n Once a section exists, any file placed in a matching directory is automatically assigned to it - even without a `section` field in its own frontmatter. Only the first file needs `section` and `sectionOrder` to create the section. After that, the directory does the work.\n</Callout>\n\nFiles at the root level with a `section` field work too - they keep their full slug under the section prefix.\n\n### Section index pages\nIf a section has no index page (no file at its root URL), Doccupine generates a redirect to the first page in that section, sorted by `categoryOrder` then `order`.\n\n<Callout type=\"note\">\n You can override the auto-redirect by creating an `index.mdx` in the section's directory.\n</Callout>\n\n### Flat file example\nYou can also keep all files at the root and rely purely on frontmatter:\n\n```text\n---\ntitle: \"Authentication\"\nsection: \"API Reference\"\nsectionOrder: 2\ncategory: \"Auth\"\ncategoryOrder: 1\norder: 1\n---\n```\n\nThis page would be served at `/api-reference/authentication`.\n\n## Explicit sections with sections.json\nFor full control over slugs, create a `sections.json` file at your project root (the same folder where you run `npx doccupine`).\n\n### Minimal example\n\n```json\n[\n { \"label\": \"Docs\", \"slug\": \"\" },\n { \"label\": \"Platform\", \"slug\": \"platform\" }\n]\n```\n\nThis defines two sections. Pages are assigned automatically:\n- Files in a `platform/` directory belong to the \"Platform\" section (directory name matches slug).\n- Files with `section: \"Platform\"` in their frontmatter also belong to it.\n- Everything else stays in the root \"Docs\" section.\n\nNo `directory` field is needed when the directory name already matches the section slug.\n\n### Example with explicit directories\nWhen the directory name differs from the slug, use the `directory` field to map them:\n\n```json\n[\n { \"label\": \"Guides\", \"slug\": \"\", \"directory\": \"guides\" },\n { \"label\": \"API Reference\", \"slug\": \"api\", \"directory\": \"api-reference\" },\n { \"label\": \"SDKs\", \"slug\": \"sdks\", \"directory\": \"sdks\" }\n]\n```\n\n### Fields\n- **label**: The display name shown in the section bar.\n- **slug**: The URL prefix for this section. Use an empty string `\"\"` for the default section that serves at the root.\n- **directory** (optional): The subdirectory under your watch directory that contains this section's MDX files. Only needed when the directory name differs from the slug.\n\n### Directory structure example\nWith the explicit directory config above and a watch directory of `docs`, your files would look like:\n\n```text\ndocs/\n guides/\n index.mdx\n getting-started.mdx\n api-reference/\n authentication.mdx\n endpoints.mdx\n sdks/\n javascript.mdx\n python.mdx\n```\n\n## Section navigation\nEach section builds its own sidebar from the pages that belong to it. By default, pages are grouped by `category` and sorted by `categoryOrder` and `order` from frontmatter.\n\nFor explicit control, use `navigation.json` with the object format to define per-section navigation:\n\n```json\n{\n \"\": [\n {
|
|
1
|
+
export declare const sectionsMdxTemplate = "---\ntitle: \"Sections\"\ndescription: \"Split your documentation into top-level sections with independent sidebars.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 3\n---\n\n# Sections\n\nSections let you divide your documentation into separate top-level areas - for example \"Guides\", \"API Reference\", and \"SDKs\". Each section gets its own sidebar and appears as a horizontal tab bar below the site header.\n\n<Callout type=\"note\">\n Sections are entirely opt-in. If you don't configure them, nothing changes - your site works exactly as before with a single flat navigation.\n</Callout>\n\n## Automatic sections (frontmatter)\n\nThe simplest way to add sections is through page frontmatter. Add a `section` field to group pages, and an optional `sectionOrder` to control the order of sections in the bar.\n\n### Frontmatter fields\n\n- **section**: The display name for the section this page belongs to (e.g. \"API Reference\").\n- **sectionOrder**: Controls the position of the section in the bar. Lower numbers appear first.\n\nThe section slug is derived automatically from the label - lowercased with spaces replaced by hyphens. So \"API Reference\" becomes `api-reference`.\n\nPages without a `section` field stay at the root URL and appear under a default tab labeled \"Docs\". You can rename this tab with the `sectionLabel` field on your `index.mdx`:\n\n```text\n---\ntitle: \"Welcome\"\nsectionLabel: \"Guides\"\n---\n```\n\n### Directory-based organization\n\nYou can organize each section's files in a subdirectory that matches the section slug. When the directory name matches, Doccupine automatically assigns the files to that section and strips the directory from the URL.\n\n```text\ndocs/\n index.mdx\n getting-started.mdx\n platform/\n index.mdx -> /platform\n auth.mdx -> /platform/auth\n```\n\nWhere `platform/index.mdx` has:\n\n```text\n---\ntitle: \"Platform Overview\"\nsection: \"Platform\"\nsectionOrder: 1\ncategory: \"Getting Started\"\n---\n```\n\nThe directory `platform/` matches the section slug `platform`, so it is stripped. `platform/index.mdx` serves at `/platform/` and `platform/auth.mdx` serves at `/platform/auth`.\n\n<Callout type=\"info\">\n Once a section exists, any file placed in a matching directory is automatically assigned to it - even without a `section` field in its own frontmatter. Only the first file needs `section` and `sectionOrder` to create the section. After that, the directory does the work.\n</Callout>\n\nFiles at the root level with a `section` field work too - they keep their full slug under the section prefix.\n\n### Section index pages\n\nIf a section has no index page (no file at its root URL), Doccupine generates a redirect to the first page in that section, sorted by `categoryOrder` then `order`.\n\n<Callout type=\"note\">\n You can override the auto-redirect by creating an `index.mdx` in the section's directory.\n</Callout>\n\n### Flat file example\n\nYou can also keep all files at the root and rely purely on frontmatter:\n\n```text\n---\ntitle: \"Authentication\"\nsection: \"API Reference\"\nsectionOrder: 2\ncategory: \"Auth\"\ncategoryOrder: 1\norder: 1\n---\n```\n\nThis page would be served at `/api-reference/authentication`.\n\n## Explicit sections with sections.json\n\nFor full control over slugs, create a `sections.json` file at your project root (the same folder where you run `npx doccupine`).\n\n### Minimal example\n\n```json\n[\n { \"label\": \"Docs\", \"slug\": \"\" },\n { \"label\": \"Platform\", \"slug\": \"platform\" }\n]\n```\n\nThis defines two sections. Pages are assigned automatically:\n\n- Files in a `platform/` directory belong to the \"Platform\" section (directory name matches slug).\n- Files with `section: \"Platform\"` in their frontmatter also belong to it.\n- Everything else stays in the root \"Docs\" section.\n\nNo `directory` field is needed when the directory name already matches the section slug.\n\n### Example with explicit directories\n\nWhen the directory name differs from the slug, use the `directory` field to map them:\n\n```json\n[\n { \"label\": \"Guides\", \"slug\": \"\", \"directory\": \"guides\" },\n { \"label\": \"API Reference\", \"slug\": \"api\", \"directory\": \"api-reference\" },\n { \"label\": \"SDKs\", \"slug\": \"sdks\", \"directory\": \"sdks\" }\n]\n```\n\n### Fields\n\n- **label**: The display name shown in the section bar.\n- **slug**: The URL prefix for this section. Use an empty string `\"\"` for the default section that serves at the root.\n- **directory** (optional): The subdirectory under your watch directory that contains this section's MDX files. Only needed when the directory name differs from the slug.\n\n### Directory structure example\n\nWith the explicit directory config above and a watch directory of `docs`, your files would look like:\n\n```text\ndocs/\n guides/\n index.mdx\n getting-started.mdx\n api-reference/\n authentication.mdx\n endpoints.mdx\n sdks/\n javascript.mdx\n python.mdx\n```\n\n## Section navigation\n\nEach section builds its own sidebar from the pages that belong to it. By default, pages are grouped by `category` and sorted by `categoryOrder` and `order` from frontmatter.\n\nFor explicit control, use `navigation.json` with the object format to define per-section navigation:\n\n```json\n{\n \"\": [\n {\n \"label\": \"General\",\n \"links\": [{ \"slug\": \"\", \"title\": \"Getting Started\" }]\n }\n ],\n \"platform\": [\n { \"label\": \"API\", \"links\": [{ \"slug\": \"platform/auth\", \"title\": \"Auth\" }] }\n ]\n}\n```\n\nKeys are section slugs. The root section uses `\"\"`. Sections without a key fall back to auto-generated navigation. See the Navigation page for the full format.\n\n## How pages are assigned to sections\n\nDoccupine checks these rules in order and uses the first match:\n\n1. **Explicit directory** - the file is inside a directory listed in a section's `directory` field.\n2. **Directory matches slug** - the file's parent directory matches a section slug (e.g. files in `platform/` match a section with `slug: \"platform\"`).\n3. **Frontmatter section field** - the file's `section` value matches a section label.\n4. **No match** - the page stays at the root.\n\n## Precedence for section discovery\n\n1. **sections.json exists** - Doccupine uses it to define available sections.\n2. **No sections.json but pages have `section` frontmatter** - Doccupine auto-discovers sections from the frontmatter. Sections update live as you add or remove the `section` field from files.\n3. **Neither** - No section bar appears. The site works exactly as before.\n\n## URL structure\n\nPages in the default section (with `slug: \"\"`) serve at the root:\n\n- Default section: `/getting-started`, `/installation`\n- Other sections: `/api/authentication`, `/sdks/javascript`\n\n<Callout type=\"info\">\n When a file is in a directory that matches its section slug, the directory is stripped so it doesn't appear twice. For example, `platform/auth.mdx` in the \"Platform\" section serves at `/platform/auth`, not `/platform/platform/auth`.\n</Callout>\n\n## sections.json vs navigation.json\n\nThese two config files serve different purposes and complement each other:\n\n- **sections.json** defines which sections exist - their labels, slugs, directory mappings, and order in the tab bar.\n- **navigation.json** controls the sidebar within each section - page ordering and grouping.\n\nYou can use either one independently. `sections.json` without `navigation.json` gives you sections with auto-generated sidebars. `navigation.json` without `sections.json` gives you custom sidebar ordering with frontmatter-discovered sections (or no sections at all).\n\n## Tips\n\n- **Start simple**: Add `section` and `sectionOrder` to a few pages to try it out. No config files needed.\n- **Use directories**: Organize each section's files in a directory that matches the section slug for clean URLs and a tidy file tree.\n- **Rename the default tab**: Add `sectionLabel: \"Your Label\"` to your `index.mdx` frontmatter. Defaults to \"Docs\" if omitted.\n- **Switch to sections.json**: When you need custom slugs or directory mappings that don't match section names, `sections.json` gives full control.\n- **Per-section navigation**: Use the object format in `navigation.json` to define custom sidebar ordering for specific sections.\n- **Independent sidebars**: Each section has its own sidebar. Previous/next navigation stays within the active section.";
|
|
@@ -6,7 +6,9 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 3
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Sections
|
|
11
|
+
|
|
10
12
|
Sections let you divide your documentation into separate top-level areas - for example "Guides", "API Reference", and "SDKs". Each section gets its own sidebar and appears as a horizontal tab bar below the site header.
|
|
11
13
|
|
|
12
14
|
<Callout type="note">
|
|
@@ -14,9 +16,11 @@ Sections let you divide your documentation into separate top-level areas - for e
|
|
|
14
16
|
</Callout>
|
|
15
17
|
|
|
16
18
|
## Automatic sections (frontmatter)
|
|
19
|
+
|
|
17
20
|
The simplest way to add sections is through page frontmatter. Add a \`section\` field to group pages, and an optional \`sectionOrder\` to control the order of sections in the bar.
|
|
18
21
|
|
|
19
22
|
### Frontmatter fields
|
|
23
|
+
|
|
20
24
|
- **section**: The display name for the section this page belongs to (e.g. "API Reference").
|
|
21
25
|
- **sectionOrder**: Controls the position of the section in the bar. Lower numbers appear first.
|
|
22
26
|
|
|
@@ -32,6 +36,7 @@ sectionLabel: "Guides"
|
|
|
32
36
|
\`\`\`
|
|
33
37
|
|
|
34
38
|
### Directory-based organization
|
|
39
|
+
|
|
35
40
|
You can organize each section's files in a subdirectory that matches the section slug. When the directory name matches, Doccupine automatically assigns the files to that section and strips the directory from the URL.
|
|
36
41
|
|
|
37
42
|
\`\`\`text
|
|
@@ -63,6 +68,7 @@ The directory \`platform/\` matches the section slug \`platform\`, so it is stri
|
|
|
63
68
|
Files at the root level with a \`section\` field work too - they keep their full slug under the section prefix.
|
|
64
69
|
|
|
65
70
|
### Section index pages
|
|
71
|
+
|
|
66
72
|
If a section has no index page (no file at its root URL), Doccupine generates a redirect to the first page in that section, sorted by \`categoryOrder\` then \`order\`.
|
|
67
73
|
|
|
68
74
|
<Callout type="note">
|
|
@@ -70,6 +76,7 @@ If a section has no index page (no file at its root URL), Doccupine generates a
|
|
|
70
76
|
</Callout>
|
|
71
77
|
|
|
72
78
|
### Flat file example
|
|
79
|
+
|
|
73
80
|
You can also keep all files at the root and rely purely on frontmatter:
|
|
74
81
|
|
|
75
82
|
\`\`\`text
|
|
@@ -86,6 +93,7 @@ order: 1
|
|
|
86
93
|
This page would be served at \`/api-reference/authentication\`.
|
|
87
94
|
|
|
88
95
|
## Explicit sections with sections.json
|
|
96
|
+
|
|
89
97
|
For full control over slugs, create a \`sections.json\` file at your project root (the same folder where you run \`npx doccupine\`).
|
|
90
98
|
|
|
91
99
|
### Minimal example
|
|
@@ -98,6 +106,7 @@ For full control over slugs, create a \`sections.json\` file at your project roo
|
|
|
98
106
|
\`\`\`
|
|
99
107
|
|
|
100
108
|
This defines two sections. Pages are assigned automatically:
|
|
109
|
+
|
|
101
110
|
- Files in a \`platform/\` directory belong to the "Platform" section (directory name matches slug).
|
|
102
111
|
- Files with \`section: "Platform"\` in their frontmatter also belong to it.
|
|
103
112
|
- Everything else stays in the root "Docs" section.
|
|
@@ -105,6 +114,7 @@ This defines two sections. Pages are assigned automatically:
|
|
|
105
114
|
No \`directory\` field is needed when the directory name already matches the section slug.
|
|
106
115
|
|
|
107
116
|
### Example with explicit directories
|
|
117
|
+
|
|
108
118
|
When the directory name differs from the slug, use the \`directory\` field to map them:
|
|
109
119
|
|
|
110
120
|
\`\`\`json
|
|
@@ -116,11 +126,13 @@ When the directory name differs from the slug, use the \`directory\` field to ma
|
|
|
116
126
|
\`\`\`
|
|
117
127
|
|
|
118
128
|
### Fields
|
|
129
|
+
|
|
119
130
|
- **label**: The display name shown in the section bar.
|
|
120
131
|
- **slug**: The URL prefix for this section. Use an empty string \`""\` for the default section that serves at the root.
|
|
121
132
|
- **directory** (optional): The subdirectory under your watch directory that contains this section's MDX files. Only needed when the directory name differs from the slug.
|
|
122
133
|
|
|
123
134
|
### Directory structure example
|
|
135
|
+
|
|
124
136
|
With the explicit directory config above and a watch directory of \`docs\`, your files would look like:
|
|
125
137
|
|
|
126
138
|
\`\`\`text
|
|
@@ -137,6 +149,7 @@ docs/
|
|
|
137
149
|
\`\`\`
|
|
138
150
|
|
|
139
151
|
## Section navigation
|
|
152
|
+
|
|
140
153
|
Each section builds its own sidebar from the pages that belong to it. By default, pages are grouped by \`category\` and sorted by \`categoryOrder\` and \`order\` from frontmatter.
|
|
141
154
|
|
|
142
155
|
For explicit control, use \`navigation.json\` with the object format to define per-section navigation:
|
|
@@ -144,7 +157,10 @@ For explicit control, use \`navigation.json\` with the object format to define p
|
|
|
144
157
|
\`\`\`json
|
|
145
158
|
{
|
|
146
159
|
"": [
|
|
147
|
-
{
|
|
160
|
+
{
|
|
161
|
+
"label": "General",
|
|
162
|
+
"links": [{ "slug": "", "title": "Getting Started" }]
|
|
163
|
+
}
|
|
148
164
|
],
|
|
149
165
|
"platform": [
|
|
150
166
|
{ "label": "API", "links": [{ "slug": "platform/auth", "title": "Auth" }] }
|
|
@@ -155,6 +171,7 @@ For explicit control, use \`navigation.json\` with the object format to define p
|
|
|
155
171
|
Keys are section slugs. The root section uses \`""\`. Sections without a key fall back to auto-generated navigation. See the Navigation page for the full format.
|
|
156
172
|
|
|
157
173
|
## How pages are assigned to sections
|
|
174
|
+
|
|
158
175
|
Doccupine checks these rules in order and uses the first match:
|
|
159
176
|
|
|
160
177
|
1. **Explicit directory** - the file is inside a directory listed in a section's \`directory\` field.
|
|
@@ -163,11 +180,13 @@ Doccupine checks these rules in order and uses the first match:
|
|
|
163
180
|
4. **No match** - the page stays at the root.
|
|
164
181
|
|
|
165
182
|
## Precedence for section discovery
|
|
183
|
+
|
|
166
184
|
1. **sections.json exists** - Doccupine uses it to define available sections.
|
|
167
185
|
2. **No sections.json but pages have \`section\` frontmatter** - Doccupine auto-discovers sections from the frontmatter. Sections update live as you add or remove the \`section\` field from files.
|
|
168
186
|
3. **Neither** - No section bar appears. The site works exactly as before.
|
|
169
187
|
|
|
170
188
|
## URL structure
|
|
189
|
+
|
|
171
190
|
Pages in the default section (with \`slug: ""\`) serve at the root:
|
|
172
191
|
|
|
173
192
|
- Default section: \`/getting-started\`, \`/installation\`
|
|
@@ -178,6 +197,7 @@ Pages in the default section (with \`slug: ""\`) serve at the root:
|
|
|
178
197
|
</Callout>
|
|
179
198
|
|
|
180
199
|
## sections.json vs navigation.json
|
|
200
|
+
|
|
181
201
|
These two config files serve different purposes and complement each other:
|
|
182
202
|
|
|
183
203
|
- **sections.json** defines which sections exist - their labels, slugs, directory mappings, and order in the tab bar.
|
|
@@ -186,6 +206,7 @@ These two config files serve different purposes and complement each other:
|
|
|
186
206
|
You can use either one independently. \`sections.json\` without \`navigation.json\` gives you sections with auto-generated sidebars. \`navigation.json\` without \`sections.json\` gives you custom sidebar ordering with frontmatter-discovered sections (or no sections at all).
|
|
187
207
|
|
|
188
208
|
## Tips
|
|
209
|
+
|
|
189
210
|
- **Start simple**: Add \`section\` and \`sectionOrder\` to a few pages to try it out. No config files needed.
|
|
190
211
|
- **Use directories**: Organize each section's files in a directory that matches the section slug for clean URLs and a tidy file tree.
|
|
191
212
|
- **Rename the default tab**: Add \`sectionLabel: "Your Label"\` to your \`index.mdx\` frontmatter. Defaults to "Docs" if omitted.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const stepsMdxTemplate = "---\ntitle: \"Steps\"\ndescription: \"Guide readers step-by-step using the Steps component.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 14\n---\n# Steps\nGuide readers step-by-step using the Steps component.\n\nThe Steps component is perfect for organizing procedures or workflows in a clear sequence. Include as many individual steps as necessary to outline your process.\n\n## Steps Usage\nYou can use the `Steps` component to create a step-by-step guide. Each step is represented by a `Step` component, which includes a title and content.\n\n```mdx\n<Steps>\n <Step title=\"Step 1\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Step>\n\n
|
|
1
|
+
export declare const stepsMdxTemplate = "---\ntitle: \"Steps\"\ndescription: \"Guide readers step-by-step using the Steps component.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 14\n---\n\n# Steps\n\nGuide readers step-by-step using the Steps component.\n\nThe Steps component is perfect for organizing procedures or workflows in a clear sequence. Include as many individual steps as necessary to outline your process.\n\n## Steps Usage\n\nYou can use the `Steps` component to create a step-by-step guide. Each step is represented by a `Step` component, which includes a title and content.\n\n```mdx\n<Steps>\n <Step title=\"Step 1\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Step>\n\n<Step title=\"Step 2\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n</Step>\n\n <Step title=\"Step 3\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Step>\n</Steps>\n```\n\n<Steps>\n <Step title=\"Step 1\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Step>\n\n <Step title=\"Step 2\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Step>\n\n <Step title=\"Step 3\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Step>\n</Steps>\n\n## Properties\n\n<Field value=\"title\" type=\"string\" required>\n The title of the step.\n</Field>\n\n<Field value=\"icon\" type=\"string\">\n A [Lucide](https://lucide.dev/icons) icon name shown next to the step title.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the step.\n</Field>";
|
|
@@ -6,12 +6,15 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 14
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Steps
|
|
11
|
+
|
|
10
12
|
Guide readers step-by-step using the Steps component.
|
|
11
13
|
|
|
12
14
|
The Steps component is perfect for organizing procedures or workflows in a clear sequence. Include as many individual steps as necessary to outline your process.
|
|
13
15
|
|
|
14
16
|
## Steps Usage
|
|
17
|
+
|
|
15
18
|
You can use the \`Steps\` component to create a step-by-step guide. Each step is represented by a \`Step\` component, which includes a title and content.
|
|
16
19
|
|
|
17
20
|
\`\`\`mdx
|
|
@@ -20,9 +23,9 @@ You can use the \`Steps\` component to create a step-by-step guide. Each step is
|
|
|
20
23
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
21
24
|
</Step>
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
<Step title="Step 2">
|
|
27
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
28
|
+
</Step>
|
|
26
29
|
|
|
27
30
|
<Step title="Step 3">
|
|
28
31
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
@@ -56,5 +59,4 @@ You can use the \`Steps\` component to create a step-by-step guide. Each step is
|
|
|
56
59
|
|
|
57
60
|
<Field value="children" type="node" required>
|
|
58
61
|
The content of the step.
|
|
59
|
-
</Field
|
|
60
|
-
`;
|
|
62
|
+
</Field>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const tabsMdxTemplate = "---\ntitle: \"Tabs\"\ndescription: \"Use the Tabs component to display different content sections in a switchable panel layout.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 5\n---\n# Tabs\nUse the Tabs component to display different content sections in a switchable panel layout.\n\nTabs are useful for grouping related information while keeping the interface tidy. You can create as many tabs as needed, and each one can hold other components, text, or code snippets.\n\n## Tabs Usage\nYou can use the Tabs component directly within your MDX files without any import. The following example shows a basic usage:\n\n
|
|
1
|
+
export declare const tabsMdxTemplate = "---\ntitle: \"Tabs\"\ndescription: \"Use the Tabs component to display different content sections in a switchable panel layout.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 5\n---\n\n# Tabs\n\nUse the Tabs component to display different content sections in a switchable panel layout.\n\nTabs are useful for grouping related information while keeping the interface tidy. You can create as many tabs as needed, and each one can hold other components, text, or code snippets.\n\n## Tabs Usage\n\nYou can use the Tabs component directly within your MDX files without any import. The following example shows a basic usage:\n\n````mdx\n<Tabs>\n <TabContent title=\"First tab\">\n \u261D\uFE0F This is the content shown only when the first tab is active.\n\n Tabs can include all kinds of components. For example, a simple Java program:\n ```java\n class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n }\n ```\n\n </TabContent>\n <TabContent title=\"Second tab\">\n \u270C\uFE0F Content inside this second tab is separate from the first.\n </TabContent>\n <TabContent title=\"Third tab\">\n \uD83D\uDCAA This third tab contains its own unique content.\n </TabContent>\n</Tabs>\n````\n\n<Tabs>\n <TabContent title=\"First tab\">\n \u261D\uFE0F This is the content shown only when the first tab is active.\n\n Tabs can include all kinds of components. For example, a simple Java program:\n ```java\n class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n }\n ```\n\n </TabContent>\n <TabContent title=\"Second tab\">\n \u270C\uFE0F Content inside this second tab is separate from the first.\n </TabContent>\n <TabContent title=\"Third tab\">\n \uD83D\uDCAA This third tab contains its own unique content.\n </TabContent>\n</Tabs>\n\n## Properties\n\n<Field value=\"title\" type=\"string\">\n The title of the tab.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the tabs.\n</Field>";
|
|
@@ -6,15 +6,18 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 5
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Tabs
|
|
11
|
+
|
|
10
12
|
Use the Tabs component to display different content sections in a switchable panel layout.
|
|
11
13
|
|
|
12
14
|
Tabs are useful for grouping related information while keeping the interface tidy. You can create as many tabs as needed, and each one can hold other components, text, or code snippets.
|
|
13
15
|
|
|
14
16
|
## Tabs Usage
|
|
17
|
+
|
|
15
18
|
You can use the Tabs component directly within your MDX files without any import. The following example shows a basic usage:
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
\`\`\`\`mdx
|
|
18
21
|
<Tabs>
|
|
19
22
|
<TabContent title="First tab">
|
|
20
23
|
☝️ This is the content shown only when the first tab is active.
|
|
@@ -27,6 +30,7 @@ You can use the Tabs component directly within your MDX files without any import
|
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
\`\`\`
|
|
33
|
+
|
|
30
34
|
</TabContent>
|
|
31
35
|
<TabContent title="Second tab">
|
|
32
36
|
✌️ Content inside this second tab is separate from the first.
|
|
@@ -35,7 +39,7 @@ You can use the Tabs component directly within your MDX files without any import
|
|
|
35
39
|
💪 This third tab contains its own unique content.
|
|
36
40
|
</TabContent>
|
|
37
41
|
</Tabs>
|
|
38
|
-
|
|
42
|
+
\`\`\`\`
|
|
39
43
|
|
|
40
44
|
<Tabs>
|
|
41
45
|
<TabContent title="First tab">
|
|
@@ -49,6 +53,7 @@ You can use the Tabs component directly within your MDX files without any import
|
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
\`\`\`
|
|
56
|
+
|
|
52
57
|
</TabContent>
|
|
53
58
|
<TabContent title="Second tab">
|
|
54
59
|
✌️ Content inside this second tab is separate from the first.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const themeMdxTemplate = "---\ntitle: \"Theme\"\ndescription: \"Customize the documentation UI colors with a theme.json file.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 5\n---\n# Theme\nDefine your site\u2019s color system with a `theme.json` file. This lets you tailor the look and feel of your documentation without changing content.\n\n## theme.json\nPlace a `theme.json` at your project root (the same folder where you execute `npx doccupine`). It supports multiple modes. Define a `default` mode and a `dark` mode.\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#93c5fd\",\n \"primary\": \"#2563eb\",\n \"primaryDark\": \"#1e40af\",\n \"secondaryLight\": \"#c4b5fd\",\n \"secondary\": \"#8b5cf6\",\n \"secondaryDark\": \"#5b21b6\",\n \"tertiaryLight\": \"#fbbf24\",\n \"tertiary\": \"#f59e0b\",\n \"tertiaryDark\": \"#d97706\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#9bcaff\",\n \"primary\": \"#1e7ae0\",\n \"primaryDark\": \"#033d7e\",\n \"secondaryLight\": \"#ddd6fe\",\n \"secondary\": \"#a78bfa\",\n \"secondaryDark\": \"#7c3aed\",\n \"tertiaryLight\": \"#fed7aa\",\n \"tertiary\": \"#fb923c\",\n \"tertiaryDark\": \"#ea580c\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n },\n \"logo\": {\n \"dark\": \"https://docs.doccupine.com/logo-dark.svg\",\n \"light\": \"https://docs.doccupine.com/logo-light.svg\"\n }\n}\n```\n\n## Modes\n- **default**: The base color palette for your site.\n- **dark**: Dark\u2011mode palette.\n\n## Fields\n- **primaryLight**: A lighter variant of your brand color, used for subtle accents and backgrounds.\n- **primary**: The main brand color.\n- **primaryDark**: A darker variant of your brand color for emphasis and hover states.\n- **secondaryLight**: A lighter variant of your secondary color, used for subtle accents and backgrounds.\n- **secondary**: The secondary brand color used for highlights and UI accents.\n- **secondaryDark**: A darker variant of your secondary color for emphasis and hover states.\n- **tertiaryLight**: A lighter variant of your tertiary color, used for subtle accents and backgrounds.\n- **tertiary**: The tertiary accent color.\n- **tertiaryDark**: A darker variant of your tertiary color for emphasis and hover states.\n- **grayLight**: Light gray for surfaces and borders.\n- **gray**: Neutral gray for text and UI elements.\n- **grayDark**: Dark gray for headings or high\u2011contrast text.\n- **success**: Positive/confirmation color.\n- **error**: Error/destructive color.\n- **warning**: Warning/attention color.\n- **info**: Informational/highlight color.\n- **dark**: The darkest/base color (often page background in dark mode).\n- **light**: The lightest/base color (often page background in light mode).\n- **logo.light**: Path or URL to the logo used on light backgrounds. Recommended size: 164\u00D730 px.\n- **logo.dark**: Path or URL to the logo used on dark backgrounds. Recommended size: 164\u00D730 px.\n\n## Behavior\n- **Placement**: Put `theme.json` in the project root alongside `config.json`.\n- **Partial palettes**: If a key is missing in a mode, consumers may fall back to the `default` value.\n- **Logo size**: Recommended dimensions are 164px width and 30px height.\n\n<Callout type=\"warning\">\n Use valid hex colors (e.g., `#22c55e`). Invalid color values may cause unexpected rendering.\n</Callout>\n\n## Tips\n- **Contrast**: Ensure sufficient contrast between text and backgrounds for readability.\n- **Branding**: Start with your brand\u2019s `primary` color, then derive `primaryLight` and `primaryDark`.\n- **Iterate**: Adjust colors and refresh the site to preview changes quickly.\n\n# Demo\nIn the following demos, you can see how the theme can be changed. To override the theme, create a `theme.json` file in the project root and copy paste the code below.\n\n<DemoTheme variant=\"purple\" />\n<DemoTheme variant=\"green\" />\n<DemoTheme variant=\"yellow\" />\n<DemoTheme />\n\n## Purple\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#c4b5fd\",\n \"primary\": \"#8b5cf6\",\n \"primaryDark\": \"#5b21b6\",\n \"secondaryLight\": \"#86efac\",\n \"secondary\": \"#22c55e\",\n \"secondaryDark\": \"#15803d\",\n \"tertiaryLight\": \"#fbbf24\",\n \"tertiary\": \"#f59e0b\",\n \"tertiaryDark\": \"#d97706\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#ddd6fe\",\n \"primary\": \"#a78bfa\",\n \"primaryDark\": \"#7c3aed\",\n \"secondaryLight\": \"#6ee7b7\",\n \"secondary\": \"#10b981\",\n \"secondaryDark\": \"#065f46\",\n \"tertiaryLight\": \"#fed7aa\",\n \"tertiary\": \"#fb923c\",\n \"tertiaryDark\": \"#ea580c\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n }\n}\n```\n<DemoTheme variant=\"purple\" />\n\n## Green\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#86efac\",\n \"primary\": \"#22c55e\",\n \"primaryDark\": \"#15803d\",\n \"secondaryLight\": \"#c4b5fd\",\n \"secondary\": \"#8b5cf6\",\n \"secondaryDark\": \"#5b21b6\",\n \"tertiaryLight\": \"#fbbf24\",\n \"tertiary\": \"#f59e0b\",\n \"tertiaryDark\": \"#d97706\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#6ee7b7\",\n \"primary\": \"#10b981\",\n \"primaryDark\": \"#065f46\",\n \"secondaryLight\": \"#ddd6fe\",\n \"secondary\": \"#a78bfa\",\n \"secondaryDark\": \"#7c3aed\",\n \"tertiaryLight\": \"#fed7aa\",\n \"tertiary\": \"#fb923c\",\n \"tertiaryDark\": \"#ea580c\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n }\n}\n```\n<DemoTheme variant=\"green\" />\n\n## Yellow\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#fbbf24\",\n \"primary\": \"#f59e0b\",\n \"primaryDark\": \"#d97706\",\n \"secondaryLight\": \"#c4b5fd\",\n \"secondary\": \"#8b5cf6\",\n \"secondaryDark\": \"#5b21b6\",\n \"tertiaryLight\": \"#86efac\",\n \"tertiary\": \"#22c55e\",\n \"tertiaryDark\": \"#15803d\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#fed7aa\",\n \"primary\": \"#fb923c\",\n \"primaryDark\": \"#ea580c\",\n \"secondaryLight\": \"#ddd6fe\",\n \"secondary\": \"#a78bfa\",\n \"secondaryDark\": \"#7c3aed\",\n \"tertiaryLight\": \"#6ee7b7\",\n \"tertiary\": \"#10b981\",\n \"tertiaryDark\": \"#065f46\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n }\n}\n```\n\n<DemoTheme variant=\"yellow\" />";
|
|
1
|
+
export declare const themeMdxTemplate = "---\ntitle: \"Theme\"\ndescription: \"Customize the documentation UI colors with a theme.json file.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 5\n---\n\n# Theme\n\nDefine your site\u2019s color system with a `theme.json` file. This lets you tailor the look and feel of your documentation without changing content.\n\n## theme.json\n\nPlace a `theme.json` at your project root (the same folder where you execute `npx doccupine`). It supports multiple modes. Define a `default` mode and a `dark` mode.\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#93c5fd\",\n \"primary\": \"#2563eb\",\n \"primaryDark\": \"#1e40af\",\n \"secondaryLight\": \"#c4b5fd\",\n \"secondary\": \"#8b5cf6\",\n \"secondaryDark\": \"#5b21b6\",\n \"tertiaryLight\": \"#fbbf24\",\n \"tertiary\": \"#f59e0b\",\n \"tertiaryDark\": \"#d97706\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#9bcaff\",\n \"primary\": \"#1e7ae0\",\n \"primaryDark\": \"#033d7e\",\n \"secondaryLight\": \"#ddd6fe\",\n \"secondary\": \"#a78bfa\",\n \"secondaryDark\": \"#7c3aed\",\n \"tertiaryLight\": \"#fed7aa\",\n \"tertiary\": \"#fb923c\",\n \"tertiaryDark\": \"#ea580c\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n },\n \"logo\": {\n \"dark\": \"https://docs.doccupine.com/logo-dark.svg\",\n \"light\": \"https://docs.doccupine.com/logo-light.svg\"\n }\n}\n```\n\n## Modes\n\n- **default**: The base color palette for your site.\n- **dark**: Dark\u2011mode palette.\n\n## Fields\n\n- **primaryLight**: A lighter variant of your brand color, used for subtle accents and backgrounds.\n- **primary**: The main brand color.\n- **primaryDark**: A darker variant of your brand color for emphasis and hover states.\n- **secondaryLight**: A lighter variant of your secondary color, used for subtle accents and backgrounds.\n- **secondary**: The secondary brand color used for highlights and UI accents.\n- **secondaryDark**: A darker variant of your secondary color for emphasis and hover states.\n- **tertiaryLight**: A lighter variant of your tertiary color, used for subtle accents and backgrounds.\n- **tertiary**: The tertiary accent color.\n- **tertiaryDark**: A darker variant of your tertiary color for emphasis and hover states.\n- **grayLight**: Light gray for surfaces and borders.\n- **gray**: Neutral gray for text and UI elements.\n- **grayDark**: Dark gray for headings or high\u2011contrast text.\n- **success**: Positive/confirmation color.\n- **error**: Error/destructive color.\n- **warning**: Warning/attention color.\n- **info**: Informational/highlight color.\n- **dark**: The darkest/base color (often page background in dark mode).\n- **light**: The lightest/base color (often page background in light mode).\n- **logo.light**: Path or URL to the logo used on light backgrounds. Recommended size: 164\u00D730 px.\n- **logo.dark**: Path or URL to the logo used on dark backgrounds. Recommended size: 164\u00D730 px.\n\n## Behavior\n\n- **Placement**: Put `theme.json` in the project root alongside `config.json`.\n- **Partial palettes**: If a key is missing in a mode, consumers may fall back to the `default` value.\n- **Logo size**: Recommended dimensions are 164px width and 30px height.\n\n<Callout type=\"warning\">\n Use valid hex colors (e.g., `#22c55e`). Invalid color values may cause unexpected rendering.\n</Callout>\n\n## Tips\n\n- **Contrast**: Ensure sufficient contrast between text and backgrounds for readability.\n- **Branding**: Start with your brand\u2019s `primary` color, then derive `primaryLight` and `primaryDark`.\n- **Iterate**: Adjust colors and refresh the site to preview changes quickly.\n\n# Demo\n\nIn the following demos, you can see how the theme can be changed. To override the theme, create a `theme.json` file in the project root and copy paste the code below.\n\n<DemoTheme variant=\"purple\" />\n<DemoTheme variant=\"green\" />\n<DemoTheme variant=\"yellow\" />\n<DemoTheme />\n\n## Purple\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#c4b5fd\",\n \"primary\": \"#8b5cf6\",\n \"primaryDark\": \"#5b21b6\",\n \"secondaryLight\": \"#86efac\",\n \"secondary\": \"#22c55e\",\n \"secondaryDark\": \"#15803d\",\n \"tertiaryLight\": \"#fbbf24\",\n \"tertiary\": \"#f59e0b\",\n \"tertiaryDark\": \"#d97706\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#ddd6fe\",\n \"primary\": \"#a78bfa\",\n \"primaryDark\": \"#7c3aed\",\n \"secondaryLight\": \"#6ee7b7\",\n \"secondary\": \"#10b981\",\n \"secondaryDark\": \"#065f46\",\n \"tertiaryLight\": \"#fed7aa\",\n \"tertiary\": \"#fb923c\",\n \"tertiaryDark\": \"#ea580c\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n }\n}\n```\n\n<DemoTheme variant=\"purple\" />\n\n## Green\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#86efac\",\n \"primary\": \"#22c55e\",\n \"primaryDark\": \"#15803d\",\n \"secondaryLight\": \"#c4b5fd\",\n \"secondary\": \"#8b5cf6\",\n \"secondaryDark\": \"#5b21b6\",\n \"tertiaryLight\": \"#fbbf24\",\n \"tertiary\": \"#f59e0b\",\n \"tertiaryDark\": \"#d97706\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#6ee7b7\",\n \"primary\": \"#10b981\",\n \"primaryDark\": \"#065f46\",\n \"secondaryLight\": \"#ddd6fe\",\n \"secondary\": \"#a78bfa\",\n \"secondaryDark\": \"#7c3aed\",\n \"tertiaryLight\": \"#fed7aa\",\n \"tertiary\": \"#fb923c\",\n \"tertiaryDark\": \"#ea580c\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n }\n}\n```\n\n<DemoTheme variant=\"green\" />\n\n## Yellow\n\n```json\n{\n \"default\": {\n \"primaryLight\": \"#fbbf24\",\n \"primary\": \"#f59e0b\",\n \"primaryDark\": \"#d97706\",\n \"secondaryLight\": \"#c4b5fd\",\n \"secondary\": \"#8b5cf6\",\n \"secondaryDark\": \"#5b21b6\",\n \"tertiaryLight\": \"#86efac\",\n \"tertiary\": \"#22c55e\",\n \"tertiaryDark\": \"#15803d\",\n \"grayLight\": \"#f3f4f6\",\n \"gray\": \"#9ca3af\",\n \"grayDark\": \"#374151\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#000000\",\n \"light\": \"#ffffff\"\n },\n \"dark\": {\n \"primaryLight\": \"#fed7aa\",\n \"primary\": \"#fb923c\",\n \"primaryDark\": \"#ea580c\",\n \"secondaryLight\": \"#ddd6fe\",\n \"secondary\": \"#a78bfa\",\n \"secondaryDark\": \"#7c3aed\",\n \"tertiaryLight\": \"#6ee7b7\",\n \"tertiary\": \"#10b981\",\n \"tertiaryDark\": \"#065f46\",\n \"grayLight\": \"#1f2937\",\n \"gray\": \"#6b7280\",\n \"grayDark\": \"#9ca3af\",\n \"success\": \"#10b981\",\n \"error\": \"#f43f5e\",\n \"warning\": \"#f59e0b\",\n \"info\": \"#3b82f6\",\n \"dark\": \"#ffffff\",\n \"light\": \"#000000\"\n }\n}\n```\n\n<DemoTheme variant=\"yellow\" />";
|
|
@@ -6,10 +6,13 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 5
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Theme
|
|
11
|
+
|
|
10
12
|
Define your site’s color system with a \`theme.json\` file. This lets you tailor the look and feel of your documentation without changing content.
|
|
11
13
|
|
|
12
14
|
## theme.json
|
|
15
|
+
|
|
13
16
|
Place a \`theme.json\` at your project root (the same folder where you execute \`npx doccupine\`). It supports multiple modes. Define a \`default\` mode and a \`dark\` mode.
|
|
14
17
|
|
|
15
18
|
\`\`\`json
|
|
@@ -62,10 +65,12 @@ Place a \`theme.json\` at your project root (the same folder where you execute \
|
|
|
62
65
|
\`\`\`
|
|
63
66
|
|
|
64
67
|
## Modes
|
|
68
|
+
|
|
65
69
|
- **default**: The base color palette for your site.
|
|
66
70
|
- **dark**: Dark‑mode palette.
|
|
67
71
|
|
|
68
72
|
## Fields
|
|
73
|
+
|
|
69
74
|
- **primaryLight**: A lighter variant of your brand color, used for subtle accents and backgrounds.
|
|
70
75
|
- **primary**: The main brand color.
|
|
71
76
|
- **primaryDark**: A darker variant of your brand color for emphasis and hover states.
|
|
@@ -88,6 +93,7 @@ Place a \`theme.json\` at your project root (the same folder where you execute \
|
|
|
88
93
|
- **logo.dark**: Path or URL to the logo used on dark backgrounds. Recommended size: 164×30 px.
|
|
89
94
|
|
|
90
95
|
## Behavior
|
|
96
|
+
|
|
91
97
|
- **Placement**: Put \`theme.json\` in the project root alongside \`config.json\`.
|
|
92
98
|
- **Partial palettes**: If a key is missing in a mode, consumers may fall back to the \`default\` value.
|
|
93
99
|
- **Logo size**: Recommended dimensions are 164px width and 30px height.
|
|
@@ -97,11 +103,13 @@ Place a \`theme.json\` at your project root (the same folder where you execute \
|
|
|
97
103
|
</Callout>
|
|
98
104
|
|
|
99
105
|
## Tips
|
|
106
|
+
|
|
100
107
|
- **Contrast**: Ensure sufficient contrast between text and backgrounds for readability.
|
|
101
108
|
- **Branding**: Start with your brand’s \`primary\` color, then derive \`primaryLight\` and \`primaryDark\`.
|
|
102
109
|
- **Iterate**: Adjust colors and refresh the site to preview changes quickly.
|
|
103
110
|
|
|
104
111
|
# Demo
|
|
112
|
+
|
|
105
113
|
In the following demos, you can see how the theme can be changed. To override the theme, create a \`theme.json\` file in the project root and copy paste the code below.
|
|
106
114
|
|
|
107
115
|
<DemoTheme variant="purple" />
|
|
@@ -155,6 +163,7 @@ In the following demos, you can see how the theme can be changed. To override th
|
|
|
155
163
|
}
|
|
156
164
|
}
|
|
157
165
|
\`\`\`
|
|
166
|
+
|
|
158
167
|
<DemoTheme variant="purple" />
|
|
159
168
|
|
|
160
169
|
## Green
|
|
@@ -203,6 +212,7 @@ In the following demos, you can see how the theme can be changed. To override th
|
|
|
203
212
|
}
|
|
204
213
|
}
|
|
205
214
|
\`\`\`
|
|
215
|
+
|
|
206
216
|
<DemoTheme variant="green" />
|
|
207
217
|
|
|
208
218
|
## Yellow
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const updateMdxTemplate = "---\ntitle: \"Update\"\ndescription: \"Easily manage and present change history.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 12\n---\n# Update\nEasily manage and present change history.\n\nThe `Update` component helps you display release notes, version details, and changelogs in a standardized format.\n\n<Update label=\"Example\" description=\"v0.0.1\">\n ## Example entry\n\
|
|
1
|
+
export declare const updateMdxTemplate = "---\ntitle: \"Update\"\ndescription: \"Easily manage and present change history.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 12\n---\n\n# Update\n\nEasily manage and present change history.\n\nThe `Update` component helps you display release notes, version details, and changelogs in a standardized format.\n\n<Update label=\"Example\" description=\"v0.0.1\">\n ## Example entry\n\nYou can include anything here\u2014images, code snippets, or a bullet list of modifications.\n\n\n\n### Key additions\n\n- Fully responsive layout\n- Individual anchor for each update\n- Automatic RSS feed entry generation\n\n</Update>\n\n## Update Usage\n\nYou can combine multiple `Update` components to build complete changelogs.\n\n```mdx\n<Update label=\"Example\" description=\"v0.0.1\">\n ## Example entry\n\nYou can include anything here\u2014images, code snippets, or a bullet list of modifications.\n\n\n\n### Key additions\n\n- Fully responsive layout\n- Individual anchor for each update\n- Automatic RSS feed entry generation\n\n</Update>\n```\n\n## Properties\n\n<Field value=\"label\" type=\"string\" required>\n The label of the update.\n</Field>\n\n<Field value=\"description\" type=\"string\" required>\n The description of the update.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the update.\n</Field>";
|
|
@@ -6,7 +6,9 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 12
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Update
|
|
11
|
+
|
|
10
12
|
Easily manage and present change history.
|
|
11
13
|
|
|
12
14
|
The \`Update\` component helps you display release notes, version details, and changelogs in a standardized format.
|
|
@@ -14,33 +16,36 @@ The \`Update\` component helps you display release notes, version details, and c
|
|
|
14
16
|
<Update label="Example" description="v0.0.1">
|
|
15
17
|
## Example entry
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
You can include anything here—images, code snippets, or a bullet list of modifications.
|
|
20
|
+
|
|
21
|
+

|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
### Key additions
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
- Fully responsive layout
|
|
26
|
+
- Individual anchor for each update
|
|
27
|
+
- Automatic RSS feed entry generation
|
|
22
28
|
|
|
23
|
-
- Fully responsive layout
|
|
24
|
-
- Individual anchor for each update
|
|
25
|
-
- Automatic RSS feed entry generation
|
|
26
29
|
</Update>
|
|
27
30
|
|
|
28
31
|
## Update Usage
|
|
32
|
+
|
|
29
33
|
You can combine multiple \`Update\` components to build complete changelogs.
|
|
30
34
|
|
|
31
35
|
\`\`\`mdx
|
|
32
36
|
<Update label="Example" description="v0.0.1">
|
|
33
37
|
## Example entry
|
|
34
38
|
|
|
35
|
-
|
|
39
|
+
You can include anything here—images, code snippets, or a bullet list of modifications.
|
|
40
|
+
|
|
41
|
+

|
|
36
42
|
|
|
37
|
-
|
|
43
|
+
### Key additions
|
|
38
44
|
|
|
39
|
-
|
|
45
|
+
- Fully responsive layout
|
|
46
|
+
- Individual anchor for each update
|
|
47
|
+
- Automatic RSS feed entry generation
|
|
40
48
|
|
|
41
|
-
- Fully responsive layout
|
|
42
|
-
- Individual anchor for each update
|
|
43
|
-
- Automatic RSS feed entry generation
|
|
44
49
|
</Update>
|
|
45
50
|
\`\`\`
|
|
46
51
|
|
|
@@ -10,38 +10,38 @@ export const packageJsonTemplate = JSON.stringify({
|
|
|
10
10
|
format: "prettier --write .",
|
|
11
11
|
},
|
|
12
12
|
dependencies: {
|
|
13
|
-
"@langchain/anthropic": "^1.3.
|
|
14
|
-
"@langchain/core": "^1.1.
|
|
15
|
-
"@langchain/google-genai": "^2.1.
|
|
16
|
-
"@langchain/openai": "^1.4.
|
|
13
|
+
"@langchain/anthropic": "^1.3.29",
|
|
14
|
+
"@langchain/core": "^1.1.45",
|
|
15
|
+
"@langchain/google-genai": "^2.1.30",
|
|
16
|
+
"@langchain/openai": "^1.4.5",
|
|
17
17
|
"@mdx-js/react": "^3.1.1",
|
|
18
18
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
19
19
|
"@posthog/react": "^1.9.0",
|
|
20
20
|
"cherry-styled-components": "^0.1.17",
|
|
21
|
-
langchain: "^1.
|
|
22
|
-
"lucide-react": "^1.
|
|
21
|
+
langchain: "^1.4.0",
|
|
22
|
+
"lucide-react": "^1.14.0",
|
|
23
23
|
minisearch: "^7.2.0",
|
|
24
|
-
next: "16.2.
|
|
24
|
+
next: "16.2.6",
|
|
25
25
|
"next-mdx-remote": "^6.0.0",
|
|
26
|
-
"posthog-js": "^1.
|
|
27
|
-
"posthog-node": "^5.
|
|
28
|
-
react: "19.2.
|
|
29
|
-
"react-dom": "19.2.
|
|
26
|
+
"posthog-js": "^1.372.10",
|
|
27
|
+
"posthog-node": "^5.33.4",
|
|
28
|
+
react: "19.2.6",
|
|
29
|
+
"react-dom": "19.2.6",
|
|
30
30
|
"rehype-highlight": "^7.0.2",
|
|
31
31
|
"rehype-parse": "^9.0.1",
|
|
32
32
|
"rehype-stringify": "^10.0.1",
|
|
33
33
|
"remark-gfm": "^4.0.1",
|
|
34
34
|
"styled-components": "^6.4.1",
|
|
35
35
|
unified: "^11.0.5",
|
|
36
|
-
zod: "^4.3
|
|
36
|
+
zod: "^4.4.3",
|
|
37
37
|
},
|
|
38
38
|
devDependencies: {
|
|
39
39
|
"@types/node": "^25",
|
|
40
40
|
"@types/react": "^19",
|
|
41
41
|
"@types/react-dom": "^19",
|
|
42
|
-
"baseline-browser-mapping": "^2.10.
|
|
42
|
+
"baseline-browser-mapping": "^2.10.28",
|
|
43
43
|
eslint: "^9",
|
|
44
|
-
"eslint-config-next": "16.2.
|
|
44
|
+
"eslint-config-next": "16.2.6",
|
|
45
45
|
prettier: "^3.8.3",
|
|
46
46
|
typescript: "^6",
|
|
47
47
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pnpmWorkspaceTemplate = "allowBuilds:\n core-js: false\n esbuild: false\n protobufjs: false\n sharp: false\n unrs-resolver: false\n";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "doccupine",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.91",
|
|
4
4
|
"description": "Free and open-source documentation platform. Write MDX, get a production-ready site with AI chat, built-in components, and an MCP server - in one command.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -37,17 +37,16 @@
|
|
|
37
37
|
"chalk": "^5.6.2",
|
|
38
38
|
"chokidar": "^5.0.0",
|
|
39
39
|
"commander": "^14.0.3",
|
|
40
|
-
"fs-extra": "^11.3.
|
|
40
|
+
"fs-extra": "^11.3.5",
|
|
41
41
|
"gray-matter": "^4.0.3",
|
|
42
|
-
"next": "^16.2.
|
|
42
|
+
"next": "^16.2.6",
|
|
43
43
|
"prompts": "^2.4.2",
|
|
44
|
-
"react": "^19.2.
|
|
45
|
-
"react-dom": "^19.2.
|
|
44
|
+
"react": "^19.2.6",
|
|
45
|
+
"react-dom": "^19.2.6"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@types/chokidar": "^2.1.7",
|
|
49
48
|
"@types/fs-extra": "^11.0.4",
|
|
50
|
-
"@types/node": "^25.6.
|
|
49
|
+
"@types/node": "^25.6.2",
|
|
51
50
|
"@types/prompts": "^2.4.9",
|
|
52
51
|
"prettier": "^3.8.3",
|
|
53
52
|
"typescript": "^6.0.3",
|