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.
- package/.claude/skills/rikiki-debug/SKILL.md +17 -7
- package/.claude/skills/rikiki-deck/SKILL.md +362 -77
- package/.claude/skills/rikiki-theme/SKILL.md +1 -1
- package/README.md +69 -50
- package/bin/lib/assemble.mjs +154 -0
- package/bin/lib/box-geometry.mjs +66 -0
- package/bin/lib/browser.mjs +302 -0
- package/bin/lib/check-api.d.ts +28 -0
- package/bin/lib/check-api.mjs +6 -0
- package/bin/lib/check-plugins.mjs +228 -0
- package/bin/lib/check.mjs +1347 -0
- package/bin/lib/cli-error.mjs +26 -0
- package/bin/lib/component-deps.mjs +69 -0
- package/bin/lib/diff.mjs +275 -0
- package/bin/lib/export-pdf.mjs +65 -0
- package/bin/lib/graph-hit.mjs +86 -0
- package/bin/lib/inline.mjs +137 -39
- package/bin/lib/narrative.mjs +77 -0
- package/bin/lib/prune-icons.mjs +104 -0
- package/bin/lib/render.mjs +195 -0
- package/bin/lib/scan-external.mjs +126 -0
- package/bin/lib/starter.mjs +27 -14
- package/bin/lib/visual.mjs +120 -0
- package/bin/rikiki.mjs +420 -35
- package/dist/annotation-marks.d.ts +60 -0
- package/dist/annotation-marks.js +1 -0
- package/dist/bar-segments.d.ts +28 -0
- package/dist/bar-segments.js +1 -0
- package/dist/browser-location.d.ts +3 -0
- package/dist/browser-location.js +1 -0
- package/dist/cards-syntax.d.ts +31 -0
- package/dist/cards-syntax.js +6 -0
- package/dist/{plugins/click-stages.d.ts → click-stages.d.ts} +1 -1
- package/dist/deck-agenda.d.ts +25 -0
- package/dist/deck-agenda.js +6 -0
- package/dist/deck-annotate.d.ts +108 -0
- package/dist/deck-annotate.js +18 -0
- package/dist/deck-bar.d.ts +32 -0
- package/dist/deck-bar.js +19 -0
- package/dist/deck-bento.d.ts +38 -0
- package/dist/deck-bento.js +4 -0
- package/dist/{molecules/deck-callout.d.ts → deck-callout.d.ts} +2 -0
- package/dist/deck-callout.js +1 -1
- package/dist/deck-cell.d.ts +19 -0
- package/dist/deck-cell.js +1 -0
- package/dist/deck-checklist.d.ts +20 -0
- package/dist/deck-checklist.js +1 -0
- package/dist/{layouts/deck-cover.d.ts → deck-cover.d.ts} +8 -0
- package/dist/deck-cover.js +9 -6
- package/dist/deck-csv.d.ts +38 -0
- package/dist/deck-csv.js +15 -0
- package/dist/deck-feature-cards.js +2 -2
- package/dist/deck-feature.d.ts +18 -0
- package/dist/deck-feature.js +2 -2
- package/dist/deck-figure.d.ts +26 -0
- package/dist/deck-figure.js +8 -0
- package/dist/deck-fit.d.ts +14 -0
- package/dist/deck-fit.js +1 -0
- package/dist/deck-flow.d.ts +41 -0
- package/dist/deck-flow.js +7 -0
- package/dist/deck-graph.d.ts +92 -0
- package/dist/deck-graph.js +25 -0
- package/dist/deck-grid.js +1 -1
- package/dist/deck-icon.d.ts +20 -0
- package/dist/deck-icon.js +1 -0
- package/dist/{atoms/deck-kicker.d.ts → deck-kicker.d.ts} +5 -0
- package/dist/deck-kicker.js +1 -1
- package/dist/deck-kpi-grid.d.ts +26 -0
- package/dist/deck-kpi-grid.js +4 -0
- package/dist/deck-link.d.ts +21 -0
- package/dist/deck-link.js +1 -0
- package/dist/{molecules/deck-md.d.ts → deck-md.d.ts} +3 -0
- package/dist/deck-md.js +8 -3
- package/dist/deck-mermaid.js +15 -3
- package/dist/deck-outline.d.ts +50 -0
- package/dist/deck-outline.js +1 -0
- package/dist/deck-overview.js +53 -39
- package/dist/deck-persona.d.ts +31 -0
- package/dist/deck-persona.js +6 -0
- package/dist/deck-photo.js +1 -1
- package/dist/deck-point.d.ts +22 -0
- package/dist/deck-point.js +1 -0
- package/dist/deck-presenter.js +120 -48
- package/dist/deck-pull.d.ts +13 -0
- package/dist/deck-pull.js +1 -0
- package/dist/{atoms/deck-punch.d.ts → deck-punch.d.ts} +6 -0
- package/dist/deck-punch.js +1 -1
- package/dist/deck-quote.d.ts +28 -0
- package/dist/deck-quote.js +6 -0
- package/dist/{runtime/deck-root.d.ts → deck-root.d.ts} +88 -8
- package/dist/deck-root.js +17 -13
- package/dist/deck-section.js +2 -2
- package/dist/deck-source.d.ts +12 -0
- package/dist/deck-source.js +2 -0
- package/dist/deck-split.d.ts +30 -0
- package/dist/deck-split.js +5 -3
- package/dist/{molecules/deck-stat.d.ts → deck-stat.d.ts} +2 -0
- package/dist/deck-stat.js +2 -2
- package/dist/{molecules/deck-step-list.d.ts → deck-step-list.d.ts} +8 -0
- package/dist/deck-step-list.js +4 -2
- package/dist/deck-table.d.ts +26 -0
- package/dist/deck-table.js +1 -0
- package/dist/deck-takeaway.d.ts +18 -0
- package/dist/deck-takeaway.js +2 -2
- package/dist/deck-timeline.d.ts +37 -0
- package/dist/deck-timeline.js +5 -0
- package/dist/deck-transition.js +3 -3
- package/dist/deck-versus.d.ts +18 -0
- package/dist/deck-versus.js +9 -0
- package/dist/deep-link.d.ts +29 -0
- package/dist/deep-link.js +1 -0
- package/dist/escape-html.d.ts +3 -0
- package/dist/escape-html.js +1 -0
- package/dist/fit-controller.d.ts +27 -0
- package/dist/fit-controller.js +1 -0
- package/dist/graph-layout.d.ts +35 -0
- package/dist/graph-layout.js +1 -0
- package/dist/grid-tracks.d.ts +17 -0
- package/dist/grid-tracks.js +1 -0
- package/dist/icon-set.d.ts +6 -0
- package/dist/icon-set.js +1 -0
- package/dist/index.d.ts +37 -31
- package/dist/index.js +95 -49
- package/dist/keymap.d.ts +40 -0
- package/dist/keymap.js +1 -0
- package/dist/mouse-nav.d.ts +12 -0
- package/dist/mouse-nav.js +1 -0
- package/dist/navigation.d.ts +25 -0
- package/dist/navigation.js +1 -0
- package/dist/parse-csv.d.ts +9 -0
- package/dist/parse-csv.js +3 -0
- package/dist/shared-styles.js +1 -1
- package/dist/shiki.d.ts +8 -0
- package/dist/signature.d.ts +2 -0
- package/dist/signature.js +1 -0
- package/dist/slide-fill.d.ts +8 -0
- package/dist/slide-fill.js +1 -0
- package/dist/standalone.js +301 -169
- package/dist/vendor/THIRD-PARTY-NOTICES.txt +4347 -0
- package/dist/vendor/inventory.json +3029 -0
- package/dist/vendor/lit.js +62 -2
- package/dist/vendor/mermaid.min.js +95 -95
- package/dist/vendor/shiki.js +1 -57
- package/dist/viewport.d.ts +42 -0
- package/dist/viewport.js +1 -0
- package/docs/llms/rikiki-reference.md +955 -64
- package/docs/llms/rikiki-workflow.md +536 -0
- package/llms.txt +39 -12
- package/package.json +33 -12
- package/themes/rikiki.css +173 -47
- package/themes/siliceum.css +171 -51
- package/dist/layouts/deck-feature.d.ts +0 -11
- package/dist/layouts/deck-split.d.ts +0 -18
- package/dist/layouts/deck-takeaway.d.ts +0 -11
- package/dist/plugins/shiki.d.ts +0 -8
- /package/dist/{runtime/color.d.ts → color.d.ts} +0 -0
- /package/dist/{atoms/deck-badge.d.ts → deck-badge.d.ts} +0 -0
- /package/dist/{molecules/deck-card.d.ts → deck-card.d.ts} +0 -0
- /package/dist/{atoms/deck-code-highlighter.d.ts → deck-code-highlighter.d.ts} +0 -0
- /package/dist/{atoms/deck-code.d.ts → deck-code.d.ts} +0 -0
- /package/dist/{layouts/deck-feature-cards.d.ts → deck-feature-cards.d.ts} +0 -0
- /package/dist/{molecules/deck-grid.d.ts → deck-grid.d.ts} +0 -0
- /package/dist/{runtime/deck-help.d.ts → deck-help.d.ts} +0 -0
- /package/dist/{molecules/deck-mermaid.d.ts → deck-mermaid.d.ts} +0 -0
- /package/dist/{molecules/deck-metric.d.ts → deck-metric.d.ts} +0 -0
- /package/dist/{runtime/deck-notes.d.ts → deck-notes.d.ts} +0 -0
- /package/dist/{runtime/deck-overview.d.ts → deck-overview.d.ts} +0 -0
- /package/dist/{layouts/deck-photo.d.ts → deck-photo.d.ts} +0 -0
- /package/dist/{runtime/deck-presenter.d.ts → deck-presenter.d.ts} +0 -0
- /package/dist/{layouts/deck-section.d.ts → deck-section.d.ts} +0 -0
- /package/dist/{molecules/deck-shortcut.d.ts → deck-shortcut.d.ts} +0 -0
- /package/dist/{molecules/deck-stack.d.ts → deck-stack.d.ts} +0 -0
- /package/dist/{molecules/deck-tier-list.d.ts → deck-tier-list.d.ts} +0 -0
- /package/dist/{runtime/deck-transition.d.ts → deck-transition.d.ts} +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** A run of consecutive slides under one section heading. */
|
|
2
|
+
export interface Chapter {
|
|
3
|
+
/** Index of the chapter's first slide in the flat slide list. */
|
|
4
|
+
readonly start: number;
|
|
5
|
+
/** How many slides the chapter holds · always >= 1. */
|
|
6
|
+
readonly length: number;
|
|
7
|
+
}
|
|
8
|
+
/** Slide count plus chapter structure · everything navigation needs to know
|
|
9
|
+
* about the deck's shape, and nothing about its content. */
|
|
10
|
+
export interface DeckOutline {
|
|
11
|
+
readonly slideCount: number;
|
|
12
|
+
readonly chapters: readonly Chapter[];
|
|
13
|
+
}
|
|
14
|
+
/** Where the deck is · a slide and a step within it. */
|
|
15
|
+
export interface DeckPosition {
|
|
16
|
+
readonly slide: number;
|
|
17
|
+
readonly step: number;
|
|
18
|
+
}
|
|
19
|
+
/** A coordinate in the 2D (chapter × slide) model. */
|
|
20
|
+
export interface DeckCoords {
|
|
21
|
+
readonly chapter: number;
|
|
22
|
+
readonly index: number;
|
|
23
|
+
}
|
|
24
|
+
/** How many steps a slide has · injected, because the count comes from the DOM
|
|
25
|
+
* and from plugin hooks, which the domain must not know about. */
|
|
26
|
+
export type StepsOf = (slide: number) => number;
|
|
27
|
+
export declare const EMPTY_OUTLINE: DeckOutline;
|
|
28
|
+
/** Build an outline from the slides' tag names.
|
|
29
|
+
*
|
|
30
|
+
* A `deck-section` opens a new chapter; anything else joins the current one.
|
|
31
|
+
* The first slide always opens one, whatever its tag, so every slide belongs
|
|
32
|
+
* to exactly one chapter. */
|
|
33
|
+
export declare function outlineOf(tagNames: readonly string[]): DeckOutline;
|
|
34
|
+
/** Is 2D navigation meaningful for this outline?
|
|
35
|
+
*
|
|
36
|
+
* It is opt-in (`nav="2d"`) AND needs a structure that makes sense: more than
|
|
37
|
+
* one chapter, at least one of them holding more than one slide. Without the
|
|
38
|
+
* opt-in the arrows stay linear, so a sectioned deck does not surprise its
|
|
39
|
+
* author by remapping left/right to chapter jumps. */
|
|
40
|
+
export declare function supportsTwoD(outline: DeckOutline, optedIn: boolean): boolean;
|
|
41
|
+
/** Flat slide index → chapter coordinate. Falls back to the origin for an index
|
|
42
|
+
* that belongs to no chapter (an empty deck). */
|
|
43
|
+
export declare function coordsOf(outline: DeckOutline, slide: number): DeckCoords;
|
|
44
|
+
/** Chapter coordinate → flat slide index.
|
|
45
|
+
*
|
|
46
|
+
* An out-of-range chapter clamps to the nearest one rather than snapping back
|
|
47
|
+
* to slide 0: a deep link to a coordinate that no longer exists (a chapter
|
|
48
|
+
* removed while iterating) should land on the closest valid slide. */
|
|
49
|
+
export declare function slideAt(outline: DeckOutline, coords: DeckCoords): number | null;
|
|
50
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s={slideCount:0,chapters:[]};function l(t){let e=[];return t.forEach((r,n)=>{if(r.toLowerCase()==="deck-section"||e.length===0)e.push({start:n,length:1});else{let c=e[e.length-1];e[e.length-1]={start:c.start,length:c.length+1}}}),{slideCount:t.length,chapters:e}}function p(t,e){return e&&t.chapters.length>1&&t.chapters.some(r=>r.length>1)}function h(t,e){for(let r=0;r<t.chapters.length;r++){let n=t.chapters[r],o=e-n.start;if(o>=0&&o<n.length)return{chapter:r,index:o}}return{chapter:0,index:0}}function u(t,e){if(t.chapters.length===0)return null;let r=a(e.chapter,0,t.chapters.length-1),n=t.chapters[r],o=a(e.index,0,n.length-1);return n.start+o}function a(t,e,r){return Number.isNaN(t)?e:Math.max(e,Math.min(r,t))}export{s as EMPTY_OUTLINE,a as clamp,h as coordsOf,l as outlineOf,u as slideAt,p as supportsTwoD};
|
package/dist/deck-overview.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
1
|
+
var F="data-deck-overview",K=new WeakMap,R=new WeakMap;function J(t){let r=t.outerHTML,o=r.indexOf(">");return r.slice(0,o).replace(/\sactive(?:="[^"]*")?/,"")+r.slice(o)}var Q=`
|
|
2
2
|
:host([overview]) ::slotted(*) { display: none !important; }
|
|
3
|
-
:host([overview]) #overview-grid {
|
|
3
|
+
:host(:is([overview], [data-overview-warming])) #overview-grid {
|
|
4
4
|
position: fixed; inset: 0;
|
|
5
5
|
background: var(--rik-surface-page);
|
|
6
6
|
overflow: hidden;
|
|
@@ -10,7 +10,7 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/* \u2500\u2500 Top bar \xB7 search, slide count, close hint \u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
13
|
-
:host([overview]) .ov-bar {
|
|
13
|
+
:host(:is([overview], [data-overview-warming])) .ov-bar {
|
|
14
14
|
display: flex; align-items: center; gap: 16px;
|
|
15
15
|
padding: 14px 28px;
|
|
16
16
|
background: var(--rik-surface-raised);
|
|
@@ -19,7 +19,7 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
19
19
|
letter-spacing: 0.10em;
|
|
20
20
|
color: var(--rik-text-default--faint);
|
|
21
21
|
}
|
|
22
|
-
:host([overview]) .ov-bar .ov-search {
|
|
22
|
+
:host(:is([overview], [data-overview-warming])) .ov-bar .ov-search {
|
|
23
23
|
flex: 1;
|
|
24
24
|
appearance: none;
|
|
25
25
|
background: var(--rik-surface-raised--strong);
|
|
@@ -31,28 +31,28 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
31
31
|
letter-spacing: 0;
|
|
32
32
|
max-width: 480px;
|
|
33
33
|
}
|
|
34
|
-
:host([overview]) .ov-bar .ov-search:focus {
|
|
34
|
+
:host(:is([overview], [data-overview-warming])) .ov-bar .ov-search:focus {
|
|
35
35
|
outline: none;
|
|
36
36
|
border-color: var(--rik-accent);
|
|
37
37
|
box-shadow: 0 0 0 3px var(--rik-accent--soft);
|
|
38
38
|
}
|
|
39
|
-
:host([overview]) .ov-bar .ov-count { color: var(--rik-accent); }
|
|
40
|
-
:host([overview]) .ov-bar .ov-hint { letter-spacing: 0.16em; text-transform: uppercase; }
|
|
39
|
+
:host(:is([overview], [data-overview-warming])) .ov-bar .ov-count { color: var(--rik-accent); }
|
|
40
|
+
:host(:is([overview], [data-overview-warming])) .ov-bar .ov-hint { letter-spacing: 0.16em; text-transform: uppercase; }
|
|
41
41
|
|
|
42
42
|
/* \u2500\u2500 Sidebar layout (many slides) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
43
|
-
:host([overview]) .ov-body {
|
|
43
|
+
:host(:is([overview], [data-overview-warming])) .ov-body {
|
|
44
44
|
display: grid;
|
|
45
45
|
grid-template-columns: 240px 1fr;
|
|
46
46
|
min-height: 0;
|
|
47
47
|
}
|
|
48
|
-
:host([overview]) .ov-body.compact { grid-template-columns: 1fr; }
|
|
49
|
-
:host([overview]) .ov-aside {
|
|
48
|
+
:host(:is([overview], [data-overview-warming])) .ov-body.compact { grid-template-columns: 1fr; }
|
|
49
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside {
|
|
50
50
|
border-right: 1px solid var(--rik-border-default);
|
|
51
51
|
background: var(--rik-surface-raised);
|
|
52
52
|
overflow-y: auto;
|
|
53
53
|
padding: 16px 0;
|
|
54
54
|
}
|
|
55
|
-
:host([overview]) .ov-aside-item {
|
|
55
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside-item {
|
|
56
56
|
display: grid;
|
|
57
57
|
grid-template-columns: 36px 1fr;
|
|
58
58
|
gap: 10px;
|
|
@@ -63,84 +63,84 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
63
63
|
color: var(--rik-text-default--muted);
|
|
64
64
|
transition: background 0.12s, color 0.12s, border-color 0.12s;
|
|
65
65
|
}
|
|
66
|
-
:host([overview]) .ov-aside-item:hover {
|
|
66
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside-item:hover {
|
|
67
67
|
background: var(--rik-surface-tint);
|
|
68
68
|
color: var(--rik-text-default);
|
|
69
69
|
}
|
|
70
|
-
:host([overview]) .ov-aside-item[data-active] {
|
|
70
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside-item[data-active] {
|
|
71
71
|
background: var(--rik-accent--faint);
|
|
72
72
|
border-left-color: var(--rik-accent);
|
|
73
73
|
color: var(--rik-text-default);
|
|
74
74
|
}
|
|
75
|
-
:host([overview]) .ov-aside-num {
|
|
75
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside-num {
|
|
76
76
|
font: 800 0.85rem/1 var(--rik-font-mono);
|
|
77
77
|
color: var(--rik-accent);
|
|
78
78
|
}
|
|
79
|
-
:host([overview]) .ov-aside-text {
|
|
79
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside-text {
|
|
80
80
|
font: 700 0.92rem/1.3 var(--rik-font-display, var(--rik-font-sans));
|
|
81
81
|
letter-spacing: -0.005em;
|
|
82
82
|
}
|
|
83
|
-
:host([overview]) .ov-aside-count {
|
|
83
|
+
:host(:is([overview], [data-overview-warming])) .ov-aside-count {
|
|
84
84
|
font: 600 0.70rem/1 var(--rik-font-mono);
|
|
85
85
|
color: var(--rik-text-default--faint);
|
|
86
86
|
margin-top: 4px;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
/* \u2500\u2500 Main scroll area \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
90
|
-
:host([overview]) .ov-main {
|
|
90
|
+
:host(:is([overview], [data-overview-warming])) .ov-main {
|
|
91
91
|
overflow-y: auto;
|
|
92
92
|
padding: 24px 32px 48px;
|
|
93
93
|
display: flex; flex-direction: column;
|
|
94
94
|
gap: 32px;
|
|
95
95
|
min-width: 0;
|
|
96
96
|
}
|
|
97
|
-
:host([overview]) .ov-chapter {
|
|
97
|
+
:host(:is([overview], [data-overview-warming])) .ov-chapter {
|
|
98
98
|
display: flex; flex-direction: column;
|
|
99
99
|
gap: 12px;
|
|
100
100
|
scroll-margin-top: 24px;
|
|
101
101
|
}
|
|
102
|
-
:host([overview]) .ov-chapter-head {
|
|
102
|
+
:host(:is([overview], [data-overview-warming])) .ov-chapter-head {
|
|
103
103
|
display: flex; align-items: baseline; gap: 12px;
|
|
104
104
|
padding-bottom: 6px;
|
|
105
105
|
border-bottom: 2px solid var(--rik-accent);
|
|
106
106
|
}
|
|
107
|
-
:host([overview]) .ov-chapter-num {
|
|
107
|
+
:host(:is([overview], [data-overview-warming])) .ov-chapter-num {
|
|
108
108
|
font: 800 0.85rem/1 var(--rik-font-mono);
|
|
109
109
|
color: var(--rik-accent);
|
|
110
110
|
letter-spacing: 0.12em;
|
|
111
111
|
}
|
|
112
|
-
:host([overview]) .ov-chapter-title {
|
|
112
|
+
:host(:is([overview], [data-overview-warming])) .ov-chapter-title {
|
|
113
113
|
font: 800 1.2rem/1.2 var(--rik-font-display, var(--rik-font-sans));
|
|
114
114
|
color: var(--rik-text-default);
|
|
115
115
|
letter-spacing: -0.012em;
|
|
116
116
|
flex: 1;
|
|
117
117
|
min-width: 0;
|
|
118
118
|
}
|
|
119
|
-
:host([overview]) .ov-chapter-count {
|
|
119
|
+
:host(:is([overview], [data-overview-warming])) .ov-chapter-count {
|
|
120
120
|
font: 700 0.72rem/1 var(--rik-font-mono);
|
|
121
121
|
color: var(--rik-text-default--faint);
|
|
122
122
|
letter-spacing: 0.1em;
|
|
123
123
|
text-transform: uppercase;
|
|
124
124
|
}
|
|
125
|
-
:host([overview]) .ov-row {
|
|
125
|
+
:host(:is([overview], [data-overview-warming])) .ov-row {
|
|
126
126
|
display: grid;
|
|
127
127
|
grid-template-columns: repeat(auto-fill, minmax(var(--ov-cell-min, 180px), 1fr));
|
|
128
128
|
gap: 12px;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
/* \u2500\u2500 Path layout (\u2264 60 slides) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
132
|
-
:host([overview]) .ov-path .ov-row {
|
|
132
|
+
:host(:is([overview], [data-overview-warming])) .ov-path .ov-row {
|
|
133
133
|
display: flex; gap: 14px; align-items: center; flex-wrap: wrap;
|
|
134
134
|
}
|
|
135
|
-
:host([overview]) .ov-path .ov-connector {
|
|
135
|
+
:host(:is([overview], [data-overview-warming])) .ov-path .ov-connector {
|
|
136
136
|
flex: 0 0 auto;
|
|
137
137
|
width: 16px; height: 2px;
|
|
138
138
|
background: var(--rik-border-default);
|
|
139
139
|
}
|
|
140
|
-
:host([overview]) .ov-path .ov-cell { flex: 0 0 auto; width: clamp(160px, 14vw, 260px); }
|
|
140
|
+
:host(:is([overview], [data-overview-warming])) .ov-path .ov-cell { flex: 0 0 auto; width: clamp(160px, 14vw, 260px); }
|
|
141
141
|
|
|
142
142
|
/* \u2500\u2500 Thumbnail cell \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
143
|
-
:host([overview]) .ov-cell {
|
|
143
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell {
|
|
144
144
|
position: relative;
|
|
145
145
|
aspect-ratio: 16 / 9;
|
|
146
146
|
background:
|
|
@@ -151,20 +151,33 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
151
151
|
cursor: pointer;
|
|
152
152
|
transition: border-color 0.12s ease, transform 0.12s ease, box-shadow 0.12s ease, opacity 0.15s;
|
|
153
153
|
box-shadow: var(--rik-elevation-1);
|
|
154
|
+
/* It is a <button> now \xB7 drop the UA chrome, keep the tile look. */
|
|
155
|
+
padding: 0;
|
|
156
|
+
font: inherit;
|
|
157
|
+
color: inherit;
|
|
158
|
+
text-align: left;
|
|
159
|
+
appearance: none;
|
|
160
|
+
}
|
|
161
|
+
/* The keyboard user must see where they are \xB7 without this the grid moves
|
|
162
|
+
focus invisibly. */
|
|
163
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell:focus-visible {
|
|
164
|
+
outline: var(--rik-focus-ring--width, 2px) solid var(--rik-focus-ring, currentColor);
|
|
165
|
+
outline-offset: var(--rik-focus-ring--offset, 2px);
|
|
166
|
+
z-index: 2;
|
|
154
167
|
}
|
|
155
|
-
:host([overview]) .ov-cell:hover {
|
|
168
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell:hover {
|
|
156
169
|
transform: translateY(-2px) scale(1.015);
|
|
157
170
|
border-color: var(--rik-accent--soft);
|
|
158
171
|
box-shadow: var(--rik-elevation-3);
|
|
159
172
|
z-index: 1;
|
|
160
173
|
}
|
|
161
|
-
:host([overview]) .ov-cell[data-current] {
|
|
174
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell[data-current] {
|
|
162
175
|
border-color: var(--rik-accent);
|
|
163
176
|
box-shadow: 0 0 0 3px var(--rik-accent--soft), var(--rik-elevation-2);
|
|
164
177
|
}
|
|
165
|
-
:host([overview]) .ov-cell[data-filtered-out] { opacity: 0.10; pointer-events: none; transform: scale(0.96); }
|
|
166
|
-
:host([overview]) .ov-cell:not([data-loaded]) .ov-thumb { display: none; }
|
|
167
|
-
:host([overview]) .ov-cell:not([data-loaded])::before {
|
|
178
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell[data-filtered-out] { opacity: 0.10; pointer-events: none; transform: scale(0.96); }
|
|
179
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell:not([data-loaded]) .ov-thumb { display: none; }
|
|
180
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell:not([data-loaded])::before {
|
|
168
181
|
content: '';
|
|
169
182
|
position: absolute; inset: 0;
|
|
170
183
|
background:
|
|
@@ -184,7 +197,7 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
184
197
|
/* The thumb mirrors the letterboxed stage, so make it a size container too \xB7
|
|
185
198
|
the cloned slide's cqw/cqh then resolve exactly as they do live instead of
|
|
186
199
|
falling back to the (larger) window. */
|
|
187
|
-
:host([overview]) .ov-thumb {
|
|
200
|
+
:host(:is([overview], [data-overview-warming])) .ov-thumb {
|
|
188
201
|
position: absolute; top: 0; left: 0;
|
|
189
202
|
width: var(--ov-thumb-w, 1920px); height: var(--ov-thumb-h, 1080px);
|
|
190
203
|
transform: scale(var(--overview-scale, 0.2));
|
|
@@ -192,8 +205,8 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
192
205
|
pointer-events: none;
|
|
193
206
|
container-type: size;
|
|
194
207
|
}
|
|
195
|
-
:host([overview]) .ov-thumb > * { display: flex !important; }
|
|
196
|
-
:host([overview]) .ov-mermaid-snap {
|
|
208
|
+
:host(:is([overview], [data-overview-warming])) .ov-thumb > * { display: flex !important; }
|
|
209
|
+
:host(:is([overview], [data-overview-warming])) .ov-mermaid-snap {
|
|
197
210
|
display: flex; align-items: center; justify-content: center;
|
|
198
211
|
background: var(--rik-code__bg);
|
|
199
212
|
border: 1px solid var(--rik-code__border);
|
|
@@ -201,11 +214,11 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
201
214
|
padding: var(--rik-space-4);
|
|
202
215
|
overflow: hidden; min-width: 0;
|
|
203
216
|
}
|
|
204
|
-
:host([overview]) .ov-mermaid-snap svg {
|
|
217
|
+
:host(:is([overview], [data-overview-warming])) .ov-mermaid-snap svg {
|
|
205
218
|
width: 100% !important; height: auto !important;
|
|
206
219
|
max-width: 100% !important; max-height: 60cqh;
|
|
207
220
|
}
|
|
208
|
-
:host([overview]) .ov-cell-label {
|
|
221
|
+
:host(:is([overview], [data-overview-warming])) .ov-cell-label {
|
|
209
222
|
position: absolute; bottom: 6px; right: 8px;
|
|
210
223
|
font: 700 0.70rem/1 var(--rik-font-mono);
|
|
211
224
|
color: var(--rik-text-default);
|
|
@@ -214,5 +227,6 @@ var q="data-deck-overview",I="data-overview-tokens",R=`
|
|
|
214
227
|
z-index: 2;
|
|
215
228
|
pointer-events: none;
|
|
216
229
|
}
|
|
217
|
-
:host(:not([overview])) #overview-grid {
|
|
218
|
-
|
|
230
|
+
:host(:not([overview])) #overview-grid { visibility: hidden; pointer-events: none; }
|
|
231
|
+
:host(:not([overview]):not([data-overview-warming])) #overview-grid { display: none; }
|
|
232
|
+
`;function X(t){if(t.querySelector(`style[${F}]`))return;let r=document.createElement("style");r.setAttribute(F,"1"),r.textContent=Q,t.appendChild(r)}function G(t){let o=t.slides[0]?.querySelector("h1");return o?Array.from(o.childNodes).map(i=>i.nodeName==="BR"?" ":i.textContent??"").join("").replace(/\s+/g," ").trim()||`Slide ${t.startIdx+1}`:`Slide ${t.startIdx+1}`}function U(t){return(t.textContent||"").replace(/\s+/g," ").trim().slice(0,400).toLowerCase()}var Z=["fill","stroke","clip-path","mask","filter","marker-start","marker-mid","marker-end","style"];function ee(t,r){let o=new Map;if(t.querySelectorAll("[id]").forEach(s=>{o.set(s.id,s.id+r),s.id=s.id+r}),o.size===0)return;let i=s=>s.replace(/url\(['"]?#([^'")]+)['"]?\)/g,(n,l)=>o.has(l)?`url(#${o.get(l)})`:n);t.querySelectorAll("*").forEach(s=>{for(let n of Z){let l=s.getAttribute(n);l?.includes("url(")&&s.setAttribute(n,i(l))}for(let n of["href","xlink:href"]){let l=s.getAttribute(n);l?.startsWith("#")&&o.has(l.slice(1))&&s.setAttribute(n,`#${o.get(l.slice(1))}`)}});let u=t.querySelectorAll("style");if(u.length){let s=n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");u.forEach(n=>{let l=n.textContent??"";o.forEach((g,h)=>{l=l.replace(new RegExp(`#${s(h)}(?![\\w-])`,"g"),`#${g}`)}),n.textContent=l})}}function te(t,r){let o=t.querySelectorAll("svg");r.querySelectorAll("svg").forEach((i,u)=>{let s=o[u]?.getBoundingClientRect();if(s&&s.width>0)i.setAttribute("width",String(Math.round(s.width))),i.setAttribute("height",String(Math.round(s.height))),i.style.maxWidth="100%";else if(i.hasAttribute("viewBox")&&!i.hasAttribute("width")){let n=(i.getAttribute("viewBox")??"").split(/[\s,]+/).map(Number);n.length===4&&n[2]>0&&(i.setAttribute("width",String(n[2])),i.setAttribute("height",String(n[3])),i.style.maxWidth="100%",i.style.height="auto")}})}function re(t,r){let o=t.querySelectorAll("deck-mermaid");r.querySelectorAll("deck-mermaid").forEach((i,u)=>{let s=o[u],n=document.createElement("div");n.className="ov-mermaid-snap",n.innerHTML=s?.renderedSvg??"";let l=s?.getBoundingClientRect();l&&l.width>0&&(n.style.width=`${l.width}px`,n.style.height=`${l.height}px`),i.replaceWith(n)})}function ie(t){t.querySelectorAll("[data-click], [data-click-auto], [data-click-children], [data-click-stagger] > *").forEach(r=>{r.style.opacity="",r.style.transform="",r.style.filter="",r.style.pointerEvents="",r.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect").forEach(o=>{o.style.strokeDashoffset=""})})}function oe(t,r){let o=t.cloneNode(!0);return o.setAttribute("active",""),ie(o),te(t,o),re(t,o),ee(o,`-ov${r}`),o}async function ne(t,r,o,i){let u=i+":"+t.dataset.idx+":"+r.outerHTML,s=o.get(r);if(s?.key===u){t.insertBefore(s.thumb,t.firstChild),t.dataset.loaded="1",delete t.dataset.building;return}let n=Array.from(r.querySelectorAll("deck-mermaid")).map(f=>f.whenRendered).filter(f=>!!f);if(n.length&&await Promise.all(n).catch(()=>{}),!t.isConnected)return;s?.thumb.remove();let l=document.createElement("div");l.className="ov-thumb";let g=l.attachShadow({mode:"open"});for(let f of document.querySelectorAll('link[rel="stylesheet"], style'))g.appendChild(f.cloneNode(!0));let h=document.createElement("deck-root");h.setAttribute("data-overview-snapshot","");for(let f of["preview","no-hint","no-arrows","no-counter"])h.setAttribute(f,"");let b=r.closest("deck-root");for(let f of["width","height","class","lang","dir","style"]){let E=b?.getAttribute(f);E!=null&&h.setAttribute(f,E)}h.style.cssText+=";position:absolute;inset:0;width:100%;height:100%;",h.appendChild(oe(r,Number(t.dataset.idx))),g.appendChild(h),o.set(r,{key:u,thumb:l}),t.insertBefore(l,t.firstChild),t.dataset.loaded="1",delete t.dataset.building}function ae(t,r){let o=t.shadowRoot;if(!o)return()=>{};X(o);let i=o.querySelector("#overview-grid");i||(i=document.createElement("div"),i.id="overview-grid",o.appendChild(i));let u=K.get(t);u||(u=new Map,K.set(t,u));let s=new Set(r.slides);for(let[e,c]of u)s.has(e)||(c.thumb.remove(),u.delete(e));let n=Array.from(document.querySelectorAll('link[rel="stylesheet"], style')).filter(e=>!e.id.startsWith("rik-deck-")).map(e=>e.outerHTML).join("")+["width","height","class","lang","dir","style"].map(e=>t.getAttribute(e)).join("|"),l=n+r.slides.map(J).join("")+JSON.stringify(r.chapters.map(e=>e.startIdx)),g=R.get(t);if(g?.key===l)return i.querySelectorAll(".ov-cell").forEach(e=>{let c=Number(e.dataset.idx)===r.currentIdx;e.toggleAttribute("data-current",c),c?e.setAttribute("aria-current","true"):e.removeAttribute("aria-current")}),requestAnimationFrame(()=>{if(!t.hasAttribute("overview"))return;let e=i.querySelector(".ov-cell[data-current]");e?.scrollIntoView({block:"center"}),e?.focus({preventScroll:!0})}),g.dispose;g?.dispose(),i.innerHTML="";let h=r.slides.length,b=h>60,f=h>300?140:h>150?160:h>60?180:220;i.style.setProperty("--ov-cell-min",`${f}px`);let E=o.querySelector("#stage"),H=E?.clientWidth||window.innerWidth,Y=E?.clientHeight||window.innerHeight;i.style.setProperty("--ov-thumb-w",`${H}px`),i.style.setProperty("--ov-thumb-h",`${Y}px`);let W=new ResizeObserver(()=>{let e=i.querySelector(".ov-cell")?.clientWidth;e&&i.style.setProperty("--overview-scale",String(e/H))});W.observe(i),requestAnimationFrame(()=>{let e=i.querySelector(".ov-cell")?.clientWidth??f;i.style.setProperty("--overview-scale",String(e/H))});let S=document.createElement("div");S.className="ov-bar";let x=document.createElement("input");x.className="ov-search",x.type="search",x.placeholder=`Search ${h} slides \xB7 type to filter`,x.spellcheck=!1,S.appendChild(x);let q=document.createElement("span");q.className="ov-count",q.textContent=`${h} slides \xB7 ${r.chapters.length} chapters`,S.appendChild(q);let N=document.createElement("span");N.className="ov-hint",N.textContent="O \xB7 Esc \xB7 close",S.appendChild(N),i.appendChild(S);let C=document.createElement("div");C.className=`ov-body${b?"":" compact"}`,i.appendChild(C);let k=b?document.createElement("aside"):null;k&&(k.className="ov-aside",C.appendChild(k));let M=document.createElement("div");M.className=`ov-main${b?"":" ov-path"}`,C.appendChild(M);let $=[],z=[],P=new WeakMap,A=!1,T=[],I=!1,B=()=>{if(I||A||!T.length)return;I=!0;let e=()=>{I=!1,!A&&(T.shift()?.(),B())};"requestIdleCallback"in window?window.requestIdleCallback(e,{timeout:1e3}):setTimeout(e,32)},L=new IntersectionObserver(e=>{for(let c of e){if(!c.isIntersecting)continue;let a=c.target;if(a.dataset.loaded||a.dataset.building)continue;let p=P.get(a);if(!p)continue;a.dataset.building="1",L.unobserve(a);let d=()=>{ne(a,p,u,n).catch(w=>{let m=Number(a.dataset.tries??"0")+1;a.dataset.tries=String(m),console.warn("[rikiki/overview] thumbnail build failed",w),delete a.dataset.building,m<3&&!A&&L.observe(a)})};t.hasAttribute("overview")?d():(T.push(d),B())}},{root:null,rootMargin:"300px 0px",threshold:0});r.chapters.forEach((e,c)=>{let a=document.createElement("section");if(a.className="ov-chapter",a.id=`ov-chapter-${c}`,b){let d=document.createElement("header");d.className="ov-chapter-head";let w=document.createElement("span");w.className="ov-chapter-num",w.textContent=String(c+1).padStart(2,"0"),d.appendChild(w);let m=document.createElement("span");m.className="ov-chapter-title",m.textContent=G(e),d.appendChild(m);let v=document.createElement("span");v.className="ov-chapter-count",v.textContent=`${e.slides.length} slide${e.slides.length>1?"s":""}`,d.appendChild(v),a.appendChild(d)}let p=document.createElement("div");if(p.className="ov-row",e.slides.forEach((d,w)=>{if(!b&&w>0){let j=document.createElement("div");j.className="ov-connector",p.appendChild(j)}let m=e.startIdx+w,v=document.createElement("button");v.type="button",v.className="ov-cell",v.dataset.idx=String(m),v.dataset.search=U(d),m===r.currentIdx&&(v.dataset.current="1"),P.set(v,d),L.observe(v);let y=document.createElement("span");y.className="ov-cell-label",y.textContent=String(m+1),v.appendChild(y);let V=U(d).trim().slice(0,80);v.setAttribute("aria-label",`Slide ${m+1} of ${h}${V?` \xB7 ${V}`:""}`),m===r.currentIdx&&v.setAttribute("aria-current","true"),v.addEventListener("click",()=>r.onPick(m)),p.appendChild(v)}),a.appendChild(p),M.appendChild(a),$.push(a),k){let d=document.createElement("button");d.type="button",d.className="ov-aside-item",r.currentIdx>=e.startIdx&&r.currentIdx<e.startIdx+e.slides.length&&(d.dataset.active="1");let m=document.createElement("span");m.className="ov-aside-num",m.textContent=String(c+1).padStart(2,"0"),d.appendChild(m);let v=document.createElement("span");v.className="ov-aside-text",v.textContent=G(e);let y=document.createElement("div");y.className="ov-aside-count",y.textContent=`${e.slides.length} slide${e.slides.length>1?"s":""}`,v.appendChild(y),d.appendChild(v),d.addEventListener("click",()=>{a.scrollIntoView({behavior:"smooth",block:"start"})}),k.appendChild(d),z.push(d)}});let O=null;k&&(O=new IntersectionObserver(e=>{let c=e.filter(a=>a.isIntersecting).sort((a,p)=>a.boundingClientRect.top-p.boundingClientRect.top);if(c.length>0){let a=$.indexOf(c[0].target);a>=0&&z.forEach((p,d)=>{d===a?p.dataset.active="1":delete p.dataset.active})}},{root:M,rootMargin:"0px 0px -70% 0px",threshold:0}),$.forEach(e=>{O.observe(e)}));let _=i.querySelectorAll(".ov-cell");x.addEventListener("input",()=>{let e=x.value.trim().toLowerCase();if(!e){_.forEach(c=>{delete c.dataset.filteredOut});return}_.forEach(c=>{(c.dataset.search||"").includes(e)?delete c.dataset.filteredOut:c.dataset.filteredOut="1"})}),requestAnimationFrame(()=>{if(!t.hasAttribute("overview"))return;let e=i.querySelector(".ov-cell[data-current]");e&&(e.scrollIntoView({block:"center"}),e.focus({preventScroll:!0}))}),i.addEventListener("keydown",e=>{let c=e.key;if(c!=="ArrowLeft"&&c!=="ArrowRight")return;let a=[...i.querySelectorAll(".ov-cell")].filter(w=>!w.dataset.filteredOut),p=a.indexOf(document.activeElement);if(p<0)return;e.preventDefault();let d=a[p+(c==="ArrowRight"?1:-1)];d?.focus(),d?.scrollIntoView({block:"nearest"})});let D=()=>{A=!0,W.disconnect(),T.length=0,R.delete(t),O?.disconnect(),L.disconnect(),i&&(i.innerHTML="")};return R.set(t,{key:l,dispose:D}),D}export{ae as mountOverview};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export declare class DeckPersona extends LitElement {
|
|
3
|
+
static styles: import("lit").CSSResult[];
|
|
4
|
+
name?: string;
|
|
5
|
+
/** Job title · NOT the `role` attribute, which belongs to ARIA. */
|
|
6
|
+
personRole?: string;
|
|
7
|
+
org?: string;
|
|
8
|
+
/** One line of situation · what makes the story concrete. */
|
|
9
|
+
context?: string;
|
|
10
|
+
/** A portrait · without one the initials stand in, so a deck with no photos
|
|
11
|
+
* still looks deliberate. */
|
|
12
|
+
src?: string;
|
|
13
|
+
onDark: boolean;
|
|
14
|
+
/** Reduce portrait, type and spacing for a supporting persona. */
|
|
15
|
+
compact: boolean;
|
|
16
|
+
/** Place name, role and context in a wrapping horizontal line. */
|
|
17
|
+
inline: boolean;
|
|
18
|
+
private get _initials();
|
|
19
|
+
/** The job and the company, written as a phrase.
|
|
20
|
+
*
|
|
21
|
+
* It used to be joined with a middle dot, which is one of the surest marks
|
|
22
|
+
* of a generated page and reads as a machine string rather than as a person
|
|
23
|
+
* being introduced. */
|
|
24
|
+
private get _line();
|
|
25
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
26
|
+
}
|
|
27
|
+
declare global {
|
|
28
|
+
interface HTMLElementTagNameMap {
|
|
29
|
+
'deck-persona': DeckPersona;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var m=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var e=(p,n,t,o)=>{for(var i=o>1?void 0:o?v(n,t):n,c=p.length-1,l;c>=0;c--)(l=p[c])&&(i=(o?l(n,t,i):l(i))||i);return o&&i&&m(n,t,i),i};import{LitElement as k,css as h,html as s}from"./vendor/lit.js";import{customElement as f,property as a}from"./vendor/lit.js";import{css as g}from"./vendor/lit.js";var d=g`.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 k{constructor(){super(...arguments);this.onDark=!1;this.compact=!1;this.inline=!1}get _initials(){return(this.name??"").split(/\s+/).filter(Boolean).slice(0,2).map(t=>t[0]?.toUpperCase()??"").join("")}get _line(){return this.personRole&&this.org?`${this.personRole} at ${this.org}`:this.personRole??this.org??""}render(){let t=this.src?s`<span class="avatar" part="avatar" aria-hidden="true"><img src=${this.src} alt="" /></span>`:this._initials?s`<span class="avatar" part="avatar" aria-hidden="true"><span class="statement">${this._initials}</span></span>`:"";return s`${t} <span class="who"> ${this.name?s`<span class="name statement" part="name">${this.name}</span>`:""}
|
|
2
|
+
${this._line?s`<span class="role reading" part="role">${this._line}</span>`:""}
|
|
3
|
+
${this.context?s`<span class="context reading quiet" part="context">${this.context}</span>`:""}
|
|
4
|
+
<slot></slot>
|
|
5
|
+
</span>
|
|
6
|
+
`}};r.styles=[d,h`:host{display:flex;align-items:start;gap:var(--deck-persona-gap,var(--rik-space-5))}.avatar{flex:none;box-sizing:border-box;width:var(--deck-persona-avatar-size,clamp(4.5rem,7cqw,8rem));height:var(--deck-persona-avatar-size,clamp(4.5rem,7cqw,8rem));display:grid;place-items:center;overflow:hidden;background:var(--deck-persona-avatar-bg,var(--rik-surface-inverse));color:var(--deck-persona-initials-color,var(--rik-text-inverse));border-radius:var(--rik-radius-sm)}.avatar .statement{font-size:var( --deck-persona-initials-size,calc(var(--deck-persona-avatar-size,clamp(4.5rem,7cqw,8rem)) * 0.42) );line-height:1}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.who{min-width:0;display:flex;flex-direction:column;gap:var(--rik-space-1);padding-top:var(--deck-persona-name-lift,0.12em)}.name{font-size:var(--deck-persona-name-size,clamp(1.75rem,2.6cqw,3rem));color:var(--deck-persona-name-color,var(--rik-text-default))}.role{color:var(--deck-persona-role-color,var(--rik-text-default--muted))}.context{margin-top:var(--rik-space-3);color:var(--deck-persona-context-color,var(--rik-text-default--muted))}:host([on-dark]) .avatar{background:var(--deck-persona-avatar-bg,var(--rik-surface-page));color:var(--deck-persona-initials-color,var(--rik-text-default))}:host([on-dark]) .name{color:var(--rik-text-inverse)}:host([on-dark]) .role,:host([on-dark]) .context{color:var(--rik-text-inverse--muted)}:host([compact]),:host([inline]){--deck-persona-avatar-size:var(--deck-persona-compact-avatar-size,clamp(3rem,4cqw,4.5rem));--deck-persona-name-size:var(--deck-persona-compact-name-size,clamp(1.35rem,2cqw,2.1rem));--deck-persona-gap:var(--rik-space-3)}:host([compact]) .context,:host([inline]) .context{margin-top:var(--rik-space-1);font-size:var(--rik-font-size-sm)}:host([inline]){align-items:center}:host([inline]) .who{flex:1 1 auto;flex-direction:row;align-items:baseline;flex-wrap:wrap;column-gap:var(--rik-space-2);row-gap:var(--rik-space-1);padding-top:0}:host([inline]) .context{margin-top:0}@media print{.avatar{-webkit-print-color-adjust:exact;print-color-adjust:exact}}`],e([a({type:String})],r.prototype,"name",2),e([a({type:String,attribute:"person-role"})],r.prototype,"personRole",2),e([a({type:String})],r.prototype,"org",2),e([a({type:String})],r.prototype,"context",2),e([a({type:String,reflect:!0})],r.prototype,"src",2),e([a({type:Boolean,reflect:!0,attribute:"on-dark"})],r.prototype,"onDark",2),e([a({type:Boolean,reflect:!0})],r.prototype,"compact",2),e([a({type:Boolean,reflect:!0})],r.prototype,"inline",2),r=e([f("deck-persona")],r);export{r as DeckPersona};
|
package/dist/deck-photo.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var g=Object.defineProperty;var
|
|
1
|
+
var g=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var i=(s,e,o,n)=>{for(var r=n>1?void 0:n?f(e,o):e,l=s.length-1,d;l>=0;l--)(d=s[l])&&(r=(n?d(e,o,r):d(r))||r);return n&&r&&g(e,o,r),r};import{LitElement as v,html as k,css as x}from"./vendor/lit.js";import{customElement as h,property as a}from"./vendor/lit.js";import{css as c}from"./vendor/lit.js";var p=c`: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}}`,u=c`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)}`,y=c`.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)}`;var t=class extends v{updated(){this.position&&this.style.setProperty("--_pos",this.position),typeof this.darken=="number"&&this.style.setProperty("--_dim",String(this.darken));let e=this.align==="top"?"flex-start":this.align==="bottom"?"flex-end":"center";if(this.style.setProperty("--_align",e),this.textAlign){this.style.setProperty("--_text-align",this.textAlign);let o=this.textAlign==="center"?"center":this.textAlign==="right"?"flex-end":"flex-start";this.style.setProperty("--_text-align-items",o)}}render(){let e=this.src?`background-image: url("${this.src.replace(/"/g,"%22")}")`:"";return k`<div class="bg" part="bg" style=${e}></div> <div class="overlay" part="overlay"></div> <div class="content" part="content"><slot></slot></div>`}};t.styles=[p,x`:host{padding:0;color:var(--deck-photo-text-color,var(--rik-text-inverse));overflow:hidden}.bg{position:absolute;inset:0;background-size:cover;background-position:var(--_pos,center);background-repeat:no-repeat}.overlay{position:absolute;inset:0;background:var(--deck-photo-overlay-color,rgba(0,0,0,var(--_dim,0.35)))}.content{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--rik-space-3);padding:var(--deck-photo-padding-y,var(--rik-slide-padding-y)) var(--deck-photo-padding-x,var(--rik-slide-padding-x));width:100%;height:100%;max-width:100%;box-sizing:border-box;justify-content:var(--_align,center);text-align:var(--_text-align,left);align-items:var(--_text-align-items,flex-start)}.content > *{max-width:var(--deck-photo-content-max-width,36ch)}::slotted(h1){font-family:var(--rik-font-display,var(--rik-font-sans));font-size:clamp(2.5rem,6cqw,5.5rem);font-weight:900;letter-spacing:-0.035em;line-height:1.02;color:var(--deck-photo-text-color,var(--rik-text-inverse));margin:0;text-shadow:0 2px 16px rgba(0,0,0,0.35)}::slotted(h2){font-family:var(--rik-font-display,var(--rik-font-sans));font-size:clamp(1.6rem,3cqw,2.6rem);font-weight:800;letter-spacing:-0.025em;line-height:1.1;color:var(--deck-photo-text-color,var(--rik-text-inverse));margin:0;text-shadow:0 2px 12px rgba(0,0,0,0.35)}::slotted(p),::slotted(.sub){font-size:var(--rik-font-size-lead);color:var(--deck-photo-text-muted,var(--rik-text-inverse--muted));line-height:1.5;margin:0;text-shadow:0 1px 8px rgba(0,0,0,0.35)}::slotted(.kicker){font:700 var(--rik-font-size-xs)/1 var(--rik-font-mono);letter-spacing:0.18em;text-transform:uppercase;color:var(--deck-photo-text-muted,var(--rik-text-inverse--muted));margin:0}`],i([a({type:String})],t.prototype,"src",2),i([a({type:String})],t.prototype,"position",2),i([a({type:Number})],t.prototype,"darken",2),i([a({type:String})],t.prototype,"align",2),i([a({type:String,attribute:"text-align"})],t.prototype,"textAlign",2),t=i([h("deck-photo")],t);export{t as DeckPhoto};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export type DeckPointAlign = 'start' | 'center' | 'end' | 'stretch';
|
|
3
|
+
export declare class DeckPoint extends LitElement {
|
|
4
|
+
static styles: import("lit").CSSResult;
|
|
5
|
+
span?: string;
|
|
6
|
+
col?: string;
|
|
7
|
+
row?: string;
|
|
8
|
+
align?: DeckPointAlign;
|
|
9
|
+
tone?: string;
|
|
10
|
+
/** How many bands this point borrows from its bento · written by deck-bento,
|
|
11
|
+
* never by an author. Declared rather than read off the attribute so Lit
|
|
12
|
+
* re-runs updated() when the parent sets it; an undeclared attribute would
|
|
13
|
+
* change the CSS and leave the point spanning one band instead of all. */
|
|
14
|
+
banded?: string;
|
|
15
|
+
updated(): void;
|
|
16
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
17
|
+
}
|
|
18
|
+
declare global {
|
|
19
|
+
interface HTMLElementTagNameMap {
|
|
20
|
+
'deck-point': DeckPoint;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var p=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var n=(e,r,a,d)=>{for(var o=d>1?void 0:d?u(r,a):r,l=e.length-1,c;l>=0;l--)(c=e[l])&&(o=(d?c(r,a,o):c(o))||o);return d&&o&&p(r,a,o),o};import{LitElement as b,css as f,html as k}from"./vendor/lit.js";import{customElement as m,property as i}from"./vendor/lit.js";function s(e){if(!e)return"auto";let r=e.trim();return/^\d+$/.test(r)?`span ${r}`:r}function g(e){if(!e)return{col:"auto",row:"auto"};let[r,a]=e.toLowerCase().split("x");return{col:s(r),row:s(a)}}var h={start:"start",center:"center",end:"end",stretch:"stretch"},t=class extends b{updated(){let r=g(this.span);this.style.setProperty("--_col",this.col?s(this.col):r.col),this.style.setProperty("--_row",this.banded?`span ${this.banded}`:this.row?s(this.row):r.row),this.align&&this.style.setProperty("--_align",h[this.align]??this.align)}render(){return k`<slot></slot>`}};t.styles=f`:host{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:min-content;row-gap:var(--deck-cell-gap,var(--rik-space-2));justify-items:var(--_align,stretch);grid-column:var(--_col,auto);grid-row:var(--_row,auto);min-width:0;box-sizing:border-box;padding:var(--deck-cell-padding-y,var(--rik-space-3)) var(--deck-cell-padding-x,var(--rik-space-4));background:var(--deck-cell-bg,var(--rik-surface-raised--strong));border:1px solid var(--deck-cell-border,var(--rik-border-default));border-radius:var(--deck-cell-radius,var(--rik-radius-lg));font-family:var(--rik-font-sans);color:var(--rik-text-default--muted)}:host([banded]){grid-template-rows:subgrid;grid-auto-rows:initial;row-gap:0}:host([banded]) ::slotted(*){align-self:start}:host([tone="info"]){background:var(--deck-cell-bg,var(--rik-status-info__bg));border-color:var(--deck-cell-border,var(--rik-status-info__border))}:host([tone="warn"]){background:var(--deck-cell-bg,var(--rik-status-warn__bg));border-color:var(--deck-cell-border,var(--rik-status-warn__border))}:host([tone="ok"]){background:var(--deck-cell-bg,var(--rik-status-success__bg));border-color:var(--deck-cell-border,var(--rik-status-success__border))}:host([tone="danger"]){background:var(--deck-cell-bg,var(--rik-status-danger__bg));border-color:var(--deck-cell-border,var(--rik-status-danger__border))}:host([plain]){background:none;border-color:transparent;border-radius:0}:host([flat]){border:none}::slotted(h3){font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-font-size-h2);font-weight:700;color:var(--rik-text-default);letter-spacing:-0.01em;line-height:1.2;margin:0}::slotted(p){font-size:var(--rik-font-size-body);line-height:1.5;margin:0}`,n([i({type:String})],t.prototype,"span",2),n([i({type:String})],t.prototype,"col",2),n([i({type:String})],t.prototype,"row",2),n([i({type:String})],t.prototype,"align",2),n([i({type:String})],t.prototype,"tone",2),n([i({type:String,reflect:!0})],t.prototype,"banded",2),t=n([m("deck-point")],t);export{t as DeckPoint};
|