@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.
Files changed (118) hide show
  1. package/README.md +13 -7
  2. package/css/accordion.scss +0 -5
  3. package/css/badge.scss +1 -6
  4. package/css/bottom-sheet.scss +3 -8
  5. package/css/breadcrumb.scss +6 -15
  6. package/css/button.scss +2 -1
  7. package/css/calendar.scss +0 -54
  8. package/css/card.scss +0 -5
  9. package/css/carousel.scss +0 -3
  10. package/css/chart.scss +0 -25
  11. package/css/chat-bubbles.scss +0 -15
  12. package/css/checkbox.scss +3 -2
  13. package/css/chips.scss +3 -7
  14. package/css/code-viewer.scss +1 -5
  15. package/css/context-menu.scss +4 -6
  16. package/css/datepicker.scss +4 -7
  17. package/css/docs.scss +0 -4
  18. package/css/dropdown.scss +1 -1
  19. package/css/editor.scss +1 -23
  20. package/css/file-uploader.scss +2 -2
  21. package/css/flyout-menu.scss +66 -44
  22. package/css/form.scss +0 -28
  23. package/css/gallery.scss +2 -3
  24. package/css/group-picker.scss +5 -35
  25. package/css/icons.scss +0 -3
  26. package/css/lightbox.scss +2 -4
  27. package/css/mixins.scss +8 -0
  28. package/css/modal.scss +3 -3
  29. package/css/parameters.scss +6 -1
  30. package/css/popover.scss +3 -15
  31. package/css/progress.scss +0 -6
  32. package/css/push-menu.scss +3 -28
  33. package/css/radiobutton.scss +2 -1
  34. package/css/range-slider.scss +1 -7
  35. package/css/scrollbar.scss +2 -6
  36. package/css/sidebar-nav.scss +0 -12
  37. package/css/stepper.scss +0 -4
  38. package/css/style.css +63 -68
  39. package/css/style.css.map +1 -1
  40. package/css/style.min.css +1 -1
  41. package/css/style.min.css.map +1 -1
  42. package/css/style.scss +1 -1
  43. package/css/table.scss +0 -4
  44. package/css/tabs.scss +0 -2
  45. package/css/timeline.scss +1 -13
  46. package/css/timepicker.scss +6 -7
  47. package/css/toast.scss +1 -1
  48. package/css/tooltip.scss +1 -5
  49. package/css/tree.scss +1 -1
  50. package/css/typography.scss +3 -3
  51. package/css/virtual-dropdown.scss +3 -28
  52. package/js/bottom-sheet.d.ts +3 -1
  53. package/js/bottom-sheet.js +26 -27
  54. package/js/calendar.d.ts +7 -0
  55. package/js/calendar.js +14 -33
  56. package/js/carousel.d.ts +2 -0
  57. package/js/carousel.js +13 -5
  58. package/js/chart.d.ts +4 -0
  59. package/js/chart.js +13 -31
  60. package/js/code-viewer.d.ts +1 -0
  61. package/js/code-viewer.js +4 -0
  62. package/js/context-menu.d.ts +9 -2
  63. package/js/context-menu.js +17 -14
  64. package/js/datepicker.d.ts +4 -0
  65. package/js/datepicker.js +26 -11
  66. package/js/dropdown.d.ts +3 -3
  67. package/js/dropdown.js +6 -9
  68. package/js/editor.d.ts +1 -0
  69. package/js/editor.js +9 -3
  70. package/js/file-uploader.d.ts +4 -0
  71. package/js/file-uploader.js +52 -43
  72. package/js/flyout-menu.d.ts +5 -3
  73. package/js/flyout-menu.js +23 -46
  74. package/js/gallery.d.ts +3 -0
  75. package/js/gallery.js +22 -24
  76. package/js/group-picker.d.ts +5 -0
  77. package/js/group-picker.js +12 -17
  78. package/js/lightbox.d.ts +3 -0
  79. package/js/lightbox.js +12 -6
  80. package/js/modal.d.ts +3 -1
  81. package/js/modal.js +14 -11
  82. package/js/popover.d.ts +2 -0
  83. package/js/popover.js +26 -30
  84. package/js/position.d.ts +2 -0
  85. package/js/position.js +1 -5
  86. package/js/push-menu.d.ts +2 -0
  87. package/js/push-menu.js +22 -35
  88. package/js/range-slider.d.ts +1 -0
  89. package/js/range-slider.js +5 -3
  90. package/js/scroll.d.ts +2 -0
  91. package/js/scroll.js +1 -0
  92. package/js/scrollbar.d.ts +2 -0
  93. package/js/scrollbar.js +24 -36
  94. package/js/select.d.ts +1 -0
  95. package/js/select.js +5 -10
  96. package/js/sidebar-nav.d.ts +2 -0
  97. package/js/sidebar-nav.js +8 -0
  98. package/js/stepper.d.ts +2 -0
  99. package/js/stepper.js +7 -1
  100. package/js/table.d.ts +4 -0
  101. package/js/table.js +15 -22
  102. package/js/tabs.d.ts +2 -0
  103. package/js/tabs.js +6 -14
  104. package/js/theme.d.ts +1 -0
  105. package/js/theme.js +5 -13
  106. package/js/timepicker.d.ts +3 -0
  107. package/js/timepicker.js +81 -67
  108. package/js/toast.d.ts +3 -0
  109. package/js/toast.js +24 -15
  110. package/js/tooltip.d.ts +2 -0
  111. package/js/tooltip.js +21 -19
  112. package/js/tree.d.ts +3 -0
  113. package/js/tree.js +13 -0
  114. package/js/utils.d.ts +1 -3
  115. package/js/utils.js +0 -3
  116. package/js/virtual-dropdown.d.ts +3 -0
  117. package/js/virtual-dropdown.js +25 -0
  118. package/package.json +2 -2
