@mgks/docmd 0.3.9 → 0.4.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.
Files changed (47) hide show
  1. package/README.md +15 -160
  2. package/bin/docmd.js +6 -69
  3. package/package.json +6 -79
  4. package/bin/postinstall.js +0 -14
  5. package/src/assets/css/docmd-highlight-dark.css +0 -86
  6. package/src/assets/css/docmd-highlight-light.css +0 -86
  7. package/src/assets/css/docmd-main.css +0 -1736
  8. package/src/assets/css/docmd-theme-retro.css +0 -867
  9. package/src/assets/css/docmd-theme-ruby.css +0 -629
  10. package/src/assets/css/docmd-theme-sky.css +0 -617
  11. package/src/assets/favicon.ico +0 -0
  12. package/src/assets/images/docmd-logo-dark.png +0 -0
  13. package/src/assets/images/docmd-logo-light.png +0 -0
  14. package/src/assets/js/docmd-image-lightbox.js +0 -74
  15. package/src/assets/js/docmd-main.js +0 -260
  16. package/src/assets/js/docmd-mermaid.js +0 -205
  17. package/src/assets/js/docmd-search.js +0 -218
  18. package/src/commands/build.js +0 -237
  19. package/src/commands/dev.js +0 -352
  20. package/src/commands/init.js +0 -277
  21. package/src/commands/live.js +0 -145
  22. package/src/core/asset-manager.js +0 -72
  23. package/src/core/config-loader.js +0 -58
  24. package/src/core/config-validator.js +0 -80
  25. package/src/core/file-processor.js +0 -103
  26. package/src/core/fs-utils.js +0 -40
  27. package/src/core/html-generator.js +0 -184
  28. package/src/core/icon-renderer.js +0 -106
  29. package/src/core/logger.js +0 -21
  30. package/src/core/markdown/containers.js +0 -94
  31. package/src/core/markdown/renderers.js +0 -90
  32. package/src/core/markdown/rules.js +0 -402
  33. package/src/core/markdown/setup.js +0 -113
  34. package/src/core/navigation-helper.js +0 -74
  35. package/src/index.js +0 -12
  36. package/src/live/core.js +0 -67
  37. package/src/live/index.html +0 -216
  38. package/src/live/live.css +0 -256
  39. package/src/live/shims.js +0 -1
  40. package/src/plugins/analytics.js +0 -48
  41. package/src/plugins/seo.js +0 -107
  42. package/src/plugins/sitemap.js +0 -127
  43. package/src/templates/layout.ejs +0 -187
  44. package/src/templates/navigation.ejs +0 -87
  45. package/src/templates/no-style.ejs +0 -166
  46. package/src/templates/partials/theme-init.js +0 -30
  47. package/src/templates/toc.ejs +0 -38
