@fsegurai/marked-extended-comments 17.0.0-beta.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/README.md ADDED
@@ -0,0 +1,682 @@
1
+ <p align="center">
2
+ <img alt="Marked Extensions Logo" src="https://raw.githubusercontent.com/fsegurai/marked-extensions/main/public/marked-extensions.svg">
3
+ </p>
4
+
5
+ <p align="center">
6
+ <a href="https://github.com/fsegurai/marked-extensions">
7
+ <img src="https://img.shields.io/azure-devops/build/fsegurai/93779823-473d-4fb3-a5b1-27aaa1a88ea2/18/main?label=Build%20Status&"
8
+ alt="Build Main Status">
9
+ </a>
10
+ <a href="https://www.npmjs.org/package/@fsegurai/marked-extended-comments">
11
+ <img src="https://img.shields.io/npm/v/@fsegurai/marked-extended-comments.svg"
12
+ alt="Latest Release">
13
+ </a>
14
+ <br>
15
+ <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/fsegurai/marked-extensions">
16
+ <img alt="Dependency status for repo" src="https://img.shields.io/librariesio/github/fsegurai/marked-extensions">
17
+ <a href="https://opensource.org/licenses/MIT">
18
+ <img alt="GitHub License" src="https://img.shields.io/github/license/fsegurai/marked-extensions">
19
+ </a>
20
+ <br>
21
+ <img alt="Stars" src="https://img.shields.io/github/stars/fsegurai/marked-extensions?style=square&labelColor=343b41"/>
22
+ <img alt="Forks" src="https://img.shields.io/github/forks/fsegurai/marked-extensions?style=square&labelColor=343b41"/>
23
+ </p>
24
+
25
+ **An extension library for Marked.js to enhance Markdown rendering.**
26
+
27
+ `@fsegurai/marked-extended-comments` Marked extension for collaborative comments and annotations
28
+
29
+ ---
30
+
31
+ This extension enables powerful commenting capabilities directly in Markdown, allowing teams to annotate documents,
32
+ track feedback, manage review processes, and collaborate on content creation. Comments can be styled by type, filtered
33
+ by status, and customized to fit your workflow.
34
+
35
+ ### Table of contents
36
+
37
+ - [Installation](#installation)
38
+ - [Usage](#usage)
39
+ - [Basic Usage](#basic-usage)
40
+ - [Inline Comments](#inline-comments)
41
+ - [Block Comments](#block-comments)
42
+
43
+ - [Comment Types](#comment-types)
44
+ - [Configuration Options](#configuration-options)
45
+ - [Properties](#properties)
46
+ - [Advanced Examples](#advanced-examples)
47
+ - [More Resources](#more-resources)
48
+ - [Available Extensions](#available-extensions)
49
+ - [Demo Application](#demo-application)
50
+ - [License](#license)
51
+
52
+ ## Installation
53
+
54
+ To add `@fsegurai/marked-extended-comments` along with Marked.js to your `package.json` use the following commands.
55
+
56
+ ```bash
57
+ bun install @fsegurai/marked-extended-comments marked@>=17.0.0 --save
58
+ ```
59
+
60
+ ## Usage
61
+
62
+ ### Basic Usage
63
+
64
+ Import `@fsegurai/marked-extended-comments` and apply it to your Marked instance as shown below.
65
+
66
+ **Comments use two syntaxes: `:::comment` for inline and `::::comment` for block comments.**
67
+
68
+ ```javascript
69
+ import { marked } from 'marked';
70
+ import markedExtendedComments from '@fsegurai/marked-extended-comments';
71
+
72
+ // or UMD script
73
+ // <script src="https://cdn.jsdelivr.net/npm/marked/lib/marked.umd.js"></script>
74
+ // <script src="https://cdn.jsdelivr.net/npm/@fsegurai/marked-extended-comments/lib/index.umd.js"></script>
75
+
76
+ marked.use(markedExtendedComments());
77
+
78
+ const markdown = `
79
+ This text has :::comment{author="Alice"}a note::: embedded inline.
80
+
81
+ ::::comment{author="Bob" type="review" status="open"}
82
+ This section needs revision.
83
+
84
+ **Action items:**
85
+
86
+ - Verify statistics
87
+ - Add citations
88
+ ::::commentend
89
+ `;
90
+
91
+ marked.parse(markdown);
92
+ ```
93
+
94
+ The extension supports **nested Markdown content** within block comments, including lists, code blocks, links, and all
95
+ other Markdown formatting. Comments are rendered with semantic HTML and include proper accessibility attributes.
96
+
97
+ ### Styling Your Comments
98
+
99
+ This extension follows a **separation of concerns** approach, injecting only minimal structural CSS. Visual styling is
100
+ completely separated for maximum flexibility.
101
+
102
+ #### Generated HTML Structure
103
+
104
+ **Inline Comments:**
105
+
106
+ ```html
107
+ <span class="marked-extended-comment marked-extended-comment-inline marked-extended-comment-type-note">
108
+ <span class="marked-extended-comment-indicator" title="Comment by Alice">💬</span>
109
+ <span class="marked-extended-comment-text">inline text</span>
110
+ </span>
111
+ ```
112
+
113
+ **Block Comments:**
114
+
115
+ ```html
116
+
117
+ <div class="marked-extended-comment marked-extended-comment-block marked-extended-comment-type-review">
118
+ <div class="marked-extended-comment-header">
119
+ <span class="marked-extended-comment-icon">💬</span>
120
+ <span class="marked-extended-comment-type-label">Review</span>
121
+ <span class="marked-extended-comment-metadata">
122
+ <span class="marked-extended-comment-author">By Alice</span>
123
+ <span class="marked-extended-comment-status">Open</span>
124
+ </span>
125
+ </div>
126
+ <div class="marked-extended-comment-body">
127
+ <!-- Markdown content rendered here -->
128
+ </div>
129
+ </div>
130
+ ```
131
+
132
+ #### CSS Classes Reference
133
+
134
+ | Class | Purpose | Type |
135
+ |--------------------------------------------|-------------------------|--------|
136
+ | `.marked-extended-comment` | Base comment wrapper | Both |
137
+ | `.marked-extended-comment-inline` | Inline comment style | Inline |
138
+ | `.marked-extended-comment-block` | Block comment style | Block |
139
+ | `.marked-extended-comment-type-note` | Note type styling | Both |
140
+ | `.marked-extended-comment-type-review` | Review type styling | Both |
141
+ | `.marked-extended-comment-type-question` | Question type styling | Both |
142
+ | `.marked-extended-comment-type-suggestion` | Suggestion type styling | Both |
143
+ | `.marked-extended-comment-indicator` | Inline comment icon | Inline |
144
+ | `.marked-extended-comment-text` | Inline comment text | Inline |
145
+ | `.marked-extended-comment-header` | Block comment header | Block |
146
+ | `.marked-extended-comment-icon` | Block comment icon | Block |
147
+ | `.marked-extended-comment-type-label` | Type label text | Block |
148
+ | `.marked-extended-comment-metadata` | Author/status info | Block |
149
+ | `.marked-extended-comment-body` | Block comment content | Block |
150
+
151
+ #### Complete Styling Example
152
+
153
+ ```css
154
+ /* Base comment styles */
155
+ .marked-extended-comment {
156
+ transition: all 0.2s ease;
157
+ }
158
+
159
+ /* Inline Comments */
160
+ .marked-extended-comment-inline {
161
+ background: rgba(255, 235, 59, 0.2);
162
+ border-bottom: 2px dashed rgba(255, 235, 59, 0.8);
163
+ padding: 0 4px;
164
+ cursor: help;
165
+ border-radius: 2px;
166
+ position: relative;
167
+ }
168
+
169
+ .marked-extended-comment-inline:hover {
170
+ background: rgba(255, 235, 59, 0.3);
171
+ border-bottom-color: rgba(255, 235, 59, 1);
172
+ }
173
+
174
+ .marked-extended-comment-indicator {
175
+ font-size: 0.875em;
176
+ opacity: 0.8;
177
+ margin-right: 2px;
178
+ }
179
+
180
+ /* Block Comments */
181
+ .marked-extended-comment-block {
182
+ padding: 1rem;
183
+ margin: 1rem 0;
184
+ border-left: 4px solid;
185
+ border-radius: 4px;
186
+ background: rgba(0, 0, 0, 0.03);
187
+ }
188
+
189
+ .marked-extended-comment-header {
190
+ display: flex;
191
+ align-items: center;
192
+ gap: 0.5rem;
193
+ margin-bottom: 0.75rem;
194
+ padding-bottom: 0.5rem;
195
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
196
+ }
197
+
198
+ .marked-extended-comment-icon {
199
+ font-size: 1.2em;
200
+ }
201
+
202
+ .marked-extended-comment-type-label {
203
+ font-weight: 600;
204
+ text-transform: uppercase;
205
+ letter-spacing: 0.05em;
206
+ font-size: 0.875rem;
207
+ }
208
+
209
+ .marked-extended-comment-metadata {
210
+ margin-left: auto;
211
+ display: flex;
212
+ gap: 0.75rem;
213
+ font-size: 0.75rem;
214
+ color: rgba(0, 0, 0, 0.6);
215
+ }
216
+
217
+ .marked-extended-comment-body {
218
+ line-height: 1.6;
219
+ }
220
+
221
+ /* Comment Types - Note */
222
+ .marked-extended-comment-type-note {
223
+ border-color: #2196F3;
224
+ }
225
+
226
+ .marked-extended-comment-type-note.marked-extended-comment-inline {
227
+ background: rgba(33, 150, 243, 0.15);
228
+ border-bottom-color: rgba(33, 150, 243, 0.6);
229
+ }
230
+
231
+ .marked-extended-comment-type-note.marked-extended-comment-block {
232
+ background: rgba(33, 150, 243, 0.05);
233
+ }
234
+
235
+ .marked-extended-comment-type-note .marked-extended-comment-type-label {
236
+ color: #2196F3;
237
+ }
238
+
239
+ /* Comment Types - Review */
240
+ .marked-extended-comment-type-review {
241
+ border-color: #9C27B0;
242
+ }
243
+
244
+ .marked-extended-comment-type-review.marked-extended-comment-inline {
245
+ background: rgba(156, 39, 176, 0.15);
246
+ border-bottom-color: rgba(156, 39, 176, 0.6);
247
+ }
248
+
249
+ .marked-extended-comment-type-review.marked-extended-comment-block {
250
+ background: rgba(156, 39, 176, 0.05);
251
+ }
252
+
253
+ .marked-extended-comment-type-review .marked-extended-comment-type-label {
254
+ color: #9C27B0;
255
+ }
256
+
257
+ /* Comment Types - Question */
258
+ .marked-extended-comment-type-question {
259
+ border-color: #FF9800;
260
+ }
261
+
262
+ .marked-extended-comment-type-question.marked-extended-comment-inline {
263
+ background: rgba(255, 152, 0, 0.15);
264
+ border-bottom-color: rgba(255, 152, 0, 0.6);
265
+ }
266
+
267
+ .marked-extended-comment-type-question.marked-extended-comment-block {
268
+ background: rgba(255, 152, 0, 0.05);
269
+ }
270
+
271
+ .marked-extended-comment-type-question .marked-extended-comment-type-label {
272
+ color: #FF9800;
273
+ }
274
+
275
+ /* Comment Types - Suggestion */
276
+ .marked-extended-comment-type-suggestion {
277
+ border-color: #4CAF50;
278
+ }
279
+
280
+ .marked-extended-comment-type-suggestion.marked-extended-comment-inline {
281
+ background: rgba(76, 175, 80, 0.15);
282
+ border-bottom-color: rgba(76, 175, 80, 0.6);
283
+ }
284
+
285
+ .marked-extended-comment-type-suggestion.marked-extended-comment-block {
286
+ background: rgba(76, 175, 80, 0.05);
287
+ }
288
+
289
+ .marked-extended-comment-type-suggestion .marked-extended-comment-type-label {
290
+ color: #4CAF50;
291
+ }
292
+ ```
293
+
294
+ #### Dark Mode Support
295
+
296
+ ```css
297
+ /* Light theme */
298
+ body.light .marked-extended-comment-block {
299
+ background: rgba(0, 0, 0, 0.03);
300
+ }
301
+
302
+ body.light .marked-extended-comment-metadata {
303
+ color: rgba(0, 0, 0, 0.6);
304
+ }
305
+
306
+ body.light .marked-extended-comment-body {
307
+ color: #24292e;
308
+ }
309
+
310
+ /* Dark theme */
311
+ body.dark .marked-extended-comment-block {
312
+ background: rgba(255, 255, 255, 0.05);
313
+ }
314
+
315
+ body.dark .marked-extended-comment-metadata {
316
+ color: rgba(255, 255, 255, 0.6);
317
+ }
318
+
319
+ body.dark .marked-extended-comment-body {
320
+ color: #d1d5da;
321
+ }
322
+
323
+ body.dark .marked-extended-comment-header {
324
+ border-bottom-color: rgba(255, 255, 255, 0.1);
325
+ }
326
+ ```
327
+
328
+ #### SVG Icon Styling
329
+
330
+ The extension uses SVG icons for each comment type. You can customize their appearance:
331
+
332
+ ```css
333
+ /* Base SVG icon styling */
334
+ .comment-icon {
335
+ display: inline-block;
336
+ vertical-align: middle;
337
+ width: 16px;
338
+ height: 16px;
339
+ }
340
+
341
+ /* Larger icons in block comment headers */
342
+ .marked-extended-comment-icon .comment-icon {
343
+ width: 20px;
344
+ height: 20px;
345
+ }
346
+
347
+ /* Smaller icons for inline comments */
348
+ .marked-extended-comment-indicator .comment-icon {
349
+ width: 14px;
350
+ height: 14px;
351
+ }
352
+
353
+ /* Color icons by comment type */
354
+ .marked-extended-comment-type-note .comment-icon {
355
+ color: #2196F3;
356
+ }
357
+
358
+ .marked-extended-comment-type-question .comment-icon {
359
+ color: #9C27B0;
360
+ }
361
+
362
+ .marked-extended-comment-type-suggestion .comment-icon {
363
+ color: #4CAF50;
364
+ }
365
+
366
+ .marked-extended-comment-type-issue .comment-icon {
367
+ color: #F44336;
368
+ }
369
+
370
+ .marked-extended-comment-type-internal .comment-icon {
371
+ color: #607D8B;
372
+ }
373
+
374
+ .marked-extended-comment-type-review .comment-icon {
375
+ color: #FF9800;
376
+ }
377
+
378
+ .marked-extended-comment-type-todo .comment-icon {
379
+ color: #00BCD4;
380
+ }
381
+ ```
382
+
383
+ #### Status-Based Styling
384
+
385
+ ```css
386
+ /* Status indicators */
387
+ .marked-extended-comment-status {
388
+ padding: 2px 6px;
389
+ border-radius: 3px;
390
+ font-weight: 600;
391
+ }
392
+
393
+ .marked-extended-comment[data-status="open"] .marked-extended-comment-status {
394
+ background: #22863a;
395
+ color: white;
396
+ }
397
+
398
+ .marked-extended-comment[data-status="resolved"] .marked-extended-comment-status {
399
+ background: #6f42c1;
400
+ color: white;
401
+ }
402
+
403
+ .marked-extended-comment[data-status="pending"] .marked-extended-comment-status {
404
+ background: #f66a0a;
405
+ color: white;
406
+ }
407
+ ```
408
+
409
+ #### Tooltip for Inline Comments
410
+
411
+ ```css
412
+ /* Add tooltip on hover */
413
+ .marked-extended-comment-inline::after {
414
+ content: attr(title);
415
+ position: absolute;
416
+ bottom: 100%;
417
+ left: 50%;
418
+ transform: translateX(-50%);
419
+ background: #333;
420
+ color: white;
421
+ padding: 4px 8px;
422
+ border-radius: 4px;
423
+ font-size: 0.75rem;
424
+ white-space: nowrap;
425
+ opacity: 0;
426
+ pointer-events: none;
427
+ transition: opacity 0.2s;
428
+ margin-bottom: 4px;
429
+ }
430
+
431
+ .marked-extended-comment-inline:hover::after {
432
+ opacity: 1;
433
+ }
434
+ ```
435
+
436
+ #### Copy Demo Theme
437
+
438
+ For complete
439
+ styling: [comment-theme.css](https://github.com/fsegurai/marked-extensions/blob/main/demo/styles/extensions/comment-theme.css)
440
+
441
+ Check the [demo](https://fsegurai.github.io/marked-extensions) to see all comment types and styles in action.
442
+
443
+ ### Inline Comments
444
+
445
+ Inline comments appear directly within text, perfect for quick annotations:
446
+
447
+ ```markdown
448
+ This text has :::comment{author="Alice" type="note"}needs verification::: here.
449
+
450
+ A question: :::comment{type="question"}should we use v2 API?:::
451
+
452
+ Mark as :::comment{type="issue"}outdated data::: for review.
453
+ ```
454
+
455
+ ### Block Comments
456
+
457
+ Block comments are standalone sections with full Markdown support:
458
+
459
+ ```markdown
460
+ ::::comment{author="Editor" type="review" priority="high"}
461
+ This introduction needs strengthening.
462
+
463
+ **Suggestions:**
464
+
465
+ - Add a hook to grab reader attention
466
+ - Include recent statistics
467
+ - Mention the main thesis upfront
468
+ ::::commentend
469
+
470
+ ::::comment{type="internal" visibility="dev-only"}
471
+ **Developer Note:**
472
+
473
+ TODO: Update after API v2 release.
474
+ Use `/api/v2/data` endpoint.
475
+ ::::commentend
476
+ ```
477
+
478
+ ## Comment Types
479
+
480
+ The extension supports 7 comment types with automatic SVG icons and color coding:
481
+
482
+ | Type | Icon | Description | Color | Use Case |
483
+ |--------------|------|-------------------------|--------|------------------------------|
484
+ | `note` | 📄 | General annotations | Blue | Documentation, clarification |
485
+ | `question` | ❔ | Questions and queries | Purple | Requesting information |
486
+ | `suggestion` | 💡 | Improvement suggestions | Green | Recommendations, ideas |
487
+ | `issue` | ⚠️ | Problems and bugs | Red | Critical items, errors |
488
+ | `internal` | 🔒 | Internal notes | Grey | Private team notes |
489
+ | `review` | 👁️ | Review comments | Orange | Editorial feedback |
490
+ | `todo` | ✓ | Action items | Cyan | Task tracking |
491
+
492
+ Each type is automatically styled with appropriate colors and SVG icons. You can set a default type in configuration.
493
+
494
+ ### Configuration Options
495
+
496
+ The marked-extended-comments extension accepts the following configuration options:
497
+
498
+ - `className`: The base CSS class name for comments. Defaults to 'marked-extended-comment.'
499
+ - `prefixId`: The prefix ID for comment elements. Defaults to 'comment'.
500
+ - `showComments`: Whether to display comments. Defaults to true.
501
+ - `enableInlineComments`: Enable inline comment syntax. Defaults to true.
502
+ - `enableBlockComments`: Enable block comment syntax. Defaults to true.
503
+ - `showMetadata`: Display comment metadata (author, date, tags). Defaults to true.
504
+ - `showResolvedComments`: Show comments marked as resolved. Defaults to false.
505
+ - `defaultType`: Default comment type when not specified. Defaults to 'note'.
506
+ - `defaultVisibility`: Default visibility level. Defaults to 'public'.
507
+ - `injectStyles`: Whether to inject default styles. Defaults to true.
508
+ - `customizeToken`: Function to customize comment tokens. Defaults to null.
509
+ - `onVisibilityChange`: Callback when comment visibility changes. Defaults to null.
510
+ - `onStatusChange`: Callback when comment status changes. Defaults to null.
511
+ - `inlineTemplate`: Custom HTML template for inline comments. Defaults to built-in template.
512
+ - `blockTemplate`: Custom HTML template for block comments. Defaults to built-in template.
513
+
514
+ ### Properties
515
+
516
+ Comment syntax supports the following properties:
517
+
518
+ **Common Properties:**
519
+
520
+ - `author`: Comment author name
521
+ - `date`: ISO date string (e.g., "2026-02-07")
522
+ - `type`: Comment type ('note', 'question', 'suggestion', 'issue', 'internal', 'review', 'todo')
523
+ - `status`: Comment status ('open', 'resolved', 'archived'). Defaults to 'open'.
524
+ - `visibility`: Visibility level ('public', 'private', 'dev-only', 'editors-only'). Defaults to 'public'.
525
+ - `priority`: Priority level ('low', 'medium', 'high')
526
+ - `tags`: Comma-separated tags
527
+ - `id`: Custom identifier for the comment
528
+
529
+ **Block Comment Properties:**
530
+
531
+ - `replyTo`: ID of parent comment for threading
532
+
533
+ **Example with properties:**
534
+
535
+ ```markdown
536
+ ::::comment{
537
+ author="Alice Smith"
538
+ date="2026-02-07"
539
+ type="review"
540
+ status="open"
541
+ priority="high"
542
+ tags="urgent,milestone"
543
+ id="comment-123"
544
+ }
545
+ Review this section carefully before release.
546
+ ::::commentend
547
+ ```
548
+
549
+ ### Advanced Examples
550
+
551
+ #### Editorial Workflow
552
+
553
+ ```markdown
554
+ ::::comment{author="Chief Editor" type="review" priority="high"}
555
+ This introduction lacks impact. Consider:
556
+
557
+ 1. Start with a compelling statistic
558
+ 2. Include a real-world example
559
+ 3. State the main argument upfront
560
+
561
+ **Deadline:** End of week
562
+ ::::commentend
563
+ ```
564
+
565
+ #### Code Review Process
566
+
567
+ ```markdown
568
+ ::::comment{author="Senior Dev" type="issue" status="open"}
569
+ This function has a potential memory leak in the event handler.
570
+
571
+ :::comment{type="suggestion"}Consider using WeakMap for automatic cleanup:::
572
+
573
+ **Priority:** Must fix before merge
574
+ ::::commentend
575
+ ```
576
+
577
+ #### Documentation Feedback
578
+
579
+ ```markdown
580
+ The API endpoint :::comment{type="question"}returns JSON or XML?::: can be called with optional parameters.
581
+
582
+ ::::comment{type="note" author="API Team"}
583
+ **Note:** This endpoint will be deprecated in v3.0.
584
+
585
+ Migration guide: [link to docs]
586
+ ::::commentend
587
+ ```
588
+
589
+ #### Task Management
590
+
591
+ ```markdown
592
+ ::::comment{type="todo" author="Project Manager" tags="sprint-5,docs"}
593
+ **Sprint Tasks:**
594
+
595
+ - [ ] Complete API documentation
596
+ - [ ] Add code examples
597
+ - [ ] Review with team
598
+ - [ ] Update changelog
599
+
600
+ *Due:* End of sprint
601
+ ::::commentend
602
+ ```
603
+
604
+ #### Internal Notes
605
+
606
+ ```markdown
607
+ ::::comment{type="internal" visibility="dev-only"}
608
+ **Implementation Details:**
609
+
610
+ This is a temporary workaround until the upstream library fixes the bug.
611
+ Expected fix in v2.1.0 (Q2 2026).
612
+
613
+ See issue #1234 for tracking.
614
+ ::::commentend
615
+ ```
616
+
617
+ #### Status Tracking
618
+
619
+ ```markdown
620
+ ::::comment{author="Alice" type="issue" status="resolved"}
621
+ ~~The calculation was incorrect.~~
622
+
623
+ **Resolution:** Fixed in commit abc123
624
+ Formula updated to use correct constant.
625
+ ::::commentend
626
+
627
+ ::::comment{type="note" status="archived"}
628
+ Old implementation notes - kept for historical reference.
629
+ ::::commentend
630
+ ```
631
+
632
+ #### Visibility Control
633
+
634
+ ```markdown
635
+ ::::comment{visibility="private"}
636
+ Private note only visible to authorized users.
637
+ ::::commentend
638
+
639
+ ::::comment{visibility="editors-only"}
640
+ Editorial team: Please review for tone and style.
641
+ ::::commentend
642
+
643
+ ::::comment{visibility="dev-only"}
644
+ Technical debt: Refactor this section when time permits.
645
+ ::::commentend
646
+ ```
647
+
648
+ ### Available Extensions
649
+
650
+ | Extension | Package | Version | Description |
651
+ |-------------|--------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------------------|
652
+ | Accordion | [@fsegurai/marked-extended-accordion](https://www.npmjs.com/package/@fsegurai/marked-extended-accordion) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-accordion) | Add collapsible accordion sections to your markdown |
653
+ | Alert | [@fsegurai/marked-extended-alert](https://www.npmjs.com/package/@fsegurai/marked-extended-alert) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-alert) | Create styled alert boxes for important information |
654
+ | Comments | [@fsegurai/marked-extended-comments](https://www.npmjs.com/package/@fsegurai/marked-extended-comments) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-comments) | Add comment sections with author and timestamp metadata |
655
+ | Embeds | [@fsegurai/marked-extended-embeds](https://www.npmjs.com/package/@fsegurai/marked-extended-embeds) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-embeds) | Easily embed content from various platforms (YouTube, Twitter, etc.) |
656
+ | Footnote | [@fsegurai/marked-extended-footnote](https://www.npmjs.com/package/@fsegurai/marked-extended-footnote) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-footnote) | Add footnotes with automatic numbering |
657
+ | Kanban | [@fsegurai/marked-extended-kanban](https://www.npmjs.com/package/@fsegurai/marked-extended-kanban) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-kanban) | Create kanban boards with customizable columns and cards |
658
+ | Lists | [@fsegurai/marked-extended-lists](https://www.npmjs.com/package/@fsegurai/marked-extended-lists) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-lists) | Enhanced list formatting options |
659
+ | Slide | [@fsegurai/marked-extended-slide](https://www.npmjs.com/package/@fsegurai/marked-extended-slide) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-slide) | Create slide decks directly from markdown content |
660
+ | Spoiler | [@fsegurai/marked-extended-spoiler](https://www.npmjs.com/package/@fsegurai/marked-extended-spoiler) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-spoiler) | Hide content behind spoiler tags |
661
+ | Tables | [@fsegurai/marked-extended-tables](https://www.npmjs.com/package/@fsegurai/marked-extended-tables) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-tables) | Advanced table formatting with cell spanning |
662
+ | Tabs | [@fsegurai/marked-extended-tabs](https://www.npmjs.com/package/@fsegurai/marked-extended-tabs) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-tabs) | Create tabbed content sections |
663
+ | Timeline | [@fsegurai/marked-extended-timeline](https://www.npmjs.com/package/@fsegurai/marked-extended-timeline) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-timeline) | Display content in an interactive timeline format |
664
+ | Typographic | [@fsegurai/marked-extended-typographic](https://www.npmjs.com/package/@fsegurai/marked-extended-typographic) | ![npm](https://img.shields.io/npm/v/@fsegurai/marked-extended-typographic) | Improve typography with smart quotes, dashes, and more |
665
+
666
+ ### Demo Application
667
+
668
+ To see all extensions in action, check out the [[DEMO]](https://fsegurai.github.io/marked-extensions).
669
+
670
+ To set up the demo locally, follow the next steps:
671
+
672
+ ```shell
673
+ git clone https://github.com/fsegurai/marked-extensions.git
674
+ bun install
675
+ bun start
676
+ ```
677
+
678
+ This will serve the application locally at [http://[::1]:8000](http://[::1]:8000).
679
+
680
+ ## License
681
+
682
+ Licensed under [MIT](https://opensource.org/licenses/MIT).