@wwtdev/bsds-css 0.3.0 → 1.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.
@@ -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
+ }
package/dist/wwt-bsds.css CHANGED
@@ -719,6 +719,7 @@ body:where(.fluid) {
719
719
  display: inline-flex;
720
720
  font-size: var(--bs-text-md);
721
721
  font-weight: 600;
722
+ justify-content: center;
722
723
  line-height: 1.5;
723
724
  outline: 2px solid transparent;
724
725
  padding: var(--bs-space-1) var(--bs-space-4) calc(var(--bs-space-1) * 1.5);
@@ -954,36 +955,36 @@ textarea, select {
954
955
 
955
956
  /* Generally applicable (all input types) */
956
957
 
957
- select::-moz-placeholder {
958
+ :is(input, textarea, select)::-moz-placeholder {
958
959
  color: var(--bs-violet-200);
959
960
  opacity: 1;
960
961
  }
961
962
 
962
- input, textarea, select::placeholder {
963
+ :is(input, textarea, select)::placeholder {
963
964
  color: var(--bs-violet-200);
964
965
  opacity: 1;
965
966
  }
966
967
 
967
- :where(input, textarea, select):focus {
968
+ :is(input, textarea, select):focus {
968
969
  box-shadow: 0 0 0 2px var(--offset-color, var(--bs-bg-base)),
969
970
  0 0 0 4px var(--outline-color, var(--bs-blue-400));
970
971
  outline: 2px solid transparent;
971
972
  }
972
973
 
973
- :where(.box) :where(input, textarea, select):focus {
974
+ :where(.box) :is(input, textarea, select):focus {
974
975
  --offset-color: var(--bs-bg-subtle);
975
976
  }
976
977
 
977
- :where(.box[data-invert]) :where(input, textarea, select):focus {
978
+ :where(.box[data-invert]) :is(input, textarea, select):focus {
978
979
  --offset-color: var(--bs-bg-invert);
979
980
  }
980
981
 
981
- :where(input, textarea, select)[required]:focus,
982
- :where(input, textarea, select)[data-error] {
982
+ :is(input, textarea, select):where([required]):focus,
983
+ :is(input, textarea, select):where([data-error]) {
983
984
  --outline-color: var(--bs-red-200);
984
985
  }
985
986
 
986
- :where(input, textarea, select):disabled {
987
+ :is(input, textarea, select):disabled {
987
988
  background-color: var(--bs-gray-200);
988
989
  border-color: var(--bs-gray-400);
989
990
  color: var(--bs-gray-400);
@@ -1006,13 +1007,13 @@ see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
1006
1007
  opacity: 1;
1007
1008
  }
1008
1009
 
1009
- :where(input, textarea, select):disabled::-moz-placeholder, :where(input, textarea, select)[disabled]::-moz-placeholder {
1010
+ :is(input, textarea, select):disabled::-moz-placeholder, :is(input, textarea, select)[disabled]::-moz-placeholder {
1010
1011
  color: var(--bs-gray-400);
1011
1012
  opacity: 1;
1012
1013
  }
1013
1014
 
1014
- :where(input, textarea, select):disabled::placeholder,
1015
- :where(input, textarea, select)[disabled]::placeholder {
1015
+ :is(input, textarea, select):disabled::placeholder,
1016
+ :is(input, textarea, select)[disabled]::placeholder {
1016
1017
  color: var(--bs-gray-400);
1017
1018
  opacity: 1;
1018
1019
  }
@@ -1039,8 +1040,8 @@ select {
1039
1040
 
1040
1041
  /* Errors and Messages */
1041
1042
 
1042
- input:where([data-error]) {
1043
- border-color: var(--bs-red-400);
1043
+ :is(input, select, textarea):where([data-error]) {
1044
+ --input-border: var(--bs-red-400);
1044
1045
  }
1045
1046
 
1046
1047
  /* Fieldset */
@@ -1447,7 +1448,7 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1447
1448
 
1448
1449
  /* ------------------------------ Background Colors ------------------------------ */
1449
1450
 
1450
- :where(.box, [class*="bg-"]:not([class~="bg-white"])) .bs-pill:where(:not([data-variant^="live"], [data-variant^="restricted"], [data-active])) {
1451
+ :where(.box, [class*="bg-"]:not([class~="bg-white"])) .bs-pill:where(:not([data-variant^="live"], [data-active])) {
1451
1452
  --pill-background: var(--bs-bg-base);
1452
1453
  }
1453
1454
 
@@ -1593,28 +1594,6 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1593
1594
  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
1595
  }
1595
1596
 
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
1597
  /* ------------------------------ Live Now Styles ------------------------------ */
1619
1598
 
1620
1599
  .bs-pill:where([data-variant^="live"]) {
@@ -1649,8 +1628,8 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1649
1628
  --pill-border: var(--bs-gray-400);
1650
1629
  }
1651
1630
 
1652
- .profile-img,
1653
- .profile-img:where([data-img-size^='sm']) {
1631
+ .bs-profile-img,
1632
+ .bs-profile-img:where([data-img-size^='sm']) {
1654
1633
  --profile-size: 2rem;
1655
1634
  --profile-text: var(--bs-text-sm);
1656
1635
 
@@ -1662,19 +1641,19 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1662
1641
  width: var(--profile-size);
1663
1642
  }
1664
1643
 
1665
- .profile-img :where(img) {
1644
+ .bs-profile-img :where(img) {
1666
1645
  height: 100%;
1667
1646
  -o-object-fit: cover;
1668
1647
  object-fit: cover;
1669
1648
  width: 100%;
1670
1649
  }
1671
1650
 
1672
- .profile-img:where([data-no-img]) img {
1651
+ .bs-profile-img:where([data-no-img]) img {
1673
1652
  display: none;
1674
1653
  }
1675
1654
 
1676
- .profile-img::before,
1677
- .profile-img::after {
1655
+ .bs-profile-img::before,
1656
+ .bs-profile-img::after {
1678
1657
  border-radius: 50%;
1679
1658
  border-collapse: collapse;
1680
1659
  height: 100%;
@@ -1685,18 +1664,18 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1685
1664
 
1686
1665
  /* Shadow */
1687
1666
 
1688
- .profile-img::before {
1667
+ .bs-profile-img::before {
1689
1668
  box-shadow: var(--bs-shadow-profilePhoto);
1690
1669
  content: '';
1691
1670
  }
1692
1671
 
1693
- .profile-img:where([data-no-img])::before {
1672
+ .bs-profile-img:where([data-no-img])::before {
1694
1673
  display: none;
1695
1674
  }
1696
1675
 
1697
1676
  /* Initials */
1698
1677
 
1699
- .profile-img:where([data-no-img])::after {
1678
+ .bs-profile-img:where([data-no-img])::after {
1700
1679
  border: 1px solid currentColor;
1701
1680
  color: var(--bs-blue-500);
1702
1681
  content: attr(data-initials);
@@ -1708,36 +1687,36 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1708
1687
 
1709
1688
  /* Profile Sizes */
1710
1689
 
1711
- .profile-img:where([data-img-size^='xs']) {
1690
+ .bs-profile-img:where([data-img-size^='xs']) {
1712
1691
  --profile-size: 1.5rem;
1713
1692
  --profile-text: var(--bs-text-xs);
1714
1693
  }
1715
1694
 
1716
- .profile-img:where([data-img-size^='md']) {
1695
+ .bs-profile-img:where([data-img-size^='md']) {
1717
1696
  --profile-size: 3rem;
1718
1697
  --profile-text: var(--bs-text-md);
1719
1698
  }
1720
1699
 
1721
- .profile-img:where([data-img-size^='lg']) {
1700
+ .bs-profile-img:where([data-img-size^='lg']) {
1722
1701
  --profile-size: 4rem;
1723
1702
  --profile-text: var(--bs-text-lg);
1724
1703
  }
1725
1704
 
1726
- .profile-img:where([data-img-size^='xl']) {
1705
+ .bs-profile-img:where([data-img-size^='xl']) {
1727
1706
  --profile-size: 5.75rem;
1728
1707
  --profile-text: var(--bs-text-xl);
1729
1708
  }
1730
1709
 
1731
- :where(.profile-details) {
1710
+ .bs-profile-details {
1732
1711
  color: var(--bs-ink-light);
1733
1712
  font-size: var(--bs-text-sm);
1734
1713
  }
1735
1714
 
1736
- :where(.profile-details > *) {
1715
+ .bs-profile-details > :where(*) {
1737
1716
  display: block;
1738
1717
  }
1739
1718
 
1740
- :where(.profile-details > *:first-child) {
1719
+ .bs-profile-details > :where(*:first-child) {
1741
1720
  --profile-name-color: var(--bs-ink-base);
1742
1721
 
1743
1722
  color: var(--profile-name-color);
@@ -1745,13 +1724,13 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1745
1724
 
1746
1725
  /* Profile with User Details */
1747
1726
 
1748
- :where(.profile[data-layout]),
1749
- :where(.profile[data-layout^='vertical']) {
1727
+ .bs-profile:where([data-layout]),
1728
+ .bs-profile:where([data-layout^='vertical']) {
1750
1729
  display: grid;
1751
1730
  row-gap: 0.5rem;
1752
1731
  }
1753
1732
 
1754
- :where(.profile[data-layout^='horizontal']) {
1733
+ .bs-profile:where([data-layout^='horizontal']) {
1755
1734
  -moz-column-gap: 1rem;
1756
1735
  column-gap: 1rem;
1757
1736
  grid-template-columns: auto 1fr;
@@ -1760,19 +1739,19 @@ input:where([type^='checkbox'], [type^='radio'])[data-error] {
1760
1739
 
1761
1740
  /* When wrapped in a link */
1762
1741
 
1763
- a.profile[data-layout] {
1742
+ a.bs-profile:where([data-layout]) {
1764
1743
  text-decoration: none;
1765
1744
  }
1766
1745
 
1767
- a.profile[data-layout] .profile-details > *:first-child {
1746
+ a.bs-profile:where([data-layout]) .bs-profile-details > *:first-child {
1768
1747
  --profile-name-color: var(--bs-blue-500);
1769
1748
  }
1770
1749
 
1771
- a.profile[data-layout]:hover .profile-details > *:first-child {
1750
+ a.bs-profile:where([data-layout]):hover .bs-profile-details > *:first-child {
1772
1751
  text-decoration: underline;
1773
1752
  }
1774
1753
 
1775
- .dark a.profile[data-layout] .profile-details > *:first-child {
1754
+ .dark a.bs-profile:where([data-layout]) .bs-profile-details > *:first-child {
1776
1755
  --profile-name-color: var(--bs-blue-200);
1777
1756
  }
1778
1757