package/css/popover.scss CHANGED
@@ -8,7 +8,7 @@ $arrow: 6px;
8
8
  z-index: 900;
9
9
  background: var(--background);
10
10
  border: 1px solid var(--divider);
11
- border-radius: calc($border-radius * 2.5);
11
+ border-radius: $radius-panel;
12
12
  box-shadow:
13
13
  0 0 0 1px rgba(0, 0, 0, 0.03),
14
14
  0 4px 6px -2px rgba(0, 0, 0, 0.05),
@@ -18,13 +18,11 @@ $arrow: 6px;
18
18
  opacity: 0;
19
19
  pointer-events: none;
20
20
 
21
- // Entry: offset from the trigger side + subtle scale
22
21
  &[data-placement="top"] { transform-origin: bottom center; transform: translateY(6px) scale(0.95); }
23
22
  &[data-placement="bottom"] { transform-origin: top center; transform: translateY(-6px) scale(0.95); }
24
23
  &[data-placement="left"] { transform-origin: right center; transform: translateX(6px) scale(0.95); }
25
24
  &[data-placement="right"] { transform-origin: left center; transform: translateX(-6px) scale(0.95); }
26
25
 
27
- // Shift transform-origin to the anchor corner for aligned popovers
28
26
  &[data-placement="bottom"][data-align="start"] { transform-origin: top left; }
29
27
  &[data-placement="bottom"][data-align="end"] { transform-origin: top right; }
30
28
  &[data-placement="top"][data-align="start"] { transform-origin: bottom left; }
@@ -40,8 +38,6 @@ $arrow: 6px;
40
38
  transform: none !important;
41
39
  }
42
40
 
