@mgks/docmd 0.3.3 → 0.3.5

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 CHANGED
@@ -1,68 +1,63 @@
1
- <p align="center">
2
- <br>
1
+ <div align="center">
3
2
  <a href="https://docmd.mgks.dev">
4
- <img src="https://github.com/mgks/docmd/blob/main/src/assets/images/docmd-logo-light.png?raw=true" alt="docmd logo" width="200" />
3
+ <img src="https://github.com/mgks/docmd/blob/main/src/assets/images/docmd-logo-light.png?raw=true" alt="docmd logo" width="150" />
5
4
  </a>
6
- </p>
7
-
8
- <p align="center">
9
- <b>The minimalist, zero-config documentation generator for Node.js developers.</b>
10
- <br>
11
- Turn Markdown into beautiful, blazing-fast websites in seconds.
12
- <br>
13
- </p>
5
+ <p>
6
+ <strong>The minimalist, zero-config documentation generator.</strong>
7
+ </p>
8
+ </div>
14
9
 
15
10
  <p align="center">
16
- <a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/v/@mgks/docmd.svg?style=flat-square&color=007acc" alt="npm version"></a>
17
- <a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/dt/@mgks/docmd.svg?style=flat-square&color=success" alt="npm downloads"></a>
18
- <a href="https://github.com/mgks/docmd/blob/main/LICENSE"><img src="https://img.shields.io/github/license/mgks/docmd.svg?style=flat-square&color=blue" alt="license"></a>
11
+ <a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/v/@mgks/docmd.svg?style=flat-square&color=fc3b53" alt="npm version"></a>
12
+ <a href="https://github.com/mgks/docmd/commits"><img src="https://img.shields.io/github/commit-activity/m/mgks/docmd?style=flat-square&color=38bd24" alt="commits"></a>
13
+ <a href="https://www.npmjs.com/package/@mgks/docmd"><img src="https://img.shields.io/npm/dt/@mgks/docmd.svg?style=flat-square&color=38bd24" alt="downloads"></a>
19
14
  <a href="https://github.com/mgks/docmd/stargazers"><img src="https://img.shields.io/github/stars/mgks/docmd?style=flat-square&logo=github" alt="stars"></a>
15
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/mgks/docmd.svg?style=flat-square&color=blue" alt="license"></a>
20
16
  </p>
21
17
 
22
18
  <p align="center">
23
19
  <a href="https://docmd.mgks.dev"><b>View Live Demo</b></a> •
24
- <a href="https://docmd.mgks.dev/getting-started/installation/"><b>Documentation</b></a> •
20
+ <a href="https://docmd.mgks.dev/getting-started/installation/"><b>Read Documentation</b></a> •
21
+ <a href="https://docmd.mgks.dev/live/"><b>Live Editor</b></a> •
25
22
  <a href="https://github.com/mgks/docmd/issues"><b>Report Bug</b></a>
26
23
  </p>
27
24
 
28
- <br>
29
-
30
25
  <p align="center">
31
- <img width="2856" height="1558" alt="519536477-8d948e18-8e2d-420d-8902-96e1aafab1ba-modified" src="https://docmd.mgks.dev/assets/images/preview-dark-welcome.png" />
26
+ <img width="800" alt="docmd preview" src="https://docmd.mgks.dev/assets/images/preview-dark-welcome.png" style="border-radius: 10px" />
27
+ <br/>
32
28
  <sup><i>docmd noStyle page preview in dark mode</i></sup>
33
29
  </p>
34
30
 
35
- ## 🚀 Why docmd?
36
-
37
- Most documentation tools today are too heavy (React hydration, massive bundles) or require ecosystems you don't use (Python/Ruby).
38
-
39
- **docmd** fills the gap. It is a native Node.js tool that generates **pure, static HTML**.
31
+ ## Features
40
32
 
