cps-ui-kit 21.5.0 → 21.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cps-ui-kit",
3
- "version": "21.5.0",
3
+ "version": "21.6.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.2.6",
6
6
  "@angular/core": "^21.2.6",
@@ -0,0 +1,184 @@
1
+ // Dark theme color palette
2
+ // Only overrides variables that differ from the light theme (:root).
3
+ // All brand palette, darks, and state variant colors are inherited from :root.
4
+
5
+ [data-theme='dark'] {
6
+ // Brand color overrides (base values only — variants inherited from :root)
7
+ --cps-color-energy: #f47721;
8
+ --cps-color-care: #f05a78;
9
+
10
+ // States backgrounds
11
+ --cps-color-info-bg: rgba(73, 185, 255, 0.16);
12
+ --cps-color-success-bg: rgba(93, 211, 58, 0.16);
13
+ --cps-color-warn-bg: rgba(255, 186, 48, 0.16);
14
+ --cps-color-error-bg: rgba(255, 90, 103, 0.16);
15
+
16
+ // Highlights
17
+ --cps-color-highlight-hover: rgba(251, 251, 251, 0.06);
18
+ --cps-color-highlight-active: rgba(251, 251, 251, 0.1);
19
+ --cps-color-highlight-selected: rgba(244, 119, 33, 0.16);
20
+ --cps-color-highlight-selected-dark: rgba(244, 119, 33, 0.24);
21
+
22
+ // Backgrounds
23
+ --cps-color-bg-lightest: #2a2a31;
24
+ --cps-color-bg-light: #1f1f24;
25
+ --cps-color-bg-mid: #1b1b1e;
26
+ --cps-color-bg-dark: #151419;
27
+
28
+ // Lines
29
+ --cps-color-line-light: #3f3f46;
30
+ --cps-color-line-mid: #50505a;
31
+ --cps-color-line-dark: #666670;
32
+ --cps-color-line-darkest: #7a7a86;
33
+
34
+ // Text
35
+ --cps-color-text-lightest: #fbfbfb;
36
+ --cps-color-text-light: #d0d0d2;
37
+ --cps-color-text-mild: #a8a8ad;
38
+ --cps-color-text-dark: #878787;
39
+ --cps-color-text-darkest: #151419;
40
+
41
+ // Semantic design tokens
42
+ --cps-accent-primary: var(--cps-color-energy);
43
+ --cps-accent-primary-contrast: #151419;
44
+ --cps-accent-secondary: #fbfbfb;
45
+ --cps-accent-secondary-contrast: #151419;
46
+ --cps-error-background: rgba(255, 90, 103, 0.16);
47
+
48
+ // Lines and borders
49
+ --cps-color-line: rgba(251, 251, 251, 0.12);
50
+ --cps-surface-body: #151419;
51
+ --cps-surface-highlight: #1b1b1e;
52
+ --cps-surface-muted: #202028;
53
+ --cps-surface-elevated: #262626;
54
+ --cps-surface-control: #262626;
55
+ --cps-surface-overlay: rgba(21, 20, 25, 0.85);
56
+ --cps-background-color: #151419;
57
+ --cps-background-disabled: rgba(255, 255, 255, 0.05);
58
+
59
+ // Tab component
60
+ --cps-tab-subtabs-background: var(--cps-surface-highlight);
61
+ --cps-tabs-subtabs-active-background: var(--cps-color-highlight-selected);
62
+ --cps-tabs-subtabs-background-hover: var(--cps-highlight-hover);
63
+ --cps-tabs-subtabs-text-hover: var(--cps-text-primary);
64
+
65
+ // Text
66
+ --cps-text-primary: #fbfbfb;
67
+ --cps-text-secondary: #d0d0d2;
68
+ --cps-text-muted: #878787;
69
+ --cps-text-inverse: var(--cps-color-depth-darken4);
70
+ --cps-text-on-accent: #151419;
71
+ --cps-text-disabled: #6f6f74;
72
+
73
+ --cps-border-color: #3a3a3a;
74
+ --cps-border-strong: #505050;
75
+ --cps-border-focus: var(--cps-accent-primary);
76
+
77
+ --cps-highlight-hover: rgba(251, 251, 251, 0.1);
78
+ --cps-highlight-active: rgba(251, 251, 251, 0.16);
79
+ --cps-highlight-selected: var(--cps-color-highlight-selected-dark);
80
+
81
+ --cps-state-info: #49b9ff;
82
+ --cps-state-info-contrast: #151419;
83
+ --cps-state-info-surface: rgba(73, 185, 255, 0.16);
84
+ --cps-state-success: #5dd33a;
85
+ --cps-state-success-contrast: #151419;
86
+ --cps-state-success-surface: rgba(93, 211, 58, 0.16);
87
+ --cps-state-warn: #ffba30;
88
+ --cps-state-warn-contrast: #151419;
89
+ --cps-state-warn-surface: rgba(255, 186, 48, 0.16);
90
+ --cps-state-error: var(--cps-color-error);
91
+ --cps-state-error-contrast: #ffffff;
92
+ --cps-state-error-surface: rgba(185, 28, 28, 0.28);
93
+
94
+ // Modern semantic surfaces
95
+ --cps-card-background: var(--cps-surface-highlight);
96
+ --cps-card-foreground: var(--cps-text-primary);
97
+ --cps-popover-background: var(--cps-surface-elevated);
98
+ --cps-popover-foreground: var(--cps-text-primary);
99
+ --cps-input-background: var(--cps-surface-highlight);
100
+ --cps-input-foreground: var(--cps-text-primary);
101
+ --cps-input-placeholder: var(--cps-text-muted);
102
+
103
+ // Focus ring and outlines
104
+ --cps-ring-color: var(--cps-border-focus);
105
+ --cps-ring-offset-color: var(--cps-surface-body);
106
+
107
+ // Elevation shadows (darker than light theme)
108
+ --cps-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
109
+ --cps-shadow-sm: 0 4px 10px rgba(0, 0, 0, 0.34);
110
+ --cps-shadow-md: 0 12px 24px rgba(0, 0, 0, 0.4);
111
+ --cps-shadow-lg: 0 24px 48px rgba(0, 0, 0, 0.5);
112
+ }
113
+
114
+ [data-theme='dark'][data-color-theme='neutral'] {
115
+ --cps-accent-primary: #e4e4e7;
116
+ --cps-accent-primary-contrast: #151419;
117
+ --cps-accent-secondary: #f4f4f5;
118
+ --cps-accent-secondary-contrast: #151419;
119
+ --cps-border-focus: #e4e4e7;
120
+ --cps-highlight-selected: rgba(228, 228, 231, 0.22);
121
+ }
122
+
123
+ [data-theme='dark'][data-color-theme='calm'] {
124
+ --cps-accent-primary: var(--cps-color-calm-lighten4);
125
+ --cps-accent-primary-contrast: #151419;
126
+ --cps-accent-secondary: var(--cps-color-care-lighten3);
127
+ --cps-accent-secondary-contrast: #151419;
128
+ --cps-border-focus: var(--cps-color-calm-lighten4);
129
+ --cps-highlight-selected: rgba(253, 128, 158, 0.28);
130
+ }
131
+
132
+ [data-theme='dark'][data-color-theme='energy'] {
133
+ --cps-accent-primary: var(--cps-color-energy);
134
+ --cps-accent-primary-contrast: #151419;
135
+ --cps-accent-secondary: var(--cps-color-prepared-lighten4);
136
+ --cps-accent-secondary-contrast: #151419;
137
+ --cps-border-focus: var(--cps-color-energy);
138
+ --cps-highlight-selected: var(--cps-color-highlight-selected-dark);
139
+ }
140
+
141
+ [data-theme='dark'][data-color-theme='passion'] {
142
+ --cps-accent-primary: var(--cps-color-passion-lighten3);
143
+ --cps-accent-primary-contrast: #151419;
144
+ --cps-accent-secondary: var(--cps-color-care-lighten4);
145
+ --cps-accent-secondary-contrast: #151419;
146
+ --cps-border-focus: var(--cps-color-passion-lighten3);
147
+ --cps-highlight-selected: rgba(255, 120, 121, 0.3);
148
+ }
149
+
150
+ [data-theme='dark'][data-base-theme='graphite'] {
151
+ --cps-surface-body: #121216;
152
+ --cps-surface-highlight: #191a20;
153
+ --cps-surface-muted: #1d1f26;
154
+ --cps-surface-elevated: #23252f;
155
+ --cps-surface-control: #23252f;
156
+ --cps-background-color: #121216;
157
+ --cps-border-color: #3f424d;
158
+ --cps-border-strong: #555968;
159
+ --cps-ring-offset-color: #121216;
160
+ }
161
+
162
+ [data-theme='dark'][data-base-theme='midnight'] {
163
+ --cps-surface-body: #0f1624;
164
+ --cps-surface-highlight: #172033;
165
+ --cps-surface-muted: #1b263c;
166
+ --cps-surface-elevated: #21304a;
167
+ --cps-surface-control: #21304a;
168
+ --cps-background-color: #0f1624;
169
+ --cps-border-color: #32445f;
170
+ --cps-border-strong: #4a6388;
171
+ --cps-ring-offset-color: #0f1624;
172
+ }
173
+
174
+ [data-theme='dark'][data-base-theme='aubergine'] {
175
+ --cps-surface-body: #1a1320;
176
+ --cps-surface-highlight: #231a2c;
177
+ --cps-surface-muted: #2b2136;
178
+ --cps-surface-elevated: #332943;
179
+ --cps-surface-control: #332943;
180
+ --cps-background-color: #1a1320;
181
+ --cps-border-color: #534363;
182
+ --cps-border-strong: #6d5683;
183
+ --cps-ring-offset-color: #1a1320;
184
+ }
@@ -230,7 +230,7 @@
230
230
  --cps-color-warn-darken3: #a15300;
