doccupine 0.0.88 → 0.0.90
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 +15 -2
- package/dist/index.js +206 -5
- package/dist/lib/layout.js +38 -24
- package/dist/lib/metadata.d.ts +30 -0
- package/dist/lib/metadata.js +98 -1
- package/dist/templates/app/theme.d.ts +1 -1
- package/dist/templates/app/theme.js +84 -19
- package/dist/templates/components/Chat.d.ts +1 -1
- package/dist/templates/components/Chat.js +26 -27
- package/dist/templates/components/SearchModalContent.d.ts +1 -1
- package/dist/templates/components/SearchModalContent.js +12 -6
- package/dist/templates/components/SideBar.d.ts +1 -1
- package/dist/templates/components/SideBar.js +3 -1
- package/dist/templates/components/layout/Accordion.d.ts +1 -1
- package/dist/templates/components/layout/Accordion.js +2 -1
- package/dist/templates/components/layout/ActionBar.d.ts +1 -1
- package/dist/templates/components/layout/ActionBar.js +4 -6
- package/dist/templates/components/layout/Button.d.ts +1 -1
- package/dist/templates/components/layout/Button.js +19 -0
- package/dist/templates/components/layout/Callout.d.ts +1 -1
- package/dist/templates/components/layout/Callout.js +75 -20
- package/dist/templates/components/layout/Card.d.ts +1 -1
- package/dist/templates/components/layout/Card.js +2 -1
- package/dist/templates/components/layout/CherryThemeProvider.d.ts +1 -1
- package/dist/templates/components/layout/CherryThemeProvider.js +6 -12
- package/dist/templates/components/layout/ClientThemeProvider.d.ts +1 -1
- package/dist/templates/components/layout/ClientThemeProvider.js +45 -40
- package/dist/templates/components/layout/Code.d.ts +1 -1
- package/dist/templates/components/layout/Code.js +223 -255
- package/dist/templates/components/layout/ColorSwatch.d.ts +1 -1
- package/dist/templates/components/layout/ColorSwatch.js +2 -2
- package/dist/templates/components/layout/Columns.d.ts +1 -1
- package/dist/templates/components/layout/Columns.js +1 -1
- package/dist/templates/components/layout/DemoTheme.d.ts +1 -1
- package/dist/templates/components/layout/DemoTheme.js +65 -167
- package/dist/templates/components/layout/DocsComponents.d.ts +1 -1
- package/dist/templates/components/layout/DocsComponents.js +13 -19
- package/dist/templates/components/layout/Field.d.ts +1 -1
- package/dist/templates/components/layout/Field.js +6 -4
- package/dist/templates/components/layout/Footer.d.ts +1 -1
- package/dist/templates/components/layout/Footer.js +2 -3
- package/dist/templates/components/layout/GlobalStyles.d.ts +1 -1
- package/dist/templates/components/layout/GlobalStyles.js +63 -10
- package/dist/templates/components/layout/Header.d.ts +1 -1
- package/dist/templates/components/layout/Header.js +14 -11
- package/dist/templates/components/layout/SharedStyles.d.ts +1 -1
- package/dist/templates/components/layout/SharedStyles.js +4 -5
- package/dist/templates/components/layout/StaticLinks.d.ts +1 -1
- package/dist/templates/components/layout/StaticLinks.js +4 -6
- package/dist/templates/components/layout/Steps.d.ts +1 -1
- package/dist/templates/components/layout/Steps.js +3 -3
- package/dist/templates/components/layout/Tabs.d.ts +1 -1
- package/dist/templates/components/layout/Tabs.js +5 -2
- package/dist/templates/components/layout/ThemeToggle.d.ts +1 -1
- package/dist/templates/components/layout/ThemeToggle.js +17 -19
- package/dist/templates/components/layout/Typography.d.ts +1 -1
- package/dist/templates/components/layout/Typography.js +1 -1
- package/dist/templates/components/layout/Update.d.ts +1 -1
- package/dist/templates/components/layout/Update.js +4 -3
- 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 +13 -1
- 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 -14
- package/dist/templates/package.js +14 -15
- package/dist/templates/pnpmWorkspace.d.ts +1 -0
- package/dist/templates/pnpmWorkspace.js +7 -0
- package/dist/templates/proxy.js +14 -20
- package/package.json +6 -7
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
function pageUrl(slug, baseUrl) {
|
|
2
|
+
if (baseUrl) {
|
|
3
|
+
return slug === "" ? `${baseUrl}/` : `${baseUrl}/${slug}`;
|
|
4
|
+
}
|
|
5
|
+
return slug === "" ? "/" : `/${slug}`;
|
|
6
|
+
}
|
|
7
|
+
export function llmsPageTemplate(page, baseUrl) {
|
|
8
|
+
const lines = [];
|
|
9
|
+
lines.push(`# ${page.title}`);
|
|
10
|
+
lines.push("");
|
|
11
|
+
if (page.description && page.description.trim() !== "") {
|
|
12
|
+
lines.push(`> ${page.description.trim()}`);
|
|
13
|
+
lines.push("");
|
|
14
|
+
}
|
|
15
|
+
lines.push(`Source: ${pageUrl(page.slug, baseUrl)}`);
|
|
16
|
+
lines.push("");
|
|
17
|
+
lines.push(page.body.trim());
|
|
18
|
+
lines.push("");
|
|
19
|
+
return lines.join("\n");
|
|
20
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const accordionMdxTemplate = "---\ntitle: \"Accordion\"\ndescription: \"Interactive panels for toggling visibility of content.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 4\n---\n# Accordion\nInteractive panels for toggling visibility of content.\n\nAccordion elements help organize information by letting users show or hide sections as needed. They\u2019re an effective way to manage progressive disclosure and simplify navigation through dense or optional content.\n\n## Accordion Usage\nYou can use the Accordion component directly within your MDX files without any import. The following example shows a basic usage:\n\n
|
|
1
|
+
export declare const accordionMdxTemplate = "---\ntitle: \"Accordion\"\ndescription: \"Interactive panels for toggling visibility of content.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 4\n---\n\n# Accordion\n\nInteractive panels for toggling visibility of content.\n\nAccordion elements help organize information by letting users show or hide sections as needed. They\u2019re an effective way to manage progressive disclosure and simplify navigation through dense or optional content.\n\n## Accordion Usage\n\nYou can use the Accordion component directly within your MDX files without any import. The following example shows a basic usage:\n\n````mdx\n<Accordion title=\"What is MDX?\">\n You can put any content in here, including other components, like code:\n\n```java HelloWorld.java\n class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n }\n```\n\n</Accordion>\n````\n\n<Accordion title=\"What is MDX?\">\n You can put any content in here, including other components, like code:\n\n```java HelloWorld.java\n class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n }\n```\n\n</Accordion>\n\n## Properties\n\n<Field value=\"title\" type=\"string\" required>\n The title of the accordion.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the accordion.\n</Field>";
|
|
@@ -6,38 +6,43 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 4
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Accordion
|
|
11
|
+
|
|
10
12
|
Interactive panels for toggling visibility of content.
|
|
11
13
|
|
|
12
14
|
Accordion elements help organize information by letting users show or hide sections as needed. They’re an effective way to manage progressive disclosure and simplify navigation through dense or optional content.
|
|
13
15
|
|
|
14
16
|
## Accordion Usage
|
|
17
|
+
|
|
15
18
|
You can use the Accordion component directly within your MDX files without any import. The following example shows a basic usage:
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
\`\`\`\`mdx
|
|
18
21
|
<Accordion title="What is MDX?">
|
|
19
22
|
You can put any content in here, including other components, like code:
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
\`\`\`java HelloWorld.java
|
|
25
|
+
class HelloWorld {
|
|
26
|
+
public static void main(String[] args) {
|
|
27
|
+
System.out.println("Hello, World!");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
\`\`\`
|
|
31
|
+
|
|
28
32
|
</Accordion>
|
|
29
|
-
|
|
33
|
+
\`\`\`\`
|
|
30
34
|
|
|
31
35
|
<Accordion title="What is MDX?">
|
|
32
36
|
You can put any content in here, including other components, like code:
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
\`\`\`java HelloWorld.java
|
|
39
|
+
class HelloWorld {
|
|
40
|
+
public static void main(String[] args) {
|
|
41
|
+
System.out.println("Hello, World!");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
41
46
|
</Accordion>
|
|
42
47
|
|
|
43
48
|
## Properties
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const aiAssistantMdxTemplate = "---\ntitle: \"AI Assistant\"\ndescription: \"Integrate AI capabilities into your Doccupine documentation using OpenAI, Anthropic, or Google Gemini.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 8\n---\n# AI Assistant\nDoccupine supports AI integration to enhance your documentation experience. You can use OpenAI, Anthropic, or Google Gemini to power AI features in your documentation site. The AI assistant uses your documentation content as context, allowing users to ask questions about your docs and receive accurate answers based on the documentation.\n\n## Setup\nTo enable AI features, create an `.env` file in the directory where your website is generated. By default, this is the `nextjs-app/` directory.\n\n## Configuration\nCreate an `.env` file with the following configuration options:\n\n```env\n# LLM Provider Configuration\n# Choose your preferred LLM provider: openai, anthropic, or google\nLLM_PROVIDER=openai\n\n# API Keys (set the one matching your provider)\nOPENAI_API_KEY=your_openai_api_key_here\nANTHROPIC_API_KEY=your_anthropic_api_key_here\nGOOGLE_API_KEY=your_google_api_key_here\n\n# Optional: Override default chat model (see your provider's docs for available models)\n# LLM_CHAT_MODEL=your-model-id\n\n# Optional: Override default embedding model (see your provider's docs for available models)\n# Note: Anthropic doesn't provide embeddings, will fallback to OpenAI\n# LLM_EMBEDDING_MODEL=your-embedding-model-id\n\n# Optional: Set temperature (0-1, default: 0)\n# LLM_TEMPERATURE=0\n```\n\n## Provider Selection\nSet `LLM_PROVIDER` to one of the following values:\n- `openai` - Use OpenAI's models\n- `anthropic` - Use Anthropic's models\n- `google` - Use Google's models\n\n## API Keys\nYou need to set the API key that matches your chosen provider:\n- For OpenAI: Set `OPENAI_API_KEY`\n- For Anthropic: Set `ANTHROPIC_API_KEY`\n- For Google: Set `GOOGLE_API_KEY`\n\n<Callout type=\"warning\">\n Keep your API keys secure. Never commit your `.env` file to version control.\n</Callout>\n\n<Callout type=\"note\">\n Doccupine automatically adds `.env` to your `.gitignore` file.\n</Callout>\n\n## Using Anthropic with OpenAI\nIf you want to use Anthropic as your LLM provider, you must also have an OpenAI API key set. Here's why:\n\n### The Situation\nAnthropic (Claude) does not provide an embeddings API. They only offer chat/completion models, not text embeddings.\n\nYour RAG (Retrieval-Augmented Generation) system has two components:\n- **Chat/Completion** - Generates answers, works with Anthropic.\n- **Embeddings** - Creates vector representations of text for search, Anthropic doesn't provide this.\n\nWhen using Anthropic as your `LLM_PROVIDER`, Doccupine will use Anthropic for chat/completion tasks, but will automatically fallback to OpenAI for embeddings. This means you need both API keys configured:\n\n```env\nLLM_PROVIDER=anthropic\nANTHROPIC_API_KEY=your_anthropic_api_key_here\nOPENAI_API_KEY=your_openai_api_key_here\n```\n\nThis hybrid approach allows you to leverage Anthropic's powerful chat models while still having access to embeddings functionality through OpenAI.\n\n## Default models\n\n| Provider
|
|
1
|
+
export declare const aiAssistantMdxTemplate = "---\ntitle: \"AI Assistant\"\ndescription: \"Integrate AI capabilities into your Doccupine documentation using OpenAI, Anthropic, or Google Gemini.\"\ndate: \"2026-02-19\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 8\n---\n\n# AI Assistant\n\nDoccupine supports AI integration to enhance your documentation experience. You can use OpenAI, Anthropic, or Google Gemini to power AI features in your documentation site. The AI assistant uses your documentation content as context, allowing users to ask questions about your docs and receive accurate answers based on the documentation.\n\n## Setup\n\nTo enable AI features, create an `.env` file in the directory where your website is generated. By default, this is the `nextjs-app/` directory.\n\n## Configuration\n\nCreate an `.env` file with the following configuration options:\n\n```env\n# LLM Provider Configuration\n# Choose your preferred LLM provider: openai, anthropic, or google\nLLM_PROVIDER=openai\n\n# API Keys (set the one matching your provider)\nOPENAI_API_KEY=your_openai_api_key_here\nANTHROPIC_API_KEY=your_anthropic_api_key_here\nGOOGLE_API_KEY=your_google_api_key_here\n\n# Optional: Override default chat model (see your provider's docs for available models)\n# LLM_CHAT_MODEL=your-model-id\n\n# Optional: Override default embedding model (see your provider's docs for available models)\n# Note: Anthropic doesn't provide embeddings, will fallback to OpenAI\n# LLM_EMBEDDING_MODEL=your-embedding-model-id\n\n# Optional: Set temperature (0-1, default: 0)\n# LLM_TEMPERATURE=0\n```\n\n## Provider Selection\n\nSet `LLM_PROVIDER` to one of the following values:\n\n- `openai` - Use OpenAI's models\n- `anthropic` - Use Anthropic's models\n- `google` - Use Google's models\n\n## API Keys\n\nYou need to set the API key that matches your chosen provider:\n\n- For OpenAI: Set `OPENAI_API_KEY`\n- For Anthropic: Set `ANTHROPIC_API_KEY`\n- For Google: Set `GOOGLE_API_KEY`\n\n<Callout type=\"warning\">\n Keep your API keys secure. Never commit your `.env` file to version control.\n</Callout>\n\n<Callout type=\"note\">\n Doccupine automatically adds `.env` to your `.gitignore` file.\n</Callout>\n\n## Using Anthropic with OpenAI\n\nIf you want to use Anthropic as your LLM provider, you must also have an OpenAI API key set. Here's why:\n\n### The Situation\n\nAnthropic (Claude) does not provide an embeddings API. They only offer chat/completion models, not text embeddings.\n\nYour RAG (Retrieval-Augmented Generation) system has two components:\n\n- **Chat/Completion** - Generates answers, works with Anthropic.\n- **Embeddings** - Creates vector representations of text for search, Anthropic doesn't provide this.\n\nWhen using Anthropic as your `LLM_PROVIDER`, Doccupine will use Anthropic for chat/completion tasks, but will automatically fallback to OpenAI for embeddings. This means you need both API keys configured:\n\n```env\nLLM_PROVIDER=anthropic\nANTHROPIC_API_KEY=your_anthropic_api_key_here\nOPENAI_API_KEY=your_openai_api_key_here\n```\n\nThis hybrid approach allows you to leverage Anthropic's powerful chat models while still having access to embeddings functionality through OpenAI.\n\n## Default models\n\n| Provider | Chat model | Embedding model |\n| --------- | ---------------------------- | ------------------------ |\n| OpenAI | `gpt-4.1-nano` | `text-embedding-3-small` |\n| Anthropic | `claude-sonnet-4-5-20250929` | OpenAI fallback |\n| Google | `gemini-2.5-flash-lite` | `gemini-embedding-001` |\n\n## Optional Settings\n\n### Chat Model\n\nOverride the default chat model by uncommenting and setting `LLM_CHAT_MODEL`. You can use any available model from your chosen provider. For a complete list of available models, refer to the official documentation:\n\n- [OpenAI Models](https://platform.openai.com/docs/models)\n- [Anthropic Models](https://docs.anthropic.com/claude/docs/models-overview)\n- [Google Gemini Models](https://ai.google.dev/models/gemini)\n\n### Embedding Model\n\nOverride the default embedding model by uncommenting and setting `LLM_EMBEDDING_MODEL`. For a complete list of available embedding models, refer to the official documentation:\n\n- [OpenAI Embeddings](https://platform.openai.com/docs/guides/embeddings)\n- [Google Gemini Embeddings](https://ai.google.dev/gemini-api/docs/embeddings)\n- **Anthropic**: Anthropic doesn't provide embeddings. If you use Anthropic as your provider, Doccupine will fallback to OpenAI for embeddings.\n\n### Temperature\n\nControl the randomness of AI responses by setting `LLM_TEMPERATURE` to a value between 0 and 1:\n\n- `0` - More deterministic and focused responses (default)\n- `1` - More creative and varied responses";
|
|
@@ -6,13 +6,17 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 8
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# AI Assistant
|
|
11
|
+
|
|
10
12
|
Doccupine supports AI integration to enhance your documentation experience. You can use OpenAI, Anthropic, or Google Gemini to power AI features in your documentation site. The AI assistant uses your documentation content as context, allowing users to ask questions about your docs and receive accurate answers based on the documentation.
|
|
11
13
|
|
|
12
14
|
## Setup
|
|
15
|
+
|
|
13
16
|
To enable AI features, create an \`.env\` file in the directory where your website is generated. By default, this is the \`nextjs-app/\` directory.
|
|
14
17
|
|
|
15
18
|
## Configuration
|
|
19
|
+
|
|
16
20
|
Create an \`.env\` file with the following configuration options:
|
|
17
21
|
|
|
18
22
|
\`\`\`env
|
|
@@ -37,13 +41,17 @@ GOOGLE_API_KEY=your_google_api_key_here
|
|
|
37
41
|
\`\`\`
|
|
38
42
|
|
|
39
43
|
## Provider Selection
|
|
44
|
+
|
|
40
45
|
Set \`LLM_PROVIDER\` to one of the following values:
|
|
46
|
+
|
|
41
47
|
- \`openai\` - Use OpenAI's models
|
|
42
48
|
- \`anthropic\` - Use Anthropic's models
|
|
43
49
|
- \`google\` - Use Google's models
|
|
44
50
|
|
|
45
51
|
## API Keys
|
|
52
|
+
|
|
46
53
|
You need to set the API key that matches your chosen provider:
|
|
54
|
+
|
|
47
55
|
- For OpenAI: Set \`OPENAI_API_KEY\`
|
|
48
56
|
- For Anthropic: Set \`ANTHROPIC_API_KEY\`
|
|
49
57
|
- For Google: Set \`GOOGLE_API_KEY\`
|
|
@@ -57,12 +65,15 @@ You need to set the API key that matches your chosen provider:
|
|
|
57
65
|
</Callout>
|
|
58
66
|
|
|
59
67
|
## Using Anthropic with OpenAI
|
|
68
|
+
|
|
60
69
|
If you want to use Anthropic as your LLM provider, you must also have an OpenAI API key set. Here's why:
|
|
61
70
|
|
|
62
71
|
### The Situation
|
|
72
|
+
|
|
63
73
|
Anthropic (Claude) does not provide an embeddings API. They only offer chat/completion models, not text embeddings.
|
|
64
74
|
|
|
65
75
|
Your RAG (Retrieval-Augmented Generation) system has two components:
|
|
76
|
+
|
|
66
77
|
- **Chat/Completion** - Generates answers, works with Anthropic.
|
|
67
78
|
- **Embeddings** - Creates vector representations of text for search, Anthropic doesn't provide this.
|
|
68
79
|
|
|
@@ -78,27 +89,33 @@ This hybrid approach allows you to leverage Anthropic's powerful chat models whi
|
|
|
78
89
|
|
|
79
90
|
## Default models
|
|
80
91
|
|
|
81
|
-
| Provider
|
|
82
|
-
|
|
83
|
-
| OpenAI
|
|
84
|
-
| Anthropic | \`claude-sonnet-4-5-20250929\` | OpenAI fallback
|
|
85
|
-
| Google
|
|
92
|
+
| Provider | Chat model | Embedding model |
|
|
93
|
+
| --------- | ---------------------------- | ------------------------ |
|
|
94
|
+
| OpenAI | \`gpt-4.1-nano\` | \`text-embedding-3-small\` |
|
|
95
|
+
| Anthropic | \`claude-sonnet-4-5-20250929\` | OpenAI fallback |
|
|
96
|
+
| Google | \`gemini-2.5-flash-lite\` | \`gemini-embedding-001\` |
|
|
86
97
|
|
|
87
98
|
## Optional Settings
|
|
88
99
|
|
|
89
100
|
### Chat Model
|
|
101
|
+
|
|
90
102
|
Override the default chat model by uncommenting and setting \`LLM_CHAT_MODEL\`. You can use any available model from your chosen provider. For a complete list of available models, refer to the official documentation:
|
|
103
|
+
|
|
91
104
|
- [OpenAI Models](https://platform.openai.com/docs/models)
|
|
92
105
|
- [Anthropic Models](https://docs.anthropic.com/claude/docs/models-overview)
|
|
93
106
|
- [Google Gemini Models](https://ai.google.dev/models/gemini)
|
|
94
107
|
|
|
95
108
|
### Embedding Model
|
|
109
|
+
|
|
96
110
|
Override the default embedding model by uncommenting and setting \`LLM_EMBEDDING_MODEL\`. For a complete list of available embedding models, refer to the official documentation:
|
|
111
|
+
|
|
97
112
|
- [OpenAI Embeddings](https://platform.openai.com/docs/guides/embeddings)
|
|
98
113
|
- [Google Gemini Embeddings](https://ai.google.dev/gemini-api/docs/embeddings)
|
|
99
114
|
- **Anthropic**: Anthropic doesn't provide embeddings. If you use Anthropic as your provider, Doccupine will fallback to OpenAI for embeddings.
|
|
100
115
|
|
|
101
116
|
### Temperature
|
|
117
|
+
|
|
102
118
|
Control the randomness of AI responses by setting \`LLM_TEMPERATURE\` to a value between 0 and 1:
|
|
119
|
+
|
|
103
120
|
- \`0\` - More deterministic and focused responses (default)
|
|
104
121
|
- \`1\` - More creative and varied responses`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const analyticsMdxTemplate = "---\ntitle: \"Analytics\"\ndescription: \"Add PostHog analytics to your documentation site with an analytics.json file for both client-side and server-side tracking.\"\ndate: \"2026-02-24\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 10\n---\n# Analytics\nTrack how users interact with your documentation using PostHog. Doccupine supports both client-side and server-side tracking out of the box, with a privacy-first proxy that routes analytics through your own domain.\n\n## analytics.json\nPlace an `analytics.json` at your project root (the same folder where you execute `npx doccupine`).\n\n```json\n{\n \"provider\": \"posthog\",\n \"posthog\": {\n \"key\": \"phc_your_project_api_key\",\n \"host\": \"https://us.i.posthog.com\"\n }\n}\n```\n\n## Fields\n\n- **provider**: The analytics provider to use. Currently only `\"posthog\"` is supported.\n- **posthog.key**: Your PostHog project API key. You can find this in your PostHog project settings under \"Project API Key\". This is a public identifier - it is safe to commit to version control.\n- **posthog.host**: The PostHog ingestion endpoint. Use `https://us.i.posthog.com` for US Cloud or `https://eu.i.posthog.com` for EU Cloud. If you self-host PostHog, use your instance URL.\n\n<Callout type=\"note\">\n The PostHog project API key is a public identifier used to send events. It is not a secret and is safe to include in your repository.\n</Callout>\n\n## What gets tracked\nWhen `analytics.json` is configured, Doccupine enables two layers of tracking:\n\n### Client-side\n- **Page views**: Captured on every client-side navigation using Next.js router hooks.\n- **Page leave**: Automatically captured when a user navigates away from a page.\n\n### Server-side\n- **Page views**: Captured in middleware on every page request, including the initial server render.\n- **Request metadata**: URL, pathname, host, referrer, and user agent are sent with each event.\n- **Smart filtering**: API routes, internal Next.js routes, and prefetch requests are automatically excluded.\n\n## Privacy proxy\nDoccupine routes all analytics traffic through your documentation domain using Next.js rewrites. Instead of sending data directly to PostHog (which ad blockers may intercept), requests go through `/ingest` on your own domain and are proxied to PostHog.\n\nThis means:\n- No third-party domains appear in network requests.\n- Ad blockers are less likely to interfere with tracking.\n- Your users' browsing data stays within your domain boundary before reaching PostHog.\n\nThe proxy destinations are derived automatically from the `host` field in your configuration.\n\n## Getting a PostHog key\n1. Sign up at [posthog.com](https://posthog.com) (free tier available).\n2. Create a new project.\n3. Go to **Project Settings** and copy the **Project API Key**.\n4. Paste it into your `analytics.json` as the `posthog.key` value.\n\n## Behavior\n- **Placement**: Put `analytics.json` in the project root alongside `config.json` and `theme.json`.\n- **Hot reload**: Changes to `analytics.json` are picked up automatically in watch mode. The layout, middleware, and Next.js config are regenerated.\n- **Graceful degradation**: If `analytics.json` is missing, empty, or has an invalid configuration, no tracking code runs. Your site works exactly the same without it.\n- **Dev server restart**: After adding or removing `analytics.json` for the first time, you may need to restart the Next.js dev server for proxy rewrites to take effect.\n\n<Callout type=\"warning\">\n After adding `analytics.json` for the first time, restart the dev server so the proxy rewrites are picked up by Next.js.\n</Callout>\n\n## Regions\nPostHog offers two cloud regions. Set the `host` field accordingly:\n\n| Region
|
|
1
|
+
export declare const analyticsMdxTemplate = "---\ntitle: \"Analytics\"\ndescription: \"Add PostHog analytics to your documentation site with an analytics.json file for both client-side and server-side tracking.\"\ndate: \"2026-02-24\"\ncategory: \"Configuration\"\ncategoryOrder: 3\norder: 10\n---\n\n# Analytics\n\nTrack how users interact with your documentation using PostHog. Doccupine supports both client-side and server-side tracking out of the box, with a privacy-first proxy that routes analytics through your own domain.\n\n## analytics.json\n\nPlace an `analytics.json` at your project root (the same folder where you execute `npx doccupine`).\n\n```json\n{\n \"provider\": \"posthog\",\n \"posthog\": {\n \"key\": \"phc_your_project_api_key\",\n \"host\": \"https://us.i.posthog.com\"\n }\n}\n```\n\n## Fields\n\n- **provider**: The analytics provider to use. Currently only `\"posthog\"` is supported.\n- **posthog.key**: Your PostHog project API key. You can find this in your PostHog project settings under \"Project API Key\". This is a public identifier - it is safe to commit to version control.\n- **posthog.host**: The PostHog ingestion endpoint. Use `https://us.i.posthog.com` for US Cloud or `https://eu.i.posthog.com` for EU Cloud. If you self-host PostHog, use your instance URL.\n\n<Callout type=\"note\">\n The PostHog project API key is a public identifier used to send events. It is not a secret and is safe to include in your repository.\n</Callout>\n\n## What gets tracked\n\nWhen `analytics.json` is configured, Doccupine enables two layers of tracking:\n\n### Client-side\n\n- **Page views**: Captured on every client-side navigation using Next.js router hooks.\n- **Page leave**: Automatically captured when a user navigates away from a page.\n\n### Server-side\n\n- **Page views**: Captured in middleware on every page request, including the initial server render.\n- **Request metadata**: URL, pathname, host, referrer, and user agent are sent with each event.\n- **Smart filtering**: API routes, internal Next.js routes, and prefetch requests are automatically excluded.\n\n## Privacy proxy\n\nDoccupine routes all analytics traffic through your documentation domain using Next.js rewrites. Instead of sending data directly to PostHog (which ad blockers may intercept), requests go through `/ingest` on your own domain and are proxied to PostHog.\n\nThis means:\n\n- No third-party domains appear in network requests.\n- Ad blockers are less likely to interfere with tracking.\n- Your users' browsing data stays within your domain boundary before reaching PostHog.\n\nThe proxy destinations are derived automatically from the `host` field in your configuration.\n\n## Getting a PostHog key\n\n1. Sign up at [posthog.com](https://posthog.com) (free tier available).\n2. Create a new project.\n3. Go to **Project Settings** and copy the **Project API Key**.\n4. Paste it into your `analytics.json` as the `posthog.key` value.\n\n## Behavior\n\n- **Placement**: Put `analytics.json` in the project root alongside `config.json` and `theme.json`.\n- **Hot reload**: Changes to `analytics.json` are picked up automatically in watch mode. The layout, middleware, and Next.js config are regenerated.\n- **Graceful degradation**: If `analytics.json` is missing, empty, or has an invalid configuration, no tracking code runs. Your site works exactly the same without it.\n- **Dev server restart**: After adding or removing `analytics.json` for the first time, you may need to restart the Next.js dev server for proxy rewrites to take effect.\n\n<Callout type=\"warning\">\n After adding `analytics.json` for the first time, restart the dev server so the proxy rewrites are picked up by Next.js.\n</Callout>\n\n## Regions\n\nPostHog offers two cloud regions. Set the `host` field accordingly:\n\n| Region | Host |\n| -------- | -------------------------- |\n| US Cloud | `https://us.i.posthog.com` |\n| EU Cloud | `https://eu.i.posthog.com` |\n\nIf you omit the `host` field, it defaults to the US Cloud endpoint.\n\n## Example\n\n### Minimal configuration (US Cloud)\n\n```json\n{\n \"provider\": \"posthog\",\n \"posthog\": {\n \"key\": \"phc_your_project_api_key\"\n }\n}\n```\n\n### EU Cloud\n\n```json\n{\n \"provider\": \"posthog\",\n \"posthog\": {\n \"key\": \"phc_your_project_api_key\",\n \"host\": \"https://eu.i.posthog.com\"\n }\n}\n```\n\n## Tips\n\n- **Start simple**: Add the config with just your key and verify events appear in your PostHog dashboard before customizing further.\n- **Check your dashboard**: After deploying, visit your PostHog project to confirm page view events are flowing in.\n- **Production only**: Consider adding `analytics.json` only in your production/deployment setup to avoid tracking local development traffic.";
|
|
@@ -6,10 +6,13 @@ category: "Configuration"
|
|
|
6
6
|
categoryOrder: 3
|
|
7
7
|
order: 10
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Analytics
|
|
11
|
+
|
|
10
12
|
Track how users interact with your documentation using PostHog. Doccupine supports both client-side and server-side tracking out of the box, with a privacy-first proxy that routes analytics through your own domain.
|
|
11
13
|
|
|
12
14
|
## analytics.json
|
|
15
|
+
|
|
13
16
|
Place an \`analytics.json\` at your project root (the same folder where you execute \`npx doccupine\`).
|
|
14
17
|
|
|
15
18
|
\`\`\`json
|
|
@@ -33,21 +36,26 @@ Place an \`analytics.json\` at your project root (the same folder where you exec
|
|
|
33
36
|
</Callout>
|
|
34
37
|
|
|
35
38
|
## What gets tracked
|
|
39
|
+
|
|
36
40
|
When \`analytics.json\` is configured, Doccupine enables two layers of tracking:
|
|
37
41
|
|
|
38
42
|
### Client-side
|
|
43
|
+
|
|
39
44
|
- **Page views**: Captured on every client-side navigation using Next.js router hooks.
|
|
40
45
|
- **Page leave**: Automatically captured when a user navigates away from a page.
|
|
41
46
|
|
|
42
47
|
### Server-side
|
|
48
|
+
|
|
43
49
|
- **Page views**: Captured in middleware on every page request, including the initial server render.
|
|
44
50
|
- **Request metadata**: URL, pathname, host, referrer, and user agent are sent with each event.
|
|
45
51
|
- **Smart filtering**: API routes, internal Next.js routes, and prefetch requests are automatically excluded.
|
|
46
52
|
|
|
47
53
|
## Privacy proxy
|
|
54
|
+
|
|
48
55
|
Doccupine routes all analytics traffic through your documentation domain using Next.js rewrites. Instead of sending data directly to PostHog (which ad blockers may intercept), requests go through \`/ingest\` on your own domain and are proxied to PostHog.
|
|
49
56
|
|
|
50
57
|
This means:
|
|
58
|
+
|
|
51
59
|
- No third-party domains appear in network requests.
|
|
52
60
|
- Ad blockers are less likely to interfere with tracking.
|
|
53
61
|
- Your users' browsing data stays within your domain boundary before reaching PostHog.
|
|
@@ -55,12 +63,14 @@ This means:
|
|
|
55
63
|
The proxy destinations are derived automatically from the \`host\` field in your configuration.
|
|
56
64
|
|
|
57
65
|
## Getting a PostHog key
|
|
66
|
+
|
|
58
67
|
1. Sign up at [posthog.com](https://posthog.com) (free tier available).
|
|
59
68
|
2. Create a new project.
|
|
60
69
|
3. Go to **Project Settings** and copy the **Project API Key**.
|
|
61
70
|
4. Paste it into your \`analytics.json\` as the \`posthog.key\` value.
|
|
62
71
|
|
|
63
72
|
## Behavior
|
|
73
|
+
|
|
64
74
|
- **Placement**: Put \`analytics.json\` in the project root alongside \`config.json\` and \`theme.json\`.
|
|
65
75
|
- **Hot reload**: Changes to \`analytics.json\` are picked up automatically in watch mode. The layout, middleware, and Next.js config are regenerated.
|
|
66
76
|
- **Graceful degradation**: If \`analytics.json\` is missing, empty, or has an invalid configuration, no tracking code runs. Your site works exactly the same without it.
|
|
@@ -71,10 +81,11 @@ The proxy destinations are derived automatically from the \`host\` field in your
|
|
|
71
81
|
</Callout>
|
|
72
82
|
|
|
73
83
|
## Regions
|
|
84
|
+
|
|
74
85
|
PostHog offers two cloud regions. Set the \`host\` field accordingly:
|
|
75
86
|
|
|
76
|
-
| Region
|
|
77
|
-
|
|
87
|
+
| Region | Host |
|
|
88
|
+
| -------- | -------------------------- |
|
|
78
89
|
| US Cloud | \`https://us.i.posthog.com\` |
|
|
79
90
|
| EU Cloud | \`https://eu.i.posthog.com\` |
|
|
80
91
|
|
|
@@ -106,7 +117,7 @@ If you omit the \`host\` field, it defaults to the US Cloud endpoint.
|
|
|
106
117
|
\`\`\`
|
|
107
118
|
|
|
108
119
|
## Tips
|
|
120
|
+
|
|
109
121
|
- **Start simple**: Add the config with just your key and verify events appear in your PostHog dashboard before customizing further.
|
|
110
122
|
- **Check your dashboard**: After deploying, visit your PostHog project to confirm page view events are flowing in.
|
|
111
|
-
- **Production only**: Consider adding \`analytics.json\` only in your production/deployment setup to avoid tracking local development traffic
|
|
112
|
-
`;
|
|
123
|
+
- **Production only**: Consider adding \`analytics.json\` only in your production/deployment setup to avoid tracking local development traffic.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const buttonsMdxTemplate = "---\ntitle: \"Buttons\"\ndescription: \"A flexible action component supporting variants, sizes, icons, and links.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 7\n---\n# Buttons\nA flexible action component supporting variants, sizes, icons, and links.\n\nButtons help users initiate actions or navigate to other pages. Use variants to convey emphasis, size for hierarchy, and icons to add clarity.\n\n## Button Usage\nYou can use the Button component directly within your MDX files without any import. The following examples show basic usage:\n\n```mdx\n<Button>Primary</Button>\n<Button variant=\"secondary\">Secondary</Button>\n<Button variant=\"tertiary\">Tertiary</Button>\n```\n\n<Button>Primary</Button>\n<Button variant=\"secondary\">Secondary</Button>\n<Button variant=\"tertiary\">Tertiary</Button>\n\n### Sizes\n\n```mdx\n<Button size=\"default\">Default size</Button>\n<Button size=\"big\">Big size</Button>\n```\n\n<Button size=\"default\">Default size</Button>\n<Button size=\"big\">Big size</Button>\n\n### Outline\n\n```mdx\n<Button outline>Outlined</Button>\n```\n\n<Button outline>Outlined</Button>\n\n### Full width\n\n```mdx\n<Button fullWidth>Full width button</Button>\n```\n\n<Button fullWidth>Full width button</Button>\n\n### With icon\n\n```mdx\n<Button icon=\"arrow-right\" iconPosition=\"left\"
|
|
1
|
+
export declare const buttonsMdxTemplate = "---\ntitle: \"Buttons\"\ndescription: \"A flexible action component supporting variants, sizes, icons, and links.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 7\n---\n\n# Buttons\n\nA flexible action component supporting variants, sizes, icons, and links.\n\nButtons help users initiate actions or navigate to other pages. Use variants to convey emphasis, size for hierarchy, and icons to add clarity.\n\n## Button Usage\n\nYou can use the Button component directly within your MDX files without any import. The following examples show basic usage:\n\n```mdx\n<Button>Primary</Button>\n<Button variant=\"secondary\">Secondary</Button>\n<Button variant=\"tertiary\">Tertiary</Button>\n```\n\n<Button>Primary</Button>\n<Button variant=\"secondary\">Secondary</Button>\n<Button variant=\"tertiary\">Tertiary</Button>\n\n### Sizes\n\n```mdx\n<Button size=\"default\">Default size</Button>\n<Button size=\"big\">Big size</Button>\n```\n\n<Button size=\"default\">Default size</Button>\n<Button size=\"big\">Big size</Button>\n\n### Outline\n\n```mdx\n<Button outline>Outlined</Button>\n```\n\n<Button outline>Outlined</Button>\n\n### Full width\n\n```mdx\n<Button fullWidth>Full width button</Button>\n```\n\n<Button fullWidth>Full width button</Button>\n\n### With icon\n\n```mdx\n<Button icon=\"arrow-right\" iconPosition=\"left\">\n With left icon\n</Button>\n<Button icon=\"arrow-right\" iconPosition=\"right\">\n With right icon\n</Button>\n```\n\n<Button icon=\"arrow-right\" iconPosition=\"left\">With left icon</Button>\n<Button icon=\"arrow-right\" iconPosition=\"right\">With right icon</Button>\n\n### As a link\n\nButtons can render as links when you provide an `href`.\n\n```mdx\n<Button href=\"/\">Home</Button>\n```\n\n<Button href=\"/\">Home</Button>\n\n## Properties\n\n<Field value=\"children\" type=\"node\" required>\n The content of the button.\n</Field>\n\n<Field value=\"variant\" type=\"string\">\n Controls visual emphasis.\n</Field>\n\n- **primary**\n- **secondary**\n- **tertiary**\n\n<Field value=\"size\" type=\"string\">\n Controls the size of the button.\n</Field>\n\n- **default**\n- **big**\n\n<Field value=\"outline\" type=\"boolean\">\n When true, renders the outlined style of the selected variant.\n</Field>\n\n<Field value=\"fullWidth\" type=\"boolean\">\n When true, the button expands to the full width of its container.\n</Field>\n\n<Field value=\"icon\" type=\"string\">\n Optional icon to display inside the button.\n</Field>\n\n- [**Lucide icon**](https://lucide.dev/icons) name or icon node\n\n<Field value=\"iconPosition\" type=\"string\">\n The position of the icon relative to the text.\n</Field>\n\n- **left**\n- **right**\n\n<Field value=\"href\" type=\"string\">\n When provided, the button renders as a link (`<a>`), enabling navigation.\n</Field>";
|
|
@@ -6,12 +6,15 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 7
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Buttons
|
|
11
|
+
|
|
10
12
|
A flexible action component supporting variants, sizes, icons, and links.
|
|
11
13
|
|
|
12
14
|
Buttons help users initiate actions or navigate to other pages. Use variants to convey emphasis, size for hierarchy, and icons to add clarity.
|
|
13
15
|
|
|
14
16
|
## Button Usage
|
|
17
|
+
|
|
15
18
|
You can use the Button component directly within your MDX files without any import. The following examples show basic usage:
|
|
16
19
|
|
|
17
20
|
\`\`\`mdx
|
|
@@ -53,14 +56,19 @@ You can use the Button component directly within your MDX files without any impo
|
|
|
53
56
|
### With icon
|
|
54
57
|
|
|
55
58
|
\`\`\`mdx
|
|
56
|
-
<Button icon="arrow-right" iconPosition="left">
|
|
57
|
-
|
|
59
|
+
<Button icon="arrow-right" iconPosition="left">
|
|
60
|
+
With left icon
|
|
61
|
+
</Button>
|
|
62
|
+
<Button icon="arrow-right" iconPosition="right">
|
|
63
|
+
With right icon
|
|
64
|
+
</Button>
|
|
58
65
|
\`\`\`
|
|
59
66
|
|
|
60
67
|
<Button icon="arrow-right" iconPosition="left">With left icon</Button>
|
|
61
68
|
<Button icon="arrow-right" iconPosition="right">With right icon</Button>
|
|
62
69
|
|
|
63
70
|
### As a link
|
|
71
|
+
|
|
64
72
|
Buttons can render as links when you provide an \`href\`.
|
|
65
73
|
|
|
66
74
|
\`\`\`mdx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const calloutsMdxTemplate = "---\ntitle: \"Callouts\"\ndescription: \"Make your content stand out by using callouts for extra emphasis.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 8\n---\n# Callouts\nMake your content stand out by using callouts for extra emphasis.\n\nYou can format them as Note, Warning, Info, Danger and Success.\n\n## Callouts Usage\nYou can use the Callouts component directly within your MDX files without any import. The following example shows a basic usage:\n\n
|
|
1
|
+
export declare const calloutsMdxTemplate = "---\ntitle: \"Callouts\"\ndescription: \"Make your content stand out by using callouts for extra emphasis.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 8\n---\n\n# Callouts\n\nMake your content stand out by using callouts for extra emphasis.\n\nYou can format them as Note, Warning, Info, Danger and Success.\n\n## Callouts Usage\n\nYou can use the Callouts component directly within your MDX files without any import. The following example shows a basic usage:\n\n```mdx\n<Callout type=\"note\">This is a note callout</Callout>\n\n<Callout type=\"warning\">This is a warning callout</Callout>\n\n<Callout type=\"info\">This is an info callout</Callout>\n\n<Callout type=\"danger\">This is a danger callout</Callout>\n\n<Callout type=\"success\">This is a success callout</Callout>\n```\n\n<Callout type=\"note\">\n This is a note callout\n</Callout>\n\n<Callout type=\"warning\">\n This is a warning callout\n</Callout>\n\n<Callout type=\"info\">\n This is an info callout\n</Callout>\n\n<Callout type=\"danger\">\n This is a danger callout\n</Callout>\n\n<Callout type=\"success\">\n This is a success callout\n</Callout>\n\n## Properties\n\n<Field value=\"type\" type=\"string\">\n The type of the callout: `note`, `info`, `warning`, `danger`, or `success`.\n</Field>\n\n<Field value=\"icon\" type=\"string\">\n A custom [Lucide](https://lucide.dev/icons) icon name. Overrides the default icon for the callout type.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the callout.\n</Field>";
|
|
@@ -6,35 +6,28 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 8
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Callouts
|
|
11
|
+
|
|
10
12
|
Make your content stand out by using callouts for extra emphasis.
|
|
11
13
|
|
|
12
14
|
You can format them as Note, Warning, Info, Danger and Success.
|
|
13
15
|
|
|
14
16
|
## Callouts Usage
|
|
17
|
+
|
|
15
18
|
You can use the Callouts component directly within your MDX files without any import. The following example shows a basic usage:
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
<Callout type="note">
|
|
19
|
-
This is a note callout
|
|
20
|
-
</Callout>
|
|
20
|
+
\`\`\`mdx
|
|
21
|
+
<Callout type="note">This is a note callout</Callout>
|
|
21
22
|
|
|
22
|
-
<Callout type="warning">
|
|
23
|
-
This is a warning callout
|
|
24
|
-
</Callout>
|
|
23
|
+
<Callout type="warning">This is a warning callout</Callout>
|
|
25
24
|
|
|
26
|
-
<Callout type="info">
|
|
27
|
-
This is an info callout
|
|
28
|
-
</Callout>
|
|
25
|
+
<Callout type="info">This is an info callout</Callout>
|
|
29
26
|
|
|
30
|
-
<Callout type="danger">
|
|
31
|
-
This is a danger callout
|
|
32
|
-
</Callout>
|
|
27
|
+
<Callout type="danger">This is a danger callout</Callout>
|
|
33
28
|
|
|
34
|
-
<Callout type="success">
|
|
35
|
-
|
|
36
|
-
</Callout>
|
|
37
|
-
~~~
|
|
29
|
+
<Callout type="success">This is a success callout</Callout>
|
|
30
|
+
\`\`\`
|
|
38
31
|
|
|
39
32
|
<Callout type="note">
|
|
40
33
|
This is a note callout
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const cardsMdxTemplate = "---\ntitle: \"Cards\"\ndescription: \"Cards act as visual containers for your content, giving you flexibility to combine text, icons, images, and links in a clean and organized way.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 6\n---\n# Cards\nDuplicate a page or section with ease, then emphasize important information or links using customizable layouts and icons.\n\nCards act as visual containers for your content, giving you flexibility to combine text, icons, images, and links in a clean and organized way.\n\n## Cards Usage\nYou can use the Cards component directly within your MDX files without any import. The following example shows a basic usage:\n\n
|
|
1
|
+
export declare const cardsMdxTemplate = "---\ntitle: \"Cards\"\ndescription: \"Cards act as visual containers for your content, giving you flexibility to combine text, icons, images, and links in a clean and organized way.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 6\n---\n\n# Cards\n\nDuplicate a page or section with ease, then emphasize important information or links using customizable layouts and icons.\n\nCards act as visual containers for your content, giving you flexibility to combine text, icons, images, and links in a clean and organized way.\n\n## Cards Usage\n\nYou can use the Cards component directly within your MDX files without any import. The following example shows a basic usage:\n\n```mdx\n<Card title=\"Note\" icon=\"badge-info\">\n Doccupine CLI is a command-line tool that helps you create and manage your\n Doccupine project. It provides a simple and intuitive interface for creating\n and configuring your project.\n</Card>\n```\n\n<Card title=\"Note\" icon=\"badge-info\">\n Doccupine CLI is a command-line tool that helps you create and manage your Doccupine project. It provides a simple and intuitive interface for creating and configuring your project.\n</Card>\n\n## Link Card\n\nPass a `href` prop to turn the card into a clickable link. The card will display interactive hover and focus styles automatically.\n\n```mdx\n<Card title=\"Getting Started\" icon=\"rocket\" href=\"/cards\">\n Learn how to set up Doccupine and create your first documentation site.\n</Card>\n```\n\n<Card title=\"Getting Started\" icon=\"rocket\" href=\"/cards\">\n Learn how to set up Doccupine and create your first documentation site.\n</Card>\n\n## Properties\n\n<Field value=\"title\" type=\"string\" required>\n The title of the card.\n</Field>\n\n<Field value=\"icon\" type=\"string\">\n The [Lucide](https://lucide.dev/icons) icon name to display in the card.\n</Field>\n\n<Field value=\"href\" type=\"string\">\n A URL or path to link to. When provided, the card becomes a clickable link with interactive styles.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the card.\n</Field>";
|
|
@@ -6,19 +6,24 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 6
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Cards
|
|
11
|
+
|
|
10
12
|
Duplicate a page or section with ease, then emphasize important information or links using customizable layouts and icons.
|
|
11
13
|
|
|
12
14
|
Cards act as visual containers for your content, giving you flexibility to combine text, icons, images, and links in a clean and organized way.
|
|
13
15
|
|
|
14
16
|
## Cards Usage
|
|
17
|
+
|
|
15
18
|
You can use the Cards component directly within your MDX files without any import. The following example shows a basic usage:
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
\`\`\`mdx
|
|
18
21
|
<Card title="Note" icon="badge-info">
|
|
19
|
-
Doccupine CLI is a command-line tool that helps you create and manage your
|
|
22
|
+
Doccupine CLI is a command-line tool that helps you create and manage your
|
|
23
|
+
Doccupine project. It provides a simple and intuitive interface for creating
|
|
24
|
+
and configuring your project.
|
|
20
25
|
</Card>
|
|
21
|
-
|
|
26
|
+
\`\`\`
|
|
22
27
|
|
|
23
28
|
<Card title="Note" icon="badge-info">
|
|
24
29
|
Doccupine CLI is a command-line tool that helps you create and manage your Doccupine project. It provides a simple and intuitive interface for creating and configuring your project.
|
|
@@ -28,11 +33,11 @@ You can use the Cards component directly within your MDX files without any impor
|
|
|
28
33
|
|
|
29
34
|
Pass a \`href\` prop to turn the card into a clickable link. The card will display interactive hover and focus styles automatically.
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
\`\`\`mdx
|
|
32
37
|
<Card title="Getting Started" icon="rocket" href="/cards">
|
|
33
38
|
Learn how to set up Doccupine and create your first documentation site.
|
|
34
39
|
</Card>
|
|
35
|
-
|
|
40
|
+
\`\`\`
|
|
36
41
|
|
|
37
42
|
<Card title="Getting Started" icon="rocket" href="/cards">
|
|
38
43
|
Learn how to set up Doccupine and create your first documentation site.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const codeMdxTemplate = "---\ntitle: \"Code\"\ndescription: \"Learn how to display inline code and code blocks in documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 3\n---\n# Code\nLearn how to display inline code and code blocks in documentation.\n\n## Adding Code Samples\nBoth inline code snippets and full code blocks are supported. Code blocks offer customization for syntax highlighting and more to improve readability and user experience.\n\n### Inline Code\nHighlight code within text by wrapping it with backticks:\n\n```text\nEnclose any `word` or `phrase` in backticks to format it as code.\n```\n\nEnclose any `word` or `phrase` in backticks to format it as code.\n\n## Code Blocks\nTo present larger code samples, use triple backticks for fenced code blocks. Each block can be copied, and\u2014if assistant features are enabled\u2014users can request explanations.\n\nYou may specify the language for highlighting:\n\n
|
|
1
|
+
export declare const codeMdxTemplate = "---\ntitle: \"Code\"\ndescription: \"Learn how to display inline code and code blocks in documentation.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 3\n---\n\n# Code\n\nLearn how to display inline code and code blocks in documentation.\n\n## Adding Code Samples\n\nBoth inline code snippets and full code blocks are supported. Code blocks offer customization for syntax highlighting and more to improve readability and user experience.\n\n### Inline Code\n\nHighlight code within text by wrapping it with backticks:\n\n```text\nEnclose any `word` or `phrase` in backticks to format it as code.\n```\n\nEnclose any `word` or `phrase` in backticks to format it as code.\n\n## Code Blocks\n\nTo present larger code samples, use triple backticks for fenced code blocks. Each block can be copied, and\u2014if assistant features are enabled\u2014users can request explanations.\n\nYou may specify the language for highlighting:\n\n````text\n```java\nclass HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}\n```\n````\n\n```java\nclass HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}\n```";
|
|
@@ -6,13 +6,17 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 3
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Code
|
|
11
|
+
|
|
10
12
|
Learn how to display inline code and code blocks in documentation.
|
|
11
13
|
|
|
12
14
|
## Adding Code Samples
|
|
15
|
+
|
|
13
16
|
Both inline code snippets and full code blocks are supported. Code blocks offer customization for syntax highlighting and more to improve readability and user experience.
|
|
14
17
|
|
|
15
18
|
### Inline Code
|
|
19
|
+
|
|
16
20
|
Highlight code within text by wrapping it with backticks:
|
|
17
21
|
|
|
18
22
|
\`\`\`text
|
|
@@ -22,11 +26,12 @@ Enclose any \`word\` or \`phrase\` in backticks to format it as code.
|
|
|
22
26
|
Enclose any \`word\` or \`phrase\` in backticks to format it as code.
|
|
23
27
|
|
|
24
28
|
## Code Blocks
|
|
29
|
+
|
|
25
30
|
To present larger code samples, use triple backticks for fenced code blocks. Each block can be copied, and—if assistant features are enabled—users can request explanations.
|
|
26
31
|
|
|
27
32
|
You may specify the language for highlighting:
|
|
28
33
|
|
|
29
|
-
|
|
34
|
+
\`\`\`\`text
|
|
30
35
|
\`\`\`java
|
|
31
36
|
class HelloWorld {
|
|
32
37
|
public static void main(String[] args) {
|
|
@@ -34,8 +39,7 @@ class HelloWorld {
|
|
|
34
39
|
}
|
|
35
40
|
}
|
|
36
41
|
\`\`\`
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
\`\`\`\`
|
|
39
43
|
|
|
40
44
|
\`\`\`java
|
|
41
45
|
class HelloWorld {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const colorSwatchesMdxTemplate = "---\ntitle: \"Color Swatches\"\ndescription: \"Display color palettes with labeled swatches to document your theme colors.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 15\n---\n# Color Swatches\nDisplay color palettes with labeled swatches to document your theme colors.\n\nThe `ColorSwatch` component renders a visual preview of a color alongside its token name, and `ColorSwatchGroup` arranges multiple swatches in a responsive grid.\n\n## Usage\nYou can use the ColorSwatch components directly within your MDX files without any import:\n\n
|
|
1
|
+
export declare const colorSwatchesMdxTemplate = "---\ntitle: \"Color Swatches\"\ndescription: \"Display color palettes with labeled swatches to document your theme colors.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 15\n---\n\n# Color Swatches\n\nDisplay color palettes with labeled swatches to document your theme colors.\n\nThe `ColorSwatch` component renders a visual preview of a color alongside its token name, and `ColorSwatchGroup` arranges multiple swatches in a responsive grid.\n\n## Usage\n\nYou can use the ColorSwatch components directly within your MDX files without any import:\n\n```mdx\n<ColorSwatchGroup>\n <ColorSwatch token=\"primary\" value=\"#6366F1\" />\n <ColorSwatch token=\"secondary\" value=\"#EC4899\" />\n <ColorSwatch token=\"success\" value=\"#10B981\" />\n <ColorSwatch token=\"warning\" value=\"#F59E0B\" />\n <ColorSwatch token=\"danger\" value=\"#EF4444\" />\n <ColorSwatch token=\"info\" value=\"#3B82F6\" />\n</ColorSwatchGroup>\n```\n\n<ColorSwatchGroup>\n <ColorSwatch token=\"primary\" value=\"#6366F1\" />\n <ColorSwatch token=\"secondary\" value=\"#EC4899\" />\n <ColorSwatch token=\"success\" value=\"#10B981\" />\n <ColorSwatch token=\"warning\" value=\"#F59E0B\" />\n <ColorSwatch token=\"danger\" value=\"#EF4444\" />\n <ColorSwatch token=\"info\" value=\"#3B82F6\" />\n</ColorSwatchGroup>\n\n## Dark Colors\n\nText color automatically adapts based on the background luminance, so dark swatches display white text:\n\n```mdx\n<ColorSwatchGroup>\n <ColorSwatch token=\"dark\" value=\"#1E1E2E\" />\n <ColorSwatch token=\"grayDark\" value=\"#374151\" />\n <ColorSwatch token=\"gray\" value=\"#6B7280\" />\n <ColorSwatch token=\"grayLight\" value=\"#D1D5DB\" />\n <ColorSwatch token=\"light\" value=\"#F9FAFB\" />\n <ColorSwatch token=\"white\" value=\"#FFFFFF\" />\n</ColorSwatchGroup>\n```\n\n<ColorSwatchGroup>\n <ColorSwatch token=\"dark\" value=\"#1E1E2E\" />\n <ColorSwatch token=\"grayDark\" value=\"#374151\" />\n <ColorSwatch token=\"gray\" value=\"#6B7280\" />\n <ColorSwatch token=\"grayLight\" value=\"#D1D5DB\" />\n <ColorSwatch token=\"light\" value=\"#F9FAFB\" />\n <ColorSwatch token=\"white\" value=\"#FFFFFF\" />\n</ColorSwatchGroup>\n\n## ColorSwatch Properties\n\n<Field value=\"token\" type=\"string\" required>\n The name or label displayed below the color preview (e.g. a design token name).\n</Field>\n\n<Field value=\"value\" type=\"string\" required>\n A hex color value (e.g. `#6366F1`). Displayed inside the color preview and used as the background.\n</Field>\n\n## ColorSwatchGroup Properties\n\n<Field value=\"children\" type=\"node\" required>\n One or more `ColorSwatch` components to display in a responsive grid.\n</Field>";
|
|
@@ -6,15 +6,18 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 15
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Color Swatches
|
|
11
|
+
|
|
10
12
|
Display color palettes with labeled swatches to document your theme colors.
|
|
11
13
|
|
|
12
14
|
The \`ColorSwatch\` component renders a visual preview of a color alongside its token name, and \`ColorSwatchGroup\` arranges multiple swatches in a responsive grid.
|
|
13
15
|
|
|
14
16
|
## Usage
|
|
17
|
+
|
|
15
18
|
You can use the ColorSwatch components directly within your MDX files without any import:
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
\`\`\`mdx
|
|
18
21
|
<ColorSwatchGroup>
|
|
19
22
|
<ColorSwatch token="primary" value="#6366F1" />
|
|
20
23
|
<ColorSwatch token="secondary" value="#EC4899" />
|
|
@@ -23,7 +26,7 @@ You can use the ColorSwatch components directly within your MDX files without an
|
|
|
23
26
|
<ColorSwatch token="danger" value="#EF4444" />
|
|
24
27
|
<ColorSwatch token="info" value="#3B82F6" />
|
|
25
28
|
</ColorSwatchGroup>
|
|
26
|
-
|
|
29
|
+
\`\`\`
|
|
27
30
|
|
|
28
31
|
<ColorSwatchGroup>
|
|
29
32
|
<ColorSwatch token="primary" value="#6366F1" />
|
|
@@ -38,7 +41,7 @@ You can use the ColorSwatch components directly within your MDX files without an
|
|
|
38
41
|
|
|
39
42
|
Text color automatically adapts based on the background luminance, so dark swatches display white text:
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
\`\`\`mdx
|
|
42
45
|
<ColorSwatchGroup>
|
|
43
46
|
<ColorSwatch token="dark" value="#1E1E2E" />
|
|
44
47
|
<ColorSwatch token="grayDark" value="#374151" />
|
|
@@ -47,7 +50,7 @@ Text color automatically adapts based on the background luminance, so dark swatc
|
|
|
47
50
|
<ColorSwatch token="light" value="#F9FAFB" />
|
|
48
51
|
<ColorSwatch token="white" value="#FFFFFF" />
|
|
49
52
|
</ColorSwatchGroup>
|
|
50
|
-
|
|
53
|
+
\`\`\`
|
|
51
54
|
|
|
52
55
|
<ColorSwatchGroup>
|
|
53
56
|
<ColorSwatch token="dark" value="#1E1E2E" />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const columnsMdxTemplate = "---\ntitle: \"Columns\"\ndescription: \"Columns are used to organize content in a grid-like structure.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 13\n---\n# Columns\nArrange multiple cards neatly in a side-by-side grid layout.\n\nThe `Columns` component helps you organize several `Card` elements into a visually balanced grid. By choosing how many columns you want, you can control the layout and spacing of your cards.\n\n## Columns Usage\nYou can use the `Columns` component to create a grid of cards with a specified number of columns.\n\n```mdx\n<Columns cols={2}>\n <Card title=\"Getting Started\" icon=\"rocket\">\n Kick off your project using our easy quickstart guide.\n </Card>\n\n <Card title=\"API Reference\" icon=\"code\">\n Browse all endpoints, parameters, and code examples for your API integration.\n </Card>\n</Columns>\n```\n\n<Columns cols={2}>\n <Card title=\"Getting Started\" icon=\"rocket\">\n Kick off your project using our easy quickstart guide.\n </Card>\n\n <Card title=\"API Reference\" icon=\"code\">\n Browse all endpoints, parameters, and code examples for your API integration.\n </Card>\n</Columns>\n\n## Properties\n\n<Field value=\"cols\" type=\"number\">\n The number of columns in the grid. Defaults to 1.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the columns.\n</Field>";
|
|
1
|
+
export declare const columnsMdxTemplate = "---\ntitle: \"Columns\"\ndescription: \"Columns are used to organize content in a grid-like structure.\"\ndate: \"2026-02-19\"\ncategory: \"Components\"\ncategoryOrder: 1\norder: 13\n---\n\n# Columns\n\nArrange multiple cards neatly in a side-by-side grid layout.\n\nThe `Columns` component helps you organize several `Card` elements into a visually balanced grid. By choosing how many columns you want, you can control the layout and spacing of your cards.\n\n## Columns Usage\n\nYou can use the `Columns` component to create a grid of cards with a specified number of columns.\n\n```mdx\n<Columns cols={2}>\n <Card title=\"Getting Started\" icon=\"rocket\">\n Kick off your project using our easy quickstart guide.\n </Card>\n\n <Card title=\"API Reference\" icon=\"code\">\n Browse all endpoints, parameters, and code examples for your API integration.\n </Card>\n</Columns>\n```\n\n<Columns cols={2}>\n <Card title=\"Getting Started\" icon=\"rocket\">\n Kick off your project using our easy quickstart guide.\n </Card>\n\n <Card title=\"API Reference\" icon=\"code\">\n Browse all endpoints, parameters, and code examples for your API integration.\n </Card>\n</Columns>\n\n## Properties\n\n<Field value=\"cols\" type=\"number\">\n The number of columns in the grid. Defaults to 1.\n</Field>\n\n<Field value=\"children\" type=\"node\" required>\n The content of the columns.\n</Field>";
|
|
@@ -6,12 +6,15 @@ category: "Components"
|
|
|
6
6
|
categoryOrder: 1
|
|
7
7
|
order: 13
|
|
8
8
|
---
|
|
9
|
+
|
|
9
10
|
# Columns
|
|
11
|
+
|
|
10
12
|
Arrange multiple cards neatly in a side-by-side grid layout.
|
|
11
13
|
|
|
12
14
|
The \`Columns\` component helps you organize several \`Card\` elements into a visually balanced grid. By choosing how many columns you want, you can control the layout and spacing of your cards.
|
|
13
15
|
|
|
14
16
|
## Columns Usage
|
|
17
|
+
|
|
15
18
|
You can use the \`Columns\` component to create a grid of cards with a specified number of columns.
|
|
16
19
|
|
|
17
20
|
\`\`\`mdx
|