@dodlhuat/basix 1.3.1 → 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 +14 -8
  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 -67
  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 +5 -21
  16. package/css/datepicker.scss +6 -9
  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 +65 -58
  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 +9 -16
  36. package/css/sidebar-nav.scss +0 -12
  37. package/css/stepper.scss +0 -4
  38. package/css/style.css +108 -116
  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 +55 -39
  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 -1
  69. package/js/editor.js +14 -20
  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 +4 -0
  75. package/js/gallery.js +39 -50
  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 -1
  87. package/js/push-menu.js +25 -48
  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 +22 -5
  107. package/js/timepicker.js +160 -57
  108. package/js/toast.d.ts +3 -1
  109. package/js/toast.js +25 -22
  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.1
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.
@@ -77,7 +77,7 @@ Basix ships icons in two formats:
77
77
  <span class="icon icon-home"></span>
78
78
  ```
79
79
 
80
- **SVG sprite** — a single `svg-icons/icons.svg` sprite file. Preferred when you need consistent sizing, color inheritance via `currentColor`, or icons inside JS-generated markup.
80
+ **SVG sprite** — the full Google Material Icon set (~6,400+ icons) in a single `svg-icons/icons.svg` sprite. Preferred for consistent sizing, `currentColor` inheritance, and use inside JS-generated markup.
81
81
 
82
82
  ``` html
83
83
  <svg class="icon-svg"><use href="svg-icons/icons.svg#home"/></svg>
@@ -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
@@ -1,16 +1,3 @@
1
- // ============================================================
2
- // calendar.scss — Basix Calendar Component Styles
3
- //
4
- // Integration principles:
5
- // - No hard-coded colours — uses Basix CSS custom properties
6
- // - No global reset
7
- // - BEM: .cal / .cal__* / is-* / has-*
8
- // - State classes match Basix convention: .is-today, .is-selected,
9
- // .is-disabled, .has-events, .active, .error, .success
10
- // - Font, spacing, radius, border — all from Basix tokens
11
- // - Event pills accept any Basix badge/alert class as className
12
- // ============================================================
13
-
14
1
  @use "parameters" as *;
15
2
 
16
3
  .cal {
@@ -53,10 +40,6 @@
53
40
  box-sizing: inherit;
54
41
  }
55
42
 
56
- // ------------------------------------------------------------------
57
- // Header
58
- // ------------------------------------------------------------------
59
-
60
43
  .cal__header {
61
44
  display: flex;
62
45
  align-items: center;
@@ -157,18 +140,10 @@
157
140
  }
158
141
  }
159
142
 
160
- // ------------------------------------------------------------------
161
- // Body wrapper
162
- // ------------------------------------------------------------------
163
-
164
143
  .cal__body {
165
144
  width: 100%;
166
145
  }
167
146
 
168
- // ------------------------------------------------------------------
169
- // Month View
170
- // ------------------------------------------------------------------
171
-
172
147
  .cal__month-grid {
173
148
  border: 1px solid var(--cal-border);
174
149
  border-radius: var(--cal-radius);
@@ -193,7 +168,6 @@
193
168
  text-transform: uppercase;
194
169
  }
195
170
 
196
- // Each week row is a 7-column subgrid with span bars overlaid
197
171
  .cal__week-row {
198
172
  display: grid;
199
173
  grid-template-columns: repeat(7, minmax(0, 1fr));
@@ -202,7 +176,6 @@
202
176
  position: relative;
203
177
  border-top: 1px solid var(--cal-border);
204
178
 
205
- // Push event pills below span bars
206
179
  .cal__day-events {
207
180
  margin-top: calc(var(--span-lanes, 0) * var(--cal-span-lane-height, 20px));
208
181
  }
@@ -273,7 +246,6 @@
273
246
  overflow: hidden;
274
247
  }
275
248
 
276
- // Event pills — use badge color semantics for the left border accent
277
249
  .cal__event-pill {
278
250
  font-size: 0.6875rem;
279
251
  line-height: 1.4;
@@ -305,7 +277,6 @@
305
277
  outline-offset: 1px;
306
278
  }
307
279
 
308
- // Badge-class color mapping for left border
309
280
  &.badge-success { border-left-color: var(--success); }
310
281
  &.badge-warning { border-left-color: var(--warning); }
311
282
  &.badge-error { border-left-color: var(--error); }
@@ -320,10 +291,6 @@
320
291
  cursor: pointer;
321
292
  }
322
293
 
323
- // ------------------------------------------------------------------
324
- // Span bars — multi-day events in month and week all-day row
325
- // ------------------------------------------------------------------
326
-
327
294
  .cal__span-bar {
328
295
  position: absolute;
329
296
  height: 18px;
@@ -342,7 +309,6 @@
342
309
  z-index: 2;
343
310
  transition: filter 0.12s ease, transform 0.1s ease;
344
311
 
345
- // Position via CSS custom props set inline
346
312
  left: calc(var(--span-col) * 100% / 7);
347
313
  width: calc(var(--span-len) * 100% / 7 - 4px);
348
314
 
@@ -353,19 +319,16 @@
353
319
  outline-offset: 1px;
354
320
  }
355
321
 
356
- // Rounded end removed when event continues past week boundary
357
322
  &--cont-before { border-left: none; border-radius: 0 var(--cal-radius-sm) var(--cal-radius-sm) 0; padding-left: 4px; }
358
323
  &--cont-after { border-radius: var(--cal-radius-sm) 0 0 var(--cal-radius-sm); }
359
324
  &--cont-before#{&}--cont-after { border-radius: 0; }
360
325
 
