@metropolle/design-system 1.2025.1-2.5.1903 → 1.2026.0-1.10.2344

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 (54) hide show
  1. package/dist/css/compat/back.css +12 -0
  2. package/dist/css/components.css +2594 -144
  3. package/dist/css/liquid-glass.css +468 -0
  4. package/dist/react/components/react/Button/Button.d.ts +1 -1
  5. package/dist/react/components/react/Button/Button.d.ts.map +1 -1
  6. package/dist/react/components/react/DataTable/DataTable.d.ts.map +1 -1
  7. package/dist/react/components/react/DataTable/TableHeader.d.ts.map +1 -1
  8. package/dist/react/components/react/DataTable/TableRow.d.ts.map +1 -1
  9. package/dist/react/components/react/DataTable/types.d.ts +2 -1
  10. package/dist/react/components/react/DataTable/types.d.ts.map +1 -1
  11. package/dist/react/components/react/DetailModal/DetailModal.d.ts +55 -0
  12. package/dist/react/components/react/DetailModal/DetailModal.d.ts.map +1 -0
  13. package/dist/react/components/react/DetailModal/index.d.ts +3 -0
  14. package/dist/react/components/react/DetailModal/index.d.ts.map +1 -0
  15. package/dist/react/components/react/FormField/FormField.d.ts +26 -0
  16. package/dist/react/components/react/FormField/FormField.d.ts.map +1 -0
  17. package/dist/react/components/react/FormField/index.d.ts +3 -0
  18. package/dist/react/components/react/FormField/index.d.ts.map +1 -0
  19. package/dist/react/components/react/FormGrid/FormGrid.d.ts +20 -0
  20. package/dist/react/components/react/FormGrid/FormGrid.d.ts.map +1 -0
  21. package/dist/react/components/react/FormGrid/index.d.ts +3 -0
  22. package/dist/react/components/react/FormGrid/index.d.ts.map +1 -0
  23. package/dist/react/components/react/FormModal/FormModal.d.ts +58 -0
  24. package/dist/react/components/react/FormModal/FormModal.d.ts.map +1 -0
  25. package/dist/react/components/react/FormModal/index.d.ts +3 -0
  26. package/dist/react/components/react/FormModal/index.d.ts.map +1 -0
  27. package/dist/react/components/react/FormSection/FormSection.d.ts +20 -0
  28. package/dist/react/components/react/FormSection/FormSection.d.ts.map +1 -0
  29. package/dist/react/components/react/FormSection/index.d.ts +3 -0
  30. package/dist/react/components/react/FormSection/index.d.ts.map +1 -0
  31. package/dist/react/components/react/GlassCard/GlassCard.d.ts +56 -6
  32. package/dist/react/components/react/GlassCard/GlassCard.d.ts.map +1 -1
  33. package/dist/react/components/react/GlassCard/index.d.ts +1 -1
  34. package/dist/react/components/react/GlassCard/index.d.ts.map +1 -1
  35. package/dist/react/components/react/InfoBox/InfoBox.d.ts +46 -0
  36. package/dist/react/components/react/InfoBox/InfoBox.d.ts.map +1 -0
  37. package/dist/react/components/react/InfoBox/index.d.ts +3 -0
  38. package/dist/react/components/react/InfoBox/index.d.ts.map +1 -0
  39. package/dist/react/components/react/Modal/Modal.d.ts.map +1 -1
  40. package/dist/react/components/react/Modal/ModalHeader.d.ts.map +1 -1
  41. package/dist/react/components/react/ProfileCard/ProfileCard.d.ts +55 -0
  42. package/dist/react/components/react/ProfileCard/ProfileCard.d.ts.map +1 -0
  43. package/dist/react/components/react/ProfileCard/index.d.ts +3 -0
  44. package/dist/react/components/react/ProfileCard/index.d.ts.map +1 -0
  45. package/dist/react/components/react/Select/Select.d.ts +61 -10
  46. package/dist/react/components/react/Select/Select.d.ts.map +1 -1
  47. package/dist/react/components/react/index.d.ts +15 -1
  48. package/dist/react/components/react/index.d.ts.map +1 -1
  49. package/dist/react/index.d.ts +32 -18
  50. package/dist/react/index.esm.js +826 -77
  51. package/dist/react/index.esm.js.map +1 -1
  52. package/dist/react/index.js +832 -75
  53. package/dist/react/index.js.map +1 -1
  54. package/package.json +5 -2
@@ -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
+ }
@@ -1,7 +1,7 @@
1
1
  import React, { ButtonHTMLAttributes } from 'react';
2
2
  export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
3
3
  /** Variante visual do botão */
4
- variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'glass';
4
+ variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'subtle' | 'glass' | 'danger';
5
5
  /** Tamanho do botão */
6
6
  size?: 'sm' | 'md' | 'lg';
7
7
  /** Estado de loading */
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGhE,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,+BAA+B;IAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAClE,uBAAuB;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,uFA4DjB,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGhE,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,+BAA+B;IAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxF,uBAAuB;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,uFA4DjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAItD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqM9C,CAAC"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAItD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAsM9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4DlD,CAAC"}
1
+ {"version":3,"file":"TableHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4ElD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/TableRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAe,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqH5C,CAAC"}
1
+ {"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/TableRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAe,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAgH5C,CAAC"}
@@ -12,7 +12,7 @@ export interface TableColumn {
12
12
  }