231
231
  --cps-color-warn-darken4: #843b00;
232
232
 
233
- --cps-color-error: #cc3333;
233
+ --cps-color-error: #b91c1c;
234
234
  --cps-color-error-highlighten: #f9e4e5;
235
235
  --cps-color-error-lighten5: #f5d9d9;
236
236
  --cps-color-error-lighten4: #f2cece;
@@ -275,4 +275,162 @@
275
275
  --cps-color-text-medium: #5a5555;
276
276
  --cps-color-text-dark: #4a4444;
277
277
  --cps-color-text-darkest: #2d2323;
278
+
279
+ // Semantic design tokens (use these inside components)
280
+ --cps-accent-primary: var(--cps-color-calm);
281
+ --cps-accent-primary-contrast: #ffffff;
282
+ --cps-accent-secondary: var(--cps-color-warmth);
283
+ --cps-accent-secondary-contrast: #2d2323;
284
+ --cps-error-background: #fef3f2;
285
+
286
+ // Lines and borders
287
+ --cps-color-line: #e3e2e2;
288
+
289
+ --cps-surface-body: var(--cps-color-bg-light);
290
+ --cps-surface-highlight: #ffffff;
291
+ --cps-surface-muted: var(--cps-color-bg-lightest);
292
+ --cps-surface-elevated: var(--cps-color-bg-mid);
293
+ --cps-surface-control: #ffffff;
294
+ --cps-surface-overlay: rgba(0, 0, 0, 0.45);
295
+ --cps-background-color: var(--cps-color-bg-lightest);
296
+ --cps-background-disabled: #f7f7f7;
297
+
298
+ // Tab component
299
+ --cps-tab-subtabs-background: #d7d7d759;
300
+ --cps-tabs-subtabs-active-background: #fff;
301
+ --cps-tabs-subtabs-background-hover: var(--cps-highlight-active);
302
+ --cps-tabs-subtabs-text-hover: var(--cps-accent-primary);
303
+
304
+ --cps-text-primary: var(--cps-color-text-darkest);
305
+ --cps-text-secondary: var(--cps-color-text-dark);
306
+ --cps-text-muted: var(--cps-color-text-mild);
307
+ --cps-text-inverse: var(--cps-color-depth-darken4);
308
+ --cps-text-on-accent: #ffffff;
309
+ --cps-text-disabled: var(--cps-color-text-light);
310
+
311
+ --cps-border-color: var(--cps-color-line-mid);
312
+ --cps-border-strong: var(--cps-color-line-dark);
313
+ --cps-border-focus: var(--cps-color-calm);
314
+
315
+ --cps-highlight-hover: var(--cps-color-highlight-hover);
316
+ --cps-highlight-active: var(--cps-color-highlight-active);
317
+ --cps-highlight-selected: var(--cps-color-highlight-selected);
318
+
319
+ --cps-state-info: var(--cps-color-info);
320
+ --cps-state-info-contrast: #2d2323;
321
+ --cps-state-info-surface: var(--cps-color-info-bg);
322
+ --cps-state-success: var(--cps-color-success);
323
+ --cps-state-success-contrast: #2d2323;
324
+ --cps-state-success-surface: var(--cps-color-success-bg);
325
+ --cps-state-warn: var(--cps-color-warn);
326
+ --cps-state-warn-contrast: #3b2500;
327
+ --cps-state-warn-surface: var(--cps-color-warn-bg);
328
+ --cps-state-error: var(--cps-color-error);
329
+ --cps-state-error-contrast: #ffffff;
330
+ --cps-state-error-surface: rgba(185, 28, 28, 0.14);
331
+
332
+ // Modern semantic surfaces
333
+ --cps-card-background: var(--cps-surface-highlight);
334
+ --cps-card-foreground: var(--cps-text-primary);
335
+ --cps-popover-background: var(--cps-surface-control);
336
+ --cps-popover-foreground: var(--cps-text-primary);
337
+ --cps-input-background: var(--cps-surface-control);
338
+ --cps-input-foreground: var(--cps-text-primary);
339
+ --cps-input-placeholder: var(--cps-text-muted);
340
+
341
+ // Focus ring and outlines
342
+ --cps-ring-color: var(--cps-border-focus);
343
+ --cps-ring-offset-color: var(--cps-surface-body);
344
+
345
+ // Radius scale
346
+ --cps-radius-xs: 2px;
347
+ --cps-radius-sm: 4px;
348
+ --cps-radius-md: 8px;
349
+ --cps-radius-lg: 12px;
350
+ --cps-radius-xl: 16px;
351
+ --cps-radius-full: 9999px;
352
+
353
+ // Backward compatible radius aliases
354
+ --cps-border-radius-small: var(--cps-radius-sm);
355
+ --cps-border-radius-medium: var(--cps-radius-md);
356
+ --cps-border-radius-large: var(--cps-radius-lg);
357
+ --cps-border-radius-round: var(--cps-radius-full);
358
+
359
+ // Elevation shadows
360
+ --cps-shadow-xs: 0 1px 2px rgba(45, 35, 35, 0.08);
361
+ --cps-shadow-sm: 0 2px 6px rgba(45, 35, 35, 0.12);
362
+ --cps-shadow-md: 0 8px 20px rgba(45, 35, 35, 0.14);
363
+ --cps-shadow-lg: 0 16px 40px rgba(45, 35, 35, 0.2);
364
+
365
+ // Motion tokens
366
+ --cps-motion-fast: 120ms;
367
+ --cps-motion-base: 180ms;
368
+ --cps-motion-slow: 260ms;
369
+ --cps-motion-easing: cubic-bezier(0.2, 0, 0, 1);
370
+ }
371
+
372
+ :root[data-color-theme='neutral'] {
373
+ --cps-accent-primary: #27272a;
374
+ --cps-accent-primary-contrast: #ffffff;
375
+ --cps-accent-secondary: #3f3f46;
376
+ --cps-accent-secondary-contrast: #ffffff;
377
+ --cps-border-focus: #27272a;
378
+ --cps-highlight-selected: rgba(39, 39, 42, 0.14);
379
+ }
380
+
381
+ :root[data-color-theme='calm'] {
382
+ --cps-accent-primary: var(--cps-color-calm);
383
+ --cps-accent-primary-contrast: #ffffff;
384
+ --cps-accent-secondary: var(--cps-color-warmth);
385
+ --cps-accent-secondary-contrast: #2d2323;
386
+ --cps-border-focus: var(--cps-color-calm);
387
+ --cps-highlight-selected: var(--cps-color-highlight-selected);
388
+ }
389
+
390
+ :root[data-color-theme='energy'] {
391
+ --cps-accent-primary: var(--cps-color-energy);
392
+ --cps-accent-primary-contrast: #2d2323;
393
+ --cps-text-on-accent: #2d2323;
394
+ --cps-accent-secondary: var(--cps-color-prepared);
395
+ --cps-accent-secondary-contrast: #2d2323;
396
+ --cps-border-focus: var(--cps-color-energy);
397
+ --cps-highlight-selected: var(--cps-color-highlight-selected);
398
+ }
399
+
400
+ :root[data-color-theme='passion'] {
401
+ --cps-accent-primary: var(--cps-color-passion);
402
+ --cps-accent-primary-contrast: #ffffff;
403
+ --cps-accent-secondary: var(--cps-color-warmth);
404
+ --cps-accent-secondary-contrast: #ffffff;
405
+ --cps-border-focus: var(--cps-color-passion);
406
+ --cps-highlight-selected: rgba(220, 0, 50, 0.16);
407
+ }
408
+
409
+ :root[data-radius-theme='none'] {
410
+ --cps-radius-xs: 0px;
411
+ --cps-radius-sm: 0px;
412
+ --cps-radius-md: 0px;
413
+ --cps-radius-lg: 0px;
414
+ --cps-radius-xl: 0px;
415
+ }
416
+
417
+ :root[data-radius-theme='compact'] {
418
+ --cps-radius-sm: 3px;
419
+ --cps-radius-md: 6px;
420
+ --cps-radius-lg: 10px;
421
+ --cps-radius-xl: 14px;
422
+ }
423
+
424
+ :root[data-radius-theme='rounded'] {
425
+ --cps-radius-sm: 6px;
426
+ --cps-radius-md: 10px;
427
+ --cps-radius-lg: 14px;
428
+ --cps-radius-xl: 20px;
429
+ }
430
+
431
+ :root[data-radius-theme='pill'] {
432
+ --cps-radius-sm: 9999px;
433
+ --cps-radius-md: 9999px;
434
+ --cps-radius-lg: 9999px;
435
+ --cps-radius-xl: 9999px;
278
436
  }
