@mgks/docmd 0.3.7 → 0.3.9

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.
Files changed (72) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +61 -63
  3. package/bin/docmd.js +13 -16
  4. package/bin/postinstall.js +4 -4
  5. package/package.json +13 -11
  6. package/src/assets/css/docmd-highlight-dark.css +86 -1
  7. package/src/assets/css/docmd-highlight-light.css +86 -1
  8. package/src/assets/css/docmd-main.css +574 -465
  9. package/src/assets/css/docmd-theme-retro.css +105 -106
  10. package/src/assets/css/docmd-theme-ruby.css +92 -92
  11. package/src/assets/css/docmd-theme-sky.css +63 -64
  12. package/src/assets/favicon.ico +0 -0
  13. package/src/assets/images/docmd-logo-dark.png +0 -0
  14. package/src/assets/images/docmd-logo-light.png +0 -0
  15. package/src/assets/js/docmd-image-lightbox.js +2 -2
  16. package/src/assets/js/docmd-main.js +39 -1
  17. package/src/assets/js/docmd-mermaid.js +1 -1
  18. package/src/assets/js/docmd-search.js +1 -1
  19. package/src/commands/build.js +71 -370
  20. package/src/commands/dev.js +141 -80
  21. package/src/commands/init.js +107 -132
  22. package/src/commands/live.js +145 -0
  23. package/src/core/asset-manager.js +72 -0
  24. package/src/core/config-loader.js +3 -2
  25. package/src/core/config-validator.js +1 -1
  26. package/src/core/file-processor.js +13 -9
  27. package/src/core/fs-utils.js +40 -0
  28. package/src/core/html-generator.js +68 -77
  29. package/src/core/icon-renderer.js +1 -1
  30. package/src/core/logger.js +1 -1
  31. package/src/core/markdown/containers.js +1 -1
  32. package/src/core/markdown/renderers.js +1 -1
  33. package/src/core/markdown/rules.js +138 -91
  34. package/src/core/markdown/setup.js +9 -20
  35. package/src/core/navigation-helper.js +52 -40
  36. package/src/index.js +12 -0
  37. package/src/live/core.js +5 -1
  38. package/src/live/index.html +16 -1
  39. package/src/live/live.css +157 -68
  40. package/src/plugins/analytics.js +1 -1
  41. package/src/plugins/seo.js +26 -36
  42. package/src/plugins/sitemap.js +2 -2
  43. package/src/templates/layout.ejs +50 -81
  44. package/src/templates/navigation.ejs +23 -76
  45. package/src/templates/no-style.ejs +115 -129
  46. package/src/templates/partials/theme-init.js +12 -12
  47. package/src/templates/toc.ejs +6 -35
  48. package/dist/assets/css/docmd-highlight-dark.css +0 -1
  49. package/dist/assets/css/docmd-highlight-light.css +0 -1
  50. package/dist/assets/css/docmd-main.css +0 -1627
  51. package/dist/assets/css/docmd-theme-retro.css +0 -868
  52. package/dist/assets/css/docmd-theme-ruby.css +0 -629
  53. package/dist/assets/css/docmd-theme-sky.css +0 -618
  54. package/dist/assets/favicon.ico +0 -0
  55. package/dist/assets/images/docmd-logo-dark.png +0 -0
  56. package/dist/assets/images/docmd-logo-light.png +0 -0
  57. package/dist/assets/images/docmd-logo.png +0 -0
  58. package/dist/assets/js/docmd-image-lightbox.js +0 -74
  59. package/dist/assets/js/docmd-main.js +0 -222
  60. package/dist/assets/js/docmd-mermaid.js +0 -205
  61. package/dist/assets/js/docmd-search.js +0 -218
  62. package/dist/assets/js/mermaid.min.js +0 -2811
  63. package/dist/assets/js/minisearch.js +0 -2013
  64. package/dist/docmd-live.js +0 -30748
  65. package/dist/index.html +0 -201
  66. package/dist/live.css +0 -167
  67. package/docmd.config.js +0 -175
  68. package/scripts/build-live.js +0 -157
  69. package/scripts/failsafe.js +0 -37
  70. package/scripts/test-live.js +0 -54
  71. package/src/assets/images/docmd-logo.png +0 -0
  72. package/src/live/templates.js +0 -9
@@ -1,65 +1,18 @@
1
- /* Source file from the docmd project — https://github.com/mgks/docmd */
1
+ /* Source file from the docmd project — https://github.com/docmd-io/docmd */
2
2
 
3
3
  /*
4
- * docmd Sky Theme
4
+ * Sky Theme
5
5
  * Inspired by the clear blue sky
6
6
  * Features: Blue tones, clean lines, subtle gradients
7
7
  */
