cat-framework-core 0.5.1 → 0.6.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/src/index.css CHANGED
@@ -1,4 +1,4 @@
1
- @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap');
1
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&family=Roboto:wght@400;500;700&family=Roboto+Condensed:wght@400;700&display=swap');
2
2
 
3
3
  @tailwind base;
4
4
  @tailwind components;
@@ -16,6 +16,8 @@
16
16
  --primary: 214 100% 40%; /* #0052CC – Corporate Blue */
17
17
  --primary-foreground: 0 0% 100%;
18
18
  --primary-hover: 214 100% 34%;
19
+ --primary-light: 214 60% 89%; /* light tint for disabled/subtle */
20
+ --primary-lightest: 214 40% 96%; /* section backgrounds */
19
21
 
20
22
  --secondary: 215 25% 35%; /* #42526E – Slate */
21
23
  --secondary-foreground: 0 0% 100%;
@@ -25,7 +27,9 @@
25
27
 
26
28
  /* ── Surfaces ── */
27
29
  --background: 0 0% 100%;
30
+ --background-tinted: 214 50% 96%; /* subtle tinted sections */
28
31
  --foreground: 216 43% 19%; /* #172B4D – Deep Navy */
32
+ --foreground-body: 216 30% 30%; /* body text (slightly lighter) */
29
33
 
30
34
  --card: 0 0% 100%;
31
35
  --card-foreground: 216 43% 19%;
@@ -44,9 +48,18 @@
44
48
  --input: 220 13% 90%;
45
49
  --ring: 214 100% 40%;
46
50
 
47
- --radius: 0.75rem;
51
+ /* ── Border Radius ── */
52
+ --radius: 0.75rem; /* 12px – default */
53
+ --radius-button: 2rem; /* 32px – pill buttons */
54
+ --radius-card: 1rem; /* 16px – cards, images */
55
+ --radius-input: 0.375rem; /* 6px – inputs, selects */
56
+ --radius-overlay: 0.25rem; /* 4px – overlays, tooltips */
48
57
 
49
- /* ── Semantic Extras ── */
58
+ /* ── Shadows ── */
59
+ --shadow-card: 0 1px 10px 0 rgba(0,0,0,0.08);
60
+ --shadow-elevated: 0 4px 20px 0 rgba(0,0,0,0.12);
61
+
62
+ /* ── Semantic / Signal ── */
50
63
  --warning: 36 100% 50%;
51
64
  --warning-foreground: 0 0% 10%;
52
65
  --info: 214 100% 40%;
@@ -54,20 +67,31 @@
54
67
  --success: 153 56% 46%;
55
68
  --success-foreground: 0 0% 100%;
56
69
 
57
- /* ── Spacing Scale ── */
58
- --space-xs: 0.25rem;
59
- --space-sm: 0.5rem;
60
- --space-md: 1rem;
61
- --space-lg: 1.5rem;
62
- --space-xl: 2rem;
63
- --space-2xl: 3rem;
64
- --space-3xl: 4rem;
70
+ /* ── Signal Light (banners, backgrounds) ── */
71
+ --warning-light: 36 80% 90%;
72
+ --info-light: 214 60% 91%;
73
+ --success-light: 153 45% 89%;
74
+ --destructive-light: 0 60% 89%;
75
+
76
+ /* ── Disabled ── */
77
+ --disabled: 220 13% 90%;
78
+ --disabled-foreground: 0 0% 100%;
79
+
80
+ /* ── Spacing Scale (desktop) ── */
81
+ --space-xxs: 1rem; /* 16px */
82
+ --space-xs: 1.5rem; /* 24px */
83
+ --space-sm: 2rem; /* 32px */
84
+ --space-md: 2.5rem; /* 40px */
85
+ --space-lg: 3rem; /* 48px */
86
+ --space-xl: 4rem; /* 64px */
87
+ --space-2xl: 5rem; /* 80px */
88
+ --space-3xl: 6rem; /* 96px */
65
89
 
66
90
  /* ── Transitions ── */
67
91
  --transition-fast: 150ms ease;
68
92
  --transition-base: 200ms ease;
69
93
 
70
- /* ── Sidebar (unused but required by shadcn) ── */
94
+ /* ── Sidebar (required by shadcn) ── */
71
95
  --sidebar-background: 0 0% 98%;
72
96
  --sidebar-foreground: 215 25% 35%;
73
97
  --sidebar-primary: 214 100% 40%;
@@ -78,10 +102,22 @@
78
102
  --sidebar-ring: 214 100% 40%;
