@dodlhuat/basix 1.4.2 → 1.5.0

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 (121) hide show
  1. package/README.md +55 -9
  2. package/css/alert.scss +9 -9
  3. package/css/badge.scss +5 -25
  4. package/css/bottom-sheet.scss +2 -6
  5. package/css/breadcrumb.scss +18 -9
  6. package/css/calendar.scss +19 -29
  7. package/css/carousel.scss +3 -3
  8. package/css/chart.scss +1 -6
  9. package/css/checkbox.scss +1 -1
  10. package/css/chips.scss +13 -23
  11. package/css/code-viewer.scss +2 -2
  12. package/css/color-picker.scss +3 -5
  13. package/css/context-menu.scss +3 -8
  14. package/css/datepicker.scss +84 -71
  15. package/css/defaults.scss +25 -0
  16. package/css/docs.scss +6 -6
  17. package/css/dropdown.scss +3 -8
  18. package/css/editor.scss +15 -18
  19. package/css/file-uploader.scss +6 -17
  20. package/css/flyout-menu.scss +5 -1
  21. package/css/form.scss +43 -57
  22. package/css/gallery.scss +15 -0
  23. package/css/group-picker.scss +28 -17
  24. package/css/icons.scss +7 -327
  25. package/css/lightbox.scss +7 -7
  26. package/css/mixins.scss +77 -0
  27. package/css/modal.scss +4 -8
  28. package/css/parameters.scss +8 -2
  29. package/css/placeholder.scss +2 -17
  30. package/css/popover.scss +2 -7
  31. package/css/properties.scss +0 -5
  32. package/css/push-menu.scss +1 -1
  33. package/css/range-slider.scss +7 -6
  34. package/css/stepper.scss +4 -3
  35. package/css/style.css +279 -554
  36. package/css/style.css.map +1 -1
  37. package/css/style.min.css +1 -1
  38. package/css/style.min.css.map +1 -1
  39. package/css/tabs.scss +3 -7
  40. package/css/timepicker.scss +3 -3
  41. package/css/tooltip.scss +1 -1
  42. package/css/typography.scss +3 -3
  43. package/css/virtual-dropdown.scss +12 -27
  44. package/js/bottom-sheet.d.ts +5 -5
  45. package/js/bottom-sheet.js +41 -58
  46. package/js/calendar.d.ts +1 -2
  47. package/js/calendar.js +77 -84
  48. package/js/carousel.d.ts +2 -1
  49. package/js/carousel.js +25 -16
  50. package/js/chart.d.ts +1 -1
  51. package/js/chart.js +104 -65
  52. package/js/code-viewer.d.ts +1 -1
  53. package/js/code-viewer.js +7 -18
  54. package/js/color-picker.d.ts +2 -2
  55. package/js/color-picker.js +20 -22
  56. package/js/context-menu.d.ts +1 -1
  57. package/js/context-menu.js +10 -12
  58. package/js/datepicker.d.ts +14 -3
  59. package/js/datepicker.js +180 -99
  60. package/js/docs-nav.js +1 -1
  61. package/js/dropdown.d.ts +1 -1
  62. package/js/dropdown.js +4 -5
  63. package/js/editor.d.ts +1 -1
  64. package/js/editor.js +30 -34
  65. package/js/file-uploader.d.ts +2 -9
  66. package/js/file-uploader.js +57 -86
  67. package/js/flyout-menu.d.ts +3 -3
  68. package/js/flyout-menu.js +20 -22
  69. package/js/gallery.d.ts +6 -2
  70. package/js/gallery.js +49 -20
  71. package/js/group-picker.d.ts +2 -1
  72. package/js/group-picker.js +30 -34
  73. package/js/lightbox.d.ts +5 -3
  74. package/js/lightbox.js +36 -31
  75. package/js/listeners.d.ts +7 -0
  76. package/js/listeners.js +14 -0
  77. package/js/modal.d.ts +4 -1
  78. package/js/modal.js +17 -22
  79. package/js/popover.d.ts +2 -2
  80. package/js/popover.js +42 -37
  81. package/js/position.js +3 -5
  82. package/js/push-menu.d.ts +8 -2
  83. package/js/push-menu.js +34 -23
  84. package/js/range-slider.d.ts +2 -2
  85. package/js/range-slider.js +7 -6
  86. package/js/scroll.js +4 -7
  87. package/js/scrollbar.d.ts +3 -3
  88. package/js/scrollbar.js +39 -42
  89. package/js/select.d.ts +1 -1
  90. package/js/select.js +20 -24
  91. package/js/sidebar-nav.d.ts +2 -1
  92. package/js/sidebar-nav.js +15 -10
  93. package/js/stepper.d.ts +1 -1
  94. package/js/stepper.js +9 -11
  95. package/js/table.d.ts +1 -1
  96. package/js/table.js +24 -23
  97. package/js/tabs.d.ts +1 -1
  98. package/js/tabs.js +10 -17
  99. package/js/theme.d.ts +1 -0
  100. package/js/theme.js +6 -15
  101. package/js/timepicker.d.ts +8 -6
  102. package/js/timepicker.js +36 -36
  103. package/js/toast.d.ts +4 -1
  104. package/js/toast.js +13 -5
  105. package/js/tooltip.d.ts +1 -4
  106. package/js/tooltip.js +14 -23
  107. package/js/tree.d.ts +0 -1
  108. package/js/tree.js +6 -11
  109. package/js/utils.js +7 -8
  110. package/js/virtual-dropdown.d.ts +1 -1
  111. package/js/virtual-dropdown.js +26 -28
  112. package/package.json +2 -1
  113. package/svg-icons/chevron_right.svg +1 -0
  114. package/svg-icons/keyboard_arrow_down.svg +1 -0
  115. package/css/calendar.css +0 -928
  116. package/css/guitar-chords.css +0 -251
  117. package/fonts/MaterialSymbolsOutlined.woff2 +0 -0
  118. package/js/form-builder.js +0 -107
  119. package/js/guitar-chords.js +0 -268
  120. package/js/lazy-loader.js +0 -121
  121. package/js/request.js +0 -51
