@markdstage/markdstage 0.1.3 → 2.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.
@@ -389,6 +389,8 @@ footer .page{color:var(--accent-strong);font-weight:600;background:var(--accent-
389
389
  opacity:.45;transition:opacity .2s ease;}
390
390
  .nav:hover,.nav:focus-within{opacity:1;}
391
391
  @media (prefers-reduced-motion:reduce){.nav{transition:none;}}
392
+ .nav-main{display:flex;align-items:center;gap:.4em;}
393
+ .nav-tools{position:relative;display:flex;align-items:center;}
392
394
  .nav-btn{display:inline-flex;align-items:center;justify-content:center;
393
395
  min-width:2em;height:2em;padding:0 .55em;
394
396
  font-size:clamp(13px,1.9vh,17px);line-height:1;cursor:pointer;
@@ -400,10 +402,37 @@ footer .page{color:var(--accent-strong);font-weight:600;background:var(--accent-
400
402
  .nav-btn:disabled{opacity:.32;cursor:default;}
401
403
  .nav-btn[data-state="active"]{color:var(--accent-strong);background:var(--accent-soft);}
402
404
  .nav-btn[data-state="error"]{color:#d13438;}
403
- .nav-fixed-preview{min-width:3.25em;font-size:clamp(11px,1.55vh,14px);font-weight:700;}
405
+ .nav-more-toggle{position:relative;}
406
+ .nav-more-toggle[data-state]::after{content:"";position:absolute;right:.22em;top:.22em;
407
+ width:.38em;height:.38em;border-radius:50%;background:transparent;}
408
+ .nav-more-toggle[data-state="active"]::after{background:var(--accent-strong);}
409
+ .nav-more-toggle[data-state="error"]::after{background:#d13438;}
404
410
  .nav-counter{min-width:4.2em;text-align:center;font-variant-numeric:tabular-nums;
405
411
  font-weight:600;color:var(--accent-strong);font-size:clamp(12px,1.7vh,16px);
406
412
  padding:0 .3em;user-select:none;}
413
+ .nav-more-panel[hidden],.nav-more-group[hidden]{display:none;}
414
+ .nav-more-panel{position:absolute;left:50%;bottom:calc(100% + .65em);transform:translateX(-50%);
415
+ width:min(20em,calc(100vw - 24px));max-height:min(70vh,32em);overflow:auto;
416
+ display:grid;gap:.7em;padding:.7em;border:1px solid var(--border);border-radius:12px;
417
+ color:var(--fg);background:color-mix(in srgb,var(--surface) 96%,transparent);
418
+ box-shadow:0 12px 34px rgba(0,0,0,.3);}
419
+ .nav-more-group{display:grid;gap:.18em;}
420
+ .nav-more-title{padding:.2em .65em;color:var(--muted);font-size:.72em;font-weight:750;
421
+ letter-spacing:.06em;text-transform:uppercase;}
422
+ .nav-more-item{display:grid;grid-template-columns:2.8em minmax(0,1fr);align-items:center;
423
+ width:100%;min-height:2.55em;padding:.42em .65em;border:1px solid transparent;
424
+ border-radius:8px;color:var(--fg);background:transparent;font:inherit;text-align:left;
425
+ cursor:pointer;}
426
+ .nav-more-item[hidden]{display:none;}
427
+ .nav-more-item:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-strong);}
428
+ .nav-more-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
429
+ .nav-more-item:disabled{opacity:.4;cursor:default;}
430
+ .nav-more-item[data-state="active"]{color:var(--accent-strong);background:var(--accent-soft);}
431
+ .nav-more-item[data-state="error"]{color:#d13438;}
432
+ .nav-more-icon{display:inline-flex;align-items:center;justify-content:center;min-width:2.2em;
433
+ font-size:.95em;font-weight:700;}
434
+ .nav-more-icon.nav-fixed-preview{font-size:.72em;}
435
+ .nav-more-label{min-width:0;font-size:.88em;font-weight:600;line-height:1.25;}
407
436
  .layout-warning{position:fixed;top:14px;right:14px;z-index:55;
408
437
  max-width:min(420px,calc(100vw - 28px));padding:.55em .8em;border-radius:8px;
409
438
  color:#fff;background:#a4262c;border:1px solid #f1aeb5;
@@ -413,19 +442,25 @@ body.presenter-mode .nav{opacity:0;}
413
442
  body.presenter-mode .nav:hover,body.presenter-mode .nav:focus-within{opacity:1;}
414
443
  body.presenter-mode #navPresent{display:none;}
415
444
  body.presenter-mode #navPresenterView{display:none;}
416
- body.presenter-mode #navExport{display:none;}
445
+ body.presenter-mode #navExport,body.presenter-mode #navExportPptx{display:none;}
417
446
  body.presenter-mode #navImport{display:none;}
418
447
  body.presenter-mode #navSourceMode{display:none;}
419
448
  body.preview-mode .nav,body.preview-mode .overview{display:none!important;}
420
449
  /* When no deck is loaded, leave only the load button as the available action. */
421
- .nav.nav-empty > :not(#navImport){display:none;}
450
+ .nav.nav-empty .nav-main,.nav.nav-empty #navMore{display:none;}
451
+ .nav.nav-empty .nav-more-panel{position:static;display:block;width:auto;max-height:none;
452
+ overflow:visible;padding:0;border:0;border-radius:0;transform:none;background:transparent;
453
+ box-shadow:none;}
454
+ .nav.nav-empty .nav-more-group,.nav.nav-empty .nav-more-title,
455
+ .nav.nav-empty .nav-more-item{display:none;}
456
+ .nav.nav-empty .nav-more-group[data-nav-group="file"]{display:block;}
457
+ .nav.nav-empty #navImport{display:inline-flex;gap:.55em;width:auto;min-width:2.5em;height:2.5em;
458
+ padding:0 1em;}
422
459
  body.markdstage-empty .nav{
423
460
  opacity:1;padding:.42em;border-color:#3b4562;background:#151b2f;
424
461
  box-shadow:0 10px 30px rgba(0,0,0,.36);}
425
462
  body.markdstage-empty #navImport{
426
- width:auto;min-width:2.5em;height:2.5em;padding:0 1em;
427
463
  border-color:#ffb547;background:#ffb547;color:#0b1020;font-weight:750;}
428
- body.markdstage-empty #navImport::after{content:" Open Markdown";}
429
464
  body.markdstage-empty #navImport:hover{background:#ffd77a;color:#0b1020;}
430
465
 
431
466
  /* ===== Presenter view ===== */
@@ -566,7 +601,7 @@ body.fixed-output-mode .deck.backcover-slide{background:var(--backcover-bg,var(-
566
601
  body.fixed-output-mode .deck::before{position:absolute;}
567
602
  body.fixed-output-mode .body{overflow:hidden;}
568
603
  body.fixed-output-mode .kicker{font-size:12px;}
569
- body.fixed-output-mode img{max-height:346px;}
604
+ body.fixed-output-mode img:not(.theme-cover-background){max-height:346px;}
570
605
  body.fixed-output-mode pre.mermaid svg{max-height:317px;}
571
606
  body.fixed-output-mode .architecture-svg{max-height:504px;}
572
607
  body.fixed-output-mode footer{gap:.65em;font-size:11px;margin-top:16px;}
@@ -583,6 +618,46 @@ body.capture-mode .nav,body.capture-mode .overview,body.capture-mode .layout-war
583
618
  display:none!important;
584
619
  }
585
620
 
621
+ /* ===== Headless hybrid PowerPoint export =====
622
+ The complete deck is stacked at the same 1280x720 geometry as PDF output.
623
+ Native objects become transparent only after renderer.js has measured them,
624
+ leaving backgrounds, decoration, Mermaid, code, and other fallback artwork. */
625
+ html:has(body.pptx-mode),body.pptx-mode{width:1280px;height:auto;overflow:visible;}
626
+ body.pptx-mode{background:none;}
627
+ body.pptx-mode #stage{display:block;width:1280px;height:auto;}
628
+ body.pptx-mode .deck{display:flex;}
629
+ body.pptx-mode .nav,body.pptx-mode .overview,body.pptx-mode .layout-warning,
630
+ body.pptx-mode .mermaidTooltip{display:none!important;}
631
+ body.pptx-artwork-mode [data-pptx-native="text"],
632
+ body.pptx-artwork-mode [data-pptx-native="text"] *,
633
+ body.pptx-artwork-mode [data-pptx-native="table"],
634
+ body.pptx-artwork-mode [data-pptx-native="table"] *{
635
+ color:transparent!important;
636
+ -webkit-text-fill-color:transparent!important;
637
+ text-decoration-color:transparent!important;
638
+ caret-color:transparent!important;
639
+ }
640
+ body.pptx-artwork-mode li[data-pptx-native="text"]::marker{color:transparent!important;}
641
+ body.pptx-artwork-mode [data-pptx-native="table"]{visibility:hidden!important;}
642
+ body.pptx-artwork-mode img[data-pptx-native="image"]{
643
+ object-fit:none!important;
644
+ object-position:99999px 99999px!important;
645
+ }
646
+ body.pptx-artwork-mode svg [data-pptx-native="shape"],
647
+ body.pptx-artwork-mode svg [data-pptx-native="shape"] *,
648
+ body.pptx-artwork-mode svg [data-pptx-native="text"],
649
+ body.pptx-artwork-mode svg [data-pptx-native="text"] *,
650
+ body.pptx-artwork-mode svg [data-pptx-native="connector"],
651
+ body.pptx-artwork-mode svg [data-pptx-native="connector"] *,
652
+ body.pptx-artwork-mode svg [data-pptx-native="table"]{
653
+ fill:transparent!important;
654
+ stroke:transparent!important;
655
+ color:transparent!important;
656
+ -webkit-text-fill-color:transparent!important;
657
+ }
658
+ body.pptx-artwork-mode svg path[data-pptx-native="connector"]{marker-end:none!important;}
659
+ body.pptx-artwork-mode svg [data-pptx-native="image"]{opacity:0!important;}
660
+
586
661
  /* ===== Headless PDF export ===== */
587
662
  @page{size:13.333333in 7.5in;margin:0;}
588
663
  @media print{