43
- // ── Arrows ─────────────────────────────────────────────────────────────────
44
- // Two layers: ::before = border colour (1px larger), ::after = background fill
45
41
  &[data-arrow="true"] {
46
42
  &::before,
47
43
  &::after {
@@ -52,7 +48,6 @@ $arrow: 6px;
52
48
  pointer-events: none;
53
49
  }
54
50
 
55
- // bottom placement → arrow ▲ at top of popover
56
51
  &[data-placement="bottom"] {
57
52
  &::before {
58
53
  top: -($arrow + 1px);
@@ -72,7 +67,6 @@ $arrow: 6px;
72
67
  }
73
68
  }
74
69
 
75
- // top placement → arrow ▼ at bottom of popover
76
70
  &[data-placement="top"] {
77
71
  &::before {
78
72
  bottom: -($arrow + 1px);
@@ -92,7 +86,6 @@ $arrow: 6px;
92
86
  }
93
87
  }
94
88
 
95
- // right placement → arrow ◁ at left of popover
96
89
  &[data-placement="right"] {
97
90
  &::before {
98
91
  left: -($arrow + 1px);
@@ -112,7 +105,6 @@ $arrow: 6px;
112
105
  }
113
106
  }
114
107
 
115
- // left placement → arrow ▶ at right of popover
116
108
  &[data-placement="left"] {
117
109
  &::before {
118
110
  right: -($arrow + 1px);
@@ -134,8 +126,6 @@ $arrow: 6px;
134
126
  }
135
127
  }
136
128
 
137
- // ── Content regions ──────────────────────────────────────────────────────────
138
-
139
129
  .popover-header {
140
130
  padding: calc($spacing * 0.65) $spacing;
141
131
  border-bottom: 1px solid var(--divider);
@@ -146,7 +136,7 @@ $arrow: 6px;
146
136
  align-items: center;
147
137
  justify-content: space-between;
148
138
  gap: calc($spacing * 0.5);
149
- border-radius: calc($border-radius * 2.5) calc($border-radius * 2.5) 0 0;
139
+ border-radius: $radius-panel $radius-panel 0 0;
150
140
  }
151
141
 
152
142
  .popover-body {
@@ -162,11 +152,9 @@ $arrow: 6px;
162
152
  display: flex;
163
153
  justify-content: flex-end;
164
154
  gap: calc($spacing * 0.5);
165
- border-radius: 0 0 calc($border-radius * 2.5) calc($border-radius * 2.5);
155
+ border-radius: 0 0 $radius-panel $radius-panel;
166
156
  }
167
157
 
168
- // ── Action list (menu-style content) ─────────────────────────────────────────
169
-
170
158
  .popover-menu {
171
159
  padding: calc($spacing * 0.375) 0;
172
160
 
package/css/progress.scss CHANGED
@@ -1,8 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
3
 
4
- // ── Progress bar ──────────────────────────────────────────────────────────────
5
-
6
4
  .progress {
7
5
  width: 100%;
8
6
  height: 8px;
@@ -18,13 +16,11 @@
18
16
  transition: width 0.3s ease;
19
17
  min-width: 0;
20
18
 
21
- // ── Color variants ────────────────────────────────────────────────────────
22
19
  &.accent { background: var(--accent-color); }
23
20
  &.success { background: var(--success); }
24
21
  &.warning { background: var(--warning); }
25
22
  &.error { background: var(--error); }
26
23
 
27
- // ── Indeterminate ─────────────────────────────────────────────────────────
28
24
  &.animated {
29
25
  width: 40% !important;
30
26
  background: var(--accent-color);
@@ -37,8 +33,6 @@
37
33
  100% { transform: translateX(350%); }
38
34
  }
39
35
 
40
- // ── Skeleton ──────────────────────────────────────────────────────────────────
41
-
42
36
  @keyframes skeleton-shimmer {
43
37
  0% { background-position: 200% 0; }
44
38
  100% { background-position: -200% 0; }
@@ -5,15 +5,13 @@ $menu-width: 280px;
5
5
  $menu-easing: cubic-bezier(0.4, 0, 0.2, 1);
6
6
  $menu-duration: 300ms;
7
7
 
8
- // ─── Outer nav shell ───────────────────────────────────────────────────────
9
-
10
8
  nav.push-menu {
11
9
  position: fixed;
12
10
  top: 0;
13
11
  left: 0;
14
12
  width: $menu-width;
15
13
  height: 100%;
16
- overflow: hidden; // clip sliding panels
14
+ overflow: hidden;
17
15
  transform: translateX(-100%);
18
16
  transition: transform $menu-duration $menu-easing,
19
17
  box-shadow $menu-duration $menu-easing;
@@ -34,12 +32,6 @@ nav.push-menu {
34
32
  }
35
33
  }
36
34
 
37
- // ─── Panel system ──────────────────────────────────────────────────────────
38
- // Three states:
39
- // (no class) → translateX(105%) hidden to the right
40
- // .is-prev → translateX(-20%) parallax depth, previous level
41
- // .is-active → translateX(0) current visible panel
42
-
43
35
  .push-menu-panel {
44
36
  position: absolute;
45
37
  inset: 0;
@@ -61,18 +53,14 @@ nav.push-menu {
61
53
  }
62
54
  }
63
55
 
64
- // ─── Root panel list ───────────────────────────────────────────────────────
65
-
66
56
  .push-menu-panel[data-level="0"] > ul {
67
- padding-top: calc($spacing * 4.5); // clear the fixed header
57
+ padding-top: calc($spacing * 4.5);
68
58
  padding-bottom: $spacing;
69
59
  margin: 0;
70
60
  list-style: none;
71
61
  width: 100%;
72
62
  }
73
63
 
74
- // ─── Sub-panel header (back button + title) ────────────────────────────────
75
-
76
64
  .push-menu-panel-header {
77
65
  display: flex;
78
66
  align-items: center;
@@ -116,7 +104,7 @@ nav.push-menu {
116
104
  border: none;
117
105
  background: rgba(255, 255, 255, 0.08);
118
106
  color: rgba(255, 255, 255, 0.65);
119
- pointer-events: none; // header handles the click
107
+ pointer-events: none;
120
108
  transition: background 160ms ease, color 160ms ease, transform 160ms ease;
121
109
  }
122
110
 
@@ -131,8 +119,6 @@ nav.push-menu {
131
119
  text-overflow: ellipsis;
132
120
  }
133
121
 
134
- // ─── Sub-panel list ────────────────────────────────────────────────────────
135
-
136
122
  .push-menu-panel:not([data-level="0"]) > ul {
137
123
  padding: calc($spacing * 0.5) 0;
138
124
  margin: 0;
@@ -140,13 +126,10 @@ nav.push-menu {
140
126
  width: 100%;
141
127
  }
142
128
 
143
- // ─── List items ────────────────────────────────────────────────────────────
144
-
145
129
  nav li {
146
130
  margin: 0;
147
131
  }
148
132
 
149
- // Shared styles: anchor links and submenu trigger spans
150
133
  nav a,
151
134
  .push-menu-item {
152
135
  color: var(--accent-color-text);
@@ -181,8 +164,6 @@ nav li + li .push-menu-item {
181
164
  border-top: 1px solid rgba(255, 255, 255, 0.055);
182
165
  }
183
166
 
184
- // ─── Chevron for parent items ───────────────────────────────────────────────
185
-
186
167
  .push-menu-chevron {
187
168
  margin-left: auto;
188
169
  flex-shrink: 0;
@@ -198,8 +179,6 @@ nav li + li .push-menu-item {
198
179
  transform: translateX(2px);
199
180
  }
200
181
 
201
- // ─── Navigation controls (hamburger) ───────────────────────────────────────
202
-
203
182
  .navigation-controls {
204
183
  line-height: inherit;
205
184
 
@@ -221,8 +200,6 @@ nav li + li .push-menu-item {
221
200
  }
222
201
  }
223
202
 
224
- // ─── Backdrop ──────────────────────────────────────────────────────────────
225
-
226
203
  .push-menu-backdrop {
227
204
  position: fixed;
228
205
  inset: 0;
@@ -240,8 +217,6 @@ nav li + li .push-menu-item {
240
217
  }
241
218
  }
242
219
 
243
- // ─── Main header ───────────────────────────────────────────────────────────
244
-
245
220
  .main-header {
246
221
  position: fixed;
247
222
  background: var(--secondary-background);
@@ -1,5 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
+ @use "mixins" as *;
3
4
 
4
5
  $radio-size: 1.15rem;
5
6
  $radio-dot-size: 0.55rem;
@@ -31,7 +32,7 @@ $radio-dot-size: 0.55rem;
31
32
  }
32
33
 
33
34
  &:focus-visible ~ .checkmark {
34
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 15%, transparent);
35
+ @include focus-glow(15%);
35
36
  border-color: var(--accent-color);
36
37
  }
37
38
 
@@ -16,13 +16,12 @@ $thumb-size: 1.1rem;
16
16
  padding: calc($spacing / 2) 0;
17
17
  margin: 0;
18
18
  display: block;
19
- // reset form.scss overrides
19
+
20
20
  min-height: auto;
21
21
  border: none;
22
22
  box-shadow: none;
23
23
  outline: none;
24
24
 
25
- // ── Track ────────────────────────────────────────────────
26
25
  &::-webkit-slider-runnable-track {
27
26
  height: $track-height;
28
27
  border-radius: $track-height;
@@ -45,7 +44,6 @@ $thumb-size: 1.1rem;
45
44
  background: var(--accent-color);
46
45
  }
47
46
 
48
- // ── Thumb ─────────────────────────────────────────────────
49
47
  &::-webkit-slider-thumb {
50
48
  -webkit-appearance: none;
51
49
  appearance: none;
@@ -70,7 +68,6 @@ $thumb-size: 1.1rem;
70
68
  cursor: pointer;
71
69
  }
72
70
 
73
- // ── Hover ─────────────────────────────────────────────────
74
71
  &:hover::-webkit-slider-thumb {
75
72
  transform: scale(1.15);
76
73
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent-color) 15%, transparent);
@@ -81,7 +78,6 @@ $thumb-size: 1.1rem;
81
78
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent-color) 15%, transparent);
82
79
  }
83
80
 
84
- // ── Active ────────────────────────────────────────────────
85
81
  &:active::-webkit-slider-thumb {
86
82
  transform: scale(1.22);
87
83
  box-shadow: 0 0 0 9px color-mix(in srgb, var(--accent-color) 18%, transparent);
@@ -92,7 +88,6 @@ $thumb-size: 1.1rem;
92
88
  box-shadow: 0 0 0 9px color-mix(in srgb, var(--accent-color) 18%, transparent);
93
89
  }
94
90
 
95
- // ── Focus ─────────────────────────────────────────────────
96
91
  &:focus-visible::-webkit-slider-thumb {
97
92
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent-color) 25%, transparent);
98
93
  }
@@ -101,7 +96,6 @@ $thumb-size: 1.1rem;
101
96
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent-color) 25%, transparent);
102
97
  }