79
103
  }
80
104
 
105
+ /* ── Mobile spacing overrides ── */
106
+ @media (max-width: 659px) {
107
+ :root {
108
+ --space-xs: 1rem; /* 16px */
109
+ --space-sm: 1.5rem; /* 24px */
110
+ --space-md: 2rem; /* 32px */
111
+ --space-lg: 2.5rem; /* 40px */
112
+ }
113
+ }
114
+
81
115
  .dark {
82
116
  --primary: 214 100% 60%;
83
117
  --primary-foreground: 216 43% 10%;
84
118
  --primary-hover: 214 100% 66%;
119
+ --primary-light: 214 40% 18%;
120
+ --primary-lightest: 214 30% 12%;
85
121
 
86
122
  --secondary: 215 20% 55%;
87
123
  --secondary-foreground: 0 0% 100%;
@@ -90,7 +126,9 @@
90
126
  --accent-foreground: 0 0% 10%;
91
127
 
92
128
  --background: 220 20% 8%;
129
+ --background-tinted: 220 18% 10%;
93
130
  --foreground: 210 20% 92%;
131
+ --foreground-body: 210 15% 80%;
94
132
 
95
133
  --card: 220 18% 12%;
96
134
  --card-foreground: 210 20% 92%;
@@ -108,6 +146,9 @@
108
146
  --input: 220 14% 20%;
109
147
  --ring: 214 100% 60%;
110
148
 
149
+ --shadow-card: 0 1px 10px 0 rgba(0,0,0,0.25);
150
+ --shadow-elevated: 0 4px 20px 0 rgba(0,0,0,0.35);
151
+
111
152
  --warning: 36 100% 55%;
112
153
  --warning-foreground: 0 0% 10%;
113
154
  --info: 214 100% 60%;
@@ -115,6 +156,14 @@
115
156
  --success: 153 56% 56%;
116
157
  --success-foreground: 0 0% 10%;
117
158
 
159
+ --warning-light: 36 50% 18%;
160
+ --info-light: 214 40% 18%;
161
+ --success-light: 153 30% 16%;
162
+ --destructive-light: 0 40% 18%;
163
+
164
+ --disabled: 220 14% 25%;
165
+ --disabled-foreground: 220 10% 50%;
166
+
118
167
  --sidebar-background: 220 18% 10%;
119
168
  --sidebar-foreground: 210 20% 92%;
120
169
  --sidebar-primary: 214 100% 60%;
@@ -131,26 +180,50 @@
131
180
  ============================================================ */
132
181
  [data-brand="webde"] {
133
182
  --primary: 50 100% 50%; /* #FFD800 – WEB.DE Yellow */
134
- --primary-foreground: 0 0% 10%; /* Dark text on yellow */
183
+ --primary-foreground: 0 0% 10%;
135
184
  --primary-hover: 50 100% 44%;
185
+ --primary-light: 50 60% 89%;
186
+ --primary-lightest: 50 40% 96%;
136
187
 
137
188
  --secondary: 213 73% 44%; /* #1A73C7 – WEB.DE Blue */
138
189
  --secondary-foreground: 0 0% 100%;
139
190
 
140
- --accent: 213 73% 44%; /* Blue as accent */
191
+ --accent: 213 73% 44%;
141
192
  --accent-foreground: 0 0% 100%;
142
193
 
143
- --foreground: 220 20% 14%;
144
- --card-foreground: 220 20% 14%;
145
- --popover-foreground: 220 20% 14%;
194
+ --background-tinted: 50 50% 96%; /* warm tinted sections */
195
+ --foreground: 0 0% 10%;
196
+ --foreground-body: 0 0% 24%;
197
+ --card-foreground: 0 0% 10%;
198
+ --popover-foreground: 0 0% 10%;
146
199
 
200
+ --muted: 0 0% 96%;
201
+ --muted-foreground: 0 0% 37%;
202
+
203
+ --border: 0 0% 84%;
204
+ --input: 0 0% 84%;
147
205
  --ring: 50 100% 50%;
148
206
 
149
- --success: 145 60% 40%;
207
+ --radius-button: 2rem; /* pill buttons like GMX */
208
+
209
+ --destructive: 0 100% 42%;
210
+ --destructive-foreground: 0 0% 100%;
211
+
212
+ --warning: 47 100% 47%;
213
+ --warning-foreground: 0 0% 10%;
214
+ --success: 100 63% 44%;
150
215
  --success-foreground: 0 0% 100%;
151
216
  --info: 213 73% 44%;
152
217
  --info-foreground: 0 0% 100%;
153
218
 
219
+ --warning-light: 47 90% 90%;
220
+ --info-light: 213 60% 91%;
221
+ --success-light: 100 48% 89%;
222
+ --destructive-light: 0 71% 89%;
223
+
224
+ --disabled: 50 40% 89%;
225
+ --disabled-foreground: 0 0% 100%;
226
+
154
227
  --sidebar-primary: 50 100% 50%;
155
228
  --sidebar-primary-foreground: 0 0% 10%;
156
229
  --sidebar-ring: 50 100% 50%;
@@ -160,10 +233,13 @@
160
233
  --primary: 50 100% 55%;
161
234
  --primary-foreground: 0 0% 10%;
162
235
  --primary-hover: 50 100% 62%;
236
+ --primary-light: 50 40% 18%;
237
+ --primary-lightest: 50 30% 12%;
163
238
  --secondary: 213 73% 55%;
164
239
  --secondary-foreground: 0 0% 100%;
165
240
  --accent: 213 73% 55%;
166
241
  --accent-foreground: 0 0% 100%;
242
+ --background-tinted: 50 20% 10%;
167
243
  --ring: 50 100% 55%;
168
244
  --sidebar-primary: 50 100% 55%;
169
245
  --sidebar-ring: 50 100% 55%;
@@ -171,46 +247,132 @@
171
247
 
172
248
  /* ============================================================
173
249
  BRAND: GMX
174
- Primary: #1c449b (GMX Blue)
250
+ Primary: #1e50a0 (GMX Blue) — Plasma Color System
251
+ Ref: CAT component library v6.0.2
175
252
  ============================================================ */
176
253
  [data-brand="gmx"] {
177
- --primary: 228 70% 36%; /* #1c449b GMX Blue */
254
+ /* ── Brand ── */
255
+ --primary: 215 68% 37%; /* #1e50a0 – b1-base */
178
256
  --primary-foreground: 0 0% 100%;
179
- --primary-hover: 228 70% 30%;
257
+ --primary-hover: 215 68% 30%; /* #184080 – b1-dark20 */
258
+ --primary-light: 215 38% 89%; /* #d7e0ee – b1-light82 */
259
+ --primary-lightest: 215 37% 96%; /* #f2f5f9 – b1-light94 */
180
260
 
181
- --secondary: 200 25% 40%;
261
+ --secondary: 215 65% 46%; /* #2966c2 – b2-base */
182
262
  --secondary-foreground: 0 0% 100%;
183
263
 
184
- --accent: 36 90% 52%;
185
- --accent-foreground: 0 0% 10%;
264
+ --accent: 215 65% 46%;
265
+ --accent-foreground: 0 0% 100%;
266
+
267
+ /* ── Surfaces ── */
268
+ --background: 0 0% 100%; /* c1-base */
269
+ --background-tinted: 216 55% 95%; /* #EAF0F9 – backgrounds-3 */
270
+ --foreground: 0 0% 10%; /* #1a1a1a – c2-base */
271
+ --foreground-body: 0 0% 24%; /* #3c3c3c – c2-light15 */
186
272
 
187
- --foreground: 228 40% 15%;
188
- --card-foreground: 228 40% 15%;
189
- --popover-foreground: 228 40% 15%;
273
+ --card: 0 0% 100%;
274
+ --card-foreground: 0 0% 24%; /* body text on cards */
275
+
276
+ --popover: 0 0% 100%;
277
+ --popover-foreground: 0 0% 10%;
190
278
 
191
- --ring: 228 70% 36%;
279
+ --muted: 0 0% 95%; /* #f1f1f1 – c2-light94 */
280
+ --muted-foreground: 0 0% 37%; /* #5f5f5f – c2-light30 */
192
281
 
193
- --success: 160 45% 38%;
282
+ /* ── Borders ── */
283
+ --border: 0 0% 84%; /* #d6d6d6 – c2-light82 */
284
+ --input: 0 0% 84%;
285
+ --ring: 215 68% 37%;
286
+
287
+ /* ── Border Radius (GMX brand overrides) ── */
288
+ --radius: 1rem; /* 16px – cards/images */
289
+ --radius-button: 2rem; /* 32px – pill buttons (brand signature) */
290
+ --radius-card: 1rem; /* 16px – cards, teasers */
291
+ --radius-input: 0.25rem; /* 4px – inputs, selects */
292
+ --radius-overlay: 0.25rem; /* 4px – backdrop overlays */
293
+
294
+ /* ── Shadow (GMX spec) ── */
295
+ --shadow-card: 1px 1px 10px 0 rgba(0,0,0,0.10);
296
+
297
+ /* ── Signal Colors ── */
298
+ --destructive: 0 100% 42%; /* #d40000 – d1-base */
299
+ --destructive-foreground: 0 0% 100%;
300
+
301
+ --warning: 47 100% 47%; /* #f0bc00 – d2-base */
302
+ --warning-foreground: 0 0% 10%;
303
+ --success: 100 63% 44%; /* #5cb82a – d3-base */
194
304
  --success-foreground: 0 0% 100%;
195
- --info: 228 70% 36%;
305
+ --info: 205 77% 48%; /* #1c8ad9 – d4-base */
196
306
  --info-foreground: 0 0% 100%;
197
307
 
198
- --sidebar-primary: 228 70% 36%;
308
+ /* ── Signal Light ── */
309
+ --warning-light: 47 90% 90%; /* #fcf3d1 – d2-light82 */
310
+ --info-light: 205 71% 91%; /* #d6eaf8 – d4-light82 */
311
+ --success-light: 100 48% 89%; /* #e2f2d9 – d3-light82 */
312
+ --destructive-light: 0 71% 89%; /* #f7d1d1 – d1-light82 */
313
+
314
+ /* ── Disabled ── */
315
+ --disabled: 215 38% 89%; /* #d7e0ee – b1-light82 */
316
+ --disabled-foreground: 0 0% 100%;
317
+
318
+ --sidebar-primary: 215 68% 37%;
199
319
  --sidebar-primary-foreground: 0 0% 100%;
200
- --sidebar-ring: 228 70% 36%;
320
+ --sidebar-ring: 215 68% 37%;
201
321
  }
202
322
 
203
323
  [data-brand="gmx"].dark {
204
- --primary: 228 70% 55%;
324
+ --primary: 215 68% 55%;
205
325
  --primary-foreground: 0 0% 100%;
206
- --primary-hover: 228 70% 48%;
207
- --secondary: 200 25% 55%;
326
+ --primary-hover: 215 68% 48%;
327
+ --primary-light: 215 30% 20%;
328
+ --primary-lightest: 215 20% 12%;
329
+
330
+ --secondary: 215 65% 58%;
208
331
  --secondary-foreground: 0 0% 100%;
209
- --accent: 36 90% 58%;
210
- --accent-foreground: 0 0% 10%;
211
- --ring: 228 70% 55%;
212
- --sidebar-primary: 228 70% 55%;
213
- --sidebar-ring: 228 70% 55%;
332
+
333
+ --accent: 215 65% 58%;
334
+ --accent-foreground: 0 0% 100%;
335
+
336
+ --background: 220 20% 8%;
337
+ --background-tinted: 215 20% 10%;
338
+ --foreground: 0 0% 92%;
339
+ --foreground-body: 0 0% 85%;
340
+
341
+ --card: 220 18% 12%;
342
+ --card-foreground: 0 0% 85%;
343
+
344
+ --popover: 220 18% 12%;
345
+ --popover-foreground: 0 0% 92%;
346
+
347
+ --muted: 220 14% 16%;
348
+ --muted-foreground: 0 0% 55%;
349
+
350
+ --border: 220 14% 20%;
351
+ --input: 220 14% 20%;
352
+ --ring: 215 68% 55%;
353
+
354
+ --shadow-card: 1px 1px 10px 0 rgba(0,0,0,0.30);
355
+
356
+ --destructive: 0 80% 50%;
357
+ --destructive-foreground: 0 0% 100%;
358
+
359
+ --warning: 47 100% 55%;
360
+ --warning-foreground: 0 0% 10%;
361
+ --success: 100 63% 52%;
362
+ --success-foreground: 0 0% 10%;
363
+ --info: 205 77% 56%;
364
+ --info-foreground: 0 0% 100%;
365
+
366
+ --warning-light: 47 50% 18%;
367
+ --info-light: 205 40% 18%;
368
+ --success-light: 100 30% 16%;
369
+ --destructive-light: 0 40% 18%;
370
+
371
+ --disabled: 215 20% 25%;
372
+ --disabled-foreground: 215 15% 50%;
373
+
374
+ --sidebar-primary: 215 68% 55%;
375
+ --sidebar-ring: 215 68% 55%;
214
376
  }
215
377
  }
216
378