@dodlhuat/basix 1.3.3 → 1.3.4

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 CHANGED
@@ -1,4 +1,4 @@
1
- # Basix 1.3.3
1
+ # Basix 1.3.4
2
2
 
3
3
  Basix is intended as a starter for the rapid development of a design. Each design element can be added individually to
4
4
  include only the data required. It is using plain javascript / typescript and therefore is not dependent on any plugin.
package/css/badge.scss CHANGED
@@ -97,3 +97,11 @@
97
97
  &.badge-error { background: var(--error); }
98
98
  }
99
99
  }
100
+
101
+ [data-theme="dark"] {
102
+ .badge-solid {
103
+ &.badge-success { color: var(--background); }
104
+ &.badge-warning { color: var(--background); }
105
+ &.badge-error { color: var(--background); }
106
+ }
107
+ }
package/css/button.scss CHANGED
@@ -60,7 +60,7 @@ button,
60
60
  }
61
61
 
62
62
  &.active {
63
- background: var(--divider);
63
+ background: var(--accent-color-tint);
64
64
  color: var(--accent-color);
65
65
  }
66
66
 
@@ -172,29 +172,75 @@ button.button-error {
172
172
 
173
173
  .button-success,
174
174
  button.button-success {
175
- @include button-variant-dark(var(--success));
175
+ color: var(--background);
176
+ &:hover:not(:disabled) { background: color-mix(in srgb, var(--success) 82%, white); }
177
+ &:active:not(:disabled) { background: color-mix(in srgb, var(--success) 70%, white); }
178
+ &.is-loading::after { color: var(--background); }
176
179
  }
177
180
 
178
181
  .button-warning,
179
182
  button.button-warning {
180
- @include button-variant-dark(var(--warning));
183
+ color: var(--background);
184
+ &:hover:not(:disabled) { background: color-mix(in srgb, var(--warning) 82%, white); }
185
+ &:active:not(:disabled) { background: color-mix(in srgb, var(--warning) 70%, white); }
186
+ &.is-loading::after { color: var(--background); }
181
187
  }
182
188
 
183
189
  .button-error,
184
190
  button.button-error {
185
- @include button-variant-dark(var(--error));
191
+ color: var(--background);
192
+ &:hover:not(:disabled) { background: color-mix(in srgb, var(--error) 82%, white); }
193
+ &:active:not(:disabled) { background: color-mix(in srgb, var(--error) 70%, white); }
194
+ &.is-loading::after { color: var(--background); }
186
195
  }
187
196
 
188
- .button-primary,
189
- button.button-primary,
190
- .button-success,
191
- button.button-success,
192
- .button-warning,
193
- button.button-warning,
194
- .button-error,
195
- button.button-error {
196
- &.is-loading::after {
197
- color: var(--primary-text);
198
- }
197
+ .button-primary.is-loading::after,
198
+ button.button-primary.is-loading::after {
199
+ color: var(--primary-text);
200
+ }
201
+ }
202
+
203
+ // Size variants
204
+ .button-sm,
205
+ button.button-sm {
206
+ padding: calc($spacing * 0.35) calc($spacing * 0.75);
207
+ font-size: 0.8125rem;
208
+ }
209
+
210
+ .button-lg,
211
+ button.button-lg {
212
+ padding: calc($spacing * 0.8) calc($spacing * 1.75);
213
+ font-size: 1.0625rem;
214
+ }
215
+
216
+ // Outline variant
217
+ .button-outline,
218
+ button.button-outline {
219
+ background: transparent;
220
+ border: 1px solid var(--divider);
221
+ color: var(--primary-text);
222
+
223
+ &:hover:not(:disabled) {
224
+ background: var(--hover);
225
+ border-color: color-mix(in srgb, var(--divider) 50%, var(--primary-text));
199
226
  }
227
+
228
+ &:active:not(:disabled) {
229
+ background: var(--secondary-background);
230
+ }
231
+ }
232
+
233
+ // Icon-only button — square, equal padding
234
+ .button-icon,
235
+ button.button-icon {
236
+ padding: calc($spacing * 0.5);
237
+ width: 2.25rem;
238
+ height: 2.25rem;
239
+ flex-shrink: 0;
240
+ }
241
+
242
+ // Pill variant
243
+ .button-pill,
244
+ button.button-pill {
245
+ border-radius: $radius-xl;
200
246
  }
package/css/chips.scss CHANGED
@@ -39,6 +39,16 @@
39
39
  outline: none;
40
40
  @include focus-glow();
41
41
  }
