rikiki-deck 0.6.0 → 0.7.2

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 (174) hide show
  1. package/.claude/skills/rikiki-debug/SKILL.md +17 -7
  2. package/.claude/skills/rikiki-deck/SKILL.md +362 -77
  3. package/.claude/skills/rikiki-theme/SKILL.md +1 -1
  4. package/README.md +69 -50
  5. package/bin/lib/assemble.mjs +154 -0
  6. package/bin/lib/box-geometry.mjs +66 -0
  7. package/bin/lib/browser.mjs +302 -0
  8. package/bin/lib/check-api.d.ts +28 -0
  9. package/bin/lib/check-api.mjs +6 -0
  10. package/bin/lib/check-plugins.mjs +228 -0
  11. package/bin/lib/check.mjs +1347 -0
  12. package/bin/lib/cli-error.mjs +26 -0
  13. package/bin/lib/component-deps.mjs +69 -0
  14. package/bin/lib/diff.mjs +275 -0
  15. package/bin/lib/export-pdf.mjs +65 -0
  16. package/bin/lib/graph-hit.mjs +86 -0
  17. package/bin/lib/inline.mjs +137 -39
  18. package/bin/lib/narrative.mjs +77 -0
  19. package/bin/lib/prune-icons.mjs +104 -0
  20. package/bin/lib/render.mjs +195 -0
  21. package/bin/lib/scan-external.mjs +126 -0
  22. package/bin/lib/starter.mjs +27 -14
  23. package/bin/lib/visual.mjs +120 -0
  24. package/bin/rikiki.mjs +420 -35
  25. package/dist/annotation-marks.d.ts +60 -0
  26. package/dist/annotation-marks.js +1 -0
  27. package/dist/bar-segments.d.ts +28 -0
  28. package/dist/bar-segments.js +1 -0
  29. package/dist/browser-location.d.ts +3 -0
  30. package/dist/browser-location.js +1 -0
  31. package/dist/cards-syntax.d.ts +31 -0
  32. package/dist/cards-syntax.js +6 -0
  33. package/dist/{plugins/click-stages.d.ts → click-stages.d.ts} +1 -1
  34. package/dist/deck-agenda.d.ts +25 -0
  35. package/dist/deck-agenda.js +6 -0
  36. package/dist/deck-annotate.d.ts +108 -0
  37. package/dist/deck-annotate.js +18 -0
  38. package/dist/deck-bar.d.ts +32 -0
  39. package/dist/deck-bar.js +19 -0
  40. package/dist/deck-bento.d.ts +38 -0
  41. package/dist/deck-bento.js +4 -0
  42. package/dist/{molecules/deck-callout.d.ts → deck-callout.d.ts} +2 -0
  43. package/dist/deck-callout.js +1 -1
  44. package/dist/deck-cell.d.ts +19 -0
  45. package/dist/deck-cell.js +1 -0
  46. package/dist/deck-checklist.d.ts +20 -0
  47. package/dist/deck-checklist.js +1 -0
  48. package/dist/{layouts/deck-cover.d.ts → deck-cover.d.ts} +8 -0
  49. package/dist/deck-cover.js +9 -6
  50. package/dist/deck-csv.d.ts +38 -0
  51. package/dist/deck-csv.js +15 -0
  52. package/dist/deck-feature-cards.js +2 -2
  53. package/dist/deck-feature.d.ts +18 -0
  54. package/dist/deck-feature.js +2 -2
  55. package/dist/deck-figure.d.ts +26 -0
  56. package/dist/deck-figure.js +8 -0
  57. package/dist/deck-fit.d.ts +14 -0
  58. package/dist/deck-fit.js +1 -0
  59. package/dist/deck-flow.d.ts +41 -0
  60. package/dist/deck-flow.js +7 -0
  61. package/dist/deck-graph.d.ts +92 -0
  62. package/dist/deck-graph.js +25 -0
  63. package/dist/deck-grid.js +1 -1
  64. package/dist/deck-icon.d.ts +20 -0
  65. package/dist/deck-icon.js +1 -0
  66. package/dist/{atoms/deck-kicker.d.ts → deck-kicker.d.ts} +5 -0
  67. package/dist/deck-kicker.js +1 -1
  68. package/dist/deck-kpi-grid.d.ts +26 -0
  69. package/dist/deck-kpi-grid.js +4 -0
  70. package/dist/deck-link.d.ts +21 -0
  71. package/dist/deck-link.js +1 -0
  72. package/dist/{molecules/deck-md.d.ts → deck-md.d.ts} +3 -0
  73. package/dist/deck-md.js +8 -3
  74. package/dist/deck-mermaid.js +15 -3
  75. package/dist/deck-outline.d.ts +50 -0
  76. package/dist/deck-outline.js +1 -0
  77. package/dist/deck-overview.js +53 -39
  78. package/dist/deck-persona.d.ts +31 -0
  79. package/dist/deck-persona.js +6 -0
  80. package/dist/deck-photo.js +1 -1
  81. package/dist/deck-point.d.ts +22 -0
  82. package/dist/deck-point.js +1 -0
  83. package/dist/deck-presenter.js +120 -48
  84. package/dist/deck-pull.d.ts +13 -0
  85. package/dist/deck-pull.js +1 -0
  86. package/dist/{atoms/deck-punch.d.ts → deck-punch.d.ts} +6 -0
  87. package/dist/deck-punch.js +1 -1
  88. package/dist/deck-quote.d.ts +28 -0
  89. package/dist/deck-quote.js +6 -0
  90. package/dist/{runtime/deck-root.d.ts → deck-root.d.ts} +88 -8
  91. package/dist/deck-root.js +17 -13
  92. package/dist/deck-section.js +2 -2
  93. package/dist/deck-source.d.ts +12 -0
  94. package/dist/deck-source.js +2 -0
  95. package/dist/deck-split.d.ts +30 -0
  96. package/dist/deck-split.js +5 -3
  97. package/dist/{molecules/deck-stat.d.ts → deck-stat.d.ts} +2 -0
  98. package/dist/deck-stat.js +2 -2
  99. package/dist/{molecules/deck-step-list.d.ts → deck-step-list.d.ts} +8 -0
  100. package/dist/deck-step-list.js +4 -2
  101. package/dist/deck-table.d.ts +26 -0
  102. package/dist/deck-table.js +1 -0
  103. package/dist/deck-takeaway.d.ts +18 -0
  104. package/dist/deck-takeaway.js +2 -2
  105. package/dist/deck-timeline.d.ts +37 -0
  106. package/dist/deck-timeline.js +5 -0
  107. package/dist/deck-transition.js +3 -3
  108. package/dist/deck-versus.d.ts +18 -0
  109. package/dist/deck-versus.js +9 -0
  110. package/dist/deep-link.d.ts +29 -0
  111. package/dist/deep-link.js +1 -0
  112. package/dist/escape-html.d.ts +3 -0
  113. package/dist/escape-html.js +1 -0
  114. package/dist/fit-controller.d.ts +27 -0
  115. package/dist/fit-controller.js +1 -0
  116. package/dist/graph-layout.d.ts +35 -0
  117. package/dist/graph-layout.js +1 -0
  118. package/dist/grid-tracks.d.ts +17 -0
  119. package/dist/grid-tracks.js +1 -0
  120. package/dist/icon-set.d.ts +6 -0
  121. package/dist/icon-set.js +1 -0
  122. package/dist/index.d.ts +37 -31
  123. package/dist/index.js +95 -49
  124. package/dist/keymap.d.ts +40 -0
  125. package/dist/keymap.js +1 -0
  126. package/dist/mouse-nav.d.ts +12 -0
  127. package/dist/mouse-nav.js +1 -0
  128. package/dist/navigation.d.ts +25 -0
  129. package/dist/navigation.js +1 -0
  130. package/dist/parse-csv.d.ts +9 -0
  131. package/dist/parse-csv.js +3 -0
  132. package/dist/shared-styles.js +1 -1
  133. package/dist/shiki.d.ts +8 -0
  134. package/dist/signature.d.ts +2 -0
  135. package/dist/signature.js +1 -0
  136. package/dist/slide-fill.d.ts +8 -0
  137. package/dist/slide-fill.js +1 -0
  138. package/dist/standalone.js +301 -169
  139. package/dist/vendor/THIRD-PARTY-NOTICES.txt +4347 -0
  140. package/dist/vendor/inventory.json +3029 -0
  141. package/dist/vendor/lit.js +62 -2
  142. package/dist/vendor/mermaid.min.js +95 -95
  143. package/dist/vendor/shiki.js +1 -57
  144. package/dist/viewport.d.ts +42 -0
  145. package/dist/viewport.js +1 -0
  146. package/docs/llms/rikiki-reference.md +955 -64
  147. package/docs/llms/rikiki-workflow.md +536 -0
  148. package/llms.txt +39 -12
  149. package/package.json +33 -12
  150. package/themes/rikiki.css +173 -47
  151. package/themes/siliceum.css +171 -51
  152. package/dist/layouts/deck-feature.d.ts +0 -11
  153. package/dist/layouts/deck-split.d.ts +0 -18
  154. package/dist/layouts/deck-takeaway.d.ts +0 -11
  155. package/dist/plugins/shiki.d.ts +0 -8
  156. /package/dist/{runtime/color.d.ts → color.d.ts} +0 -0
  157. /package/dist/{atoms/deck-badge.d.ts → deck-badge.d.ts} +0 -0
  158. /package/dist/{molecules/deck-card.d.ts → deck-card.d.ts} +0 -0
  159. /package/dist/{atoms/deck-code-highlighter.d.ts → deck-code-highlighter.d.ts} +0 -0
  160. /package/dist/{atoms/deck-code.d.ts → deck-code.d.ts} +0 -0
  161. /package/dist/{layouts/deck-feature-cards.d.ts → deck-feature-cards.d.ts} +0 -0
  162. /package/dist/{molecules/deck-grid.d.ts → deck-grid.d.ts} +0 -0
  163. /package/dist/{runtime/deck-help.d.ts → deck-help.d.ts} +0 -0
  164. /package/dist/{molecules/deck-mermaid.d.ts → deck-mermaid.d.ts} +0 -0
  165. /package/dist/{molecules/deck-metric.d.ts → deck-metric.d.ts} +0 -0
  166. /package/dist/{runtime/deck-notes.d.ts → deck-notes.d.ts} +0 -0
  167. /package/dist/{runtime/deck-overview.d.ts → deck-overview.d.ts} +0 -0
  168. /package/dist/{layouts/deck-photo.d.ts → deck-photo.d.ts} +0 -0
  169. /package/dist/{runtime/deck-presenter.d.ts → deck-presenter.d.ts} +0 -0
  170. /package/dist/{layouts/deck-section.d.ts → deck-section.d.ts} +0 -0
  171. /package/dist/{molecules/deck-shortcut.d.ts → deck-shortcut.d.ts} +0 -0
  172. /package/dist/{molecules/deck-stack.d.ts → deck-stack.d.ts} +0 -0
  173. /package/dist/{molecules/deck-tier-list.d.ts → deck-tier-list.d.ts} +0 -0
  174. /package/dist/{runtime/deck-transition.d.ts → deck-transition.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- var p=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var n=(o,t,i,a)=>{for(var e=a>1?void 0:a?v(t,i):t,l=o.length-1,s;l>=0;l--)(s=o[l])&&(e=(a?s(t,i,e):s(e))||e);return a&&e&&p(t,i,e),e};import{LitElement as x,html as f,css as h}from"./vendor/lit.js";import{customElement as u,property as b}from"./vendor/lit.js";import{css as d}from"./vendor/lit.js";var m=d`:host{display:none;position:absolute;inset:0;padding:var(--rik-slide-padding-y) var(--rik-slide-padding-x);flex-direction:column;overflow:hidden;background:var(--rik-surface-page);font-family:var(--rik-font-sans);color:var(--rik-text-default)}:host([active]){display:flex}`,k=d`h1{font-size:var(--rik-font-size-h1);font-weight:700;color:var(--rik-text-default);letter-spacing:-0.022em;line-height:1.15;margin-bottom:var(--rik-space-4);padding-bottom:var(--rik-space-2);border-bottom:3px solid var(--rik-accent);display:inline-block;align-self:flex-start;flex:0 0 auto}h1 .accent{color:var(--rik-accent)}::slotted(p),p{font-size:var(--rik-font-size-body);line-height:1.65;color:var(--rik-text-default--muted);margin:0}::slotted(strong),strong{color:var(--rik-text-default);font-weight:700}::slotted(code),code{font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono-sm);background:rgba(0,0,0,0.06);padding:2px 6px;border-radius:var(--rik-radius-sm);color:var(--rik-text-default)}`,g=d`.lbl{display:inline-block;padding:var(--deck-eyebrow-padding-y,4px) var(--deck-eyebrow-padding-x,12px);background:var(--deck-eyebrow-bg,var(--rik-accent));color:var(--deck-eyebrow-color,var(--rik-accent__on,var(--rik-surface-inverse)));border-radius:var(--deck-eyebrow-radius,var(--rik-radius-pill));font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:var(--rik-space-1);align-self:flex-start}.lead{font-size:var(--rik-font-size-lead);color:var(--rik-text-default--faint);line-height:1.5;margin-bottom:var(--rik-space-4);max-width:75ch;flex:0 0 auto}.kicker{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-3);display:block}.kicker.on-dark{color:rgba(255,255,255,0.35)}.caption{font-size:var(--rik-font-size-sm);color:var(--rik-text-default--faint);line-height:1.55}.caption.on-dark{color:rgba(255,255,255,0.5)}.col-label{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-2)}`,c=[m,k,g];var r=class extends x{render(){return f`${this.eyebrow?f`<span class="lbl">${this.eyebrow}</span>`:""}
1
+ var p=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var d=(o,r,i,a)=>{for(var e=a>1?void 0:a?v(r,i):r,l=o.length-1,s;l>=0;l--)(s=o[l])&&(e=(a?s(r,i,e):s(e))||e);return a&&e&&p(r,i,e),e};import{LitElement as h,html as f,css as x}from"./vendor/lit.js";import{customElement as b,property as u}from"./vendor/lit.js";import{css as n}from"./vendor/lit.js";var k=n`:host{display:none;position:absolute;inset:0;padding:var(--rik-slide-padding-y) var(--rik-slide-padding-x);flex-direction:column;overflow:hidden;background:var(--rik-surface-page);font-family:var(--rik-font-sans);color:var(--rik-text-default)}:host([active]){display:flex}.body,.col{justify-content:var(--_spread,var(--rik-slide-spread,center))}:host([fill]) .body > ::slotted(*),:host([fill]) .col > ::slotted(*){flex:1 1 0;min-height:0}:host([fill]) .body,:host([fill]) .col{justify-content:stretch}@media print{:host{display:flex;position:relative;inset:auto;width:calc(var(--deck-canvas-w,1920) * 1px);height:calc(var(--deck-canvas-h,1080) * 1px);break-inside:avoid;break-after:page;-webkit-print-color-adjust:exact;print-color-adjust:exact}:host(:last-child){break-after:auto}}`,m=n`h1{font-size:var(--rik-font-size-h1);font-weight:700;color:var(--rik-text-default);letter-spacing:-0.022em;line-height:1.15;margin-bottom:var(--rik-space-4);padding-bottom:var(--rik-space-2);border-bottom:3px solid var(--rik-accent);display:inline-block;align-self:flex-start;flex:0 0 auto}h1 .accent{color:var(--rik-accent)}::slotted(p),p{font-size:var(--rik-font-size-body);line-height:1.65;color:var(--rik-text-default--muted);margin:0}::slotted(strong),strong{color:var(--rik-text-default);font-weight:700}::slotted(code),code{font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono-sm);background:rgba(0,0,0,0.06);padding:2px 6px;border-radius:var(--rik-radius-sm);color:var(--rik-text-default)}`,g=n`.lbl{display:inline-block;padding:var(--deck-eyebrow-padding-y,0) var(--deck-eyebrow-padding-x,0);background:var(--deck-eyebrow-bg,transparent);color:var(--deck-eyebrow-color,var(--rik-accent__text));border-radius:var(--deck-eyebrow-radius,0);font-size:var(--rik-font-size-body);font-weight:600;margin-bottom:var(--rik-space-1);align-self:flex-start}.lead{font-size:var(--rik-font-size-lead);color:var(--rik-text-default--faint);line-height:1.5;margin-bottom:var(--rik-space-4);max-width:75ch;flex:0 0 auto}.kicker{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-3);display:block}.kicker.on-dark{color:rgba(255,255,255,0.35)}.caption{font-size:var(--rik-font-size-sm);color:var(--rik-text-default--faint);line-height:1.55}.caption.on-dark{color:rgba(255,255,255,0.5)}.col-label{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-2)}`,c=[k,m,g];var t=class extends h{render(){return f`${this.eyebrow?f`<span class="lbl">${this.eyebrow}</span>`:""}
2
2
  <slot name="title"></slot>
