@dodlhuat/basix 1.2.0 → 1.2.1
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 +56 -1
- package/css/accordion.scss +86 -87
- package/css/alert.scss +137 -137
- package/css/button.scss +48 -0
- package/css/calendar.scss +957 -0
- package/css/card.scss +65 -65
- package/css/chart.scss +270 -157
- package/css/chat-bubbles.scss +134 -68
- package/css/chips.scss +109 -19
- package/css/colors.scss +32 -32
- package/css/datepicker.scss +336 -336
- package/css/defaults.scss +90 -90
- package/css/docs.scss +529 -0
- package/css/editor.scss +36 -0
- package/css/file-uploader.scss +1 -1
- package/css/flyout-menu.scss +361 -361
- package/css/form.scss +0 -15
- package/css/gallery.scss +65 -6
- package/css/grid.scss +41 -40
- package/css/group-picker.scss +345 -0
- package/css/guitar-chords.css +250 -250
- package/css/icons.scss +330 -330
- package/css/parameters.scss +3 -3
- package/css/placeholder.scss +33 -33
- package/css/popover.scss +206 -0
- package/css/progress.scss +76 -32
- package/css/properties.scss +51 -36
- package/css/push-menu.scss +302 -174
- package/css/reset.scss +39 -39
- package/css/scrollbar.scss +62 -5
- package/css/sidebar-nav.scss +92 -0
- package/css/spinner.scss +65 -65
- package/css/stepper.scss +48 -12
- package/css/style.css +3159 -254
- package/css/style.css.map +1 -1
- package/css/style.min.css +1 -1
- package/css/style.scss +51 -45
- package/css/table.scss +199 -199
- package/css/tabs.scss +154 -123
- package/css/timeline.scss +83 -38
- package/css/timepicker.scss +100 -5
- package/css/toast.scss +81 -81
- package/css/virtual-dropdown.scss +35 -29
- package/js/calendar.js +532 -0
- package/js/calendar.ts +706 -0
- package/js/chart.js +573 -257
- package/js/chart.ts +692 -0
- package/js/code-viewer.js +10 -10
- package/js/code-viewer.ts +188 -188
- package/js/datepicker.ts +627 -627
- package/js/docs-nav.js +204 -0
- package/js/dropdown.ts +179 -179
- package/js/editor.js +50 -6
- package/js/editor.ts +483 -444
- package/js/file-uploader.js +1 -0
- package/js/file-uploader.ts +1 -0
- package/js/flyout-menu.js +14 -14
- package/js/flyout-menu.ts +249 -249
- package/js/form-builder.js +106 -106
- package/js/gallery.js +14 -8
- package/js/gallery.ts +245 -236
- package/js/group-picker.js +342 -0
- package/js/group-picker.ts +447 -0
- package/js/guitar-chords.js +268 -268
- package/js/lazy-loader.js +121 -121
- package/js/modal.ts +166 -166
- package/js/popover.js +163 -0
- package/js/popover.ts +219 -0
- package/js/position.js +108 -0
- package/js/position.ts +111 -0
- package/js/push-menu.js +113 -0
- package/js/push-menu.ts +284 -145
- package/js/request.js +50 -50
- package/js/scroll.ts +47 -47
- package/js/scrollbar.js +13 -0
- package/js/scrollbar.ts +324 -307
- package/js/select.ts +216 -216
- package/js/sidebar-nav.js +41 -0
- package/js/sidebar-nav.ts +66 -0
- package/js/table.ts +452 -452
- package/js/tabs.ts +279 -279
- package/js/theme.js +17 -6
- package/js/theme.ts +234 -224
- package/js/toast.ts +137 -137
- package/js/tooltip.js +6 -60
- package/js/tooltip.ts +184 -251
- package/js/tsconfig.json +18 -18
- package/js/utils.ts +83 -83
- package/js/virtual-dropdown.js +25 -25
- package/js/virtual-dropdown.ts +365 -365
- package/package.json +39 -39
- package/js/index.js +0 -816
- package/js/index.ts +0 -987
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Basix 1.2.
|
|
1
|
+
# Basix 1.2.1
|
|
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.
|
|
@@ -539,6 +539,61 @@ The FileUploader component provides drag-and-drop file upload functionality with
|
|
|
539
539
|
|
|
540
540
|
Virtual Dropdown is a performant, virtualized dropdown component that efficiently renders large option lists by only drawing visible items in the DOM. Supports single and multi-select modes, built-in search/filtering, keyboard navigation, and configurable item height and render limits — making it ideal for scenarios with hundreds or thousands of selectable options.
|
|
541
541
|
|
|
542
|
+
### Group Picker
|
|
543
|
+
|
|
544
|
+
The GroupPicker component enables hierarchical group and subgroup selection. Users can either select an entire parent group (covering all subgroups) or pick individual subgroups. Groups without children are directly selectable. Selecting all subgroups automatically promotes to a parent selection. Includes debounced search with match highlighting, expand/collapse, and a chip-based selection summary.
|
|
545
|
+
|
|
546
|
+
``` html
|
|
547
|
+
<div id="group-picker-demo"></div>
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
``` js
|
|
551
|
+
const data: GroupData[] = [
|
|
552
|
+
{
|
|
553
|
+
id: 'gruppenspiele', label: 'Gruppenspiele',
|
|
554
|
+
subgroups: [
|
|
555
|
+
{ id: 'grossgruppe', label: 'Grossgruppenspiele' },
|
|
556
|
+
{ id: 'trinkspiele', label: 'Trinkspiele' },
|
|
557
|
+
]
|
|
558
|
+
},
|
|
559
|
+
{ id: 'schach', label: 'Schach' }, // no subgroups — directly selectable
|
|
560
|
+
];
|
|
561
|
+
|
|
562
|
+
const picker = new GroupPicker('#group-picker-demo', data, {
|
|
563
|
+
onSelectionChange: (selection) => console.log(selection),
|
|
564
|
+
});
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
#### GroupData
|
|
568
|
+
|
|
569
|
+
| Property | Type | Description |
|
|
570
|
+
|---|---|---|
|
|
571
|
+
| `id` | string | Unique identifier for the group |
|
|
572
|
+
| `label` | string | Display name |
|
|
573
|
+
| `subgroups` | SubgroupData[] | Optional array of `{ id, label }` child items |
|
|
574
|
+
|
|
575
|
+
#### GroupPickerOptions
|
|
576
|
+
|
|
577
|
+
| Option | Type | Default | Description |
|
|
578
|
+
|---|---|---|---|
|
|
579
|
+
| `onSelectionChange` | function | — | Callback fired on selection change with `GroupPickerSelection` |
|
|
580
|
+
| `searchPlaceholder` | string | `'Gruppen durchsuchen...'` | Placeholder text for the search input |
|
|
581
|
+
| `selectAllLabel` | string | `'Alle'` | Label for the select-all button |
|
|
582
|
+
| `deselectLabel` | string | `'Abwahlen'` | Label shown when a parent group is selected |
|
|
583
|
+
| `emptyLabel` | string | `'Keine Ergebnisse'` | Shown when search yields no results |
|
|
584
|
+
| `selectionPlaceholder` | string | `'Noch keine Auswahl getroffen'` | Placeholder in the selection summary area |
|
|
585
|
+
|
|
586
|
+
#### Public API
|
|
587
|
+
|
|
588
|
+
| Method | Description |
|
|
589
|
+
|---|---|
|
|
590
|
+
| `getSelection()` | Returns `{ parentGroups: string[], subgroups: { groupId, subgroupId }[] }` |
|
|
591
|
+
| `setSelection(selection)` | Programmatically set the selection state |
|
|
592
|
+
| `clearSelection()` | Clear all selections |
|
|
593
|
+
| `expandAll()` | Expand all groups |
|
|
594
|
+
| `collapseAll()` | Collapse all groups |
|
|
595
|
+
| `destroy()` | Remove event listeners and clear the DOM |
|
|
596
|
+
|
|
542
597
|
### Custom Scrollbar
|
|
543
598
|
|
|
544
599
|
The Scrollbar component creates custom-styled scrollbars. Supports pointer/touch dragging, track clicking, and automatic thumb sizing. Can be used with any class.
|
package/css/accordion.scss
CHANGED
|
@@ -1,87 +1,86 @@
|
|
|
1
|
-
@use "properties";
|
|
2
|
-
@use "parameters" as *;
|
|
3
|
-
|
|
4
|
-
.accordion {
|
|
5
|
-
margin: 0 auto;
|
|
6
|
-
border: 1px solid var(--divider);
|
|
7
|
-
border-radius: $border-radius;
|
|
8
|
-
overflow: hidden;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.accordion-item {
|
|
12
|
-
border-bottom: 1px solid var(--divider);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
.accordion-
|
|
24
|
-
display: flex;
|
|
25
|
-
justify-content: space-between;
|
|
26
|
-
align-items: center;
|
|
27
|
-
padding: calc($spacing * 0.85) calc($spacing * 1.25);
|
|
28
|
-
background: transparent;
|
|
29
|
-
font-weight: 500;
|
|
30
|
-
cursor: pointer;
|
|
31
|
-
transition: background 160ms ease,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
&:hover
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
1
|
+
@use "properties";
|
|
2
|
+
@use "parameters" as *;
|
|
3
|
+
|
|
4
|
+
.accordion {
|
|
5
|
+
margin: 0 auto;
|
|
6
|
+
border: 1px solid var(--divider);
|
|
7
|
+
border-radius: $border-radius;
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.accordion-item {
|
|
12
|
+
border-bottom: 1px solid var(--divider);
|
|
13
|
+
|
|
14
|
+
&:last-child { border-bottom: none; }
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Hidden checkbox toggle
|
|
18
|
+
.accordion-toggle {
|
|
19
|
+
display: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Clickable header / trigger
|
|
23
|
+
.accordion-header {
|
|
24
|
+
display: flex;
|
|
25
|
+
justify-content: space-between;
|
|
26
|
+
align-items: center;
|
|
27
|
+
padding: calc($spacing * 0.85) calc($spacing * 1.25);
|
|
28
|
+
background: transparent;
|
|
29
|
+
font-weight: 500;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
transition: background 160ms ease, color 160ms ease;
|
|
32
|
+
user-select: none;
|
|
33
|
+
-webkit-tap-highlight-color: transparent;
|
|
34
|
+
|
|
35
|
+
&:hover { background: var(--hover); }
|
|
36
|
+
&:active { background: var(--hover); }
|
|
37
|
+
|
|
38
|
+
&::after {
|
|
39
|
+
content: '';
|
|
40
|
+
width: 8px;
|
|
41
|
+
height: 8px;
|
|
42
|
+
border-right: 1.5px solid var(--secondary-text);
|
|
43
|
+
border-bottom: 1.5px solid var(--secondary-text);
|
|
44
|
+
transform: rotate(45deg);
|
|
45
|
+
transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
46
|
+
border-color 160ms ease;
|
|
47
|
+
margin-left: $spacing;
|
|
48
|
+
flex-shrink: 0;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Active state
|
|
53
|
+
.accordion-toggle:checked + .accordion-header {
|
|
54
|
+
color: var(--accent-color);
|
|
55
|
+
|
|
56
|
+
&::after {
|
|
57
|
+
transform: rotate(-135deg);
|
|
58
|
+
border-color: var(--accent-color);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Grid wrapper — animates height via grid-template-rows
|
|
63
|
+
.accordion-content {
|
|
64
|
+
display: grid;
|
|
65
|
+
grid-template-rows: 0fr;
|
|
66
|
+
transition: grid-template-rows 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.accordion-toggle:checked ~ .accordion-content {
|
|
71
|
+
grid-template-rows: 1fr;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Inner body — min-height:0 is required for grid 0fr to collapse
|
|
75
|
+
.accordion-body {
|
|
76
|
+
min-height: 0;
|
|
77
|
+
padding: 0;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
|
|
80
|
+
> * {
|
|
81
|
+
padding: 0 calc($spacing * 1.25) calc($spacing * 1.25);
|
|
82
|
+
color: var(--secondary-text);
|
|
83
|
+
font-size: 0.9rem;
|
|
84
|
+
line-height: 1.6;
|
|
85
|
+
}
|
|
86
|
+
}
|
package/css/alert.scss
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
@use "properties";
|
|
2
|
-
@use "parameters" as *;
|
|
3
|
-
|
|
4
|
-
$alert-border-width: 4px;
|
|
5
|
-
|
|
6
|
-
@mixin alert-variant($accent, $bg-tint) {
|
|
7
|
-
background: $bg-tint;
|
|
8
|
-
border-left-color: $accent;
|
|
9
|
-
color: var(--primary-text);
|
|
10
|
-
|
|
11
|
-
strong {
|
|
12
|
-
color: $accent;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.alert-icon {
|
|
16
|
-
fill: $accent;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.alert-close:hover {
|
|
20
|
-
background: color-mix(in srgb, $accent 12%, transparent);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.alert {
|
|
25
|
-
position: relative;
|
|
26
|
-
border-radius: $border-radius;
|
|
27
|
-
padding: calc($spacing * 0.75) $spacing calc($spacing * 0.75) calc($spacing + $alert-border-width);
|
|
28
|
-
border-left: $alert-border-width solid transparent;
|
|
29
|
-
color: var(--primary-text);
|
|
30
|
-
line-height: 1.6;
|
|
31
|
-
font-size: 0.9rem;
|
|
32
|
-
|
|
33
|
-
& + & {
|
|
34
|
-
margin-top: calc($spacing / 2);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
strong {
|
|
38
|
-
font-weight: 600;
|
|
39
|
-
letter-spacing: -0.01em;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
&-default {
|
|
43
|
-
background: var(--secondary-background);
|
|
44
|
-
border-left-color: var(--divider);
|
|
45
|
-
color: var(--primary-text);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
&-info {
|
|
49
|
-
@include alert-variant(
|
|
50
|
-
var(--accent-color),
|
|
51
|
-
color-mix(in srgb, var(--accent-color) 8%, var(--background))
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
&-success {
|
|
56
|
-
@include alert-variant(
|
|
57
|
-
var(--success),
|
|
58
|
-
color-mix(in srgb, var(--success) 8%, var(--background))
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
&-warning {
|
|
63
|
-
@include alert-variant(
|
|
64
|
-
var(--warning),
|
|
65
|
-
color-mix(in srgb, var(--warning) 8%, var(--background))
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
&-error {
|
|
70
|
-
@include alert-variant(
|
|
71
|
-
var(--error),
|
|
72
|
-
color-mix(in srgb, var(--error) 8%, var(--background))
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
&-dismissible {
|
|
77
|
-
padding-right: calc($spacing * 3);
|
|
78
|
-
|
|
79
|
-
.alert-close {
|
|
80
|
-
position: absolute;
|
|
81
|
-
top: 50%;
|
|
82
|
-
right: calc($spacing * 0.75);
|
|
83
|
-
transform: translateY(-50%);
|
|
84
|
-
background: transparent;
|
|
85
|
-
border: none;
|
|
86
|
-
border-radius: $border-radius;
|
|
87
|
-
cursor: pointer;
|
|
88
|
-
padding: calc($spacing / 4) calc($spacing / 2);
|
|
89
|
-
color: inherit;
|
|
90
|
-
opacity: 0.5;
|
|
91
|
-
transition: opacity 0.2s ease, background 0.2s ease;
|
|
92
|
-
|
|
93
|
-
&:hover {
|
|
94
|
-
opacity: 1;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.alert-icon {
|
|
100
|
-
width: 1.1em;
|
|
101
|
-
height: 1.1em;
|
|
102
|
-
margin-right: calc($spacing / 2);
|
|
103
|
-
vertical-align: -0.15em;
|
|
104
|
-
fill: currentColor;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
[data-theme="dark"] {
|
|
109
|
-
.alert {
|
|
110
|
-
&-info {
|
|
111
|
-
@include alert-variant(
|
|
112
|
-
var(--accent-color),
|
|
113
|
-
color-mix(in srgb, var(--accent-color) 10%, var(--background))
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
&-success {
|
|
118
|
-
@include alert-variant(
|
|
119
|
-
var(--success),
|
|
120
|
-
color-mix(in srgb, var(--success) 10%, var(--background))
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
&-warning {
|
|
125
|
-
@include alert-variant(
|
|
126
|
-
var(--warning),
|
|
127
|
-
color-mix(in srgb, var(--warning) 10%, var(--background))
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
&-error {
|
|
132
|
-
@include alert-variant(
|
|
133
|
-
var(--error),
|
|
134
|
-
color-mix(in srgb, var(--error) 10%, var(--background))
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
1
|
+
@use "properties";
|
|
2
|
+
@use "parameters" as *;
|
|
3
|
+
|
|
4
|
+
$alert-border-width: 4px;
|
|
5
|
+
|
|
6
|
+
@mixin alert-variant($accent, $bg-tint) {
|
|
7
|
+
background: $bg-tint;
|
|
8
|
+
border-left-color: $accent;
|
|
9
|
+
color: var(--primary-text);
|
|
10
|
+
|
|
11
|
+
strong {
|
|
12
|
+
color: $accent;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.alert-icon {
|
|
16
|
+
fill: $accent;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.alert-close:hover {
|
|
20
|
+
background: color-mix(in srgb, $accent 12%, transparent);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.alert {
|
|
25
|
+
position: relative;
|
|
26
|
+
border-radius: $border-radius;
|
|
27
|
+
padding: calc($spacing * 0.75) $spacing calc($spacing * 0.75) calc($spacing + $alert-border-width);
|
|
28
|
+
border-left: $alert-border-width solid transparent;
|
|
29
|
+
color: var(--primary-text);
|
|
30
|
+
line-height: 1.6;
|
|
31
|
+
font-size: 0.9rem;
|
|
32
|
+
|
|
33
|
+
& + & {
|
|
34
|
+
margin-top: calc($spacing / 2);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
strong {
|
|
38
|
+
font-weight: 600;
|
|
39
|
+
letter-spacing: -0.01em;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&-default {
|
|
43
|
+
background: var(--secondary-background);
|
|
44
|
+
border-left-color: var(--divider);
|
|
45
|
+
color: var(--primary-text);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&-info {
|
|
49
|
+
@include alert-variant(
|
|
50
|
+
var(--accent-color),
|
|
51
|
+
color-mix(in srgb, var(--accent-color) 8%, var(--background))
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&-success {
|
|
56
|
+
@include alert-variant(
|
|
57
|
+
var(--success),
|
|
58
|
+
color-mix(in srgb, var(--success) 8%, var(--background))
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&-warning {
|
|
63
|
+
@include alert-variant(
|
|
64
|
+
var(--warning),
|
|
65
|
+
color-mix(in srgb, var(--warning) 8%, var(--background))
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&-error {
|
|
70
|
+
@include alert-variant(
|
|
71
|
+
var(--error),
|
|
72
|
+
color-mix(in srgb, var(--error) 8%, var(--background))
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&-dismissible {
|
|
77
|
+
padding-right: calc($spacing * 3);
|
|
78
|
+
|
|
79
|
+
.alert-close {
|
|
80
|
+
position: absolute;
|
|
81
|
+
top: 50%;
|
|
82
|
+
right: calc($spacing * 0.75);
|
|
83
|
+
transform: translateY(-50%);
|
|
84
|
+
background: transparent;
|
|
85
|
+
border: none;
|
|
86
|
+
border-radius: $border-radius;
|
|
87
|
+
cursor: pointer;
|
|
88
|
+
padding: calc($spacing / 4) calc($spacing / 2);
|
|
89
|
+
color: inherit;
|
|
90
|
+
opacity: 0.5;
|
|
91
|
+
transition: opacity 0.2s ease, background 0.2s ease;
|
|
92
|
+
|
|
93
|
+
&:hover {
|
|
94
|
+
opacity: 1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.alert-icon {
|
|
100
|
+
width: 1.1em;
|
|
101
|
+
height: 1.1em;
|
|
102
|
+
margin-right: calc($spacing / 2);
|
|
103
|
+
vertical-align: -0.15em;
|
|
104
|
+
fill: currentColor;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
[data-theme="dark"] {
|
|
109
|
+
.alert {
|
|
110
|
+
&-info {
|
|
111
|
+
@include alert-variant(
|
|
112
|
+
var(--accent-color),
|
|
113
|
+
color-mix(in srgb, var(--accent-color) 10%, var(--background))
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
&-success {
|
|
118
|
+
@include alert-variant(
|
|
119
|
+
var(--success),
|
|
120
|
+
color-mix(in srgb, var(--success) 10%, var(--background))
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&-warning {
|
|
125
|
+
@include alert-variant(
|
|
126
|
+
var(--warning),
|
|
127
|
+
color-mix(in srgb, var(--warning) 10%, var(--background))
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
&-error {
|
|
132
|
+
@include alert-variant(
|
|
133
|
+
var(--error),
|
|
134
|
+
color-mix(in srgb, var(--error) 10%, var(--background))
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
138
|
}
|
package/css/button.scss
CHANGED
|
@@ -67,6 +67,41 @@ button,
|
|
|
67
67
|
opacity: 0.45;
|
|
68
68
|
cursor: not-allowed;
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
&.is-loading {
|
|
72
|
+
pointer-events: none;
|
|
73
|
+
position: relative;
|
|
74
|
+
color: transparent !important;
|
|
75
|
+
|
|
76
|
+
&::after {
|
|
77
|
+
content: '';
|
|
78
|
+
position: absolute;
|
|
79
|
+
width: 1.1em;
|
|
80
|
+
height: 1.1em;
|
|
81
|
+
border: 2px solid currentColor;
|
|
82
|
+
border-top-color: transparent;
|
|
83
|
+
border-radius: 50%;
|
|
84
|
+
animation: spinner-rotate 0.8s ease-in-out infinite;
|
|
85
|
+
color: var(--primary-text);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
> * {
|
|
89
|
+
visibility: hidden;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.button-primary,
|
|
95
|
+
button.button-primary,
|
|
96
|
+
.button-success,
|
|
97
|
+
button.button-success,
|
|
98
|
+
.button-warning,
|
|
99
|
+
button.button-warning,
|
|
100
|
+
.button-error,
|
|
101
|
+
button.button-error {
|
|
102
|
+
&.is-loading::after {
|
|
103
|
+
color: var(--background);
|
|
104
|
+
}
|
|
70
105
|
}
|
|
71
106
|
|
|
72
107
|
.button-primary,
|
|
@@ -148,4 +183,17 @@ button.button-error {
|
|
|
148
183
|
button.button-error {
|
|
149
184
|
@include button-variant-dark(var(--error));
|
|
150
185
|
}
|
|
186
|
+
|
|
187
|
+
.button-primary,
|
|
188
|
+
button.button-primary,
|
|
189
|
+
.button-success,
|
|
190
|
+
button.button-success,
|
|
191
|
+
.button-warning,
|
|
192
|
+
button.button-warning,
|
|
193
|
+
.button-error,
|
|
194
|
+
button.button-error {
|
|
195
|
+
&.is-loading::after {
|
|
196
|
+
color: var(--primary-text);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
151
199
|
}
|