taleem-slides 0.6.0 → 0.6.2-rc.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/dist/taleem.css +289 -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 +22 -7
- package/tests/slide.title.test.js +0 -15
- package/tests/slides.barChart.test.js +0 -24
- package/tests/slides.bigNumber.test.js +0 -17
- package/tests/slides.bulletList.test.js +0 -17
- package/tests/slides.contactSlide.test.js +0 -18
- package/tests/slides.cornerWordsSlide.test.js +0 -18
- package/tests/slides.donutChart.test.js +0 -19
- package/tests/slides.eq.test.js +0 -18
- package/tests/slides.fillImage.test.js +0 -18
- package/tests/slides.imageLeftBulletsRight.test.js +0 -19
- package/tests/slides.imageRightBulletsLeft.test.js +0 -18
- package/tests/slides.imageSlide.test.js +0 -18
- package/tests/slides.imageWithCaption.test.js +0 -18
- package/tests/slides.imageWithTitle.test.js +0 -18
- package/tests/slides.quoteSlide.test.js +0 -17
- package/tests/slides.quoteWithImage.test.js +0 -19
- package/tests/slides.statistic.test.js +0 -18
- package/tests/slides.table.test.js +0 -16
- package/tests/slides.titleAndPara.test.js +0 -17
- package/tests/slides.titleAndSubtitle.test.js +0 -17
- package/tests/slides.twoColumnText.test.js +0 -16
package/dist/taleem.css
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/* =====================================================
|
|
2
|
+
TALEEM — Single Public Stylesheet
|
|
3
|
+
|
|
4
|
+
/* -------------------------------
|
|
5
|
+
Global Page Reset
|
|
6
|
+
------------------------------- */
|
|
7
|
+
|
|
8
|
+
html,body {
|
|
9
|
+
height: 100%;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
margin: 0;
|
|
12
|
+
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
|
|
13
|
+
background: var(--backgroundColor, #0b1220);
|
|
14
|
+
color: var(--primaryColor, #e6e9ff);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
#app {
|
|
18
|
+
position: relative;
|
|
19
|
+
width: 100vw;
|
|
20
|
+
min-height: 100vh;
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* -------------------------------
|
|
25
|
+
Browser / Player Layers
|
|
26
|
+
------------------------------- */
|
|
27
|
+
.taleem-browser-bg {
|
|
28
|
+
position: absolute;
|
|
29
|
+
inset: 0;
|
|
30
|
+
z-index: 0;
|
|
31
|
+
background-size: cover;
|
|
32
|
+
background-position: center;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.taleem-browser-slide {
|
|
36
|
+
position: relative;
|
|
37
|
+
z-index: 1;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* -------------------------------
|
|
41
|
+
Base Slide Grammar
|
|
42
|
+
------------------------------- */
|
|
43
|
+
.slide {
|
|
44
|
+
height: 100vh;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
align-items: center;
|
|
51
|
+
|
|
52
|
+
padding: 64px 80px;
|
|
53
|
+
gap: 32px;
|
|
54
|
+
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
background: transparent;
|
|
57
|
+
color: var(--primaryColor, #e6e9ff);
|
|
58
|
+
|
|
59
|
+
font-size: 2.4rem;
|
|
60
|
+
line-height: 1.6;
|
|
61
|
+
letter-spacing: 0.01em;
|
|
62
|
+
text-align: center;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* -------------------------------
|
|
66
|
+
Global Image Safety
|
|
67
|
+
------------------------------- */
|
|
68
|
+
.slide img {
|
|
69
|
+
max-width: 100%;
|
|
70
|
+
max-height: 100%;
|
|
71
|
+
height: auto;
|
|
72
|
+
width: auto;
|
|
73
|
+
display: block;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* -------------------------------
|
|
77
|
+
Headings
|
|
78
|
+
------------------------------- */
|
|
79
|
+
.slide h1 {
|
|
80
|
+
margin: 0;
|
|
81
|
+
letter-spacing: -0.015em;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* -------------------------------
|
|
85
|
+
Slide Types
|
|
86
|
+
------------------------------- */
|
|
87
|
+
.slide.titleSlide h1 {
|
|
88
|
+
font-size: 5.6rem;
|
|
89
|
+
font-weight: 700;
|
|
90
|
+
line-height: 1.2;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.slide.titleAndSubtitle h1 {
|
|
94
|
+
font-size: 5.8rem;
|
|
95
|
+
font-weight: 700;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.slide.titleAndSubtitle h2 {
|
|
99
|
+
font-size: 3.8rem;
|
|
100
|
+
font-weight: 400;
|
|
101
|
+
opacity: 0.8;
|
|
102
|
+
margin: 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.slide.titleAndPara h1 {
|
|
106
|
+
font-size: 4.8rem;
|
|
107
|
+
font-weight: 600;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.slide.titleAndPara p {
|
|
111
|
+
font-size: 3rem;
|
|
112
|
+
max-width: 70ch;
|
|
113
|
+
opacity: 0.9;
|
|
114
|
+
margin: 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* -------------------------------
|
|
118
|
+
Bullet List
|
|
119
|
+
------------------------------- */
|
|
120
|
+
.slide.bulletList ul {
|
|
121
|
+
list-style: disc;
|
|
122
|
+
padding-left: 2rem;
|
|
123
|
+
margin: 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.slide.bulletList li {
|
|
127
|
+
font-size: 3.6rem;
|
|
128
|
+
margin-bottom: 1rem;
|
|
129
|
+
text-align: left;
|
|
130
|
+
font-weight: 500;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* -------------------------------
|
|
134
|
+
Image Variants
|
|
135
|
+
------------------------------- */
|
|
136
|
+
.slide.imageSlide {
|
|
137
|
+
padding: 0;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.slide.imageSlide img {
|
|
141
|
+
object-fit: contain;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.slide.imageWithTitle {
|
|
145
|
+
position: relative;
|
|
146
|
+
padding: 48px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.slide.imageWithTitle img {
|
|
150
|
+
height: calc(100vh - 96px);
|
|
151
|
+
border-radius: 12px;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.slide.imageWithTitle h1 {
|
|
155
|
+
position: absolute;
|
|
156
|
+
bottom: 64px;
|
|
157
|
+
left: 50%;
|
|
158
|
+
transform: translateX(-50%);
|
|
159
|
+
font-size: 4.6rem;
|
|
160
|
+
background: rgba(0, 0, 0, 0.45);
|
|
161
|
+
padding: 0.4em 0.8em;
|
|
162
|
+
border-radius: 6px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.slide.imageWithCaption {
|
|
166
|
+
display: flex;
|
|
167
|
+
flex-direction: column;
|
|
168
|
+
justify-content: center;
|
|
169
|
+
gap: 32px;
|
|
170
|
+
height: 100vh;
|
|
171
|
+
overflow: hidden;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.slide.imageWithCaption img {
|
|
175
|
+
max-height: 55vh; /* reduce slightly */
|
|
176
|
+
object-fit: contain;
|
|
177
|
+
flex-shrink: 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.slide.imageWithCaption p {
|
|
181
|
+
max-height: 20vh; /* hard cap text */
|
|
182
|
+
overflow: hidden;
|
|
183
|
+
text-overflow: ellipsis;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* -------------------------------
|
|
187
|
+
Two Column Text
|
|
188
|
+
------------------------------- */
|
|
189
|
+
.slide.twoColumnText .columns {
|
|
190
|
+
display: grid;
|
|
191
|
+
grid-template-columns: 1fr 1fr;
|
|
192
|
+
gap: 64px;
|
|
193
|
+
max-width: 1200px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.slide.twoColumnText p {
|
|
197
|
+
font-size: 3rem;
|
|
198
|
+
text-align: left;
|
|
199
|
+
}
|
|
200
|
+
.slide.quoteSlide {
|
|
201
|
+
display: flex;
|
|
202
|
+
flex-direction: column;
|
|
203
|
+
justify-content: center;
|
|
204
|
+
gap: 32px;
|
|
205
|
+
height: 100vh;
|
|
206
|
+
overflow: hidden;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.slide.quoteSlide blockquote {
|
|
210
|
+
max-height: 60vh;
|
|
211
|
+
overflow: hidden;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.slide.quoteSlide cite {
|
|
215
|
+
flex-shrink: 0;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* -------------------------------
|
|
219
|
+
Quote Slide
|
|
220
|
+
------------------------------- */
|
|
221
|
+
.slide.quoteSlide blockquote {
|
|
222
|
+
font-size: 3.8rem;
|
|
223
|
+
font-style: italic;
|
|
224
|
+
max-width: 60ch;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.slide.quoteSlide cite {
|
|
228
|
+
font-size: 2.4rem;
|
|
229
|
+
opacity: 0.75;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* -------------------------------
|
|
233
|
+
Big Number
|
|
234
|
+
------------------------------- */
|
|
235
|
+
.slide.bigNumber .number {
|
|
236
|
+
font-size: 9rem;
|
|
237
|
+
font-weight: 700;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* -------------------------------
|
|
241
|
+
Fill Image (Full Bleed)
|
|
242
|
+
------------------------------- */
|
|
243
|
+
.slide.fillImage {
|
|
244
|
+
padding: 0;
|
|
245
|
+
height: 100vh;
|
|
246
|
+
display: block;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.slide.fillImage img {
|
|
250
|
+
width: 100%;
|
|
251
|
+
height: 100%;
|
|
252
|
+
object-fit: cover;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* -------------------------------
|
|
256
|
+
Demo / Player UI (Optional)
|
|
257
|
+
------------------------------- */
|
|
258
|
+
#timebar {
|
|
259
|
+
position: fixed;
|
|
260
|
+
bottom: 0;
|
|
261
|
+
left: 0;
|
|
262
|
+
right: 0;
|
|
263
|
+
height: 32px;
|
|
264
|
+
background: rgba(0, 0, 0, 0.6);
|
|
265
|
+
backdrop-filter: blur(6px);
|
|
266
|
+
z-index: 10;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/* ///////fixes */
|
|
272
|
+
|
|
273
|
+
/* -------------------------------
|
|
274
|
+
Image + Bullets (Side by Side)
|
|
275
|
+
------------------------------- */
|
|
276
|
+
|
|
277
|
+
.slide.imageRightBulletsLeft,
|
|
278
|
+
.slide.imageLeftBulletsRight {
|
|
279
|
+
display: flex;
|
|
280
|
+
flex-direction: row;
|
|
281
|
+
align-items: center;
|
|
282
|
+
gap: 64px;
|
|
283
|
+
text-align: left;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* image on right */
|
|
287
|
+
.slide.imageRightBulletsLeft img {
|
|
288
|
+
order: 2;
|
|
289
|
+
}
|
package/package.json
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taleem-slides",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2-rc.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "Convert
|
|
5
|
+
"description": "Convert Taleem schema into HTML slides",
|
|
6
|
+
|
|
6
7
|
"exports": {
|
|
7
|
-
".": "./src/index.js"
|
|
8
|
+
".": "./src/index.js",
|
|
9
|
+
|
|
10
|
+
"./styles/taleem.css": "./dist/taleem.css",
|
|
11
|
+
"./styles/themes/dark.css": "./dist/themes/dark.css",
|
|
12
|
+
"./styles/themes/light.css": "./dist/themes/light.css",
|
|
13
|
+
"./styles/themes/paper.css": "./dist/themes/paper.css"
|
|
8
14
|
},
|
|
15
|
+
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"src"
|
|
19
|
+
],
|
|
20
|
+
|
|
9
21
|
"scripts": {
|
|
22
|
+
"build": "node scripts/build.js",
|
|
10
23
|
"test": "vitest run",
|
|
11
24
|
"test:watch": "vitest",
|
|
12
25
|
"test:ui": "vitest --ui",
|
|
13
26
|
"lint": "echo \"no lint yet\""
|
|
14
27
|
},
|
|
15
|
-
|
|
16
|
-
"vite": "^5.0.0",
|
|
17
|
-
"vitest": "^1.5.0"
|
|
18
|
-
},
|
|
28
|
+
|
|
19
29
|
"dependencies": {
|
|
20
30
|
"taleem-core": "^1.3.2",
|
|
21
31
|
"zod": "^4.3.5"
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"vite": "^5.0.0",
|
|
36
|
+
"vitest": "^1.5.0"
|
|
22
37
|
}
|
|
23
38
|
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// tests/slides.titleSlide.test.js
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { TitleSlide } from "../src/slides/TitleSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("TitleSlide", () => {
|
|
7
|
-
test("renders from golden deck", () => {
|
|
8
|
-
const raw = goldenDeckV1.deck.find(s => s.type === "titleSlide");
|
|
9
|
-
const slide = TitleSlide.fromJSON(raw);
|
|
10
|
-
const html = slide.render();
|
|
11
|
-
|
|
12
|
-
expect(html).toContain("titleSlide");
|
|
13
|
-
expect(html).toContain("Golden Deck");
|
|
14
|
-
});
|
|
15
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { BarChartSlide } from "../src/slides/BarChartSlide.js";
|
|
3
|
-
import { goldenDeckV1 } from "taleem-core"; // path may vary in monorepo
|
|
4
|
-
|
|
5
|
-
describe("BarChartSlide", () => {
|
|
6
|
-
test("renders barChart slide from golden deck", () => {
|
|
7
|
-
// 1. Extract canonical barChart slide from golden deck
|
|
8
|
-
const barChartSlide = goldenDeckV1.deck.find(
|
|
9
|
-
slide => slide.type === "barChart"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
// Safety check (optional but fine during refactor)
|
|
13
|
-
expect(barChartSlide).toBeTruthy();
|
|
14
|
-
|
|
15
|
-
// 2. Feed EXACT golden-deck data into renderer
|
|
16
|
-
const slide = BarChartSlide.fromJSON(barChartSlide);
|
|
17
|
-
const html = slide.render();
|
|
18
|
-
|
|
19
|
-
// 3. Assert rendered HTML (presentation only)
|
|
20
|
-
expect(html).toContain("bar");
|
|
21
|
-
expect(html).toContain("span");
|
|
22
|
-
expect(html).toContain("barChart");
|
|
23
|
-
});
|
|
24
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { BigNumberSlide } from "../src/slides/BigNumberSlide.js";
|
|
3
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
4
|
-
|
|
5
|
-
describe("BigNumberSlide", () => {
|
|
6
|
-
test("renders bigNumber from golden deck", () => {
|
|
7
|
-
const slideData = goldenDeckV1.deck.find(
|
|
8
|
-
slide => slide.type === "bigNumber"
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
const slide = BigNumberSlide.fromJSON(slideData);
|
|
12
|
-
const html = slide.render();
|
|
13
|
-
|
|
14
|
-
expect(html).toContain("bigNumber");
|
|
15
|
-
expect(html).toContain(slide.number);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { BulletListSlide } from "../src/slides/BulletListSlide.js";
|
|
3
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
4
|
-
|
|
5
|
-
describe("BulletListSlide", () => {
|
|
6
|
-
test("renders bulletList from golden deck", () => {
|
|
7
|
-
const slideData = goldenDeckV1.deck.find(
|
|
8
|
-
slide => slide.type === "bulletList"
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
const slide = BulletListSlide.fromJSON(slideData);
|
|
12
|
-
const html = slide.render();
|
|
13
|
-
|
|
14
|
-
expect(html).toContain("bulletList");
|
|
15
|
-
expect(html).toContain("<li");
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { ContactSlide } from "../src/slides/ContactSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("ContactSlide", () => {
|
|
7
|
-
test("renders contactSlide from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
slide => slide.type === "contactSlide"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = ContactSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("contactSlide");
|
|
16
|
-
expect(html).toContain("<div>");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { CornerWordsSlide } from "../src/slides/CornerWordsSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("CornerWordsSlide", () => {
|
|
7
|
-
test("renders cornerWordsSlide from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
slide => slide.type === "cornerWordsSlide"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = CornerWordsSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("cornerWordsSlide");
|
|
16
|
-
expect(html).toContain("corner-card");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { DonutChartSlide } from "../src/slides/DonutChartSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("DonutChartSlide", () => {
|
|
7
|
-
test("renders donutChart from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
slide => slide.type === "donutChart"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = DonutChartSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("donutChart");
|
|
16
|
-
expect(html).toContain("%");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
|
package/tests/slides.eq.test.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { EqSlide } from "../src/slides/EqSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("EqSlide", () => {
|
|
7
|
-
test("renders eq slide from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
slide => slide.type === "eq"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = EqSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("eq");
|
|
16
|
-
expect(html).toContain("eq-line");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { FillImageSlide } from "../src/slides/FillImageSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("FillImageSlide", () => {
|
|
7
|
-
test("renders fillImage from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
slide => slide.type === "fillImage"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = FillImageSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("fillImage");
|
|
16
|
-
expect(html).toContain("<img");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { ImageLeftBulletsRightSlide } from "../src/slides/ImageLeftBulletsRightSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("ImageLeftBulletsRightSlide", () => {
|
|
7
|
-
test("renders imageLeftBulletsRight from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
s => s.type === "imageLeftBulletsRight"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = ImageLeftBulletsRightSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("imageLeftBulletsRight");
|
|
16
|
-
expect(html).toContain("<img");
|
|
17
|
-
expect(html).toContain("<li>");
|
|
18
|
-
});
|
|
19
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { ImageRightBulletsLeftSlide } from "../src/slides/ImageRightBulletsLeftSlide.js";
|
|
3
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
4
|
-
|
|
5
|
-
describe("ImageRightBulletsLeftSlide", () => {
|
|
6
|
-
test("renders imageRightBulletsLeft from golden deck", () => {
|
|
7
|
-
const slideData = goldenDeckV1.deck.find(
|
|
8
|
-
s => s.type === "imageRightBulletsLeft"
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
const slide = ImageRightBulletsLeftSlide.fromJSON(slideData);
|
|
12
|
-
const html = slide.render();
|
|
13
|
-
|
|
14
|
-
expect(html).toContain("imageRightBulletsLeft");
|
|
15
|
-
expect(html).toContain("<img");
|
|
16
|
-
expect(html).toContain("<li>");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { ImageSlide } from "../src/slides/ImageSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("ImageSlide", () => {
|
|
7
|
-
test("renders imageSlide from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
s => s.type === "imageSlide"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = ImageSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("imageSlide");
|
|
16
|
-
expect(html).toContain("<img");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { ImageWithCaptionSlide } from "../src/slides/ImageWithCaptionSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("ImageWithCaptionSlide", () => {
|
|
7
|
-
test("renders imageWithCaption from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
s => s.type === "imageWithCaption"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = ImageWithCaptionSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("imageWithCaption");
|
|
16
|
-
expect(html).toContain("<figcaption>");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { ImageWithTitleSlide } from "../src/slides/ImageWithTitleSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("ImageWithTitleSlide", () => {
|
|
7
|
-
test("renders imageWithTitle from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
s => s.type === "imageWithTitle"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = ImageWithTitleSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("imageWithTitle");
|
|
16
|
-
expect(html).toContain("<h1>");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { QuoteSlide } from "../src/slides/QuoteSlide.js";
|
|
3
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
4
|
-
|
|
5
|
-
describe("QuoteSlide", () => {
|
|
6
|
-
test("renders quoteSlide from golden deck", () => {
|
|
7
|
-
const slideData = goldenDeckV1.deck.find(
|
|
8
|
-
s => s.type === "quoteSlide"
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
const slide = QuoteSlide.fromJSON(slideData);
|
|
12
|
-
const html = slide.render();
|
|
13
|
-
|
|
14
|
-
expect(html).toContain("quoteSlide");
|
|
15
|
-
expect(html).toContain("<blockquote");
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { QuoteWithImageSlide } from "../src/slides/QuoteWithImageSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("QuoteWithImageSlide", () => {
|
|
7
|
-
test("renders quoteWithImage from golden deck", () => {
|
|
8
|
-
const slideData = goldenDeckV1.deck.find(
|
|
9
|
-
s => s.type === "quoteWithImage"
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
const slide = QuoteWithImageSlide.fromJSON(slideData);
|
|
13
|
-
const html = slide.render();
|
|
14
|
-
|
|
15
|
-
expect(html).toContain("quoteWithImage");
|
|
16
|
-
expect(html).toContain("<img");
|
|
17
|
-
expect(html).toContain("<blockquote");
|
|
18
|
-
});
|
|
19
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from "vitest";
|
|
2
|
-
import { StatisticSlide } from "../src/slides/StatisticSlide.js";
|
|
3
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
4
|
-
|
|
5
|
-
describe("StatisticSlide", () => {
|
|
6
|
-
test("renders statistic slide from golden deck", () => {
|
|
7
|
-
const raw = goldenDeckV1.deck.find(s => s.type === "statistic");
|
|
8
|
-
|
|
9
|
-
const slide = StatisticSlide.fromJSON(raw);
|
|
10
|
-
const html = slide.render();
|
|
11
|
-
|
|
12
|
-
expect(html).toContain("slide statistic");
|
|
13
|
-
expect(html).toContain("stat-value");
|
|
14
|
-
expect(html).toContain("stat-label");
|
|
15
|
-
expect(html).toContain("75%");
|
|
16
|
-
expect(html).toContain("Completion Rate");
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// tests/slides.table.test.js
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { TableSlide } from "../src/slides/TableSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("TableSlide", () => {
|
|
7
|
-
test("renders from golden deck", () => {
|
|
8
|
-
const raw = goldenDeckV1.deck.find(s => s.type === "table");
|
|
9
|
-
const slide = TableSlide.fromJSON(raw);
|
|
10
|
-
const html = slide.render();
|
|
11
|
-
|
|
12
|
-
expect(html).toContain("slide table");
|
|
13
|
-
expect(html).toContain("<th>A</th>");
|
|
14
|
-
expect(html).toContain("<td>1</td>");
|
|
15
|
-
});
|
|
16
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
// tests/slides.titleAndPara.test.js
|
|
3
|
-
import { describe, test, expect } from "vitest";
|
|
4
|
-
import { TitleAndParaSlide } from "../src/slides/TitleAndParaSlide.js";
|
|
5
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
6
|
-
|
|
7
|
-
describe("TitleAndParaSlide", () => {
|
|
8
|
-
test("renders from golden deck", () => {
|
|
9
|
-
const raw = goldenDeckV1.deck.find(s => s.type === "titleAndPara");
|
|
10
|
-
const slide = TitleAndParaSlide.fromJSON(raw);
|
|
11
|
-
const html = slide.render();
|
|
12
|
-
|
|
13
|
-
expect(html).toContain("titleAndPara");
|
|
14
|
-
expect(html).toContain("End");
|
|
15
|
-
expect(html).toContain("All 21 slide types validated.");
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
// tests/slides.titleAndSubtitle.test.js
|
|
3
|
-
import { describe, test, expect } from "vitest";
|
|
4
|
-
import { TitleAndSubtitleSlide } from "../src/slides/TitleAndSubtitleSlide.js";
|
|
5
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
6
|
-
|
|
7
|
-
describe("TitleAndSubtitleSlide", () => {
|
|
8
|
-
test("renders from golden deck", () => {
|
|
9
|
-
const raw = goldenDeckV1.deck.find(s => s.type === "titleAndSubtitle");
|
|
10
|
-
const slide = TitleAndSubtitleSlide.fromJSON(raw);
|
|
11
|
-
const html = slide.render();
|
|
12
|
-
|
|
13
|
-
expect(html).toContain("titleAndSubtitle");
|
|
14
|
-
expect(html).toContain("Title & Subtitle");
|
|
15
|
-
expect(html).toContain("Schema language demo");
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// tests/slides.twoColumnText.test.js
|
|
2
|
-
import { describe, test, expect } from "vitest";
|
|
3
|
-
import { TwoColumnTextSlide } from "../src/slides/TwoColumnTextSlide.js";
|
|
4
|
-
import { goldenDeckV1 } from "taleem-core";
|
|
5
|
-
|
|
6
|
-
describe("TwoColumnTextSlide", () => {
|
|
7
|
-
test("renders from golden deck", () => {
|
|
8
|
-
const raw = goldenDeckV1.deck.find(s => s.type === "twoColumnText");
|
|
9
|
-
const slide = TwoColumnTextSlide.fromJSON(raw);
|
|
10
|
-
const html = slide.render();
|
|
11
|
-
|
|
12
|
-
expect(html).toContain("twoColumnText");
|
|
13
|
-
expect(html).toContain("Left column");
|
|
14
|
-
expect(html).toContain("Right column");
|
|
15
|
-
});
|
|
16
|
-
});
|