@wwtdev/bsds-css 2.16.0 → 2.18.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.
package/dist/wwt-bsds.css CHANGED
@@ -64,6 +64,9 @@
64
64
  --bs-gray-300: #a3a4b7;
65
65
  --bs-gray-400: #4e4f5f;
66
66
  --bs-gray-500: #292940;
67
+ --bs-slate-400: #22222e;
68
+ --bs-slate-500: #17171f;
69
+ --bs-slate-600: #0b0b10;
67
70
  --bs-gradient-dark: linear-gradient(
68
71
  90deg,
69
72
  #1c0087 0%,
@@ -285,10 +288,13 @@ button {
285
288
  --bs-bg-base-to-medium: var(--bs-white);
286
289
  --bs-bg-light: var(--bs-gray-50);
287
290
  --bs-bg-light-to-base: var(--bs-gray-50);
291
+ --bs-bg-light-to-medium: var(--bs-gray-50);
288
292
  --bs-bg-medium: var(--bs-gray-100);
289
293
  --bs-bg-medium-to-light: var(--bs-gray-100);
290
- --bs-bg-invert-to-base: var(--bs-navy-500);
291
- --bs-bg-invert-to-medium: var(--bs-navy-400);
294
+ --bs-bg-medium-to-base: var(--bs-gray-100);
295
+ --bs-bg-invert-to-light: var(--bs-slate-500);
296
+ --bs-bg-invert-to-base: var(--bs-slate-600);
297
+ --bs-bg-invert-to-medium: var(--bs-slate-400);
292
298
  --bs-bg-disabled: var(--bs-gray-200);
293
299
 
294
300
  --bs-hyperlink: var(--bs-purple-400);
@@ -376,8 +382,8 @@ button {
376
382
  /* deprecate / phase out.. */
377
383
  --bs-bg-base-elevated: var(--bs-white); /* now --bs-bg-base-to-light */
378
384
  --bs-bg-subtle: var(--bs-gray-100);
379
- --bs-bg-invert: var(--bs-navy-500);
380
- --bs-bg-invert-subtle: var(--bs-navy-400);
385
+ --bs-bg-invert: var(--bs-slate-500);
386
+ --bs-bg-invert-subtle: var(--bs-slate-400);
381
387
  --bs-border: var(--bs-gray-200);
382
388
  --bs-ink-invert: var(--bs-gray-100);
383
389
  --bs-orange-warning: var(--bs-orange-500);
@@ -388,27 +394,30 @@ button {
388
394
  }
389
395
  .dark,
390
396
  .dark :where(:host) {
391
- --bs-bg-base: var(--bs-navy-600);
392
- --bs-bg-base-to-light: var(--bs-navy-500);
393
- --bs-bg-base-to-medium: var(--bs-navy-400);
394
- --bs-bg-light: var(--bs-navy-500);
395
- --bs-bg-light-to-base: var(--bs-navy-600);
396
- --bs-bg-medium: var(--bs-navy-400);
397
- --bs-bg-medium-to-light: var(--bs-navy-500);
398
- --bs-bg-invert-to-base: var(--bs-gray-100);
399
- --bs-bg-invert-to-medium: var(--bs-gray-50);
400
- --bs-bg-disabled: var(--bs-gray-500);
397
+ --bs-bg-base: var(--bs-slate-600);
398
+ --bs-bg-base-to-light: var(--bs-slate-500);
399
+ --bs-bg-base-to-medium: var(--bs-slate-400);
400
+ --bs-bg-light: var(--bs-slate-500);
401
+ --bs-bg-light-to-base: var(--bs-slate-600);
402
+ --bs-bg-light-to-medium: var(--bs-slate-400);
403
+ --bs-bg-medium: var(--bs-slate-400);
404
+ --bs-bg-medium-to-light: var(--bs-slate-500);
405
+ --bs-bg-medium-to-base: var(--bs-slate-600);
406
+ --bs-bg-invert-to-light: var(--bs-gray-50);
407
+ --bs-bg-invert-to-base: var(--bs-white);
408
+ --bs-bg-invert-to-medium: var(--bs-gray-100);
409
+ --bs-bg-disabled: rgba(78, 79, 95, 0.3); /* --bs-gray-400 at .3 opacity */
401
410
 
402
411
  --bs-hyperlink: var(--bs-purple-200);
403
412
 
404
413
  --bs-ink-accent: var(--bs-gray-100);
405
- --bs-ink-base: var(--bs-gray-100);
406
- --bs-ink-disabled: rgba(163, 164, 183, 0.6); /* --bs-gray-300 at .6 opacity */
414
+ --bs-ink-base: var(--bs-white);
415
+ --bs-ink-disabled: rgba(163, 164, 183, 0.5); /* --bs-gray-300 at .5 opacity */
407
416
  --bs-ink-invert-base: var(--bs-black);
408
417
  --bs-ink-invert-medium: var(--bs-gray-500);
409
418
  --bs-ink-invert-light: var(--bs-gray-400);
410
- --bs-ink-light: var(--bs-gray-300);
411
- --bs-ink-medium: var(--bs-gray-200);
419
+ --bs-ink-light: var(--bs-gray-200);
420
+ --bs-ink-medium: var(--bs-gray-100);
412
421
 
413
422
  --bs-ink-blue: var(--bs-blue-200);
414
423
  --bs-ink-orange: var(--bs-orange-200);
@@ -424,6 +433,7 @@ button {
424
433
  --bs-orange-base: var(--bs-orange-300);
425
434
  --bs-pink-base: var(--bs-pink-300);
426
435
  --bs-plum-base: var(--bs-plum-300);
436
+ --bs-plum-medium: var(--bs-plum-200);
427
437
  --bs-purple-base: var(--bs-purple-300);
428
438
  --bs-red-base: var(--bs-red-300);
429
439
  --bs-royal-base: var(--bs-royal-300);
@@ -437,10 +447,10 @@ button {
437
447
 
438
448
  --bs-warning: var(--bs-orange-400);
439
449
 
440
- --bs-border-dark: var(--bs-gray-200);
441
- --bs-border-base: var(--bs-gray-400);
442
- --bs-border-medium: var(--bs-gray-500);
443
- --bs-border-light: var(--bs-gray-500);
450
+ --bs-border-dark: var(--bs-gray-300);
451
+ --bs-border-base: rgba(163, 164, 183, 0.7); /* --bs-gray-300 at .7 opacity */
452
+ --bs-border-medium: var(--bs-gray-400);
453
+ --bs-border-light: rgba(78, 79, 95, 0.5); /* --bs-gray-400 at .5 opacity */
444
454
 
445
455
  --bs-shadow-base: rgba(0, 0, 0, 0.06);
446
456
  --bs-shadow-invert: rgba(10, 11, 25, 0.60);
@@ -460,7 +470,7 @@ button {
460
470
  16px 16px 32px var(--bs-shadow-invert);
461
471
 
462
472
  /* deprecate / phase out.. */
463
- --bs-bg-base-elevated: var(--bs-navy-500); /* now --bs-bg-base-to-light. See notes above in light mode. */
473
+ --bs-bg-base-elevated: var(--bs-slate-500); /* now --bs-bg-base-to-light. See notes above in light mode. */
464
474
  --bs-bg-subtle: #2F2F51;
465
475
  --bs-bg-invert: var(--bs-white);
466
476
  --bs-bg-invert-subtle: var(--bs-gray-100);
@@ -3084,10 +3094,10 @@ text color:
3084
3094
  transition: all 100ms ease-in-out;
3085
3095
  vertical-align: middle;
3086
3096
  }
3087
- .bs-button:hover {
3097
+ .bs-button:where(:not(:disabled):not([aria-disabled="true"]):hover) {
3088
3098
  background-color: var(--btn-secondary);
3089
3099
  }
3090
- .bs-button:active {
3100
+ .bs-button:where(:not(:disabled):not([aria-disabled="true"]):active) {
3091
3101
  background-color: var(--btn-secondary);
3092
3102
  box-shadow: inset 0px 0px 4px 1px var(--btn-main);
3093
3103
  transform-origin: center;
@@ -3106,14 +3116,14 @@ text color:
3106
3116
  transition: border-color 0.125s ease-in-out;
3107
3117
  width: var(--btn-focus-pseudo-width);
3108
3118
  }
3109
- .bs-button:focus::before {
3119
+ .bs-button:where(:focus:not(:disabled):not([aria-disabled="true"]))::before {
3110
3120
  border-color: var(--btn-main);
3111
3121
  }
3112
- .bs-button:focus-visible::before {
3122
+ .bs-button:where(:focus-visible:not(:disabled):not([aria-disabled="true"]))::before {
3113
3123
  border-color: var(--btn-main);
3114
3124
  box-shadow: none;
3115
3125
  }
3116
- .bs-button:focus:not(:focus-visible)::before {
3126
+ .bs-button:where(:focus:not(:focus-visible):not(:disabled):not([aria-disabled="true"]))::before {
3117
3127
  border-color: transparent;
3118
3128
  box-shadow: none;
3119
3129
  }
@@ -3128,11 +3138,11 @@ text color:
3128
3138
  .bs-button:where([data-ghost]:not([data-ghost="false"]))::before {
3129
3139
  border-radius: 0.4375rem;
3130
3140
  }
3131
- .bs-button:where([data-ghost]:not([data-ghost="false"])):hover,
3132
- .bs-button:where([data-ghost]:not([data-ghost="false"])):focus {
3141
+ .bs-button:where([data-ghost]:not([data-ghost="false"]):not(:disabled):not([aria-disabled="true"]):hover),
3142
+ .bs-button:where([data-ghost]:not([data-ghost="false"]):not(:disabled):not([aria-disabled="true"]):focus) {
3133
3143
  background-color: var(--btn-light);
3134
3144
  }
3135
- .bs-button:where([data-ghost]:not([data-ghost="false"])):active {
3145
+ .bs-button:where([data-ghost]:not([data-ghost="false"]):not(:disabled):not([aria-disabled="true"]):active) {
3136
3146
  box-shadow:
3137
3147
  inset 0 0 0 1px var(--btn-main),
3138
3148
  inset 0px 0px 4px 1px var(--btn-highlight);
@@ -3142,14 +3152,12 @@ text color:
3142
3152
  --btn-ghost-ink: var(--bs-ink-plum);
3143
3153
  --btn-highlight: var(--bs-plum-100);
3144
3154
  --btn-light: var(--bs-plum-10);
3145
- --btn-main: var(--bs-plum-400);
3155
+ --btn-main: var(--bs-plum-base);
3146
3156
  --btn-secondary: var(--bs-plum-medium);
3147
3157
  }
3148
3158
  .dark .bs-button:where([data-variant^='secondary']) {
3149
3159
  --btn-highlight: var(--bs-plum-400);
3150
3160
  --btn-light: var(--bs-navy-400);
3151
- --btn-main: var(--bs-plum-200);
3152
- --btn-secondary: var(--bs-plum-300);
3153
3161
  }
3154
3162
  .bs-button:where([data-variant^='positive']) {
3155
3163
  --btn-ghost-ink: var(--bs-ink-purple);
@@ -3209,24 +3217,24 @@ text color:
3209
3217
  cursor: pointer;
3210
3218
  line-height: 150%;
3211
3219
  }
3212
- .bs-button:where([data-text]:not([data-text="false"])):hover {
3220
+ .bs-button:where([data-text]:not([data-text="false"]):not(:disabled):not([aria-disabled="true"]):hover) {
3213
3221
  --btn-ink: var(--bs-blue-base);
3214
3222
  background-color: transparent;
3215
3223
  text-decoration: underline;
3216
3224
  }
3217
- .bs-button:where([data-text]:not([data-text="false"])):has(svg):hover {
3225
+ .bs-button:where([data-text]:not([data-text="false"]):not(:disabled):not([aria-disabled="true"]):hover):has(svg) {
3218
3226
  text-decoration: none;
3219
3227
  }
3220
- .bs-button:where([data-text]:not([data-text="false"])):active {
3228
+ .bs-button:where([data-text]:not([data-text="false"]):not(:disabled):not([aria-disabled="true"]):active) {
3221
3229
  box-shadow: none;
3222
3230
  transform: none;
3223
3231
  }
3224
3232
  .bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"])),
3225
- .bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"])):hover {
3233
+ .bs-button:where([data-variant^='negative'][data-text]:not([data-text="false"]):not(:disabled):not([aria-disabled="true"]):hover) {
3226
3234
  --btn-ink: var(--bs-ink-red);
3227
3235
  }
3228
3236
  .bs-button:where([data-variant^='white'][data-text]:not([data-text="false"])),
3229
- .bs-button:where([data-variant^='white'][data-text]:not([data-text="false"])):hover {
3237
+ .bs-button:where([data-variant^='white'][data-text]:not([data-text="false"]):not(:disabled):not([aria-disabled="true"]):hover) {
3230
3238
  --btn-ink: var(--bs-ink-white);
3231
3239
  --btn-main: var(--bs-ink-white);
3232
3240
  }
@@ -3273,6 +3281,8 @@ text color:
3273
3281
  .bs-button:where([aria-disabled="true"]) {
3274
3282
  --btn-ink: var(--bs-ink-disabled);
3275
3283
  --btn-main: var(--bs-bg-disabled);
3284
+ box-shadow: none;
3285
+ transform: none;
3276
3286
  }
3277
3287
  .bs-button:where([data-ghost]:not([data-ghost="false"])):disabled,
3278
3288
  .bs-button:where([data-ghost]:not([data-ghost="false"]))[aria-disabled="true"] {
@@ -4083,7 +4093,7 @@ button:where(.bs-filter-button) {
4083
4093
  }
4084
4094
  /* ------------------------------ Variant: "Live Now" Styles ------------------------------ */
4085
4095
  .bs-pill:where([data-variant^="live"]) {
4086
- --pill-background: var(--bs-royal-400);
4096
+ --pill-background: var(--bs-plum-base);
4087
4097
  --pill-text: var(--bs-white);
4088
4098
  --pill-gap: var(--bs-space-1);
4089
4099
  text-transform: uppercase;
@@ -4422,6 +4432,270 @@ a.bs-profile:where([data-layout]):hover {
4422
4432
  :where(.bs-tab-panel, bs-tab-panel):where([role="tabpanel"][data-active]:not([data-active="false"])) {
4423
4433
  display: block;
4424
4434
  }
4435
+ /* ------ WRAPPER ------ */
4436
+ .bs-table-wrap {
4437
+ display: flex;
4438
+ flex-direction: column;
4439
+ overflow: hidden;
4440
+ }
4441
+ :where(.bs-table-wrap) {
4442
+ font-size: var(--bs-text-sm);
4443
+ color: var(--bs-table-cell-ink, var(--bs-ink-light));
4444
+ border-radius: var(--bs-space-2);
4445
+ border: 1px solid var(--bs-border-base);
4446
+ }
4447
+ :where(.bs-table-wrap-header, .bs-table-wrap-footer) {
4448
+ padding-block: var(--bs-space-3);
4449
+ padding-inline: var(--bs-table-cell-padding);
4450
+ background: var(--bs-bg-medium);
4451
+ border-color: inherit;
4452
+ }
4453
+ :where(.bs-table-wrap-header) {
4454
+ border-bottom-width: 1px;
4455
+ }
4456
+ :where(.bs-table-wrap-footer) {
4457
+ border-top-width: 1px;
4458
+ }
4459
+ /* ------ TABLE ------ */
4460
+ .bs-table-scroll-wrap {
4461
+ flex: 1;
4462
+ border-color: inherit;
4463
+ overflow: auto;
4464
+ overscroll-behavior: none;
4465
+ }
4466
+ .bs-table {
4467
+ display: grid;
4468
+ grid-template-columns: var(--bs-table-col-widths);
4469
+ }
4470
+ :where(.bs-table) {
4471
+ border-color: inherit;
4472
+ }
4473
+ /* ------ HEADER ROWGROUP ------ */
4474
+ .bs-table-header-rowgroup {
4475
+ grid-column: 1 / -1;
4476
+ grid-row: span var(--bs-table-header-row-count);
4477
+ display: grid;
4478
+ grid-template-columns: subgrid;
4479
+ grid-template-rows: subgrid;
4480
+ border-color: inherit;
4481
+ }
4482
+ .bs-table-header-rowgroup-freeze {
4483
+ position: sticky;
4484
+ top: 0;
4485
+ z-index: 1;
4486
+
4487
+ .bs-table:not(.bs-table-border-none) & {
4488
+ box-shadow: 0 3px 0 rgba(0, 0, 0, .03);
4489
+ }
4490
+ }
4491
+ /* ------ BODY ROWGROUP ------ */
4492
+ .bs-table-body-rowgroup {
4493
+ grid-column: 1 / -1;
4494
+ grid-row: span var(--bs-table-body-row-count);
4495
+ display: grid;
4496
+ grid-template-columns: subgrid;
4497
+ grid-template-rows: subgrid;
4498
+ border-color: inherit;
4499
+ }
4500
+ /* ------ FOOTER ROWGROUP ------ */
4501
+ .bs-table-footer-rowgroup {
4502
+ grid-column: 1 / -1;
4503
+ grid-row: span var(--bs-table-footer-row-count);
4504
+ display: grid;
4505
+ grid-template-columns: subgrid;
4506
+ grid-template-rows: subgrid;
4507
+ border-color: inherit;
4508
+ }
4509
+ .bs-table-footer-rowgroup-freeze {
4510
+ position: sticky;
4511
+ bottom: 0;
4512
+
4513
+ .bs-table:not(.bs-table-border-none) & {
4514
+ box-shadow: 0 -3px 0 rgba(0, 0, 0, .03);
4515
+ }
4516
+ }
4517
+ /* ------ ROWS ------ */
4518
+ .bs-table-row {
4519
+ grid-column: 1 / -1;
4520
+ }
4521
+ :where(.bs-table-row) {
4522
+ background: var(--bs-bg-base);
4523
+ border-color: inherit;
4524
+ }
4525
+ :where(.bs-table-header-rowgroup .bs-table-row) {
4526
+ background: var(--bs-bg-light);
4527
+ }
4528
+ :where(.bs-table-row:has(.bs-table-head-cell, .bs-table-cell)) {
4529
+ display: grid;
4530
+ grid-template-columns: subgrid;
4531
+ }
4532
+ /* ------ FROZEN COLS ------ */
4533
+ .bs-table-cols-frozen-left {
4534
+ position: sticky;
4535
+ left: 0;
4536
+ grid-column: span var(--bs-table-frozen-left-count);
4537
+ display: grid;
4538
+ grid-template-columns: subgrid;
4539
+ background: inherit;
4540
+ border-color: inherit;
4541
+
4542
+ .bs-table:not(.bs-table-border-none) & {
4543
+ box-shadow: 3px 0 0 rgba(0, 0, 0, .03);
4544
+ }
4545
+ }
4546
+ .bs-table-cols-frozen-right {
4547
+ position: sticky;
4548
+ right: 0;
4549
+ grid-column: span var(--bs-table-frozen-right-count);
4550
+ display: grid;
4551
+ grid-template-columns: subgrid;
4552
+ background: inherit;
4553
+ border-color: inherit;
4554
+
4555
+ .bs-table:not(.bs-table-border-none) & {
4556
+ box-shadow: -3px 0 0 rgba(0, 0, 0, .03);
4557
+ }
4558
+ }
4559
+ /* ------ CELLS ------ */
4560
+ :where(.bs-table-head-cell) {
4561
+ color: var(--bs-table-head-cell-ink, var(--bs-ink-base));
4562
+ font-weight: var(--bs-font-bold);
4563
+ border-color: inherit;
4564
+ }
4565
+ /* Couldn't use :where due to Blue Steel reset styles on <button> imposing font-size.
4566
+ Adding inherit in case consumer does custom header cell styles */
4567
+ .bs-table-head-cell .bs-sort-toggle {
4568
+ font-size: inherit;
4569
+ font-weight: var(--bs-font-bold);
4570
+ color: inherit;
4571
+ line-height: inherit;
4572
+ letter-spacing: inherit;
4573
+ }
4574
+ :where(.bs-table-cell) {
4575
+ border-color: inherit;
4576
+ }
4577
+ /* ------ PROP: CELL-PADDING ------ */
4578
+ :root {
4579
+ --bs-table-cell-padding-xs: var(--bs-space-2);
4580
+ --bs-table-cell-padding-sm: var(--bs-space-3);
4581
+ --bs-table-cell-padding-md: var(--bs-space-4);
4582
+ --bs-table-cell-padding-lg: var(--bs-space-6);
4583
+ --bs-table-cell-padding-xl: var(--bs-space-8);
4584
+ }
4585
+ :where(.bs-table-head-cell, .bs-table-cell) {
4586
+ padding: var(--bs-table-cell-padding);
4587
+ }
4588
+ /* ------ PROP: TRUNCATE ------ */
4589
+ :where(.bs-table-truncate):where(.bs-table-head-cell, .bs-table-cell) {
4590
+ overflow: hidden;
4591
+ text-overflow: ellipsis;
4592
+ white-space: nowrap;
4593
+ }
4594
+ /* ------ PROP: STRIPED ROWS ------ */
4595
+ :where(.bs-table-striped .bs-table-body-rowgroup .bs-table-row:nth-child(even)) {
4596
+ background: var(--bs-bg-light);
4597
+ }
4598
+ /* ------ PROP: ROW HOVER ------ */
4599
+ :where(.bs-table-row-hover .bs-table-body-rowgroup .bs-table-row:hover) {
4600
+ background: var(--bs-table-row-hover, var(--bs-bg-light));
4601
+ transition: background-color 200ms;
4602
+ }
4603
+ /* ------ PROP: BORDERS ------ */
4604
+ /* -- borders="rows" -- */
4605
+ :where(.bs-table-border-rows) :where(.bs-table-row) {
4606
+ border-bottom-width: 1px;
4607
+ }
4608
+ /* -- borders="cols" -- */
4609
+ /* setting following cell's left border instead of each cell's right, so Table's left/right border is easier for consumer to override with utility classes */
4610
+ :where(.bs-table-border-cols) :where(.bs-table-head-cell + .bs-table-head-cell, .bs-table-cell + .bs-table-cell) {
4611
+ border-left-width: 1px;
4612
+ }
4613
+ .bs-table-border-cols .bs-table-header-rowgroup {
4614
+ border-bottom-width: 1px;
4615
+ }
4616
+ /* -- borders="grid" -- */
4617
+ :where(.bs-table-border-grid) :where(.bs-table-row) {
4618
+ border-bottom-width: 1px;
4619
+ }
4620
+ /* setting following cell's left border instead of each cell's right, so Table's left/right border is easier for consumer to override with utility classes */
4621
+ :where(.bs-table-border-grid) :where(.bs-table-head-cell + .bs-table-head-cell, .bs-table-cell + .bs-table-cell) {
4622
+ border-left-width: 1px;
4623
+ }
4624
+ /* -- borders="frozen" -- */
4625
+ .bs-table-border-frozen .bs-table-header-rowgroup-freeze {
4626
+ border-bottom-width: 1px;
4627
+ }
4628
+ /* -- frozen col and footer-rowgroup sections will always show border, unless borders="none" -- */
4629
+ /* (header-rowgroup is not included below since TableRow bottom border covers most cases) */
4630
+ .bs-table:not(.bs-table-border-none) .bs-table-cols-frozen-left {
4631
+ border-right-width: 1px;
4632
+ }
4633
+ .bs-table:not(.bs-table-border-none) .bs-table-cols-frozen-right {
4634
+ border-left-width: 1px;
4635
+ }
4636
+ .bs-table:not(.bs-table-border-none) .bs-table-footer-rowgroup-freeze {
4637
+ border-top-width: 1px;
4638
+ }
4639
+ /* turn off last row's bottom border, since it would double-up with Table's border */
4640
+ :where(.bs-table-body-rowgroup, .bs-table-footer-rowgroup) .bs-table-row:last-of-type {
4641
+ border-bottom-width: 0;
4642
+ }
4643
+ /* ------ TABLE COLUMN RESIZER ------ */
4644
+ .bs-table-col-resizer {
4645
+ position: fixed; /* fixed instead of absolute, due to using coordinates from .getBoundingClientRect() */
4646
+ top: 0;
4647
+ left: -8px;
4648
+ bottom: 0;
4649
+ width: 15px; /* includes 5px resizer handle width + 5px of extra hover target area on left and right of handle */
4650
+ cursor: col-resize;
4651
+ touch-action: none;
4652
+ z-index: var(--bs-table-col-resizer-z, 10);
4653
+ transform: translate(var(--bs-table-col-resizer-x), var(--bs-table-col-resizer-y));
4654
+
4655
+ /* resizer handle and vertical line set-up */
4656
+ &:before,
4657
+ &::after {
4658
+ content: "";
4659
+ position: absolute;
4660
+ top: 0;
4661
+ left: 0;
4662
+ background: var(--bs-table-col-resizer-color, var(--bs-blue-base));
4663
+ }
4664
+
4665
+ /* resizer handle */
4666
+ &::after {
4667
+ left: 5px;
4668
+ width: 5px;
4669
+ height: var(--bs-table-col-resizer-handle-height);
4670
+ }
4671
+
4672
+ /* resizer vertical line/tail */
4673
+ &::before {
4674
+ left: 7px;
4675
+ width: 1px;
4676
+ height: var(--bs-table-col-resizer-tail-height);
4677
+ display: none;
4678
+ }
4679
+
4680
+ &.bs-table-col-resizer-active::before {
4681
+ display: block;
4682
+ }
4683
+ }
4684
+ /* ------ SORT TOGGLE ------ */
4685
+ /* Override Blue Steel CSS: It adds "relative" to buttons by default, which was causing an overlap issue when a Table with frozen, sortable cols scrolled horizontally */
4686
+ .bs-sort-toggle {
4687
+ position: static;
4688
+ }
4689
+ /* Using :where to lower specificity so consumers can use utility classes to override */
4690
+ :where(.bs-sort-toggle) {
4691
+ display: inline-flex;
4692
+ align-items: center;
4693
+ gap: var(--bs-space-2);
4694
+ cursor: pointer;
4695
+ }
4696
+ :where(.bs-sort-toggle .bs-icon) {
4697
+ flex-shrink: 0;
4698
+ }
4425
4699
  table {
4426
4700
  border-collapse: collapse;
4427
4701
  border-spacing: 0;
@@ -4769,8 +5043,8 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
4769
5043
  /* Active States */
4770
5044
  :where(.bs-tooltip:not([data-position])):hover :where(.bs-tooltip-text),
4771
5045
  :where(.bs-tooltip[data-position="top"]):hover :where(.bs-tooltip-text),
4772
- :where(.bs-tooltip:not([data-position])):focus-within :where(.bs-tooltip-text),
4773
- :where(.bs-tooltip[data-position="top"]):focus-within :where(.bs-tooltip-text),
5046
+ :where(.bs-tooltip:not([data-position])):has(:focus-visible) :where(.bs-tooltip-text),
5047
+ :where(.bs-tooltip[data-position="top"]):has(:focus-visible) :where(.bs-tooltip-text),
4774
5048
  :where(.bs-tooltip:not([data-position]))[data-shown] :where(.bs-tooltip-text),
4775
5049
  :where(.bs-tooltip[data-position="top"])[data-shown] :where(.bs-tooltip-text) {
4776
5050
  opacity: 1;
@@ -4785,7 +5059,7 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
4785
5059
  }
4786
5060
  /* Active States */
4787
5061
  :where(.bs-tooltip[data-position="bottom"]):hover :where(.bs-tooltip-text),
4788
- :where(.bs-tooltip[data-position="bottom"]):focus-within :where(.bs-tooltip-text),
5062
+ :where(.bs-tooltip[data-position="bottom"]):has(:focus-visible) :where(.bs-tooltip-text),
4789
5063
  :where(.bs-tooltip[data-position="bottom"])[data-shown] :where(.bs-tooltip-text) {
4790
5064
  opacity: 1;
4791
5065
  transform: translateX(-50%) scale(1);
@@ -4799,7 +5073,7 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
4799
5073
  }
4800
5074
  /* Active States */
4801
5075
  :where(.bs-tooltip[data-position="left"]):hover :where(.bs-tooltip-text),
4802
- :where(.bs-tooltip[data-position="left"]):focus-within :where(.bs-tooltip-text),
5076
+ :where(.bs-tooltip[data-position="left"]):has(:focus-visible) :where(.bs-tooltip-text),
4803
5077
  :where(.bs-tooltip[data-position="left"])[data-shown] :where(.bs-tooltip-text) {
4804
5078
  opacity: 1;
4805
5079
  transform: translateY(-50%) scale(1);
@@ -4812,7 +5086,7 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
4812
5086
  transform: translateY(-50%) scale(0);
4813
5087
  }
4814
5088
  :where(.bs-tooltip[data-position="right"]):hover :where(.bs-tooltip-text),
4815
- :where(.bs-tooltip[data-position="right"]):focus-within :where(.bs-tooltip-text),
5089
+ :where(.bs-tooltip[data-position="right"]):has(:focus-visible) :where(.bs-tooltip-text),
4816
5090
  :where(.bs-tooltip[data-position="right"])[data-shown] :where(.bs-tooltip-text) {
4817
5091
  opacity: 1;
4818
5092
  transform: translateY(-50%) scale(1);
@@ -4847,10 +5121,10 @@ table:where([data-sticky^="left"]) :is(td:first-child, th:first-child) {
4847
5121
  :where(.bs-tooltip[data-position="top-right"]):hover :where(.bs-tooltip-text),
4848
5122
  :where(.bs-tooltip[data-position="bottom-left"]):hover :where(.bs-tooltip-text),
4849
5123
  :where(.bs-tooltip[data-position="bottom-right"]):hover :where(.bs-tooltip-text),
4850
- :where(.bs-tooltip[data-position="top-left"]):focus-within :where(.bs-tooltip-text),
4851
- :where(.bs-tooltip[data-position="top-right"]):focus-within :where(.bs-tooltip-text),
4852
- :where(.bs-tooltip[data-position="bottom-left"]):focus-within :where(.bs-tooltip-text),
4853
- :where(.bs-tooltip[data-position="bottom-right"]):focus-within :where(.bs-tooltip-text),
5124
+ :where(.bs-tooltip[data-position="top-left"]):has(:focus-visible) :where(.bs-tooltip-text),
5125
+ :where(.bs-tooltip[data-position="top-right"]):has(:focus-visible) :where(.bs-tooltip-text),
5126
+ :where(.bs-tooltip[data-position="bottom-left"]):has(:focus-visible) :where(.bs-tooltip-text),
5127
+ :where(.bs-tooltip[data-position="bottom-right"]):has(:focus-visible) :where(.bs-tooltip-text),
4854
5128
  :where(.bs-tooltip[data-position="top-left"]:not([data-shown="false"]))[data-shown] :where(.bs-tooltip-text),
4855
5129
  :where(.bs-tooltip[data-position="top-right"]:not([data-shown="false"]))[data-shown] :where(.bs-tooltip-text),
4856
5130
  :where(.bs-tooltip[data-position="bottom-left"]:not([data-shown="false"]))[data-shown] :where(.bs-tooltip-text),
@@ -4864,12 +5138,25 @@ Don't display unless data-shown is present
4864
5138
  This must go last to properly override the other classes
4865
5139
  */
4866
5140
  :where(.bs-tooltip[data-disabled]:not([data-disabled="false"]):not([data-shown])):hover :where(.bs-tooltip-text),
4867
- :where(.bs-tooltip[data-disabled]:not([data-disabled="false"]):not([data-shown])):focus-within :where(.bs-tooltip-text) {
5141
+ :where(.bs-tooltip[data-disabled]:not([data-disabled="false"]):not([data-shown])):has(:focus-visible) :where(.bs-tooltip-text) {
4868
5142
  opacity: 0;
4869
5143
  transform: scale(0);
4870
5144
  }
4871
5145
  :where(.bs-tooltip[data-shown="false"][data-disabled]:not([data-disabled="false"])):hover :where(.bs-tooltip-text),
4872
- :where(.bs-tooltip[data-shown="false"][data-disabled]:not([data-disabled="false"])):focus-within :where(.bs-tooltip-text) {
5146
+ :where(.bs-tooltip[data-shown="false"][data-disabled]:not([data-disabled="false"])):has(:focus-visible) :where(.bs-tooltip-text) {
4873
5147
  opacity: 0;
4874
5148
  transform: scale(0);
4875
5149
  }
5150
+ /* -------------------- COMPONENT-SPECIFIC STYLES -------------------- */
5151
+ .bs-tooltip :where(.bs-tooltip-text.escaped) {
5152
+ opacity: 0;
5153
+ transform: scale(0.5);
5154
+ }
5155
+ .bs-tooltip :where(.bs-tooltip-text.escaped-x) {
5156
+ opacity: 0;
5157
+ transform: translateX(-50%) scale(0.5);
5158
+ }
5159
+ .bs-tooltip :where(.bs-tooltip-text.escaped-y) {
5160
+ opacity: 0;
5161
+ transform: translateY(-50%) scale(0.5);
5162
+ }