@wwtdev/bsds-css 0.3.0 → 1.0.1

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.
Files changed (34) hide show
  1. package/README.md +39 -3
  2. package/dist/components/_badge.scss +67 -0
  3. package/dist/components/_buttons.scss +193 -0
  4. package/dist/components/_form-booleans.scss +158 -0
  5. package/dist/components/_form-character-count.scss +20 -0
  6. package/dist/components/_form-elements.scss +117 -0
  7. package/dist/components/_form-field-details.scss +19 -0
  8. package/dist/components/_form-hints.scss +14 -0
  9. package/dist/components/_form-labels.scss +22 -0
  10. package/dist/components/_form-switches.scss +137 -0
  11. package/dist/components/_pills.scss +191 -0
  12. package/dist/components/_profile-details.scss +18 -0
  13. package/dist/components/_profile-img.scss +71 -0
  14. package/dist/components/_profile-layout.scss +33 -0
  15. package/dist/components/_tables.scss +84 -0
  16. package/dist/components/badge.css +63 -0
  17. package/dist/components/buttons.css +189 -0
  18. package/dist/components/form-booleans.css +154 -0
  19. package/dist/components/form-character-count.css +16 -0
  20. package/dist/components/form-elements.css +113 -0
  21. package/dist/components/form-field-details.css +15 -0
  22. package/dist/components/form-hints.css +10 -0
  23. package/dist/components/form-labels.css +18 -0
  24. package/dist/components/form-switches.css +133 -0
  25. package/dist/components/pills.css +187 -0
  26. package/dist/components/profile-details.css +14 -0
  27. package/dist/components/profile-img.css +67 -0
  28. package/dist/components/profile-layout.css +29 -0
  29. package/dist/components/tables.css +80 -0
  30. package/dist/wwt-bsds-preset.js +4 -0
  31. package/dist/wwt-bsds-wc-base.css +10 -2
  32. package/dist/wwt-bsds.css +47 -61
  33. package/dist/wwt-bsds.min.css +1 -1
  34. package/package.json +4 -8
