@wwtdev/bsds-css 2.24.0 → 2.25.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.
@@ -1,18 +1,22 @@
1
+ :root {
2
+ --bs-vertical-nav-width: 9.875rem;
3
+ --bs-vertical-nav-narrow-width: 4.5rem;
4
+ }
5
+
1
6
  .bs-vertical-nav {
2
7
  --active-color: rgba(255, 255, 255, 0.25);
3
8
  --bg-color: var(--bs-navy-base);
4
9
  --border-color: var(--bs-border-dark);
5
10
  --expand-y-transform: translateY(calc(-1 * var(--top-offset)));
6
11
  --top-offset: 48px;
7
- --width: auto;
8
12
  -ms-overflow-style: none; /* Internet Explorer 10+ */
9
13
  background-color: var(--bg-color);
10
14
  color: var(--bs-white);
11
15
  display: flex;
12
16
  flex-direction: column;
13
- height: 100vh;
17
+ height: 100dvh;
14
18
  left: 0;
15
- max-height: calc(100vh - var(--top-offset));
19
+ max-height: calc(100dvh - var(--top-offset));
16
20
  opacity: 0;
17
21
  overflow: scroll;
18
22
  padding-bottom: 1.5rem;
@@ -26,8 +30,8 @@
26
30
  /* Slight delay for visibility to change prior to opacity */
27
31
  transition: opacity 200ms ease 10ms;
28
32
  visibility: hidden;
29
- width: var(--width);
30
- z-index: 1001;
33
+ width: auto;
34
+ z-index: 1000;
31
35
  }
32
36
 
33
37
  .bs-vertical-nav:where([data-mobile-shown="true"]) {
@@ -44,7 +48,6 @@
44
48
 
45
49
  @media (min-width: 1166px) {
46
50
  .bs-vertical-nav {
47
- --width: 9.875rem;
48
51
  border-right: 1px solid var(--bg-color);
49
52
  opacity: 1;
50
53
  padding-bottom: 1rem;
@@ -54,10 +57,11 @@
54
57
  right: auto;
55
58
  transition: max-height 200ms ease, transform 200ms ease;
56
59
  visibility: visible;
60
+ width: var(--bs-vertical-nav-width);
57
61
  }
58
62
 
59
63
  .bs-vertical-nav:where([data-narrow="true"]) {
60
- --width: 4.5rem;
64
+ width: var(--bs-vertical-nav-narrow-width);
61
65
  }
62
66
  }
63
67
 
@@ -67,7 +71,7 @@
67
71
 
68
72
  .bs-vertical-nav:where([data-y-expand="true"]) {
69
73
  transform: var(--expand-y-transform);
70
- max-height: 100vh;
74
+ max-height: 100dvh;
71
75
  }
72
76
 
73
77
  /* ===== Sections ===== */
@@ -104,6 +108,21 @@
104
108
  width: 100%;
105
109
  }
106
110
 
111
+ @media (min-width: 1166px) {
112
+ .bs-vertical-nav :where(.bs-vertical-nav-section-toggle) {
113
+ /* nav width - nav left padding - nav right padding */
114
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
115
+ }
116
+
117
+ .bs-vertical-nav :where(.bs-vertical-nav-section-toggle span:first-child) {
118
+ overflow: hidden;
119
+ text-align: start;
120
+ text-overflow: ellipsis;
121
+ /* nav width - nav left padding - nav right padding - link left padding - link right padding - caret width */
122
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.75rem);
123
+ }
124
+ }
125
+
107
126
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle-caret) {
108
127
  height: 0.75rem;
109
128
  transform: none;
@@ -155,6 +174,24 @@
155
174
  font-size: 0.875rem;
156
175
  padding-bottom: 0.5rem;
157
176
  padding-top: 0.5rem;
177
+ /* nav width - nav left padding - nav right padding */
178
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
179
+ }
180
+
181
+ /* Text overflow - normal width - no icon */
182
+ .bs-vertical-nav :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child) {
183
+ overflow: hidden;
184
+ text-overflow: ellipsis;
185
+ /* nav width - nav left padding - nav right padding - link left padding - link right padding */
186
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
187
+ }
188
+
189
+ /* Text overflow - normal width - with icon */
190
+ .bs-vertical-nav :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
191
+ overflow: hidden;
192
+ text-overflow: ellipsis;
193
+ /* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
194
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.875rem - 0.5rem);
158
195
  }
159
196
 
160
197
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
@@ -167,6 +204,17 @@
167
204
  padding-right: 0.25rem;
168
205
  padding-top: 0.75rem;
169
206
  text-align: center;
207
+ /* nav width - nav left padding - nav right padding */
208
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
209
+ }
210
+
211
+ /* Text overflow - narrow width */
212
+ .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child),
213
+ .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
214
+ overflow: hidden;
215
+ text-overflow: ellipsis;
216
+ /* nav width - nav left padding - nav right padding - link left padding */
217
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
170
218
  }
