mithril-materialized 2.0.0-beta.1 → 2.0.0-beta.10

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 (68) hide show
  1. package/README.md +286 -306
  2. package/dist/advanced.css +1888 -0
  3. package/dist/autocomplete.d.ts +3 -3
  4. package/dist/breadcrumb.d.ts +53 -0
  5. package/dist/button.d.ts +10 -10
  6. package/dist/carousel.d.ts +2 -2
  7. package/dist/chip.d.ts +2 -2
  8. package/dist/code-block.d.ts +2 -2
  9. package/dist/collapsible.d.ts +2 -2
  10. package/dist/collection.d.ts +2 -2
  11. package/dist/components.css +2310 -0
  12. package/dist/core.css +3402 -0
  13. package/dist/datepicker.d.ts +66 -0
  14. package/dist/dropdown.d.ts +2 -2
  15. package/dist/file-upload.d.ts +34 -0
  16. package/dist/floating-action-button.d.ts +2 -2
  17. package/dist/forms.css +2284 -0
  18. package/dist/index.css +1483 -167
  19. package/dist/index.d.ts +12 -1
  20. package/dist/index.esm.js +3694 -1717
  21. package/dist/index.js +3714 -1716
  22. package/dist/index.min.css +8 -0
  23. package/dist/index.umd.js +3714 -1716
  24. package/dist/input-options.d.ts +1 -1
  25. package/dist/input.d.ts +9 -9
  26. package/dist/label.d.ts +4 -2
  27. package/dist/material-box.d.ts +2 -2
  28. package/dist/modal.d.ts +2 -2
  29. package/dist/option.d.ts +4 -4
  30. package/dist/pagination.d.ts +2 -2
  31. package/dist/parallax.d.ts +2 -2
  32. package/dist/pickers.css +487 -0
  33. package/dist/pushpin.d.ts +32 -0
  34. package/dist/radio.d.ts +4 -4
  35. package/dist/search-select.d.ts +2 -2
  36. package/dist/select.d.ts +2 -2
  37. package/dist/sidenav.d.ts +76 -0
  38. package/dist/switch.d.ts +2 -2
  39. package/dist/tabs.d.ts +2 -4
  40. package/dist/theme-switcher.d.ts +49 -0
  41. package/dist/timepicker.d.ts +42 -0
  42. package/dist/toast.d.ts +45 -0
  43. package/dist/tooltip.d.ts +59 -0
  44. package/dist/utilities.css +3197 -0
  45. package/dist/wizard.d.ts +58 -0
  46. package/package.json +16 -8
  47. package/sass/components/_breadcrumb.scss +248 -0
  48. package/sass/components/_buttons.scss +3 -3
  49. package/sass/components/_chips.scss +8 -8
  50. package/sass/components/_collapsible.scss +8 -8
  51. package/sass/components/_datepicker.scss +45 -14
  52. package/sass/components/_dropdown.scss +5 -5
  53. package/sass/components/_file-upload.scss +228 -0
  54. package/sass/components/_global.scss +7 -5
  55. package/sass/components/_modal.scss +5 -2
  56. package/sass/components/_navbar.scss +13 -5
  57. package/sass/components/_sidenav.scss +164 -7
  58. package/sass/components/_tabs.scss +5 -4
  59. package/sass/components/_theme-switcher.scss +120 -0
  60. package/sass/components/_theme-variables.scss +205 -0
  61. package/sass/components/_timepicker.scss +179 -87
  62. package/sass/components/_wizard.scss +416 -0
  63. package/sass/components/forms/_input-fields.scss +34 -12
  64. package/sass/components/forms/_radio-buttons.scss +10 -10
  65. package/sass/components/forms/_select.scss +8 -8
  66. package/sass/components/forms/_switches.scss +6 -6
  67. package/sass/materialize.scss +7 -0
  68. package/dist/pickers.d.ts +0 -130
