@wwtdev/bsds-css 3.0.0-rc.44 → 3.0.0-rc.46
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.
|
@@ -5110,14 +5110,23 @@ a.bs-text-button {
|
|
|
5110
5110
|
--step-color: var(--bs-ink-negative);
|
|
5111
5111
|
--progress-step-bg: var(--bs-negative-base);
|
|
5112
5112
|
}
|
|
5113
|
-
.bs-vertical-nav {
|
|
5113
|
+
.bs-vertical-nav-wrapper {
|
|
5114
5114
|
--active-color: rgba(255, 255, 255, 0.25);
|
|
5115
5115
|
--bg-color: var(--bs-navy-base);
|
|
5116
5116
|
--border-color: var(--bs-border-dark);
|
|
5117
|
+
--text-color: var(--bs-white);
|
|
5118
|
+
--link-color: var(--bs-white);
|
|
5119
|
+
--link-hover-color: var(--bs-white);
|
|
5120
|
+
--link-active-color: var(--bs-white);
|
|
5121
|
+
--toggle-bg-color: var(--bg-color);
|
|
5122
|
+
--toggle-color: var(--bs-white);
|
|
5117
5123
|
--top-offset: 48px;
|
|
5124
|
+
}
|
|
5125
|
+
.bs-vertical-nav {
|
|
5118
5126
|
-ms-overflow-style: none; /* Internet Explorer 10+ */
|
|
5119
5127
|
background-color: var(--bg-color);
|
|
5120
|
-
|
|
5128
|
+
border-inline-end: 1px solid var(--border-color);
|
|
5129
|
+
color: var(--text-color);
|
|
5121
5130
|
display: flex;
|
|
5122
5131
|
flex-direction: column;
|
|
5123
5132
|
height: 100dvh;
|
|
@@ -5143,22 +5152,22 @@ a.bs-text-button {
|
|
|
5143
5152
|
opacity: 1;
|
|
5144
5153
|
visibility: visible;
|
|
5145
5154
|
}
|
|
5146
|
-
.
|
|
5155
|
+
.bs-vertical-nav:where([data-collapsible="true"]) {
|
|
5156
|
+
transition: opacity 200ms ease 10ms, width 350ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
5157
|
+
}
|
|
5158
|
+
.dark .bs-vertical-nav-wrapper {
|
|
5147
5159
|
--active-color: rgba(255, 255, 255, 0.25);
|
|
5148
5160
|
--bg-color: var(--bs-bg-base);
|
|
5149
|
-
--border-color: var(--bs-border-
|
|
5150
|
-
border-right: 1px solid var(--bs-border-medium);
|
|
5161
|
+
--border-color: var(--bs-border-medium);
|
|
5151
5162
|
}
|
|
5152
5163
|
@media (min-width: 1166px) {
|
|
5153
5164
|
.bs-vertical-nav {
|
|
5154
|
-
border-right: 1px solid var(--bg-color);
|
|
5155
5165
|
opacity: 1;
|
|
5156
5166
|
padding-bottom: 1rem;
|
|
5157
5167
|
padding-left: 0.5rem;
|
|
5158
5168
|
padding-right: 0.5rem;
|
|
5159
5169
|
padding-top: 1rem;
|
|
5160
5170
|
right: auto;
|
|
5161
|
-
transition: none;
|
|
5162
5171
|
visibility: visible;
|
|
5163
5172
|
width: var(--bs-vertical-nav-width);
|
|
5164
5173
|
}
|
|
@@ -5166,10 +5175,58 @@ a.bs-text-button {
|
|
|
5166
5175
|
.bs-vertical-nav:where([data-narrow="true"]) {
|
|
5167
5176
|
width: var(--bs-vertical-nav-narrow-width);
|
|
5168
5177
|
}
|
|
5178
|
+
|
|
5179
|
+
.bs-vertical-nav:where([data-collapsed="true"]) {
|
|
5180
|
+
width: var(--bs-vertical-nav-collapsed-width);
|
|
5181
|
+
}
|
|
5169
5182
|
}
|
|
5170
5183
|
.bs-vertical-nav::-webkit-scrollbar {
|
|
5171
5184
|
display: none; /* Safari and Chrome */
|
|
5172
5185
|
}
|
|
5186
|
+
/* ===== Collapse Toggle Button ===== */
|
|
5187
|
+
.bs-vertical-nav-toggle {
|
|
5188
|
+
align-items: center;
|
|
5189
|
+
background: var(--toggle-bg-color);
|
|
5190
|
+
border: 1px solid var(--border-color);
|
|
5191
|
+
border-radius: 100px;
|
|
5192
|
+
color: var(--toggle-color);
|
|
5193
|
+
cursor: pointer;
|
|
5194
|
+
display: none; /* Hidden by default on mobile */
|
|
5195
|
+
height: 24px;
|
|
5196
|
+
width: 24px;
|
|
5197
|
+
justify-content: center;
|
|
5198
|
+
padding: 0;
|
|
5199
|
+
position: fixed;
|
|
5200
|
+
left: calc(var(--bs-vertical-nav-width) - 0.5rem);
|
|
5201
|
+
pointer-events: auto; /* Ensure button is clickable */
|
|
5202
|
+
top: calc(var(--top-offset) + 3rem); /* top-offset + 3rem */
|
|
5203
|
+
transition: left 300ms ease-out, opacity 100ms ease-out;
|
|
5204
|
+
z-index: 1002; /* Above nav to prevent hover conflicts */
|
|
5205
|
+
}
|
|
5206
|
+
@media (min-width: 1166px) {
|
|
5207
|
+
.bs-vertical-nav-toggle {
|
|
5208
|
+
display: flex;
|
|
5209
|
+
opacity: 1;
|
|
5210
|
+
transition: left 300ms ease-out, opacity 100ms ease-out;
|
|
5211
|
+
}
|
|
5212
|
+
|
|
5213
|
+
.bs-vertical-nav-toggle:where([data-collapsed="true"]) {
|
|
5214
|
+
left: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem);
|
|
5215
|
+
}
|
|
5216
|
+
|
|
5217
|
+
/* Adjust position for narrow variant when NOT collapsed */
|
|
5218
|
+
.bs-vertical-nav-toggle:where([data-narrow="true"]:not([data-collapsed="true"])) {
|
|
5219
|
+
left: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem);
|
|
5220
|
+
}
|
|
5221
|
+
}
|
|
5222
|
+
.bs-vertical-nav-toggle-icon {
|
|
5223
|
+
height: 8px;
|
|
5224
|
+
width: 8px;
|
|
5225
|
+
color: inherit;
|
|
5226
|
+
transition: transform 200ms var(--bs-transition-ease);
|
|
5227
|
+
will-change: transform;
|
|
5228
|
+
flex-shrink: 0;
|
|
5229
|
+
}
|
|
5173
5230
|
/* ===== Sections ===== */
|
|
5174
5231
|
.bs-vertical-nav :where(.bs-vertical-nav-section) {
|
|
5175
5232
|
border-top: 2px solid var(--border-color);
|
|
@@ -5181,6 +5238,10 @@ a.bs-text-button {
|
|
|
5181
5238
|
margin-top: 0.25rem;
|
|
5182
5239
|
}
|
|
5183
5240
|
}
|
|
5241
|
+
/* Divider-only sections have no additional padding since no toggle button */
|
|
5242
|
+
.bs-vertical-nav :where(.bs-vertical-nav-section[data-divider-only="true"]) {
|
|
5243
|
+
padding-top: 0.25rem;
|
|
5244
|
+
}
|
|
5184
5245
|
/* Don't show border if the very first item is a section */
|
|
5185
5246
|
.bs-vertical-nav :where(ul li:first-child) {
|
|
5186
5247
|
border-top: none;
|
|
@@ -5249,54 +5310,64 @@ a.bs-text-button {
|
|
|
5249
5310
|
.bs-vertical-nav :where(ul li a) {
|
|
5250
5311
|
align-items: center;
|
|
5251
5312
|
border-radius: 4px;
|
|
5252
|
-
color: var(--
|
|
5313
|
+
color: var(--link-color);
|
|
5253
5314
|
cursor: pointer;
|
|
5254
5315
|
display: flex;
|
|
5255
5316
|
font-size: 1rem;
|
|
5256
5317
|
font-weight: 400;
|
|
5257
5318
|
gap: 0.5rem;
|
|
5258
5319
|
height: 100%;
|
|
5259
|
-
padding
|
|
5260
|
-
|
|
5261
|
-
padding-right: 0.75rem;
|
|
5262
|
-
padding-top: 0.75rem;
|
|
5320
|
+
padding: 0.5rem 0.75rem;
|
|
5321
|
+
position: relative;
|
|
5263
5322
|
text-decoration: none;
|
|
5264
|
-
|
|
5323
|
+
}
|
|
5324
|
+
/* Narrow variant - text always visible on desktop (overrides collapsed state) */
|
|
5325
|
+
@media (min-width: 1166px) {
|
|
5326
|
+
.bs-vertical-nav:where([data-narrow="true"]) :where(ul li a > span:last-child) {
|
|
5327
|
+
opacity: 1;
|
|
5328
|
+
visibility: visible;
|
|
5329
|
+
width: auto;
|
|
5330
|
+
}
|
|
5265
5331
|
}
|
|
5266
5332
|
@media (min-width: 1166px) {
|
|
5267
5333
|
.bs-vertical-nav :where(ul li a) {
|
|
5268
5334
|
font-size: 0.875rem;
|
|
5269
|
-
|
|
5270
|
-
padding
|
|
5335
|
+
min-height: 2.5rem; /* Fixed minimum height to prevent height changes */
|
|
5336
|
+
padding: 0.5rem 0.75rem; /* Explicit padding for consistency */
|
|
5271
5337
|
/* nav width - nav left padding - nav right padding */
|
|
5272
5338
|
width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
|
|
5273
5339
|
}
|
|
5274
5340
|
|
|
5341
|
+
/* Collapsed state width */
|
|
5342
|
+
.bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a) {
|
|
5343
|
+
/* collapsed width - nav left padding - nav right padding */
|
|
5344
|
+
width: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem - 0.5rem);
|
|
5345
|
+
}
|
|
5346
|
+
|
|
5275
5347
|
/* Text overflow - normal width - no icon */
|
|
5276
5348
|
.bs-vertical-nav :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child) {
|
|
5277
5349
|
overflow: hidden;
|
|
5278
5350
|
text-overflow: ellipsis;
|
|
5351
|
+
white-space: nowrap;
|
|
5279
5352
|
/* nav width - nav left padding - nav right padding - link left padding - link right padding */
|
|
5280
|
-
width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem
|
|
5353
|
+
width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
|
|
5281
5354
|
}
|
|
5282
5355
|
|
|
5283
5356
|
/* Text overflow - normal width - with icon */
|
|
5284
5357
|
.bs-vertical-nav :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
|
|
5285
5358
|
overflow: hidden;
|
|
5286
5359
|
text-overflow: ellipsis;
|
|
5360
|
+
white-space: nowrap;
|
|
5287
5361
|
/* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
|
|
5288
|
-
width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem -
|
|
5362
|
+
width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
|
|
5289
5363
|
}
|
|
5290
5364
|
|
|
5291
5365
|
.bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
|
|
5292
5366
|
flex-direction: column;
|
|
5293
5367
|
font-size: 0.6875rem;
|
|
5294
|
-
gap: 0.
|
|
5368
|
+
gap: 0.5rem; /* 8px - matches Figma */
|
|
5295
5369
|
line-height: 1.3;
|
|
5296
|
-
padding
|
|
5297
|
-
padding-left: 0.25rem;
|
|
5298
|
-
padding-right: 0.25rem;
|
|
5299
|
-
padding-top: 0.75rem;
|
|
5370
|
+
padding: 0.5rem 0.75rem; /* 8px 12px - matches Figma */
|
|
5300
5371
|
text-align: center;
|
|
5301
5372
|
/* nav width - nav left padding - nav right padding */
|
|
5302
5373
|
width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
|
|
@@ -5307,32 +5378,118 @@ a.bs-text-button {
|
|
|
5307
5378
|
.bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
|
|
5308
5379
|
overflow: hidden;
|
|
5309
5380
|
text-overflow: ellipsis;
|
|
5381
|
+
white-space: nowrap;
|
|
5310
5382
|
/* nav width - nav left padding - nav right padding - link left padding */
|
|
5311
5383
|
width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
|
|
5312
5384
|
}
|
|
5313
5385
|
}
|
|
5314
5386
|
.bs-vertical-nav :where(ul li a:hover) {
|
|
5387
|
+
color: var(--link-hover-color);
|
|
5315
5388
|
font-weight: 600;
|
|
5316
5389
|
}
|
|
5317
5390
|
.bs-vertical-nav :where(ul li a[data-active="true"]) {
|
|
5318
5391
|
background-color: var(--active-color);
|
|
5392
|
+
color: var(--link-active-color);
|
|
5319
5393
|
font-weight: 600;
|
|
5394
|
+
transition: background-color 200ms ease-out;
|
|
5320
5395
|
}
|
|
5396
|
+
/* Icon sizing - mobile/default */
|
|
5321
5397
|
.bs-vertical-nav :where(.bs-vertical-nav-link-icon) {
|
|
5322
5398
|
height: 1rem;
|
|
5323
5399
|
width: 1rem;
|
|
5400
|
+
flex-shrink: 0; /* Prevent icon from shrinking */
|
|
5324
5401
|
}
|
|
5325
5402
|
@media (min-width: 1166px) {
|
|
5326
|
-
|
|
5403
|
+
/* Wide and collapsible variant icons - 14px */
|
|
5404
|
+
.bs-vertical-nav:not([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
|
|
5327
5405
|
height: 0.875rem;
|
|
5328
5406
|
width: 0.875rem;
|
|
5407
|
+
margin-left: 0.25rem; /* Visual centering adjustment */
|
|
5329
5408
|
}
|
|
5330
5409
|
|
|
5410
|
+
/* Narrow variant icons - 16px (inherits from base) */
|
|
5331
5411
|
.bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
|
|
5332
5412
|
height: 1rem;
|
|
5333
5413
|
width: 1rem;
|
|
5334
5414
|
}
|
|
5335
5415
|
}
|
|
5416
|
+
/* Default: Show text on mobile */
|
|
5417
|
+
.bs-vertical-nav :where(ul li a > span:last-child) {
|
|
5418
|
+
opacity: 1;
|
|
5419
|
+
visibility: visible;
|
|
5420
|
+
width: auto;
|
|
5421
|
+
}
|
|
5422
|
+
/* Desktop: Show text when NOT collapsed */
|
|
5423
|
+
@media (min-width: 1166px) {
|
|
5424
|
+
.bs-vertical-nav:not([data-collapsed="true"]) :where(ul li a > span:last-child) {
|
|
5425
|
+
opacity: 1;
|
|
5426
|
+
visibility: visible;
|
|
5427
|
+
width: auto;
|
|
5428
|
+
/* Immediate visibility when appropriate */
|
|
5429
|
+
transition: opacity 150ms ease, visibility 0ms linear;
|
|
5430
|
+
}
|
|
5431
|
+
}
|
|
5432
|
+
/* Desktop: Hide text when collapsed */
|
|
5433
|
+
@media (min-width: 1166px) {
|
|
5434
|
+
.bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a > span:last-child) {
|
|
5435
|
+
opacity: 0;
|
|
5436
|
+
visibility: hidden;
|
|
5437
|
+
width: 0;
|
|
5438
|
+
overflow: hidden;
|
|
5439
|
+
white-space: nowrap;
|
|
5440
|
+
/* Delay visibility to prevent flash during breakpoint transition */
|
|
5441
|
+
transition: opacity 150ms ease, visibility 0ms linear 150ms;
|
|
5442
|
+
}
|
|
5443
|
+
}
|
|
5444
|
+
/* Keep icons visible when collapsed */
|
|
5445
|
+
.bs-vertical-nav:where([data-collapsed="true"]) :where(.bs-vertical-nav-link-icon) {
|
|
5446
|
+
display: block;
|
|
5447
|
+
}
|
|
5448
|
+
/* Hide section toggle when collapsed */
|
|
5449
|
+
.bs-vertical-nav:where([data-collapsed="true"]) :where(.bs-vertical-nav-section-toggle) {
|
|
5450
|
+
display: none;
|
|
5451
|
+
}
|
|
5452
|
+
/* ===== Hover Expansion (CSS-only) ===== */
|
|
5453
|
+
@media (min-width: 1166px) {
|
|
5454
|
+
/* Expand nav on hover when collapsed and collapsible - but NOT when hovering the toggle button */
|
|
5455
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-collapsible="true"]) {
|
|
5456
|
+
width: var(--bs-vertical-nav-width);
|
|
5457
|
+
}
|
|
5458
|
+
|
|
5459
|
+
/* Narrow variant should respect narrow width on hover */
|
|
5460
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-narrow="true"]) {
|
|
5461
|
+
width: var(--bs-vertical-nav-narrow-width);
|
|
5462
|
+
}
|
|
5463
|
+
|
|
5464
|
+
/* Expand link widths on hover when collapsed */
|
|
5465
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(ul li a) {
|
|
5466
|
+
width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
|
|
5467
|
+
}
|
|
5468
|
+
|
|
5469
|
+
/* Narrow variant links should respect narrow width on hover */
|
|
5470
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-narrow="true"]) :where(ul li a) {
|
|
5471
|
+
width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
|
|
5472
|
+
}
|
|
5473
|
+
|
|
5474
|
+
/* Show text on hover when collapsed */
|
|
5475
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(ul li a > span:last-child) {
|
|
5476
|
+
opacity: 1;
|
|
5477
|
+
visibility: visible;
|
|
5478
|
+
width: auto;
|
|
5479
|
+
overflow: visible;
|
|
5480
|
+
}
|
|
5481
|
+
|
|
5482
|
+
/* Hide toggle button on hover when collapsed - but NOT when hovering the button itself */
|
|
5483
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav-toggle[data-collapsed="true"]) {
|
|
5484
|
+
opacity: 0;
|
|
5485
|
+
pointer-events: none; /* Prevent interaction when hidden */
|
|
5486
|
+
}
|
|
5487
|
+
|
|
5488
|
+
/* Show section toggles on hover when collapsed */
|
|
5489
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(.bs-vertical-nav-section-toggle) {
|
|
5490
|
+
display: flex;
|
|
5491
|
+
}
|
|
5492
|
+
}
|
|
5336
5493
|
/* ===== End Items ===== */
|
|
5337
5494
|
.bs-vertical-nav :where(.bs-vertical-nav-end-items) {
|
|
5338
5495
|
display: flex;
|
|
@@ -5340,11 +5497,23 @@ a.bs-text-button {
|
|
|
5340
5497
|
gap: 0.25rem;
|
|
5341
5498
|
margin-top: auto;
|
|
5342
5499
|
}
|
|
5500
|
+
/* End items visibility for collapsible variant (desktop only) */
|
|
5501
|
+
@media (min-width: 1166px) {
|
|
5502
|
+
/* Hide end items when collapsible variant is collapsed */
|
|
5503
|
+
.bs-vertical-nav:where([data-collapsible="true"][data-collapsed="true"]) :where(.bs-vertical-nav-end-items) {
|
|
5504
|
+
display: none;
|
|
5505
|
+
}
|
|
5506
|
+
|
|
5507
|
+
/* Show end items on hover when collapsible variant is collapsed */
|
|
5508
|
+
.bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsible="true"][data-collapsed="true"]) :where(.bs-vertical-nav-end-items) {
|
|
5509
|
+
display: flex;
|
|
5510
|
+
}
|
|
5511
|
+
}
|
|
5343
5512
|
.bs-vertical-nav :where(.bs-vertical-nav-end-items > *) {
|
|
5344
|
-
color: var(--
|
|
5513
|
+
color: var(--text-color);
|
|
5345
5514
|
}
|
|
5346
5515
|
.bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
|
|
5347
|
-
color: var(--
|
|
5516
|
+
color: var(--text-color);
|
|
5348
5517
|
padding-bottom: 0.5rem;
|
|
5349
5518
|
padding-left: 0.75rem;
|
|
5350
5519
|
padding-right: 0.75rem;
|
|
@@ -5361,9 +5530,16 @@ a.bs-text-button {
|
|
|
5361
5530
|
margin-right: 0.75rem;
|
|
5362
5531
|
margin-top: 0.5rem;
|
|
5363
5532
|
}
|
|
5533
|
+
/* Hide end items in narrow variant (all screen sizes) */
|
|
5364
5534
|
.bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-end-items) {
|
|
5365
5535
|
display: none;
|
|
5366
5536
|
}
|
|
5537
|
+
/* ===== CSS-Only Page Layout Support ===== */
|
|
5538
|
+
/* Apply to any element that needs to adjust for navigation width (e.g., headers, main content) */
|
|
5539
|
+
.bs-header-with-nav {
|
|
5540
|
+
margin-inline-start: var(--bs-page-nav-width);
|
|
5541
|
+
transition: margin-inline-start 350ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
5542
|
+
}
|
|
5367
5543
|
/*
|
|
5368
5544
|
POP SYSTEM COMPONENTS
|
|
5369
5545
|
Components that are built on top of BsPopover. The popover.css must come first.
|