mithril-materialized 2.0.0-beta.5 → 2.0.0-beta.6

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,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
+ }