@@ -0,0 +1,228 @@
1
+ // File Upload Component Styles
2
+
3
+ .file-upload-container {
4
+ margin-bottom: 1rem;
5
+ }
6
+
7
+ .file-upload-area {
8
+ border: 2px dashed var(--mm-border-color, rgba(0, 0, 0, 0.12));
9
+ border-radius: 0.5rem;
10
+ padding: 2rem;
11
+ text-align: center;
12
+ cursor: pointer;
13
+ transition: all 0.2s ease;
14
+ background: var(--mm-input-background, #ffffff);
15
+
16
+ &:hover:not(.disabled) {
17
+ border-color: var(--mm-primary-color, #26a69a);
18
+ background: var(--mm-surface-color, #f5f5f5);
19
+ }
20
+
21
+ &.drag-over {
22
+ border-color: var(--mm-primary-color, #26a69a);
23
+ background: var(--mm-primary-color-light, rgba(38, 166, 154, 0.1));
24
+ transform: scale(1.02);
25
+ }
26
+
27
+ &.disabled {
28
+ opacity: 0.6;
29
+ cursor: not-allowed;
30
+ background: var(--mm-border-color, rgba(0, 0, 0, 0.05));
31
+ }
32
+
33
+ &.error {
34
+ border-color: #f44336;
35
+ }
36
+
37
+ &.has-files {
38
+ padding: 1rem;
39
+ }
40
+ }
41
+
42
+ .file-upload-content {
43
+ .file-upload-icon {
44
+ font-size: 3rem;
45
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
46
+ margin-bottom: 0.5rem;
47
+ }
48
+
49
+ .file-upload-label {
50
+ font-size: 1.1rem;
51
+ font-weight: 500;
52
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
53
+ margin: 0.5rem 0;
54
+ }
55
+
56
+ .file-upload-helper {
57
+ font-size: 0.875rem;
58
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
59
+ margin: 0.25rem 0;
60
+ }
61
+
62
+ .file-upload-types {
63
+ font-size: 0.75rem;
64
+ color: var(--mm-text-hint, rgba(0, 0, 0, 0.38));
65
+ margin: 0.25rem 0 0 0;
66
+ font-style: italic;
67
+ }
68
+ }
69
+
70
+ .file-upload-error {
71
+ color: #f44336;
72
+ font-size: 0.875rem;
73
+ margin-top: 0.5rem;
74
+ text-align: left;
75
+ }
76
+
77
+ .file-upload-list {
78
+ margin-top: 1rem;
79
+
80
+ h6 {
81
+ margin: 0 0 0.5rem 0;
82
+ font-size: 0.875rem;
83
+ font-weight: 600;
84
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
85
+ }
86
+ }
87
+
88
+ .file-upload-item {
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 1rem;
92
+ padding: 0.75rem;
93
+ margin-bottom: 0.5rem;
94
+ background: var(--mm-surface-color, #ffffff);
95
+ border: 1px solid var(--mm-border-color, rgba(0, 0, 0, 0.12));
96
+ border-radius: 0.5rem;
97
+ transition: all 0.2s ease;
98
+
99
+ &:hover {
100
+ background: var(--mm-card-background, #f5f5f5);
101
+ }
102
+
103
+ .file-preview {
104
+ flex-shrink: 0;
105
+ width: 3rem;
106
+ height: 3rem;
107
+ border-radius: 0.25rem;
108
+ overflow: hidden;
109
+ background: var(--mm-border-color, rgba(0, 0, 0, 0.05));
110
+
111
+ img {
112
+ width: 100%;
113
+ height: 100%;
114
+ object-fit: cover;
115
+ }
116
+ }
117
+
118
+ .file-info {
119
+ flex: 1;
120
+ min-width: 0;
121
+
122
+ .file-name {
123
+ font-weight: 500;
124
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
125
+ margin-bottom: 0.25rem;
126
+ overflow: hidden;
127
+ text-overflow: ellipsis;
128
+ white-space: nowrap;
129
+ }
130
+
131
+ .file-details {
132
+ display: flex;
133
+ gap: 1rem;
134
+ font-size: 0.75rem;
135
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
136
+ }
137
+
138
+ .file-progress {
139
+ margin-top: 0.5rem;
140
+
141
+ .progress {
142
+ height: 0.25rem;
143
+ background-color: var(--mm-border-color, rgba(0, 0, 0, 0.12));
144
+ border-radius: 0.125rem;
145
+ overflow: hidden;
146
+
147
+ .determinate {
148
+ background-color: var(--mm-primary-color, #26a69a);
149
+ height: 100%;
150
+ transition: width 0.3s ease;
151
+ }
152
+ }
153
+ }
154
+
155
+ .file-error {
156
+ color: #f44336;
157
+ font-size: 0.75rem;
158
+ margin-top: 0.25rem;
159
+ }
160
+ }
161
+
162
+ .file-remove {
163
+ flex-shrink: 0;
164
+ width: 2rem;
165
+ height: 2rem;
166
+ border-radius: 50%;
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: center;
170
+ background: transparent;
171
+ border: none;
172
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
173
+ cursor: pointer;
174
+ transition: all 0.2s ease;
175
+
176
+ &:hover {
177
+ background: rgba(244, 67, 54, 0.1);
178
+ color: #f44336;
179
+ }
180
+
181
+ .material-icons {
182
+ font-size: 1.25rem;
183
+ }
184
+ }
185
+ }
186
+
187
+ // Responsive adjustments
188
+ @media (max-width: 600px) {
189
+ .file-upload-area {
190
+ padding: 1.5rem 1rem;
191
+
192
+ .file-upload-content {
193
+ .file-upload-icon {
194
+ font-size: 2.5rem;
195
+ }
196
+
197
+ .file-upload-label {
198
+ font-size: 1rem;
199
+ }
200
+ }
201
+ }
202
+
203
+ .file-upload-item {
204
+ gap: 0.75rem;
205
+ padding: 0.5rem;
206
+
207
+ .file-preview {
208
+ width: 2.5rem;
209
+ height: 2.5rem;
210
+ }
211
+
212
+ .file-info {
213
+ .file-details {
214
+ flex-direction: column;
215
+ gap: 0.25rem;
216
+ }
217
+ }
218
+ }
219
+ }
220
+
221
+ // Dark theme specific adjustments
222
+ [data-theme="dark"] {
223
+ .file-upload-area {
224
+ &.drag-over {
225
+ background: var(--mm-primary-color-dark, rgba(38, 166, 154, 0.2));
226
+ }
227
+ }
228
+ }
@@ -523,17 +523,18 @@ td, th{
523
523
  // Collections
524
524
  .collection {
525
525
  margin: variables.$element-top-margin 0 variables.$element-bottom-margin 0;
526
- border: 1px solid variables.$collection-border-color;
526
+ border: 1px solid var(--mm-border-color, variables.$collection-border-color);
527
527
  border-radius: 2px;
528
528
  overflow: hidden;
529
529
  position: relative;
530
530
 
531
531
  .collection-item {
532
- background-color: variables.$collection-bg-color;
532
+ background-color: var(--mm-surface-color, variables.$collection-bg-color);
533
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
533
534
  line-height: variables.$collection-line-height;
534
535
  padding: 10px 20px;
535
536
  margin: 0;
536
- border-bottom: 1px solid variables.$collection-border-color;
537
+ border-bottom: 1px solid var(--mm-border-color, variables.$collection-border-color);
537
538
 
538
539
  // Avatar Collection
539
540
  &.avatar {
@@ -604,8 +605,9 @@ td, th{
604
605
 
605
606
  &.with-header {
606
607
  .collection-header {
607
- background-color: variables.$collection-bg-color;
608
- border-bottom: 1px solid variables.$collection-border-color;
608
+ background-color: var(--mm-surface-color, variables.$collection-bg-color);
609
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
610
+ border-bottom: 1px solid var(--mm-border-color, variables.$collection-border-color);
609
611
  padding: 10px 20px;
610
612
  }
611
613
  .collection-item {
@@ -12,7 +12,8 @@
12
12
  position: fixed;
13
13
  left: 0;
14
14
  right: 0;
15
- background-color: #fafafa;
15
+ background-color: var(--mm-modal-background, #fafafa);
16
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
16
17
  padding: 0;
17
18
  max-height: 70%;
18
19
  width: 55%;
@@ -32,6 +33,8 @@
32
33
 
33
34
  .modal-content {
34
35
  padding: 24px;
36
+ background-color: var(--mm-modal-background, #fafafa);
37
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
35
38
  }
36
39
  .modal-close {
37
40
  cursor: pointer;
@@ -39,7 +42,7 @@
39
42
 
40
43
  .modal-footer {
41
44
  border-radius: 0 0 2px 2px;
42
- background-color: #fafafa;
45
+ background-color: var(--mm-modal-background, #fafafa);
43
46
  padding: 4px 6px;
44
47
  height: 56px;
45
48
  width: 100%;
@@ -16,14 +16,14 @@ nav {
16
16
  }
17
17
  }
18
18
 
19
- color: variables.$navbar-font-color;
19
+ color: var(--mm-nav-text, variables.$navbar-font-color);
20
20
  @extend .z-depth-1 !optional;
21
- background-color: variables.$primary-color;
21
+ background-color: var(--mm-nav-background, variables.$primary-color);
22
22
  width: 100%;
23
23
  height: variables.$navbar-height-mobile;
24
24
  line-height: variables.$navbar-line-height-mobile;
25
25
 
26
- a { color: variables.$navbar-font-color; }
26
+ a { color: var(--mm-nav-text, variables.$navbar-font-color); }
27
27
 
28
28
  i,
29
29
  [class^="mdi-"], [class*="mdi-"],
@@ -120,7 +120,15 @@ nav {
120
120
  padding: 0;
121
121
 
122
122
  &.active {
123
- background-color: rgba(0,0,0,.1);
123
+ background-color: var(--mm-primary-color-light, rgba(0,0,0,.1));
124
+
125
+ a {
126
+ color: var(--mm-nav-active-text, variables.$navbar-font-color);
127
+ }
128
+
129
+ i, .material-icons {
130
+ color: var(--mm-nav-active-text, variables.$navbar-font-color);
131
+ }
124
132
  }
125
133
  }
126
134
  a {
@@ -182,7 +190,7 @@ nav {
182
190
  color: rgba(255,255,255,.7);
183
191
  transition: color .3s;
184
192
  }
185
- &.active i { color: variables.$navbar-font-color; }
193
+ &.active i { color: var(--mm-nav-text, variables.$navbar-font-color); }
186
194
  }
187
195
  }
188
196
  }
@@ -2,6 +2,114 @@
2
2
  @use "variables";
3
3
  @use "global";
4
4
 
5
+ // Modern Sidenav Component Styles (v2.0+)
6
+ .sidenav-container {
7
+ position: relative;
8
+ z-index: 997;
9
+ }
10
+
11
+ .sidenav-backdrop {
12
+ position: fixed;
13
+ top: 0;
14
+ left: 0;
15
+ right: 0;
16
+ bottom: 0;
17
+ width: 100%;
18
+ height: 100%;
19
+ background: var(--mm-overlay-background, rgba(0, 0, 0, 0.5));
20
+ opacity: 0;
21
+ visibility: hidden;
22
+ transition: opacity 0.3s ease, visibility 0.3s ease;
23
+ z-index: 998;
24
+ cursor: pointer;
25
+
26
+ &.show {
27
+ opacity: 1;
28
+ visibility: visible;
29
+ }
30
+ }
31
+
32
+ .sidenav-link {
33
+ display: flex;
34
+ align-items: center;
35
+ padding: 0.75rem 1rem;
36
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
37
+ text-decoration: none;
38
+ transition: background-color 0.2s ease, color 0.2s ease;
39
+ cursor: pointer;
40
+ min-height: 48px;
41
+
42
+ &:hover:not(.disabled) {
43
+ background: var(--mm-border-color, rgba(0, 0, 0, 0.12));
44
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
45
+ text-decoration: none;
46
+ }
47
+
48
+ &.active {
49
+ background: var(--mm-primary-color-light, rgba(38, 166, 154, 0.1));
50
+ color: var(--mm-primary-color, #26a69a);
51
+
52
+ .sidenav-icon {
53
+ color: var(--mm-primary-color, #26a69a);
54
+ }
55
+ }
56
+
57
+ &.disabled {
58
+ color: var(--mm-text-disabled, rgba(0, 0, 0, 0.38));
59
+ cursor: not-allowed;
60
+
61
+ .sidenav-icon {
62
+ color: var(--mm-text-disabled, rgba(0, 0, 0, 0.38));
63
+ }
64
+ }
65
+ }
66
+
67
+ .sidenav-icon {
68
+ margin-right: 1rem;
69
+ font-size: 1.5rem;
70
+ width: 24px;
71
+ height: 24px;
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
76
+ flex-shrink: 0;
77
+ }
78
+
79
+ .sidenav-text {
80
+ font-size: 0.875rem;
81
+ font-weight: 500;
82
+ line-height: 1.5;
83
+ overflow: hidden;
84
+ text-overflow: ellipsis;
85
+ white-space: nowrap;
86
+ }
87
+
88
+ .sidenav-divider {
89
+ height: 1px;
90
+ background: var(--mm-divider-color, rgba(0, 0, 0, 0.12));
91
+ margin: 0.5rem 0;
92
+ }
93
+
94
+ .sidenav-subheader {
95
+ padding: 1rem 1rem 0.5rem 1rem;
96
+ font-size: 0.75rem;
97
+ font-weight: 600;
98
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
99
+ text-transform: uppercase;
100
+ letter-spacing: 0.5px;
101
+ line-height: 1.5;
102
+ }
103
+
104
+ .sidenav-content {
105
+ padding: 0;
106
+ height: 100%;
107
+ display: flex;
108
+ flex-direction: column;
109
+ }
110
+
111
+ // Legacy Sidenav Styles (maintain backward compatibility)
112
+
5
113
  .sidenav {
6
114
  position: fixed;
7
115
  width: variables.$sidenav-width;
@@ -13,14 +121,51 @@
13
121
  height: calc(100% + 60px);
14
122
  height: -moz-calc(100%); //Temporary Firefox Fix
15
123
  padding-bottom: 60px;
16
- background-color: variables.$sidenav-bg-color;
124
+ background-color: var(--mm-surface-color, variables.$sidenav-bg-color);
17
125
  z-index: 999;
18
126
  overflow-y: auto;
19
127
  will-change: transform;
20
128
  backface-visibility: hidden;
21
129
  transform: translateX(-105%);
130
+ transition: transform 0.3s ease, left 0.3s ease, right 0.3s ease;
22
131
 
23
132
  @extend .z-depth-1 !optional;
133
+
134
+ // New component position variants
135
+ &.sidenav-left {
136
+ left: 0;
137
+ }
138
+
139
+ &.sidenav-right {
140
+ right: 0;
141
+ left: auto;
142
+ transform: translateX(100%);
143
+ }
144
+
145
+ // New component mode variants
146
+ &.sidenav-overlay {
147
+ position: fixed;
148
+ }
149
+
150
+ &.sidenav-push {
151
+ position: relative;
152
+ box-shadow: var(--mm-border-color, rgba(0, 0, 0, 0.12)) 1px 0 0 0;
153
+ }
154
+
155
+ // New component state variants
156
+ &.closed {
157
+ &.sidenav-left {
158
+ transform: translateX(-100%);
159
+ }
160
+
161
+ &.sidenav-right {
162
+ transform: translateX(100%);
163
+ }
164
+ }
165
+
166
+ &.open {
167
+ transform: translateX(0);
168
+ }
24
169
 
25
170
  // Right Align
26
171
  &.right-aligned {
@@ -44,9 +189,9 @@
44
189
 
45
190
  // Style non btn anchors
46
191
  li > a:not(.btn):not(.btn-large):not(.btn-flat):not(.btn-floating) {
47
- &:hover { background-color: rgba(0,0,0,.05);}
192
+ &:hover { background-color: var(--mm-border-color, rgba(0,0,0,.05));}
48
193
 
49
- color: variables.$sidenav-font-color;
194
+ color: var(--mm-text-primary, variables.$sidenav-font-color);
50
195
  display: block;
51
196
  font-size: variables.$sidenav-font-size;
52
197
  font-weight: 500;
@@ -62,7 +207,7 @@
62
207
  line-height: variables.$sidenav-line-height;
63
208
  margin: 0 (variables.$sidenav-padding * 2) 0 0;
64
209
  width: math.div(variables.$sidenav-item-height, 2);
65
- color: rgba(0,0,0,.54);
210
+ color: var(--mm-text-secondary, rgba(0,0,0,.54));
66
211
  }
67
212
  }
68
213
 
@@ -82,10 +227,14 @@
82
227
 
83
228
  cursor: initial;
84
229
  pointer-events: none;
85
- color: rgba(0,0,0,.54);
230
+ color: var(--mm-text-secondary, rgba(0,0,0,.54));
86
231
  font-size: variables.$sidenav-font-size;
87
232
  font-weight: 500;
88
233
  line-height: variables.$sidenav-line-height;
234
+ padding: 0 (variables.$sidenav-padding * 2);
235
+ height: variables.$sidenav-item-height;
236
+ display: flex;
237
+ align-items: center;
89
238
  }
90
239
 
91
240
  .user-view {
@@ -205,9 +354,17 @@
205
354
  top: 0;
206
355
  left: 0;
207
356
  right: 0;
357
+ bottom: 0;
358
+ width: 100%;
359
+ height: 100%;
208
360
  opacity: 0;
209
- height: 120vh;
210
- background-color: rgba(0,0,0,.5);
361
+ background-color: var(--mm-overlay-background, rgba(0,0,0,.5));
211
362
  z-index: 997;
212
363
  display: none;
364
+ transition: opacity 0.3s ease;
365
+ }
366
+
367
+ // Ensure overlay sidenav doesn't affect main content layout
368
+ .sidenav-overlay {
369
+ pointer-events: auto;
213
370
  }
@@ -34,7 +34,8 @@
34
34
  overflow-y: hidden;
35
35
  height: 48px;
36
36
  width: 100%;
37
- background-color: variables.$tabs-bg-color;
37
+ background-color: var(--mm-background-color, variables.$tabs-bg-color);
38
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
38
39
  margin: 0 auto;
39
40
  white-space: nowrap;
40
41
 
@@ -57,10 +58,10 @@
57
58
  &:hover,
58
59
  &.active {
59
60
  background-color: transparent;
60
- color: variables.$tabs-text-color;
61
+ color: var(--mm-primary-color, variables.$tabs-text-color);
61
62
  }
62
63
 
63
- color: rgba(variables.$tabs-text-color, .7);
64
+ color: var(--mm-text-secondary, rgba(variables.$tabs-text-color, .7));
64
65
  display: block;
65
66
  width: 100%;
66
67
  height: 100%;
@@ -73,7 +74,7 @@
73
74
 
74
75
  &.disabled a,
75
76
  &.disabled a:hover {
76
- color: rgba(variables.$tabs-text-color, .4);
77
+ color: var(--mm-text-disabled, rgba(variables.$tabs-text-color, .4));
77
78
  cursor: default;
78
79
  }
79
80
  }
@@ -0,0 +1,120 @@
1
+ // Theme Switcher Component Styles
2
+
3
+ .theme-switcher {
4
+ display: flex;
5
+ align-items: center;
6
+ gap: 0.5rem;
7
+
8
+ .theme-switcher-label {
9
+ font-size: 0.875rem;
10
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
11
+ font-weight: 500;
12
+ }
13
+
14
+ .theme-switcher-buttons {
15
+ display: flex;
16
+ background: var(--mm-surface-color, #ffffff);
17
+ border: 1px solid var(--mm-border-color, rgba(0, 0, 0, 0.12));
18
+ border-radius: 0.5rem;
19
+ overflow: hidden;
20
+
21
+ .btn-flat {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: 0.25rem;
25
+ padding: 0.5rem 0.75rem;
26
+ margin: 0;
27
+ border: none;
28
+ background: transparent;
29
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
30
+ font-size: 0.875rem;
31
+ border-radius: 0;
32
+ min-width: auto;
33
+ height: auto;
34
+ line-height: 1;
35
+ text-transform: none;
36
+ transition: all 0.2s ease;
37
+ cursor: pointer;
38
+
39
+ &:hover {
40
+ background: var(--mm-border-color, rgba(0, 0, 0, 0.12));
41
+ color: var(--mm-text-primary, rgba(0, 0, 0, 0.87));
42
+ }
43
+
44
+ &.active {
45
+ background: var(--mm-primary-color, #26a69a);
46
+ color: var(--mm-button-text, #ffffff);
47
+
48
+ &:hover {
49
+ background: var(--mm-primary-color-dark, #00695c);
50
+ }
51
+ }
52
+
53
+ .material-icons {
54
+ font-size: 1rem;
55
+ }
56
+
57
+ span {
58
+ font-size: 0.75rem;
59
+ font-weight: 500;
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ .theme-toggle {
66
+ width: 2.5rem;
67
+ height: 2.5rem;
68
+ border-radius: 50%;
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ background: var(--mm-surface-color, #ffffff);
73
+ border: 1px solid var(--mm-border-color, rgba(0, 0, 0, 0.12));
74
+ color: var(--mm-text-secondary, rgba(0, 0, 0, 0.6));
75
+ cursor: pointer;
76
+ transition: all 0.2s ease;
77
+
78
+ &:hover {
79
+ background: var(--mm-primary-color, #26a69a);
80
+ color: var(--mm-button-text, #ffffff);
81
+ border-color: var(--mm-primary-color, #26a69a);
82
+ }
83
+
84
+ .material-icons {
85
+ font-size: 1.25rem;
86
+ }
87
+ }
88
+
89
+ // Navbar theme toggle specific styles
90
+ nav .theme-toggle {
91
+ background: transparent;
92
+ border: none;
93
+ border-radius: 0;
94
+ width: 64px;
95
+ height: 64px;
96
+
97
+ &:hover {
98
+ background: rgba(255, 255, 255, 0.1);
99
+ border: none;
100
+ }
101
+
102
+ &:focus {
103
+ background: rgba(255, 255, 255, 0.1);
104
+ }
105
+ }
106
+
107
+ // Responsive adjustments
108
+ @media (max-width: 600px) {
109
+ .theme-switcher {
110
+ .theme-switcher-buttons {
111
+ .btn-flat {
112
+ padding: 0.5rem;
113
+
114
+ span {
115
+ display: none;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }