@knowcode/doc-builder 1.6.4 β†’ 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/html/sitemap.xml CHANGED
@@ -2,127 +2,127 @@
2
2
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
3
  <url>
4
4
  <loc>https://doc-builder-delta.vercel.app/404.html</loc>
5
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
5
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
6
6
  <changefreq>monthly</changefreq>
7
7
  <priority>0.6</priority>
8
8
  </url>
9
9
  <url>
10
10
  <loc>https://doc-builder-delta.vercel.app/README.html</loc>
11
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
11
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
12
12
  <changefreq>monthly</changefreq>
13
13
  <priority>0.6</priority>
14
14
  </url>
15
15
  <url>
16
16
  <loc>https://doc-builder-delta.vercel.app/claude-workflow-guide.html</loc>
17
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
17
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
18
18
  <changefreq>monthly</changefreq>
19
19
  <priority>0.8</priority>
20
20
  </url>
21
21
  <url>
22
22
  <loc>https://doc-builder-delta.vercel.app/documentation-index.html</loc>
23
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
23
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
24
24
  <changefreq>monthly</changefreq>
25
25
  <priority>0.6</priority>
26
26
  </url>
27
27
  <url>
28
28
  <loc>https://doc-builder-delta.vercel.app/guides/authentication-guide.html</loc>
29
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
29
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
30
30
  <changefreq>monthly</changefreq>
31
31
  <priority>0.8</priority>
32
32
  </url>
33
33
  <url>
34
34
  <loc>https://doc-builder-delta.vercel.app/guides/claude-workflow-guide.html</loc>
35
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
35
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
36
36
  <changefreq>monthly</changefreq>
37
37
  <priority>0.8</priority>
38
38
  </url>
39
39
  <url>
40
40
  <loc>https://doc-builder-delta.vercel.app/guides/document-standards.html</loc>
41
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
41
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
42
42
  <changefreq>monthly</changefreq>
43
43
  <priority>0.8</priority>
44
44
  </url>
45
45
  <url>
46
46
  <loc>https://doc-builder-delta.vercel.app/guides/documentation-standards.html</loc>
47
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
47
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
48
48
  <changefreq>monthly</changefreq>
49
49
  <priority>0.8</priority>
50
50
  </url>
51
51
  <url>
52
52
  <loc>https://doc-builder-delta.vercel.app/guides/phosphor-icons-guide.html</loc>
53
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
53
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
54
54
  <changefreq>monthly</changefreq>
55
55
  <priority>0.8</priority>
56
56
  </url>
57
57
  <url>
58
58
  <loc>https://doc-builder-delta.vercel.app/guides/search-engine-verification-guide.html</loc>
59
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
59
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
60
60
  <changefreq>monthly</changefreq>
61
61
  <priority>0.8</priority>
62
62
  </url>
63
63
  <url>
64
64
  <loc>https://doc-builder-delta.vercel.app/guides/seo-guide.html</loc>
65
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
65
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
66
66
  <changefreq>monthly</changefreq>
67
67
  <priority>0.8</priority>
68
68
  </url>
69
69
  <url>
70
70
  <loc>https://doc-builder-delta.vercel.app/guides/seo-optimization-guide.html</loc>
71
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
71
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
72
72
  <changefreq>monthly</changefreq>
73
73
  <priority>0.8</priority>
74
74
  </url>
75
75
  <url>
76
76
  <loc>https://doc-builder-delta.vercel.app/guides/troubleshooting-guide.html</loc>
77
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
77
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
78
78
  <changefreq>monthly</changefreq>
79
79
  <priority>0.8</priority>
80
80
  </url>
81
81
  <url>
82
82
  <loc>https://doc-builder-delta.vercel.app/guides/windows-setup-guide.html</loc>
83
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
83
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
84
84
  <changefreq>monthly</changefreq>
85
85
  <priority>0.8</priority>
86
86
  </url>
87
87
  <url>
88
88
  <loc>https://doc-builder-delta.vercel.app/index.html</loc>
89
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
89
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
90
90
  <changefreq>weekly</changefreq>
91
91
  <priority>1.0</priority>
92
92
  </url>
93
93
  <url>
94
94
  <loc>https://doc-builder-delta.vercel.app/launch/README.html</loc>
95
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
95
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
96
96
  <changefreq>monthly</changefreq>
97
97
  <priority>0.6</priority>
98
98
  </url>
