@metropolle/design-system 1.0.0-beta.20250821024300.dfbe136 → 1.0.0-beta.2026.1.1.1723.0f6bc6d

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.
Files changed (57) hide show
  1. package/README.md +1 -0
  2. package/dist/css/compat/back.css +466 -0
  3. package/dist/css/components.css +1476 -8
  4. package/dist/css/liquid-glass.css +468 -0
  5. package/dist/css/mermaid.css +163 -0
  6. package/dist/css/tokens.css +67 -0
  7. package/dist/react/components/react/DataTable/DataTable.d.ts +4 -0
  8. package/dist/react/components/react/DataTable/DataTable.d.ts.map +1 -0
  9. package/dist/react/components/react/DataTable/TableHeader.d.ts +4 -0
  10. package/dist/react/components/react/DataTable/TableHeader.d.ts.map +1 -0
  11. package/dist/react/components/react/DataTable/TableRow.d.ts +4 -0
  12. package/dist/react/components/react/DataTable/TableRow.d.ts.map +1 -0
  13. package/dist/react/components/react/DataTable/examples.d.ts +28 -0
  14. package/dist/react/components/react/DataTable/examples.d.ts.map +1 -0
  15. package/dist/react/components/react/DataTable/index.d.ts +7 -0
  16. package/dist/react/components/react/DataTable/index.d.ts.map +1 -0
  17. package/dist/react/components/react/DataTable/migration-example.d.ts +46 -0
  18. package/dist/react/components/react/DataTable/migration-example.d.ts.map +1 -0
  19. package/dist/react/components/react/DataTable/renderers.d.ts +24 -0
  20. package/dist/react/components/react/DataTable/renderers.d.ts.map +1 -0
  21. package/dist/react/components/react/DataTable/types.d.ts +57 -0
  22. package/dist/react/components/react/DataTable/types.d.ts.map +1 -0
  23. package/dist/react/components/react/GlassCard/GlassCard.d.ts +46 -6
  24. package/dist/react/components/react/GlassCard/GlassCard.d.ts.map +1 -1
  25. package/dist/react/components/react/Modal/ConfirmDialog.d.ts +17 -0
  26. package/dist/react/components/react/Modal/ConfirmDialog.d.ts.map +1 -0
  27. package/dist/react/components/react/Modal/Modal.d.ts +12 -0
  28. package/dist/react/components/react/Modal/Modal.d.ts.map +1 -0
  29. package/dist/react/components/react/Modal/ModalBody.d.ts +9 -0
  30. package/dist/react/components/react/Modal/ModalBody.d.ts.map +1 -0
  31. package/dist/react/components/react/Modal/ModalFooter.d.ts +8 -0
  32. package/dist/react/components/react/Modal/ModalFooter.d.ts.map +1 -0
  33. package/dist/react/components/react/Modal/ModalHeader.d.ts +11 -0
  34. package/dist/react/components/react/Modal/ModalHeader.d.ts.map +1 -0
  35. package/dist/react/components/react/Modal/index.d.ts +6 -0
  36. package/dist/react/components/react/Modal/index.d.ts.map +1 -0
  37. package/dist/react/components/react/Select/Select.d.ts +71 -0
  38. package/dist/react/components/react/Select/Select.d.ts.map +1 -0
  39. package/dist/react/components/react/Select/index.d.ts +2 -0
  40. package/dist/react/components/react/Select/index.d.ts.map +1 -0
  41. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts +28 -0
  42. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts.map +1 -0
  43. package/dist/react/components/react/ThemeToggle/index.d.ts +3 -0
  44. package/dist/react/components/react/ThemeToggle/index.d.ts.map +1 -0
  45. package/dist/react/components/react/Typography/Typography.d.ts.map +1 -1
  46. package/dist/react/components/react/index.d.ts +11 -0
  47. package/dist/react/components/react/index.d.ts.map +1 -1
  48. package/dist/react/index.d.ts +11 -0
  49. package/dist/react/index.esm.js +1147 -14
  50. package/dist/react/index.esm.js.map +1 -1
  51. package/dist/react/index.js +1164 -12
  52. package/dist/react/index.js.map +1 -1
  53. package/dist/tokens/colors.json +100 -18
  54. package/dist/tokens/index.d.ts +19 -24
  55. package/dist/tokens/index.js +69 -2
  56. package/dist/tokens/index.json +100 -18
  57. package/package.json +23 -13