171
219
  }
172
220
 
@@ -196,37 +244,39 @@
196
244
  }
197
245
  }
198
246
 
199
- /* ===== External Links ===== */
200
- .bs-vertical-nav :where(.bs-vertical-nav-external-links) {
247
+ /* ===== End Items ===== */
248
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items) {
249
+ display: flex;
250
+ flex-direction: column;
251
+ gap: 0.25rem;
201
252
  margin-top: auto;
202
- padding-top: 2.25rem;
203
253
  }
204
254
 
205
- .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-external-links) {
206
- display: none;
255
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > *) {
256
+ color: var(--bs-white);
207
257
  }
208
258
 
209
- .bs-vertical-nav :where(.bs-vertical-nav-external-links .bs-vertical-nav-external-link-icon) {
210
- height: 1rem;
211
- width: 1rem;
259
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
260
+ color: var(--bs-white);
261
+ padding-bottom: 0.5rem;
262
+ padding-left: 0.75rem;
263
+ padding-right: 0.75rem;
264
+ padding-top: 0.5rem;
212
265
  }
213
266
 
214
267
  @media (min-width: 1166px) {
215
- .bs-vertical-nav :where(.bs-vertical-nav-external-links .bs-vertical-nav-external-link-icon) {
216
- height: 0.875rem;
217
- width: 0.875rem;
268
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
269
+ font-size: 0.875rem;
218
270
  }
219
271
  }
220
272
 
221
- /* ===== Slotted Items ===== */
222
- .bs-vertical-nav :where(.bs-vertical-nav-slotted-items) {
223
- margin-top: auto;
224
- }
225
-
226
- .bs-vertical-nav :where(.bs-vertical-nav-external-links ~ .bs-vertical-nav-slotted-items) {
227
- margin-top: 1rem;
273
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > button) {
274
+ margin-bottom: 0.5rem;
275
+ margin-left: 0.75rem;
276
+ margin-right: 0.75rem;
277
+ margin-top: 0.5rem;
228
278
  }
229
279
 
230
- .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-slotted-items) {
280
+ .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-end-items) {
231
281
  display: none;
232
282
  }
