@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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Basix 1.3.2
1
+ # Basix 1.3.3
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.
@@ -616,18 +616,24 @@ new ContextMenu('.my-element', [
616
616
  { label: 'Rename', icon: 'edit', shortcut: 'F2', action: (target) => {} },
617
617
  'separator',
618
618
  {
619
- label: 'Share', icon: 'send',
619
+ label: 'Share', icon: 'share',
620
620
  submenu: [
621
- { label: 'Copy link', icon: 'attachment', action: (target) => {} },
622
- { label: 'Send by mail', icon: 'mail', action: (target) => {} },
621
+ { label: 'Copy link', icon: 'link', action: (target) => {} },
622
+ { label: 'Send by mail', icon: 'mail', action: (target) => {} },
623
623
  ]
624
624
  },
625
625
  'separator',
626
626
  { label: 'Delete', icon: 'delete', destructive: true, action: (target) => {} },
627
- ]);
627
+ ], { spritePath: 'svg-icons/icons.svg' });
628
628
  ```
629
629
 
630
- The constructor accepts a CSS selector string, a single `HTMLElement`, or an array of `HTMLElement`s as the first argument.
630
+ The constructor accepts a CSS selector string, a single `HTMLElement`, or an array of `HTMLElement`s as the first argument. The optional third argument is an options object.
631
+
632
+ #### Options
633
+
634
+ | Option | Type | Default | Description |
635
+ |---|---|---|---|
636
+ | `spritePath` | string | — | Path to the SVG sprite file (e.g. `'svg-icons/icons.svg'`). Icons are only rendered when this is set. |
631
637
 
632
638
  #### Item types
633
639
 
@@ -642,7 +648,7 @@ The constructor accepts a CSS selector string, a single `HTMLElement`, or an arr
642
648
  | Property | Type | Description |
643
649
  |---|---|---|
644
650
  | `label` | string | Display text |
645
- | `icon` | string | SVG sprite icon id (e.g. `'delete'`) |
651
+ | `icon` | string | SVG sprite icon ID (e.g. `'delete'`). Requires `spritePath` option. |
646
652
  | `shortcut` | string | Keyboard shortcut hint shown on the right (e.g. `'⌘O'`) |
647
653
  | `disabled` | boolean | Renders item at reduced opacity, non-interactive |
648
654
  | `destructive` | boolean | Renders item in error/red color |
@@ -14,12 +14,10 @@
14
14
  &:last-child { border-bottom: none; }
15
15
  }
16
16
 
17
- // Hidden checkbox toggle
18
17
  .accordion-toggle {
19
18
  display: none;
20
19
  }
21
20
 
22
- // Clickable header / trigger
23
21
  .accordion-header {
24
22
  display: flex;
25
23
  justify-content: space-between;
@@ -49,7 +47,6 @@
49
47
  }
50
48
  }
51
49
 
52
- // Active state
53
50
  .accordion-toggle:checked + .accordion-header {
54
51
  color: var(--accent-color);
55
52
 
@@ -59,7 +56,6 @@
59
56
  }
60
57
  }
61
58
 
62
- // Grid wrapper — animates height via grid-template-rows
63
59
  .accordion-content {
64
60
  display: grid;
65
61
  grid-template-rows: 0fr;
@@ -71,7 +67,6 @@
71
67
  grid-template-rows: 1fr;
72
68
  }
73
69
 
74
- // Inner body — min-height:0 is required for grid 0fr to collapse
75
70
  .accordion-body {
76
71
  min-height: 0;
77
72
  padding: 0;
package/css/badge.scss CHANGED
@@ -11,7 +11,7 @@
11
11
  align-items: center;
12
12
  gap: calc($spacing * 0.3);
13
13
  padding: calc($spacing * 0.15) calc($spacing * 0.5);
14
- border-radius: calc($border-radius * 4);
14
+ border-radius: $radius-xl;
15
15
  font-size: 0.75rem;
16
16
  font-weight: 500;
17
17
  line-height: 1.4;
@@ -20,7 +20,6 @@
20
20
  vertical-align: middle;
21
21
  border: 1px solid transparent;
22
22
 
23
- // Default — neutral
24
23
  background: var(--secondary-background);
25
24
  color: var(--secondary-text);
26
25
 
@@ -56,7 +55,6 @@
56
55
  border-color: color-mix(in srgb, var(--error) 20%, transparent);
57
56
  }
58
57
 
59
- // Solid filled
60
58
  &-solid {
61
59
  &.badge-info { background: var(--accent-color); color: #fff; border-color: transparent; }
62
60
  &.badge-success { background: var(--success); color: #fff; border-color: transparent; }
@@ -64,7 +62,6 @@
64
62
  &.badge-error { background: var(--error); color: #fff; border-color: transparent; }
65
63
  }
66
64
 
67
- // Outline only
68
65
  &-outline {
69
66
  background: transparent;
70
67
  border-color: var(--divider);
@@ -76,7 +73,6 @@
76
73
  &.badge-error { border-color: var(--error); color: var(--error); }
77
74
  }
78
75
 
79
- // Sizes
80
76
  &-sm {
81
77
  padding: calc($spacing * 0.1) calc($spacing * 0.35);
82
78
  font-size: 0.6875rem;
@@ -87,7 +83,6 @@
87
83
  font-size: 0.875rem;
88
84
  }
89
85
 
90
- // Dot indicator — no text
91
86
  &-dot {
92
87
  width: 0.5rem;
93
88
  height: 0.5rem;
@@ -39,7 +39,7 @@
39
39
  background: var(--background);
40
40
  border: 1px solid var(--divider);
41
41
  border-bottom: none;
42
- border-radius: calc($border-radius * 4) calc($border-radius * 4) 0 0;
42
+ border-radius: $radius-xl $radius-xl 0 0;
43
43
  box-shadow:
44
44
  0 -2px 0 rgba(255, 255, 255, 0.06) inset,
45
45
  0 -8px 40px rgba(0, 0, 0, 0.18),
@@ -54,7 +54,6 @@
54
54
  will-change: transform;
55
55
  overscroll-behavior: contain;
56
56
 
57
- // Snap height variants
58
57
  &.snap-half {
59
58
  height: 50vh;
60
59
  }
@@ -65,7 +64,6 @@
65
64
  }
66
65
  }
67
66
 
68
- // Drag handle — large tap target wrapping a visual pill
69
67
  .bottom-sheet-handle {
70
68
  flex-shrink: 0;
71
69
  display: flex;
@@ -97,7 +95,6 @@
97
95
  }
98
96
  }
99
97
 
100
- // Scrollable content area
101
98
  .bottom-sheet-body {
102
99
  flex: 1;
103
100
  overflow-x: hidden;
@@ -106,7 +103,6 @@
106
103
  padding: 0 $spacing $spacing;
107
104
  padding-bottom: calc($spacing + env(safe-area-inset-bottom));
108
105
 
109
- // fade out bottom edge when content overflows
110
106
  mask-image: linear-gradient(to bottom, black calc(100% - 2rem), transparent 100%);
111
107
  -webkit-mask-image: linear-gradient(to bottom, black calc(100% - 2rem), transparent 100%);
112
108
 
@@ -116,7 +112,6 @@
116
112
  }
117
113
  }
118
114
 
119
- // Header and footer are outside .bottom-sheet-body so they stay fixed
120
115
  .bottom-sheet-header {
121
116
  flex-shrink: 0;
122
117
  display: flex;
@@ -177,12 +172,12 @@
177
172
  width: 480px;
178
173
  bottom: $spacing;
179
174
  border: 1px solid var(--divider);
180
- border-radius: calc($border-radius * 4);
175
+ border-radius: $radius-xl;
181
176
  transform: translateX(-50%) translateY(calc(100% + #{$spacing}));
182
177
  max-height: 80vh;
183
178
 
184
179
  .bottom-sheet-footer {
185
- border-radius: 0 0 calc($border-radius * 4) calc($border-radius * 4);
180
+ border-radius: 0 0 $radius-xl $radius-xl;
186
181
  }
187
182
  }
188
183
 
@@ -1,7 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
-
4
- // ─── Breadcrumb ────────────────────────────────────────────────────────────────
3
+ @use "mixins" as *;
5
4
 
6
5
  .breadcrumb {
7
6
  ol {
@@ -19,9 +18,8 @@
19
18
  align-items: center;
20
19
  min-width: 0;
21
20
 
22
- // Chevron separator via Material Symbols font
23
21
  + li::before {
24
- content: "\e409"; // navigate_next
22
+ content: "\e409";
25
23
  font-family: "Material Symbols Outlined 24pt";
26
24
  font-size: 1.125rem;
27
25
  line-height: 1;
@@ -40,7 +38,7 @@
40
38
  color: var(--secondary-text);
41
39
  text-decoration: none;
42
40
  padding: 0.25rem 0.375rem;
43
- border-radius: calc($border-radius / 2);
41
+ border-radius: $radius-sm;
44
42
  white-space: nowrap;
45
43
  transition: color 0.15s ease, background 0.15s ease;
46
44
 
@@ -54,13 +52,11 @@
54
52
  }
55
53
 
56
54
  &:focus-visible {
57
- outline: 2px solid var(--accent-color);
58
- outline-offset: -1px;
59
- border-radius: calc($border-radius / 2);
55
+ @include focus-ring(-1px);
56
+ border-radius: $radius-sm;
60
57
  }
61
58
  }
62
59
 
63
- // Current page item (not a link)
64
60
  &[aria-current="page"] > span {
65
61
  display: block;
66
62
  font-size: 0.8125rem;
@@ -74,14 +70,12 @@
74
70
  }
75
71
  }
76
72
 
77
- // Collapse modifier: on small screens, hide everything except last ancestor + current
78
73
  &--collapse {
79
74
  @media (max-width: 600px) {
80
75
  li:not(:nth-last-child(-n+2)) {
81
76
  display: none;
82
77
  }
83
78
 
84
- // Replace separator with ellipsis when items are hidden
85
79
  li:nth-last-child(2):not(:first-child)::before {
86
80
  content: "···";
87
81
  font-family: inherit;
@@ -94,8 +88,6 @@
94
88
  }
95
89
  }
96
90
 
97
- // ─── Page Header ───────────────────────────────────────────────────────────────
98
-
99
91
  .page-header {
100
92
  padding-block: calc($spacing * 1.25) $spacing;
101
93
 
@@ -121,7 +113,7 @@
121
113
  align-items: center;
122
114
  gap: calc($spacing * 0.5);
123
115
  flex-shrink: 0;
124
- padding-top: 0.3rem; // optical alignment with h1 baseline
116
+ padding-top: 0.3rem;
125
117
  }
126
118
 
127
119
  &__description {
@@ -132,7 +124,6 @@
132
124
  color: var(--secondary-text);
133
125
  }
134
126
 
135
- // Bordered variant — adds a bottom divider and bottom margin
136
127
  &--bordered {
137
128
  border-bottom: 1px solid var(--divider);
138
129
  padding-bottom: calc($spacing * 1.25);
package/css/button.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
+ @use "mixins" as *;
3
4
 
4
5
  @mixin button-variant($bg) {
5
6
  background: $bg;
@@ -55,7 +56,7 @@ button,
55
56
 
56
57
  &:focus-visible {
57
58
  outline: none;
58
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 35%, transparent);
59
+ @include focus-glow();
59
60
  }
60
61
 
61
62
  &.active {
package/css/calendar.scss CHANGED
@@ -40,10 +40,6 @@
40
40
  box-sizing: inherit;
41
41
  }
42
42
 
43
- // ------------------------------------------------------------------
44
- // Header
45
- // ------------------------------------------------------------------
46
-
47
43
  .cal__header {
48
44
  display: flex;
49
45
  align-items: center;
@@ -144,18 +140,10 @@
144
140
  }
145
141
  }
146
142
 
147
- // ------------------------------------------------------------------
148
- // Body wrapper
149
- // ------------------------------------------------------------------
150
-
151
143
  .cal__body {
152
144
  width: 100%;
153
145
  }
154
146
 
155
- // ------------------------------------------------------------------
156
- // Month View
157
- // ------------------------------------------------------------------
158
-
159
147
  .cal__month-grid {
160
148
  border: 1px solid var(--cal-border);
161
149
  border-radius: var(--cal-radius);
@@ -180,7 +168,6 @@
180
168
  text-transform: uppercase;
181
169
  }
182
170
 
183
- // Each week row is a 7-column subgrid with span bars overlaid
184
171
  .cal__week-row {
185
172
  display: grid;
186
173
  grid-template-columns: repeat(7, minmax(0, 1fr));
@@ -189,7 +176,6 @@
189
176
  position: relative;
190
177
  border-top: 1px solid var(--cal-border);
191
178
 
192
- // Push event pills below span bars
193
179
  .cal__day-events {
194
180
  margin-top: calc(var(--span-lanes, 0) * var(--cal-span-lane-height, 20px));
195
181
  }
@@ -260,7 +246,6 @@
260
246
  overflow: hidden;
261
247
  }
262
248
 
263
- // Event pills — use badge color semantics for the left border accent
264
249
  .cal__event-pill {
265
250
  font-size: 0.6875rem;
266
251
  line-height: 1.4;
@@ -292,7 +277,6 @@
292
277
  outline-offset: 1px;
293
278
  }
294
279
 
295
- // Badge-class color mapping for left border
296
280
  &.badge-success { border-left-color: var(--success); }
297
281
  &.badge-warning { border-left-color: var(--warning); }
298
282
  &.badge-error { border-left-color: var(--error); }
@@ -307,10 +291,6 @@
307
291
  cursor: pointer;
308
292
  }
309
293
 
310
- // ------------------------------------------------------------------
311
- // Span bars — multi-day events in month and week all-day row
312
- // ------------------------------------------------------------------
313
-
314
294
  .cal__span-bar {
315
295
  position: absolute;
316
296
  height: 18px;
@@ -329,7 +309,6 @@
329
309
  z-index: 2;
330
310
  transition: filter 0.12s ease, transform 0.1s ease;
331
311
 
332
- // Position via CSS custom props set inline
333
312
  left: calc(var(--span-col) * 100% / 7);
334
313
  width: calc(var(--span-len) * 100% / 7 - 4px);
335
314
 
@@ -340,19 +319,16 @@
340
319
  outline-offset: 1px;
341
320
  }
342
321
 
343
- // Rounded end removed when event continues past week boundary
344
322
  &--cont-before { border-left: none; border-radius: 0 var(--cal-radius-sm) var(--cal-radius-sm) 0; padding-left: 4px; }
345
323
  &--cont-after { border-radius: var(--cal-radius-sm) 0 0 var(--cal-radius-sm); }
346
324
  &--cont-before#{&}--cont-after { border-radius: 0; }
347
325
 
348
- // Color variants — match badge semantics
349
326
  &.badge-success { border-left-color: var(--success); background: color-mix(in srgb, var(--success) 14%, var(--cal-bg)); }
350
327
  &.badge-warning { border-left-color: var(--warning); background: color-mix(in srgb, var(--warning) 14%, var(--cal-bg)); }
351
328
  &.badge-error { border-left-color: var(--error); background: color-mix(in srgb, var(--error) 14%, var(--cal-bg)); }
352
329
  &.badge-info { border-left-color: var(--accent-color); background: color-mix(in srgb, var(--accent-color) 14%, var(--cal-bg)); }
353
330
  }
354
331
 
355
- // Month view: bars sit just below the date number
356
332
  .cal__week-row > .cal__span-bar {
357
333
  top: calc(36px + var(--span-lane) * var(--cal-span-lane-height, 20px));
358
334
  }
@@ -363,10 +339,6 @@
363
339
  opacity: 0.7;
364
340
  }
365
341
 
366
- // ------------------------------------------------------------------
367
- // Week View
368
- // ------------------------------------------------------------------
369
-
370
342
  .cal__week {
371
343
  border: 1px solid var(--cal-border);
372
344
  border-radius: var(--cal-radius);
@@ -460,14 +432,12 @@
460
432
  font-weight: 500;
461
433
  }
462
434
 
463
- // Span container for all-day events in week view
464
435
  .cal__allday-spans {
465
436
  position: relative;
466
437
  display: grid;
467
438
  grid-template-columns: repeat(7, minmax(0, 1fr));
468
439
  min-height: calc(max(var(--allday-lanes, 1), 1) * var(--cal-span-lane-height, 20px) + 6px);
469
440
 
470
- // Week view span bars: no date-num offset, 2px top padding per lane
471
441
  > .cal__span-bar {
472
442
  top: calc(var(--span-lane) * var(--cal-span-lane-height, 20px) + 3px);
473
443
  }
@@ -596,7 +566,6 @@
596
566
  z-index: 3;
597
567
  }
598
568
 
599
- // Badge-class color mapping
600
569
  &.badge-success {
601
570
  border-left-color: var(--success);
602
571
  background: color-mix(in srgb, var(--success) 10%, var(--cal-bg));
@@ -615,7 +584,6 @@
615
584
  }
616
585
  }
617
586
 
618
- // Now-line
619
587
  .cal__now-line {
620
588
  position: absolute;
621
589
  left: var(--cal-time-col-width);
@@ -639,10 +607,6 @@
639
607
  }
640
608
  }
641
609
 
642
- // ------------------------------------------------------------------
643
- // Agenda View
644
- // ------------------------------------------------------------------
645
-
646
610
  .cal__agenda {
647
611
  border: 1px solid var(--cal-border);
648
612
  border-radius: var(--cal-radius);
@@ -734,7 +698,6 @@
734
698
  outline-offset: 1px;
735
699
  }
736
700
 
737
- // Badge-class color mapping
738
701
  &.badge-success { border-left-color: var(--success); }
739
702
  &.badge-warning { border-left-color: var(--warning); }
740
703
  &.badge-error { border-left-color: var(--error); }
@@ -766,10 +729,6 @@
766
729
  text-align: center;
767
730
  }
768
731
 
769
- // ------------------------------------------------------------------
770
- // Responsive — mobile-first refinements
771
- // ------------------------------------------------------------------
772
-
773
732
  @media (max-width: 600px) {
774
733
  .cal__header {
775
734
  gap: var(--cal-spacing-xs);
@@ -795,7 +754,6 @@
795
754
  }
796
755
  }
797
756
 
798
- // Month grid — borderless, airy, centered numbers
799
757
  .cal__month-grid {
800
758
  border: none;
801
759
  border-radius: 0;
@@ -859,12 +817,10 @@
859
817
  display: none;
860
818
  }
861
819
 
862
- // Reset span-lane-based margin since bars are hidden
863
820
  .cal__week-row .cal__day-events {
864
821
  margin-top: 0;
865
822
  }
866
823
 
867
- // Week view — compact
868
824
  .cal {
869
825
  --cal-time-col-width: 40px;
870
826
  }
@@ -889,7 +845,6 @@
889
845
  padding-right: 3px;
890
846
  }
891
847
 
892
- // Agenda — tighter
893
848
  .cal__agenda-day {
894
849
  padding: var(--cal-spacing-sm) var(--cal-spacing-md);
895
850
  gap: var(--cal-spacing-md);
@@ -911,10 +866,6 @@
911
866
  }
912
867
  }
913
868
 
914
- // ------------------------------------------------------------------
915
- // Print styles
916
- // ------------------------------------------------------------------
917
-
918
869
  @media print {
919
870
  .cal__header .cal__view-toggle,
920
871
  .cal__header .cal__nav .cal__btn--today {
@@ -933,10 +884,6 @@
933
884
  }
934
885
  }
935
886
 
936
- // ------------------------------------------------------------------
937
- // Animation — staggered grid entrance + now-line pulse
938
- // ------------------------------------------------------------------
939
-
940
887
  @media (prefers-reduced-motion: no-preference) {
941
888
  .cal__body {
942
889
  animation: cal-slide-in 0.25s cubic-bezier(0.2, 0, 0, 1);
@@ -947,7 +894,6 @@
947
894
  animation: cal-cell-in 0.3s cubic-bezier(0.2, 0, 0, 1) both;
948
895
  }
949
896
 
950
- // Stagger day cells across week rows
951
897
  @for $i from 1 through 7 {
952
898
  .cal__week-row:nth-child(#{$i}) .cal__day {
953
899
  animation-delay: #{0.03s * ($i - 1) + 0.01s};
package/css/card.scss CHANGED
@@ -2,7 +2,6 @@
2
2
  @use "defaults";
3
3
  @use "parameters" as *;
4
4
 
5
- // Base card styles
6
5
  .card {
7
6
  box-shadow: $shadow;
8
7
  background: var(--secondary-background);
@@ -17,14 +16,12 @@
17
16
  flex-direction: row;
18
17
  }
19
18
 
20
- // Card header
21
19
  .card-header {
22
20
  border-bottom: 1px solid var(--divider);
23
21
  margin: (-$spacing) (-$spacing) $spacing (-$spacing);
24
22
  padding: $spacing;
25
23
  }
26
24
 
27
- // Card footer
28
25
  .card-footer {
29
26
  border-top: 1px solid var(--divider);
30
27
  margin: auto (-$spacing) (-$spacing) (-$spacing);
@@ -32,7 +29,6 @@
32
29
  }
33
30
  }
34
31
 
35
- // Card variants
36
32
  .card-flat {
37
33
  box-shadow: none;
38
34
  border: 1px solid var(--divider);
@@ -51,7 +47,6 @@
51
47
  }
52
48
  }
53
49
 
54
- // Utility modifiers for cards
55
50
  .card-padding-none {
56
51
  padding: 0;
57
52
  }
package/css/carousel.scss CHANGED
@@ -10,7 +10,6 @@
10
10
  box-shadow: $shadow;
11
11
  background: var(--secondary-background);
12
12
 
13
- // Gradient scrim so controls are readable over any slide content
14
13
  &::after {
15
14
  content: '';
16
15
  position: absolute;
@@ -49,7 +48,6 @@
49
48
  user-select: none;
50
49
  }
51
50
 
52
- // Prev / next buttons — glass pill, always visible
53
51
  .carousel-button {
54
52
  position: absolute;
55
53
  top: 50%;
@@ -92,7 +90,6 @@
92
90
  .carousel-button--left { left: calc($spacing * 0.75); }
93
91
  .carousel-button--right { right: calc($spacing * 0.75); }
94
92
 
95
- // Dot navigation
96
93
  .carousel-nav {
97
94
  display: flex;
98
95
  align-items: center;
package/css/chart.scss CHANGED
@@ -1,9 +1,6 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
3
 
4
- // ─── Chart color palette ────────────────────────────────────────────────────
5
- // Readable via JS: getComputedStyle(el).getPropertyValue('--chart-color-1')
6
-
7
4
  .chart {
8
5
  --chart-color-1: var(--accent-color);
9
6
  --chart-color-2: var(--success);
@@ -15,8 +12,6 @@
15
12
  --chart-color-8: #EC4899;
16
13
  }
17
14
 
18
- // ─── Wrapper ────────────────────────────────────────────────────────────────
19
-
20
15
  .chart {
21
16
  position: relative;
22
17
  width: 100%;
@@ -24,8 +19,6 @@
24
19
  color: var(--primary-text);
25
20
  font-size: 0.875rem;
26
21
 
27
- // ─── Header ───────────────────────────────────────────────────────────────
28
-
29
22
  &-header {
30
23
  margin-bottom: calc($spacing * 0.75);
31
24
  }
@@ -43,8 +36,6 @@
43
36
  margin-top: calc($spacing * 0.2);
44
37
  }
45
38
 
46
- // ─── Canvas ───────────────────────────────────────────────────────────────
47
-
48
39
  &-canvas {
49
40
  width: 100%;
50
41
  position: relative;
@@ -57,8 +48,6 @@
57
48
  overflow: visible;
58
49
  }
59
50
 
60
- // ─── Axes & grid ──────────────────────────────────────────────────────────
61
-
62
51
  .chart-axis-line {
63
52
  stroke: var(--divider);
64
53
  stroke-width: 1;
@@ -77,8 +66,6 @@
77
66
  font-family: inherit;
78
67
  }
79
68
 
80
- // ─── Line & area ──────────────────────────────────────────────────────────
81
-
82
69
  .chart-line {
83
70
  fill: none;
84
71
  stroke-linecap: round;
@@ -92,7 +79,6 @@
92
79
  animation: chart-fade-in 0.8s ease forwards;
93
80
  }
94
81
 
95
- // Dots visible by default (small), expand on hover via group
96
82
  .chart-point-dot {
97
83
  transition: r 0.15s ease;
98
84
  }
@@ -114,8 +100,6 @@
114
100
  }
115
101
  }
116
102
 
117
- // ─── Column & bar ─────────────────────────────────────────────────────────
118
-
119
103
  .chart-bar {
120
104
  transition: opacity 0.15s ease, filter 0.15s ease;
121
105
  cursor: pointer;
@@ -139,8 +123,6 @@
139
123
  }
140
124
  }
141
125
 
142
- // ─── Pie ──────────────────────────────────────────────────────────────────
143
-
144
126
  .chart-slice {
145
127
  cursor: pointer;
146
128
  transform-box: fill-box;
@@ -155,8 +137,6 @@
155
137
  }
156
138
  }
157
139
 
158
- // ─── Legend ───────────────────────────────────────────────────────────────
159
-
160
140
  &-legend {
161
141
  display: flex;
162
142
  flex-wrap: wrap;
@@ -180,7 +160,6 @@
180
160
  flex-shrink: 0;
181
161
  }
182
162
 
183
- // Pie legend variant — bigger swatches, stacked nicely
184
163
  &-pie-legend {
185
164
  display: flex;
186
165
  flex-wrap: wrap;
@@ -210,8 +189,6 @@
210
189
  margin-left: calc($spacing * 0.15);
211
190
  }
212
191
 
213
- // ─── Tooltip ──────────────────────────────────────────────────────────────
214
-
215
192
  &-tooltip {
216
193
  position: fixed;
217
194
  background: var(--primary-dark);
@@ -242,8 +219,6 @@
242
219
  }
243
220
  }
244
221
 
245
- // ─── Animations ─────────────────────────────────────────────────────────────
246
-
247
222
  @keyframes chart-draw {
248
223
  from { stroke-dashoffset: var(--path-length, 9999); }
249
224
  to { stroke-dashoffset: 0; }