@telepath-computer/television 0.1.216 → 1.3.3
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 +1241 -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 +124 -67
- package/dist/skills/television/theming.md +1086 -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-Bi6QZnn7.css +1 -0
- package/dist/web/assets/main-Dw6rK_zF.js +706 -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
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
Ljubomir Žarković — Unsplash bt_ZtkCxLs4
|
|
6
|
+
Licensed under LicenseRef-Unsplash.
|
|
7
|
+
--------------------------------------------------------------------------------
|
|
8
|
+
Photo by Ljubomir Žarković on Unsplash.
|
|
9
|
+
https://unsplash.com/photos/bt_ZtkCxLs4
|
|
10
|
+
|
|
11
|
+
Unsplash License
|
|
12
|
+
https://unsplash.com/license
|
|
13
|
+
Retrieved 2026-09-17
|
|
14
|
+
|
|
15
|
+
Unsplash visuals are made to be used freely. Our license reflects that.
|
|
16
|
+
|
|
17
|
+
All images can be downloaded and used for free
|
|
18
|
+
Commercial and non-commercial purposes
|
|
19
|
+
No permission needed (though attribution is appreciated!)
|
|
20
|
+
|
|
21
|
+
What is not permitted
|
|
22
|
+
|
|
23
|
+
Images cannot be sold without significant modification.
|
|
24
|
+
Compiling images from Unsplash to replicate a similar or competing service.
|
|
25
|
+
|
|
26
|
+
Longform
|
|
27
|
+
|
|
28
|
+
Unsplash grants you an irrevocable, nonexclusive, worldwide copyright license to download, copy, modify, distribute, perform, and use images from Unsplash for free, including for commercial purposes, without permission from or attributing the photographer or Unsplash. This license does not include the right to compile images from Unsplash to replicate a similar or competing service.
|
|
29
|
+
|
|
30
|
+
================================================================================
|
|
31
|
+
Shot by Cerqueira — Unsplash NpF9JLGYfeQ
|
|
32
|
+
Licensed under LicenseRef-Unsplash.
|
|
33
|
+
--------------------------------------------------------------------------------
|
|
34
|
+
Photo by Shot by Cerqueira on Unsplash.
|
|
35
|
+
https://unsplash.com/photos/NpF9JLGYfeQ
|
|
36
|
+
|
|
37
|
+
Unsplash License
|
|
38
|
+
https://unsplash.com/license
|
|
39
|
+
Retrieved 2026-09-17
|
|
40
|
+
|
|
41
|
+
Unsplash visuals are made to be used freely. Our license reflects that.
|
|
42
|
+
|
|
43
|
+
All images can be downloaded and used for free
|
|
44
|
+
Commercial and non-commercial purposes
|
|
45
|
+
No permission needed (though attribution is appreciated!)
|
|
46
|
+
|
|
47
|
+
What is not permitted
|
|
48
|
+
|
|
49
|
+
Images cannot be sold without significant modification.
|
|
50
|
+
Compiling images from Unsplash to replicate a similar or competing service.
|
|
51
|
+
|
|
52
|
+
Longform
|
|
53
|
+
|
|
54
|
+
Unsplash grants you an irrevocable, nonexclusive, worldwide copyright license to download, copy, modify, distribute, perform, and use images from Unsplash for free, including for commercial purposes, without permission from or attributing the photographer or Unsplash. This license does not include the right to compile images from Unsplash to replicate a similar or competing service.
|
|
55
|
+
|
|
56
|
+
================================================================================
|
|
57
|
+
Tailwind CSS color palette
|
|
58
|
+
Licensed under MIT.
|
|
59
|
+
--------------------------------------------------------------------------------
|
|
60
|
+
MIT License
|
|
61
|
+
|
|
62
|
+
Copyright (c) Tailwind Labs, Inc.
|
|
63
|
+
|
|
64
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
65
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
66
|
+
in the Software without restriction, including without limitation the rights
|
|
67
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
68
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
69
|
+
furnished to do so, subject to the following conditions:
|
|
70
|
+
|
|
71
|
+
The above copyright notice and this permission notice shall be included in all
|
|
72
|
+
copies or substantial portions of the Software.
|
|
73
|
+
|
|
74
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
75
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
76
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
77
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
78
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
79
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
80
|
+
SOFTWARE.
|
|
81
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/* Gray, Neutral and Slate palettes adapted from Tailwind CSS.
|
|
2
|
+
https://github.com/tailwindlabs/tailwindcss
|
|
3
|
+
Copyright (c) Tailwind Labs, Inc.
|
|
4
|
+
MIT License; see THIRD-PARTY-NOTICES.txt. */
|
|
5
|
+
:root {
|
|
6
|
+
/* Bright blue for primary controls and selection in light appearance. */
|
|
7
|
+
--color-primary: #3994c9;
|
|
8
|
+
--neutral: oklch(55.1% 0.027 264.364);
|
|
9
|
+
--neutral-50: oklch(98.5% 0.002 247.839);
|
|
10
|
+
--neutral-100: oklch(96.7% 0.003 264.542);
|
|
11
|
+
--neutral-200: oklch(92.8% 0.006 264.531);
|
|
12
|
+
--neutral-300: oklch(87.2% 0.01 258.338);
|
|
13
|
+
--neutral-400: oklch(70.7% 0.022 261.325);
|
|
14
|
+
--neutral-500: var(--neutral);
|
|
15
|
+
--neutral-600: oklch(44.6% 0.03 256.802);
|
|
16
|
+
--neutral-700: oklch(37.3% 0.034 259.733);
|
|
17
|
+
--neutral-800: oklch(27.8% 0.033 256.848);
|
|
18
|
+
--neutral-900: oklch(21% 0.034 264.665);
|
|
19
|
+
--neutral-950: oklch(13% 0.028 261.692);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:root[data-theme="light"] {
|
|
23
|
+
--color-border: oklch(from var(--color-text) l c h / var(--alpha-20));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Mostly Neutral, with a trace of Gray for a cool dark surface. */
|
|
27
|
+
:root[data-theme="dark"] {
|
|
28
|
+
/* Slate 500 keeps the dark appearance subdued. */
|
|
29
|
+
--color-primary: oklch(55.4% 0.046 257.417);
|
|
30
|
+
--neutral: color-mix(in oklch, oklch(55.1% 0.027 264.364) 25%, oklch(55.6% 0 none));
|
|
31
|
+
--neutral-50: color-mix(in oklch, oklch(98.5% 0.002 247.839) 25%, oklch(98.5% 0 none));
|
|
32
|
+
--neutral-100: color-mix(in oklch, oklch(96.7% 0.003 264.542) 25%, oklch(97% 0 none));
|
|
33
|
+
--neutral-200: color-mix(in oklch, oklch(92.8% 0.006 264.531) 25%, oklch(92.2% 0 none));
|
|
34
|
+
--neutral-300: color-mix(in oklch, oklch(87.2% 0.01 258.338) 25%, oklch(87% 0 none));
|
|
35
|
+
--neutral-400: color-mix(in oklch, oklch(70.7% 0.022 261.325) 25%, oklch(70.8% 0 none));
|
|
36
|
+
--neutral-500: var(--neutral);
|
|
37
|
+
--neutral-600: color-mix(in oklch, oklch(44.6% 0.03 256.802) 25%, oklch(43.9% 0 none));
|
|
38
|
+
--neutral-700: color-mix(in oklch, oklch(37.3% 0.034 259.733) 25%, oklch(37.1% 0 none));
|
|
39
|
+
--neutral-800: color-mix(in oklch, oklch(27.8% 0.033 256.848) 25%, oklch(26.9% 0 none));
|
|
40
|
+
--neutral-900: color-mix(in oklch, oklch(21% 0.034 264.665) 25%, oklch(20.5% 0 none));
|
|
41
|
+
--neutral-950: color-mix(in oklch, oklch(13% 0.028 261.692) 25%, oklch(14.5% 0 none));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:root[data-television-document="app"] {
|
|
45
|
+
--app-wallpaper-image: url(wallpaper.webp);
|
|
46
|
+
--sidebar-background: var(--color-surface-muted);
|
|
47
|
+
--sidebar-shadow: var(--shadow-sm);
|
|
48
|
+
--frame-titlebar-background: var(--color-surface-muted);
|
|
49
|
+
--wallpaper-overlay-background: oklch(27.9% 0.041 260.031 / var(--alpha-50));
|
|
50
|
+
--wallpaper-overlay-background-active: oklch(from var(--wallpaper-overlay-background) calc(l * 0.8) c h / var(--alpha-75));
|
|
51
|
+
--wallpaper-overlay-text-color: var(--neutral-50);
|
|
52
|
+
--tab-text-color: var(--wallpaper-overlay-text-color);
|
|
53
|
+
--wallpaper-overlay-blur: 8px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:root[data-television-document="app"][data-theme="light"] {
|
|
57
|
+
--wallpaper-overlay-background: oklch(from var(--color-primary) calc(l - 0.18) c h / var(--alpha-50));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:root[data-television-document="app"][data-theme="dark"] {
|
|
61
|
+
--app-wallpaper-image: url(wallpaper-dark.webp);
|
|
62
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CRT Phosphor
|
|
2
|
+
|
|
3
|
+
Authored by an agent (Claude) on 2026-09-17 as part of a batch of "fun themes" testing the theme system. Covers "single-mode (dark)" and "CSS-only effects on `#foreground-overlay`".
|
|
4
|
+
|
|
5
|
+
## Intent
|
|
6
|
+
|
|
7
|
+
A green P1 phosphor terminal: monochrome green on near-black, monospace, glowing type, scanlines, vignette, a rolling refresh band and faint mains flicker. Fixed look with no mode blocks. The manifest declares `"colorScheme": "dark"`, so Television applies the dark appearance wherever this theme is active, whatever the appearance preference says. The theme sets no CSS `color-scheme` anywhere; Television supplies it.
|
|
8
|
+
|
|
9
|
+
## Choices
|
|
10
|
+
|
|
11
|
+
- A private `--phosphor` custom property holds the green; documented tokens point at it. (It is theme-owned, not a Television token.)
|
|
12
|
+
- Shadows become glows.
|
|
13
|
+
- `text-shadow` on `:root` inherits everywhere, including live-canonical artifacts (the iframe documents load the same stylesheet, so each gets its own `:root` rule). Removed on the reversed selected channel row.
|
|
14
|
+
- `--color-danger` stays amber instead of going green: destructive actions must remain distinguishable.
|
|
15
|
+
- Selected tab is an outlined phosphor box rather than a fill, so the cursor glyph reads.
|
|
16
|
+
|
|
17
|
+
## Effects and cost
|
|
18
|
+
|
|
19
|
+
All on `#foreground-overlay`, CSS only, no scripts:
|
|
20
|
+
|
|
21
|
+
- Base: two repeating gradients (scanlines, grille) + radial vignette. Static.
|
|
22
|
+
- `::before` refresh band: one `transform` animation, 7s loop, compositor-only.
|
|
23
|
+
- `::after` flicker: stepped opacity, 4s loop — deliberately `steps(1)` so it repaints a handful of times per cycle rather than every frame.
|
|
24
|
+
- Cursor blink on the selected tab label: stepped.
|
|
25
|
+
- All animation stops under `prefers-reduced-motion: reduce`.
|
|
26
|
+
|
|
27
|
+
The overlay does not cover native modal dialogs (they sit above it), so dialogs appear "in front of the glass". Accepted.
|
|
28
|
+
|
|
29
|
+
## Files
|
|
30
|
+
|
|
31
|
+
`theme.css`, `manifest.json`. No assets, no JavaScript.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/* CRT Phosphor — a P1 green monitor. Fixed look; all effects are CSS on the foreground overlay. */
|
|
2
|
+
:root {
|
|
3
|
+
--phosphor: oklch(0.86 0.24 145);
|
|
4
|
+
--neutral: oklch(0.556 0.06 148);
|
|
5
|
+
--accent: var(--phosphor);
|
|
6
|
+
--color-surface: oklch(0.17 0.035 150);
|
|
7
|
+
--color-surface-muted: oklch(0.14 0.03 150);
|
|
8
|
+
--color-text: oklch(0.88 0.2 145);
|
|
9
|
+
--color-text-muted: oklch(0.66 0.14 146);
|
|
10
|
+
--color-text-reversed: oklch(0.14 0.03 150);
|
|
11
|
+
--color-border: oklch(from var(--phosphor) l c h / 35%);
|
|
12
|
+
--color-link: var(--phosphor);
|
|
13
|
+
/* A monochrome tube cannot show red: situations keep distinct lightness, not hue. Danger stays amber so destructive actions remain recognisable. */
|
|
14
|
+
--color-danger: oklch(0.8 0.17 70);
|
|
15
|
+
--color-success: var(--phosphor);
|
|
16
|
+
--alpha-active: 14%;
|
|
17
|
+
|
|
18
|
+
--font-sans: ui-monospace, "SF Mono", SFMono-Regular, Menlo, "DejaVu Sans Mono", monospace;
|
|
19
|
+
--control-radius: 2px;
|
|
20
|
+
--panel-radius: 4px;
|
|
21
|
+
--surface-border-color: oklch(from var(--phosphor) l c h / 45%);
|
|
22
|
+
--surface-outline-color: oklch(0 0 0 / 60%);
|
|
23
|
+
/* Light sources glow; they do not cast shadows. */
|
|
24
|
+
--shadow-sm: 0 0 6px oklch(from var(--phosphor) l c h / 18%);
|
|
25
|
+
--shadow-md: 0 0 14px oklch(from var(--phosphor) l c h / 22%);
|
|
26
|
+
--shadow-lg: 0 0 24px oklch(from var(--phosphor) l c h / 22%);
|
|
27
|
+
--shadow-xl: 0 0 40px oklch(from var(--phosphor) l c h / 20%);
|
|
28
|
+
|
|
29
|
+
/* Phosphor bloom on all type, inherited by app and live-canonical artifacts alike. */
|
|
30
|
+
text-shadow: 0 0 5px oklch(from currentColor l c h / 45%);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:root[data-television-document="app"] {
|
|
34
|
+
--frame-radius: 14px; /* slightly bulged tube corners */
|
|
35
|
+
--tab-radius: 2px;
|
|
36
|
+
--sidebar-background: oklch(0.12 0.025 150);
|
|
37
|
+
--sidebar-heading-font-size: var(--text-sm);
|
|
38
|
+
--channel-background-selected: var(--phosphor);
|
|
39
|
+
--channel-text-color-selected: oklch(0.14 0.03 150);
|
|
40
|
+
--tab-background-selected: transparent;
|
|
41
|
+
--tab-text-color-selected: var(--phosphor);
|
|
42
|
+
--tab-border-selected: 1px solid var(--phosphor);
|
|
43
|
+
--wallpaper-overlay-text-color: var(--color-text-muted);
|
|
44
|
+
--app-wallpaper: radial-gradient(120% 90% at 50% 45%, oklch(0.2 0.05 150), oklch(0.08 0.02 150) 75%);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Shell prompt on the selected channel; the reversed row already carries selection, this is flavour. */
|
|
48
|
+
:root[data-television-document="app"] .channel[aria-selected="true"]::before {
|
|
49
|
+
content: "> ";
|
|
50
|
+
}
|
|
51
|
+
/* No glow on reversed-out text: dark ink on a lit block does not bloom. */
|
|
52
|
+
:root[data-television-document="app"] .channel[aria-selected="true"] {
|
|
53
|
+
text-shadow: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Block cursor after the current tab's label. */
|
|
57
|
+
:root[data-television-document="app"] .tab[aria-selected="true"] .tab-label::after {
|
|
58
|
+
content: "\2588";
|
|
59
|
+
margin-left: 2px;
|
|
60
|
+
animation: crt-blink 1.1s steps(1) infinite;
|
|
61
|
+
}
|
|
62
|
+
:root[data-television-document="app"] :is(.tab-label, .channel-group-label) {
|
|
63
|
+
text-transform: uppercase;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* The glass. Scanlines + an aperture-grille hint + vignette on the overlay; a slow refresh band and mains flicker on its pseudo-elements. Never takes input. */
|
|
67
|
+
:root[data-television-document="app"] #foreground-overlay {
|
|
68
|
+
background:
|
|
69
|
+
repeating-linear-gradient(to bottom, oklch(0 0 0 / 0%) 0 2px, oklch(0 0 0 / 22%) 2px 3px),
|
|
70
|
+
repeating-linear-gradient(to right, oklch(0.8 0.2 145 / 3%) 0 1px, transparent 1px 3px),
|
|
71
|
+
radial-gradient(ellipse at center, transparent 55%, oklch(0 0 0 / 55%) 100%);
|
|
72
|
+
overflow: hidden;
|
|
73
|
+
}
|
|
74
|
+
:root[data-television-document="app"] #foreground-overlay::before {
|
|
75
|
+
content: "";
|
|
76
|
+
position: absolute;
|
|
77
|
+
left: 0;
|
|
78
|
+
right: 0;
|
|
79
|
+
top: 0;
|
|
80
|
+
height: 22vh;
|
|
81
|
+
background: linear-gradient(to bottom, transparent, oklch(0.9 0.2 145 / 5%) 80%, transparent);
|
|
82
|
+
animation: crt-refresh 7s linear infinite;
|
|
83
|
+
will-change: transform;
|
|
84
|
+
}
|
|
85
|
+
:root[data-television-document="app"] #foreground-overlay::after {
|
|
86
|
+
content: "";
|
|
87
|
+
position: absolute;
|
|
88
|
+
inset: 0;
|
|
89
|
+
background: oklch(0.9 0.2 145 / 2.5%);
|
|
90
|
+
animation: crt-flicker 4s steps(1) infinite;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@keyframes crt-blink { 50% { opacity: 0; } }
|
|
94
|
+
@keyframes crt-refresh { from { transform: translateY(-25vh); } to { transform: translateY(105vh); } }
|
|
95
|
+
@keyframes crt-flicker { 0%, 100% { opacity: 1; } 7% { opacity: 0.2; } 9% { opacity: 1; } 52% { opacity: 0.5; } 54% { opacity: 1; } 81% { opacity: 0; } 82% { opacity: 1; } }
|
|
96
|
+
|
|
97
|
+
/* Motion is decoration only: honour the OS reduced-motion preference (a motion query, not an appearance query). */
|
|
98
|
+
@media (prefers-reduced-motion: reduce) {
|
|
99
|
+
:root[data-television-document="app"] #foreground-overlay::before,
|
|
100
|
+
:root[data-television-document="app"] #foreground-overlay::after,
|
|
101
|
+
:root[data-television-document="app"] .tab[aria-selected="true"] .tab-label::after {
|
|
102
|
+
animation: none;
|
|
103
|
+
}
|
|
104
|
+
:root[data-television-document="app"] #foreground-overlay::before { display: none; }
|
|
105
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Nord
|
|
2
|
+
|
|
3
|
+
Nord brings the cool blue-gray colors of the [Nord palette](https://github.com/nordtheme/nord) to Television. It stays dark in both light and dark appearance settings.
|
|
4
|
+
|
|
5
|
+
Pale text and an icy cyan accent stand out against dark surfaces. A deeper, quieter background separates the content from the surrounding application, while warmer accent colors distinguish status and actions.
|
|
6
|
+
|
|
7
|
+
## License
|
|
8
|
+
|
|
9
|
+
The palette is distributed under the [MIT License](https://github.com/nordtheme/nord/blob/1cef71605416a222e57225b544540ce0fcec18d4/license). Complete license terms and attribution are included in `THIRD-PARTY-NOTICES.txt` in the installed theme folder.
|
|
@@ -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
|
+
Nord color palette
|
|
6
|
+
Licensed under MIT.
|
|
7
|
+
--------------------------------------------------------------------------------
|
|
8
|
+
MIT License (MIT)
|
|
9
|
+
|
|
10
|
+
Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
|
|
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
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Colors from Nord — https://github.com/nordtheme/nord
|
|
3
|
+
* Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
|
|
4
|
+
* MIT License; full text in THIRD-PARTY-NOTICES.txt.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* The Nord theme ([[ui/themes/nord/index.md]]). */
|
|
8
|
+
:root {
|
|
9
|
+
--neutral: #4c566a;
|
|
10
|
+
--red: #bf616a;
|
|
11
|
+
--orange: #d08770;
|
|
12
|
+
--yellow: #ebcb8b;
|
|
13
|
+
--green: #a3be8c;
|
|
14
|
+
--cyan: #88c0d0;
|
|
15
|
+
--blue: #5e81ac;
|
|
16
|
+
--purple: #b48ead;
|
|
17
|
+
--pink: #b48ead;
|
|
18
|
+
--accent: var(--cyan);
|
|
19
|
+
|
|
20
|
+
--color-surface: #2e3440;
|
|
21
|
+
--color-surface-muted: #3b4252;
|
|
22
|
+
--color-text: #d8dee9;
|
|
23
|
+
--color-text-muted: var(--neutral-400);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:root[data-television-document="app"] {
|
|
27
|
+
--app-wallpaper: oklch(from var(--color-surface) calc(l - 0.03) calc(c * 0.85) h);
|
|
28
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Swiss
|
|
2
|
+
|
|
3
|
+
Swiss pairs the familiar Television interface with a red accent and an always-dark sidebar. It supports both light and dark appearance settings.
|
|
4
|
+
|
|
5
|
+
In light appearance, white content surfaces stand out against a soft gray background. In dark appearance, lighter content surfaces and a deeper background keep the workspace distinct from the sidebar. The restrained palette keeps attention on the content and uses red to mark primary actions and selections.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/* Swiss adds a red primary accent to the default palette. */
|
|
2
|
+
:root {
|
|
3
|
+
--color-primary: #df363c;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
:root[data-theme="dark"] {
|
|
7
|
+
--color-surface: oklch(from var(--neutral-800) calc(l + 0.03) c h);
|
|
8
|
+
--color-surface-muted: oklch(from var(--neutral-800) calc(l + 0.07) c h);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Keep the sidebar dark in both appearances. */
|
|
12
|
+
:root[data-television-document="app"] {
|
|
13
|
+
--sidebar-background: var(--neutral-800);
|
|
14
|
+
--sidebar-text-color: var(--neutral-100);
|
|
15
|
+
--sidebar-heading-text-color: var(--neutral-400);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:root[data-television-document="app"][data-theme="light"] {
|
|
19
|
+
--app-wallpaper: oklch(from var(--neutral-200) calc(l - 0.03) c h);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:root[data-television-document="app"][data-theme="dark"] {
|
|
23
|
+
--app-wallpaper: oklch(from var(--sidebar-background) calc(l - 0.015) c h);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Dragged rows keep the sidebar ground behind their light text. */
|
|
27
|
+
:root[data-television-document="app"] .sidebar .channel-row.dragged {
|
|
28
|
+
background: var(--sidebar-background);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Rename and drag actions retain standard surfaces and their matching text. */
|
|
32
|
+
:root[data-television-document="app"] .sidebar :is(.channel-rename-commit, .channel-drag-action) {
|
|
33
|
+
color: var(--control-text-color);
|
|
34
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Tokyo Night
|
|
2
|
+
|
|
3
|
+
Tokyo Night combines a dark city photograph with the blue and purple tones of the Tokyo Night palette. It stays dark in both light and dark appearance settings.
|
|
4
|
+
|
|
5
|
+
The city lights give the background texture, while dark translucent controls and blur keep the interface readable. Blue marks primary actions against cool, subdued surfaces.
|
|
6
|
+
|
|
7
|
+
## Palette and license
|
|
8
|
+
|
|
9
|
+
The colors come from the [Tokyo Night Night palette](https://github.com/folke/tokyonight.nvim/blob/cdc07ac78467a233fd62c493de29a17e0cf2b2b6/lua/tokyonight/colors/night.lua), distributed under [Apache License 2.0](https://github.com/folke/tokyonight.nvim/blob/cdc07ac78467a233fd62c493de29a17e0cf2b2b6/LICENSE).
|
|
10
|
+
|
|
11
|
+
## Wallpaper and credit
|
|
12
|
+
|
|
13
|
+
The photograph in `wallpaper.webp` is centered and cropped to fill the application background.
|
|
14
|
+
|
|
15
|
+
Photo by <a href="https://unsplash.com/@cmzw?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Mingwei Lim</a> on <a href="https://unsplash.com/photos/a-city-at-night-BpuF14DFbYs?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>.
|
|
16
|
+
|
|
17
|
+
The photograph is used under the [Unsplash License](https://unsplash.com/license), retrieved 2026-09-17. Complete palette and photo license terms and attribution are included in `THIRD-PARTY-NOTICES.txt` in the installed theme folder.
|