@wwtdev/bsds-css 1.2.0 → 1.4.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/dist/components/_accordions.scss +3 -3
- package/dist/components/_dropdown.scss +193 -0
- package/dist/components/_form-booleans.scss +4 -1
- package/dist/components/_form-elements.scss +5 -94
- package/dist/components/_form-hints.scss +3 -0
- package/dist/components/_form-input-composite.scss +206 -0
- package/dist/components/_form-text-fields.scss +103 -0
- package/dist/components/accordions.css +3 -3
- package/dist/components/dropdown.css +189 -0
- package/dist/components/form-booleans.css +4 -1
- package/dist/components/form-elements.css +4 -93
- package/dist/components/form-hints.css +3 -0
- package/dist/components/form-input-composite.css +202 -0
- package/dist/components/form-text-fields.css +99 -0
- package/dist/wwt-bsds.css +392 -35
- package/dist/wwt-bsds.min.css +1 -1
- package/package.json +1 -5
package/dist/wwt-bsds.css
CHANGED
|
@@ -729,16 +729,16 @@ h6,
|
|
|
729
729
|
.bs-accordion :where(header[data-open]:not([data-open="false"])) :where([data-position="end"]) {
|
|
730
730
|
transform: rotate(180deg);
|
|
731
731
|
}
|
|
732
|
-
.bs-accordion :where(header button) > :where(
|
|
732
|
+
.bs-accordion :where(header button) > :where(span) {
|
|
733
733
|
grid-area: main;
|
|
734
734
|
margin-right: var(--bs-space-2);
|
|
735
735
|
text-align: left;
|
|
736
736
|
}
|
|
737
|
-
.bs-accordion :where(header button) > :where(
|
|
737
|
+
.bs-accordion :where(header button) > :where(span) {
|
|
738
738
|
vertical-align: middle;
|
|
739
739
|
}
|
|
740
740
|
@media (min-width: 957px) {
|
|
741
|
-
.bs-accordion :where(header button) > :where(
|
|
741
|
+
.bs-accordion :where(header button) > :where(span) {
|
|
742
742
|
margin-right: var(--bs-space-3);
|
|
743
743
|
}
|
|
744
744
|
}
|
|
@@ -756,8 +756,7 @@ h6,
|
|
|
756
756
|
}
|
|
757
757
|
.bs-accordion :where(.bs-accordion-content[data-open]:not([data-open="false"])) {
|
|
758
758
|
grid-template-rows: 1fr;
|
|
759
|
-
-
|
|
760
|
-
padding-block-end: var(--bs-space-f-2);
|
|
759
|
+
padding-block-end: var(--bs-space-f-2);
|
|
761
760
|
}
|
|
762
761
|
/* Accordion Group */
|
|
763
762
|
:where(.bs-accordion[data-stacked]) + .bs-accordion:where([data-stacked]) {
|
|
@@ -1044,6 +1043,172 @@ a.bs-button {
|
|
|
1044
1043
|
outline: none;
|
|
1045
1044
|
vertical-align: middle;
|
|
1046
1045
|
}
|
|
1046
|
+
/* Positioning the parent */
|
|
1047
|
+
.bs-dropdown {
|
|
1048
|
+
display: inline-block;
|
|
1049
|
+
position: relative;
|
|
1050
|
+
}
|
|
1051
|
+
/* Option list */
|
|
1052
|
+
.bs-dropdown :where(ul) {
|
|
1053
|
+
background-color: var(--bs-white);
|
|
1054
|
+
border-radius: 4px;
|
|
1055
|
+
bottom: auto;
|
|
1056
|
+
box-shadow: var(--bs-shadow-contentMedium);
|
|
1057
|
+
line-height: 1.5rem;
|
|
1058
|
+
list-style: none;
|
|
1059
|
+
margin: 0;
|
|
1060
|
+
max-height: 0;
|
|
1061
|
+
max-width: 16.875rem;
|
|
1062
|
+
opacity: 0;
|
|
1063
|
+
overflow-y: auto;
|
|
1064
|
+
padding: 0;
|
|
1065
|
+
position: absolute;
|
|
1066
|
+
top: calc(100% + 0.5rem);
|
|
1067
|
+
transition-duration: 75ms;
|
|
1068
|
+
transition-property: opacity, max-height;
|
|
1069
|
+
transition-timing-function: ease-in-out;
|
|
1070
|
+
z-index: 999;
|
|
1071
|
+
}
|
|
1072
|
+
/* (not) data-variant="fit" */
|
|
1073
|
+
.bs-dropdown:not([data-variant="fit"]) :where(ul) {
|
|
1074
|
+
width: 16.875rem;
|
|
1075
|
+
}
|
|
1076
|
+
/* data-shown */
|
|
1077
|
+
.bs-dropdown:where([data-shown]) :where(ul) {
|
|
1078
|
+
max-height: 20rem;
|
|
1079
|
+
opacity: 1;
|
|
1080
|
+
padding-top: 0.75rem;
|
|
1081
|
+
}
|
|
1082
|
+
/* data-position="top" */
|
|
1083
|
+
.bs-dropdown:where([data-position="top"]) :where(ul) {
|
|
1084
|
+
bottom: calc(100% + 0.5rem);
|
|
1085
|
+
top: auto;
|
|
1086
|
+
}
|
|
1087
|
+
/* data-justify="center" */
|
|
1088
|
+
.bs-dropdown:where([data-justify="center"]) :where(ul) {
|
|
1089
|
+
left: 50%;
|
|
1090
|
+
transform: translateX(-50%);
|
|
1091
|
+
}
|
|
1092
|
+
/* Option list item */
|
|
1093
|
+
.bs-dropdown :where(ul li) {
|
|
1094
|
+
align-items: center;
|
|
1095
|
+
border-bottom: 2px solid transparent;
|
|
1096
|
+
border-left: 4px solid transparent;
|
|
1097
|
+
border-radius: 3px;
|
|
1098
|
+
border-right: 2px solid transparent;
|
|
1099
|
+
border-top: 2px solid transparent;
|
|
1100
|
+
color: var(--bs-ink-base);
|
|
1101
|
+
-moz-column-gap: 0.5rem;
|
|
1102
|
+
column-gap: 0.5rem;
|
|
1103
|
+
cursor: pointer;
|
|
1104
|
+
display: grid;
|
|
1105
|
+
margin-bottom: 0.5rem;
|
|
1106
|
+
padding-bottom: 0.25rem;
|
|
1107
|
+
padding-left: 0.5rem;
|
|
1108
|
+
padding-right: 0.75rem;
|
|
1109
|
+
padding-top: 0.25rem;
|
|
1110
|
+
row-gap: 0.125rem;
|
|
1111
|
+
}
|
|
1112
|
+
/* data-variant="search" (search input) */
|
|
1113
|
+
.bs-dropdown :where(ul li[data-variant~="search"]) {
|
|
1114
|
+
border-left: none;
|
|
1115
|
+
cursor: default;
|
|
1116
|
+
display: block;
|
|
1117
|
+
}
|
|
1118
|
+
/* data-variant="break" (list item) */
|
|
1119
|
+
.bs-dropdown :where(ul li[data-variant~="break"]) {
|
|
1120
|
+
border-left: none;
|
|
1121
|
+
cursor: default;
|
|
1122
|
+
display: block;
|
|
1123
|
+
padding: 0;
|
|
1124
|
+
}
|
|
1125
|
+
/* data-variant="break" (actual line break) */
|
|
1126
|
+
.bs-dropdown :where(ul li[data-variant~="break"] hr) {
|
|
1127
|
+
background: var(--bs-navy-200);
|
|
1128
|
+
}
|
|
1129
|
+
/* data-variant="2-col" */
|
|
1130
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"]) {
|
|
1131
|
+
grid-template-columns: min-content 1fr;
|
|
1132
|
+
}
|
|
1133
|
+
/* data-variant="description" */
|
|
1134
|
+
/* Description will be the 2nd child in a 1-column item */
|
|
1135
|
+
.bs-dropdown :where(ul li:not([data-variant~="2-col"])[data-variant~="description"] :nth-child(2)) {
|
|
1136
|
+
color: var(--bs-ink-light);
|
|
1137
|
+
font-size: var(--bs-text-xs);
|
|
1138
|
+
height: 1.125rem;
|
|
1139
|
+
line-height: 1.125rem;
|
|
1140
|
+
}
|
|
1141
|
+
/* data-variant="2-col description" */
|
|
1142
|
+
/* Description will be the 3rd child in a 2-column item */
|
|
1143
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"][data-variant~="description"] :nth-child(3)) {
|
|
1144
|
+
color: var(--bs-ink-light);
|
|
1145
|
+
font-size: var(--bs-text-xs);
|
|
1146
|
+
grid-column-start: 2;
|
|
1147
|
+
height: 1.125rem;
|
|
1148
|
+
line-height: 1.125rem;
|
|
1149
|
+
}
|
|
1150
|
+
/* List item hover or data-selected */
|
|
1151
|
+
.bs-dropdown :where(ul li:hover),
|
|
1152
|
+
.bs-dropdown :where(ul li[data-selected]) {
|
|
1153
|
+
background-color: var(--bs-bg-subtle);
|
|
1154
|
+
border-left: 4px solid var(--bs-blue-400);
|
|
1155
|
+
color: var(--bs-blue-400);
|
|
1156
|
+
outline: none;
|
|
1157
|
+
}
|
|
1158
|
+
/* data-variant="search" or data-variant="break" hover */
|
|
1159
|
+
.bs-dropdown :where(ul li[data-variant~="search"]:hover),
|
|
1160
|
+
.bs-dropdown :where(ul li[data-variant~="break"]:hover) {
|
|
1161
|
+
background-color: transparent;
|
|
1162
|
+
border-left: none;
|
|
1163
|
+
color: var(--bs-ink-base);
|
|
1164
|
+
}
|
|
1165
|
+
/* data-variant="negative" hover, data-selected, and both */
|
|
1166
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:hover),
|
|
1167
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-selected]),
|
|
1168
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-selected]:hover) {
|
|
1169
|
+
/* 25% alpha version of --bs-red-400 */
|
|
1170
|
+
background-color: rgba(248, 169, 170, 0.25);
|
|
1171
|
+
border-left: 4px solid var(--bs-red-500);
|
|
1172
|
+
color: var(--bs-red-500);
|
|
1173
|
+
}
|
|
1174
|
+
/* data-variant="description" or data-variant="2-col description" hover or data-selected */
|
|
1175
|
+
.bs-dropdown :where(ul li:not([data-variant~="2-col"])[data-variant~="description"]:hover :nth-child(2)),
|
|
1176
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
|
|
1177
|
+
.bs-dropdown :where(ul li:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
|
|
1178
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
|
|
1179
|
+
color: var(--bs-blue-400);
|
|
1180
|
+
}
|
|
1181
|
+
/* data-variant="negative description" or data-variant="2-col negative description" hover or data-selected */
|
|
1182
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"]:hover :nth-child(2)),
|
|
1183
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
|
|
1184
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
|
|
1185
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
|
|
1186
|
+
color: var(--bs-red-500);
|
|
1187
|
+
}
|
|
1188
|
+
/* List option mouse click focus (do not show) */
|
|
1189
|
+
.bs-dropdown :where(ul li:focus:not(:focus-visible)){
|
|
1190
|
+
outline: none;
|
|
1191
|
+
}
|
|
1192
|
+
/* data-variant="negative" list option mouse click focus (do not show) */
|
|
1193
|
+
li[data-variant~="negative"]:focus:not(:focus-visible) {
|
|
1194
|
+
outline: none;
|
|
1195
|
+
}
|
|
1196
|
+
/* List option keyboard navigation focus */
|
|
1197
|
+
.bs-dropdown :where(ul li:focus-visible) {
|
|
1198
|
+
--focus-border-color: var(--bs-blue-400);
|
|
1199
|
+
border: 2px solid var(--focus-border-color);
|
|
1200
|
+
outline: none;
|
|
1201
|
+
padding-left: 0.625rem;
|
|
1202
|
+
}
|
|
1203
|
+
/* Navigation focus on a selected element should preserve 4px left border */
|
|
1204
|
+
.bs-dropdown :where(ul li[data-selected]:focus-visible) {
|
|
1205
|
+
border-left: 4px solid var(--focus-border-color);
|
|
1206
|
+
padding-left: 0.5rem;
|
|
1207
|
+
}
|
|
1208
|
+
/* data-variant="negative" list option keyboard navigation focus */
|
|
1209
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:focus-visible) {
|
|
1210
|
+
--focus-border-color: var(--bs-red-200);
|
|
1211
|
+
}
|
|
1047
1212
|
:where(label, legend) {
|
|
1048
1213
|
--label-color: var(--bs-ink-base);
|
|
1049
1214
|
|
|
@@ -1060,6 +1225,7 @@ a.bs-button {
|
|
|
1060
1225
|
:where(label[data-disabled], [data-disabled] [data-required], [data-disabled] label) {
|
|
1061
1226
|
--label-color: var(--bs-ink-light);
|
|
1062
1227
|
}
|
|
1228
|
+
/* Generally applicable (all input types) */
|
|
1063
1229
|
:where([data-required]) {
|
|
1064
1230
|
color: var(--bs-red-500);
|
|
1065
1231
|
font-weight: var(--bs-font-bold, 600);
|
|
@@ -1067,6 +1233,27 @@ a.bs-button {
|
|
|
1067
1233
|
:where([data-disabled], [data-disabled] [data-required]) {
|
|
1068
1234
|
color: var(--bs-gray-400);
|
|
1069
1235
|
}
|
|
1236
|
+
:where(.box) :is(input, textarea, select):where(:focus-visible) {
|
|
1237
|
+
--offset-color: var(--bs-bg-subtle);
|
|
1238
|
+
}
|
|
1239
|
+
:where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible) {
|
|
1240
|
+
--offset-color: var(--bs-bg-invert);
|
|
1241
|
+
}
|
|
1242
|
+
/* Errors and Messages */
|
|
1243
|
+
:is(input, select, textarea):where([data-error]) {
|
|
1244
|
+
--input-border: var(--bs-red-500);
|
|
1245
|
+
}
|
|
1246
|
+
/* Fieldset */
|
|
1247
|
+
:where(fieldset) {
|
|
1248
|
+
border: none;
|
|
1249
|
+
margin-left: 0;
|
|
1250
|
+
margin-right: 0;
|
|
1251
|
+
padding: 0;
|
|
1252
|
+
}
|
|
1253
|
+
:where(fieldset legend) {
|
|
1254
|
+
margin-bottom: 0.25rem;
|
|
1255
|
+
padding: 0;
|
|
1256
|
+
}
|
|
1070
1257
|
:where(label + input, label > input):where(:not([type='checkbox'], [type='radio'])),
|
|
1071
1258
|
:where(label + textarea, label > textarea),
|
|
1072
1259
|
:where(label + select, label > select) {
|
|
@@ -1078,8 +1265,11 @@ textarea, select {
|
|
|
1078
1265
|
-moz-appearance: none;
|
|
1079
1266
|
appearance: none;
|
|
1080
1267
|
background-color: var(--input-bg, var(--bs-bg-base));
|
|
1081
|
-
border:
|
|
1268
|
+
border-color: var(--input-border, var(--bs-violet-300));
|
|
1082
1269
|
border-radius: 0.25rem;
|
|
1270
|
+
border-style: solid;
|
|
1271
|
+
border-width: var(--input-border-width, 1px);
|
|
1272
|
+
caret-color: var(--bs-blue-400);
|
|
1083
1273
|
color: var(--bs-ink-base);
|
|
1084
1274
|
font-size: var(--bs-text-base);
|
|
1085
1275
|
font-weight: 400;
|
|
@@ -1089,39 +1279,40 @@ textarea, select {
|
|
|
1089
1279
|
padding-inline: 0.75rem;
|
|
1090
1280
|
width: 100%;
|
|
1091
1281
|
}
|
|
1282
|
+
input:where([type='text'], [type='email'], [type='url']),
|
|
1283
|
+
select {
|
|
1284
|
+
text-overflow: ellipsis;
|
|
1285
|
+
}
|
|
1092
1286
|
textarea {
|
|
1093
1287
|
height: auto;
|
|
1094
1288
|
padding-block: 0.5rem;
|
|
1095
1289
|
resize: vertical;
|
|
1096
1290
|
}
|
|
1097
|
-
/* Generally applicable (all input types) */
|
|
1098
1291
|
:is(input, textarea, select)::-moz-placeholder {
|
|
1099
1292
|
color: var(--bs-violet-200);
|
|
1100
|
-
opacity: 1;
|
|
1101
1293
|
}
|
|
1102
1294
|
:is(input, textarea, select)::placeholder {
|
|
1103
1295
|
color: var(--bs-violet-200);
|
|
1104
|
-
opacity: 1;
|
|
1105
1296
|
}
|
|
1106
|
-
:is(input
|
|
1107
|
-
|
|
1108
|
-
0 0 0 4px var(--outline-color, var(--bs-blue-400));
|
|
1109
|
-
outline: 2px solid transparent;
|
|
1110
|
-
}
|
|
1111
|
-
:where(.box) :is(input, textarea, select):where(:focus) {
|
|
1112
|
-
--offset-color: var(--bs-bg-subtle);
|
|
1297
|
+
:is(input, textarea, select):where(:focus-visible)::-moz-placeholder {
|
|
1298
|
+
opacity: 0;
|
|
1113
1299
|
}
|
|
1114
|
-
:
|
|
1115
|
-
|
|
1300
|
+
:is(input, textarea, select):where(:focus-visible)::placeholder {
|
|
1301
|
+
opacity: 0;
|
|
1116
1302
|
}
|
|
1117
|
-
:is(input, textarea, select):where(
|
|
1118
|
-
--
|
|
1303
|
+
:is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible) {
|
|
1304
|
+
--input-border: var(--bs-blue-400);
|
|
1305
|
+
outline-width: 0px;
|
|
1119
1306
|
}
|
|
1120
1307
|
:is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled) {
|
|
1308
|
+
--input-border: var(--bs-gray-400);
|
|
1121
1309
|
background-color: var(--bs-gray-200);
|
|
1122
|
-
border-color: var(--bs-gray-400);
|
|
1123
1310
|
color: var(--bs-gray-400);
|
|
1124
1311
|
}
|
|
1312
|
+
/* Errors and Messages */
|
|
1313
|
+
:is(input, select, textarea):where([data-error]) {
|
|
1314
|
+
--input-border: var(--bs-red-500);
|
|
1315
|
+
}
|
|
1125
1316
|
/*
|
|
1126
1317
|
Removes the built-in 'margin' on bottom of textarea
|
|
1127
1318
|
see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
|
|
@@ -1151,6 +1342,7 @@ select {
|
|
|
1151
1342
|
background-position: right 0.75rem center;
|
|
1152
1343
|
background-repeat: no-repeat;
|
|
1153
1344
|
background-size: 1em 1em;
|
|
1345
|
+
padding-right: var(--bs-space-9);
|
|
1154
1346
|
}
|
|
1155
1347
|
.dark select {
|
|
1156
1348
|
/* URL Encoded SVG dropdown caret so there is something there */
|
|
@@ -1160,20 +1352,181 @@ select {
|
|
|
1160
1352
|
/* URL Encoded SVG dropdown caret so there is something there */
|
|
1161
1353
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%23555775' d='M8.048 13.375a.745.745 0 0 1-.526-.217L0 5.686l1.053-1.061 6.995 6.95 6.897-6.85 1.053 1.06-7.423 7.373a.745.745 0 0 1-.527.217Z'/%3E%3C/svg%3E");
|
|
1162
1354
|
}
|
|
1163
|
-
|
|
1164
|
-
:
|
|
1355
|
+
.bs-input-addon {
|
|
1356
|
+
--input-border: var(--bs-violet-300);
|
|
1357
|
+
align-items: center;
|
|
1358
|
+
background-color: var(--input-bg, var(--bs-bg-base));
|
|
1359
|
+
border-radius: .25rem;
|
|
1360
|
+
color: var(--bs-ink-base);
|
|
1361
|
+
display: flex;
|
|
1362
|
+
height: 2.5rem;
|
|
1363
|
+
overflow: hidden;
|
|
1364
|
+
padding: 0;
|
|
1365
|
+
pointer-events: none;
|
|
1366
|
+
position: relative;
|
|
1367
|
+
width: 100%;
|
|
1368
|
+
}
|
|
1369
|
+
/**
|
|
1370
|
+
Implement an outer 'border' via pseudo-element instead of
|
|
1371
|
+
on main element to avoid content shifting, double-stroke effect,
|
|
1372
|
+
and issues with box-sizing
|
|
1373
|
+
*/
|
|
1374
|
+
.bs-input-addon::after,
|
|
1375
|
+
.bs-input-addon::before,
|
|
1376
|
+
.bs-input-addon ::after,
|
|
1377
|
+
.bs-input-addon ::before {
|
|
1378
|
+
pointer-events: none;
|
|
1379
|
+
}
|
|
1380
|
+
.bs-input-addon::after,
|
|
1381
|
+
.bs-input-addon::before {
|
|
1382
|
+
content: '';
|
|
1383
|
+
height: 100%;
|
|
1384
|
+
left: 0;
|
|
1385
|
+
position: absolute;
|
|
1386
|
+
top: 0;
|
|
1387
|
+
width: 100%;
|
|
1388
|
+
}
|
|
1389
|
+
.bs-input-addon::after {
|
|
1390
|
+
border-radius: .25rem;
|
|
1391
|
+
border: 1px solid var(--input-border);
|
|
1392
|
+
}
|
|
1393
|
+
.bs-input-addon :where(.bs-input-addon)::after {
|
|
1394
|
+
border: 1px solid var(--input-addon-nested-border);
|
|
1395
|
+
}
|
|
1396
|
+
.bs-input-addon > * {
|
|
1397
|
+
flex-grow: 0;
|
|
1398
|
+
flex-shrink: 0;
|
|
1399
|
+
position: relative;
|
|
1400
|
+
}
|
|
1401
|
+
.bs-input-addon > :where([data-autowidth]:not([data-autowidth="false"]), .bs-input-addon, bs-input) {
|
|
1402
|
+
flex-grow: 1;
|
|
1403
|
+
flex-shrink: 1;
|
|
1404
|
+
}
|
|
1405
|
+
.bs-input-addon > :where([data-autowidth]:not([data-autowidth="false"])) > :where(input, select) {
|
|
1406
|
+
width: 100%;
|
|
1407
|
+
}
|
|
1408
|
+
.bs-input-addon > *:where(:not(.bs-input-addon)) {
|
|
1409
|
+
background-color: var(--input-bg, var(--bs-bg-base));
|
|
1410
|
+
border-width: 0px;
|
|
1411
|
+
display: flex;
|
|
1412
|
+
height: 100%;
|
|
1413
|
+
overflow: hidden;
|
|
1414
|
+
pointer-events: auto;
|
|
1415
|
+
}
|
|
1416
|
+
/* Remove (hide) children's borders, outlines */
|
|
1417
|
+
.bs-input-addon > *,
|
|
1418
|
+
.bs-input-addon :where(input, select),
|
|
1419
|
+
.bs-input-addon :is(bs-input, bs-select) :where(input, select),
|
|
1420
|
+
.bs-input-addon :where(.bs-input-addon) {
|
|
1421
|
+
--input-border: transparent;
|
|
1422
|
+
--input-border-width: 0px;
|
|
1423
|
+
}
|
|
1424
|
+
.bs-input-addon {
|
|
1425
|
+
--input-addon-nested-border: transparent;
|
|
1426
|
+
}
|
|
1427
|
+
.bs-input-addon :where(:focus-within) :where(input, select),
|
|
1428
|
+
.bs-input-addon :where(:focus-within) :is(bs-input, bs-select) :where(input, select),
|
|
1429
|
+
.bs-input-addon :where(input, select):where(:focus, :focus-within, :focus-visible),
|
|
1430
|
+
.bs-input-addon :is(bs-input, bs-select) :where(input, select):where(:focus, :focus-within, :focus-visible) {
|
|
1431
|
+
--input-border: transparent;
|
|
1432
|
+
box-shadow: none;
|
|
1433
|
+
outline: none;
|
|
1434
|
+
}
|
|
1435
|
+
/* -------- Inner-bordered styles -------- */
|
|
1436
|
+
/** Inner borders should be straight; shown only if variant: "inner-bordered" */
|
|
1437
|
+
.bs-input-addon:where([data-variant="inner-bordered"]),
|
|
1438
|
+
.bs-input-addon:where([data-variant="inner-bordered"]) :where(.bs-input-addon) {
|
|
1439
|
+
--input-addon-nested-border: var(--bs-violet-100);
|
|
1440
|
+
}
|
|
1441
|
+
.bs-input-addon > :where(.bs-input-addon:not(:last-child, :focus-within)),
|
|
1442
|
+
.bs-input-addon > :where(:not(:last-child, :focus-within))::after {
|
|
1443
|
+
border-top-right-radius: 0;
|
|
1444
|
+
border-bottom-right-radius: 0;
|
|
1445
|
+
}
|
|
1446
|
+
.bs-input-addon > :where(.bs-input-addon:not(:first-child, :focus-within)),
|
|
1447
|
+
.bs-input-addon > :where(:not(:first-child, :focus-within))::after {
|
|
1448
|
+
border-top-left-radius: 0;
|
|
1449
|
+
border-bottom-left-radius: 0;
|
|
1450
|
+
}
|
|
1451
|
+
.bs-input-addon:where([data-variant="inner-bordered"]) > :where(:not(:focus, :focus-within))::after {
|
|
1452
|
+
border-left-width: 0px;
|
|
1453
|
+
border-right-width: 1px;
|
|
1454
|
+
border-right-color: var(--input-addon-nested-border);
|
|
1455
|
+
}
|
|
1456
|
+
.bs-input-addon:where([data-variant="inner-bordered"]) > :where(:not(.bs-input-addon, :focus, :focus-within))::after {
|
|
1457
|
+
content: '';
|
|
1458
|
+
height: 100%;
|
|
1459
|
+
left: 0;
|
|
1460
|
+
position: absolute;
|
|
1461
|
+
top: 0;
|
|
1462
|
+
width: 100%;
|
|
1463
|
+
}
|
|
1464
|
+
.bs-input-addon:where([data-variant="inner-bordered"]) > :where(.bs-input-addon)::after {
|
|
1465
|
+
border-radius: 0px;
|
|
1466
|
+
}
|
|
1467
|
+
/* -------- Focus styles -------- */
|
|
1468
|
+
.bs-input-addon {
|
|
1469
|
+
--focus-border: var(--bs-blue-400);
|
|
1470
|
+
}
|
|
1471
|
+
.bs-input-addon:where(:not([data-multifocus]):focus-within),
|
|
1472
|
+
.bs-input-addon:where([data-multifocus]) :where(input, select):where(:focus, :focus-within, :focus-visible),
|
|
1473
|
+
.bs-input-addon:where([data-multifocus]) :is(bs-input, bs-select) :where(input, select):where(:focus, :focus-within, :focus-visible) {
|
|
1474
|
+
--input-border: var(--focus-border);
|
|
1475
|
+
position: relative;
|
|
1476
|
+
z-index: 1;
|
|
1477
|
+
}
|
|
1478
|
+
.bs-input-addon :where(.bs-input-addon:focus-within) {
|
|
1479
|
+
--input-addon-nested-border: var(--focus-border);
|
|
1480
|
+
z-index: 1;
|
|
1481
|
+
}
|
|
1482
|
+
.bs-input-addon :where(.bs-input-addon:focus-within)::after {
|
|
1483
|
+
z-index: 1;
|
|
1484
|
+
}
|
|
1485
|
+
.bs-input-addon:where([data-multifocus]) > :where(:not(.bs-input-addon)) > :where(input:focus, select:focus),
|
|
1486
|
+
.bs-input-addon:where([data-multifocus]) > :is(bs-input, bs-select) :where(input:focus, select:focus),
|
|
1487
|
+
.bs-input-addon:where([data-multifocus]) > :where(input:focus, select:focus) {
|
|
1488
|
+
border-radius: .25rem;
|
|
1489
|
+
box-shadow: var(--focus-border) 0px 0px 0px 1px inset;
|
|
1490
|
+
}
|
|
1491
|
+
.bs-input-addon:where(:not([data-multifocus]):focus-within)::after {
|
|
1492
|
+
border-width: 1px;
|
|
1493
|
+
border-radius: .25rem;
|
|
1494
|
+
}
|
|
1495
|
+
.bs-input-addon:where(:focus-within) :where(:not(:focus, :focus-within))::after,
|
|
1496
|
+
.bs-input-addon:where(:focus-within) :where(:not(:focus, :focus-within)) {
|
|
1497
|
+
border-color: transparent;
|
|
1498
|
+
}
|
|
1499
|
+
/* Straight-lined ::before border to fill the gap below the rounded ::after border */
|
|
1500
|
+
.bs-input-addon:where([data-multifocus]) :where(:focus-within)::before {
|
|
1501
|
+
border-bottom-width: 1px;
|
|
1502
|
+
border-color: var(--bs-violet-300);
|
|
1503
|
+
border-radius: 0;
|
|
1504
|
+
border-top-width: 1px;
|
|
1505
|
+
z-index: 1;
|
|
1506
|
+
}
|
|
1507
|
+
/* -------- Disabled styles -------- */
|
|
1508
|
+
.bs-input-addon:where([data-disabled]:not([data-disabled="false"])),
|
|
1509
|
+
.bs-input-addon:where([data-disabled]:not([data-disabled="false"])) bs-button .bs-button {
|
|
1510
|
+
--input-bg: var(--bs-gray-200);
|
|
1511
|
+
--input-border: var(--bs-gray-400);
|
|
1512
|
+
color: var(--bs-gray-400);
|
|
1513
|
+
}
|
|
1514
|
+
.bs-input-addon:where([data-disabled]:not([data-disabled="false"])) * {
|
|
1515
|
+
pointer-events: none;
|
|
1516
|
+
}
|
|
1517
|
+
/* -------- Error styles -------- */
|
|
1518
|
+
.bs-input-addon:where([data-error]),
|
|
1519
|
+
.bs-input-addon:where([data-error]) :where(.bs-input-addon) {
|
|
1520
|
+
--focus-border: var(--bs-red-400);
|
|
1165
1521
|
--input-border: var(--bs-red-400);
|
|
1166
1522
|
}
|
|
1167
|
-
|
|
1168
|
-
:where(
|
|
1169
|
-
border:
|
|
1170
|
-
margin-left: 0;
|
|
1171
|
-
margin-right: 0;
|
|
1172
|
-
padding: 0;
|
|
1523
|
+
.bs-input-addon:where([data-error],[data-disabled]) > *::before,
|
|
1524
|
+
.bs-input-addon:where(.bs-input-addon[data-error] .bs-input-addon, .bs-input-addon[data-disabled] .bs-input-addon) > *::before {
|
|
1525
|
+
border-color: var(--input-border);
|
|
1173
1526
|
}
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1527
|
+
/* -------- Label margin -------- */
|
|
1528
|
+
:where(label, .bs-label, bs-label) + .bs-input-addon {
|
|
1529
|
+
margin-top: 0.25rem;
|
|
1177
1530
|
}
|
|
1178
1531
|
.bs-field-details {
|
|
1179
1532
|
display: flex;
|
|
@@ -1224,8 +1577,7 @@ select {
|
|
|
1224
1577
|
}
|
|
1225
1578
|
/* not using gap on .bs-boolean due to dead click zone */
|
|
1226
1579
|
.bs-boolean label {
|
|
1227
|
-
-
|
|
1228
|
-
padding-inline-end: 0.5em;
|
|
1580
|
+
padding-inline-end: 0.5em;
|
|
1229
1581
|
}
|
|
1230
1582
|
.bs-boolean input + label {
|
|
1231
1583
|
padding-inline: 0.5em 0;
|
|
@@ -1245,6 +1597,7 @@ select {
|
|
|
1245
1597
|
appearance: none;
|
|
1246
1598
|
background-color: var(--bg-base);
|
|
1247
1599
|
box-shadow: inset 0 0 0 0.125rem var(--box-shadow);
|
|
1600
|
+
cursor: pointer;
|
|
1248
1601
|
display: grid;
|
|
1249
1602
|
height: 1rem;
|
|
1250
1603
|
margin: 0;
|
|
@@ -1347,6 +1700,7 @@ input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='r
|
|
|
1347
1700
|
input:where([type='checkbox'], [type='radio']):disabled {
|
|
1348
1701
|
--box-shadow: var(--bs-gray-400);
|
|
1349
1702
|
background-color: transparent;
|
|
1703
|
+
cursor: default;
|
|
1350
1704
|
}
|
|
1351
1705
|
input:where([type='checkbox']):checked:disabled::before,
|
|
1352
1706
|
input:where([type='checkbox']):indeterminate:disabled::before {
|
|
@@ -1357,7 +1711,8 @@ input:where([type='radio']):checked:disabled::before {
|
|
|
1357
1711
|
}
|
|
1358
1712
|
/* Error state */
|
|
1359
1713
|
input:where([type='checkbox'], [type='radio'])[data-error] {
|
|
1360
|
-
--box-shadow: var(--bs-red-
|
|
1714
|
+
--box-shadow: var(--bs-red-500);
|
|
1715
|
+
--outline-color: var(--bs-red-200);
|
|
1361
1716
|
}
|
|
1362
1717
|
.bs-switch {
|
|
1363
1718
|
--box-shadow: var(--bs-ink-base);
|
|
@@ -1476,11 +1831,13 @@ input:where([type='checkbox'], [type='radio'])[data-error] {
|
|
|
1476
1831
|
cursor: default;
|
|
1477
1832
|
}
|
|
1478
1833
|
.bs-hint {
|
|
1834
|
+
min-width: 0;
|
|
1479
1835
|
color: var(--bs-ink-light);
|
|
1480
1836
|
font-size: var(--bs-text-xs);
|
|
1481
1837
|
padding: 0;
|
|
1482
1838
|
margin: 0;
|
|
1483
1839
|
list-style: none;
|
|
1840
|
+
overflow-wrap: break-word;
|
|
1484
1841
|
}
|
|
1485
1842
|
.bs-hint:where([data-error]) {
|
|
1486
1843
|
color: var(--bs-red-400);
|