@wwtdev/bsds-css 2.5.2 → 2.7.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.
@@ -1,21 +1,47 @@
1
+ /*
2
+ --btn-main: (this is doing too much.. look into backwards-compatible way to break this up)
3
+ background color (base)
4
+ focus ring color
5
+
6
+ background colors:
7
+ --btn-secondary: background color (active, hover)
8
+ --btn-light: background color (ghost hover, ghost focus)
9
+
10
+ border / box-shadow:
11
+ --btn-ghost-ink: the box shadow color for ghost buttons is synced to ink
12
+ --btn-highlight: box shadow color (w/ --btn-main) (active)
13
+
14
+ padding:
15
+ --btn-padding: padding (changes by size, and on text btns)
16
+
17
+ text color:
18
+ --btn-ink: text color
19
+ --btn-ghost-ink: text color (ghost)
20
+
21
+ */
22
+
1
23
  .bs-button {
2
- --btn-main: var(--bs-blue-400);
3
- --btn-secondary: var(--bs-blue-medium);
4
- --btn-highlight: var(--bs-blue-100);
5
- --btn-padding: .25rem .75rem;
6
24
  --btn-focus-pseudo-width: calc(100% + 0.5rem);
7
25
  --btn-ghost-ink: var(--bs-ink-blue);
26
+ --btn-highlight: var(--bs-blue-100);
8
27
  --btn-ink: var(--bs-white);
28
+ --btn-main: var(--bs-blue-400);
29
+ --btn-padding: .25rem .75rem;
30
+ --btn-secondary: var(--bs-blue-medium);
31
+ --btn-text-size: var(--bs-text-md);
32
+ --btn-weight: 600;
33
+ --btn-height: 2.5rem;
9
34
  align-items: center;
10
35
  background-color: var(--btn-main);
11
36
  border: none;
12
37
  border-radius: 0.25rem;
13
38
  color: var(--btn-ink);
39
+ column-gap: var(--bs-space-2);
14
40
  cursor: pointer;
15
41
  display: inline-flex;
16
- font-size: var(--btn-text-size, var(--bs-text-md));
17
- font-weight: var(--btn-weight, 600);
18
- height: var(--btn-height, 2.5rem);
42
+ font-size: var(--btn-text-size);
43
+ font-weight: var(--btn-weight);
44
+ height: var(--btn-height);
19
45
  justify-content: center;
20
46
  line-height: 1.5;
21
47
  outline: 2px solid transparent;
@@ -32,9 +58,9 @@
32
58
 
33
59
  .bs-button:active {
34
60
  background-color: var(--btn-secondary);
35
- transform: scale(0.97);
36
- transform-origin: center;
37
61
  box-shadow: inset 0px 0px 4px 1px var(--btn-main);
62
+ transform-origin: center;
63
+ transform: scale(0.97);
38
64
  }
39
65
 
40
66
  /* ------------ Focus Styles ------------ */
@@ -73,7 +99,7 @@
73
99
  --btn-light: var(--bs-blue-10);
74
100
  --btn-secondary: var(--bs-blue-10);
75
101
  background-color: transparent;
76
- box-shadow: inset 0 0 0 1px var(--btn-main);
102
+ box-shadow: inset 0 0 0 1px var(--btn-ghost-ink);
77
103
  }
