@wwtdev/bsds-css 2.18.1 → 2.20.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.
Files changed (31) hide show
  1. package/dist/components/_accordions.scss +20 -11
  2. package/dist/components/_alert.scss +128 -0
  3. package/dist/components/_banner.scss +25 -11
  4. package/dist/components/_circle-buttons.scss +6 -0
  5. package/dist/components/_dropdown.scss +7 -0
  6. package/dist/components/_form-field-details.scss +0 -1
  7. package/dist/components/_form-input-composite.scss +24 -13
  8. package/dist/components/_form-input-phone.scss +5 -0
  9. package/dist/components/_form-text-fields.scss +21 -19
  10. package/dist/components/_horizontal-navigation-mobile.scss +194 -0
  11. package/dist/components/_horizontal-navigation.scss +213 -0
  12. package/dist/components/_modal.scss +1 -1
  13. package/dist/components/_vertical-navigation.scss +231 -0
  14. package/dist/components/accordions.css +20 -11
  15. package/dist/components/alert.css +124 -0
  16. package/dist/components/banner.css +24 -10
  17. package/dist/components/circle-buttons.css +6 -0
  18. package/dist/components/dropdown.css +7 -0
  19. package/dist/components/form-field-details.css +0 -1
  20. package/dist/components/form-input-composite.css +24 -13
  21. package/dist/components/form-input-phone.css +5 -0
  22. package/dist/components/form-text-fields.css +21 -19
  23. package/dist/components/horizontal-navigation-mobile.css +190 -0
  24. package/dist/components/horizontal-navigation.css +209 -0
  25. package/dist/components/modal.css +1 -1
  26. package/dist/components/vertical-navigation.css +227 -0
  27. package/dist/wwt-bsds-preset.js +2 -1
  28. package/dist/wwt-bsds-wc-base.css +2 -0
  29. package/dist/wwt-bsds.css +2259 -1547
  30. package/dist/wwt-bsds.min.css +1 -1
  31. package/package.json +1 -1
@@ -1,12 +1,18 @@
1
+ :where(.bs-banner) {
2
+ --banner-bg: var(--bs-royal-400);
3
+ --banner-icon-display: none;
4
+ --banner-padding: var(--banner-padding-m);
5
+ --banner-padding-m: 1rem 1.5rem;
6
+ --banner-padding-dt: .5rem 2.25rem;
7
+ }
8
+
1
9
  .bs-banner {
2
- background-color: var(--bs-royal-400);
3
- color: var(--bs-gray-100);
10
+ background-color: var(--banner-bg);
11
+ color: var(--bs-ink-white);
4
12
  display: flex;
5
13
  justify-content: center;
6
- padding-bottom: 1rem;
7
- padding-left: 1.25rem;
8
- padding-right: 1.25rem;
9
- padding-top: 1rem;
14
+ min-height: 3rem;
15
+ padding: var(--banner-padding);
10
16
  }
11
17
 
12
18
  .bs-banner:where([data-dismissed]:not([data-dismissed="false"])) {
@@ -23,7 +29,7 @@
23
29
 
24
30
  .bs-banner :where(.bs-banner-content .bs-banner-warning-icon) {
25
31
  /* Do not display icon on smaller screens */
26
- display: none;
32
+ display: var(--banner-icon-display);
27
33
  margin-right: 0.625rem;
28
34
  }
29
35
 
@@ -33,18 +39,26 @@
33
39
  }
34
40
 
35
41
  .bs-banner :where(.bs-banner-content p a) {
36
- color: var(--bs-blue-lightest);
37
42
  text-decoration: underline;
38
43
  }
39
44
 
45
+ .bs-banner :where(a:hover) {
46
+ color: rgba(255, 255, 255, 0.8);
47
+ }
48
+
40
49
  .bs-banner :where(.bs-banner-content button) {
41
50
  background-color: inherit;
42
51
  color: inherit;
43
52
  cursor: pointer;
44
53
  }
45
54
 
