@wwtdev/bsds-css 2.1.2 → 2.1.4

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.
@@ -13,7 +13,7 @@
13
13
  cursor: pointer;
14
14
  display: inline-flex;
15
15
  font-size: var(--btn-text-size, var(--bs-text-md));
16
- font-weight: 600;
16
+ font-weight: var(--btn-weight, 600);
17
17
  height: var(--btn-height, 2.5rem);
18
18
  justify-content: center;
19
19
  line-height: 1.5;
@@ -125,10 +125,10 @@
125
125
  --btn-padding: 0;
126
126
  --btn-focus-pseudo-width: calc(100% + 1rem); /* text btns don't have side padding, but we do want focus outline to look padded */
127
127
  --btn-text-size: var(--bs-text-md);
128
+ --btn-weight: 400;
128
129
  background-color: transparent;
129
130
  color: var(--bs-blue-500);
130
131
  cursor: pointer;
131
- font-weight: 400;
132
132
  line-height: 150%;
133
133
  }
134
134
  .bs-button:where([data-text]:not([data-text="false"])):hover {
@@ -141,29 +141,49 @@
141
141
  }
142
142
  .bs-button:where([data-text]:not([data-text="false"])):active {
143
143
  box-shadow: none;
144
+ transform: none;
145
+ }
146
+
147
+ /* ------------ Button Sizes, Media-based Text Sizing -------------- */
148
+ /* Std button: Mobile text size, WM text size */
149
+ .bs-button {
150
+ --btn-text-size: 1rem;
151
+ }
152
+
153
+ @media (min-width: 752px) {
154
+ .bs-button {
155
+ --btn-text-size: 1.125rem;
156
+ }
144
157
  }
145
158
 
146
- /* ------------ Button Size -------------- */
147
159
  .bs-button:where([data-size^='sm']) {
148
160
  --btn-height: 1.75rem;
149
161
  --btn-padding: .25rem .75rem .375rem;
162
+ /* Std button size="sm" text size is same across all media sizes */
150
163
  --btn-text-size: var(--bs-text-sm);
151
164
  }
152
165
 