@@ -0,0 +1,187 @@
1
+ .bs-pill {
2
+ --pill-background: var(--bs-bg-subtle);
3
+ --pill-border: transparent;
4
+ --pill-text: var(--bs-royal-400);
5
+ --pill-gap: var(--bs-space-2);
6
+
7
+ align-items: center;
8
+ appearance: none;
9
+ background-color: var(--pill-background);
10
+ border: 1px solid var(--pill-border);
11
+ border-radius: 4px;
12
+ color: var(--pill-text);
13
+ display: inline-flex;
14
+ font-size: var(--bs-text-xs);
15
+ gap: var(--pill-gap);
16
+ line-height: 1.33;
17
+ padding: 4px 6px;
18
+ text-decoration: none;
19
+ vertical-align: middle;
20
+ }
21
+ :where(.dark) .bs-pill {
22
+ --pill-text: var(--bs-royal-100);
23
+ }
24
+ :where(.bs-pill > svg) {
25
+ height: 1rem;
26
+ }
27
+
28
+ /* ------------------------------ Button and Link Styles ------------------------------ */
29
+ :is(a, button).bs-pill {
30
+ color: var(--pill-text);
31
+ cursor: pointer;
32
+ transition: all 0.15s ease-in-out;
33
+ }
34
+ :is(a, button).bs-pill:is(:hover, :focus) {
35
+ --pill-border: var(--bs-royal-400);
36
+
37
+ color: var(--pill-text);
38
+ outline: transparent;
39
+ }
40
+ :where(.dark) :is(a, button).bs-pill:is(:hover, :focus) {
41
+ --pill-border: var(--bs-royal-200);
42
+ }
43
+
44
+ /* ------------------------------ Background Colors ------------------------------ */
45
+ :where(.box, [class*="bg-"]:not([class~="bg-white"])) .bs-pill:where(:not([data-variant^="live"], [data-active])) {
46
+ --pill-background: var(--bs-bg-base);
47
+ }
48
+ :where(.box[data-invert]) .bs-pill {
49
+ --pill-background: var(--bs-bg-invert-subtle);
50
+ --pill-text: var(--bs-gray-100);
51
+ }
52
+ :where(.box[data-invert]) :is(a, button).bs-pill:is(:hover, :focus) {
53
+ --pill-border: var(--bs-gray-100);
54
+ }
55
+ :where(.dark .box[data-invert]) .bs-pill {
56
+ --pill-text: var(--bs-royal-400);
57
+ }
58
+ :where(.dark .box[data-invert]) :is(a, button).bs-pill:is(:hover, :focus) {
59
+ --pill-border: var(--bs-royal-400);
60
+ }
61
+
62
+ /* ------------------------------ Status Styles ------------------------------ */
63
+ .bs-pill:where([data-status]) {
64
+ --status-color: var(--bs-blue-400);
65
+ }
66
+ .bs-pill:where([data-status])::before {
67
+ background-color: var(--status-color);
68
+ border-radius: 100%;
69
+ content: '';
70
+ height: 12px;
71
+ width: 12px;
72
+ }
73
+
74
+ /* ----- Status Colors ----- */
75
+ .bs-pill:where([data-status^="active"]) {
76
+ --status-color: var(--bs-blue-400);
77
+ }
78
+ .bs-pill:where([data-status^="complete"]) {
79
+ --status-color: var(--bs-purple-400);
80
+ }
81
+ .bs-pill:where([data-status^="inactive"]) {
82
+ --status-color: var(--bs-gray-300);
83
+ }
84
+ .bs-pill:where([data-status^="error"]) {
85
+ --status-color: var(--bs-red-400);
86
+ }
87
+ .bs-pill:where([data-status^="positive"]) {
88
+ --status-color: #16986D;
89
+ }
90
+ .bs-pill:where([data-status^="warning"]) {
91
+ --status-color: var(--bs-orange-warning);
92
+ }
93
+
94
+ /* ------------------------------ Filter Styles ------------------------------ */
95
+ .bs-pill:where([data-variant^="filter"]) {
96
+ --pill-background: var(--bs-bg-base);
97
+ --pill-border: var(--bs-border);
98
+ --pill-text: var(--bs-ink-base);
99
+ }
100
+ .bs-pill:where([data-variant^="filter"]):is(:hover, :focus) {
101
+ --pill-border: var(--bs-border);
102
+ }
103
+ :is(a, button).bs-pill:where([data-variant^="filter"]):is(:hover, :focus) {
104
+ --pill-border: var(--bs-ink-base);
105
+ }
106
+
107
+ /* ----- Filter Add Styles ----- */
108
+ /* Black + */
109
+ .bs-pill:where([data-variant^="filter"][data-variant*="add"])::after {
110
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M3.5 4.5V8h1V4.5H8v-1H4.5V0h-1v3.5H0v1h3.5Z' fill='%230A0B19'/%3E%3C/svg%3E");
111
+ }
112
+ /* White + */
113
+ :where(.dark) .bs-pill:where([data-variant^="filter"][data-variant*="add"]):not(:disabled, [aria-disabled="true"])::after{
114
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M3.5 4.5V8h1V4.5H8v-1H4.5V0h-1v3.5H0v1h3.5Z' fill='%23ffffff'/%3E%3C/svg%3E");
115
+ }
116
+
117
+
118
+ /* ----- Filter Remove Styles ----- */
119
+ /* Black X */
120
+ .bs-pill:where([data-variant^="filter"][data-variant*="remove"])::after {
121
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%230A0B19'/%3E%3C/svg%3E%0A");
122
+ }
123
+ /* White X */
124
+ :where(.dark) .bs-pill:where([data-variant^="filter"][data-variant*="remove"]):not(:disabled, [aria-disabled="true"])::after {
125
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%23ffffff'/%3E%3C/svg%3E%0A");
126
+ }
127
+ /* Dark Red X */
128
+ .bs-pill:where([data-variant^="filter"][data-variant*="remove"]):hover::after {
129
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%23D91214'/%3E%3C/svg%3E%0A");
130
+ }
131
+ /* Light Red X */
132
+ :where(.dark) .bs-pill:where([data-variant^="filter"][data-variant*="remove"]):hover::after {
133
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%23F15355'/%3E%3C/svg%3E%0A");
134
+ }
135
+
136
+ /* ----- Filter Active Styles ----- */
137
+ .bs-pill:where([data-variant^="filter"][data-active]) {
138
+ --pill-background: var(--bs-blue-400);
139
+ --pill-border: transparent;
140
+ --pill-text: var(--bs-white);
141
+ }
142
+ .bs-pill:where([data-variant^="filter"][data-active]):is(:hover, :focus) {
143
+ --pill-border: transparent;
144
+ }
145
+ :is(a, button).bs-pill:where([data-variant^="filter"][data-active]):is(:hover, :focus) {
146
+ --pill-background: var(--bs-blue-500);
147
+ --pill-border: transparent;
148
+ }
149
+ /* White X */
150
+ .bs-pill:where([data-variant^="filter"][data-active])::after {
151
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%23fff'/%3E%3C/svg%3E");
152
+ }
153
+ /* Black X */
154
+ .bs-pill:where([data-variant^="filter"][data-active]):where(:disabled, [aria-disabled="true"])::after {
155
+ content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%230A0B19'/%3E%3C/svg%3E%0A");
156
+ }
157
+
158
+ /* ------------------------------ Live Now Styles ------------------------------ */
159
+ .bs-pill:where([data-variant^="live"]) {
160
+ --pill-background: var(--bs-royal-400);
161
+ --pill-text: var(--bs-white);
162
+ --pill-gap: var(--bs-space-1);
163
+ text-transform: uppercase;
164
+ }
165
+ .bs-pill:where([data-variant^="live"]):hover {
166
+ --pill-border: transparent;
167
+ }
168
+ .bs-pill:where([data-variant^="live"])::before {
169
+ background-color: var(--bs-red-400);
170
+ border: 3px solid var(--bs-white);
171
+ border-radius: 100%;
172
+ content: '';
173
+ height: 12px;
174
+ width: 12px;
175
+ }
176
+
177
+ /* ----- Disabled Styles ----- */
178
+ .bs-pill:is(:disabled, [aria-disabled="true"]) {
179
+ pointer-events: none;
180
+ color: var(--bs-gray-400);
181
+ background-color: var(--bs-gray-200);
182
+ }
183
+
184
+ .bs-pill:where([data-variant^="filter"]):not([data-active]):is(:disabled, [aria-disabled="true"]) {
185
+ --pill-border: var(--bs-gray-400);
186
+ }
187
+
@@ -0,0 +1,14 @@
1
+ .bs-profile-details {
2
+ color: var(--bs-ink-light);
3
+ font-size: var(--bs-text-sm);
4
+ }
5
+
6
+ .bs-profile-details > :where(*) {
7
+ display: block;
8
+ }
9
+
10
+ .bs-profile-details > :where(*:first-child) {
11
+ --profile-name-color: var(--bs-ink-base);
12
+
13
+ color: var(--profile-name-color);
14
+ }
@@ -0,0 +1,67 @@
1
+ .bs-profile-img,
2
+ .bs-profile-img:where([data-img-size^='sm']) {
3
+ --profile-size: 2rem;
4
+ --profile-text: var(--bs-text-sm);
5
+
6
+ aspect-ratio: 1/1;
7
+ border-radius: 50%;
8
+ height: var(--profile-size);
9
+ overflow: hidden;
10
+ position: relative;
11
+ width: var(--profile-size);
12
+ }
13
+
14
+ .bs-profile-img :where(img) {
15
+ height: 100%;
16
+ object-fit: cover;
17
+ width: 100%;
18
+ }
19
+ .bs-profile-img:where([data-no-img]) img {
20
+ display: none;
21
+ }
22
+
23
+ .bs-profile-img::before,
24
+ .bs-profile-img::after {
25
+ border-radius: 50%;
26
+ border-collapse: collapse;
27
+ height: 100%;
28
+ inset: 0;
29
+ position: absolute;
30
+ width: 100%;
31
+ }
32
+ /* Shadow */
33
+ .bs-profile-img::before {
34
+ box-shadow: var(--bs-shadow-profilePhoto);
35
+ content: '';
36
+ }
37
+ .bs-profile-img:where([data-no-img])::before {
38
+ display: none;
39
+ }
40
+ /* Initials */
41
+ .bs-profile-img:where([data-no-img])::after {
42
+ border: 1px solid currentColor;
43
+ color: var(--bs-blue-500);
44
+ content: attr(data-initials);
45
+ font-size: var(--profile-text);
46
+ text-transform: uppercase;
47
+ display: grid;
48
+ place-items: center;
49
+ }
50
+
51
+ /* Profile Sizes */
52
+ .bs-profile-img:where([data-img-size^='xs']) {
53
+ --profile-size: 1.5rem;
54
+ --profile-text: var(--bs-text-xs);
55
+ }
56
+ .bs-profile-img:where([data-img-size^='md']) {
57
+ --profile-size: 3rem;
58
+ --profile-text: var(--bs-text-md);
59
+ }
60
+ .bs-profile-img:where([data-img-size^='lg']) {
61
+ --profile-size: 4rem;
62
+ --profile-text: var(--bs-text-lg);
63
+ }
64
+ .bs-profile-img:where([data-img-size^='xl']) {
65
+ --profile-size: 5.75rem;
66
+ --profile-text: var(--bs-text-xl);
67
+ }
@@ -0,0 +1,29 @@
1
+ /* Profile with User Details */
2
+ .bs-profile:where([data-layout]),
3
+ .bs-profile:where([data-layout^='vertical']) {
4
+ display: grid;
5
+ row-gap: 0.5rem;
6
+ }
7
+
8
+ .bs-profile:where([data-layout^='horizontal']) {
9
+ column-gap: 1rem;
10
+ grid-template-columns: auto 1fr;
11
+ align-items: center;
12
+ }
13
+
14
+ /* When wrapped in a link */
15
+ a.bs-profile:where([data-layout]) {
16
+ text-decoration: none;
17
+ }
18
+
19
+ a.bs-profile:where([data-layout]) .bs-profile-details > *:first-child {
20
+ --profile-name-color: var(--bs-blue-500);
21
+ }
22
+
23
+ a.bs-profile:where([data-layout]):hover .bs-profile-details > *:first-child {
24
+ text-decoration: underline;
25
+ }
26
+
27
+ .dark a.bs-profile:where([data-layout]) .bs-profile-details > *:first-child {
28
+ --profile-name-color: var(--bs-blue-200);
29
+ }
@@ -0,0 +1,80 @@
1
+ table {
2
+ border-collapse: collapse;
3
+ border-spacing: 0;
4
+ overflow-x: auto;
5
+ max-width: 100%;
6
+ width: 100%;
7
+ }
8
+ thead {
9
+ color: var(--bs-ink-base);
10
+ font-size: var(--bs-font-base);
11
+ font-weight: 600;
12
+ }
13
+ tbody {
14
+ color: var(--bs-ink-light);
15
+ }
16
+ th {
17
+ background: var(--bs-bg-base);
18
+ }
19
+ th, td {
20
+ border-bottom: 1px solid var(--bs-border);
21
+ min-width: fit-content;
22
+ padding: var(--bs-space-2);
23
+ text-align: left;
24
+ }
25
+
26
+ /* Table Borders */
27
+ table[data-borders^="none"] {
28
+ border: 0;
29
+ }
30
+ table[data-borders^="all"] :where(th, td) {
31
+ border-left: 1px solid var(--bs-border);
32
+ }
33
+ table[data-borders^="all"] :where(th, td):last-child {
34
+ border-right: 1px solid var(--bs-border);
35
+ }
36
+ table[data-borders^="all"] th {
37
+ border-top: 1px solid var(--bs-border);
38
+ }
39
+
40
+ /* Table Rows */
41
+ table:where([data-rows^="striped"]) tbody > tr:nth-child(even) {
42
+ background-color: var(--bs-bg-subtle);
43
+ }
44
+
45
+ /* Table Cells */
46
+ table[data-cells^="fixed"] {
47
+ table-layout: fixed;
48
+ }
49
+ table:where([data-cells^="height"]) td {
50
+ height: 4.5rem;
51
+ vertical-align: middle;
52
+ }
53
+
54
+ /* Sticky Header */
55
+ table:where([data-sticky]) {
56
+ isolation: isolate;
57
+ }
58
+ table:where([data-sticky^="top"]) td {
59
+ z-index: 1;
60
+ }
61
+ table:where([data-sticky^="top"]) {
62
+ border-collapse: separate;
63
+ overflow-y: unset; /* Will break sticky headers if removed */
64
+ position: relative;
65
+ }
66
+ table:where([data-sticky^="left"]) {
67
+ border-collapse: separate;
68
+ overflow-x: unset; /* Will break sticky headers if removed */
69
+ position: relative;
70
+ }
71
+ table:where([data-sticky^="top"]) th {
72
+ position: sticky;
73
+ top: var(--bs-content-top);
74
+ z-index: 2;
75
+ }
76
+ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
77
+ position: sticky;
78
+ left: 0;
79
+ z-index: 2;
80
+ }
@@ -2,6 +2,10 @@ const defaultTheme = require('tailwindcss/defaultTheme')
2
2
 