55
+ .bs-banner:where([data-variant="negative"]) {
56
+ --banner-bg: var(--bs-red-300);
57
+ }
58
+
46
59
  @media (min-width: 957px) {
47
- .bs-banner :where(.bs-banner-content .bs-banner-warning-icon) {
48
- display: inline-flex;
60
+ .bs-banner {
61
+ --banner-icon-display: inline-flex;
62
+ --banner-padding: var(--banner-padding-dt);
49
63
  }
50
64
  }
@@ -196,6 +196,12 @@ a.bs-circle-button {
196
196
  --btn-text-color-hovered: var(--bs-pink-base);
197
197
  }
198
198
 
199
+ .bs-circle-button:where([data-variant="color-orange"]) {
200
+ --btn-border-color-focused: var(--bs-ink-orange);
201
+ --btn-text-color: var(--bs-ink-orange);
202
+ --btn-text-color-hovered: var(--bs-orange-base);
203
+ }
204
+
199
205
  .bs-circle-button:where([data-variant="color-red"]) {
200
206
  --btn-border-color-focused: var(--bs-ink-red);
201
207
  --btn-text-color: var(--bs-ink-red);
@@ -111,6 +111,13 @@
111
111
  --dropdown-wscreen-left: 50%;
112
112
  }
113
113
 
114
+ /* data-right */
115
+ .bs-dropdown-parent:where([data-right]:not([data-right="false"])) :where(.bs-dropdown) {
116
+ --dropdown-transform: translate(0, 0);
117
+ --dropdown-wscreen-left: auto;
118
+ --dropdown-wscreen-right: 0;
119
+ }
120
+
114
121
  /* Overrides mobile style when not min-width 1166 */
115
122
  .bs-dropdown:where([data-no-mobile="true"]) {
116
123
  --dropdown-bottom: var(--dropdown-wscreen-bottom, auto);
@@ -3,7 +3,6 @@
3
3
  justify-content: space-between;
4
4
  align-items: flex-start;
5
5
  gap: var(--bs-space-2);
6
- padding: 0 0.75rem;
7
6
  margin-top: 0.5rem;
8
7
  }
9
8
 
@@ -4,9 +4,9 @@
4
4
  }
5
5
 
6
6
  .bs-input-addon {
7
- --input-border: var(--bs-violet-300);
7
+ --input-border: var(--bs-border-input);
8
8
  align-items: center;
9
- background-color: var(--input-bg, transparent);
9
+ background-color: var(--input-bg, var(--bs-bg-base));
10
10
  border-radius: .25rem;
11
11
  color: var(--bs-ink-base);
12
12
  display: flex;
@@ -17,13 +17,17 @@
17
17
  position: relative;
18
18
  }
19
19
 
20
+ :where(.dark) .bs-input-addon {
21
+ background-color: var(--input-bg, transparent);
22
+ }
23
+
20
24
  .bs-input-addon * {
21
25
  background-color: transparent;
22
26
  }
23
27
 
24
28
  /* Fix issue in Windows, where <select> options would be invisible, due to background-color: transparent */
25
29
  .bs-input-addon :where(.bs-select, select) {
26
- background-color: var(--bs-bg-base);
30
+ background-color: var(--input-bg, var(--bs-bg-base));
27
31
  }
28
32
 
29
33
  /**
@@ -49,11 +53,16 @@ and issues with box-sizing
49
53
  }
50
54
 
51
55
  .bs-input-addon::after {
56
+ border-color: var(--input-border);
52
57
  border-radius: .25rem;
53
- border: 1px solid var(--input-border);
58
+ border-style: solid;
59
+ border-width: var(--input-border-width, 1px);
54
60
  }
61
+
55
62
  .bs-input-addon :where(.bs-input-addon)::after {
56
- border: 1px solid var(--input-addon-nested-border);
63
+ border-color: var(--input-addon-nested-border);
64
+ border-style: solid;
65
+ border-width: var(--input-border-width, 1px);
57
66
  }
58
67
 
59
68
  .bs-input-addon > * {
@@ -111,7 +120,7 @@ and issues with box-sizing
111
120
  /** Inner borders should be straight; shown only if variant: "inner-bordered" */
112
121
 