99
99
  <url>
100
100
  <loc>https://doc-builder-delta.vercel.app/launch/bubble-plugin-specification.html</loc>
101
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
101
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
102
102
  <changefreq>monthly</changefreq>
103
103
  <priority>0.6</priority>
104
104
  </url>
105
105
  <url>
106
106
  <loc>https://doc-builder-delta.vercel.app/launch/go-to-market-strategy.html</loc>
107
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
107
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
108
108
  <changefreq>monthly</changefreq>
109
109
  <priority>0.6</priority>
110
110
  </url>
111
111
  <url>
112
112
  <loc>https://doc-builder-delta.vercel.app/launch/launch-announcements.html</loc>
113
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
113
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
114
114
  <changefreq>monthly</changefreq>
115
115
  <priority>0.6</priority>
116
116
  </url>
117
117
  <url>
118
118
  <loc>https://doc-builder-delta.vercel.app/vercel-cli-setup-guide.html</loc>
119
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
119
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
120
120
  <changefreq>monthly</changefreq>
121
121
  <priority>0.8</priority>
122
122
  </url>
123
123
  <url>
124
124
  <loc>https://doc-builder-delta.vercel.app/vercel-first-time-setup-guide.html</loc>
125
- <lastmod>2025-07-23T09:32:06.341Z</lastmod>
125
+ <lastmod>2025-07-24T08:19:52.302Z</lastmod>
126
126
  <changefreq>monthly</changefreq>
127
127
  <priority>0.8</priority>
128
128
  </url>
@@ -63,8 +63,8 @@
63
63
  "name": "Knowcode Ltd",
64
64
  "url": "https://knowcode.tech"
65
65
  },
66
- "datePublished": "2025-07-23T09:32:06.313Z",
67
- "dateModified": "2025-07-23T09:32:06.313Z",
66
+ "datePublished": "2025-07-24T08:19:52.285Z",
67
+ "dateModified": "2025-07-24T08:19:52.285Z",
68
68
  "mainEntityOfPage": {
69
69
  "@type": "WebPage",
70
70
  "@id": "https://doc-builder-delta.vercel.app/vercel-cli-setup-guide.html"
@@ -97,7 +97,7 @@
97
97
 
98
98
  <div class="header-actions">
99
99
  <div class="deployment-info">
100
- <span class="deployment-date" title="Built with doc-builder v1.6.3">Last updated: Jul 23, 2025, 09:32 AM UTC</span>
100
+ <span class="deployment-date" title="Built with doc-builder v1.6.5">Last updated: Jul 24, 2025, 08:19 AM UTC</span>
101
101
  </div>
102
102
 
103
103
 
@@ -402,6 +402,15 @@ vercel --scope team-name
402
402
  </div>
403
403
 
404
404
  <!-- Scripts -->
405
+ <script>
406
+ // Pass configuration to frontend
407
+ window.docBuilderConfig = {
408
+ features: {
409
+ showPdfDownload: true,
410
+ menuDefaultOpen: true
411
+ }
412
+ };
413
+ </script>
405
414
  <script src="/js/main.js"></script>
406
415
 
407
416
  </body>
@@ -63,8 +63,8 @@
63
63
  "name": "Knowcode Ltd",
64
64
  "url": "https://knowcode.tech"
65
65
  },
