@wwtdev/bsds-css 1.1.0 → 1.3.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 +195 -0
- package/dist/components/_form-text-fields.scss +96 -0
- package/dist/components/_tooltip.scss +158 -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 +191 -0
- package/dist/components/form-text-fields.css +92 -0
- package/dist/components/tooltip.css +154 -0
- package/dist/wwt-bsds.css +514 -30
- package/dist/wwt-bsds.min.css +1 -1
- package/package.json +1 -1
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
|
}
|
|
@@ -1044,6 +1044,172 @@ a.bs-button {
|
|
|
1044
1044
|
outline: none;
|
|
1045
1045
|
vertical-align: middle;
|
|
1046
1046
|
}
|
|
1047
|
+
/* Positioning the parent */
|
|
1048
|
+
.bs-dropdown {
|
|
1049
|
+
display: inline-block;
|
|
1050
|
+
position: relative;
|
|
1051
|
+
}
|
|
1052
|
+
/* Option list */
|
|
1053
|
+
.bs-dropdown :where(ul) {
|
|
1054
|
+
background-color: var(--bs-white);
|
|
1055
|
+
border-radius: 4px;
|
|
1056
|
+
bottom: auto;
|
|
1057
|
+
box-shadow: var(--bs-shadow-contentMedium);
|
|
1058
|
+
line-height: 1.5rem;
|
|
1059
|
+
list-style: none;
|
|
1060
|
+
margin: 0;
|
|
1061
|
+
max-height: 0;
|
|
1062
|
+
max-width: 16.875rem;
|
|
1063
|
+
opacity: 0;
|
|
1064
|
+
overflow-y: auto;
|
|
1065
|
+
padding: 0;
|
|
1066
|
+
position: absolute;
|
|
1067
|
+
top: calc(100% + 0.5rem);
|
|
1068
|
+
transition-duration: 75ms;
|
|
1069
|
+
transition-property: opacity, max-height;
|
|
1070
|
+
transition-timing-function: ease-in-out;
|
|
1071
|
+
z-index: 999;
|
|
1072
|
+
}
|
|
1073
|
+
/* (not) data-variant="fit" */
|
|
1074
|
+
.bs-dropdown:not([data-variant="fit"]) :where(ul) {
|
|
1075
|
+
width: 16.875rem;
|
|
1076
|
+
}
|
|
1077
|
+
/* data-shown */
|
|
1078
|
+
.bs-dropdown:where([data-shown]) :where(ul) {
|
|
1079
|
+
max-height: 20rem;
|
|
1080
|
+
opacity: 1;
|
|
1081
|
+
padding-top: 0.75rem;
|
|
1082
|
+
}
|
|
1083
|
+
/* data-position="top" */
|
|
1084
|
+
.bs-dropdown:where([data-position="top"]) :where(ul) {
|
|
1085
|
+
bottom: calc(100% + 0.5rem);
|
|
1086
|
+
top: auto;
|
|
1087
|
+
}
|
|
1088
|
+
/* data-justify="center" */
|
|
1089
|
+
.bs-dropdown:where([data-justify="center"]) :where(ul) {
|
|
1090
|
+
left: 50%;
|
|
1091
|
+
transform: translateX(-50%);
|
|
1092
|
+
}
|
|
1093
|
+
/* Option list item */
|
|
1094
|
+
.bs-dropdown :where(ul li) {
|
|
1095
|
+
align-items: center;
|
|
1096
|
+
border-bottom: 2px solid transparent;
|
|
1097
|
+
border-left: 4px solid transparent;
|
|
1098
|
+
border-radius: 3px;
|
|
1099
|
+
border-right: 2px solid transparent;
|
|
1100
|
+
border-top: 2px solid transparent;
|
|
1101
|
+
color: var(--bs-ink-base);
|
|
1102
|
+
-moz-column-gap: 0.5rem;
|
|
1103
|
+
column-gap: 0.5rem;
|
|
1104
|
+
cursor: pointer;
|
|
1105
|
+
display: grid;
|
|
1106
|
+
margin-bottom: 0.5rem;
|
|
1107
|
+
padding-bottom: 0.25rem;
|
|
1108
|
+
padding-left: 0.5rem;
|
|
1109
|
+
padding-right: 0.75rem;
|
|
1110
|
+
padding-top: 0.25rem;
|
|
1111
|
+
row-gap: 0.125rem;
|
|
1112
|
+
}
|
|
1113
|
+
/* data-variant="search" (search input) */
|
|
1114
|
+
.bs-dropdown :where(ul li[data-variant~="search"]) {
|
|
1115
|
+
border-left: none;
|
|
1116
|
+
cursor: default;
|
|
1117
|
+
display: block;
|
|
1118
|
+
}
|
|
1119
|
+
/* data-variant="break" (list item) */
|
|
1120
|
+
.bs-dropdown :where(ul li[data-variant~="break"]) {
|
|
1121
|
+
border-left: none;
|
|
1122
|
+
cursor: default;
|
|
1123
|
+
display: block;
|
|
1124
|
+
padding: 0;
|
|
1125
|
+
}
|
|
1126
|
+
/* data-variant="break" (actual line break) */
|
|
1127
|
+
.bs-dropdown :where(ul li[data-variant~="break"] hr) {
|
|
1128
|
+
background: var(--bs-navy-200);
|
|
1129
|
+
}
|
|
1130
|
+
/* data-variant="2-col" */
|
|
1131
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"]) {
|
|
1132
|
+
grid-template-columns: min-content 1fr;
|
|
1133
|
+
}
|
|
1134
|
+
/* data-variant="description" */
|
|
1135
|
+
/* Description will be the 2nd child in a 1-column item */
|
|
1136
|
+
.bs-dropdown :where(ul li:not([data-variant~="2-col"])[data-variant~="description"] :nth-child(2)) {
|
|
1137
|
+
color: var(--bs-ink-light);
|
|
1138
|
+
font-size: var(--bs-text-xs);
|
|
1139
|
+
height: 1.125rem;
|
|
1140
|
+
line-height: 1.125rem;
|
|
1141
|
+
}
|
|
1142
|
+
/* data-variant="2-col description" */
|
|
1143
|
+
/* Description will be the 3rd child in a 2-column item */
|
|
1144
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"][data-variant~="description"] :nth-child(3)) {
|
|
1145
|
+
color: var(--bs-ink-light);
|
|
1146
|
+
font-size: var(--bs-text-xs);
|
|
1147
|
+
grid-column-start: 2;
|
|
1148
|
+
height: 1.125rem;
|
|
1149
|
+
line-height: 1.125rem;
|
|
1150
|
+
}
|
|
1151
|
+
/* List item hover or data-selected */
|
|
1152
|
+
.bs-dropdown :where(ul li:hover),
|
|
1153
|
+
.bs-dropdown :where(ul li[data-selected]) {
|
|
1154
|
+
background-color: var(--bs-bg-subtle);
|
|
1155
|
+
border-left: 4px solid var(--bs-blue-400);
|
|
1156
|
+
color: var(--bs-blue-400);
|
|
1157
|
+
outline: none;
|
|
1158
|
+
}
|
|
1159
|
+
/* data-variant="search" or data-variant="break" hover */
|
|
1160
|
+
.bs-dropdown :where(ul li[data-variant~="search"]:hover),
|
|
1161
|
+
.bs-dropdown :where(ul li[data-variant~="break"]:hover) {
|
|
1162
|
+
background-color: transparent;
|
|
1163
|
+
border-left: none;
|
|
1164
|
+
color: var(--bs-ink-base);
|
|
1165
|
+
}
|
|
1166
|
+
/* data-variant="negative" hover, data-selected, and both */
|
|
1167
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:hover),
|
|
1168
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-selected]),
|
|
1169
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-selected]:hover) {
|
|
1170
|
+
/* 25% alpha version of --bs-red-400 */
|
|
1171
|
+
background-color: rgba(248, 169, 170, 0.25);
|
|
1172
|
+
border-left: 4px solid var(--bs-red-500);
|
|
1173
|
+
color: var(--bs-red-500);
|
|
1174
|
+
}
|
|
1175
|
+
/* data-variant="description" or data-variant="2-col description" hover or data-selected */
|
|
1176
|
+
.bs-dropdown :where(ul li:not([data-variant~="2-col"])[data-variant~="description"]:hover :nth-child(2)),
|
|
1177
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
|
|
1178
|
+
.bs-dropdown :where(ul li:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
|
|
1179
|
+
.bs-dropdown :where(ul li[data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
|
|
1180
|
+
color: var(--bs-blue-400);
|
|
1181
|
+
}
|
|
1182
|
+
/* data-variant="negative description" or data-variant="2-col negative description" hover or data-selected */
|
|
1183
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"]:hover :nth-child(2)),
|
|
1184
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
|
|
1185
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
|
|
1186
|
+
.bs-dropdown :where(ul li[data-variant~="negative"][data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
|
|
1187
|
+
color: var(--bs-red-500);
|
|
1188
|
+
}
|
|
1189
|
+
/* List option mouse click focus (do not show) */
|
|
1190
|
+
.bs-dropdown :where(ul li:focus:not(:focus-visible)){
|
|
1191
|
+
outline: none;
|
|
1192
|
+
}
|
|
1193
|
+
/* data-variant="negative" list option mouse click focus (do not show) */
|
|
1194
|
+
li[data-variant~="negative"]:focus:not(:focus-visible) {
|
|
1195
|
+
outline: none;
|
|
1196
|
+
}
|
|
1197
|
+
/* List option keyboard navigation focus */
|
|
1198
|
+
.bs-dropdown :where(ul li:focus-visible) {
|
|
1199
|
+
--focus-border-color: var(--bs-blue-400);
|
|
1200
|
+
border: 2px solid var(--focus-border-color);
|
|
1201
|
+
outline: none;
|
|
1202
|
+
padding-left: 0.625rem;
|
|
1203
|
+
}
|
|
1204
|
+
/* Navigation focus on a selected element should preserve 4px left border */
|
|
1205
|
+
.bs-dropdown :where(ul li[data-selected]:focus-visible) {
|
|
1206
|
+
border-left: 4px solid var(--focus-border-color);
|
|
1207
|
+
padding-left: 0.5rem;
|
|
1208
|
+
}
|
|
1209
|
+
/* data-variant="negative" list option keyboard navigation focus */
|
|
1210
|
+
.bs-dropdown :where(ul li[data-variant~="negative"]:focus-visible) {
|
|
1211
|
+
--focus-border-color: var(--bs-red-200);
|
|
1212
|
+
}
|
|
1047
1213
|
:where(label, legend) {
|
|
1048
1214
|
--label-color: var(--bs-ink-base);
|
|
1049
1215
|
|
|
@@ -1060,6 +1226,7 @@ a.bs-button {
|
|
|
1060
1226
|
:where(label[data-disabled], [data-disabled] [data-required], [data-disabled] label) {
|
|
1061
1227
|
--label-color: var(--bs-ink-light);
|
|
1062
1228
|
}
|
|
1229
|
+
/* Generally applicable (all input types) */
|
|
1063
1230
|
:where([data-required]) {
|
|
1064
1231
|
color: var(--bs-red-500);
|
|
1065
1232
|
font-weight: var(--bs-font-bold, 600);
|
|
@@ -1067,6 +1234,27 @@ a.bs-button {
|
|
|
1067
1234
|
:where([data-disabled], [data-disabled] [data-required]) {
|
|
1068
1235
|
color: var(--bs-gray-400);
|
|
1069
1236
|
}
|
|
1237
|
+
:where(.box) :is(input, textarea, select):where(:focus-visible) {
|
|
1238
|
+
--offset-color: var(--bs-bg-subtle);
|
|
1239
|
+
}
|
|
1240
|
+
:where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible) {
|
|
1241
|
+
--offset-color: var(--bs-bg-invert);
|
|
1242
|
+
}
|
|
1243
|
+
/* Errors and Messages */
|
|
1244
|
+
:is(input, select, textarea):where([data-error]) {
|
|
1245
|
+
--input-border: var(--bs-red-500);
|
|
1246
|
+
}
|
|
1247
|
+
/* Fieldset */
|
|
1248
|
+
:where(fieldset) {
|
|
1249
|
+
border: none;
|
|
1250
|
+
margin-left: 0;
|
|
1251
|
+
margin-right: 0;
|
|
1252
|
+
padding: 0;
|
|
1253
|
+
}
|
|
1254
|
+
:where(fieldset legend) {
|
|
1255
|
+
margin-bottom: 0.25rem;
|
|
1256
|
+
padding: 0;
|
|
1257
|
+
}
|
|
1070
1258
|
:where(label + input, label > input):where(:not([type='checkbox'], [type='radio'])),
|
|
1071
1259
|
:where(label + textarea, label > textarea),
|
|
1072
1260
|
:where(label + select, label > select) {
|
|
@@ -1080,6 +1268,7 @@ textarea, select {
|
|
|
1080
1268
|
background-color: var(--input-bg, var(--bs-bg-base));
|
|
1081
1269
|
border: 1px solid var(--input-border, var(--bs-violet-300));
|
|
1082
1270
|
border-radius: 0.25rem;
|
|
1271
|
+
caret-color: var(--bs-blue-400);
|
|
1083
1272
|
color: var(--bs-ink-base);
|
|
1084
1273
|
font-size: var(--bs-text-base);
|
|
1085
1274
|
font-weight: 400;
|
|
@@ -1094,34 +1283,31 @@ textarea {
|
|
|
1094
1283
|
padding-block: 0.5rem;
|
|
1095
1284
|
resize: vertical;
|
|
1096
1285
|
}
|
|
1097
|
-
/* Generally applicable (all input types) */
|
|
1098
1286
|
:is(input, textarea, select)::-moz-placeholder {
|
|
1099
1287
|
color: var(--bs-violet-200);
|
|
1100
|
-
opacity: 1;
|
|
1101
1288
|
}
|
|
1102
1289
|
:is(input, textarea, select)::placeholder {
|
|
1103
1290
|
color: var(--bs-violet-200);
|
|
1104
|
-
opacity: 1;
|
|
1105
1291
|
}
|
|
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);
|
|
1292
|
+
:is(input, textarea, select):where(:focus-visible)::-moz-placeholder {
|
|
1293
|
+
opacity: 0;
|
|
1113
1294
|
}
|
|
1114
|
-
:
|
|
1115
|
-
|
|
1295
|
+
:is(input, textarea, select):where(:focus-visible)::placeholder {
|
|
1296
|
+
opacity: 0;
|
|
1116
1297
|
}
|
|
1117
|
-
:is(input, textarea, select):where(
|
|
1118
|
-
--
|
|
1298
|
+
:is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible) {
|
|
1299
|
+
--input-border: var(--bs-blue-400);
|
|
1300
|
+
outline-width: 0px;
|
|
1119
1301
|
}
|
|
1120
1302
|
:is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled) {
|
|
1303
|
+
--input-border: var(--bs-gray-400);
|
|
1121
1304
|
background-color: var(--bs-gray-200);
|
|
1122
|
-
border-color: var(--bs-gray-400);
|
|
1123
1305
|
color: var(--bs-gray-400);
|
|
1124
1306
|
}
|
|
1307
|
+
/* Errors and Messages */
|
|
1308
|
+
:is(input, select, textarea):where([data-error]) {
|
|
1309
|
+
--input-border: var(--bs-red-500);
|
|
1310
|
+
}
|
|
1125
1311
|
/*
|
|
1126
1312
|
Removes the built-in 'margin' on bottom of textarea
|
|
1127
1313
|
see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
|
|
@@ -1151,6 +1337,7 @@ select {
|
|
|
1151
1337
|
background-position: right 0.75rem center;
|
|
1152
1338
|
background-repeat: no-repeat;
|
|
1153
1339
|
background-size: 1em 1em;
|
|
1340
|
+
padding-right: var(--bs-space-9);
|
|
1154
1341
|
}
|
|
1155
1342
|
.dark select {
|
|
1156
1343
|
/* URL Encoded SVG dropdown caret so there is something there */
|
|
@@ -1160,20 +1347,172 @@ select {
|
|
|
1160
1347
|
/* URL Encoded SVG dropdown caret so there is something there */
|
|
1161
1348
|
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
1349
|
}
|
|
1163
|
-
|
|
1164
|
-
:
|
|
1350
|
+
.bs-input-addon {
|
|
1351
|
+
--input-border: var(--bs-violet-300);
|
|
1352
|
+
align-items: center;
|
|
1353
|
+
background-color: var(--input-bg, var(--bs-bg-base));
|
|
1354
|
+
border-radius: .25rem;
|
|
1355
|
+
color: var(--bs-ink-base);
|
|
1356
|
+
display: flex;
|
|
1357
|
+
height: 2.5rem;
|
|
1358
|
+
overflow: hidden;
|
|
1359
|
+
padding: 0;
|
|
1360
|
+
pointer-events: none;
|
|
1361
|
+
position: relative;
|
|
1362
|
+
width: 100%;
|
|
1363
|
+
}
|
|
1364
|
+
/**
|
|
1365
|
+
Implement an outer 'border' via pseudo-element instead of
|
|
1366
|
+
on main element to avoid content shifting, double-stroke effect,
|
|
1367
|
+
and issues with box-sizing
|
|
1368
|
+
*/
|
|
1369
|
+
.bs-input-addon::after,
|
|
1370
|
+
.bs-input-addon::before,
|
|
1371
|
+
.bs-input-addon ::after,
|
|
1372
|
+
.bs-input-addon ::before {
|
|
1373
|
+
pointer-events: none;
|
|
1374
|
+
}
|
|
1375
|
+
.bs-input-addon::after,
|
|
1376
|
+
.bs-input-addon::before {
|
|
1377
|
+
content: '';
|
|
1378
|
+
height: 100%;
|
|
1379
|
+
left: 0;
|
|
1380
|
+
position: absolute;
|
|
1381
|
+
top: 0;
|
|
1382
|
+
width: 100%;
|
|
1383
|
+
}
|
|
1384
|
+
.bs-input-addon::after {
|
|
1385
|
+
border-radius: .25rem;
|
|
1386
|
+
border: 1px solid var(--input-border);
|
|
1387
|
+
}
|
|
1388
|
+
.bs-input-addon > * {
|
|
1389
|
+
flex-grow: 0;
|
|
1390
|
+
flex-shrink: 0;
|
|
1391
|
+
}
|
|
1392
|
+
.bs-input-addon > :where(bs-input, input, .bs-input-addon) {
|
|
1393
|
+
flex-grow: 1;
|
|
1394
|
+
flex-shrink: 1;
|
|
1395
|
+
}
|
|
1396
|
+
.bs-input-addon > *:where(:not(.bs-input-addon)) {
|
|
1397
|
+
background-color: var(--input-bg, var(--bs-bg-base));
|
|
1398
|
+
border-width: 0px;
|
|
1399
|
+
display: flex;
|
|
1400
|
+
height: 100%;
|
|
1401
|
+
overflow: hidden;
|
|
1402
|
+
pointer-events: auto;
|
|
1403
|
+
position: relative;
|
|
1404
|
+
}
|
|
1405
|
+
/* Remove (hide) children's borders, outlines */
|
|
1406
|
+
.bs-input-addon > *,
|
|
1407
|
+
.bs-input-addon :where(input, select),
|
|
1408
|
+
.bs-input-addon :is(bs-input, bs-select) :where(input, select),
|
|
1409
|
+
.bs-input-addon :where(.bs-input-addon)::after {
|
|
1410
|
+
border-color: transparent;
|
|
1411
|
+
border-width: 0px;
|
|
1412
|
+
}
|
|
1413
|
+
.bs-input-addon :where(:focus-within) :where(input, select),
|
|
1414
|
+
.bs-input-addon :where(:focus-within) :is(bs-input, bs-select) :where(input, select),
|
|
1415
|
+
.bs-input-addon :where(input, select):where(:focus, :focus-within, :focus-visible),
|
|
1416
|
+
.bs-input-addon :is(bs-input, bs-select) :where(input, select):where(:focus, :focus-within, :focus-visible) {
|
|
1417
|
+
--input-border: transparent;
|
|
1418
|
+
box-shadow: none;
|
|
1419
|
+
outline: none;
|
|
1420
|
+
}
|
|
1421
|
+
/* -------- Inner-bordered styles -------- */
|
|
1422
|
+
/** Inner borders should be straight; shown only if variant: "inner-bordered" */
|
|
1423
|
+
.bs-input-addon > :where(.bs-input-addon:not(:last-child, :focus-within)),
|
|
1424
|
+
.bs-input-addon > :where(:not(:last-child, :focus-within))::after {
|
|
1425
|
+
border-top-right-radius: 0;
|
|
1426
|
+
border-bottom-right-radius: 0;
|
|
1427
|
+
}
|
|
1428
|
+
.bs-input-addon > :where(.bs-input-addon:not(:first-child, :focus-within)),
|
|
1429
|
+
.bs-input-addon > :where(:not(:first-child, :focus-within))::after {
|
|
1430
|
+
border-top-left-radius: 0;
|
|
1431
|
+
border-bottom-left-radius: 0;
|
|
1432
|
+
}
|
|
1433
|
+
.bs-input-addon:where([data-variant="inner-bordered"]:not(.bs-input-addon .bs-input-addon)) > :where(:not(.bs-input-addon, :focus, :focus-within))::after {
|
|
1434
|
+
border-right-color: var(--input-border);
|
|
1435
|
+
border-right-width: 1px;
|
|
1436
|
+
content: '';
|
|
1437
|
+
height: 100%;
|
|
1438
|
+
position: absolute;
|
|
1439
|
+
width: 100%;
|
|
1440
|
+
}
|
|
1441
|
+
.bs-input-addon:where([data-variant="inner-bordered"]) > :where(.bs-input-addon)::after {
|
|
1442
|
+
border-right-width: 1px;
|
|
1443
|
+
border-right-color: var(--input-border);
|
|
1444
|
+
border-radius: 0px;
|
|
1445
|
+
}
|
|
1446
|
+
/* -------- Focus styles -------- */
|
|
1447
|
+
.bs-input-addon:where(:not([data-multifocus]):focus-within),
|
|
1448
|
+
.bs-input-addon:where([data-multifocus]) :where(input, select):where(:focus, :focus-within, :focus-visible),
|
|
1449
|
+
.bs-input-addon:where([data-multifocus]) :is(bs-input, bs-select) :where(input, select):where(:focus, :focus-within, :focus-visible) {
|
|
1450
|
+
--input-border: var(--bs-blue-400);
|
|
1451
|
+
position: relative;
|
|
1452
|
+
z-index: 1;
|
|
1453
|
+
}
|
|
1454
|
+
.bs-input-addon :where(.bs-input-addon:where(:not([data-multifocus]):focus-within))::after {
|
|
1455
|
+
border-color: var(--input-border);
|
|
1456
|
+
border-radius: .25rem;
|
|
1457
|
+
border-width: 1px;
|
|
1458
|
+
z-index: 1;
|
|
1459
|
+
}
|
|
1460
|
+
.bs-input-addon:where([data-multifocus]) > :where(:not(.bs-input-addon)) > :where(input:focus),
|
|
1461
|
+
.bs-input-addon:where([data-multifocus]) > bs-input :where(input:focus),
|
|
1462
|
+
.bs-input-addon:where([data-multifocus]) > :where(input:focus) {
|
|
1463
|
+
border-radius: .25rem;
|
|
1464
|
+
box-shadow: var(--input-border) 0px 0px 0px 1px inset;
|
|
1465
|
+
}
|
|
1466
|
+
.bs-input-addon:where([data-multifocus]) > :where(:not(.bs-input-addon)) > :where(select:focus),
|
|
1467
|
+
.bs-input-addon:where([data-multifocus]) > bs-select :where(select:focus),
|
|
1468
|
+
.bs-input-addon:where([data-multifocus]) > :where(select:focus) {
|
|
1469
|
+
border-radius: .25rem;
|
|
1470
|
+
box-shadow: var(--input-border) 0px 0px 0px 2px inset;
|
|
1471
|
+
}
|
|
1472
|
+
.bs-input-addon:where(:not([data-multifocus]):focus-within)::after {
|
|
1473
|
+
border-width: 1px;
|
|
1474
|
+
border-radius: .25rem;
|
|
1475
|
+
}
|
|
1476
|
+
.bs-input-addon:where(:focus-within) :where(:not(:focus, :focus-within))::after,
|
|
1477
|
+
.bs-input-addon:where(:focus-within) :where(:not(:focus, :focus-within)) {
|
|
1478
|
+
border-color: transparent;
|
|
1479
|
+
}
|
|
1480
|
+
/* Straight-lined ::before border to fill the gap below the rounded ::after border */
|
|
1481
|
+
.bs-input-addon:where([data-multifocus]) :where(:focus-within)::before {
|
|
1482
|
+
border-bottom-width: 1px;
|
|
1483
|
+
border-color: var(--bs-violet-300);
|
|
1484
|
+
border-radius: 0;
|
|
1485
|
+
border-top-width: 1px;
|
|
1486
|
+
z-index: 1;
|
|
1487
|
+
}
|
|
1488
|
+
/* -------- Disabled styles -------- */
|
|
1489
|
+
.bs-input-addon:where([data-disabled]:not([data-disabled="false"])),
|
|
1490
|
+
.bs-input-addon:where([data-disabled]:not([data-disabled="false"])) bs-button .bs-button {
|
|
1491
|
+
--input-bg: var(--bs-gray-200);
|
|
1492
|
+
--input-border: var(--bs-gray-400);
|
|
1493
|
+
color: var(--bs-gray-400);
|
|
1494
|
+
}
|
|
1495
|
+
.bs-input-addon:where([data-disabled]:not([data-disabled="false"])) * {
|
|
1496
|
+
pointer-events: none;
|
|
1497
|
+
}
|
|
1498
|
+
/* -------- Error styles -------- */
|
|
1499
|
+
.bs-input-addon:where([data-error]),
|
|
1500
|
+
.bs-input-addon:where([data-error]) > ::after {
|
|
1165
1501
|
--input-border: var(--bs-red-400);
|
|
1166
1502
|
}
|
|
1167
|
-
|
|
1168
|
-
:where(
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
padding: 0;
|
|
1503
|
+
.bs-input-addon:where([data-error][data-multifocus]) > :where(:focus-within),
|
|
1504
|
+
.bs-input-addon:where([data-error][data-multifocus]) :where(input, select):where(:focus, :focus-within, :focus-visible),
|
|
1505
|
+
.bs-input-addon:where([data-error][data-multifocus]) :is(bs-input, bs-select) :where(input, select):where(:focus, :focus-within, :focus-visible) {
|
|
1506
|
+
--input-border: var(--bs-red-400);
|
|
1507
|
+
border-color: var(--input-border);
|
|
1173
1508
|
}
|
|
1174
|
-
:where(
|
|
1175
|
-
|
|
1176
|
-
|
|
1509
|
+
.bs-input-addon:where([data-error],[data-disabled]) > *::before,
|
|
1510
|
+
.bs-input-addon:where(.bs-input-addon[data-error] .bs-input-addon, .bs-input-addon[data-disabled] .bs-input-addon) > *::before {
|
|
1511
|
+
border-color: var(--input-border);
|
|
1512
|
+
}
|
|
1513
|
+
/* -------- Label margin -------- */
|
|
1514
|
+
:where(label, .bs-label, bs-label) + .bs-input-addon {
|
|
1515
|
+
margin-top: 0.25rem;
|
|
1177
1516
|
}
|
|
1178
1517
|
.bs-field-details {
|
|
1179
1518
|
display: flex;
|
|
@@ -1245,6 +1584,7 @@ select {
|
|
|
1245
1584
|
appearance: none;
|
|
1246
1585
|
background-color: var(--bg-base);
|
|
1247
1586
|
box-shadow: inset 0 0 0 0.125rem var(--box-shadow);
|
|
1587
|
+
cursor: pointer;
|
|
1248
1588
|
display: grid;
|
|
1249
1589
|
height: 1rem;
|
|
1250
1590
|
margin: 0;
|
|
@@ -1347,6 +1687,7 @@ input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='r
|
|
|
1347
1687
|
input:where([type='checkbox'], [type='radio']):disabled {
|
|
1348
1688
|
--box-shadow: var(--bs-gray-400);
|
|
1349
1689
|
background-color: transparent;
|
|
1690
|
+
cursor: default;
|
|
1350
1691
|
}
|
|
1351
1692
|
input:where([type='checkbox']):checked:disabled::before,
|
|
1352
1693
|
input:where([type='checkbox']):indeterminate:disabled::before {
|
|
@@ -1357,7 +1698,8 @@ input:where([type='radio']):checked:disabled::before {
|
|
|
1357
1698
|
}
|
|
1358
1699
|
/* Error state */
|
|
1359
1700
|
input:where([type='checkbox'], [type='radio'])[data-error] {
|
|
1360
|
-
--box-shadow: var(--bs-red-
|
|
1701
|
+
--box-shadow: var(--bs-red-500);
|
|
1702
|
+
--outline-color: var(--bs-red-200);
|
|
1361
1703
|
}
|
|
1362
1704
|
.bs-switch {
|
|
1363
1705
|
--box-shadow: var(--bs-ink-base);
|
|
@@ -1476,11 +1818,13 @@ input:where([type='checkbox'], [type='radio'])[data-error] {
|
|
|
1476
1818
|
cursor: default;
|
|
1477
1819
|
}
|
|
1478
1820
|
.bs-hint {
|
|
1821
|
+
min-width: 0;
|
|
1479
1822
|
color: var(--bs-ink-light);
|
|
1480
1823
|
font-size: var(--bs-text-xs);
|
|
1481
1824
|
padding: 0;
|
|
1482
1825
|
margin: 0;
|
|
1483
1826
|
list-style: none;
|
|
1827
|
+
overflow-wrap: break-word;
|
|
1484
1828
|
}
|
|
1485
1829
|
.bs-hint:where([data-error]) {
|
|
1486
1830
|
color: var(--bs-red-400);
|
|
@@ -2042,3 +2386,143 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
|
|
|
2042
2386
|
}
|
|
2043
2387
|
|
|
2044
2388
|
}
|
|
2389
|
+
/* -------------------- BASE STYLES -------------------- */
|
|
2390
|
+
.bs-tooltip {
|
|
2391
|
+
display: inline-block;
|
|
2392
|
+
position: relative;
|
|
2393
|
+
}
|
|
2394
|
+
.bs-tooltip :where(.bs-tooltip-text) {
|
|
2395
|
+
align-items: center;
|
|
2396
|
+
background-color: var(--bs-bg-base);
|
|
2397
|
+
border-radius: 4px;
|
|
2398
|
+
box-shadow: var(--bs-shadow-contentLowCenter);
|
|
2399
|
+
color: var(--bs-violet-400);
|
|
2400
|
+
display: flex;
|
|
2401
|
+
font-size: var(--bs-text-sm);
|
|
2402
|
+
justify-content: center;
|
|
2403
|
+
max-width: 16rem;
|
|
2404
|
+
min-width: 4rem;
|
|
2405
|
+
opacity: 0;
|
|
2406
|
+
padding-bottom: 0.25rem;
|
|
2407
|
+
padding-left: 0.5rem;
|
|
2408
|
+
padding-right: 0.5rem;
|
|
2409
|
+
padding-top: 0.25rem;
|
|
2410
|
+
position: absolute;
|
|
2411
|
+
transform: scale(0);
|
|
2412
|
+
transition-duration: 75ms;
|
|
2413
|
+
transition-property: opacity, transform;
|
|
2414
|
+
transition-timing-function: ease-in-out;
|
|
2415
|
+
width: -moz-max-content;
|
|
2416
|
+
width: max-content;
|
|
2417
|
+
z-index: 999;
|
|
2418
|
+
}
|
|
2419
|
+
/* -------------------- POSITION: UNDEFINED / TOP -------------------- */
|
|
2420
|
+
.bs-tooltip:where(:not([data-position])) :where(.bs-tooltip-text),
|
|
2421
|
+
.bs-tooltip:where([data-position="top"]) :where(.bs-tooltip-text) {
|
|
2422
|
+
bottom: calc(100% + 0.5rem);
|
|
2423
|
+
left: 50%;
|
|
2424
|
+
transform-origin: bottom center;
|
|
2425
|
+
transform: translateX(-50%) scale(0);
|
|
2426
|
+
}
|
|
2427
|
+
/* Active States */
|
|
2428
|
+
:where(.bs-tooltip:not([data-position])):hover :where(.bs-tooltip-text),
|
|
2429
|
+
:where(.bs-tooltip[data-position="top"]):hover :where(.bs-tooltip-text),
|
|
2430
|
+
:where(.bs-tooltip:not([data-position])):focus-within :where(.bs-tooltip-text),
|
|
2431
|
+
:where(.bs-tooltip[data-position="top"]):focus-within :where(.bs-tooltip-text),
|
|
2432
|
+
:where(.bs-tooltip:not([data-position]))[data-shown] :where(.bs-tooltip-text),
|
|
2433
|
+
:where(.bs-tooltip[data-position="top"])[data-shown] :where(.bs-tooltip-text) {
|
|
2434
|
+
opacity: 1;
|
|
2435
|
+
transform: translateX(-50%) scale(1);
|
|
2436
|
+
}
|
|
2437
|
+
/* -------------------- POSITION: BOTTOM -------------------- */
|
|
2438
|
+
.bs-tooltip:where([data-position="bottom"]) :where(.bs-tooltip-text) {
|
|
2439
|
+
left: 50%;
|
|
2440
|
+
top: calc(100% + 0.5rem);
|
|
2441
|
+
transform-origin: top center;
|
|
2442
|
+
transform: translateX(-50%) scale(0);
|
|
2443
|
+
}
|
|
2444
|
+
/* Active States */
|
|
2445
|
+
:where(.bs-tooltip[data-position="bottom"]):hover :where(.bs-tooltip-text),
|
|
2446
|
+
:where(.bs-tooltip[data-position="bottom"]):focus-within :where(.bs-tooltip-text),
|
|
2447
|
+
:where(.bs-tooltip[data-position="bottom"])[data-shown] :where(.bs-tooltip-text) {
|
|
2448
|
+
opacity: 1;
|
|
2449
|
+
transform: translateX(-50%) scale(1);
|
|
2450
|
+
}
|
|
2451
|
+
/* -------------------- POSITION: LEFT -------------------- */
|
|
2452
|
+
.bs-tooltip:where([data-position="left"]) :where(.bs-tooltip-text) {
|
|
2453
|
+
right: calc(100% + 0.5rem);
|
|
2454
|
+
top: 50%;
|
|
2455
|
+
transform-origin: center right;
|
|
2456
|
+
transform: translateY(-50%) scale(0);
|
|
2457
|
+
}
|
|
2458
|
+
/* Active States */
|
|
2459
|
+
:where(.bs-tooltip[data-position="left"]):hover :where(.bs-tooltip-text),
|
|
2460
|
+
:where(.bs-tooltip[data-position="left"]):focus-within :where(.bs-tooltip-text),
|
|
2461
|
+
:where(.bs-tooltip[data-position="left"])[data-shown] :where(.bs-tooltip-text) {
|
|
2462
|
+
opacity: 1;
|
|
2463
|
+
transform: translateY(-50%) scale(1);
|
|
2464
|
+
}
|
|
2465
|
+
/* -------------------- POSITION: RIGHT -------------------- */
|
|
2466
|
+
.bs-tooltip:where([data-position="right"]) :where(.bs-tooltip-text) {
|
|
2467
|
+
left: calc(100% + 0.5rem);
|
|
2468
|
+
top: 50%;
|
|
2469
|
+
transform-origin: center left;
|
|
2470
|
+
transform: translateY(-50%) scale(0);
|
|
2471
|
+
}
|
|
2472
|
+
:where(.bs-tooltip[data-position="right"]):hover :where(.bs-tooltip-text),
|
|
2473
|
+
:where(.bs-tooltip[data-position="right"]):focus-within :where(.bs-tooltip-text),
|
|
2474
|
+
:where(.bs-tooltip[data-position="right"])[data-shown] :where(.bs-tooltip-text) {
|
|
2475
|
+
opacity: 1;
|
|
2476
|
+
transform: translateY(-50%) scale(1);
|
|
2477
|
+
}
|
|
2478
|
+
/* -------------------- POSITION: CORNERS -------------------- */
|
|
2479
|
+
/* top-left */
|
|
2480
|
+
.bs-tooltip:where([data-position="top-left"]) :where(.bs-tooltip-text) {
|
|
2481
|
+
bottom: calc(100% + 0.5rem);
|
|
2482
|
+
right: calc(100% + 0.5rem);
|
|
2483
|
+
transform-origin: bottom right;
|
|
2484
|
+
}
|
|
2485
|
+
/* top-right */
|
|
2486
|
+
.bs-tooltip:where([data-position="top-right"]) :where(.bs-tooltip-text) {
|
|
2487
|
+
bottom: calc(100% + 0.5rem);
|
|
2488
|
+
left: calc(100% + 0.5rem);
|
|
2489
|
+
transform-origin: bottom left;
|
|
2490
|
+
}
|
|
2491
|
+
/* bottom-left */
|
|
2492
|
+
.bs-tooltip:where([data-position="bottom-left"]) :where(.bs-tooltip-text) {
|
|
2493
|
+
right: calc(100% + 0.5rem);
|
|
2494
|
+
top: calc(100% + 0.5rem);
|
|
2495
|
+
transform-origin: top right;
|
|
2496
|
+
}
|
|
2497
|
+
/* bottom-right */
|
|
2498
|
+
.bs-tooltip:where([data-position="bottom-right"]) :where(.bs-tooltip-text) {
|
|
2499
|
+
left: calc(100% + 0.5rem);
|
|
2500
|
+
top: calc(100% + 0.5rem);
|
|
2501
|
+
transform-origin: top left;
|
|
2502
|
+
}
|
|
2503
|
+
/* Active States */
|
|
2504
|
+
:where(.bs-tooltip[data-position="top-left"]):hover :where(.bs-tooltip-text),
|
|
2505
|
+
:where(.bs-tooltip[data-position="top-right"]):hover :where(.bs-tooltip-text),
|
|
2506
|
+
:where(.bs-tooltip[data-position="bottom-left"]):hover :where(.bs-tooltip-text),
|
|
2507
|
+
:where(.bs-tooltip[data-position="bottom-right"]):hover :where(.bs-tooltip-text),
|
|
2508
|
+
:where(.bs-tooltip[data-position="top-left"]):focus-within :where(.bs-tooltip-text),
|
|
2509
|
+
:where(.bs-tooltip[data-position="top-right"]):focus-within :where(.bs-tooltip-text),
|
|
2510
|
+
:where(.bs-tooltip[data-position="bottom-left"]):focus-within :where(.bs-tooltip-text),
|
|
2511
|
+
:where(.bs-tooltip[data-position="bottom-right"]):focus-within :where(.bs-tooltip-text),
|
|
2512
|
+
:where(.bs-tooltip[data-position="top-left"])[data-shown] :where(.bs-tooltip-text),
|
|
2513
|
+
:where(.bs-tooltip[data-position="top-right"])[data-shown] :where(.bs-tooltip-text),
|
|
2514
|
+
:where(.bs-tooltip[data-position="bottom-left"])[data-shown] :where(.bs-tooltip-text),
|
|
2515
|
+
:where(.bs-tooltip[data-position="bottom-right"])[data-shown] :where(.bs-tooltip-text) {
|
|
2516
|
+
opacity: 1;
|
|
2517
|
+
transform: scale(1);
|
|
2518
|
+
}
|
|
2519
|
+
/* -------------------- DISABLED -------------------- */
|
|
2520
|
+
/*
|
|
2521
|
+
Don't display unless data-shown is present
|
|
2522
|
+
This must go last to properly override the other classes
|
|
2523
|
+
*/
|
|
2524
|
+
:where(.bs-tooltip[data-disabled]:not([data-shown])):hover :where(.bs-tooltip-text),
|
|
2525
|
+
:where(.bs-tooltip[data-disabled]:not([data-shown])):focus-within :where(.bs-tooltip-text) {
|
|
2526
|
+
opacity: 0;
|
|
2527
|
+
transform: scale(0);
|
|
2528
|
+
}
|