42
+
43
+ &.selected {
44
+ background: color-mix(in srgb, var(--accent-color) 12%, var(--background));
45
+ color: var(--accent-color);
46
+ border-color: color-mix(in srgb, var(--accent-color) 25%, transparent);
47
+
48
+ &:hover {
49
+ background: color-mix(in srgb, var(--accent-color) 18%, var(--background));
50
+ }
51
+ }
42
52
  }
43
53
 
44
54
  &.closeable {
package/css/colors.scss CHANGED
@@ -30,4 +30,8 @@ body {
30
30
 
31
31
  .default-bg {
32
32
  background: var(--divider);
33
+ }
34
+
35
+ .info-bg {
36
+ background: var(--accent-color);
33
37
  }
package/css/docs.scss CHANGED
@@ -191,10 +191,6 @@
191
191
 
192
192
  code {
193
193
  font-size: 0.8em;
194
- background: var(--secondary-background);
195
- border: 1px solid var(--divider);
196
- border-radius: 0.25rem;
197
- padding: 0.1em 0.35em;
198
194
  }
199
195
 
200
196
  .docs-demo {
package/css/dropdown.scss CHANGED
@@ -14,6 +14,20 @@
14
14
  }
15
15
  }
16
16
 
17
+ &.drop-up {
18
+ > .dropdown-menu {
19
+ top: auto;
20
+ bottom: 100%;
21
+ margin-top: 0;
22
+ margin-bottom: 6px;
23
+ transform: translateY(8px);
24
+ }
25
+
26
+ &.active > .dropdown-menu {
27
+ transform: translateY(0);
28
+ }
29
+ }
30
+
17
31
  .dropdown-menu {
18
32
  position: absolute;
19
33
  top: 100%;
package/css/modal.scss CHANGED
@@ -88,6 +88,27 @@
88
88
  }
89
89
  }
90
90
 
