mtrl 0.5.2 → 0.5.3

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 (69) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/package.json +1 -1
  4. package/dist/styles.css +1 -1
  5. package/package.json +3 -2
  6. package/src/styles/abstract/_base.scss +2 -0
  7. package/src/styles/abstract/_config.scss +28 -0
  8. package/src/styles/abstract/_functions.scss +124 -0
  9. package/src/styles/abstract/_mixins.scss +401 -0
  10. package/src/styles/abstract/_theme.scss +269 -0
  11. package/src/styles/abstract/_variables.scss +338 -0
  12. package/src/styles/base/_reset.scss +86 -0
  13. package/src/styles/base/_typography.scss +155 -0
  14. package/src/styles/components/_badge.scss +183 -0
  15. package/src/styles/components/_bottom-app-bar.scss +103 -0
  16. package/src/styles/components/_button.scss +756 -0
  17. package/src/styles/components/_card.scss +401 -0
  18. package/src/styles/components/_carousel.scss +645 -0
  19. package/src/styles/components/_checkbox.scss +231 -0
  20. package/src/styles/components/_chips.scss +639 -0
  21. package/src/styles/components/_datepicker.scss +358 -0
  22. package/src/styles/components/_dialog.scss +259 -0
  23. package/src/styles/components/_divider.scss +57 -0
  24. package/src/styles/components/_extended-fab.scss +309 -0
  25. package/src/styles/components/_fab.scss +244 -0
  26. package/src/styles/components/_list.scss +774 -0
  27. package/src/styles/components/_menu.scss +245 -0
  28. package/src/styles/components/_navigation-mobile.scss +244 -0
  29. package/src/styles/components/_navigation-system.scss +151 -0
  30. package/src/styles/components/_navigation.scss +407 -0
  31. package/src/styles/components/_progress.scss +101 -0
  32. package/src/styles/components/_radios.scss +187 -0
  33. package/src/styles/components/_search.scss +306 -0
  34. package/src/styles/components/_segmented-button.scss +227 -0
  35. package/src/styles/components/_select.scss +274 -0
  36. package/src/styles/components/_sheet.scss +236 -0
  37. package/src/styles/components/_slider.scss +264 -0
  38. package/src/styles/components/_snackbar.scss +211 -0
  39. package/src/styles/components/_switch.scss +305 -0
  40. package/src/styles/components/_tabs.scss +421 -0
  41. package/src/styles/components/_textfield.scss +1024 -0
  42. package/src/styles/components/_timepicker.scss +451 -0
  43. package/src/styles/components/_tooltip.scss +241 -0
  44. package/src/styles/components/_top-app-bar.scss +225 -0
  45. package/src/styles/main.scss +129 -0
  46. package/src/styles/themes/_autumn.scss +105 -0
  47. package/src/styles/themes/_base-theme.scss +85 -0
  48. package/src/styles/themes/_baseline.scss +173 -0
  49. package/src/styles/themes/_bluekhaki.scss +125 -0
  50. package/src/styles/themes/_brownbeige.scss +125 -0
  51. package/src/styles/themes/_browngreen.scss +125 -0
  52. package/src/styles/themes/_forest.scss +77 -0
  53. package/src/styles/themes/_greenbeige.scss +125 -0
  54. package/src/styles/themes/_index.scss +19 -0
  55. package/src/styles/themes/_material.scss +125 -0
  56. package/src/styles/themes/_ocean.scss +77 -0
  57. package/src/styles/themes/_sageivory.scss +125 -0
  58. package/src/styles/themes/_spring.scss +77 -0
  59. package/src/styles/themes/_summer.scss +87 -0
  60. package/src/styles/themes/_sunset.scss +60 -0
  61. package/src/styles/themes/_tealcaramel.scss +125 -0
  62. package/src/styles/themes/_winter.scss +77 -0
  63. package/src/styles/utilities/_colors.scss +154 -0
  64. package/src/styles/utilities/_flexbox.scss +194 -0
  65. package/src/styles/utilities/_layout.scss +665 -0
  66. package/src/styles/utilities/_ripple.scss +79 -0
  67. package/src/styles/utilities/_spacing.scss +139 -0
  68. package/src/styles/utilities/_typography.scss +178 -0
  69. package/src/styles/utilities/_visibility.scss +142 -0