113
122
  .bs-input-addon:where([data-variant="inner-bordered"]) {
114
- --input-addon-nested-border: var(--bs-violet-lightest);
123
+ --input-addon-nested-border: var(--bs-violet-200);
115
124
  }
116
125
 
117
126
  .bs-input-addon > :where(.bs-input-addon:not(:last-child, :focus-within, [data-part="right"])),
@@ -176,13 +185,6 @@ and issues with box-sizing
176
185
  width: 1rem;
177
186
  }
178
187
 
179
- /* -------- Hover styles -------- */
180
- .bs-input-addon:hover,
181
- :where(label):hover + .bs-input-addon,
182
- :where(label):hover + * .bs-input-addon:where(:not(label .bs-input-addon, label + .bs-input-addon)) {
183
- --input-bg: var(--bs-bg-input-hover);
184
- }
185
-
186
188
  /* -------- Focus styles -------- */
187
189
  .bs-input-addon {
188
190
  --focus-border: var(--bs-blue-base);
@@ -247,6 +249,15 @@ and issues with box-sizing
247
249
  .bs-input-addon:where([data-disabled]:not([data-disabled="false"])) * {
248
250
  pointer-events: none;
249
251
  }
252
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"]))::after,
253
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"]))::before,
254
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"])):where([data-variant="inner-bordered"]) {
255
+ --input-border-width: 0;
256
+ }
257
+
258
+ .bs-input-addon:where([data-disabled]:not([data-disabled="false"])):where([data-variant="inner-bordered"]) > :where(:not(:focus, :focus-within))::after {
259
+ border-right-width: 0;
260
+ }
250
261
 
251
262
  /* -------- Error styles -------- */
252
263
  .bs-input-addon:where([data-error]:not([data-error="false"])),
@@ -7,6 +7,11 @@
7
7
  min-width: 6rem;
8
8
  padding: 0 1rem;
9
9
  }
10
+
11
+ .bs-input-phone .bs-input-addon:where([data-disabled]:not([data-disabled="false"])) :where(button) :where(span) {
12
+ filter: grayscale(1);
13
+ }
14
+
10
15
  .bs-input-phone ul:where(.bs-dropdown-options) {
11
16
  min-width: 7.5rem;
12
17
  }
@@ -21,8 +21,8 @@ textarea,
21
21
  select,
22
22
  :is(.bs-input, .bs-select, .bs-textarea) {
23
23
  appearance: none;
24
- background-color: var(--input-bg, transparent);
25
- border-color: var(--input-border, var(--bs-violet-medium));
24
+ background-color: var(--input-bg, var(--bs-bg-base));
25
+ border-color: var(--input-border, var(--bs-border-input));
26
26
  border-radius: 0.25rem;
27
27
  border-style: solid;
28
28
  border-width: var(--input-border-width, 1px);
@@ -36,6 +36,13 @@ select,
36
36
  padding-inline: var(--input-padding-inline, 0.75rem);
37
37
  }
38
38
 
39
+ :where(.dark) input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
40
+ :where(.dark) textarea,
41
+ :where(.dark) select,
42
+ :where(.dark) :is(.bs-input, .bs-select, .bs-textarea) {
43
+ --input-bg: transparent;
44
+ }
45
+
39
46
  input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
40
47
  textarea,
41
48
  select,
@@ -60,15 +67,21 @@ textarea {
60
67
  :is(input, textarea, select)::placeholder,
61
68
  :is(.bs-input, .bs-select, .bs-textarea)::placeholder,
62
69
  :is(.bs-input, .bs-select, .bs-textarea):where([data-placeholder="true"]) {
63
- color: var(--input-placeholder, var(--bs-violet-lightest));
70
+ color: var(--input-placeholder, var(--bs-violet-100));
64
71
  }
72
+
73
+ :where(.dark) :is(input, textarea, select)::placeholder,
74
+ :where(.dark) :is(.bs-input, .bs-select, .bs-textarea)::placeholder,
75
+ :where(.dark) :is(.bs-input, .bs-select, .bs-textarea):where([data-placeholder="true"]) {
76
+ --input-placeholder: var(--bs-violet-200);
77
+ }
78
+
65
79
  :is(input, textarea, select):where(:focus-visible)::placeholder,
66
80
  :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible)::placeholder {
67
81
  opacity: 0;
68
82
  }
