@dodlhuat/basix 1.2.0 → 1.2.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.
Files changed (93) hide show
  1. package/README.md +266 -6
  2. package/css/accordion.scss +86 -87
  3. package/css/alert.scss +137 -137
  4. package/css/button.scss +48 -0
  5. package/css/calendar.scss +957 -0
  6. package/css/card.scss +65 -65
  7. package/css/chart.scss +270 -157
  8. package/css/chat-bubbles.scss +134 -68
  9. package/css/chips.scss +109 -19
  10. package/css/colors.scss +32 -32
  11. package/css/datepicker.scss +336 -336
  12. package/css/defaults.scss +90 -90
  13. package/css/docs.scss +529 -0
  14. package/css/editor.scss +36 -0
  15. package/css/file-uploader.scss +1 -1
  16. package/css/flyout-menu.scss +361 -361
  17. package/css/form.scss +0 -15
  18. package/css/gallery.scss +65 -6
  19. package/css/grid.scss +41 -40
  20. package/css/group-picker.scss +345 -0
  21. package/css/guitar-chords.css +250 -250
  22. package/css/icons.scss +330 -330
  23. package/css/parameters.scss +3 -3
  24. package/css/placeholder.scss +33 -33
  25. package/css/popover.scss +206 -0
  26. package/css/progress.scss +76 -32
  27. package/css/properties.scss +51 -36
  28. package/css/push-menu.scss +302 -174
  29. package/css/reset.scss +39 -39
  30. package/css/scrollbar.scss +62 -5
  31. package/css/sidebar-nav.scss +92 -0
  32. package/css/spinner.scss +65 -65
  33. package/css/stepper.scss +48 -12
  34. package/css/style.css +3155 -254
  35. package/css/style.css.map +1 -1
  36. package/css/style.min.css +1 -1
  37. package/css/style.scss +51 -45
  38. package/css/table.scss +199 -199
  39. package/css/tabs.scss +154 -123
  40. package/css/timeline.scss +83 -38
  41. package/css/timepicker.scss +100 -5
  42. package/css/toast.scss +81 -81
  43. package/css/virtual-dropdown.scss +35 -29
  44. package/js/calendar.js +532 -0
  45. package/js/calendar.ts +706 -0
  46. package/js/chart.js +573 -257
  47. package/js/chart.ts +692 -0
  48. package/js/code-viewer.js +10 -10
  49. package/js/code-viewer.ts +188 -188
  50. package/js/datepicker.ts +627 -627
  51. package/js/docs-nav.js +204 -0
  52. package/js/dropdown.ts +179 -179
  53. package/js/editor.js +50 -6
  54. package/js/editor.ts +483 -444
  55. package/js/file-uploader.js +1 -0
  56. package/js/file-uploader.ts +1 -0
  57. package/js/flyout-menu.js +14 -14
  58. package/js/flyout-menu.ts +249 -249
  59. package/js/form-builder.js +106 -106
  60. package/js/gallery.js +14 -8
  61. package/js/gallery.ts +245 -236
  62. package/js/group-picker.js +342 -0
  63. package/js/group-picker.ts +447 -0
  64. package/js/guitar-chords.js +268 -268
  65. package/js/lazy-loader.js +121 -121
  66. package/js/modal.ts +166 -166
  67. package/js/popover.js +163 -0
  68. package/js/popover.ts +219 -0
  69. package/js/position.js +108 -0
  70. package/js/position.ts +111 -0
  71. package/js/push-menu.js +113 -0
  72. package/js/push-menu.ts +284 -145
  73. package/js/request.js +50 -50
  74. package/js/scroll.ts +47 -47
  75. package/js/scrollbar.js +13 -0
  76. package/js/scrollbar.ts +324 -307
  77. package/js/select.ts +216 -216
  78. package/js/sidebar-nav.js +41 -0
  79. package/js/sidebar-nav.ts +66 -0
  80. package/js/table.ts +452 -452
  81. package/js/tabs.ts +279 -279
  82. package/js/theme.js +17 -6
  83. package/js/theme.ts +234 -224
  84. package/js/toast.ts +137 -137
  85. package/js/tooltip.js +6 -60
  86. package/js/tooltip.ts +184 -251
  87. package/js/tsconfig.json +18 -18
  88. package/js/utils.ts +83 -83
  89. package/js/virtual-dropdown.js +25 -25
  90. package/js/virtual-dropdown.ts +365 -365
  91. package/package.json +37 -39
  92. package/js/index.js +0 -816
  93. package/js/index.ts +0 -987
