@telemetryos/cli 1.13.2 → 1.15.0
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/CHANGELOG.md +32 -0
- package/package.json +2 -2
- package/templates/claude-code/_claude/skills/tos-settings-ui/SKILL.md +128 -101
- package/templates/vite-react-typescript/index.html +1 -1
- package/templates/vite-react-typescript/public/assets/telemetryos-wordmark-dark.svg +11 -0
- package/templates/vite-react-typescript/src/components/FlickeringGrid.tsx +150 -0
- package/templates/vite-react-typescript/src/hooks/store.ts +32 -0
- package/templates/vite-react-typescript/src/themes.ts +226 -0
- package/templates/vite-react-typescript/src/views/Render.css +943 -5
- package/templates/vite-react-typescript/src/views/Render.tsx +139 -10
- package/templates/vite-react-typescript/src/views/Settings.tsx +145 -34
- package/templates/vite-react-typescript-web/index.html +1 -1
- package/templates/vite-react-typescript-web/public/assets/telemetryos-wordmark-dark.svg +11 -0
- package/templates/vite-react-typescript-web/src/components/FlickeringGrid.tsx +150 -0
- package/templates/vite-react-typescript-web/src/hooks/store.ts +35 -2
- package/templates/vite-react-typescript-web/src/themes.ts +226 -0
- package/templates/vite-react-typescript-web/src/views/Render.css +943 -5
- package/templates/vite-react-typescript-web/src/views/Render.tsx +139 -11
- package/templates/vite-react-typescript-web/src/views/Settings.tsx +156 -47
- /package/templates/vite-react-typescript-web/{assets → public/assets}/telemetryos-wordmark.svg +0 -0
- /package/templates/vite-react-typescript-web/{assets → public/assets}/tos-app.svg +0 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme definitions shared across all TelemetryOS apps.
|
|
3
|
+
*
|
|
4
|
+
* Each theme provides a complete color palette and font family.
|
|
5
|
+
* Colors map to CSS custom properties in Render.css via `applyThemeVars()`.
|
|
6
|
+
*
|
|
7
|
+
* To add a theme:
|
|
8
|
+
* 1. Add a new key to the ThemeName union.
|
|
9
|
+
* 2. Add the corresponding entry to the `themes` record.
|
|
10
|
+
* 3. If the theme needs special CSS effects (like the-matrix scanlines),
|
|
11
|
+
* add a `render--{name}` modifier in Render.css and register it
|
|
12
|
+
* in the `themeModifier` map in Render.tsx.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** Union of all available theme keys. */
|
|
16
|
+
export type ThemeName = 'telemetryos' | 'neon-pulse' | 'solar-flare' | 'arctic-aurora' | 'emerald-matrix' | 'the-matrix' | 'plain-light' | 'plain-dark'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Color tokens used by Render.css via CSS custom properties.
|
|
20
|
+
*
|
|
21
|
+
* bg* — full-page gradient background
|
|
22
|
+
* card* — primary "hero" card gradient + shadow
|
|
23
|
+
* primary — main text color
|
|
24
|
+
* secondary — subdued text (subtitles, dates)
|
|
25
|
+
* muted — lowest-emphasis text (labels, hints)
|
|
26
|
+
* accent — highlight color (icons, emphasis)
|
|
27
|
+
* cardBg — translucent fill for detail/section cards
|
|
28
|
+
* cardBorder — subtle border for detail/section cards
|
|
29
|
+
* statusGood — positive status indicators
|
|
30
|
+
*/
|
|
31
|
+
export interface ThemeColors {
|
|
32
|
+
bgStart: string
|
|
33
|
+
bgMid: string
|
|
34
|
+
bgEnd: string
|
|
35
|
+
cardStart: string
|
|
36
|
+
cardMid1: string
|
|
37
|
+
cardMid2: string
|
|
38
|
+
cardEnd: string
|
|
39
|
+
cardShadow: string
|
|
40
|
+
primary: string
|
|
41
|
+
secondary: string
|
|
42
|
+
muted: string
|
|
43
|
+
accent: string
|
|
44
|
+
cardBg: string
|
|
45
|
+
cardBorder: string
|
|
46
|
+
statusGood: string
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface Theme {
|
|
50
|
+
/** Display name shown in the settings theme picker. */
|
|
51
|
+
label: string
|
|
52
|
+
/** CSS font-family value. Must have a matching @import in index.html. */
|
|
53
|
+
fontFamily: string
|
|
54
|
+
colors: ThemeColors
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export const themes: Record<ThemeName, Theme> = {
|
|
58
|
+
telemetryos: {
|
|
59
|
+
label: 'TelemetryOS',
|
|
60
|
+
fontFamily: '"Rubik", sans-serif',
|
|
61
|
+
colors: {
|
|
62
|
+
bgStart: '#1E2D3D',
|
|
63
|
+
bgMid: '#172433',
|
|
64
|
+
bgEnd: '#111D29',
|
|
65
|
+
cardStart: '#7A4A00',
|
|
66
|
+
cardMid1: '#A66800',
|
|
67
|
+
cardMid2: '#D49320',
|
|
68
|
+
cardEnd: '#F8B334',
|
|
69
|
+
cardShadow: 'rgba(248, 179, 52, 0.33)',
|
|
70
|
+
primary: '#EEE9DF',
|
|
71
|
+
secondary: '#B8B3A9',
|
|
72
|
+
muted: '#8A8477',
|
|
73
|
+
accent: '#F8B334',
|
|
74
|
+
cardBg: 'rgba(238, 233, 223, 0.03)',
|
|
75
|
+
cardBorder: 'rgba(238, 233, 223, 0.06)',
|
|
76
|
+
statusGood: '#4ADE80',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
'neon-pulse': {
|
|
80
|
+
label: 'Neon Pulse',
|
|
81
|
+
fontFamily: '"Orbitron", sans-serif',
|
|
82
|
+
colors: {
|
|
83
|
+
bgStart: '#050A15',
|
|
84
|
+
bgMid: '#0A1020',
|
|
85
|
+
bgEnd: '#0D1428',
|
|
86
|
+
cardStart: '#004D40',
|
|
87
|
+
cardMid1: '#00695C',
|
|
88
|
+
cardMid2: '#00897B',
|
|
89
|
+
cardEnd: '#00BCD4',
|
|
90
|
+
cardShadow: 'rgba(0, 229, 255, 0.33)',
|
|
91
|
+
primary: '#E0F7FA',
|
|
92
|
+
secondary: '#80CBC4',
|
|
93
|
+
muted: '#4DB6AC',
|
|
94
|
+
accent: '#00E5FF',
|
|
95
|
+
cardBg: 'rgba(0, 229, 255, 0.03)',
|
|
96
|
+
cardBorder: 'rgba(0, 229, 255, 0.06)',
|
|
97
|
+
statusGood: '#69F0AE',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
'solar-flare': {
|
|
101
|
+
label: 'Solar Flare',
|
|
102
|
+
fontFamily: '"Bebas Neue", sans-serif',
|
|
103
|
+
colors: {
|
|
104
|
+
bgStart: '#1A0A0A',
|
|
105
|
+
bgMid: '#1F0E0E',
|
|
106
|
+
bgEnd: '#150808',
|
|
107
|
+
cardStart: '#BF360C',
|
|
108
|
+
cardMid1: '#D84315',
|
|
109
|
+
cardMid2: '#F4511E',
|
|
110
|
+
cardEnd: '#FF6D00',
|
|
111
|
+
cardShadow: 'rgba(255, 109, 0, 0.33)',
|
|
112
|
+
primary: '#FFF3E0',
|
|
113
|
+
secondary: '#BCAAA4',
|
|
114
|
+
muted: '#8D6E63',
|
|
115
|
+
accent: '#FF6D00',
|
|
116
|
+
cardBg: 'rgba(255, 109, 0, 0.03)',
|
|
117
|
+
cardBorder: 'rgba(255, 109, 0, 0.06)',
|
|
118
|
+
statusGood: '#FFD54F',
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
'arctic-aurora': {
|
|
122
|
+
label: 'Arctic Aurora',
|
|
123
|
+
fontFamily: '"Inter", sans-serif',
|
|
124
|
+
colors: {
|
|
125
|
+
bgStart: '#0A1628',
|
|
126
|
+
bgMid: '#0E1D32',
|
|
127
|
+
bgEnd: '#081220',
|
|
128
|
+
cardStart: '#1A237E',
|
|
129
|
+
cardMid1: '#283593',
|
|
130
|
+
cardMid2: '#3949AB',
|
|
131
|
+
cardEnd: '#5C6BC0',
|
|
132
|
+
cardShadow: 'rgba(66, 165, 245, 0.33)',
|
|
133
|
+
primary: '#E3F2FD',
|
|
134
|
+
secondary: '#90A4AE',
|
|
135
|
+
muted: '#607D8B',
|
|
136
|
+
accent: '#42A5F5',
|
|
137
|
+
cardBg: 'rgba(66, 165, 245, 0.03)',
|
|
138
|
+
cardBorder: 'rgba(66, 165, 245, 0.06)',
|
|
139
|
+
statusGood: '#80DEEA',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
'emerald-matrix': {
|
|
143
|
+
label: 'Emerald Matrix',
|
|
144
|
+
fontFamily: '"Space Grotesk", sans-serif',
|
|
145
|
+
colors: {
|
|
146
|
+
bgStart: '#0A1A0E',
|
|
147
|
+
bgMid: '#0F1F12',
|
|
148
|
+
bgEnd: '#081509',
|
|
149
|
+
cardStart: '#1B5E20',
|
|
150
|
+
cardMid1: '#2E7D32',
|
|
151
|
+
cardMid2: '#388E3C',
|
|
152
|
+
cardEnd: '#43A047',
|
|
153
|
+
cardShadow: 'rgba(0, 230, 118, 0.33)',
|
|
154
|
+
primary: '#E8F5E9',
|
|
155
|
+
secondary: '#A5D6A7',
|
|
156
|
+
muted: '#66BB6A',
|
|
157
|
+
accent: '#00E676',
|
|
158
|
+
cardBg: 'rgba(0, 230, 118, 0.03)',
|
|
159
|
+
cardBorder: 'rgba(0, 230, 118, 0.06)',
|
|
160
|
+
statusGood: '#B9F6CA',
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
'the-matrix': {
|
|
164
|
+
label: 'The Matrix',
|
|
165
|
+
fontFamily: '"VT323", monospace',
|
|
166
|
+
colors: {
|
|
167
|
+
bgStart: '#000000',
|
|
168
|
+
bgMid: '#000800',
|
|
169
|
+
bgEnd: '#001000',
|
|
170
|
+
cardStart: '#002800',
|
|
171
|
+
cardMid1: '#003800',
|
|
172
|
+
cardMid2: '#004A00',
|
|
173
|
+
cardEnd: '#005C00',
|
|
174
|
+
cardShadow: 'rgba(0, 255, 65, 0.3)',
|
|
175
|
+
primary: '#00FF41',
|
|
176
|
+
secondary: '#00CC33',
|
|
177
|
+
muted: '#008822',
|
|
178
|
+
accent: '#00FF41',
|
|
179
|
+
cardBg: 'rgba(0, 255, 65, 0.03)',
|
|
180
|
+
cardBorder: 'rgba(0, 255, 65, 0.1)',
|
|
181
|
+
statusGood: '#00FF41',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
'plain-light': {
|
|
185
|
+
label: 'Plain Light',
|
|
186
|
+
fontFamily: '"Inter", sans-serif',
|
|
187
|
+
colors: {
|
|
188
|
+
bgStart: '#ffffff',
|
|
189
|
+
bgMid: '#ffffff',
|
|
190
|
+
bgEnd: '#ffffff',
|
|
191
|
+
cardStart: 'transparent',
|
|
192
|
+
cardMid1: 'transparent',
|
|
193
|
+
cardMid2: 'transparent',
|
|
194
|
+
cardEnd: 'transparent',
|
|
195
|
+
cardShadow: 'transparent',
|
|
196
|
+
primary: '#1a1a1a',
|
|
197
|
+
secondary: '#444444',
|
|
198
|
+
muted: '#777777',
|
|
199
|
+
accent: '#F8B334',
|
|
200
|
+
cardBg: 'transparent',
|
|
201
|
+
cardBorder: 'transparent',
|
|
202
|
+
statusGood: '#16a34a',
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
'plain-dark': {
|
|
206
|
+
label: 'Plain Dark',
|
|
207
|
+
fontFamily: '"Inter", sans-serif',
|
|
208
|
+
colors: {
|
|
209
|
+
bgStart: 'transparent',
|
|
210
|
+
bgMid: 'transparent',
|
|
211
|
+
bgEnd: 'transparent',
|
|
212
|
+
cardStart: 'transparent',
|
|
213
|
+
cardMid1: 'transparent',
|
|
214
|
+
cardMid2: 'transparent',
|
|
215
|
+
cardEnd: 'transparent',
|
|
216
|
+
cardShadow: 'transparent',
|
|
217
|
+
primary: '#ffffff',
|
|
218
|
+
secondary: '#cccccc',
|
|
219
|
+
muted: '#999999',
|
|
220
|
+
accent: '#dddddd',
|
|
221
|
+
cardBg: 'transparent',
|
|
222
|
+
cardBorder: 'transparent',
|
|
223
|
+
statusGood: '#4ade80',
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
}
|