@wwtdev/bsds-css 2.5.1 → 2.6.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 +36 -8
- package/dist/components/_badge.scss +1 -1
- package/dist/components/_banner.scss +1 -1
- package/dist/components/_buttons.scss +85 -27
- package/dist/components/_circle-buttons.scss +108 -49
- package/dist/components/_dropdown-options.scss +1 -1
- package/dist/components/_dropdown.scss +1 -1
- package/dist/components/_filter-buttons.scss +15 -8
- package/dist/components/_form-booleans.scss +41 -76
- package/dist/components/_form-character-count.scss +1 -1
- package/dist/components/_form-hints.scss +7 -3
- package/dist/components/_form-input-composite.scss +1 -1
- package/dist/components/_form-text-fields.scss +1 -1
- package/dist/components/_modal.scss +2 -1
- package/dist/components/_timeline.scss +1 -1
- package/dist/components/badge.css +1 -1
- package/dist/components/banner.css +1 -1
- package/dist/components/buttons.css +84 -26
- package/dist/components/circle-buttons.css +108 -49
- package/dist/components/dropdown-options.css +1 -1
- package/dist/components/dropdown.css +1 -1
- package/dist/components/filter-buttons.css +15 -8
- package/dist/components/form-booleans.css +41 -76
- package/dist/components/form-character-count.css +1 -1
- package/dist/components/form-hints.css +7 -3
- package/dist/components/form-input-composite.css +1 -1
- package/dist/components/form-text-fields.css +1 -1
- package/dist/components/modal.css +2 -2
- package/dist/components/timeline.css +1 -1
- package/dist/wwt-bsds-preset.js +3 -0
- package/dist/wwt-bsds-wc-base.css +5 -2
- package/dist/wwt-bsds.css +280 -191
- package/dist/wwt-bsds.min.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -56,25 +56,53 @@ Since our CSS has its own reset and default styles, we prevent Tailwind's `base`
|
|
|
56
56
|
|
|
57
57
|
Once you have completed the Tailwind installation steps, you can use the classes generated from the preset.
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
We've extended the TW theme with color utilities that will automatically adjust when using dark mode. These classes require the CSS custom properties defined in the global stylesheet (`wwt-bsds.css`). If you're not bringing that stylesheet in, either disregard these classes or manually include the properties from [tokens.css](https://github.wwt.com/custom-apps/wwt-blue-steel/blob/main/packages/css-framework/src/styles/tokens.css) and [global.css](https://github.wwt.com/custom-apps/wwt-blue-steel/blob/main/packages/css-framework/src/styles/global.css) in your project.
|
|
59
|
+
#### Order matters!
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
In your project's stylesheet ordering, the base Tailwind styles should come first, _then_ the BSDS CSS framework.
|
|
61
|
+
In your project's stylesheet ordering, the BSDS CSS framework should come first, _then_ the base Tailwind styles for easier overriding via TW utilities.
|
|
66
62
|
|
|
67
63
|
```javascript
|
|
68
64
|
/* src/main.js */
|
|
69
65
|
|
|
70
|
-
// TW
|
|
71
|
-
import './styles/tailwind.css'
|
|
72
66
|
|
|
73
67
|
// Blue Steel Styles
|
|
74
68
|
import '@wwtdev/bsds-css/dist/wwt-bsds.min.css'
|
|
69
|
+
// TW
|
|
70
|
+
import './styles/tailwind.css'
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Alternatively, you can leverage native CSS `@layer` to ensure TW utilities will always trump these styles.
|
|
75
|
+
|
|
76
|
+
```css
|
|
77
|
+
/* src/styles/index.css (or wherever your styles live) */
|
|
78
|
+
|
|
79
|
+
@layer app-base, external, app, utils;
|
|
80
|
+
|
|
81
|
+
/* -- BASE -- */
|
|
82
|
+
@import "@wwtdev/bsds-css/dist/wwt-bsds.min.css" layer(app-base);
|
|
83
|
+
|
|
84
|
+
/* -- EXTERNAL: any external stylesheets, e.g. from other 3d party libs -- */
|
|
85
|
+
@import "some-other-pkg/dist/style.css" layer(external);
|
|
86
|
+
|
|
87
|
+
/* -- APP / INTERNAL STYLES, e.g. your site's base styles -- */
|
|
88
|
+
@import "some-content.css" layer(app);
|
|
89
|
+
|
|
90
|
+
/* -- UTILITY CLASSES --
|
|
91
|
+
Due to how native CSS @layer works, and our defined layer order at the top of this file, utility classes will always trump any other styles in the app (as long as those styles are in one of our defined layers)
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
@layer utils {
|
|
95
|
+
@tailwind base;
|
|
96
|
+
@tailwind utilities;
|
|
97
|
+
}
|
|
75
98
|
|
|
76
99
|
```
|
|
77
100
|
|
|
101
|
+
### 3. Dark Mode-compatible "semantic" color utilities
|
|
102
|
+
|
|
103
|
+
We've extended the TW theme with color utilities that will automatically adjust when using dark mode. These classes require the CSS custom properties defined in the global stylesheet (`wwt-bsds.css`). If you're not bringing that stylesheet in, either disregard these classes or manually include the properties from [tokens.css](https://github.wwt.com/custom-apps/wwt-blue-steel/blob/main/packages/css-framework/src/styles/tokens.css) and [global.css](https://github.wwt.com/custom-apps/wwt-blue-steel/blob/main/packages/css-framework/src/styles/global.css) in your project.
|
|
104
|
+
|
|
105
|
+
|
|
78
106
|
### Browser Support
|
|
79
107
|
|
|
80
108
|
Our styles are compiled using Post CSS and Autoprefixer using the [`defaults` setting](https://github.com/browserslist/browserslist#full-list).
|
|
@@ -1,22 +1,48 @@
|
|
|
1
1
|
@mixin buttons() {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
/*
|
|
3
|
+
--btn-main: (this is doing too much.. look into backwards-compatible way to break this up)
|
|
4
|
+
background color (base)
|
|
5
|
+
focus ring color
|
|
6
|
+
|
|
7
|
+
background colors:
|
|
8
|
+
--btn-secondary: background color (active, hover)
|
|
9
|
+
--btn-light: background color (ghost hover, ghost focus)
|
|
10
|
+
|
|
11
|
+
border / box-shadow:
|
|
12
|
+
--btn-ghost-ink: the box shadow color for ghost buttons is synced to ink
|
|
13
|
+
--btn-highlight: box shadow color (w/ --btn-main) (active)
|
|
14
|
+
|
|
15
|
+
padding:
|
|
16
|
+
--btn-padding: padding (changes by size, and on text btns)
|
|
17
|
+
|
|
18
|
+
text color:
|
|
19
|
+
--btn-ink: text color
|
|
20
|
+
--btn-ghost-ink: text color (ghost)
|
|
21
|
+
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
.bs-button {
|
|
7
25
|
--btn-focus-pseudo-width: calc(100% + 0.5rem);
|
|
8
26
|
--btn-ghost-ink: var(--bs-ink-blue);
|
|
27
|
+
--btn-highlight: var(--bs-blue-100);
|
|
9
28
|
--btn-ink: var(--bs-white);
|
|
29
|
+
--btn-main: var(--bs-blue-400);
|
|
30
|
+
--btn-padding: .25rem .75rem;
|
|
31
|
+
--btn-secondary: var(--bs-blue-medium);
|
|
32
|
+
--btn-text-size: var(--bs-text-md);
|
|
33
|
+
--btn-weight: 600;
|
|
34
|
+
--btn-height: 2.5rem;
|
|
10
35
|
align-items: center;
|
|
11
36
|
background-color: var(--btn-main);
|
|
12
37
|
border: none;
|
|
13
38
|
border-radius: 0.25rem;
|
|
14
39
|
color: var(--btn-ink);
|
|
40
|
+
column-gap: var(--bs-space-2);
|
|
15
41
|
cursor: pointer;
|
|
16
42
|
display: inline-flex;
|
|
17
|
-
font-size: var(--btn-text-size
|
|
18
|
-
font-weight: var(--btn-weight
|
|
19
|
-
height: var(--btn-height
|
|
43
|
+
font-size: var(--btn-text-size);
|
|
44
|
+
font-weight: var(--btn-weight);
|
|
45
|
+
height: var(--btn-height);
|
|
20
46
|
justify-content: center;
|
|
21
47
|
line-height: 1.5;
|
|
22
48
|
outline: 2px solid transparent;
|
|
@@ -33,9 +59,9 @@
|
|
|
33
59
|
|
|
34
60
|
.bs-button:active {
|
|
35
61
|
background-color: var(--btn-secondary);
|
|
36
|
-
transform: scale(0.97);
|
|
37
|
-
transform-origin: center;
|
|
38
62
|
box-shadow: inset 0px 0px 4px 1px var(--btn-main);
|
|
63
|
+
transform-origin: center;
|
|
64
|
+
transform: scale(0.97);
|
|
39
65
|
}
|
|
40
66
|
|
|
41
67
|
/* ------------ Focus Styles ------------ */
|
|
@@ -74,7 +100,7 @@
|
|
|
74
100
|
--btn-light: var(--bs-blue-10);
|
|
75
101
|
--btn-secondary: var(--bs-blue-10);
|
|
76
102
|
background-color: transparent;
|
|
77
|
-
box-shadow: inset 0 0 0 1px var(--btn-
|
|
103
|
+
box-shadow: inset 0 0 0 1px var(--btn-ghost-ink);
|
|
78
104
|
}
|
|
79
105
|
.bs-button:where([data-ghost]:not([data-ghost="false"]))::before {
|
|
80
106
|
border-radius: 0.4375rem;
|
|
@@ -91,46 +117,73 @@
|
|
|
91
117
|
|
|
92
118
|
/* ------------ VARIANTS ------------ */
|
|
93
119
|
.bs-button:where([data-variant^='secondary']) {
|
|
120
|
+
--btn-ghost-ink: var(--bs-ink-plum);
|
|
121
|
+
--btn-highlight: var(--bs-plum-100);
|
|
122
|
+
--btn-light: var(--bs-plum-10);
|
|
94
123
|
--btn-main: var(--bs-plum-400);
|
|
95
124
|
--btn-secondary: var(--bs-plum-medium);
|
|
96
|
-
--btn-light: var(--bs-plum-10);
|
|
97
|
-
--btn-highlight: var(--bs-plum-100);
|
|
98
|
-
--btn-ghost-ink: var(--bs-ink-plum);
|
|
99
125
|
}
|
|
100
126
|
.dark .bs-button:where([data-variant^='secondary']) {
|
|
127
|
+
--btn-highlight: var(--bs-plum-400);
|
|
128
|
+
--btn-light: var(--bs-navy-400);
|
|
101
129
|
--btn-main: var(--bs-plum-200);
|
|
102
130
|
--btn-secondary: var(--bs-plum-300);
|
|
103
|
-
--btn-light: var(--bs-navy-400);
|
|
104
|
-
--btn-highlight: var(--bs-plum-400);
|
|
105
131
|
}
|
|
106
132
|
.bs-button:where([data-variant^='positive']) {
|
|
133
|
+
--btn-ghost-ink: var(--bs-ink-purple);
|
|
134
|
+
--btn-highlight: var(--bs-purple-100);
|
|
135
|
+
--btn-light: var(--bs-purple-10);
|
|
107
136
|
--btn-main: var(--bs-purple-400);
|
|
108
137
|
--btn-secondary: var(--bs-purple-medium);
|
|
109
|
-
--btn-light: var(--bs-purple-10);
|
|
110
|
-
--btn-highlight: var(--bs-purple-100);
|
|
111
|
-
--btn-ghost-ink: var(--bs-ink-purple);
|
|
112
138
|
}
|
|
113
139
|
.bs-button:where([data-variant^='warning']) {
|
|
140
|
+
--btn-ghost-ink: var(--bs-ink-orange);
|
|
141
|
+
--btn-highlight: var(--bs-orange-100);
|
|
142
|
+
--btn-light: var(--bs-orange-10);
|
|
114
143
|
--btn-main: var(--bs-orange-warning);
|
|
115
144
|
--btn-secondary: var(--bs-orange-base);
|
|
116
|
-
--btn-light: var(--bs-orange-10);
|
|
117
|
-
--btn-highlight: var(--bs-orange-100);
|
|
118
|
-
--btn-ghost-ink: var(--bs-ink-orange);
|
|
119
145
|
}
|
|
120
146
|
.bs-button:where([data-variant^='negative']) {
|
|
147
|
+
--btn-ghost-ink: var(--bs-ink-red);
|
|
148
|
+
--btn-highlight: var(--bs-red-100);
|
|
149
|
+
--btn-light: var(--bs-red-10);
|
|
121
150
|
--btn-main: var(--bs-red-400);
|
|
122
151
|
--btn-secondary: var(--bs-red-medium);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* pink variant */
|
|
155
|
+
.bs-button:where([data-variant^='pink']) {
|
|
156
|
+
--btn-ghost-ink: var(--bs-ink-pink);
|
|
157
|
+
--btn-highlight: var(--bs-pink-400);
|
|
158
|
+
--btn-light: var(--bs-pink-10);
|
|
159
|
+
--btn-main: var(--bs-pink-400);
|
|
160
|
+
--btn-secondary: var(--bs-pink-300);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* royal blue variant */
|
|
164
|
+
.bs-button:where([data-variant^='royal']) {
|
|
165
|
+
--btn-ghost-ink: var(--bs-ink-royal);
|
|
166
|
+
--btn-highlight: var(--bs-royal-400);
|
|
167
|
+
--btn-light: var(--bs-royal-10);
|
|
168
|
+
--btn-main: var(--bs-royal-400);
|
|
169
|
+
--btn-secondary: var(--bs-royal-300);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* white variant - for dark backgrounds + ghost btn only */
|
|
173
|
+
.bs-button:where([data-variant^='white'][data-ghost]:not([data-ghost="false"])) {
|
|
174
|
+
--btn-ghost-ink: var(--bs-ink-white);
|
|
175
|
+
--btn-highlight: var(--bs-ink-white);
|
|
176
|
+
--btn-light: var(--bs-white-10);
|
|
177
|
+
--btn-main: var(--bs-ink-white);
|
|
126
178
|
}
|
|
127
179
|
|
|
128
180
|
/* ------------ Text Button ------------ */
|
|
129
181
|
.bs-button:where([data-text]:not([data-text="false"])) {
|
|
182
|
+
--btn-focus-pseudo-width: calc(100% + 1rem); /* text btns don't have side padding, but we do want focus outline to look padded */
|
|
130
183
|
--btn-height: auto;
|
|
131
184
|
--btn-ink: var(--bs-ink-blue);
|
|
132
185
|
--btn-padding: 0;
|
|
133
|
-
--btn-
|
|
186
|
+
--btn-secondary: transparent;
|
|
134
187
|
--btn-text-size: var(--bs-text-md);
|
|
135
188
|
--btn-weight: 400;
|
|
136
189
|
background-color: transparent;
|
|
@@ -150,6 +203,11 @@
|
|
|
150
203
|
transform: none;
|
|
151
204
|
}
|
|
152
205
|
|
|
206
|
+
.bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"])),
|
|
207
|
+
.bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"])):hover {
|
|
208
|
+
--btn-ink: var(--bs-ink-red);
|
|
209
|
+
}
|
|
210
|
+
|
|
153
211
|
/* ------------ Button Sizes, Media-based Text Sizing -------------- */
|
|
154
212
|
/* Std button: Mobile text size, DT text size */
|
|
155
213
|
.bs-button {
|
|
@@ -205,7 +263,7 @@
|
|
|
205
263
|
|
|
206
264
|
.bs-button:where([data-ghost]:not([data-ghost="false"])):disabled,
|
|
207
265
|
.bs-button:where([data-ghost]:not([data-ghost="false"]))[aria-disabled="true"] {
|
|
208
|
-
|
|
266
|
+
--btn-ghost-ink: var(--bs-ink-disabled);
|
|
209
267
|
}
|
|
210
268
|
|
|
211
269
|
.bs-button:where([data-text]:not([data-text="false"])):disabled,
|
|
@@ -1,24 +1,49 @@
|
|
|
1
1
|
@mixin circle-buttons() {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
/*
|
|
3
|
+
Properties : Defaults // Description
|
|
4
|
+
====================================
|
|
5
|
+
--btn-icon-bg-color: var(--btn-main); // icon bg color (base state)
|
|
6
|
+
--btn-icon-padding: .75rem; // padding around icon svg
|
|
7
|
+
--btn-icon-size: 1.5rem; // svg width and height
|
|
8
|
+
--btn-icon-stroke-color: var(--bs-white);
|
|
9
|
+
--btn-main: var(--bs-blue-base); // many things... should probably break this up
|
|
10
|
+
--btn-text-color: var(--bs-ink-base);
|
|
11
|
+
--btn-text-size: var(--bs-text-md);
|
|
12
|
+
|
|
13
|
+
--btn-border-color: transparent; // focus state outline color - transparent base state, --btn-main base focus state
|
|
14
|
+
--btn-border-color-focused: var(--btn-main); // focus state ring color set on variants
|
|
15
|
+
--btn-secondary: var(--bs-blue-medium); // hover state icon bg
|
|
16
|
+
--btn-shadow-color-active: var(--btn-main); // active state shadow color (icon bg)
|
|
17
|
+
--btn-text-color-hovered: var(--bs-ink-base); // hover state text color
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
:where(.bs-circle-button) {
|
|
21
|
+
--btn-border-color-focused: var(--btn-main);
|
|
6
22
|
--btn-border-color: transparent;
|
|
7
|
-
--btn-
|
|
23
|
+
--btn-focus-inset: -0.25rem;
|
|
24
|
+
--btn-gap: .5rem;
|
|
8
25
|
--btn-icon-bg-color: var(--btn-main);
|
|
9
26
|
--btn-icon-padding: .75rem;
|
|
10
27
|
--btn-icon-size: 1.5rem;
|
|
11
28
|
--btn-icon-stroke-color: var(--bs-white);
|
|
29
|
+
--btn-main: var(--bs-blue-base);
|
|
30
|
+
--btn-secondary: var(--bs-blue-medium);
|
|
31
|
+
--btn-shadow-color-active: var(--btn-main);
|
|
32
|
+
--btn-text-color-hovered: var(--bs-ink-base);
|
|
12
33
|
--btn-text-color: var(--bs-ink-base);
|
|
13
|
-
--btn-text-size:
|
|
34
|
+
--btn-text-size: 1.125rem;
|
|
35
|
+
--btn-text-weight: 400;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.bs-circle-button {
|
|
14
39
|
align-items: center;
|
|
15
40
|
background-color: transparent;
|
|
16
|
-
border-radius: var(--btn-border-radius);
|
|
17
41
|
color: var(--btn-text-color);
|
|
18
42
|
cursor: pointer;
|
|
19
43
|
display: inline-flex;
|
|
20
44
|
font-size: var(--btn-text-size);
|
|
21
|
-
|
|
45
|
+
font-weight: var(--btn-text-weight);
|
|
46
|
+
gap: var(--btn-gap);
|
|
22
47
|
outline: none;
|
|
23
48
|
position: relative;
|
|
24
49
|
vertical-align: middle;
|
|
@@ -31,18 +56,6 @@ a.bs-circle-button {
|
|
|
31
56
|
text-decoration: none;
|
|
32
57
|
}
|
|
33
58
|
|
|
34
|
-
.bs-circle-button :where(.bs-circle-button-icon)::before {
|
|
35
|
-
border-color: var(--btn-border-color);
|
|
36
|
-
border-radius: var(--btn-border-radius);
|
|
37
|
-
border-style: solid;
|
|
38
|
-
border-width: 0.125rem;
|
|
39
|
-
height: calc(100% + 0.5rem);
|
|
40
|
-
inset: -0.25rem;
|
|
41
|
-
position: absolute;
|
|
42
|
-
transition: border-color 125ms ease-in-out, transform 100ms ease-in-out;
|
|
43
|
-
width: calc(100% + 0.5rem);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
59
|
.bs-circle-button :where(.bs-circle-button-icon) {
|
|
47
60
|
align-items: center;
|
|
48
61
|
background-color: var(--btn-icon-bg-color);
|
|
@@ -57,6 +70,17 @@ a.bs-circle-button {
|
|
|
57
70
|
transition: all 100ms ease-in-out;
|
|
58
71
|
}
|
|
59
72
|
|
|
73
|
+
.bs-circle-button :where(.bs-circle-button-icon)::before {
|
|
74
|
+
border-color: var(--btn-border-color);
|
|
75
|
+
border-radius: 50%;
|
|
76
|
+
border-style: solid;
|
|
77
|
+
border-width: 0.125rem;
|
|
78
|
+
content: '';
|
|
79
|
+
inset: var(--btn-focus-inset);
|
|
80
|
+
position: absolute;
|
|
81
|
+
transition: border-color 125ms ease-in-out, transform 100ms ease-in-out;
|
|
82
|
+
}
|
|
83
|
+
|
|
60
84
|
.bs-circle-button :where(.bs-circle-button-icon) :where(.bs-icon) {
|
|
61
85
|
--icon-size: var(--btn-icon-size);
|
|
62
86
|
}
|
|
@@ -76,27 +100,21 @@ a.bs-circle-button {
|
|
|
76
100
|
|
|
77
101
|
/* Ghost Buttons */
|
|
78
102
|
.bs-circle-button:where([data-ghost]:not([data-ghost="false"])) {
|
|
103
|
+
--btn-icon-bg-color: transparent;
|
|
79
104
|
--btn-icon-stroke-color: var(--btn-main);
|
|
80
105
|
--btn-light: var(--bs-blue-10);
|
|
81
106
|
--btn-secondary: var(--bs-blue-10);
|
|
82
107
|
}
|
|
83
|
-
.bs-circle-button:where([data-ghost]:not([data-ghost="false"])) :where(.bs-circle-button-icon) {
|
|
84
|
-
background-color: transparent;
|
|
85
|
-
box-shadow: inset 0 0 0 1px transparent;
|
|
86
|
-
color: var(--btn-icon-stroke-color);
|
|
87
|
-
}
|
|
88
|
-
.bs-circle-button:where([data-ghost]:not([data-ghost="false"])) :where(.bs-circle-button-icon)::before {
|
|
89
|
-
border-radius: 50%;
|
|
90
|
-
}
|
|
91
108
|
|
|
92
109
|
/* Active, Hover, Focus states */
|
|
93
110
|
.bs-circle-button:active, .bs-circle-button:hover {
|
|
94
111
|
--btn-icon-bg-color: var(--btn-secondary);
|
|
112
|
+
--btn-text-color: var(--btn-text-color-hovered);
|
|
95
113
|
}
|
|
96
114
|
.bs-circle-button:active :where(.bs-circle-button-icon) {
|
|
97
|
-
|
|
115
|
+
box-shadow: inset 0px 0px 4px 1px var(--btn-shadow-color-active);
|
|
98
116
|
transform-origin: center;
|
|
99
|
-
|
|
117
|
+
transform: scale(0.97);
|
|
100
118
|
}
|
|
101
119
|
|
|
102
120
|
.bs-circle-button:where([data-direction="right"]):hover :where(.bs-circle-button-icon),
|
|
@@ -108,22 +126,12 @@ a.bs-circle-button {
|
|
|
108
126
|
transform: translateX(-.25rem);
|
|
109
127
|
}
|
|
110
128
|
|
|
111
|
-
.bs-circle-button:where([data-ghost]:not([data-ghost="false"])):hover
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.bs-circle-button:where([data-ghost]:not([data-ghost="false"])):active {
|
|
116
|
-
box-shadow:
|
|
117
|
-
inset 0 0 0 1px var(--btn-main),
|
|
118
|
-
inset 0px 0px 4px 1px var(--btn-highlight);
|
|
129
|
+
.bs-circle-button:where([data-ghost]:not([data-ghost="false"])):hover {
|
|
130
|
+
--btn-icon-bg-color: var(--btn-light);
|
|
119
131
|
}
|
|
120
132
|
|
|
121
133
|
.bs-circle-button:where(:focus-visible) {
|
|
122
|
-
--btn-border-color: var(--btn-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.bs-circle-button:where(:focus-visible) :where(.bs-circle-button-icon)::before {
|
|
126
|
-
content: '';
|
|
134
|
+
--btn-border-color: var(--btn-border-color-focused);
|
|
127
135
|
}
|
|
128
136
|
|
|
129
137
|
/* Disabled State */
|
|
@@ -132,28 +140,79 @@ a.bs-circle-button {
|
|
|
132
140
|
--btn-text-color: var(--bs-ink-disabled);
|
|
133
141
|
pointer-events: none;
|
|
134
142
|
}
|
|
135
|
-
.bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"]))
|
|
136
|
-
|
|
143
|
+
.bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"])) {
|
|
144
|
+
--btn-icon-bg-color: var(--bs-bg-disabled);
|
|
137
145
|
}
|
|
138
146
|
|
|
139
|
-
|
|
140
147
|
/* Button Size */
|
|
141
148
|
.bs-circle-button:where([data-size^='sm']) {
|
|
142
149
|
--btn-icon-padding: .375rem;
|
|
143
150
|
--btn-icon-size: .75rem;
|
|
144
|
-
--btn-text-size:
|
|
151
|
+
--btn-text-size: .875rem;
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
.bs-circle-button:where([data-size^='sm'][data-text]:not([data-text="false"])) {
|
|
148
155
|
--btn-icon-padding: .3125rem;
|
|
149
156
|
--btn-icon-size: .625rem;
|
|
150
|
-
--btn-text-size:
|
|
157
|
+
--btn-text-size: 1rem;
|
|
151
158
|
}
|
|
152
159
|
|
|
153
160
|
.bs-circle-button:where([data-size='xs'][data-text]:not([data-text="false"])) {
|
|
154
161
|
--btn-icon-padding: .25rem;
|
|
155
162
|
--btn-icon-size: .5rem;
|
|
156
|
-
--btn-text-size:
|
|
163
|
+
--btn-text-size: .875rem;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Color Variants */
|
|
167
|
+
.bs-circle-button:where([data-variant^="color"]) {
|
|
168
|
+
--btn-focus-inset: .125rem;
|
|
169
|
+
--btn-gap: 0;
|
|
170
|
+
--btn-icon-bg-color: transparent;
|
|
171
|
+
--btn-icon-padding: .5rem;
|
|
172
|
+
--btn-icon-size: .75rem; /* stays the same for all sizes */
|
|
173
|
+
--btn-icon-stroke-color: var(--btn-text-color);
|
|
174
|
+
--btn-secondary: transparent;
|
|
175
|
+
--btn-shadow-color-active: transparent;
|
|
176
|
+
}
|
|
177
|
+
.bs-circle-button:where([data-variant="color-blue"]) {
|
|
178
|
+
--btn-border-color-focused: var(--bs-ink-blue);
|
|
179
|
+
--btn-text-color: var(--bs-ink-blue);
|
|
180
|
+
--btn-text-color-hovered: var(--bs-blue-base);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.bs-circle-button:where([data-variant="color-royal"]) {
|
|
184
|
+
--btn-border-color-focused: var(--bs-ink-royal);
|
|
185
|
+
--btn-text-color: var(--bs-ink-royal);
|
|
186
|
+
--btn-text-color-hovered: var(--bs-royal-medium);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.bs-circle-button:where([data-variant="color-purple"]) {
|
|
190
|
+
--btn-border-color-focused: var(--bs-purple-400);
|
|
191
|
+
--btn-text-color: var(--bs-ink-purple);
|
|
192
|
+
--btn-text-color-hovered: var(--bs-purple-medium);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.bs-circle-button:where([data-variant="color-pink"]) {
|
|
196
|
+
--btn-border-color-focused: var(--bs-pink-400);
|
|
197
|
+
--btn-text-color: var(--bs-ink-pink);
|
|
198
|
+
--btn-text-color-hovered: var(--bs-pink-base);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.bs-circle-button:where([data-variant="color-red"]) {
|
|
202
|
+
--btn-border-color-focused: var(--bs-ink-red);
|
|
203
|
+
--btn-text-color: var(--bs-ink-red);
|
|
204
|
+
--btn-text-color-hovered: var(--bs-red-base);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.bs-circle-button:where([data-variant^="color"]):where(:disabled, [aria-disabled]:not([aria-disabled="false"])) {
|
|
208
|
+
--btn-icon-bg-color: transparent;
|
|
209
|
+
--btn-text-color: var(--bs-ink-disabled);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* size XXS only supported for color variants */
|
|
213
|
+
.bs-circle-button:where([data-variant^="color"]):where([data-size='xxs'][data-text]:not([data-text="false"])) {
|
|
214
|
+
--btn-text-size: .75rem;
|
|
215
|
+
--btn-text-weight: 600;
|
|
157
216
|
}
|
|
158
217
|
|
|
159
218
|
}
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
/* Hover or data-selected */
|
|
97
97
|
.bs-dropdown-options :where(li:not([role="separator"]):hover),
|
|
98
98
|
.bs-dropdown-options :where(li[data-selected]) {
|
|
99
|
-
background-color: var(--bs-bg-medium);
|
|
99
|
+
background-color: var(--bs-bg-medium-to-light);
|
|
100
100
|
border-left: 4px solid var(--bs-ink-blue);
|
|
101
101
|
color: var(--bs-ink-blue);
|
|
102
102
|
outline: none;
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
--dropdown-width: 100%;
|
|
29
29
|
--dropdown-transform: translate(0, 100%);
|
|
30
30
|
|
|
31
|
-
background-color: var(--bs-bg-base-
|
|
31
|
+
background-color: var(--bs-bg-base-to-medium);
|
|
32
32
|
border-radius: 4px;
|
|
33
33
|
bottom: var(--dropdown-bottom);
|
|
34
34
|
box-shadow: var(--bs-shadow-contentMedium);
|
|
@@ -11,25 +11,32 @@ custom properties:
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
button:where(.bs-filter-button) {
|
|
14
|
+
--filterbtn-caret-size: 1rem;
|
|
15
|
+
--filterbtn-caret-transform: rotate(0deg);
|
|
16
|
+
--filterbtn-color: var(--bs-ink-blue);
|
|
17
|
+
--filterbtn-focus-color: transparent;
|
|
18
|
+
--filterbtn-height: 1.5rem;
|
|
19
|
+
--filterbtn-text-size: var(--bs-text-base);
|
|
20
|
+
--filterbtn-weight: 400;
|
|
14
21
|
flex-shrink: 0;
|
|
15
22
|
position: relative;
|
|
16
23
|
}
|
|
17
24
|
|
|
18
25
|
.bs-filter-button {
|
|
19
26
|
align-items: center;
|
|
20
|
-
color: var(--filterbtn-color
|
|
27
|
+
color: var(--filterbtn-color);
|
|
21
28
|
column-gap: 0.5rem;
|
|
22
29
|
cursor: pointer;
|
|
23
30
|
display: inline-flex;
|
|
24
|
-
font-size: var(--filterbtn-text-size
|
|
25
|
-
font-weight: var(--filterbtn-weight
|
|
26
|
-
height: var(--filterbtn-height
|
|
31
|
+
font-size: var(--filterbtn-text-size);
|
|
32
|
+
font-weight: var(--filterbtn-weight);
|
|
33
|
+
height: var(--filterbtn-height);
|
|
27
34
|
line-height: 1.5;
|
|
28
35
|
transition: outline-color 100ms ease-in-out;
|
|
29
36
|
width: max-content;
|
|
30
37
|
}
|
|
31
38
|
.bs-filter-button::after {
|
|
32
|
-
border: solid var(--filterbtn-focus-color
|
|
39
|
+
border: solid var(--filterbtn-focus-color) 2px;
|
|
33
40
|
border-radius: 0.25rem;
|
|
34
41
|
content: '';
|
|
35
42
|
display: block;
|
|
@@ -42,12 +49,12 @@ button:where(.bs-filter-button) {
|
|
|
42
49
|
.bs-filter-button :where(.bs-icon),
|
|
43
50
|
.bs-filter-button :where(span:has(svg:only-child)) {
|
|
44
51
|
display: block;
|
|
45
|
-
height: var(--filterbtn-caret-size
|
|
52
|
+
height: var(--filterbtn-caret-size);
|
|
46
53
|
line-height: 1;
|
|
47
|
-
transform: var(--filterbtn-caret-transform
|
|
54
|
+
transform: var(--filterbtn-caret-transform);
|
|
48
55
|
transform-origin: center;
|
|
49
56
|
transition: var(--bs-trans-rotate180);
|
|
50
|
-
width: var(--filterbtn-caret-size
|
|
57
|
+
width: var(--filterbtn-caret-size);
|
|
51
58
|
}
|
|
52
59
|
|
|
53
60
|
.bs-filter-button:where([data-size="sm"],[data-size="xs"]) {
|