@metropolle/design-system 1.0.0-beta.2025.8.31.328.22dd9a0 → 1.0.0-beta.2025.9.14.135.6a01a93

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.
@@ -0,0 +1,462 @@
1
+ /*
2
+ Back Compat CSS (opt-in)
3
+ Purpose: replicate current @back system-level styling with pixel parity,
4
+ without changing appearance. Import after base DS CSS.
5
+ */
6
+
7
+ /* ================================
8
+ Buttons (theme-responsive)
9
+ ================================ */
10
+ .mds-button--primary,
11
+ button[class*="primary"] {
12
+ background-color: #60a5fa !important;
13
+ color: #ffffff !important;
14
+ border: none !important;
15
+ transition: all 0.2s ease !important;
16
+ }
17
+
18
+ .mds-button--primary:hover,
19
+ button[class*="primary"]:hover {
20
+ background-color: #93c5fd !important;
21
+ transform: translateY(-1px) !important;
22
+ }
23
+
24
+ .mds-button--secondary,
25
+ button[class*="secondary"] {
26
+ background-color: rgba(255, 255, 255, 0.1) !important;
27
+ color: #ffffff !important;
28
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
29
+ backdrop-filter: blur(10px) !important;
30
+ transition: all 0.2s ease !important;
31
+ }
32
+
33
+ .mds-button--secondary:hover,
34
+ button[class*="secondary"]:hover {
35
+ background-color: rgba(255, 255, 255, 0.15) !important;
36
+ border-color: rgba(255, 255, 255, 0.3) !important;
37
+ }
38
+
39
+ .mds-button--outline,
40
+ button[class*="outline"] {
41
+ background-color: transparent !important;
42
+ color: #ffffff !important;
43
+ border: 1px solid rgba(255, 255, 255, 0.3) !important;
44
+ transition: all 0.2s ease !important;
45
+ }
46
+
47
+ .mds-button--outline:hover,
48
+ button[class*="outline"]:hover {
49
+ background-color: rgba(255, 255, 255, 0.1) !important;
50
+ border-color: rgba(255, 255, 255, 0.5) !important;
51
+ }
52
+
53
+ .mds-button--glass,
54
+ button[class*="glass"] {
55
+ background-color: rgba(255, 255, 255, 0.1) !important;
56
+ color: #ffffff !important;
57
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
58
+ backdrop-filter: blur(10px) !important;
59
+ transition: all 0.2s ease !important;
60
+ }
61
+
62
+ .mds-button--glass:hover,
63
+ button[class*="glass"]:hover {
64
+ background-color: rgba(255, 255, 255, 0.15) !important;
65
+ border-color: rgba(255, 255, 255, 0.3)
66
+ !important;
67
+ }
68
+
69
+ .mds-button--ghost,
70
+ button[class*="ghost"] {
71
+ background-color: transparent !important;
72
+ color: #ffffff !important;
73
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
74
+ transition: all 0.2s ease !important;
75
+ }
76
+
77
+ .mds-button--ghost:hover,
78
+ button[class*="ghost"]:hover {
79
+ background-color: rgba(255, 255, 255, 0.1) !important;
80
+ border-color: rgba(255, 255, 255, 0.3) !important;
81
+ }
82
+
83
+ /* Raw button baseline
84
+ Scope only to unstyled raw buttons to avoid overriding
85
+ components that set inline styles or DS classes */
86
+ button:not([style]):not(.mds-button):not([class*="mds-button"]):not([class*="btn"]) {
87
+ background-color: rgba(255, 255, 255, 0.1) !important;
88
+ color: #ffffff !important;
89
+ border: 1px solid rgba(255, 255, 255, 0.2) !important;
90
+ border-radius: 8px !important;
91
+ padding: 0.5rem 1rem !important;
92
+ cursor: pointer !important;
93
+ transition: all 0.2s ease !important;
94
+ font-family: inherit !important;
95
+ }
96
+
97
+ button:not([style]):not(.mds-button):not([class*="mds-button"]):not([class*="btn"]):hover {
98
+ background-color: rgba(255, 255, 255, 0.15) !important;
99
+ border-color: rgba(255, 255, 255, 0.3) !important;
100
+ transform: translateY(-1px) !important;
101
+ }
102
+
103
+ /* Modal close button: keep static (no lift) but preserve vertical centering */
104
+ .mds-modal-header > button[aria-label="Fechar"],
105
+ .mds-modal-header > button[aria-label="Fechar"]:hover,
106
+ .mds-modal-header > button[aria-label="Fechar"]:focus,
107
+ .mds-modal-header > button[aria-label="Fechar"]:focus-visible {
108
+ position: absolute !important;
109
+ right: 16px !important;
110
+ top: 50% !important;
111
+ transform: translateY(-50%) !important;
112
+ transition: none !important;
113
+ box-shadow: none !important;
114
+ background-color: transparent !important;
115
+ border: none !important;
116
+ }
117
+
118
+ button:not([style]):not(.mds-button):not([class*="mds-button"]):not([class*="btn"]):disabled {
119
+ opacity: 0.5 !important;
120
+ cursor: not-allowed !important;
121
+ transform: none !important;
122
+ }
123
+
124
+ /* Light theme button overrides */
125
+ html[data-theme="light"] .mds-button--primary,
126
+ html[data-theme="light"] button[class*="primary"] {
127
+ background-color: #3b82f6 !important;
128
+ color: #ffffff !important;
129
+ }
130
+
131
+ html[data-theme="light"] .mds-button--primary:hover,
132
+ html[data-theme="light"] button[class*="primary"]:hover {
133
+ background-color: #2563eb !important;
134
+ }
135
+
136
+ html[data-theme="light"] .mds-button--secondary,
137
+ html[data-theme="light"] button[class*="secondary"] {
138
+ background-color: rgba(0, 0, 0, 0.05) !important;
139
+ color: #1a1a1a !important;
140
+ border-color: rgba(0, 0, 0, 0.1) !important;
141
+ }
142
+
143
+ html[data-theme="light"] .mds-button--secondary:hover,
144
+ html[data-theme="light"] button[class*="secondary"]:hover {
145
+ background-color: rgba(0, 0, 0, 0.08) !important;
146
+ border-color: rgba(0, 0, 0, 0.15) !important;
147
+ }
148
+
149
+ html[data-theme="light"] .mds-button--outline,
150
+ html[data-theme="light"] button[class*="outline"] {
151
+ color: #1a1a1a !important;
152
+ border-color: rgba(0, 0, 0, 0.3) !important;
153
+ }
154
+
155
+ html[data-theme="light"] .mds-button--outline:hover,
156
+ html[data-theme="light"] button[class*="outline"]:hover {
157
+ background-color: rgba(0, 0, 0, 0.05) !important;
158
+ border-color: rgba(0, 0, 0, 0.5) !important;
159
+ }
160
+
161
+ html[data-theme="light"] .mds-button--glass,
162
+ html[data-theme="light"] button[class*="glass"] {
163
+ background-color: rgba(0, 0, 0, 0.05) !important;
164
+ color: #1a1a1a !important;
165
+ border-color: rgba(0, 0, 0, 0.1) !important;
166
+ }
167
+
168
+ html[data-theme="light"] .mds-button--glass:hover,
169
+ html[data-theme="light"] button[class*="glass"]:hover {
170
+ background-color: rgba(0, 0, 0, 0.08) !important;
171
+ border-color: rgba(0, 0, 0, 0.15) !important;
172
+ }
173
+
174
+ html[data-theme="light"] .mds-button--ghost,
175
+ html[data-theme="light"] button[class*="ghost"] {
176
+ color: #1a1a1a !important;
177
+ border-color: rgba(0, 0, 0, 0.2) !important;
178
+ }
179
+
180
+ html[data-theme="light"] .mds-button--ghost:hover,
181
+ html[data-theme="light"] button[class*="ghost"]:hover {
182
+ background-color: rgba(0, 0, 0, 0.05) !important;
183
+ border-color: rgba(0, 0, 0, 0.3) !important;
184
+ }
185
+
186
+ html[data-theme="light"] button {
187
+ background-color: rgba(0, 0, 0, 0.05) !important;
188
+ color: #1a1a1a !important;
189
+ border-color: rgba(0, 0, 0, 0.1) !important;
190
+ }
191
+
192
+ html[data-theme="light"] button:hover {
193
+ background-color: rgba(0, 0, 0, 0.08) !important;
194
+ border-color: rgba(0, 0, 0, 0.15) !important;
195
+ }
196
+
197
+ /* ========================================
198
+ Selects and period filter (theme-responsive)
199
+ ======================================== */
200
+ select,
201
+ .mds-period-filter__select {
202
+ /* Match DS ghost button default state */
203
+ background-color: transparent !important;
204
+ color: #ffffff !important;
205
+ border: none !important;
206
+ border-radius: 8px !important;
207
+ padding: 0.5rem 1rem !important;
208
+ font-family: inherit !important;
209
+ font-size: 0.875rem !important;
210
+ cursor: pointer !important;
211
+ transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease !important;
212
+ backdrop-filter: none !important;
213
+ -webkit-backdrop-filter: none !important;
214
+ -webkit-appearance: none !important;
215
+ -moz-appearance: none !important;
216
+ appearance: none !important;
217
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
218
+ background-position: right 0.5rem center !important;
219
+ background-repeat: no-repeat !important;
220
+ background-size: 1rem 1rem !important;
221
+ padding-right: 2.5rem !important;
222
+ }
223
+
224
+ select:hover,
225
+ .mds-period-filter__select:hover {
226
+ /* Same hover treatment as DS ghost */
227
+ background-color: var(--mds-color-background-secondary) !important;
228
+ }
229
+
230
+ select:focus,
231
+ .mds-period-filter__select:focus {
232
+ outline: none !important;
233
+ border-color: #60a5fa !important;
234
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.2) !important;
235
+ }
236
+
237
+ select:disabled,
238
+ .mds-period-filter__select:disabled {
239
+ opacity: 0.5 !important;
240
+ cursor: not-allowed !important;
241
+ }
242
+
243
+ select option {
244
+ background-color: rgba(30, 30, 30, 0.95) !important;
245
+ color: #ffffff !important;
246
+ padding: 0.5rem !important;
247
+ }
248
+
249
+ /* Light theme select styles */
250
+ html[data-theme="light"] select,
251
+ html[data-theme="light"] .mds-period-filter__select {
252
+ background-color: transparent !important;
253
+ color: #1a1a1a !important;
254
+ border: none !important;
255
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
256
+ }
257
+
258
+ html[data-theme="light"] select:hover,
259
+ html[data-theme="light"] .mds-period-filter__select:hover {
260
+ background-color: rgba(0, 0, 0, 0.05) !important;
261
+ }
262
+
263
+ html[data-theme="light"] select:focus,
264
+ html[data-theme="light"] .mds-period-filter__select:focus {
265
+ border-color: #3b82f6 !important;
266
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
267
+ }
268
+
269
+ html[data-theme="light"] select option {
270
+ background-color: rgba(250, 250, 250, 0.95) !important;
271
+ color: #1a1a1a !important;
272
+ }
273
+
274
+ /* Dashboard controls */
275
+ .mds-dashboard-controls {
276
+ display: flex !important;
277
+ gap: 1rem !important;
278
+ align-items: center !important;
279
+ flex-wrap: wrap !important;
280
+ }
281
+
282
+ .mds-period-filter {
283
+ position: relative !important;
284
+ min-width: 150px !important;
285
+ }
286
+
287
+ /* ========================================
288
+ Inputs and selects (mds-*)
289
+ ======================================== */
290
+ .mds-input,
291
+ input.mds-input {
292
+ padding: 8px 12px !important;
293
+ min-height: 36px !important;
294
+ max-height: 36px !important;
295
+ height: 36px !important;
296
+ font-size: 14px !important;
297
+ line-height: 1.4 !important;
298
+ box-sizing: border-box !important;
299
+ }
300
+
301
+ /* Dark theme input overrides */
302
+ html[data-theme="dark"] .mds-input,
303
+ html[data-theme="dark"] input.mds-input,
304
+ html:not([data-theme]) .mds-input,
305
+ html:not([data-theme]) input.mds-input {
306
+ background-color: rgba(255, 255, 255, 0.15) !important;
307
+ border-color: rgba(255, 255, 255, 0.4) !important;
308
+ color: #ffffff !important;
309
+ }
310
+
311
+ html[data-theme="dark"] .mds-input:focus,
312
+ html[data-theme="dark"] input.mds-input:focus,
313
+ html:not([data-theme]) .mds-input:focus,
314
+ html:not([data-theme]) input.mds-input:focus {
315
+ background-color: rgba(255, 255, 255, 0.2) !important;
316
+ border-color: #60a5fa !important;
317
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.3) !important;
318
+ }
319
+
320
+ html[data-theme="dark"] .mds-input:hover,
321
+ html[data-theme="dark"] input.mds-input:hover,
322
+ html:not([data-theme]) .mds-input:hover,
323
+ html:not([data-theme]) input.mds-input:hover {
324
+ background-color: rgba(255, 255, 255, 0.18) !important;
325
+ border-color: rgba(255, 255, 255, 0.5) !important;
326
+ }
327
+
328
+ /* Light theme input overrides */
329
+ html[data-theme="light"] .mds-input,
330
+ html[data-theme="light"] input.mds-input {
331
+ background-color: #ffffff !important;
332
+ border-color: rgba(0, 0, 0, 0.2) !important;
333
+ color: #1a1a1a !important;
334
+ }
335
+
336
+ html[data-theme="light"] .mds-input:focus,
337
+ html[data-theme="light"] input.mds-input:focus {
338
+ background-color: #ffffff !important;
339
+ border-color: #3b82f6 !important;
340
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
341
+ }
342
+
343
+ html[data-theme="light"] .mds-input:hover,
344
+ html[data-theme="light"] input.mds-input:hover {
345
+ background-color: #ffffff !important;
346
+ border-color: rgba(0, 0, 0, 0.3) !important;
347
+ }
348
+
349
+ /* Placeholder overrides */
350
+ html[data-theme="dark"] .mds-input::-moz-placeholder, html[data-theme="dark"] input.mds-input::-moz-placeholder, html:not([data-theme]) .mds-input::-moz-placeholder, html:not([data-theme]) input.mds-input::-moz-placeholder {
351
+ color: rgba(255, 255, 255, 0.6) !important;
352
+ }
353
+ html[data-theme="dark"] .mds-input::placeholder,
354
+ html[data-theme="dark"] input.mds-input::placeholder,
355
+ html:not([data-theme]) .mds-input::placeholder,
356
+ html:not([data-theme]) input.mds-input::placeholder {
357
+ color: rgba(255, 255, 255, 0.6) !important;
358
+ }
359
+
360
+ html[data-theme="light"] .mds-input::-moz-placeholder, html[data-theme="light"] input.mds-input::-moz-placeholder {
361
+ color: rgba(0, 0, 0, 0.5) !important;
362
+ }
363
+
364
+ html[data-theme="light"] .mds-input::placeholder,
365
+ html[data-theme="light"] input.mds-input::placeholder {
366
+ color: rgba(0, 0, 0, 0.5) !important;
367
+ }
368
+
369
+ /* Ultra high priority input overrides */
370
+ input.mds-input,
371
+ .mds-input,
372
+ input[class*="mds-input"] {
373
+ padding: 8px 16px !important;
374
+ min-height: 40px !important;
375
+ max-height: 40px !important;
376
+ height: 40px !important;
377
+ font-size: 14px !important;
378
+ line-height: 1.4 !important;
379
+ box-sizing: border-box !important;
380
+ border-radius: 8px !important;
381
+ border-width: 1px !important;
382
+ border-style: solid !important;
383
+ }
384
+
385
+ /* Dark theme - ultra specific */
386
+ html[data-theme="dark"] input.mds-input,
387
+ html[data-theme="dark"] .mds-input,
388
+ html[data-theme="dark"] input[class*="mds-input"],
389
+ html:not([data-theme]) input.mds-input,
390
+ html:not([data-theme]) .mds-input,
391
+ html:not([data-theme]) input[class*="mds-input"] {
392
+ background-color: rgba(255, 255, 255, 0.2) !important;
393
+ border-color: rgba(255, 255, 255, 0.5) !important;
394
+ color: #ffffff !important;
395
+ }
396
+
397
+ html[data-theme="dark"] input.mds-input:focus,
398
+ html[data-theme="dark"] .mds-input:focus,
399
+ html[data-theme="dark"] input[class*="mds-input"]:focus,
400
+ html:not([data-theme]) input.mds-input:focus,
401
+ html:not([data-theme]) .mds-input:focus,
402
+ html:not([data-theme]) input[class*="mds-input"]:focus {
403
+ background-color: rgba(255, 255, 255, 0.25) !important;
404
+ border-color: #60a5fa !important;
405
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.3) !important;
406
+ }
407
+
408
+ /* Light theme - ultra specific */
409
+ html[data-theme="light"] input.mds-input,
410
+ html[data-theme="light"] .mds-input,
411
+ html[data-theme="light"] input[class*="mds-input"] {
412
+ background-color: #ffffff !important;
413
+ border-color: rgba(0, 0, 0, 0.3) !important;
414
+ color: #1a1a1a !important;
415
+ }
416
+
417
+ html[data-theme="light"] input.mds-input:focus,
418
+ html[data-theme="light"] .mds-input:focus,
419
+ html[data-theme="light"] input[class*="mds-input"]:focus {
420
+ background-color: #ffffff !important;
421
+ border-color: #3b82f6 !important;
422
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important;
423
+ }
424
+
425
+ /* Select overrides with maximum specificity */
426
+ select.mds-select,
427
+ .mds-select,
428
+ select[class*="mds-select"] {
429
+ padding: 8px 16px !important;
430
+ min-height: 40px !important;
431
+ max-height: 40px !important;
432
+ height: 40px !important;
433
+ font-size: 14px !important;
434
+ line-height: 1.4 !important;
435
+ box-sizing: border-box !important;
436
+ border-radius: 8px !important;
437
+ border-width: 1px !important;
438
+ border-style: solid !important;
439
+ }
440
+
441
+ /* Dark theme select overrides */
442
+ html[data-theme="dark"] select.mds-select,
443
+ html[data-theme="dark"] .mds-select,
444
+ html[data-theme="dark"] select[class*="mds-select"],
445
+ html:not([data-theme]) select.mds-select,
446
+ html:not([data-theme]) .mds-select,
447
+ html:not([data-theme]) select[class*="mds-select"] {
448
+ background-color: rgba(255, 255, 255, 0.2) !important;
449
+ border-color: rgba(255, 255, 255, 0.5) !important;
450
+ color: #ffffff !important;
451
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
452
+ }
453
+
454
+ /* Light theme select overrides */
455
+ html[data-theme="light"] select.mds-select,
456
+ html[data-theme="light"] .mds-select,
457
+ html[data-theme="light"] select[class*="mds-select"] {
458
+ background-color: #ffffff !important;
459
+ border-color: rgba(0, 0, 0, 0.3) !important;
460
+ color: #1a1a1a !important;
461
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23000000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
462
+ }
@@ -169,18 +169,39 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
169
169
  inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