@@ -245,7 +245,7 @@ html:where(:focus-within) {
245
245
 
246
246
  body {
247
247
  line-height: 1.5;
248
- min-height: 100vh;
248
+ min-height: 100dvh;
249
249
  text-rendering: optimizeSpeed;
250
250
  }
251
251
 
package/dist/wwt-bsds.css CHANGED
@@ -235,7 +235,7 @@ html:where(:focus-within) {
235
235
  /* Set core body defaults */
236
236
  body {
237
237
  line-height: 1.5;
238
- min-height: 100vh;
238
+ min-height: 100dvh;
239
239
  text-rendering: optimizeSpeed;
240
240
  }
241
241
  /* Elements that don't have a class get default styles */
@@ -3962,6 +3962,9 @@ select[multiple],
3962
3962
  :where(button).bs-select:where([data-open="true"]) :where(.bs-icon) {
3963
3963
  transform: rotate(180deg);
3964
3964
  }
3965
+ :root {
3966
+ --bs-horizontal-nav-height: 48px;
3967
+ }
3965
3968
  .bs-horizontal-nav {
3966
3969
  --bg-color: var(--bs-bg-light);
3967
3970
  --top-offset: 48px;
@@ -3969,12 +3972,12 @@ select[multiple],
3969
3972
  background-color: var(--bg-color);
3970
3973
  bottom: auto;
3971
3974
  display: none;
3972
- height: 48px;
3975
+ height: var(--bs-horizontal-nav-height);
3973
3976
  left: 0;
3974
3977
  position: fixed;
3975
3978
  right: 0;
3976
3979
  top: var(--top-offset);
3977
- z-index: 1001;
3980
+ z-index: 1000;
3978
3981
  }
3979
3982
  @media (min-width: 1166px) {
3980
3983
  .bs-horizontal-nav {
@@ -3993,8 +3996,7 @@ select[multiple],
3993
3996
  width: 100%;
3994
3997
  }
3995
3998
  /* ===== Nav List ===== */
3996
- .bs-horizontal-nav :where(nav > ul),
3997
- .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul) {
3999
+ .bs-horizontal-nav :where(nav > ul) {
3998
4000
  align-items: center;
3999
4001
  display: flex;
4000
4002
  flex-direction: row;
@@ -4015,18 +4017,15 @@ select[multiple],
4015
4017
  padding-left: 0;
4016
4018
  padding-right: 0;
4017
4019
  padding-top: 0;
4018
- width: auto;
4019
4020
  }
4020
4021
  /* ===== Nav Items ===== */
4021
- .bs-horizontal-nav :where(nav > ul > li),
4022
- .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li) {
4022
+ .bs-horizontal-nav :where(nav > ul > li) {
4023
4023
  border-bottom: none;
4024
4024
  display: list-item;
4025
4025
  margin-left: 0;
4026
4026
  width: auto;
4027
4027
  }
4028
- .bs-horizontal-nav :where(nav > ul > li:not(.bs-horizontal-nav-title) > a),
4029
- .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a) {
4028
+ .bs-horizontal-nav :where(nav > ul > li:not(.bs-horizontal-nav-title) > a) {
4030
4029
  align-items: center;
4031
4030
  border-radius: 4px;
4032
4031
  color: var(--bs-ink-light);
@@ -4041,17 +4040,14 @@ select[multiple],
4041
4040
  padding-top: 0.5rem;
4042
4041
  width: 100%;
4043
4042
  }
4044
- .bs-horizontal-nav :where(nav > ul > li:not(.bs-horizontal-nav-title) > a:hover),
4045
- .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a:hover) {
4043
+ .bs-horizontal-nav :where(nav > ul > li > a:hover) {
4046
4044
  color: var(--bs-ink-blue);
4047
4045
  }
4048
- .bs-horizontal-nav :where(nav > ul > li > a[data-active="true"]),
4049
- .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a[data-active="true"]) {
4046
+ .bs-horizontal-nav :where(nav > ul > li > a[data-active="true"]) {
4050
4047
  color: var(--bs-ink-base);
4051
4048
  font-weight: 600;
4052
4049
  }
4053
- .bs-horizontal-nav :where(nav > ul > li > a[data-active="true"]:hover),
4054
- .bs-horizontal-nav :where(nav > .bs-horizontal-nav-external-links > ul > li > a[data-active="true"]:hover) {
4050
+ .bs-horizontal-nav :where(nav > ul > li > a[data-active="true"]:hover) {
4055
4051
  color: var(--bs-ink-blue);
4056
4052
  }
4057
4053
  .bs-horizontal-nav :where(.bs-horizontal-nav-first-link-icon) {
@@ -4101,9 +4097,11 @@ select[multiple],
4101
4097
  --dropdown-top: 100%;
4102
4098
  border-radius: 8px;
4103
4099
  padding: 1.5rem;
4104
- width: 10.5rem;
4105
4100
  }
4106
4101
  .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul) {
4102
+ display: inline-flex;
4103
+ flex-direction: column;
4104
+ gap: 0.5rem;
4107
4105
  list-style: none;
4108
4106
  }
4109
4107
  .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li) {
@@ -4123,23 +4121,29 @@ select[multiple],
4123
4121
  .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu > ul > li > a[data-active="true"]:hover) {
4124
4122
  color: var(--bs-ink-blue);
4125
4123
  }
4126
- /* ===== External Links ===== */
4127
- .bs-horizontal-nav :where(.bs-horizontal-nav-external-link-icon) {
4128
- height: 1rem;
4129
- width: 1rem;
4130
- }
4131
- /* ===== Slotted Items ===== */
4132
- .bs-horizontal-nav :where(.bs-horizontal-nav-slotted-items) {
4124
+ /* ===== End Items ===== */
4125
+ .bs-horizontal-nav :where(.bs-horizontal-nav-end-items) {
4126
+ display: flex;
4127
+ gap: 1.5rem;
4133
4128
  margin-left: auto;
4129
+ white-space: nowrap;
4130
+ }
4131
+ .bs-horizontal-nav :where(.bs-horizontal-nav-end-items > *) {
4132
+ font-size: 0.75rem;
4133
+ font-weight: 600;
4134
4134
  }
4135
- .bs-horizontal-nav :where(.bs-horizontal-nav-external-links ~ .bs-horizontal-nav-slotted-items) {
4136
- margin-left: 1.5rem;
4135
+ .bs-horizontal-nav :where(.bs-horizontal-nav-end-items > *:not(button)) {
4136
+ color: var(--bs-ink-light);
4137
+ padding-bottom: 0.5rem;
4138
+ padding-left: 0rem;
4139
+ padding-right: 0rem;
4140
+ padding-top: 0.5rem;
4137
4141
  }
4138
- /* ===== Component-specific ===== */
4139
- .bs-horizontal-nav :where(.bs-horizontal-nav-nested-menu-override) {
4140
- --dropdown-top: 0;
4141
- padding: 1.5rem;
4142
- width: 10.5rem;
4142
+ .bs-horizontal-nav :where(.bs-horizontal-nav-end-items > button) {
4143
+ margin-bottom: 0.5rem;
4144
+ margin-left: 0rem;
4145
+ margin-right: 0rem;
4146
+ margin-top: 0.5rem;
4143
4147
  }
4144
4148
  .bs-horizontal-nav-mobile {
4145
4149
  --bg-color: var(--bs-bg-light);
@@ -4150,7 +4154,7 @@ select[multiple],
4150
4154
  position: fixed;
4151
4155
  right: 0;
4152
4156
  top: var(--top-offset);
4153
- z-index: 1001;
4157
+ z-index: 1000;
4154
4158
  }
4155
4159
  @media (min-width: 1166px) {
4156
4160
  .bs-horizontal-nav-mobile {
@@ -4164,7 +4168,7 @@ select[multiple],
4164
4168
  color: var(--bs-ink-light);
4165
4169
  cursor: pointer;
4166
4170
  display: flex;
4167
- height: 48px;
4171
+ height: var(--bs-horizontal-nav-height);
4168
4172
  justify-content: space-between;
4169
4173
  padding-bottom: 0.5rem;
4170
4174
  padding-left: 2.25rem;
@@ -4202,9 +4206,9 @@ select[multiple],
4202
4206
  background-color: var(--bg-color);
4203
4207
  display: flex;
4204
4208
  flex-direction: column;
4205
- height: 100vh;
4209
+ height: 100dvh;
4206
4210
  /* 100vh - top offset - toggle height */
4207
- max-height: calc(100vh - var(--top-offset) - 48px);
4211
+ max-height: calc(100dvh - var(--top-offset) - 48px);
4208
4212
  opacity: 0;
4209
4213
  overflow: scroll;
4210
4214
  scrollbar-width: none; /* Firefox */
@@ -4213,7 +4217,7 @@ select[multiple],
4213
4217
  transition-timing-function: ease;
4214
4218
  }
4215
4219
  .bs-horizontal-nav-mobile:where([data-hide-toggle="true"]) :where(.bs-horizontal-nav-mobile-menu) {
4216
- max-height: calc(100vh - var(--top-offset));
4220
+ max-height: calc(100dvh - var(--top-offset));
4217
4221
  }
4218
4222
  .bs-horizontal-nav-mobile:where([data-shown="true"]) :where(.bs-horizontal-nav-mobile-menu) {
4219
4223
  opacity: 1;
@@ -4314,16 +4318,24 @@ select[multiple],
4314
4318
  height: 1rem;
4315
4319
  width: 1rem;
4316
4320
  }
4317
- /* ===== Slotted Items ===== */
4318
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-slotted-items) {
4321
+ /* ===== End Items ===== */
4322
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-end-items) {
4323
+ display: flex;
4324
+ flex-direction: column;
4325
+ margin-bottom: 1.5rem;
4326
+ margin-top: auto;
4327
+ }
4328
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-end-items > *:not(button)) {
4319
4329
  padding-bottom: 0.75rem;
4320
4330
  padding-left: 2.25rem;
4321
4331
  padding-right: 2.25rem;
4322
4332
  padding-top: 0.75rem;
4323
- margin-top: auto;
4324
4333
  }
4325
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-links ~ .bs-horizontal-nav-mobile-slotted-items) {
4326
- margin-top: 0;
4334
+ .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-end-items > button) {
4335
+ margin-bottom: 0.75rem;
4336
+ margin-left: 2.25rem;
4337
+ margin-right: 2.25rem;
4338
+ margin-top: 0.75rem;
4327
4339
  }
4328
4340
  /* Vue Transition Styles - Only used in Vue component */
4329
4341
  .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-enter-from),
@@ -4533,7 +4545,7 @@ select[multiple],
4533
4545
  }
4534
4546
  @media (min-width: 752px) {
4535
4547
  .bs-modal {
4536
- max-height: min(calc(100vh - 3rem), 40.625rem);
4548
+ max-height: min(calc(100dvh - 3rem), 40.625rem);
4537
4549
  width: var(--base-modal-width);
4538
4550
  }
4539
4551
 
@@ -6008,21 +6020,24 @@ This must go last to properly override the other classes
6008
6020
  opacity: 0;
6009
6021
  transform: translateY(-50%) scale(0.5);
6010
6022
  }
6023
+ :root {
6024
+ --bs-vertical-nav-width: 9.875rem;
6025
+ --bs-vertical-nav-narrow-width: 4.5rem;
6026
+ }
6011
6027
  .bs-vertical-nav {
6012
6028
  --active-color: rgba(255, 255, 255, 0.25);
6013
6029
  --bg-color: var(--bs-navy-base);
6014
6030
  --border-color: var(--bs-border-dark);
6015
6031
  --expand-y-transform: translateY(calc(-1 * var(--top-offset)));
6016
6032
  --top-offset: 48px;
6017
- --width: auto;
6018
6033
  -ms-overflow-style: none; /* Internet Explorer 10+ */
6019
6034
  background-color: var(--bg-color);
6020
6035
  color: var(--bs-white);
6021
6036
  display: flex;
6022
6037
  flex-direction: column;
6023
- height: 100vh;
6038
+ height: 100dvh;
6024
6039
  left: 0;
6025
- max-height: calc(100vh - var(--top-offset));
6040
+ max-height: calc(100dvh - var(--top-offset));
6026
6041
  opacity: 0;
6027
6042
  overflow: scroll;
6028
6043
  padding-bottom: 1.5rem;
@@ -6036,8 +6051,8 @@ This must go last to properly override the other classes
6036
6051
  /* Slight delay for visibility to change prior to opacity */
6037
6052
  transition: opacity 200ms ease 10ms;
6038
6053
  visibility: hidden;
6039
- width: var(--width);
6040
- z-index: 1001;
6054
+ width: auto;
6055
+ z-index: 1000;
6041
6056
  }
6042
6057
  .bs-vertical-nav:where([data-mobile-shown="true"]) {
6043
6058
  opacity: 1;
@@ -6051,7 +6066,6 @@ This must go last to properly override the other classes
6051
6066
  }
6052
6067
  @media (min-width: 1166px) {
6053
6068
  .bs-vertical-nav {
6054
- --width: 9.875rem;
6055
6069
  border-right: 1px solid var(--bg-color);
6056
6070
  opacity: 1;
6057
6071
  padding-bottom: 1rem;
@@ -6061,10 +6075,11 @@ This must go last to properly override the other classes
6061
6075
  right: auto;
6062
6076
  transition: max-height 200ms ease, transform 200ms ease;
6063
6077
  visibility: visible;
6078
+ width: var(--bs-vertical-nav-width);
6064
6079
  }
6065
6080
 
6066
6081
  .bs-vertical-nav:where([data-narrow="true"]) {
6067
- --width: 4.5rem;
6082
+ width: var(--bs-vertical-nav-narrow-width);
6068
6083
  }
6069
6084
  }
6070
6085
  .bs-vertical-nav::-webkit-scrollbar {
@@ -6072,7 +6087,7 @@ This must go last to properly override the other classes
6072
6087
  }
6073
6088
  .bs-vertical-nav:where([data-y-expand="true"]) {
6074
6089
  transform: var(--expand-y-transform);
6075
- max-height: 100vh;
6090
+ max-height: 100dvh;
6076
6091
  }
6077
6092
  /* ===== Sections ===== */
6078
6093
  .bs-vertical-nav :where(.bs-vertical-nav-section) {
@@ -6104,6 +6119,20 @@ This must go last to properly override the other classes
6104
6119
  padding-top: 0.5rem;
6105
6120
  width: 100%;
6106
6121
  }
6122
+ @media (min-width: 1166px) {
6123
+ .bs-vertical-nav :where(.bs-vertical-nav-section-toggle) {
6124
+ /* nav width - nav left padding - nav right padding */
6125
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
6126
+ }
6127
+
6128
+ .bs-vertical-nav :where(.bs-vertical-nav-section-toggle span:first-child) {
6129
+ overflow: hidden;
6130
+ text-align: start;
6131
+ text-overflow: ellipsis;
6132
+ /* nav width - nav left padding - nav right padding - link left padding - link right padding - caret width */
6133
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.75rem);
6134
+ }
6135
+ }
6107
6136
  .bs-vertical-nav :where(.bs-vertical-nav-section-toggle-caret) {
6108
6137
  height: 0.75rem;
6109
6138
  transform: none;
@@ -6150,6 +6179,24 @@ This must go last to properly override the other classes
6150
6179
  font-size: 0.875rem;
6151
6180
  padding-bottom: 0.5rem;
6152
6181
  padding-top: 0.5rem;
6182
+ /* nav width - nav left padding - nav right padding */
6183
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
6184
+ }
6185
+
6186
+ /* Text overflow - normal width - no icon */
6187
+ .bs-vertical-nav :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child) {
6188
+ overflow: hidden;
6189
+ text-overflow: ellipsis;
6190
+ /* nav width - nav left padding - nav right padding - link left padding - link right padding */
6191
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
6192
+ }
6193
+
6194
+ /* Text overflow - normal width - with icon */
6195
+ .bs-vertical-nav :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
6196
+ overflow: hidden;
6197
+ text-overflow: ellipsis;
6198
+ /* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
6199
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.875rem - 0.5rem);
6153
6200
  }
6154
6201
 
6155
6202
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
@@ -6162,6 +6209,17 @@ This must go last to properly override the other classes
6162
6209
  padding-right: 0.25rem;
6163
6210
  padding-top: 0.75rem;
6164
6211
  text-align: center;
6212
+ /* nav width - nav left padding - nav right padding */
6213
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6214
+ }
6215
+
6216
+ /* Text overflow - narrow width */
6217
+ .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child),
6218
+ .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
6219
+ overflow: hidden;
6220
+ text-overflow: ellipsis;
6221
+ /* nav width - nav left padding - nav right padding - link left padding */
6222
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
6165
6223
  }