78
104
  .bs-button:where([data-ghost]:not([data-ghost="false"]))::before {
79
105
  border-radius: 0.4375rem;
@@ -90,46 +116,73 @@
90
116
 
91
117
  /* ------------ VARIANTS ------------ */
92
118
  .bs-button:where([data-variant^='secondary']) {
119
+ --btn-ghost-ink: var(--bs-ink-plum);
120
+ --btn-highlight: var(--bs-plum-100);
121
+ --btn-light: var(--bs-plum-10);
93
122
  --btn-main: var(--bs-plum-400);
94
123
  --btn-secondary: var(--bs-plum-medium);
95
- --btn-light: var(--bs-plum-10);
96
- --btn-highlight: var(--bs-plum-100);
97
- --btn-ghost-ink: var(--bs-ink-plum);
98
124
  }
99
125
  .dark .bs-button:where([data-variant^='secondary']) {
126
+ --btn-highlight: var(--bs-plum-400);
127
+ --btn-light: var(--bs-navy-400);
100
128
  --btn-main: var(--bs-plum-200);
101
129
  --btn-secondary: var(--bs-plum-300);
102
- --btn-light: var(--bs-navy-400);
103
- --btn-highlight: var(--bs-plum-400);
104
130
  }
105
131
  .bs-button:where([data-variant^='positive']) {
132
+ --btn-ghost-ink: var(--bs-ink-purple);
133
+ --btn-highlight: var(--bs-purple-100);
134
+ --btn-light: var(--bs-purple-10);
106
135
  --btn-main: var(--bs-purple-400);
107
136
  --btn-secondary: var(--bs-purple-medium);
108
- --btn-light: var(--bs-purple-10);
109
- --btn-highlight: var(--bs-purple-100);
110
- --btn-ghost-ink: var(--bs-ink-purple);
111
137
  }
112
138
  .bs-button:where([data-variant^='warning']) {
139
+ --btn-ghost-ink: var(--bs-ink-orange);
140
+ --btn-highlight: var(--bs-orange-100);
141
+ --btn-light: var(--bs-orange-10);
113
142
  --btn-main: var(--bs-orange-warning);
114
143
  --btn-secondary: var(--bs-orange-base);
115
- --btn-light: var(--bs-orange-10);
116
- --btn-highlight: var(--bs-orange-100);
117
- --btn-ghost-ink: var(--bs-ink-orange);
118
144
  }
119
145
  .bs-button:where([data-variant^='negative']) {
146
+ --btn-ghost-ink: var(--bs-ink-red);
147
+ --btn-highlight: var(--bs-red-100);
148
+ --btn-light: var(--bs-red-10);
120
149
  --btn-main: var(--bs-red-400);
121
150
  --btn-secondary: var(--bs-red-medium);
122
- --btn-light: var(--bs-red-10);
123
- --btn-highlight: var(--bs-red-100);
124
- --btn-ghost-ink: var(--bs-ink-red);
151
+ }
152
+
153
+ /* pink variant */
154
+ .bs-button:where([data-variant^='pink']) {
155
+ --btn-ghost-ink: var(--bs-ink-pink);
156
+ --btn-highlight: var(--bs-pink-400);
157
+ --btn-light: var(--bs-pink-10);
158
+ --btn-main: var(--bs-pink-400);
159
+ --btn-secondary: var(--bs-pink-300);
160
+ }
161
+
162
+ /* royal blue variant */
163
+ .bs-button:where([data-variant^='royal']) {
164
+ --btn-ghost-ink: var(--bs-ink-royal);
165
+ --btn-highlight: var(--bs-royal-400);
166
+ --btn-light: var(--bs-royal-10);
167
+ --btn-main: var(--bs-royal-400);
168
+ --btn-secondary: var(--bs-royal-300);
169
+ }
170
+
171
+ /* white variant - for dark backgrounds + ghost btn only */
172
+ .bs-button:where([data-variant^='white'][data-ghost]:not([data-ghost="false"])) {
173
+ --btn-ghost-ink: var(--bs-ink-white);
174
+ --btn-highlight: var(--bs-ink-white);
175
+ --btn-light: var(--bs-white-10);
176
+ --btn-main: var(--bs-ink-white);
125
177
  }
126
178
 
127
179
  /* ------------ Text Button ------------ */
128
180
  .bs-button:where([data-text]:not([data-text="false"])) {
181
+ --btn-focus-pseudo-width: calc(100% + 1rem); /* text btns don't have side padding, but we do want focus outline to look padded */
129
182
  --btn-height: auto;
130
183
  --btn-ink: var(--bs-ink-blue);
131
184
  --btn-padding: 0;
132
- --btn-focus-pseudo-width: calc(100% + 1rem); /* text btns don't have side padding, but we do want focus outline to look padded */
185
+ --btn-secondary: transparent;
133
186
  --btn-text-size: var(--bs-text-md);
134
187
  --btn-weight: 400;
135
188
  background-color: transparent;
@@ -149,6 +202,11 @@
149
202
  transform: none;
150
203
  }
151
204
 
205
+ .bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"])),
206
+ .bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"])):hover {
207
+ --btn-ink: var(--bs-ink-red);
208
+ }
209
+
152
210
  /* ------------ Button Sizes, Media-based Text Sizing -------------- */
