@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.
- package/README.md +13 -7
- package/css/accordion.scss +0 -5
- package/css/badge.scss +1 -6
- package/css/bottom-sheet.scss +3 -8
- package/css/breadcrumb.scss +6 -15
- package/css/button.scss +2 -1
- package/css/calendar.scss +0 -54
- package/css/card.scss +0 -5
- package/css/carousel.scss +0 -3
- package/css/chart.scss +0 -25
- package/css/chat-bubbles.scss +0 -15
- package/css/checkbox.scss +3 -2
- package/css/chips.scss +3 -7
- package/css/code-viewer.scss +1 -5
- package/css/context-menu.scss +4 -6
- package/css/datepicker.scss +4 -7
- package/css/docs.scss +0 -4
- package/css/dropdown.scss +1 -1
- package/css/editor.scss +1 -23
- package/css/file-uploader.scss +2 -2
- package/css/flyout-menu.scss +66 -44
- package/css/form.scss +0 -28
- package/css/gallery.scss +2 -3
- package/css/group-picker.scss +5 -35
- package/css/icons.scss +0 -3
- package/css/lightbox.scss +2 -4
- package/css/mixins.scss +8 -0
- package/css/modal.scss +3 -3
- package/css/parameters.scss +6 -1
- package/css/popover.scss +3 -15
- package/css/progress.scss +0 -6
- package/css/push-menu.scss +3 -28
- package/css/radiobutton.scss +2 -1
- package/css/range-slider.scss +1 -7
- package/css/scrollbar.scss +2 -6
- package/css/sidebar-nav.scss +0 -12
- package/css/stepper.scss +0 -4
- package/css/style.css +63 -68
- package/css/style.css.map +1 -1
- package/css/style.min.css +1 -1
- package/css/style.min.css.map +1 -1
- package/css/style.scss +1 -1
- package/css/table.scss +0 -4
- package/css/tabs.scss +0 -2
- package/css/timeline.scss +1 -13
- package/css/timepicker.scss +6 -7
- package/css/toast.scss +1 -1
- package/css/tooltip.scss +1 -5
- package/css/tree.scss +1 -1
- package/css/typography.scss +3 -3
- package/css/virtual-dropdown.scss +3 -28
- package/js/bottom-sheet.d.ts +3 -1
- package/js/bottom-sheet.js +26 -27
- package/js/calendar.d.ts +7 -0
- package/js/calendar.js +14 -33
- package/js/carousel.d.ts +2 -0
- package/js/carousel.js +13 -5
- package/js/chart.d.ts +4 -0
- package/js/chart.js +13 -31
- package/js/code-viewer.d.ts +1 -0
- package/js/code-viewer.js +4 -0
- package/js/context-menu.d.ts +9 -2
- package/js/context-menu.js +17 -14
- package/js/datepicker.d.ts +4 -0
- package/js/datepicker.js +26 -11
- package/js/dropdown.d.ts +3 -3
- package/js/dropdown.js +6 -9
- package/js/editor.d.ts +1 -0
- package/js/editor.js +9 -3
- package/js/file-uploader.d.ts +4 -0
- package/js/file-uploader.js +52 -43
- package/js/flyout-menu.d.ts +5 -3
- package/js/flyout-menu.js +23 -46
- package/js/gallery.d.ts +3 -0
- package/js/gallery.js +22 -24
- package/js/group-picker.d.ts +5 -0
- package/js/group-picker.js +12 -17
- package/js/lightbox.d.ts +3 -0
- package/js/lightbox.js +12 -6
- package/js/modal.d.ts +3 -1
- package/js/modal.js +14 -11
- package/js/popover.d.ts +2 -0
- package/js/popover.js +26 -30
- package/js/position.d.ts +2 -0
- package/js/position.js +1 -5
- package/js/push-menu.d.ts +2 -0
- package/js/push-menu.js +22 -35
- package/js/range-slider.d.ts +1 -0
- package/js/range-slider.js +5 -3
- package/js/scroll.d.ts +2 -0
- package/js/scroll.js +1 -0
- package/js/scrollbar.d.ts +2 -0
- package/js/scrollbar.js +24 -36
- package/js/select.d.ts +1 -0
- package/js/select.js +5 -10
- package/js/sidebar-nav.d.ts +2 -0
- package/js/sidebar-nav.js +8 -0
- package/js/stepper.d.ts +2 -0
- package/js/stepper.js +7 -1
- package/js/table.d.ts +4 -0
- package/js/table.js +15 -22
- package/js/tabs.d.ts +2 -0
- package/js/tabs.js +6 -14
- package/js/theme.d.ts +1 -0
- package/js/theme.js +5 -13
- package/js/timepicker.d.ts +3 -0
- package/js/timepicker.js +81 -67
- package/js/toast.d.ts +3 -0
- package/js/toast.js +24 -15
- package/js/tooltip.d.ts +2 -0
- package/js/tooltip.js +21 -19
- package/js/tree.d.ts +3 -0
- package/js/tree.js +13 -0
- package/js/utils.d.ts +1 -3
- package/js/utils.js +0 -3
- package/js/virtual-dropdown.d.ts +3 -0
- package/js/virtual-dropdown.js +25 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Basix 1.3.
|
|
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: '
|
|
619
|
+
label: 'Share', icon: 'share',
|
|
620
620
|
submenu: [
|
|
621
|
-
{ label: 'Copy link', icon: '
|
|
622
|
-
{ label: 'Send by mail', icon: 'mail',
|
|
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
|
|
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 |
|
package/css/accordion.scss
CHANGED
|
@@ -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:
|
|
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;
|
package/css/bottom-sheet.scss
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
background: var(--background);
|
|
40
40
|
border: 1px solid var(--divider);
|
|
41
41
|
border-bottom: none;
|
|
42
|
-
border-radius:
|
|
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:
|
|
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
|
|
180
|
+
border-radius: 0 0 $radius-xl $radius-xl;
|
|
186
181
|
}
|
|
187
182
|
}
|
|
188
183
|
|
package/css/breadcrumb.scss
CHANGED
|
@@ -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";
|
|
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:
|
|
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
|
-
|
|
58
|
-
|
|
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;
|
|
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
|
-
|
|
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; }
|