6166
6224
  }
6167
6225
  .bs-vertical-nav :where(ul li a:hover) {
@@ -6186,31 +6244,34 @@ This must go last to properly override the other classes
6186
6244
  width: 1rem;
6187
6245
  }
6188
6246
  }
6189
- /* ===== External Links ===== */
6190
- .bs-vertical-nav :where(.bs-vertical-nav-external-links) {
6247
+ /* ===== End Items ===== */
6248
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items) {
6249
+ display: flex;
6250
+ flex-direction: column;
6251
+ gap: 0.25rem;
6191
6252
  margin-top: auto;
6192
- padding-top: 2.25rem;
6193
6253
  }
6194
- .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-external-links) {
6195
- display: none;
6254
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > *) {
6255
+ color: var(--bs-white);
6196
6256
  }
6197
- .bs-vertical-nav :where(.bs-vertical-nav-external-links .bs-vertical-nav-external-link-icon) {
6198
- height: 1rem;
6199
- width: 1rem;
6257
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
6258
+ color: var(--bs-white);
6259
+ padding-bottom: 0.5rem;
6260
+ padding-left: 0.75rem;
6261
+ padding-right: 0.75rem;
6262
+ padding-top: 0.5rem;
6200
6263
  }
6201
6264
  @media (min-width: 1166px) {
6202
- .bs-vertical-nav :where(.bs-vertical-nav-external-links .bs-vertical-nav-external-link-icon) {
6203
- height: 0.875rem;
6204
- width: 0.875rem;
6265
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
6266
+ font-size: 0.875rem;
6205
6267
  }
6206
6268
  }
6207
- /* ===== Slotted Items ===== */
6208
- .bs-vertical-nav :where(.bs-vertical-nav-slotted-items) {
6209
- margin-top: auto;
6210
- }
6211
- .bs-vertical-nav :where(.bs-vertical-nav-external-links ~ .bs-vertical-nav-slotted-items) {
6212
- margin-top: 1rem;
6269
+ .bs-vertical-nav :where(.bs-vertical-nav-end-items > button) {
6270
+ margin-bottom: 0.5rem;
6271
+ margin-left: 0.75rem;
6272
+ margin-right: 0.75rem;
6273
+ margin-top: 0.5rem;
6213
6274
  }
6214
- .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-slotted-items) {
6275
+ .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-end-items) {
6215
6276
  display: none;
6216
6277
  }