@wwtdev/bsds-css 3.0.0-rc.43 → 3.0.0-rc.45

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.
@@ -3751,6 +3751,7 @@ label:where(.bs-label) {
3751
3751
  .bs-option {
3752
3752
  padding: var(--bs-space-1) var(--bs-space-2);
3753
3753
  color: var(--bs-ink-base);
3754
+ --description-color: var(--bs-ink-light);
3754
3755
  cursor: pointer;
3755
3756
  border-left: 4px solid transparent;
3756
3757
  border-right: 4px solid transparent;
@@ -3768,12 +3769,14 @@ label:where(.bs-label) {
3768
3769
  /* Don't disable via pointer-events, so tooltips still work in a disabled menu item. */
3769
3770
  .bs-option:where([aria-disabled="true"]) {
3770
3771
  color: var(--bs-ink-disabled);
3772
+ --description-color: var(--bs-ink-disabled);
3771
3773
  cursor: default;
3772
3774
  }
3773
3775
  /* -- SELECTED -- */
3774
- .bs-option:where(:not([aria-disabled="true"])):hover,
3775
- .bs-dropdown-list:where(:not([aria-multiselectable="true"])) :where(.bs-option[aria-selected="true"]) {
3776
+ .bs-option:where(:not([aria-disabled="true"], [data-negative="true"])):hover,
3777
+ .bs-option:where(:not([data-multiple="true"])[aria-selected="true"]) {
3776
3778
  color: var(--bs-ink-primary);
3779
+ --description-color: var(--bs-ink-primary);
3777
3780
  background: var(--bs-bg-medium-to-light);
3778
3781
  border-left-color: var(--bs-ink-primary);
3779
3782
  }
@@ -3786,16 +3789,62 @@ label:where(.bs-label) {
3786
3789
  .bs-option:where([data-active="true"]) {
3787
3790
  box-shadow: inset 0 0 0 2px var(--bs-primary-base);
3788
3791
  }
3789
- /* -- HJ TODO: Variants (this is just quick junk for multiple w/checkbox) -- */
3790
- .bs-dropdown-list:where([aria-multiselectable="true"]) :where(.bs-option) {
3792
+ /* -- NEGATIVE -- */
3793
+ .bs-option:where([data-negative="true"]:hover),
3794
+ .bs-option:where(:not([data-multiple="true"])[data-negative="true"][aria-selected="true"]) {
3795
+ color: var(--bs-ink-negative);
3796
+ background: var(--bs-negative-highlight);
3797
+ border-left-color: var(--bs-negative-base);
3798
+ --description-color: var(--bs-ink-negative);
3799
+ }
3800
+ .bs-option:where([data-negative="true"][aria-selected="true"]) :where(.bs-checkbox):before {
3801
+ --fill-bg-color: var(--bs-negative-base);
3802
+ }
3803
+ .bs-option:where([data-negative="true"][data-active="true"]) {
3804
+ box-shadow: inset 0 0 0 2px var(--bs-negative-base);
3805
+ }
3806
+ /* -- MULTIPLE -- */
3807
+ .bs-option:where([data-multiple="true"]) {
3791
3808
  display: grid;
3792
3809
  grid-template-columns: auto 1fr;
3793
3810
  align-items: start;
3794
3811
  gap: var(--bs-space-2);
3795
3812
  }
3796
- .bs-dropdown-list:where([aria-multiselectable="true"]) :where(.bs-option) :where(.bs-checkbox) {
3813
+ .bs-option:where([data-multiple="true"]) :where(.bs-checkbox) {
3797
3814
  margin-top: var(--bs-space-1);
3798
3815
  }
3816
+ /* -- VARIANTS -- */
3817
+ .bs-option-grid:where([data-icon-col="true"]) {
3818
+ display: grid;
3819
+ grid-template:
3820
+ "icon label"
3821
+ ". description"
3822
+ / auto 1fr;
3823
+ grid-column-gap: var(--bs-space-2);
3824
+ }
3825
+ .bs-option-grid:where(:not([data-icon-col="true"])) {
3826
+ display: grid;
3827
+ grid-template:
3828
+ "label"
3829
+ "description";
3830
+ }
3831
+ .bs-option-grid:where([data-icon-col="true"]) :where(:nth-child(1)) {
3832
+ grid-area: icon;
3833
+ align-self: center;
3834
+ max-width: 1.5rem;
3835
+ max-height: 1.5rem;
3836
+ }
3837
+ .bs-option-grid:where([data-icon-col="true"]) :where(:nth-child(2)),
3838
+ .bs-option-grid:where(:not([data-icon-col="true"])) :where(:nth-child(1)) {
3839
+ grid-area: label;
3840
+ }
3841
+ .bs-option-grid:where([data-icon-col="true"]) :where(:nth-child(3)),
3842
+ .bs-option-grid:where(:not([data-icon-col="true"])) :where(:nth-child(2)) {
3843
+ grid-area: description;
3844
+ font-size: var(--bs-text-xs);
3845
+ padding-top: 0.125rem;
3846
+ color: var(--description-color);
3847
+ }
3799
3848
  .bs-overlay {
3800
3849
  -webkit-backdrop-filter: blur(4px);
3801
3850
  backdrop-filter: blur(4px);
@@ -5061,14 +5110,30 @@ a.bs-text-button {
5061
5110
  --step-color: var(--bs-ink-negative);
5062
5111
  --progress-step-bg: var(--bs-negative-base);
5063
5112
  }
5064
- .bs-vertical-nav {
5113
+ :root {
5114
+ --bs-vertical-nav-width: 9.875rem;
5115
+ --bs-vertical-nav-narrow-width: 4.5rem;
5116
+ --bs-vertical-nav-collapsed-width: 4rem;
5117
+ /* Dynamic width set by the navigation component for page layout */
5118
+ --bs-page-nav-width: 0px;
5119
+ }
5120
+ .bs-vertical-nav-wrapper {
5065
5121
  --active-color: rgba(255, 255, 255, 0.25);
5066
5122
  --bg-color: var(--bs-navy-base);
5067
5123
  --border-color: var(--bs-border-dark);
5124
+ --text-color: var(--bs-white);
5125
+ --link-color: var(--bs-white);
5126
+ --link-hover-color: var(--bs-white);
5127
+ --link-active-color: var(--bs-white);
5128
+ --toggle-bg-color: var(--bg-color);
5129
+ --toggle-color: var(--bs-white);
5068
5130
  --top-offset: 48px;
5131
+ }
5132
+ .bs-vertical-nav {
5069
5133
  -ms-overflow-style: none; /* Internet Explorer 10+ */
5070
5134
  background-color: var(--bg-color);
5071
- color: var(--bs-white);
5135
+ border-inline-end: 1px solid var(--border-color);
5136
+ color: var(--text-color);
5072
5137
  display: flex;
5073
5138
  flex-direction: column;
5074
5139
  height: 100dvh;
@@ -5094,22 +5159,22 @@ a.bs-text-button {
5094
5159
  opacity: 1;
5095
5160
  visibility: visible;
5096
5161
  }
5097
- .dark .bs-vertical-nav {
5162
+ .bs-vertical-nav:where([data-collapsible="true"]) {
5163
+ transition: opacity 200ms ease 10ms, width 350ms cubic-bezier(0.4, 0, 0.2, 1);
5164
+ }
5165
+ .dark .bs-vertical-nav-wrapper {
5098
5166
  --active-color: rgba(255, 255, 255, 0.25);
5099
5167
  --bg-color: var(--bs-bg-base);
5100
- --border-color: var(--bs-border-dark);
5101
- border-right: 1px solid var(--bs-border-medium);
5168
+ --border-color: var(--bs-border-medium);
5102
5169
  }
5103
5170
  @media (min-width: 1166px) {
5104
5171
  .bs-vertical-nav {
5105
- border-right: 1px solid var(--bg-color);
5106
5172
  opacity: 1;
5107
5173
  padding-bottom: 1rem;
5108
5174
  padding-left: 0.5rem;
5109
5175
  padding-right: 0.5rem;
5110
5176
  padding-top: 1rem;
5111
5177
  right: auto;
5112
- transition: none;
5113
5178
  visibility: visible;
5114
5179
  width: var(--bs-vertical-nav-width);
5115
5180
  }
@@ -5117,10 +5182,58 @@ a.bs-text-button {
5117
5182
  .bs-vertical-nav:where([data-narrow="true"]) {
5118
5183
  width: var(--bs-vertical-nav-narrow-width);
5119
5184
  }
5185
+
5186
+ .bs-vertical-nav:where([data-collapsed="true"]) {
5187
+ width: var(--bs-vertical-nav-collapsed-width);
5188
+ }
5120
5189
  }
5121
5190
  .bs-vertical-nav::-webkit-scrollbar {
5122
5191
  display: none; /* Safari and Chrome */
5123
5192
  }
5193
+ /* ===== Collapse Toggle Button ===== */
5194
+ .bs-vertical-nav-toggle {
5195
+ align-items: center;
5196
+ background: var(--toggle-bg-color);
5197
+ border: 1px solid var(--border-color);
5198
+ border-radius: 100px;
5199
+ color: var(--toggle-color);
5200
+ cursor: pointer;
5201
+ display: none; /* Hidden by default on mobile */
5202
+ height: 24px;
5203
+ width: 24px;
5204
+ justify-content: center;
5205
+ padding: 0;
5206
+ position: fixed;
5207
+ left: calc(var(--bs-vertical-nav-width) - 0.5rem);
5208
+ pointer-events: auto; /* Ensure button is clickable */
5209
+ top: calc(var(--top-offset) + 3rem); /* top-offset + 3rem */
5210
+ transition: left 300ms ease-out, opacity 100ms ease-out;
5211
+ z-index: 1002; /* Above nav to prevent hover conflicts */
5212
+ }
5213
+ @media (min-width: 1166px) {
5214
+ .bs-vertical-nav-toggle {
5215
+ display: flex;
5216
+ opacity: 1;
5217
+ transition: left 300ms ease-out, opacity 100ms ease-out;
5218
+ }
5219
+
5220
+ .bs-vertical-nav-toggle:where([data-collapsed="true"]) {
5221
+ left: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem);
5222
+ }
5223
+
5224
+ /* Adjust position for narrow variant when NOT collapsed */
5225
+ .bs-vertical-nav-toggle:where([data-narrow="true"]:not([data-collapsed="true"])) {
5226
+ left: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem);
5227
+ }
5228
+ }
5229
+ .bs-vertical-nav-toggle-icon {
5230
+ height: 8px;
5231
+ width: 8px;
5232
+ color: inherit;
5233
+ transition: transform 200ms var(--bs-transition-ease);
5234
+ will-change: transform;
5235
+ flex-shrink: 0;
5236
+ }
5124
5237
  /* ===== Sections ===== */
5125
5238
  .bs-vertical-nav :where(.bs-vertical-nav-section) {
5126
5239
  border-top: 2px solid var(--border-color);
@@ -5132,6 +5245,10 @@ a.bs-text-button {
5132
5245
  margin-top: 0.25rem;
5133
5246
  }
5134
5247
  }
5248
+ /* Divider-only sections have no additional padding since no toggle button */
5249
+ .bs-vertical-nav :where(.bs-vertical-nav-section[data-divider-only="true"]) {
5250
+ padding-top: 0.25rem;
5251
+ }
5135
5252
  /* Don't show border if the very first item is a section */
5136
5253
  .bs-vertical-nav :where(ul li:first-child) {
5137
5254
  border-top: none;
@@ -5200,54 +5317,64 @@ a.bs-text-button {
5200
5317
  .bs-vertical-nav :where(ul li a) {
5201
5318
  align-items: center;
5202
5319
  border-radius: 4px;
5203
- color: var(--bs-white);
5320
+ color: var(--link-color);
5204
5321
  cursor: pointer;
5205
5322
  display: flex;
5206
5323
  font-size: 1rem;
5207
5324
  font-weight: 400;
5208
5325
  gap: 0.5rem;
5209
5326
  height: 100%;
5210
- padding-bottom: 0.75rem;
5211
- padding-left: 0.75rem;
5212
- padding-right: 0.75rem;
5213
- padding-top: 0.75rem;
5327
+ padding: 0.5rem 0.75rem;
5328
+ position: relative;
5214
5329
  text-decoration: none;
5215
- width: 100%;
5330
+ }
5331
+ /* Narrow variant - text always visible on desktop (overrides collapsed state) */
5332
+ @media (min-width: 1166px) {
5333
+ .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a > span:last-child) {
5334
+ opacity: 1;
5335
+ visibility: visible;
5336
+ width: auto;
5337
+ }
5216
5338
  }
5217
5339
  @media (min-width: 1166px) {
5218
5340
  .bs-vertical-nav :where(ul li a) {
5219
5341
  font-size: 0.875rem;
5220
- padding-bottom: 0.5rem;
5221
- padding-top: 0.5rem;
5342
+ min-height: 2.5rem; /* Fixed minimum height to prevent height changes */
5343
+ padding: 0.5rem 0.75rem; /* Explicit padding for consistency */
5222
5344
  /* nav width - nav left padding - nav right padding */
5223
5345
  width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
5224
5346
  }
5225
5347
 
5348
+ /* Collapsed state width */
5349
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a) {
5350
+ /* collapsed width - nav left padding - nav right padding */
5351
+ width: calc(var(--bs-vertical-nav-collapsed-width) - 0.5rem - 0.5rem);
5352
+ }
5353
+
5226
5354
  /* Text overflow - normal width - no icon */
5227
5355
  .bs-vertical-nav :where(ul li a:not(:has(.bs-vertical-nav-link-icon)) span:first-child) {
5228
5356
  overflow: hidden;
5229
5357
  text-overflow: ellipsis;
5358
+ white-space: nowrap;
5230
5359
  /* nav width - nav left padding - nav right padding - link left padding - link right padding */
5231
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
5360
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem);
5232
5361
  }
5233
5362
 
5234
5363
  /* Text overflow - normal width - with icon */
5235
5364
  .bs-vertical-nav :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
5236
5365
  overflow: hidden;
5237
5366
  text-overflow: ellipsis;
5367
+ white-space: nowrap;
5238
5368
  /* nav width - nav left padding - nav right padding - link left padding - link right padding - icon width - icon gap */
5239
- width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 0.875rem - 0.5rem);
5369
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem - 0.75rem - 0.75rem - 1rem - 0.5rem);
5240
5370
  }
5241
5371
 
5242
5372
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a) {
5243
5373
  flex-direction: column;
5244
5374
  font-size: 0.6875rem;
5245
- gap: 0.25rem;
5375
+ gap: 0.5rem; /* 8px - matches Figma */
5246
5376
  line-height: 1.3;
5247
- padding-bottom: 0.75rem;
5248
- padding-left: 0.25rem;
5249
- padding-right: 0.25rem;
5250
- padding-top: 0.75rem;
5377
+ padding: 0.5rem 0.75rem; /* 8px 12px - matches Figma */
5251
5378
  text-align: center;
5252
5379
  /* nav width - nav left padding - nav right padding */
5253
5380
  width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
@@ -5258,32 +5385,118 @@ a.bs-text-button {
5258
5385
  .bs-vertical-nav:where([data-narrow="true"]) :where(ul li a:has(.bs-vertical-nav-link-icon) span:nth-child(2)) {
5259
5386
  overflow: hidden;
5260
5387
  text-overflow: ellipsis;
5388
+ white-space: nowrap;
5261
5389
  /* nav width - nav left padding - nav right padding - link left padding */
5262
5390
  width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
5263
5391
  }
5264
5392
  }
5265
5393
  .bs-vertical-nav :where(ul li a:hover) {
5394
+ color: var(--link-hover-color);
5266
5395
  font-weight: 600;
5267
5396
  }
5268
5397
  .bs-vertical-nav :where(ul li a[data-active="true"]) {
5269
5398
  background-color: var(--active-color);
5399
+ color: var(--link-active-color);
5270
5400
  font-weight: 600;
5401
+ transition: background-color 200ms ease-out;
5271
5402
  }
5403
+ /* Icon sizing - mobile/default */
5272
5404
  .bs-vertical-nav :where(.bs-vertical-nav-link-icon) {
5273
5405
  height: 1rem;
5274
5406
  width: 1rem;
5407
+ flex-shrink: 0; /* Prevent icon from shrinking */
5275
5408
  }
5276
5409
  @media (min-width: 1166px) {
5277
- .bs-vertical-nav :where(.bs-vertical-nav-link-icon) {
5410
+ /* Wide and collapsible variant icons - 14px */
5411
+ .bs-vertical-nav:not([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
5278
5412
  height: 0.875rem;
5279
5413
  width: 0.875rem;
5414
+ margin-left: 0.25rem; /* Visual centering adjustment */
5280
5415
  }
5281
5416
 
5417
+ /* Narrow variant icons - 16px (inherits from base) */
5282
5418
  .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-link-icon) {
5283
5419
  height: 1rem;
5284
5420
  width: 1rem;
5285
5421
  }
5286
5422
  }
5423
+ /* Default: Show text on mobile */
5424
+ .bs-vertical-nav :where(ul li a > span:last-child) {
5425
+ opacity: 1;
5426
+ visibility: visible;
5427
+ width: auto;
5428
+ }
5429
+ /* Desktop: Show text when NOT collapsed */
5430
+ @media (min-width: 1166px) {
5431
+ .bs-vertical-nav:not([data-collapsed="true"]) :where(ul li a > span:last-child) {
5432
+ opacity: 1;
5433
+ visibility: visible;
5434
+ width: auto;
5435
+ /* Immediate visibility when appropriate */
5436
+ transition: opacity 150ms ease, visibility 0ms linear;
5437
+ }
5438
+ }
5439
+ /* Desktop: Hide text when collapsed */
5440
+ @media (min-width: 1166px) {
5441
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(ul li a > span:last-child) {
5442
+ opacity: 0;
5443
+ visibility: hidden;
5444
+ width: 0;
5445
+ overflow: hidden;
5446
+ white-space: nowrap;
5447
+ /* Delay visibility to prevent flash during breakpoint transition */
5448
+ transition: opacity 150ms ease, visibility 0ms linear 150ms;
5449
+ }
5450
+ }
5451
+ /* Keep icons visible when collapsed */
5452
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(.bs-vertical-nav-link-icon) {
5453
+ display: block;
5454
+ }
5455
+ /* Hide section toggle when collapsed */
5456
+ .bs-vertical-nav:where([data-collapsed="true"]) :where(.bs-vertical-nav-section-toggle) {
5457
+ display: none;
5458
+ }
5459
+ /* ===== Hover Expansion (CSS-only) ===== */
5460
+ @media (min-width: 1166px) {
5461
+ /* Expand nav on hover when collapsed and collapsible - but NOT when hovering the toggle button */
5462
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-collapsible="true"]) {
5463
+ width: var(--bs-vertical-nav-width);
5464
+ }
5465
+
5466
+ /* Narrow variant should respect narrow width on hover */
5467
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"][data-narrow="true"]) {
5468
+ width: var(--bs-vertical-nav-narrow-width);
5469
+ }
5470
+
5471
+ /* Expand link widths on hover when collapsed */
5472
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav[data-collapsed="true"]) :where(ul li a) {
5473
+ width: calc(var(--bs-vertical-nav-width) - 0.5rem - 0.5rem);
5474
+ }
5475
+
5476
+ /* Narrow variant links should respect narrow width on hover */
5477
+ .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) {
5478
+ width: calc(var(--bs-vertical-nav-narrow-width) - 0.5rem - 0.5rem);
5479
+ }
5480
+
5481
+ /* Show text on hover when collapsed */
5482
+ .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) {
5483
+ opacity: 1;
5484
+ visibility: visible;
5485
+ width: auto;
5486
+ overflow: visible;
5487
+ }
5488
+
5489
+ /* Hide toggle button on hover when collapsed - but NOT when hovering the button itself */
5490
+ .bs-vertical-nav-wrapper:where(:hover:not(:has(.bs-vertical-nav-toggle:hover))) :where(.bs-vertical-nav-toggle[data-collapsed="true"]) {
5491
+ opacity: 0;
5492
+ pointer-events: none; /* Prevent interaction when hidden */
5493
+ }
5494
+
5495
+ /* Show section toggles on hover when collapsed */
5496
+ .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) {
5497
+ display: flex;
5498
+ }
5499
+ }
5287
5500
  /* ===== End Items ===== */
5288
5501
  .bs-vertical-nav :where(.bs-vertical-nav-end-items) {
5289
5502
  display: flex;
@@ -5291,11 +5504,23 @@ a.bs-text-button {
5291
5504
  gap: 0.25rem;
5292
5505
  margin-top: auto;
5293
5506
  }
5507
+ /* End items visibility for collapsible variant (desktop only) */
5508
+ @media (min-width: 1166px) {
5509
+ /* Hide end items when collapsible variant is collapsed */
5510
+ .bs-vertical-nav:where([data-collapsible="true"][data-collapsed="true"]) :where(.bs-vertical-nav-end-items) {
5511
+ display: none;
5512
+ }
5513
+
5514
+ /* Show end items on hover when collapsible variant is collapsed */
5515
+ .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) {
5516
+ display: flex;
5517
+ }
5518
+ }
5294
5519
  .bs-vertical-nav :where(.bs-vertical-nav-end-items > *) {
5295
- color: var(--bs-white);
5520
+ color: var(--text-color);
5296
5521
  }
5297
5522
  .bs-vertical-nav :where(.bs-vertical-nav-end-items > *:not(button)) {
5298
- color: var(--bs-white);
5523
+ color: var(--text-color);
5299
5524
  padding-bottom: 0.5rem;
5300
5525
  padding-left: 0.75rem;
5301
5526
  padding-right: 0.75rem;
@@ -5312,9 +5537,16 @@ a.bs-text-button {
5312
5537
  margin-right: 0.75rem;
5313
5538
  margin-top: 0.5rem;
5314
5539
  }
5540
+ /* Hide end items in narrow variant (all screen sizes) */
5315
5541
  .bs-vertical-nav:where([data-narrow="true"]) :where(.bs-vertical-nav-end-items) {
5316
5542
  display: none;
5317
5543
  }
5544
+ /* ===== CSS-Only Page Layout Support ===== */
5545
+ /* Apply to any element that needs to adjust for navigation width (e.g., headers, main content) */
5546
+ .bs-header-with-nav {
5547
+ margin-inline-start: var(--bs-page-nav-width);
5548
+ transition: margin-inline-start 350ms cubic-bezier(0.4, 0, 0.2, 1);
5549
+ }
5318
5550
  /*
5319
5551
  POP SYSTEM COMPONENTS
5320
5552
  Components that are built on top of BsPopover. The popover.css must come first.