@nuvoui/core 1.0.1 → 1.1.2
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.
- package/dist/nuvoui.css +1 -0
- package/package.json +10 -5
- package/src/styles/index.scss +2 -6
- package/src/styles/layouts/_flex.scss +1 -0
- package/src/styles/mixins-map.scss +1175 -0
- package/src/styles/themes/_theme.scss +0 -1
- package/src/styles/utilities/_display.scss +1 -0
- package/src/styles/utilities/_spacing.scss +33 -14
- package/dist/dark.css +0 -1
- package/dist/index.html +0 -15
- package/dist/light.css +0 -1
- package/dist/main.css +0 -1
- package/dist/main.js +0 -1
- package/src/js/main.js +0 -1
- package/src/logo.png +0 -0
- package/src/logo.svg +0 -12
- package/src/styles/components/_alert.scss +0 -0
- package/src/styles/components/_avatar.scss +0 -0
- package/src/styles/components/_badge.scss +0 -0
- package/src/styles/components/_breadcrumb.scss +0 -0
- package/src/styles/components/_button.scss +0 -261
- package/src/styles/components/_calendar.scss +0 -0
- package/src/styles/components/_card.scss +0 -0
- package/src/styles/components/_checkbox.scss +0 -0
- package/src/styles/components/_dropdown.scss +0 -0
- package/src/styles/components/_form.scss +0 -195
- package/src/styles/components/_hamburger.scss +0 -72
- package/src/styles/components/_modal.scss +0 -0
- package/src/styles/components/_navbar.scss +0 -137
- package/src/styles/components/_pagination.scss +0 -0
- package/src/styles/components/_progress.scss +0 -0
- package/src/styles/components/_radio.scss +0 -0
- package/src/styles/components/_sidebar.scss +0 -0
- package/src/styles/components/_table.scss +0 -0
- package/src/styles/components/_tabs.scss +0 -0
- package/src/styles/components/_tooltip.scss +0 -0
package/dist/main.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})();
|
package/src/js/main.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../styles/index.scss';
|
package/src/logo.png
DELETED
|
Binary file
|
package/src/logo.svg
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<svg width="418" height="418" viewBox="0 0 418 418" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<mask id="mask0_4118_5137" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="418" height="418">
|
|
3
|
-
<rect width="418" height="418" fill="#F1F4D8"/>
|
|
4
|
-
</mask>
|
|
5
|
-
<g mask="url(#mask0_4118_5137)">
|
|
6
|
-
<rect width="418" height="418" fill="#F1F4D8"/>
|
|
7
|
-
<path d="M418 419H77L296.5 262.5L418 201V419Z" fill="#0476A4"/>
|
|
8
|
-
<path d="M316.794 -185.998L487.294 109.316L242.011 -2.52617L128 -76.9983L316.794 -185.998Z" fill="#0476A4"/>
|
|
9
|
-
<line x1="-17.2721" y1="410.484" x2="431.728" y2="185.484" stroke="#5FCFFF" stroke-width="28"/>
|
|
10
|
-
<circle cx="267" cy="183" r="66.5" stroke="#FF7B00" stroke-width="15"/>
|
|
11
|
-
</g>
|
|
12
|
-
</svg>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
// _button.scss
|
|
2
|
-
@use 'sass:map';
|
|
3
|
-
|
|
4
|
-
@use '../utilities/variables' as *;
|
|
5
|
-
@use '../utilities/typography' as *;
|
|
6
|
-
@use '../utilities/borders' as *;
|
|
7
|
-
@use '../themes/theme' as *;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// Button Base Mixins
|
|
11
|
-
@mixin btn-base {
|
|
12
|
-
display: inline-flex;
|
|
13
|
-
align-items: center;
|
|
14
|
-
justify-content: center;
|
|
15
|
-
gap: 0.5rem;
|
|
16
|
-
padding: 0.5rem 1rem;
|
|
17
|
-
border: 1px solid transparent;
|
|
18
|
-
border-radius: 0.375rem;
|
|
19
|
-
font-weight: 500;
|
|
20
|
-
cursor: pointer;
|
|
21
|
-
transition: all 0.2s ease-in-out;
|
|
22
|
-
|
|
23
|
-
&:disabled {
|
|
24
|
-
cursor: not-allowed;
|
|
25
|
-
opacity: 0.65;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Loading state
|
|
29
|
-
&.loading {
|
|
30
|
-
position: relative;
|
|
31
|
-
color: transparent !important;
|
|
32
|
-
pointer-events: none;
|
|
33
|
-
|
|
34
|
-
&::after {
|
|
35
|
-
content: "";
|
|
36
|
-
position: absolute;
|
|
37
|
-
width: 1rem;
|
|
38
|
-
height: 1rem;
|
|
39
|
-
border: 1px solid;
|
|
40
|
-
border-radius: 50%;
|
|
41
|
-
border-right-color: transparent;
|
|
42
|
-
animation: spin 0.75s linear infinite;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Button Variants
|
|
48
|
-
@mixin btn-solid($color) {
|
|
49
|
-
background-color: theme-color($color);
|
|
50
|
-
color: if($color == 'light', black, white); /* var(--text-inverse); */
|
|
51
|
-
|
|
52
|
-
&:disabled { background-color: theme-color($color, 'disabled'); }
|
|
53
|
-
&:hover:not(:disabled) { background-color: theme-color($color, 'hover'); }
|
|
54
|
-
&:active:not(:disabled) { background-color: theme-color($color, 'active'); }
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
@mixin btn-outline($color) {
|
|
58
|
-
background-color: transparent;
|
|
59
|
-
border-color: theme-color($color);
|
|
60
|
-
color: theme-color($color);
|
|
61
|
-
|
|
62
|
-
&:disabled {
|
|
63
|
-
border-color: theme-color($color, 'disabled');
|
|
64
|
-
color: theme-color($color, 'disabled');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
&:hover:not(:disabled) {
|
|
68
|
-
background-color: theme-color($color);
|
|
69
|
-
color: var(--text-inverse);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
&:active:not(:disabled) {
|
|
73
|
-
background-color: theme-color($color, 'active');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
@mixin btn-ghost($color) {
|
|
78
|
-
background-color: transparent;
|
|
79
|
-
color: theme-color($color);
|
|
80
|
-
|
|
81
|
-
&:disabled {
|
|
82
|
-
color: theme-color($color, 'disabled');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
&:hover:not(:disabled) {
|
|
86
|
-
background-color: theme-color($color, '10');
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
&:active:not(:disabled) {
|
|
90
|
-
background-color: theme-color($color, '25');
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Button Sizes
|
|
95
|
-
@mixin btn-size($size) {
|
|
96
|
-
font-size: map.get($font-sizes, $size);
|
|
97
|
-
padding: map.get($padding-map, $size);
|
|
98
|
-
|
|
99
|
-
.btn.icon {
|
|
100
|
-
$icon-sizes: (
|
|
101
|
-
'xs': 0.75rem,
|
|
102
|
-
'sm': 1rem,
|
|
103
|
-
'md': 1.25rem,
|
|
104
|
-
'lg': 1.5rem,
|
|
105
|
-
'xl': 1.75rem
|
|
106
|
-
);
|
|
107
|
-
|
|
108
|
-
width: map.get($icon-sizes, $size);
|
|
109
|
-
height: map.get($icon-sizes, $size);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// Button Shapes
|
|
114
|
-
@mixin btn-shape($shape) {
|
|
115
|
-
@if $shape == 'rounded' {
|
|
116
|
-
@include rounded(0.375rem);
|
|
117
|
-
} @else if $shape == 'pill' {
|
|
118
|
-
border-radius: 9999px;
|
|
119
|
-
} @else if $shape == 'square' {
|
|
120
|
-
border-radius: 0;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
@mixin btn-group-base {
|
|
125
|
-
display: inline-flex;
|
|
126
|
-
position: relative;
|
|
127
|
-
.btn { position: relative; }
|
|
128
|
-
|
|
129
|
-
// Handle z-index for hover states
|
|
130
|
-
.btn:hover { z-index: 1; }
|
|
131
|
-
|
|
132
|
-
// Remove double borders between buttons
|
|
133
|
-
.btn:not(:first-child) { margin-left: -1px; }
|
|
134
|
-
|
|
135
|
-
.btn:not(:first-child, :last-child) { border-radius: 0; }
|
|
136
|
-
|
|
137
|
-
.btn:first-child:dir(ltr) {
|
|
138
|
-
border-top-right-radius: 0;
|
|
139
|
-
border-bottom-right-radius: 0;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.btn:last-child:dir(ltr) {
|
|
143
|
-
border-top-left-radius: 0;
|
|
144
|
-
border-bottom-left-radius: 0;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
@if $enable-rtl {
|
|
148
|
-
.btn:first-child:dir(rtl) {
|
|
149
|
-
border-top-left-radius: 0;
|
|
150
|
-
border-bottom-left-radius: 0;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
.btn:last-child:dir(rtl) {
|
|
154
|
-
border-top-right-radius: 0;
|
|
155
|
-
border-bottom-right-radius: 0;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Base Button Class
|
|
161
|
-
.btn {
|
|
162
|
-
@include btn-base;
|
|
163
|
-
@include btn-size('md');
|
|
164
|
-
@include btn-shape('rounded');
|
|
165
|
-
|
|
166
|
-
// Outline variant
|
|
167
|
-
&.outline {
|
|
168
|
-
@include btn-outline('text-secondary'); // Default outline style
|
|
169
|
-
|
|
170
|
-
// Color variants override
|
|
171
|
-
@each $name, $color in $colors {
|
|
172
|
-
&.#{$name} {
|
|
173
|
-
@include btn-outline($name);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// Ghost variant
|
|
179
|
-
&.ghost {
|
|
180
|
-
@include btn-ghost('text-secondary'); // Default ghost style
|
|
181
|
-
|
|
182
|
-
// Color variants override
|
|
183
|
-
@each $name, $color in $colors {
|
|
184
|
-
&.#{$name} {
|
|
185
|
-
@include btn-ghost($name);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Color variants for solid buttons
|
|
191
|
-
@each $name, $color in $colors {
|
|
192
|
-
&.#{$name} {
|
|
193
|
-
@include btn-solid($name);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
// Icon Only Buttons
|
|
201
|
-
.btn.icon {
|
|
202
|
-
padding: 0.5rem;
|
|
203
|
-
|
|
204
|
-
&.btn-xs { padding: 0.25rem; }
|
|
205
|
-
&.btn-sm { padding: 0.375rem; }
|
|
206
|
-
&.btn-lg { padding: 0.75rem; }
|
|
207
|
-
&.btn-xl { padding: 1rem; }
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Sizes
|
|
211
|
-
.btn-group.xs > .btn, .btn.xs { @include btn-size('xs'); }
|
|
212
|
-
.btn-group.sm > .btn, .btn.sm { @include btn-size('sm'); }
|
|
213
|
-
.btn-group.md > .btn, .btn.md { @include btn-size('md'); }
|
|
214
|
-
.btn-group.lg > .btn, .btn.lg { @include btn-size('lg'); }
|
|
215
|
-
.btn-group.xl > .btn, .btn.xl { @include btn-size('xl'); }
|
|
216
|
-
|
|
217
|
-
// Shapes
|
|
218
|
-
.btn-group.rounded > .btn, .btn.rounded { @include btn-shape('rounded'); }
|
|
219
|
-
.btn-group.pill > .btn, .btn.pill { @include btn-shape('pill'); }
|
|
220
|
-
.btn-group.square > .btn, .btn.square { @include btn-shape('square'); }
|
|
221
|
-
|
|
222
|
-
.btn-group {
|
|
223
|
-
@include btn-group-base;
|
|
224
|
-
|
|
225
|
-
// Color variants for solid buttons
|
|
226
|
-
@each $name, $color in $colors {
|
|
227
|
-
&.#{$name} > .btn{
|
|
228
|
-
@include btn-solid($name);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Outline variant
|
|
234
|
-
.btn-group.outline > .btn {
|
|
235
|
-
@include btn-outline('text-secondary'); // Default outline style
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Color variants override
|
|
239
|
-
@each $name, $color in $colors {
|
|
240
|
-
.btn-group.outline.#{$name} > .btn {
|
|
241
|
-
@include btn-outline($name);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
// Outline variant
|
|
247
|
-
.btn-group.ghost > .btn {
|
|
248
|
-
@include btn-ghost('text-secondary'); // Default outline style
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
// Color variants override
|
|
252
|
-
@each $name, $color in $colors {
|
|
253
|
-
.btn-group.ghost.#{$name} > .btn {
|
|
254
|
-
@include btn-ghost($name);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Loading Animation
|
|
259
|
-
@keyframes spin {
|
|
260
|
-
to { transform: rotate(360deg); }
|
|
261
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
// _forms.scss
|
|
2
|
-
@use 'sass:map';
|
|
3
|
-
@use '../utilities/variables' as *;
|
|
4
|
-
@use '../themes/theme' as Theme;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@mixin form-inline {
|
|
9
|
-
display: flex;
|
|
10
|
-
align-items: center;
|
|
11
|
-
gap: 1rem;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Label Mixins
|
|
15
|
-
@mixin form-label {
|
|
16
|
-
position: absolute;
|
|
17
|
-
left: 1rem;
|
|
18
|
-
top: 50%;
|
|
19
|
-
transform: translateY(-50%);
|
|
20
|
-
transition: all 0.2s ease-in-out;
|
|
21
|
-
color: var(--text-secondary);
|
|
22
|
-
pointer-events: none;
|
|
23
|
-
font-size: 1rem;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
@mixin form-label-float {
|
|
27
|
-
top: 0;
|
|
28
|
-
font-size: 0.875rem;
|
|
29
|
-
transform: translateY(-50%);
|
|
30
|
-
background: var(--bg-primary);
|
|
31
|
-
padding: 0 0.5rem;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Input Mixins
|
|
35
|
-
@mixin form-input {
|
|
36
|
-
width: 100%;
|
|
37
|
-
padding: 0.85rem;
|
|
38
|
-
border: 1px solid Theme.theme-color('border-color');
|
|
39
|
-
border-radius: 0.5rem;
|
|
40
|
-
background: Theme.theme-color('input-bg');
|
|
41
|
-
color: var(--text-primary);
|
|
42
|
-
font-size: 1rem;
|
|
43
|
-
transition: all 0.2s ease-in-out;
|
|
44
|
-
|
|
45
|
-
&:focus {
|
|
46
|
-
outline: none;
|
|
47
|
-
border-color: var(--primary);
|
|
48
|
-
box-shadow: 0 0 0 4px rgba(var(--primary-rgb), 0.1);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
// Handle input with value or placeholder
|
|
54
|
-
@mixin form-group {
|
|
55
|
-
position: relative;
|
|
56
|
-
margin-bottom: 1.5rem;
|
|
57
|
-
|
|
58
|
-
&:has(input:not(:placeholder-shown)) > label.form-label,
|
|
59
|
-
&:has(input:focus) > label.form-label {
|
|
60
|
-
@include form-label-float;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Change label color if input is focused
|
|
64
|
-
&:has(input:focus) > label {
|
|
65
|
-
color: var(--primary);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Validation Mixins
|
|
70
|
-
@mixin form-valid {
|
|
71
|
-
border-color: var(--success);
|
|
72
|
-
|
|
73
|
-
& + label {
|
|
74
|
-
color: var(--success);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@mixin form-invalid {
|
|
79
|
-
border-color: var(--danger);
|
|
80
|
-
|
|
81
|
-
& + label {
|
|
82
|
-
color: var(--danger);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Select Mixins
|
|
87
|
-
@mixin form-select {
|
|
88
|
-
@include form-input;
|
|
89
|
-
|
|
90
|
-
appearance: none;
|
|
91
|
-
background-image: url("data:image/svg+xml,..."); // todo: colored arrow svg
|
|
92
|
-
background-repeat: no-repeat;
|
|
93
|
-
background-position: right 1rem center;
|
|
94
|
-
padding-right: 2.5rem;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Checkbox & Radio Mixins
|
|
98
|
-
@mixin form-selection {
|
|
99
|
-
position: relative;
|
|
100
|
-
display: inline-flex;
|
|
101
|
-
align-items: center;
|
|
102
|
-
cursor: pointer;
|
|
103
|
-
user-select: none;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
@mixin form-selection-input {
|
|
107
|
-
&[type="checkbox"]{
|
|
108
|
-
border-radius: 0.25rem;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
&[type="radio"]{
|
|
112
|
-
border-radius: 20rem;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
appearance: none;
|
|
116
|
-
width: 1.25rem;
|
|
117
|
-
height: 1.25rem;
|
|
118
|
-
border: 2px solid var(--border-color);
|
|
119
|
-
margin-right: 0.5rem;
|
|
120
|
-
cursor: pointer;
|
|
121
|
-
|
|
122
|
-
&:checked {
|
|
123
|
-
background-color: var(--primary); border-color: var(--primary);
|
|
124
|
-
@each $name, $color in $colors {
|
|
125
|
-
&.#{$name} {
|
|
126
|
-
background-color: Theme.theme-color($name); border-color: Theme.theme-color($name);}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
background-image: url("data:image/svg+xml,..."); // todo: colored arrow svg
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Input Sizes
|
|
134
|
-
@mixin input-size($size) {
|
|
135
|
-
font-size: map.get($font-sizes, $size);
|
|
136
|
-
padding: map.get($padding-map, $size);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Classes
|
|
140
|
-
.form-group { @include form-group; }
|
|
141
|
-
.form-inline { @include form-inline; }
|
|
142
|
-
.form-label { @include form-label; }
|
|
143
|
-
.form-input { @include form-input; }
|
|
144
|
-
.form-select { @include form-select; }
|
|
145
|
-
.form-check, .form-radio { @include form-selection; }
|
|
146
|
-
.form-check-input, .form-radio-input { @include form-selection-input; }
|
|
147
|
-
|
|
148
|
-
// Validation Classes
|
|
149
|
-
.is-valid { @include form-valid; }
|
|
150
|
-
.is-invalid { @include form-invalid; }
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
small{
|
|
154
|
-
font-size: 0.875rem;
|
|
155
|
-
position: absolute;
|
|
156
|
-
right: 20px;
|
|
157
|
-
top: -10px;
|
|
158
|
-
background: #f8f9fa;
|
|
159
|
-
padding: 0 10px;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Base Input Class
|
|
163
|
-
.form-input, .form-select {
|
|
164
|
-
@include input-size('md'); // Default size
|
|
165
|
-
|
|
166
|
-
// Sizes
|
|
167
|
-
&.xs { @include input-size('xs'); }
|
|
168
|
-
&.sm { @include input-size('sm'); }
|
|
169
|
-
&.md { @include input-size('md'); }
|
|
170
|
-
&.lg { @include input-size('lg'); }
|
|
171
|
-
&.xl { @include input-size('xl'); }
|
|
172
|
-
&.xxl { @include input-size('2xl'); }
|
|
173
|
-
&.xxxl { @include input-size('3xl'); }
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Dark Mode Support
|
|
177
|
-
// [data-theme="dark"] {
|
|
178
|
-
// .form-input,
|
|
179
|
-
// .form-select {
|
|
180
|
-
// background-color: var(--bg-secondary);
|
|
181
|
-
// border-color: var(--border-color-dark);
|
|
182
|
-
|
|
183
|
-
// &:focus {
|
|
184
|
-
// border-color: var(--primary-dark);
|
|
185
|
-
// }
|
|
186
|
-
// }
|
|
187
|
-
// }
|
|
188
|
-
|
|
189
|
-
// Accessibility
|
|
190
|
-
@media (prefers-reduced-motion: reduce) {
|
|
191
|
-
.form-input,
|
|
192
|
-
.form-label {
|
|
193
|
-
transition: none;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
@use "sass:math";
|
|
2
|
-
@use 'sass:color';
|
|
3
|
-
@use 'sass:map';
|
|
4
|
-
|
|
5
|
-
@use '../utilities/media-queries' as Responsive;
|
|
6
|
-
@use '../utilities/variables' as *;
|
|
7
|
-
|
|
8
|
-
// _mixins.scss
|
|
9
|
-
@mixin hamburger($color: currentColor, $size: 24px, $thickness: 2px) {
|
|
10
|
-
.hamburger {
|
|
11
|
-
--hamburger-color: #{$color};
|
|
12
|
-
--hamburger-size: #{$size};
|
|
13
|
-
--hamburger-thickness: #{$thickness};
|
|
14
|
-
|
|
15
|
-
&:focus {
|
|
16
|
-
outline: none;
|
|
17
|
-
box-shadow: none;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// display: none;
|
|
21
|
-
cursor: pointer;
|
|
22
|
-
width: var(--hamburger-size);
|
|
23
|
-
height: var(--hamburger-size);
|
|
24
|
-
position: relative;
|
|
25
|
-
border: 0;
|
|
26
|
-
background: transparent;
|
|
27
|
-
padding: 0;
|
|
28
|
-
|
|
29
|
-
span {
|
|
30
|
-
display: block;
|
|
31
|
-
position: absolute;
|
|
32
|
-
left: 0;
|
|
33
|
-
right: 0;
|
|
34
|
-
height: var(--hamburger-thickness);
|
|
35
|
-
background-color: var(--hamburger-color);
|
|
36
|
-
transform-origin: center;
|
|
37
|
-
transition: transform 0.2s ease,
|
|
38
|
-
opacity 0.2s ease;
|
|
39
|
-
|
|
40
|
-
&:first-child {
|
|
41
|
-
top: 20%;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
&:nth-child(2) {
|
|
45
|
-
top: 50%;
|
|
46
|
-
transform: translateY(-50%);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
&:last-child {
|
|
50
|
-
bottom: 20%;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
&[aria-expanded="true"] span {
|
|
55
|
-
&:first-child {
|
|
56
|
-
transform: translateY(7px) rotate(45deg);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
&:nth-child(2) {
|
|
60
|
-
opacity: 0;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
&:last-child {
|
|
64
|
-
transform: translateY(-7px) rotate(-45deg);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
@include Responsive.media-up('md') {
|
|
69
|
-
display: none;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
File without changes
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
// _navbar.scss
|
|
2
|
-
|
|
3
|
-
@use '../utilities/media-queries' as Responsive;
|
|
4
|
-
@use '../utilities/shadows' as *;
|
|
5
|
-
@use '../utilities/variables' as *;
|
|
6
|
-
@use '../layouts/container' as Container;
|
|
7
|
-
@use '../layouts/flex' as Flex;
|
|
8
|
-
|
|
9
|
-
.navbar {
|
|
10
|
-
@include Container.container-flex;
|
|
11
|
-
@include Flex.align-center;
|
|
12
|
-
@include Flex.between;
|
|
13
|
-
|
|
14
|
-
&:hover {
|
|
15
|
-
@include shadow('lg', 'dark');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
background-color: var(--nav-bg);
|
|
19
|
-
|
|
20
|
-
.logo {
|
|
21
|
-
img {
|
|
22
|
-
max-height: 40px;
|
|
23
|
-
width: auto;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.submenu {
|
|
28
|
-
background-color: white;
|
|
29
|
-
display: block;
|
|
30
|
-
visibility: hidden; // Use visibility instead of display
|
|
31
|
-
pointer-events: none; // Prevents interaction when hidden
|
|
32
|
-
opacity: 0;
|
|
33
|
-
position: absolute;
|
|
34
|
-
top: 100%;
|
|
35
|
-
left: 0;
|
|
36
|
-
min-width: 200px;
|
|
37
|
-
list-style: none;
|
|
38
|
-
margin: 0;
|
|
39
|
-
padding: 0;
|
|
40
|
-
box-shadow: 0 2px 5px rgba(0 0 0 / 10%);
|
|
41
|
-
|
|
42
|
-
// Animation
|
|
43
|
-
transition:
|
|
44
|
-
opacity 0.2s ease-in-out,
|
|
45
|
-
visibility 0.2s ease-in-out;
|
|
46
|
-
|
|
47
|
-
li {
|
|
48
|
-
a {
|
|
49
|
-
padding: 0.75rem 1rem;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Nested dropdowns
|
|
54
|
-
.submenu {
|
|
55
|
-
top: 0;
|
|
56
|
-
left: 100%;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.menu {
|
|
61
|
-
@include Flex.flex;
|
|
62
|
-
|
|
63
|
-
list-style: none;
|
|
64
|
-
margin: 0;
|
|
65
|
-
padding: 0;
|
|
66
|
-
|
|
67
|
-
li {
|
|
68
|
-
position: relative;
|
|
69
|
-
|
|
70
|
-
a {
|
|
71
|
-
display: block;
|
|
72
|
-
padding: 1rem;
|
|
73
|
-
text-decoration: none;
|
|
74
|
-
color: var(--nav-text);
|
|
75
|
-
transition: background-color 0.2s ease-in-out;
|
|
76
|
-
|
|
77
|
-
&:hover {
|
|
78
|
-
background-color: var(--nav-hover);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Dropdown styles
|
|
83
|
-
&:hover>.submenu {
|
|
84
|
-
display: block;
|
|
85
|
-
visibility: visible;
|
|
86
|
-
opacity: 1;
|
|
87
|
-
pointer-events: auto; // Re-enable interactions
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Responsive styles
|
|
93
|
-
@include Responsive.media-down(md) {
|
|
94
|
-
.menu {
|
|
95
|
-
transition: all 1.3s ease;
|
|
96
|
-
display: none;
|
|
97
|
-
flex-direction: column;
|
|
98
|
-
background-color: var(--nav-bg);
|
|
99
|
-
position: absolute;
|
|
100
|
-
top: 100%;
|
|
101
|
-
left: 0;
|
|
102
|
-
width: 100%;
|
|
103
|
-
|
|
104
|
-
&[data-visible="true"] {
|
|
105
|
-
display: flex;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
li {
|
|
109
|
-
width: 100%;
|
|
110
|
-
text-align: left;
|
|
111
|
-
|
|
112
|
-
.submenu {
|
|
113
|
-
position: relative;
|
|
114
|
-
left: 0;
|
|
115
|
-
top: 0;
|
|
116
|
-
display: none;
|
|
117
|
-
visibility: visible;
|
|
118
|
-
opacity: 1;
|
|
119
|
-
pointer-events: auto;
|
|
120
|
-
box-shadow: none;
|
|
121
|
-
background-color: var(--nav-hover);
|
|
122
|
-
|
|
123
|
-
&[data-visible="true"] {
|
|
124
|
-
display: flex;
|
|
125
|
-
flex-direction: column;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.navbar__cta {
|
|
132
|
-
width: 100%;
|
|
133
|
-
justify-content: center;
|
|
134
|
-
padding: 1rem 0;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
File without changes
|