@wwtdev/bsds-css 2.18.0 → 2.19.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.
@@ -18,7 +18,8 @@
18
18
 
19
19
  /* Accordion Panel (Icon, Title, Caret) */
20
20
 
21
- .bs-accordion :where(header button) {
21
+ .bs-accordion :where(.bs-accordion-toggle),
22
+ .bs-accordion > :where(header) > :where(button) {
22
23
  align-items: center;
23
24
  background-color: var(--bs-bg-base);
24
25
  border: 0px solid transparent;
@@ -39,48 +40,56 @@
39
40
  width: 100%;
40
41
  }
41
42
 
42
- .bs-accordion :where(header button:focus-visible) {
43
+ .bs-accordion :where(.bs-accordion-toggle:focus-visible),
44
+ .bs-accordion > :where(header) > :where(button:focus-visible) {
43
45
  --accordion-outline-color: var(--bs-blue-base);
44
46
  }
45
47
 
46
- .bs-accordion :where(header button) > * {
48
+ .bs-accordion :where(.bs-accordion-toggle) > *,
49
+ .bs-accordion > :where(header) > :where(button) > * {
47
50
  font-size: inherit;
48
51
  font-weight: inherit;
49
52
  line-height: inherit;
50
53
  }
51
54
 
52
- .bs-accordion :where(header button) > :where(span) {
55
+ .bs-accordion :where(.bs-accordion-toggle) > *,
56
+ .bs-accordion > :where(header) > :where(button) > * {
53
57
  grid-area: main;
54
58
  margin-right: var(--bs-space-2);
55
59
  text-align: left;
56
60
  }
57
61
 
58
- .bs-accordion :where(header button) > :where(span) {
62
+ .bs-accordion :where(.bs-accordion-toggle) > *,
63
+ .bs-accordion > :where(header) > :where(button) > * {
59
64
  vertical-align: middle;
60
65
  }
61
66
 
62
67
  @media (min-width: 957px) {
63
- .bs-accordion :where(header button) > :where(span) {
68
+ .bs-accordion :where(.bs-accordion-toggle) > * ,
69
+ .bs-accordion > :where(header) > :where(button) > * {
64
70
  margin-right: var(--bs-space-3);
65
71
  }
66
72
  }
67
73
 
68
- .bs-accordion :where(header button) :where([data-position]) {
74
+ .bs-accordion :where(.bs-accordion-toggle) :where([data-position]),
75
+ .bs-accordion > :where(header) > :where(button) :where([data-position]) {
69
76
  width: var(--accordion-text-size);
70
77
  }
71
78
 
72
- .bs-accordion :where(header button) > :where([data-position="start"]) {
79
+ .bs-accordion :where(.bs-accordion-toggle) > :where([data-position="start"]),
80
+ .bs-accordion > :where(header) > :where(button) > :where([data-position="start"]) {
73
81
  grid-area: start;
74
82
  margin-right: var(--bs-space-2);
75
83
  }
76
84
 
77
- .bs-accordion :where(header button) > :where([data-position="end"]) {
85
+ .bs-accordion :where(.bs-accordion-toggle) > :where([data-position="end"]),
86
+ .bs-accordion > :where(header) > :where(button) > :where([data-position="end"]) {
78
87
  grid-area: end;
79
88
  transform: rotate(0);
80
89
  transition: var(--bs-trans-rotate180);
81
90
  }
82
91
 
83
- .bs-accordion :where(header[data-open]:not([data-open="false"])) :where([data-position="end"]) {
92
+ .bs-accordion > :where(header[data-open]:not([data-open="false"])) :where([data-position="end"]) {
84
93
  transform: rotate(180deg);
85
94
  }
86
95
 
@@ -107,7 +116,7 @@
107
116
  /* Accordion Group */
108
117
  :where(.bs-accordion[data-stacked]:not([data-stacked="false"])) + .bs-accordion:where([data-stacked]:not([data-stacked="false"])) {
109
118
  border-block-start-color: transparent;
110
- }
119
+ }
111
120
 
112
121
  }
113
122
 
@@ -0,0 +1,128 @@
1
+ @mixin alert() {
2
+ .bs-alert {
3
+ /* bs-blue-100 @ 10% */
4
+ background-color: #99cff71a;
5
+ border-radius: 8px;
6
+ border: 2px solid var(--bs-ink-blue);
7
+ column-gap: 0.75rem;
8
+ display: grid;
9
+ grid-template-columns: 1.25rem 1fr 1rem;
10
+ grid-template-areas: "icon title close"
11
+ ". description ."
12
+ ". action .";
13
+ padding: 1rem;
14
+ }
15
+
16
+ @media (min-width: 752px) {
17
+ .bs-alert {
18
+ padding: 1.5rem;
19
+ }
20
+ }
21
+
22
+ .bs-alert:where([data-horizontal="true"]) {
23
+ grid-template-columns: 1.25rem 1fr 1rem;
24
+ grid-template-areas: "icon title close"
25
+ ". action .";
26
+ }
27
+
28
+ @media (min-width: 752px) {
29
+ .bs-alert:where([data-horizontal="true"]) {
30
+ grid-template-areas: "icon title action close";
31
+ grid-template-columns: 1.25rem max-content 1fr 1rem;
32
+ }
33
+ }
34
+
35
+ .bs-alert :where(.bs-alert-icon) {
36
+ align-self: center;
37
+ color: var(--bs-ink-blue);
38
+ grid-area: icon;
39
+ height: 1.25rem;
40
+ width: 1.25rem;
41
+ }
42
+
43
+ .bs-alert :where(.bs-alert-title) {
44
+ font-size: 1.125rem;
45
+ grid-area: title;
46
+ }
47
+
48
+ @media (min-width: 752px) {
49
+ .bs-alert :where(.bs-alert-title) {
50
+ font-size: 1.25rem;
51
+ }
52
+ }
53
+
54
+ .bs-alert :where(.bs-alert-description) {
55
+ font-size: 0.875rem;
56
+ grid-area: description;
57
+ margin-top: 0.5rem;
58
+ }
59
+
60
+ @media (min-width: 752px) {
61
+ .bs-alert :where(.bs-alert-description) {
62
+ font-size: 1rem;
63
+ }
64
+ }
65
+
66
+ .bs-alert:where([data-horizontal="true"]) :where(.bs-alert-description) {
67
+ display: none;
68
+ }
69
+
70
+ .bs-alert :where(.bs-alert-close) {
71
+ align-self: center;
72
+ background-color: transparent;
73
+ cursor: pointer;
74
+ grid-area: close;
75
+ height: 1rem;
76
+ width: 1rem;
77
+ }
78
+
79
+ .bs-alert :where(.bs-alert-action) {
80
+ grid-area: action;
81
+ margin-top: 1rem;
82
+ }
83
+
84
+ @media (min-width: 752px) {
85
+ .bs-alert:where([data-horizontal="true"]) :where(.bs-alert-action) {
86
+ margin-top: 0;
87
+ }
88
+ }
89
+
90
+ /* COLOR VARIANTS */
91
+ .bs-alert:where([data-variant="success"]) {
92
+ /* bs-purple-100 @ 10% */
93
+ background-color: #e0c5ef1a;
94
+ border-color: var(--bs-ink-purple);
95
+ }
96
+
97
+ .bs-alert:where([data-variant="success"]) :where(.bs-alert-icon) {
98
+ color: var(--bs-ink-purple);
99
+ }
100
+
101
+ .bs-alert:where([data-variant="warning"]) {
102
+ /* bs-orange-100 @ 10% */
103
+ background-color: #f3c4a81a;
104
+ border-color: var(--bs-ink-orange);
105
+ }
106
+ .bs-alert:where([data-variant="warning"]) :where(.bs-alert-icon) {
107
+ color: var(--bs-ink-orange);
108
+ }
109
+
110
+ .bs-alert:where([data-variant="negative"]) {
111
+ /* bs-red-100 @ 10% */
112
+ background-color: #f8a9aa1a;
113
+ border-color: var(--bs-ink-red);
114
+ }
115
+
116
+ .bs-alert:where([data-variant="negative"]) :where(.bs-alert-icon) {
117
+ color: var(--bs-ink-red);
118
+ }
119
+
120
+ /* DARK MODE SPECIAL CASE */
121
+ .dark .bs-alert :where(.bs-alert-action) {
122
+ --btn-border-color-focused: var(--bs-text-base);
123
+ --btn-text-color: var(--bs-text-base);
124
+ --btn-text-color-hovered: var(--bs-text-base);
125
+ }
126
+
127
+ }
128
+
@@ -1,13 +1,19 @@
1
1
  @mixin banner() {
2
- .bs-banner {
3
- background-color: var(--bs-royal-400);
4
- color: var(--bs-gray-100);
2
+ :where(.bs-banner) {
3
+ --banner-bg: var(--bs-royal-400);
4
+ --banner-icon-display: none;
5
+ --banner-padding: var(--banner-padding-m);
6
+ --banner-padding-m: 1rem 1.5rem;
7
+ --banner-padding-dt: .5rem 2.25rem;
8
+ }
9
+
10
+ .bs-banner {
11
+ background-color: var(--banner-bg);
12
+ color: var(--bs-ink-white);
5
13
  display: flex;
6
14
  justify-content: center;
7
- padding-bottom: 1rem;
8
- padding-left: 1.25rem;
9
- padding-right: 1.25rem;
10
- padding-top: 1rem;
15
+ min-height: 3rem;
16
+ padding: var(--banner-padding);
11
17
  }
12
18
 
13
19
  .bs-banner:where([data-dismissed]:not([data-dismissed="false"])) {
@@ -24,7 +30,7 @@
24
30
 
25
31
  .bs-banner :where(.bs-banner-content .bs-banner-warning-icon) {
26
32
  /* Do not display icon on smaller screens */
27
- display: none;
33
+ display: var(--banner-icon-display);
28
34
  margin-right: 0.625rem;
29
35
  }
30
36
 
@@ -34,19 +40,27 @@
34
40
  }
35
41
 
36
42
  .bs-banner :where(.bs-banner-content p a) {
37
- color: var(--bs-blue-lightest);
38
43
  text-decoration: underline;
39
44
  }
40
45
 
46
+ .bs-banner :where(a:hover) {
47
+ color: rgba(255, 255, 255, 0.8);
48
+ }
49
+
41
50
  .bs-banner :where(.bs-banner-content button) {
42
51
  background-color: inherit;
43
52
  color: inherit;
44
53
  cursor: pointer;
45
54
  }
46
55
 
56
+ .bs-banner:where([data-variant="negative"]) {
57
+ --banner-bg: var(--bs-red-300);
58
+ }
59
+
47
60
  @media (min-width: 957px) {
48
- .bs-banner :where(.bs-banner-content .bs-banner-warning-icon) {
49
- display: inline-flex;
61
+ .bs-banner {
62
+ --banner-icon-display: inline-flex;
63
+ --banner-padding: var(--banner-padding-dt);
50
64
  }
51
65
  }
52
66
 
@@ -197,6 +197,12 @@ a.bs-circle-button {
197
197
  --btn-text-color-hovered: var(--bs-pink-base);
198
198
  }
199
199
 
200
+ .bs-circle-button:where([data-variant="color-orange"]) {
201
+ --btn-border-color-focused: var(--bs-ink-orange);
202
+ --btn-text-color: var(--bs-ink-orange);
203
+ --btn-text-color-hovered: var(--bs-orange-base);
204
+ }
205
+
200
206
  .bs-circle-button:where([data-variant="color-red"]) {
201
207
  --btn-border-color-focused: var(--bs-ink-red);
202
208
  --btn-text-color: var(--bs-ink-red);
@@ -4,7 +4,6 @@
4
4
  justify-content: space-between;
5
5
  align-items: flex-start;
6
6
  gap: var(--bs-space-2);
7
- padding: 0 0.75rem;
8
7
  margin-top: 0.5rem;
9
8
  }
10
9
 
@@ -5,9 +5,9 @@
5
5
  }
6
6
 
7
7
  .bs-input-addon {
8
- --input-border: var(--bs-violet-300);
8
+ --input-border: var(--bs-border-input);
9
9
  align-items: center;
10
- background-color: var(--input-bg, transparent);
10
+ background-color: var(--input-bg, var(--bs-bg-base));
11
11
  border-radius: .25rem;
12
12
  color: var(--bs-ink-base);
13
13
  display: flex;
@@ -18,13 +18,17 @@
18
18
  position: relative;
19
19
  }
20
20
 
21
+ :where(.dark) .bs-input-addon {
22
+ background-color: var(--input-bg, transparent);
23
+ }
24
+
21
25
  .bs-input-addon * {
22
26
  background-color: transparent;
23
27
  }
24
28
 
25
29
  /* Fix issue in Windows, where <select> options would be invisible, due to background-color: transparent */
26
30
  .bs-input-addon :where(.bs-select, select) {
27
- background-color: var(--bs-bg-base);
31
+ background-color: var(--input-bg, var(--bs-bg-base));
28
32
  }
29
33
 
30
34
  /**
@@ -50,11 +54,16 @@ and issues with box-sizing
50
54
  }
51
55
 
52
56
  .bs-input-addon::after {
57
+ border-color: var(--input-border);
53
58
  border-radius: .25rem;
54
- border: 1px solid var(--input-border);
59
+ border-style: solid;
60
+ border-width: var(--input-border-width, 1px);
55
61
  }
62
+
56
63
  .bs-input-addon :where(.bs-input-addon)::after {
57
- border: 1px solid var(--input-addon-nested-border);
64
+ border-color: var(--input-addon-nested-border);
65
+ border-style: solid;
66
+ border-width: var(--input-border-width, 1px);
58
67
  }
59
68
 
60
69
  .bs-input-addon > * {
@@ -112,7 +121,7 @@ and issues with box-sizing
112
121
  /** Inner borders should be straight; shown only if variant: "inner-bordered" */
113
122
 
114
123
  .bs-input-addon:where([data-variant="inner-bordered"]) {
115
- --input-addon-nested-border: var(--bs-violet-lightest);
124
+ --input-addon-nested-border: var(--bs-violet-200);
116
125
  }
117
126
 
118
127
  .bs-input-addon > :where(.bs-input-addon:not(:last-child, :focus-within, [data-part="right"])),
@@ -177,13 +186,6 @@ and issues with box-sizing
177
186
  width: 1rem;
178
187
  }
179
188
 
180
- /* -------- Hover styles -------- */
181
- .bs-input-addon:hover,
182
- :where(label):hover + .bs-input-addon,
183
- :where(label):hover + * .bs-input-addon:where(:not(label .bs-input-addon, label + .bs-input-addon)) {
184
- --input-bg: var(--bs-bg-input-hover);
185
- }
186
-
187
189
  /* -------- Focus styles -------- */
188
190
  .bs-input-addon {
189
191
  --focus-border: var(--bs-blue-base);
@@ -248,6 +250,15 @@ and issues with box-sizing
248
250
  .bs-input-addon:where([data-disabled]:not([data-disabled="false"])) * {
249
251
  pointer-events: none;
250
252
  }
253
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"]))::after,
254
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"]))::before,
255
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"])):where([data-variant="inner-bordered"]) {
256
+ --input-border-width: 0;
257
+ }
258
+
259
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"])):where([data-variant="inner-bordered"]) > :where(:not(:focus, :focus-within))::after {
260
+ border-right-width: 0;
261
+ }
251
262
 
252
263
  /* -------- Error styles -------- */
253
264
  .bs-input-addon:where([data-error]:not([data-error="false"])),
@@ -8,6 +8,11 @@
8
8
  min-width: 6rem;
9
9
  padding: 0 1rem;
10
10
  }
11
+
12
+ .bs-input-phone .bs-input-addon:where([data-disabled]:not([data-disabled="false"])) :where(button) :where(span) {
13
+ filter: grayscale(1);
14
+ }
15
+
11
16
  .bs-input-phone ul:where(.bs-dropdown-options) {
12
17
  min-width: 7.5rem;
13
18
  }
@@ -22,8 +22,8 @@ textarea,
22
22
  select,
23
23
  :is(.bs-input, .bs-select, .bs-textarea) {
24
24
  appearance: none;
25
- background-color: var(--input-bg, transparent);
26
- border-color: var(--input-border, var(--bs-violet-medium));
25
+ background-color: var(--input-bg, var(--bs-bg-base));
26
+ border-color: var(--input-border, var(--bs-border-input));
27
27
  border-radius: 0.25rem;
28
28
  border-style: solid;
29
29
  border-width: var(--input-border-width, 1px);
@@ -37,6 +37,13 @@ select,
37
37
  padding-inline: var(--input-padding-inline, 0.75rem);
38
38
  }
39
39
 
40
+ :where(.dark) input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
41
+ :where(.dark) textarea,
42
+ :where(.dark) select,
43
+ :where(.dark) :is(.bs-input, .bs-select, .bs-textarea) {
44
+ --input-bg: transparent;
45
+ }
46
+
40
47
  input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
41
48
  textarea,
42
49
  select,
@@ -61,15 +68,21 @@ textarea {
61
68
  :is(input, textarea, select)::placeholder,
62
69
  :is(.bs-input, .bs-select, .bs-textarea)::placeholder,
63
70
  :is(.bs-input, .bs-select, .bs-textarea):where([data-placeholder="true"]) {
64
- color: var(--input-placeholder, var(--bs-violet-lightest));
71
+ color: var(--input-placeholder, var(--bs-violet-100));
65
72
  }
73
+
74
+ :where(.dark) :is(input, textarea, select)::placeholder,
75
+ :where(.dark) :is(.bs-input, .bs-select, .bs-textarea)::placeholder,
76
+ :where(.dark) :is(.bs-input, .bs-select, .bs-textarea):where([data-placeholder="true"]) {
77
+ --input-placeholder: var(--bs-violet-200);
78
+ }
79
+
66
80
  :is(input, textarea, select):where(:focus-visible)::placeholder,
67
81
  :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible)::placeholder {
68
82
  opacity: 0;
69
83
  }
70
84
 
71
85
  /* FOCUS state */
72
-
73
86
  :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible),
74
87
  :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible),
75
88
  :is(select, .bs-select):where(:focus) {
@@ -78,15 +91,7 @@ textarea {
78
91
  outline-width: 0px;
79
92
  }
80
93
 
81
- /* HOVER state */
82
-
83
- :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:hover),
84
- :is(.bs-input, .bs-select, .bs-textarea):where(:hover) {
85
- --input-bg: var(--bs-bg-input-hover);
86
- }
87
-
88
94
  /* DISABLED state */
89
-
90
95
  :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled),
91
96
  :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
92
97
  --input-border: var(--bs-ink-disabled);
@@ -95,7 +100,10 @@ textarea {
95
100
  }
96
101
 
97
102
  /* Text inputs should not have a border when disabled */
98
- :is(input:where(:not([type]),[type="text"],[type="number"],[type="email"],[type="password"],[type="url"])):where(:disabled) {
103
+ :is(input:where(:not([type]),[type="text"],[type="number"],[type="email"],[type="password"],[type="url"])):where(:disabled),
104
+ textarea:where(:disabled),
105
+ select:where(:disabled),
106
+ :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
99
107
  --input-border-width: 0px;
100
108
  }
101
109
 
@@ -146,16 +154,10 @@ select[multiple],
146
154
 
147
155
  :where(.dark) select,
148
156
  :where(.dark) .bs-select {
149
- --input-bg: var(--bs-bg-base);
150
157
  /* URL Encoded SVG dropdown caret so there is something there */
151
158
  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");
152
159
  }
153
160
 
154
- :where(.dark .box) select,
155
- :where(.dark .box) .bs-select {
156
- --input-bg: var(--bg-color, var(--bs-bg-subtle));
157
- }
158
-
159
161
  :where(.dark) select:where(:disabled),
160
162
  :where(.dark) .bs-select:where(:disabled) {
161
163
  /* URL Encoded SVG dropdown caret so there is something there */
@@ -17,7 +17,8 @@
17
17
 
18
18
  /* Accordion Panel (Icon, Title, Caret) */
19
19
 
20
- .bs-accordion :where(header button) {
20
+ .bs-accordion :where(.bs-accordion-toggle),
21
+ .bs-accordion > :where(header) > :where(button) {
21
22
  align-items: center;
22
23
  background-color: var(--bs-bg-base);
23
24
  border: 0px solid transparent;
@@ -38,48 +39,56 @@
38
39
  width: 100%;
39
40
  }
40
41
 
41
- .bs-accordion :where(header button:focus-visible) {
42
+ .bs-accordion :where(.bs-accordion-toggle:focus-visible),
43
+ .bs-accordion > :where(header) > :where(button:focus-visible) {
42
44
  --accordion-outline-color: var(--bs-blue-base);
43
45
  }
44
46
 
45
- .bs-accordion :where(header button) > * {
47
+ .bs-accordion :where(.bs-accordion-toggle) > *,
48
+ .bs-accordion > :where(header) > :where(button) > * {
46
49
  font-size: inherit;
47
50
  font-weight: inherit;
48
51
  line-height: inherit;
49
52
  }
50
53
 
51
- .bs-accordion :where(header button) > :where(span) {
54
+ .bs-accordion :where(.bs-accordion-toggle) > *,
55
+ .bs-accordion > :where(header) > :where(button) > * {
52
56
  grid-area: main;
53
57
  margin-right: var(--bs-space-2);
54
58
  text-align: left;
55
59
  }
56
60
 
57
- .bs-accordion :where(header button) > :where(span) {
61
+ .bs-accordion :where(.bs-accordion-toggle) > *,
62
+ .bs-accordion > :where(header) > :where(button) > * {
58
63
  vertical-align: middle;
59
64
  }
60
65
 
61
66
  @media (min-width: 957px) {
62
- .bs-accordion :where(header button) > :where(span) {
67
+ .bs-accordion :where(.bs-accordion-toggle) > * ,
68
+ .bs-accordion > :where(header) > :where(button) > * {
63
69
  margin-right: var(--bs-space-3);
64
70
  }
65
71
  }
66
72
 
67
- .bs-accordion :where(header button) :where([data-position]) {
73
+ .bs-accordion :where(.bs-accordion-toggle) :where([data-position]),
74
+ .bs-accordion > :where(header) > :where(button) :where([data-position]) {
68
75
  width: var(--accordion-text-size);
69
76
  }
70
77
 
71
- .bs-accordion :where(header button) > :where([data-position="start"]) {
78
+ .bs-accordion :where(.bs-accordion-toggle) > :where([data-position="start"]),
79
+ .bs-accordion > :where(header) > :where(button) > :where([data-position="start"]) {
72
80
  grid-area: start;
73
81
  margin-right: var(--bs-space-2);
74
82
  }
75
83
 
76
- .bs-accordion :where(header button) > :where([data-position="end"]) {
84
+ .bs-accordion :where(.bs-accordion-toggle) > :where([data-position="end"]),
85
+ .bs-accordion > :where(header) > :where(button) > :where([data-position="end"]) {
77
86
  grid-area: end;
78
87
  transform: rotate(0);
79
88
  transition: var(--bs-trans-rotate180);
80
89
  }
81
90
 
82
- .bs-accordion :where(header[data-open]:not([data-open="false"])) :where([data-position="end"]) {
91
+ .bs-accordion > :where(header[data-open]:not([data-open="false"])) :where([data-position="end"]) {
83
92
  transform: rotate(180deg);
84
93
  }
85
94
 
@@ -106,4 +115,4 @@
106
115
  /* Accordion Group */
107
116
  :where(.bs-accordion[data-stacked]:not([data-stacked="false"])) + .bs-accordion:where([data-stacked]:not([data-stacked="false"])) {
108
117
  border-block-start-color: transparent;
109
- }
118
+ }
@@ -0,0 +1,124 @@
1
+ .bs-alert {
2
+ /* bs-blue-100 @ 10% */
3
+ background-color: #99cff71a;
4
+ border-radius: 8px;
5
+ border: 2px solid var(--bs-ink-blue);
6
+ column-gap: 0.75rem;
7
+ display: grid;
8
+ grid-template-columns: 1.25rem 1fr 1rem;
9
+ grid-template-areas: "icon title close"
10
+ ". description ."
11
+ ". action .";
12
+ padding: 1rem;
13
+ }
14
+
15
+ @media (min-width: 752px) {
16
+ .bs-alert {
17
+ padding: 1.5rem;
18
+ }
19
+ }
20
+
21
+ .bs-alert:where([data-horizontal="true"]) {
22
+ grid-template-columns: 1.25rem 1fr 1rem;
23
+ grid-template-areas: "icon title close"
24
+ ". action .";
25
+ }
26
+
27
+ @media (min-width: 752px) {
28
+ .bs-alert:where([data-horizontal="true"]) {
29
+ grid-template-areas: "icon title action close";
30
+ grid-template-columns: 1.25rem max-content 1fr 1rem;
31
+ }
32
+ }
33
+
34
+ .bs-alert :where(.bs-alert-icon) {
35
+ align-self: center;
36
+ color: var(--bs-ink-blue);
37
+ grid-area: icon;
38
+ height: 1.25rem;
39
+ width: 1.25rem;
40
+ }
41
+
42
+ .bs-alert :where(.bs-alert-title) {
43
+ font-size: 1.125rem;
44
+ grid-area: title;
45
+ }
46
+
47
+ @media (min-width: 752px) {
48
+ .bs-alert :where(.bs-alert-title) {
49
+ font-size: 1.25rem;
50
+ }
51
+ }
52
+
53
+ .bs-alert :where(.bs-alert-description) {
54
+ font-size: 0.875rem;
55
+ grid-area: description;
56
+ margin-top: 0.5rem;
57
+ }
58
+
59
+ @media (min-width: 752px) {
60
+ .bs-alert :where(.bs-alert-description) {
61
+ font-size: 1rem;
62
+ }
63
+ }
64
+
65
+ .bs-alert:where([data-horizontal="true"]) :where(.bs-alert-description) {
66
+ display: none;
67
+ }
68
+
69
+ .bs-alert :where(.bs-alert-close) {
70
+ align-self: center;
71
+ background-color: transparent;
72
+ cursor: pointer;
73
+ grid-area: close;
74
+ height: 1rem;
75
+ width: 1rem;
76
+ }
77
+
78
+ .bs-alert :where(.bs-alert-action) {
79
+ grid-area: action;
80
+ margin-top: 1rem;
81
+ }
82
+
83
+ @media (min-width: 752px) {
84
+ .bs-alert:where([data-horizontal="true"]) :where(.bs-alert-action) {
85
+ margin-top: 0;
86
+ }
87
+ }
88
+
89
+ /* COLOR VARIANTS */
90
+ .bs-alert:where([data-variant="success"]) {
91
+ /* bs-purple-100 @ 10% */
92
+ background-color: #e0c5ef1a;
93
+ border-color: var(--bs-ink-purple);
94
+ }
95
+
96
+ .bs-alert:where([data-variant="success"]) :where(.bs-alert-icon) {
97
+ color: var(--bs-ink-purple);
98
+ }
99
+
100
+ .bs-alert:where([data-variant="warning"]) {
101
+ /* bs-orange-100 @ 10% */
102
+ background-color: #f3c4a81a;
103
+ border-color: var(--bs-ink-orange);
104
+ }
105
+ .bs-alert:where([data-variant="warning"]) :where(.bs-alert-icon) {
106
+ color: var(--bs-ink-orange);
107
+ }
108
+
109
+ .bs-alert:where([data-variant="negative"]) {
110
+ /* bs-red-100 @ 10% */
111
+ background-color: #f8a9aa1a;
112
+ border-color: var(--bs-ink-red);
113
+ }
114
+
115
+ .bs-alert:where([data-variant="negative"]) :where(.bs-alert-icon) {
116
+ color: var(--bs-ink-red);
117
+ }
118
+
119
+ /* DARK MODE SPECIAL CASE */
120
+ .dark .bs-alert :where(.bs-alert-action) {
121
+ --btn-border-color-focused: var(--bs-text-base);
122
+ --btn-text-color: var(--bs-text-base);
123
+ --btn-text-color-hovered: var(--bs-text-base);
124
+ }