@wwtdev/bsds-css 1.16.4 → 2.0.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.
@@ -36,7 +36,8 @@
36
36
 
37
37
  /* Checkbox & Radio Input */
38
38
 
39
- :where(input[type='checkbox'], input[type='radio']) {
39
+ :where(input[type='checkbox'], input[type='radio']),
40
+ .bs-boolean :where(input) {
40
41
  --box-shadow: var(--bs-ink-base);
41
42
 
42
43
  appearance: none;
@@ -51,23 +52,27 @@
51
52
  width: 1rem;
52
53
  }
53
54
 
54
- :where(input[type='checkbox'], input[type='radio']):focus-visible {
55
+ :where(input[type='checkbox'], input[type='radio']):focus-visible,
56
+ .bs-boolean :where(input):focus-visible {
55
57
  box-shadow: inset 0 0 0 0.125rem var(--box-shadow),
56
58
  0 0 0 2px var(--offset-color, var(--bs-bg-base)),
57
59
  0 0 0 4px var(--outline-color, var(--bs-blue-base));
58
60
  outline: 2px solid transparent;
59
61
  }
60
62
 
61
- :where(input[type='checkbox']) {
63
+ :where(input[type='checkbox']),
64
+ .bs-boolean :where([type='checkbox']) {
62
65
  border-radius: 0.125rem;
63
66
  }
64
67
 
65
- :where(input[type='radio']) {
68
+ :where(input[type='radio']),
69
+ .bs-boolean :where([type='radio']) {
66
70
  border-radius: 50%;
67
71
  }
68
72
 
69
73
  /* Checkbox's checkmark */
70
- input:where([type='checkbox'])::before {
74
+ input:where([type='checkbox'])::before,
75
+ .bs-boolean :where([type="checkbox"])::before {
71
76
  --filled-size: 1rem;
72
77
  --check-fill-color: var(--bs-blue-base);
73
78
 
@@ -79,7 +84,8 @@ input:where([type='checkbox'])::before {
79
84
  width: var(--filled-size);
80
85
  }
81
86
 
82
- input:where([type='checkbox'])::after {
87
+ input:where([type='checkbox'])::after,
88
+ .bs-boolean :where([type="checkbox"])::after {
83
89
  border: solid var(--bs-white);
84
90
  border-width: 0 0.125rem 0.125rem 0;
85
91
  content: '';
@@ -93,7 +99,8 @@ input:where([type='checkbox'])::after {
93
99
  width: 0.375em;
94
100
  }
95
101
 
96
- input:where([type='checkbox']):where(:indeterminate)::after {
102
+ input:where([type='checkbox']):where(:indeterminate)::after,
103
+ .bs-boolean :where([type="checkbox"]):where(:indeterminate)::after {
97
104
  border: none;
98
105
  background-color: var(--bs-white);
99
106
  height: 0.125rem;
@@ -102,7 +109,8 @@ input:where([type='checkbox']):where(:indeterminate)::after {
102
109
  }
103
110
 
104
111
  /* Radio's dot */
105
- input:where([type='radio'])::before {
112
+ input:where([type='radio'])::before,
113
+ .bs-boolean :where([type="radio"])::before {
106
114
  --filled-size: 1rem;
107
115
  --radio-fill-color: var(--bs-blue-base);
108
116
 
@@ -115,7 +123,8 @@ input:where([type='radio'])::before {
115
123
  width: var(--filled-size);
116
124
  }
117
125
 
118
- input:where([type='radio'])::after {
126
+ input:where([type='radio'])::after,
127
+ .bs-boolean :where([type="radio"])::after {
119
128
  --inner-size: 0.375rem;
120
129
  --inner-fill-color: var(--bs-white);
121
130
 
@@ -133,7 +142,9 @@ input:where([type='radio'])::after {
133
142
  }
134
143
 
135
144
  input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='radio']:checked)::before,
136
- input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='radio']:checked)::after {
145
+ input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='radio']:checked)::after,
146
+ .bs-boolean :where(:checked, :indeterminate)::before,
147
+ .bs-boolean :where(:checked, :indeterminate)::after {
137
148
  visibility: visible;
138
149
  }
139
150
 
@@ -158,25 +169,30 @@ input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='r
158
169
 
159
170
  /* Disabled State */
160
171
 
161
- input:where([type='checkbox'], [type='radio']):disabled {
172
+ input:where([type='checkbox'], [type='radio']):disabled,
173
+ .bs-boolean :where(input):disabled {
162
174
  --box-shadow: var(--bs-bg-disabled);
163
175
  background-color: transparent;
164
176
  cursor: default;
165
177
  }
166
178
 
167
179
  input:where([type='checkbox']):checked:disabled::before,
168
- input:where([type='checkbox']):indeterminate:disabled::before {
180
+ input:where([type='checkbox']):indeterminate:disabled::before,
181
+ .bs-boolean :where(input[type="checkbox"]):checked:disabled::before,
182
+ .bs-boolean :where(input[type="checkbox"]):indeterminate:disabled::before {
169
183
  --check-fill-color: var(--bs-bg-disabled);
170
184
  }
171
185
 
172
- input:where([type='radio']):checked:disabled::before {
186
+ input:where([type='radio']):checked:disabled::before,
187
+ .bs-boolean :where(input[type="radio"]):checked:disabled::before {
173
188
  --radio-fill-color: var(--bs-bg-disabled);
174
189
  }
175
190
 
176
191
 
177
192
  /* Error state */
178
193
 
179
- input:where([type='checkbox'], [type='radio'])[data-error]:where(:not([data-error="false"])) {
194
+ input:where([type='checkbox'], [type='radio'])[data-error]:where(:not([data-error="false"])),
195
+ .bs-boolean :where(input[data-error="true"]) {
180
196
  --box-shadow: var(--bs-red-base);
181
197
  --outline-color: var(--bs-red-base);
182
198
  }
@@ -6,12 +6,12 @@
6
6
  white-space: nowrap;
7
7
  }
8
8
 
9
- :where([disabled], [data-disabled]) + .bs-character-count,
10
- :where([disabled], [data-disabled]) .bs-character-count,
11
- .bs-character-count:where([data-disabled]) {
9
+ :where(:disabled, [data-disabled="true"]) + .bs-character-count,
10
+ :where(:disabled, [data-disabled="true"]) .bs-character-count,
11
+ .bs-character-count:where([data-disabled="true"]) {
12
12
  color: var(--bs-ink-disabled);
13
13
  }
14
14
 
15
- .bs-character-count:where([data-error]) {
15
+ .bs-character-count:where([data-error="true"]) {
16
16
  color: var(--bs-ink-red);
17
17
  }
@@ -8,15 +8,18 @@
8
8
  color: var(--bs-gray-400);
9
9
  }
10
10
 
11
- :where(.box) :is(input, textarea, select):where(:focus-visible) {
11
+ :where(.box) :is(input, textarea, select):where(:focus-visible),
12
+ :where(.box) :is(.bs-input, .bs-textarea, .bs-select):where(:focus-visible) {
12
13
  --offset-color: var(--bs-bg-medium);
13
14
  }
14
- :where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible) {
15
+ :where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible),
16
+ :where(.box[data-invert]) :is(.bs-input, .bs-textarea, .bs-select):where(:focus-visible) {
15
17
  --offset-color: var(--bs-bg-invert-base);
16
18
  }
17
19
 
18
20
  /* Errors and Messages */
19
- :is(input, select, textarea):where([data-error]:not([data-error="false"])) {
21
+ :is(input, select, textarea):where([data-error]:not([data-error="false"])),
22
+ :is(.bs-input, .bs-select, .bs-textarea):where([data-error]:not([data-error="false"])) {
20
23
  --input-border: var(--bs-ink-red);
21
24
  }
22
25
 
@@ -1,3 +1,4 @@
1
+ .bs-label,
1
2
  :where(label, legend) {
2
3
  --label-color: var(--bs-ink-base);
3
4
 
@@ -9,18 +10,14 @@
9
10
  width: 100%;
10
11
  }
11
12
 
12
- :where([data-required]:not([data-required="false"])) {
13
- color: var(--bs-ink-red);
13
+ :where([data-required]:not([data-required="false"])),
14
+ .bs-label :where([data-required="true"]) {
15
+ --label-color: var(--bs-ink-red);
14
16
  }
15
17
 
16
- :where(label[data-disabled]:not([data-disabled="false"])) {
17
- --label-color: var(--bs-ink-disabled);
18
- }
19
-
20
- :where([data-disabled]:not([data-disabled="false"]) [data-required]:not([data-required="false"])) {
21
- --label-color: var(--bs-ink-disabled);
22
- }
23
-
24
- :where([data-disabled]:not([data-disabled="false"])) label {
18
+ :where(label[data-disabled]:not([data-disabled="false"])),
19
+ :where(label[data-disabled]:not([data-disabled="false"])) *,
20
+ .bs-label:where([data-disabled="true"]),
21
+ .bs-label:where([data-disabled="true"]) * {
25
22
  --label-color: var(--bs-ink-disabled);
26
23
  }
@@ -5,7 +5,9 @@
5
5
  }
6
6
 
7
7
  input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
8
- textarea, select {
8
+ textarea,
9
+ select,
10
+ :is(.bs-input, .bs-select, .bs-textarea) {
9
11
  --input-bg: var(--bs-bg-base);
10
12
  --input-border: var(--bs-violet-medium);
11
13
  appearance: none;
@@ -22,49 +24,62 @@ textarea, select {
22
24
  line-height: var(--bs-leading-base);
23
25
  min-height: 2.5rem;
24
26
  padding-inline: 0.75rem;
27
+ }
28
+
29
+ input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
30
+ textarea,
31
+ select {
25
32
  width: 100%;
26
33
  }
27
34
 
28
35
  input:where([type='text'], [type='email'], [type='url']),
29
- select {
36
+ select,
37
+ .bs-input:where([type='text'], [type='email'], [type='url']),
38
+ .bs-select {
30
39
  text-overflow: ellipsis;
31
40
  }
32
41
 
42
+ .bs-textarea,
33
43
  textarea {
34
44
  height: auto;
35
45
  padding-block: 0.5rem;
36
46
  resize: vertical;
37
47
  }
38
48
 
39
- :is(input, textarea, select)::placeholder {
49
+ :is(input, textarea, select)::placeholder,
50
+ :is(.bs-input, .bs-select, .bs-textarea)::placeholder {
40
51
  color: var(--bs-violet-lightest);
41
52
  }
42
- :is(input, textarea, select):where(:focus-visible)::placeholder {
53
+ :is(input, textarea, select):where(:focus-visible)::placeholder,
54
+ :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible)::placeholder {
43
55
  opacity: 0;
44
56
  }
45
57
 
46
- :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible) {
58
+ :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible),
59
+ :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible) {
47
60
  --input-border: var(--bs-blue-base);
48
61
  outline-width: 0px;
49
62
  }
50
63
 
51
- :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled) {
64
+ :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled),
65
+ :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
52
66
  --input-border: var(--bs-ink-disabled);
53
67
  --input-bg: var(--bs-bg-disabled);
54
68
  color: var(--bs-ink-disabled);
55
69
  }
56
70
 
57
71
  /* Errors and Messages */
58
- :is(input, select, textarea):where([data-error]:not([data-error="false"])) {
72
+ :is(input, select, textarea):where([data-error]:not([data-error="false"])),
73
+ :is(.bs-input, .bs-select, .bs-textarea):where([data-error="true"]) {
59
74
  --input-border: var(--bs-ink-red);
60
75
  }
61
76
 
62
77
  /*
63
78
  Removes the built-in 'margin' on bottom of textarea
64
79
  see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
65
- :has not fully supported yet but will work for most
66
80
  */
67
- :has(> textarea:only-child) {
81
+ :has(> textarea:only-child),
82
+ :has(> .bs-textarea:only-child) {
68
83
  display: block;
69
84
  line-height: 0;
70
85
  }
@@ -75,14 +90,17 @@ see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
75
90
  }
76
91
 
77
92
  :is(input, textarea, select):disabled::placeholder,
78
- :is(input, textarea, select)[disabled]::placeholder {
93
+ :is(input, textarea, select)[disabled]::placeholder,
94
+ :is(.bs-input, .bs-textarea, .bs-select):disabled::placeholder,
95
+ :is(.bs-input, .bs-textarea, .bs-select)[disabled]::placeholder {
79
96
  color: var(--bs-ink-disabled);
80
97
  opacity: 1;
81
98
  }
82
99
 
83
100
  /* Select */
84
101
 
85
- select {
102
+ select,
103
+ .bs-select {
86
104
  /* URL Encoded SVG dropdown caret so there is something there */
87
105
  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='%230A0B19' 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");
88
106
  background-position: right 0.75rem center;
@@ -90,12 +108,14 @@ select {
90
108
  background-size: 1em 1em;
91
109
  padding-right: var(--bs-space-9);
92
110
  }
93
- .dark select {
111
+ .dark select,
112
+ .dark .bs-select {
94
113
  /* URL Encoded SVG dropdown caret so there is something there */
95
114
  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='%23ffffff' 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");
96
115
  }
97
116
 
98
- .dark select:disabled {
117
+ .dark select:disabled,
118
+ .dark .bs-select:disabled {
99
119
  /* URL Encoded SVG dropdown caret so there is something there */
100
120
  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");
101
121
  }
@@ -32,31 +32,32 @@
32
32
  }
33
33
 
34
34
  /* ----- loader dots ----- */
35
- .bs-loader > :where(div) {
35
+ .bs-loader > :where(*:not(.visually-hidden)) {
36
36
  background-color: var(--loader-dot-bg);
37
37
  border-radius: 50%;
38
+ display: block;
38
39
  height: var(--loader-dot-size);
39
40
  position: absolute;
40
41
  top: var(--loader-dot-top);
41
42
  width: var(--loader-dot-size);
42
43
  }
43
44
 
44
- .bs-loader > :where(div) {
45
+ .bs-loader > :where(*:not(.visually-hidden)) {
45
46
  animation-timing-function: cubic-bezier(0, 1, 1, 0);
46
47
  }
47
- .bs-loader > :where(div:nth-child(1)) {
48
+ .bs-loader > :where(*:nth-child(1)) {
48
49
  animation: loading-1 0.6s infinite;
49
50
  left: 0%;
50
51
  }
51
- .bs-loader > :where(div:nth-child(2)) {
52
+ .bs-loader > :where(*:nth-child(2)) {
52
53
  animation: loading-2 0.6s infinite;
53
54
  left: 0%;
54
55
  }
55
- .bs-loader > :where(div:nth-child(3)) {
56
+ .bs-loader > :where(*:nth-child(3)) {
56
57
  animation: loading-2 0.6s infinite;
57
58
  left: 40%;
58
59
  }
59
- .bs-loader > :where(div:nth-child(4)) {
60
+ .bs-loader > :where(*:nth-child(4)) {
60
61
  animation: loading-3 0.6s infinite;
61
62
  left: 80%;
62
63
  }
@@ -1,6 +1,7 @@
1
1
  .bs-profile-details {
2
2
  color: var(--bs-ink-light);
3
3
  font-size: var(--bs-text-sm);
4
+ line-height: 1.3;
4
5
  }
5
6
 
6
7
  .bs-profile-details > :where(*) {
@@ -17,11 +18,23 @@
17
18
  color: var(--profile-action-color, var(--bs-orange-warning));
18
19
  font-size: inherit;
19
20
  }
21
+ .bs-profile-details > :where(button:first-child:hover) {
22
+ text-decoration: underline;
23
+ }
24
+ /* Remove the profile name underline when hovering on the action button. */
25
+ .bs-profile-details:has(:where(button:first-child:hover)) {
26
+ --profile-name-decoration: none;
27
+ }
28
+
20
29
  /* Action button and optional meta details w/ icon */
21
30
  .bs-profile-details > :where([data-icon]) {
22
- align-items: normal;
31
+ align-items: center;
23
32
  column-gap: 0.5rem;
24
33
  cursor: pointer;
25
34
  display: flex;
26
35
  font-size: inherit;
27
36
  }
37
+ .bs-profile-details .bs-icon {
38
+ height: .75rem;
39
+ width: .75rem;
40
+ }
@@ -19,7 +19,6 @@
19
19
  justify-content: var(--tab-justify);
20
20
  line-height: 1.5;
21
21
  opacity: var(--tab-list-opacity);
22
- overflow: hidden;
23
22
  position: relative;
24
23
  width: 100%;
25
24
  }
@@ -395,9 +395,9 @@ button {
395
395
  --bs-gray-light: var(--bs-gray-400);
396
396
  --bs-gray-lightest: var(--bs-gray-500);
397
397
 
398
- --bs-border-dark: var(--bs-gray-400);
399
- --bs-border-base: var(--bs-gray-200);
400
- --bs-border-light: var(--bs-gray-100);
398
+ --bs-border-dark: var(--bs-gray-200);
399
+ --bs-border-base: var(--bs-gray-400);
400
+ --bs-border-light: var(--bs-gray-500);
401
401
 
402
402
  --bs-shadow-base: rgba(0, 0, 0, 0.06);
403
403
  --bs-shadow-invert: rgba(10, 11, 25, 0.60);