@@ -1,617 +0,0 @@
1
- /* Source file from the docmd project — https://github.com/docmd-io/docmd */
2
-
3
- /*
4
- * Sky Theme
5
- * Inspired by the clear blue sky
6
- * Features: Blue tones, clean lines, subtle gradients
7
- */
8
-
9
- :root {
10
- --sky-primary: #0097ff
11
- }
12
-
13
- :root[data-theme=light] {
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;
16
- --accent-color: #0097ff;
17
- --sky-primary: #0097ff;
18
- --sky-primary-light: #e5f4ff;
19
- --sky-primary-dark: #0078cc;
20
- --sky-text: #1a1f36;
21
- --sky-text-light: #4a5568;
22
- --sky-text-lightest: #718096;
23
- --sky-background: #fff;
24
- --sky-background-alt: #f9fafb;
25
- --sky-border: #e2e8f0;
26
- --sky-border-light: #edf2f7;
27
- --bg-color: var(--sky-background);
28
- --text-color: var(--sky-text);
29
- --sidebar-bg: #f7fafc;
30
- --sidebar-text: var(--sky-text-light);
31
- --sidebar-link-active-bg: #e5f4ff;
32
- --sidebar-link-active-text: var(--sky-primary);
33
- --link-color: var(--sky-primary);
34
- --border-color: var(--sky-border);
35
- --code-bg: var(--sky-primary-light);
36
- --code-text: var(--sky-primary-dark);
37
- --header-bg: var(--sky-background);
38
- --header-border: var(--sky-border);
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;
42
- --image-border-color: var(--sky-border);
43
- --image-shadow: var(--shadow-md);
44
- --image-caption-bg: var(--sky-background-alt);
45
- --image-caption-text: var(--sky-text-light);
46
- --image-hover-transform: translateY(-2px);
47
- --image-hover-shadow: var(--shadow-lg);
48
- --image-border-radius: 8px;
49
- --image-transition: all .3s ease
50
- }
51
-
52
- :root[data-theme=dark] {
53
- --sky-primary: #3b82f6;
54
- --sky-primary-light: #1e293b;
55
- --sky-primary-dark: #60a5fa;
56
- --sky-text: #f1f5f9;
57
- --sky-text-light: #cbd5e1;
58
- --sky-text-lightest: #94a3b8;
59
- --sky-background: #0f172a;
60
- --sky-background-alt: #1e293b;
61
- --sky-border: #334155;
62
- --sky-border-light: #1e293b;
63
- --bg-color: var(--sky-background);
64
- --text-color: var(--sky-text);
65
- --sidebar-bg: #0f172a;
66
- --sidebar-text: var(--sky-text-light);
67
- --sidebar-link-active-bg: #1e293b;
68
- --sidebar-link-active-text: var(--sky-primary);
69
- --link-color: var(--sky-primary);
70
- --border-color: var(--sky-border);
71
- --code-bg: var(--sky-primary-light);
72
- --code-text: var(--sky-text);
73
- --header-bg: var(--sky-background);
74
- --header-border: var(--sky-border);
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;
78
- --image-border-color: var(--sky-border);
79
- --image-shadow: 0 4px 8px #00000080;
80
- --image-caption-bg: var(--sky-background-alt);
81
- --image-caption-text: var(--sky-text-light);
82
- --image-hover-transform: translateY(-2px);
83
- --image-hover-shadow: 0 6px 12px #000000b3;
84
- --image-border-radius: 8px;
85
- --image-transition: all .3s ease
86
- }
87
-
88
- body {
89
- font-feature-settings: salt, ss01, ss02;
90
- letter-spacing: -.01em
91
- }
92
-
93
- h1,
94
- h2,
95
- h3,
96
- h4,
97
- h5,
98
- h6 {
99
- font-weight: 600;
100
- line-height: 1.3;
101
- margin-top: 2em;
102
- margin-bottom: .5em;
103
- color: var(--sky-text)
104
- }
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
-
153
- .card .card-content>:first-child,
154
- h1 {
155
- margin-top: 0
156
- }
157
-
158
- h1 {
159
- font-size: 2.25rem;
160
- font-weight: 700
161
- }
162
-
163
- h2 {
164
- font-size: 1.75rem;
165
- border-bottom: 1px solid var(--sky-border-light);
166
- padding-bottom: .5rem
167
- }
168
-
169
- h3 {
170
- font-size: 1.5rem
171
- }
172
-
173
- h4 {
174
- font-size: 1.25rem
175
- }
176
-
177
- a {
178
- color: var(--link-color);
179
- text-decoration: none;
180
- transition: color .2s
181
- }
182
-
183
- a:hover {
184
- text-decoration: underline
185
- }
186
-
187
- p {
188
- margin: .5em 0;
189
- padding: .5em 0;
190
- line-height: 1.7
191
- }
192
-
193
- .sidebar nav li a {
194
- border-radius: 6px;
195
- margin-bottom: 2px;
196
- transition: .2s
197
- }
198
-
199
- .sidebar nav li a.active {
200
- font-weight: 500
201
- }
202
-
203
- .content-area {
204
- padding: 2.5rem 5%
205
- }
206
-
207
- pre {
208
- background-color: var(--code-bg);
209
- padding: 1.25em
210
- }
211
-
212
- code {
213
- font-size: .9em;
214
- border-radius: 4px;
215
- padding: .2em .4em
216
- }
217
-
218
- table {
219
- width: 100%;
220
- border-collapse: separate;
221
- border-spacing: 0
222
- }
223
-
224
- th {
225
- text-align: left;
226
- font-weight: 600
227
- }
228
-
229
- td {
230
- border-top: 1px solid var(--sky-border-light)
231
- }
232
-
233
- .docmd-container {
234
- padding: .5rem 1.5rem;
235
- margin: 1.75rem 0;
236
- border-radius: 10px;
237
- border: 1px solid var(--sky-border-light);
238
- background-color: var(--sky-background)
239
- }
240
-
241
- .callout,
242
- .card {
243
- background-color: var(--card-bg)
244
- }
245
-
246
- .callout {
247
- border: none;
248
- border-left: 5px solid
249
- }
250
-
251
- .callout-title {
252
- font-weight: 600;
253
- margin-bottom: .75em;
254
- display: flex;
255
- align-items: center
256
- }
257
-
258
- .callout-title::before {
259
- margin-right: .5rem;
260
- font-size: 1.1em
261
- }
262
-
263
- .callout-info {
264
- border-left-color: var(--sky-primary)
265
- }
266
-
267
- .callout-info .callout-title::before {
268
- content: "ℹ️"
269
- }
270
-
271
- .callout-warning {
272
- border-left-color: #f59e0b
273
- }
274
-
275
- .callout-warning .callout-title::before {
276
- content: "⚠️"
277
- }
278
-
279
- .callout-success,
280
- .callout-tip {
281
- border-left-color: #10b981
282
- }
283
-
284
- .callout-tip .callout-title::before {
285
- content: "💡"
286
- }
287
-
288
- .callout-danger {
289
- border-left-color: #ef4444
290
- }
291
-
292
- .callout-danger .callout-title::before {
293
- content: "🚨"
294
- }
295
-
296
- .callout-success .callout-title::before {
297
- content: "✅"
298
- }
299
-
300
- .card {
301
- border: 1px solid var(--sky-border);
302
- box-shadow: var(--text-color);
303
- transition: transform .2s, box-shadow .2s;
304
- display: flex;
305
- flex-direction: column
306
- }
307
-
308
- .card:hover {
309
- transform: translateY(-2px);
310
- box-shadow: var(--shadow-lg)
311
- }
312
-
313
- .card .card-title {
314
- padding: .5rem 1.5rem 1rem;
315
- border-bottom: 1px solid var(--sky-border);
316
- font-weight: 600;
317
- margin-top: 0
318
- }
319
-
320
- .card .card-content {
321
- flex: 1;
322
- padding: .25rem
323
- }
324
-
325
- .steps {
326
- counter-reset: step-counter;
327
- border: none;
328
- background-color: transparent;
329
- box-shadow: none;
330
- padding: 0;
331
- margin-left: 1rem
332
- }
333
-
334
- .steps::before {
335
- content: '';
336
- position: absolute;
337
- top: 0;
338
- bottom: 0 !important;
339
- left: 1.5rem !important;
340
- width: 3px !important;
341
- background-color: var(--sky-border);
342
- transform: translateX(-50%);
343
- z-index: 0
344
- }
345
-
346
- .steps .step {
347
- position: relative;
348
- padding: .5rem 2.5em;
349
- border-radius: 10px;
350
- margin-bottom: 1em;
351
- display: block;
352
- background-color: var(--card-bg)
353
- }
354
-
355
- .steps .step:last-child {
356
- padding-bottom: 0
357
- }
358
-
359
- .steps h4,
360
- .steps ol li strong:first-child,
361
- .steps ol li:first-child {
362
- position: relative;
363
- counter-increment: step-counter;
364
- margin-bottom: 1rem;
365
- font-weight: 600;
366
- font-size: 1.1rem;
367
- display: block
368
- }
369
-
370
- .steps h4::before,
371
- .steps ol li::before {
372
- content: counter(list-counter) !important;
373
- position: absolute;
374
- left: -2.55rem;
375
- top: .5rem;
376
- width: 2rem;
377
- height: 2rem;
378
- background-color: var(--sky-primary);
379
- color: #fff !important;
380
- border-radius: 50%;
381
- display: flex;
382
- align-items: center;
383
- justify-content: center;
384
- font-size: 1rem !important;
385
- font-weight: 500 !important;
386
- z-index: 1
387
- }
388
-
389
- .steps .step h4,
390
- .steps .step ol,
391
- .steps .step>div,
392
- .steps .step>p,
393
- .steps .step>pre,
394
- .steps ol,
395
- .steps ol li {
396
- display: block
397
- }
398
-
399
- .step-content,
400
- .step-content>div,
401
- .step-content>p,
402
- .step-content>pre {
403
- display: block;
404
- margin-top: .5rem;
405
- margin-bottom: 1rem
406
- }
407
-
408
- .steps ol+*,
409
- .steps pre {
410
- margin-top: 1rem
411
- }
412
-
413
- .steps ol {
414
- list-style: none;
415
- padding-left: 0;
416
- margin-left: 0
417
- }
418
-
419
- .steps ol li {
420
- position: relative;
421
- margin-bottom: 1rem
422
- }
423
-
424
- .steps .step h4 {
425
- font-weight: 600;
426
- margin-bottom: 1rem
427
- }
428
-
429
- .steps .step ol {
430
- counter-reset: none;
431
- list-style: decimal;
432
- padding-left: 1.5rem;
433
- margin-top: .5rem
434
- }
435
-
436
- .steps .step ol li {
437
- padding-left: 0;
438
- margin-bottom: .5rem;
439
- display: list-item
440
- }
441
-
442
- .steps .step ol li::before {
443
- display: none
444
- }
445
-
446
- .steps pre {
447
- margin-bottom: 1rem
448
- }
449
-
450
- .button,
451
- button {
452
- padding: .5rem 1rem;
453
- background-color: var(--sky-primary);
454
- color: #fff;
455
- border: none;
456
- border-radius: 6px;
457
- font-weight: 500;
458
- cursor: pointer;
459
- transition: background-color .2s
460
- }
461
-
462
- .image-gallery figure,
463
- figure,
464
- img {
465
- transition: var(--image-transition)
466
- }
467
-
468
- .button:hover,
469
- button:hover {
470
- background-color: var(--sky-primary-dark)
471
- }
472
-
473
- .docmd-search-trigger,
474
- .theme-toggle-button {
475
- background-color: var(--sky-background-alt);
476
- border-color: var(--sky-border-light);
477
- border-radius: 6px;
478
- transition: .2s
479
- }
480
-
481
- .docmd-search-trigger:hover,
482
- .theme-toggle-button:hover {
483
- background-color: var(--sky-primary-light)
484
- }
485
-
486
- img {
487
- border-radius: var(--image-border-radius)
488
- }
489
-
490
- img.with-border {
491
- border: 1px solid var(--image-border-color);
492
- padding: 8px;
493
- background-color: var(--bg-color)
494
- }
495
-
496
- img.with-shadow {
497
- box-shadow: var(--image-shadow)
498
- }
499
-
500
- img.with-shadow:hover {
501
- box-shadow: var(--image-hover-shadow)
502
- }
503
-
504
- figure {
505
- border-radius: var(--image-border-radius)
506
- }
507
-
508
- figure:hover {
509
- box-shadow: var(--shadow-md)
510
- }
511
-
512
- figure img {
513
- border-radius: var(--image-border-radius) var(--image-border-radius) 0 0
514
- }
515
-
516
- figcaption {
517
- background-color: var(--image-caption-bg);
518
- color: var(--image-caption-text);
519
- padding: .75rem 1rem;
520
- font-size: .9rem;
521
- font-weight: 500
522
- }
523
-
524
- .image-gallery {
525
- display: grid;
526
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
527
- gap: 1.5rem;
528
- margin: 2rem 0
529
- }
530
-
531
- .image-gallery figure {
532
- height: 100%;
533
- display: flex;
534
- flex-direction: column;
535
- margin: 0
536
- }
537
-
538
- .image-gallery figure:hover {
539
- transform: var(--image-hover-transform)
540
- }
541
-
542
- .image-gallery img {
543
- height: 200px;
544
- width: 100%;
545
- object-fit: cover;
546
- margin: 0
547
- }
548
-
549
- .image-gallery figcaption {
550
- flex: 1;
551
- display: flex;
552
- align-items: center;
553
- justify-content: center;
554
- text-align: center
555
- }
556
-
557
- .image-gallery.zoom img {
558
- transition: transform .5s
559
- }
560
-
561
- .image-gallery.zoom figure:hover img {
562
- transform: scale(1.05)
563
- }
564
-
565
- img.lightbox {
566
- cursor: zoom-in
567
- }
568
-
569
- img.framed {
570
- border: 8px solid #fff;
571
- box-shadow: 0 0 0 1px var(--image-border-color), var(--image-shadow);
572
- box-sizing: border-box
573
- }
574
-
575
- figure.polaroid {
576
- background: #fff;
577
- padding: 10px 10px 30px;
578
- box-shadow: var(--shadow-md)
579
- }
580
-
581
- figure.polaroid img {
582
- border-radius: 0;
583
- box-shadow: none
584
- }
585
-
586
- figure.polaroid figcaption {
587
- background: #fff;
588
- color: var(--sky-text);
589
- font-family: Caveat, cursive, var(--font-family-sans);
590
- font-size: 1.1rem
591
- }
592
-
593
- @media (max-width:768px) {
594
- .content-area {
595
- padding: 1.5rem 1rem
596
- }
597
-
598
- h1 {
599
- font-size: 1.75rem
600
- }
601
-
602
- h2 {
603
- font-size: 1.5rem
604
- }
605
-
606
- h3 {
607
- font-size: 1.25rem
608
- }
609
-
610
- .image-gallery {
611
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr))
612
- }
613
-
614
- .image-gallery img {
615
- height: 150px
616
- }
617
- }
Binary file
@@ -1,74 +0,0 @@
1
- // Source file from the docmd project — https://github.com/docmd-io/docmd
2
-
3
- /*
4
- * A simple lightbox implementation for gallery images
5
- */
6
-
7
- document.addEventListener('DOMContentLoaded', function () {
8
- // Create lightbox elements
9
- const lightbox = document.createElement('div');
10
- lightbox.className = 'docmd-lightbox';
11
- lightbox.innerHTML = `
12
- <div class="docmd-lightbox-content">
13
- <img src="" alt="">
14
- <div class="docmd-lightbox-caption"></div>
15
- </div>
16
- <div class="docmd-lightbox-close">&times;</div>
17
- `;
18
- document.body.appendChild(lightbox);
19
-
20
- const lightboxImg = lightbox.querySelector('img');
21
- const lightboxCaption = lightbox.querySelector('.docmd-lightbox-caption');
22
- const lightboxClose = lightbox.querySelector('.docmd-lightbox-close');
23
-
24
- // Find all images with lightbox class or in image galleries
25
- const lightboxImages = document.querySelectorAll('img.lightbox, .image-gallery img');
26
-
27
- // Add click event to each image
28
- lightboxImages.forEach(function (img) {
29
- img.style.cursor = 'zoom-in';
30
-
31
- img.addEventListener('click', function () {
32
- // Get the image source and caption
33
- const src = this.getAttribute('src');
34
- let caption = this.getAttribute('alt') || '';
35
-
36
- // If image is inside a figure with figcaption, use that caption
37
- const figure = this.closest('figure');
38
- if (figure) {
39
- const figcaption = figure.querySelector('figcaption');
40
- if (figcaption) {
41
- caption = figcaption.textContent;
42
- }
43
- }
44
-
45
- // Set the lightbox content
46
- lightboxImg.setAttribute('src', src);
47
- lightboxCaption.textContent = caption;
48
-
49
- // Show the lightbox
50
- lightbox.style.display = 'flex';
51
- document.body.style.overflow = 'hidden'; // Prevent scrolling
52
- });
53
- });
54
-
55
- // Close lightbox when clicking the close button or outside the image
56
- lightboxClose.addEventListener('click', closeLightbox);
57
- lightbox.addEventListener('click', function (e) {
58
- if (e.target === lightbox) {
59
- closeLightbox();
60
- }
61
- });
62
-
63
- // Close lightbox when pressing Escape key
64
- document.addEventListener('keydown', function (e) {
65
- if (e.key === 'Escape' && lightbox.style.display === 'flex') {
66
- closeLightbox();
67
- }
68
- });
69
-
70
- function closeLightbox() {
71
- lightbox.style.display = 'none';
72
- document.body.style.overflow = ''; // Restore scrolling
73
- }
74
- });