170
170
  }
171
171
 
172
- /* Header button sizing + alignment */
172
+ /* Header close button sizing + alignment */
173
173
  .mds-modal-header > button[aria-label="Fechar"] {
174
+ /* Size and reset */
174
175
  font-size: 1rem !important;
175
176
  line-height: 1 !important;
176
- padding: 4px 8px !important;
177
177
  transition: none !important;
178
+ padding: 0 !important;
179
+ background: transparent !important;
180
+ border: none !important;
181
+ /* Colors from DS tokens with robust fallback */
182
+ color: var(--mds-color-text-secondary, var(--text-secondary, rgba(0,0,0,0.65))) !important;
183
+ /* Absolute centering like the left icon */
184
+ position: absolute !important;
185
+ right: 16px !important;
186
+ top: 50% !important;
187
+ transform: translateY(-50%) !important;
188
+ width: 32px !important;
189
+ height: 32px !important;
190
+ display: inline-flex !important;
191
+ align-items: center !important;
192
+ justify-content: center !important;
178
193
  }
179
194
  .mds-modal-header > button[aria-label="Fechar"]:hover,
180
- .mds-modal-header > button[aria-label="Fechar"]:focus {
181
- transform: none !important;
182
- transition: none !important;
195
+ .mds-modal-header > button[aria-label="Fechar"]:focus,
196
+ .mds-modal-header > button[aria-label="Fechar"]:focus-visible {
197
+ /* Keep centered on interactive states and avoid lifts/shadows */
198
+ position: absolute !important;
199
+ right: 16px !important;
200
+ top: 50% !important;
201
+ transform: translateY(-50%) !important;
183
202
  box-shadow: none !important;
203
+ transition: none !important;
204
+ color: var(--mds-color-text-primary, var(--text-primary, #111827)) !important;
184
205
  }
185
206
 
186
207
  /* Responsive modal */
@@ -592,11 +613,11 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
592
613
 
593
614
  /* Theme Support - Default (Dark Theme) */
594
615
  :root {
595
- /* Dashboard Control Variables - Dark Theme */
596
- --mds-dashboard-control-bg: rgba(255, 255, 255, 0.15);
597
- --mds-dashboard-control-bg-hover: rgba(255, 255, 255, 0.25);
616
+ /* Dashboard Control Variables - Dark Theme (default) */
617
+ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.35);
618
+ --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.5);
598
619
  --mds-dashboard-control-color: #ffffff;
599
- --mds-dashboard-control-border: rgba(255, 255, 255, 0.2);
620
+ --mds-dashboard-control-border: rgba(255, 255, 255, 0.18);
600
621
  --mds-dashboard-control-border-disabled: rgba(255, 255, 255, 0.3);
601
622
  --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
602
623
  --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
@@ -605,8 +626,56 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
605
626
  /* Dropdown Options - Dark Theme */
606
627
  --mds-dashboard-control-option-bg: #2a2a2a;
607
628
  --mds-dashboard-control-option-color: #ffffff;
629
+
630
+ /* Login specific variables - Dark Theme */
631
+ --mds-login-bg: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
632
+ --mds-input-bg: rgba(255, 255, 255, 0.1);
633
+ --mds-input-focus-border: #aaaaaa;
634
+ --mds-input-focus-bg: rgba(255, 255, 255, 0.15);
635
+ --mds-input-focus-shadow: 0 4px 12px rgba(170, 170, 170, 0.2);
636
+ --mds-error-bg: rgba(200, 200, 200, 0.15);
637
+ --mds-error-border: rgba(200, 200, 200, 0.3);
638
+ }
639
+
640
+ /* Theme Toggle (square, themed) */
641
+ .mds-theme-toggle {
642
+ position: relative;
643
+ display: inline-flex;
644
+ align-items: center;
645
+ justify-content: center;
646
+ width: var(--mds-theme-toggle-size, 2.5rem);
647
+ height: var(--mds-theme-toggle-size, 2.5rem);
648
+ min-width: var(--mds-theme-toggle-size, 2.5rem);
649
+ padding: 0;
650
+ border-radius: var(--mds-spacing-borderRadius-md);
651
+ border: 1px solid var(--mds-dashboard-control-border);
652
+ background-color: var(--mds-dashboard-control-bg);
653
+ color: var(--mds-dashboard-control-color);
654
+ box-shadow: var(--mds-dashboard-control-shadow);
655
+ cursor: pointer;
656
+ outline: none;
657
+ transition: var(--mds-effects-transition-normal);
608
658
  }
609
659
 
660
+ .mds-theme-toggle:hover:not(:disabled) {
661
+ background-color: var(--mds-dashboard-control-bg-hover);
662
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
663
+ }
664
+
665
+ .mds-theme-toggle:disabled {
666
+ opacity: var(--mds-effects-opacity-disabled);
667
+ cursor: not-allowed;
668
+ background-color: transparent !important;
669
+ border: 2px solid var(--mds-dashboard-control-border-disabled);
670
+ box-shadow: none !important;
671
+ }
672
+
673
+ .mds-theme-toggle--sm { --mds-theme-toggle-size: 2rem; }
674
+ .mds-theme-toggle--md { --mds-theme-toggle-size: 2.5rem; }
675
+ .mds-theme-toggle--lg { --mds-theme-toggle-size: 3rem; }
676
+
677
+ /* Theme toggle uses SVG icons directly in React component */
678
+
610
679
  /* Light Theme Support */
611
680
  [data-theme="light"] {
612
681
  --mds-dashboard-control-bg: rgba(0, 0, 0, 0.1);
@@ -621,6 +690,15 @@ html:not([data-theme]) .modal-overlay .mds-modal-card {
621
690
  /* Dropdown Options - Light Theme */
622
691
  --mds-dashboard-control-option-bg: #ffffff;
623
692
  --mds-dashboard-control-option-color: #1a1a1a;
693
+
694
+ /* Login specific variables - Light Theme */
695
+ --mds-login-bg: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 50%, #dcdcdc 100%);
696
+ --mds-input-bg: rgba(255, 255, 255, 0.8);
697
+ --mds-input-focus-border: #666666;
698
+ --mds-input-focus-bg: rgba(255, 255, 255, 1);
699
+ --mds-input-focus-shadow: 0 4px 12px rgba(102, 102, 102, 0.15);
700
+ --mds-error-bg: rgba(150, 150, 150, 0.1);
701
+ --mds-error-border: rgba(150, 150, 150, 0.3);
624
702
  }
625
703
 
626
704
  /* Form Input Styles */
@@ -0,0 +1,19 @@
1
+ import React, { SelectHTMLAttributes } from 'react';
2
+ export interface SelectOption {
3
+ label: React.ReactNode;
4
+ value: string;
5
+ }
6
+ export interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
7
+ options?: SelectOption[];
8
+ variant?: 'base' | 'dashboard';
9
+ containerClassName?: string;
10
+ }
11
+ /**
12
+ * Select Component (Design System)
13
+ *
14
+ * Provides a themed select element. The `dashboard` variant uses the
15
+ * dashboard control styles/tokens to match the Refresh button styling
16
+ * across light/dark themes.
17
+ */
18
+ export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
19
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGhE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAE1E,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAE/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,uFAsCjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Select, type SelectProps, type SelectOption } from './Select';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/Select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export interface ThemeToggleProps {
3
+ /**
4
+ * Size variant of the toggle button
5
+ * @default 'md'
6
+ */
7
+ size?: 'sm' | 'md' | 'lg';
8
+ /**
9
+ * CSS class name to apply
10
+ */
11
+ className?: string;
12
+ /**
13
+ * Whether the toggle is disabled
14
+ * @default false
15
+ */
16
+ disabled?: boolean;
17
+ /**
18
+ * Callback when theme changes
19
+ */
20
+ onChange?: (theme: 'light' | 'dark') => void;
21
+ /**
22
+ * Storage key for persisting theme preference
23
+ * @default 'theme'
24
+ */
25
+ storageKey?: string;
26
+ }
27
+ export default function ThemeToggle({ size, className, disabled, onChange, storageKey }: ThemeToggleProps): React.JSX.Element;
28
+ //# sourceMappingURL=ThemeToggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/ThemeToggle/ThemeToggle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IAE7C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,IAAW,EACX,SAAc,EACd,QAAgB,EAChB,QAAQ,EACR,UAAoB,EACrB,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuFtC"}
@@ -0,0 +1,3 @@
1
+ export { default as ThemeToggle } from './ThemeToggle';
2
+ export type { ThemeToggleProps } from './ThemeToggle';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/react/ThemeToggle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,13 +1,17 @@
1
1
  export { GlassCard, type GlassCardProps } from './GlassCard';
2
2
  export { Typography, BrandLogo, type TypographyProps, type BrandLogoProps } from './Typography';
3
3
  export { Button, type ButtonProps } from './Button';
4
+ export { Select, type SelectProps } from './Select';
5
+ export { ThemeToggle, type ThemeToggleProps } from './ThemeToggle';
4
6
  export { cn } from '../../utils/cn';
5
7
  export * from './GlassCard';
6
8
  export * from './Typography';
7
9
  export * from './Button';
10
+ export * from './Select';
8
11
  export * from './Modal/Modal';
9
12
  export * from './Modal/ModalHeader';
10
13
  export * from './Modal/ModalBody';
11
14
  export * from './Modal/ModalFooter';
12
15
  export * from './Modal/ConfirmDialog';
16
+ export * from './ThemeToggle';
13
17
  //# sourceMappingURL=index.d.ts.map