41
- * ⚡ **Blazing Fast:** No hydration delay. Instant page loads.
42
- * 🔍 **Offline Search:** Powerful full-text search included automatically.
43
- * 🛠 **Zero Config:** Works out of the box with sensible defaults.
44
- * 🎨 **Theming:** Built-in light/dark modes and multiple themes (`sky`, `ruby`, `retro`).
45
- * 📦 **Node.js Native:** No Python, no Gemfiles. Just `npm install`.
46
- * 🧩 **Rich Content:** Built-in support for Callouts, Cards, Tabs, Steps, and Changelogs.
33
+ - **Zero Config**: Works out of the box with sensible defaults. Just `init` and go.
34
+ - **Blazing Fast**: Generates **pure, static HTML**. No React hydration lag, no heavy bundles.
35
+ - **Smart Search**: Built-in, **offline-capable** full-text search with fuzzy matching. No API keys required.
36
+ - **Isomorphic Core**: Runs anywhere—Node.js CLI, CI/CD pipelines, or **directly in the browser** via WASM.
37
+ - **Rich Content**: Built-in support for Callouts, Cards, Tabs, Steps, Changelogs, and Mermaid diagrams.
38
+ - **Theming**: Beautiful light/dark modes and multiple pre-built themes (`sky`, `ruby`, `retro`).
47
39
 
48
- ## 🏁 Quick Start
40
+ ## Quick Start
49
41
 
50
- You don't need to install anything globally to try it out.
42
+ **Installation:**
51
43
 
52
44
  ```bash
53
- # 1. Initialize a new project
54
- npx @mgks/docmd init my-docs
45
+ npm install -g @mgks/docmd
46
+ ```
55
47
 
56
- # 2. Enter directory
57
- cd my-docs
48
+ **Run:**
58
49
 
59
- # 3. Start the dev server
60
- npm start
50
+ ```bash
51
+ docmd init my-docs # Initialize a new project
52
+ cd my-docs # Enter directory
53
+ docmd dev # Start live-reloading server
54
+ docmd build # Generate static site for deployment
55
+ docmd live # Launch live editor to preview and design pages
61
56
  ```
62
57
 
63
- **Dev server output:**
58
+ **Dev Server:**
64
59
 
65
- ```
60
+ ```js
66
61
 
67
62
  _ _
68
63
  _| |___ ___ _____ _| |
@@ -72,92 +67,89 @@ npm start
72
67
  v0.x.x
73
68
 
74
69
 
75
- 🚀 Performing initial build for dev server...
76
- ✅ Generated sitemap at ./site/sitemap.xml
77
- ✅ Initial build complete.
78
- 👀 Watching for changes in:
79
- - Source: ./docs
80
- - Config: ./docmd.config.js
81
- - Assets: ./assets
82
- - docmd Templates: ./src/templates (internal)
83
- - docmd Assets: ./src/assets (internal)
84
- 🎉 Dev server started at http://localhost:3000
85
- Serving content from: ./site
86
- Live reload is active. Browser will refresh automatically when files change.
87
- ```
88
-
89
- ## ✨ Features
70
+ 🚀 Performing initial build...
90
71
 
91
- | Feature | Description |
92
- | :--- | :--- |
93
- | **Markdown First** | Standard Markdown + Frontmatter. No proprietary syntax to learn. |
94
- | **Smart CLI** | Intelligent config validation catches typos before they break your build. |
95
- | **Custom Containers** | Use `::: callout`, `::: card`, `::: steps`, `::: tabs`, `::: collapsible`, `::: changelog`, and more to enrich content. |
96
- | **Smart Search** | Built-in, offline-capable full-text search with fuzzy matching and highlighting. No API keys required. |
97
- | **Diagrams** | Create flowcharts, relationship diagrams, journey, piecharts, graphs, timelines and more with Mermaid. |
98
- | **No-Style Pages** | Create custom landing pages (highly customizable custom HTML pages) without theme constraints. |
99
- | **Auto Dark Mode** | Respects system preference and saves user choice. |
100
- | **Plugins** | SEO, Sitemap, and Analytics support included out-of-the-box. |
72
+ 👀 Watching for changes in:
73
+ - Source: ./docs
74
+ - Config: ./config.js
75
+ - Assets: ./assets
101
76
 
102
- ## 🆚 Comparison
77
+ ────────────────────────────────────────
78
+ SERVER RUNNING (v0.3.5)
103
79
 
104
- How does `docmd` stack up against the giants?
80
+ Local: http://127.0.0.1:3000
81
+ Network: http://192.1.1.1:3000
105
82
 
106
- | Feature | docmd | Docusaurus | MkDocs (Material) | Mintlify |
107
- | :--- | :--- | :--- | :--- | :--- |
108
- | **Language** | **Node.js** | React.js | Python | Proprietary |
109
- | **Output** | **Static HTML** | React SPA | Static HTML | Hosted / Next.js |
110
- | **JS Payload** | **Tiny (< 15kb)** | Heavy | Minimal | Medium |
111
- | **Setup** | **~2 mins** | ~15 mins | ~10 mins | Instant (SaaS) |
112
- | **Cost** | **100% Free OSS** | 100% Free OSS | 100% Free OSS | Freemium |
83
+ Serving: ./site
84
+ ────────────────────────────────────────
85
+ ```
113
86
 
