@dr-ishaan/remake-blocks 1.2.0 → 1.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.
@@ -0,0 +1,603 @@
1
+ /**
2
+ * remake-blocks – VitePress Theme
3
+ *
4
+ * Faithful VitePress look: 4px solid colored left border, NO background tint,
5
+ * plain title in bold, custom container class. Matches vitepress.dev exactly.
6
+ *
7
+ * Usage:
8
+ * import "@dr-ishaan/remake-blocks/theme/vitepress.css";
9
+ *
10
+ * Dark mode: triggered by `prefers-color-scheme: dark` (when no
11
+ * `data-theme="light"` is set) AND/OR `data-theme="dark"` / `data-theme="dim"`
12
+ * on <html>. VitePress in dark mode keeps backgrounds transparent but uses
13
+ * brighter, more saturated border colors.
14
+ */
15
+
16
+ /* ========================================================================
17
+ 1. CSS Custom Properties (VitePress Light Mode Defaults)
18
+ ======================================================================== */
19
+
20
+ :root {
21
+ /* -- Layout (VitePress: no radius, more padding) --------------------- */
22
+ --callout-radius: 0;
23
+ --callout-padding-y: 16px;
24
+ --callout-padding-x: 20px;
25
+ --callout-gap: 8px;
26
+ --callout-title-font-size: 1.1em;
27
+ --callout-body-font-size: 1em;
28
+ --callout-icon-size: 20px;
29
+ --callout-shadow: none;
30
+ --callout-border-width: 4px;
31
+ --callout-inline-width: 50%;
32
+
33
+ /* -- GFM (5) — saturated colors, transparent bg ---------------------- */
34
+ --callout-note-border: #476582; --callout-note-bg: transparent;
35
+ --callout-tip-border: #42b983; --callout-tip-bg: transparent;
36
+ --callout-important-border: #9061ff; --callout-important-bg: transparent;
37
+ --callout-warning-border: #e7c000; --callout-warning-bg: transparent;
38
+ --callout-caution-border: #ff4d4d; --callout-caution-bg: transparent;
39
+
40
+ /* -- Obsidian (10) ---------------------------------------------------- */
41
+ --callout-abstract-border: #2dd4bf; --callout-abstract-bg: transparent;
42
+ --callout-info-border: #476582; --callout-info-bg: transparent;
43
+ --callout-success-border: #42b983; --callout-success-bg: transparent;
44
+ --callout-question-border: #f5a623; --callout-question-bg: transparent;
45
+ --callout-failure-border: #ff4d4d; --callout-failure-bg: transparent;
46
+ --callout-danger-border: #ff4d4d; --callout-danger-bg: transparent;
47
+ --callout-quote-border: #476582; --callout-quote-bg: transparent;
48
+ --callout-bug-border: #f56565; --callout-bug-bg: transparent;
49
+ --callout-example-border: #9061ff; --callout-example-bg: transparent;
50
+ --callout-todo-border: #4299e1; --callout-todo-bg: transparent;
51
+
52
+ /* -- Promoted Aliases (12) -------------------------------------------- */
53
+ --callout-summary-border: #2dd4bf; --callout-summary-bg: transparent;
54
+ --callout-tldr-border: #2dd4bf; --callout-tldr-bg: transparent;
55
+ --callout-hint-border: #42b983; --callout-hint-bg: transparent;
56
+ --callout-check-border: #2dd4bf; --callout-check-bg: transparent;
57
+ --callout-done-border: #42b983; --callout-done-bg: transparent;
58
+ --callout-help-border: #f5a623; --callout-help-bg: transparent;
59
+ --callout-faq-border: #e7c000; --callout-faq-bg: transparent;
60
+ --callout-attention-border: #e7c000; --callout-attention-bg: transparent;
61
+ --callout-fail-border: #f56565; --callout-fail-bg: transparent;
62
+ --callout-missing-border: #d53f8c; --callout-missing-bg: transparent;
63
+ --callout-error-border: #ff4d4d; --callout-error-bg: transparent;
64
+ --callout-cite-border: #667eea; --callout-cite-bg: transparent;
65
+
66
+ /* -- Enhanced Blockquote ---------------------------------------------- */
67
+ --blockquote-enhanced-border: #d0d7de;
68
+ --blockquote-enhanced-bg: #f6f8fa;
69
+ --blockquote-enhanced-color: #57606a;
70
+ --blockquote-padding: 16px 20px;
71
+ --blockquote-margin: 16px 0;
72
+
73
+ /* -- Disclosure Widget ------------------------------------------------ */
74
+ --disclosure-border: #d0d7de;
75
+ --disclosure-bg: transparent;
76
+ --disclosure-title-color: #24292f;
77
+ --disclosure-body-color: inherit;
78
+ --disclosure-radius: 0;
79
+ --disclosure-padding: 16px 20px;
80
+ --disclosure-title-font-size: 1.1em;
81
+ --disclosure-body-font-size: 1em;
82
+ }
83
+
84
+ /* ========================================================================
85
+ 2. Dark Mode — prefers-color-scheme
86
+ ======================================================================== */
87
+
88
+ @media (prefers-color-scheme: dark) {
89
+ :root:not([data-theme="light"]) {
90
+ /* VitePress dark mode: keep backgrounds transparent, brighten borders */
91
+ --callout-note-border: #6b9ad1; --callout-note-bg: transparent;
92
+ --callout-tip-border: #5cd39a; --callout-tip-bg: transparent;
93
+ --callout-important-border: #b888ff; --callout-important-bg: transparent;
94
+ --callout-warning-border: #ffd54f; --callout-warning-bg: transparent;
95
+ --callout-caution-border: #ff7575; --callout-caution-bg: transparent;
96
+
97
+ --callout-abstract-border: #4de3cf; --callout-abstract-bg: transparent;
98
+ --callout-info-border: #6b9ad1; --callout-info-bg: transparent;
99
+ --callout-success-border: #5cd39a; --callout-success-bg: transparent;
100
+ --callout-question-border: #ffb84d; --callout-question-bg: transparent;
101
+ --callout-failure-border: #ff7575; --callout-failure-bg: transparent;
102
+ --callout-danger-border: #ff7575; --callout-danger-bg: transparent;
103
+ --callout-quote-border: #6b9ad1; --callout-quote-bg: transparent;
104
+ --callout-bug-border: #ff7e7e; --callout-bug-bg: transparent;
105
+ --callout-example-border: #b888ff; --callout-example-bg: transparent;
106
+ --callout-todo-border: #5db1ec; --callout-todo-bg: transparent;
107
+
108
+ --callout-summary-border: #4de3cf; --callout-summary-bg: transparent;
109
+ --callout-tldr-border: #4de3cf; --callout-tldr-bg: transparent;
110
+ --callout-hint-border: #5cd39a; --callout-hint-bg: transparent;
111
+ --callout-check-border: #4de3cf; --callout-check-bg: transparent;
112
+ --callout-done-border: #5cd39a; --callout-done-bg: transparent;
113
+ --callout-help-border: #ffb84d; --callout-help-bg: transparent;
114
+ --callout-faq-border: #ffd54f; --callout-faq-bg: transparent;
115
+ --callout-attention-border: #ffd54f; --callout-attention-bg: transparent;
116
+ --callout-fail-border: #ff7e7e; --callout-fail-bg: transparent;
117
+ --callout-missing-border: #ff6bb5; --callout-missing-bg: transparent;
118
+ --callout-error-border: #ff7575; --callout-error-bg: transparent;
119
+ --callout-cite-border: #8fa5ff; --callout-cite-bg: transparent;
120
+
121
+ --blockquote-enhanced-border: #444c56;
122
+ --blockquote-enhanced-bg: #161b22;
123
+ --blockquote-enhanced-color: #c9d1d9;
124
+
125
+ --disclosure-border: #444c56;
126
+ --disclosure-title-color: #e6edf3;
127
+ }
128
+ }
129
+
130
+ /* ========================================================================
131
+ 2b. Dark Mode — manual via data-theme attribute
132
+ ======================================================================== */
133
+
134
+ [data-theme="dark"],
135
+ [data-theme="dim"] {
136
+ --callout-note-border: #6b9ad1; --callout-note-bg: transparent;
137
+ --callout-tip-border: #5cd39a; --callout-tip-bg: transparent;
138
+ --callout-important-border: #b888ff; --callout-important-bg: transparent;
139
+ --callout-warning-border: #ffd54f; --callout-warning-bg: transparent;
140
+ --callout-caution-border: #ff7575; --callout-caution-bg: transparent;
141
+
142
+ --callout-abstract-border: #4de3cf; --callout-abstract-bg: transparent;
143
+ --callout-info-border: #6b9ad1; --callout-info-bg: transparent;
144
+ --callout-success-border: #5cd39a; --callout-success-bg: transparent;
145
+ --callout-question-border: #ffb84d; --callout-question-bg: transparent;
146
+ --callout-failure-border: #ff7575; --callout-failure-bg: transparent;
147
+ --callout-danger-border: #ff7575; --callout-danger-bg: transparent;
148
+ --callout-quote-border: #6b9ad1; --callout-quote-bg: transparent;
149
+ --callout-bug-border: #ff7e7e; --callout-bug-bg: transparent;
150
+ --callout-example-border: #b888ff; --callout-example-bg: transparent;
151
+ --callout-todo-border: #5db1ec; --callout-todo-bg: transparent;
152
+
153
+ --callout-summary-border: #4de3cf; --callout-summary-bg: transparent;
154
+ --callout-tldr-border: #4de3cf; --callout-tldr-bg: transparent;
155
+ --callout-hint-border: #5cd39a; --callout-hint-bg: transparent;
156
+ --callout-check-border: #4de3cf; --callout-check-bg: transparent;
157
+ --callout-done-border: #5cd39a; --callout-done-bg: transparent;
158
+ --callout-help-border: #ffb84d; --callout-help-bg: transparent;
159
+ --callout-faq-border: #ffd54f; --callout-faq-bg: transparent;
160
+ --callout-attention-border: #ffd54f; --callout-attention-bg: transparent;
161
+ --callout-fail-border: #ff7e7e; --callout-fail-bg: transparent;
162
+ --callout-missing-border: #ff6bb5; --callout-missing-bg: transparent;
163
+ --callout-error-border: #ff7575; --callout-error-bg: transparent;
164
+ --callout-cite-border: #8fa5ff; --callout-cite-bg: transparent;
165
+
166
+ --blockquote-enhanced-border: #444c56;
167
+ --blockquote-enhanced-bg: #161b22;
168
+ --blockquote-enhanced-color: #c9d1d9;
169
+
170
+ --disclosure-border: #444c56;
171
+ --disclosure-title-color: #e6edf3;
172
+ }
173
+
174
+ /* ========================================================================
175
+ 3. Callout Container (VitePress: 0 radius, 4px left border, no shadow)
176
+ ======================================================================== */
177
+
178
+ .callout {
179
+ position: relative;
180
+ display: flex;
181
+ flex-direction: column;
182
+ gap: var(--callout-gap);
183
+ padding: var(--callout-padding-y) var(--callout-padding-x);
184
+ border-radius: var(--callout-radius);
185
+ border-left: var(--callout-border-width) solid var(--callout-color, var(--callout-note-border));
186
+ background: var(--callout-bg, transparent);
187
+ margin: 16px 0;
188
+ box-shadow: var(--callout-shadow);
189
+ }
190
+
191
+ /* ========================================================================
192
+ 4. Callout Type Variants (VitePress: only sets --callout-color, no bg)
193
+ ======================================================================== */
194
+
195
+ .callout-note { --callout-color: var(--callout-note-border); }
196
+ .callout-tip { --callout-color: var(--callout-tip-border); }
197
+ .callout-important { --callout-color: var(--callout-important-border); }
198
+ .callout-warning { --callout-color: var(--callout-warning-border); }
199
+ .callout-caution { --callout-color: var(--callout-caution-border); }
200
+ .callout-abstract { --callout-color: var(--callout-abstract-border); }
201
+ .callout-info { --callout-color: var(--callout-info-border); }
202
+ .callout-success { --callout-color: var(--callout-success-border); }
203
+ .callout-question { --callout-color: var(--callout-question-border); }
204
+ .callout-failure { --callout-color: var(--callout-failure-border); }
205
+ .callout-danger { --callout-color: var(--callout-danger-border); }
206
+ .callout-quote { --callout-color: var(--callout-quote-border); }
207
+ .callout-bug { --callout-color: var(--callout-bug-border); }
208
+ .callout-example { --callout-color: var(--callout-example-border); }
209
+ .callout-todo { --callout-color: var(--callout-todo-border); }
210
+ .callout-summary { --callout-color: var(--callout-summary-border); }
211
+ .callout-tldr { --callout-color: var(--callout-tldr-border); }
212
+ .callout-hint { --callout-color: var(--callout-hint-border); }
213
+ .callout-check { --callout-color: var(--callout-check-border); }
214
+ .callout-done { --callout-color: var(--callout-done-border); }
215
+ .callout-help { --callout-color: var(--callout-help-border); }
216
+ .callout-faq { --callout-color: var(--callout-faq-border); }
217
+ .callout-attention { --callout-color: var(--callout-attention-border); }
218
+ .callout-fail { --callout-color: var(--callout-fail-border); }
219
+ .callout-missing { --callout-color: var(--callout-missing-border); }
220
+ .callout-error { --callout-color: var(--callout-error-border); }
221
+ .callout-cite { --callout-color: var(--callout-cite-border); }
222
+
223
+ /* ========================================================================
224
+ 5. Callout Title (VitePress: bold, takes callout's color)
225
+ ======================================================================== */
226
+
227
+ .callout-title {
228
+ display: flex;
229
+ align-items: center;
230
+ gap: 8px;
231
+ font-weight: 700;
232
+ font-size: var(--callout-title-font-size);
233
+ line-height: 1.3;
234
+ color: var(--callout-color);
235
+ user-select: none;
236
+ }
237
+
238
+ .callout-icon {
239
+ display: inline-flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ flex-shrink: 0;
243
+ width: var(--callout-icon-size);
244
+ height: var(--callout-icon-size);
245
+ }
246
+
247
+ .callout-icon svg {
248
+ width: 100%;
249
+ height: 100%;
250
+ stroke-width: 2;
251
+ }
252
+
253
+ .callout-title-text {
254
+ font-weight: 700;
255
+ }
256
+
257
+ /* ========================================================================
258
+ 6. Callout Body
259
+ ======================================================================== */
260
+
261
+ .callout-body {
262
+ font-size: var(--callout-body-font-size);
263
+ line-height: 1.6;
264
+ color: inherit;
265
+ }
266
+
267
+ .callout-body > *:first-child { margin-top: 0; }
268
+ .callout-body > *:last-child { margin-bottom: 0; }
269
+ .callout-body p { margin: 0.25em 0; }
270
+
271
+ .callout-body code {
272
+ font-size: 0.9em;
273
+ padding: 0.15em 0.4em;
274
+ border-radius: 4px;
275
+ background-color: rgba(0, 0, 0, 0.06);
276
+ }
277
+
278
+ .callout-body pre {
279
+ margin: 0.4em 0;
280
+ padding: 8px 10px;
281
+ border-radius: 4px;
282
+ background-color: rgba(0, 0, 0, 0.04);
283
+ overflow-x: auto;
284
+ }
285
+
286
+ .callout-body pre code {
287
+ padding: 0;
288
+ background: none;
289
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
290
+ font-size: 0.9375em;
291
+ }
292
+
293
+ .callout-body ul,
294
+ .callout-body ol {
295
+ padding-left: 1.3em;
296
+ margin: 0.25em 0;
297
+ }
298
+
299
+ .callout-body li { margin: 0.1em 0; }
300
+
301
+ .callout-body a {
302
+ color: var(--callout-color);
303
+ text-decoration: underline;
304
+ text-underline-offset: 2px;
305
+ }
306
+
307
+ .callout-body a:hover { opacity: 0.85; }
308
+
309
+ /* ========================================================================
310
+ 7. Enhanced Blockquote
311
+ ======================================================================== */
312
+
313
+ .blockquote-enhanced {
314
+ margin: var(--blockquote-margin);
315
+ padding: 0;
316
+ }
317
+
318
+ .blockquote-enhanced blockquote {
319
+ position: relative;
320
+ margin: 0;
321
+ padding: var(--blockquote-padding);
322
+ border-left: 4px solid var(--blockquote-enhanced-border);
323
+ background-color: var(--blockquote-enhanced-bg);
324
+ border-radius: 0;
325
+ color: var(--blockquote-enhanced-color);
326
+ font-style: italic;
327
+ line-height: 1.5;
328
+ }
329
+
330
+ .blockquote-enhanced blockquote > *:first-child { margin-top: 0; }
331
+ .blockquote-enhanced blockquote > *:last-child { margin-bottom: 0; }
332
+ .blockquote-enhanced blockquote p { margin: 0.2em 0; }
333
+
334
+ /* ========================================================================
335
+ 8. Collapsible Callout (<details>/<summary>)
336
+ ======================================================================== */
337
+
338
+ .callout.collapsible { cursor: pointer; }
339
+
340
+ .callout.collapsible > summary {
341
+ display: flex;
342
+ align-items: center;
343
+ gap: 8px;
344
+ font-weight: 700;
345
+ font-size: var(--callout-title-font-size);
346
+ line-height: 1.3;
347
+ color: var(--callout-color);
348
+ user-select: none;
349
+ list-style: none;
350
+ padding: 0;
351
+ }
352
+
353
+ .callout.collapsible > summary::-webkit-details-marker { display: none; }
354
+ .callout.collapsible > summary::marker { display: none; content: ""; }
355
+
356
+ .callout.collapsible > summary::after {
357
+ content: "";
358
+ margin-left: auto;
359
+ width: 6px;
360
+ height: 6px;
361
+ border-right: 1.5px solid currentColor;
362
+ border-bottom: 1.5px solid currentColor;
363
+ transform: rotate(45deg);
364
+ transition: transform 0.2s ease;
365
+ flex-shrink: 0;
366
+ }
367
+
368
+ .callout.collapsible[open] > summary::after {
369
+ transform: rotate(-135deg);
370
+ }
371
+
372
+ .callout.collapsible > .callout-body {
373
+ animation: callout-fade-in 0.15s ease-out;
374
+ }
375
+
376
+ /* ========================================================================
377
+ 9. Disclosure Widget
378
+ ======================================================================== */
379
+
380
+ .disclosure {
381
+ margin: 16px 0;
382
+ border: 1px solid var(--disclosure-border);
383
+ border-left: 4px solid var(--disclosure-border);
384
+ border-radius: var(--disclosure-radius);
385
+ background: var(--disclosure-bg);
386
+ overflow: hidden;
387
+ }
388
+
389
+ .disclosure > summary {
390
+ display: flex;
391
+ align-items: center;
392
+ gap: 6px;
393
+ padding: var(--disclosure-padding);
394
+ font-weight: 700;
395
+ font-size: var(--disclosure-title-font-size);
396
+ line-height: 1.3;
397
+ color: var(--disclosure-title-color);
398
+ cursor: pointer;
399
+ user-select: none;
400
+ list-style: none;
401
+ transition: background-color 0.15s ease;
402
+ }
403
+
404
+ .disclosure > summary:hover {
405
+ background-color: rgba(0, 0, 0, 0.03);
406
+ }
407
+
408
+ .disclosure > summary::-webkit-details-marker { display: none; }
409
+ .disclosure > summary::marker { display: none; content: ""; }
410
+
411
+ .disclosure > summary::before {
412
+ content: "";
413
+ flex-shrink: 0;
414
+ width: 6px;
415
+ height: 6px;
416
+ border-right: 1.5px solid currentColor;
417
+ border-bottom: 1.5px solid currentColor;
418
+ transform: rotate(45deg);
419
+ transition: transform 0.2s ease;
420
+ }
421
+
422
+ .disclosure[open] > summary::before {
423
+ transform: rotate(-135deg);
424
+ }
425
+
426
+ .disclosure-title {
427
+ display: flex;
428
+ align-items: center;
429
+ gap: 6px;
430
+ padding: var(--disclosure-padding);
431
+ font-weight: 700;
432
+ font-size: var(--disclosure-title-font-size);
433
+ line-height: 1.3;
434
+ color: var(--disclosure-title-color);
435
+ user-select: none;
436
+ list-style: none;
437
+ }
438
+
439
+ .disclosure-body {
440
+ padding: 0 var(--disclosure-padding) var(--disclosure-padding);
441
+ font-size: var(--disclosure-body-font-size);
442
+ line-height: 1.5;
443
+ color: var(--disclosure-body-color);
444
+ animation: callout-fade-in 0.15s ease-out;
445
+ }
446
+
447
+ .disclosure-body > *:first-child { margin-top: 0; }
448
+ .disclosure-body > *:last-child { margin-bottom: 0; }
449
+ .disclosure-body p { margin: 0.25em 0; }
450
+
451
+ .disclosure-body code {
452
+ font-size: 0.9em;
453
+ padding: 0.15em 0.4em;
454
+ border-radius: 4px;
455
+ background-color: rgba(0, 0, 0, 0.06);
456
+ }
457
+
458
+ .disclosure-body pre {
459
+ margin: 0.4em 0;
460
+ padding: 8px 10px;
461
+ border-radius: 4px;
462
+ background-color: rgba(0, 0, 0, 0.04);
463
+ overflow-x: auto;
464
+ }
465
+
466
+ .disclosure-body pre code {
467
+ padding: 0;
468
+ background: none;
469
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
470
+ font-size: 0.9375em;
471
+ }
472
+
473
+ .disclosure-body ul,
474
+ .disclosure-body ol {
475
+ padding-left: 1.3em;
476
+ margin: 0.25em 0;
477
+ }
478
+
479
+ .disclosure-body li { margin: 0.1em 0; }
480
+
481
+ /* ========================================================================
482
+ 10. Accordion
483
+ ======================================================================== */
484
+
485
+ .disclosure-accordion {
486
+ margin: 16px 0;
487
+ border: 1px solid var(--disclosure-border);
488
+ border-radius: var(--disclosure-radius);
489
+ overflow: hidden;
490
+ }
491
+
492
+ .disclosure-accordion > .disclosure {
493
+ margin: 0;
494
+ border: none;
495
+ border-radius: 0;
496
+ }
497
+
498
+ .disclosure-accordion > .disclosure + .disclosure {
499
+ border-top: 1px solid var(--disclosure-border);
500
+ }
501
+
502
+ .disclosure-accordion > .disclosure > summary:hover {
503
+ background-color: rgba(0, 0, 0, 0.04);
504
+ }
505
+
506
+ /* ========================================================================
507
+ 11. Tree View
508
+ ======================================================================== */
509
+
510
+ .disclosure-tree {
511
+ margin-left: 16px;
512
+ border-left: 2px solid var(--disclosure-border);
513
+ border-top: none;
514
+ border-right: none;
515
+ border-bottom: none;
516
+ border-radius: 0;
517
+ }
518
+
519
+ .disclosure-tree > summary {
520
+ padding-left: calc(var(--disclosure-padding) + 4px);
521
+ }
522
+
523
+ .disclosure[data-depth="1"] { margin-left: 16px; }
524
+ .disclosure[data-depth="2"] { margin-left: 32px; }
525
+ .disclosure[data-depth="3"] { margin-left: 48px; }
526
+ .disclosure[data-depth="4"] { margin-left: 64px; }
527
+ .disclosure[data-depth="5"] { margin-left: 80px; }
528
+
529
+ .disclosure[data-depth] > summary::after {
530
+ content: "";
531
+ position: absolute;
532
+ left: -16px;
533
+ top: 50%;
534
+ width: 12px;
535
+ height: 0;
536
+ border-top: 2px solid var(--disclosure-border);
537
+ }
538
+
539
+ .disclosure[data-depth] > summary {
540
+ position: relative;
541
+ }
542
+
543
+ .disclosure-tree .disclosure-body {
544
+ border-left: 2px solid var(--disclosure-border);
545
+ margin-left: 8px;
546
+ padding-left: calc(var(--disclosure-padding) + 4px);
547
+ }
548
+
549
+ /* ========================================================================
550
+ 12. Animations
551
+ ======================================================================== */
552
+
553
+ @keyframes callout-fade-in {
554
+ from { opacity: 0; transform: translateY(4px); }
555
+ to { opacity: 1; transform: translateY(0); }
556
+ }
557
+
558
+ .callout { animation: callout-fade-in 0.25s ease-out; }
559
+
560
+ @media (prefers-reduced-motion: reduce) {
561
+ .callout { animation: none; }
562
+ .disclosure > .disclosure-body { animation: none; }
563
+ }
564
+
565
+ /* ========================================================================
566
+ 13. Print Styles
567
+ ======================================================================== */
568
+
569
+ @media print {
570
+ .callout { box-shadow: none; break-inside: avoid; }
571
+ .blockquote-enhanced blockquote { background: none; border-left-width: 2px; }
572
+ .disclosure { border-width: 1px; }
573
+ .disclosure-accordion { border-width: 1px; }
574
+ .disclosure-tree { border-left-width: 1px; }
575
+ }
576
+
577
+ /* ========================================================================
578
+ 14. Inline Callouts (v1.3.0+)
579
+ ======================================================================== */
580
+
581
+ .callout-inline {
582
+ float: left;
583
+ width: var(--callout-inline-width, 50%);
584
+ margin: 0 1em 1em 0;
585
+ clear: left;
586
+ }
587
+
588
+ .callout-inline-end {
589
+ float: right;
590
+ width: var(--callout-inline-width, 50%);
591
+ margin: 0 0 1em 1em;
592
+ clear: right;
593
+ }
594
+
595
+ @media (max-width: 768px) {
596
+ .callout-inline,
597
+ .callout-inline-end {
598
+ float: none;
599
+ width: 100%;
600
+ margin: 1em 0;
601
+ clear: both;
602
+ }
603
+ }
package/dist/types.d.ts CHANGED
@@ -304,6 +304,69 @@ export interface RemakeBlocksOptions {
304
304
  * @default undefined (use built-in renderer)
305
305
  */
306
306
  build?: (parsed: ParsedCallout, config: CalloutConfig | undefined, bodyHtml: string, options: Required<RemakeBlocksOptions>) => string;
307
+ /**
308
+ * v1.3.0+: Enable `:::type[Title]` directive syntax (Starlight/Docusaurus compat).
309
+ *
310
+ * When `true`, the plugin detects `:::type` blocks in markdown and renders
311
+ * them as callouts. This allows content portability with Starlight, Docusaurus,
312
+ * MkDocs Material, and other tools that use the directive syntax.
313
+ *
314
+ * Supported syntax:
315
+ * - `:::note` ... `:::` — basic callout
316
+ * - `:::note[Custom Title]` ... `:::` — with custom title
317
+ * - `:::note{fold=-}` ... `:::` — with overrides (same as `> [!NOTE]-`)
318
+ * - `::::note` ... `::::` — 4-colon variant (for nesting)
319
+ * - `:::note[Title]{#my-id .custom-class data-type="example"}` — v1.4.0+ full attributes
320
+ *
321
+ * The directive syntax can be used alongside the standard `> [!NOTE]` syntax.
322
+ *
323
+ * @default false (opt-in for backward compatibility)
324
+ */
325
+ enableDirectiveSyntax?: boolean;
326
+ /**
327
+ * v1.4.0+: Internationalization (i18n) label overrides.
328
+ *
329
+ * Override the default title for any callout type. Useful for non-English
330
+ * documentation sites where you want "Note" to display as "注意", "Hinweis",
331
+ * "メモ", etc.
332
+ *
333
+ * Keys are callout type names (lowercase). Values are the replacement title.
334
+ * Applies to ALL 27 builtin types AND custom callout types.
335
+ *
336
+ * @example
337
+ * ```ts
338
+ * remakeBlocks({
339
+ * labels: {
340
+ * note: "注意",
341
+ * tip: "ヒント",
342
+ * warning: "警告",
343
+ * caution: "危険",
344
+ * important: "重要",
345
+ * }
346
+ * })
347
+ * ```
348
+ *
349
+ * @default undefined (use built-in English titles)
350
+ */
351
+ labels?: Record<string, string>;
352
+ /**
353
+ * v1.4.0+: Enable MkDocs Material admonition syntax (`!!!` / `???` / `???+`).
354
+ *
355
+ * When `true`, the plugin detects MkDocs-style admonition syntax and renders
356
+ * them as callouts. This enables content portability with MkDocs Material.
357
+ *
358
+ * Supported syntax:
359
+ * - `!!! note` ... — non-collapsible callout
360
+ * - `??? note` ... — collapsed callout (same as `> [!NOTE]-`)
361
+ * - `???+ note` ... — expanded collapsible callout (same as `> [!NOTE]+`)
362
+ * - `!!! note "Custom Title"` — with custom title
363
+ * - `!!! note ""` — no title (strips default)
364
+ *
365
+ * The body is indented 4 spaces under the directive.
366
+ *
367
+ * @default false (opt-in for backward compatibility)
368
+ */
369
+ enableMkDocsSyntax?: boolean;
307
370
  }
308
371
  /**
309
372
  * Options for the `remake-blocks` Astro integration.
@@ -341,6 +404,16 @@ export interface ParsedCallout {
341
404
  overrides?: {
342
405
  icon?: boolean;
343
406
  appearance?: "default" | "minimal" | "simple" | "hidden";
407
+ /** v1.3.0+: inline floating behavior. `inline` floats left, `inline-end` floats right. */
408
+ inline?: "inline" | "inline-end";
409
+ /** v1.4.0+: per-callout named icon (e.g. "rocket" → Lucide rocket icon). */
410
+ iconName?: string;
411
+ };
412
+ /** v1.4.0+: directive attributes parsed from `{#id .class key="value"}` syntax. */
413
+ directiveAttrs?: {
414
+ id?: string;
415
+ classes?: string[];
416
+ attrs?: Record<string, string>;
344
417
  };
345
418
  }
346
419
  /**