103
98
 
104
- // ── Disabled ──────────────────────────────────────────────
105
99
  &:disabled {
106
100
  cursor: not-allowed;
107
101
 
@@ -1,5 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
+ @use "mixins" as *;
3
4
 
4
5
  :root {
5
6
  --track-width: 12px;
@@ -52,7 +53,6 @@
52
53
  pointer-events: auto;
53
54
  transition: background 0.3s ease;
54
55
 
55
- // Direct hover over the track lane → more intent, wider thumb
56
56
  &:hover {
57
57
  background: var(--hover);
58
58
 
@@ -76,7 +76,6 @@
76
76
  pointer-events: auto;
77
77
  touch-action: none;
78
78
 
79
- // Thin sliver at rest, grows rightward on interaction
80
79
  transform: scaleX(0.3);
81
80
  transform-origin: right center;
82
81
  transition:
@@ -87,19 +86,16 @@
87
86
  will-change: top, height, transform, opacity;
88
87
  }
89
88
 
90
- // Hover over the container → reveal thumb gently
91
89
  &:hover .thumb {
92
90
  opacity: 0.45;
93
91
  transform: scaleX(0.5);
94
92
  }
95
93
 
96
- // JS: user is actively scrolling (fades out ~800ms after last scroll)
97
94
  &.is-scrolling .thumb {
98
95
  opacity: 0.6;
99
96
  transform: scaleX(0.5);
100
97
  }
101
98
 
102
- // JS: thumb is being dragged
103
99
  &.is-dragging {
104
100
  cursor: grabbing;
105
101
 
@@ -111,7 +107,7 @@
111
107
  opacity: 1;
112
108
  transform: scaleX(1);
113
109
  background: var(--accent-color);
114
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 18%, transparent);
110
+ @include focus-glow(18%);
115
111
  cursor: grabbing;
116
112
  transition:
117
113
  opacity 0.15s ease,
@@ -1,14 +1,10 @@
1
1
  @use "parameters" as *;
2
2
 
3
- // ── Layout shell ──────────────────────────────────────────────────────────────
4
-
5
3
  .sidebar-layout {
6
4
  display: flex;
7
5
  min-height: 100vh;
8
6
  }
9
7
 
10
- // ── Sidebar ───────────────────────────────────────────────────────────────────
11
-
12
8
  .sidebar-nav {
13
9
  width: var(--sidebar-width, 240px);
14
10
  position: fixed;
@@ -30,8 +26,6 @@
30
26
  }
31
27
  }
32
28
 
33
- // ── Main content area ─────────────────────────────────────────────────────────
34
-
35
29
  .sidebar-main {
36
30
  flex: 1;
37
31
  min-width: 0;
@@ -40,8 +34,6 @@
40
34
  margin-left: var(--sidebar-width, 240px);
41
35
  }
42
36
 
43
- // ── Backdrop (mobile overlay) ─────────────────────────────────────────────────
44
-
45
37
  .sidebar-backdrop {
46
38
  display: none;
47
39
  position: fixed;
@@ -52,8 +44,6 @@
52
44
  &.is-visible { display: block; }
53
45
  }
54
46
 
55
- // ── Mobile toggle button ──────────────────────────────────────────────────────
56
-
57
47
  .sidebar-toggle {
58
48
  display: none;
59
49
  background: none;
@@ -67,8 +57,6 @@
67
57
  svg { display: block; }
68
58
  }
69
59
 
70
- // ── Mobile breakpoint ─────────────────────────────────────────────────────────
71
-
72
60
  @media (max-width: 768px) {
73
61
  .sidebar-toggle {
74
62
  display: flex;
package/css/stepper.scss CHANGED
@@ -87,7 +87,6 @@ $connector-thickness: 2px;
87
87
  transition: opacity 0.25s ease;
88
88
  }
89
89
 
90
- // Connector — animated fill via ::after
91
90
  .stepper-connector {
92
91
  flex: 1;
93
92
  height: $connector-thickness;
@@ -113,7 +112,6 @@ $connector-thickness: 2px;
113
112
  }
114
113
  }
115
114
 
116
- // Step states
117
115
  .stepper-step {
118
116
  &.active {
119
117
  .stepper-indicator {
@@ -169,7 +167,6 @@ $connector-thickness: 2px;
169
167
  }
170
168
  }
171
169
 
172
- // Vertical orientation
173
170
  .stepper-vertical {
174
171
  flex-direction: column;
175
172
 
@@ -207,7 +204,6 @@ $connector-thickness: 2px;
207
204
  }
208
205
  }
209
206
 
210
- // Clickable steps
211
207
  .stepper-clickable {
212
208
  .stepper-step {
213
209
  &.completed,