8
8
 
9
- .sidebar nav li a.active,
10
- .sidebar nav li a:hover {
11
- background-color: var(--sidebar-link-active-bg);
12
- color: var(--sidebar-link-active-text)
13
- }
14
-
15
- pre,
16
- table {
17
- margin: 1.5em 0;
18
- border-radius: 8px;
19
- box-shadow: var(--shadow-sm)
20
- }
21
-
22
- td,
23
- th {
24
- padding: .75rem 1rem
25
- }
26
-
27
- th,
28
- tr:hover {
29
- background-color: var(--sky-background-alt)
30
- }
31
-
32
- .callout,
33
- .steps {
34
- position: relative
35
- }
36
-
37
- .card,
38
- figure,
39
- table {
40
- overflow: hidden
41
- }
42
-
43
- .docmd-container,
44
- .sidebar,
45
- figure,
46
- pre,
47
- table {
48
- box-shadow: var(--shadow-sm)
49
- }
50
-
51
- .card .card-content>:last-child,
52
- figure img {
53
- margin-bottom: 0
54
- }
55
-
56
9
  :root {
57
10
  --sky-primary: #0097ff
58
11
  }
59
12
 
60
13
  :root[data-theme=light] {
61
- --font-family-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
62
- --font-family-mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
14
+ --font-family-sans: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
15
+ --font-family-mono: 'JetBrains Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
63
16
  --accent-color: #0097ff;
64
17
  --sky-primary: #0097ff;
65
18
  --sky-primary-light: #e5f4ff;
@@ -67,7 +20,7 @@ figure img {
67
20
  --sky-text: #1a1f36;
68
21
  --sky-text-light: #4a5568;
69
22
  --sky-text-lightest: #718096;
70
- --sky-background: #ffffff;
23
+ --sky-background: #fff;
71
24
  --sky-background-alt: #f9fafb;
72
25
  --sky-border: #e2e8f0;
73
26
  --sky-border-light: #edf2f7;
@@ -83,9 +36,9 @@ figure img {
83
36
  --code-text: var(--sky-primary-dark);
84
37
  --header-bg: var(--sky-background);
85
38
  --header-border: var(--sky-border);
86
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
87
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
88
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
39
+ --shadow-sm: 0 1px 2px 0 #0000000d;
40
+ --shadow-md: 0 4px 6px -1px #0000001a 0 2px 4px -1px #0000000f;
41
+ --shadow-lg: 0 10px 15px -3px #0000001a 0 4px 6px -2px #0000000d;
89
42
  --image-border-color: var(--sky-border);
90
43
  --image-shadow: var(--shadow-md);
91
44
  --image-caption-bg: var(--sky-background-alt);
@@ -93,8 +46,7 @@ figure img {
93
46
  --image-hover-transform: translateY(-2px);
94
47
  --image-hover-shadow: var(--shadow-lg);
95
48
  --image-border-radius: 8px;
96
- --image-transition: all 0.3s ease;
97
-
49
+ --image-transition: all .3s ease
98
50
  }
99
51
 
100
52
  :root[data-theme=dark] {
@@ -120,21 +72,21 @@ figure img {
120
72
  --code-text: var(--sky-text);
121
73
  --header-bg: var(--sky-background);
122
74
  --header-border: var(--sky-border);
123
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
124
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.2);
125
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
75
+ --shadow-sm: 0 1px 2px 0 #0000004d;
76
+ --shadow-md: 0 4px 6px -1px #0000004d 0 2px 4px -1px #0003;
77
+ --shadow-lg: 0 10px 15px -3px #0000004d 0 4px 6px -2px #0003;
126
78
  --image-border-color: var(--sky-border);
127
- --image-shadow: 0 4px 8px rgba(0, 0, 0, 0.5);
79
+ --image-shadow: 0 4px 8px #00000080;
128
80
  --image-caption-bg: var(--sky-background-alt);
129
81
  --image-caption-text: var(--sky-text-light);
130
82
  --image-hover-transform: translateY(-2px);
131
- --image-hover-shadow: 0 6px 12px rgba(0, 0, 0, 0.7);
83
+ --image-hover-shadow: 0 6px 12px #000000b3;
132
84
  --image-border-radius: 8px;
133
- --image-transition: all 0.3s ease
85
+ --image-transition: all .3s ease
134
86
  }
135
87
 
136
88
  body {
137
- font-feature-settings: "salt", "ss01", "ss02";
89
+ font-feature-settings: salt, ss01, ss02;
138
90
  letter-spacing: -.01em
139
91
  }
140
92
 
@@ -151,6 +103,53 @@ h6 {
151
103
  color: var(--sky-text)
152
104
  }
153
105
 
106
+ .sidebar nav li a.active,
107
+ .sidebar nav li a:hover {
108
+ background-color: var(--sidebar-link-active-bg);
109
+ color: var(--sidebar-link-active-text)
110
+ }
111
+
112
+ pre,
113
+ table {
114
+ margin: 1.5em 0;
115
+ border-radius: 8px;
116
+ box-shadow: var(--shadow-sm)
117
+ }
118
+
119
+ td,
120
+ th {
121
+ padding: .75rem 1rem
122
+ }
123
+
124
+ th,
125
+ tr:hover {
126
+ background-color: var(--sky-background-alt)
127
+ }
128
+
129
+ .callout,
130
+ .steps {
131
+ position: relative
132
+ }
133
+
134
+ .card,
135
+ figure,
136
+ table {
137
+ overflow: hidden
138
+ }
139
+
140
+ .docmd-container,
141
+ .sidebar,
142
+ figure,
143
+ pre,
144
+ table {
145
+ box-shadow: var(--shadow-sm)
146
+ }
147
+
148
+ .card .card-content>:last-child,
149
+ figure img {
150
+ margin-bottom: 0
151
+ }
152
+
154
153
  .card .card-content>:first-child,
155
154
  h1 {
156
155
  margin-top: 0
Binary file
@@ -1,7 +1,7 @@
1
- // Source file from the docmd project — https://github.com/mgks/docmd
1
+ // Source file from the docmd project — https://github.com/docmd-io/docmd
2
2
 
3
3
  /*
4
- * A simple lightbox implementation for docmd images
4
+ * A simple lightbox implementation for gallery images
5
5
  */
6
6
 
7
7
  document.addEventListener('DOMContentLoaded', function () {
@@ -1,4 +1,4 @@
1
- // Source file from the docmd project — https://github.com/mgks/docmd
1
+ // Source file from the docmd project — https://github.com/docmd-io/docmd
2
2
 
3
3
  /*
4
4
  * Main client-side script for docmd UI interactions
@@ -209,6 +209,43 @@ function syncBodyTheme() {
209
209
  }
210
210
  }
211
211
 
212
+ // --- Scroll Spy Logic ---
213
+ function initializeScrollSpy() {
214
+ const tocLinks = document.querySelectorAll('.toc-link');
215
+ const headings = document.querySelectorAll('.main-content h2, .main-content h3');
216
+
217
+ if (tocLinks.length === 0 || headings.length === 0) return;
218
+
219
+ const observerOptions = {
220
+ root: null,
221
+ // Trigger when heading crosses the top 10% of screen
222
+ rootMargin: '-10% 0px -80% 0px',
223
+ threshold: 0
224
+ };
225
+
226
+ const observer = new IntersectionObserver((entries) => {
227
+ entries.forEach(entry => {
228
+ if (entry.isIntersecting) {
229
+ // 1. Clear current active state
230
+ tocLinks.forEach(link => link.classList.remove('active'));
231
+
232
+ // 2. Find link corresponding to this heading
233
+ const id = entry.target.getAttribute('id');
234
+ const activeLink = document.querySelector(`.toc-link[href="#${id}"]`);
235
+
236
+ if (activeLink) {
237
+ activeLink.classList.add('active');
238
+
239
+ // Optional: Auto-scroll the TOC sidebar itself if needed
240
+ // activeLink.scrollIntoView({ block: 'nearest' });
241
+ }
242
+ }
243
+ });
244
+ }, observerOptions);
245
+
246
+ headings.forEach(heading => observer.observe(heading));
247
+ }
248
+
212
249
  // --- Main Execution ---
213
250
  document.addEventListener('DOMContentLoaded', () => {
214
251
  syncBodyTheme();
@@ -219,4 +256,5 @@ document.addEventListener('DOMContentLoaded', () => {
219
256
  initializeCollapsibleNav();
220
257
  initializeMobileMenus();
221
258
  initializeSidebarScroll();
259
+ initializeScrollSpy();
222
260
  });
@@ -1,4 +1,4 @@
1
- // Source file from the docmd project — https://github.com/mgks/docmd
1
+ // Source file from the docmd project — https://github.com/docmd-io/docmd
2
2
 
3
3
  /*
4
4
  * Mermaid diagram integration with theme support
@@ -1,4 +1,4 @@
1
- // Source file from the docmd project — https://github.com/mgks/docmd
1
+ // Source file from the docmd project — https://github.com/docmd-io/docmd
2
2
 
3
3
  /*
4
4
  * Client-side search functionality for docmd