3
3
  <slot name="lead"></slot>
4
4
  <div class="hero" part="hero"><slot></slot></div>
@@ -6,4 +6,4 @@ var p=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var n=(o,t,i,a
6
6
  <div class="col"><slot name="left"></slot></div>
7
7
  <div class="col"><slot name="right"></slot></div>
8
8
  </div>
9
- `}};r.styles=[...c,h`:host{justify-content:flex-start}.hero{flex:var(--deck-feature-cards-hero-flex,1 1 50%);min-height:0;display:flex;flex-direction:column;overflow:hidden}::slotted(deck-code),::slotted(deck-mermaid),::slotted(pre),::slotted(table),::slotted(svg){max-height:100%;flex:1 1 auto}.detail{flex:var(--deck-feature-cards-detail-flex,0 1 40%);min-height:0;margin-top:var(--deck-feature-cards-gap,var(--rik-space-3));display:grid;grid-template-columns:1fr 1fr;gap:var(--deck-feature-cards-col-gap,var(--rik-space-4));overflow:hidden}.col{display:flex;flex-direction:column;gap:var(--rik-space-2);min-width:0;min-height:0;overflow:hidden}`],n([b({type:String})],r.prototype,"eyebrow",2),r=n([u("deck-feature-cards")],r);export{r as DeckFeatureCards};
9
+ `}};t.styles=[...c,x`:host{justify-content:flex-start}.hero{flex:var(--deck-feature-cards-hero-flex,0 1 auto);min-height:0;display:flex;flex-direction:column;overflow:hidden}::slotted(deck-code),::slotted(deck-mermaid),::slotted(pre),::slotted(table),::slotted(svg){max-height:100%;flex:1 1 auto}.detail{flex:var(--deck-feature-cards-detail-flex,1 1 auto);min-height:0;margin-top:var(--deck-feature-cards-gap,var(--rik-space-3));display:grid;grid-template-columns:1fr 1fr;gap:var(--deck-feature-cards-col-gap,var(--rik-space-4));overflow:hidden}.col{display:flex;flex-direction:column;justify-content:flex-start;gap:var(--rik-space-2);min-width:0;min-height:0;overflow:hidden}`],d([u({type:String})],t.prototype,"eyebrow",2),t=d([b("deck-feature-cards")],t);export{t as DeckFeatureCards};
@@ -0,0 +1,18 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class DeckFeature extends LitElement {
3
+ static styles: import("lit").CSSResult[];
4
+ eyebrow?: string;
5
+ /** Distribute the leftover vertical space of the body ·
6
+ * `between` / `around` / `evenly` / `center` / `end` / `start` (default). */
7
+ spread?: string;
8
+ /** Let the body's blocks take the leftover height instead of distributing it
9
+ * around them · pair with a `<deck-fit>` child to grow its text into it. */
10
+ fill: boolean;
11
+ willUpdate(): void;
12
+ render(): import("lit-html").TemplateResult<1>;
13
+ }
14
+ declare global {
15
+ interface HTMLElementTagNameMap {
16
+ 'deck-feature': DeckFeature;
17
+ }
18
+ }
@@ -1,5 +1,5 @@
1
- var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var n=(a,r,i,o)=>{for(var e=o>1?void 0:o?k(r,i):r,s=a.length-1,l;s>=0;s--)(l=a[s])&&(e=(o?l(r,i,e):l(e))||e);return o&&e&&p(r,i,e),e};import{LitElement as x,html as f,css as b}from"./vendor/lit.js";import{customElement as h,property as u}from"./vendor/lit.js";import{css as d}from"./vendor/lit.js";var m=d`:host{display:none;position:absolute;inset:0;padding:var(--rik-slide-padding-y) var(--rik-slide-padding-x);flex-direction:column;overflow:hidden;background:var(--rik-surface-page);font-family:var(--rik-font-sans);color:var(--rik-text-default)}:host([active]){display:flex}`,v=d`h1{font-size:var(--rik-font-size-h1);font-weight:700;color:var(--rik-text-default);letter-spacing:-0.022em;line-height:1.15;margin-bottom:var(--rik-space-4);padding-bottom:var(--rik-space-2);border-bottom:3px solid var(--rik-accent);display:inline-block;align-self:flex-start;flex:0 0 auto}h1 .accent{color:var(--rik-accent)}::slotted(p),p{font-size:var(--rik-font-size-body);line-height:1.65;color:var(--rik-text-default--muted);margin:0}::slotted(strong),strong{color:var(--rik-text-default);font-weight:700}::slotted(code),code{font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono-sm);background:rgba(0,0,0,0.06);padding:2px 6px;border-radius:var(--rik-radius-sm);color:var(--rik-text-default)}`,g=d`.lbl{display:inline-block;padding:var(--deck-eyebrow-padding-y,4px) var(--deck-eyebrow-padding-x,12px);background:var(--deck-eyebrow-bg,var(--rik-accent));color:var(--deck-eyebrow-color,var(--rik-accent__on,var(--rik-surface-inverse)));border-radius:var(--deck-eyebrow-radius,var(--rik-radius-pill));font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:var(--rik-space-1);align-self:flex-start}.lead{font-size:var(--rik-font-size-lead);color:var(--rik-text-default--faint);line-height:1.5;margin-bottom:var(--rik-space-4);max-width:75ch;flex:0 0 auto}.kicker{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-3);display:block}.kicker.on-dark{color:rgba(255,255,255,0.35)}.caption{font-size:var(--rik-font-size-sm);color:var(--rik-text-default--faint);line-height:1.55}.caption.on-dark{color:rgba(255,255,255,0.5)}.col-label{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-2)}`,c=[m,v,g];var t=class extends x{render(){return f`${this.eyebrow?f`<span class="lbl">${this.eyebrow}</span>`:""}
1
+ var g=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var a=(o,e,s,i)=>{for(var r=i>1?void 0:i?k(e,s):e,l=o.length-1,n;l>=0;l--)(n=o[l])&&(r=(i?n(e,s,r):n(r))||r);return i&&r&&g(e,s,r),r};import{LitElement as u,html as v,css as y}from"./vendor/lit.js";import{customElement as w,property as c}from"./vendor/lit.js";import{css as d}from"./vendor/lit.js";var m=d`:host{display:none;position:absolute;inset:0;padding:var(--rik-slide-padding-y) var(--rik-slide-padding-x);flex-direction:column;overflow:hidden;background:var(--rik-surface-page);font-family:var(--rik-font-sans);color:var(--rik-text-default)}:host([active]){display:flex}.body,.col{justify-content:var(--_spread,var(--rik-slide-spread,center))}:host([fill]) .body > ::slotted(*),:host([fill]) .col > ::slotted(*){flex:1 1 0;min-height:0}:host([fill]) .body,:host([fill]) .col{justify-content:stretch}@media print{:host{display:flex;position:relative;inset:auto;width:calc(var(--deck-canvas-w,1920) * 1px);height:calc(var(--deck-canvas-h,1080) * 1px);break-inside:avoid;break-after:page;-webkit-print-color-adjust:exact;print-color-adjust:exact}:host(:last-child){break-after:auto}}`,h=d`h1{font-size:var(--rik-font-size-h1);font-weight:700;color:var(--rik-text-default);letter-spacing:-0.022em;line-height:1.15;margin-bottom:var(--rik-space-4);padding-bottom:var(--rik-space-2);border-bottom:3px solid var(--rik-accent);display:inline-block;align-self:flex-start;flex:0 0 auto}h1 .accent{color:var(--rik-accent)}::slotted(p),p{font-size:var(--rik-font-size-body);line-height:1.65;color:var(--rik-text-default--muted);margin:0}::slotted(strong),strong{color:var(--rik-text-default);font-weight:700}::slotted(code),code{font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono-sm);background:rgba(0,0,0,0.06);padding:2px 6px;border-radius:var(--rik-radius-sm);color:var(--rik-text-default)}`,b=d`.lbl{display:inline-block;padding:var(--deck-eyebrow-padding-y,0) var(--deck-eyebrow-padding-x,0);background:var(--deck-eyebrow-bg,transparent);color:var(--deck-eyebrow-color,var(--rik-accent__text));border-radius:var(--deck-eyebrow-radius,0);font-size:var(--rik-font-size-body);font-weight:600;margin-bottom:var(--rik-space-1);align-self:flex-start}.lead{font-size:var(--rik-font-size-lead);color:var(--rik-text-default--faint);line-height:1.5;margin-bottom:var(--rik-space-4);max-width:75ch;flex:0 0 auto}.kicker{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-3);display:block}.kicker.on-dark{color:rgba(255,255,255,0.35)}.caption{font-size:var(--rik-font-size-sm);color:var(--rik-text-default--faint);line-height:1.55}.caption.on-dark{color:rgba(255,255,255,0.5)}.col-label{font-size:var(--rik-font-size-xs);font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--rik-text-default--faint);margin-bottom:var(--rik-space-2)}`,f=[m,h,b];var x=new Map([["start","flex-start"],["center","center"],["end","flex-end"],["between","space-between"],["around","space-around"],["evenly","space-evenly"]]);function p(o){let e=(o??"").trim().toLowerCase();return e===""||e==="theme"?"":x.get(e)??""}var t=class extends u{constructor(){super(...arguments);this.fill=!1}willUpdate(){this.style.setProperty("--_spread",p(this.spread??null))}render(){return v`${this.eyebrow?v`<span class="lbl">${this.eyebrow}</span>`:""}
2
2
  <slot name="title"></slot>
