@telepath-computer/television 0.1.216 → 1.3.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/dist/THIRD-PARTY-NOTICES.txt +336 -0
- package/dist/canonical/v1/frozen.json +6 -0
- package/dist/canonical/v1/styles.css +7 -2
- package/dist/canonical/v2/components.js +1 -0
- package/dist/canonical/v2/fonts/Hind-Variable.933e9900.woff2 +0 -0
- package/dist/canonical/v2/styles.css +1153 -0
- package/dist/cli.cjs +1763 -761
- package/dist/onboarding/README.md +16 -14
- package/dist/onboarding/business-ops/about.html +4 -3
- package/dist/onboarding/business-ops/retention-vs-releases.html +25 -32
- package/dist/onboarding/business-ops/revenue-vs-goals.html +26 -31
- package/dist/onboarding/productivity/about.html +4 -3
- package/dist/onboarding/productivity/company-todos/THIRD-PARTY-NOTICES.txt +29 -0
- package/dist/onboarding/productivity/company-todos/index.html +20 -20
- package/dist/onboarding/productivity/company-todos/task.css +4 -5
- package/dist/onboarding/productivity/company-todos/task.js +1 -1
- package/dist/onboarding/productivity/meeting-prep.html +12 -12
- package/dist/onboarding/productivity/priorities-today.html +10 -10
- package/dist/onboarding/productivity/todays-calendar/calendar.css +1 -1
- package/dist/onboarding/productivity/todays-calendar/index.html +12 -14
- package/dist/onboarding/research/about.html +4 -3
- package/dist/onboarding/research/open-model-research.html +35 -35
- package/dist/onboarding/research/todays-news.html +72 -72
- package/dist/onboarding/tv-guide/welcome.html +178 -0
- package/dist/skills/television/SKILL.md +122 -67
- package/dist/skills/television/theming.md +1087 -0
- package/dist/skills/tv-calendar/SKILL.md +3 -1
- package/dist/skills/tv-calendar/calendar.css +1 -1
- package/dist/skills/tv-table/SKILL.md +5 -2
- package/dist/skills/tv-tasks/SKILL.md +19 -15
- package/dist/skills/tv-tasks/task.css +4 -26
- package/dist/skills/tv-tasks/task.js +1 -1
- package/dist/themes/README.md +5 -0
- package/dist/themes/aquarium/README.md +48 -0
- package/dist/themes/aquarium/iframe-background.js +137 -0
- package/dist/themes/aquarium/manifest.json +7 -0
- package/dist/themes/aquarium/theme.css +46 -0
- package/dist/themes/blueprint/README.md +31 -0
- package/dist/themes/blueprint/manifest.json +6 -0
- package/dist/themes/blueprint/theme.css +115 -0
- package/dist/themes/clouds/README.md +15 -0
- package/dist/themes/clouds/THIRD-PARTY-NOTICES.txt +81 -0
- package/dist/themes/clouds/manifest.json +6 -0
- package/dist/themes/clouds/theme.css +62 -0
- package/dist/themes/clouds/wallpaper-dark.webp +0 -0
- package/dist/themes/clouds/wallpaper.webp +0 -0
- package/dist/themes/crt-phosphor/README.md +31 -0
- package/dist/themes/crt-phosphor/manifest.json +6 -0
- package/dist/themes/crt-phosphor/theme.css +105 -0
- package/dist/themes/nord/README.md +9 -0
- package/dist/themes/nord/THIRD-PARTY-NOTICES.txt +29 -0
- package/dist/themes/nord/manifest.json +5 -0
- package/dist/themes/nord/theme.css +28 -0
- package/dist/themes/swiss/README.md +5 -0
- package/dist/themes/swiss/manifest.json +5 -0
- package/dist/themes/swiss/theme.css +34 -0
- package/dist/themes/tokyo-night/README.md +17 -0
- package/dist/themes/tokyo-night/THIRD-PARTY-NOTICES.txt +235 -0
- package/dist/themes/tokyo-night/manifest.json +5 -0
- package/dist/themes/tokyo-night/theme.css +31 -0
- package/dist/themes/tokyo-night/wallpaper.webp +0 -0
- package/dist/views/artifact-missing/index.html +40 -68
- package/dist/views/markdown/THIRD-PARTY-NOTICES.txt +26 -0
- package/dist/views/markdown/index.html +49 -23
- package/dist/web/THIRD-PARTY-NOTICES.txt +26 -0
- package/dist/web/assets/artifact-bridge-BEUWXKq7.js +1 -0
- package/dist/web/assets/{artifactMissing-BiK_l3Ts.js → artifactMissing-CUs1ZwDx.js} +1 -1
- package/dist/web/assets/main-3UimTRLK.css +1 -0
- package/dist/web/assets/main-CSSzbG7q.js +704 -0
- package/dist/web/assets/{urlUnsupported-RGIrhMDe.js → urlUnsupported-powR79PT.js} +1 -1
- package/dist/web/index.html +40 -5
- package/dist/web/views/artifact-missing/index.html +40 -68
- package/dist/web/views/url-unsupported/index.html +40 -68
- package/package.json +1 -1
- package/dist/onboarding/tv-guide/welcome/assets/television.svg +0 -71
- package/dist/onboarding/tv-guide/welcome/index.html +0 -203
- package/dist/skills/tv-theme/SKILL.md +0 -449
- package/dist/web/assets/artifact-bridge-3Trk-B2L.js +0 -1
- package/dist/web/assets/clouds-CAYIArXj.jpg +0 -0
- package/dist/web/assets/main-Blg8fuaV.css +0 -1
- package/dist/web/assets/main-V14r9Psb.js +0 -596
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# Onboarding content — replacement contract
|
|
2
2
|
|
|
3
|
-
This tree
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
channel's provenance is recorded.
|
|
3
|
+
This tree contains the reviewed release content installed into new Television
|
|
4
|
+
data directories. The design sources live under
|
|
5
|
+
[`specs/ui/onboarding-artifacts/`](../../../../specs/ui/onboarding-artifacts/index.md).
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
**All four channels are baked content**:
|
|
9
8
|
generated from the design sources under `specs/ui/onboarding-artifacts/` by
|
|
10
9
|
`scripts/bake-onboarding.mjs` (specs/arch/onboarding/bake.md; requires the
|
|
11
10
|
repository's Node 24 toolchain). Do not edit
|
|
@@ -16,19 +15,22 @@ Their display `name` values, channel order, and `focusChannel` in
|
|
|
16
15
|
`onboarding-channels.json` are hand-edits the bake preserves. An artifact
|
|
17
16
|
entry may also carry optional initial-page `size` and `geometry`; for baked
|
|
18
17
|
channels author those fields in the design channel's `layout.yml` so a
|
|
19
|
-
re-bake carries them into the config.
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
re-bake carries them into the config. Missing fields use the shared page
|
|
19
|
+
defaults. The bake renders flat `.frame` sources into complete HTML documents
|
|
20
|
+
and copies flat `.md` sources unchanged. Declared skill assets are copied beside
|
|
21
|
+
the task and calendar entry documents; the welcome is a single HTML file with
|
|
22
|
+
an inline logo.
|
|
22
23
|
|
|
23
24
|
**All non-tv-guide content is swap-free**: tests derive their expectations
|
|
24
|
-
from this config and these files at runtime, so content edits
|
|
25
|
-
|
|
25
|
+
from this config and these files at runtime, so content edits need zero test
|
|
26
|
+
changes.
|
|
26
27
|
|
|
27
28
|
**`tv-guide` content is deliberately test-pinned** (it is released copy) and
|
|
28
|
-
is
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
is covered by `packages/server/test/onboarding-content.test.ts`, which pins
|
|
30
|
+
its artifact configuration, single-file source, canonical dependencies, and
|
|
31
|
+
public styling vocabulary. Fresh-install acceptance derives served content
|
|
32
|
+
from the package, including the welcome document. Changes to a pinned contract
|
|
33
|
+
require updating that assertion deliberately.
|
|
32
34
|
|
|
33
35
|
**The channel SET (folder names = slugs) is pinned in exactly one place**:
|
|
34
36
|
`test/helpers/shipped-onboarding.ts`. Adding, removing, or renaming a channel
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>About this channel</title>
|
|
7
|
-
<link rel="stylesheet" href="/canonical/
|
|
8
|
-
<script type="module" src="/canonical/
|
|
7
|
+
<link rel="stylesheet" href="/canonical/v2/styles.css">
|
|
8
|
+
<script type="module" src="/canonical/v2/components.js"></script>
|
|
9
9
|
<style>
|
|
10
10
|
/* Shared base for onboarding artifacts ([[../index.md]]): document padding
|
|
11
11
|
and the centered content shell. Typography, text color, and background
|
|
@@ -64,6 +64,7 @@ header > .summary-deck {
|
|
|
64
64
|
light and vanish on the yellow in a dark theme ([[../index.md#^about-cards]]). */
|
|
65
65
|
body {
|
|
66
66
|
background: var(--yellow-100);
|
|
67
|
+
color: var(--neutral-900);
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
.lede {
|
|
@@ -94,7 +95,7 @@ body {
|
|
|
94
95
|
position: absolute;
|
|
95
96
|
inset: 0 auto 0 0;
|
|
96
97
|
width: 3px;
|
|
97
|
-
border-radius: var(--radius-
|
|
98
|
+
border-radius: var(--radius-pill, 9999px);
|
|
98
99
|
background: var(--yellow-700);
|
|
99
100
|
}
|
|
100
101
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>Retention vs. recent releases</title>
|
|
7
|
-
<link rel="stylesheet" href="/canonical/
|
|
8
|
-
<script type="module" src="/canonical/
|
|
7
|
+
<link rel="stylesheet" href="/canonical/v2/styles.css">
|
|
8
|
+
<script type="module" src="/canonical/v2/components.js"></script>
|
|
9
9
|
<style>
|
|
10
10
|
/* Shared base for onboarding artifacts ([[../index.md]]): document padding
|
|
11
11
|
and the centered content shell. Typography, text color, and background
|
|
@@ -96,7 +96,7 @@ header.hero h1 {
|
|
|
96
96
|
.panel {
|
|
97
97
|
padding: var(--space-20, 20px);
|
|
98
98
|
border: 1px solid var(--color-border);
|
|
99
|
-
border-radius:
|
|
99
|
+
border-radius: 12px;
|
|
100
100
|
background: var(--color-surface);
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -114,8 +114,8 @@ header.hero h1 {
|
|
|
114
114
|
|
|
115
115
|
.summary-box {
|
|
116
116
|
padding: var(--space-16, 16px) var(--space-20, 20px);
|
|
117
|
-
border: 1px solid var(--color-border
|
|
118
|
-
border-radius:
|
|
117
|
+
border: 1px solid var(--color-border);
|
|
118
|
+
border-radius: 12px;
|
|
119
119
|
background: var(--color-surface-muted);
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -166,7 +166,7 @@ header.hero h1 {
|
|
|
166
166
|
min-width: 120px;
|
|
167
167
|
padding: var(--space-12, 12px) var(--space-16, 16px);
|
|
168
168
|
border: 1px solid var(--color-border);
|
|
169
|
-
border-radius:
|
|
169
|
+
border-radius: 12px;
|
|
170
170
|
background: var(--color-surface);
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -195,12 +195,7 @@ header.hero h1 {
|
|
|
195
195
|
.delta.down { color: var(--red-600); }
|
|
196
196
|
|
|
197
197
|
|
|
198
|
-
/*
|
|
199
|
-
wide dashboard shell, the responsive inline-SVG plumbing and common
|
|
200
|
-
axis/grid chrome, the legend row, and the narrow-viewport padding. Each
|
|
201
|
-
dashboard's own styles.css keeps only its series colors, swatch shape, and
|
|
202
|
-
any chart-specific chrome — SVG presentation attributes can't take var(),
|
|
203
|
-
so fills and strokes live in CSS. */
|
|
198
|
+
/* Chart layout for responsive inline SVGs and the surrounding dashboard. */
|
|
204
199
|
|
|
205
200
|
/* Dashboards run wider than the set's default shell. */
|
|
206
201
|
.shell {
|
|
@@ -226,7 +221,7 @@ svg.chart text {
|
|
|
226
221
|
}
|
|
227
222
|
|
|
228
223
|
/* Common axis/grid chrome. */
|
|
229
|
-
svg.chart .grid { stroke: var(--color-border
|
|
224
|
+
svg.chart .grid { stroke: var(--color-border); }
|
|
230
225
|
svg.chart .axis-line { stroke: var(--color-border); }
|
|
231
226
|
svg.chart .axis-y { fill: var(--color-text-muted); }
|
|
232
227
|
|
|
@@ -246,7 +241,7 @@ svg.chart .axis-y { fill: var(--color-text-muted); }
|
|
|
246
241
|
gap: var(--space-6, 6px);
|
|
247
242
|
}
|
|
248
243
|
|
|
249
|
-
/* Narrow viewport
|
|
244
|
+
/* Narrow viewport: tighten document padding so the
|
|
250
245
|
scaled-down chart keeps as much width as possible. */
|
|
251
246
|
@media (max-width: 600px) {
|
|
252
247
|
body {
|
|
@@ -255,11 +250,10 @@ svg.chart .axis-y { fill: var(--color-text-muted); }
|
|
|
255
250
|
}
|
|
256
251
|
|
|
257
252
|
|
|
258
|
-
/* Retention vs. recent releases ([[index.md]]): artifact-specific styling only
|
|
253
|
+
/* Retention vs. recent releases ([[../index.md]]): artifact-specific styling only
|
|
259
254
|
— the KPI accent sequence, this chart's retention series and release-marker
|
|
260
255
|
colors, its legend swatches, and the release-impact list. The dashboard
|
|
261
|
-
shell, chart plumbing, common chrome, and legend row
|
|
262
|
-
chart scaffold ([shared/chart.css](../../shared/chart.css)). */
|
|
256
|
+
shell, chart plumbing, common chrome, and legend row are defined above. */
|
|
263
257
|
|
|
264
258
|
/* KPI value accents are a positional sequence (green/orange/blue), owned
|
|
265
259
|
here rather than carried as ramp tokens in data. Each card sets the
|
|
@@ -317,7 +311,7 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
317
311
|
align-items: center;
|
|
318
312
|
gap: var(--space-12, 12px);
|
|
319
313
|
padding: var(--space-10, 10px) var(--space-16, 16px);
|
|
320
|
-
border-radius:
|
|
314
|
+
border-radius: 12px;
|
|
321
315
|
border: 1px solid var(--color-border);
|
|
322
316
|
background: var(--color-surface-muted);
|
|
323
317
|
}
|
|
@@ -359,8 +353,7 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
359
353
|
.release-impact.partial { color: var(--orange-600); }
|
|
360
354
|
.release-impact.up { color: var(--green-600); }
|
|
361
355
|
|
|
362
|
-
/* Narrow viewport: let the release rows wrap
|
|
363
|
-
body padding). */
|
|
356
|
+
/* Narrow viewport: let the release rows wrap. */
|
|
364
357
|
@media (max-width: 600px) {
|
|
365
358
|
.release-item {
|
|
366
359
|
flex-wrap: wrap;
|
|
@@ -381,25 +374,25 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
381
374
|
</header>
|
|
382
375
|
|
|
383
376
|
<div class="kpi-row">
|
|
384
|
-
|
|
377
|
+
|
|
385
378
|
<div class="kpi">
|
|
386
379
|
<div class="label">Current W1 Retention</div>
|
|
387
380
|
<div class="value">78%</div>
|
|
388
381
|
<div class="delta up">+10 pts since May</div>
|
|
389
382
|
</div>
|
|
390
|
-
|
|
383
|
+
|
|
391
384
|
<div class="kpi">
|
|
392
385
|
<div class="label">Pre-v0.4.0 Baseline</div>
|
|
393
386
|
<div class="value">68%</div>
|
|
394
387
|
<div class="delta down">−2 pts after v0.3.0</div>
|
|
395
388
|
</div>
|
|
396
|
-
|
|
389
|
+
|
|
397
390
|
<div class="kpi">
|
|
398
391
|
<div class="label">Post-v0.4.0 Peak</div>
|
|
399
392
|
<div class="value">81%</div>
|
|
400
393
|
<div class="delta up">+13 pts recovery</div>
|
|
401
394
|
</div>
|
|
402
|
-
|
|
395
|
+
|
|
403
396
|
</div>
|
|
404
397
|
|
|
405
398
|
<section class="panel">
|
|
@@ -505,22 +498,22 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
505
498
|
<div class="legend-swatch retention"></div>
|
|
506
499
|
W1 Retention
|
|
507
500
|
</div>
|
|
508
|
-
|
|
501
|
+
|
|
509
502
|
<div class="legend-item">
|
|
510
503
|
<div class="legend-swatch v030"></div>
|
|
511
504
|
v0.3.0 release
|
|
512
505
|
</div>
|
|
513
|
-
|
|
506
|
+
|
|
514
507
|
<div class="legend-item">
|
|
515
508
|
<div class="legend-swatch v035"></div>
|
|
516
509
|
v0.3.5 release
|
|
517
510
|
</div>
|
|
518
|
-
|
|
511
|
+
|
|
519
512
|
<div class="legend-item">
|
|
520
513
|
<div class="legend-swatch v040"></div>
|
|
521
514
|
v0.4.0 release
|
|
522
515
|
</div>
|
|
523
|
-
|
|
516
|
+
|
|
524
517
|
</div>
|
|
525
518
|
</section>
|
|
526
519
|
|
|
@@ -528,7 +521,7 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
528
521
|
<h2>Release impact</h2>
|
|
529
522
|
<p class="note">How each release affected weekly retention</p>
|
|
530
523
|
<div class="release-list">
|
|
531
|
-
|
|
524
|
+
|
|
532
525
|
<div class="release-item">
|
|
533
526
|
<div class="release-dot v030"></div>
|
|
534
527
|
<div class="release-info">
|
|
@@ -537,7 +530,7 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
537
530
|
</div>
|
|
538
531
|
<div class="release-impact down">−5 pts (68% → 63%)</div>
|
|
539
532
|
</div>
|
|
540
|
-
|
|
533
|
+
|
|
541
534
|
<div class="release-item">
|
|
542
535
|
<div class="release-dot v035"></div>
|
|
543
536
|
<div class="release-info">
|
|
@@ -546,7 +539,7 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
546
539
|
</div>
|
|
547
540
|
<div class="release-impact partial">+6 pts (63% → 69%)</div>
|
|
548
541
|
</div>
|
|
549
|
-
|
|
542
|
+
|
|
550
543
|
<div class="release-item">
|
|
551
544
|
<div class="release-dot v040"></div>
|
|
552
545
|
<div class="release-info">
|
|
@@ -555,7 +548,7 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
555
548
|
</div>
|
|
556
549
|
<div class="release-impact up">+9 pts (69% → 78%)</div>
|
|
557
550
|
</div>
|
|
558
|
-
|
|
551
|
+
|
|
559
552
|
</div>
|
|
560
553
|
</section>
|
|
561
554
|
</main>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>Revenue vs. goals</title>
|
|
7
|
-
<link rel="stylesheet" href="/canonical/
|
|
8
|
-
<script type="module" src="/canonical/
|
|
7
|
+
<link rel="stylesheet" href="/canonical/v2/styles.css">
|
|
8
|
+
<script type="module" src="/canonical/v2/components.js"></script>
|
|
9
9
|
<style>
|
|
10
10
|
/* Shared base for onboarding artifacts ([[../index.md]]): document padding
|
|
11
11
|
and the centered content shell. Typography, text color, and background
|
|
@@ -96,7 +96,7 @@ header.hero h1 {
|
|
|
96
96
|
.panel {
|
|
97
97
|
padding: var(--space-20, 20px);
|
|
98
98
|
border: 1px solid var(--color-border);
|
|
99
|
-
border-radius:
|
|
99
|
+
border-radius: 12px;
|
|
100
100
|
background: var(--color-surface);
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -114,8 +114,8 @@ header.hero h1 {
|
|
|
114
114
|
|
|
115
115
|
.summary-box {
|
|
116
116
|
padding: var(--space-16, 16px) var(--space-20, 20px);
|
|
117
|
-
border: 1px solid var(--color-border
|
|
118
|
-
border-radius:
|
|
117
|
+
border: 1px solid var(--color-border);
|
|
118
|
+
border-radius: 12px;
|
|
119
119
|
background: var(--color-surface-muted);
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -166,7 +166,7 @@ header.hero h1 {
|
|
|
166
166
|
min-width: 120px;
|
|
167
167
|
padding: var(--space-12, 12px) var(--space-16, 16px);
|
|
168
168
|
border: 1px solid var(--color-border);
|
|
169
|
-
border-radius:
|
|
169
|
+
border-radius: 12px;
|
|
170
170
|
background: var(--color-surface);
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -205,7 +205,7 @@ header.hero h1 {
|
|
|
205
205
|
gap: var(--space-4, 4px);
|
|
206
206
|
padding: 2px var(--space-10, 10px);
|
|
207
207
|
border: 1px solid var(--color-border);
|
|
208
|
-
border-radius: var(--radius-
|
|
208
|
+
border-radius: var(--radius-pill, 9999px);
|
|
209
209
|
background: var(--color-surface);
|
|
210
210
|
color: var(--color-text-muted);
|
|
211
211
|
font-size: var(--text-sm, 12px);
|
|
@@ -262,7 +262,7 @@ header.hero h1 {
|
|
|
262
262
|
|
|
263
263
|
.table-wrap tbody td {
|
|
264
264
|
padding: var(--space-10, 10px) var(--space-12, 12px);
|
|
265
|
-
border-bottom: 1px solid var(--color-border
|
|
265
|
+
border-bottom: 1px solid var(--color-border);
|
|
266
266
|
white-space: nowrap;
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -280,12 +280,7 @@ header.hero h1 {
|
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
|
|
283
|
-
/*
|
|
284
|
-
wide dashboard shell, the responsive inline-SVG plumbing and common
|
|
285
|
-
axis/grid chrome, the legend row, and the narrow-viewport padding. Each
|
|
286
|
-
dashboard's own styles.css keeps only its series colors, swatch shape, and
|
|
287
|
-
any chart-specific chrome — SVG presentation attributes can't take var(),
|
|
288
|
-
so fills and strokes live in CSS. */
|
|
283
|
+
/* Chart layout for responsive inline SVGs and the surrounding dashboard. */
|
|
289
284
|
|
|
290
285
|
/* Dashboards run wider than the set's default shell. */
|
|
291
286
|
.shell {
|
|
@@ -311,7 +306,7 @@ svg.chart text {
|
|
|
311
306
|
}
|
|
312
307
|
|
|
313
308
|
/* Common axis/grid chrome. */
|
|
314
|
-
svg.chart .grid { stroke: var(--color-border
|
|
309
|
+
svg.chart .grid { stroke: var(--color-border); }
|
|
315
310
|
svg.chart .axis-line { stroke: var(--color-border); }
|
|
316
311
|
svg.chart .axis-y { fill: var(--color-text-muted); }
|
|
317
312
|
|
|
@@ -331,7 +326,7 @@ svg.chart .axis-y { fill: var(--color-text-muted); }
|
|
|
331
326
|
gap: var(--space-6, 6px);
|
|
332
327
|
}
|
|
333
328
|
|
|
334
|
-
/* Narrow viewport
|
|
329
|
+
/* Narrow viewport: tighten document padding so the
|
|
335
330
|
scaled-down chart keeps as much width as possible. */
|
|
336
331
|
@media (max-width: 600px) {
|
|
337
332
|
body {
|
|
@@ -340,10 +335,10 @@ svg.chart .axis-y { fill: var(--color-text-muted); }
|
|
|
340
335
|
}
|
|
341
336
|
|
|
342
337
|
|
|
343
|
-
/* Revenue vs. goals ([[index.md]]): artifact-specific styling only — the KPI
|
|
338
|
+
/* Revenue vs. goals ([[../index.md]]): artifact-specific styling only — the KPI
|
|
344
339
|
accent sequence, this chart's series/label colors, and its legend swatches.
|
|
345
340
|
The dashboard shell, chart plumbing, common chrome, and legend row come from
|
|
346
|
-
the
|
|
341
|
+
the chart scaffold defined above. */
|
|
347
342
|
|
|
348
343
|
/* KPI value accents are a positional sequence (green/blue/purple/orange),
|
|
349
344
|
owned here rather than carried as ramp tokens in data. Each card sets
|
|
@@ -370,7 +365,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
370
365
|
.legend-swatch {
|
|
371
366
|
width: 14px;
|
|
372
367
|
height: 14px;
|
|
373
|
-
border-radius:
|
|
368
|
+
border-radius: 4px;
|
|
374
369
|
}
|
|
375
370
|
|
|
376
371
|
.legend-swatch.actual {
|
|
@@ -398,31 +393,31 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
398
393
|
</header>
|
|
399
394
|
|
|
400
395
|
<div class="kpi-row">
|
|
401
|
-
|
|
396
|
+
|
|
402
397
|
<div class="kpi">
|
|
403
398
|
<div class="label">Q2 2026 Revenue</div>
|
|
404
399
|
<div class="value">$2.84M</div>
|
|
405
400
|
<div class="delta up">+49% QoQ</div>
|
|
406
401
|
</div>
|
|
407
|
-
|
|
402
|
+
|
|
408
403
|
<div class="kpi">
|
|
409
404
|
<div class="label">Q2 2026 Goal</div>
|
|
410
405
|
<div class="value">$2.6M</div>
|
|
411
406
|
<div class="delta up">Goal exceeded by $240K</div>
|
|
412
407
|
</div>
|
|
413
|
-
|
|
408
|
+
|
|
414
409
|
<div class="kpi">
|
|
415
410
|
<div class="label">TTM Revenue</div>
|
|
416
411
|
<div class="value">$7.64M</div>
|
|
417
412
|
<div class="delta up">+410% YoY</div>
|
|
418
413
|
</div>
|
|
419
|
-
|
|
414
|
+
|
|
420
415
|
<div class="kpi">
|
|
421
416
|
<div class="label">Expansion pipeline</div>
|
|
422
417
|
<div class="value">$9.6M</div>
|
|
423
418
|
<div class="delta up">Acme expansion path</div>
|
|
424
419
|
</div>
|
|
425
|
-
|
|
420
|
+
|
|
426
421
|
</div>
|
|
427
422
|
|
|
428
423
|
<section class="panel">
|
|
@@ -541,7 +536,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
541
536
|
</tr>
|
|
542
537
|
</thead>
|
|
543
538
|
<tbody>
|
|
544
|
-
|
|
539
|
+
|
|
545
540
|
<tr>
|
|
546
541
|
<td>Q1 2025</td>
|
|
547
542
|
<td class="num">$240K</td>
|
|
@@ -550,7 +545,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
550
545
|
<td><span class="pill red">Missed</span></td>
|
|
551
546
|
<td>Pre-launch, design partner pilots only</td>
|
|
552
547
|
</tr>
|
|
553
|
-
|
|
548
|
+
|
|
554
549
|
<tr>
|
|
555
550
|
<td>Q2 2025</td>
|
|
556
551
|
<td class="num">$560K</td>
|
|
@@ -559,7 +554,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
559
554
|
<td><span class="pill orange">Close</span></td>
|
|
560
555
|
<td>v0.2 launch, first paying pilot conversions</td>
|
|
561
556
|
</tr>
|
|
562
|
-
|
|
557
|
+
|
|
563
558
|
<tr>
|
|
564
559
|
<td>Q3 2025</td>
|
|
565
560
|
<td class="num">$900K</td>
|
|
@@ -568,7 +563,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
568
563
|
<td><span class="pill orange">Close</span></td>
|
|
569
564
|
<td>NeonBank pilot signed, expansion conversations started</td>
|
|
570
565
|
</tr>
|
|
571
|
-
|
|
566
|
+
|
|
572
567
|
<tr>
|
|
573
568
|
<td>Q4 2025</td>
|
|
574
569
|
<td class="num">$1.44M</td>
|
|
@@ -577,7 +572,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
577
572
|
<td><span class="pill orange">Close</span></td>
|
|
578
573
|
<td>Mallory Health onboarded, multi-seat deals began</td>
|
|
579
574
|
</tr>
|
|
580
|
-
|
|
575
|
+
|
|
581
576
|
<tr>
|
|
582
577
|
<td>Q1 2026</td>
|
|
583
578
|
<td class="num">$1.9M</td>
|
|
@@ -586,7 +581,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
586
581
|
<td><span class="pill orange">Close</span></td>
|
|
587
582
|
<td>Acme AI pilot started, v0.3.0 shipped mid-quarter</td>
|
|
588
583
|
</tr>
|
|
589
|
-
|
|
584
|
+
|
|
590
585
|
<tr>
|
|
591
586
|
<td>Q2 2026</td>
|
|
592
587
|
<td class="num">$2.84M</td>
|
|
@@ -595,7 +590,7 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
595
590
|
<td><span class="pill green">Exceeded</span></td>
|
|
596
591
|
<td>v0.4.0 shipped, Acme expansion path opened ($9.6M ARR)</td>
|
|
597
592
|
</tr>
|
|
598
|
-
|
|
593
|
+
|
|
599
594
|
</tbody>
|
|
600
595
|
</table>
|
|
601
596
|
</div>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>About this channel</title>
|
|
7
|
-
<link rel="stylesheet" href="/canonical/
|
|
8
|
-
<script type="module" src="/canonical/
|
|
7
|
+
<link rel="stylesheet" href="/canonical/v2/styles.css">
|
|
8
|
+
<script type="module" src="/canonical/v2/components.js"></script>
|
|
9
9
|
<style>
|
|
10
10
|
/* Shared base for onboarding artifacts ([[../index.md]]): document padding
|
|
11
11
|
and the centered content shell. Typography, text color, and background
|
|
@@ -64,6 +64,7 @@ header > .summary-deck {
|
|
|
64
64
|
light and vanish on the yellow in a dark theme ([[../index.md#^about-cards]]). */
|
|
65
65
|
body {
|
|
66
66
|
background: var(--yellow-100);
|
|
67
|
+
color: var(--neutral-900);
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
.lede {
|
|
@@ -94,7 +95,7 @@ body {
|
|
|
94
95
|
position: absolute;
|
|
95
96
|
inset: 0 auto 0 0;
|
|
96
97
|
width: 3px;
|
|
97
|
-
border-radius: var(--radius-
|
|
98
|
+
border-radius: var(--radius-pill, 9999px);
|
|
98
99
|
background: var(--yellow-700);
|
|
99
100
|
}
|
|
100
101
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
TELEVISION THIRD-PARTY LICENSING NOTICES
|
|
2
|
+
|
|
3
|
+
This file contains the license terms and attribution notices for third-party software and materials included in Television.
|
|
4
|
+
================================================================================
|
|
5
|
+
@rupertsworld/event-target@0.1.2
|
|
6
|
+
Licensed under MIT.
|
|
7
|
+
--------------------------------------------------------------------------------
|
|
8
|
+
MIT License
|
|
9
|
+
|
|
10
|
+
Copyright (c) 2026 Rupert Manfredi
|
|
11
|
+
|
|
12
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
in the Software without restriction, including without limitation the rights
|
|
15
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
furnished to do so, subject to the following conditions:
|
|
18
|
+
|
|
19
|
+
The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
copies or substantial portions of the Software.
|
|
21
|
+
|
|
22
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
+
SOFTWARE.
|
|
29
|
+
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>Company To-dos</title>
|
|
7
|
-
<link rel="stylesheet" href="/canonical/
|
|
8
|
-
<script type="module" src="/canonical/
|
|
7
|
+
<link rel="stylesheet" href="/canonical/v2/styles.css">
|
|
8
|
+
<script type="module" src="/canonical/v2/components.js"></script>
|
|
9
9
|
<link rel="stylesheet" href="./task.css">
|
|
10
10
|
<script type="module" src="./task.js"></script>
|
|
11
11
|
<style>
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
</header>
|
|
20
20
|
|
|
21
21
|
<tv-task-list>
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
<tv-task-section>
|
|
24
24
|
<header><h2>Overdue</h2></header>
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
<tv-task>
|
|
27
27
|
<tv-task-checkbox></tv-task-checkbox>
|
|
28
28
|
<tv-task-body>
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
</tv-task-meta>
|
|
36
36
|
</tv-task-body>
|
|
37
37
|
</tv-task>
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
</tv-task-section>
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
<tv-task-section>
|
|
42
42
|
<header><h2>Today</h2></header>
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
<tv-task>
|
|
45
45
|
<tv-task-checkbox></tv-task-checkbox>
|
|
46
46
|
<tv-task-body>
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
<tv-task-meta>
|
|
50
50
|
<tv-task-meta-due date="2026-07-08"></tv-task-meta-due>
|
|
51
51
|
<tv-task-meta-item><tv-icon name="hash"></tv-icon>Seed Deck</tv-task-meta-item>
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
</tv-task-meta>
|
|
54
54
|
</tv-task-body>
|
|
55
55
|
</tv-task>
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
<tv-task>
|
|
58
58
|
<tv-task-checkbox></tv-task-checkbox>
|
|
59
59
|
<tv-task-body>
|
|
@@ -62,11 +62,11 @@
|
|
|
62
62
|
<tv-task-meta>
|
|
63
63
|
<tv-task-meta-due date="2026-07-08"></tv-task-meta-due>
|
|
64
64
|
<tv-task-meta-item><tv-icon name="hash"></tv-icon>Investor Update</tv-task-meta-item>
|
|
65
|
-
|
|
65
|
+
|
|
66
66
|
</tv-task-meta>
|
|
67
67
|
</tv-task-body>
|
|
68
68
|
</tv-task>
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
<tv-task>
|
|
71
71
|
<tv-task-checkbox></tv-task-checkbox>
|
|
72
72
|
<tv-task-body>
|
|
@@ -75,16 +75,16 @@
|
|
|
75
75
|
<tv-task-meta>
|
|
76
76
|
<tv-task-meta-due date="2026-07-08"></tv-task-meta-due>
|
|
77
77
|
<tv-task-meta-item><tv-icon name="hash"></tv-icon>Platform Reliability</tv-task-meta-item>
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
</tv-task-meta>
|
|
80
80
|
</tv-task-body>
|
|
81
81
|
</tv-task>
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
</tv-task-section>
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
<tv-task-section>
|
|
86
86
|
<header><h2>Upcoming</h2></header>
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
<tv-task>
|
|
89
89
|
<tv-task-checkbox></tv-task-checkbox>
|
|
90
90
|
<tv-task-body>
|
|
@@ -93,11 +93,11 @@
|
|
|
93
93
|
<tv-task-meta>
|
|
94
94
|
<tv-task-meta-due date="2026-07-10"></tv-task-meta-due>
|
|
95
95
|
<tv-task-meta-item><tv-icon name="hash"></tv-icon>Acme Pilot</tv-task-meta-item>
|
|
96
|
-
|
|
96
|
+
|
|
97
97
|
</tv-task-meta>
|
|
98
98
|
</tv-task-body>
|
|
99
99
|
</tv-task>
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
<tv-task>
|
|
102
102
|
<tv-task-checkbox></tv-task-checkbox>
|
|
103
103
|
<tv-task-body>
|
|
@@ -106,13 +106,13 @@
|
|
|
106
106
|
<tv-task-meta>
|
|
107
107
|
<tv-task-meta-due date="2026-07-14"></tv-task-meta-due>
|
|
108
108
|
<tv-task-meta-item><tv-icon name="hash"></tv-icon>Seed Deck</tv-task-meta-item>
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
</tv-task-meta>
|
|
111
111
|
</tv-task-body>
|
|
112
112
|
</tv-task>
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
</tv-task-section>
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
</tv-task-list>
|
|
117
117
|
</body>
|
|
118
118
|
</html>
|