@life-cockpit/angular-ui-kit 1.11.10 → 2.0.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": "@life-cockpit/angular-ui-kit",
3
- "version": "1.11.10",
3
+ "version": "2.0.0",
4
4
  "description": "Life Cockpit Design System - Angular UI component library",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -0,0 +1,117 @@
1
+ // =============================================================================
2
+ // Design System 2.0 — Shared SCSS Mixins
3
+ // =============================================================================
4
+ //
5
+ // Reusable building blocks for the dark-first "pitch" aesthetic. These emit no
6
+ // CSS until @include'd, so importing the partial is free.
7
+ //
8
+ // Usage in a component stylesheet:
9
+ // @use '../../styles/mixins' as mix;
10
+ // .my-card { @include mix.card-surface; }
11
+ //
12
+ // All mixins read semantic CSS custom properties (defined in _theme-dark.scss /
13
+ // _theme-light.scss), so a single @include works correctly in both themes.
14
+ // =============================================================================
15
+
16
+ // Accessible focus ring. Replaces the duplicated
17
+ // `outline: 2px solid var(--color-primary-500)` scattered across components.
18
+ @mixin focus-ring($color: var(--color-primary-500), $offset: 2px, $width: 2px) {
19
+ &:focus-visible {
20
+ outline: $width solid $color;
21
+ outline-offset: $offset;
22
+ }
23
+ }
24
+
25
+ // Map a 1–4 elevation level to its token shadow.
26
+ @mixin elevation($level: 1) {
27
+ box-shadow: var(--elevation-#{$level});
28
+ }
29
+
30
+ // The signature DS2.0 surface: gradient fill, hairline border, rounded corners,
31
+ // soft elevation, and (optionally) a 3px teal accent line along the top edge.
32
+ // Requires `position` context for the ::after accent (the mixin sets it).
33
+ // Pass `$radius: null` to leave border-radius to the caller (e.g. when a
34
+ // component exposes its own radius scale).
35
+ @mixin card-surface($radius: var(--border-radius-lg), $level: 1, $accent-line: true) {
36
+ position: relative;
37
+ overflow: hidden;
38
+ background-image: var(--gradient-surface);
39
+ border: 1px solid var(--color-border);
40
+ box-shadow: var(--elevation-#{$level});
41
+
42
+ @if $radius != null {
43
+ border-radius: $radius;
44
+ }
45
+
46
+ @if $accent-line {
47
+ &::after {
48
+ content: '';
49
+ position: absolute;
50
+ inset: 0 0 auto 0;
51
+ height: 3px;
52
+ background: var(--accent-line);
53
+ opacity: 0.7;
54
+ pointer-events: none;
55
+ }
56
+ }
57
+ }
58
+
59
+ // Clip a teal→violet gradient to text. Apply to a heading/display element.
60
+ @mixin gradient-text {
61
+ background: var(--gradient-text);
62
+ -webkit-background-clip: text;
63
+ background-clip: text;
64
+ color: transparent;
65
+ }
66
+
67
+ // Soft teal glow, typically on hover/focus of interactive surfaces.
68
+ @mixin glow {
69
+ box-shadow: var(--shadow-glow);
70
+ }
71
+
72
+ // Pill shape with a teal-tinted translucent fill and strong border — the shared
73
+ // language for buttons, badges, chips, tags.
74
+ @mixin pill($translucent: true) {
75
+ display: inline-flex;
76
+ align-items: center;
77
+ gap: 0.5em;
78
+ border-radius: var(--border-radius-full);
79
+ border: 1px solid var(--color-border-strong);
80
+
81
+ @if $translucent {
82
+ background: rgba(132, 199, 212, 0.08);
83
+ }
84
+ }
85
+
86
+ // Uppercase eyebrow label with letter-spacing and a teal leading dash.
87
+ @mixin kicker {
88
+ display: inline-flex;
89
+ align-items: center;
90
+ gap: 0.6em;
91
+ text-transform: uppercase;
92
+ letter-spacing: 0.22em;
93
+ font-size: var(--font-size-xs);
94
+ font-weight: var(--font-weight-semibold);
95
+ color: var(--color-primary-300);
96
+
97
+ &::before {
98
+ content: '';
99
+ width: 26px;
100
+ height: 2px;
101
+ border-radius: 2px;
102
+ background: var(--color-primary-400);
103
+ }
104
+ }
105
+
106
+ // Gradient teal tile with a 1px ring — for logo/avatar/icon squares.
107
+ @mixin brand-tile($size: 2rem, $radius: var(--border-radius-md)) {
108
+ display: grid;
109
+ place-items: center;
110
+ width: $size;
111
+ height: $size;
112
+ flex-shrink: 0;
113
+ border-radius: $radius;
114
+ background: var(--gradient-brand-tile);
115
+ box-shadow: var(--shadow-brand-glow);
116
+ color: var(--color-neutral-900);
117
+ }
@@ -14,7 +14,11 @@
14
14
  @use './tokens/animation' as *;
15
15
  @use './tokens/size' as *;
16
16
 
17
- :root.dark {
17
+ // Design System 2.0: dark is the DEFAULT look. `:root:not(.light)` makes dark
18
+ // apply before any theme class is set (no first-paint white flash); `.light` is
19
+ // the explicit opt-in escape hatch defined in _theme-light.scss.
20
+ :root.dark,
21
+ :root:not(.light) {
18
22
  // ============================================================================
19
23
  // Colors - Primary (Inverted for dark mode)
20
24
  // ============================================================================
@@ -144,12 +148,12 @@
144
148
  --typography-line-height-relaxed: #{$typography-line-height-relaxed};
145
149
 
146
150
  // ============================================================================
147
- // Elevation (Enhanced shadows for dark mode)
151
+ // Elevation (DS2.0 deep layered shadows from generated tokens)
148
152
  // ============================================================================
149
- --elevation-1: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px 0 rgba(0, 0, 0, 0.18);
150
- --elevation-2: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.18);
151
- --elevation-3: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.15);
152
- --elevation-4: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.12);
153
+ --elevation-1: #{$elevation-1};
154
+ --elevation-2: #{$elevation-2};
155
+ --elevation-3: #{$elevation-3};
156
+ --elevation-4: #{$elevation-4};
153
157
 
154
158
  // ============================================================================
155
159
  // Border Radius (Same as light theme)
@@ -196,21 +200,80 @@
196
200
  --size-min-touch-height: #{$size-min-touch-height};
197
201
 
198
202
  // ============================================================================
199
- // Semantic Color Mappings for Dark Theme
200
- // ============================================================================
201
- --color-background: #{$color-neutral-900};
202
- --color-surface: #{$color-neutral-800};
203
- --color-text-primary: #{$color-neutral-50};
204
- --color-text-secondary: #{$color-neutral-300};
205
- --color-text-disabled: #{$color-neutral-500};
206
- --color-border: #{$color-neutral-700};
207
- --color-divider: #{$color-neutral-800};
208
- --color-neutral-white: #ffffff;
203
+ // Semantic Color Mappings for Dark Theme (DS2.0 — teal-tinted surfaces)
204
+ // ============================================================================
205
+ // Surfaces
206
+ --color-background: #{$color-background-dark};
207
+ // Two teal+violet radial glows over the base background. Apply on the app
208
+ // shell via `background-image: var(--app-background-image)`.
209
+ --app-background-image:
210
+ radial-gradient(1200px 800px at 12% -10%, rgba(32, 132, 151, 0.20), transparent 60%),
211
+ radial-gradient(900px 700px at 110% 120%, rgba(78, 63, 132, 0.18), transparent 55%);
212
+ --color-surface: #{$color-surface-dark-base};
213
+ --color-surface-2: #{$color-surface-dark-raised};
214
+ --color-surface-sunken: #{$color-surface-dark-sunken};
215
+ --color-surface-hover: rgba(132, 199, 212, 0.06);
216
+ --color-surface-selected: rgba(32, 132, 151, 0.12);
217
+ --color-surface-muted: rgba(255, 255, 255, 0.02);
218
+ // Gradient surface for cards/panels (use as `background-image`)
219
+ --gradient-surface: linear-gradient(180deg, var(--color-surface-2), var(--color-surface));
220
+
221
+ // Text — tuned brighter than the raw pitch values for AA contrast on the
222
+ // teal-tinted surfaces (#14222e / #1a2c3a).
223
+ --color-text-primary: #f1f6f8;
224
+ --color-text-secondary: #c4d2d9;
225
+ --color-text-tertiary: #93a4ad;
226
+ --color-text-disabled: #6c7e88;
227
+ --color-neutral-white: #ffffff;
228
+
229
+ // Borders
230
+ --color-border: rgba(255, 255, 255, 0.08);
231
+ --color-border-strong: rgba(132, 199, 212, 0.28);
232
+ --color-divider: rgba(255, 255, 255, 0.06);
233
+
234
+ // Brand alias (some components reference bare --color-primary)
235
+ --color-primary: var(--color-primary-500);
236
+ // Solid brand-teal fill for primary actions — uses the LITERAL brand teal in
237
+ // both themes (not the inverted scale) so primary buttons are always the
238
+ // recognizable, high-contrast brand color with white ink.
239
+ --color-primary-fill: #{$color-primary-500};
240
+ --color-primary-fill-hover: #{$color-primary-400};
241
+ --color-primary-fill-active: #{$color-primary-600};
242
+ --color-on-primary: #ffffff;
243
+ // Solid secondary fill (literal brand secondary in both themes; dark enough
244
+ // for white ink so it never washes out under dark-mode inversion).
245
+ --color-secondary-fill: #{$color-secondary-600};
246
+ --color-secondary-fill-hover: #{$color-secondary-500};
247
+ --color-secondary-fill-active: #{$color-secondary-700};
248
+ --color-on-secondary: #ffffff;
249
+ // Solid semantic fills (literal, non-inverted) for danger/warning/info actions.
250
+ --color-error-fill: #{$color-error-default};
251
+ --color-error-fill-hover: #c11414;
252
+ --color-error-fill-active: #{$color-error-dark};
253
+ --color-on-error: #ffffff;
254
+
209
255
  // Semantic color aliases for components
210
256
  --color-error: #{$color-error-default};
211
257
  --color-success: #{$color-success-default};
212
258
  --color-warning: #{$color-warning-default};
213
259
  --color-info: #{$color-info-default};
260
+
261
+ // ============================================================================
262
+ // DS2.0 Visual Primitives (the pitch signature)
263
+ // ============================================================================
264
+ // NOTE: these reference the RAW token scale (#{$color-primary-*}) rather than
265
+ // the inverted --color-primary-* custom properties, so the teal gradient reads
266
+ // bright-on-dark exactly like the pitch regardless of dark-mode inversion.
267
+ // 3px top accent bar for cards/panels (use on a ::after as background)
268
+ --accent-line: linear-gradient(90deg, #{$color-primary-500}, transparent);
269
+ // 1px teal ring used on brand tiles / focus glow
270
+ --shadow-brand-glow: 0 0 0 1px rgba(132, 199, 212, 0.3);
271
+ // Soft teal hover/focus glow
272
+ --shadow-glow: 0 0 24px rgba(132, 199, 212, 0.12);
273
+ // Gradient for clipped display text (use with -webkit-background-clip: text)
274
+ --gradient-text: linear-gradient(100deg, #{$color-primary-300}, #{$color-primary-500} 55%, #{$color-accent-purple});
275
+ // Gradient teal tile for logos / icon squares
276
+ --gradient-brand-tile: linear-gradient(135deg, #{$color-primary-400}, #{$color-primary-600});
214
277
  // ============================================================================
215
278
  // Short Aliases for Common Usage (Component Convenience)
216
279
  // ============================================================================
@@ -230,8 +293,27 @@
230
293
  --line-height-relaxed: var(--typography-line-height-relaxed);
231
294
  --animation-timing-ease: var(--animation-easing-ease-in-out);
232
295
 
233
- // Error color scale aliases (for danger buttons, etc.)
296
+ // Semantic color scale aliases resolve the numeric scale some components
297
+ // use onto the canonical semantic shades (already dark-tuned above).
298
+ --color-error-50: rgba(157, 14, 14, 0.18);
299
+ --color-error-100: rgba(157, 14, 14, 0.22);
300
+ --color-error-500: var(--color-error-default);
234
301
  --color-error-600: var(--color-error-default);
235
302
  --color-error-700: var(--color-error-dark);
236
- --color-error-800: #5a0707; // Darker shade for active state
303
+ --color-error-800: #5a0707;
304
+ --color-success-50: rgba(142, 164, 117, 0.18);
305
+ --color-success-100: rgba(142, 164, 117, 0.22);
306
+ --color-success-500: var(--color-success-default);
307
+ --color-success-600: var(--color-success-default);
308
+ --color-success-700: var(--color-success-dark);
309
+ --color-warning-50: rgba(225, 160, 64, 0.18);
310
+ --color-warning-100: rgba(225, 160, 64, 0.22);
311
+ --color-warning-500: var(--color-warning-default);
312
+ --color-warning-600: var(--color-warning-default);
313
+ --color-warning-700: var(--color-warning-dark);
314
+ --color-info-50: rgba(59, 101, 136, 0.2);
315
+ --color-info-100: rgba(59, 101, 136, 0.24);
316
+ --color-info-500: var(--color-info-default);
317
+ --color-info-600: var(--color-info-default);
318
+ --color-info-700: var(--color-info-dark);
237
319
  }
@@ -198,23 +198,64 @@
198
198
  --size-min-touch-height: #{$size-min-touch-height};
199
199
 
200
200
  // ============================================================================
201
- // Semantic Color Mappings for Light Theme
201
+ // Semantic Color Mappings for Light Theme (DS2.0 — mirrors dark token names)
202
202
  // ============================================================================
203
+ // Surfaces
203
204
  --color-background: #ffffff;
205
+ --app-background-image: none;
204
206
  --color-surface: #ffffff;
207
+ --color-surface-2: #{$color-neutral-50};
208
+ --color-surface-sunken: #{$color-neutral-100};
209
+ --color-surface-hover: #{$color-neutral-100};
210
+ --color-surface-selected: #{$color-primary-50};
211
+ --color-surface-muted: #{$color-neutral-50};
212
+ --gradient-surface: linear-gradient(180deg, #ffffff, #{$color-neutral-50});
213
+
214
+ // Text
205
215
  --color-text-primary: #{$color-neutral-900};
206
216
  --color-text-secondary: #{$color-neutral-600};
217
+ --color-text-tertiary: #{$color-neutral-500};
207
218
  --color-text-disabled: #{$color-neutral-400};
219
+ --color-neutral-white: #ffffff;
220
+
221
+ // Borders
208
222
  --color-border: #{$color-neutral-300};
223
+ --color-border-strong: #{$color-primary-300};
209
224
  --color-divider: #{$color-neutral-200};
210
- --color-neutral-white: #ffffff;
211
-
225
+
226
+ // Brand alias (some components reference bare --color-primary)
227
+ --color-primary: var(--color-primary-500);
228
+ // Solid brand-teal fill for primary actions (literal brand teal in both themes).
229
+ --color-primary-fill: #{$color-primary-500};
230
+ --color-primary-fill-hover: #{$color-primary-600};
231
+ --color-primary-fill-active: #{$color-primary-700};
232
+ --color-on-primary: #ffffff;
233
+ // Solid secondary fill (literal brand secondary in both themes).
234
+ --color-secondary-fill: #{$color-secondary-600};
235
+ --color-secondary-fill-hover: #{$color-secondary-700};
236
+ --color-secondary-fill-active: #{$color-secondary-800};
237
+ --color-on-secondary: #ffffff;
238
+ // Solid semantic fills for danger/warning/info actions.
239
+ --color-error-fill: #{$color-error-default};
240
+ --color-error-fill-hover: #{$color-error-dark};
241
+ --color-error-fill-active: #{$color-error-dark};
242
+ --color-on-error: #ffffff;
243
+
212
244
  // Semantic color aliases for components
213
245
  --color-error: #{$color-error-default};
214
246
  --color-success: #{$color-success-default};
215
247
  --color-warning: #{$color-warning-default};
216
248
  --color-info: #{$color-info-default};
217
249
 
250
+ // ============================================================================
251
+ // DS2.0 Visual Primitives (light-tuned values of the dark primitives)
252
+ // ============================================================================
253
+ --accent-line: linear-gradient(90deg, #{$color-primary-500}, transparent);
254
+ --shadow-brand-glow: 0 0 0 1px rgba(32, 132, 151, 0.18);
255
+ --shadow-glow: 0 0 24px rgba(32, 132, 151, 0.10);
256
+ --gradient-text: linear-gradient(100deg, #{$color-primary-500}, #{$color-primary-600} 55%, #{$color-accent-violet});
257
+ --gradient-brand-tile: linear-gradient(135deg, #{$color-primary-400}, #{$color-primary-600});
258
+
218
259
  // ============================================================================
219
260
  // Short Aliases for Common Usage (Component Convenience)
220
261
  // ============================================================================
@@ -234,8 +275,27 @@
234
275
  --line-height-relaxed: var(--typography-line-height-relaxed);
235
276
  --animation-timing-ease: var(--animation-easing-ease-in-out);
236
277
 
237
- // Error color scale aliases (for danger buttons, etc.)
278
+ // Semantic color scale aliases map the numeric scale some components use
279
+ // onto the three canonical semantic shades so they always resolve.
280
+ --color-error-50: #{$color-error-light};
281
+ --color-error-100: #{$color-error-light};
282
+ --color-error-500: var(--color-error-default);
238
283
  --color-error-600: var(--color-error-default);
239
284
  --color-error-700: var(--color-error-dark);
240
285
  --color-error-800: #5a0707; // Darker shade for active state
286
+ --color-success-50: #{$color-success-light};
287
+ --color-success-100: #{$color-success-light};
288
+ --color-success-500: var(--color-success-default);
289
+ --color-success-600: var(--color-success-default);
290
+ --color-success-700: var(--color-success-dark);
291
+ --color-warning-50: #{$color-warning-light};
292
+ --color-warning-100: #{$color-warning-light};
293
+ --color-warning-500: var(--color-warning-default);
294
+ --color-warning-600: var(--color-warning-default);
295
+ --color-warning-700: var(--color-warning-dark);
296
+ --color-info-50: #{$color-info-light};
297
+ --color-info-100: #{$color-info-light};
298
+ --color-info-500: var(--color-info-default);
299
+ --color-info-600: var(--color-info-default);
300
+ --color-info-700: var(--color-info-dark);
241
301
  }
@@ -48,6 +48,13 @@ $color-accent-purple: #866aa0;
48
48
  $color-accent-red: #9e3846;
49
49
  $color-accent-rust: #c6592e;
50
50
  $color-accent-violet: #4e3f84;
51
+ $color-surface-dark-base: #14222e; // DS2.0 dark card surface
52
+ $color-surface-dark-raised: #1a2c3a; // DS2.0 raised dark surface
53
+ $color-surface-dark-sunken: #0c1722; // DS2.0 sunken dark surface
54
+ $color-background-dark: #111827; // DS2.0 dark app background (== neutral-900)
55
+ $color-text-dark-primary: #eef4f6; // DS2.0 dark primary text
56
+ $color-text-dark-secondary: #aebfc7; // DS2.0 dark secondary text
57
+ $color-text-dark-tertiary: #71858f; // DS2.0 dark muted text
51
58
  $spacing-0: 0;
52
59
  $spacing-1: 0.25rem; // 4px - Base grid unit
53
60
  $spacing-2: 0.5rem; // 8px
@@ -86,16 +93,16 @@ $typography-font-weight-bold: 700;
86
93
  $typography-line-height-tight: 1.25;
87
94
  $typography-line-height-normal: 1.5;
88
95
  $typography-line-height-relaxed: 1.75;
89
- $elevation-1: 0 1px 2px 0 rgba(0, 0, 0, 0.05); // Subtle elevation for cards
90
- $elevation-2: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); // Medium elevation for dropdowns
91
- $elevation-3: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); // High elevation for modals
92
- $elevation-4: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); // Highest elevation for tooltips
96
+ $elevation-1: 0 4px 24px rgba(0, 0, 0, 0.35); // DS2.0 subtle layered elevation for cards
97
+ $elevation-2: 0 8px 32px rgba(0, 0, 0, 0.42); // DS2.0 medium elevation for dropdowns/popovers
98
+ $elevation-3: 0 14px 44px rgba(0, 0, 0, 0.48); // DS2.0 high elevation for drawers
99
+ $elevation-4: 0 18px 60px rgba(0, 0, 0, 0.55); // DS2.0 highest elevation for modals/overlays
93
100
  $border-radius-none: 0;
94
- $border-radius-sm: 0.25rem; // 4px
95
- $border-radius-md: 0.5rem; // 8px - Default
96
- $border-radius-lg: 0.75rem; // 12px
97
- $border-radius-xl: 1rem; // 16px
98
- $border-radius-2xl: 1.5rem; // 24px
101
+ $border-radius-sm: 0.625rem; // 10px - DS2.0 small
102
+ $border-radius-md: 0.75rem; // 12px - DS2.0 default
103
+ $border-radius-lg: 1.125rem; // 18px - DS2.0 card radius
104
+ $border-radius-xl: 1.5rem; // 24px
105
+ $border-radius-2xl: 2rem; // 32px
99
106
  $border-radius-full: 9999px; // Fully rounded
100
107
  $animation-duration-fast: 150ms; // Standard animation duration
101
108
  $animation-easing-ease-in: ease-in;
@@ -2,9 +2,9 @@
2
2
  // Do not edit directly, this file was auto-generated.
3
3
 
4
4
  $border-radius-none: 0;
5
- $border-radius-sm: 0.25rem; // 4px
6
- $border-radius-md: 0.5rem; // 8px - Default
7
- $border-radius-lg: 0.75rem; // 12px
8
- $border-radius-xl: 1rem; // 16px
9
- $border-radius-2xl: 1.5rem; // 24px
5
+ $border-radius-sm: 0.625rem; // 10px - DS2.0 small
6
+ $border-radius-md: 0.75rem; // 12px - DS2.0 default
7
+ $border-radius-lg: 1.125rem; // 18px - DS2.0 card radius
8
+ $border-radius-xl: 1.5rem; // 24px
9
+ $border-radius-2xl: 2rem; // 32px
10
10
  $border-radius-full: 9999px; // Fully rounded
@@ -48,3 +48,10 @@ $color-accent-purple: #866aa0;
48
48
  $color-accent-red: #9e3846;
49
49
  $color-accent-rust: #c6592e;
50
50
  $color-accent-violet: #4e3f84;
51
+ $color-surface-dark-base: #14222e; // DS2.0 dark card surface
52
+ $color-surface-dark-raised: #1a2c3a; // DS2.0 raised dark surface
53
+ $color-surface-dark-sunken: #0c1722; // DS2.0 sunken dark surface
54
+ $color-background-dark: #111827; // DS2.0 dark app background (== neutral-900)
55
+ $color-text-dark-primary: #eef4f6; // DS2.0 dark primary text
56
+ $color-text-dark-secondary: #aebfc7; // DS2.0 dark secondary text
57
+ $color-text-dark-tertiary: #71858f; // DS2.0 dark muted text
@@ -1,7 +1,7 @@
1
1
 
2
2
  // Do not edit directly, this file was auto-generated.
3
3
 
4
- $elevation-1: 0 1px 2px 0 rgba(0, 0, 0, 0.05); // Subtle elevation for cards
5
- $elevation-2: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); // Medium elevation for dropdowns
6
- $elevation-3: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); // High elevation for modals
7
- $elevation-4: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); // Highest elevation for tooltips
4
+ $elevation-1: 0 4px 24px rgba(0, 0, 0, 0.35); // DS2.0 subtle layered elevation for cards
5
+ $elevation-2: 0 8px 32px rgba(0, 0, 0, 0.42); // DS2.0 medium elevation for dropdowns/popovers
6
+ $elevation-3: 0 14px 44px rgba(0, 0, 0, 0.48); // DS2.0 high elevation for drawers
7
+ $elevation-4: 0 18px 60px rgba(0, 0, 0, 0.55); // DS2.0 highest elevation for modals/overlays