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
|
@@ -6,7 +6,9 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 11
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Deployment & Hosting
|
|
11
|
+
|
|
10
12
|
The fastest way to deploy your documentation is with the [Doccupine Platform](https://www.doccupine.com). If you prefer to manage your own infrastructure, you can self-host the generated Next.js app on any platform.
|
|
11
13
|
|
|
12
14
|
## Doccupine Platform
|
|
@@ -18,6 +20,7 @@ Sign up at [doccupine.com](https://www.doccupine.com) and connect your repositor
|
|
|
18
20
|
</Callout>
|
|
19
21
|
|
|
20
22
|
### What you get
|
|
23
|
+
|
|
21
24
|
- **Automatic deployments** on every push to your repository
|
|
22
25
|
- **Site customization** through a visual dashboard - no code changes needed
|
|
23
26
|
- **Team collaboration** so your whole team can manage docs together
|
|
@@ -26,6 +29,7 @@ Sign up at [doccupine.com](https://www.doccupine.com) and connect your repositor
|
|
|
26
29
|
- **Zero maintenance** - no servers, no build pipelines, no dependency updates
|
|
27
30
|
|
|
28
31
|
### Getting started
|
|
32
|
+
|
|
29
33
|
1. Create an account at [doccupine.com](https://www.doccupine.com).
|
|
30
34
|
2. Connect your GitHub repository.
|
|
31
35
|
3. Your site is deployed automatically.
|
|
@@ -56,6 +60,7 @@ Doccupine generates a standard Next.js app, so you can deploy it anywhere that s
|
|
|
56
60
|
- **Node.js server** - run \`next build && next start\` on any server or VPS with Node.js installed.
|
|
57
61
|
|
|
58
62
|
### Sitemap and robots.txt
|
|
63
|
+
|
|
59
64
|
Doccupine generates \`sitemap.xml\` and \`robots.txt\` automatically when you set a site URL. This is required for search engine indexing and is strongly recommended for any public deployment.
|
|
60
65
|
|
|
61
66
|
Set the URL in \`config.json\`:
|
|
@@ -75,6 +80,7 @@ NEXT_PUBLIC_SITE_URL=https://staging.example.com
|
|
|
75
80
|
The generated sitemap includes every page from every [section](/sections), with \`lastModified\` derived from each page's frontmatter \`date\` or the file's modification time. When no URL is configured, the sitemap is skipped and \`robots.txt\` is emitted without a sitemap reference.
|
|
76
81
|
|
|
77
82
|
### Troubleshooting
|
|
83
|
+
|
|
78
84
|
- **Build failed** - check build logs. Ensure your lockfile and correct Node.js version are present.
|
|
79
85
|
- **Missing content** - verify your MDX files and assets are in the repository.
|
|
80
86
|
- **SSR issues on edge platforms** - some features (like the AI chat API routes) require a Node.js runtime. Check your platform's documentation for SSR/API route support.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const fieldsMdxTemplate = "---\ntitle: \"Fields\"\ndescription: \"Configure parameters for your API or SDK documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 11\n---\n# Fields\nConfigure parameters for your API or SDK documentation.\n\nFields allow you to describe both the **inputs** (parameters) and **outputs** (responses) of your API. The main field component is available: `Field` for parameters and for responses.\n\n## Fields Usage\nUse the `<Field>` component to declare API or SDK parameters, or define the return values of an API.\n\n<Field value=\"param\" type=\"string\" required>\n Example definition of a parameter field.\n</Field>\n\n```mdx\n<Field value=\"param\" type=\"string\" required>\n Example definition of a parameter field.\n</Field>\n```\n\n## Properties\n\n<Field value=\"value\" type=\"string\" required>\n The name of the field.\n</Field>\n\n<Field value=\"type\" type=\"string\" required>\n The type of the field.\n</Field>\n\n<Field value=\"required\" type=\"boolean\">\n Whether the field is required.\n</Field>";
|
|
1
|
+
export declare const fieldsMdxTemplate = "---\ntitle: \"Fields\"\ndescription: \"Configure parameters for your API or SDK documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 11\n---\n\n# Fields\n\nConfigure parameters for your API or SDK documentation.\n\nFields allow you to describe both the **inputs** (parameters) and **outputs** (responses) of your API. The main field component is available: `Field` for parameters and for responses.\n\n## Fields Usage\n\nUse the `<Field>` component to declare API or SDK parameters, or define the return values of an API.\n\n<Field value=\"param\" type=\"string\" required>\n Example definition of a parameter field.\n</Field>\n\n```mdx\n<Field value=\"param\" type=\"string\" required>\n Example definition of a parameter field.\n</Field>\n```\n\n## Properties\n\n<Field value=\"value\" type=\"string\" required>\n The name of the field.\n</Field>\n\n<Field value=\"type\" type=\"string\" required>\n The type of the field.\n</Field>\n\n<Field value=\"required\" type=\"boolean\">\n Whether the field is required.\n</Field>";
|
|
@@ -6,12 +6,15 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 11
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Fields
|
|
11
|
+
|
|
10
12
|
Configure parameters for your API or SDK documentation.
|
|
11
13
|
|
|
12
14
|
Fields allow you to describe both the **inputs** (parameters) and **outputs** (responses) of your API. The main field component is available: \`Field\` for parameters and for responses.
|
|
13
15
|
|
|
14
16
|
## Fields Usage
|
|
17
|
+
|
|
15
18
|
Use the \`<Field>\` component to declare API or SDK parameters, or define the return values of an API.
|
|
16
19
|
|
|
17
20
|
<Field value="param" type="string" required>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const fontsMdxTemplate = "---\ntitle: \"Fonts\"\ndescription: \"Customize the documentation typography with a fonts.json file (Google Fonts or local custom fonts).\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 7\n---\n# Fonts\nDefine your site\u2019s typography with a `fonts.json` file. You can load fonts from Google Fonts or from local font files bundled with your project.\n\n## fonts.json\nPlace a `fonts.json` at your project root (the same folder where you execute `npx doccupine`). Choose one of the following configurations depending on the source of your fonts.\n\n## Google Fonts\nUse this when your font is hosted by Google Fonts.\n\n```json\n{\n \"googleFont\": {\n \"fontName\": \"Work_Sans\",\n \"subsets\": [\"latin\"],\n \"weight\": \"400\"\n }\n}\n```\n\n### Rules\n- **fontName**: Capitalize each word. If the name contains spaces, replace them with `_`.\n - Example: \"Work Sans\" \u2192 `Work_Sans`\n- **subsets**: Pick the subsets you need (for example, `latin`).\n- **weight**: The font weight to load - a single string (for example, `\"400\"`) or an array of strings (for example, `[\"400\", \"500\", \"700\"]`).\n\n<Callout type=\"warning\">\n The `fontName` must match the Google Fonts name exactly - capitalize each word and replace spaces with underscores.\n</Callout>\n\n### Tips\n- **One primary family**: Start with a single family and weight, then add more if needed.\n- **Readability**: Choose readable body fonts; reserve display fonts for headings.\n\n## Local custom fonts\nUse this when you want to ship your own font files. Upload your font files to the Next.js `public` directory, then reference them with relative paths.\n\n```json\n{\n \"localFonts\": {\n \"src\": [\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"400\",\n \"style\": \"normal\"\n },\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"400\",\n \"style\": \"italic\"\n },\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"700\",\n \"style\": \"normal\"\n },\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"700\",\n \"style\": \"italic\"\n }\n ]\n }\n}\n```\n\n### Single file shorthand\nIf you have only one file, you can use:\n\n```json\n{\n \"localFonts\": \"../public/font.woff\"\n}\n```\n\n### Rules\n- **Upload files**: Place `font.woff` (and any additional weights/styles) in your Next.js `public` directory.\n- **path**: Use a relative path to the file from where it is consumed by your build tooling; the example above uses `../public/font.woff`.\n- **weight**: String value of the font weight (for example, `\"400\"`, `\"700\"`).\n- **style**: `\"normal\"` or `\"italic\"`.\n\n### Tips\n- **Provide only what you need**: Include the minimal set of weights/styles to keep bundle size small.\n- **File formats**: `.woff` is broadly supported and recommended for the web.\n\n## Behavior\n- **Placement**: Put `fonts.json` in the project root alongside `config.json` and (optionally) `theme.json`.\n- **Validation**: Follow the naming rule for `googleFont.fontName` (capitalize, replace spaces with `_`).\n\n<Callout type=\"note\">\n When using local fonts, ensure the referenced files exist under the Next.js `public` directory. The paths in `fonts.json` are relative to where they are consumed by the build tooling.\n</Callout>\n\n## Examples\n- **Google Fonts (single weight)**\n\n```json\n{\n \"googleFont\": {\n \"fontName\": \"Work_Sans\",\n \"subsets\": [\"latin\"],\n \"weight\": \"400\"\n }\n}\n```\n\n- **Google Fonts (multiple weights)**\n\n```json\n{\n \"googleFont\": {\n \"fontName\": \"Work_Sans\",\n \"subsets\": [\"latin\"],\n \"weight\": [\"400\", \"500\", \"600\", \"700\"]\n }\n}\n```\n\n- **Local fonts (multiple weights/styles)**\n\n```json\n{\n \"localFonts\": {\n \"src\": [\n { \"path\": \"../public/font.woff\", \"weight\": \"400\", \"style\": \"normal\" },\n { \"path\": \"../public/font.woff\", \"weight\": \"400\", \"style\": \"italic\" },\n { \"path\": \"../public/font.woff\", \"weight\": \"700\", \"style\": \"normal\" },\n { \"path\": \"../public/font.woff\", \"weight\": \"700\", \"style\": \"italic\" }\n ]\n }\n}\n
|
|
1
|
+
export declare const fontsMdxTemplate = "---\ntitle: \"Fonts\"\ndescription: \"Customize the documentation typography with a fonts.json file (Google Fonts or local custom fonts).\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 7\n---\n\n# Fonts\n\nDefine your site\u2019s typography with a `fonts.json` file. You can load fonts from Google Fonts or from local font files bundled with your project.\n\n## fonts.json\n\nPlace a `fonts.json` at your project root (the same folder where you execute `npx doccupine`). Choose one of the following configurations depending on the source of your fonts.\n\n## Google Fonts\n\nUse this when your font is hosted by Google Fonts.\n\n```json\n{\n \"googleFont\": {\n \"fontName\": \"Work_Sans\",\n \"subsets\": [\"latin\"],\n \"weight\": \"400\"\n }\n}\n```\n\n### Rules\n\n- **fontName**: Capitalize each word. If the name contains spaces, replace them with `_`.\n - Example: \"Work Sans\" \u2192 `Work_Sans`\n- **subsets**: Pick the subsets you need (for example, `latin`).\n- **weight**: The font weight to load - a single string (for example, `\"400\"`) or an array of strings (for example, `[\"400\", \"500\", \"700\"]`).\n\n<Callout type=\"warning\">\n The `fontName` must match the Google Fonts name exactly - capitalize each word and replace spaces with underscores.\n</Callout>\n\n### Tips\n\n- **One primary family**: Start with a single family and weight, then add more if needed.\n- **Readability**: Choose readable body fonts; reserve display fonts for headings.\n\n## Local custom fonts\n\nUse this when you want to ship your own font files. Upload your font files to the Next.js `public` directory, then reference them with relative paths.\n\n```json\n{\n \"localFonts\": {\n \"src\": [\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"400\",\n \"style\": \"normal\"\n },\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"400\",\n \"style\": \"italic\"\n },\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"700\",\n \"style\": \"normal\"\n },\n {\n \"path\": \"../public/font.woff\",\n \"weight\": \"700\",\n \"style\": \"italic\"\n }\n ]\n }\n}\n```\n\n### Single file shorthand\n\nIf you have only one file, you can use:\n\n```json\n{\n \"localFonts\": \"../public/font.woff\"\n}\n```\n\n### Rules\n\n- **Upload files**: Place `font.woff` (and any additional weights/styles) in your Next.js `public` directory.\n- **path**: Use a relative path to the file from where it is consumed by your build tooling; the example above uses `../public/font.woff`.\n- **weight**: String value of the font weight (for example, `\"400\"`, `\"700\"`).\n- **style**: `\"normal\"` or `\"italic\"`.\n\n### Tips\n\n- **Provide only what you need**: Include the minimal set of weights/styles to keep bundle size small.\n- **File formats**: `.woff` is broadly supported and recommended for the web.\n\n## Behavior\n\n- **Placement**: Put `fonts.json` in the project root alongside `config.json` and (optionally) `theme.json`.\n- **Validation**: Follow the naming rule for `googleFont.fontName` (capitalize, replace spaces with `_`).\n\n<Callout type=\"note\">\n When using local fonts, ensure the referenced files exist under the Next.js `public` directory. The paths in `fonts.json` are relative to where they are consumed by the build tooling.\n</Callout>\n\n## Examples\n\n- **Google Fonts (single weight)**\n\n```json\n{\n \"googleFont\": {\n \"fontName\": \"Work_Sans\",\n \"subsets\": [\"latin\"],\n \"weight\": \"400\"\n }\n}\n```\n\n- **Google Fonts (multiple weights)**\n\n```json\n{\n \"googleFont\": {\n \"fontName\": \"Work_Sans\",\n \"subsets\": [\"latin\"],\n \"weight\": [\"400\", \"500\", \"600\", \"700\"]\n }\n}\n```\n\n- **Local fonts (multiple weights/styles)**\n\n```json\n{\n \"localFonts\": {\n \"src\": [\n { \"path\": \"../public/font.woff\", \"weight\": \"400\", \"style\": \"normal\" },\n { \"path\": \"../public/font.woff\", \"weight\": \"400\", \"style\": \"italic\" },\n { \"path\": \"../public/font.woff\", \"weight\": \"700\", \"style\": \"normal\" },\n { \"path\": \"../public/font.woff\", \"weight\": \"700\", \"style\": \"italic\" }\n ]\n }\n}\n```";
|
|
@@ -6,13 +6,17 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 7
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Fonts
|
|
11
|
+
|
|
10
12
|
Define your site’s typography with a \`fonts.json\` file. You can load fonts from Google Fonts or from local font files bundled with your project.
|
|
11
13
|
|
|
12
14
|
## fonts.json
|
|
15
|
+
|
|
13
16
|
Place a \`fonts.json\` at your project root (the same folder where you execute \`npx doccupine\`). Choose one of the following configurations depending on the source of your fonts.
|
|
14
17
|
|
|
15
18
|
## Google Fonts
|
|
19
|
+
|
|
16
20
|
Use this when your font is hosted by Google Fonts.
|
|
17
21
|
|
|
18
22
|
\`\`\`json
|
|
@@ -26,6 +30,7 @@ Use this when your font is hosted by Google Fonts.
|
|
|
26
30
|
\`\`\`
|
|
27
31
|
|
|
28
32
|
### Rules
|
|
33
|
+
|
|
29
34
|
- **fontName**: Capitalize each word. If the name contains spaces, replace them with \`_\`.
|
|
30
35
|
- Example: "Work Sans" → \`Work_Sans\`
|
|
31
36
|
- **subsets**: Pick the subsets you need (for example, \`latin\`).
|
|
@@ -36,10 +41,12 @@ Use this when your font is hosted by Google Fonts.
|
|
|
36
41
|
</Callout>
|
|
37
42
|
|
|
38
43
|
### Tips
|
|
44
|
+
|
|
39
45
|
- **One primary family**: Start with a single family and weight, then add more if needed.
|
|
40
46
|
- **Readability**: Choose readable body fonts; reserve display fonts for headings.
|
|
41
47
|
|
|
42
48
|
## Local custom fonts
|
|
49
|
+
|
|
43
50
|
Use this when you want to ship your own font files. Upload your font files to the Next.js \`public\` directory, then reference them with relative paths.
|
|
44
51
|
|
|
45
52
|
\`\`\`json
|
|
@@ -72,6 +79,7 @@ Use this when you want to ship your own font files. Upload your font files to th
|
|
|
72
79
|
\`\`\`
|
|
73
80
|
|
|
74
81
|
### Single file shorthand
|
|
82
|
+
|
|
75
83
|
If you have only one file, you can use:
|
|
76
84
|
|
|
77
85
|
\`\`\`json
|
|
@@ -81,16 +89,19 @@ If you have only one file, you can use:
|
|
|
81
89
|
\`\`\`
|
|
82
90
|
|
|
83
91
|
### Rules
|
|
92
|
+
|
|
84
93
|
- **Upload files**: Place \`font.woff\` (and any additional weights/styles) in your Next.js \`public\` directory.
|
|
85
94
|
- **path**: Use a relative path to the file from where it is consumed by your build tooling; the example above uses \`../public/font.woff\`.
|
|
86
95
|
- **weight**: String value of the font weight (for example, \`"400"\`, \`"700"\`).
|
|
87
96
|
- **style**: \`"normal"\` or \`"italic"\`.
|
|
88
97
|
|
|
89
98
|
### Tips
|
|
99
|
+
|
|
90
100
|
- **Provide only what you need**: Include the minimal set of weights/styles to keep bundle size small.
|
|
91
101
|
- **File formats**: \`.woff\` is broadly supported and recommended for the web.
|
|
92
102
|
|
|
93
103
|
## Behavior
|
|
104
|
+
|
|
94
105
|
- **Placement**: Put \`fonts.json\` in the project root alongside \`config.json\` and (optionally) \`theme.json\`.
|
|
95
106
|
- **Validation**: Follow the naming rule for \`googleFont.fontName\` (capitalize, replace spaces with \`_\`).
|
|
96
107
|
|
|
@@ -99,6 +110,7 @@ If you have only one file, you can use:
|
|
|
99
110
|
</Callout>
|
|
100
111
|
|
|
101
112
|
## Examples
|
|
113
|
+
|
|
102
114
|
- **Google Fonts (single weight)**
|
|
103
115
|
|
|
104
116
|
\`\`\`json
|
|
@@ -136,5 +148,4 @@ If you have only one file, you can use:
|
|
|
136
148
|
]
|
|
137
149
|
}
|
|
138
150
|
}
|
|
139
|
-
|
|
140
|
-
`;
|
|
151
|
+
\`\`\``;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const footerLinksMdxTemplate = "---\ntitle: \"Footer Links\"\ndescription: \"Add static links at the bottom of the documentation pages.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 4\n---\n# Footer Links\nAdd a row of static links at the bottom of your documentation pages, just above the footer. Links open in a new tab and are useful for pointing users to related resources, repositories, or external docs.\n\n## links.json\nPlace a `links.json` at your project root (the same folder where you execute `npx doccupine`). When present, Doccupine displays the links at the bottom of each page. You can add as many links as you need.\n\n### Example links.json\n\n```json\n[\n {\n \"title\": \"Back to Home\",\n \"url\": \"https://doccupine.com\",\n \"icon\": \"arrow-left\"\n },\n {\n \"title\": \"GitHub\",\n \"url\": \"https://github.com/doccupine\",\n \"icon\": \"git-branch\"\n },\n {\n \"title\": \"Discord\",\n \"url\": \"https://discord.gg/E9BufYGPhG\",\n \"icon\": \"message-circle\"\n }\n]\n```\n\n### Fields\n- **title**: The label shown for the link.\n- **url**: The destination URL. Links open in a new tab with `target=\"_blank\"` and `rel=\"noopener noreferrer\"`.\n- **icon**: The icon to display next to the label. Icons are from [Lucide](https://lucide.dev/).\n\n## Behavior\n- **Empty or missing file**: If `links.json` is empty or not present, the footer links are hidden.\n- **Order**: Links appear in the same order as in the array.\n- **No limit**: Add as many links as you want; they wrap automatically on smaller screens.";
|
|
1
|
+
export declare const footerLinksMdxTemplate = "---\ntitle: \"Footer Links\"\ndescription: \"Add static links at the bottom of the documentation pages.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 4\n---\n\n# Footer Links\n\nAdd a row of static links at the bottom of your documentation pages, just above the footer. Links open in a new tab and are useful for pointing users to related resources, repositories, or external docs.\n\n## links.json\n\nPlace a `links.json` at your project root (the same folder where you execute `npx doccupine`). When present, Doccupine displays the links at the bottom of each page. You can add as many links as you need.\n\n### Example links.json\n\n```json\n[\n {\n \"title\": \"Back to Home\",\n \"url\": \"https://doccupine.com\",\n \"icon\": \"arrow-left\"\n },\n {\n \"title\": \"GitHub\",\n \"url\": \"https://github.com/doccupine\",\n \"icon\": \"git-branch\"\n },\n {\n \"title\": \"Discord\",\n \"url\": \"https://discord.gg/E9BufYGPhG\",\n \"icon\": \"message-circle\"\n }\n]\n```\n\n### Fields\n\n- **title**: The label shown for the link.\n- **url**: The destination URL. Links open in a new tab with `target=\"_blank\"` and `rel=\"noopener noreferrer\"`.\n- **icon**: The icon to display next to the label. Icons are from [Lucide](https://lucide.dev/).\n\n## Behavior\n\n- **Empty or missing file**: If `links.json` is empty or not present, the footer links are hidden.\n- **Order**: Links appear in the same order as in the array.\n- **No limit**: Add as many links as you want; they wrap automatically on smaller screens.";
|
|
@@ -6,10 +6,13 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 4
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Footer Links
|
|
11
|
+
|
|
10
12
|
Add a row of static links at the bottom of your documentation pages, just above the footer. Links open in a new tab and are useful for pointing users to related resources, repositories, or external docs.
|
|
11
13
|
|
|
12
14
|
## links.json
|
|
15
|
+
|
|
13
16
|
Place a \`links.json\` at your project root (the same folder where you execute \`npx doccupine\`). When present, Doccupine displays the links at the bottom of each page. You can add as many links as you need.
|
|
14
17
|
|
|
15
18
|
### Example links.json
|
|
@@ -35,11 +38,13 @@ Place a \`links.json\` at your project root (the same folder where you execute \
|
|
|
35
38
|
\`\`\`
|
|
36
39
|
|
|
37
40
|
### Fields
|
|
41
|
+
|
|
38
42
|
- **title**: The label shown for the link.
|
|
39
43
|
- **url**: The destination URL. Links open in a new tab with \`target="_blank"\` and \`rel="noopener noreferrer"\`.
|
|
40
44
|
- **icon**: The icon to display next to the label. Icons are from [Lucide](https://lucide.dev/).
|
|
41
45
|
|
|
42
46
|
## Behavior
|
|
47
|
+
|
|
43
48
|
- **Empty or missing file**: If \`links.json\` is empty or not present, the footer links are hidden.
|
|
44
49
|
- **Order**: Links appear in the same order as in the array.
|
|
45
50
|
- **No limit**: Add as many links as you want; they wrap automatically on smaller screens.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const globalsMdxTemplate = "---\ntitle: \"Globals\"\ndescription: \"Configure global settings for your documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 1\n---\n# Global Configuration\nUse a `config.json` file to define project\u2011wide metadata for your documentation site. These values are applied to every generated page unless a page overrides them in its own frontmatter.\n\n## config.json\nPlace a `config.json` at your project root (the same folder where you execute `npx doccupine`) to define global metadata for your documentation site.\n\n```json\n{\n \"name\": \"Doccupine\",\n \"description\": \"Doccupine is a 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.\",\n \"icon\": \"https://docs.doccupine.com/favicon.ico\",\n \"image\": \"https://docs.doccupine.com/preview.png\",\n \"url\": \"https://docs.example.com\"\n}\n```\n\n## Fields\nAll fields are optional. Doccupine uses sensible defaults when a field is not set.\n\n- **name**: The primary name of your documentation website. Displayed in the site title and used in various UI elements.\n- **description**: A concise summary of your project, used in site metadata (e.g., HTML meta description) and social previews when not overridden.\n- **icon**: The favicon for your site. You can provide a full URL or a relative path to an asset in your project.\n- **image**: The Open Graph image used when links to your docs are shared on social platforms. Accepts a full URL or a relative path.\n- **url**: The public URL of your deployed site. Used as the base URL for `sitemap.xml` and `robots.txt`. When omitted, no sitemap is generated. Can be overridden at deploy time with the `NEXT_PUBLIC_SITE_URL` environment variable.\n\n## Per-page overrides\nAny page can override global values by defining the matching key in its frontmatter. When present, the page's value takes precedence over `config.json` for that page only.\n\n| Frontmatter field | Overrides
|
|
1
|
+
export declare const globalsMdxTemplate = "---\ntitle: \"Globals\"\ndescription: \"Configure global settings for your documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 1\n---\n\n# Global Configuration\n\nUse a `config.json` file to define project\u2011wide metadata for your documentation site. These values are applied to every generated page unless a page overrides them in its own frontmatter.\n\n## config.json\n\nPlace a `config.json` at your project root (the same folder where you execute `npx doccupine`) to define global metadata for your documentation site.\n\n```json\n{\n \"name\": \"Doccupine\",\n \"description\": \"Doccupine is a 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.\",\n \"icon\": \"https://docs.doccupine.com/favicon.ico\",\n \"image\": \"https://docs.doccupine.com/preview.png\",\n \"url\": \"https://docs.example.com\"\n}\n```\n\n## Fields\n\nAll fields are optional. Doccupine uses sensible defaults when a field is not set.\n\n- **name**: The primary name of your documentation website. Displayed in the site title and used in various UI elements.\n- **description**: A concise summary of your project, used in site metadata (e.g., HTML meta description) and social previews when not overridden.\n- **icon**: The favicon for your site. You can provide a full URL or a relative path to an asset in your project.\n- **image**: The Open Graph image used when links to your docs are shared on social platforms. Accepts a full URL or a relative path.\n- **url**: The public URL of your deployed site. Used as the base URL for `sitemap.xml` and `robots.txt`. When omitted, no sitemap is generated. Can be overridden at deploy time with the `NEXT_PUBLIC_SITE_URL` environment variable.\n\n## Per-page overrides\n\nAny page can override global values by defining the matching key in its frontmatter. When present, the page's value takes precedence over `config.json` for that page only.\n\n| Frontmatter field | Overrides | Effect |\n| ----------------- | ------------- | ----------------------------------------------------------- |\n| **title** | - | Page title in metadata and Open Graph |\n| **description** | `description` | Meta description and Open Graph description |\n| **name** | `name` | Site name shown in the title suffix (e.g. \"Page - My Docs\") |\n| **icon** | `icon` | Favicon for this page |\n| **image** | `image` | Open Graph preview image |\n| **section** | - | Assigns the page to a [section](/sections) |\n| **sectionOrder** | - | Controls section position in the tab bar |\n| **sectionLabel** | - | Renames the default \"Docs\" tab (use on `index.mdx`) |\n\n<Callout type=\"note\">\n If a key is not specified in a page's frontmatter, Doccupine falls back to the corresponding value in `config.json`.\n</Callout>\n\nExample frontmatter in an `.mdx` file:\n\n```text\n---\ntitle: \"My Feature\"\ndescription: \"A focused description just for this page.\"\nname: \"My Product Docs\"\nicon: \"/custom-favicon.ico\"\nimage: \"/custom-preview.png\"\ndate: \"2026-02-19\"\ncategory: \"Guides\"\n---\n```";
|
|
@@ -7,10 +7,13 @@ category: "Configuration"
|
|
|
7
7
|
categoryOrder: 3
|
|
8
8
|
order: 1
|
|
9
9
|
---
|
|
10
|
+
|
|
10
11
|
# Global Configuration
|
|
12
|
+
|
|
11
13
|
Use a \`config.json\` file to define project‑wide metadata for your documentation site. These values are applied to every generated page unless a page overrides them in its own frontmatter.
|
|
12
14
|
|
|
13
15
|
## config.json
|
|
16
|
+
|
|
14
17
|
Place a \`config.json\` at your project root (the same folder where you execute \`npx doccupine\`) to define global metadata for your documentation site.
|
|
15
18
|
|
|
16
19
|
\`\`\`json
|
|
@@ -24,6 +27,7 @@ Place a \`config.json\` at your project root (the same folder where you execute
|
|
|
24
27
|
\`\`\`
|
|
25
28
|
|
|
26
29
|
## Fields
|
|
30
|
+
|
|
27
31
|
All fields are optional. Doccupine uses sensible defaults when a field is not set.
|
|
28
32
|
|
|
29
33
|
- **name**: The primary name of your documentation website. Displayed in the site title and used in various UI elements.
|
|
@@ -33,18 +37,19 @@ All fields are optional. Doccupine uses sensible defaults when a field is not se
|
|
|
33
37
|
- **url**: The public URL of your deployed site. Used as the base URL for \`sitemap.xml\` and \`robots.txt\`. When omitted, no sitemap is generated. Can be overridden at deploy time with the \`NEXT_PUBLIC_SITE_URL\` environment variable.
|
|
34
38
|
|
|
35
39
|
## Per-page overrides
|
|
40
|
+
|
|
36
41
|
Any page can override global values by defining the matching key in its frontmatter. When present, the page's value takes precedence over \`config.json\` for that page only.
|
|
37
42
|
|
|
38
|
-
| Frontmatter field | Overrides
|
|
39
|
-
|
|
40
|
-
| **title**
|
|
41
|
-
| **description**
|
|
42
|
-
| **name**
|
|
43
|
-
| **icon**
|
|
44
|
-
| **image**
|
|
45
|
-
| **section**
|
|
46
|
-
| **sectionOrder**
|
|
47
|
-
| **sectionLabel**
|
|
43
|
+
| Frontmatter field | Overrides | Effect |
|
|
44
|
+
| ----------------- | ------------- | ----------------------------------------------------------- |
|
|
45
|
+
| **title** | - | Page title in metadata and Open Graph |
|
|
46
|
+
| **description** | \`description\` | Meta description and Open Graph description |
|
|
47
|
+
| **name** | \`name\` | Site name shown in the title suffix (e.g. "Page - My Docs") |
|
|
48
|
+
| **icon** | \`icon\` | Favicon for this page |
|
|
49
|
+
| **image** | \`image\` | Open Graph preview image |
|
|
50
|
+
| **section** | - | Assigns the page to a [section](/sections) |
|
|
51
|
+
| **sectionOrder** | - | Controls section position in the tab bar |
|
|
52
|
+
| **sectionLabel** | - | Renames the default "Docs" tab (use on \`index.mdx\`) |
|
|
48
53
|
|
|
49
54
|
<Callout type="note">
|
|
50
55
|
If a key is not specified in a page's frontmatter, Doccupine falls back to the corresponding value in \`config.json\`.
|
|
@@ -62,6 +67,4 @@ image: "/custom-preview.png"
|
|
|
62
67
|
date: "2026-02-19"
|
|
63
68
|
category: "Guides"
|
|
64
69
|
---
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
`;
|
|
70
|
+
\`\`\``;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const headersAndTextMdxTemplate = "---\ntitle: \"Headers and Text\"\ndescription: \"Learn how to structure and style your content with headers, formatting, and links.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 1\n---\n# Headers and Text\nLearn how to structure and style your content with headers, formatting, and links.\n\n## Headers\nHeaders define the hierarchy of your content and automatically generate navigation anchors. They also appear in the table of contents, helping readers quickly scan through documentation.\n\n### Creating headers\nAdd `#` symbols before text to create headers at various levels:\n\n```text\n## Main section header\n### Subsection header\n#### Nested subsection header\n```\n\n## Text Formatting\nMarkdown text styling is supported for emphasis, highlighting, and readability.\n\n### Basic formatting\nUse these common syntax options:\n\n- Bold: `**bold text**` \u2192 **bold text**\n- Italic: `*italic text*` \u2192
|
|
1
|
+
export declare const headersAndTextMdxTemplate = "---\ntitle: \"Headers and Text\"\ndescription: \"Learn how to structure and style your content with headers, formatting, and links.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 1\n---\n\n# Headers and Text\n\nLearn how to structure and style your content with headers, formatting, and links.\n\n## Headers\n\nHeaders define the hierarchy of your content and automatically generate navigation anchors. They also appear in the table of contents, helping readers quickly scan through documentation.\n\n### Creating headers\n\nAdd `#` symbols before text to create headers at various levels:\n\n```text\n## Main section header\n### Subsection header\n#### Nested subsection header\n```\n\n## Text Formatting\n\nMarkdown text styling is supported for emphasis, highlighting, and readability.\n\n### Basic formatting\n\nUse these common syntax options:\n\n- Bold: `**bold text**` \u2192 **bold text**\n- Italic: `*italic text*` \u2192 _italic text_\n- Strikethrough: `~~strikethrough~~` \u2192 ~~strikethrough~~\n\n### Combining formats\n\nYou can mix multiple styles at once for clarity:\n\n```text\n**_bold and italic_**\n**~~bold and strikethrough~~**\n*~~italic and strikethrough~~**\n```\n\n## Superscript and subscript\n\nFor formulas, notes, or variables, use HTML tags:\n\n- Superscript `X<sup>2</sup>` \u2192 X<sup>2</sup>\n- Subscript `H<sub>2</sub>O` \u2192 H<sub>2</sub>O\n\n## Links\n\nLinks connect users to internal pages or external resources. Always use descriptive link text for better accessibility.\n\n### Internal links\n\nReference other docs with root-relative paths:\n\n```text\n[Getting Started](/)\n[Commands](/commands)\n```\n\n- [Getting Started](/)\n- [Commands](/commands)\n\n### External links\n\nPoint to external pages by including full URLs:\n\n```text\n[Markdown Guide](https://www.markdownguide.org/)\n```\n\n[Markdown Guide](https://www.markdownguide.org/)\n\n## Blockquotes\n\nBlockquotes are used to visually highlight key information, quotations, or examples.\n\n### Single line blockquotes\n\nPrefix text with `>` for a single-line blockquote:\n\n```text\n> Highlighted message or quote\n```\n\n> Highlighted message or quote\n\n### Multi-line blockquotes\n\nFor larger quotes spanning more than one paragraph:\n\n```text\n> This is a blockquote that spans multiple lines.\n> It can include several paragraphs of text.\n> Each new line starts with a `>` symbol.\n```\n\n> This is a blockquote that spans multiple lines.\n> It can include several paragraphs of text.\n> Each new line starts with a `>` symbol.\n\n## Line Breaks and Spacing\n\nControl spacing to improve readability and layout.\n\n### Paragraph breaks\n\nSeparate paragraphs with blank lines:\n\n```text\nFirst paragraph.\n\nSecond paragraph.\n```\n\nFirst paragraph.\n\nSecond paragraph.\n\n## Manual line breaks\n\nFor shorter breaks inside the same paragraph, use `<br />`:\n\n```text\nThis is one line.<br />\nThis is the next line.\n```\n\nThis is one line.<br />\nThis is the next line.\n\n# Best Practices\n\n## Organizing content\n\n- Use headers to establish hierarchy\n- Maintain logical order (avoid skipping levels, e.g., H2 \u2192 H4)\n- Always write meaningful, descriptive headers\n\n## Formatting text\n\n- Use **bold** for key emphasis only\n- Use _italics_ for emphasis or technical terms\n- Limit formatting combinations to maintain readability\n\n## Links usage\n\n- Avoid vague text like \u201Cclick here\u201D\n- Prefer root-relative paths for internal links\n- Regularly validate links to ensure they are not broken";
|
|
@@ -6,13 +6,17 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 1
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Headers and Text
|
|
11
|
+
|
|
10
12
|
Learn how to structure and style your content with headers, formatting, and links.
|
|
11
13
|
|
|
12
14
|
## Headers
|
|
15
|
+
|
|
13
16
|
Headers define the hierarchy of your content and automatically generate navigation anchors. They also appear in the table of contents, helping readers quickly scan through documentation.
|
|
14
17
|
|
|
15
18
|
### Creating headers
|
|
19
|
+
|
|
16
20
|
Add \`#\` symbols before text to create headers at various levels:
|
|
17
21
|
|
|
18
22
|
\`\`\`text
|
|
@@ -22,16 +26,19 @@ Add \`#\` symbols before text to create headers at various levels:
|
|
|
22
26
|
\`\`\`
|
|
23
27
|
|
|
24
28
|
## Text Formatting
|
|
29
|
+
|
|
25
30
|
Markdown text styling is supported for emphasis, highlighting, and readability.
|
|
26
31
|
|
|
27
32
|
### Basic formatting
|
|
33
|
+
|
|
28
34
|
Use these common syntax options:
|
|
29
35
|
|
|
30
36
|
- Bold: \`**bold text**\` → **bold text**
|
|
31
|
-
- Italic: \`*italic text*\` →
|
|
37
|
+
- Italic: \`*italic text*\` → _italic text_
|
|
32
38
|
- Strikethrough: \`~~strikethrough~~\` → ~~strikethrough~~
|
|
33
39
|
|
|
34
40
|
### Combining formats
|
|
41
|
+
|
|
35
42
|
You can mix multiple styles at once for clarity:
|
|
36
43
|
|
|
37
44
|
\`\`\`text
|
|
@@ -41,15 +48,18 @@ You can mix multiple styles at once for clarity:
|
|
|
41
48
|
\`\`\`
|
|
42
49
|
|
|
43
50
|
## Superscript and subscript
|
|
51
|
+
|
|
44
52
|
For formulas, notes, or variables, use HTML tags:
|
|
45
53
|
|
|
46
54
|
- Superscript \`X<sup>2</sup>\` → X<sup>2</sup>
|
|
47
55
|
- Subscript \`H<sub>2</sub>O\` → H<sub>2</sub>O
|
|
48
56
|
|
|
49
57
|
## Links
|
|
58
|
+
|
|
50
59
|
Links connect users to internal pages or external resources. Always use descriptive link text for better accessibility.
|
|
51
60
|
|
|
52
61
|
### Internal links
|
|
62
|
+
|
|
53
63
|
Reference other docs with root-relative paths:
|
|
54
64
|
|
|
55
65
|
\`\`\`text
|
|
@@ -61,6 +71,7 @@ Reference other docs with root-relative paths:
|
|
|
61
71
|
- [Commands](/commands)
|
|
62
72
|
|
|
63
73
|
### External links
|
|
74
|
+
|
|
64
75
|
Point to external pages by including full URLs:
|
|
65
76
|
|
|
66
77
|
\`\`\`text
|
|
@@ -70,9 +81,11 @@ Point to external pages by including full URLs:
|
|
|
70
81
|
[Markdown Guide](https://www.markdownguide.org/)
|
|
71
82
|
|
|
72
83
|
## Blockquotes
|
|
84
|
+
|
|
73
85
|
Blockquotes are used to visually highlight key information, quotations, or examples.
|
|
74
86
|
|
|
75
87
|
### Single line blockquotes
|
|
88
|
+
|
|
76
89
|
Prefix text with \`>\` for a single-line blockquote:
|
|
77
90
|
|
|
78
91
|
\`\`\`text
|
|
@@ -82,6 +95,7 @@ Prefix text with \`>\` for a single-line blockquote:
|
|
|
82
95
|
> Highlighted message or quote
|
|
83
96
|
|
|
84
97
|
### Multi-line blockquotes
|
|
98
|
+
|
|
85
99
|
For larger quotes spanning more than one paragraph:
|
|
86
100
|
|
|
87
101
|
\`\`\`text
|
|
@@ -95,9 +109,11 @@ For larger quotes spanning more than one paragraph:
|
|
|
95
109
|
> Each new line starts with a \`>\` symbol.
|
|
96
110
|
|
|
97
111
|
## Line Breaks and Spacing
|
|
112
|
+
|
|
98
113
|
Control spacing to improve readability and layout.
|
|
99
114
|
|
|
100
115
|
### Paragraph breaks
|
|
116
|
+
|
|
101
117
|
Separate paragraphs with blank lines:
|
|
102
118
|
|
|
103
119
|
\`\`\`text
|
|
@@ -111,6 +127,7 @@ First paragraph.
|
|
|
111
127
|
Second paragraph.
|
|
112
128
|
|
|
113
129
|
## Manual line breaks
|
|
130
|
+
|
|
114
131
|
For shorter breaks inside the same paragraph, use \`<br />\`:
|
|
115
132
|
|
|
116
133
|
\`\`\`text
|
|
@@ -124,16 +141,19 @@ This is the next line.
|
|
|
124
141
|
# Best Practices
|
|
125
142
|
|
|
126
143
|
## Organizing content
|
|
144
|
+
|
|
127
145
|
- Use headers to establish hierarchy
|
|
128
146
|
- Maintain logical order (avoid skipping levels, e.g., H2 → H4)
|
|
129
147
|
- Always write meaningful, descriptive headers
|
|
130
148
|
|
|
131
149
|
## Formatting text
|
|
150
|
+
|
|
132
151
|
- Use **bold** for key emphasis only
|
|
133
|
-
- Use
|
|
152
|
+
- Use _italics_ for emphasis or technical terms
|
|
134
153
|
- Limit formatting combinations to maintain readability
|
|
135
154
|
|
|
136
155
|
## Links usage
|
|
156
|
+
|
|
137
157
|
- Avoid vague text like “click here”
|
|
138
158
|
- Prefer root-relative paths for internal links
|
|
139
159
|
- Regularly validate links to ensure they are not broken`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const iconsMdxTemplate = "---\ntitle: \"Icons\"\ndescription: \"Integrate visual icons from well-known libraries to enrich your documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 10\n---\n# Icons\nIntegrate visual icons from well-known libraries to enrich your documentation.\n\nIcons can be sourced from Lucide, SVG elements, external URLs, or local files within your project directory.\n\n<Icon name=\"flag\" size={32} />\n\n```mdx\n<Icon name=\"flag\" size={32} />\n```\n\n## Inline icons\nYou can use icons directly within text to highlight information or add visual context.\n\n<Icon name=\"flag\" size={16} /> Build your documentation seamlessly.\n\n```mdx\n<Icon name=\"flag\" size={16} /> Build your documentation seamlessly.\n```\n\n## Properties\n\n<Field value=\"name\" type=\"string\" required>\n The icon to display.\n</Field>\n\n- [**Lucide icon**](https://lucide.dev/icons) name\n\n<Field value=\"size\" type=\"number\">\n The size of the icon in pixels.\n</Field>\n\n<Field value=\"color\" type=\"string\">\n The color of the icon as a hex code (for example, `#FF5733`).\n</Field>";
|
|
1
|
+
export declare const iconsMdxTemplate = "---\ntitle: \"Icons\"\ndescription: \"Integrate visual icons from well-known libraries to enrich your documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 10\n---\n\n# Icons\n\nIntegrate visual icons from well-known libraries to enrich your documentation.\n\nIcons can be sourced from Lucide, SVG elements, external URLs, or local files within your project directory.\n\n<Icon name=\"flag\" size={32} />\n\n```mdx\n<Icon name=\"flag\" size={32} />\n```\n\n## Inline icons\n\nYou can use icons directly within text to highlight information or add visual context.\n\n<Icon name=\"flag\" size={16} /> Build your documentation seamlessly.\n\n```mdx\n<Icon name=\"flag\" size={16} /> Build your documentation seamlessly.\n```\n\n## Properties\n\n<Field value=\"name\" type=\"string\" required>\n The icon to display.\n</Field>\n\n- [**Lucide icon**](https://lucide.dev/icons) name\n\n<Field value=\"size\" type=\"number\">\n The size of the icon in pixels.\n</Field>\n\n<Field value=\"color\" type=\"string\">\n The color of the icon as a hex code (for example, `#FF5733`).\n</Field>";
|
|
@@ -6,7 +6,9 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 10
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Icons
|
|
11
|
+
|
|
10
12
|
Integrate visual icons from well-known libraries to enrich your documentation.
|
|
11
13
|
|
|
12
14
|
Icons can be sourced from Lucide, SVG elements, external URLs, or local files within your project directory.
|
|
@@ -18,6 +20,7 @@ Icons can be sourced from Lucide, SVG elements, external URLs, or local files wi
|
|
|
18
20
|
\`\`\`
|
|
19
21
|
|
|
20
22
|
## Inline icons
|
|
23
|
+
|
|
21
24
|
You can use icons directly within text to highlight information or add visual context.
|
|
22
25
|
|
|
23
26
|
<Icon name="flag" size={16} /> Build your documentation seamlessly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const imageAndEmbedsMdxTemplate = "---\ntitle: \"Images and embeds\"\ndescription: \"Enrich your documentation with visuals, videos, and interactive embeds.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 9\n---\n# Images and embeds\nEnrich your documentation with visuals, videos, and interactive embeds.\n\nDisplay images, embed video content, or add interactive frames via iframes to supplement your docs.\n\n\n\n## Images\nImages enhance documentation with context, illustration, or decorative visual cues.\n\n### Basic Image Syntax\nInclude an image in Markdown using the syntax below:\n\n```md\n\n```\n\n<Callout type=\"note\">\n Use clear, descriptive alt text for accessibility and better SEO. Alt text should describe the image\u2019s appearance or content.\n</Callout>\n\n### HTML image embeds\nEmbed images in your Markdown content using HTML syntax.\n\n```md\n<img src=\"https://docs.doccupine.com/demo.png\" alt=\"Alt text\">\n```\n\n### Theme-aware images\nShow different images depending on whether the user is in light or dark mode. Add the `light-only` or `dark-only` className to display an image exclusively in that theme.\n\n```md\n<img className=\"light-only\" src=\"/images/diagram-light.png\" alt=\"Diagram\">\n<img className=\"dark-only\" src=\"/images/diagram-dark.png\" alt=\"Diagram\">\n```\n\n<img className=\"light-only\" src=\"https://docs.doccupine.com/demo.png\" alt=\"This image is only visible in light mode\" />\n<img className=\"dark-only\" src=\"https://docs.doccupine.com/demo.png\" alt=\"This image is only visible in dark mode\" style={{ filter: \"invert(1)\" }} />\n\n<Callout type=\"note\">\n The `light-only` and `dark-only` classes work on any element, not just images. You can use them on videos, iframes, or wrapper divs too.\n</Callout>\n\n## Videos\nVideos add a dynamic element to your documentation, engaging your audience and providing a more immersive experience.\n\n### YouTube Embed\nTo embed a YouTube video, use the following syntax:\n\n```html\n<iframe\n className=\"aspect-video\"\n src=\"https://www.youtube.com/embed/ResP_eVPYQo\"\n title=\"YouTube video player\"\n
|
|
1
|
+
export declare const imageAndEmbedsMdxTemplate = "---\ntitle: \"Images and embeds\"\ndescription: \"Enrich your documentation with visuals, videos, and interactive embeds.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 9\n---\n\n# Images and embeds\n\nEnrich your documentation with visuals, videos, and interactive embeds.\n\nDisplay images, embed video content, or add interactive frames via iframes to supplement your docs.\n\n\n\n## Images\n\nImages enhance documentation with context, illustration, or decorative visual cues.\n\n### Basic Image Syntax\n\nInclude an image in Markdown using the syntax below:\n\n```md\n\n```\n\n<Callout type=\"note\">\n Use clear, descriptive alt text for accessibility and better SEO. Alt text should describe the image\u2019s appearance or content.\n</Callout>\n\n### HTML image embeds\n\nEmbed images in your Markdown content using HTML syntax.\n\n```md\n<img src=\"https://docs.doccupine.com/demo.png\" alt=\"Alt text\">\n```\n\n### Theme-aware images\n\nShow different images depending on whether the user is in light or dark mode. Add the `light-only` or `dark-only` className to display an image exclusively in that theme.\n\n```md\n<img className=\"light-only\" src=\"/images/diagram-light.png\" alt=\"Diagram\">\n<img className=\"dark-only\" src=\"/images/diagram-dark.png\" alt=\"Diagram\">\n```\n\n<img className=\"light-only\" src=\"https://docs.doccupine.com/demo.png\" alt=\"This image is only visible in light mode\" />\n<img className=\"dark-only\" src=\"https://docs.doccupine.com/demo.png\" alt=\"This image is only visible in dark mode\" style={{ filter: \"invert(1)\" }} />\n\n<Callout type=\"note\">\n The `light-only` and `dark-only` classes work on any element, not just images. You can use them on videos, iframes, or wrapper divs too.\n</Callout>\n\n## Videos\n\nVideos add a dynamic element to your documentation, engaging your audience and providing a more immersive experience.\n\n### YouTube Embed\n\nTo embed a YouTube video, use the following syntax:\n\n```html\n<iframe\n className=\"aspect-video\"\n src=\"https://www.youtube.com/embed/ResP_eVPYQo\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n></iframe>\n```\n\n<iframe\n className=\"aspect-video\"\n src=\"https://www.youtube.com/embed/ResP_eVPYQo\"\n title=\"YouTube video player\"\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n></iframe>\n\n### Self-hosted videos\n\nServe up your own video content using the `<video>` tag:\n\n```html\n<video\n controls\n className=\"aspect-video\"\n src=\"https://samplelib.com/lib/preview/mp4/sample-20s.mp4\"\n></video>\n```\n\n<video\ncontrols\nclassName=\"aspect-video\"\nsrc=\"https://samplelib.com/lib/preview/mp4/sample-20s.mp4\"\n\n> </video>\n\n#### Autoplay and Looping\n\nFor demonstration videos that loop or start automatically, add attributes as shown:\n\n```html\n<video\n controls\n className=\"aspect-video\"\n src=\"https://samplelib.com/lib/preview/mp4/sample-20s.mp4\"\n autoplay\n muted\n loop\n playsinline\n></video>\n```";
|
|
@@ -6,7 +6,9 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 9
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Images and embeds
|
|
11
|
+
|
|
10
12
|
Enrich your documentation with visuals, videos, and interactive embeds.
|
|
11
13
|
|
|
12
14
|
Display images, embed video content, or add interactive frames via iframes to supplement your docs.
|
|
@@ -14,9 +16,11 @@ Display images, embed video content, or add interactive frames via iframes to su
|
|
|
14
16
|

|
|
15
17
|
|
|
16
18
|
## Images
|
|
19
|
+
|
|
17
20
|
Images enhance documentation with context, illustration, or decorative visual cues.
|
|
18
21
|
|
|
19
22
|
### Basic Image Syntax
|
|
23
|
+
|
|
20
24
|
Include an image in Markdown using the syntax below:
|
|
21
25
|
|
|
22
26
|
\`\`\`md
|
|
@@ -28,6 +32,7 @@ Include an image in Markdown using the syntax below:
|
|
|
28
32
|
</Callout>
|
|
29
33
|
|
|
30
34
|
### HTML image embeds
|
|
35
|
+
|
|
31
36
|
Embed images in your Markdown content using HTML syntax.
|
|
32
37
|
|
|
33
38
|
\`\`\`md
|
|
@@ -35,6 +40,7 @@ Embed images in your Markdown content using HTML syntax.
|
|
|
35
40
|
\`\`\`
|
|
36
41
|
|
|
37
42
|
### Theme-aware images
|
|
43
|
+
|
|
38
44
|
Show different images depending on whether the user is in light or dark mode. Add the \`light-only\` or \`dark-only\` className to display an image exclusively in that theme.
|
|
39
45
|
|
|
40
46
|
\`\`\`md
|
|
@@ -50,9 +56,11 @@ Show different images depending on whether the user is in light or dark mode. Ad
|
|
|
50
56
|
</Callout>
|
|
51
57
|
|
|
52
58
|
## Videos
|
|
59
|
+
|
|
53
60
|
Videos add a dynamic element to your documentation, engaging your audience and providing a more immersive experience.
|
|
54
61
|
|
|
55
62
|
### YouTube Embed
|
|
63
|
+
|
|
56
64
|
To embed a YouTube video, use the following syntax:
|
|
57
65
|
|
|
58
66
|
\`\`\`html
|
|
@@ -60,9 +68,9 @@ To embed a YouTube video, use the following syntax:
|
|
|
60
68
|
className="aspect-video"
|
|
61
69
|
src="https://www.youtube.com/embed/ResP_eVPYQo"
|
|
62
70
|
title="YouTube video player"
|
|
63
|
-
|
|
71
|
+
frameborder="0"
|
|
64
72
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
65
|
-
|
|
73
|
+
allowfullscreen
|
|
66
74
|
></iframe>
|
|
67
75
|
\`\`\`
|
|
68
76
|
|
|
@@ -76,6 +84,7 @@ To embed a YouTube video, use the following syntax:
|
|
|
76
84
|
></iframe>
|
|
77
85
|
|
|
78
86
|
### Self-hosted videos
|
|
87
|
+
|
|
79
88
|
Serve up your own video content using the \`<video>\` tag:
|
|
80
89
|
|
|
81
90
|
\`\`\`html
|
|
@@ -87,13 +96,14 @@ Serve up your own video content using the \`<video>\` tag:
|
|
|
87
96
|
\`\`\`
|
|
88
97
|
|
|
89
98
|
<video
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
></video>
|
|
99
|
+
controls
|
|
100
|
+
className="aspect-video"
|
|
101
|
+
src="https://samplelib.com/lib/preview/mp4/sample-20s.mp4"
|
|
94
102
|
|
|
103
|
+
> </video>
|
|
95
104
|
|
|
96
105
|
#### Autoplay and Looping
|
|
106
|
+
|
|
97
107
|
For demonstration videos that loop or start automatically, add attributes as shown:
|
|
98
108
|
|
|
99
109
|
\`\`\`html
|
|
@@ -101,10 +111,9 @@ For demonstration videos that loop or start automatically, add attributes as sho
|
|
|
101
111
|
controls
|
|
102
112
|
className="aspect-video"
|
|
103
113
|
src="https://samplelib.com/lib/preview/mp4/sample-20s.mp4"
|
|
104
|
-
|
|
114
|
+
autoplay
|
|
105
115
|
muted
|
|
106
116
|
loop
|
|
107
|
-
|
|
117
|
+
playsinline
|
|
108
118
|
></video>
|
|
109
|
-
|
|
110
|
-
`;
|
|
119
|
+
\`\`\``;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const indexMdxTemplate = "---\ntitle: \"Introduction\"\ndescription: \"Doccupine is a 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.\"\ndate: \"2026-02-19\"\ncategory: \"Getting Started\"\ncategoryOrder: 0\norder: 0\n---\n# Welcome to Doccupine\n\nDoccupine turns a folder of MDX files into a beautiful, production-ready documentation website. Write in standard Markdown, use any of the built-in components, and get a fully themed site with AI-powered search and automatic navigation - all from one command.\n\n```bash\nnpx doccupine\n```\n\nThat's it. Doccupine prompts you for a source directory, generates your site, and starts a dev server at `http://localhost:3000`. Every edit rebuilds instantly.\n\n<Callout type=\"info\">\n Want a managed experience instead? The [Doccupine Platform](/platform) gives you a browser-based editor, one-click publishing, custom domains, and team collaboration - no local setup needed.\n</Callout>\n\n## How it works\n\nYou write `.mdx` files using Markdown and built-in components like this one. Doccupine watches your files, generates pages, builds the sidebar from your frontmatter, and handles theming, AI chat, and deployment config for you.\n\nEverything on this page - the callout above, the cards below, the code block - is a live example of what your docs can look like out of the box.\n\n<Columns cols={2}>\n <Card title=\"Start writing\" icon=\"pencil\" href=\"/components\">\n Rich docs from day one. 14+ components work out of the box - no imports needed.\n </Card>\n <Card title=\"Ship it\" icon=\"rocket\" href=\"/deployment-and-hosting\">\n Deploy to the Doccupine Platform or self-host on any platform that supports Next.js.\n </Card>\n</Columns>\n\n## Configure your site\n\nDoccupine works with no configuration, but when you're ready to customize, everything is controlled through simple JSON files in your project root.\n\n- [Global settings](/globals) - Site name, description, favicon, and preview image via `config.json`\n- [Navigation](/navigation) - Override the auto-generated sidebar with `navigation.json`\n- [Theme](/theme) - Colors, logos, and dark mode palette via `theme.json`\n- [Fonts](/fonts) - Google Fonts or local font files via `fonts.json`\n- [AI Assistant](/ai-assistant) - Enable the built-in chat with your own API key\n- [MCP Server](/model-context-protocol) - Let AI tools search your docs through `/api/mcp
|
|
1
|
+
export declare const indexMdxTemplate = "---\ntitle: \"Introduction\"\ndescription: \"Doccupine is a 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.\"\ndate: \"2026-02-19\"\ncategory: \"Getting Started\"\ncategoryOrder: 0\norder: 0\n---\n\n# Welcome to Doccupine\n\nDoccupine turns a folder of MDX files into a beautiful, production-ready documentation website. Write in standard Markdown, use any of the built-in components, and get a fully themed site with AI-powered search and automatic navigation - all from one command.\n\n```bash\nnpx doccupine\n```\n\nThat's it. Doccupine prompts you for a source directory, generates your site, and starts a dev server at `http://localhost:3000`. Every edit rebuilds instantly.\n\n<Callout type=\"info\">\n Want a managed experience instead? The [Doccupine Platform](/platform) gives you a browser-based editor, one-click publishing, custom domains, and team collaboration - no local setup needed.\n</Callout>\n\n## How it works\n\nYou write `.mdx` files using Markdown and built-in components like this one. Doccupine watches your files, generates pages, builds the sidebar from your frontmatter, and handles theming, AI chat, and deployment config for you.\n\nEverything on this page - the callout above, the cards below, the code block - is a live example of what your docs can look like out of the box.\n\n<Columns cols={2}>\n <Card title=\"Start writing\" icon=\"pencil\" href=\"/components\">\n Rich docs from day one. 14+ components work out of the box - no imports needed.\n </Card>\n <Card title=\"Ship it\" icon=\"rocket\" href=\"/deployment-and-hosting\">\n Deploy to the Doccupine Platform or self-host on any platform that supports Next.js.\n </Card>\n</Columns>\n\n## Configure your site\n\nDoccupine works with no configuration, but when you're ready to customize, everything is controlled through simple JSON files in your project root.\n\n- [Global settings](/globals) - Site name, description, favicon, and preview image via `config.json`\n- [Navigation](/navigation) - Override the auto-generated sidebar with `navigation.json`\n- [Theme](/theme) - Colors, logos, and dark mode palette via `theme.json`\n- [Fonts](/fonts) - Google Fonts or local font files via `fonts.json`\n- [AI Assistant](/ai-assistant) - Enable the built-in chat with your own API key\n- [MCP Server](/model-context-protocol) - Let AI tools search your docs through `/api/mcp`";
|
|
@@ -7,6 +7,7 @@ category: "Getting Started"
|
|
|
7
7
|
categoryOrder: 0
|
|
8
8
|
order: 0
|
|
9
9
|
---
|
|
10
|
+
|
|
10
11
|
# Welcome to Doccupine
|
|
11
12
|
|
|
12
13
|
Doccupine turns a folder of MDX files into a beautiful, production-ready documentation website. Write in standard Markdown, use any of the built-in components, and get a fully themed site with AI-powered search and automatic navigation - all from one command.
|
|
@@ -45,5 +46,4 @@ Doccupine works with no configuration, but when you're ready to customize, every
|
|
|
45
46
|
- [Theme](/theme) - Colors, logos, and dark mode palette via \`theme.json\`
|
|
46
47
|
- [Fonts](/fonts) - Google Fonts or local font files via \`fonts.json\`
|
|
47
48
|
- [AI Assistant](/ai-assistant) - Enable the built-in chat with your own API key
|
|
48
|
-
- [MCP Server](/model-context-protocol) - Let AI tools search your docs through \`/api/mcp
|
|
49
|
-
`;
|
|
49
|
+
- [MCP Server](/model-context-protocol) - Let AI tools search your docs through \`/api/mcp\``;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const listsAndTablesMdxTemplate = "---\ntitle: \"Lists and tables\"\ndescription: \"Present structured information using lists or tables.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 2\n---\n# Lists and Tables\nPresent structured information using lists or tables.\n\n## Lists\nMarkdown supports both
|
|
1
|
+
export declare const listsAndTablesMdxTemplate = "---\ntitle: \"Lists and tables\"\ndescription: \"Present structured information using lists or tables.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 2\n---\n\n# Lists and Tables\n\nPresent structured information using lists or tables.\n\n## Lists\n\nMarkdown supports both _ordered_ and _unordered_ lists, as well as nested list structures.\n\n### Ordered List\n\nStart each item with a number followed by a period to create an ordered list.\n\n```md\n1. First item\n2. Second item\n3. Third item\n4. Fourth item\n```\n\n1. First item\n2. Second item\n3. Third item\n4. Fourth item\n\n### Unordered List\n\nUse dashes (`-`), asterisks (`*`), or plus signs (`+`) before each item for unordered lists.\n\n```md\n- First item\n- Second item\n- Third item\n- Fourth item\n```\n\n- First item\n- Second item\n- Third item\n- Fourth item\n\n### Nested List\n\nIndent items under another to create nested lists.\n\n```md\n- First item\n- Second item\n - Additional item\n - Additional item\n- Third item\n```\n\n- First item\n- Second item\n - Additional item\n - Additional item\n- Third item\n\n## Tables\n\nMarkdown tables use pipes (`|`) to separate columns and hyphens (`---`) to define the header row. Place a pipe at the start and end of each row for better compatibility.\n\n```md\n| Property | Description |\n| -------- | -------------------------------------- |\n| Name | Full name of the user |\n| Age | Age in years |\n| Joined | Indicates if user joined the community |\n```\n\n| Property | Description |\n| -------- | -------------------------------------- |\n| Name | Full name of the user |\n| Age | Age in years |\n| Joined | Indicates if user joined the community |";
|