3
3
  module.exports = {
4
4
  darkMode: "class",
5
+ corePlugins: {
6
+ // disable tailwind's css reset, because blue steel has its own
7
+ preflight: false
8
+ },
5
9
  theme: {
6
10
  backgroundColor: ({ theme }) => theme("colors"),
7
11
  colors: {
@@ -162,12 +162,20 @@
162
162
  --bs-shadow-profilePhoto: inset 0px 0px 0.5em rgba(28, 0, 135, 0.25);
163
163
  }
164
164
 
165
- /* Box sizing rules */
165
+ /*
166
+ 1. Prevent padding and border from affecting element width.
167
+ 2. Allow adding a border to an element by just adding a border-width. This fixes an issue
168
+ where Tailwind border classes no longer worked when using BS reset instead of TW's reset.
169
+ https://tailwindcss.com/docs/preflight#border-styles-are-reset-globally
170
+ */
166
171
 
167
172
  *,
168
173
  *::before,
169
174
  *::after {
170
- box-sizing: border-box;
175
+ box-sizing: border-box; /* 1 */
176
+ border-width: 0; /* 2 */
177
+ border-style: solid; /* 2 */
178
+ border-color: currentColor; /* 2 */
171
179
  }
172
180
 
173
181
  /* Remove default margin */
package/dist/wwt-bsds.css CHANGED
@@ -162,12 +162,20 @@
162
162
  --bs-shadow-profilePhoto: inset 0px 0px 0.5em rgba(28, 0, 135, 0.25);
163
163
  }
164
164
 
165
- /* Box sizing rules */
165
+ /*
166
+ 1. Prevent padding and border from affecting element width.
167
+ 2. Allow adding a border to an element by just adding a border-width. This fixes an issue
168
+ where Tailwind border classes no longer worked when using BS reset instead of TW's reset.
169
+ https://tailwindcss.com/docs/preflight#border-styles-are-reset-globally
170
+ */
166
171
 
167
172
  *,
168
173
  *::before,
169
174
  *::after {
170
- box-sizing: border-box;
175
+ box-sizing: border-box; /* 1 */
176
+ border-width: 0; /* 2 */
177
+ border-style: solid; /* 2 */
178
+ border-color: currentColor; /* 2 */
171
179
  }
172
180
 
173
181
  /* Remove default margin */
@@ -719,6 +727,7 @@ body:where(.fluid) {
719
727
  display: inline-flex;
720
728
  font-size: var(--bs-text-md);
721
729
  font-weight: 600;
730
+ justify-content: center;
722
731
  line-height: 1.5;
723
732
  outline: 2px solid transparent;
724
733
  padding: var(--bs-space-1) var(--bs-space-4) calc(var(--bs-space-1) * 1.5);
@@ -954,36 +963,35 @@ textarea, select {
954
963
 
955
964
  /* Generally applicable (all input types) */
956
965
 
957
- select::-moz-placeholder {
966
+ :is(input, textarea, select)::-moz-placeholder {
958
967
  color: var(--bs-violet-200);
959
968
  opacity: 1;
960
969
  }
961
970
 
962
- input, textarea, select::placeholder {
971
+ :is(input, textarea, select)::placeholder {
963
972
  color: var(--bs-violet-200);
964
973
  opacity: 1;
965
974
  }
966
975
 
967
- :where(input, textarea, select):focus {
976
+ :is(input, textarea, select):focus {
968
977
  box-shadow: 0 0 0 2px var(--offset-color, var(--bs-bg-base)),
969
978
  0 0 0 4px var(--outline-color, var(--bs-blue-400));
970
979
  outline: 2px solid transparent;
971
980
  }
972
981
 
973
- :where(.box) :where(input, textarea, select):focus {
982
+ :where(.box) :is(input, textarea, select):focus {
974
983
  --offset-color: var(--bs-bg-subtle);
975
984
  }
976
985
 
977
- :where(.box[data-invert]) :where(input, textarea, select):focus {
986
+ :where(.box[data-invert]) :is(input, textarea, select):focus {
978
987
  --offset-color: var(--bs-bg-invert);
979
988
  }
980
989
 
981
- :where(input, textarea, select)[required]:focus,
982
- :where(input, textarea, select)[data-error] {
990
+ :is(input, textarea, select):where([data-error]) {
983
991
  --outline-color: var(--bs-red-200);
984
992
  }
985
993
 
986
- :where(input, textarea, select):disabled {
994
+ :is(input, textarea, select):disabled {
987
995
  background-color: var(--bs-gray-200);
988
996
  border-color: var(--bs-gray-400);
989
997
  color: var(--bs-gray-400);
@@ -1006,13 +1014,13 @@ see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
1006
1014
  opacity: 1;
1007
1015
  }
1008
1016
 
1009
- :where(input, textarea, select):disabled::-moz-placeholder, :where(input, textarea, select)[disabled]::-moz-placeholder {
1017
+ :is(input, textarea, select):disabled::-moz-placeholder, :is(input, textarea, select)[disabled]::-moz-placeholder {
1010
1018
  color: var(--bs-gray-400);
1011
1019
  opacity: 1;
1012
1020
  }
1013
1021
 
1014
- :where(input, textarea, select):disabled::placeholder,
1015
- :where(input, textarea, select)[disabled]::placeholder {
1022
+ :is(input, textarea, select):disabled::placeholder,
1023
+ :is(input, textarea, select)[disabled]::placeholder {
1016
1024
  color: var(--bs-gray-400);
1017
1025
  opacity: 1;
1018
1026
  }
@@ -1039,8 +1047,8 @@ select {
1039
1047
 
1040
1048
  /* Errors and Messages */
1041
1049
 
1042
- input:where([data-error]) {
1043
- border-color: var(--bs-red-400);
1050
+ :is(input, select, textarea):where([data-error]) {
1051
+ --input-border: var(--bs-red-400);
1044
1052
  }
1045
1053
 
1046
1054
  /* Fieldset */
@@ -1447,7 +1455,7 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1447
1455
 
1448
1456
  /* ------------------------------ Background Colors ------------------------------ */
1449
1457
 
1450
- :where(.box, [class*="bg-"]:not([class~="bg-white"])) .bs-pill:where(:not([data-variant^="live"], [data-variant^="restricted"], [data-active])) {
1458
+ :where(.box, [class*="bg-"]:not([class~="bg-white"])) .bs-pill:where(:not([data-variant^="live"], [data-active])) {
1451
1459
  --pill-background: var(--bs-bg-base);
1452
1460
  }
1453
1461
 
@@ -1593,28 +1601,6 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1593
1601
  content: url("data:image/svg+xml,%3Csvg width='8' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .703 7.297 0 4 3.297.703 0 0 .703 3.297 4 0 7.297.703 8 4 4.703 7.297 8 8 7.297 4.703 4 8 .703Z' fill='%230A0B19'/%3E%3C/svg%3E%0A");
1594
1602
  }
1595
1603
 
1596
- /* ------------------------------ Restricted Styles ------------------------------ */
1597
-
1598
- .bs-pill:where([data-variant^="restricted"]) {
1599
- --pill-background: var(--bs-gray-400);
1600
- --pill-text: var(--bs-white);
1601
- --pill-gap: var(--bs-space-1);
1602
- }
1603
-
1604
- .bs-pill:where([data-variant^="restricted"]):hover {
1605
- --pill-border: transparent;
1606
- }
1607
-
1608
- .bs-pill:where([data-variant^="restricted"])::before {
1609
- content: url("data:image/svg+xml,%3Csvg width='11' height='12' viewBox='0 0 8 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.25 4.5H7v3.715a.34.34 0 0 1-.37.285H1V5.285A.34.34 0 0 1 1.37 5h5a.25.25 0 0 0 .25-.25V3.275A2.545 2.545 0 0 0 4 1a2.55 2.55 0 0 0-2.625 2.29L1.39 4.5a.83.83 0 0 0-.89.785V8.75A.25.25 0 0 0 .75 9h5.88a.835.835 0 0 0 .87-.785V4.75a.25.25 0 0 0-.25-.25Zm-2.225 0H2.96V3.425c0-.035 0-.845 1.03-.845a.96.96 0 0 1 1.035.8V4.5ZM4 1.5a2.045 2.045 0 0 1 2.115 1.79V4.5h-.59V3.37A1.455 1.455 0 0 0 4 2.075a1.385 1.385 0 0 0-1.53 1.35V4.5h-.58V3.31A2.045 2.045 0 0 1 4 1.5Zm-.495 4.25H1.5v.5h2.005v-.5Zm-2.005 1h1.505v.5H1.5v-.5Z' fill='%23F0F0FA'/%3E%3C/svg%3E");
1610
- line-height: 1.1;
1611
- }
1612
-
1613
- :where(.dark) .bs-pill:where([data-variant^="restricted"]) {
1614
- --pill-background: var(--bs-navy-300);
1615
- --pill-text: var(--bs-white);
1616
- }
1617
-
1618
1604
  /* ------------------------------ Live Now Styles ------------------------------ */
1619
1605
 
1620
1606
  .bs-pill:where([data-variant^="live"]) {
@@ -1649,8 +1635,8 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1649
1635
  --pill-border: var(--bs-gray-400);
1650
1636
  }
1651
1637
 
1652
- .profile-img,
1653
- .profile-img:where([data-img-size^='sm']) {
1638
+ .bs-profile-img,
1639
+ .bs-profile-img:where([data-img-size^='sm']) {
1654
1640
  --profile-size: 2rem;
1655
1641
  --profile-text: var(--bs-text-sm);
1656
1642
 
@@ -1662,19 +1648,19 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1662
1648
  width: var(--profile-size);
1663
1649
  }
1664
1650
 
1665
- .profile-img :where(img) {
1651
+ .bs-profile-img :where(img) {
1666
1652
  height: 100%;
1667
1653
  -o-object-fit: cover;
1668
1654
  object-fit: cover;
1669
1655
  width: 100%;
1670
1656
  }
1671
1657
 
1672
- .profile-img:where([data-no-img]) img {
1658
+ .bs-profile-img:where([data-no-img]) img {
1673
1659
  display: none;
1674
1660
  }
1675
1661
 
1676
- .profile-img::before,
1677
- .profile-img::after {
1662
+ .bs-profile-img::before,
1663
+ .bs-profile-img::after {
1678
1664
  border-radius: 50%;
1679
1665
  border-collapse: collapse;
1680
1666
  height: 100%;
@@ -1685,18 +1671,18 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1685
1671
 
1686
1672
  /* Shadow */
1687
1673
 
1688
- .profile-img::before {
1674
+ .bs-profile-img::before {
1689
1675
  box-shadow: var(--bs-shadow-profilePhoto);
1690
1676
  content: '';
1691
1677
  }
1692
1678
 
1693
- .profile-img:where([data-no-img])::before {
1679
+ .bs-profile-img:where([data-no-img])::before {
1694
1680
  display: none;
1695
1681
  }
1696
1682
 
1697
1683
  /* Initials */
1698
1684
 
1699
- .profile-img:where([data-no-img])::after {
1685
+ .bs-profile-img:where([data-no-img])::after {
1700
1686
  border: 1px solid currentColor;
1701
1687
  color: var(--bs-blue-500);
1702
1688
  content: attr(data-initials);
@@ -1708,36 +1694,36 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1708
1694
 
1709
1695
  /* Profile Sizes */
1710
1696
 
1711
- .profile-img:where([data-img-size^='xs']) {
1697
+ .bs-profile-img:where([data-img-size^='xs']) {
1712
1698
  --profile-size: 1.5rem;
1713
1699
  --profile-text: var(--bs-text-xs);
1714
1700
  }
1715
1701
 
1716
- .profile-img:where([data-img-size^='md']) {
1702
+ .bs-profile-img:where([data-img-size^='md']) {
1717
1703
  --profile-size: 3rem;
1718
1704
  --profile-text: var(--bs-text-md);
1719
1705
  }
1720
1706
 
1721
- .profile-img:where([data-img-size^='lg']) {
1707
+ .bs-profile-img:where([data-img-size^='lg']) {
1722
1708
  --profile-size: 4rem;
1723
1709
  --profile-text: var(--bs-text-lg);
1724
1710
  }
1725
1711
 
1726
- .profile-img:where([data-img-size^='xl']) {
1712
+ .bs-profile-img:where([data-img-size^='xl']) {
1727
1713
  --profile-size: 5.75rem;
1728
1714
  --profile-text: var(--bs-text-xl);
1729
1715
  }
1730
1716
 
1731
- :where(.profile-details) {
1717
+ .bs-profile-details {
1732
1718
  color: var(--bs-ink-light);
1733
1719
  font-size: var(--bs-text-sm);
1734
1720
  }
1735
1721
 
1736
- :where(.profile-details > *) {
1722
+ .bs-profile-details > :where(*) {
1737
1723
  display: block;
1738
1724
  }
1739
1725
 
1740
- :where(.profile-details > *:first-child) {
1726
+ .bs-profile-details > :where(*:first-child) {
1741
1727
  --profile-name-color: var(--bs-ink-base);
1742
1728
 
1743
1729
  color: var(--profile-name-color);
@@ -1745,13 +1731,13 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1745
1731
 
1746
1732
  /* Profile with User Details */
1747
1733
 
1748
- :where(.profile[data-layout]),
1749
- :where(.profile[data-layout^='vertical']) {
1734
+ .bs-profile:where([data-layout]),
1735
+ .bs-profile:where([data-layout^='vertical']) {
1750
1736
  display: grid;
1751
1737
  row-gap: 0.5rem;
1752
1738
  }
1753
1739
 
1754
- :where(.profile[data-layout^='horizontal']) {
1740
+ .bs-profile:where([data-layout^='horizontal']) {
1755
1741
  -moz-column-gap: 1rem;
1756
1742
  column-gap: 1rem;
1757
1743
  grid-template-columns: auto 1fr;
@@ -1760,19 +1746,19 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1760
1746
 
1761
1747
  /* When wrapped in a link */
1762
1748
 
1763
- a.profile[data-layout] {
1749
+ a.bs-profile:where([data-layout]) {
1764
1750
  text-decoration: none;
1765
1751
  }
1766
1752
 
1767
- a.profile[data-layout] .profile-details > *:first-child {
1753
+ a.bs-profile:where([data-layout]) .bs-profile-details > *:first-child {
1768
1754
  --profile-name-color: var(--bs-blue-500);
1769
1755
  }
1770
1756
 
1771
- a.profile[data-layout]:hover .profile-details > *:first-child {
1757
+ a.bs-profile:where([data-layout]):hover .bs-profile-details > *:first-child {
1772
1758
  text-decoration: underline;
1773
1759
  }
1774
1760
 
1775
- .dark a.profile[data-layout] .profile-details > *:first-child {
1761
+ .dark a.bs-profile:where([data-layout]) .bs-profile-details > *:first-child {
1776
1762
  --profile-name-color: var(--bs-blue-200);
1777
1763
  }
1778
1764