@wwtdev/bsds-css 0.0.3

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,206 @@
1
+ @mixin pills() {
2
+ .pill {
3
+ --pill-background: var(--bs-bg-subtle);
4
+ --pill-border: transparent;
5
+ --pill-text: var(--bs-royal-400);
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: 4px;
16
+ line-height: 1.33;
17
+ padding: 4px 6px;
18
+ text-decoration: none;
19
+ vertical-align: middle;
20
+ }
21
+ :where(.dark) .pill {
22
+ --pill-text: var(--bs-royal-100);
23
+ }
24
+ .pill > svg {
25
+ height: 1rem;
26
+ }
27
+
28
+ /* ------------------------------ Button and Link Styles ------------------------------ */
29
+ :is(a, button).pill {
30
+ color: var(--pill-text);
31
+ cursor: pointer;
32
+ transition: all 0.15s ease-in-out;
33
+ }
34
+ :is(a, button).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).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"])) .pill {
46
+ --pill-background: var(--bs-bg-base);
47
+ }
48
+ :where(.box[data-invert]) .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).pill:is(:hover, :focus) {
53
+ --pill-border: var(--bs-gray-100);
54
+ }
55
+ :where(.dark .box[data-invert]) .pill {
56
+ --pill-text: var(--bs-royal-400);
57
+ }
58
+ :where(.dark .box[data-invert]) :is(a, button).pill:is(:hover, :focus) {
59
+ --pill-border: var(--bs-royal-400);
60
+ }
61
+
62
+ /* ------------------------------ Status Styles ------------------------------ */
63
+ .pill:where([data-status]) {
64
+ --status-color: var(--bs-blue-400);
65
+ }
66
+ .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
+ .pill:where([data-status^="active"]) {
76
+ --status-color: var(--bs-blue-400);
77
+ }
78
+ .pill:where([data-status^="complete"]) {
79
+ --status-color: var(--bs-purple-400);
80
+ }
81
+ .pill:where([data-status^="inactive"]) {
82
+ --status-color: var(--bs-gray-300);
83
+ }
84
+ .pill:where([data-status^="error"]) {
85
+ --status-color: var(--bs-red-400);
86
+ }
87
+ .pill:where([data-status^="positive"]) {
88
+ --status-color: #16986D;
89
+ }
90
+ .pill:where([data-status^="warning"]) {
91
+ --status-color: var(--bs-orange-warning);
92
+ }
93
+
94
+ /* ------------------------------ Filter Styles ------------------------------ */
95
+ .pill:where([data-type^="filter"]) {
96
+ --pill-background: var(--bs-bg-base);
97
+ --pill-border: var(--bs-border);
98
+ --pill-text: var(--bs-ink-base);
99
+ }
100
+ .pill:where([data-type^="filter"]):is(:hover, :focus) {
101
+ --pill-border: var(--bs-border);
102
+ }
103
+ :is(a, button).pill:where([data-type^="filter"]):is(:hover, :focus) {
104
+ --pill-border: var(--bs-ink-base);
105
+ }
106
+
107
+ /* ----- Filter Add Styles ----- */
108
+ /* Black + */
109
+ .pill:where([data-type^="filter"][data-type*="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) .pill:where([data-type^="filter"][data-type*="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
+ .pill:where([data-type^="filter"][data-type*="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) .pill:where([data-type^="filter"][data-type*="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
+ .pill:where([data-type^="filter"][data-type*="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) .pill:where([data-type^="filter"][data-type*="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
+ .pill:where([data-type^="filter"][data-type*="active"]) {
138
+ --pill-background: var(--bs-blue-400);
139
+ --pill-border: transparent;
140
+ --pill-text: var(--bs-white);
141
+ }
142
+ .pill:where([data-type^="filter"][data-type*="active"]):is(:hover, :focus) {
143
+ --pill-border: transparent;
144
+ }
145
+ :is(a, button).pill:where([data-type^="filter"][data-type*="active"]):is(:hover, :focus) {
146
+ --pill-background: var(--bs-blue-500);
147
+ --pill-border: transparent;
148
+ }
149
+ /* White X */
150
+ .pill:where([data-type^="filter"][data-type*="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
+ .pill:where([data-type^="filter"][data-type*="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
+ /* ------------------------------ Restricted Styles ------------------------------ */
159
+ .pill:where([data-type^="restricted"]) {
160
+ --pill-background: var(--bs-gray-400);
161
+ --pill-text: var(--bs-white);
162
+ }
163
+ .pill:where([data-type^="restricted"]):hover {
164
+ --pill-border: transparent;
165
+ }
166
+ .pill:where([data-type^="restricted"])::before {
167
+ 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");
168
+ line-height: 1.1;
169
+ }
170
+ :where(.dark) .pill:where([data-type^="restricted"]) {
171
+ --pill-background: var(--bs-navy-300);
172
+ --pill-text: var(--bs-white);
173
+ }
174
+
175
+ /* ------------------------------ Live Now Styles ------------------------------ */
176
+ .pill:where([data-type^="live"]) {
177
+ --pill-background: var(--bs-royal-400);
178
+ --pill-text: var(--bs-white);
179
+ text-transform: uppercase;
180
+ }
181
+ .pill:where([data-type^="live"]):hover {
182
+ --pill-border: transparent;
183
+ }
184
+ .pill:where([data-type^="live"])::before {
185
+ background-color: var(--bs-red-400);
186
+ border: 3px solid var(--bs-white);
187
+ border-radius: 100%;
188
+ content: '';
189
+ height: 12px;
190
+ width: 12px;
191
+ }
192
+
193
+ /* ----- Disabled Styles ----- */
194
+ .pill:is(:disabled, [aria-disabled="true"]) {
195
+ pointer-events: none;
196
+ color: var(--bs-gray-400);
197
+ background-color: var(--bs-gray-200);
198
+ }
199
+
200
+ .pill:where([data-type^="filter"]):not([data-type*="active"]):is(:disabled, [aria-disabled="true"]) {
201
+ --pill-border: var(--bs-gray-400);
202
+ }
203
+
204
+
205
+ }
206
+
@@ -0,0 +1,99 @@
1
+ @mixin profiles() {
2
+ :where(.profile-img),
3
+ :where(.profile-img[data-img-size^='sm']) {
4
+ --profile-size: 2rem;
5
+ --profile-text: var(--bs-text-sm);
6
+
7
+ aspect-ratio: 1/1;
8
+ border-radius: 50%;
9
+ height: var(--profile-size);
10
+ overflow: hidden;
11
+ position: relative;
12
+ width: var(--profile-size);
13
+ }
14
+
15
+ :where(.profile-img img) {
16
+ height: 100%;
17
+ object-fit: cover;
18
+ width: 100%;
19
+ }
20
+ :where(.profile-img[data-no-img="true"]) img {
21
+ display: none;
22
+ }
23
+
24
+ :where(.profile-img)::before,
25
+ :where(.profile-img)::after {
26
+ border-radius: 50%;
27
+ border-collapse: collapse;
28
+ height: 100%;
29
+ inset: 0;
30
+ position:absolute;
31
+ width: 100%;
32
+ }
33
+ /* Shadow */
34
+ :where(.profile-img)::before {
35
+ box-shadow: var(--bs-shadow-profilePhoto);
36
+ content: '';
37
+ }
38
+ :where(.profile-img[data-no-img="true"])::before {
39
+ display: none;
40
+ }
41
+ /* Initials */
42
+ :where(.profile-img[data-no-img="true"])::after {
43
+ border: 1px solid currentColor;
44
+ color: var(--bs-blue-500);
45
+ content: attr(data-initials);
46
+ font-size: var(--profile-text);
47
+ text-transform: uppercase;
48
+ display: grid;
49
+ place-items: center;
50
+ }
51
+
52
+ /* Profile Sizes */
53
+ :where([data-img-size^='xs']) {
54
+ --profile-size: 1.5rem;
55
+ --profile-text: var(--bs-text-xs);
56
+ }
57
+ :where([data-img-size^='md']) {
58
+ --profile-size: 3rem;
59
+ --profile-text: var(--bs-text-md);
60
+ }
61
+ :where([data-img-size^='lg']) {
62
+ --profile-size: 4rem;
63
+ --profile-text: var(--bs-text-lg);
64
+ }
65
+ :where([data-img-size^='xl']) {
66
+ --profile-size: 5.75rem;
67
+ --profile-text: var(--bs-text-xl);
68
+ }
69
+
70
+ /* Profile with User Details */
71
+ :where(.profile[data-layout]),
72
+ :where(.profile[data-layout^='vertical']) {
73
+ display: grid;
74
+ row-gap: 0.5rem;
75
+ }
76
+
77
+ :where(.profile[data-layout^='horizontal']) {
78
+ column-gap: 1rem;
79
+ grid-template-columns: auto 1fr;
80
+ }
81
+
82
+ :where(.profile-content) {
83
+ color: var(--bs-ink-light);
84
+ font-size: var(--bs-text-xs);
85
+ }
86
+
87
+ :where(.profile[data-layout]:hover .profile-content > *:first-child) {
88
+ --profile-ink-hover: var(--bs-blue-500);
89
+
90
+ color: var(--profile-ink-hover);
91
+ text-decoration: underline;
92
+ }
93
+
94
+ .dark :where(.profile[data-layout]:hover .profile-content > *:first-child) {
95
+ --profile-ink-hover: var(--bs-blue-200);
96
+ }
97
+
98
+ }
99
+
@@ -0,0 +1,84 @@
1
+ @mixin tables() {
2
+ table {
3
+ border-collapse: collapse;
4
+ border-spacing: 0;
5
+ overflow-x: auto;
6
+ max-width: 100%;
7
+ width: 100%;
8
+ }
9
+ thead {
10
+ color: var(--bs-ink-base);
11
+ font-size: var(--bs-font-base);
12
+ font-weight: 600;
13
+ }
14
+ tbody {
15
+ color: var(--bs-ink-light);
16
+ }
17
+ th {
18
+ background: var(--bs-bg-base);
19
+ }
20
+ th, td {
21
+ border-bottom: 1px solid var(--bs-border);
22
+ min-width: fit-content;
23
+ padding: var(--bs-space-2);
24
+ text-align: left;
25
+ }
26
+
27
+ /* Table Borders */
28
+ table[data-borders^="none"] {
29
+ border: 0;
30
+ }
31
+ table[data-borders^="all"] :where(th, td) {
32
+ border-left: 1px solid var(--bs-border);
33
+ }
34
+ table[data-borders^="all"] :where(th, td):last-child {
35
+ border-right: 1px solid var(--bs-border);
36
+ }
37
+ table[data-borders^="all"] th {
38
+ border-top: 1px solid var(--bs-border);
39
+ }
40
+
41
+ /* Table Rows */
42
+ table:where([data-rows^="striped"]) tbody > tr:nth-child(even) {
43
+ background-color: var(--bs-bg-subtle);
44
+ }
45
+
46
+ /* Table Cells */
47
+ table[data-cells^="fixed"] {
48
+ table-layout: fixed;
49
+ }
50
+ table:where([data-cells^="height"]) td {
51
+ height: 4.5rem;
52
+ vertical-align: middle;
53
+ }
54
+
55
+ /* Sticky Header */
56
+ table:where([data-sticky]) {
57
+ isolation: isolate;
58
+ }
59
+ table:where([data-sticky^="top"]) td {
60
+ z-index: 1;
61
+ }
62
+ table:where([data-sticky^="top"]) {
63
+ border-collapse: separate;
64
+ overflow-y: unset; /* Will break sticky headers if removed */
65
+ position: relative;
66
+ }
67
+ table:where([data-sticky^="left"]) {
68
+ border-collapse: separate;
69
+ overflow-x: unset; /* Will break sticky headers if removed */
70
+ position: relative;
71
+ }
72
+ table:where([data-sticky^="top"]) th {
73
+ position: sticky;
74
+ top: var(--bs-content-top);
75
+ z-index: 2;
76
+ }
77
+ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
78
+ position: sticky;
79
+ left: 0;
80
+ z-index: 2;
81
+ }
82
+
83
+ }
84
+
@@ -0,0 +1,58 @@
1
+ .badge[data-position^='left']::before,
2
+ .badge:where(:not([data-position^='left']))::after {
3
+ align-items: center;
4
+ background: var(--bs-red-500);
5
+ border-radius: 0.5rem;
6
+ content: '';
7
+ display: inline-flex;
8
+ font-size: 0.8125rem;
9
+ font-variant-numeric: tabular-nums;
10
+ font-weight: 600;
11
+ height: 6px;
12
+ justify-content: center;
13
+ line-height: 1;
14
+ position: relative;
15
+ vertical-align: top;
16
+ width: 6px;
17
+ }
18
+
19
+ .pill .badge::before,
20
+ .pill .badge::after {
21
+ font-size: 0.8125em;
22
+ }
23
+
24
+ .badge[data-count]:where([data-position^='left'])::before,
25
+ .badge[data-count]:where(:not([data-position^='left']))::after {
26
+ color: white;
27
+ content: attr(data-count);
28
+ min-height: 1rem;
29
+ min-width: 1rem;
30
+ padding: 0 4px;
31
+ top: -0.0625rem;
32
+ vertical-align: unset;
33
+ width: auto;
34
+ }
35
+
36
+ .badge[data-count]::before {
37
+ margin-right: 0.25rem;
38
+ }
39
+
40
+ .badge[data-count]::after {
41
+ margin-left: 0.25rem;
42
+ }
43
+
44
+ .badge[data-count='0']::before,
45
+ .badge[data-count='0']::after {
46
+ display: none;
47
+ }
48
+
49
+ .badge[data-badge-color^='blue']::before,
50
+ .badge[data-badge-color^='blue']::after {
51
+ background: var(--bs-blue-500);
52
+ }
53
+
54
+ .badge[data-badge-color^='white']::before,
55
+ .badge[data-badge-color^='white']::after {
56
+ background: white;
57
+ color: var(--badge-text, var(--bs-black));
58
+ }
@@ -0,0 +1,188 @@
1
+ :where(button) {
2
+ background-color: inherit;
3
+ border-color: transparent;
4
+ color: inherit;
5
+ font-size: var(--bs-text-base);
6
+ position: relative;
7
+ padding: var(--bs-space-0);
8
+ text-decoration: none;
9
+ }
10
+
11
+ .button {
12
+ --btn-main: var(--bs-blue-400);
13
+ --btn-secondary: var(--bs-blue-300);
14
+ --btn-highlight: var(--bs-blue-100);
15
+ align-items: center;
16
+ background-color: var(--btn-main);
17
+ border: none;
18
+ border-radius: 0.25rem;
19
+ color: var(--bs-white);
20
+ cursor: pointer;
21
+ display: inline-flex;
22
+ font-size: var(--bs-text-md);
23
+ font-weight: 600;
24
+ line-height: 1.5;
25
+ outline: 2px solid transparent;
26
+ padding: var(--bs-space-1) var(--bs-space-4) calc(var(--bs-space-1) * 1.5);
27
+ position: relative;
28
+ text-decoration: none;
29
+ transition: all 100ms ease-in-out;
30
+ vertical-align: middle;
31
+ }
32
+
33
+
34
+ .button:hover {
35
+ background-color: var(--btn-secondary);
36
+ }
37
+
38
+ .button:active {
39
+ background-color: var(--btn-secondary);
40
+ transform: scale(0.97);
41
+ transform-origin: center;
42
+ box-shadow: inset 0px 0px 4px 1px var(--btn-main);
43
+ }
44
+
45
+ /* Button Focus Styles */
46
+ .button::before {
47
+ border-color: transparent;
48
+ border-radius: 0.5rem;
49
+ border-style: solid;
50
+ border-width: 0.125rem;
51
+ content: '';
52
+ height: calc(100% + 0.5rem);
53
+ inset: -0.25rem;
54
+ position: absolute;
55
+ transition: border-color 0.125s ease-in-out;
56
+ width: calc(100% + 0.5rem);
57
+ }
58
+
59
+ .button:focus::before {
60
+ border-color: var(--btn-main);
61
+ }
62
+
63
+ .button:focus-visible::before {
64
+ border-color: var(--btn-main);
65
+ box-shadow: none;
66
+ }
67
+
68
+ .button:focus:not(:focus-visible)::before {
69
+ border-color: transparent;
70
+ box-shadow: none;
71
+ }
72
+
73
+ /* Ghost Buttons */
74
+ .button:where([data-ghost]) {
75
+ --btn-light: var(--bs-blue-10);
76
+ --btn-secondary: var(--bs-blue-10);
77
+ background-color: transparent;
78
+ box-shadow: inset 0 0 0 1px var(--btn-main);
79
+ color: var(--btn-main);
80
+ }
81
+ .button:where([data-ghost])::before {
82
+ border-radius: 0.4375rem;
83
+ }
84
+ .button:where([data-ghost]):hover,
85
+ .button:where([data-ghost]):focus {
86
+ background-color: var(--btn-light);
87
+ }
88
+ .button:where([data-ghost]):active {
89
+ box-shadow:
90
+ inset 0 0 0 1px var(--btn-main),
91
+ inset 0px 0px 4px 1px var(--btn-highlight);
92
+ }
93
+
94
+ /* Button type */
95
+ .button:where([data-variant^='secondary']) {
96
+ --btn-main: var(--bs-plum-400);
97
+ --btn-secondary: var(--bs-plum-300);
98
+ --btn-light: var(--bs-plum-10);
99
+ --btn-highlight: var(--bs-plum-100);
100
+ }
101
+ .dark .button:where([data-variant^='secondary']) {
102
+ --btn-main: var(--bs-plum-200);
103
+ --btn-secondary: var(--bs-plum-300);
104
+ --btn-light: var(--bs-navy-400);
105
+ --btn-highlight: var(--bs-plum-400);
106
+ }
107
+ .button:where([data-variant^='positive']) {
108
+ --btn-main: var(--bs-purple-400);
109
+ --btn-secondary: var(--bs-purple-300);
110
+ --btn-light: var(--bs-purple-10);
111
+ --btn-highlight: var(--bs-purple-100);
112
+ }
113
+ .button:where([data-variant^='warning']) {
114
+ --btn-main: var(--bs-orange-warning);
115
+ --btn-secondary: var(--bs-orange-300);
116
+ --btn-light: var(--bs-orange-10);
117
+ --btn-highlight: var(--bs-orange-100);
118
+ }
119
+ .button:where([data-variant^='negative']) {
120
+ --btn-main: var(--bs-red-400);
121
+ --btn-secondary: var(--bs-red-300);
122
+ --btn-light: var(--bs-red-10);
123
+ --btn-highlight: var(--bs-red-100);
124
+ }
125
+
126
+ /* Text Button */
127
+ .button:where([data-text]) {
128
+ background-color: transparent;
129
+ color: var(--bs-blue-500);
130
+ cursor: pointer;
131
+ font-size: var(--bs-text-md);
132
+ font-weight: 400;
133
+ line-height: 150%;
134
+ }
135
+ .button:where([data-text]):hover {
136
+ background-color: transparent;
137
+ text-decoration: underline;
138
+ }
139
+ .button:where([data-text]):active {
140
+ box-shadow: none;
141
+ }
142
+
143
+ /* Button Size */
144
+ .button:where([data-size^='sm']) {
145
+ font-size: var(--bs-text-sm);
146
+ }
147
+ .button:where([data-text][data-size^='sm']) {
148
+ font-size: var(--bs-text-base);
149
+ }
150
+
151
+ /* Disabled Styling */
152
+ :where(button:disabled),
153
+ .button:where([aria-disabled='true']) /* for links as buttons */ {
154
+ pointer-events: none;
155
+ }
156
+ .button:where(:disabled),
157
+ .button:where([aria-disabled='true']) {
158
+ color: var(--bs-gray-400);
159
+ background-color: var(--bs-gray-200);
160
+ }
161
+
162
+ .button:where([data-ghost]):disabled,
163
+ .button:where([data-ghost])[aria-disabled='true'] {
164
+ box-shadow: inset 0 0 0 1px var(--bs-gray-400);
165
+ }
166
+
167
+ .button:where([data-text]):disabled,
168
+ .button:where([data-text][aria-disabled='true']) {
169
+ background-color: transparent;
170
+ }
171
+
172
+ /* Icon Height */
173
+ .button :where(svg:not([height])) {
174
+ height: var(--bs-text-base);
175
+ }
176
+
177
+ .button:where([data-size^='sm']) :where(svg:not([height])) {
178
+ height: var(--bs-text-xs);
179
+ }
180
+
181
+ /* links as buttons */
182
+ a.button {
183
+ align-items: center;
184
+ display: inline-flex;
185
+ outline: none;
186
+ vertical-align: middle;
187
+ }
188
+