3
3
  <slot name="lead"></slot>
4
4
  <div class="body" part="body"><slot></slot></div>
5
- `}};t.styles=[...c,b`:host{justify-content:flex-start}.body{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;gap:var(--rik-space-3);overflow:hidden}::slotted(deck-code:not([nested])),::slotted(deck-mermaid),::slotted(table),::slotted(pre),::slotted(svg),::slotted(.hero-main){max-height:100%;flex:0 1 auto}`],n([u({type:String})],t.prototype,"eyebrow",2),t=n([h("deck-feature")],t);export{t as DeckFeature};
5
+ `}};t.styles=[...f,y`:host{justify-content:flex-start}.body{flex:1;min-height:0;display:flex;flex-direction:column;gap:var(--rik-space-3);overflow:hidden}::slotted(deck-code:not([nested])),::slotted(deck-mermaid),::slotted(table),::slotted(pre),::slotted(svg),::slotted(.hero-main){max-height:100%;flex:0 1 auto}`],a([c({type:String})],t.prototype,"eyebrow",2),a([c({type:String,reflect:!0})],t.prototype,"spread",2),a([c({type:Boolean,reflect:!0})],t.prototype,"fill",2),t=a([w("deck-feature")],t);export{t as DeckFeature};
@@ -0,0 +1,26 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class DeckFigure extends LitElement {
3
+ static styles: import("lit").CSSResult[];
4
+ /** Image URL. */
5
+ src?: string;
6
+ /** Text alternative. Required unless `decorative` is present. */
7
+ alt?: string;
8
+ /** Declare that the image conveys no information. Produces alt="". */
9
+ decorative: boolean;
10
+ /** Concise explanation displayed below the image. */
11
+ caption?: string;
12
+ /** Source or credit displayed beside the caption. */
13
+ source?: string;
14
+ /** Optional URL for the source or credit. */
15
+ sourceHref?: string;
16
+ private get _hasCaption();
17
+ private get _hasSource();
18
+ private get _imageAlt();
19
+ updated(): void;
20
+ render(): import("lit-html").TemplateResult<1>;
21
+ }
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ 'deck-figure': DeckFigure;
25
+ }
26
+ }
@@ -0,0 +1,8 @@
1
+ var g=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var e=(d,o,i,n)=>{for(var t=n>1?void 0:n?u(o,i):o,l=d.length-1,p;l>=0;l--)(p=d[l])&&(t=(n?p(o,i,t):p(t))||t);return n&&t&&g(o,i,t),t};import{LitElement as h,css as v,html as s,nothing as c}from"./vendor/lit.js";import{customElement as k,property as a}from"./vendor/lit.js";import{css as f}from"./vendor/lit.js";var m=f`.mass{background:var(--rik-extras-mass,var(--rik-surface-inverse));color:var(--rik-extras-mass-text,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm)}.statement{font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-extras-statement,var(--rik-font-size-mega));font-weight:800;line-height:0.95;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.reading{font-family:var(--rik-font-sans);font-size:var(--rik-extras-reading,var(--rik-font-size-body));font-weight:400;line-height:1.35;max-width:62ch}.quiet{color:var(--rik-extras-quiet,var(--rik-text-default--muted))}.edge{border:0;border-top:1px solid var(--rik-extras-edge,var(--rik-border-default));margin:0}@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}`;var r=class extends h{constructor(){super(...arguments);this.decorative=!1}get _hasCaption(){return!!(this.caption||this.source||this.querySelector('[slot="caption"], [slot="source"]'))}get _hasSource(){return!!(this.source||this.querySelector('[slot="source"]'))}get _imageAlt(){if(this.decorative)return"";let i=this.alt?.trim();return i||c}updated(){this.toggleAttribute("data-missing-alt",!this.decorative&&!this.alt?.trim())}render(){return s`<figure part="figure"> <div class="media" part="media"> ${this.src?s`<img part="image" src=${this.src} alt=${this._imageAlt} />`:s`<slot name="image"></slot>`}
2
+ </div>
3
+ ${this._hasCaption?s`<figcaption part="caption"> <span class="caption"><slot name="caption">${this.caption??""}</slot></span> ${this._hasSource?s`<deck-source part="source" href=${this.sourceHref??c}
4
+ ><slot name="source">${this.source??""}</slot></deck-source
5
+ >`:c}
6
+ </figcaption>`:c}
7
+ </figure>
8
+ `}};r.styles=[m,v`:host{display:block;min-width:0;min-height:0;font-family:var(--rik-font-sans)}figure{display:flex;flex-direction:column;gap:var(--deck-figure-gap,var(--rik-space-2));min-width:0;min-height:0;margin:0}.media{display:flex;min-height:0;overflow:hidden;border:1px solid var(--deck-figure-border,var(--rik-border-default));border-radius:var(--deck-figure-radius,var(--rik-radius-md));background:var(--deck-figure-bg,var(--rik-surface-raised))}img{display:block;width:100%;max-height:var(--deck-figure-max-height,52cqh);object-fit:var(--deck-figure-image-fit,contain);object-position:var(--deck-figure-image-position,center)}figcaption{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:var(--rik-space-2) var(--rik-space-4);color:var(--deck-figure-caption-color,var(--rik-text-default--muted));font-size:var(--rik-font-size-sm);line-height:1.5}deck-source{--deck-source-color:var(--deck-figure-source-color,var(--rik-text-default--faint));--deck-source-gap:0}deck-source::part(source){white-space:nowrap}@media (max-width:640px){figcaption{grid-template-columns:1fr}deck-source::part(source){white-space:normal}}`],e([a({type:String})],r.prototype,"src",2),e([a({type:String})],r.prototype,"alt",2),e([a({type:Boolean,reflect:!0})],r.prototype,"decorative",2),e([a({type:String})],r.prototype,"caption",2),e([a({type:String})],r.prototype,"source",2),e([a({type:String,attribute:"source-href"})],r.prototype,"sourceHref",2),r=e([k("deck-figure")],r);export{r as DeckFigure};
@@ -0,0 +1,14 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class DeckFit extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ min?: number;
5
+ max?: number;
6
+ private fitter;
7
+ updated(): void;
8
+ render(): import("lit-html").TemplateResult<1>;
9
+ }
10
+ declare global {
11
+ interface HTMLElementTagNameMap {
12
+ 'deck-fit': DeckFit;
13
+ }
14
+ }
@@ -0,0 +1 @@
1
+ var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var m=(n,e,r,s)=>{for(var t=s>1?void 0:s?d(e,r):e,i=n.length-1,o;i>=0;i--)(o=n[i])&&(t=(s?o(e,r,t):o(t))||t);return s&&t&&c(e,r,t),t};import{LitElement as f,html as u,css as b}from"./vendor/lit.js";import{customElement as v,property as p}from"./vendor/lit.js";function a(n,e,r,s=.5){if(e<=n)return n;if(r(e))return e;let t=n,i=e;for(;i-t>s;){let o=(t+i)/2;r(o)?t=o:i=o}return t}var h=class{constructor(e,r={}){this.host=e;this.opts=r;e.addController(this)}hostConnected(){this.ro=new ResizeObserver(()=>this.refit()),this.ro.observe(this.host),this.refit(),document.fonts?.ready?.then(()=>{this.ro&&this.refit()})}hostDisconnected(){this.ro?.disconnect(),this.ro=void 0}refit(){let e=this.host;if(this.opts.enabled&&!this.opts.enabled()){e.style.removeProperty("font-size");return}if(e.clientWidth===0||e.clientHeight===0)return;let r=parseFloat(getComputedStyle(document.documentElement).fontSize)||16,s=(this.opts.minRem?.()??1)*r,t=(this.opts.maxRem?.()??12)*r,i=o=>(e.style.fontSize=`${o}px`,e.scrollWidth<=e.clientWidth&&e.scrollHeight<=e.clientHeight);e.style.fontSize=`${a(s,t,i)}px`}};var l=class extends f{constructor(){super(...arguments);this.fitter=new h(this,{minRem:()=>this.min??1,maxRem:()=>this.max??12})}updated(){this.fitter.refit()}render(){return u`<slot></slot>`}};l.styles=b`:host{display:block;width:100%;height:100%;overflow:hidden}`,m([p({type:Number})],l.prototype,"min",2),m([p({type:Number})],l.prototype,"max",2),l=m([v("deck-fit")],l);export{l as DeckFit};
@@ -0,0 +1,41 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class DeckFlow extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ cols?: string;
5
+ noConnectors: boolean;
6
+ /** Walk the chain one stage per step.
7
+ *
8
+ * This EMPHASISES, it does not hide: at step 0 the whole chain is visible
9
+ * and neutral, because the room needs to see the shape of the process
10
+ * before being walked through it. Hiding four stages behind four clicks
11
+ * tells the audience nothing while they wait. */
12
+ reveal: boolean;
13
+ willUpdate(): void;
14
+ connectedCallback(): void;
15
+ /** Called by deck-root on every step change. */
16
+ applyStep(step: number): void;
17
+ render(): import("lit-html").TemplateResult<1>;
18
+ }
19
+ export declare class DeckFlowStep extends LitElement {
20
+ static styles: import("lit").CSSResult[];
21
+ label?: string;
22
+ note?: string;
23
+ /** Position in the chain, written by deck-flow · the reader counts stages,
24
+ * and a number does that better than four identical icons. */
25
+ index?: string;
26
+ /** Kept for decks that set it · the chain is now plain by default, so this
27
+ * only stops the active stage from taking the block. */
28
+ plain: boolean;
29
+ /** Last in the chain · written by deck-flow. Nothing to point at. */
30
+ last: boolean;
31
+ /** Draw the connector to the next stage · written by deck-flow from its own
32
+ * no-connectors attribute, which declared the option and drew nothing. */
33
+ linked: boolean;
34
+ render(): import("lit-html").TemplateResult<1>;
35
+ }
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ 'deck-flow': DeckFlow;
39
+ 'deck-flow-step': DeckFlowStep;
40
+ }
41
+ }
@@ -0,0 +1,7 @@
1
+ var k=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var a=(p,l,e,t)=>{for(var r=t>1?void 0:t?h(l,e):l,s=p.length-1,d;s>=0;s--)(d=p[s])&&(r=(t?d(l,e,r):d(r))||r);return t&&r&&k(l,e,r),r};import{LitElement as v,css as u,html as c}from"./vendor/lit.js";import{customElement as g,property as n}from"./vendor/lit.js";import{css as m}from"./vendor/lit.js";var f=m`.mass{background:var(--rik-extras-mass,var(--rik-surface-inverse));color:var(--rik-extras-mass-text,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm)}.statement{font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-extras-statement,var(--rik-font-size-mega));font-weight:800;line-height:0.95;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.reading{font-family:var(--rik-font-sans);font-size:var(--rik-extras-reading,var(--rik-font-size-body));font-weight:400;line-height:1.35;max-width:62ch}.quiet{color:var(--rik-extras-quiet,var(--rik-text-default--muted))}.edge{border:0;border-top:1px solid var(--rik-extras-edge,var(--rik-border-default));margin:0}@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}`;var o=class extends v{constructor(){super(...arguments);this.noConnectors=!1;this.reveal=!1}willUpdate(){let e=[...this.querySelectorAll("deck-flow-step")];e.forEach((s,d)=>{s.setAttribute("index",String(d+1)),s.toggleAttribute("last",d===e.length-1),s.toggleAttribute("linked",!this.noConnectors)});let t=Number.parseInt(this.cols??"",10),r=Number.isFinite(t)&&t>=1&&t<=8?t:Math.max(1,this.querySelectorAll("deck-flow-step").length);this.style.setProperty("--_cols",String(r))}connectedCallback(){if(super.connectedCallback(),!this.reveal)return;let e=this;for(;e?.parentElement&&e.parentElement.tagName.toLowerCase()!=="deck-root";)e=e.parentElement;if(!e?.parentElement)return;let t=this.querySelectorAll("deck-flow-step").length,r=Number(e.getAttribute("steps")??e.getAttribute("data-steps")??"0");t>r&&e.setAttribute("data-steps",String(t))}applyStep(e){this.reveal&&this.querySelectorAll("deck-flow-step").forEach((t,r)=>{t.toggleAttribute("done",e>0&&r+1<e),t.toggleAttribute("active",r+1===e),t.toggleAttribute("pending",e>0&&r+1>e)})}render(){return c`<slot></slot>`}};o.styles=u`:host{display:grid;grid-template-columns:repeat(var(--_cols,4),minmax(0,1fr));gap:var(--deck-flow-gap,var(--rik-space-5));align-items:stretch;position:relative}::slotted(deck-flow-step){position:relative}`,a([n({type:String,reflect:!0})],o.prototype,"cols",2),a([n({type:Boolean,reflect:!0,attribute:"no-connectors"})],o.prototype,"noConnectors",2),a([n({type:Boolean,reflect:!0})],o.prototype,"reveal",2),o=a([g("deck-flow")],o);var i=class extends v{constructor(){super(...arguments);this.plain=!1;this.last=!1;this.linked=!1}render(){return c`<span class="head"> ${this.index?c`<span class="index reading" part="index">${this.index}</span>`:""}
2
+ ${this.label?c`<span class="label reading" part="label">${this.label}</span>`:""}
3
+ </span>
4
+ ${this.note?c`<span class="note reading" part="note">${this.note}</span>`:""}
5
+ <slot></slot>
6
+ ${this.linked&&!this.last?c`<span class="link" part="link"></span>`:""}
7
+ `}};i.styles=[f,u`:host{display:flex;flex-direction:column;gap:var(--rik-space-1);min-width:0;position:relative;padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm);border:var(--deck-flow-step-outline-width,4px) solid var(--deck-flow-step-outline,var(--rik-accent));transition:background 0.2s ease,color 0.2s ease,border-color 0.2s ease}:host([active]:not([plain])){background:var(--deck-flow-step-bg,var(--rik-surface-inverse));color:var(--deck-flow-step-color,var(--rik-text-inverse))}:host([active][plain]) .label{color:var(--deck-flow-step-accent,var(--rik-accent__text))}:host([pending]){color:var(--rik-text-default--faint);border-color:var(--deck-flow-step-pending-outline,var(--rik-text-default--faint))}.link{position:absolute;left:100%;top:50%;width:var(--deck-flow-gap,var(--rik-space-5));height:var(--deck-flow-step-outline-width,4px);transform:translateY(-50%);background:var(--deck-flow-link,var(--rik-accent));pointer-events:none}.link::after{content:'';position:absolute;right:0;top:50%;width:0.8rem;height:0.8rem;border-top:var(--deck-flow-step-outline-width,4px) solid var(--deck-flow-link,var(--rik-accent));border-right:var(--deck-flow-step-outline-width,4px) solid var(--deck-flow-link,var(--rik-accent));transform:translate(0,-50%) rotate(45deg);transform-origin:center}:host([pending]) .link,:host([pending]) .link::after{background:var(--rik-text-default--faint);border-color:var(--rik-text-default--faint)}.head{display:flex;align-items:baseline;gap:var(--rik-space-2)}.index{flex:none;font-variant-numeric:tabular-nums;opacity:0.55}:host([active]) .index{opacity:1}.label{font-weight:600;color:var(--deck-flow-step-label-color,inherit);text-wrap:balance}.note{color:var(--deck-flow-step-note-color,inherit);opacity:0.7;max-width:28ch}@media print{:host{opacity:1;-webkit-print-color-adjust:exact;print-color-adjust:exact}}`],a([n({type:String})],i.prototype,"label",2),a([n({type:String})],i.prototype,"note",2),a([n({type:String,reflect:!0})],i.prototype,"index",2),a([n({type:Boolean,reflect:!0})],i.prototype,"plain",2),a([n({type:Boolean,reflect:!0})],i.prototype,"last",2),a([n({type:Boolean,reflect:!0})],i.prototype,"linked",2),i=a([g("deck-flow-step")],i);export{o as DeckFlow,i as DeckFlowStep};
@@ -0,0 +1,92 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class DeckGraph extends LitElement {
3
+ static styles: import("lit").CSSResult[];
4
+ /** `free` (default, author places every node), `row` or `column` · the two
5
+ * arrangements that would otherwise be typed out by hand every time. */
6
+ layout: 'free' | 'row' | 'column';
7
+ /** Walk the graph one node per step · emphasis, not concealment. */
8
+ reveal: boolean;
9
+ private _tick;
10
+ /** The element's pixel box · the SVG coordinate space. */
11
+ private _box;
12
+ private _nodeBoxes;
13
+ private _ro?;
14
+ private _mo?;
15
+ private get _nodes();
16
+ private get _edges();
17
+ firstUpdated(): void;
18
+ disconnectedCallback(): void;
19
+ private _measure;
20
+ connectedCallback(): void;
21
+ /** Give every node a position · either the one the author wrote, or the one
22
+ * the canned arrangement computes. */
23
+ private _place;
24
+ /** Called by deck-root on every step change. */
25
+ applyStep(step: number): void;
26
+ /**
27
+ * The polyline every edge actually paints, in graph-relative CSS pixels.
28
+ *
29
+ * One source for the SVG and for the `data-path` published in `updated()` ·
30
+ * `rikiki check` used to re-derive a centre-to-centre segment of its own and
31
+ * report on a line nobody painted.
32
+ */
33
+ private _polylines;
34
+ updated(): void;
35
+ render(): import("lit-html").TemplateResult<1>;
36
+ }
37
+ export declare class DeckNode extends LitElement {
38
+ static styles: import("lit").CSSResult[];
39
+ /** `x,y` in percent of the drawing area · ignored under a canned layout. */
40
+ at?: string;
41
+ label?: string;
42
+ /** A mono micro-label under the name · a protocol, a count, a latency. */
43
+ note?: string;
44
+ /** Explicit CSS width (`18ch`, `240px`, …) for labels that must wrap before
45
+ * they collide with a neighbouring node. */
46
+ width?: string;
47
+ /** Draw the node as a filled block rather than type under a rule. */
48
+ boxed: boolean;
49
+ /** Fill colour of a boxed node. */
50
+ tone?: 'accent' | 'ok' | 'warn' | 'danger';
51
+ /** A glyph above the label · needs dist/deck-icon.js loaded too. */
52
+ icon?: string;
53
+ protected updated(): void;
54
+ render(): import("lit-html").TemplateResult<1>;
55
+ }
56
+ export declare class DeckGroup extends LitElement {
57
+ static styles: import("lit").CSSResult[];
58
+ /** `x,y,width,height` in percent of the drawing area. */
59
+ at?: string;
60
+ label?: string;
61
+ /** A solid outline instead of the dashed default. */
62
+ solid: boolean;
63
+ render(): import("lit-html").TemplateResult<1>;
64
+ }
65
+ export declare class DeckLane extends LitElement {
66
+ static styles: import("lit").CSSResult[];
67
+ /** `top,height` in percent of the drawing area. */
68
+ at?: string;
69
+ label?: string;
70
+ render(): import("lit-html").TemplateResult<1>;
71
+ }
72
+ export declare class DeckEdge extends LitElement {
73
+ static styles: import("lit").CSSResult;
74
+ from?: string;
75
+ to?: string;
76
+ label?: string;
77
+ dashed: boolean;
78
+ /** `straight` by default; `ortho` draws right-angle segments. */
79
+ route: 'straight' | 'ortho';
80
+ /** `x,y` pixel offset for the edge label, e.g. `label-offset="0,-16"`. */
81
+ labelOffset?: string;
82
+ render(): import("lit-html").TemplateResult<1>;
83
+ }
84
+ declare global {
85
+ interface HTMLElementTagNameMap {
86
+ 'deck-graph': DeckGraph;
87
+ 'deck-node': DeckNode;
88
+ 'deck-edge': DeckEdge;
89
+ 'deck-group': DeckGroup;
90
+ 'deck-lane': DeckLane;
91
+ }
92
+ }
@@ -0,0 +1,25 @@
1
+ var H=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var d=(i,s,e,r)=>{for(var t=r>1?void 0:r?R(s,e):s,n=i.length-1,a;n>=0;n--)(a=i[n])&&(t=(r?a(s,e,t):a(t))||t);return r&&t&&H(s,e,t),t};import{LitElement as P,css as S,html as b,svg as F}from"./vendor/lit.js";import{customElement as A,property as c,state as I}from"./vendor/lit.js";var L=i=>Number.isFinite(i)?Math.max(0,Math.min(100,i)):50;function O(i){if(!i)return null;let[s="",e=""]=i.split(",");if(s.trim()===""||e.trim()==="")return null;let r=Number(s),t=Number(e);return!Number.isFinite(r)||!Number.isFinite(t)?null:{x:L(r),y:L(t)}}function T(i,s="free",e=12){let r=i.length;if(r===0)return[];if(s==="free")return i.map(n=>O(n)??{x:50,y:50});let t=100-e*2;return i.map((n,a)=>{let o=r===1?.5:a/(r-1),l=e+t*o;return s==="row"?{x:l,y:50}:{x:50,y:l}})}function N(i,s,e=6){let r=s.x-i.x,t=s.y-i.y,n=Math.hypot(r,t);if(n===0)return{x1:i.x,y1:i.y,x2:s.x,y2:s.y,mx:i.x,my:i.y};let a=Math.min(e,n/3),o=r/n,l=t/n;return{x1:i.x+o*a,y1:i.y+l*a,x2:s.x-o*a,y2:s.y-l*a,mx:(i.x+s.x)/2,my:(i.y+s.y)/2}}import{css as j}from"./vendor/lit.js";var $=j`.mass{background:var(--rik-extras-mass,var(--rik-surface-inverse));color:var(--rik-extras-mass-text,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm)}.statement{font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-extras-statement,var(--rik-font-size-mega));font-weight:800;line-height:0.95;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.reading{font-family:var(--rik-font-sans);font-size:var(--rik-extras-reading,var(--rik-font-size-body));font-weight:400;line-height:1.35;max-width:62ch}.quiet{color:var(--rik-extras-quiet,var(--rik-text-default--muted))}.edge{border:0;border-top:1px solid var(--rik-extras-edge,var(--rik-border-default));margin:0}@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}`;var _=i=>({x:i.x+i.width/2,y:i.y+i.height/2});function q(i,s){let e=_(i),r=s.x-e.x,t=s.y-e.y;if(!r&&!t)return e;let n=r?i.width/2/Math.abs(r):Number.POSITIVE_INFINITY,a=t?i.height/2/Math.abs(t):Number.POSITIVE_INFINITY,o=Math.min(n,a);return{x:e.x+r*o,y:e.y+t*o}}function Y(i){let[s=0,e=0]=(i??"").split(",").map(r=>Number(r.trim()));return{x:Number.isFinite(s)?s:0,y:Number.isFinite(e)?e:0}}var f=class extends P{constructor(){super(...arguments);this.layout="free";this.reveal=!1;this._tick=0;this._box={w:0,h:0};this._nodeBoxes=new Map}get _nodes(){return[...this.querySelectorAll("deck-node")]}get _edges(){return[...this.querySelectorAll("deck-edge")]}firstUpdated(){this._ro=new ResizeObserver(()=>this._measure()),this._ro.observe(this);for(let e of this._nodes)this._ro?.observe(e);this._mo=new MutationObserver(()=>this._place()),this._mo.observe(this,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["at","from","to","route","label","label-offset","width","boxed"]}),this._measure()}disconnectedCallback(){super.disconnectedCallback(),this._ro?.disconnect(),this._ro=void 0,this._mo?.disconnect(),this._mo=void 0}_measure(){let e=this.getBoundingClientRect();if(!e.width||!e.height)return;let r=new Map;for(let t of this._nodes){if(!t.id)continue;let n=t.getBoundingClientRect();r.set(t.id,{x:n.left-e.left,y:n.top-e.top,width:n.width,height:n.height})}this._box={w:e.width,h:e.height},this._nodeBoxes=r}connectedCallback(){if(super.connectedCallback(),this._place(),!this.reveal)return;let e=this;for(;e?.parentElement&&e.parentElement.tagName.toLowerCase()!=="deck-root";)e=e.parentElement;if(!e?.parentElement)return;let r=this._nodes.length,t=Number(e.getAttribute("steps")??e.getAttribute("data-steps")??"0");r>t&&e.setAttribute("data-steps",String(r))}_place(){let e=this._nodes,r=T(e.map(t=>t.getAttribute("at")),this.layout);e.forEach((t,n)=>{let a=r[n];t.style.setProperty("--nx",`${a.x}%`),t.style.setProperty("--ny",`${a.y}%`),t.dataset.x=String(a.x),t.dataset.y=String(a.y)});for(let t of this.querySelectorAll("deck-group")){let[n=0,a=0,o=20,l=20]=(t.getAttribute("at")??"").split(",").map(u=>Number(u.trim())).map(u=>Number.isFinite(u)?u:0);t.style.setProperty("--gx",`${n}%`),t.style.setProperty("--gy",`${a}%`),t.style.setProperty("--gw",`${o}%`),t.style.setProperty("--gh",`${l}%`)}for(let t of this.querySelectorAll("deck-lane")){let[n=0,a=25]=(t.getAttribute("at")??"").split(",").map(o=>Number(o.trim())).map(o=>Number.isFinite(o)?o:0);t.style.setProperty("--ly",`${n}%`),t.style.setProperty("--lh",`${a}%`)}this._tick++,requestAnimationFrame(()=>{for(let t of this._nodes)this._ro?.observe(t);this._measure()})}applyStep(e){this.reveal&&(this._nodes.forEach((r,t)=>{r.toggleAttribute("active",t+1===e),r.toggleAttribute("pending",e>0&&t+1>e)}),this._tick++)}_polylines(){let e=new Map,{w:r,h:t}=this._box;if(!r)return e;let n=a=>a?{x:Number(a.getAttribute("data-x")),y:Number(a.getAttribute("data-y"))}:null;for(let a of this._edges){let o=a.getAttribute("from")??"",l=a.getAttribute("to")??"",u=n(this.querySelector(`#${CSS.escape(o)}`)),p=n(this.querySelector(`#${CSS.escape(l)}`));if(!u||!p)continue;let h=N(u,p),x=this._nodeBoxes.get(o),y=this._nodeBoxes.get(l),v=x?_(x):{x:h.x1/100*r,y:h.y1/100*t},M=y?_(y):{x:h.x2/100*r,y:h.y2/100*t},B=(a.getAttribute("route")??"straight").toLowerCase()==="ortho",z=(v.x+M.x)/2,C=x?q(x,B?{x:z,y:v.y}:M):v,E=y?q(y,B?{x:z,y:M.y}:v):M;e.set(a,B?[C,{x:z,y:C.y},{x:z,y:E.y},E]:[C,E])}return e}updated(){let e=this._polylines();for(let r of this._edges){let t=e.get(r);t?r.setAttribute("data-path",t.map(n=>`${n.x.toFixed(2)},${n.y.toFixed(2)}`).join(" ")):r.removeAttribute("data-path")}}render(){this._tick;let e=this._polylines(),r=o=>o?{x:Number(o.getAttribute("data-x")),y:Number(o.getAttribute("data-y"))}:null,t=this._edges.map(o=>{let l=o.getAttribute("from")??"",u=o.getAttribute("to")??"",p=r(this.querySelector(`#${CSS.escape(l)}`)),h=r(this.querySelector(`#${CSS.escape(u)}`));return{edge:o,fromId:l,toId:u,geom:p&&h?N(p,h):null}}),{w:n,h:a}=this._box;return b`<svg viewBox="0 0 ${n||1} ${a||1}" aria-hidden="true"> <defs> <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="5" markerHeight="5" orient="auto-start-reverse" > <path class="head" d="M0 0 L10 5 L0 10 z" /> </marker> </defs> ${this._edges.map(o=>{let l=e.get(o);if(!l)return"";let u=(o.getAttribute("arrow")??"end").toLowerCase(),p={end:u==="end"||u==="both"?"url(#arrow)":"",start:u==="start"||u==="both"?"url(#arrow)":""},[h,x]=l;return l.length>2?F`<path
2
+ class="edge"
3
+ ?data-dashed=${o.hasAttribute("dashed")}
4
+ data-route="ortho"
5
+ d=${l.map((y,v)=>`${v?"L":"M"} ${y.x} ${y.y}`).join(" ")}
6
+ marker-end=${p.end}
7
+ marker-start=${p.start}
8
+ />`:F`<line
9
+ class="edge"
10
+ ?data-dashed=${o.hasAttribute("dashed")}
11
+ x1=${h.x}
12
+ y1=${h.y}
13
+ x2=${x.x}
14
+ y2=${x.y}
15
+ marker-end=${p.end}
16
+ marker-start=${p.start}
17
+ />`})}
18
+ </svg>
19
+ ${t.map(({edge:o,fromId:l,toId:u,geom:p})=>{let h=this._nodeBoxes.get(l),x=this._nodeBoxes.get(u),y=Y(o.getAttribute("label-offset")),v=h&&x?{x:(_(h).x+_(x).x)/2,y:(_(h).y+_(x).y)/2}:p?{x:p.mx/100*n,y:p.my/100*a}:null;return v&&o.getAttribute("label")?b`<span class="tag edge-label" style="left:${v.x+y.x}px;top:${v.y+y.y}px" >${o.getAttribute("label")}</span >`:""})}
20
+ <slot @slotchange=${()=>this._place()}></slot>
21
+ `}};f.styles=[$,S`:host{display:block;position:relative;width:100%;aspect-ratio:var(--deck-graph-ratio,16 / 7);min-height:0;font-family:var(--rik-font-sans)}svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.edge{fill:none;stroke:var(--deck-graph-edge,var(--rik-text-default--muted));stroke-width:var(--deck-graph-edge-width,4);stroke-linecap:round;transition:stroke 0.2s ease,opacity 0.2s ease}.edge[data-dashed]{stroke-dasharray:6 6}.edge[data-active]{stroke:var(--rik-accent)}.edge[data-pending]{opacity:0.2}.head{fill:var(--deck-graph-edge,var(--rik-text-default--muted))}.tag{font-family:var(--rik-font-sans);font-size:var(--deck-graph-tag-size,0.95em);line-height:1.2}.edge-label{position:absolute;transform:translate(-50%,-50%);background:var(--rik-surface-page);padding-inline:var(--rik-space-1);white-space:nowrap;color:var(--deck-graph-edge-label,var(--rik-text-default--faint))}@media print{.edge,.arrow{-webkit-print-color-adjust:exact;print-color-adjust:exact}.edge[data-pending]{opacity:1}}`],d([c({type:String,reflect:!0})],f.prototype,"layout",2),d([c({type:Boolean,reflect:!0})],f.prototype,"reveal",2),d([I()],f.prototype,"_tick",2),d([I()],f.prototype,"_box",2),d([I()],f.prototype,"_nodeBoxes",2),f=d([A("deck-graph")],f);var g=class extends P{constructor(){super(...arguments);this.boxed=!1}updated(){this.width?this.style.setProperty("--deck-node-width",this.width):this.style.removeProperty("--deck-node-width")}render(){return b`${this.icon?b`<deck-icon name=${this.icon} size="md"></deck-icon>`:""}
22
+ <span class="label" part="label">${this.label??""}</span>
23
+ ${this.note?b`<span class="note" part="note">${this.note}</span>`:""}
24
+ <slot></slot>
25
+ `}};g.styles=[$,S`:host{position:absolute;left:var(--nx,50%);top:var(--ny,50%);transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:var(--rik-space-1);text-align:center;max-width:var(--deck-node-width,var(--deck-node-size,14ch));width:var(--deck-node-width,auto);transition:opacity 0.2s ease}:host([pending]){opacity:var(--deck-node-pending-opacity,0.25)}:host([boxed]){background:var(--deck-node-bg,var(--rik-surface-inverse));color:var(--deck-node-boxed-color,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-md);max-width:var(--deck-node-width,var(--deck-node-size,18ch))}:host([boxed]) .label,:host([boxed]) .note{background:none;color:inherit}:host([boxed][tone='accent']){background:var(--rik-accent);color:var(--rik-accent__on)}:host([boxed][tone='ok']){background:var(--rik-status-success__text);color:var(--rik-surface-page)}:host([boxed][tone='warn']){background:var(--rik-status-warn__text);color:var(--rik-surface-page)}:host([boxed][tone='danger']){background:var(--rik-status-danger__text);color:var(--rik-surface-page)}:host([boxed][active]){outline:var(--deck-node-active-width,3px) solid var(--rik-accent);outline-offset:3px}deck-icon{margin-bottom:var(--rik-space-1)}:host([active]:not([boxed])) .label{color:var(--deck-node-active-color,var(--rik-accent__text))}.note{font-size:var(--deck-node-note-size,0.95em);line-height:1.25;color:var(--deck-node-note-color,var(--rik-text-default--muted));opacity:0.85}.label{font-weight:700;line-height:1.15;color:var(--deck-node-color,var(--rik-text-default));background:var(--rik-surface-page);padding-inline:var(--rik-space-1)}@media print{:host{opacity:1}:host{-webkit-print-color-adjust:exact;print-color-adjust:exact}}`],d([c({type:String})],g.prototype,"at",2),d([c({type:String})],g.prototype,"label",2),d([c({type:String})],g.prototype,"note",2),d([c({type:String,reflect:!0})],g.prototype,"width",2),d([c({type:Boolean,reflect:!0})],g.prototype,"boxed",2),d([c({type:String,reflect:!0})],g.prototype,"tone",2),d([c({type:String})],g.prototype,"icon",2),g=d([A("deck-node")],g);var k=class extends P{constructor(){super(...arguments);this.solid=!1}render(){return b`${this.label?b`<span class="tag">${this.label}</span>`:""}`}};k.styles=[$,S`:host{position:absolute;left:var(--gx,0%);top:var(--gy,0%);width:var(--gw,20%);height:var(--gh,20%);border:2px dashed var(--deck-group-border,var(--rik-text-default--faint));border-radius:var(--rik-radius-md);background:var(--deck-group-bg,transparent);z-index:0;pointer-events:none}.tag{font-family:var(--rik-font-sans);font-size:var(--deck-graph-tag-size,0.95em);line-height:1.2}.tag{position:absolute;top:0;left:var(--rik-space-3);transform:translateY(-50%);background:var(--rik-surface-page);padding-inline:var(--rik-space-2);color:var(--deck-group-label-color,var(--rik-text-default--faint));white-space:nowrap}:host([solid]){border-style:solid}`],d([c({type:String})],k.prototype,"at",2),d([c({type:String})],k.prototype,"label",2),d([c({type:Boolean,reflect:!0})],k.prototype,"solid",2),k=d([A("deck-group")],k);var w=class extends P{render(){return b`${this.label?b`<span class="tag">${this.label}</span>`:""}`}};w.styles=[$,S`:host{position:absolute;left:0;right:0;top:var(--ly,0%);height:var(--lh,25%);border-top:1px solid var(--deck-lane-rule,var(--rik-text-default--faint));background:var(--deck-lane-bg,transparent);z-index:0;pointer-events:none}.tag{font-family:var(--rik-font-sans);font-size:var(--deck-graph-tag-size,0.95em);line-height:1.2}.tag{position:absolute;top:var(--rik-space-1);left:0;color:var(--deck-lane-label-color,var(--rik-text-default--faint))}`],d([c({type:String})],w.prototype,"at",2),d([c({type:String})],w.prototype,"label",2),w=d([A("deck-lane")],w);var m=class extends P{constructor(){super(...arguments);this.dashed=!1;this.route="straight"}render(){return b``}};m.styles=S`:host{display:none}`,d([c({type:String})],m.prototype,"from",2),d([c({type:String})],m.prototype,"to",2),d([c({type:String})],m.prototype,"label",2),d([c({type:Boolean})],m.prototype,"dashed",2),d([c({type:String,reflect:!0})],m.prototype,"route",2),d([c({type:String,attribute:"label-offset"})],m.prototype,"labelOffset",2),m=d([A("deck-edge")],m);export{m as DeckEdge,f as DeckGraph,k as DeckGroup,w as DeckLane,g as DeckNode};
package/dist/deck-grid.js CHANGED
@@ -1 +1 @@
1
- var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var n=(r,t,a,e)=>{for(var i=e>1?void 0:e?h(t,a):t,g=r.length-1,l;g>=0;g--)(l=r[g])&&(i=(e?l(t,a,i):l(i))||i);return e&&i&&f(t,a,i),i};import{LitElement as y,html as d,css as u}from"./vendor/lit.js";import{customElement as m,property as o}from"./vendor/lit.js";var p={start:"start",center:"center",end:"end",stretch:"stretch"};function c(r){if(!r)return null;let t=parseInt(r,10);return!Number.isNaN(t)&&String(t)===r.trim()&&t>=1&&t<=12?`repeat(${t}, minmax(0, 1fr))`:r}function _(r){if(!r)return null;let t=parseInt(r,10);return!Number.isNaN(t)&&t>=1&&t<=6?`var(--rik-space-${t})`:r}var s=class extends y{updated(){let t=c(this.cols),a=c(this.rows),e=_(this.gap);t&&this.style.setProperty("--_cols",t),a&&this.style.setProperty("--_rows",a),e&&this.style.setProperty("--_gap",e),this.align&&this.style.setProperty("--_align",p[this.align]??this.align),this.justify&&this.style.setProperty("--_justify",p[this.justify]??this.justify)}render(){return d`<slot></slot>`}};s.styles=u`:host{display:grid;grid-template-columns:var(--_cols,1fr);grid-template-rows:var(--_rows,auto);gap:var(--_gap,var(--deck-grid-gap,var(--rik-space-3)));align-items:var(--_align,stretch);justify-items:var(--_justify,stretch);min-width:0;min-height:0}:host([fill]){flex:1 1 auto;height:100%}`,n([o({type:String})],s.prototype,"cols",2),n([o({type:String})],s.prototype,"rows",2),n([o({type:String})],s.prototype,"gap",2),n([o({type:String})],s.prototype,"align",2),n([o({type:String})],s.prototype,"justify",2),s=n([m("deck-grid")],s);export{s as DeckGrid};
1
+ var f=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var n=(r,t,o,i)=>{for(var s=i>1?void 0:i?u(t,o):t,p=r.length-1,g;p>=0;p--)(g=r[p])&&(s=(i?g(t,o,s):g(s))||s);return i&&s&&f(t,o,s),s};import{LitElement as d,html as m,css as y}from"./vendor/lit.js";import{customElement as h,property as a}from"./vendor/lit.js";function l(r){if(!r)return null;let t=parseInt(r,10);return!Number.isNaN(t)&&String(t)===r.trim()&&t>=1&&t<=12?`repeat(${t}, minmax(0, 1fr))`:r}function c(r){if(!r)return null;let t=parseInt(r,10);return!Number.isNaN(t)&&String(t)===r.trim()&&t>=1&&t<=6?`var(--rik-space-${t})`:r}var e=class extends d{updated(){let t=l(this.cols),o=l(this.rows),i=c(this.gap);t&&this.style.setProperty("--_cols",t),o&&this.style.setProperty("--_rows",o),i&&this.style.setProperty("--_gap",i),this.align&&this.style.setProperty("--_align",this.align),this.justify&&this.style.setProperty("--_justify",this.justify)}render(){return m`<slot></slot>`}};e.styles=y`:host{display:grid;grid-template-columns:var(--_cols,1fr);grid-template-rows:var(--_rows,auto);gap:var(--_gap,var(--deck-grid-gap,var(--rik-space-3)));align-items:var(--_align,stretch);justify-items:var(--_justify,stretch);min-width:0;min-height:0}:host([fill]){flex:1 1 auto;height:100%}`,n([a({type:String})],e.prototype,"cols",2),n([a({type:String})],e.prototype,"rows",2),n([a({type:String})],e.prototype,"gap",2),n([a({type:String})],e.prototype,"align",2),n([a({type:String})],e.prototype,"justify",2),e=n([h("deck-grid")],e);export{e as DeckGrid};
@@ -0,0 +1,20 @@
1
+ import { LitElement } from 'lit';
2
+ export type DeckIconSize = 'sm' | 'md' | 'lg' | 'xl';
3
+ export type DeckIconTone = 'default' | 'accent' | 'ok' | 'warn' | 'danger' | 'info' | 'muted';
4
+ export declare class DeckIcon extends LitElement {
5
+ static styles: import("lit").CSSResult;
6
+ /** One of the glyphs in the set · an unknown name falls back to the slot. */
7
+ name?: string;
8
+ size: DeckIconSize;
9
+ tone: DeckIconTone;
10
+ /** What a screen reader should say · absent means decorative, and the icon
11
+ * is hidden from the accessibility tree rather than announced as "image". */
12
+ label?: string;
13
+ willUpdate(): void;
14
+ render(): import("lit-html").TemplateResult<1>;
15
+ }
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ 'deck-icon': DeckIcon;
19
+ }
20
+ }
@@ -0,0 +1 @@
1
+ var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var i=(r,s,a,n)=>{for(var t=n>1?void 0:n?g(s,a):s,l=r.length-1,c;l>=0;l--)(c=r[l])&&(t=(n?c(s,a,t):c(t))||t);return n&&t&&u(s,a,t),t};import{LitElement as p,css as k,html as v}from"./vendor/lit.js";import{customElement as x,property as o}from"./vendor/lit.js";var f='{"check":"M20 6 9 17l-5-5","cross":"M18 6 6 18M6 6l12 12","alert":"M12 9v4m0 4h.01M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z","info":"M12 16v-4m0-4h.01M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z","question":"M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3m.1 4h.01M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z","ban":"M4.9 4.9l14.2 14.2M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z","arrow":"M5 12h14m-6-6 6 6-6 6","arrow-down":"M12 5v14m6-6-6 6-6-6","clock":"M12 6v6l4 2m6-2a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z","calendar":"M8 2v4m8-4v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z","refresh":"M21 12a9 9 0 1 1-3-6.7M21 3v6h-6","trend":"M22 7 13.5 15.5l-5-5L2 17M16 7h6v6","user":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2M16 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z","team":"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M13 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm10 14v-2a4 4 0 0 0-3-3.9M16 3.1a4 4 0 0 1 0 7.8","target":"M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm0-6a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 9a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z","flag":"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1Zm0 0v7","lock":"M7 11V7a5 5 0 0 1 10 0v4M5 11h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2Z","search":"M21 21l-4.3-4.3M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z","code":"M16 18l6-6-6-6M8 6l-6 6 6 6","database":"M3 5c0 1.7 4 3 9 3s9-1.3 9-3-4-3-9-3-9 1.3-9 3Zm0 0v14c0 1.7 4 3 9 3s9-1.3 9-3V5M3 12c0 1.7 4 3 9 3s9-1.3 9-3","cloud":"M17.5 19a4.5 4.5 0 0 0 0-9h-1.3A7 7 0 1 0 4 16.9","document":"M14 2v6h6M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Zm-6 11h8m-8 4h8m-8-8h2","chart":"M3 3v18h18M7 16V9m5 7V5m5 11v-4","spark":"M12 2 15 9l7 3-7 3-3 7-3-7-7-3 7-3Z"}',d=Object.freeze(JSON.parse(f)),y=Object.keys(d);function m(r){return r?d[r.trim().toLowerCase()]??null:null}var h={sm:"1em",md:"1.5em",lg:"2.5em",xl:"4em"},M={default:"currentColor",accent:"var(--rik-accent__text)",ok:"var(--rik-status-success__text)",warn:"var(--rik-status-warn__text)",danger:"var(--rik-status-danger__text)",info:"var(--rik-status-info, var(--rik-accent__text))",muted:"var(--rik-text-default--faint)"},e=class extends p{constructor(){super(...arguments);this.size="md";this.tone="default"}willUpdate(){this.style.setProperty("--_size",h[this.size]??h.md),this.style.setProperty("--_tone",M[this.tone]??M.default),this.label?(this.setAttribute("role","img"),this.setAttribute("aria-label",this.label),this.removeAttribute("aria-hidden")):(this.removeAttribute("role"),this.removeAttribute("aria-label"),this.setAttribute("aria-hidden","true"))}render(){let a=m(this.name);return a?v`<svg viewBox="0 0 24 24" part="svg" focusable="false"> <path d=${a} /> </svg>`:v`<slot></slot>`}};e.styles=k`:host{display:inline-flex;align-items:center;justify-content:center;width:var(--deck-icon-size,var(--_size));height:var(--deck-icon-size,var(--_size));color:var(--deck-icon-color,var(--_tone));flex:none;vertical-align:-0.125em}svg,::slotted(svg){width:100%;height:100%;display:block;fill:none;stroke:currentColor;stroke-width:var(--deck-icon-stroke,2);stroke-linecap:round;stroke-linejoin:round}`,i([o({type:String,reflect:!0})],e.prototype,"name",2),i([o({type:String,reflect:!0})],e.prototype,"size",2),i([o({type:String,reflect:!0})],e.prototype,"tone",2),i([o({type:String})],e.prototype,"label",2),e=i([x("deck-icon")],e);export{e as DeckIcon};
@@ -3,3 +3,8 @@ export declare class DeckKicker extends LitElement {
3
3
  static styles: import("lit").CSSResult;
4
4
  render(): import("lit-html").TemplateResult<1>;
5
5
  }
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ 'deck-kicker': DeckKicker;
9
+ }
10
+ }
@@ -1 +1 @@
1
- import{LitElement as e,html as t,css as o}from"./vendor/lit.js";var r=class extends e{static{this.styles=o`:host{display:block;font:700 var(--deck-kicker-font-size,var(--rik-font-size-xs))/1.2 var(--rik-font-sans);letter-spacing:var(--deck-kicker-tracking,0.14em);text-transform:uppercase;color:var(--deck-kicker-color,var(--rik-text-default--faint));margin-bottom:var(--deck-kicker-margin,var(--rik-space-2))}:host([on-dark]){color:var(--deck-kicker-on-dark-color,var(--rik-text-inverse--faint))}`}render(){return t`<slot></slot>`}};customElements.define("deck-kicker",r);export{r as DeckKicker};
1
+ import{LitElement as r,html as t,css as a}from"./vendor/lit.js";var e=class extends r{static{this.styles=a`:host{display:block;font:700 var(--deck-kicker-font-size,var(--rik-font-size-xs))/1.2 var(--rik-font-sans);letter-spacing:var(--deck-kicker-tracking,0.14em);text-transform:uppercase;color:var(--deck-kicker-color,var(--rik-text-default--faint));margin-bottom:var(--deck-kicker-margin,var(--rik-space-2))}:host([on-dark]){color:var(--deck-kicker-on-dark-color,var(--rik-text-inverse--faint))}`}render(){return t`<slot></slot>`}};customElements.define("deck-kicker",e);export{e as DeckKicker};
@@ -0,0 +1,26 @@
1
+ import { LitElement } from 'lit';
2
+ export type DeckKpiTone = 'default' | 'accent' | 'ok' | 'warn' | 'danger' | 'muted';
3
+ export declare class DeckKpiGrid extends LitElement {
4
+ static styles: import("lit").CSSResult;
5
+ cols?: string;
6
+ /** Draw a divider between the figures. */
7
+ ruled: boolean;
8
+ willUpdate(): void;
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ }
11
+ export declare class DeckKpi extends LitElement {
12
+ static styles: import("lit").CSSResult[];
13
+ value?: string;
14
+ label?: string;
15
+ /** A line of context under the label · what the figure is measured against. */
16
+ note?: string;
17
+ tone: DeckKpiTone;
18
+ willUpdate(): void;
19
+ render(): import("lit-html").TemplateResult<1>;
20
+ }
21
+ declare global {
22
+ interface HTMLElementTagNameMap {
23
+ 'deck-kpi-grid': DeckKpiGrid;
24
+ 'deck-kpi': DeckKpi;
25
+ }
26
+ }
@@ -0,0 +1,4 @@
1
+ var f=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var r=(n,o,e,l)=>{for(var a=l>1?void 0:l?x(o,e):o,c=n.length-1,p;c>=0;c--)(p=n[c])&&(a=(l?p(o,e,a):p(a))||a);return l&&a&&f(o,e,a),a};import{LitElement as g,css as u,html as d}from"./vendor/lit.js";import{customElement as m,property as s}from"./vendor/lit.js";import{css as h}from"./vendor/lit.js";var k=h`.mass{background:var(--rik-extras-mass,var(--rik-surface-inverse));color:var(--rik-extras-mass-text,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm)}.statement{font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-extras-statement,var(--rik-font-size-mega));font-weight:800;line-height:0.95;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.reading{font-family:var(--rik-font-sans);font-size:var(--rik-extras-reading,var(--rik-font-size-body));font-weight:400;line-height:1.35;max-width:62ch}.quiet{color:var(--rik-extras-quiet,var(--rik-text-default--muted))}.edge{border:0;border-top:1px solid var(--rik-extras-edge,var(--rik-border-default));margin:0}@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}`;var v={default:"var(--rik-text-default)",accent:"var(--rik-accent__text)",ok:"var(--rik-status-success__text)",warn:"var(--rik-status-warn__text)",danger:"var(--rik-status-danger__text)",muted:"var(--rik-text-default--faint)"},i=class extends g{constructor(){super(...arguments);this.ruled=!1}willUpdate(){let e=Number.parseInt(this.cols??"3",10);this.style.setProperty("--_cols",String(e>=1&&e<=6?e:3))}render(){return d`<slot></slot>`}};i.styles=u`:host{display:grid;grid-template-columns:repeat(var(--deck-kpi-grid-cols,var(--_cols,3)),minmax(0,1fr));grid-template-rows:auto auto auto;column-gap:var(--deck-kpi-grid-gap,var(--rik-space-6));row-gap:var(--deck-kpi-grid-row-gap,var(--rik-space-2));align-items:stretch;margin-inline-start:calc(-1 * var(--deck-kpi-block-pad-x,var(--rik-space-3)))}::slotted(deck-kpi){--_kpi-rows:subgrid;grid-row:1 / -1}:host([ruled]) ::slotted(deck-kpi:not(:first-child)){border-left:var(--deck-kpi-grid-rule-width,2px) solid var(--deck-kpi-grid-rule,var(--rik-text-default--faint));padding-left:var(--deck-kpi-grid-gap,var(--rik-space-5))}@media (max-width:640px){:host{grid-template-columns:minmax(0,1fr);grid-template-rows:none}:host([ruled]) ::slotted(deck-kpi:not(:first-child)){border-left:0;padding-left:0}::slotted(deck-kpi){--_kpi-rows:none;grid-row:auto}}`,r([s({type:String,reflect:!0})],i.prototype,"cols",2),r([s({type:Boolean,reflect:!0})],i.prototype,"ruled",2),i=r([m("deck-kpi-grid")],i);var t=class extends g{constructor(){super(...arguments);this.tone="default"}willUpdate(){let e=v[this.tone]?this.tone:"default";this.style.setProperty("--_tone",v[e])}render(){return d`<span class="value statement" part="value">${this.value??""}</span> ${this.label?d`<span class="label reading" part="label">${this.label}</span>`:""}
2
+ ${this.note?d`<span class="note reading quiet" part="note">${this.note}</span>`:""}
3
+ <slot></slot>
4
+ `}};t.styles=[k,u`:host{display:grid;grid-template-rows:var(--_kpi-rows,none);row-gap:var(--deck-kpi-grid-row-gap,var(--rik-space-2));align-content:start;min-width:0}.value{align-self:end;justify-self:start;max-width:100%;font-size:var(--deck-kpi-value-size,var(--rik-extras-statement,var(--rik-font-size-mega)));color:var(--deck-kpi-value-color,var(--_tone));box-sizing:border-box;padding:var(--deck-kpi-block-pad-y,var(--rik-space-2)) var(--deck-kpi-block-pad-x,var(--rik-space-3));border-radius:var(--rik-radius-sm)}:host([tone='accent']) .value,:host([tone='ok']) .value,:host([tone='warn']) .value,:host([tone='danger']) .value{background:var(--deck-kpi-mass,var(--rik-surface-inverse));color:var(--deck-kpi-value-color,var(--deck-kpi-mass-text,var(--rik-text-inverse)))}:host([tone='accent']) .label,:host([tone='ok']) .label,:host([tone='warn']) .label,:host([tone='danger']) .label{color:var(--deck-kpi-label-color,var(--_tone))}.label,.note{padding-inline-start:var(--deck-kpi-block-pad-x,var(--rik-space-3))}.label{align-self:start;color:var(--deck-kpi-label-color,var(--rik-text-default));font-weight:600}.note{align-self:start;padding-top:var(--rik-space-1);color:var(--deck-kpi-note-color,var(--rik-text-default--muted))}::slotted(*){grid-column:1}@media print{.value{-webkit-print-color-adjust:exact;print-color-adjust:exact}}`],r([s({type:String})],t.prototype,"value",2),r([s({type:String})],t.prototype,"label",2),r([s({type:String})],t.prototype,"note",2),r([s({type:String,reflect:!0})],t.prototype,"tone",2),t=r([m("deck-kpi")],t);export{t as DeckKpi,i as DeckKpiGrid};
@@ -0,0 +1,21 @@
1
+ import type { DeckCoords, DeckPosition } from './deck-outline.js';
2
+ /** What a hash asked for · one of the two grammars, or null if it is not ours
3
+ * (a plain page anchor, an empty hash, anything else). */
4
+ export type DeckLink = {
5
+ readonly kind: 'slide';
6
+ readonly slide: number;
7
+ readonly step: number;
8
+ } | {
9
+ readonly kind: 'coords';
10
+ readonly coords: DeckCoords;
11
+ readonly step: number;
12
+ };
13
+ /** Parse a location hash. `twoD` selects the grammar, because `#2.3` means
14
+ * different things in the two models and neither is a superset of the other. */
15
+ export declare function parseHash(hash: string, twoD: boolean): DeckLink | null;
16
+ /** The hash for a position · in the grammar `parseHash` will read it back with.
17
+ * `coords` is required for a 2D deck and ignored otherwise. */
18
+ export declare function formatHash(position: DeckPosition, options: {
19
+ twoD: boolean;
20
+ coords?: DeckCoords;
21
+ }): string;
@@ -0,0 +1 @@
1
+ var s=/^#(\d+)\.(\d+)(?:s(\d+))?$/,t=/^#(\d+)(?:\.(\d+))?$/;function c(e,n){if(n){let r=s.exec(e);if(r)return{kind:"coords",coords:{chapter:Number(r[1])-1,index:Number(r[2])-1},step:r[3]?Number(r[3]):0}}let o=t.exec(e);return o?{kind:"slide",slide:Number(o[1])-1,step:o[2]?Number(o[2]):0}:null}function l(e,n){if(n.twoD&&n.coords){let{chapter:o,index:r}=n.coords,d=e.step>0?`s${e.step}`:"";return`#${o+1}.${r+1}${d}`}return`#${e.slide+1}${e.step>0?`.${e.step}`:""}`}export{l as formatHash,c as parseHash};
@@ -3,6 +3,9 @@ export declare class DeckMd extends LitElement {
3
3
  static styles: import("lit").CSSResult;
4
4
  private _html;
5
5
  connectedCallback(): void;
6
+ /** Re-read the light-DOM source and re-render · used by the live editor when
7
+ * the markdown is edited in place. */
8
+ reparse(): void;
6
9
  private _parse;
7
10
  render(): import("lit-html").TemplateResult<1>;
8
11
  }
