@metropolle/design-system 1.2025.1-0.2.29 → 1.2025.1-2.10.2349

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.
@@ -460,17 +460,59 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
460
460
  font-family: var(--mds-typography-fontFamily-brand);
461
461
  }
462
462
 
463
+ /* Brand Logo Size Variants - Consistent across all environments */
464
+ .mds-brand-logo--sm {
465
+ font-size: 1.5rem; /* 24px - Navbar size */
466
+ letter-spacing: -0.03rem;
467
+ }
468
+
469
+ .mds-brand-logo--md {
470
+ font-size: 2rem; /* 32px - Medium contexts */
471
+ letter-spacing: -0.04rem;
472
+ }
473
+
474
+ .mds-brand-logo--lg {
475
+ font-size: 2.125rem; /* 34px - Landing/hero contexts */
476
+ letter-spacing: var(--mds-typography-letterSpacing-brand);
477
+ }
478
+
479
+ /* Navbar-specific brand logo - always consistent size */
480
+ .navbar-brand-logo,
481
+ .navbar__brand-logo,
482
+ .login-brand-logo {
483
+ font-size: 1.5rem !important;
484
+ letter-spacing: -0.03rem !important;
485
+ font-weight: var(--mds-typography-fontWeight-bold) !important;
486
+ font-family: var(--mds-typography-fontFamily-brand) !important;
487
+ color: var(--mds-color-text-primary) !important;
488
+ }
489
+
463
490
  /* Brand Logo Responsive */
464
491
  @media (max-width: 768px) {
465
492
  .mds-text--brand,
466
493
  .mds-brand-logo,
467
- .mds-brand-logo--sm,
468
- .mds-brand-logo--md,
469
- .mds-brand-logo--lg,
470
494
  .logo-brand {
471
495
  font-size: 1.8rem;
472
496
  letter-spacing: var(--mds-typography-letterSpacing-tight);
473
497
  }
498
+
499
+ .mds-brand-logo--sm,
500
+ .navbar-brand-logo,
501
+ .navbar__brand-logo,
502
+ .login-brand-logo {
503
+ font-size: 1.25rem !important;
504
+ letter-spacing: -0.02rem !important;
505
+ }
506
+
507
+ .mds-brand-logo--md {
508
+ font-size: 1.5rem;
509
+ letter-spacing: -0.03rem;
510
+ }
511
+
512
+ .mds-brand-logo--lg {
513
+ font-size: 1.8rem;
514
+ letter-spacing: var(--mds-typography-letterSpacing-tight);
515
+ }
474
516
  }
475
517
 
476
518
  /* Glass Card - Enhanced styles (complementing base tokens.css) */