@@ -1,5 +1,6 @@
1
1
  @use './_bootstrap-grid';
2
2
  @use './_colors.scss';
3
+ @use './_colors-dark.scss';
3
4
  @use './_fonts.scss';
4
5
  @use './_cps-tooltip-style.scss';
5
6
  @use 'primeicons/primeicons.css';
@@ -18,3 +19,27 @@
18
19
  position: absolute;
19
20
  top: -9999px;
20
21
  }
22
+
23
+ /* Custom scrollbar */
24
+ * {
25
+ scrollbar-width: thin;
26
+ }
27
+
28
+ html,
29
+ body {
30
+ font-family: 'Source Sans Pro', sans-serif;
31
+ background: var(--cps-background-color);
32
+ color: var(--cps-text-primary);
33
+ }
34
+
35
+ // Theme transition hook used by CpsThemeService
36
+ .cps-theme-transition,
37
+ .cps-theme-transition *,
38
+ .cps-theme-transition *::before,
39
+ .cps-theme-transition *::after {
40
+ transition:
41
+ background-color var(--cps-motion-base) var(--cps-motion-easing),
42
+ border-color var(--cps-motion-base) var(--cps-motion-easing),
43
+ color var(--cps-motion-base) var(--cps-motion-easing),
44
+ box-shadow var(--cps-motion-base) var(--cps-motion-easing) !important;
45
+ }