153
- .bs-button:where([data-size][data-text]:not([data-text="false"])) {
166
+ /* Text buttons: For now, text size not dependent on media size */
167
+ .bs-button:where([data-text]:not([data-text="false"])) {
154
168
  --btn-height: auto;
155
169
  --btn-padding: 0;
170
+ --btn-text-size: var(--bs-text-md);
156
171
  }
157
172
 
158
173
  .bs-button:where([data-size^='sm'][data-text]:not([data-text="false"])) {
159
174
  --btn-text-size: var(--bs-text-base);
160
175
  }
161
176
 
162
- /* Size XS only applies to text buttons */
177
+ /* Size XS & XXS only applies to text buttons */
163
178
  .bs-button:where([data-size^='xs'][data-text]:not([data-text="false"])) {
164
179
  --btn-text-size: var(--bs-text-sm);
165
180
  }
166
181
 
182
+ .bs-button:where([data-size^='xxs'][data-text]:not([data-text="false"])) {
183
+ --btn-text-size: var(--bs-text-xs);
184
+ --btn-weight: 600;
185
+ }
186
+
167
187
 
168
188
  /* ------------ Disabled Styling ------------ */
169
189
  :where(button:disabled),
@@ -31,12 +31,11 @@ a.bs-circle-button {
31
31
  text-decoration: none;
32
32
  }
33
33
 
34
- .bs-circle-button::before {
34
+ .bs-circle-button :where(.bs-circle-button-icon)::before {
35
35
  border-color: var(--btn-border-color);
36
36
  border-radius: var(--btn-border-radius);
37
37
  border-style: solid;
38
38
  border-width: 0.125rem;
39
- content: '';
40
39
  height: calc(100% + 0.5rem);
41
40
  inset: -0.25rem;
42
41
  position: absolute;
@@ -62,17 +61,17 @@ a.bs-circle-button {
62
61
  --icon-size: var(--btn-icon-size);
63
62
  }
64
63
 
65
-
66
- /* Button Size */
67
- .bs-circle-button:where([data-size^='sm']) {
68
- --btn-icon-padding: .375rem;
69
- --btn-icon-size: .75rem;
70
- --btn-text-size: var(--bs-text-sm);
64
+ /* non-bs-icon svgs */
65
+ .bs-circle-button :where(.bs-circle-button-icon) > :where(svg) {
66
+ height: var(--btn-icon-size);
67
+ width: var(--btn-icon-size);
71
68
  }
72
69
 
73
70
  /* Icon Buttons with Text */
74
71
  .bs-circle-button:where([data-text]:not([data-text="false"])) {
75
- --btn-border-radius: 0.5rem;
72
+ --btn-text-size: var(--bs-text-md);
73
+ --btn-icon-size: 0.75rem;
74
+ --btn-icon-padding: 0.375rem;
76
75
  }
77
76
 
78
77
  /* Ghost Buttons */
@@ -119,10 +118,14 @@ a.bs-circle-button {
119
118
  inset 0px 0px 4px 1px var(--btn-highlight);
120
119
  }
121
120
 
122
- .bs-circle-button:focus-visible {
121
+ .bs-circle-button:where(:focus-visible) {
123
122
  --btn-border-color: var(--btn-main);
124
123
  }
125
124
 
125
+ .bs-circle-button:where(:focus-visible) :where(.bs-circle-button-icon)::before {
126
+ content: '';
127
+ }
128
+
126
129
  /* Disabled State */
127
130
  .bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"])) /* for links as buttons */ {
128
131
  --btn-icon-stroke-color: var(--bs-ink-disabled);
@@ -133,5 +136,25 @@ a.bs-circle-button {
133
136
  background-color: var(--bs-bg-disabled);
134
137
  }
135
138
 
139
+
140
+ /* Button Size */
141
+ .bs-circle-button:where([data-size^='sm']) {
142
+ --btn-icon-padding: .375rem;
143
+ --btn-icon-size: .75rem;
144
+ --btn-text-size: var(--bs-text-sm);
145
+ }
146
+
147
+ .bs-circle-button:where([data-size^='sm'][data-text]:not([data-text="false"])) {
148
+ --btn-icon-padding: .3125rem;
149
+ --btn-icon-size: .625rem;
150
+ --btn-text-size: var(--bs-text-base);
151
+ }
152
+
153
+ .bs-circle-button:where([data-size='xs'][data-text]:not([data-text="false"])) {
154
+ --btn-icon-padding: .25rem;
155
+ --btn-icon-size: .5rem;
156
+ --btn-text-size: var(--bs-text-sm);
157
+ }
158
+
136
159
  }
137
160
 
@@ -1,16 +1,14 @@
1
1
  @mixin dropdown-options() {
2
2
  /* Option list */
3
3
  .bs-dropdown-options {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: 0.5rem;
4
7
  list-style: none;
5
- margin-bottom: 0.25rem;
6
- margin-top: 0.25rem;
8
+ margin-block: 0.25rem;
7
9
  max-height: var(--options-height-max, 20rem);/* constrain scrollable to options section */
8
10
  overflow-y: auto;
9
- padding: 0;
10
- }
11
-
12
- .bs-dropdown-options :where(li:first-child) {
13
- margin-top: 0.5rem;
11
+ padding-block: 0.5rem;
14
12
  }
15
13
 
16
14
  /* Option list item */
@@ -25,11 +23,8 @@
25
23
  column-gap: 0.5rem;
26
24
  cursor: pointer;
27
25
  display: grid;
28
- margin-bottom: 0.5rem;
29
- padding-bottom: 0.25rem;
30
- padding-left: 1.25rem;
31
- padding-right: 1.375rem;
32
- padding-top: 0.25rem;
26
+ padding-block: 0.25rem;
27
+ padding-inline: 1.25rem;
33
28
  row-gap: 0.125rem;
34
29
  word-break: break-word;
35
30
  word-wrap: break-word;
@@ -41,7 +36,7 @@
41
36
  }
42
37
 
43
38
  /* Variant: description */
44
- .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"] :nth-child(2)) {
39
+ .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"] > :nth-child(2)) {
45
40
  color: var(--bs-ink-light);
46
41
  font-size: var(--bs-text-xs);
47
42
  min-height: 1.125rem;
@@ -49,7 +44,7 @@
49
44
  }
50
45
 
51
46
  /* Variant: 2-col description */
52
- .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"] :nth-child(3)) {
47
+ .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"] > :nth-child(3)) {
53
48
  color: var(--bs-ink-light);
54
49
  font-size: var(--bs-text-xs);
55
50
  grid-column-start: 2;
@@ -58,7 +53,7 @@
58
53
  }
59
54
 
60
55
  /* Hover or data-selected */
61
- .bs-dropdown-options :where(li:hover),
56
+ .bs-dropdown-options :where(li:not([role="separator"]):hover),
62
57
  .bs-dropdown-options :where(li[data-selected]) {
63
58
  background-color: var(--bs-bg-medium);
64
59
  border-left: 4px solid var(--bs-blue-base);
@@ -77,18 +72,18 @@
77
72
  }
78
73
 
79
74
  /* Hover or data-selected for 2-col/description variants */
80
- .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"]:hover :nth-child(2)),
81
- .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
82
- .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
83
- .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
75
+ .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"]:hover > :nth-child(2)),
76
+ .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"]:hover > :nth-child(3)),
77
+ .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"][data-selected] > :nth-child(2)),
78
+ .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"][data-selected] > :nth-child(3)) {
84
79
  color: var(--bs-blue-base);
85
80
  }
86
81
 
87
82
  /* Hover or data-selected for negative + 2-col/description variants */
88
- .bs-dropdown-options :where(li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"]:hover :nth-child(2)),
89
- .bs-dropdown-options :where(li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
90
- .bs-dropdown-options :where(li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
91
- .bs-dropdown-options :where(li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
83
+ .bs-dropdown-options :where(li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"]:hover > :nth-child(2)),
84
+ .bs-dropdown-options :where(li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"]:hover > :nth-child(3)),
85
+ .bs-dropdown-options :where(li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"][data-selected] > :nth-child(2)),
86
+ .bs-dropdown-options :where(li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"][data-selected] > :nth-child(3)) {
92
87
  color: var(--bs-red-500);
93
88
  }
94
89
 
@@ -121,11 +116,37 @@
121
116
  --focus-border-color: var(--bs-red-200);
122
117
  }
123
118
 
119
+ /* Multi-select divider */
120
+ .bs-dropdown-options :where(li[role="separator"]) {
121
+ cursor: default;
122
+ padding-block: 0.125rem;
123
+ padding-right: 1.375rem;
124
+ }
125
+
126
+ .bs-dropdown-options :where(hr) {
127
+ background-color: var(--bs-navy-light);
128
+ height: .0625rem;
129
+ margin-block: 0;
130
+ margin-inline: 0;
131
+ }
132
+
124
133
  @media (min-width: 752px) {
125
134
  .bs-dropdown-options :where(li) {
126
135
  padding-left: 0.5rem;
127
136
  padding-right: 0.75rem;
128
137
  }
138
+
139
+ .bs-dropdown-options :where(li[role="separator"]) {
140
+ padding-right: 0.625rem;
141
+ }
142
+
143
+ .bs-dropdown-options :where(li:focus-visible) {
144
+ padding-left: 0.625rem;
145
+ }
146
+
147
+ .bs-dropdown-options :where(li[data-selected]:focus-visible) {
148
+ padding-left: 0.5rem;
149
+ }
129
150
  }
130
151
 
131
152
  }
@@ -18,6 +18,10 @@
18
18
  position: relative;
19
19
  }
20
20
 
21
+ .bs-input-addon * {
22
+ background-color: transparent;
23
+ }
24
+
21
25
  /**
22
26
  Implement an outer 'border' via pseudo-element instead of
23
27
  on main element to avoid content shifting, double-stroke effect,
@@ -62,7 +66,6 @@ and issues with box-sizing
62
66
  }
63
67
 
64
68
  .bs-input-addon > *:where(:not(.bs-input-addon)) {
65
- background-color: var(--input-bg, var(--bs-bg-base));
66
69
  border-width: 0px;
67
70
  display: flex;
68
71
  height: 100%;
@@ -99,7 +102,7 @@ and issues with box-sizing
99
102
  /** Inner borders should be straight; shown only if variant: "inner-bordered" */
100
103
  .bs-input-addon:where([data-variant="inner-bordered"]),
101
104
  .bs-input-addon:where([data-variant="inner-bordered"]) :where(.bs-input-addon) {
102
- --input-addon-nested-border: var(--bs-violet-100);
105
+ --input-addon-nested-border: var(--bs-violet-lightest);
103
106
  }
104
107
 
105
108
  .bs-input-addon > :where(.bs-input-addon:not(:last-child, :focus-within)),
@@ -133,6 +136,10 @@ and issues with box-sizing
133
136
  border-radius: 0px;
134
137
  }
135
138
 
139
+ /* -------- Hover styles -------- */
140
+ .bs-input-addon:hover {
141
+ --input-bg: var(--bs-bg-input-hover);
142
+ }
136
143
 
137
144
  /* -------- Focus styles -------- */
138
145
  .bs-input-addon {
@@ -190,9 +197,9 @@ and issues with box-sizing
190
197
  /* -------- Disabled styles -------- */
191
198
  .bs-input-addon:where([data-disabled]:not([data-disabled="false"])),
192
199
  .bs-input-addon:where([data-disabled]:not([data-disabled="false"])) .bs-button {
193
- --input-bg: var(--bs-gray-200);
194
- --input-border: var(--bs-gray-400);
195
- color: var(--bs-gray-400);
200
+ --input-bg: var(--bs-bg-disabled);
201
+ --input-border: var(--bs-ink-disabled);
202
+ color: var(--bs-ink-disabled);
196
203
  }
197
204
  .bs-input-addon:where([data-disabled]:not([data-disabled="false"])) * {
198
205
  pointer-events: none;
@@ -53,6 +53,11 @@
53
53
  --search-icon-padding: 0;
54
54
  }
55
55
 
56
+ /* Filter variant: cancels out base hover state styles */
57
+ .bs-input-addon:where([data-variant="filter"]):hover {
58
+ --input-bg: var(--bs-bg-base);
59
+ }
60
+
56
61
  /* -------- Disabled styles -------- */
57
62
  .bs-input-addon:where([data-variant="filter"][data-disabled="true"]),
58
63
  .bs-input-addon:where([data-variant="filter"][data-disabled="true"]) :is(.bs-button, .bs-input) {
@@ -8,22 +8,24 @@ label:where(.bs-label) {
8
8
  .bs-label,
9
9
  :where(label, legend) {
10
10
  --label-color: var(--bs-ink-base);
11
-
12
11
  color: var(--label-color);
13
12
  font-size: var(--bs-text-sm);
14
13
  font-weight: 600;
15
14
  line-height: var(--bs-leading-base);
16
15
  }
17
16
 
18
- :where([data-required]:not([data-required="false"])),
17
+ /* Required asterisk */
18
+ :where(label, legend) :where([data-required]:not([data-required="false"])),
19
19
  .bs-label :where([data-required="true"]) {
20
- --label-color: var(--bs-ink-red);
20
+ color: var(--label-asterisk-color, var(--bs-ink-red));
21
21
  }
22
22
 
23
+ /* Disabled state */
23
24
  :where(label[data-disabled]:not([data-disabled="false"])),
24
25
  :where(label[data-disabled]:not([data-disabled="false"])) *,
25
26
  .bs-label:where([data-disabled="true"]),
26
27
  .bs-label:where([data-disabled="true"]) * {
28
+ --label-asterisk-color: transparent;
27
29
  --label-color: var(--bs-ink-disabled);
28
30
  }
29
31
 
@@ -55,13 +55,13 @@
55
55
  width: var(--switch-width);
56
56
  }
57
57
 
58
- .bs-switch input:where(:checked) ~ span,
59
- .bs-switch:where([aria-pressed]):where(:not([aria-pressed="false"])) span {
58
+ .bs-switch :where(input:checked) ~ :where(span),
59
+ .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where(span) {
60
60
  --switch-background: var(--bs-blue-base);
61
61
  }
62
62
 
63
63
  /* Toggle "ball" */
64
- .bs-switch span::before {
64
+ .bs-switch :where(span)::before {
65
65
  background-color: var(--ball-background);
66
66
  border-radius: 50%;
67
67
  box-sizing: border-box;
@@ -76,34 +76,25 @@
76
76
  z-index: 2;
77
77
  }
78
78
 
79
- .bs-switch input:where(:checked) ~ span::before,
80
- .bs-switch:where([aria-pressed]):where(:not([aria-pressed="false"])) span::before {
79
+ .bs-switch :where(input:checked) ~ :where(span)::before,
80
+ .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where(span)::before {
81
81
  transform: translate(calc(var(--switch-width) - var(--offset-double) - var(--ball-diameter)), -50%);
82
82
  }
83
83
 
84
- .bs-switch input:where(:checked) ~ span:where([data-inner-on-label][data-inner-off-label])::before,
85
- .bs-switch:where([aria-pressed]):where(:not([aria-pressed="false"])) span:where([data-inner-on-label][data-inner-off-label])::before {
84
+ .bs-switch :where(input:checked) ~ :where(span[data-inner-on-label][data-inner-off-label])::before,
85
+ .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where(span[data-inner-on-label][data-inner-off-label])::before {
86
86
  transform: translate(calc(var(--switch-width) - var(--offset-double) - var(--ball-diameter)), -50%);
87
87
  }
88
88
 
89
89
 
90
90
  /* Inner "on/off" text */
91
-
92
- .bs-switch span:where([data-inner-on-label][data-inner-off-label]) {
93
- color: white;
94
- --switch-width: 3.5rem;
95
- }
96
-
97
- .bs-switch:where([data-size="sm"]) span:where([data-inner-on-label][data-inner-off-label]) {
98
- --switch-width: 2.625rem;
99
- }
100
-
101
- .bs-switch span::after {
91
+ .bs-switch :where(span)::after {
102
92
  align-items: center;
103
93
  color: var(--ball-background);
94
+ content: var(--inner-label-text);
104
95
  display: flex;
105
96
  height: 100%;
106
- justify-content: flex-start;
97
+ justify-content: var(--inner-label-position, flex-start);
107
98
  left: 0;
108
99
  line-height: var(--inner-text-line-height);
109
100
  padding: var(--inner-text-padding);
@@ -113,35 +104,45 @@
113
104
  width: 100%;
114
105
  }
115
106
 
116
- .bs-switch input:where(:not(:checked)) ~ span:where([data-inner-on-label][data-inner-off-label])::after,
117
- .bs-switch:where([aria-pressed="false"]) span:where([data-inner-on-label][data-inner-off-label])::after {
118
- content: attr(data-inner-off-label);
119
- justify-content: flex-end;
107
+ .bs-switch :where([data-inner-on-label][data-inner-off-label]) {
108
+ --switch-width: 3.5rem;
109
+ }
110
+
111
+ .bs-switch:where([data-size="sm"]) :where([data-inner-on-label][data-inner-off-label]) {
112
+ --switch-width: 2.625rem;
120
113
  }
121
114
 
122
- .bs-switch input:where(:checked) ~ span:where([data-inner-on-label][data-inner-off-label])::after,
123
- .bs-switch:where([aria-pressed]):where(:not([aria-pressed="false"])) span:where([data-inner-on-label][data-inner-off-label])::after {
124
- content: attr(data-inner-on-label);
125
- justify-content: flex-start;
115
+ .bs-switch :where(input:not(:checked)) ~ :where([data-inner-on-label][data-inner-off-label])::after,
116
+ .bs-switch:where([aria-pressed="false"]) :where([data-inner-on-label][data-inner-off-label])::after {
117
+ --inner-label-position: flex-end;
118
+ --inner-label-text: attr(data-inner-off-label);
119
+ }
120
+
121
+ .bs-switch :where(input:checked) ~ :where([data-inner-on-label][data-inner-off-label])::after,
122
+ .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where([data-inner-on-label][data-inner-off-label])::after {
123
+ --inner-label-text: attr(data-inner-on-label);
126
124
  }
127
125
 
128
126
  /* Focus state */
129
127
 
130
- .bs-switch :where(input:focus-visible) + span {
128
+ .bs-switch :where(input:focus-visible) + :where(span),
129
+ .bs-switch:where(:focus-visible) :where(button span) {
131
130
  box-shadow: 0 0 0 2px var(--offset-color, var(--bs-bg-base)),
132
131
  0 0 0 4px var(--outline-color, var(--bs-blue-base));
133
132
  outline: 2px solid transparent;
134
133
  }
135
- :where(.box) .bs-switch :where(input:focus-visible) + span {
134
+ :where(.box) .bs-switch :where(input:focus-visible) + :where(span),
135
+ :where(.box) .bs-switch:where(:focus-visible) :where(button span) {
136
136
  --offset-color: var(--bs-bg-medium);
137
137
  }
138
- :where(.box[data-invert]) .bs-switch :where(input:focus-visible) + span {
138
+ :where(.box[data-invert]) .bs-switch :where(input:focus-visible) + :where(span),
139
+ :where(.box[data-invert]) .bs-switch:where(:focus-visible) :where(button span) {
139
140
  --offset-color: var(--bs-bg-invert-base);
140
141
  }
141
142
 
142
143
  /* Disabled state */
143
-
144
- .bs-switch:where([data-disabled]:not([data-disabled="false"])) {
144
+ .bs-switch:where([data-disabled]:not([data-disabled="false"]), :disabled, [disabled]),
145
+ .bs-switch:where([data-disabled]:not([data-disabled="false"]), :disabled, [disabled]) :is(input ~ span, button span) {
145
146
  --ball-background: var(--bs-ink-disabled);
146
147
  --switch-background: var(--bs-bg-disabled);
147
148
  }
@@ -66,6 +66,8 @@ textarea {
66
66
  opacity: 0;
67
67
  }
68
68
 
69
+ /* FOCUS state */
70
+
69
71
  :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible),
70
72
  :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible) {
71
73
  --input-border: var(--bs-blue-base);
@@ -73,6 +75,15 @@ textarea {
73
75
  outline-width: 0px;
74
76
  }
75
77
 
78
+ /* HOVER state */
79
+
80
+ :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:hover),
81
+ :is(.bs-input, .bs-select, .bs-textarea):where(:hover) {
82
+ --input-bg: var(--bs-bg-input-hover);
83
+ }
84
+
85
+ /* DISABLED state */
86
+
76
87
  :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled),
77
88
  :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
78
89
  --input-border: var(--bs-ink-disabled);
@@ -105,8 +116,7 @@ see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
105
116
  :is(input, textarea, select)[disabled]::placeholder,
106
117
  :is(.bs-input, .bs-textarea, .bs-select):disabled::placeholder,
107
118
  :is(.bs-input, .bs-textarea, .bs-select)[disabled]::placeholder {
108
- color: var(--bs-ink-disabled);
109
- opacity: 1;
119
+ opacity: 0;
110
120
  }
111
121
 
112
122
  /* Select */
@@ -22,7 +22,18 @@
22
22
  opacity: 1;
23
23
  }
24
24
 
25
- .bs-modal :where(.close-button-container) {
25
+ .bs-modal :where(.modal-header) {
26
+ align-items: center;
27
+ display: flex;
28
+ justify-content: space-between;
29
+ margin-bottom: 1.5rem;
30
+ }
31
+
32
+ .bs-modal :where(.modal-title) {
33
+ flex-grow: 1;
34
+ }
35
+
36
+ .bs-modal :where(.only-close-button-modal-header) {
26
37
  display: flex;
27
38
  justify-content: flex-end;
28
39
  margin-bottom: 1.5rem;
@@ -12,7 +12,7 @@
12
12
  cursor: pointer;
13
13
  display: inline-flex;
14
14
  font-size: var(--btn-text-size, var(--bs-text-md));
15
- font-weight: 600;
15
+ font-weight: var(--btn-weight, 600);
16
16
  height: var(--btn-height, 2.5rem);
17
17
  justify-content: center;
18
18
  line-height: 1.5;
@@ -124,10 +124,10 @@
124
124
  --btn-padding: 0;
125
125
  --btn-focus-pseudo-width: calc(100% + 1rem); /* text btns don't have side padding, but we do want focus outline to look padded */
126
126
  --btn-text-size: var(--bs-text-md);
127
+ --btn-weight: 400;
127
128
  background-color: transparent;
128
129
  color: var(--bs-blue-500);
129
130
  cursor: pointer;
130
- font-weight: 400;
131
131
  line-height: 150%;
132
132
  }
133
133
  .bs-button:where([data-text]:not([data-text="false"])):hover {
@@ -140,29 +140,49 @@
140
140
  }
141
141
  .bs-button:where([data-text]:not([data-text="false"])):active {
142
142
  box-shadow: none;
143
+ transform: none;
144
+ }
145
+
146
+ /* ------------ Button Sizes, Media-based Text Sizing -------------- */
147
+ /* Std button: Mobile text size, WM text size */
148
+ .bs-button {
149
+ --btn-text-size: 1rem;
150
+ }
151
+
152
+ @media (min-width: 752px) {
153
+ .bs-button {
154
+ --btn-text-size: 1.125rem;
155
+ }
143
156
  }
144
157
 
145
- /* ------------ Button Size -------------- */
146
158
  .bs-button:where([data-size^='sm']) {
147
159
  --btn-height: 1.75rem;
148
160
  --btn-padding: .25rem .75rem .375rem;
161
+ /* Std button size="sm" text size is same across all media sizes */
149
162
  --btn-text-size: var(--bs-text-sm);
150
163
  }
151
164
 
152
- .bs-button:where([data-size][data-text]:not([data-text="false"])) {
165
+ /* Text buttons: For now, text size not dependent on media size */
166
+ .bs-button:where([data-text]:not([data-text="false"])) {
153
167
  --btn-height: auto;
154
168
  --btn-padding: 0;
169
+ --btn-text-size: var(--bs-text-md);
155
170
  }
156
171
 
157
172
  .bs-button:where([data-size^='sm'][data-text]:not([data-text="false"])) {
158
173
  --btn-text-size: var(--bs-text-base);
159
174
  }
160
175
 
161
- /* Size XS only applies to text buttons */
176
+ /* Size XS & XXS only applies to text buttons */
162
177
  .bs-button:where([data-size^='xs'][data-text]:not([data-text="false"])) {
163
178
  --btn-text-size: var(--bs-text-sm);
164
179
  }
165
180
 
181
+ .bs-button:where([data-size^='xxs'][data-text]:not([data-text="false"])) {
182
+ --btn-text-size: var(--bs-text-xs);
183
+ --btn-weight: 600;
184
+ }
185
+
166
186
 
167
187
  /* ------------ Disabled Styling ------------ */
168
188
  :where(button:disabled),