13
13
  export interface TableAction {
14
14
  key: string;
15
- label: string;
15
+ label: React.ReactNode;
16
16
  icon?: React.ReactNode;
17
17
  variant?: 'primary' | 'secondary' | 'danger';
18
18
  disabled?: (item: any) => boolean;
@@ -53,5 +53,6 @@ export interface TableHeaderProps {
53
53
  onSort?: (column: string) => void;
54
54
  sortColumn?: string;
55
55
  sortDirection?: 'asc' | 'desc';
56
+ hasActions?: boolean;
56
57
  }
57
58
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACnE,UAAU,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DataTable/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACnE,UAAU,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QACnC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ export interface DetailModalProps {
3
+ /** Modal open state */
4
+ open: boolean;
5
+ /** Close handler */
6
+ onClose: () => void;
7
+ /** Modal title */
8
+ title: string;
9
+ /** Header icon (left side, contextual to content) */
10
+ icon?: React.ReactNode;
11
+ /** Optional subtitle/description */
12
+ subtitle?: string;
13
+ /** Content (InfoBox, tables, data displays) */
14
+ children: React.ReactNode;
15
+ /** Close button text */
16
+ closeText?: string;
17
+ /** Optional action button */
18
+ action?: {
19
+ label: string;
20
+ onClick: () => void;
21
+ variant?: 'primary' | 'secondary' | 'ghost';
22
+ disabled?: boolean;
23
+ };
24
+ /** Modal size */
25
+ size?: 'sm' | 'md' | 'lg' | 'xl';
26
+ /** Additional className */
27
+ className?: string;
28
+ }
29
+ /**
30
+ * DetailModal - Normalized template for read-only detail modals
31
+ *
32
+ * Pattern extracted from GeographyDetailsModal, AuditLogDetailModal (backoffice)
33
+ * Provides consistent structure for viewing entity details
34
+ *
35
+ * @example
36
+ * <DetailModal
37
+ * open={showDetails}
38
+ * onClose={() => setShowDetails(false)}
39
+ * title="User Details"
40
+ * subtitle="Created on Jan 1, 2024"
41
+ * action={{
42
+ * label: 'Edit',
43
+ * onClick: handleEdit,
44
+ * variant: 'primary'
45
+ * }}
46
+ * >
47
+ * <InfoBox title="Basic Information">
48
+ * <InfoRow label="Name" value={user.name} />
49
+ * <InfoRow label="Email" value={user.email} />
50
+ * </InfoBox>
51
+ * </DetailModal>
52
+ */
53
+ export declare function DetailModal({ open, onClose, title, icon, subtitle, children, closeText, action, size, className }: DetailModalProps): import("react/jsx-runtime").JSX.Element;
54
+ export default DetailModal;
55
+ //# sourceMappingURL=DetailModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DetailModal/DetailModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,oBAAoB;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;QAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAmB,EACnB,MAAM,EACN,IAAW,EACX,SAAc,EACf,EAAE,gBAAgB,2CAoHlB;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DetailModal, type DetailModalProps } from './DetailModal';
2
+ export { default } from './DetailModal';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/DetailModal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ export interface FormFieldProps {
3
+ /** Label text */
4
+ label: string;
5
+ /** Whether the field is required */
6
+ required?: boolean;
7
+ /** Error message to display */
8
+ error?: string;
9
+ /** Helper text below the input */
10
+ helper?: string;
11
+ /** Whether the field is disabled */
12
+ disabled?: boolean;
13
+ /** Children (input element) */
14
+ children: React.ReactNode;
15
+ /** Additional className */
16
+ className?: string;
17
+ }
18
+ /**
19
+ * FormField - Normalized wrapper for form inputs
20
+ *
21
+ * Pattern extracted from AdminUserModal.tsx (backoffice/users)
22
+ * Provides consistent label, error, and helper text styling
23
+ */
24
+ export declare function FormField({ label, required, error, helper, disabled, children, className }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
25
+ export default FormField;
26
+ //# sourceMappingURL=FormField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/FormField/FormField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAgB,EAChB,KAAK,EACL,MAAM,EACN,QAAgB,EAChB,QAAQ,EACR,SAAc,EACf,EAAE,cAAc,2CA+ChB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { FormField, type FormFieldProps } from './FormField';
2
+ export { default } from './FormField';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/FormField/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface FormGridProps {
3
+ /** Number of columns (1 or 2) */
4
+ columns?: 1 | 2;
5
+ /** Gap between fields */
6
+ gap?: 'sm' | 'md' | 'lg';
7
+ /** Children (FormField components) */
8
+ children: React.ReactNode;
9
+ /** Additional className */
10
+ className?: string;
11
+ }
12
+ /**
13
+ * FormGrid - Normalized grid layout for form fields
14
+ *
15
+ * Pattern extracted from AdminUserModal.tsx (backoffice/users)
16
+ * Provides consistent 1 or 2 column layouts with proper gap
17
+ */
18
+ export declare function FormGrid({ columns, gap, children, className }: FormGridProps): import("react/jsx-runtime").JSX.Element;
19
+ export default FormGrid;
20
+ //# sourceMappingURL=FormGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormGrid.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/FormGrid/FormGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,yBAAyB;IACzB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,sCAAsC;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAW,EACX,GAAU,EACV,QAAQ,EACR,SAAc,EACf,EAAE,aAAa,2CAaf;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { FormGrid, type FormGridProps } from './FormGrid';
2
+ export { default } from './FormGrid';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/FormGrid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}