@@ -0,0 +1,496 @@
1
+ /* ============================================
2
+ Metropolle Design System - Liquid Glass CSS
3
+ iOS 26 inspired glass effects - SUBTLE mode
4
+ ============================================ */
5
+
6
+ /* =========================
7
+ CSS Custom Properties
8
+ ========================= */
9
+
10
+ :root {
11
+ /* =========================
12
+ Centralized Theme Variables
13
+ Use these across all repos
14
+ ========================= */
15
+
16
+ /* Typography */
17
+ --mds-font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
18
+ --mds-font-family-brand: 'Helvetica', 'Inter Tight', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
19
+
20
+ /* Brand Colors */
21
+ --mds-color-brand-primary: #0055FF;
22
+ --mds-color-brand-secondary: #667eea;
23
+ --mds-color-brand-accent: #764ba2;
24
+
25
+ /* Semantic Colors - Dark mode (default) */
26
+ --mds-color-text-primary: #ffffff;
27
+ --mds-color-text-secondary: rgba(255, 255, 255, 0.7);
28
+ --mds-color-text-tertiary: rgba(255, 255, 255, 0.5);
29
+ --mds-color-background-primary: #0f0f0f;
30
+ --mds-color-background-secondary: #1f1f1f;
31
+ --mds-color-background-tertiary: #2f2f2f;
32
+ --mds-color-border-default: rgba(255, 255, 255, 0.1);
33
+ --mds-color-border-light: rgba(255, 255, 255, 0.05);
34
+
35
+ /* Status Colors */
36
+ --mds-color-success: #10b981;
37
+ --mds-color-warning: #f59e0b;
38
+ --mds-color-error: #ef4444;
39
+ --mds-color-info: #3b82f6;
40
+
41
+ /* Scrollbar - Dark mode (default) */
42
+ --mds-scrollbar-track: rgba(40, 40, 40, 0.8);
43
+ --mds-scrollbar-thumb: rgba(80, 80, 80, 0.8);
44
+ --mds-scrollbar-thumb-hover: rgba(100, 100, 100, 0.8);
45
+
46
+ /* =========================
47
+ Liquid Glass Tokens
48
+ ========================= */
49
+
50
+ /* Blur tokens */
51
+ --mds-liquid-blur-xs: 2px;
52
+ --mds-liquid-blur-sm: 4px;
53
+ --mds-liquid-blur-md: 6px;
54
+ --mds-liquid-blur-lg: 8px;
55
+ --mds-liquid-blur-xl: 12px;
56
+
57
+ /* Saturate tokens */
58
+ --mds-liquid-saturate-subtle: 110%;
59
+ --mds-liquid-saturate-default: 130%;
60
+ --mds-liquid-saturate-vibrant: 150%;
61
+
62
+ /* Background tokens - Dark mode (default) */
63
+ --mds-liquid-bg-light: rgba(255, 255, 255, 0.05);
64
+ --mds-liquid-bg-dark: rgba(20, 20, 20, 0.6);
65
+ --mds-liquid-bg-overlay: rgba(0, 0, 0, 0.5);
66
+ --mds-liquid-bg-sidebar: rgba(20, 20, 20, 0.85);
67
+ --mds-liquid-bg-navbar: rgba(15, 15, 15, 0.9);
68
+
69
+ /* Border tokens - Dark mode (default) */
70
+ --mds-liquid-border-subtle: rgba(255, 255, 255, 0.2);
71
+ --mds-liquid-border-bright: rgba(255, 255, 255, 0.5);
72
+
73
+ /* Shadow tokens */
74
+ --mds-liquid-shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.08);
75
+ --mds-liquid-shadow-floating: 0 4px 16px rgba(31, 38, 135, 0.15);
76
+ --mds-liquid-shadow-elevated: 0 8px 32px rgba(0, 0, 0, 0.2);
77
+ --mds-liquid-shadow-dramatic: 0 12px 48px rgba(0, 0, 0, 0.3);
78
+
79
+ /* Inner glow */
80
+ --mds-liquid-glow-subtle: inset 0 0 16px -4px rgba(255, 255, 255, 0.2);
81
+ --mds-liquid-glow-bright: inset 0 2px 16px rgba(255, 255, 255, 0.25);
82
+
83
+ /* Specular highlight */
84
+ --mds-liquid-specular: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.05) 40%, rgba(255, 255, 255, 0) 60%);
85
+ --mds-liquid-specular-intense: linear-gradient(135deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0) 100%);
86
+
87
+ /* Transitions */
88
+ --mds-liquid-transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
89
+ --mds-liquid-transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
90
+ --mds-liquid-transition-slow: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
91
+
92
+ /* Background gradients */
93
+ --mds-liquid-gradient-dark: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
94
+ --mds-liquid-gradient-light: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #cbd5e1 100%);
95
+ }
96
+
97
+ /* Light theme overrides */
98
+ html[data-theme="light"] {
99
+ /* Semantic Colors - Light mode */
100
+ --mds-color-text-primary: #1a1a1a;
101
+ --mds-color-text-secondary: rgba(0, 0, 0, 0.7);
102
+ --mds-color-text-tertiary: rgba(0, 0, 0, 0.5);
103
+ --mds-color-background-primary: #ffffff;
104
+ --mds-color-background-secondary: #f5f5f5;
105
+ --mds-color-background-tertiary: #e0e0e0;
106
+ --mds-color-border-default: rgba(0, 0, 0, 0.1);
107
+ --mds-color-border-light: rgba(0, 0, 0, 0.05);
108
+
109
+ /* Scrollbar - Light mode */
110
+ --mds-scrollbar-track: rgba(200, 200, 200, 0.3);
111
+ --mds-scrollbar-thumb: rgba(150, 150, 150, 0.5);
112
+ --mds-scrollbar-thumb-hover: rgba(100, 100, 100, 0.7);
113
+
114
+ /* Liquid Glass - Light mode */
115
+ --mds-liquid-bg-light: rgba(255, 255, 255, 0.7);
116
+ --mds-liquid-bg-dark: rgba(0, 0, 0, 0.05);
117
+ --mds-liquid-bg-overlay: rgba(255, 255, 255, 0.5);
118
+ --mds-liquid-border-subtle: rgba(0, 0, 0, 0.1);
119
+ --mds-liquid-border-bright: rgba(0, 0, 0, 0.2);
120
+ --mds-liquid-shadow-floating: 0 4px 16px rgba(0, 0, 0, 0.1);
121
+ --mds-liquid-shadow-elevated: 0 8px 32px rgba(0, 0, 0, 0.15);
122
+ --mds-liquid-glow-subtle: inset 0 0 16px -4px rgba(0, 0, 0, 0.05);
123
+ --mds-liquid-glow-bright: inset 0 2px 16px rgba(0, 0, 0, 0.08);
124
+ --mds-liquid-specular: linear-gradient(135deg, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0.2) 40%, rgba(255, 255, 255, 0) 60%);
125
+ }
126
+
127
+
128
+ /* =========================
129
+ Base Liquid Glass Class
130
+ ========================= */
131
+
132
+ .mds-liquid-glass {
133
+ position: relative;
134
+ background: var(--mds-liquid-bg-light);
135
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
136
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
137
+ border: 1px solid var(--mds-liquid-border-subtle);
138
+ border-radius: 12px;
139
+ box-shadow: var(--mds-liquid-shadow-floating), var(--mds-liquid-glow-subtle);
140
+ transition: var(--mds-liquid-transition);
141
+ overflow: hidden;
142
+ }
143
+
144
+ /* Specular highlight via pseudo-element */
145
+ .mds-liquid-glass::before {
146
+ content: '';
147
+ position: absolute;
148
+ inset: 0;
149
+ background: var(--mds-liquid-specular);
150
+ border-radius: inherit;
151
+ pointer-events: none;
152
+ opacity: 0.6;
153
+ z-index: 0;
154
+ }
155
+
156
+ /* Content should be above the specular */
157
+ .mds-liquid-glass > * {
158
+ position: relative;
159
+ z-index: 1;
160
+ }
161
+
162
+ /* Hover state - no movement, only subtle border change */
163
+ .mds-liquid-glass:hover {
164
+ border-color: var(--mds-liquid-border-bright);
165
+ }
166
+
167
+ /* No-hover variant */
168
+ .mds-liquid-glass--no-hover,
169
+ .mds-liquid-glass--no-hover:hover {
170
+ border-color: var(--mds-liquid-border-subtle);
171
+ }
172
+
173
+
174
+ /* =========================
175
+ Size Variants
176
+ ========================= */
177
+
178
+ .mds-liquid-glass--xs {
179
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
180
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
181
+ border-radius: 6px;
182
+ }
183
+
184
+ .mds-liquid-glass--sm {
185
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
186
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
187
+ border-radius: 8px;
188
+ }
189
+
190
+ .mds-liquid-glass--lg {
191
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
192
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
193
+ border-radius: 16px;
194
+ }
195
+
196
+ .mds-liquid-glass--xl {
197
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
198
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
199
+ border-radius: 20px;
200
+ }
201
+
202
+
203
+ /* =========================
204
+ Element-Specific Classes
205
+ ========================= */
206
+
207
+ /* Navbar */
208
+ .mds-liquid-glass--navbar {
209
+ background: var(--mds-liquid-bg-light);
210
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
211
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
212
+ border: none;
213
+ border-bottom: 1px solid var(--mds-liquid-border-subtle);
214
+ border-radius: 0;
215
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
216
+ }
217
+
218
+ .mds-liquid-glass--navbar::before {
219
+ border-radius: 0;
220
+ }
221
+
222
+ .mds-liquid-glass--navbar:hover {
223
+ transform: none;
224
+ }
225
+
226
+ /* Sidebar */
227
+ .mds-liquid-glass--sidebar {
228
+ background: var(--mds-liquid-bg-light);
229
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-default));
230
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-default));
231
+ border: none;
232
+ border-right: 1px solid var(--mds-liquid-border-subtle);
233
+ border-radius: 0;
234
+ box-shadow: 4px 0 20px rgba(0, 0, 0, 0.08);
235
+ }
236
+
237
+ .mds-liquid-glass--sidebar::before {
238
+ border-radius: 0;
239
+ }
240
+
241
+ .mds-liquid-glass--sidebar:hover {
242
+ transform: none;
243
+ }
244
+
245
+ /* Card */
246
+ .mds-liquid-glass--card {
247
+ background: var(--mds-liquid-bg-light);
248
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
249
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
250
+ padding: 1.5rem;
251
+ }
252
+
253
+ /* Modal */
254
+ .mds-liquid-glass--modal {
255
+ background: var(--mds-liquid-bg-dark);
256
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-vibrant));
257
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-vibrant));
258
+ border-radius: 16px;
259
+ box-shadow: var(--mds-liquid-shadow-elevated), var(--mds-liquid-glow-bright);
260
+ }
261
+
262
+ .mds-liquid-glass--modal::before {
263
+ background: var(--mds-liquid-specular-intense);
264
+ }
265
+
266
+ .mds-liquid-glass--modal:hover {
267
+ transform: none;
268
+ }
269
+
270
+ /* Modal Overlay */
271
+ .mds-liquid-glass--overlay {
272
+ background: var(--mds-liquid-bg-overlay);
273
+ backdrop-filter: blur(var(--mds-liquid-blur-sm));
274
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm));
275
+ border: none;
276
+ border-radius: 0;
277
+ box-shadow: none;
278
+ }
279
+
280
+ .mds-liquid-glass--overlay::before {
281
+ display: none;
282
+ }
283
+
284
+ /* Input */
285
+ .mds-liquid-glass--input {
286
+ background: var(--mds-liquid-bg-light);
287
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
288
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
289
+ border-radius: 8px;
290
+ box-shadow: var(--mds-liquid-shadow-raised);
291
+ padding: 0.75rem 1rem;
292
+ }
293
+
294
+ .mds-liquid-glass--input:focus {
295
+ border-color: var(--mds-liquid-border-bright);
296
+ box-shadow: var(--mds-liquid-shadow-floating), 0 0 0 3px rgba(0, 85, 255, 0.15);
297
+ outline: none;
298
+ }
299
+
300
+ .mds-liquid-glass--input:hover {
301
+ transform: none;
302
+ }
303
+
304
+ /* Button */
305
+ .mds-liquid-glass--button {
306
+ background: var(--mds-liquid-bg-light);
307
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-default));
308
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-default));
309
+ border-radius: 8px;
310
+ box-shadow: var(--mds-liquid-shadow-raised);
311
+ padding: 0.5rem 1rem;
312
+ cursor: pointer;
313
+ transition: var(--mds-liquid-transition-fast);
314
+ }
315
+
316
+ .mds-liquid-glass--button:hover {
317
+ background: var(--mds-liquid-bg-dark);
318
+ border-color: var(--mds-liquid-border-bright);
319
+ transform: translateY(-1px);
320
+ }
321
+
322
+ .mds-liquid-glass--button:active {
323
+ transform: translateY(0);
324
+ box-shadow: var(--mds-liquid-shadow-raised);
325
+ }
326
+
327
+ /* Dropdown */
328
+ .mds-liquid-glass--dropdown {
329
+ background: var(--mds-liquid-bg-dark);
330
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
331
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
332
+ border-radius: 12px;
333
+ box-shadow: var(--mds-liquid-shadow-elevated);
334
+ padding: 0.5rem;
335
+ }
336
+
337
+ .mds-liquid-glass--dropdown:hover {
338
+ transform: none;
339
+ }
340
+
341
+ /* Table */
342
+ .mds-liquid-glass--table {
343
+ background: var(--mds-liquid-bg-light);
344
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
345
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
346
+ border-radius: 12px;
347
+ overflow: hidden;
348
+ }
349
+
350
+ .mds-liquid-glass--table:hover {
351
+ transform: none;
352
+ }
353
+
354
+ /* Footer */
355
+ .mds-liquid-glass--footer {
356
+ background: var(--mds-liquid-bg-light);
357
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
358
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
359
+ border: none;
360
+ border-top: 1px solid var(--mds-liquid-border-subtle);
361
+ border-radius: 0;
362
+ }
363
+
364
+ .mds-liquid-glass--footer::before {
365
+ border-radius: 0;
366
+ }
367
+
368
+ .mds-liquid-glass--footer:hover {
369
+ transform: none;
370
+ }
371
+
372
+ /* TOC (Table of Contents) */
373
+ .mds-liquid-glass--toc {
374
+ background: var(--mds-liquid-bg-light);
375
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-subtle));
376
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-subtle));
377
+ border-radius: 12px;
378
+ padding: 1rem;
379
+ }
380
+
381
+ .mds-liquid-glass--toc:hover {
382
+ transform: none;
383
+ }
384
+
385
+ /* Badge */
386
+ .mds-liquid-glass--badge {
387
+ background: var(--mds-liquid-bg-light);
388
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
389
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
390
+ border-radius: 999px;
391
+ box-shadow: var(--mds-liquid-shadow-raised);
392
+ padding: 0.25rem 0.75rem;
393
+ font-size: 0.75rem;
394
+ }
395
+
396
+ .mds-liquid-glass--badge:hover {
397
+ transform: none;
398
+ }
399
+
400
+
401
+ /* =========================
402
+ Intensity Variants
403
+ ========================= */
404
+
405
+ /* Subtle - less blur, less saturation */
406
+ .mds-liquid-glass--subtle {
407
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
408
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
409
+ box-shadow: var(--mds-liquid-shadow-raised);
410
+ }
411
+
412
+ .mds-liquid-glass--subtle::before {
413
+ opacity: 0.3;
414
+ }
415
+
416
+ /* Vibrant - more blur, more saturation */
417
+ .mds-liquid-glass--vibrant {
418
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-vibrant));
419
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-vibrant));
420
+ box-shadow: var(--mds-liquid-shadow-elevated);
421
+ }
422
+
423
+ .mds-liquid-glass--vibrant::before {
424
+ background: var(--mds-liquid-specular-intense);
425
+ opacity: 0.8;
426
+ }
427
+
428
+
429
+ /* =========================
430
+ Background Utilities
431
+ ========================= */
432
+
433
+ .mds-liquid-bg-gradient {
434
+ background: var(--mds-liquid-gradient-dark) !important;
435
+ background-attachment: fixed !important;
436
+ background-repeat: no-repeat !important;
437
+ background-size: 100% 100% !important;
438
+ }
439
+
440
+ html[data-theme="light"] .mds-liquid-bg-gradient {
441
+ background: var(--mds-liquid-gradient-light) !important;
442
+ }
443
+
444
+
445
+ /* =========================
446
+ Accessibility
447
+ ========================= */
448
+
449
+ /* Reduced motion */
450
+ @media (prefers-reduced-motion: reduce) {
451
+ .mds-liquid-glass,
452
+ .mds-liquid-glass--button,
453
+ .mds-liquid-glass--input {
454
+ transition: none !important;
455
+ }
456
+
457
+ .mds-liquid-glass:hover,
458
+ .mds-liquid-glass--button:hover {
459
+ transform: none !important;
460
+ }
461
+ }
462
+
463
+ /* High contrast */
464
+ @media (prefers-contrast: high) {
465
+ .mds-liquid-glass {
466
+ background: rgba(60, 60, 60, 0.95) !important;
467
+ backdrop-filter: none !important;
468
+ -webkit-backdrop-filter: none !important;
469
+ border: 2px solid rgba(255, 255, 255, 0.5) !important;
470
+ }
471
+
472
+ .mds-liquid-glass::before {
473
+ display: none !important;
474
+ }
475
+
476
+ html[data-theme="light"] .mds-liquid-glass {
477
+ background: rgba(255, 255, 255, 0.95) !important;
478
+ border: 2px solid rgba(0, 0, 0, 0.5) !important;
479
+ }
480
+ }
481
+
482
+
483
+ /* =========================
484
+ Browser Fallback
485
+ ========================= */
486
+
487
+ /* Fallback for browsers without backdrop-filter support */
488
+ @supports not (backdrop-filter: blur(1px)) {
489
+ .mds-liquid-glass {
490
+ background: rgba(30, 30, 30, 0.9);
491
+ }
492
+
493
+ html[data-theme="light"] .mds-liquid-glass {
494
+ background: rgba(255, 255, 255, 0.9);
495
+ }
496
+ }
@@ -2,13 +2,27 @@
2
2
  /* Metropolle Design System Tokens */
