@metropolle/design-system 1.0.0-beta.2025.10.24.1740.ba2b09b → 1.0.0-beta.2025.12.11.1425.3d956d0

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,467 @@
1
+ /* ============================================
2
+ Metropolle Design System - Liquid Glass CSS
3
+ Apple iOS 26 Liquid Glass Style
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
+ /* Status Colors */
26
+ --mds-color-success: #10b981;
27
+ --mds-color-warning: #f59e0b;
28
+ --mds-color-error: #ef4444;
29
+ --mds-color-info: #3b82f6;
30
+ }
31
+
32
+ /* =========================
33
+ Dark Theme (Default)
34
+ ========================= */
35
+ :root,
36
+ html[data-theme="dark"] {
37
+ /* Semantic Colors */
38
+ --mds-color-text-primary: #ffffff;
39
+ --mds-color-text-secondary: rgba(255, 255, 255, 0.7);
40
+ --mds-color-text-tertiary: rgba(255, 255, 255, 0.5);
41
+ --mds-color-background-primary: #0f0f0f;
42
+ --mds-color-background-secondary: #1a1a1a;
43
+ --mds-color-background-tertiary: #2a2a2a;
44
+ --mds-color-border-default: rgba(255, 255, 255, 0.15);
45
+ --mds-color-border-light: rgba(255, 255, 255, 0.08);
46
+
47
+ /* Scrollbar */
48
+ --mds-scrollbar-track: rgba(40, 40, 40, 0.8);
49
+ --mds-scrollbar-thumb: rgba(80, 80, 80, 0.8);
50
+ --mds-scrollbar-thumb-hover: rgba(100, 100, 100, 0.8);
51
+
52
+ /* =========================
53
+ Liquid Glass Tokens - iOS 26 Style
54
+ ========================= */
55
+
56
+ /* Blur tokens - Increased for more glass-like effect */
57
+ --mds-liquid-blur-xs: 4px;
58
+ --mds-liquid-blur-sm: 8px;
59
+ --mds-liquid-blur-md: 12px;
60
+ --mds-liquid-blur-lg: 16px;
61
+ --mds-liquid-blur-xl: 24px;
62
+
63
+ /* Saturate tokens - Subtle per Apple guidelines */
64
+ --mds-liquid-saturate-subtle: 105%;
65
+ --mds-liquid-saturate-default: 120%;
66
+ --mds-liquid-saturate-vibrant: 140%;
67
+
68
+ /* Background tokens - True glass transparency */
69
+ --mds-liquid-bg-glass: rgba(255, 255, 255, 0.08);
70
+ --mds-liquid-bg-glass-thick: rgba(255, 255, 255, 0.12);
71
+ --mds-liquid-bg-overlay: rgba(0, 0, 0, 0.4);
72
+ --mds-liquid-bg-sidebar: rgba(0, 0, 0, 0.35);
73
+ --mds-liquid-bg-navbar: rgba(0, 0, 0, 0.4);
74
+ --mds-liquid-bg-card: rgba(255, 255, 255, 0.06);
75
+ --mds-liquid-bg-input: rgba(255, 255, 255, 0.08);
76
+ --mds-liquid-bg-button: rgba(255, 255, 255, 0.1);
77
+ --mds-liquid-bg-button-hover: rgba(255, 255, 255, 0.15);
78
+
79
+ /* Border tokens - Subtle glass edges */
80
+ --mds-liquid-border-subtle: rgba(255, 255, 255, 0.12);
81
+ --mds-liquid-border-default: rgba(255, 255, 255, 0.18);
82
+ --mds-liquid-border-bright: rgba(255, 255, 255, 0.25);
83
+
84
+ /* Shadow tokens - Deeper for lifted effect */
85
+ --mds-liquid-shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.2);
86
+ --mds-liquid-shadow-floating: 0 8px 24px rgba(0, 0, 0, 0.25);
87
+ --mds-liquid-shadow-elevated: 0 12px 40px rgba(0, 0, 0, 0.3);
88
+ --mds-liquid-shadow-dramatic: 0 16px 56px rgba(0, 0, 0, 0.4);
89
+
90
+ /* Inner glow - Top edge highlight */
91
+ --mds-liquid-glow-edge: inset 0 1px 0 rgba(255, 255, 255, 0.1);
92
+ --mds-liquid-glow-soft: inset 0 1px 1px rgba(255, 255, 255, 0.08);
93
+
94
+ /* Specular highlight - More dramatic top-left shine */
95
+ --mds-liquid-specular: linear-gradient(
96
+ 145deg,
97
+ rgba(255, 255, 255, 0.15) 0%,
98
+ rgba(255, 255, 255, 0.05) 25%,
99
+ rgba(255, 255, 255, 0) 50%
100
+ );
101
+ --mds-liquid-specular-intense: linear-gradient(
102
+ 145deg,
103
+ rgba(255, 255, 255, 0.25) 0%,
104
+ rgba(255, 255, 255, 0.08) 30%,
105
+ rgba(255, 255, 255, 0) 60%
106
+ );
107
+
108
+ /* Transitions */
109
+ --mds-liquid-transition: all 0.25s cubic-bezier(0.25, 0.1, 0.25, 1);
110
+ --mds-liquid-transition-fast: all 0.15s cubic-bezier(0.25, 0.1, 0.25, 1);
111
+ --mds-liquid-transition-slow: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);
112
+
113
+ /* Background gradient */
114
+ --mds-liquid-gradient: linear-gradient(180deg, #0a0a0a 0%, #1a1a1a 100%);
115
+ }
116
+
117
+ /* =========================
118
+ Light Theme
119
+ ========================= */
120
+ html[data-theme="light"] {
121
+ /* Semantic Colors */
122
+ --mds-color-text-primary: #1a1a1a;
123
+ --mds-color-text-secondary: rgba(0, 0, 0, 0.6);
124
+ --mds-color-text-tertiary: rgba(0, 0, 0, 0.4);
125
+ --mds-color-background-primary: #f8f9fa;
126
+ --mds-color-background-secondary: #ffffff;
127
+ --mds-color-background-tertiary: #f0f0f0;
128
+ --mds-color-border-default: rgba(0, 0, 0, 0.08);
129
+ --mds-color-border-light: rgba(0, 0, 0, 0.04);
130
+
131
+ /* Scrollbar */
132
+ --mds-scrollbar-track: rgba(0, 0, 0, 0.05);
133
+ --mds-scrollbar-thumb: rgba(0, 0, 0, 0.2);
134
+ --mds-scrollbar-thumb-hover: rgba(0, 0, 0, 0.3);
135
+
136
+ /* Liquid Glass - Light mode uses darker glass for contrast */
137
+ --mds-liquid-bg-glass: rgba(255, 255, 255, 0.7);
138
+ --mds-liquid-bg-glass-thick: rgba(255, 255, 255, 0.85);
139
+ --mds-liquid-bg-overlay: rgba(255, 255, 255, 0.6);
140
+ --mds-liquid-bg-sidebar: rgba(255, 255, 255, 0.75);
141
+ --mds-liquid-bg-navbar: rgba(255, 255, 255, 0.8);
142
+ --mds-liquid-bg-card: rgba(255, 255, 255, 0.6);
143
+ --mds-liquid-bg-input: rgba(255, 255, 255, 0.9);
144
+ --mds-liquid-bg-button: rgba(0, 0, 0, 0.04);
145
+ --mds-liquid-bg-button-hover: rgba(0, 0, 0, 0.08);
146
+
147
+ /* Borders - Subtle dark edges */
148
+ --mds-liquid-border-subtle: rgba(0, 0, 0, 0.06);
149
+ --mds-liquid-border-default: rgba(0, 0, 0, 0.1);
150
+ --mds-liquid-border-bright: rgba(0, 0, 0, 0.15);
151
+
152
+ /* Shadows - Softer for light mode */
153
+ --mds-liquid-shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.06);
154
+ --mds-liquid-shadow-floating: 0 8px 24px rgba(0, 0, 0, 0.1);
155
+ --mds-liquid-shadow-elevated: 0 12px 40px rgba(0, 0, 0, 0.12);
156
+ --mds-liquid-shadow-dramatic: 0 16px 56px rgba(0, 0, 0, 0.15);
157
+
158
+ /* Inner glow - Subtle white edge */
159
+ --mds-liquid-glow-edge: inset 0 1px 0 rgba(255, 255, 255, 0.8);
160
+ --mds-liquid-glow-soft: inset 0 1px 1px rgba(255, 255, 255, 0.5);
161
+
162
+ /* Specular - Brighter for light mode */
163
+ --mds-liquid-specular: linear-gradient(
164
+ 145deg,
165
+ rgba(255, 255, 255, 0.6) 0%,
166
+ rgba(255, 255, 255, 0.2) 25%,
167
+ rgba(255, 255, 255, 0) 50%
168
+ );
169
+ --mds-liquid-specular-intense: linear-gradient(
170
+ 145deg,
171
+ rgba(255, 255, 255, 0.8) 0%,
172
+ rgba(255, 255, 255, 0.3) 30%,
173
+ rgba(255, 255, 255, 0) 60%
174
+ );
175
+
176
+ /* Background gradient */
177
+ --mds-liquid-gradient: linear-gradient(180deg, #f0f2f5 0%, #e4e6e9 100%);
178
+ }
179
+
180
+
181
+ /* =========================
182
+ Base Liquid Glass Class
183
+ ========================= */
184
+
185
+ .mds-liquid-glass {
186
+ position: relative;
187
+ background: var(--mds-liquid-bg-glass);
188
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
189
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
190
+ border: 1px solid var(--mds-liquid-border-subtle);
191
+ border-radius: 16px;
192
+ box-shadow: var(--mds-liquid-shadow-floating), var(--mds-liquid-glow-edge);
193
+ transition: var(--mds-liquid-transition);
194
+ overflow: hidden;
195
+ }
196
+
197
+ /* Specular highlight via pseudo-element */
198
+ .mds-liquid-glass::before {
199
+ content: '';
200
+ position: absolute;
201
+ inset: 0;
202
+ background: var(--mds-liquid-specular);
203
+ border-radius: inherit;
204
+ pointer-events: none;
205
+ z-index: 0;
206
+ }
207
+
208
+ /* Content should be above the specular */
209
+ .mds-liquid-glass > * {
210
+ position: relative;
211
+ z-index: 1;
212
+ }
213
+
214
+ /* Hover state - subtle brightness increase */
215
+ .mds-liquid-glass:hover {
216
+ border-color: var(--mds-liquid-border-bright);
217
+ box-shadow: var(--mds-liquid-shadow-elevated), var(--mds-liquid-glow-edge);
218
+ }
219
+
220
+ /* No-hover variant */
221
+ .mds-liquid-glass--no-hover,
222
+ .mds-liquid-glass--no-hover:hover {
223
+ border-color: var(--mds-liquid-border-subtle);
224
+ box-shadow: var(--mds-liquid-shadow-floating), var(--mds-liquid-glow-edge);
225
+ }
226
+
227
+
228
+ /* =========================
229
+ Size Variants
230
+ ========================= */
231
+
232
+ .mds-liquid-glass--xs {
233
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
234
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
235
+ border-radius: 8px;
236
+ }
237
+
238
+ .mds-liquid-glass--sm {
239
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
240
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
241
+ border-radius: 12px;
242
+ }
243
+
244
+ .mds-liquid-glass--lg {
245
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
246
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
247
+ border-radius: 20px;
248
+ }
249
+
250
+ .mds-liquid-glass--xl {
251
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
252
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
253
+ border-radius: 24px;
254
+ }
255
+
256
+
257
+ /* =========================
258
+ Element-Specific Classes
259
+ ========================= */
260
+
261
+ /* Navbar */
262
+ .mds-liquid-glass--navbar {
263
+ background: var(--mds-liquid-bg-navbar);
264
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
265
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
266
+ border: none;
267
+ border-bottom: 1px solid var(--mds-liquid-border-subtle);
268
+ border-radius: 0;
269
+ box-shadow: var(--mds-liquid-shadow-raised);
270
+ }
271
+
272
+ .mds-liquid-glass--navbar::before {
273
+ border-radius: 0;
274
+ }
275
+
276
+ .mds-liquid-glass--navbar:hover {
277
+ box-shadow: var(--mds-liquid-shadow-raised);
278
+ }
279
+
280
+ /* Sidebar */
281
+ .mds-liquid-glass--sidebar {
282
+ background: var(--mds-liquid-bg-sidebar);
283
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-default));
284
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-default));
285
+ border: none;
286
+ border-right: 1px solid var(--mds-liquid-border-subtle);
287
+ border-radius: 0;
288
+ box-shadow: var(--mds-liquid-shadow-raised);
289
+ }
290
+
291
+ .mds-liquid-glass--sidebar::before {
292
+ border-radius: 0;
293
+ }
294
+
295
+ /* Card */
296
+ .mds-liquid-glass--card {
297
+ background: var(--mds-liquid-bg-card);
298
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
299
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
300
+ padding: 1.5rem;
301
+ }
302
+
303
+ /* Modal */
304
+ .mds-liquid-glass--modal {
305
+ background: var(--mds-liquid-bg-glass-thick);
306
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
307
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
308
+ border-radius: 20px;
309
+ box-shadow: var(--mds-liquid-shadow-dramatic), var(--mds-liquid-glow-edge);
310
+ }
311
+
312
+ .mds-liquid-glass--modal::before {
313
+ background: var(--mds-liquid-specular-intense);
314
+ }
315
+
316
+ /* Modal Overlay */
317
+ .mds-liquid-glass--overlay {
318
+ background: var(--mds-liquid-bg-overlay);
319
+ backdrop-filter: blur(var(--mds-liquid-blur-sm));
320
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm));
321
+ border: none;
322
+ border-radius: 0;
323
+ box-shadow: none;
324
+ }
325
+
326
+ .mds-liquid-glass--overlay::before {
327
+ display: none;
328
+ }
329
+
330
+ /* Input */
331
+ .mds-liquid-glass--input {
332
+ background: var(--mds-liquid-bg-input);
333
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
334
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
335
+ border-radius: 10px;
336
+ box-shadow: var(--mds-liquid-glow-soft);
337
+ padding: 0.75rem 1rem;
338
+ }
339
+
340
+ .mds-liquid-glass--input:focus {
341
+ border-color: var(--mds-color-brand-primary);
342
+ box-shadow: var(--mds-liquid-glow-soft), 0 0 0 3px rgba(0, 85, 255, 0.2);
343
+ outline: none;
344
+ }
345
+
346
+ /* Button */
347
+ .mds-liquid-glass--button {
348
+ background: var(--mds-liquid-bg-button);
349
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-default));
350
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-default));
351
+ border-radius: 10px;
352
+ box-shadow: var(--mds-liquid-shadow-raised), var(--mds-liquid-glow-soft);
353
+ padding: 0.5rem 1rem;
354
+ cursor: pointer;
355
+ transition: var(--mds-liquid-transition-fast);
356
+ }
357
+
358
+ .mds-liquid-glass--button:hover {
359
+ background: var(--mds-liquid-bg-button-hover);
360
+ border-color: var(--mds-liquid-border-bright);
361
+ }
362
+
363
+ .mds-liquid-glass--button:active {
364
+ box-shadow: var(--mds-liquid-glow-soft);
365
+ }
366
+
367
+ /* Dropdown */
368
+ .mds-liquid-glass--dropdown {
369
+ background: var(--mds-liquid-bg-glass-thick);
370
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
371
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
372
+ border-radius: 14px;
373
+ box-shadow: var(--mds-liquid-shadow-elevated);
374
+ padding: 0.5rem;
375
+ }
376
+
377
+ /* Table */
378
+ .mds-liquid-glass--table {
379
+ background: var(--mds-liquid-bg-glass);
380
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
381
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
382
+ border-radius: 16px;
383
+ overflow: hidden;
384
+ }
385
+
386
+ /* Footer */
387
+ .mds-liquid-glass--footer {
388
+ background: var(--mds-liquid-bg-navbar);
389
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
390
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
391
+ border: none;
392
+ border-top: 1px solid var(--mds-liquid-border-subtle);
393
+ border-radius: 0;
394
+ }
395
+
396
+ .mds-liquid-glass--footer::before {
397
+ border-radius: 0;
398
+ }
399
+
400
+ /* TOC (Table of Contents) */
401
+ .mds-liquid-glass--toc {
402
+ background: var(--mds-liquid-bg-card);
403
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-subtle));
404
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-subtle));
405
+ border-radius: 14px;
406
+ padding: 1rem;
407
+ }
408
+
409
+ /* Badge */
410
+ .mds-liquid-glass--badge {
411
+ background: var(--mds-liquid-bg-button);
412
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
413
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
414
+ border-radius: 999px;
415
+ box-shadow: var(--mds-liquid-shadow-raised);
416
+ padding: 0.25rem 0.75rem;
417
+ font-size: 0.75rem;
418
+ }
419
+
420
+
421
+ /* =========================
422
+ Background Utilities
423
+ ========================= */
424
+
425
+ .mds-liquid-bg-gradient {
426
+ background: var(--mds-liquid-gradient) !important;
427
+ background-attachment: fixed !important;
428
+ }
429
+
430
+
431
+ /* =========================
432
+ Accessibility
433
+ ========================= */
434
+
435
+ /* Reduced motion */
436
+ @media (prefers-reduced-motion: reduce) {
437
+ .mds-liquid-glass,
438
+ .mds-liquid-glass--button,
439
+ .mds-liquid-glass--input {
440
+ transition: none !important;
441
+ }
442
+ }
443
+
444
+ /* High contrast */
445
+ @media (prefers-contrast: high) {
446
+ .mds-liquid-glass {
447
+ background: var(--mds-color-background-secondary) !important;
448
+ backdrop-filter: none !important;
449
+ -webkit-backdrop-filter: none !important;
450
+ border: 2px solid var(--mds-color-text-primary) !important;
451
+ }
452
+
453
+ .mds-liquid-glass::before {
454
+ display: none !important;
455
+ }
456
+ }
457
+
458
+
459
+ /* =========================
460
+ Browser Fallback
461
+ ========================= */
462
+
463
+ @supports not (backdrop-filter: blur(1px)) {
464
+ .mds-liquid-glass {
465
+ background: var(--mds-color-background-secondary);
466
+ }
467
+ }
@@ -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"}