@@ -0,0 +1,92 @@
1
+ @use "parameters" as *;
2
+
3
+ // ── Layout shell ──────────────────────────────────────────────────────────────
4
+
5
+ .sidebar-layout {
6
+ display: flex;
7
+ min-height: 100vh;
8
+ }
9
+
10
+ // ── Sidebar ───────────────────────────────────────────────────────────────────
11
+
12
+ .sidebar-nav {
13
+ width: var(--sidebar-width, 240px);
14
+ position: fixed;
15
+ left: 0;
16
+ top: 0;
17
+ height: 100vh;
18
+ background: var(--primary-bg);
19
+ border-right: 1px solid var(--divider);
20
+ display: flex;
21
+ flex-direction: column;
22
+ z-index: 100;
23
+
24
+ .sidebar-scroll {
25
+ flex: 1;
26
+ min-height: 0;
27
+ background: none;
28
+ border-radius: 0;
29
+ box-shadow: none;
30
+ }
31
+ }
32
+
33
+ // ── Main content area ─────────────────────────────────────────────────────────
34
+
35
+ .sidebar-main {
36
+ flex: 1;
37
+ min-width: 0;
38
+ display: flex;
39
+ flex-direction: column;
40
+ margin-left: var(--sidebar-width, 240px);
41
+ }
42
+
43
+ // ── Backdrop (mobile overlay) ─────────────────────────────────────────────────
44
+
45
+ .sidebar-backdrop {
46
+ display: none;
47
+ position: fixed;
48
+ inset: 0;
49
+ background: rgba(0, 0, 0, 0.3);
50
+ z-index: 99;
51
+
52
+ &.is-visible { display: block; }
53
+ }
54
+
55
+ // ── Mobile toggle button ──────────────────────────────────────────────────────
56
+
57
+ .sidebar-toggle {
58
+ display: none;
59
+ background: none;
60
+ border: none;
61
+ padding: 0.25rem;
62
+ cursor: pointer;
63
+ color: var(--primary-text);
64
+ border-radius: $border-radius;
65
+
66
+ &:hover { background: var(--secondary-background); }
67
+ svg { display: block; }
68
+ }
69
+
70
+ // ── Mobile breakpoint ─────────────────────────────────────────────────────────
71
+
72
+ @media (max-width: 768px) {
73
+ .sidebar-toggle {
74
+ display: flex;
75
+ align-items: center;
76
+ }
77
+
78
+ .sidebar-nav {
79
+ left: calc(-1 * var(--sidebar-width, 240px));
80
+ transition: left 0.25s ease;
81
+ box-shadow: none;
82
+
83
+ &.is-open {
84
+ left: 0;
85
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
86
+ }
87
+ }
88
+
89
+ .sidebar-main {
90
+ margin-left: 0;
91
+ }
92
+ }
package/css/spinner.scss CHANGED
@@ -1,66 +1,66 @@
1
- @use "properties";
2
- @use "parameters" as *;
3
-
4
- .spinner {
5
- width: 2.5rem;
6
- height: 2.5rem;
7
- border: 3px solid var(--divider);
8
- border-top-color: var(--accent-color);
9
- border-radius: 50%;
10
- display: inline-block;
11
- animation: spinner-rotate 0.8s ease-in-out infinite;
12
-
13
- &.small {
14
- width: 1.25rem;
15
- height: 1.25rem;
16
- border-width: 2px;
17
- }
18
-
19
- &.large {
20
- width: 3.5rem;
21
- height: 3.5rem;
22
- border-width: 4px;
23
- }
24
- }
25
-
26
- @keyframes spinner-rotate {
27
- to {
28
- transform: rotate(360deg);
29
- }
30
- }
31
-
32
- .loading {
33
- display: inline-flex;
34
- align-items: center;
35
- gap: 0.5rem;
36
-
37
- &::before,
38
- &::after,
39
- span {
40
- content: '';
41
- width: 0.5rem;
42
- height: 0.5rem;
43
- border-radius: 50%;
44
- background-color: var(--accent-color);
45
- animation: loading-pulse 1.2s ease-in-out infinite;
46
- }
47
-
48
- span {
49
- animation-delay: 0.15s;
50
- }
51
-
52
- &::after {
53
- animation-delay: 0.3s;
54
- }
55
- }
56
-
57
- @keyframes loading-pulse {
58
- 0%, 80%, 100% {
59
- opacity: 0.25;
60
- transform: scale(0.8);
61
- }
62
- 40% {
63
- opacity: 1;
64
- transform: scale(1);
65
- }
1
+ @use "properties";
2
+ @use "parameters" as *;
3
+
4
+ .spinner {
5
+ width: 2.5rem;
6
+ height: 2.5rem;
7
+ border: 3px solid var(--divider);
8
+ border-top-color: var(--accent-color);
9
+ border-radius: 50%;
10
+ display: inline-block;
11
+ animation: spinner-rotate 0.8s ease-in-out infinite;
12
+
13
+ &.small {
14
+ width: 1.25rem;
15
+ height: 1.25rem;
16
+ border-width: 2px;
17
+ }
18
+
19
+ &.large {
20
+ width: 3.5rem;
21
+ height: 3.5rem;
22
+ border-width: 4px;
23
+ }
24
+ }
25
+
26
+ @keyframes spinner-rotate {
27
+ to {
28
+ transform: rotate(360deg);
29
+ }
30
+ }
31
+
32
+ .loading {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ gap: 0.5rem;
36
+
37
+ &::before,
38
+ &::after,
39
+ span {
40
+ content: '';
41
+ width: 0.5rem;
42
+ height: 0.5rem;
43
+ border-radius: 50%;
44
+ background-color: var(--accent-color);
45
+ animation: loading-pulse 1.2s ease-in-out infinite;
46
+ }
47
+
48
+ span {
49
+ animation-delay: 0.15s;
50
+ }
51
+
52
+ &::after {
53
+ animation-delay: 0.3s;
54
+ }
55
+ }
56
+
57
+ @keyframes loading-pulse {
58
+ 0%, 80%, 100% {
59
+ opacity: 0.25;
60
+ transform: scale(0.8);
61
+ }
62
+ 40% {
63
+ opacity: 1;
64
+ transform: scale(1);
65
+ }
66
66
  }
package/css/stepper.scss CHANGED
@@ -6,10 +6,22 @@ $connector-thickness: 2px;
6
6
 
7
7
  @keyframes stepper-pulse {
8
8
  0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-color) 35%, transparent); }