3
3
 
4
4
  /* COLORS */
5
- --mds-colors-color-brand-primary: #0055FF;
6
- --mds-colors-color-brand-secondary: #FF9900;
5
+ --mds-colors-color-brand-primary-default: #0055FF;
6
+ --mds-colors-color-brand-primary-hover: #0044CC;
7
+ --mds-colors-color-brand-primary-active: #003399;
8
+ --mds-colors-color-brand-primary-disabled: #80AAFF;
9
+ --mds-colors-color-brand-secondary-default: #FF9900;
10
+ --mds-colors-color-brand-secondary-hover: #E68A00;
11
+ --mds-colors-color-brand-secondary-active: #CC7A00;
12
+ --mds-colors-color-brand-secondary-disabled: #FFCC80;
7
13
  --mds-colors-color-brand-neutral: #333333;
8
- --mds-colors-color-semantic-success: #10B981;
9
- --mds-colors-color-semantic-warning: #F59E0B;
10
- --mds-colors-color-semantic-error: #EF4444;
11
- --mds-colors-color-semantic-info: #3B82F6;
14
+ --mds-colors-color-semantic-success-default: #10B981;
15
+ --mds-colors-color-semantic-success-light: #D1FAE5;
16
+ --mds-colors-color-semantic-success-dark: #065F46;
17
+ --mds-colors-color-semantic-warning-default: #F59E0B;
18
+ --mds-colors-color-semantic-warning-light: #FEF3C7;
19
+ --mds-colors-color-semantic-warning-dark: #92400E;
20
+ --mds-colors-color-semantic-error-default: #EF4444;
21
+ --mds-colors-color-semantic-error-light: #FEE2E2;
22
+ --mds-colors-color-semantic-error-dark: #991B1B;
23
+ --mds-colors-color-semantic-info-default: #3B82F6;
24
+ --mds-colors-color-semantic-info-light: #DBEAFE;
25
+ --mds-colors-color-semantic-info-dark: #1E40AF;
12
26
  --mds-colors-color-background-primary: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