69
83
 
70
84
  /* FOCUS state */
71
-
72
85
  :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible),
73
86
  :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible),
74
87
  :is(select, .bs-select):where(:focus) {
@@ -77,15 +90,7 @@ textarea {
77
90
  outline-width: 0px;
78
91
  }
79
92
 
80
- /* HOVER state */
81
-
82
- :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:hover),
83
- :is(.bs-input, .bs-select, .bs-textarea):where(:hover) {
84
- --input-bg: var(--bs-bg-input-hover);
85
- }
86
-
87
93
  /* DISABLED state */
88
-
89
94
  :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled),
90
95
  :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
91
96
  --input-border: var(--bs-ink-disabled);
@@ -94,7 +99,10 @@ textarea {
94
99
  }
95
100
 
96
101
  /* Text inputs should not have a border when disabled */
97
- :is(input:where(:not([type]),[type="text"],[type="number"],[type="email"],[type="password"],[type="url"])):where(:disabled) {
102
+ :is(input:where(:not([type]),[type="text"],[type="number"],[type="email"],[type="password"],[type="url"])):where(:disabled),
103
+ textarea:where(:disabled),
104
+ select:where(:disabled),
105
+ :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
98
106
  --input-border-width: 0px;
99
107
  }
100
108
 
@@ -145,16 +153,10 @@ select[multiple],
145
153
 
146
154
  :where(.dark) select,
147
155
  :where(.dark) .bs-select {
148
- --input-bg: var(--bs-bg-base);
149
156
  /* URL Encoded SVG dropdown caret so there is something there */
150
157
  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");
151
158
  }
152
159
 
153
- :where(.dark .box) select,
154
- :where(.dark .box) .bs-select {
155
- --input-bg: var(--bg-color, var(--bs-bg-subtle));
156
- }
157
-
158
160
  :where(.dark) select:where(:disabled),