9
- 65% { box-shadow: 0 0 0 5px transparent; }
9
+ 65% { box-shadow: 0 0 0 6px transparent; }
10
10
  100% { box-shadow: 0 0 0 0 transparent; }
11
11
  }
12
12
 
13
+ @keyframes stepper-check-in {
14
+ 0% { transform: scale(0.5); opacity: 0; }
15
+ 60% { transform: scale(1.15); }
16
+ 100% { transform: scale(1); opacity: 1; }
17
+ }
18
+
19
+ @keyframes stepper-complete-pop {
20
+ 0% { transform: scale(1); }
21
+ 40% { transform: scale(1.18); }
22
+ 100% { transform: scale(1); }
23
+ }
24
+
13
25
  .stepper {
14
26
  display: flex;
15
27
  align-items: flex-start;
@@ -37,7 +49,11 @@ $connector-thickness: 2px;
37
49
  border: 2px solid var(--divider);
38
50
  background: var(--background);
39
51
  color: var(--secondary-text);
40
- transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
52
+ transition:
53
+ background 0.3s ease,
54
+ border-color 0.3s ease,
55
+ color 0.3s ease,
56
+ box-shadow 0.3s ease;
41
57
  position: relative;
42
58
  z-index: 1;
43
59
 
@@ -59,7 +75,7 @@ $connector-thickness: 2px;
59
75
  font-size: 0.8125rem;
60
76
  font-weight: 500;
61
77
  color: var(--secondary-text);
62
- transition: color 0.2s ease;
78
+ transition: color 0.25s ease, font-weight 0.25s ease;
63
79
  white-space: nowrap;
64
80
  }