13
27
  --mds-colors-color-background-secondary: rgba(255, 255, 255, 0.05);
14
28
  --mds-colors-color-background-glass-light: rgba(255, 255, 255, 0.15);
@@ -1,23 +1,63 @@
1
1
  import React, { HTMLAttributes } from 'react';
2
+ export type GlassStyle = 'glass' | 'liquid';
3
+ export type GlassIntensity = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export type GlassTheme = 'light' | 'dark';
2
5
  export interface GlassCardProps extends HTMLAttributes<HTMLDivElement> {
3
- /** Variante do glass card */
6
+ /**
7
+ * Estilo do card: 'glass' (tradicional) ou 'liquid' (iOS 26 style)
8
+ * @default 'liquid'
9
+ */
10
+ glassStyle?: GlassStyle;
11
+ /**
12
+ * Intensidade do efeito blur/saturate
13
+ * xs: 2px, sm: 4px, md: 6px (default), lg: 8px, xl: 12px
14
+ * @default 'md'
15
+ */
16
+ intensity?: GlassIntensity;
17
+ /**
18
+ * Tema de cor: afeta opacidade e bordas
19
+ * @default 'light'
20
+ */
21
+ theme?: GlassTheme;
22
+ /**
23
+ * @deprecated Use 'theme' instead. Mantido para retrocompatibilidade.
24
+ */
4
25
  variant?: 'light' | 'dark';
5
- /** Valor do blur em pixels */
26
+ /**
27
+ * @deprecated Use 'intensity' instead. Valor do blur em pixels.
28
+ */
6
29
  blur?: number;
7
- /** Opacidade do background (0-1) */
30
+ /**
31
+ * Opacidade do background (0-1). Sobrescreve valor default do theme.
32
+ */
8
33
  opacity?: number;
9
34
  /** Conteúdo do card */
10
35
  children: React.ReactNode;
11
36
  /** Classes CSS adicionais */
12
37
  className?: string;
13
- /** Se deve aplicar hover effects */
38
+ /**
39
+ * Se deve aplicar hover effects
40
+ * @default true
41
+ */
14
42
  enableHover?: boolean;
15
43
  }