114
- 👉 *[Read the full comparison](https://docmd.mgks.dev/comparison/)*
87
+ ## Usage in Detail
115
88
 
116
- ## 📦 Installation
89
+ ### Project Structure
117
90
 
118
- For frequent use, install globally:
91
+ `docmd` keeps it simple. Your content lives in `docs/`, your config in `docmd.config.js`.
119
92
 
120
93
  ```bash
121
- npm install -g @mgks/docmd
94
+ my-docs/
95
+ ├── docs/ # Your Markdown files
96
+ │ ├── index.md # Homepage
97
+ │ └── guide.md # Content page
98
+ ├── assets/ # Images and custom CSS
99
+ └── docmd.config.js # Configuration
122
100
  ```
123
101
 
124
- ### Commands
125
-
126
- * `docmd init` - Create a new documentation project.
127
- * `docmd dev` - Start the live-reloading local server.
128
- * `docmd build` - Generate static files to `site/` for deployment.
129
-
130
- ## 🎨 Themes
102
+ ### Configuration
131
103
 
132
- Switching themes is as easy as changing one line in your `docmd.config.js`.
104
+ Customize your site in seconds via `docmd.config.js`:
133
105
 
134
106
  ```javascript
135
107
  module.exports = {
108
+ siteTitle: 'My Project',
109
+ srcDir: 'docs',
110
+ outputDir: 'site',
136
111
  theme: {
137
- name: 'sky', // Options: 'default', 'sky', 'ruby', 'retro'
138
- defaultMode: 'dark'
139
- }
112
+ name: 'sky', // 'default', 'sky', 'ruby', 'retro'
113
+ defaultMode: 'dark', // 'light' or 'dark'
114
+ enableModeToggle: true
115
+ },
116
+ navigation: [
117
+ { title: 'Home', path: '/', icon: 'home' },
118
+ { title: 'Guide', path: '/guide', icon: 'book' }
119
+ ]
140
120
  }
141
121
  ```
142
122
 
143
- ## 🤝 Contributing
123
+ ## Live Editor
144
124
 
145
- We welcome contributions! Please see our [Contribution Guidelines](.github/CONTRIBUTING.md) for details.
125
+ `docmd` comes with a modular architecture that allows the core engine to run client-side.
146
126
 
147
- 1. Fork the repository.
148
- 2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
149
- 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
150
- 4. Push to the branch (`git push origin feature/AmazingFeature`).
151
- 5. Open a Pull Request.
127
+ **Launch locally:**
128
+ ```bash
129
+ docmd live
130
+ ```
131
+ This builds and serves a local editor where you can write Markdown and see the preview instantly without any server-side processing.
132
+
133
+ **Embed in your app:**
134
+ You can also use the `dist/docmd-live.js` bundle to add Markdown compilation capabilities to your own web applications.
135
+
136
+ ## Comparison
152
137
 
153
- ## ❤️ Support
138
+ | Feature | docmd | Docusaurus | MkDocs | Mintlify |
139
+ | :--- | :--- | :--- | :--- | :--- |
140
+ | **Language** | **Node.js** | React.js | Python | Proprietary |
141
+ | **Output** | **Static HTML** | React SPA | Static HTML | Hosted |
142
+ | **JS Payload** | **Tiny (< 15kb)** | Heavy | Minimal | Medium |
143
+ | **Search** | **Built-in (Offline)** | Algolia (Ext) | Built-in | Built-in |
144
+ | **Setup** | **~1 min** | ~15 mins | ~10 mins | Instant |
145
+ | **Cost** | **Free OSS** | Free OSS | Free OSS | Freemium |
154
146
 
155
- This project is open source and free to use. If you find it valuable, please consider:
147
+ ## Community & Support
156
148
 
157
- 1. ⭐️ **Starring the repo** on GitHub (it helps a lot!)
158
- 2. ☕ **[Sponsoring the project](https://github.com/sponsors/mgks)** to support ongoing development.
149
+ - **Contributing**: We welcome PRs! See [CONTRIBUTING.md](.github/CONTRIBUTING.md).
150
+ - **Support**: If you find `docmd` useful, please consider [sponsoring the project](https://github.com/sponsors/mgks) or giving it a star ⭐.
159
151
 
160
- ## 📄 License
152
+ ## License
161
153
 
162
154
  Distributed under the MIT License. See `LICENSE` for more information.
163
155
 
package/bin/docmd.js CHANGED
@@ -1,113 +1,75 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const { Command } = require('commander');
4
- const fs = require('fs-extra');
5
- const path = require('path');
6
- const { version } = require('../package.json');
7
- const { initProject } = require('../src/commands/init');
3
+ const { program } = require('commander');
4
+ // This import corresponds to module.exports = { startDevServer } in src/commands/dev.js
5
+ const { startDevServer } = require('../src/commands/dev');
8
6
  const { buildSite } = require('../src/commands/build');
9
- const { startDevServer } = require('../src/commands/dev');
7
+ const { initProject } = require('../src/commands/init');
8
+ const { version } = require('../package.json');
10
9
  const { printBanner } = require('../src/core/logger');
11
-
12
- // Helper function to find the config file
13
- const findConfigFile = () => {
14
- const newConfigPath = 'docmd.config.js';
15
- const oldConfigPath = 'config.js';
16
-
17
- if (fs.existsSync(path.resolve(process.cwd(), newConfigPath))) {
18
- return newConfigPath;
19
- }
20
- if (fs.existsSync(path.resolve(process.cwd(), oldConfigPath))) {
21
- return oldConfigPath;
22
- }
23
-
24
- throw new Error('Configuration file not found. Please create a docmd.config.js file or run "docmd init".');
25
- };
26
-
27
- const program = new Command();
10
+ const path = require('path');
11
+ const { spawn } = require('child_process');
28
12
 
29
13
  program
30
14
  .name('docmd')
31
- .description('Generate beautiful, lightweight static documentation sites directly from your Markdown files.')
32
- .version(version);
15
+ .description('The minimalist, zero-config documentation generator')
16
+ .version(version, '-v, --version', 'Output the current version')
17
+ .helpOption('-h, --help', 'Display help for command');
33
18
 
34
19
  program
35
20
  .command('init')
36
- .description('Initialize a new docmd project (creates docs/ and config file)')
37
- .action(async () => {
38
- try {
39
- await initProject();
40
- console.log('✅ docmd project initialized successfully!');
41
- } catch (error) {
42
- console.error('❌ Error initializing project:', error.message);
43
- process.exit(1);
44
- }
21
+ .description('Initialize a new documentation project')
22
+ .action(() => {
23
+ printBanner();
24
+ initProject();
45
25
  });
46
26
 
47
27
  program
48
- .command('build')
49
- .description('Build the static site from Markdown files and config')
50
- .option('-c, --config <path>', 'Path to config file')
51
- .option('-p, --preserve', 'Preserve existing asset files instead of updating them')
52
- .option('--no-preserve', 'Force update all asset files, overwriting existing ones')
53
- .option('--silent', 'Suppress log output')
54
- .action(async (options) => {
55
- try {
56
- if (!options.silent) { printBanner(); }
57
-
58
- const originalLog = console.log;
59
- if (options.silent) { console.log = () => {}; }
60
-
61
- const configPath = options.config || findConfigFile();
62
- console.log(`🚀 Starting build process using ${configPath}...`);
63
- await buildSite(configPath, {
64
- preserve: options.preserve
65
- });
66
-
67
- console.log = originalLog;
68
- if (!options.silent) {
69
- console.log('✅ Build complete! Site generated in `site/` directory.');
70
- }
71
-
72
- } catch (error) {
73
- console.error('❌ Build failed:', error.message);
74
- // console.error(error.stack);
75
- process.exit(1);
76
- }
28
+ .command('dev')
29
+ .description('Start the development server with live reload')
30
+ .option('-c, --config <path>', 'Path to configuration file', 'docmd.config.js')
31
+ .option('-p, --port <number>', 'Port to run the server on')
32
+ .option('--preserve', 'Preserve existing assets', false)
33
+ .action((options) => {
34
+ printBanner();
35
+ startDevServer(options.config, options);
77
36
  });
78
37
 
79
38
  program
80
- .command('dev')
81
- .description('Start a live preview development server')
82
- .option('-c, --config <path>', 'Path to config file')
83
- .option('--port <number>', 'Specify a port for the dev server')
84
- .option('-p, --preserve', 'Preserve existing asset files instead of updating them')
85
- .option('--no-preserve', 'Force update all asset files, overwriting existing ones')
86
- .option('--silent', 'Suppress log output')
87
- .action(async (options) => {
88
- try {
89
- if (!options.silent) { printBanner(); }
39
+ .command('build')
40
+ .description('Build the static documentation site')
41
+ .option('-c, --config <path>', 'Path to configuration file', 'docmd.config.js')
42
+ .option('--preserve', 'Preserve existing assets', false)
43
+ .action((options) => {
44
+ buildSite(options.config, { isDev: false, preserve: options.preserve });
45
+ })
46
+ .option('--offline', 'Generate a build optimized for file:// viewing (appends index.html)', false)
47
+ .action((options) => {
48
+ buildSite(options.config, { isDev: false, preserve: options.preserve, offline: options.offline });
49
+ });
90
50
 
91
- if (options.silent) {
92
- const originalLog = console.log;
93
- console.log = (message) => {
94
- if (message && message.includes('Dev server started at')) {
95
- originalLog(message);
96
- }
97
- };
51
+ program
52
+ .command('live')
53
+ .description('Build and serve the browser-based live editor')
54
+ .action(() => {
55
+ const scriptPath = path.resolve(__dirname, '../scripts/build-live.js');
56
+ const distPath = path.resolve(__dirname, '../dist');
57
+
58
+ console.log('🚀 Starting Live Editor build...');
59
+
60
+ // Using spawn ensures the build runs in a fresh process context
61
+ const build = spawn(process.execPath, [scriptPath], { stdio: 'inherit' });
62
+
63
+ build.on('close', (code) => {
64
+ if (code === 0) {
65
+ console.log('\n🌍 Launching server...');
66
+ console.log(' Press Ctrl+C to stop.\n');
67
+
68
+ // Fix for Node DeprecationWarning regarding shell: true
69
+ const serveCmd = `npx serve "${distPath}"`;
70
+ spawn(serveCmd, { stdio: 'inherit', shell: true });
98
71
  }
99
- const configPath = options.config || findConfigFile();
100
- await startDevServer(configPath, { preserve: options.preserve, port: options.port });
101
-
102
- } catch (error) {
103
- console.error('❌ Dev server failed:', error.message);
104
- // console.error(error.stack);
105
- process.exit(1);
106
- }
72
+ });
107
73
  });
108
74
 
109
- program.parse(process.argv);
110
-
111
- if (!process.argv.slice(2).length) {
112
- program.outputHelp();
113
- }
75
+ program.parse();
@@ -0,0 +1,175 @@
1
+ // Source file from the docmd project — https://github.com/mgks/docmd
2
+
3
+ module.exports = {
4
+ // --- Core Metadata ---
5
+ siteTitle: 'docmd',
6
+ siteUrl: 'https://docmd.mgks.dev', // No trailing slash
7
+
8
+ // --- Branding ---
9
+ logo: {
10
+ light: 'assets/images/docmd-logo-light.png',
11
+ dark: 'assets/images/docmd-logo-dark.png',
12
+ alt: 'docmd Logo',
13
+ href: './',
14
+ },
15
+ favicon: 'assets/favicon.ico',
16
+
17
+ // --- Structure ---
18
+ srcDir: 'docs', // Source markdown files directory
19
+ outputDir: 'site', // Output directory for generated site
20
+
21
+ // --- Features & UX ---
22
+ search: true, // Built-in offline search
23
+ minify: true, // Production build optimization
24
+ autoTitleFromH1: true, // Auto-generate title from first H1 if frontmatter title is missing
25
+ copyCode: true, // Enable "copy to clipboard" on code blocks
26
+ pageNavigation: true, // Next/Prev links
27
+
28
+ // --- Sidebar & Theme ---
29
+ sidebar: {
30
+ collapsible: true,
31
+ defaultCollapsed: false,
32
+ },
33
+ theme: {
34
+ name: 'sky', // 'default', 'sky', 'ruby', 'retro'
35
+ defaultMode: 'light', // 'light' or 'dark'
36
+ enableModeToggle: true, // Show theme mode toggle button
37
+ positionMode: 'top', // 'top' or 'bottom' of header
38
+ codeHighlight: true, // Enable code syntax highlighting
39
+ customCss: [], // Add paths relative to outputDir here
40
+ },
41
+ customJs: [
42
+ 'assets/js/docmd-image-lightbox.js',
43
+ ],
44
+
45
+ // --- Plugins ---
46
+ plugins: {
47
+ seo: {
48
+ defaultDescription: 'The minimalist, zero-config documentation generator for Node.js developers.',
49
+ openGraph: {
50
+ defaultImage: 'assets/images/docmd-preview.png',
51
+ },
52
+ twitter: {
53
+ cardType: 'summary_large_image',
54
+ }
55
+ },
56
+ analytics: {
57
+ googleV4: {
58
+ measurementId: 'G-8QVBDQ4KM1'
59
+ }
60
+ },
61
+ sitemap: {
62
+ defaultChangefreq: 'weekly',
63
+ defaultPriority: 0.8
64
+ }
65
+ },
66
+
67
+ // --- Doc Source Link ---
68
+ editLink: {
69
+ enabled: true,
70
+ baseUrl: 'https://github.com/mgks/docmd/edit/main/docs',
71
+ text: 'Edit this page on GitHub'
72
+ },
73
+
74
+ // --- Navigation ---
75
+ navigation: [
76
+ { title: 'Welcome', path: './', icon: 'feather' },
77
+ { title: 'Overview', path: './overview', icon: 'home' },
78
+
79
+ {
80
+ title: 'Getting Started',
81
+ icon: 'rocket',
82
+ path: './getting-started/',
83
+ children: [
84
+ { title: 'Installation', path: './getting-started/installation', icon: 'download' },
85
+ { title: 'Basic Usage', path: './getting-started/basic-usage', icon: 'play' },
86
+ ],
87
+ },
88
+
89
+ { title: 'Configuration', path: './configuration', icon: 'settings' },
90
+ {
91
+ title: 'Content',
92
+ icon: 'layout-template',
93
+ path: './content/',
94
+ collapsible: true,
95
+ children: [
96
+ { title: 'Markdown Syntax', path: './content/markdown-syntax', icon: 'code-2' },
97
+ { title: 'Frontmatter', path: './content/frontmatter', icon: 'file-text' },
98
+ { title: 'Images & Lightbox', path: './content/images', icon: 'image' },
99
+ { title: 'Search', path: './content/search', icon: 'search' },
100
+ { title: 'Mermaid Diagrams', path: './content/mermaid', icon: 'network' },
101
+ {
102
+ title: 'Containers',
103
+ path: './content/containers/',
104
+ icon: 'box',
105
+ collapsible: true,
106
+ children: [
107
+ { title: 'Callouts', path: './content/containers/callouts', icon: 'megaphone' },
108
+ { title: 'Cards', path: './content/containers/cards', icon: 'panel-top' },
109
+ { title: 'Steps', path: './content/containers/steps', icon: 'list-ordered' },
110
+ { title: 'Tabs', path: './content/containers/tabs', icon: 'columns-3' },
111
+ { title: 'Collapsible', path: './content/containers/collapsible', icon: 'chevrons-down' },
112
+ { title: 'Changelogs', path: './content/containers/changelogs', icon: 'history' },
113
+ { title: 'Buttons', path: './content/containers/buttons', icon: 'mouse-pointer-click' },
114
+ { title: 'Nested Containers', path: './content/containers/nested-containers', icon: 'folder-tree' },
115
+ ]
116
+ },
117
+ { title: 'No-Style Pages', path: './content/no-style-pages', icon: 'layout' },
118
+ { title: 'Live Preview', path: './content/live-preview', icon: 'monitor-play' },
119
+ ],
120
+ },
121
+
122
+ {
123
+ title: 'Theming',
124
+ icon: 'palette',
125
+ path: './theming/',
126
+ collapsible: true,
127
+ children: [
128
+ { title: 'Available Themes', path: './theming/available-themes', icon: 'layout-grid' },
129
+ { title: 'Light & Dark Mode', path: './theming/light-dark-mode', icon: 'sun-moon' },
130
+ { title: 'Custom CSS & JS', path: './theming/custom-css-js', icon: 'file-code' },
131
+ { title: 'Icons', path: './theming/icons', icon: 'pencil-ruler' },
132
+ ],
133
+ },
134
+
135
+ {
136
+ title: 'Plugins',
137
+ icon: 'puzzle',
138
+ path: './plugins/',
139
+ collapsible: true,
140
+ children: [
141
+ { title: 'SEO & Meta', path: './plugins/seo', icon: 'search' },
142
+ { title: 'Analytics', path: './plugins/analytics', icon: 'bar-chart' },
143
+ { title: 'Sitemap', path: './plugins/sitemap', icon: 'map' },
144
+ ],
145
+ },
146
+
147
+ {
148
+ title: 'Recipes',
149
+ icon: 'chef-hat',
150
+ path: './recipes/',
151
+ collapsible: true,
152
+ children: [
153
+ { title: 'Landing Page', path: './recipes/landing-page', icon: 'layout-template' },
154
+ { title: 'Custom Fonts', path: './recipes/custom-fonts', icon: 'type' },
155
+ { title: 'Favicon', path: './recipes/favicon', icon: 'image-plus' },
156
+ ],
157
+ },
158
+
159
+ { title: 'CLI Commands', path: './cli-commands', icon: 'terminal' },
160
+ { title: 'Deployment', path: './deployment', icon: 'upload-cloud' },
161
+ { title: 'Comparison', path: './comparison', icon: 'scale' },
162
+ { title: 'Contributing', path: './contributing', icon: 'git-pull-request' },
163
+
164
+ { title: 'GitHub', path: 'https://github.com/mgks/docmd', icon: 'github', external: true },
165
+ { title: 'Discussions', path: 'https://github.com/mgks/docmd/discussions', icon: 'message-circle', external: true },
166
+ ],
167
+
168
+ // --- Footer & Sponsor ---
169
+ footer: '© ' + new Date().getFullYear() + ' Project docmd.',
170
+ sponsor: {
171
+ enabled: true,
172
+ title: 'Sponsor',
173
+ link: 'https://github.com/sponsors/mgks',
174
+ },
175
+ };