@dodlhuat/basix 1.4.2 → 1.5.0
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 +55 -9
- package/css/alert.scss +9 -9
- package/css/badge.scss +5 -25
- package/css/bottom-sheet.scss +2 -6
- package/css/breadcrumb.scss +18 -9
- package/css/calendar.scss +19 -29
- package/css/carousel.scss +3 -3
- package/css/chart.scss +1 -6
- package/css/checkbox.scss +1 -1
- package/css/chips.scss +13 -23
- package/css/code-viewer.scss +2 -2
- package/css/color-picker.scss +3 -5
- package/css/context-menu.scss +3 -8
- package/css/datepicker.scss +84 -71
- package/css/defaults.scss +25 -0
- package/css/docs.scss +6 -6
- package/css/dropdown.scss +3 -8
- package/css/editor.scss +15 -18
- package/css/file-uploader.scss +6 -17
- package/css/flyout-menu.scss +5 -1
- package/css/form.scss +43 -57
- package/css/gallery.scss +15 -0
- package/css/group-picker.scss +28 -17
- package/css/icons.scss +7 -327
- package/css/lightbox.scss +7 -7
- package/css/mixins.scss +77 -0
- package/css/modal.scss +4 -8
- package/css/parameters.scss +8 -2
- package/css/placeholder.scss +2 -17
- package/css/popover.scss +2 -7
- package/css/properties.scss +0 -5
- package/css/push-menu.scss +1 -1
- package/css/range-slider.scss +7 -6
- package/css/stepper.scss +4 -3
- package/css/style.css +279 -554
- package/css/style.css.map +1 -1
- package/css/style.min.css +1 -1
- package/css/style.min.css.map +1 -1
- package/css/tabs.scss +3 -7
- package/css/timepicker.scss +3 -3
- package/css/tooltip.scss +1 -1
- package/css/typography.scss +3 -3
- package/css/virtual-dropdown.scss +12 -27
- package/js/bottom-sheet.d.ts +5 -5
- package/js/bottom-sheet.js +41 -58
- package/js/calendar.d.ts +1 -2
- package/js/calendar.js +77 -84
- package/js/carousel.d.ts +2 -1
- package/js/carousel.js +25 -16
- package/js/chart.d.ts +1 -1
- package/js/chart.js +104 -65
- package/js/code-viewer.d.ts +1 -1
- package/js/code-viewer.js +7 -18
- package/js/color-picker.d.ts +2 -2
- package/js/color-picker.js +20 -22
- package/js/context-menu.d.ts +1 -1
- package/js/context-menu.js +10 -12
- package/js/datepicker.d.ts +14 -3
- package/js/datepicker.js +180 -99
- package/js/docs-nav.js +1 -1
- package/js/dropdown.d.ts +1 -1
- package/js/dropdown.js +4 -5
- package/js/editor.d.ts +1 -1
- package/js/editor.js +30 -34
- package/js/file-uploader.d.ts +2 -9
- package/js/file-uploader.js +57 -86
- package/js/flyout-menu.d.ts +3 -3
- package/js/flyout-menu.js +20 -22
- package/js/gallery.d.ts +6 -2
- package/js/gallery.js +49 -20
- package/js/group-picker.d.ts +2 -1
- package/js/group-picker.js +30 -34
- package/js/lightbox.d.ts +5 -3
- package/js/lightbox.js +36 -31
- package/js/listeners.d.ts +7 -0
- package/js/listeners.js +14 -0
- package/js/modal.d.ts +4 -1
- package/js/modal.js +17 -22
- package/js/popover.d.ts +2 -2
- package/js/popover.js +42 -37
- package/js/position.js +3 -5
- package/js/push-menu.d.ts +8 -2
- package/js/push-menu.js +34 -23
- package/js/range-slider.d.ts +2 -2
- package/js/range-slider.js +7 -6
- package/js/scroll.js +4 -7
- package/js/scrollbar.d.ts +3 -3
- package/js/scrollbar.js +39 -42
- package/js/select.d.ts +1 -1
- package/js/select.js +20 -24
- package/js/sidebar-nav.d.ts +2 -1
- package/js/sidebar-nav.js +15 -10
- package/js/stepper.d.ts +1 -1
- package/js/stepper.js +9 -11
- package/js/table.d.ts +1 -1
- package/js/table.js +24 -23
- package/js/tabs.d.ts +1 -1
- package/js/tabs.js +10 -17
- package/js/theme.d.ts +1 -0
- package/js/theme.js +6 -15
- package/js/timepicker.d.ts +8 -6
- package/js/timepicker.js +36 -36
- package/js/toast.d.ts +4 -1
- package/js/toast.js +13 -5
- package/js/tooltip.d.ts +1 -4
- package/js/tooltip.js +14 -23
- package/js/tree.d.ts +0 -1
- package/js/tree.js +6 -11
- package/js/utils.js +7 -8
- package/js/virtual-dropdown.d.ts +1 -1
- package/js/virtual-dropdown.js +26 -28
- package/package.json +2 -1
- package/svg-icons/chevron_right.svg +1 -0
- package/svg-icons/keyboard_arrow_down.svg +1 -0
- package/css/calendar.css +0 -928
- package/css/guitar-chords.css +0 -251
- package/fonts/MaterialSymbolsOutlined.woff2 +0 -0
- package/js/form-builder.js +0 -107
- package/js/guitar-chords.js +0 -268
- package/js/lazy-loader.js +0 -121
- package/js/request.js +0 -51
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Basix 1.
|
|
1
|
+
# Basix 1.5.0
|
|
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.
|
|
@@ -9,6 +9,52 @@ A demo can be found here: <a href="http://www.andibauer.at/basix/" target="_blan
|
|
|
9
9
|
|
|
10
10
|
## Migration Guide
|
|
11
11
|
|
|
12
|
+
### 1.4.3 → 1.5.0
|
|
13
|
+
|
|
14
|
+
#### Breaking changes
|
|
15
|
+
|
|
16
|
+
**Font icons removed — SVG sprite is now the only icon system**
|
|
17
|
+
|
|
18
|
+
The `.icon` base class, all `.icon-*` glyph classes, and the bundled `MaterialSymbolsOutlined.woff2` font have been removed from `icons.scss` and `fonts/`. Every component that rendered a font-icon glyph now renders an inline `<svg><use href="svg-icons/icons.svg#name"/></svg>` instead. If your own markup used the font classes directly, replace them:
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<!-- Before (1.4.3) -->
|
|
22
|
+
<span class="icon icon-close"></span>
|
|
23
|
+
|
|
24
|
+
<!-- After (1.5.0) -->
|
|
25
|
+
<svg class="icon-svg"><use href="svg-icons/icons.svg#close"/></svg>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
A handful of glyph names used by the font don't exist under the same name in the sprite; use the sprite's equivalents:
|
|
29
|
+
|
|
30
|
+
| Font glyph | SVG sprite equivalent |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `icon-navigate_before` / `icon-navigate_next` | `chevron_left` / `chevron_right` |
|
|
33
|
+
| `icon-expand_more` | `keyboard_arrow_down` |
|
|
34
|
+
| `icon-light` / `icon-dark` | `light_mode` / `dark_mode` |
|
|
35
|
+
|
|
36
|
+
#### Other changes
|
|
37
|
+
|
|
38
|
+
- **`BottomSheet`, `Lightbox`, `GroupPicker`, `Modal`, `Toast`, `SidebarNav`, `Carousel`, `Select`** — gained an `iconBasePath` option (default `'svg-icons/'`) controlling where each component looks for the SVG sprite, matching the existing `Calendar`/`Stepper` convention.
|
|
39
|
+
- **`PushMenu.init()`** now accepts an optional `{ iconBasePath }` argument (previously took no arguments).
|
|
40
|
+
- **`Lightbox.bind()`** now accepts an optional second `iconBasePath` argument, threaded through to every lightbox it opens.
|
|
41
|
+
- **New design tokens** in `parameters.scss`: a 3-step tint scale (`$tint-subtle`/`$tint-medium`/`$tint-strong`) for state-color backgrounds, and an expanded, properly-ordered radius scale (`$radius-xs/sm/md/lg/panel/xl`). Several components' corner radii and background tints shifted slightly to align to these scales — no component's visual language changed, just consolidated toward consistent steps.
|
|
42
|
+
- **New shared mixins** in `mixins.scss`: `float-panel` (floating dropdown/menu/popover shell), `hide-scrollbar`, `tinted-tag` (badge/chip tint), `muted-icon-color` (close-button hover).
|
|
43
|
+
- **Bug fix** — `DatePicker`'s day-of-week headers and clock labels referenced an undefined `--text-muted` custom property (silently falling back to inherited text color). Fixed to use the existing `--secondary-text` token.
|
|
44
|
+
- **CI** — added a GitHub Actions workflow (lint, typecheck, build, and a check that committed `js/`/`css` build output matches source) and `sass` is now a real `devDependency` instead of relying on a global install.
|
|
45
|
+
|
|
46
|
+
### 1.4.2 → 1.4.3
|
|
47
|
+
|
|
48
|
+
No breaking changes.
|
|
49
|
+
|
|
50
|
+
- **`DatePicker`** — the `timePicker: true` hour/minute picker is now an Android-style analog clock instead of up/down spinners. Tap or drag to pick the hour, then the minute, on a 24-hour dual-ring face (outer ring = even hours, inner ring = odd hours). `selectedHours`/`selectedMinutes` and all existing options are unchanged.
|
|
51
|
+
- **`DatePicker`** — clock interactions (hour/minute selection, AM/PM-less 24h switching) now only re-render the time picker instead of rebuilding the whole calendar, avoiding unnecessary DOM churn.
|
|
52
|
+
- **Internal** — the remaining per-component `AbortController` boilerplate (introduced in 1.4.1) has been consolidated into a small shared `ListenerGroup` utility (`src/listeners.ts`) used by every component's event lifecycle.
|
|
53
|
+
- **CSS bug fix** — several component hover states (`DatePicker`'s Set button and nav buttons, `CodeViewer`'s copy button, `FlyoutMenu`'s close button) were silently overridden by the global button reset due to a CSS specificity collision, so the intended hover color/background never rendered. Fixed by scoping each rule against the global reset.
|
|
54
|
+
- **CSS cleanup** — consolidated duplicated `box-shadow` glow/focus-ring declarations across `Calendar`, `Editor`, `Stepper`, `RangeSlider`, `TimePicker`, form fields, and `VirtualDropdown` into shared mixins (`field-shadow-rest`, `field-shadow-hover`, `field-shadow-focus`) in `mixins.scss`. No visual change.
|
|
55
|
+
- **Cleanup** — removed unused legacy files (`form-builder.js`, `guitar-chords.js`/`.css`, `lazy-loader.js`, `request.js`) and a stale, pre-integration copy of `calendar.css`, plus dead `.datepicker-select` CSS.
|
|
56
|
+
- **Type fixes** — resolved two pre-existing TypeScript errors in `Tabs` and `VirtualDropdown` (`keydown` listeners typed against `Element` instead of `HTMLElement`).
|
|
57
|
+
|
|
12
58
|
### 1.4.1 → 1.4.2
|
|
13
59
|
|
|
14
60
|
No breaking changes.
|
|
@@ -112,20 +158,20 @@ The Card component is a CSS-only component that creates visually contained conte
|
|
|
112
158
|
|
|
113
159
|
### Icons
|
|
114
160
|
|
|
115
|
-
Basix ships icons
|
|
116
|
-
|
|
117
|
-
**Font icons** — a reduced Google Material Icon font (~5.5 KB vs the full 242.5 KB). Use the `.icon` class with a modifier.
|
|
161
|
+
Basix ships the full Google Material Icon set (~6,400+ icons) as a single `svg-icons/icons.svg` sprite. Reference any icon by name with `<use>`, and style size/color with the `.icon-svg` class — it inherits `currentColor`, so the icon follows the surrounding text color automatically.
|
|
118
162
|
|
|
119
163
|
``` html
|
|
120
|
-
<
|
|
164
|
+
<svg class="icon-svg"><use href="svg-icons/icons.svg#home"/></svg>
|
|
121
165
|
```
|
|
122
166
|
|
|
123
|
-
|
|
167
|
+
Components that render icons from JS (`Modal`, `Toast`, `BottomSheet`, `Lightbox`, `Carousel`, `GroupPicker`, `SidebarNav`, `Calendar`, `Stepper`, `PushMenu`, `Select`, `ContextMenu`) accept an `iconBasePath` option (default `'svg-icons/'`) so you can point them at the sprite's location relative to your page:
|
|
124
168
|
|
|
125
|
-
```
|
|
126
|
-
|
|
169
|
+
``` js
|
|
170
|
+
new Modal({ content: '…', iconBasePath: '../svg-icons/' });
|
|
127
171
|
```
|
|
128
172
|
|
|
173
|
+
A couple of purely-decorative icons that need to render with zero markup (the `Breadcrumb` separator, the native `<select>` dropdown arrow) use `mask-image` against small standalone SVGs (`svg-icons/chevron_right.svg`, `svg-icons/keyboard_arrow_down.svg`) instead of the sprite, since sprite symbols are only instantiable via `<use>`.
|
|
174
|
+
|
|
129
175
|
---
|
|
130
176
|
|
|
131
177
|
## Forms
|
|
@@ -431,7 +477,7 @@ The Chips component displays small interactive elements like tags or filters. CS
|
|
|
431
477
|
<div class="chip clickable">Clickable Chip</div>
|
|
432
478
|
<div class="chip closeable">
|
|
433
479
|
Closeable Chip
|
|
434
|
-
<button class="close"><
|
|
480
|
+
<button class="close"><svg class="icon-svg"><use href="svg-icons/icons.svg#close"/></svg></button>
|
|
435
481
|
</div>
|
|
436
482
|
</div>
|
|
437
483
|
```
|
package/css/alert.scss
CHANGED
|
@@ -17,7 +17,7 @@ $alert-border-width: 4px;
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.alert-close:hover {
|
|
20
|
-
background: color-mix(in srgb, $accent
|
|
20
|
+
background: color-mix(in srgb, $accent $tint-medium, transparent);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -48,28 +48,28 @@ $alert-border-width: 4px;
|
|
|
48
48
|
&-info {
|
|
49
49
|
@include alert-variant(
|
|
50
50
|
var(--accent-color),
|
|
51
|
-
color-mix(in srgb, var(--accent-color)
|
|
51
|
+
color-mix(in srgb, var(--accent-color) $tint-subtle, var(--background))
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
&-success {
|
|
56
56
|
@include alert-variant(
|
|
57
57
|
var(--success),
|
|
58
|
-
color-mix(in srgb, var(--success)
|
|
58
|
+
color-mix(in srgb, var(--success) $tint-subtle, var(--background))
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
&-warning {
|
|
63
63
|
@include alert-variant(
|
|
64
64
|
var(--warning),
|
|
65
|
-
color-mix(in srgb, var(--warning)
|
|
65
|
+
color-mix(in srgb, var(--warning) $tint-subtle, var(--background))
|
|
66
66
|
);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
&-error {
|
|
70
70
|
@include alert-variant(
|
|
71
71
|
var(--error),
|
|
72
|
-
color-mix(in srgb, var(--error)
|
|
72
|
+
color-mix(in srgb, var(--error) $tint-subtle, var(--background))
|
|
73
73
|
);
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -110,28 +110,28 @@ $alert-border-width: 4px;
|
|
|
110
110
|
&-info {
|
|
111
111
|
@include alert-variant(
|
|
112
112
|
var(--accent-color),
|
|
113
|
-
color-mix(in srgb, var(--accent-color)
|
|
113
|
+
color-mix(in srgb, var(--accent-color) $tint-medium, var(--background))
|
|
114
114
|
);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
&-success {
|
|
118
118
|
@include alert-variant(
|
|
119
119
|
var(--success),
|
|
120
|
-
color-mix(in srgb, var(--success)
|
|
120
|
+
color-mix(in srgb, var(--success) $tint-medium, var(--background))
|
|
121
121
|
);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
&-warning {
|
|
125
125
|
@include alert-variant(
|
|
126
126
|
var(--warning),
|
|
127
|
-
color-mix(in srgb, var(--warning)
|
|
127
|
+
color-mix(in srgb, var(--warning) $tint-medium, var(--background))
|
|
128
128
|
);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
&-error {
|
|
132
132
|
@include alert-variant(
|
|
133
133
|
var(--error),
|
|
134
|
-
color-mix(in srgb, var(--error)
|
|
134
|
+
color-mix(in srgb, var(--error) $tint-medium, var(--background))
|
|
135
135
|
);
|
|
136
136
|
}
|
|
137
137
|
}
|
package/css/badge.scss
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
|
-
|
|
4
|
-
@mixin badge-variant($color, $bg) {
|
|
5
|
-
background: $bg;
|
|
6
|
-
color: $color;
|
|
7
|
-
}
|
|
3
|
+
@use "mixins" as *;
|
|
8
4
|
|
|
9
5
|
.badge {
|
|
10
6
|
display: inline-flex;
|
|
@@ -24,35 +20,19 @@
|
|
|
24
20
|
color: var(--secondary-text);
|
|
25
21
|
|
|
26
22
|
&-info {
|
|
27
|
-
@include
|
|
28
|
-
var(--accent-color),
|
|
29
|
-
color-mix(in srgb, var(--accent-color) 12%, var(--background))
|
|
30
|
-
);
|
|
31
|
-
border-color: color-mix(in srgb, var(--accent-color) 20%, transparent);
|
|
23
|
+
@include tinted-tag(var(--accent-color));
|
|
32
24
|
}
|
|
33
25
|
|
|
34
26
|
&-success {
|
|
35
|
-
@include
|
|
36
|
-
var(--success),
|
|
37
|
-
color-mix(in srgb, var(--success) 12%, var(--background))
|
|
38
|
-
);
|
|
39
|
-
border-color: color-mix(in srgb, var(--success) 20%, transparent);
|
|
27
|
+
@include tinted-tag(var(--success));
|
|
40
28
|
}
|
|
41
29
|
|
|
42
30
|
&-warning {
|
|
43
|
-
@include
|
|
44
|
-
var(--warning),
|
|
45
|
-
color-mix(in srgb, var(--warning) 12%, var(--background))
|
|
46
|
-
);
|
|
47
|
-
border-color: color-mix(in srgb, var(--warning) 20%, transparent);
|
|
31
|
+
@include tinted-tag(var(--warning));
|
|
48
32
|
}
|
|
49
33
|
|
|
50
34
|
&-error {
|
|
51
|
-
@include
|
|
52
|
-
var(--error),
|
|
53
|
-
color-mix(in srgb, var(--error) 12%, var(--background))
|
|
54
|
-
);
|
|
55
|
-
border-color: color-mix(in srgb, var(--error) 20%, transparent);
|
|
35
|
+
@include tinted-tag(var(--error));
|
|
56
36
|
}
|
|
57
37
|
|
|
58
38
|
&-solid {
|
package/css/bottom-sheet.scss
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
|
+
@use "mixins" as *;
|
|
3
4
|
|
|
4
5
|
.bottom-sheet-wrapper {
|
|
5
6
|
position: fixed;
|
|
@@ -142,12 +143,7 @@
|
|
|
142
143
|
|
|
143
144
|
.close {
|
|
144
145
|
cursor: pointer;
|
|
145
|
-
|
|
146
|
-
transition: color 0.15s ease;
|
|
147
|
-
|
|
148
|
-
&:hover {
|
|
149
|
-
color: var(--primary-text);
|
|
150
|
-
}
|
|
146
|
+
@include muted-icon-color;
|
|
151
147
|
}
|
|
152
148
|
}
|
|
153
149
|
|
package/css/breadcrumb.scss
CHANGED
|
@@ -19,11 +19,19 @@
|
|
|
19
19
|
min-width: 0;
|
|
20
20
|
|
|
21
21
|
+ li::before {
|
|
22
|
-
content: "
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
color: var(--divider);
|
|
22
|
+
content: "";
|
|
23
|
+
display: inline-block;
|
|
24
|
+
width: 1.125rem;
|
|
25
|
+
height: 1.125rem;
|
|
26
|
+
background-color: var(--divider);
|
|
27
|
+
mask-image: url("../svg-icons/chevron_right.svg");
|
|
28
|
+
-webkit-mask-image: url("../svg-icons/chevron_right.svg");
|
|
29
|
+
mask-repeat: no-repeat;
|
|
30
|
+
-webkit-mask-repeat: no-repeat;
|
|
31
|
+
mask-position: center;
|
|
32
|
+
-webkit-mask-position: center;
|
|
33
|
+
mask-size: contain;
|
|
34
|
+
-webkit-mask-size: contain;
|
|
27
35
|
flex-shrink: 0;
|
|
28
36
|
user-select: none;
|
|
29
37
|
pointer-events: none;
|
|
@@ -38,12 +46,13 @@
|
|
|
38
46
|
color: var(--secondary-text);
|
|
39
47
|
text-decoration: none;
|
|
40
48
|
padding: 0.25rem 0.375rem;
|
|
41
|
-
border-radius: $radius-
|
|
49
|
+
border-radius: $radius-xs;
|
|
42
50
|
white-space: nowrap;
|
|
43
51
|
transition: color 0.15s ease, background 0.15s ease;
|
|
44
52
|
|
|
45
|
-
.icon {
|
|
46
|
-
|
|
53
|
+
.icon-svg {
|
|
54
|
+
width: 1rem;
|
|
55
|
+
height: 1rem;
|
|
47
56
|
}
|
|
48
57
|
|
|
49
58
|
&:hover {
|
|
@@ -53,7 +62,7 @@
|
|
|
53
62
|
|
|
54
63
|
&:focus-visible {
|
|
55
64
|
@include focus-ring(-1px);
|
|
56
|
-
border-radius: $radius-
|
|
65
|
+
border-radius: $radius-xs;
|
|
57
66
|
}
|
|
58
67
|
}
|
|
59
68
|
|
package/css/calendar.scss
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
@use "parameters" as *;
|
|
2
|
+
@use "mixins" as *;
|
|
2
3
|
|
|
3
4
|
.cal {
|
|
4
|
-
--cal-spacing-xs:
|
|
5
|
-
--cal-spacing-sm:
|
|
6
|
-
--cal-spacing-md:
|
|
7
|
-
--cal-spacing-lg:
|
|
5
|
+
--cal-spacing-xs: #{calc($spacing * 0.25)};
|
|
6
|
+
--cal-spacing-sm: #{calc($spacing * 0.5)};
|
|
7
|
+
--cal-spacing-md: #{calc($spacing * 0.75)};
|
|
8
|
+
--cal-spacing-lg: #{$spacing};
|
|
8
9
|
|
|
9
10
|
--cal-bg: var(--background);
|
|
10
11
|
--cal-bg-alt: var(--secondary-background);
|
|
@@ -207,7 +208,7 @@
|
|
|
207
208
|
color: var(--cal-accent-text);
|
|
208
209
|
border-radius: 50%;
|
|
209
210
|
font-weight: 700;
|
|
210
|
-
|
|
211
|
+
@include focus-glow($tint: 20%, $size: 3px, $color: var(--cal-accent));
|
|
211
212
|
}
|
|
212
213
|
|
|
213
214
|
&.has-events::after {
|
|
@@ -323,10 +324,10 @@
|
|
|
323
324
|
&--cont-after { border-radius: var(--cal-radius-sm) 0 0 var(--cal-radius-sm); }
|
|
324
325
|
&--cont-before#{&}--cont-after { border-radius: 0; }
|
|
325
326
|
|
|
326
|
-
&.badge-success { border-left-color: var(--success); background: color-mix(in srgb, var(--success)
|
|
327
|
-
&.badge-warning { border-left-color: var(--warning); background: color-mix(in srgb, var(--warning)
|
|
328
|
-
&.badge-error { border-left-color: var(--error); background: color-mix(in srgb, var(--error)
|
|
329
|
-
&.badge-info { border-left-color: var(--accent-color); background: color-mix(in srgb, var(--accent-color)
|
|
327
|
+
&.badge-success { border-left-color: var(--success); background: color-mix(in srgb, var(--success) $tint-medium, var(--cal-bg)); }
|
|
328
|
+
&.badge-warning { border-left-color: var(--warning); background: color-mix(in srgb, var(--warning) $tint-medium, var(--cal-bg)); }
|
|
329
|
+
&.badge-error { border-left-color: var(--error); background: color-mix(in srgb, var(--error) $tint-medium, var(--cal-bg)); }
|
|
330
|
+
&.badge-info { border-left-color: var(--accent-color); background: color-mix(in srgb, var(--accent-color) $tint-medium, var(--cal-bg)); }
|
|
330
331
|
}
|
|
331
332
|
|
|
332
333
|
.cal__week-row > .cal__span-bar {
|
|
@@ -402,7 +403,7 @@
|
|
|
402
403
|
&.is-today span {
|
|
403
404
|
background: var(--cal-today-ring);
|
|
404
405
|
color: var(--cal-accent-text);
|
|
405
|
-
|
|
406
|
+
@include focus-glow($tint: 20%, $size: 3px, $color: var(--cal-accent));
|
|
406
407
|
}
|
|
407
408
|
|
|
408
409
|
}
|
|
@@ -544,7 +545,7 @@
|
|
|
544
545
|
padding: 3px 6px;
|
|
545
546
|
overflow: hidden;
|
|
546
547
|
cursor: pointer;
|
|
547
|
-
background: color-mix(in srgb, var(--cal-accent)
|
|
548
|
+
background: color-mix(in srgb, var(--cal-accent) $tint-medium, var(--cal-bg));
|
|
548
549
|
color: var(--cal-text);
|
|
549
550
|
border-left: 3px solid var(--cal-accent);
|
|
550
551
|
z-index: 1;
|
|
@@ -568,19 +569,19 @@
|
|
|
568
569
|
|
|
569
570
|
&.badge-success {
|
|
570
571
|
border-left-color: var(--success);
|
|
571
|
-
background: color-mix(in srgb, var(--success)
|
|
572
|
+
background: color-mix(in srgb, var(--success) $tint-medium, var(--cal-bg));
|
|
572
573
|
}
|
|
573
574
|
&.badge-warning {
|
|
574
575
|
border-left-color: var(--warning);
|
|
575
|
-
background: color-mix(in srgb, var(--warning)
|
|
576
|
+
background: color-mix(in srgb, var(--warning) $tint-medium, var(--cal-bg));
|
|
576
577
|
}
|
|
577
578
|
&.badge-error {
|
|
578
579
|
border-left-color: var(--error);
|
|
579
|
-
background: color-mix(in srgb, var(--error)
|
|
580
|
+
background: color-mix(in srgb, var(--error) $tint-medium, var(--cal-bg));
|
|
580
581
|
}
|
|
581
582
|
&.badge-info {
|
|
582
583
|
border-left-color: var(--accent-color);
|
|
583
|
-
background: color-mix(in srgb, var(--accent-color)
|
|
584
|
+
background: color-mix(in srgb, var(--accent-color) $tint-medium, var(--cal-bg));
|
|
584
585
|
}
|
|
585
586
|
}
|
|
586
587
|
|
|
@@ -624,7 +625,7 @@
|
|
|
624
625
|
}
|
|
625
626
|
|
|
626
627
|
&.is-today {
|
|
627
|
-
background: color-mix(in srgb, var(--cal-accent)
|
|
628
|
+
background: color-mix(in srgb, var(--cal-accent) $tint-subtle, var(--cal-bg));
|
|
628
629
|
}
|
|
629
630
|
}
|
|
630
631
|
|
|
@@ -660,7 +661,7 @@
|
|
|
660
661
|
&.is-today {
|
|
661
662
|
background: var(--cal-today-ring);
|
|
662
663
|
color: var(--cal-accent-text);
|
|
663
|
-
|
|
664
|
+
@include focus-glow($tint: 20%, $size: 3px, $color: var(--cal-accent));
|
|
664
665
|
}
|
|
665
666
|
}
|
|
666
667
|
|
|
@@ -886,7 +887,7 @@
|
|
|
886
887
|
|
|
887
888
|
@media (prefers-reduced-motion: no-preference) {
|
|
888
889
|
.cal__body {
|
|
889
|
-
animation:
|
|
890
|
+
animation: bx-fade-slide-up 0.25s cubic-bezier(0.2, 0, 0, 1);
|
|
890
891
|
}
|
|
891
892
|
|
|
892
893
|
.cal__day,
|
|
@@ -907,17 +908,6 @@
|
|
|
907
908
|
}
|
|
908
909
|
}
|
|
909
910
|
|
|
910
|
-
@keyframes cal-slide-in {
|
|
911
|
-
from {
|
|
912
|
-
opacity: 0;
|
|
913
|
-
transform: translateY(8px);
|
|
914
|
-
}
|
|
915
|
-
to {
|
|
916
|
-
opacity: 1;
|
|
917
|
-
transform: translateY(0);
|
|
918
|
-
}
|
|
919
|
-
}
|
|
920
|
-
|
|
921
911
|
@keyframes cal-cell-in {
|
|
922
912
|
from {
|
|
923
913
|
opacity: 0;
|
package/css/carousel.scss
CHANGED
package/css/chart.scss
CHANGED
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
.chart-area {
|
|
79
|
-
animation:
|
|
79
|
+
animation: bx-fade-in 0.8s ease forwards;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
.chart-point-dot {
|
|
@@ -224,11 +224,6 @@
|
|
|
224
224
|
to { stroke-dashoffset: 0; }
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
@keyframes chart-fade-in {
|
|
228
|
-
from { opacity: 0; }
|
|
229
|
-
to { opacity: 1; }
|
|
230
|
-
}
|
|
231
|
-
|
|
232
227
|
@keyframes chart-grow-y {
|
|
233
228
|
from { transform: scaleY(0); }
|
|
234
229
|
to { transform: scaleY(1); }
|
package/css/checkbox.scss
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
width: $spacing;
|
|
31
31
|
height: $spacing;
|
|
32
32
|
border: 2px solid var(--divider);
|
|
33
|
-
border-radius: $radius-
|
|
33
|
+
border-radius: $radius-xs;
|
|
34
34
|
background-color: var(--background);
|
|
35
35
|
margin-top: 2px;
|
|
36
36
|
transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
|
package/css/chips.scss
CHANGED
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
&.selected {
|
|
44
|
-
background: color-mix(in srgb, var(--accent-color)
|
|
44
|
+
background: color-mix(in srgb, var(--accent-color) $tint-medium, var(--background));
|
|
45
45
|
color: var(--accent-color);
|
|
46
|
-
border-color: color-mix(in srgb, var(--accent-color)
|
|
46
|
+
border-color: color-mix(in srgb, var(--accent-color) $tint-strong, transparent);
|
|
47
47
|
|
|
48
48
|
&:hover {
|
|
49
|
-
background: color-mix(in srgb, var(--accent-color)
|
|
49
|
+
background: color-mix(in srgb, var(--accent-color) $tint-strong, var(--background));
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -73,17 +73,15 @@
|
|
|
73
73
|
transition: background 0.15s ease, color 0.15s ease;
|
|
74
74
|
|
|
75
75
|
&:hover {
|
|
76
|
-
background: color-mix(in srgb, var(--primary-text)
|
|
76
|
+
background: color-mix(in srgb, var(--primary-text) $tint-medium, transparent);
|
|
77
77
|
color: var(--primary-text);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
&:active {
|
|
81
|
-
background: color-mix(in srgb, var(--primary-text)
|
|
81
|
+
background: color-mix(in srgb, var(--primary-text) $tint-strong, transparent);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
.icon,
|
|
85
84
|
.icon-svg {
|
|
86
|
-
font-size: 0.8rem;
|
|
87
85
|
width: 0.8rem;
|
|
88
86
|
height: 0.8rem;
|
|
89
87
|
}
|
|
@@ -91,45 +89,37 @@
|
|
|
91
89
|
}
|
|
92
90
|
|
|
93
91
|
&-accent {
|
|
94
|
-
|
|
95
|
-
color: var(--accent-color);
|
|
96
|
-
border-color: color-mix(in srgb, var(--accent-color) 20%, transparent);
|
|
92
|
+
@include tinted-tag(var(--accent-color));
|
|
97
93
|
|
|
98
94
|
&.closeable button:hover {
|
|
99
|
-
background: color-mix(in srgb, var(--accent-color)
|
|
95
|
+
background: color-mix(in srgb, var(--accent-color) $tint-strong, transparent);
|
|
100
96
|
color: var(--accent-color);
|
|
101
97
|
}
|
|
102
98
|
}
|
|
103
99
|
|
|
104
100
|
&-success {
|
|
105
|
-
|
|
106
|
-
color: var(--success);
|
|
107
|
-
border-color: color-mix(in srgb, var(--success) 20%, transparent);
|
|
101
|
+
@include tinted-tag(var(--success));
|
|
108
102
|
|
|
109
103
|
&.closeable button:hover {
|
|
110
|
-
background: color-mix(in srgb, var(--success)
|
|
104
|
+
background: color-mix(in srgb, var(--success) $tint-strong, transparent);
|
|
111
105
|
color: var(--success);
|
|
112
106
|
}
|
|
113
107
|
}
|
|
114
108
|
|
|
115
109
|
&-warning {
|
|
116
|
-
|
|
117
|
-
color: var(--warning);
|
|
118
|
-
border-color: color-mix(in srgb, var(--warning) 20%, transparent);
|
|
110
|
+
@include tinted-tag(var(--warning));
|
|
119
111
|
|
|
120
112
|
&.closeable button:hover {
|
|
121
|
-
background: color-mix(in srgb, var(--warning)
|
|
113
|
+
background: color-mix(in srgb, var(--warning) $tint-strong, transparent);
|
|
122
114
|
color: var(--warning);
|
|
123
115
|
}
|
|
124
116
|
}
|
|
125
117
|
|
|
126
118
|
&-error {
|
|
127
|
-
|
|
128
|
-
color: var(--error);
|
|
129
|
-
border-color: color-mix(in srgb, var(--error) 20%, transparent);
|
|
119
|
+
@include tinted-tag(var(--error));
|
|
130
120
|
|
|
131
121
|
&.closeable button:hover {
|
|
132
|
-
background: color-mix(in srgb, var(--error)
|
|
122
|
+
background: color-mix(in srgb, var(--error) $tint-strong, transparent);
|
|
133
123
|
color: var(--error);
|
|
134
124
|
}
|
|
135
125
|
}
|
package/css/code-viewer.scss
CHANGED
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
color: #fff;
|
|
31
31
|
border: none;
|
|
32
32
|
padding: calc($spacing * 0.375) calc($spacing * 0.75);
|
|
33
|
-
border-radius: $radius-
|
|
33
|
+
border-radius: $radius-xs;
|
|
34
34
|
cursor: pointer;
|
|
35
35
|
font-size: 0.75rem;
|
|
36
36
|
transition: background 0.2s;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
.copy-button:hover {
|
|
39
|
+
.copy-button:hover:not(:disabled) {
|
|
40
40
|
background: #5a5a5a;
|
|
41
41
|
}
|
|
42
42
|
|
package/css/color-picker.scss
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
|
+
@use "mixins" as *;
|
|
3
4
|
|
|
4
5
|
$thumb-size: 18px;
|
|
5
6
|
$thumb-size-touch: 22px;
|
|
@@ -9,15 +10,12 @@ $preview-size: 40px;
|
|
|
9
10
|
|
|
10
11
|
.color-picker {
|
|
11
12
|
width: 100%;
|
|
12
|
-
|
|
13
|
-
border: 1px solid var(--divider);
|
|
14
|
-
border-radius: $radius-lg;
|
|
13
|
+
@include float-panel($radius-lg);
|
|
15
14
|
padding: $spacing;
|
|
16
15
|
box-sizing: border-box;
|
|
17
16
|
display: flex;
|
|
18
17
|
flex-direction: column;
|
|
19
18
|
gap: calc($spacing * 0.75);
|
|
20
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
21
19
|
}
|
|
22
20
|
|
|
23
21
|
// ─── Saturation / brightness field ────────────────────────────────────────────
|
|
@@ -232,7 +230,7 @@ $preview-size: 40px;
|
|
|
232
230
|
|
|
233
231
|
&:focus {
|
|
234
232
|
border-color: var(--accent-color);
|
|
235
|
-
|
|
233
|
+
@include focus-glow($tint: 12%, $size: 2px);
|
|
236
234
|
}
|
|
237
235
|
}
|
|
238
236
|
|
package/css/context-menu.scss
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
@use "properties";
|
|
2
2
|
@use "parameters" as *;
|
|
3
|
+
@use "mixins" as *;
|
|
3
4
|
|
|
4
5
|
.context-menu {
|
|
5
6
|
position: fixed;
|
|
6
7
|
z-index: 9999;
|
|
7
8
|
min-width: 200px;
|
|
8
9
|
padding: calc($spacing * 0.375) 0;
|
|
9
|
-
|
|
10
|
-
border: 1px solid var(--divider);
|
|
11
|
-
border-radius: $radius-panel;
|
|
12
|
-
box-shadow:
|
|
13
|
-
0 8px 32px rgba(0, 0, 0, 0.12),
|
|
14
|
-
0 2px 8px rgba(0, 0, 0, 0.08),
|
|
15
|
-
0 1px 2px rgba(0, 0, 0, 0.04);
|
|
10
|
+
@include float-panel;
|
|
16
11
|
list-style: none;
|
|
17
12
|
margin: 0;
|
|
18
13
|
opacity: 0;
|
|
@@ -108,7 +103,7 @@
|
|
|
108
103
|
|
|
109
104
|
&:hover,
|
|
110
105
|
&.is-focused {
|
|
111
|
-
background: color-mix(in srgb, var(--error)
|
|
106
|
+
background: color-mix(in srgb, var(--error) $tint-subtle, var(--background));
|
|
112
107
|
color: var(--error);
|
|
113
108
|
|
|
114
109
|
.context-menu-icon {
|