66
- "datePublished": "2025-07-23T09:32:06.319Z",
67
- "dateModified": "2025-07-23T09:32:06.319Z",
66
+ "datePublished": "2025-07-24T08:19:52.288Z",
67
+ "dateModified": "2025-07-24T08:19:52.288Z",
68
68
  "mainEntityOfPage": {
69
69
  "@type": "WebPage",
70
70
  "@id": "https://doc-builder-delta.vercel.app/vercel-first-time-setup-guide.html"
@@ -97,7 +97,7 @@
97
97
 
98
98
  <div class="header-actions">
99
99
  <div class="deployment-info">
100
- <span class="deployment-date" title="Built with doc-builder v1.6.3">Last updated: Jul 23, 2025, 09:32 AM UTC</span>
100
+ <span class="deployment-date" title="Built with doc-builder v1.6.5">Last updated: Jul 24, 2025, 08:19 AM UTC</span>
101
101
  </div>
102
102
 
103
103
 
@@ -245,7 +245,7 @@
245
245
  <li>Deploy to their global CDN</li>
246
246
  <li>Provide your live URL</li>
247
247
  </ol>
248
- <pre><code><i class="ph ph-check" aria-label="check"></i> Production: https://my-docs.vercel.app [copied to clipboard]
248
+ <pre><code>βœ“ Production: https://my-docs.vercel.app [copied to clipboard]
249
249
  </code></pre>
250
250
  <h2>Post-Deployment Configuration</h2>
251
251
  <h3>Making Your Docs Public</h3>
@@ -324,13 +324,13 @@
324
324
  <li>You have internet connection</li>
325
325
  </ol>
326
326
  <h2>Quick Checklist</h2>
327
- <pre><code><i class="ph ph-check-circle" aria-label="checked"></i> 1. Run: npx @knowcode/doc-builder@latest deploy
328
- <i class="ph ph-check-circle" aria-label="checked"></i> 2. Enter project name (e.g., my-docs)
329
- <i class="ph ph-check-circle" aria-label="checked"></i> 3. Skip custom URL (press Enter)
330
- <i class="ph ph-check-circle" aria-label="checked"></i> 4. Confirm deployment when Vercel asks
331
- <i class="ph ph-check-circle" aria-label="checked"></i> 5. Select your account/scope
332
- <i class="ph ph-check-circle" aria-label="checked"></i> 6. Accept suggested project name
333
- <i class="ph ph-check-circle" aria-label="checked"></i> 7. Get your live URL!
327
+ <pre><code>βœ… 1. Run: npx @knowcode/doc-builder@latest deploy
328
+ βœ… 2. Enter project name (e.g., my-docs)
329
+ βœ… 3. Skip custom URL (press Enter)
330
+ βœ… 4. Confirm deployment when Vercel asks
331
+ βœ… 5. Select your account/scope
332
+ βœ… 6. Accept suggested project name
333
+ βœ… 7. Get your live URL!
334
334
  </code></pre>
335
335
  <h2>Best Practices</h2>
336
336
  <ol>
@@ -361,6 +361,15 @@
361
361
  </div>
362
362
 
363
363
  <!-- Scripts -->
364
+ <script>
365
+ // Pass configuration to frontend
366
+ window.docBuilderConfig = {
367
+ features: {
368
+ showPdfDownload: true,
369
+ menuDefaultOpen: true
370
+ }
371
+ };
372
+ </script>
364
373
  <script src="/js/main.js"></script>
365
374
 
366
375
  </body>
package/lib/config.js CHANGED
@@ -28,7 +28,9 @@ const defaultConfig = {
28
28
  phosphorIcons: true,
29
29
  phosphorWeight: 'regular', // Options: thin, light, regular, bold, fill, duotone
30
30
  phosphorSize: '1.2em', // Relative to text size
31
- normalizeTitle: true // Auto-normalize all-caps titles to title case
31
+ normalizeTitle: true, // Auto-normalize all-caps titles to title case
32
+ showPdfDownload: true, // Show PDF download icon in header
33
+ menuDefaultOpen: true // Menu/sidebar open by default
32
34
  },
33
35
 
34
36
  // Authentication (if enabled)
@@ -96,7 +98,10 @@ const notionInspiredPreset = {
96
98
  darkMode: true,
97
99
  phosphorIcons: true,
98
100
  phosphorWeight: 'regular',
99
- phosphorSize: '1.2em'
101
+ phosphorSize: '1.2em',
102
+ normalizeTitle: true,
103
+ showPdfDownload: true,
104
+ menuDefaultOpen: true
100
105
  },
101
106
 
102
107
  auth: {
@@ -248,6 +253,12 @@ async function loadConfig(configPath, options = {}) {
248
253
  config.features.changelog = false;
249
254
  config.changelog.enabled = false;
250
255
  }
256
+ if (options.pdf === false) {
257
+ config.features.showPdfDownload = false;
258
+ }
259
+ if (options.menuClosed === true) {
260
+ config.features.menuDefaultOpen = false;
261
+ }
251
262
 
252
263
  // Legacy mode - auto-detect structure
253
264
  if (options.legacy) {
@@ -425,6 +425,15 @@ ${seoTags}
425
425
  </div>
426
426
 
427
427
  <!-- Scripts -->
428
+ <script>
429
+ // Pass configuration to frontend
430
+ window.docBuilderConfig = {
431
+ features: {
432
+ showPdfDownload: ${config.features?.showPdfDownload !== false},
433
+ menuDefaultOpen: ${config.features?.menuDefaultOpen !== false}
434
+ }
435
+ };
436
+ </script>
428
437
  <script src="/js/main.js"></script>
429
438
  ${config.features?.authentication ? `<script src="/js/auth.js"></script>` : ''}
430
439
  </body>
@@ -15,6 +15,7 @@ const emojiToPhosphor = {
15
15
  'β›”': '<i class="ph ph-prohibit" aria-label="prohibited"></i>',
16
16
  '🚫': '<i class="ph ph-prohibit-inset" aria-label="not allowed"></i>',
17
17
  '🚨': '<i class="ph ph-siren" aria-label="alert"></i>',
18
+ 'πŸ†˜': '<i class="ph ph-first-aid" aria-label="emergency"></i>',
18
19
 
19
20
  // Development & Tech
20
21
  'πŸ’»': '<i class="ph ph-laptop" aria-label="laptop"></i>',
@@ -190,6 +191,7 @@ const emojiToPhosphor = {
190
191
  // Money & Commerce
191
192
  'πŸ’°': '<i class="ph ph-money" aria-label="money"></i>',
192
193
  'πŸ’΅': '<i class="ph ph-currency-dollar" aria-label="dollar"></i>',
194
+ 'πŸ’Έ': '<i class="ph ph-money-wavy" aria-label="money flying"></i>',
193
195
  'πŸ’³': '<i class="ph ph-credit-card" aria-label="payment"></i>',
194
196
  '🏦': '<i class="ph ph-bank" aria-label="bank"></i>',
195
197
  'πŸ₯': '<i class="ph ph-hospital" aria-label="hospital"></i>',
@@ -210,6 +212,7 @@ const emojiToPhosphor = {
210
212
  '⏸️': '<i class="ph ph-pause" aria-label="pause"></i>',
211
213
  '▢️': '<i class="ph ph-play" aria-label="play"></i>',
212
214
  '⏹️': '<i class="ph ph-stop" aria-label="stop"></i>',
215
+ 'πŸ”„': '<i class="ph ph-arrows-clockwise" aria-label="refresh"></i>',
213
216
 
214
217
  // Special
215
218
  '🌈': '<i class="ph ph-rainbow" aria-label="diversity"></i>',
@@ -231,6 +234,17 @@ function replaceEmojisWithIcons(html, config = {}) {
231
234
  // Check if feature is enabled
232
235
  if (!config.features?.phosphorIcons) return html;
233
236
 
237
+ // First, protect code blocks and inline code from emoji replacement
238
+ const codeBlocks = [];
239
+ const codePattern = /(<code[^>]*>[\s\S]*?<\/code>|<pre[^>]*>[\s\S]*?<\/pre>)/g;
240
+
241
+ // Replace code blocks with placeholders
242
+ html = html.replace(codePattern, (match, p1) => {
243
+ const placeholder = `CODE_BLOCK_${codeBlocks.length}`;
244
+ codeBlocks.push(match);
245
+ return placeholder;
246
+ });
247
+
234
248
  // Build regex pattern once with all emoji patterns
235
249
  // Sort by length to match longer emojis first (e.g., ⚠️ before ⚠)
236
250
  const emojiPattern = new RegExp(
@@ -251,7 +265,7 @@ function replaceEmojisWithIcons(html, config = {}) {
251
265
  ? ` style="font-size: ${config.features.phosphorSize}"`
252
266
  : '';
253
267
 
254
- return html.replace(emojiPattern, match => {
268
+ html = html.replace(emojiPattern, match => {
255
269
  let iconHtml = emojiToPhosphor[match];
256
270
  if (!iconHtml) return match;
257
271
 
@@ -267,6 +281,13 @@ function replaceEmojisWithIcons(html, config = {}) {
267
281
 
268
282
  return iconHtml;
269
283
  });
284
+
285
+ // Restore code blocks
286
+ codeBlocks.forEach((block, index) => {
287
+ html = html.replace(`CODE_BLOCK_${index}`, block);
288
+ });
289
+
290
+ return html;
270
291
  }
271
292
 
272
293
  module.exports = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knowcode/doc-builder",
3
- "version": "1.6.4",
3
+ "version": "1.7.0",
4
4
  "description": "Reusable documentation builder for markdown-based sites with Vercel deployment support",
5
5
  "main": "index.js",
6
6
  "bin": {