taleem-slides 0.5.0 β 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -245
- package/dist/taleem.css +232 -0
- package/dist/themes/dark.css +6 -0
- package/dist/themes/light.css +6 -0
- package/dist/themes/paper.css +6 -0
- package/package.json +19 -3
- package/src/SlideTemplates.js +0 -1
- package/src/slides/BarChartSlide.js +5 -5
- package/src/slides/BigNumberSlide.js +7 -6
- package/src/slides/BulletListSlide.js +5 -6
- package/src/slides/ContactSlide.js +3 -4
- package/src/slides/CornerWordsSlide.js +15 -10
- package/src/slides/DonutChartSlide.js +16 -16
- package/src/slides/EqSlide.js +13 -9
- package/src/slides/FillImageSlide.js +4 -2
- package/src/slides/ImageLeftBulletsRightSlide.js +6 -14
- package/src/slides/ImageRightBulletsLeftSlide.js +6 -14
- package/src/slides/ImageSlide.js +0 -1
- package/src/slides/ImageWithCaptionSlide.js +2 -1
- package/src/slides/ImageWithTitleSlide.js +2 -1
- package/src/slides/QuoteSlide.js +8 -5
- package/src/slides/QuoteWithImageSlide.js +2 -3
- package/src/slides/StatisticSlide.js +5 -6
- package/src/slides/TableSlide.js +17 -22
- package/src/slides/TitleAndParaSlide.js +1 -4
- package/src/slides/TitleAndSubtitleSlide.js +1 -6
- package/src/slides/TitleSlide.js +5 -5
- package/src/slides/TwoColumnTextSlide.js +7 -38
- package/decks/angles_and_transversals.json +0 -85
- package/decks/congruent_triangles.json +0 -169
- package/decks/demo_deck.json +0 -22
- package/decks/eq_28aug2025.json +0 -67
- package/decks/goldstandar_eq_28aug25.json +0 -69
- package/decks/parallelogram_properties.json +0 -164
- package/decks/parallelogram_properties_no_sound.json +0 -164
- package/decks/posultate_and_SAS_postulate.json +0 -76
- package/decks/qanoon.md +0 -136
- package/decks/theorem_revision_ch10_11.fixed.json +0 -265
- package/decks/theorem_revision_ch10_11.json +0 -269
- package/decks/theorems9old_11.1.1.json +0 -382
- package/decks/theorems9old_11.1.2.json +0 -162
- package/decks/theorems9old_11.1.3.json +0 -857
- package/index.html +0 -88
- package/tests/slides.barChart.test.js +0 -29
- package/tests/slides.bigNumber.test.js +0 -28
- package/tests/slides.bulletList.test.js +0 -31
- package/tests/slides.contactSlide.test.js +0 -28
- package/tests/slides.cornerWordsSlide.test.js +0 -24
- package/tests/slides.donutChart.test.js +0 -29
- package/tests/slides.eq.test.js +0 -29
- package/tests/slides.fillImage.test.js +0 -24
- package/tests/slides.imageLeftBulletsRight.test.js +0 -22
- package/tests/slides.imageRightBulletsLeft.test.js +0 -21
- package/tests/slides.imageSlide.test.js +0 -25
- package/tests/slides.imageWithCaption.test.js +0 -28
- package/tests/slides.imageWithTitle.test.js +0 -28
- package/tests/slides.quoteSlide.test.js +0 -28
- package/tests/slides.quoteWithImage.test.js +0 -28
- package/tests/slides.statistic.test.js +0 -28
- package/tests/slides.svgPointer.test.js +0 -25
- package/tests/slides.table.test.js +0 -41
- package/tests/slides.test.js +0 -28
- package/tests/slides.titleAndPara.test.js +0 -29
- package/tests/slides.titleAndSubtitle.test.js +0 -29
- package/tests/slides.twoColumnText.test.js +0 -29
package/README.md
CHANGED
|
@@ -1,111 +1,71 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
2
|
# π¦ taleem-slides
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
> **Pure slide template library for Taleem decks**
|
|
8
|
-
|
|
9
|
-
`taleem-slides` is a **simple, deterministic template library** that turns
|
|
10
|
-
**deck-style slide JSON** into **HTML**.
|
|
4
|
+
> **Simple HTML slide templates for JSON-based presentations**
|
|
11
5
|
|
|
12
|
-
|
|
6
|
+
`taleem-slides` is a **small, focused library** that turns
|
|
7
|
+
**plain slide JSON** into **HTML**.
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
You give it slide data.
|
|
10
|
+
It gives you HTML.
|
|
15
11
|
|
|
16
|
-
|
|
12
|
+
Thatβs it.
|
|
17
13
|
|
|
18
14
|
---
|
|
19
15
|
|
|
20
|
-
## π Live
|
|
21
|
-
|
|
22
|
-
π **Official live display & reference implementation**
|
|
23
|
-
**[https://bilza2023.github.io/taleem/](https://bilza2023.github.io/taleem/)**
|
|
24
|
-
|
|
25
|
-
This is **not a mock demo**.
|
|
26
|
-
This link is the **active display center** where:
|
|
27
|
-
|
|
28
|
-
* slide templates are rendered in real browsers
|
|
29
|
-
* visual behavior is validated
|
|
30
|
-
* browser / player integration is tested
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## β¨ Taleem.help Philosophy
|
|
35
|
-
|
|
36
|
-
**Taleem.help** is an educational technology initiative focused on making
|
|
37
|
-
**content-first learning tools**.
|
|
38
|
-
|
|
39
|
-
The goal of the `taleem-*` libraries is simple:
|
|
16
|
+
## π Live Docs, Demo & Reference (START HERE)
|
|
40
17
|
|
|
41
|
-
|
|
42
|
-
> and display them online using **free, open tools**.
|
|
18
|
+
π **https://bilza2023.github.io/taleem**
|
|
43
19
|
|
|
44
|
-
|
|
20
|
+
This site is the **official reference** for:
|
|
45
21
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
22
|
+
- all supported slide types
|
|
23
|
+
- visual behavior
|
|
24
|
+
- real rendered output
|
|
25
|
+
- examples and demos
|
|
50
26
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
It makes the system:
|
|
54
|
-
|
|
55
|
-
* easy to learn
|
|
56
|
-
* hard to misuse
|
|
57
|
-
* consistent across platforms
|
|
58
|
-
|
|
59
|
-
If a different layout is needed, the solution is **not configuration** β
|
|
60
|
-
it is **a new slide template**.
|
|
61
|
-
|
|
62
|
-
Templates are cheap.
|
|
63
|
-
Even hundreds of templates add no runtime cost.
|
|
27
|
+
If something is unclear in this README,
|
|
28
|
+
**the website is the final authority**.
|
|
64
29
|
|
|
65
30
|
---
|
|
66
31
|
|
|
67
|
-
##
|
|
68
|
-
|
|
69
|
-
* A collection of **slide templates**
|
|
70
|
-
* Each template:
|
|
32
|
+
## β
What this library does
|
|
71
33
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Think of it as:
|
|
78
|
-
|
|
79
|
-
> *Handlebars / JSX for Taleem slides*
|
|
34
|
+
- Converts slide JSON into HTML
|
|
35
|
+
- Uses fixed, opinionated layouts
|
|
36
|
+
- Applies simple state-based CSS classes
|
|
37
|
+
- Works in any JS environment (browser, player, SSR)
|
|
80
38
|
|
|
81
39
|
---
|
|
82
40
|
|
|
83
|
-
## β What this library
|
|
41
|
+
## β What this library does NOT do
|
|
84
42
|
|
|
85
43
|
`taleem-slides` does **not**:
|
|
86
44
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
45
|
+
- play slides
|
|
46
|
+
- manage time or animations
|
|
47
|
+
- navigate slides
|
|
48
|
+
- validate full decks
|
|
49
|
+
- touch the DOM
|
|
50
|
+
- apply CSS styles
|
|
93
51
|
|
|
94
|
-
|
|
52
|
+
It only returns HTML strings.
|
|
95
53
|
|
|
96
54
|
---
|
|
97
55
|
|
|
98
56
|
## π§ Mental Model
|
|
99
57
|
|
|
100
58
|
```
|
|
101
|
-
slide JSON + render state
|
|
102
|
-
β
|
|
103
|
-
slide template
|
|
104
|
-
β
|
|
105
|
-
HTML
|
|
106
|
-
```
|
|
107
59
|
|
|
108
|
-
|
|
60
|
+
slide data + render state
|
|
61
|
+
β
|
|
62
|
+
taleem-slides
|
|
63
|
+
β
|
|
64
|
+
HTML
|
|
65
|
+
|
|
66
|
+
````
|
|
67
|
+
|
|
68
|
+
How slides are shown, timed, or styled is **your responsibility**.
|
|
109
69
|
|
|
110
70
|
---
|
|
111
71
|
|
|
@@ -113,77 +73,69 @@ How the state is calculated is **not this libraryβs concern**.
|
|
|
113
73
|
|
|
114
74
|
```bash
|
|
115
75
|
npm install taleem-slides
|
|
116
|
-
|
|
76
|
+
````
|
|
117
77
|
|
|
118
78
|
---
|
|
119
79
|
|
|
120
80
|
## π Basic Usage
|
|
121
81
|
|
|
122
|
-
### 1οΈβ£
|
|
82
|
+
### 1οΈβ£ Get a slide template
|
|
123
83
|
|
|
124
84
|
```js
|
|
125
85
|
import { getSlideTemplate } from "taleem-slides";
|
|
86
|
+
|
|
87
|
+
const Slide = getSlideTemplate("bulletList");
|
|
126
88
|
```
|
|
127
89
|
|
|
128
90
|
---
|
|
129
91
|
|
|
130
|
-
### 2οΈβ£ Load slide data
|
|
92
|
+
### 2οΈβ£ Load slide data
|
|
131
93
|
|
|
132
94
|
```js
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
const slide = SlideTemplate.fromJSON({
|
|
95
|
+
const slide = Slide.fromJSON({
|
|
136
96
|
type: "bulletList",
|
|
137
97
|
data: [
|
|
138
98
|
{ name: "bullet", content: "First point" },
|
|
139
|
-
{ name: "bullet", content: "Second point" }
|
|
140
|
-
{ name: "bullet", content: "Third point" }
|
|
99
|
+
{ name: "bullet", content: "Second point" }
|
|
141
100
|
]
|
|
142
101
|
});
|
|
143
102
|
```
|
|
144
103
|
|
|
145
|
-
|
|
146
|
-
> No timing. No logic.
|
|
104
|
+
`fromJSON()` reads and stores structure only.
|
|
147
105
|
|
|
148
106
|
---
|
|
149
107
|
|
|
150
|
-
### 3οΈβ£ Render
|
|
108
|
+
### 3οΈβ£ Render HTML
|
|
151
109
|
|
|
152
110
|
```js
|
|
153
111
|
const html = slide.render({
|
|
154
|
-
visibleCount:
|
|
155
|
-
activeIndex:
|
|
112
|
+
visibleCount: 1,
|
|
113
|
+
activeIndex: 0
|
|
156
114
|
});
|
|
157
115
|
```
|
|
158
116
|
|
|
159
|
-
This will:
|
|
160
|
-
|
|
161
|
-
* render first 2 bullets
|
|
162
|
-
* highlight the second bullet
|
|
163
|
-
* dim the first
|
|
164
|
-
|
|
165
117
|
---
|
|
166
118
|
|
|
167
|
-
## π¨ Render State
|
|
119
|
+
## π¨ Render State (Simple)
|
|
168
120
|
|
|
169
|
-
|
|
121
|
+
Render state is just a plain object.
|
|
170
122
|
|
|
171
123
|
Common fields:
|
|
172
124
|
|
|
173
125
|
```ts
|
|
174
126
|
{
|
|
175
|
-
visibleCount?: number
|
|
176
|
-
activeIndex?: number
|
|
127
|
+
visibleCount?: number
|
|
128
|
+
activeIndex?: number
|
|
177
129
|
}
|
|
178
130
|
```
|
|
179
131
|
|
|
180
|
-
|
|
132
|
+
Each slide uses only what it needs.
|
|
181
133
|
|
|
182
134
|
---
|
|
183
135
|
|
|
184
|
-
## π― Class
|
|
136
|
+
## π― CSS Class Contract
|
|
185
137
|
|
|
186
|
-
|
|
138
|
+
Slides emit only these state classes:
|
|
187
139
|
|
|
188
140
|
```text
|
|
189
141
|
.is-active
|
|
@@ -191,173 +143,64 @@ Templates apply **standard class names only**:
|
|
|
191
143
|
.is-hidden
|
|
192
144
|
```
|
|
193
145
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## π§ How this fits in the ecosystem
|
|
199
|
-
|
|
200
|
-
`taleem-slides` is intentionally **small** and **focused**.
|
|
201
|
-
|
|
202
|
-
It is used by higher-level projects:
|
|
203
|
-
|
|
204
|
-
### π§© Sister Projects
|
|
205
|
-
|
|
206
|
-
* **taleem-browser**
|
|
207
|
-
Index-based slide viewer (manual navigation)
|
|
208
|
-
|
|
209
|
-
* **taleem-player**
|
|
210
|
-
Time-based slide player (audio / video synced)
|
|
211
|
-
|
|
212
|
-
Both projects:
|
|
213
|
-
|
|
214
|
-
* compute render state (`activeIndex`, `visibleCount`)
|
|
215
|
-
* pass it to `taleem-slides`
|
|
216
|
-
* receive consistent HTML output
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## π§ͺ Demo & Reference Projects
|
|
221
|
-
|
|
222
|
-
* π **Live Display Center**
|
|
223
|
-
[https://bilza2023.github.io/taleem/](https://bilza2023.github.io/taleem/)
|
|
224
|
-
|
|
225
|
-
* π **GitHub Demo / Playground**
|
|
226
|
-
*(link can be added here when ready)*
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## π§ Stability & Versioning
|
|
231
|
-
|
|
232
|
-
* Targets **deck-v1**
|
|
233
|
-
* Breaking changes allowed during WIP phase
|
|
234
|
-
* HTML output is intentionally simple and predictable
|
|
146
|
+
You control **all styling**.
|
|
235
147
|
|
|
236
148
|
---
|
|
237
149
|
|
|
238
|
-
##
|
|
239
|
-
|
|
240
|
-
> **taleem-slides renders HTML.
|
|
241
|
-
> It does not decide *when* or *why*.**
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## π³ Deck Background Support (NEW)
|
|
246
|
-
|
|
247
|
-
`taleem-slides` also defines **how deck backgrounds are resolved**, while remaining fully **DOM-agnostic**.
|
|
248
|
-
|
|
249
|
-
A deck background is **optional** and applies to the **entire deck**, not individual slides.
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
### Background responsibility split
|
|
254
|
-
|
|
255
|
-
#### taleem-slides
|
|
256
|
-
|
|
257
|
-
* decides **what background should be used**
|
|
258
|
-
* exposes a **pure resolver function**
|
|
259
|
-
* returns **plain background data**
|
|
260
|
-
|
|
261
|
-
#### player / browser
|
|
262
|
-
|
|
263
|
-
* renders the background into the DOM
|
|
264
|
-
* applies styles and layout
|
|
265
|
-
* handles mounting and lifecycle
|
|
266
|
-
|
|
267
|
-
This keeps slide rendering **pure and portable**.
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
## π¨ Background Resolution API
|
|
272
|
-
|
|
273
|
-
`taleem-slides` exports a small helper:
|
|
150
|
+
## π§© Supported Slide Types
|
|
274
151
|
|
|
275
|
-
|
|
276
|
-
import { resolveBackground } from "taleem-slides";
|
|
277
|
-
```
|
|
152
|
+
See the **live site** for visuals and examples:
|
|
278
153
|
|
|
279
|
-
|
|
154
|
+
π [https://bilza2023.github.io/taleem](https://bilza2023.github.io/taleem)
|
|
280
155
|
|
|
281
|
-
|
|
156
|
+
Supported categories include:
|
|
282
157
|
|
|
283
|
-
|
|
158
|
+
* titles and text slides
|
|
159
|
+
* bullet lists and columns
|
|
160
|
+
* images and image+text layouts
|
|
161
|
+
* tables and charts
|
|
162
|
+
* quotes and stats
|
|
163
|
+
* equation slides
|
|
284
164
|
|
|
285
|
-
|
|
165
|
+
Layouts are **fixed by design**.
|
|
286
166
|
|
|
287
|
-
|
|
288
|
-
* inject styles
|
|
289
|
-
* manage themes
|
|
290
|
-
* animate or time anything
|
|
167
|
+
If you need a new layout, you add a new template.
|
|
291
168
|
|
|
292
169
|
---
|
|
293
170
|
|
|
294
|
-
|
|
171
|
+
## π§ͺ Stability & Guarantees
|
|
295
172
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
backgroundImage?: string
|
|
301
|
-
backgroundImageOpacity?: number
|
|
302
|
-
},
|
|
303
|
-
themeSurfaceColor?: string
|
|
304
|
-
}
|
|
305
|
-
```
|
|
173
|
+
* Deterministic output
|
|
174
|
+
* No hidden state
|
|
175
|
+
* No configuration knobs
|
|
176
|
+
* Same input β same HTML
|
|
306
177
|
|
|
307
178
|
---
|
|
308
179
|
|
|
309
|
-
|
|
180
|
+
## π Design Principle
|
|
310
181
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
backgroundColor?: string
|
|
314
|
-
backgroundImage?: string
|
|
315
|
-
backgroundImageOpacity?: number
|
|
316
|
-
}
|
|
317
|
-
```
|
|
182
|
+
> **This library renders HTML only.
|
|
183
|
+
> It does not decide when or how slides appear.**
|
|
318
184
|
|
|
319
185
|
---
|
|
320
186
|
|
|
321
|
-
|
|
187
|
+
## π Where this fits
|
|
322
188
|
|
|
323
|
-
|
|
324
|
-
* Otherwise β **fall back to the themeβs surface color**
|
|
189
|
+
`taleem-slides` is meant to be used by:
|
|
325
190
|
|
|
326
|
-
|
|
191
|
+
* slide viewers
|
|
192
|
+
* presentation players
|
|
193
|
+
* educational tools
|
|
194
|
+
* static or dynamic renderers
|
|
327
195
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
## π§ Mental Model (Updated)
|
|
331
|
-
|
|
332
|
-
```
|
|
333
|
-
deck JSON + render state + theme surface
|
|
334
|
-
β
|
|
335
|
-
taleem-slides
|
|
336
|
-
β
|
|
337
|
-
HTML + resolved background data
|
|
338
|
-
β
|
|
339
|
-
player / browser
|
|
340
|
-
β
|
|
341
|
-
DOM
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
`taleem-slides` decides **what exists**.
|
|
345
|
-
The player / browser decides **how it appears**.
|
|
196
|
+
It is intentionally small so it can be reused everywhere.
|
|
346
197
|
|
|
347
198
|
---
|
|
348
199
|
|
|
349
|
-
##
|
|
200
|
+
## β
Status
|
|
350
201
|
|
|
351
|
-
|
|
352
|
-
|
|
202
|
+
* Actively used
|
|
203
|
+
* Fully tested
|
|
204
|
+
* Backed by live reference site
|
|
205
|
+
* Ready for production
|
|
353
206
|
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
## β
What this achieves
|
|
357
|
-
|
|
358
|
-
* background rules are centralized
|
|
359
|
-
* players remain simple
|
|
360
|
-
* browsers stay dumb
|
|
361
|
-
* future renderers (CLI, SSR, export) stay possible
|
|
362
|
-
|
|
363
|
-
---
|
package/dist/taleem.css
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/* =====================================================
|
|
2
|
+
TALEEM β Single Public Stylesheet
|
|
3
|
+
===================================================== */
|
|
4
|
+
|
|
5
|
+
/* -------------------------------
|
|
6
|
+
Theme Contract (User Editable)
|
|
7
|
+
------------------------------- */
|
|
8
|
+
|
|
9
|
+
/* -------------------------------
|
|
10
|
+
Global Page Reset
|
|
11
|
+
------------------------------- */
|
|
12
|
+
body {
|
|
13
|
+
margin: 0;
|
|
14
|
+
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
|
|
15
|
+
background: var(--backgroundColor, #0b1220);
|
|
16
|
+
color: var(--primaryColor, #e6e9ff);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
#app {
|
|
20
|
+
position: relative;
|
|
21
|
+
width: 100vw;
|
|
22
|
+
min-height: 100vh;
|
|
23
|
+
overflow: hidden;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* -------------------------------
|
|
27
|
+
Browser / Player Layers
|
|
28
|
+
------------------------------- */
|
|
29
|
+
.taleem-browser-bg {
|
|
30
|
+
position: absolute;
|
|
31
|
+
inset: 0;
|
|
32
|
+
z-index: 0;
|
|
33
|
+
background-size: cover;
|
|
34
|
+
background-position: center;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.taleem-browser-slide {
|
|
38
|
+
position: relative;
|
|
39
|
+
z-index: 1;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* -------------------------------
|
|
43
|
+
Base Slide Grammar
|
|
44
|
+
------------------------------- */
|
|
45
|
+
.slide {
|
|
46
|
+
height: 100vh;
|
|
47
|
+
box-sizing: border-box;
|
|
48
|
+
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
align-items: center;
|
|
53
|
+
|
|
54
|
+
padding: 64px 80px;
|
|
55
|
+
gap: 32px;
|
|
56
|
+
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
background: transparent;
|
|
59
|
+
color: var(--primaryColor, #e6e9ff);
|
|
60
|
+
|
|
61
|
+
font-size: 2.4rem;
|
|
62
|
+
line-height: 1.6;
|
|
63
|
+
letter-spacing: 0.01em;
|
|
64
|
+
text-align: center;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* -------------------------------
|
|
68
|
+
Global Image Safety
|
|
69
|
+
------------------------------- */
|
|
70
|
+
.slide img {
|
|
71
|
+
max-width: 100%;
|
|
72
|
+
max-height: 100%;
|
|
73
|
+
height: auto;
|
|
74
|
+
width: auto;
|
|
75
|
+
display: block;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* -------------------------------
|
|
79
|
+
Headings
|
|
80
|
+
------------------------------- */
|
|
81
|
+
.slide h1 {
|
|
82
|
+
margin: 0;
|
|
83
|
+
letter-spacing: -0.015em;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* -------------------------------
|
|
87
|
+
Slide Types
|
|
88
|
+
------------------------------- */
|
|
89
|
+
.slide.titleSlide h1 {
|
|
90
|
+
font-size: 5.6rem;
|
|
91
|
+
font-weight: 700;
|
|
92
|
+
line-height: 1.2;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.slide.titleAndSubtitle h1 {
|
|
96
|
+
font-size: 5.8rem;
|
|
97
|
+
font-weight: 700;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.slide.titleAndSubtitle h2 {
|
|
101
|
+
font-size: 3.8rem;
|
|
102
|
+
font-weight: 400;
|
|
103
|
+
opacity: 0.8;
|
|
104
|
+
margin: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.slide.titleAndPara h1 {
|
|
108
|
+
font-size: 4.8rem;
|
|
109
|
+
font-weight: 600;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.slide.titleAndPara p {
|
|
113
|
+
font-size: 3rem;
|
|
114
|
+
max-width: 70ch;
|
|
115
|
+
opacity: 0.9;
|
|
116
|
+
margin: 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* -------------------------------
|
|
120
|
+
Bullet List
|
|
121
|
+
------------------------------- */
|
|
122
|
+
.slide.bulletList ul {
|
|
123
|
+
list-style: disc;
|
|
124
|
+
padding-left: 2rem;
|
|
125
|
+
margin: 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.slide.bulletList li {
|
|
129
|
+
font-size: 3.6rem;
|
|
130
|
+
margin-bottom: 1rem;
|
|
131
|
+
text-align: left;
|
|
132
|
+
font-weight: 500;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* -------------------------------
|
|
136
|
+
Image Variants
|
|
137
|
+
------------------------------- */
|
|
138
|
+
.slide.imageSlide {
|
|
139
|
+
padding: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.slide.imageSlide img {
|
|
143
|
+
object-fit: contain;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.slide.imageWithTitle {
|
|
147
|
+
position: relative;
|
|
148
|
+
padding: 48px;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.slide.imageWithTitle img {
|
|
152
|
+
height: calc(100vh - 96px);
|
|
153
|
+
border-radius: 12px;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.slide.imageWithTitle h1 {
|
|
157
|
+
position: absolute;
|
|
158
|
+
bottom: 64px;
|
|
159
|
+
left: 50%;
|
|
160
|
+
transform: translateX(-50%);
|
|
161
|
+
font-size: 4.6rem;
|
|
162
|
+
background: rgba(0, 0, 0, 0.45);
|
|
163
|
+
padding: 0.4em 0.8em;
|
|
164
|
+
border-radius: 6px;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* -------------------------------
|
|
168
|
+
Two Column Text
|
|
169
|
+
------------------------------- */
|
|
170
|
+
.slide.twoColumnText .columns {
|
|
171
|
+
display: grid;
|
|
172
|
+
grid-template-columns: 1fr 1fr;
|
|
173
|
+
gap: 64px;
|
|
174
|
+
max-width: 1200px;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.slide.twoColumnText p {
|
|
178
|
+
font-size: 3rem;
|
|
179
|
+
text-align: left;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* -------------------------------
|
|
183
|
+
Quote Slide
|
|
184
|
+
------------------------------- */
|
|
185
|
+
.slide.quoteSlide blockquote {
|
|
186
|
+
font-size: 3.8rem;
|
|
187
|
+
font-style: italic;
|
|
188
|
+
max-width: 60ch;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.slide.quoteSlide cite {
|
|
192
|
+
font-size: 2.4rem;
|
|
193
|
+
opacity: 0.75;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* -------------------------------
|
|
197
|
+
Big Number
|
|
198
|
+
------------------------------- */
|
|
199
|
+
.slide.bigNumber .number {
|
|
200
|
+
font-size: 9rem;
|
|
201
|
+
font-weight: 700;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* -------------------------------
|
|
205
|
+
Fill Image (Full Bleed)
|
|
206
|
+
------------------------------- */
|
|
207
|
+
.slide.fillImage {
|
|
208
|
+
padding: 0;
|
|
209
|
+
height: 100vh;
|
|
210
|
+
display: block;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.slide.fillImage img {
|
|
214
|
+
width: 100%;
|
|
215
|
+
height: 100%;
|
|
216
|
+
object-fit: cover;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* -------------------------------
|
|
220
|
+
Demo / Player UI (Optional)
|
|
221
|
+
------------------------------- */
|
|
222
|
+
#timebar {
|
|
223
|
+
position: fixed;
|
|
224
|
+
bottom: 0;
|
|
225
|
+
left: 0;
|
|
226
|
+
right: 0;
|
|
227
|
+
height: 32px;
|
|
228
|
+
background: rgba(0, 0, 0, 0.6);
|
|
229
|
+
backdrop-filter: blur(6px);
|
|
230
|
+
z-index: 10;
|
|
231
|
+
}
|
|
232
|
+
|