@dodlhuat/basix 1.3.2 → 1.3.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.
- package/README.md +13 -7
- package/css/accordion.scss +0 -5
- package/css/badge.scss +1 -6
- package/css/bottom-sheet.scss +3 -8
- package/css/breadcrumb.scss +6 -15
- package/css/button.scss +2 -1
- package/css/calendar.scss +0 -54
- package/css/card.scss +0 -5
- package/css/carousel.scss +0 -3
- package/css/chart.scss +0 -25
- package/css/chat-bubbles.scss +0 -15
- package/css/checkbox.scss +3 -2
- package/css/chips.scss +3 -7
- package/css/code-viewer.scss +1 -5
- package/css/context-menu.scss +4 -6
- package/css/datepicker.scss +4 -7
- package/css/docs.scss +0 -4
- package/css/dropdown.scss +1 -1
- package/css/editor.scss +1 -23
- package/css/file-uploader.scss +2 -2
- package/css/flyout-menu.scss +66 -44
- package/css/form.scss +0 -28
- package/css/gallery.scss +2 -3
- package/css/group-picker.scss +5 -35
- package/css/icons.scss +0 -3
- package/css/lightbox.scss +2 -4
- package/css/mixins.scss +8 -0
- package/css/modal.scss +3 -3
- package/css/parameters.scss +6 -1
- package/css/popover.scss +3 -15
- package/css/progress.scss +0 -6
- package/css/push-menu.scss +3 -28
- package/css/radiobutton.scss +2 -1
- package/css/range-slider.scss +1 -7
- package/css/scrollbar.scss +2 -6
- package/css/sidebar-nav.scss +0 -12
- package/css/stepper.scss +0 -4
- package/css/style.css +63 -68
- package/css/style.css.map +1 -1
- package/css/style.min.css +1 -1
- package/css/style.min.css.map +1 -1
- package/css/style.scss +1 -1
- package/css/table.scss +0 -4
- package/css/tabs.scss +0 -2
- package/css/timeline.scss +1 -13
- package/css/timepicker.scss +6 -7
- package/css/toast.scss +1 -1
- package/css/tooltip.scss +1 -5
- package/css/tree.scss +1 -1
- package/css/typography.scss +3 -3
- package/css/virtual-dropdown.scss +3 -28
- package/js/bottom-sheet.d.ts +3 -1
- package/js/bottom-sheet.js +26 -27
- package/js/calendar.d.ts +7 -0
- package/js/calendar.js +14 -33
- package/js/carousel.d.ts +2 -0
- package/js/carousel.js +13 -5
- package/js/chart.d.ts +4 -0
- package/js/chart.js +13 -31
- package/js/code-viewer.d.ts +1 -0
- package/js/code-viewer.js +4 -0
- package/js/context-menu.d.ts +9 -2
- package/js/context-menu.js +17 -14
- package/js/datepicker.d.ts +4 -0
- package/js/datepicker.js +26 -11
- package/js/dropdown.d.ts +3 -3
- package/js/dropdown.js +6 -9
- package/js/editor.d.ts +1 -0
- package/js/editor.js +9 -3
- package/js/file-uploader.d.ts +4 -0
- package/js/file-uploader.js +52 -43
- package/js/flyout-menu.d.ts +5 -3
- package/js/flyout-menu.js +23 -46
- package/js/gallery.d.ts +3 -0
- package/js/gallery.js +22 -24
- package/js/group-picker.d.ts +5 -0
- package/js/group-picker.js +12 -17
- package/js/lightbox.d.ts +3 -0
- package/js/lightbox.js +12 -6
- package/js/modal.d.ts +3 -1
- package/js/modal.js +14 -11
- package/js/popover.d.ts +2 -0
- package/js/popover.js +26 -30
- package/js/position.d.ts +2 -0
- package/js/position.js +1 -5
- package/js/push-menu.d.ts +2 -0
- package/js/push-menu.js +22 -35
- package/js/range-slider.d.ts +1 -0
- package/js/range-slider.js +5 -3
- package/js/scroll.d.ts +2 -0
- package/js/scroll.js +1 -0
- package/js/scrollbar.d.ts +2 -0
- package/js/scrollbar.js +24 -36
- package/js/select.d.ts +1 -0
- package/js/select.js +5 -10
- package/js/sidebar-nav.d.ts +2 -0
- package/js/sidebar-nav.js +8 -0
- package/js/stepper.d.ts +2 -0
- package/js/stepper.js +7 -1
- package/js/table.d.ts +4 -0
- package/js/table.js +15 -22
- package/js/tabs.d.ts +2 -0
- package/js/tabs.js +6 -14
- package/js/theme.d.ts +1 -0
- package/js/theme.js +5 -13
- package/js/timepicker.d.ts +3 -0
- package/js/timepicker.js +81 -67
- package/js/toast.d.ts +3 -0
- package/js/toast.js +24 -15
- package/js/tooltip.d.ts +2 -0
- package/js/tooltip.js +21 -19
- package/js/tree.d.ts +3 -0
- package/js/tree.js +13 -0
- package/js/utils.d.ts +1 -3
- package/js/utils.js +0 -3
- package/js/virtual-dropdown.d.ts +3 -0
- package/js/virtual-dropdown.js +25 -0
- package/package.json +2 -2
package/css/flyout-menu.scss
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/* Flyout menu uses its own dark palette intentionally —
|
|
2
|
-
it renders over any background regardless of light/dark mode.
|
|
3
|
-
Scoped here rather than polluting :root. */
|
|
4
1
|
.flyout-menu,
|
|
5
2
|
.flyout-overlay,
|
|
6
3
|
.site-header,
|
|
@@ -26,7 +23,6 @@ body {
|
|
|
26
23
|
min-height: 100vh;
|
|
27
24
|
}
|
|
28
25
|
|
|
29
|
-
/* Header */
|
|
30
26
|
.site-header {
|
|
31
27
|
display: flex;
|
|
32
28
|
justify-content: space-between;
|
|
@@ -80,7 +76,6 @@ body {
|
|
|
80
76
|
font-size: 1.2rem;
|
|
81
77
|
}
|
|
82
78
|
|
|
83
|
-
/* Flyout Overlay */
|
|
84
79
|
.flyout-overlay {
|
|
85
80
|
position: fixed;
|
|
86
81
|
top: 0;
|
|
@@ -100,21 +95,19 @@ body {
|
|
|
100
95
|
visibility: visible;
|
|
101
96
|
}
|
|
102
97
|
|
|
103
|
-
/* Flyout Menu Base */
|
|
104
98
|
.flyout-menu {
|
|
105
99
|
position: fixed;
|
|
106
|
-
background:
|
|
107
|
-
backdrop-filter: blur(
|
|
108
|
-
-webkit-backdrop-filter: blur(
|
|
100
|
+
background: rgba(10, 15, 30, 0.82);
|
|
101
|
+
backdrop-filter: blur(28px) saturate(1.4);
|
|
102
|
+
-webkit-backdrop-filter: blur(28px) saturate(1.4);
|
|
109
103
|
z-index: 210;
|
|
110
104
|
display: flex;
|
|
111
105
|
flex-direction: column;
|
|
112
|
-
padding:
|
|
113
|
-
box-shadow: 0 0
|
|
106
|
+
padding: 1.75rem 1.5rem;
|
|
107
|
+
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06), 0 32px 80px rgba(0, 0, 0, 0.6);
|
|
114
108
|
transition: transform var(--transition-speed) cubic-bezier(0.25, 1, 0.5, 1);
|
|
115
109
|
}
|
|
116
110
|
|
|
117
|
-
/* Directional Variants */
|
|
118
111
|
.flyout-from-right {
|
|
119
112
|
top: 0;
|
|
120
113
|
right: 0;
|
|
@@ -137,37 +130,56 @@ body {
|
|
|
137
130
|
transform: translate(0, 0);
|
|
138
131
|
}
|
|
139
132
|
|
|
140
|
-
/* Flyout Header */
|
|
141
133
|
.flyout-header {
|
|
142
134
|
display: flex;
|
|
143
135
|
justify-content: space-between;
|
|
144
136
|
align-items: center;
|
|
145
|
-
margin-bottom:
|
|
137
|
+
margin-bottom: 2.5rem;
|
|
138
|
+
padding-bottom: 1.25rem;
|
|
139
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.07);
|
|
146
140
|
}
|
|
147
141
|
|
|
148
142
|
.flyout-title {
|
|
149
|
-
font-size:
|
|
143
|
+
font-size: 0.65rem;
|
|
150
144
|
font-weight: 600;
|
|
151
|
-
color:
|
|
145
|
+
color: rgba(255, 255, 255, 0.35);
|
|
152
146
|
text-transform: uppercase;
|
|
153
|
-
letter-spacing: 0.
|
|
147
|
+
letter-spacing: 0.14em;
|
|
154
148
|
}
|
|
155
149
|
|
|
156
150
|
.close-menu {
|
|
157
151
|
background: none;
|
|
158
152
|
border: none;
|
|
159
|
-
color:
|
|
153
|
+
color: rgba(255, 255, 255, 0.4);
|
|
160
154
|
cursor: pointer;
|
|
161
|
-
padding: 0.
|
|
162
|
-
|
|
155
|
+
padding: 0.3rem;
|
|
156
|
+
line-height: 0;
|
|
157
|
+
transition: color 0.2s;
|
|
163
158
|
}
|
|
164
159
|
|
|
165
160
|
.close-menu:hover {
|
|
166
|
-
|
|
167
|
-
|
|
161
|
+
color: #fff;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.flyout-menu button {
|
|
165
|
+
display: flex;
|
|
166
|
+
padding: 0;
|
|
167
|
+
border-radius: 0;
|
|
168
|
+
background: none;
|
|
169
|
+
font-size: inherit;
|
|
170
|
+
font-weight: inherit;
|
|
171
|
+
white-space: normal;
|
|
172
|
+
transition: color 0.2s;
|
|
173
|
+
|
|
174
|
+
&:hover:not(:disabled),
|
|
175
|
+
&:active:not(:disabled),
|
|
176
|
+
&.active {
|
|
177
|
+
background: none;
|
|
178
|
+
transform: none;
|
|
179
|
+
box-shadow: none;
|
|
180
|
+
}
|
|
168
181
|
}
|
|
169
182
|
|
|
170
|
-
/* Flyout Links */
|
|
171
183
|
.flyout-links {
|
|
172
184
|
list-style: none;
|
|
173
185
|
flex-grow: 1;
|
|
@@ -188,7 +200,7 @@ body {
|
|
|
188
200
|
border: none;
|
|
189
201
|
font-size: 2rem;
|
|
190
202
|
font-weight: 600;
|
|
191
|
-
color:
|
|
203
|
+
color: rgba(255, 255, 255, 0.6);
|
|
192
204
|
text-decoration: none;
|
|
193
205
|
cursor: pointer;
|
|
194
206
|
font-family: inherit;
|
|
@@ -204,28 +216,33 @@ body {
|
|
|
204
216
|
transform: translateY(0);
|
|
205
217
|
}
|
|
206
218
|
|
|
207
|
-
.flyout-links a:hover,
|
|
208
|
-
.submenu-toggle:hover {
|
|
219
|
+
.flyout-links > li > a:hover,
|
|
220
|
+
.flyout-links > li > .submenu-toggle:hover {
|
|
221
|
+
color: #fff;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.submenu-toggle.active {
|
|
209
225
|
color: var(--accent-color);
|
|
210
226
|
}
|
|
211
227
|
|
|
212
228
|
.chevron {
|
|
213
|
-
|
|
214
|
-
opacity: 0.
|
|
229
|
+
flex-shrink: 0;
|
|
230
|
+
opacity: 0.5;
|
|
231
|
+
transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s;
|
|
215
232
|
}
|
|
216
233
|
|
|
217
234
|
.submenu-toggle.active .chevron {
|
|
218
235
|
transform: rotate(180deg);
|
|
236
|
+
opacity: 1;
|
|
219
237
|
}
|
|
220
238
|
|
|
221
|
-
/* Submenu */
|
|
222
239
|
.submenu {
|
|
223
240
|
list-style: none;
|
|
224
241
|
max-height: 0;
|
|
225
242
|
overflow: hidden;
|
|
226
243
|
transition: max-height 0.3s ease-out;
|
|
227
244
|
padding-left: 1rem;
|
|
228
|
-
border-left: 1px solid rgba(255, 255, 255, 0.
|
|
245
|
+
border-left: 1px solid rgba(255, 255, 255, 0.15);
|
|
229
246
|
margin-top: 0;
|
|
230
247
|
}
|
|
231
248
|
|
|
@@ -235,6 +252,7 @@ body {
|
|
|
235
252
|
transition: max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1);
|
|
236
253
|
}
|
|
237
254
|
|
|
255
|
+
|
|
238
256
|
.submenu li {
|
|
239
257
|
margin-bottom: 0.5rem;
|
|
240
258
|
}
|
|
@@ -242,29 +260,34 @@ body {
|
|
|
242
260
|
.submenu a {
|
|
243
261
|
font-size: 1.25rem;
|
|
244
262
|
font-weight: 400;
|
|
245
|
-
color:
|
|
246
|
-
transform: none !important;
|
|
263
|
+
color: rgba(255, 255, 255, 0.45);
|
|
264
|
+
transform: none !important;
|
|
265
|
+
transition: color 0.2s !important;
|
|
247
266
|
transition-delay: 0s !important;
|
|
267
|
+
|
|
268
|
+
&:hover { color: #fff; }
|
|
248
269
|
}
|
|
249
270
|
|
|
250
271
|
.submenu .submenu-toggle {
|
|
251
272
|
font-size: 1.25rem;
|
|
252
273
|
font-weight: 400;
|
|
253
|
-
color:
|
|
274
|
+
color: rgba(255, 255, 255, 0.45);
|
|
254
275
|
transform: none !important;
|
|
255
276
|
transition-delay: 0s !important;
|
|
256
277
|
padding: 0;
|
|
257
278
|
margin: 0;
|
|
279
|
+
|
|
280
|
+
&:hover { color: #fff; }
|
|
258
281
|
}
|
|
259
282
|
|
|
260
|
-
/* Flyout Footer */
|
|
261
283
|
.flyout-footer {
|
|
262
|
-
padding-top:
|
|
263
|
-
border-top: 1px solid
|
|
264
|
-
color:
|
|
265
|
-
font-size: 0.
|
|
284
|
+
padding-top: 1.25rem;
|
|
285
|
+
border-top: 1px solid rgba(255, 255, 255, 0.07);
|
|
286
|
+
color: rgba(255, 255, 255, 0.25);
|
|
287
|
+
font-size: 0.72rem;
|
|
288
|
+
letter-spacing: 0.03em;
|
|
266
289
|
opacity: 0;
|
|
267
|
-
transform: translateY(
|
|
290
|
+
transform: translateY(12px);
|
|
268
291
|
transition: opacity 0.4s, transform 0.4s;
|
|
269
292
|
transition-delay: var(--delay);
|
|
270
293
|
}
|
|
@@ -274,7 +297,6 @@ body {
|
|
|
274
297
|
transform: translateY(0);
|
|
275
298
|
}
|
|
276
299
|
|
|
277
|
-
/* Mobile Responsiveness */
|
|
278
300
|
@media (max-width: 480px) {
|
|
279
301
|
:root {
|
|
280
302
|
--menu-width: 100%;
|
|
@@ -284,7 +306,7 @@ body {
|
|
|
284
306
|
font-size: 2rem;
|
|
285
307
|
}
|
|
286
308
|
|
|
287
|
-
|
|
309
|
+
|
|
288
310
|
.flyout-from-right,
|
|
289
311
|
.flyout-from-left,
|
|
290
312
|
.flyout-from-top {
|
|
@@ -303,7 +325,7 @@ body {
|
|
|
303
325
|
transform: translate(0, 0) !important;
|
|
304
326
|
}
|
|
305
327
|
|
|
306
|
-
|
|
328
|
+
|
|
307
329
|
.flyout-from-top .flyout-links {
|
|
308
330
|
flex-direction: column;
|
|
309
331
|
align-items: stretch;
|
|
@@ -317,7 +339,7 @@ body {
|
|
|
317
339
|
.flyout-from-top .flyout-links>li>a,
|
|
318
340
|
.flyout-from-top .flyout-links>li>.submenu-toggle {
|
|
319
341
|
font-size: 2rem;
|
|
320
|
-
|
|
342
|
+
|
|
321
343
|
justify-content: space-between;
|
|
322
344
|
}
|
|
323
345
|
|
|
@@ -342,6 +364,6 @@ body {
|
|
|
342
364
|
.flyout-from-top .submenu a {
|
|
343
365
|
font-size: 1.25rem;
|
|
344
366
|
justify-content: space-between;
|
|
345
|
-
|
|
367
|
+
|
|
346
368
|
}
|
|
347
369
|
}
|
package/css/form.scss
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
3
|
|
|
4
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
-
// Keyframes
|
|
6
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
-
|
|
8
4
|
@keyframes field-error-shake {
|
|
9
5
|
0%, 100% { transform: translateX(0); }
|
|
10
6
|
18% { transform: translateX(-5px); }
|
|
@@ -35,10 +31,6 @@
|
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
33
|
|
|
38
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
39
|
-
// Base field styles
|
|
40
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
-
|
|
42
34
|
textarea, select, .select .dropdown, input {
|
|
43
35
|
width: 100%;
|
|
44
36
|
border: 1.5px solid var(--divider);
|
|
@@ -99,10 +91,6 @@ select {
|
|
|
99
91
|
cursor: pointer;
|
|
100
92
|
}
|
|
101
93
|
|
|
102
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
103
|
-
// Custom select / dropdown
|
|
104
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
105
|
-
|
|
106
94
|
.select-group {
|
|
107
95
|
.dropdown {
|
|
108
96
|
position: relative;
|
|
@@ -286,10 +274,6 @@ select {
|
|
|
286
274
|
}
|
|
287
275
|
}
|
|
288
276
|
|
|
289
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
290
|
-
// Form group — label + field + hint
|
|
291
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
292
|
-
|
|
293
277
|
.form-group {
|
|
294
278
|
display: flex;
|
|
295
279
|
flex-direction: column;
|
|
@@ -383,10 +367,6 @@ select {
|
|
|
383
367
|
}
|
|
384
368
|
}
|
|
385
369
|
|
|
386
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
387
|
-
// Input group — prefix / suffix addons
|
|
388
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
389
|
-
|
|
390
370
|
.input-group {
|
|
391
371
|
display: flex;
|
|
392
372
|
|
|
@@ -431,10 +411,6 @@ select {
|
|
|
431
411
|
}
|
|
432
412
|
}
|
|
433
413
|
|
|
434
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
435
|
-
// Readonly
|
|
436
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
437
|
-
|
|
438
414
|
input[readonly], textarea[readonly] {
|
|
439
415
|
background-color: var(--secondary-background);
|
|
440
416
|
color: var(--secondary-text);
|
|
@@ -443,10 +419,6 @@ input[readonly], textarea[readonly] {
|
|
|
443
419
|
border-style: dashed;
|
|
444
420
|
}
|
|
445
421
|
|
|
446
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
447
|
-
// Size variants
|
|
448
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
449
|
-
|
|
450
422
|
input.input-sm, textarea.input-sm {
|
|
451
423
|
min-height: calc($form-height * 0.85);
|
|
452
424
|
font-size: 0.875rem;
|
package/css/gallery.scss
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
|
+
@use "mixins" as *;
|
|
3
4
|
|
|
4
5
|
.masonry-container {
|
|
5
6
|
display: flex;
|
|
@@ -44,8 +45,7 @@
|
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
&:focus-visible {
|
|
47
|
-
|
|
48
|
-
outline-offset: 2px;
|
|
48
|
+
@include focus-ring();
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -96,7 +96,6 @@
|
|
|
96
96
|
font-size: 0.8125rem;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
// Staggered entrance for items
|
|
100
99
|
@media (prefers-reduced-motion: no-preference) {
|
|
101
100
|
.masonry-item {
|
|
102
101
|
animation: masonry-in 0.4s cubic-bezier(0.2, 0, 0, 1) both;
|
package/css/group-picker.scss
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
|
+
@use "mixins" as *;
|
|
3
4
|
|
|
4
5
|
.group-picker {
|
|
5
6
|
position: relative;
|
|
6
7
|
width: 100%;
|
|
7
8
|
color: var(--primary-text);
|
|
8
9
|
|
|
9
|
-
// ─── Selection summary ─────────────────────────────────────────────────────
|
|
10
|
-
|
|
11
10
|
&__selection {
|
|
12
11
|
display: flex;
|
|
13
12
|
flex-wrap: wrap;
|
|
@@ -17,18 +16,16 @@
|
|
|
17
16
|
padding: calc($spacing * 0.35) calc($spacing * 0.6);
|
|
18
17
|
background: var(--background);
|
|
19
18
|
border: 1px solid var(--divider);
|
|
20
|
-
border-radius:
|
|
19
|
+
border-radius: $radius-sm;
|
|
21
20
|
margin-bottom: calc($spacing * 0.75);
|
|
22
21
|
box-shadow: $shadow;
|
|
23
22
|
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
24
23
|
|
|
25
|
-
// Chips inside use gap — suppress their own margins
|
|
26
24
|
.chip {
|
|
27
25
|
margin: 0;
|
|
28
26
|
animation: gp-chip-in 0.2s cubic-bezier(0.34, 1.56, 0.64, 1) both;
|
|
29
27
|
}
|
|
30
28
|
|
|
31
|
-
// Fix font icon centering inside the absolute close button
|
|
32
29
|
.chip.closeable button {
|
|
33
30
|
display: inline-flex;
|
|
34
31
|
align-items: center;
|
|
@@ -48,15 +45,13 @@
|
|
|
48
45
|
|
|
49
46
|
&:focus-within {
|
|
50
47
|
border-color: var(--accent-color);
|
|
51
|
-
|
|
48
|
+
@include focus-glow(15%);
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
|
|
55
|
-
// Parent chip — solid accent fill
|
|
56
|
-
// Specificity 0,3,0 via .chip.group-picker__chip--parent → beats .chips .chip (0,2,0)
|
|
57
52
|
&__selection .chip.group-picker__chip--parent {
|
|
58
53
|
background: var(--accent-color);
|
|
59
|
-
color: var(--background);
|
|
54
|
+
color: var(--background);
|
|
60
55
|
|
|
61
56
|
button {
|
|
62
57
|
background: color-mix(in srgb, var(--accent-color) 78%, black);
|
|
@@ -64,9 +59,6 @@
|
|
|
64
59
|
}
|
|
65
60
|
}
|
|
66
61
|
|
|
67
|
-
// ─── Search ────────────────────────────────────────────────────────────────
|
|
68
|
-
// Basix <input> handles border, focus ring, shadow — we only position the icon
|
|
69
|
-
|
|
70
62
|
&__search {
|
|
71
63
|
position: relative;
|
|
72
64
|
margin-bottom: calc($spacing * 0.5);
|
|
@@ -88,21 +80,17 @@
|
|
|
88
80
|
z-index: 1;
|
|
89
81
|
}
|
|
90
82
|
|
|
91
|
-
// ─── List container ────────────────────────────────────────────────────────
|
|
92
|
-
|
|
93
83
|
&__list {
|
|
94
84
|
max-height: 420px;
|
|
95
85
|
overflow-y: auto;
|
|
96
86
|
overflow-x: hidden;
|
|
97
87
|
-webkit-overflow-scrolling: touch;
|
|
98
88
|
border: 1px solid var(--divider);
|
|
99
|
-
border-radius:
|
|
89
|
+
border-radius: $radius-sm;
|
|
100
90
|
background: var(--background);
|
|
101
91
|
box-shadow: $shadow;
|
|
102
92
|
}
|
|
103
93
|
|
|
104
|
-
// ─── Empty state ───────────────────────────────────────────────────────────
|
|
105
|
-
|
|
106
94
|
&__empty {
|
|
107
95
|
display: flex;
|
|
108
96
|
flex-direction: column;
|
|
@@ -120,8 +108,6 @@
|
|
|
120
108
|
}
|
|
121
109
|
}
|
|
122
110
|
|
|
123
|
-
// ─── Group row ─────────────────────────────────────────────────────────────
|
|
124
|
-
|
|
125
111
|
&__group {
|
|
126
112
|
border-bottom: 1px solid var(--divider);
|
|
127
113
|
|
|
@@ -129,7 +115,6 @@
|
|
|
129
115
|
border-bottom: none;
|
|
130
116
|
}
|
|
131
117
|
|
|
132
|
-
// Expanded state: tint the header and accent the label
|
|
133
118
|
&.is-expanded > .group-picker__group-header {
|
|
134
119
|
background: color-mix(in srgb, var(--accent-color) 4%, transparent);
|
|
135
120
|
|
|
@@ -158,7 +143,6 @@
|
|
|
158
143
|
}
|
|
159
144
|
}
|
|
160
145
|
|
|
161
|
-
// Chevron — accent color when expanded, eased rotation
|
|
162
146
|
&__chevron {
|
|
163
147
|
flex-shrink: 0;
|
|
164
148
|
font-size: 1rem;
|
|
@@ -190,7 +174,6 @@
|
|
|
190
174
|
}
|
|
191
175
|
}
|
|
192
176
|
|
|
193
|
-
// Action button — pill style, overrides Basix <button> base where needed
|
|
194
177
|
&__group-action {
|
|
195
178
|
flex-shrink: 0;
|
|
196
179
|
font-size: 0.6875rem;
|
|
@@ -217,7 +200,6 @@
|
|
|
217
200
|
transform: scale(0.94);
|
|
218
201
|
}
|
|
219
202
|
|
|
220
|
-
// When button-primary is added by JS — keep pill shape
|
|
221
203
|
&.button-primary {
|
|
222
204
|
border-radius: calc($border-radius * 3);
|
|
223
205
|
font-size: 0.6875rem;
|
|
@@ -230,8 +212,6 @@
|
|
|
230
212
|
}
|
|
231
213
|
}
|
|
232
214
|
|
|
233
|
-
// ─── Leaf group ────────────────────────────────────────────────────────────
|
|
234
|
-
|
|
235
215
|
&__group.is-leaf {
|
|
236
216
|
cursor: pointer;
|
|
237
217
|
|
|
@@ -249,7 +229,6 @@
|
|
|
249
229
|
}
|
|
250
230
|
}
|
|
251
231
|
|
|
252
|
-
// Leaf check icon — springs in on select
|
|
253
232
|
&__leaf-check {
|
|
254
233
|
flex-shrink: 0;
|
|
255
234
|
font-size: 1.1rem;
|
|
@@ -260,8 +239,6 @@
|
|
|
260
239
|
transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
261
240
|
}
|
|
262
241
|
|
|
263
|
-
// ─── Subgroups accordion ───────────────────────────────────────────────────
|
|
264
|
-
|
|
265
242
|
&__subgroups {
|
|
266
243
|
height: 0;
|
|
267
244
|
overflow: hidden;
|
|
@@ -274,20 +251,17 @@
|
|
|
274
251
|
}
|
|
275
252
|
}
|
|
276
253
|
|
|
277
|
-
// Subgroup chip list — indented to align with label, not chevron
|
|
278
254
|
&__subgroup-list {
|
|
279
255
|
display: flex;
|
|
280
256
|
flex-wrap: wrap;
|
|
281
257
|
gap: calc($spacing * 0.3);
|
|
282
258
|
padding: calc($spacing * 0.3) calc($spacing * 0.85) calc($spacing * 0.75) calc($spacing * 2.35);
|
|
283
259
|
|
|
284
|
-
// Chips use gap — suppress their own margins
|
|
285
260
|
.chip {
|
|
286
261
|
margin: 0;
|
|
287
262
|
}
|
|
288
263
|
}
|
|
289
264
|
|
|
290
|
-
// Subgroup chip — selected/disabled states on top of .chip.clickable
|
|
291
265
|
&__subgroup {
|
|
292
266
|
transition: background 0.15s ease, color 0.15s ease, outline-color 0.15s ease;
|
|
293
267
|
|
|
@@ -313,8 +287,6 @@
|
|
|
313
287
|
}
|
|
314
288
|
}
|
|
315
289
|
|
|
316
|
-
// ─── Chip entrance animation ─────────────────────────────────────────────────
|
|
317
|
-
|
|
318
290
|
@keyframes gp-chip-in {
|
|
319
291
|
from {
|
|
320
292
|
opacity: 0;
|
|
@@ -326,8 +298,6 @@
|
|
|
326
298
|
}
|
|
327
299
|
}
|
|
328
300
|
|
|
329
|
-
// ─── Responsive ──────────────────────────────────────────────────────────────
|
|
330
|
-
|
|
331
301
|
@media (max-width: 768px) {
|
|
332
302
|
.group-picker {
|
|
333
303
|
&__list {
|
package/css/icons.scss
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
1
|
@font-face {
|
|
3
2
|
font-family: "Material Symbols Outlined 24pt";
|
|
4
3
|
src: url("../fonts/MaterialSymbolsOutlined.woff2") format("woff2");
|
|
5
4
|
}
|
|
6
5
|
|
|
7
|
-
|
|
8
6
|
.icon {
|
|
9
7
|
font-family: "Material Symbols Outlined 24pt", serif;
|
|
10
8
|
font-style: normal;
|
|
@@ -17,7 +15,6 @@
|
|
|
17
15
|
-moz-osx-font-smoothing: grayscale;
|
|
18
16
|
}
|
|
19
17
|
|
|
20
|
-
|
|
21
18
|
.icon-delete::before {
|
|
22
19
|
content: "\e872";
|
|
23
20
|
}
|
package/css/lightbox.scss
CHANGED
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
max-width: 100%;
|
|
96
96
|
max-height: calc(90dvh - 3.5rem);
|
|
97
97
|
cursor: zoom-in;
|
|
98
|
-
border-radius:
|
|
98
|
+
border-radius: $radius-lg;
|
|
99
99
|
overflow: hidden;
|
|
100
100
|
background: rgba(255, 255, 255, 0.04);
|
|
101
101
|
|
|
@@ -149,7 +149,6 @@
|
|
|
149
149
|
justify-content: center;
|
|
150
150
|
z-index: 1;
|
|
151
151
|
|
|
152
|
-
// Override spinner colors for the dark overlay
|
|
153
152
|
.spinner {
|
|
154
153
|
border-color: rgba(255, 255, 255, 0.15);
|
|
155
154
|
border-top-color: rgba(255, 255, 255, 0.7);
|
|
@@ -163,7 +162,7 @@
|
|
|
163
162
|
object-fit: contain;
|
|
164
163
|
opacity: 0;
|
|
165
164
|
transition: opacity 0.25s ease;
|
|
166
|
-
border-radius:
|
|
165
|
+
border-radius: $radius-lg;
|
|
167
166
|
user-select: none;
|
|
168
167
|
-webkit-user-drag: none;
|
|
169
168
|
|
|
@@ -196,7 +195,6 @@
|
|
|
196
195
|
user-select: none;
|
|
197
196
|
}
|
|
198
197
|
|
|
199
|
-
// Prev/Next buttons — glass pill, matches carousel style
|
|
200
198
|
.lightbox-prev,
|
|
201
199
|
.lightbox-next {
|
|
202
200
|
position: fixed;
|
package/css/mixins.scss
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
@mixin focus-ring($offset: 2px) {
|
|
2
|
+
outline: 2px solid var(--accent-color);
|
|
3
|
+
outline-offset: $offset;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
@mixin focus-glow($tint: 35%, $size: 3px, $color: var(--accent-color)) {
|
|
7
|
+
box-shadow: 0 0 0 #{$size} color-mix(in srgb, #{$color} #{$tint}, transparent);
|
|
8
|
+
}
|
package/css/modal.scss
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
.modal {
|
|
36
36
|
background: var(--background);
|
|
37
37
|
border: 1px solid var(--divider);
|
|
38
|
-
border-radius:
|
|
38
|
+
border-radius: $radius-lg;
|
|
39
39
|
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(0, 0, 0, 0.08);
|
|
40
40
|
padding: $spacing;
|
|
41
41
|
position: fixed;
|
|
@@ -70,14 +70,14 @@
|
|
|
70
70
|
margin: (-$spacing) (-$spacing) $spacing;
|
|
71
71
|
padding: $spacing;
|
|
72
72
|
border-bottom: 1px solid var(--divider);
|
|
73
|
-
border-radius:
|
|
73
|
+
border-radius: $radius-lg $radius-lg 0 0;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
.footer {
|
|
77
77
|
margin: $spacing (-$spacing) (-$spacing);
|
|
78
78
|
padding: $spacing;
|
|
79
79
|
border-top: 1px solid var(--divider);
|
|
80
|
-
border-radius: 0 0
|
|
80
|
+
border-radius: 0 0 $radius-lg $radius-lg;
|
|
81
81
|
display: flex;
|
|
82
82
|
justify-content: flex-end;
|
|
83
83
|
|
package/css/parameters.scss
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
$spacing: 1rem;
|
|
2
2
|
$border-radius: 0.4rem;
|
|
3
3
|
$form-height: 2rem;
|
|
4
|
-
$shadow: 0 1px 2px rgba(56, 65, 74, .15);
|
|
4
|
+
$shadow: 0 1px 2px rgba(56, 65, 74, .15);
|
|
5
|
+
|
|
6
|
+
$radius-sm: calc($border-radius / 2);
|
|
7
|
+
$radius-lg: calc($border-radius * 2);
|
|
8
|
+
$radius-panel: calc($border-radius * 2.5);
|
|
9
|
+
$radius-xl: calc($border-radius * 4);
|