153
211
  /* Std button: Mobile text size, DT text size */
154
212
  .bs-button {
@@ -204,7 +262,7 @@
204
262
 
205
263
  .bs-button:where([data-ghost]:not([data-ghost="false"])):disabled,
206
264
  .bs-button:where([data-ghost]:not([data-ghost="false"]))[aria-disabled="true"] {
207
- box-shadow: inset 0 0 0 1px var(--bs-gray-400);
265
+ --btn-ghost-ink: var(--bs-ink-disabled);
208
266
  }
209
267
 
210
268
  .bs-button:where([data-text]:not([data-text="false"])):disabled,
@@ -1,23 +1,48 @@
1
- .bs-circle-button {
2
- --btn-main: var(--bs-blue-base);
3
- --btn-secondary: var(--bs-blue-medium);
4
- --btn-highlight: var(--bs-blue-lightest);
1
+ /*
2
+ Properties : Defaults // Description
3
+ ====================================
4
+ --btn-icon-bg-color: var(--btn-main); // icon bg color (base state)
5
+ --btn-icon-padding: .75rem; // padding around icon svg
6
+ --btn-icon-size: 1.5rem; // svg width and height
7
+ --btn-icon-stroke-color: var(--bs-white);
8
+ --btn-main: var(--bs-blue-base); // many things... should probably break this up
9
+ --btn-text-color: var(--bs-ink-base);
10
+ --btn-text-size: var(--bs-text-md);
11
+
12
+ --btn-border-color: transparent; // focus state outline color - transparent base state, --btn-main base focus state
13
+ --btn-border-color-focused: var(--btn-main); // focus state ring color set on variants
14
+ --btn-secondary: var(--bs-blue-medium); // hover state icon bg
15
+ --btn-shadow-color-active: var(--btn-main); // active state shadow color (icon bg)
16
+ --btn-text-color-hovered: var(--bs-ink-base); // hover state text color
17
+ */
18
+
19
+ :where(.bs-circle-button) {
20
+ --btn-border-color-focused: var(--btn-main);
5
21
  --btn-border-color: transparent;
6
- --btn-border-radius: 50%;
22
+ --btn-focus-inset: -0.25rem;
23
+ --btn-gap: .5rem;
7
24
  --btn-icon-bg-color: var(--btn-main);
8
25
  --btn-icon-padding: .75rem;
9
26
  --btn-icon-size: 1.5rem;
10
27
  --btn-icon-stroke-color: var(--bs-white);
28
+ --btn-main: var(--bs-blue-base);
29
+ --btn-secondary: var(--bs-blue-medium);
30
+ --btn-shadow-color-active: var(--btn-main);
31
+ --btn-text-color-hovered: var(--bs-ink-base);
11
32
  --btn-text-color: var(--bs-ink-base);
12
- --btn-text-size: var(--bs-text-md);
33
+ --btn-text-size: 1.125rem;
34
+ --btn-text-weight: 400;
35
+ }
36
+
37
+ .bs-circle-button {
13
38
  align-items: center;
14
39
  background-color: transparent;
15
- border-radius: var(--btn-border-radius);
16
40
  color: var(--btn-text-color);
17
41
  cursor: pointer;
18
42
  display: inline-flex;
19
43
  font-size: var(--btn-text-size);
20
- gap: .5rem;
44
+ font-weight: var(--btn-text-weight);
45
+ gap: var(--btn-gap);
21
46
  outline: none;
22
47
  position: relative;
23
48
  vertical-align: middle;
@@ -30,18 +55,6 @@ a.bs-circle-button {
30
55
  text-decoration: none;
31
56
  }
32
57
 
33
- .bs-circle-button :where(.bs-circle-button-icon)::before {
34
- border-color: var(--btn-border-color);
35
- border-radius: var(--btn-border-radius);
36
- border-style: solid;
37
- border-width: 0.125rem;
38
- height: calc(100% + 0.5rem);
39
- inset: -0.25rem;
40
- position: absolute;
41
- transition: border-color 125ms ease-in-out, transform 100ms ease-in-out;
42
- width: calc(100% + 0.5rem);
43
- }
44
-
45
58
  .bs-circle-button :where(.bs-circle-button-icon) {
46
59
  align-items: center;
47
60
  background-color: var(--btn-icon-bg-color);
@@ -56,6 +69,17 @@ a.bs-circle-button {
56
69
  transition: all 100ms ease-in-out;
57
70
  }
58
71
 
72
+ .bs-circle-button :where(.bs-circle-button-icon)::before {
73
+ border-color: var(--btn-border-color);
74
+ border-radius: 50%;
75
+ border-style: solid;
76
+ border-width: 0.125rem;
77
+ content: '';
78
+ inset: var(--btn-focus-inset);
79
+ position: absolute;
80
+ transition: border-color 125ms ease-in-out, transform 100ms ease-in-out;
81
+ }
82
+
59
83
  .bs-circle-button :where(.bs-circle-button-icon) :where(.bs-icon) {
60
84
  --icon-size: var(--btn-icon-size);
61
85
  }
@@ -75,27 +99,21 @@ a.bs-circle-button {
75
99
 
76
100
  /* Ghost Buttons */
77
101
  .bs-circle-button:where([data-ghost]:not([data-ghost="false"])) {
102
+ --btn-icon-bg-color: transparent;
78
103
  --btn-icon-stroke-color: var(--btn-main);
79
104
  --btn-light: var(--bs-blue-10);
80
105
  --btn-secondary: var(--bs-blue-10);
81
106
  }
82
- .bs-circle-button:where([data-ghost]:not([data-ghost="false"])) :where(.bs-circle-button-icon) {
83
- background-color: transparent;
84
- box-shadow: inset 0 0 0 1px transparent;
85
- color: var(--btn-icon-stroke-color);
86
- }
87
- .bs-circle-button:where([data-ghost]:not([data-ghost="false"])) :where(.bs-circle-button-icon)::before {
88
- border-radius: 50%;
89
- }
90
107
 
91
108
  /* Active, Hover, Focus states */
92
109
  .bs-circle-button:active, .bs-circle-button:hover {
93
110
  --btn-icon-bg-color: var(--btn-secondary);
111
+ --btn-text-color: var(--btn-text-color-hovered);
94
112
  }
95
113
  .bs-circle-button:active :where(.bs-circle-button-icon) {
96
- transform: scale(0.97);
114
+ box-shadow: inset 0px 0px 4px 1px var(--btn-shadow-color-active);
97
115
  transform-origin: center;
98
- box-shadow: inset 0px 0px 4px 1px var(--btn-main);
116
+ transform: scale(0.97);
99
117
  }
100
118
 
101
119
  .bs-circle-button:where([data-direction="right"]):hover :where(.bs-circle-button-icon),
@@ -107,22 +125,12 @@ a.bs-circle-button {
107
125
  transform: translateX(-.25rem);
108
126
  }
109
127
 
110
- .bs-circle-button:where([data-ghost]:not([data-ghost="false"])):hover :where(.bs-circle-button-icon) {
111
- background-color: var(--btn-light);
112
- }
113
-
114
- .bs-circle-button:where([data-ghost]:not([data-ghost="false"])):active {
115
- box-shadow:
116
- inset 0 0 0 1px var(--btn-main),
117
- inset 0px 0px 4px 1px var(--btn-highlight);
128
+ .bs-circle-button:where([data-ghost]:not([data-ghost="false"])):hover {
129
+ --btn-icon-bg-color: var(--btn-light);
118
130
  }
119
131
 
120
132
  .bs-circle-button:where(:focus-visible) {
121
- --btn-border-color: var(--btn-main);
122
- }
123
-
124
- .bs-circle-button:where(:focus-visible) :where(.bs-circle-button-icon)::before {
125
- content: '';
133
+ --btn-border-color: var(--btn-border-color-focused);
126
134
  }
127
135
 
128
136
  /* Disabled State */
@@ -131,26 +139,77 @@ a.bs-circle-button {
131
139
  --btn-text-color: var(--bs-ink-disabled);
132
140
  pointer-events: none;
133
141
  }
134
- .bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"])) :where(.bs-circle-button-icon) {
135
- background-color: var(--bs-bg-disabled);
142
+ .bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"])) {
143
+ --btn-icon-bg-color: var(--bs-bg-disabled);
136
144
  }
137
145
 
138
-
139
146
  /* Button Size */
140
147
  .bs-circle-button:where([data-size^='sm']) {
141
148
  --btn-icon-padding: .375rem;
142
149
  --btn-icon-size: .75rem;
143
- --btn-text-size: var(--bs-text-sm);
150
+ --btn-text-size: .875rem;
144
151
  }
145
152
 
146
153
  .bs-circle-button:where([data-size^='sm'][data-text]:not([data-text="false"])) {
147
154
  --btn-icon-padding: .3125rem;
148
155
  --btn-icon-size: .625rem;
149
- --btn-text-size: var(--bs-text-base);
156
+ --btn-text-size: 1rem;
150
157
  }
151
158
 
152
159
  .bs-circle-button:where([data-size='xs'][data-text]:not([data-text="false"])) {
153
160
  --btn-icon-padding: .25rem;
154
161
  --btn-icon-size: .5rem;
155
- --btn-text-size: var(--bs-text-sm);
162
+ --btn-text-size: .875rem;
163
+ }
164
+
165
+ /* Color Variants */
166
+ .bs-circle-button:where([data-variant^="color"]) {
167
+ --btn-focus-inset: .125rem;
168
+ --btn-gap: .5rem;
169
+ --btn-icon-bg-color: transparent;
170
+ --btn-icon-padding: 0;
171
+ --btn-icon-size: .75rem; /* stays the same for all sizes */
172
+ --btn-icon-stroke-color: var(--btn-text-color);
173
+ --btn-secondary: transparent;
174
+ --btn-shadow-color-active: transparent;
175
+ }
176
+ .bs-circle-button:where([data-variant="color-blue"]) {
177
+ --btn-border-color-focused: var(--bs-ink-blue);
178
+ --btn-text-color: var(--bs-ink-blue);
179
+ --btn-text-color-hovered: var(--bs-blue-base);
180
+ }
181
+
182
+ .bs-circle-button:where([data-variant="color-royal"]) {
183
+ --btn-border-color-focused: var(--bs-ink-royal);
184
+ --btn-text-color: var(--bs-ink-royal);
185
+ --btn-text-color-hovered: var(--bs-royal-medium);
186
+ }
187
+
188
+ .bs-circle-button:where([data-variant="color-purple"]) {
189
+ --btn-border-color-focused: var(--bs-purple-400);
190
+ --btn-text-color: var(--bs-ink-purple);
191
+ --btn-text-color-hovered: var(--bs-purple-medium);
192
+ }
193
+
194
+ .bs-circle-button:where([data-variant="color-pink"]) {
195
+ --btn-border-color-focused: var(--bs-pink-400);
196
+ --btn-text-color: var(--bs-ink-pink);
197
+ --btn-text-color-hovered: var(--bs-pink-base);
198
+ }
199
+
200
+ .bs-circle-button:where([data-variant="color-red"]) {
201
+ --btn-border-color-focused: var(--bs-ink-red);
202
+ --btn-text-color: var(--bs-ink-red);
203
+ --btn-text-color-hovered: var(--bs-red-base);
204
+ }
205
+
206
+ .bs-circle-button:where([data-variant^="color"]):where(:disabled, [aria-disabled]:not([aria-disabled="false"])) {
207
+ --btn-icon-bg-color: transparent;
208
+ --btn-text-color: var(--bs-ink-disabled);
209
+ }
210
+
211
+ /* size XXS only supported for color variants */
212
+ .bs-circle-button:where([data-variant^="color"]):where([data-size='xxs'][data-text]:not([data-text="false"])) {
213
+ --btn-text-size: .75rem;
214
+ --btn-text-weight: 600;
156
215
  }
@@ -148,3 +148,16 @@
148
148
  display: none;
149
149
  }
150
150
  }
151
+
152
+ /* Vue Transition Styles - Only used in Vue component */
153
+ .bs-dropdown:where(.bs-dropdown-enter-from),
154
+ .bs-dropdown:where(.bs-dropdown-leave-to) {
155
+ opacity: 0;
156
+ transform: var(--dropdown-transform);
157
+ }
158
+
159
+ .bs-dropdown:where(.bs-dropdown-enter-to),
160
+ .bs-dropdown:where(.bs-dropdown-leave-from) {
161
+ opacity: 1;
162
+ transform: translate(0, 0);
163
+ }
@@ -10,25 +10,32 @@ custom properties:
10
10
  */
11
11
 
12
12
  button:where(.bs-filter-button) {
13
+ --filterbtn-caret-size: 1rem;
14
+ --filterbtn-caret-transform: rotate(0deg);
15
+ --filterbtn-color: var(--bs-ink-blue);
16
+ --filterbtn-focus-color: transparent;
17
+ --filterbtn-height: 1.5rem;
18
+ --filterbtn-text-size: var(--bs-text-base);
19
+ --filterbtn-weight: 400;
13
20
  flex-shrink: 0;
14
21
  position: relative;
15
22
  }
16
23
 
17
24
  .bs-filter-button {
18
25
  align-items: center;
19
- color: var(--filterbtn-color, var(--bs-ink-blue));
26
+ color: var(--filterbtn-color);
20
27
  column-gap: 0.5rem;
21
28
  cursor: pointer;
22
29
  display: inline-flex;
23
- font-size: var(--filterbtn-text-size, var(--bs-text-base));
24
- font-weight: var(--filterbtn-weight, 400);
25
- height: var(--filterbtn-height, 1.5rem);
30
+ font-size: var(--filterbtn-text-size);
31
+ font-weight: var(--filterbtn-weight);
32
+ height: var(--filterbtn-height);
26
33
  line-height: 1.5;
27
34
  transition: outline-color 100ms ease-in-out;
28
35
  width: max-content;
29
36
  }
30
37
  .bs-filter-button::after {
31
- border: solid var(--filterbtn-focus-color, transparent) 2px;
38
+ border: solid var(--filterbtn-focus-color) 2px;
32
39
  border-radius: 0.25rem;
33
40
  content: '';
34
41
  display: block;
@@ -41,12 +48,12 @@ button:where(.bs-filter-button) {
41
48
  .bs-filter-button :where(.bs-icon),
42
49
  .bs-filter-button :where(span:has(svg:only-child)) {
43
50
  display: block;
44
- height: var(--filterbtn-caret-size, 1rem);
51
+ height: var(--filterbtn-caret-size);
45
52
  line-height: 1;
46
- transform: var(--filterbtn-caret-transform, rotate(0deg));
53
+ transform: var(--filterbtn-caret-transform);
47
54
  transform-origin: center;
48
55
  transition: var(--bs-trans-rotate180);
49
- width: var(--filterbtn-caret-size, 1rem);
56
+ width: var(--filterbtn-caret-size);
50
57
  }
51
58
 
52
59
  .bs-filter-button:where([data-size="sm"],[data-size="xs"]) {
@@ -0,0 +1,67 @@
1
+ .bs-flyout {
2
+ background-color: var(--bs-bg-base-to-light);
3
+ box-shadow: var(--bs-shadow-drawerRight);
4
+ height: 100%;
5
+ left: 0;
6
+ margin: 0;
7
+ max-width: 100vw;
8
+ opacity: 0;
9
+ padding: 1.5rem;
10
+ position: fixed;
11
+ top: 0;
12
+ transform: translateX(-100%);
13
+ transition-duration: 300ms;
14
+ transition-property: opacity, transform;
15
+ transition-timing-function: ease;
16
+ width: 360px;
17
+ z-index: 1000;
18
+ }
19
+
20
+ .bs-flyout:where([data-absolute="true"]) {
21
+ position: absolute;
22
+ }
23
+
24
+ .bs-flyout:where([data-position="right"]) {
25
+ box-shadow: var(--bs-shadow-drawerLeft);
26
+ left: auto;
27
+ right: 0;
28
+ transform: translateX(100%);
29
+ }
30
+
31
+ .bs-flyout:where([data-size="lg"]) {
32
+ width: 535px;
33
+ }
34
+
35
+ .bs-flyout:where([data-shown="true"]) {
36
+ opacity: 1;
37
+ transform: translateX(0);
38
+ }
39
+
40
+ .bs-flyout :where(.bs-flyout-close-container) {
41
+ display: flex;
42
+ justify-content: flex-end;
43
+ }
44
+
45
+ .bs-flyout :where(.bs-flyout-close-container button) {
46
+ cursor: pointer;
47
+ outline-offset: 2px;
48
+ padding: 2px;
49
+ }
50
+
51
+ /* Vue Transition Styles - Only used in Vue component */
52
+ .bs-flyout:where(.bs-flyout-enter-from),
53
+ .bs-flyout:where(.bs-flyout-leave-to) {
54
+ opacity: 0;
55
+ transform: translateX(-100%);
56
+ }
57
+
58
+ .bs-flyout:where([data-position="right"].bs-flyout-enter-from),
59
+ .bs-flyout:where([data-position="right"].bs-flyout-leave-to) {
60
+ transform: translateX(100%);
61
+ }
62
+
63
+ .bs-flyout:where(.bs-flyout-enter-to),
64
+ .bs-flyout:where(.bs-flyout-leave-from) {
65
+ opacity: 1;
66
+ transform: translateX(0);
67
+ }
@@ -172,7 +172,9 @@ and issues with box-sizing
172
172
  }
173
173
 
174
174
  /* -------- Hover styles -------- */
175
- .bs-input-addon:hover {
175
+ .bs-input-addon:hover,
176
+ :where(label):hover + .bs-input-addon,
177
+ :where(label):hover + * .bs-input-addon:where(:not(label .bs-input-addon, label + .bs-input-addon)) {
176
178
  --input-bg: var(--bs-bg-input-hover);
177
179
  }
178
180
 
@@ -1,6 +1,7 @@
1
1
  :where(label, legend),
2
2
  label:where(.bs-label) {
3
3
  display: inline-block;
4
+ position: relative;
4
5
  width: 100%;
5
6
  }
6
7
 
@@ -27,3 +28,9 @@ label:where(.bs-label) {
27
28
  --label-asterisk-color: transparent;
28
29
  --label-color: var(--bs-ink-disabled);
29
30
  }
31
+
32
+ .bs-label:where(:has(+ input), :has(+ .bs-input-addon), :has(+ :not(label) .bs-input-addon))::after {
33
+ content: '';
34
+ inset: 0 0 -.25rem 0;
35
+ position: absolute;
36
+ }
@@ -54,3 +54,14 @@
54
54
  width: 35rem;
55
55
  }
56
56
  }
57
+
58
+ /* Vue Transition Styles - Only used in Vue component */
59
+ .bs-modal:where(.bs-modal-enter-from),
60
+ .bs-modal:where(.bs-modal-leave-to) {
61
+ opacity: 0;
62
+ }
63
+
64
+ .bs-modal:where(.bs-modal-enter-to),
65
+ .bs-modal:where(.bs-modal-leave-from) {
66
+ opacity: 1;
67
+ }
@@ -17,3 +17,14 @@
17
17
  .bs-overlay:where([data-shown]:not([data-shown="false"])) {
18
18
  opacity: 1;
19
19
  }
20
+
21
+ /* Vue Transition Styles - Only used in Vue component */
22
+ .bs-overlay:where(.bs-overlay-enter-from),
23
+ .bs-overlay:where(.bs-overlay-leave-to) {
24
+ opacity: 0;
25
+ }
26
+
27
+ .bs-overlay:where(.bs-overlay-enter-to),
28
+ .bs-overlay:where(.bs-overlay-leave-from) {
29
+ opacity: 1;
30
+ }
@@ -1,5 +1,7 @@
1
1
  /* Base Toast Styles */
2
2
  .bs-toast {
3
+ --toast-transform: translate(0, calc(100% + 1.5rem));
4
+
3
5
  background-color: var(--bs-bg-base-elevated);
4
6
  border-top: 4px solid var(--bs-blue-base);
5
7
  bottom: 1.5rem;
@@ -10,7 +12,7 @@
10
12
  opacity: 0;
11
13
  position: fixed;
12
14
  right: 0;
13
- transform: translate(0, calc(100% + 1.5rem));
15
+ transform: var(--toast-transform);
14
16
  transition-duration: 200ms;
15
17
  transition-property: transform, opacity;
16
18
  transition-timing-function: ease;
@@ -110,12 +112,13 @@
110
112
 
111
113
  @media (min-width: 440px) {
112
114
  .bs-toast {
115
+ --toast-transform: translate(calc(100% + 1.5rem), 0);
116
+
113
117
  left: auto;
114
118
  margin-left: 0;
115
119
  margin-right: 0;
116
120
  opacity: 0;
117
121
  right: 1.5rem;
118
- transform: translate(calc(100% + 1.5rem), 0);
119
122
  }
120
123
 
121
124
  .bs-toast:where([data-shown]:not([data-shown="false"])) {
@@ -127,3 +130,16 @@
127
130
  flex-direction: row;
128
131
  }
129
132
  }
133
+
134
+ /* Vue Transition Styles - Only used in Vue component */
135
+ .bs-toast:where(.bs-toast-enter-from),
136
+ .bs-toast:where(.bs-toast-leave-to) {
137
+ opacity: 0;
138
+ transform: var(--toast-transform);
139
+ }
140
+
141
+ .bs-toast:where(.bs-toast-enter-to),
142
+ .bs-toast:where(.bs-toast-leave-from) {
143
+ opacity: 1;
144
+ transform: translate(0, 0);
145
+ }
@@ -16,6 +16,7 @@ module.exports = {
16
16
  inherit: 'inherit',
17
17
  current: 'currentColor',
18
18
  white: "#FFFFFF",
19
+ "white-10": "rgba(255, 255, 255, 0.1)",
19
20
  black: "#0A0B19",
20
21
  blue: {
21
22
  10: "rgba(0, 134, 234, 0.1)",
@@ -41,6 +42,7 @@ module.exports = {
41
42
  400: "#1C0087"
42
43
  },
43
44
  royal: {
45
+ 10: "rgba(22, 47, 180, 0.1)",
44
46
  100: "#C5CCEB",
45
47
  200: "#7585D1",
46
48
  300: "#5365C4",
@@ -69,6 +71,7 @@ module.exports = {
69
71
  500: "#C33D04"
70
72
  },
71
73
  pink: {
74
+ 10: "rgba(227, 28, 121, 0.1)",
72
75
  100: "#F6CBE0",
73
76
  200: "#EB7EAF",
74
77
  300: "#E45E9B",