package/dist/deck-md.js CHANGED
@@ -1,3 +1,8 @@
1
- var m=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var d=(s,o,i,t)=>{for(var r=t>1?void 0:t?v(o,i):o,n=s.length-1,e;n>=0;n--)(e=s[n])&&(r=(t?e(o,i,r):e(r))||r);return t&&r&&m(o,i,r),r};import{LitElement as k,html as p,css as f}from"./vendor/lit.js";import{customElement as g,state as h}from"./vendor/lit.js";import{marked as c}from"./vendor/marked.js";c.setOptions({gfm:!0,breaks:!1});var a=class extends k{constructor(){super(...arguments);this._html=""}connectedCallback(){super.connectedCallback(),this._parse()}_parse(){let i=this.textContent??"",t=i.split(`
2
- `),r=t.filter(e=>e.trim().length>0).reduce((e,l)=>Math.min(e,l.match(/^ */)?.[0].length??0),1/0),n=r===1/0?i:t.map(e=>e.slice(r)).join(`
3
- `);this._html=c.parse(n.trim()),this.textContent=""}render(){return p`<div class="content" .innerHTML="${this._html}"></div>`}};a.styles=f`:host{display:block;color:var(--rik-text-default--muted);font-family:var(--rik-font-sans)}h1,h2,h3,h4{color:var(--rik-text-default);font-weight:700;letter-spacing:-0.01em}h2{font-size:var(--rik-font-size-h2);margin-bottom:var(--rik-space-2)}h3{font-size:var(--rik-font-size-lead);margin-bottom:var(--rik-space-2);margin-top:var(--rik-space-3)}h4{font-size:var(--rik-font-size-body);margin-bottom:var(--rik-space-1);margin-top:var(--rik-space-3)}p{font-size:var(--rik-font-size-body);line-height:1.65;margin:0 0 var(--rik-space-3)}p:last-child{margin-bottom:0}strong{color:var(--rik-text-default);font-weight:700}em{font-style:italic}code{font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono-sm);background:var(--rik-surface-tint);padding:2px 6px;border-radius:var(--rik-radius-sm);color:var(--rik-text-default)}pre{background:var(--deck-md-pre-bg,var(--rik-code__bg));border:1px solid var(--deck-md-pre-border,var(--rik-code__border));border-radius:var(--rik-radius-md);padding:var(--rik-space-3) var(--rik-space-4);overflow:auto;font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono);line-height:1.75;color:var(--deck-md-pre-text,var(--rik-code__text));margin:0 0 var(--rik-space-3);box-shadow:var(--rik-elevation-2)}pre code{background:none;padding:0;color:inherit;border-radius:0}ul,ol{padding-left:1.4rem;margin:0 0 var(--rik-space-3)}li{margin-bottom:var(--rik-space-1);font-size:var(--rik-font-size-body);line-height:1.55}li::marker{color:var(--rik-accent)}a{color:var(--rik-accent);text-decoration:underline;text-decoration-thickness:1px}blockquote{border-left:3px solid var(--rik-accent);padding:var(--rik-space-1) var(--rik-space-3);color:var(--rik-text-default--faint);font-style:italic;margin:0 0 var(--rik-space-3)}hr{border:none;border-top:1px solid var(--rik-border-default);margin:var(--rik-space-4) 0}.content{display:contents}`,d([h()],a.prototype,"_html",2),a=d([g("deck-md")],a);export{a as DeckMd};
1
+ var v=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var f=(t,e,r,n)=>{for(var a=n>1?void 0:n?b(e,r):e,i=t.length-1,o;i>=0;i--)(o=t[i])&&(a=(n?o(e,r,a):o(a))||a);return n&&a&&v(e,r,a),a};import{LitElement as z,html as N,css as S}from"./vendor/lit.js";import{customElement as O,state as I}from"./vendor/lit.js";import{marked as p}from"./vendor/marked.js";function m(t){if(!t)return"auto";let e=t.trim();return/^\d+$/.test(e)?`span ${e}`:e}function u(t){if(!t)return{col:"auto",row:"auto"};let[e,r]=t.toLowerCase().split("x");return{col:m(e),row:m(r)}}var h=new Set(["info","warn","ok","danger"]),x=/^\d+(x\d+)?$/;function y(t){let e={};for(let r of t.trim().split(/\s+/).filter(Boolean)){let[n,a]=r.split("="),i=parseInt(a??"",10);n==="cols"&&i>=1&&(e.cols=i),n==="gap"&&i>=1&&i<=6&&(e.gap=i)}return e}function C(t){let e=[],r=null;for(let n of t.split(`
2
+ `)){let a=n.match(/^::\s?(.*)$/);a?(r&&e.push(r),r=_(a[1])):r&&(r.body+=(r.body?`
3
+ `:"")+n)}return r&&e.push(r),e}function _(t){let e=t.indexOf("|");if(e<0)return{title:t.trim(),body:""};let r={title:t.slice(e+1).trim(),body:""};for(let n of t.slice(0,e).trim().split(/\s+/).filter(Boolean))x.test(n)?r.span=n:h.has(n)&&(r.tone=n);return r}function $(t,e){let r=t.tone?` data-tone="${t.tone}"`:"",n="";if(t.span){let{col:o,row:l}=u(t.span);n=` style="grid-column:${o};grid-row:${l}"`}let a=t.title?`<h3>${e.inline(t.title)}</h3>`:"",i=t.body.trim()?e.block(t.body.trim()):"";return`<div class="md-card"${r}${n}>${a}${i}</div>`}function w(t,e,r){let n=e.cols??t.length,a=e.gap??3,i=t.map(o=>$(o,r)).join("");return`<div class="md-cards" style="--cards-cols:${n};--cards-gap:var(--rik-space-${a})">${i}</div>`}function k(t,e){let r=t.split(`
4
+ `),n=[],a=[],i=0;for(;i<r.length;){let o=r[i].match(/^:::\s*cards\b(.*)$/);if(!o){n.push(r[i]),i++;continue}let l=y(o[1]),d=[];for(i++;i<r.length&&!/^:::\s*$/.test(r[i]);)d.push(r[i]),i++;i++,a.push(w(C(d.join(`
5
+ `)),l,e)),n.push("",`<!--cards:${a.length-1}-->`,"")}return{text:n.join(`
6
+ `),blocks:a}}p.setOptions({gfm:!0,breaks:!1});var c=class extends z{constructor(){super(...arguments);this._html=""}connectedCallback(){super.connectedCallback(),this._parse()}reparse(){this._parse()}_parse(){let r=this.textContent??"",n=r.split(`
7
+ `),a=n.filter(s=>s.trim().length>0).reduce((s,g)=>Math.min(s,g.match(/^ */)?.[0].length??0),1/0),i=a===1/0?r:n.map(s=>s.slice(a)).join(`
8
+ `),{text:o,blocks:l}=k(i.trim(),{inline:s=>p.parseInline(s),block:s=>p.parse(s)}),d=p.parse(o);l.forEach((s,g)=>{d=d.replace(`<!--cards:${g}-->`,()=>s)}),this._html=d}render(){return N`<div class="content" .innerHTML="${this._html}"></div>`}};c.styles=S`:host{display:block;color:var(--rik-text-default--muted);font-family:var(--rik-font-sans)}h1,h2,h3,h4{color:var(--rik-text-default);font-weight:700;letter-spacing:-0.01em}h2{font-size:var(--rik-font-size-h2);margin-bottom:var(--rik-space-2)}h3{font-size:var(--rik-font-size-lead);margin-bottom:var(--rik-space-2);margin-top:var(--rik-space-3)}h4{font-size:var(--rik-font-size-body);margin-bottom:var(--rik-space-1);margin-top:var(--rik-space-3)}p{font-size:var(--rik-font-size-body);line-height:1.65;margin:0 0 var(--rik-space-3)}p:last-child{margin-bottom:0}strong{color:var(--rik-text-default);font-weight:700}em{font-style:italic}code{font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono-sm);background:var(--rik-surface-tint);padding:2px 6px;border-radius:var(--rik-radius-sm);color:var(--rik-text-default)}pre{background:var(--deck-md-pre-bg,var(--rik-code__bg));border:1px solid var(--deck-md-pre-border,var(--rik-code__border));border-radius:var(--rik-radius-md);padding:var(--rik-space-3) var(--rik-space-4);overflow:auto;font-family:var(--rik-font-mono);font-size:var(--rik-font-size-mono);line-height:1.75;color:var(--deck-md-pre-text,var(--rik-code__text));margin:0 0 var(--rik-space-3);box-shadow:var(--rik-elevation-2)}pre code{background:none;padding:0;color:inherit;border-radius:0}ul,ol{padding-left:1.4rem;margin:0 0 var(--rik-space-3)}li{margin-bottom:var(--rik-space-1);font-size:var(--rik-font-size-body);line-height:1.55}li::marker{color:var(--rik-accent)}a{color:var(--rik-accent);text-decoration:underline;text-decoration-thickness:1px}blockquote{border-left:3px solid var(--rik-accent);padding:var(--rik-space-1) var(--rik-space-3);color:var(--rik-text-default--faint);font-style:italic;margin:0 0 var(--rik-space-3)}hr{border:none;border-top:1px solid var(--rik-border-default);margin:var(--rik-space-4) 0}img{max-width:100%;height:auto;display:block;border-radius:var(--rik-radius-md);margin:0 0 var(--rik-space-3)}table{width:100%;border-collapse:collapse;font-size:var(--rik-font-size-body);margin:0 0 var(--rik-space-3)}th,td{border:1px solid var(--rik-border-default);padding:var(--rik-space-1) var(--rik-space-2);text-align:left;vertical-align:top}th{background:var(--rik-surface-tint);color:var(--rik-text-default);font-weight:700}.md-cards{display:grid;grid-template-columns:repeat(var(--cards-cols,2),minmax(0,1fr));gap:var(--cards-gap,var(--rik-space-3));margin:0 0 var(--rik-space-3)}.md-card{background:var(--rik-surface-raised--strong);border:1px solid var(--rik-border-default);border-radius:var(--rik-radius-lg);padding:var(--rik-space-3) var(--rik-space-4);container-type:inline-size;min-width:0}.md-card[data-tone="info"]{background:var(--rik-status-info__bg);border-color:var(--rik-status-info__border)}.md-card[data-tone="warn"]{background:var(--rik-status-warn__bg);border-color:var(--rik-status-warn__border)}.md-card[data-tone="ok"]{background:var(--rik-status-success__bg);border-color:var(--rik-status-success__border)}.md-card[data-tone="danger"]{background:var(--rik-status-danger__bg);border-color:var(--rik-status-danger__border)}.md-card h3{margin:0 0 var(--rik-space-2)}.md-card > :last-child{margin-bottom:0}.content{display:contents}`,f([I()],c.prototype,"_html",2),c=f([O("deck-md")],c);export{c as DeckMd};
@@ -1,3 +1,15 @@
1
- var c=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var s=(a,t,i,r)=>{for(var e=r>1?void 0:r?l(t,i):t,o=a.length-1,d;o>=0;o--)(d=a[o])&&(e=(r?d(t,i,e):d(e))||e);return r&&e&&c(t,i,e),e};import{LitElement as h,html as v,css as g}from"./vendor/lit.js";import{customElement as u,property as p,state as f}from"./vendor/lit.js";var m=!1;async function w(){m||(window.mermaid||await new Promise((a,t)=>{let i=document.createElement("script");i.src=new URL("./vendor/mermaid.min.js",import.meta.url).href,i.onload=()=>a(),i.onerror=()=>t(new Error("mermaid failed to load")),document.head.appendChild(i)}),window.mermaid.initialize({startOnLoad:!1,theme:"dark",themeVariables:{background:"#0f0f10",mainBkg:"#2a2a2a",nodeBorder:"#555",lineColor:"#777",textColor:"#e5e5e5",fontSize:"13px",edgeLabelBackground:"#111"},flowchart:{curve:"basis",htmlLabels:!0,padding:12},securityLevel:"loose"}),m=!0)}var b=0,n=class extends h{constructor(){super(...arguments);this.rendered=!1;this._svg="";this._source="";this._renderPromise=null}get renderedSvg(){return this._svg}get whenRendered(){return this._renderPromise??Promise.resolve()}connectedCallback(){super.connectedCallback(),this._source=(this.textContent??"").trim();let i=this._source.split(`
2
- `),r=i.filter(e=>e.trim()).reduce((e,o)=>Math.min(e,o.match(/^ */)?.[0].length??0),1/0);r<1/0&&(this._source=i.map(e=>e.slice(r)).join(`
3
- `)),this._renderPromise=this._render()}async _render(){if(!this._source)return;await w();let i=`mmd-${++b}`;try{let{svg:r}=await window.mermaid.render(i,this._source);this._svg=r,this.rendered=!0}catch(r){console.error("Mermaid render error",r);let e=r instanceof Error?r.message:String(r);this._svg=`<pre style="color:#f87171">${e}</pre>`}}render(){return v`<div class="canvas" .innerHTML="${this._svg}"></div>`}};n.styles=g`:host{display:flex;align-items:center;justify-content:center;background:var(--deck-mermaid-bg,var(--rik-code__bg));border:1px solid var(--deck-mermaid-border,var(--rik-code__border));border-radius:var(--deck-mermaid-radius,var(--rik-radius-md));padding:var(--deck-mermaid-padding,var(--rik-space-4));box-shadow:var(--rik-elevation-2);overflow:hidden;min-width:0}:host([compact]){padding:var(--rik-space-2)}.canvas{width:100%;max-width:100%;text-align:center;overflow:hidden}.canvas svg{width:100% !important;height:auto !important;max-width:100% !important;max-height:60cqh}:host([compact]) .canvas{max-width:60%}:host([compact]) .canvas svg{max-height:22cqh}`,s([p({type:Boolean,reflect:!0})],n.prototype,"rendered",2),s([f()],n.prototype,"_svg",2),n=s([u("deck-mermaid")],n);export{n as DeckMermaid};
1
+ var l=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var s=(i,n,t,r)=>{for(var e=r>1?void 0:r?h(n,t):n,o=i.length-1,d;o>=0;o--)(d=i[o])&&(e=(r?d(n,t,e):d(e))||e);return r&&e&&l(n,t,e),e};import{LitElement as p,html as u,css as v}from"./vendor/lit.js";import{customElement as f,property as w,state as b}from"./vendor/lit.js";var g={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function c(i){return i==null?"":String(i).replace(/[&<>"']/g,n=>g[n])}var m=!1;async function _(){if(m)return;window.mermaid||await new Promise((t,r)=>{let e=document.createElement("script");e.src=new URL("./vendor/mermaid.min.js",import.meta.url).href,e.onload=()=>t(),e.onerror=()=>r(new Error("mermaid failed to load")),document.head.appendChild(e)});let i=getComputedStyle(document.documentElement),n=t=>Object.fromEntries(Object.entries(t).map(([r,e])=>[r,i.getPropertyValue(e).trim()]).filter(([,r])=>r!==""));window.mermaid.initialize({startOnLoad:!1,theme:"dark",themeVariables:{...n({background:"--rik-code__bg",edgeLabelBackground:"--rik-code__bg",textColor:"--rik-code__text"}),mainBkg:"#2a2a2a",nodeBorder:"#555",lineColor:"#777",fontSize:"13px"},flowchart:{curve:"basis",htmlLabels:!0,padding:12},securityLevel:"strict"}),m=!0}var k=0,a=class extends p{constructor(){super(...arguments);this.rendered=!1;this._svg="";this._source="";this._renderPromise=null}get renderedSvg(){return this._svg}get whenRendered(){return this._renderPromise??Promise.resolve()}connectedCallback(){super.connectedCallback(),this._source=(this.textContent??"").trim();let t=this._source.split(`
2
+ `),r=t.filter(e=>e.trim()).reduce((e,o)=>Math.min(e,o.match(/^ */)?.[0].length??0),1/0);r<1/0&&(this._source=t.map(e=>e.slice(r)).join(`
3
+ `)),this._renderPromise=this._render()}async _render(){if(!this._source)return;await _();let t=`mmd-${++k}`;try{let{svg:r}=await window.mermaid.render(t,this._source);this._svg=r,this.rendered=!0}catch(r){console.error("Mermaid render error",r);let e=r instanceof Error?r.message:String(r);this._svg=`<pre style="color:#f87171">${c(e)}</pre>`}}render(){return u`<div class="canvas" .innerHTML="${this._svg}"></div>`}};a.styles=v`:host{display:flex;align-items:center;justify-content:center;background:var(--deck-mermaid-bg,var(--rik-code__bg));border:1px solid var(--deck-mermaid-border,var(--rik-code__border));border-radius:var(--deck-mermaid-radius,var(--rik-radius-md));padding:var(--deck-mermaid-padding,var(--rik-space-4));box-shadow:var(--rik-elevation-2);overflow:hidden;min-width:0}:host([compact]){padding:var(--rik-space-2)}/* The canvas takes the host's content box so the diagram can be capped against the room it actually has. Capping the SVG at 60cqh alone measures the slide,not this box:a diagram beside a two-line title then drew taller than the space left for it and the box clipped,which \`rikiki check\` reports in pixels. */
4
+ .canvas {
5
+ width: 100%; max-width: 100%; height: 100%; min-height: 0;
6
+ display: flex; align-items: center; justify-content: center;
7
+ text-align: center; overflow: hidden;
8
+ }
9
+ .canvas svg {
10
+ width: 100% !important; height: auto !important; max-width: 100% !important;
11
+ max-height: min(60cqh, 100%) !important;
12
+ }
13
+ :host([compact]) .canvas { max-width: 60%; }
14
+ :host([compact]) .canvas svg { max-height: 22cqh; }
15
+ `,s([w({type:Boolean,reflect:!0})],a.prototype,"rendered",2),s([b()],a.prototype,"_svg",2),a=s([f("deck-mermaid")],a);export{a as DeckMermaid};