91
+ // Coloured variants — border echoes the type colour, close icon and header text go white
92
+ .modal-success { border-color: color-mix(in srgb, var(--success) 35%, transparent); }
93
+ .modal-error { border-color: color-mix(in srgb, var(--error) 35%, transparent); }
94
+ .modal-warning { border-color: color-mix(in srgb, var(--warning) 35%, transparent); }
95
+ .modal-info { border-color: color-mix(in srgb, var(--accent-color) 35%, transparent); }
96
+
97
+ .modal-success,
98
+ .modal-error,
99
+ .modal-warning,
100
+ .modal-info {
101
+ .close {
102
+ color: rgba(255, 255, 255, 0.8);
103
+ &:hover { color: #fff; }
104
+ }
105
+
106
+ .header {
107
+ color: #fff;
108
+ border-bottom-color: rgba(255, 255, 255, 0.2);
109
+ }
110
+ }
111
+
91
112
  @media screen and (max-width: 768px) {
92
113
  .modal-wrapper.is-visible .modal {
93
114
  transform: translateY(0);
@@ -57,6 +57,10 @@
57
57
  svg { display: block; }
58
58
  }
59
59
 
60
+ .sidebar-close {
61
+ display: none;
62
+ }
63
+
60
64
  @media (max-width: 768px) {
61
65
  .sidebar-toggle {
62
66
  display: flex;
@@ -77,4 +81,25 @@
77
81
  .sidebar-main {
78
82
  margin-left: 0;
79
83
  }
84
+
85
+ .sidebar-close {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ position: absolute;
90
+ bottom: 1rem;
91
+ left: 50%;
92
+ transform: translateX(-50%);
93
+ background: var(--secondary-background);
94
+ border: none;
95
+ border-radius: $border-radius;
96
+ padding: 0.5rem 1.25rem;
97
+ cursor: pointer;
98
+ color: var(--primary-text);
99
+ gap: 0.4rem;
100
+ font-size: 0.875rem;
101
+ white-space: nowrap;
102
+
103
+ &:hover { background: var(--divider); }
104
+ }
80
105
  }
package/css/style.css CHANGED
@@ -131,6 +131,10 @@ body {
131
131
  background: var(--divider);
132
132
  }
133
133
 
134
+ .info-bg {
135
+ background: var(--accent-color);
136
+ }
137
+
134
138
  html, body {
135
139
  overflow: auto;
136
140
  }
@@ -285,12 +289,13 @@ p {
285
289
  }
286
290
 
287
291
  code {
288
- font-family: "Courier New", Courier, monospace;
292
+ font-family: ui-monospace, "Cascadia Code", "SF Mono", Menlo, monospace;
289
293
  font-size: 0.875em;
290
- background: var(--secondary-background);
291
- border: 1px solid var(--divider);
292
- padding: 0.15em 0.4em;
293
- border-radius: 0.2rem;
294
+ background: color-mix(in srgb, var(--accent-color) 10%, transparent);
295
+ border: 1px solid color-mix(in srgb, var(--accent-color) 20%, transparent);
296
+ color: var(--accent-color);
297
+ padding: 0.2em 0.45em;
298
+ border-radius: 0.4rem;
294
299
  }
295
300
 
296
301
  pre code {
@@ -405,7 +410,7 @@ ul li {
405
410
  list-style-type: disc;
406
411
  }
407
412
  ul li li {
408
- list-style-type: circle;
413
+ list-style-type: "· ";
409
414
  }
410
415
 
411
416
  ol li {
@@ -415,8 +420,37 @@ ol li li {
415
420
  list-style-type: lower-latin;
416
421
  }
417
422
 
423
+ li::marker {
424
+ color: var(--secondary-text);
425
+ }
426
+
427
+ ol li::marker {
428
+ font-variant-numeric: tabular-nums;
429
+ font-weight: 600;
430
+ font-size: 0.875em;
431
+ }
432
+
418
433
  li + li {
419
- margin-top: 0.25em;
434
+ margin-top: 0.4em;
435
+ }
436
+
437
+ dl {
438
+ margin-bottom: 0.6666666667rem;
439
+ }
440
+
441
+ dt {
442
+ font-weight: 600;
443
+ color: var(--primary-text);
444
+ margin-top: 0.5rem;
445
+ }
446
+ dt:first-child {
447
+ margin-top: 0;
448
+ }
449
+
450
+ dd {
451
+ padding-left: 1.5rem;
452
+ color: var(--secondary-text);
453
+ margin-top: 0.15em;
420
454
  }
421
455
 
422
456
  hr {
@@ -1661,7 +1695,7 @@ button:focus-visible,
1661
1695
  }
1662
1696
  button.active,
1663
1697
  .button.active {
1664
- background: var(--divider);
1698
+ background: var(--accent-color-tint);
1665
1699
  color: var(--accent-color);
1666
1700
  }
1667
1701
  button:disabled,
@@ -1808,7 +1842,7 @@ button.button-error:active:not(:disabled) {
1808
1842
  }
1809
1843
  [data-theme=dark] .button-success,
1810
1844
  [data-theme=dark] button.button-success {
1811
- color: var(--primary-text);
1845
+ color: var(--background);
1812
1846
  }
1813
1847
  [data-theme=dark] .button-success:hover:not(:disabled),
1814
1848
  [data-theme=dark] button.button-success:hover:not(:disabled) {
@@ -1818,9 +1852,13 @@ button.button-error:active:not(:disabled) {
1818
1852
  [data-theme=dark] button.button-success:active:not(:disabled) {
1819
1853
  background: color-mix(in srgb, var(--success) 70%, white);
1820
1854
  }
1855
+ [data-theme=dark] .button-success.is-loading::after,
1856
+ [data-theme=dark] button.button-success.is-loading::after {
1857
+ color: var(--background);
1858
+ }
1821
1859
  [data-theme=dark] .button-warning,
1822
1860
  [data-theme=dark] button.button-warning {
1823
- color: var(--primary-text);
1861
+ color: var(--background);
1824
1862
  }
1825
1863
  [data-theme=dark] .button-warning:hover:not(:disabled),
1826
1864
  [data-theme=dark] button.button-warning:hover:not(:disabled) {
@@ -1830,9 +1868,13 @@ button.button-error:active:not(:disabled) {
1830
1868
  [data-theme=dark] button.button-warning:active:not(:disabled) {
1831
1869
  background: color-mix(in srgb, var(--warning) 70%, white);
1832
1870
  }
1871
+ [data-theme=dark] .button-warning.is-loading::after,
1872
+ [data-theme=dark] button.button-warning.is-loading::after {
1873
+ color: var(--background);
1874
+ }
1833
1875
  [data-theme=dark] .button-error,
1834
1876
  [data-theme=dark] button.button-error {
1835
- color: var(--primary-text);
1877
+ color: var(--background);
1836
1878
  }
1837
1879
  [data-theme=dark] .button-error:hover:not(:disabled),
1838
1880
  [data-theme=dark] button.button-error:hover:not(:disabled) {
@@ -1842,17 +1884,56 @@ button.button-error:active:not(:disabled) {
1842
1884
  [data-theme=dark] button.button-error:active:not(:disabled) {
1843
1885
  background: color-mix(in srgb, var(--error) 70%, white);
1844
1886
  }
1845
- [data-theme=dark] .button-primary.is-loading::after,
1846
- [data-theme=dark] button.button-primary.is-loading::after,
1847
- [data-theme=dark] .button-success.is-loading::after,
1848
- [data-theme=dark] button.button-success.is-loading::after,
1849
- [data-theme=dark] .button-warning.is-loading::after,
1850
- [data-theme=dark] button.button-warning.is-loading::after,
1851
1887
  [data-theme=dark] .button-error.is-loading::after,
1852
1888
  [data-theme=dark] button.button-error.is-loading::after {
1889
+ color: var(--background);
1890
+ }
1891
+ [data-theme=dark] .button-primary.is-loading::after,
1892
+ [data-theme=dark] button.button-primary.is-loading::after {
1853
1893
  color: var(--primary-text);
1854
1894
  }
1855
1895
 
1896
+ .button-sm,
1897
+ button.button-sm {
1898
+ padding: 0.35rem 0.75rem;
1899
+ font-size: 0.8125rem;
1900
+ }
1901
+
1902
+ .button-lg,
1903
+ button.button-lg {
1904
+ padding: 0.8rem 1.75rem;
1905
+ font-size: 1.0625rem;
1906
+ }
1907
+
1908
+ .button-outline,
1909
+ button.button-outline {
1910
+ background: transparent;
1911
+ border: 1px solid var(--divider);
1912
+ color: var(--primary-text);
1913
+ }
1914
+ .button-outline:hover:not(:disabled),
1915
+ button.button-outline:hover:not(:disabled) {
1916
+ background: var(--hover);
1917
+ border-color: color-mix(in srgb, var(--divider) 50%, var(--primary-text));
1918
+ }
1919
+ .button-outline:active:not(:disabled),
1920
+ button.button-outline:active:not(:disabled) {
1921
+ background: var(--secondary-background);
1922
+ }
1923
+
1924
+ .button-icon,
1925
+ button.button-icon {
1926
+ padding: 0.5rem;
1927
+ width: 2.25rem;
1928
+ height: 2.25rem;
1929
+ flex-shrink: 0;
1930
+ }
1931
+
1932
+ .button-pill,
1933
+ button.button-pill {
1934
+ border-radius: 1.6rem;
1935
+ }
1936
+
1856
1937
  .modal-wrapper {
1857
1938
  position: fixed;
1858
1939
  inset: 0;
@@ -1932,6 +2013,42 @@ button.button-error:active:not(:disabled) {
1932
2013
  gap: 0.5rem;
1933
2014
  }
1934
2015
 
2016
+ .modal-success {
2017
+ border-color: color-mix(in srgb, var(--success) 35%, transparent);
2018
+ }
2019
+
2020
+ .modal-error {
2021
+ border-color: color-mix(in srgb, var(--error) 35%, transparent);
2022
+ }
2023
+
2024
+ .modal-warning {
2025
+ border-color: color-mix(in srgb, var(--warning) 35%, transparent);
2026
+ }
2027
+
2028
+ .modal-info {
2029
+ border-color: color-mix(in srgb, var(--accent-color) 35%, transparent);
2030
+ }
2031
+
2032
+ .modal-success .close,
2033
+ .modal-error .close,
2034
+ .modal-warning .close,
2035
+ .modal-info .close {
2036
+ color: rgba(255, 255, 255, 0.8);
2037
+ }
2038
+ .modal-success .close:hover,
2039
+ .modal-error .close:hover,
2040
+ .modal-warning .close:hover,
2041
+ .modal-info .close:hover {
2042
+ color: #fff;
2043
+ }
2044
+ .modal-success .header,
2045
+ .modal-error .header,
2046
+ .modal-warning .header,
2047
+ .modal-info .header {
2048
+ color: #fff;
2049
+ border-bottom-color: rgba(255, 255, 255, 0.2);
2050
+ }
2051
+
1935
2052
  @media screen and (max-width: 768px) {
1936
2053
  .modal-wrapper.is-visible .modal {
1937
2054
  transform: translateY(0);
@@ -3319,6 +3436,14 @@ nav li + li .push-menu-item {
3319
3436
  outline: none;
3320
3437
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 35%, transparent);
3321
3438
  }
3439
+ .chips .chip.clickable.selected {
3440
+ background: color-mix(in srgb, var(--accent-color) 12%, var(--background));
3441
+ color: var(--accent-color);
3442
+ border-color: color-mix(in srgb, var(--accent-color) 25%, transparent);
3443
+ }
3444
+ .chips .chip.clickable.selected:hover {
3445
+ background: color-mix(in srgb, var(--accent-color) 18%, var(--background));
3446
+ }
3322
3447
  .chips .chip.closeable {
3323
3448
  padding-right: 1.8rem;
3324
3449
  }
@@ -3505,6 +3630,16 @@ nav li + li .push-menu-item {
3505
3630
  background: var(--error);
3506
3631
  }
3507
3632
 
3633
+ [data-theme=dark] .badge-solid.badge-success {
3634
+ color: var(--background);
3635
+ }
3636
+ [data-theme=dark] .badge-solid.badge-warning {
3637
+ color: var(--background);
3638
+ }
3639
+ [data-theme=dark] .badge-solid.badge-error {
3640
+ color: var(--background);
3641
+ }
3642
+
3508
3643
  @keyframes stepper-pulse {
3509
3644
  0% {
3510
3645
  box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-color) 35%, transparent);
@@ -4528,6 +4663,7 @@ body {
4528
4663
 
4529
4664
  .tabs-list {
4530
4665
  display: flex;
4666
+ align-items: center;
4531
4667
  margin: 0;
4532
4668
  padding: 0;
4533
4669
  overflow-x: auto;
@@ -4538,6 +4674,7 @@ body {
4538
4674
  }
4539
4675
 
4540
4676
  .tab-item {
4677
+ margin-top: 0;
4541
4678
  padding: 0.75rem 1.25rem;
4542
4679
  cursor: pointer;
4543
4680
  font-size: 0.875rem;
@@ -4556,6 +4693,11 @@ body {
4556
4693
  font-weight: 600;
4557
4694
  border-bottom-color: var(--accent-color);
4558
4695
  }
4696
+ .tab-item:focus-visible {
4697
+ outline: 2px solid var(--accent-color);
4698
+ outline-offset: -2px;
4699
+ border-radius: 0.4rem 0.4rem 0 0;
4700
+ }
4559
4701
 
4560
4702
  .tabs-content {
4561
4703
  padding: 1.5rem;
@@ -4575,6 +4717,7 @@ body {
4575
4717
  }
4576
4718
  .tabs-container.tabs-vertical .tabs-list {
4577
4719
  flex-direction: column;
4720
+ align-items: stretch;
4578
4721
  }
4579
4722
  .tabs-container.tabs-vertical .tab-item {
4580
4723
  width: 100%;
@@ -4586,6 +4729,9 @@ body {
4586
4729
  border-left-color: var(--accent-color);
4587
4730
  font-weight: 600;
4588
4731
  }
4732
+ .tabs-container.tabs-vertical .tab-item:focus-visible {
4733
+ border-radius: 0 0.4rem 0.4rem 0;
4734
+ }
4589
4735
  .tabs-container.tabs-vertical .tabs-content {
4590
4736
  flex: 1;
4591
4737
  }
@@ -4612,8 +4758,33 @@ body {
4612
4758
  color: #fff;
4613
4759
  border-bottom-color: transparent;
4614
4760
  }
4761
+ .tabs-container.tabs-pills .tab-item:focus-visible {
4762
+ border-radius: 2rem;
4763
+ }
4615
4764
 
4616
4765
  @media (max-width: 768px) {
4766
+ .tab-item {
4767
+ padding: 0.875rem 1.25rem;
4768
+ }
4769
+ .tabs-content {
4770
+ padding: 1rem;
4771
+ }
4772
+ .tabs-header {
4773
+ position: relative;
4774
+ }
4775
+ .tabs-header::after {
4776
+ content: "";
4777
+ position: absolute;
4778
+ right: 0;
4779
+ top: 0;
4780
+ bottom: 1px;
4781
+ width: 2.5rem;
4782
+ background: linear-gradient(to right, transparent, var(--primary-bg));
4783
+ pointer-events: none;
4784
+ }
4785
+ .tabs-container.tabs-pills .tabs-header::after {
4786
+ bottom: 0;
4787
+ }
4617
4788
  .tabs-container.tabs-vertical {
4618
4789
  flex-direction: column;
4619
4790
  }
@@ -4625,6 +4796,7 @@ body {
4625
4796
  .tabs-container.tabs-vertical .tabs-list {
4626
4797
  flex-direction: row;
4627
4798
  overflow-x: auto;
4799
+ align-items: center;
4628
4800
  }
4629
4801
  .tabs-container.tabs-vertical .tab-item {
4630
4802
  width: auto;
@@ -5463,6 +5635,16 @@ body {
5463
5635
  pointer-events: auto;
5464
5636
  transform: translateY(0);
5465
5637
  }
5638
+ .dropdown-container.drop-up > .dropdown-menu {
5639
+ top: auto;
5640
+ bottom: 100%;
5641
+ margin-top: 0;
5642
+ margin-bottom: 6px;
5643
+ transform: translateY(8px);
5644
+ }
5645
+ .dropdown-container.drop-up.active > .dropdown-menu {
5646
+ transform: translateY(0);
5647
+ }
5466
5648
  .dropdown-container .dropdown-menu {
5467
5649
  position: absolute;
5468
5650
  top: 100%;
@@ -8479,6 +8661,10 @@ body {
8479
8661
  display: block;
8480
8662
  }
8481
8663
 
8664
+ .sidebar-close {
8665
+ display: none;
8666
+ }
8667
+
8482
8668
  @media (max-width: 768px) {
8483
8669
  .sidebar-toggle {
8484
8670
  display: flex;
@@ -8496,6 +8682,27 @@ body {
8496
8682
  .sidebar-main {
8497
8683
  margin-left: 0;
8498
8684
  }
8685
+ .sidebar-close {
8686
+ display: flex;
8687
+ align-items: center;
8688
+ justify-content: center;
8689
+ position: absolute;
8690
+ bottom: 1rem;
8691
+ left: 50%;
8692
+ transform: translateX(-50%);
8693
+ background: var(--secondary-background);
8694
+ border: none;
8695
+ border-radius: 0.4rem;
8696
+ padding: 0.5rem 1.25rem;
8697
+ cursor: pointer;
8698
+ color: var(--primary-text);
8699
+ gap: 0.4rem;
8700
+ font-size: 0.875rem;
8701
+ white-space: nowrap;
8702
+ }
8703
+ .sidebar-close:hover {
8704
+ background: var(--divider);
8705
+ }
8499
8706
  }
8500
8707
  .sidebar-nav .docs-sidebar-logo {
8501
8708
  display: flex;
@@ -8678,10 +8885,6 @@ body {
8678
8885
  }
8679
8886
  .docs-content code {
8680
8887
  font-size: 0.8em;
8681
- background: var(--secondary-background);
8682
- border: 1px solid var(--divider);
8683
- border-radius: 0.25rem;
8684
- padding: 0.1em 0.35em;
8685
8888
  }
8686
8889
  .docs-content .docs-demo {
8687
8890
  background: var(--secondary-background);