package/css/form.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
+ @use "mixins" as *;
3
4
 
4
5
  @keyframes field-error-shake {
5
6
  0%, 100% { transform: translateX(0); }
@@ -34,16 +35,14 @@
34
35
  textarea, select, .select .dropdown, input {
35
36
  width: 100%;
36
37
  border: 1.5px solid var(--divider);
37
- border-radius: calc($border-radius * 1.5);
38
+ border-radius: $radius-md;
38
39
  padding: 0 calc($spacing * 0.65);
39
40
  box-sizing: border-box;
40
41
  background-color: var(--background);
41
42
  min-height: calc($form-height * 1.3);
42
43
  font-size: $spacing;
43
44
  color: var(--primary-text);
44
- box-shadow:
45
- inset 0 1.5px 4px rgba(0, 0, 0, 0.05),
46
- 0 1px 2px rgba(0, 0, 0, 0.04);
45
+ @include field-shadow-rest();
47
46
  transition:
48
47
  border-color 0.16s ease,
49
48
  box-shadow 0.22s cubic-bezier(0.16, 1, 0.3, 1),
@@ -58,17 +57,12 @@ textarea, select, .select .dropdown, input {
58
57
 
59
58
  &:hover:not(:focus):not(:disabled):not([readonly]) {
60
59
  border-color: color-mix(in srgb, var(--accent-color) 45%, var(--divider));
61
- box-shadow:
62
- inset 0 1.5px 4px rgba(0, 0, 0, 0.045),
63
- 0 2px 8px rgba(0, 0, 0, 0.07);
60
+ @include field-shadow-hover();
64
61
  }
65
62
 
66
63
  &:focus {
67
64
  border-color: var(--accent-color);
68
- box-shadow:
69
- inset 0 1px 3px rgba(0, 0, 0, 0.03),
70
- 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent),
71
- 0 2px 12px rgba(0, 0, 0, 0.06);
65
+ @include field-shadow-focus();
72
66
  }
73
67
 
74
68
  &:disabled {
@@ -98,16 +92,15 @@ select {
98
92
  }
99
93
 
100
94
  .dropdown-selected {
95
+ position: relative;
101
96
  border: 1.5px solid var(--divider);
102
- padding: 0 calc($spacing * 0.65);
103
- border-radius: calc($border-radius * 1.5);
97
+ padding: 0 calc($spacing * 2) 0 calc($spacing * 0.65);
98
+ border-radius: $radius-md;
104
99
  cursor: pointer;
105
100
  background: var(--background);
106
101
  height: calc($form-height * 1.3);
107
102
  line-height: calc($form-height * 1.3);
108
- box-shadow:
109
- inset 0 1.5px 4px rgba(0, 0, 0, 0.05),
110
- 0 1px 2px rgba(0, 0, 0, 0.04);
103
+ @include field-shadow-rest();
111
104
  transition:
112
105
  border-color 0.16s ease,
113
106
  box-shadow 0.22s cubic-bezier(0.16, 1, 0.3, 1);
@@ -115,39 +108,44 @@ select {
115
108
 
116
109
  &:hover {
117
110
  border-color: color-mix(in srgb, var(--accent-color) 45%, var(--divider));
118
- box-shadow:
119
- inset 0 1.5px 4px rgba(0, 0, 0, 0.045),
120
- 0 2px 8px rgba(0, 0, 0, 0.07);
111
+ @include field-shadow-hover();
121
112
  }
122
113
 
123
114
  &:focus,
124
115
  &:focus-visible {
125
116
  outline: none;
126
117
  border-color: var(--accent-color);
127
- box-shadow:
128
- inset 0 1px 3px rgba(0, 0, 0, 0.03),
129
- 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent),
130
- 0 2px 12px rgba(0, 0, 0, 0.06);
118
+ @include field-shadow-focus();
131
119
  }
132
120
 
133
121
  &::after {
134
- font-family: "Material Symbols Outlined 24pt", serif;
135
- content: "\e5cf";
136
- float: right;
137
- color: var(--secondary-text);
122
+ content: "";
123
+ position: absolute;
124
+ top: 50%;
125
+ right: calc($spacing * 0.65);
126
+ width: 1.125rem;
127
+ height: 1.125rem;
128
+ background-color: var(--secondary-text);
129
+ mask-image: url("../svg-icons/keyboard_arrow_down.svg");
130
+ -webkit-mask-image: url("../svg-icons/keyboard_arrow_down.svg");
131
+ mask-repeat: no-repeat;
132
+ -webkit-mask-repeat: no-repeat;
133
+ mask-position: center;
134
+ -webkit-mask-position: center;
135
+ mask-size: contain;
136
+ -webkit-mask-size: contain;
137
+ transform: translateY(-50%);
138
138
  transition: transform 0.26s cubic-bezier(0.34, 1.56, 0.64, 1);
139
- line-height: inherit;
139
+ pointer-events: none;
140
140
  }
141
141
  }
142
142
 
143
143
  .dropdown.open .dropdown-selected {
144
144
  border-color: var(--accent-color);
145
- box-shadow:
146
- inset 0 1px 3px rgba(0, 0, 0, 0.03),
147
- 0 0 0 3.5px color-mix(in srgb, var(--accent-color) 13%, transparent);
145
+ @include field-shadow-focus($ambient: false);
148
146
 
149
147
  &::after {
150
- transform: rotate(180deg);
148
+ transform: translateY(-50%) rotate(180deg);
151
149
  }
152
150
  }
153
151
 
@@ -156,17 +154,12 @@ select {
156
154
  top: calc(100% + 6px);
157
155
  left: 0;
158
156
  right: 0;
159
- border: 1.5px solid var(--divider);
160
- border-radius: calc($border-radius * 1.5);
161
157
  display: none;
162
158
  flex-direction: column;
163
159
  z-index: 10;
164
160
  max-height: 260px;
165
161
  overflow-y: auto;
166
- background-color: var(--background);
167
- box-shadow:
168
- 0 8px 32px rgba(0, 0, 0, 0.11),
169
- 0 2px 8px rgba(0, 0, 0, 0.06);
162
+ @include float-panel($radius-md);
170
163
  padding: 0.25rem;
171
164
  gap: 1px;
172
165
  transform-origin: top center;
@@ -175,7 +168,7 @@ select {
175
168
  .dropdown-option {
176
169
  padding: 0.6rem calc($spacing * 0.65);
177
170
  cursor: pointer;
178
- border-radius: calc($border-radius * 1.1);
171
+ border-radius: $border-radius;
179
172
  transition: background 0.1s ease;
180
173
  font-size: 0.9375rem;
181
174
  position: relative;
@@ -186,7 +179,7 @@ select {
186
179
  }
187
180
 
188
181
  .dropdown-option.selected {
189
- background: color-mix(in srgb, var(--accent-color) 10%, transparent);
182
+ background: color-mix(in srgb, var(--accent-color) $tint-medium, transparent);
190
183
  color: var(--accent-color);
191
184
  font-weight: 500;
192
185
 
@@ -236,9 +229,8 @@ select {
236
229
  transform: translateY(-50%);
237
230
  cursor: pointer;
238
231
  color: var(--accent-color);
239
- font-size: 0.9375rem;
240
- font-weight: 500;
241
- letter-spacing: 0;
232
+ width: 0.9375rem;
233
+ height: 0.9375rem;
242
234
  }
243
235
  }
244
236
 
@@ -314,17 +306,13 @@ select {
314
306
  &.error {
315
307
  input, textarea, select {
316
308
  border-color: var(--error);
317
- background-color: color-mix(in srgb, var(--error) 3%, var(--background));
318
- box-shadow:
319
- inset 0 1.5px 4px rgba(0, 0, 0, 0.05),
320
- 0 1px 2px rgba(0, 0, 0, 0.04);
309
+ background-color: color-mix(in srgb, var(--error) $tint-subtle, var(--background));
310
+ @include field-shadow-rest();
321
311
  animation: field-error-shake 0.42s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
322
312
 
323
313
  &:focus {
324
314
  border-color: var(--error);
325
- box-shadow:
326
- inset 0 1px 3px rgba(0, 0, 0, 0.03),
327
- 0 0 0 3.5px color-mix(in srgb, var(--error) 13%, transparent);
315
+ @include field-shadow-focus($color: var(--error), $ambient: false);
328
316
  }
329
317
  }
330
318
 
@@ -347,9 +335,7 @@ select {
347
335
 
348
336
  &:focus {
349
337
  border-color: var(--success);
350
- box-shadow:
351
- inset 0 1px 3px rgba(0, 0, 0, 0.03),
352
- 0 0 0 3.5px color-mix(in srgb, var(--success) 13%, transparent);
338
+ @include field-shadow-focus($color: var(--success), $ambient: false);
353
339
  }
354
340
  }
355
341
 
@@ -390,7 +376,7 @@ select {
390
376
 
391
377
  &:first-child {
392
378
  border-right: none;
393
- border-radius: calc($border-radius * 1.5) 0 0 calc($border-radius * 1.5);
379
+ border-radius: $radius-md 0 0 $radius-md;
394
380
 
395
381
  & + input {
396
382
  border-top-left-radius: 0;
@@ -400,7 +386,7 @@ select {
400
386
 
401
387
  &:last-child {
402
388
  border-left: none;
403
- border-radius: 0 calc($border-radius * 1.5) calc($border-radius * 1.5) 0;
389
+ border-radius: 0 $radius-md $radius-md 0;
404
390
  }
405
391
  }
406
392
 
@@ -423,12 +409,12 @@ input.input-sm, textarea.input-sm {
423
409
  min-height: calc($form-height * 0.85);
424
410
  font-size: 0.875rem;
425
411
  padding: 0 calc($spacing * 0.5);
426
- border-radius: calc($border-radius * 1.1);
412
+ border-radius: $border-radius;
427
413
  }
428
414
 
429
415
  input.input-lg, textarea.input-lg {
430
416
  min-height: calc($form-height * 1.65);
431
417
  font-size: 1.125rem;
432
418
  padding: 0 calc($spacing * 0.75);
433
- border-radius: calc($border-radius * 1.75);
419
+ border-radius: $radius-lg;
434
420
  }
package/css/gallery.scss CHANGED
@@ -28,6 +28,10 @@
28
28
  position: relative;
29
29
  cursor: pointer;
30
30
 
31
+ &:has(img:not(.loaded)) {
32
+ @include shimmer-bg;
33
+ }
34
+
31
35
  &:hover {
32
36
  transform: translateY(-4px);
33
37
  box-shadow:
@@ -49,6 +53,17 @@
49
53
  }
50
54
  }
51
55
 
56
+ .masonry-item--skeleton {
57
+ cursor: default;
58
+ pointer-events: none;
59
+
60
+ .masonry-item-skeleton-img {
61
+ display: block;
62
+ width: 100%;
63
+ @include shimmer-bg;
64
+ }
65
+ }
66
+
52
67
  .masonry-item img {
53
68
  width: 100%;
54
69
  height: auto;
@@ -16,7 +16,7 @@
16
16
  padding: calc($spacing * 0.35) calc($spacing * 0.6);
17
17
  background: var(--background);
18
18
  border: 1px solid var(--divider);
19
- border-radius: $radius-sm;
19
+ border-radius: $radius-xs;
20
20
  margin-bottom: calc($spacing * 0.75);
21
21
  box-shadow: $shadow;
22
22
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
@@ -31,8 +31,9 @@
31
31
  align-items: center;
32
32
  justify-content: center;
33
33
 
34
- .icon {
35
- font-size: 0.7rem;
34
+ .icon-svg {
35
+ width: 0.7rem;
36
+ height: 0.7rem;
36
37
  top: 0;
37
38
  }
38
39
  }
@@ -73,7 +74,8 @@
73
74
  left: calc($spacing * 0.55);
74
75
  top: 50%;
75
76
  transform: translateY(-50%);
76
- font-size: 1rem;
77
+ width: 1rem;
78
+ height: 1rem;
77
79
  color: var(--secondary-text);
78
80
  pointer-events: none;
79
81
  opacity: 0.45;
@@ -86,7 +88,7 @@
86
88
  overflow-x: hidden;
87
89
  -webkit-overflow-scrolling: touch;
88
90
  border: 1px solid var(--divider);
89
- border-radius: $radius-sm;
91
+ border-radius: $radius-xs;
90
92
  background: var(--background);
91
93
  box-shadow: $shadow;
92
94
  }
@@ -102,8 +104,9 @@
102
104
  text-align: center;
103
105
  gap: calc($spacing * 0.5);
104
106
 
105
- .icon {
106
- font-size: 2rem;
107
+ .icon-svg {
108
+ width: 2rem;
109
+ height: 2rem;
107
110
  opacity: 0.2;
108
111
  }
109
112
  }
@@ -116,7 +119,7 @@
116
119
  }
117
120
 
118
121
  &.is-expanded > .group-picker__group-header {
119
- background: color-mix(in srgb, var(--accent-color) 4%, transparent);
122
+ background: color-mix(in srgb, var(--accent-color) $tint-subtle, transparent);
120
123
 
121
124
  .group-picker__group-label {
122
125
  color: var(--accent-color);
@@ -145,13 +148,17 @@
145
148
 
146
149
  &__chevron {
147
150
  flex-shrink: 0;
148
- font-size: 1rem;
149
151
  color: var(--secondary-text);
150
152
  opacity: 0.5;
151
153
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1),
152
154
  color 0.15s ease,
153
155
  opacity 0.15s ease;
154
156
 
157
+ .icon-svg {
158
+ width: 1rem;
159
+ height: 1rem;
160
+ }
161
+
155
162
  .group-picker__group.is-expanded & {
156
163
  transform: rotate(90deg);
157
164
  color: var(--accent-color);
@@ -167,7 +174,7 @@
167
174
  transition: color 0.15s ease;
168
175
 
169
176
  mark {
170
- background: color-mix(in srgb, var(--warning) 22%, transparent);
177
+ background: color-mix(in srgb, var(--warning) $tint-strong, transparent);
171
178
  color: inherit;
172
179
  border-radius: 2px;
173
180
  padding: 0 2px;
@@ -181,7 +188,7 @@
181
188
  letter-spacing: 0.025em;
182
189
  text-transform: uppercase;
183
190
  padding: calc($spacing * 0.15) calc($spacing * 0.6);
184
- border-radius: calc($border-radius * 3);
191
+ border-radius: $radius-xl;
185
192
  border: 1px solid var(--divider);
186
193
  background: transparent;
187
194
  color: var(--secondary-text);
@@ -192,7 +199,7 @@
192
199
  &:hover:not(.button-primary):not(:disabled) {
193
200
  border-color: var(--accent-color);
194
201
  color: var(--accent-color);
195
- background: color-mix(in srgb, var(--accent-color) 6%, transparent);
202
+ background: color-mix(in srgb, var(--accent-color) $tint-subtle, transparent);
196
203
  transform: none;
197
204
  }
198
205
 
@@ -201,7 +208,7 @@
201
208
  }
202
209
 
203
210
  &.button-primary {
204
- border-radius: calc($border-radius * 3);
211
+ border-radius: $radius-xl;
205
212
  font-size: 0.6875rem;
206
213
  font-weight: 500;
207
214
  letter-spacing: 0.025em;
@@ -216,7 +223,7 @@
216
223
  cursor: pointer;
217
224
 
218
225
  &.is-selected > .group-picker__group-header {
219
- background: color-mix(in srgb, var(--accent-color) 6%, transparent);
226
+ background: color-mix(in srgb, var(--accent-color) $tint-subtle, transparent);
220
227
 
221
228
  .group-picker__group-label {
222
229
  color: var(--accent-color);
@@ -231,12 +238,16 @@
231
238
 
232
239
  &__leaf-check {
233
240
  flex-shrink: 0;
234
- font-size: 1.1rem;
235
241
  color: var(--accent-color);
236
242
  opacity: 0;
237
243
  transform: scale(0.3);
238
244
  transition: opacity 0.18s ease,
239
245
  transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
246
+
247
+ .icon-svg {
248
+ width: 1.1rem;
249
+ height: 1.1rem;
250
+ }
240
251
  }
241
252
 
242
253
  &__subgroups {
@@ -266,7 +277,7 @@
266
277
  transition: background 0.15s ease, color 0.15s ease, outline-color 0.15s ease;
267
278
 
268
279
  &.is-selected {
269
- background: color-mix(in srgb, var(--accent-color) 12%, var(--background));
280
+ background: color-mix(in srgb, var(--accent-color) $tint-medium, var(--background));
270
281
  color: var(--accent-color);
271
282
  outline: 1px solid color-mix(in srgb, var(--accent-color) 35%, transparent);
272
283
  font-weight: 500;
@@ -279,7 +290,7 @@
279
290
  }
280
291
 
281
292
  mark {
282
- background: color-mix(in srgb, var(--warning) 22%, transparent);
293
+ background: color-mix(in srgb, var(--warning) $tint-strong, transparent);
283
294
  color: inherit;
284
295
  border-radius: 2px;
285
296
  padding: 0 2px;