361
- // Color variants — match badge semantics
362
326
  &.badge-success { border-left-color: var(--success); background: color-mix(in srgb, var(--success) 14%, var(--cal-bg)); }
363
327
  &.badge-warning { border-left-color: var(--warning); background: color-mix(in srgb, var(--warning) 14%, var(--cal-bg)); }
364
328
  &.badge-error { border-left-color: var(--error); background: color-mix(in srgb, var(--error) 14%, var(--cal-bg)); }
365
329
  &.badge-info { border-left-color: var(--accent-color); background: color-mix(in srgb, var(--accent-color) 14%, var(--cal-bg)); }
366
330
  }
367
331
 
368
- // Month view: bars sit just below the date number
369
332
  .cal__week-row > .cal__span-bar {
370
333
  top: calc(36px + var(--span-lane) * var(--cal-span-lane-height, 20px));
371
334
  }
@@ -376,10 +339,6 @@
376
339
  opacity: 0.7;
377
340
  }
378
341
 
379
- // ------------------------------------------------------------------
380
- // Week View
381
- // ------------------------------------------------------------------
382
-
383
342
  .cal__week {
384
343
  border: 1px solid var(--cal-border);
385
344
  border-radius: var(--cal-radius);
@@ -473,14 +432,12 @@
473
432
  font-weight: 500;
474
433
  }
475
434
 
476
- // Span container for all-day events in week view
477
435
  .cal__allday-spans {
478
436
  position: relative;
479
437
  display: grid;
480
438
  grid-template-columns: repeat(7, minmax(0, 1fr));
481
439
  min-height: calc(max(var(--allday-lanes, 1), 1) * var(--cal-span-lane-height, 20px) + 6px);
482
440
 
483
- // Week view span bars: no date-num offset, 2px top padding per lane
484
441
  > .cal__span-bar {
485
442
  top: calc(var(--span-lane) * var(--cal-span-lane-height, 20px) + 3px);
486
443
  }
@@ -609,7 +566,6 @@
609
566
  z-index: 3;
610
567
  }
611
568
 
612
- // Badge-class color mapping
613
569
  &.badge-success {
614
570
  border-left-color: var(--success);
615
571
  background: color-mix(in srgb, var(--success) 10%, var(--cal-bg));
@@ -628,7 +584,6 @@
628
584
  }
629
585
  }
630
586
 
631
- // Now-line
632
587
  .cal__now-line {
633
588
  position: absolute;
634
589
  left: var(--cal-time-col-width);
@@ -652,10 +607,6 @@
652
607
  }
653
608
  }
654
609
 
655
- // ------------------------------------------------------------------
656
- // Agenda View
657
- // ------------------------------------------------------------------
658
-
659
610
  .cal__agenda {
660
611
  border: 1px solid var(--cal-border);
661
612
  border-radius: var(--cal-radius);
@@ -747,7 +698,6 @@
747
698
  outline-offset: 1px;
748
699
  }
749
700
 
750
- // Badge-class color mapping
751
701
  &.badge-success { border-left-color: var(--success); }
752
702
  &.badge-warning { border-left-color: var(--warning); }
753
703
  &.badge-error { border-left-color: var(--error); }
@@ -779,10 +729,6 @@
779
729
  text-align: center;
780
730
  }
781
731
 
782
- // ------------------------------------------------------------------
783
- // Responsive — mobile-first refinements
784
- // ------------------------------------------------------------------
785
-
786
732
  @media (max-width: 600px) {
787
733
  .cal__header {
788
734
  gap: var(--cal-spacing-xs);
@@ -808,7 +754,6 @@
808
754
  }
809
755
  }
810
756
 
811
- // Month grid — borderless, airy, centered numbers
812
757
  .cal__month-grid {
813
758
  border: none;
814
759
  border-radius: 0;
@@ -872,12 +817,10 @@
872
817
  display: none;
873
818
  }
874
819
 
875
- // Reset span-lane-based margin since bars are hidden
876
820
  .cal__week-row .cal__day-events {
877
821
  margin-top: 0;
878
822
  }
879
823
 
880
- // Week view — compact
881
824
  .cal {
882
825
  --cal-time-col-width: 40px;
883
826
  }
@@ -902,7 +845,6 @@
902
845
  padding-right: 3px;
903
846
  }
904
847
 
905
- // Agenda — tighter
906
848
  .cal__agenda-day {
907
849
  padding: var(--cal-spacing-sm) var(--cal-spacing-md);
908
850
  gap: var(--cal-spacing-md);
@@ -924,10 +866,6 @@
924
866
  }
925
867
  }
926
868
 
927
- // ------------------------------------------------------------------
928
- // Print styles
929
- // ------------------------------------------------------------------
930
-
931
869
  @media print {
932
870
  .cal__header .cal__view-toggle,
933
871
  .cal__header .cal__nav .cal__btn--today {
@@ -946,10 +884,6 @@
946
884
  }
947
885
  }
948
886
 
949
- // ------------------------------------------------------------------
950
- // Animation — staggered grid entrance + now-line pulse
951
- // ------------------------------------------------------------------
952
-
953
887
  @media (prefers-reduced-motion: no-preference) {
954
888
  .cal__body {
955
889
  animation: cal-slide-in 0.25s cubic-bezier(0.2, 0, 0, 1);
@@ -960,7 +894,6 @@
960
894
  animation: cal-cell-in 0.3s cubic-bezier(0.2, 0, 0, 1) both;
961
895
  }
962
896
 
963
- // Stagger day cells across week rows
964
897
  @for $i from 1 through 7 {
965
898
  .cal__week-row:nth-child(#{$i}) .cal__day {
966
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;