@yottagraph-app/aether-instructions 1.1.24 → 1.1.26

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.
@@ -0,0 +1,263 @@
1
+ # Lovelace CSS Patterns
2
+
3
+ Framework-agnostic CSS patterns for implementing Lovelace brand styling. These patterns are extracted from the News UI theme styles and can be adapted for React, Vue, Tailwind, or plain CSS.
4
+
5
+ ## Card Styling
6
+
7
+ ### Basic Card
8
+
9
+ ```css
10
+ .card {
11
+ background-color: var(--lv-surface);
12
+ border: 1px solid #2A2A2A;
13
+ color: var(--lv-white);
14
+ }
15
+ ```
16
+
17
+ ### Card Header with Gradient
18
+
19
+ ```css
20
+ .card-header {
21
+ background: linear-gradient(135deg, var(--lv-surface), var(--lv-surface-light));
22
+ border-bottom: 1px solid var(--lv-green-dim);
23
+ color: var(--lv-white);
24
+ padding: 12px 16px;
25
+ height: 56px;
26
+ }
27
+ ```
28
+
29
+ ### Metric Card
30
+
31
+ ```css
32
+ .metric-card {
33
+ background-color: var(--lv-surface);
34
+ border: 1px solid #2A2A2A;
35
+ color: var(--lv-white);
36
+ }
37
+
38
+ .metric-label {
39
+ color: #A0AEC0;
40
+ font-size: 0.875rem;
41
+ }
42
+
43
+ .metric-value {
44
+ color: var(--lv-white);
45
+ font-weight: 600;
46
+ }
47
+ ```
48
+
49
+ ## Button Patterns
50
+
51
+ ### Active/Selected Button
52
+
53
+ ```css
54
+ .btn-active {
55
+ background-color: var(--lv-green);
56
+ color: var(--lv-black);
57
+ border-color: var(--lv-green);
58
+ font-weight: 600;
59
+ box-shadow: 0 0 12px rgba(63, 234, 0, 0.3);
60
+ }
61
+ ```
62
+
63
+ ### Inactive Button
64
+
65
+ ```css
66
+ .btn-inactive {
67
+ background-color: transparent;
68
+ color: rgba(255, 255, 255, 0.9);
69
+ border: 1px solid #2A2A2A;
70
+ }
71
+
72
+ .btn-inactive:hover {
73
+ background-color: rgba(255, 255, 255, 0.1);
74
+ }
75
+ ```
76
+
77
+ ### Button Group Sizing
78
+
79
+ ```css
80
+ .btn-group .btn {
81
+ transition: all 0.2s ease;
82
+ border-radius: 4px;
83
+ padding: 0 16px;
84
+ min-height: 36px;
85
+ letter-spacing: normal;
86
+ text-transform: none;
87
+ font-weight: 500;
88
+ }
89
+ ```
90
+
91
+ ## Data Table Patterns
92
+
93
+ ```css
94
+ .data-table {
95
+ background-color: var(--lv-surface);
96
+ }
97
+
98
+ .data-table th {
99
+ background-color: #111111;
100
+ color: var(--lv-white);
101
+ }
102
+
103
+ .data-table td {
104
+ color: var(--lv-white);
105
+ border-bottom: 1px solid #2A2A2A;
106
+ }
107
+ ```
108
+
109
+ ## List Patterns
110
+
111
+ ### Interactive List
112
+
113
+ ```css
114
+ .list {
115
+ background-color: transparent;
116
+ }
117
+
118
+ .list-item {
119
+ color: var(--lv-white);
120
+ background-color: transparent;
121
+ }
122
+
123
+ .list-item:hover {
124
+ background-color: var(--lv-surface-light);
125
+ }
126
+ ```
127
+
128
+ ### List Item States
129
+
130
+ ```css
131
+ .list-item-title {
132
+ color: var(--lv-white);
133
+ }
134
+
135
+ .list-item-subtitle {
136
+ color: #A0AEC0;
137
+ }
138
+
139
+ .list-item-disabled .list-item-title {
140
+ color: #A0AEC0;
141
+ opacity: 0.6;
142
+ }
143
+ ```
144
+
145
+ ## Text Utility Classes
146
+
147
+ ```css
148
+ .text-primary {
149
+ color: var(--lv-white);
150
+ }
151
+
152
+ .text-secondary {
153
+ color: #A0AEC0;
154
+ }
155
+
156
+ .text-muted {
157
+ color: var(--lv-silver);
158
+ }
159
+ ```
160
+
161
+ ## Background Colors
162
+
163
+ ```css
164
+ .bg-surface {
165
+ background-color: var(--lv-surface);
166
+ }
167
+
168
+ .bg-card {
169
+ background-color: var(--lv-surface-light);
170
+ }
171
+
172
+ .bg-panel {
173
+ background-color: #111111;
174
+ }
175
+ ```
176
+
177
+ ## Input Styling
178
+
179
+ ```css
180
+ .input:focus {
181
+ background-color: rgba(255, 255, 255, 0.08);
182
+ }
183
+
184
+ .input {
185
+ color: white;
186
+ }
187
+ ```
188
+
189
+ ## Visual Effects
190
+
191
+ ### Glow Effects
192
+
193
+ ```css
194
+ .glow-green {
195
+ box-shadow: 0 0 12px rgba(63, 234, 0, 0.3);
196
+ }
197
+
198
+ .glow-orange {
199
+ box-shadow: 0 0 12px rgba(255, 92, 0, 0.3);
200
+ }
201
+
202
+ .glow-blue {
203
+ box-shadow: 0 0 12px rgba(0, 59, 255, 0.3);
204
+ }
205
+ ```
206
+
207
+ ### Text Glow
208
+
209
+ ```css
210
+ .text-glow {
211
+ text-shadow: 0 0 8px rgba(63, 234, 0, 0.5);
212
+ }
213
+ ```
214
+
215
+ ### Border Accent
216
+
217
+ ```css
218
+ .border-accent {
219
+ border-color: var(--lv-green-dim);
220
+ }
221
+ ```
222
+
223
+ ## CSS Variable Naming Conventions
224
+
225
+ | Prefix | Purpose | Example |
226
+ |--------|---------|---------|
227
+ | `--lv-*` | Brand colors (static) | `--lv-green`, `--lv-surface` |
228
+ | `--theme-*` | Theme-aware aliases | `--theme-primary`, `--theme-text` |
229
+ | `--dynamic-*` | JS-set runtime values | `--dynamic-primary`, `--dynamic-surface` |
230
+ | `--font-*` | Typography | `--font-primary`, `--font-mono` |
231
+
232
+ ## Framework Adaptation Notes
233
+
234
+ ### React
235
+
236
+ Use CSS modules or styled-components. Import the CSS variables in your global styles.
237
+
238
+ ### Vue
239
+
240
+ Use scoped styles with `<style scoped>`. The variables work naturally with Vue's reactivity.
241
+
242
+ ### Tailwind
243
+
244
+ Extend your `tailwind.config.js` with the brand colors:
245
+
246
+ ```javascript
247
+ module.exports = {
248
+ theme: {
249
+ extend: {
250
+ colors: {
251
+ 'lv-black': '#0A0A0A',
252
+ 'lv-green': '#3FEA00',
253
+ 'lv-surface': '#141414',
254
+ // ...
255
+ }
256
+ }
257
+ }
258
+ }
259
+ ```
260
+
261
+ ### Plain CSS
262
+
263
+ Include the CSS variables in your `:root` and use them directly.