159
161
  :where(.dark) .bs-select:where(:disabled) {
160
162
  /* URL Encoded SVG dropdown caret so there is something there */
@@ -0,0 +1,190 @@
1
+ .bs-horizontal-nav-mobile {
2
+ --bg-color: var(--bs-bg-light);
3
+ --top-offset: 48px;
4
+ -ms-overflow-style: none; /* Internet Explorer 10+ */
5
+ background-color: var(--bg-color);
6
+ display: flex;
7
+ flex-direction: column;
8
+ height: auto;
9
+ left: 0;
10
+ max-height: calc(100vh - var(--top-offset));
11
+ overflow: scroll;
12
+ position: fixed;
13
+ right: 0;
14
+ scrollbar-width: none; /* Firefox */
15
+ top: var(--top-offset);
16
+ z-index: 1001;
17
+ }
18
+
19
+ .bs-horizontal-nav-mobile:where([data-shown="true"]) {
20
+ height: 100vh;
21
+ }
22
+
23
+ @media (min-width: 752px) {
24
+ .bs-horizontal-nav-mobile {
25
+ display: none;
26
+ }
27
+ }
28
+
29
+ /* ===== Nav List ===== */
30
+ .bs-horizontal-nav-mobile :where(ul) {
31
+ display: none;
32
+ flex-direction: column;
33
+ list-style: none;
34
+ }
35
+
36
+ .bs-horizontal-nav-mobile:where([data-shown="true"]) :where(ul) {
37
+ display: flex;
38
+ }
39
+
40
+ /* ===== Toggle ===== */
41
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle) {
42
+ align-items: center;
43
+ color: var(--bs-ink-light);
44
+ cursor: pointer;
45
+ display: flex;
46
+ height: 48px;
47
+ justify-content: space-between;
48
+ padding-bottom: 0.5rem;
49
+ padding-left: 2.25rem;
50
+ padding-right: 2.25rem;
51
+ padding-top: 0.5rem;
52
+ width: 100%;
53
+ }
54
+
55
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle-title) {
56
+ align-items: center;
57
+ display: flex;
58
+ gap: 0.5rem;
59
+ }
60
+
61
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle-title-icon) {
62
+ color: var(--bs-ink-blue);
63
+ height: 1rem;
64
+ width: 1rem;
65
+ }
66
+
67
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle-caret) {
68
+ height: 0.75rem;
69
+ transform: none;
70
+ transition-duration: 0.2s;
71
+ transition-property: transform;
72
+ transition-timing-function: ease-in-out;
73
+ width: 0.75rem;
74
+ }
75
+
76
+ .bs-horizontal-nav-mobile:where([data-shown="true"]) :where(.bs-horizontal-nav-mobile-toggle-caret) {
77
+ transform: rotate(180deg);
78
+ }
79
+
80
+ /* ===== Nav Items ===== */
81
+ .bs-horizontal-nav-mobile :where(ul > li) {
82
+ border-top: 1px solid var(--bs-border-base);
83
+ }
84
+
85
+ .bs-horizontal-nav-mobile :where(ul:not(.bs-horizontal-nav-mobile-nested-menu) > li:last-child) {
86
+ border-bottom: 1px solid var(--bs-border-base);
87
+ }
88
+
89
+ .bs-horizontal-nav-mobile :where(ul > li > a) {
90
+ color: var(--bs-ink-light);
91
+ cursor: pointer;
92
+ display: flex;
93
+ font-weight: 400;
94
+ padding-bottom: 0.75rem;
95
+ padding-left: 2.25rem;
96
+ padding-right: 2.25rem;
97
+ padding-top: 0.75rem;
98
+ }
99
+
100
+ .bs-horizontal-nav-mobile :where(ul > li > a:hover) {
101
+ color: var(--bs-ink-blue);
102
+ }
103
+
104
+ .bs-horizontal-nav-mobile :where(ul > li > a[data-active="true"]) {
105
+ color: var(--bs-ink-base);
106
+ font-weight: 600;
107
+ }
108
+
109
+ .bs-horizontal-nav-mobile :where(ul > li > a[data-active="true"]:hover) {
110
+ color: var(--bs-ink-blue);
111
+ }
112
+
113
+ /* ===== Nested Nav Items ===== */
114
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle) {
115
+ align-items: center;
116
+ color: var(--bs-ink-light);
117
+ cursor: pointer;
118
+ display: flex;
119
+ justify-content: space-between;
120
+ padding-bottom: 0.75rem;
121
+ padding-left: 2.25rem;
122
+ padding-right: 2.25rem;
123
+ padding-top: 0.75rem;
124
+ width: 100%;
125
+ }
126
+
127
+ .bs-horizontal-nav-mobile :where(ul li .bs-horizontal-nav-mobile-nested-toggle[data-active="true"]) {
128
+ font-weight: 600;
129
+ }
130
+
131
+ .bs-horizontal-nav-mobile :where(ul li[data-expanded="true"] .bs-horizontal-nav-mobile-nested-toggle) {
132
+ background-color: var(--bs-bg-medium);
133
+ color: var(--bs-ink-blue);
134
+ font-weight: 600;
135
+ }
136
+
137
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle:hover) {
138
+ color: var(--bs-ink-blue);
139
+ }
140
+
141
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle-caret) {
142
+ height: 0.75rem;
143
+ transform: none;
144
+ transition-duration: 0.2s;
145
+ transition-property: transform;
146
+ transition-timing-function: ease-in-out;
147
+ width: 0.75rem;
148
+ }
149
+
150
+ .bs-horizontal-nav-mobile :where(ul li[data-expanded="true"] .bs-horizontal-nav-mobile-nested-toggle-caret) {
151
+ transform: rotate(180deg);
152
+ }
153
+
154
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu) {
155
+ background-color: var(--bs-bg-medium);
156
+ display: none;
157
+ }
158
+
159
+ .bs-horizontal-nav-mobile :where(ul li[data-expanded="true"] .bs-horizontal-nav-mobile-nested-menu) {
160
+ display: block;
161
+ }
162
+
163
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu > li) {
164
+ border-top: none;
165
+ }
166
+
167
+ /* ===== External Links ===== */
168
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-link) {
169
+ align-items: center;
170
+ display: flex;
171
+ gap: 0.5rem;
172
+ }
173
+
174
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-link-icon) {
175
+ height: 1rem;
176
+ width: 1rem;
177
+ }
178
+
179
+ /* ===== Slotted Items ===== */
180
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-slotted-items) {
181
+ display: none;
182
+ padding-bottom: 0.75rem;
183
+ padding-left: 2.25rem;
184
+ padding-right: 2.25rem;
185
+ padding-top: 0.75rem;
186
+ }
187
+
188
+ .bs-horizontal-nav-mobile:where([data-shown="true"]) :where(.bs-horizontal-nav-mobile-slotted-items) {
189
+ display: block;
190
+ }
@@ -0,0 +1,209 @@
1
+ .bs-horizontal-nav {
2
+ --bg-color: var(--bs-bg-light);
3
+ --top-offset: 48px;
4
+ align-items: center;
5
+ background-color: var(--bg-color);
6
+ bottom: auto;
7
+ display: none;
8
+ height: 48px;
9
+ left: 0;
10
+ position: fixed;
11
+ right: 0;
12
+ top: var(--top-offset);
13
+ z-index: 1001;
14
+ }
15
+
16
+ @media (min-width: 752px) {
17
+ .bs-horizontal-nav {
18
+ display: flex;
19
+ }
20
+ }
21
+
22
+ .bs-horizontal-nav :where(nav) {
23
+ align-items: center;
24
+ display: flex;
25
+ justify-content: space-between;
26
+ margin-left: auto;
27
+ margin-right: auto;
28
+ max-width: calc(85.5rem + 2.25rem + 2.25rem); /* 1368px + 2.25rem x2 padding */
29
+ padding-left: 2.25rem;
30
+ padding-right: 2.25rem;
31
+ width: 100%;
32
+ }
33
+
34
+ /* ===== Nav List ===== */
35
+ .bs-horizontal-nav :where(nav > ul),
36
+ .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul) {
37
+ align-items: center;
38
+ display: flex;
39
+ flex-direction: row;
40
+ gap: 1.5rem;
41
+ list-style: none;
42
+ width: 100%;
43
+ }
44
+
45
+ /* ===== Optional Title ===== */
46
+ .bs-horizontal-nav :where(.bs-horizontal-nav-title) {
47
+ border-right: 1px solid var(--bs-border-base);
48
+ padding-right: 1.5rem;
49
+ width: auto;
50
+ }
51
+
52
+ .bs-horizontal-nav :where(.bs-horizontal-nav-title > a) {
53
+ cursor: pointer;
54
+ display: inline;
55
+ padding-bottom: 0;
56
+ padding-left: 0;
57
+ padding-right: 0;
58
+ padding-top: 0;
59
+ width: auto;
60
+ }
61
+
62
+ /* ===== Nav Items ===== */
63
+ .bs-horizontal-nav :where(nav > ul > li),
64
+ .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li) {
65
+ border-bottom: none;
66
+ display: list-item;
67
+ margin-left: 0;
68
+ width: auto;
69
+ }
70
+
71
+ .bs-horizontal-nav :where(nav > ul > li:not(.bs-horizontal-nav-title) > a),
72
+ .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a) {
73
+ align-items: center;
74
+ border-radius: 4px;
75
+ color: var(--bs-ink-light);
76
+ cursor: pointer;
77
+ display: flex;
78
+ font-weight: 400;
79
+ gap: 0.5rem;
80
+ height: 100%;
81
+ padding-bottom: 0.5rem;
82
+ padding-left: 0;
83
+ padding-right: 0;
84
+ padding-top: 0.5rem;
85
+ width: 100%;
86
+ }
87
+
88
+ .bs-horizontal-nav :where(nav > ul > li:not(.bs-horizontal-nav-title) > a:hover),
89
+ .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a:hover) {
90
+ color: var(--bs-ink-blue);
91
+ }
92
+
93
+ .bs-horizontal-nav :where(nav > ul > li > a[data-active="true"]),
94
+ .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a[data-active="true"]) {
95
+ color: var(--bs-ink-base);
96
+ font-weight: 600;
97
+ }
98
+
99
+ .bs-horizontal-nav :where(nav > ul > li > a[data-active="true"]:hover),
100
+ .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a[data-active="true"]:hover) {
101
+ color: var(--bs-ink-blue);
102
+ }
103
+
104
+ .bs-horizontal-nav :where(.bs-horizontal-nav-first-link-icon) {
105
+ color: var(--bs-ink-blue);
106
+ height: 1rem;
107
+ width: 1rem;
108
+ }
109
+
110
+ /* ===== Nested Nav Items ===== */
111
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle) {
112
+ align-items: center;
113
+ cursor: pointer;
114
+ display: flex;
115
+ gap: 0.5rem;
116
+ line-height: 1.5;
117
+ padding-bottom: 0.5rem;
118
+ padding-top: 0.5rem;
119
+ }
120
+
121
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle:hover) {
122
+ color: var(--bs-ink-blue);
123
+ }
124
+
125
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle[data-active="true"]) {
126
+ color: var(--bs-ink-base);
127
+ font-weight: 600;
128
+ }
129
+
130
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle[data-active="true"]:hover) {
131
+ color: var(--bs-ink-blue);
132
+ }
133
+
134
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle-caret) {
135
+ height: 0.75rem;
136
+ transform: none;
137
+ transition-duration: 0.2s;
138
+ transition-property: transform;
139
+ transition-timing-function: ease-in-out;
140
+ width: 0.75rem;
141
+ }
142
+
143
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle:hover ~ .bs-horizontal-nav-caret) {
144
+ color: var(--bs-ink-blue);
145
+ }
146
+
147
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle[data-expanded="true"]) {
148
+ color: var(--bs-ink-blue);
149
+ font-weight: 600;
150
+ }
151
+
152
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-toggle[data-expanded="true"] .bs-horizontal-nav-nested-toggle-caret) {
153
+ transform: rotate(180deg);
154
+ }
155
+
156
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu) {
157
+ --dropdown-top: 100%;
158
+ border-radius: 8px;
159
+ padding: 1.5rem;
160
+ width: 10.5rem;
161
+ }
162
+
163
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul) {
164
+ list-style: none;
165
+ }
166
+
167
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li) {
168
+ margin-left: 0;
169
+ }
170
+
171
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li > a) {
172
+ font-size: 0.875rem;
173
+ }
174
+
175
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li > a:hover) {
176
+ color: var(--bs-ink-blue);
177
+ text-decoration: underline;
178
+ }
179
+
180
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li > a[data-active="true"]) {
181
+ color: var(--bs-ink-base);
182
+ font-weight: 600;
183
+ }
184
+
185
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li > a[data-active="true"]:hover) {
186
+ color: var(--bs-ink-blue);
187
+ }
188
+
189
+ /* ===== External Links ===== */
190
+ .bs-horizontal-nav :where(.bs-horizontal-nav-external-link-icon) {
191
+ height: 1rem;
192
+ width: 1rem;
193
+ }
194
+
195
+ /* ===== Slotted Items ===== */
196
+ .bs-horizontal-nav :where(.bs-horizontal-nav-slotted-items) {
197
+ margin-left: auto;
198
+ }
199
+
200
+ .bs-horizontal-nav :where(.bs-horizontal-nav-external-links ~ .bs-horizontal-nav-slotted-items) {
201
+ margin-left: 1.5rem;
202
+ }
203
+
204
+ /* ===== Component-specific ===== */
205
+ .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu-override) {
206
+ --dropdown-top: 0;
207
+ padding: 1.5rem;
208
+ width: 10.5rem;
209
+ }
@@ -22,7 +22,7 @@
22
22
 
23
23
  @media (min-width: 752px) {
24
24
  .bs-modal {
25
- max-height: 40.625rem;
25
+ max-height: min(calc(100vh - 3rem), 40.625rem);
26
26
  width: 35rem;
27
27
  }
28
28
  }