@@ -0,0 +1,468 @@
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
+ --mds-color-accent: #a855f7;
31
+ }
32
+
33
+ /* =========================
34
+ Dark Theme (Default)
35
+ ========================= */
36
+ :root,
37
+ html[data-theme="dark"] {
38
+ /* Semantic Colors */
39
+ --mds-color-text-primary: #ffffff;
40
+ --mds-color-text-secondary: rgba(255, 255, 255, 0.7);
41
+ --mds-color-text-tertiary: rgba(255, 255, 255, 0.5);
42
+ --mds-color-background-primary: #0f0f0f;
43
+ --mds-color-background-secondary: #1a1a1a;
44
+ --mds-color-background-tertiary: #2a2a2a;
45
+ --mds-color-border-default: rgba(255, 255, 255, 0.15);
46
+ --mds-color-border-light: rgba(255, 255, 255, 0.08);
47
+
48
+ /* Scrollbar */
49
+ --mds-scrollbar-track: rgba(40, 40, 40, 0.8);
50
+ --mds-scrollbar-thumb: rgba(80, 80, 80, 0.8);
51
+ --mds-scrollbar-thumb-hover: rgba(100, 100, 100, 0.8);
52
+
53
+ /* =========================
54
+ Liquid Glass Tokens - iOS 26 Style
55
+ ========================= */
56
+
57
+ /* Blur tokens - Increased for more glass-like effect */
58
+ --mds-liquid-blur-xs: 4px;
59
+ --mds-liquid-blur-sm: 8px;
60
+ --mds-liquid-blur-md: 12px;
61
+ --mds-liquid-blur-lg: 16px;
62
+ --mds-liquid-blur-xl: 24px;
63
+
64
+ /* Saturate tokens - Subtle per Apple guidelines */
65
+ --mds-liquid-saturate-subtle: 105%;
66
+ --mds-liquid-saturate-default: 120%;
67
+ --mds-liquid-saturate-vibrant: 140%;
68
+
69
+ /* Background tokens - True glass transparency */
70
+ --mds-liquid-bg-glass: rgba(255, 255, 255, 0.08);
71
+ --mds-liquid-bg-glass-thick: rgba(255, 255, 255, 0.12);
72
+ --mds-liquid-bg-overlay: rgba(0, 0, 0, 0.4);
73
+ --mds-liquid-bg-sidebar: rgba(0, 0, 0, 0.35);
74
+ --mds-liquid-bg-navbar: rgba(0, 0, 0, 0.4);
75
+ --mds-liquid-bg-card: rgba(255, 255, 255, 0.06);
76
+ --mds-liquid-bg-input: rgba(255, 255, 255, 0.08);
77
+ --mds-liquid-bg-button: rgba(255, 255, 255, 0.1);
78
+ --mds-liquid-bg-button-hover: rgba(255, 255, 255, 0.15);
79
+
80
+ /* Border tokens - Subtle glass edges */
81
+ --mds-liquid-border-subtle: rgba(255, 255, 255, 0.12);
82
+ --mds-liquid-border-default: rgba(255, 255, 255, 0.18);
83
+ --mds-liquid-border-bright: rgba(255, 255, 255, 0.25);
84
+
85
+ /* Shadow tokens - Deeper for lifted effect */
86
+ --mds-liquid-shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.2);
87
+ --mds-liquid-shadow-floating: 0 8px 24px rgba(0, 0, 0, 0.25);
88
+ --mds-liquid-shadow-elevated: 0 12px 40px rgba(0, 0, 0, 0.3);
89
+ --mds-liquid-shadow-dramatic: 0 16px 56px rgba(0, 0, 0, 0.4);
90
+
91
+ /* Inner glow - Top edge highlight */
92
+ --mds-liquid-glow-edge: inset 0 1px 0 rgba(255, 255, 255, 0.1);
93
+ --mds-liquid-glow-soft: inset 0 1px 1px rgba(255, 255, 255, 0.08);
94
+
95
+ /* Specular highlight - More dramatic top-left shine */
96
+ --mds-liquid-specular: linear-gradient(
97
+ 145deg,
98
+ rgba(255, 255, 255, 0.15) 0%,
99
+ rgba(255, 255, 255, 0.05) 25%,
100
+ rgba(255, 255, 255, 0) 50%
101
+ );
102
+ --mds-liquid-specular-intense: linear-gradient(
103
+ 145deg,
104
+ rgba(255, 255, 255, 0.25) 0%,
105
+ rgba(255, 255, 255, 0.08) 30%,
106
+ rgba(255, 255, 255, 0) 60%
107
+ );
108
+
109
+ /* Transitions */
110
+ --mds-liquid-transition: all 0.25s cubic-bezier(0.25, 0.1, 0.25, 1);
111
+ --mds-liquid-transition-fast: all 0.15s cubic-bezier(0.25, 0.1, 0.25, 1);
112
+ --mds-liquid-transition-slow: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);
113
+
114
+ /* Background gradient */
115
+ --mds-liquid-gradient: linear-gradient(180deg, #0a0a0a 0%, #1a1a1a 100%);
116
+ }
117
+
118
+ /* =========================
119
+ Light Theme
120
+ ========================= */
121
+ html[data-theme="light"] {
122
+ /* Semantic Colors */
123
+ --mds-color-text-primary: #1a1a1a;
124
+ --mds-color-text-secondary: rgba(0, 0, 0, 0.6);
125
+ --mds-color-text-tertiary: rgba(0, 0, 0, 0.4);
126
+ --mds-color-background-primary: #f8f9fa;
127
+ --mds-color-background-secondary: #ffffff;
128
+ --mds-color-background-tertiary: #f0f0f0;
129
+ --mds-color-border-default: rgba(0, 0, 0, 0.08);
130
+ --mds-color-border-light: rgba(0, 0, 0, 0.04);
131
+
132
+ /* Scrollbar */
133
+ --mds-scrollbar-track: rgba(0, 0, 0, 0.05);
134
+ --mds-scrollbar-thumb: rgba(0, 0, 0, 0.2);
135
+ --mds-scrollbar-thumb-hover: rgba(0, 0, 0, 0.3);
136
+
137
+ /* Liquid Glass - Light mode uses darker glass for contrast */
138
+ --mds-liquid-bg-glass: rgba(255, 255, 255, 0.7);
139
+ --mds-liquid-bg-glass-thick: rgba(255, 255, 255, 0.85);
140
+ --mds-liquid-bg-overlay: rgba(255, 255, 255, 0.6);
141
+ --mds-liquid-bg-sidebar: rgba(255, 255, 255, 0.75);
142
+ --mds-liquid-bg-navbar: rgba(255, 255, 255, 0.8);
143
+ --mds-liquid-bg-card: rgba(255, 255, 255, 0.6);
144
+ --mds-liquid-bg-input: rgba(255, 255, 255, 0.9);
145
+ --mds-liquid-bg-button: rgba(0, 0, 0, 0.04);
146
+ --mds-liquid-bg-button-hover: rgba(0, 0, 0, 0.08);
147
+
148
+ /* Borders - Subtle dark edges */
149
+ --mds-liquid-border-subtle: rgba(0, 0, 0, 0.06);
150
+ --mds-liquid-border-default: rgba(0, 0, 0, 0.1);
151
+ --mds-liquid-border-bright: rgba(0, 0, 0, 0.15);
152
+
153
+ /* Shadows - Softer for light mode */
154
+ --mds-liquid-shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.06);
155
+ --mds-liquid-shadow-floating: 0 8px 24px rgba(0, 0, 0, 0.1);
156
+ --mds-liquid-shadow-elevated: 0 12px 40px rgba(0, 0, 0, 0.12);
157
+ --mds-liquid-shadow-dramatic: 0 16px 56px rgba(0, 0, 0, 0.15);
158
+
159
+ /* Inner glow - Subtle white edge */
160
+ --mds-liquid-glow-edge: inset 0 1px 0 rgba(255, 255, 255, 0.8);
161
+ --mds-liquid-glow-soft: inset 0 1px 1px rgba(255, 255, 255, 0.5);
162
+
163
+ /* Specular - Brighter for light mode */
164
+ --mds-liquid-specular: linear-gradient(
165
+ 145deg,
166
+ rgba(255, 255, 255, 0.6) 0%,
167
+ rgba(255, 255, 255, 0.2) 25%,
168
+ rgba(255, 255, 255, 0) 50%
169
+ );
170
+ --mds-liquid-specular-intense: linear-gradient(
171
+ 145deg,
172
+ rgba(255, 255, 255, 0.8) 0%,
173
+ rgba(255, 255, 255, 0.3) 30%,
174
+ rgba(255, 255, 255, 0) 60%
175
+ );
176
+
177
+ /* Background gradient */
178
+ --mds-liquid-gradient: linear-gradient(180deg, #f0f2f5 0%, #e4e6e9 100%);
179
+ }
180
+
181
+
182
+ /* =========================
183
+ Base Liquid Glass Class
184
+ ========================= */
185
+
186
+ .mds-liquid-glass {
187
+ position: relative;
188
+ background: var(--mds-liquid-bg-glass);
189
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
190
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
191
+ border: 1px solid var(--mds-liquid-border-subtle);
192
+ border-radius: 16px;
193
+ box-shadow: var(--mds-liquid-shadow-floating), var(--mds-liquid-glow-edge);
194
+ transition: var(--mds-liquid-transition);
195
+ overflow: hidden;
196
+ }
197
+
198
+ /* Specular highlight via pseudo-element */
199
+ .mds-liquid-glass::before {
200
+ content: '';
201
+ position: absolute;
202
+ inset: 0;
203
+ background: var(--mds-liquid-specular);
204
+ border-radius: inherit;
205
+ pointer-events: none;
206
+ z-index: 0;
207
+ }
208
+
209
+ /* Content should be above the specular */
210
+ .mds-liquid-glass > * {
211
+ position: relative;
212
+ z-index: 1;
213
+ }
214
+
215
+ /* Hover state - subtle brightness increase */
216
+ .mds-liquid-glass:hover {
217
+ border-color: var(--mds-liquid-border-bright);
218
+ box-shadow: var(--mds-liquid-shadow-elevated), var(--mds-liquid-glow-edge);
219
+ }
220
+
221
+ /* No-hover variant */
222
+ .mds-liquid-glass--no-hover,
223
+ .mds-liquid-glass--no-hover:hover {
224
+ border-color: var(--mds-liquid-border-subtle);
225
+ box-shadow: var(--mds-liquid-shadow-floating), var(--mds-liquid-glow-edge);
226
+ }
227
+
228
+
229
+ /* =========================
230
+ Size Variants
231
+ ========================= */
232
+
233
+ .mds-liquid-glass--xs {
234
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
235
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
236
+ border-radius: 8px;
237
+ }
238
+
239
+ .mds-liquid-glass--sm {
240
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
241
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
242
+ border-radius: 12px;
243
+ }
244
+
245
+ .mds-liquid-glass--lg {
246
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
247
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
248
+ border-radius: 20px;
249
+ }
250
+
251
+ .mds-liquid-glass--xl {
252
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
253
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
254
+ border-radius: 24px;
255
+ }
256
+
257
+
258
+ /* =========================
259
+ Element-Specific Classes
260
+ ========================= */
261
+
262
+ /* Navbar */
263
+ .mds-liquid-glass--navbar {
264
+ background: var(--mds-liquid-bg-navbar);
265
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
266
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
267
+ border: none;
268
+ border-bottom: 1px solid var(--mds-liquid-border-subtle);
269
+ border-radius: 0;
270
+ box-shadow: var(--mds-liquid-shadow-raised);
271
+ }
272
+
273
+ .mds-liquid-glass--navbar::before {
274
+ border-radius: 0;
275
+ }
276
+
277
+ .mds-liquid-glass--navbar:hover {
278
+ box-shadow: var(--mds-liquid-shadow-raised);
279
+ }
280
+
281
+ /* Sidebar */
282
+ .mds-liquid-glass--sidebar {
283
+ background: var(--mds-liquid-bg-sidebar);
284
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-default));
285
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-default));
286
+ border: none;
287
+ border-right: 1px solid var(--mds-liquid-border-subtle);
288
+ border-radius: 0;
289
+ box-shadow: var(--mds-liquid-shadow-raised);
290
+ }
291
+
292
+ .mds-liquid-glass--sidebar::before {
293
+ border-radius: 0;
294
+ }
295
+
296
+ /* Card */
297
+ .mds-liquid-glass--card {
298
+ background: var(--mds-liquid-bg-card);
299
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
300
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-default));
301
+ padding: 1.5rem;
302
+ }
303
+
304
+ /* Modal */
305
+ .mds-liquid-glass--modal {
306
+ background: var(--mds-liquid-bg-glass-thick);
307
+ backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
308
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xl)) saturate(var(--mds-liquid-saturate-vibrant));
309
+ border-radius: 20px;
310
+ box-shadow: var(--mds-liquid-shadow-dramatic), var(--mds-liquid-glow-edge);
311
+ }
312
+
313
+ .mds-liquid-glass--modal::before {
314
+ background: var(--mds-liquid-specular-intense);
315
+ }
316
+
317
+ /* Modal Overlay */
318
+ .mds-liquid-glass--overlay {
319
+ background: var(--mds-liquid-bg-overlay);
320
+ backdrop-filter: blur(var(--mds-liquid-blur-sm));
321
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm));
322
+ border: none;
323
+ border-radius: 0;
324
+ box-shadow: none;
325
+ }
326
+
327
+ .mds-liquid-glass--overlay::before {
328
+ display: none;
329
+ }
330
+
331
+ /* Input */
332
+ .mds-liquid-glass--input {
333
+ background: var(--mds-liquid-bg-input);
334
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
335
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
336
+ border-radius: 10px;
337
+ box-shadow: var(--mds-liquid-glow-soft);
338
+ padding: 0.75rem 1rem;
339
+ }
340
+
341
+ .mds-liquid-glass--input:focus {
342
+ border-color: var(--mds-color-brand-primary);
343
+ box-shadow: var(--mds-liquid-glow-soft), 0 0 0 3px rgba(0, 85, 255, 0.2);
344
+ outline: none;
345
+ }
346
+
347
+ /* Button */
348
+ .mds-liquid-glass--button {
349
+ background: var(--mds-liquid-bg-button);
350
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-default));
351
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-default));
352
+ border-radius: 10px;
353
+ box-shadow: var(--mds-liquid-shadow-raised), var(--mds-liquid-glow-soft);
354
+ padding: 0.5rem 1rem;
355
+ cursor: pointer;
356
+ transition: var(--mds-liquid-transition-fast);
357
+ }
358
+
359
+ .mds-liquid-glass--button:hover {
360
+ background: var(--mds-liquid-bg-button-hover);
361
+ border-color: var(--mds-liquid-border-bright);
362
+ }
363
+
364
+ .mds-liquid-glass--button:active {
365
+ box-shadow: var(--mds-liquid-glow-soft);
366
+ }
367
+
368
+ /* Dropdown */
369
+ .mds-liquid-glass--dropdown {
370
+ background: var(--mds-liquid-bg-glass-thick);
371
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
372
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
373
+ border-radius: 14px;
374
+ box-shadow: var(--mds-liquid-shadow-elevated);
375
+ padding: 0.5rem;
376
+ }
377
+
378
+ /* Table */
379
+ .mds-liquid-glass--table {
380
+ background: var(--mds-liquid-bg-glass);
381
+ backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
382
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-sm)) saturate(var(--mds-liquid-saturate-subtle));
383
+ border-radius: 16px;
384
+ overflow: hidden;
385
+ }
386
+
387
+ /* Footer */
388
+ .mds-liquid-glass--footer {
389
+ background: var(--mds-liquid-bg-navbar);
390
+ backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
391
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-lg)) saturate(var(--mds-liquid-saturate-default));
392
+ border: none;
393
+ border-top: 1px solid var(--mds-liquid-border-subtle);
394
+ border-radius: 0;
395
+ }
396
+
397
+ .mds-liquid-glass--footer::before {
398
+ border-radius: 0;
399
+ }
400
+
401
+ /* TOC (Table of Contents) */
402
+ .mds-liquid-glass--toc {
403
+ background: var(--mds-liquid-bg-card);
404
+ backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-subtle));
405
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-md)) saturate(var(--mds-liquid-saturate-subtle));
406
+ border-radius: 14px;
407
+ padding: 1rem;
408
+ }
409
+
410
+ /* Badge */
411
+ .mds-liquid-glass--badge {
412
+ background: var(--mds-liquid-bg-button);
413
+ backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
414
+ -webkit-backdrop-filter: blur(var(--mds-liquid-blur-xs)) saturate(var(--mds-liquid-saturate-subtle));
415
+ border-radius: 999px;
416
+ box-shadow: var(--mds-liquid-shadow-raised);
417
+ padding: 0.25rem 0.75rem;
418
+ font-size: 0.75rem;
419
+ }
420
+
421
+
422
+ /* =========================
423
+ Background Utilities
424
+ ========================= */
425
+
426
+ .mds-liquid-bg-gradient {
427
+ background: var(--mds-liquid-gradient) !important;
428
+ background-attachment: fixed !important;
429
+ }
430
+
431
+
432
+ /* =========================
433
+ Accessibility
434
+ ========================= */
435
+
436
+ /* Reduced motion */
437
+ @media (prefers-reduced-motion: reduce) {
438
+ .mds-liquid-glass,
439
+ .mds-liquid-glass--button,
440
+ .mds-liquid-glass--input {
441
+ transition: none !important;
442
+ }
443
+ }
444
+
445
+ /* High contrast */
446
+ @media (prefers-contrast: high) {
447
+ .mds-liquid-glass {
448
+ background: var(--mds-color-background-secondary) !important;
449
+ backdrop-filter: none !important;
450
+ -webkit-backdrop-filter: none !important;
451
+ border: 2px solid var(--mds-color-text-primary) !important;
452
+ }
453
+
454
+ .mds-liquid-glass::before {
455
+ display: none !important;
456
+ }
457
+ }
458
+
459
+
460
+ /* =========================
461
+ Browser Fallback
462
+ ========================= */
463
+
464
+ @supports not (backdrop-filter: blur(1px)) {
465
+ .mds-liquid-glass {
466
+ background: var(--mds-color-background-secondary);
467
+ }
468
+ }
@@ -0,0 +1,163 @@
1
+ /* Metropolle Design System – Mermaid Diagram Styling */
2
+
3
+ /*
4
+ Provides palette-aware theming for Mermaid diagrams that matches the
5
+ architecture documentation reference. Consumers should pair these styles
6
+ with the class definitions exported in documentation snippets (ex: pastelBlue,
7
+ accentOrange) to ensure consistent fill and typography across projects.
8
+ */
9
+
10
+ :root {
11
+ --mds-mermaid-label-dark: var(--mds-color-neutral-900, #0f172a);
12
+ --mds-mermaid-label-light: var(--mds-color-neutral-50, #f8fafc);
13
+ --mds-mermaid-node-font-weight: 600;
14
+ --mds-mermaid-edge-font-weight: 500;
15
+ }
16
+
17
+ /* Base container styling – glass morphism aligned with platform visuals */
18
+ html[data-theme='dark'] .mermaid {
19
+ background: rgba(255, 255, 255, 0.05) !important;
20
+ border-radius: var(--mds-border-radius-lg, 12px);
21
+ padding: var(--mds-space-4, 1rem);
22
+ backdrop-filter: blur(10px);
23
+ border: 1px solid rgba(255, 255, 255, 0.1);
24
+ margin: var(--mds-space-4, 1rem) 0;
25
+ }
26
+
27
+ html[data-theme='light'] .mermaid {
28
+ background: rgba(255, 255, 255, 0.7) !important;
29
+ border-radius: var(--mds-border-radius-lg, 12px);
30
+ padding: var(--mds-space-4, 1rem);
31
+ backdrop-filter: blur(10px);
32
+ border: 1px solid rgba(0, 0, 0, 0.1);
33
+ margin: var(--mds-space-4, 1rem) 0;
34
+ box-shadow: var(--mds-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));
35
+ }
36
+
37
+ /* Default typography settings for nodes and clusters */
38
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster) {
39
+ --mds-mermaid-node-color: var(--mds-mermaid-label-dark);
40
+ --mds-mermaid-node-weight-current: var(--mds-mermaid-node-font-weight);
41
+ }
42
+
43
+ /* Switch to light foreground when nodes use strong accent fills */
44
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#00bcd4" i]),
45
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#1565c0" i]),
46
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#1976d2" i]),
47
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#2196f3" i]),
48
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#34a853" i]),
49
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#388e3c" i]),
50
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#3b82f6" i]),
51
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#3f48cc" i]),
52
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#4285f4" i]),
53
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#45b7d1" i]),
54
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#4b612c" i]),
55
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#4caf50" i]),
56
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#4ecdc4" i]),
57
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#607d8b" i]),
58
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#627eea" i]),
59
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#673ab7" i]),
60
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#689f38" i]),
61
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#759c3e" i]),
62
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#795548" i]),
63
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#7b1fa2" i]),
64
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#96ceb4" i]),
65
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#9c27b0" i]),
66
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#c2185b" i]),
67
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#dd344c" i]),
68
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#e91e63" i]),
69
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#f44336" i]),
70
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#f57c00" i]),
71
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#f7931a" i]),
72
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#ff5722" i]),
73
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#ff6b6b" i]),
74
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster):has(> :is(rect, polygon, ellipse, circle, path)[fill="#ff9800" i]) {
75
+ --mds-mermaid-node-color: var(--mds-mermaid-label-light);
76
+ }
77
+
78
+ /* Apply the computed foreground colour to all supported Mermaid label types */
79
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster) g.label text,
80
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster) g.label tspan {
81
+ fill: var(--mds-mermaid-node-color) !important;
82
+ font-weight: var(--mds-mermaid-node-weight-current);
83
+ }
84
+
85
+ html[data-theme='dark'] .mermaid :is(g.node, g.cluster) g.label foreignObject * {
86
+ color: var(--mds-mermaid-node-color) !important;
87
+ font-weight: var(--mds-mermaid-node-weight-current);
88
+ }
89
+
90
+ /* Preserve lighter typography for edge labels so they remain legible */
91
+ html[data-theme='dark'] .mermaid .edgeLabel text,
92
+ html[data-theme='dark'] .mermaid .edgeLabel tspan {
93
+ fill: var(--ifm-font-color-base, #e5e7eb) !important;
94
+ font-weight: var(--mds-mermaid-edge-font-weight);
95
+ }
96
+
97
+ /* Light theme keeps default dark text but enforces consistent weight */
98
+ html[data-theme='light'] .mermaid :is(g.node, g.cluster) g.label text,
99
+ html[data-theme='light'] .mermaid :is(g.node, g.cluster) g.label tspan,
100
+ html[data-theme='light'] .mermaid :is(g.node, g.cluster) g.label foreignObject * {
101
+ font-weight: var(--mds-mermaid-node-font-weight, 600);
102
+ }
103
+
104
+ /*
105
+ * Metropolle Official Mermaid Diagram Classes
106
+ * Based on Arquitetura.md color standards - compatible with light/dark themes
107
+ */
108
+
109
+ /* Frontend/UI Components */
110
+ .mds-frontend {
111
+ fill: #e3f2fd;
112
+ stroke: #1976d2;
113
+ stroke-width: 2px;
114
+ color: #000;
115
+ }
116
+
117
+ /* AWS/Infrastructure Components */
118
+ .mds-aws {
119
+ fill: #fff3e0;
120
+ stroke: #f57c00;
121
+ stroke-width: 2px;
122
+ color: #000;
123
+ }
124
+
125
+ /* Runtime/Process Components */
126
+ .mds-runtime {
127
+ fill: #f3e5f5;
128
+ stroke: #8e24aa;
129
+ stroke-width: 2px;
130
+ color: #000;
131
+ }
132
+
133
+ /* Storage/Data Components */
134
+ .mds-storage {
135
+ fill: #e8f5e8;
136
+ stroke: #388e3c;
137
+ stroke-width: 2px;
138
+ color: #000;
139
+ }
140
+
141
+ /* Security/Authentication Components */
142
+ .mds-security {
143
+ fill: #ffebee;
144
+ stroke: #d32f2f;
145
+ stroke-width: 2px;
146
+ color: #000;
147
+ }
148
+
149
+ /* Results/Output Components */
150
+ .mds-result {
151
+ fill: #fce4ec;
152
+ stroke: #c2185b;
153
+ stroke-width: 2px;
154
+ color: #000;
155
+ }
156
+
157
+ /* Legacy compatibility aliases */
158
+ .pastelBlue { fill: #e3f2fd; stroke: #1976d2; stroke-width: 2px; color: #000; }
159
+ .accentOrange { fill: #fff3e0; stroke: #f57c00; stroke-width: 2px; color: #000; }
160
+ .pastelPurple { fill: #f3e5f5; stroke: #8e24aa; stroke-width: 2px; color: #000; }
161
+ .pastelGreen { fill: #e8f5e8; stroke: #388e3c; stroke-width: 2px; color: #000; }
162
+ .accentRed { fill: #ffebee; stroke: #d32f2f; stroke-width: 2px; color: #000; }
163
+ .pastelPink { fill: #fce4ec; stroke: #c2185b; stroke-width: 2px; color: #000; }