16
44
  /**
17
45
  * Glass Card Component
18
46
  *
19
- * Componente de cartão com efeito glassmorphism baseado na identidade Metropolle.
20
- * Migrado dos componentes Angular existentes com melhorias.
47
+ * Componente de cartão com efeito glassmorphism ou Liquid Glass (iOS 26 style).
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * // Liquid Glass (novo padrão)
52
+ * <GlassCard glassStyle="liquid" intensity="md">
53
+ * Content here
54
+ * </GlassCard>
55
+ *
56
+ * // Glassmorphism tradicional (retrocompatível)
57
+ * <GlassCard glassStyle="glass" variant="dark">
58
+ * Content here
59
+ * </GlassCard>
60
+ * ```
21
61
  */
22
62
  export declare const GlassCard: React.ForwardRefExoticComponent<GlassCardProps & React.RefAttributes<HTMLDivElement>>;
23
63
  //# sourceMappingURL=GlassCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlassCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/GlassCard/GlassCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,cAAc,EAAE,MAAM,OAAO,CAAC;AAG1D,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,uFAwFpB,CAAC"}
1
+ {"version":3,"file":"GlassCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/GlassCard/GlassCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,cAAc,EAAE,MAAM,OAAO,CAAC;AAG1D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC5C,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS,uFA4HpB,CAAC"}