65
81
 
@@ -68,16 +84,17 @@ $connector-thickness: 2px;
68
84
  color: var(--secondary-text);
69
85
  opacity: 0.6;
70
86
  white-space: nowrap;
87
+ transition: opacity 0.25s ease;
71
88
  }
72
89
 
73
90
  // Connector — animated fill via ::after
74
91
  .stepper-connector {
75
92
  flex: 1;
76
93
  height: $connector-thickness;
77
- // align center of connector with center of indicator
78
94
  margin-top: calc(#{$indicator-size} / 2 - #{$connector-thickness} / 2);
79
95
  min-width: $spacing;
80
96
  background: var(--divider);
97
+ border-radius: $connector-thickness;
81
98
  position: relative;
82
99
  overflow: hidden;
83
100
 
@@ -88,7 +105,7 @@ $connector-thickness: 2px;
88
105
  background: var(--accent-color);
89
106
  transform: scaleX(0);
90
107
  transform-origin: left;
91
- transition: transform 0.38s cubic-bezier(0.4, 0, 0.2, 1);
108
+ transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
92
109
  }
93
110
 
94
111
  &.completed::after {
@@ -110,6 +127,10 @@ $connector-thickness: 2px;
110
127
  color: var(--accent-color);
111
128
  font-weight: 600;
112
129
  }
130
+
131
+ .stepper-desc {
132
+ opacity: 0.8;
133
+ }
113
134
  }
114
135
 
115
136
  &.completed {
@@ -117,6 +138,11 @@ $connector-thickness: 2px;
117
138
  border-color: var(--accent-color);
118
139
  background: var(--accent-color);
119
140
  color: #fff;
141
+ animation: stepper-complete-pop 0.35s ease-out;
142
+
143
+ .icon-svg {
144
+ animation: stepper-check-in 0.3s ease-out 0.05s both;
145
+ }
120
146
  }
121
147
 
122
148
  .stepper-title {
@@ -135,6 +161,11 @@ $connector-thickness: 2px;
135
161
  .stepper-title {
136
162
  color: var(--error);
137
163
  }
164
+
165
+ .stepper-desc {
166
+ color: var(--error);
167
+ opacity: 0.7;
168
+ }
138
169
  }
139
170
  }
140
171
 
@@ -151,7 +182,6 @@ $connector-thickness: 2px;
151
182
  .stepper-label {
152
183
  align-items: flex-start;
153
184
  text-align: left;
154
- // vertically center the title text against the indicator circle
155
185
  padding-top: calc((#{$indicator-size} - 1.15rem) / 2);
156
186
  }
157
187
 
@@ -162,9 +192,9 @@ $connector-thickness: 2px;
162
192
  min-width: unset;
163
193
  flex: unset;
164
194
  margin-top: 0;
165
- // horizontally center connector under the indicator
166
195
  margin-left: calc(#{$indicator-size} / 2 - #{$connector-thickness} / 2);
167
196
  align-self: flex-start;
197
+ border-radius: $connector-thickness;
168
198
 
169
199
  &::after {
170
200
  transform: scaleY(0);
@@ -186,14 +216,20 @@ $connector-thickness: 2px;
186
216
 
187
217
  .stepper-indicator {
188
218
  transition:
189
- background 0.25s ease,
190
- border-color 0.25s ease,
191
- color 0.25s ease,
192
- transform 0.15s ease;
219
+ background 0.3s ease,
220
+ border-color 0.3s ease,
221
+ color 0.3s ease,
222
+ transform 0.2s ease,
223
+ box-shadow 0.2s ease;
193
224
  }
194
225
 
195
226
  &:hover .stepper-indicator {
196
- transform: scale(1.1);
227
+ transform: scale(1.12);
228
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--accent-color) 25%, transparent);
229
+ }
230
+
231
+ &:active .stepper-indicator {
232
+ transform: scale(1.04);
197
233
  }
198
234
  }
199
235
  }