@@ -0,0 +1,245 @@
1
+ // src/styles/components/_menu.scss
2
+ @use '../../styles/abstract/base' as base;
3
+ @use '../../styles/abstract/variables' as v;
4
+ @use '../../styles/abstract/mixins' as m;
5
+ @use '../../styles/abstract/functions' as f;
6
+ @use '../../styles/abstract/theme' as t;
7
+
8
+ $prefix: base.$prefix;
9
+
10
+ $component: '#{$prefix}-menu';
11
+
12
+ .#{$component} {
13
+ // Base styles
14
+ @include m.typography('body-medium');
15
+ @include m.shape('extra-small');
16
+
17
+ position: fixed;
18
+ z-index: f.get-z-index('menu');
19
+ min-width: 112px;
20
+ max-width: 280px;
21
+ padding: 8px 0; // Keep padding consistent
22
+ background-color: t.color('surface-container');
23
+ color: t.color('on-surface');
24
+ @include m.elevation(2);
25
+ overflow: hidden;
26
+
27
+ // Initial state - hidden with proper transform origin
28
+ display: block;
29
+ opacity: 0;
30
+ transform-origin: top center; // Default transform origin
31
+ transform: scaleY(0);
32
+ pointer-events: none;
33
+
34
+ // Material Design 3 standard animation curve for menus
35
+ transition:
36
+ transform v.motion('duration-medium1') v.motion('easing-emphasized'),
37
+ opacity v.motion('duration-medium1') v.motion('easing-emphasized');
38
+
39
+ // Visible state
40
+ &--visible {
41
+ opacity: 1;
42
+ transform: scaleY(1);
43
+ pointer-events: auto;
44
+ }
45
+
46
+ // Position variations with appropriate transform origins
47
+ &--position-top,
48
+ &--position-top-start,
49
+ &--position-top-end {
50
+ transform-origin: bottom center;
51
+ }
52
+
53
+ // Submenu styling
54
+ &--submenu {
55
+ position: absolute;
56
+ z-index: f.get-z-index('menu') + 1;
57
+ }
58
+
59
+ // List container
60
+ &-list {
61
+ margin: 0;
62
+ padding: 0;
63
+ list-style: none;
64
+ overflow-y: auto;
65
+ max-height: calc(100vh - 96px);
66
+ @include m.scrollbar;
67
+ width: 100%;
68
+ }
69
+
70
+ // Menu items
71
+ &-item {
72
+ @include m.typography('body-large');
73
+ @include m.flex-row;
74
+
75
+ position: relative;
76
+ min-height: 48px;
77
+ padding: 12px 16px;
78
+ padding-right: 42px;
79
+ cursor: pointer;
80
+ user-select: none;
81
+ color: t.color('on-surface');
82
+ white-space: nowrap;
83
+ text-overflow: ellipsis;
84
+ overflow: hidden;
85
+ width: 100%;
86
+ box-sizing: border-box;
87
+
88
+ // State layer effects
89
+ &:hover {
90
+ @include m.state-layer(t.color('on-surface'), 'hover');
91
+ }
92
+
93
+ &:focus {
94
+ @include m.state-layer(t.color('on-surface'), 'focus');
95
+ outline: none;
96
+ }
97
+
98
+ &:active {
99
+ @include m.state-layer(t.color('on-surface'), 'pressed');
100
+ }
101
+
102
+ // Submenu indicator
103
+ &--submenu {
104
+ padding-right: 48px;
105
+
106
+ &::after {
107
+ content: '';
108
+ position: absolute;
109
+ right: 12px;
110
+ top: 50%;
111
+ transform: translateY(-50%);
112
+ width: 24px;
113
+ height: 24px;
114
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 17l5-5-5-5v10z'/%3E%3C/svg%3E") center / contain no-repeat;
115
+ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 17l5-5-5-5v10z'/%3E%3C/svg%3E") center / contain no-repeat;
116
+ background-color: currentColor;
117
+ opacity: 0.87;
118
+ }
119
+
120
+ &[aria-expanded="true"] {
121
+ @include m.state-layer(t.color('on-surface'), 'hover');
122
+
123
+ &::after {
124
+ opacity: 1;
125
+ }
126
+ }
127
+ }
128
+
129
+ // Disabled state
130
+ &--disabled {
131
+ pointer-events: none;
132
+ color: t.alpha('on-surface', 0.38);
133
+ }
134
+
135
+ // Selected state for select component
136
+ &--selected {
137
+ color: t.color('primary');
138
+
139
+ &::after {
140
+ content: "";
141
+ position: absolute;
142
+ right: 12px;
143
+ top: 50%;
144
+ transform: translateY(-50%);
145
+ width: 18px;
146
+ height: 18px;
147
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolyline points='20 6 9 17 4 12' stroke='white' stroke-width='2' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
148
+ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolyline points='20 6 9 17 4 12' stroke='white' stroke-width='2' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
149
+ background-color: currentColor;
150
+ }
151
+ }
152
+
153
+ // Content containers inside menu items
154
+ &-content {
155
+ display: flex;
156
+ align-items: center;
157
+ width: 100%;
158
+ overflow: hidden;
159
+ }
160
+
161
+ &-icon {
162
+ margin-right: 12px;
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ flex-shrink: 0;
167
+
168
+ svg {
169
+ width: 20px;
170
+ height: 20px;
171
+ }
172
+ }
173
+
174
+ &-text {
175
+ flex: 1;
176
+ white-space: nowrap;
177
+ overflow: hidden;
178
+ text-overflow: ellipsis;
179
+ }
180
+
181
+ &-shortcut {
182
+ margin-left: 12px;
183
+ color: t.color('on-surface-variant');
184
+ flex-shrink: 0;
185
+ }
186
+ }
187
+
188
+ // Divider
189
+ &-divider {
190
+ height: 1px;
191
+ margin: 8px 0;
192
+ background-color: t.color('outline-variant');
193
+ }
194
+
195
+ // Accessibility
196
+ @include m.focus-ring('.#{$component}-item:focus-visible');
197
+
198
+ // Reduced motion preference support
199
+ @include m.reduced-motion {
200
+ transition: opacity 0.1s linear;
201
+ transform: none !important;
202
+
203
+ &--visible {
204
+ transform: none !important;
205
+ }
206
+ }
207
+
208
+ // High contrast mode
209
+ @include m.high-contrast {
210
+ border: 1px solid CurrentColor;
211
+
212
+ .#{$component}-divider {
213
+ background-color: CurrentColor;
214
+ }
215
+
216
+ .#{$component}-item--disabled {
217
+ opacity: 1;
218
+ color: GrayText;
219
+ }
220
+ }
221
+
222
+ // RTL Support
223
+ @include m.rtl {
224
+ transform-origin: top right;
225
+
226
+ &--position-top,
227
+ &--position-top-start,
228
+ &--position-top-end {
229
+ transform-origin: bottom right;
230
+ }
231
+
232
+ .#{$component}-item {
233
+ &--submenu {
234
+ padding-right: 16px;
235
+ padding-left: 48px;
236
+
237
+ &::after {
238
+ right: auto;
239
+ left: 16px;
240
+ transform: translateY(-50%) rotate(180deg);
241
+ }
242
+ }
243
+ }
244
+ }
245
+ }
@@ -0,0 +1,244 @@
1
+ // src/components/navigation/_mobile.scss
2
+ @use '../../styles/abstract/variables' as v;
3
+ @use '../../styles/abstract/mixins' as m;
4
+ @use '../../styles/abstract/base' as base;
5
+ @use '../../styles/abstract/theme' as t;
6
+
7
+ $prefix: base.$prefix;
8
+
9
+ // Mobile navigation overlay
10
+ .#{$prefix}-nav-overlay {
11
+ position: fixed;
12
+ top: 0;
13
+ left: 0;
14
+ right: 0;
15
+ bottom: 0;
16
+ background-color: t.alpha('shadow', 0.5);
17
+ z-index: v.z-index('modal') - 1; // Just below modal level but above most content
18
+ opacity: 0;
19
+ visibility: hidden;
20
+ transition: opacity 0.3s v.motion('easing-standard'), visibility 0.3s v.motion('easing-standard');
21
+
22
+ // Add backdrop blur for a modern effect where supported
23
+ @supports (backdrop-filter: blur(4px)) {
24
+ backdrop-filter: blur(4px);
25
+ background-color: t.alpha('shadow', 0.4);
26
+ }
27
+
28
+ &.active {
29
+ opacity: 1;
30
+ visibility: visible;
31
+ }
32
+ }
33
+
34
+ // Close button for mobile drawer
35
+ .#{$prefix}-nav-close-btn {
36
+ position: absolute;
37
+ top: 12px;
38
+ right: 12px;
39
+ width: 40px;
40
+ height: 40px;
41
+ border-radius: 50%;
42
+ background-color: transparent;
43
+ border: none;
44
+ cursor: pointer;
45
+ display: none; // Hidden by default, shown on mobile
46
+ align-items: center;
47
+ justify-content: center;
48
+ color: t.color('on-surface');
49
+ z-index: 1;
50
+ -webkit-tap-highlight-color: transparent; // Removes default mobile tap highlight
51
+
52
+ &:hover {
53
+ background-color: t.alpha('on-surface', 0.05);
54
+ }
55
+
56
+ // Touch feedback state
57
+ &.active {
58
+ background-color: t.alpha('on-surface', 0.12);
59
+ }
60
+
61
+ &:focus-visible {
62
+ outline: 2px solid t.color('primary');
63
+ outline-offset: 2px;
64
+ }
65
+
66
+ svg {
67
+ width: 24px;
68
+ height: 24px;
69
+ stroke: currentColor;
70
+ }
71
+
72
+ // Ensure WCAG-compliant touch target size
73
+ @media (pointer: coarse) {
74
+ min-width: 48px;
75
+ min-height: 48px;
76
+ }
77
+ }
78
+
79
+ // Body class to prevent scrolling when drawer is open
80
+ .#{$prefix}-body-drawer-open {
81
+ overflow: hidden;
82
+
83
+ // On iOS we need to handle the body position differently
84
+ @supports (-webkit-overflow-scrolling: touch) {
85
+ position: fixed;
86
+ width: 100%;
87
+ height: 100%;
88
+ }
89
+ }
90
+
91
+ // Responsive behavior for navigation system - apply to small screens or touch devices
92
+ @media (max-width: 960px), (pointer: coarse) {
93
+ // Rail navigation
94
+ .#{$prefix}-nav--rail {
95
+ width: 56px;
96
+ z-index: v.z-index('modal') - 1;
97
+ border-right: 1px solid t.color('outline-variant');
98
+
99
+ // Hide labels on mobile
100
+ .#{$prefix}-nav-label {
101
+ display: none;
102
+ }
103
+
104
+ // Center align items
105
+ .#{$prefix}-nav-item {
106
+ justify-content: center;
107
+ height: 56px;
108
+ -webkit-tap-highlight-color: transparent; // Remove default mobile highlight
109
+
110
+ // Increase touch targets for better accessibility
111
+ @media (pointer: coarse) {
112
+ min-height: 48px;
113
+ padding: 12px 8px;
114
+ }
115
+
116
+ // Touch-friendly active state
117
+ &:active {
118
+ background-color: t.alpha('on-surface', 0.12);
119
+ }
120
+ }
121
+
122
+ // Larger icons on mobile
123
+ .#{$prefix}-nav-icon {
124
+ font-size: 1.25rem;
125
+
126
+ // Ensure icon touch target meets WCAG requirements
127
+ @media (pointer: coarse) {
128
+ min-width: 44px;
129
+ min-height: 44px;
130
+ }
131
+ }
132
+ }
133
+
134
+ // Drawer navigation
135
+ .#{$prefix}-nav--drawer {
136
+ position: fixed;
137
+ top: 0;
138
+ bottom: 0;
139
+ left: 0;
140
+ width: 280px;
141
+ max-width: 85vw;
142
+ z-index: v.z-index('modal');
143
+ background-color: t.color('surface');
144
+ box-shadow: v.elevation('level-3');
145
+ transform: translateX(-100%);
146
+ transition: transform 0.3s v.motion('easing-standard');
147
+ overflow-y: auto;
148
+ -webkit-overflow-scrolling: touch; // Smooth scrolling on iOS
149
+
150
+ &:not(.#{$prefix}-nav--hidden) {
151
+ transform: translateX(0);
152
+ }
153
+
154
+ // Optimize drawer items for touch
155
+ .#{$prefix}-nav-item {
156
+ -webkit-tap-highlight-color: transparent;
157
+
158
+ @media (pointer: coarse) {
159
+ min-height: 48px;
160
+ padding: 12px 16px;
161
+ }
162
+
163
+ // Touch feedback
164
+ &:active {
165
+ background-color: t.alpha('on-surface', 0.12);
166
+ }
167
+ }
168
+
169
+ // Support RTL languages
170
+ @include m.rtl {
171
+ left: auto;
172
+ right: 0;
173
+ transform: translateX(100%);
174
+
175
+ &:not(.#{$prefix}-nav--hidden) {
176
+ transform: translateX(0);
177
+ }
178
+ }
179
+ }
180
+ }
181
+
182
+ // Desktop behavior
183
+ @media (min-width: 961px) {
184
+ .#{$prefix}-nav--drawer {
185
+ // For desktop, transition by width instead of transform
186
+ transition: width 0.3s v.motion('easing-standard'), opacity 0.3s v.motion('easing-standard');
187
+ }
188
+
189
+ .#{$prefix}-nav-close-btn {
190
+ display: none !important; // Always hidden on desktop
191
+ }
192
+
193
+ // Hide overlay on desktop
194
+ .#{$prefix}-nav-overlay.active {
195
+ opacity: 0;
196
+ visibility: hidden;
197
+ }
198
+ }
199
+
200
+ // Safe area insets for notched devices like iPhone X and newer
201
+ @supports (padding-bottom: env(safe-area-inset-bottom)) {
202
+ .#{$prefix}-nav--drawer {
203
+ padding-top: env(safe-area-inset-top);
204
+ padding-bottom: env(safe-area-inset-bottom);
205
+ }
206
+
207
+ .#{$prefix}-nav--rail {
208
+ padding-top: env(safe-area-inset-top);
209
+ padding-bottom: env(safe-area-inset-bottom);
210
+ }
211
+
212
+ .#{$prefix}-nav--bar {
213
+ // For bottom navigation bars
214
+ &.#{$prefix}-nav--bottom {
215
+ padding-bottom: env(safe-area-inset-bottom);
216
+ }
217
+ }
218
+ }
219
+
220
+ // Gesture hints for touch interfaces
221
+ @media (pointer: coarse) {
222
+ // Add visual affordance for swipe gesture
223
+ .#{$prefix}-nav--drawer:not(.#{$prefix}-nav--hidden) {
224
+ &::after {
225
+ content: '';
226
+ position: absolute;
227
+ top: 50%;
228
+ right: 0;
229
+ width: 4px;
230
+ height: 40px;
231
+ border-radius: 4px 0 0 4px;
232
+ background-color: t.alpha('on-surface', 0.1);
233
+ transform: translateY(-50%);
234
+ opacity: 0.5;
235
+ // Hide after interaction to avoid cognitive load
236
+ animation: fadeOutAfterDelay 4s forwards;
237
+ }
238
+ }
239
+
240
+ @keyframes fadeOutAfterDelay {
241
+ 0%, 50% { opacity: 0.5; }
242
+ 100% { opacity: 0; }
243
+ }
244
+ }
@@ -0,0 +1,151 @@
1
+ // src/components/navigation/system.scss
2
+
3
+ // Navigation system specific styles
4
+ // These complement the existing navigation component styles
5
+
6
+ $nav-animation-duration: 0.2s;
7
+ $nav-animation-function: cubic-bezier(0.4, 0, 0.2, 1);
8
+
9
+ // Drawer animation states
10
+ .mtrl-nav--drawer {
11
+ transition: transform $nav-animation-duration $nav-animation-function,
12
+ opacity $nav-animation-duration $nav-animation-function;
13
+
14
+ // Hidden state (transform off-screen)
15
+ &.mtrl-nav--hidden {
16
+ transform: translateX(-100%);
17
+ opacity: 0;
18
+ pointer-events: none;
19
+ }
20
+
21
+ // Right positioned drawer
22
+ &.mtrl-nav--right {
23
+ &.mtrl-nav--hidden {
24
+ transform: translateX(100%);
25
+ }
26
+ }
27
+
28
+ // Animation classes
29
+ &.mtrl-nav--animate-in {
30
+ animation: nav-drawer-in $nav-animation-duration $nav-animation-function;
31
+ }
32
+
33
+ &.mtrl-nav--animate-out {
34
+ animation: nav-drawer-out $nav-animation-duration $nav-animation-function;
35
+ }
36
+ }
37
+
38
+ // Navigation system container (optional - for wrapping rail + drawer)
39
+ .mtrl-nav-system {
40
+ display: flex;
41
+ position: relative;
42
+
43
+ // Rail is fixed width
44
+ .mtrl-nav--rail {
45
+ flex: 0 0 auto;
46
+ }
47
+
48
+ // Drawer expands
49
+ .mtrl-nav--drawer {
50
+ flex: 1 0 auto;
51
+ }
52
+ }
53
+
54
+ // Drawer entry animation
55
+ @keyframes nav-drawer-in {
56
+ 0% {
57
+ transform: translateX(-20px);
58
+ opacity: 0;
59
+ }
60
+ 100% {
61
+ transform: translateX(0);
62
+ opacity: 1;
63
+ }
64
+ }
65
+
66
+ // Drawer exit animation
67
+ @keyframes nav-drawer-out {
68
+ 0% {
69
+ transform: translateX(0);
70
+ opacity: 1;
71
+ }
72
+ 100% {
73
+ transform: translateX(-20px);
74
+ opacity: 0;
75
+ }
76
+ }
77
+
78
+ // Right-side drawer animations
79
+ .mtrl-nav--drawer.mtrl-nav--right {
80
+ &.mtrl-nav--animate-in {
81
+ animation: nav-drawer-right-in $nav-animation-duration $nav-animation-function;
82
+ }
83
+
84
+ &.mtrl-nav--animate-out {
85
+ animation: nav-drawer-right-out $nav-animation-duration $nav-animation-function;
86
+ }
87
+ }
88
+
89
+ @keyframes nav-drawer-right-in {
90
+ 0% {
91
+ transform: translateX(20px);
92
+ opacity: 0;
93
+ }
94
+ 100% {
95
+ transform: translateX(0);
96
+ opacity: 1;
97
+ }
98
+ }
99
+
100
+ @keyframes nav-drawer-right-out {
101
+ 0% {
102
+ transform: translateX(0);
103
+ opacity: 1;
104
+ }
105
+ 100% {
106
+ transform: translateX(20px);
107
+ opacity: 0;
108
+ }
109
+ }
110
+
111
+ // Mobile optimizations
112
+ @media (max-width: 960px) {
113
+ .mtrl-nav-system {
114
+ flex-direction: column;
115
+
116
+ .mtrl-nav--rail {
117
+ // Mobile rail can be top or bottom
118
+ &.mtrl-nav--top, &.mtrl-nav--bottom {
119
+ width: 100%;
120
+ }
121
+ }
122
+
123
+ .mtrl-nav--drawer {
124
+ // Mobile drawer takes full width
125
+ width: 100%;
126
+ max-width: 100%;
127
+
128
+ &.mtrl-nav--hidden {
129
+ transform: translateY(-100%);
130
+ }
131
+
132
+ &.mtrl-nav--bottom {
133
+ &.mtrl-nav--hidden {
134
+ transform: translateY(100%);
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+
141
+ // Focus and accessibility enhancements
142
+ .mtrl-nav-system {
143
+ [role="navigation"] {
144
+ &:focus-within {
145
+ outline: 2px solid var(--mtrl-primary-color, #6200ee);
146
+ outline-offset: -2px;
147
+ }
148
+ }
149
+ }
150
+
151
+ @use 'navigation-mobile'