blue-web 1.12.0 → 1.13.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/merged.scss CHANGED
@@ -1,10 +1,11 @@
1
1
  /*!
2
- * Blue Web v1.12.0 (https://bruegmann.github.io/blue-web)
2
+ * Blue Web v1.13.0 (https://bruegmann.github.io/blue-web)
3
3
  * Licensed under GNU General Public License v3.0 (https://github.com/bruegmann/blue-web/blob/master/LICENSE).
4
4
  */
5
5
 
6
6
  // Main color theme. E.g. used for background for body and sidebar.
7
7
  $theme: hsl(217deg 10% 94%) !default;
8
+ $theme-dark: hsl(217deg 10% 8%) !default;
8
9
  $primary: hsl(217deg 91% 50%) !default;
9
10
  $white: #fff !default;
10
11
  $gray-100: hsl(217deg 17% 98%) !default;
@@ -17,8 +18,6 @@ $gray-700: hsl(217deg 9% 31%) !default;
17
18
  $gray-800: hsl(217deg 10% 23%) !default;
18
19
  $gray-900: hsl(217deg 11% 15%) !default;
19
20
  $black: #000 !default;
20
- $header-color: $gray-900 !default;
21
- $sidebar-color: $gray-900 !default;
22
21
 
23
22
  $light: #ecedf0 !default;
24
23
 
@@ -2208,729 +2207,6 @@ $carousel-control-icon-filter-dark: $carousel-dark-control-icon-filter !defaul
2208
2207
  $btn-close-filter-dark: $btn-close-white-filter !default;
2209
2208
  // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3
2210
2209
 
2211
- $theme-colors: () !default;
2212
- // stylelint-disable-next-line scss/dollar-variable-default
2213
- $theme-colors: map-merge(
2214
- (
2215
- "theme": $theme,
2216
- "white": white,
2217
- "black": #212529
2218
- ),
2219
- $theme-colors
2220
- );
2221
-
2222
- // For Bootstrap 5.1 this needs to be set. Otherwise we couldn't use .bg-* and .text-* utils with our custom $theme
2223
- // Since Bootstrap 5.2 it's no longer required, so it's commented out. If everything works fine, this can be removed for
2224
- // future releases.
2225
- // $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value");
2226
- // $utilities-colors: map-merge($utilities-colors, $theme-colors-rgb);
2227
- // $utilities-text-colors: map-merge($utilities-text-colors, map-loop($utilities-colors, rgba-css-var, "$key", "text"));
2228
- // $utilities-bg-colors: map-merge($utilities-bg-colors, map-loop($utilities-colors, rgba-css-var, "$key", "bg"));
2229
-
2230
- // Alpha value (RGBA) e.g. for header background.
2231
- $shimmering: 0.8 !default;
2232
-
2233
- // Thumb color of scrollbar.
2234
- $scrollbar-thumb-color: white !default;
2235
-
2236
- // Thumb color of scrollbar as RGB (like `255, 255, 255`).
2237
- $scrollbar-thumb-color-rgb:
2238
- red($scrollbar-thumb-color), green($scrollbar-thumb-color), blue($scrollbar-thumb-color) !default;
2239
-
2240
- // Default size for many components, like sidebar menu items.
2241
- $normal-size: calc(
2242
- var(--bs-btn-border-width, 1px) + var(--bs-btn-padding-y, 0.375rem) +
2243
- (var(--bs-btn-font-size, 1rem) * var(--bs-btn-line-height, 1.5)) + var(--bs-btn-padding-y, 0.375rem) +
2244
- var(--bs-btn-border-width, 1px)
2245
- ) !default;
2246
-
2247
- // Height of actions menu when it is expanded, like on mobile devices.
2248
- $actions-height: 7.5rem !default;
2249
-
2250
- // Background color of menu toggle button.
2251
- $bla-button-bg-normal: rgba(0, 0, 0, 0.1) !default;
2252
-
2253
- // Background color of menu toggle button on hover state.
2254
- $bla-button-bg-hover: rgba(white, 0.25) !default;
2255
-
2256
- // Font size for sidebar menu items.
2257
- $bla-btn-font-size: 1em !default;
2258
-
2259
- // Padding for action menu items.
2260
- $bla-header-nav-padding: 0.75rem !default;
2261
-
2262
- // Width of the sidebar.
2263
- $bla-sidebar-width: 16.563rem !default;
2264
-
2265
- // Background of sidebar.
2266
- $sidebar-bg: $theme !default;
2267
-
2268
- // Background of sidebar when it's opened (on mobile devices).
2269
- $sidebar-open-bg: darken($sidebar-bg, 30%) !default;
2270
-
2271
- // Background of sidebar menu dropdown menus
2272
- $sidebar-deep-bg: darken($sidebar-bg, 4%) !default;
2273
-
2274
- // Text color of sidebar.
2275
- $sidebar-color: #fff !default;
2276
-
2277
- // Color of indicator for active sidebar item.
2278
- $sidebar-indicator-color: $sidebar-color !default;
2279
-
2280
- // Background of search control in sidebar.
2281
- $sidebar-search-bg: $input-bg !default;
2282
-
2283
- // Background of the body element
2284
- $app-bg: $sidebar-bg !default;
2285
-
2286
- // Text color of header elements
2287
- $header-color: #fff !default;
2288
-
2289
- // Background color of Header
2290
- $header-bg: $theme !default;
2291
-
2292
- // Background color of Header as RGB (like `255, 255, 255`).
2293
- $header-bg-rgb: red($header-bg), green($header-bg), blue($header-bg) !default;
2294
-
2295
- // Background of header action menu dropdown menus
2296
- $header-deep-bg: darken($header-bg, 4%) !default;
2297
-
2298
- // Background color, when hovering action menu item.
2299
- $actions-control-bg-hover: $bla-button-bg-hover !default;
2300
-
2301
- // Width and height of the scrollbar indicators
2302
- $scrollbar-size: 10px;
2303
-
2304
- // Shrink sidebar on smaller screens
2305
- $sidebar-shrink: true !default;
2306
-
2307
- // Breakpoint for sidebar shrink
2308
- $sidebar-shrink-breakpoint: 600px !default;
2309
-
2310
- // Breakpoint for sidebar fully expanded
2311
- $sidebar-expanded-breakpoint: 1400px !default;
2312
-
2313
- :root {
2314
- --blue-scrollbar-thumb-color-rgb: #{$scrollbar-thumb-color-rgb};
2315
- --blue-scrollbar-size: #{$scrollbar-size};
2316
-
2317
- --blue-sidebar-width: #{$bla-sidebar-width};
2318
- --blue-sidebar-color: #{$sidebar-color};
2319
- --blue-theme: var(--theme, #{$theme});
2320
- --blue-shimmering: 0.9;
2321
-
2322
- --blue-app-bg: #{$app-bg};
2323
-
2324
- --blue-sidebar-bg: #{$sidebar-bg};
2325
- --blue-sidebar-depth-1-bg: #{darken($sidebar-bg, 4%)};
2326
- --blue-sidebar-depth-2-bg: #{darken(darken($sidebar-bg, 4%), 4%)};
2327
- --blue-sidebar-depth-3-bg: #{darken(darken($sidebar-bg, 4%), 8%)};
2328
- --blue-sidebar-depth-4-bg: #{darken(darken($sidebar-bg, 4%), 12%)};
2329
- --blue-sidebar-depth-5-bg: #{darken(darken($sidebar-bg, 4%), 16%)};
2330
- --blue-sidebar-depth-6-bg: #{darken(darken($sidebar-bg, 4%), 20%)};
2331
-
2332
- --blue-header-bg: #{$header-bg};
2333
- --blue-header-bg-rgb: #{$header-bg-rgb};
2334
- --blue-header-depth-1-bg: #{darken($header-bg, 4%)};
2335
- --blue-header-depth-2-bg: #{darken(darken($header-bg, 4%), 4%)};
2336
- --blue-header-depth-3-bg: #{darken(darken($header-bg, 4%), 8%)};
2337
- --blue-header-depth-4-bg: #{darken(darken($header-bg, 4%), 12%)};
2338
- --blue-header-depth-5-bg: #{darken(darken($header-bg, 4%), 16%)};
2339
- --blue-header-depth-6-bg: #{darken(darken($header-bg, 4%), 20%)};
2340
-
2341
- --blue-header-color: #{$header-color};
2342
- --blue-action-link-bg-color: var(--blue-theme);
2343
- --blue-menu-item-indicator-bg: #{$sidebar-indicator-color};
2344
- --blue-menu-item-height: #{$normal-size};
2345
- }
2346
-
2347
-
2348
- @mixin slide-transition() {
2349
- $slide-transition: width 0.5s;
2350
- transition: $slide-transition;
2351
-
2352
- @media (prefers-reduced-motion) {
2353
- transition: none;
2354
- }
2355
-
2356
- @media (prefers-reduced-motion) {
2357
- transition: none;
2358
- }
2359
- }
2360
-
2361
- @mixin header-bg() {
2362
- background-image: linear-gradient(
2363
- var(--blue-header-bg, $header-bg),
2364
- rgba(var(--blue-header-bg-rgb, var(--bs-theme-rgb)), var(--blue-shimmering, $shimmering))
2365
- );
2366
- backdrop-filter: blur(3px) saturate(125%);
2367
- }
2368
-
2369
- @mixin blue-menu-item-indicator() {
2370
- content: "";
2371
- position: absolute;
2372
- top: 0.625rem;
2373
- bottom: 0.625rem;
2374
- left: 0.125rem;
2375
- right: initial;
2376
- width: 0.25rem;
2377
- height: auto;
2378
- background-color: var(--blue-menu-item-indicator-bg);
2379
- border-radius: 1rem;
2380
- animation: blue-menu-item-indicator-in-from-side 0.2s ease-in-out;
2381
-
2382
- @media (prefers-reduced-motion) {
2383
- animation-duration: 0s;
2384
- }
2385
- }
2386
-
2387
- @mixin blue-menu-item-indicator-horizontal() {
2388
- top: initial;
2389
- bottom: 0.125rem;
2390
- left: 0.625rem;
2391
- right: 0.625rem;
2392
- width: auto;
2393
- height: 0.25rem;
2394
- animation: blue-menu-item-indicator-in-from-below 0.2s ease-in-out;
2395
-
2396
- @media (prefers-reduced-motion) {
2397
- animation-duration: 0s;
2398
- }
2399
- }
2400
-
2401
- @mixin blue-menu-item-dropdown-for-shrunk-sidebar() {
2402
- & > .blue-menu-item-wrapper {
2403
- display: block;
2404
- position: relative;
2405
-
2406
- &:not(:has(.blue-menu-item-dropdown)) > .blue-menu-item:hover {
2407
- .blue-menu-item-label {
2408
- &::before,
2409
- & {
2410
- animation: tips-horz 150ms cubic-bezier(0.5, 0, 0.6, 1.3) 1ms forwards;
2411
-
2412
- @media (prefers-reduced-motion) {
2413
- animation-duration: 0s;
2414
- }
2415
- }
2416
-
2417
- &::before {
2418
- content: "";
2419
- display: block;
2420
- position: absolute;
2421
- border: 5px solid transparent;
2422
- z-index: 1001;
2423
-
2424
- top: 50%;
2425
- border-left-width: 0;
2426
- border-right-color: var(--bs-tooltip-bg, #353539);
2427
- left: calc(0em - 5px);
2428
- transform: translate(0.5em, -50%);
2429
- opacity: 0;
2430
- }
2431
-
2432
- display: block;
2433
- text-transform: none;
2434
- line-height: 1;
2435
- font-size: 0.9em;
2436
- -webkit-user-select: none;
2437
- user-select: none;
2438
- pointer-events: none;
2439
- position: absolute;
2440
- font-family: var(--bs-font-sans-serif);
2441
- text-align: center;
2442
- min-width: 3em;
2443
- max-width: var(--bs-tooltip-max-width, 21em);
2444
- padding: var(--bs-tooltip-padding-y, 1ch) var(--bs-tooltip-padding-x, 1.5ch);
2445
- border-radius: var(--bs-tooltip-border-radius, 0.3em);
2446
- box-shadow: 0 1em 2em -0.5em rgba(0, 0, 0, 0.35);
2447
- background: var(--bs-tooltip-bg, #353539);
2448
- color: var(--bs-tooltip-color, #fff);
2449
- z-index: 1000;
2450
- width: auto;
2451
- top: 50%;
2452
- left: calc(100% + 5px);
2453
- transform: translate(-0.5em, -50%);
2454
- overflow: visible;
2455
- opacity: 0;
2456
- }
2457
- }
2458
-
2459
- & > .blue-menu-item-dropdown,
2460
- & > .blue-outside > .blue-menu-item-dropdown {
2461
- @extend .ms-1;
2462
- @extend .rounded;
2463
- @extend .shadow;
2464
- @extend .blue-menu-item-dropdown-from-start;
2465
- @extend .blue-sidebar-state;
2466
- @extend .open;
2467
-
2468
- position: absolute;
2469
- top: 0;
2470
- width: $bla-sidebar-width;
2471
- left: $normal-size;
2472
- max-height: calc(100vh - (var(--offset-top, 0px) + 1rem));
2473
- overflow-y: auto;
2474
- overflow-x: hidden;
2475
- background-color: var(--blue-sidebar-bg);
2476
-
2477
- &::before {
2478
- content: none;
2479
- }
2480
- }
2481
-
2482
- &:has(.blue-menu-item-dropdown) {
2483
- & > .blue-menu-item {
2484
- @extend .highlighted;
2485
- }
2486
- }
2487
- }
2488
- }
2489
-
2490
- @mixin show-action-menu-again() {
2491
- max-height: initial;
2492
- overflow: initial;
2493
-
2494
- .blue-actions-menu {
2495
- max-width: initial;
2496
- }
2497
- }
2498
-
2499
- @mixin actions($breakpoint) {
2500
- @media (max-width: #{$breakpoint + 1px}) {
2501
- &.open {
2502
- display: block;
2503
- width: auto;
2504
- position: absolute;
2505
- z-index: 1;
2506
- left: unset;
2507
- top: 0.25rem;
2508
- box-shadow: 0.6rem 6rem 6rem rgba(0, 0, 0, 0.3);
2509
- animation: fadeInDown 0.5s;
2510
-
2511
- @media (prefers-reduced-motion) {
2512
- animation-duration: 0s;
2513
- }
2514
-
2515
- border-radius: $border-radius;
2516
-
2517
- @include show-action-menu-again();
2518
-
2519
- .blue-actions-menu-item:not(.blue-actions-menu-toggle) {
2520
- display: flex;
2521
- }
2522
-
2523
- .blue-actions-menu {
2524
- flex-direction: column;
2525
- .blue-menu-item-dropdown {
2526
- --blue-sidebar-bg: #{darken($theme, 34%)};
2527
- }
2528
- }
2529
- }
2530
-
2531
- .blue-actions-menu-item:not(.blue-actions-menu-toggle) {
2532
- display: none;
2533
- }
2534
- }
2535
-
2536
- @media (min-width: $breakpoint) {
2537
- @include show-action-menu-again();
2538
-
2539
- .blue-actions-menu .blue-actions-label {
2540
- display: inline;
2541
- }
2542
-
2543
- .blue-actions-menu-toggle {
2544
- display: none;
2545
- }
2546
-
2547
- .blue-actions-menu > .blue-menu-item-wrapper > .blue-menu-item-dropdown,
2548
- .blue-actions-menu > .blue-menu-item-wrapper > * > .blue-menu-item-dropdown {
2549
- position: absolute;
2550
- right: 0;
2551
- }
2552
- }
2553
- }
2554
-
2555
- @mixin switch($width: 35px, $height: 20px, $padding: 3px, $color: $body-color, $color-active: $success) {
2556
- $slider-size: $height - ($padding * 2);
2557
-
2558
- & {
2559
- position: relative;
2560
- display: inline-block;
2561
- width: $width;
2562
- height: $height;
2563
-
2564
- input {
2565
- display: none;
2566
- }
2567
-
2568
- &.disabled {
2569
- opacity: 0.8;
2570
- }
2571
-
2572
- &:not(.disabled) {
2573
- .slider {
2574
- cursor: pointer;
2575
- }
2576
- }
2577
-
2578
- .slider {
2579
- position: absolute;
2580
- top: 0;
2581
- left: 0;
2582
- right: 0;
2583
- bottom: 0;
2584
- background-color: $input-group-addon-bg;
2585
- transition: 0.4s;
2586
-
2587
- @media (prefers-reduced-motion) {
2588
- transition: none;
2589
- }
2590
-
2591
- box-shadow: inset 0 0 0 1px rgba($color, 0.5);
2592
-
2593
- &::before {
2594
- content: "";
2595
- position: absolute;
2596
- height: $slider-size;
2597
- width: $slider-size;
2598
- left: $padding;
2599
- bottom: $padding;
2600
- background-color: $color;
2601
- transition: 0.4s;
2602
-
2603
- @media (prefers-reduced-motion) {
2604
- transition: none;
2605
- }
2606
- }
2607
-
2608
- &::after {
2609
- content: attr(data-label);
2610
- position: absolute;
2611
- top: 50%;
2612
- left: 50%;
2613
- transform: translate(-50%, -50%);
2614
- margin-left: ($slider-size * 0.5);
2615
- transition: margin-left 0.4s;
2616
-
2617
- @media (prefers-reduced-motion) {
2618
- transition: none;
2619
- }
2620
-
2621
- color: $color;
2622
- }
2623
- }
2624
-
2625
- input:checked {
2626
- & + .slider {
2627
- background-color: $color-active;
2628
- box-shadow: inset 0 0 12px rgba(255, 255, 255, 0.3);
2629
-
2630
- &::before {
2631
- transform: translateX($width - $slider-size - ($padding * 2));
2632
- background-color: white;
2633
- }
2634
-
2635
- &::after {
2636
- color: white;
2637
- margin-left: ($slider-size * 0.5) * -1;
2638
- }
2639
- }
2640
- }
2641
- input:focus + .slider {
2642
- box-shadow: 0 0 1px $color-active;
2643
- }
2644
- }
2645
- }
2646
-
2647
- @mixin customProperty($name, $value) {
2648
- // fallback for older browser who do not support custom properties / css variables
2649
- #{$name}: #{$value};
2650
-
2651
- // create a css variable (this might override the variable on any of the ancestor elements)
2652
- --#{$name}: #{$value};
2653
-
2654
- // use the css variable on the property
2655
- #{$name}: var(--#{$name}, #{$value});
2656
- }
2657
-
2658
- @mixin scroll-shadow($bg, $light-base: white) {
2659
- background: linear-gradient($bg 30%, rgba($light-base, 0)),
2660
- linear-gradient(rgba($light-base, 0) 10px, $bg 70%) bottom,
2661
- radial-gradient(at top, rgba(0, 0, 0, 0.2), transparent 70%),
2662
- radial-gradient(at bottom, rgba(0, 0, 0, 0.2), transparent 70%) bottom;
2663
- background-repeat: no-repeat;
2664
- background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
2665
- background-attachment: local, local, scroll, scroll;
2666
- }
2667
-
2668
-
2669
- @keyframes fade-in {
2670
- from {
2671
- opacity: 0;
2672
- }
2673
- to {
2674
- opacity: 1;
2675
- }
2676
- }
2677
-
2678
- @keyframes blAppearUp {
2679
- from {
2680
- margin-top: 2.5rem;
2681
- }
2682
- to {
2683
- margin-top: 0;
2684
- }
2685
- }
2686
-
2687
- @keyframes blue-menu-item-dropdown {
2688
- from {
2689
- transform: translateY(-50%);
2690
- opacity: 0;
2691
- }
2692
- }
2693
-
2694
- @keyframes enabledBlueAppPage {
2695
- from {
2696
- transform: scale(0.98);
2697
- opacity: 0;
2698
- }
2699
- to {
2700
- opacity: 1;
2701
- }
2702
- }
2703
-
2704
- @keyframes fadeInDown {
2705
- from {
2706
- opacity: 0;
2707
- transform: translate3d(0, -100%, 0);
2708
- }
2709
-
2710
- to {
2711
- opacity: 1;
2712
- transform: none;
2713
- }
2714
- }
2715
-
2716
- @keyframes alert-in {
2717
- from {
2718
- transform: scale(0, 0);
2719
- opacity: 0.2;
2720
- transition: 0s;
2721
- }
2722
- }
2723
-
2724
- @keyframes circlebounce {
2725
- 0%,
2726
- 100% {
2727
- transform: scale(0);
2728
- }
2729
- 50% {
2730
- transform: scale(1);
2731
- }
2732
- }
2733
-
2734
- @keyframes scrolling {
2735
- from {
2736
- transform: translateX(-100%);
2737
- }
2738
- to {
2739
- transform: translateX(100%);
2740
- }
2741
- }
2742
-
2743
-
2744
- @mixin bsBanner($file) {
2745
- /*!
2746
- * Bootstrap #{$file} v5.3.5 (https://getbootstrap.com/)
2747
- * Copyright 2011-2025 The Bootstrap Authors
2748
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2749
- */
2750
- }
2751
-
2752
- @include bsBanner("");
2753
-
2754
- // scss-docs-start import-stack
2755
- // Configuration
2756
-
2757
-
2758
-
2759
- // Re-assigned maps
2760
- //
2761
- // Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
2762
-
2763
- // scss-docs-start theme-colors-rgb
2764
- $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
2765
- // scss-docs-end theme-colors-rgb
2766
-
2767
- // scss-docs-start theme-text-map
2768
- $theme-colors-text: (
2769
- "primary": $primary-text-emphasis,
2770
- "secondary": $secondary-text-emphasis,
2771
- "success": $success-text-emphasis,
2772
- "info": $info-text-emphasis,
2773
- "warning": $warning-text-emphasis,
2774
- "danger": $danger-text-emphasis,
2775
- "light": $light-text-emphasis,
2776
- "dark": $dark-text-emphasis,
2777
- ) !default;
2778
- // scss-docs-end theme-text-map
2779
-
2780
- // scss-docs-start theme-bg-subtle-map
2781
- $theme-colors-bg-subtle: (
2782
- "primary": $primary-bg-subtle,
2783
- "secondary": $secondary-bg-subtle,
2784
- "success": $success-bg-subtle,
2785
- "info": $info-bg-subtle,
2786
- "warning": $warning-bg-subtle,
2787
- "danger": $danger-bg-subtle,
2788
- "light": $light-bg-subtle,
2789
- "dark": $dark-bg-subtle,
2790
- ) !default;
2791
- // scss-docs-end theme-bg-subtle-map
2792
-
2793
- // scss-docs-start theme-border-subtle-map
2794
- $theme-colors-border-subtle: (
2795
- "primary": $primary-border-subtle,
2796
- "secondary": $secondary-border-subtle,
2797
- "success": $success-border-subtle,
2798
- "info": $info-border-subtle,
2799
- "warning": $warning-border-subtle,
2800
- "danger": $danger-border-subtle,
2801
- "light": $light-border-subtle,
2802
- "dark": $dark-border-subtle,
2803
- ) !default;
2804
- // scss-docs-end theme-border-subtle-map
2805
-
2806
- $theme-colors-text-dark: null !default;
2807
- $theme-colors-bg-subtle-dark: null !default;
2808
- $theme-colors-border-subtle-dark: null !default;
2809
-
2810
- @if $enable-dark-mode {
2811
- // scss-docs-start theme-text-dark-map
2812
- $theme-colors-text-dark: (
2813
- "primary": $primary-text-emphasis-dark,
2814
- "secondary": $secondary-text-emphasis-dark,
2815
- "success": $success-text-emphasis-dark,
2816
- "info": $info-text-emphasis-dark,
2817
- "warning": $warning-text-emphasis-dark,
2818
- "danger": $danger-text-emphasis-dark,
2819
- "light": $light-text-emphasis-dark,
2820
- "dark": $dark-text-emphasis-dark,
2821
- ) !default;
2822
- // scss-docs-end theme-text-dark-map
2823
-
2824
- // scss-docs-start theme-bg-subtle-dark-map
2825
- $theme-colors-bg-subtle-dark: (
2826
- "primary": $primary-bg-subtle-dark,
2827
- "secondary": $secondary-bg-subtle-dark,
2828
- "success": $success-bg-subtle-dark,
2829
- "info": $info-bg-subtle-dark,
2830
- "warning": $warning-bg-subtle-dark,
2831
- "danger": $danger-bg-subtle-dark,
2832
- "light": $light-bg-subtle-dark,
2833
- "dark": $dark-bg-subtle-dark,
2834
- ) !default;
2835
- // scss-docs-end theme-bg-subtle-dark-map
2836
-
2837
- // scss-docs-start theme-border-subtle-dark-map
2838
- $theme-colors-border-subtle-dark: (
2839
- "primary": $primary-border-subtle-dark,
2840
- "secondary": $secondary-border-subtle-dark,
2841
- "success": $success-border-subtle-dark,
2842
- "info": $info-border-subtle-dark,
2843
- "warning": $warning-border-subtle-dark,
2844
- "danger": $danger-border-subtle-dark,
2845
- "light": $light-border-subtle-dark,
2846
- "dark": $dark-border-subtle-dark,
2847
- ) !default;
2848
- // scss-docs-end theme-border-subtle-dark-map
2849
- }
2850
-
2851
- // Utilities maps
2852
- //
2853
- // Extends the default `$theme-colors` maps to help create our utilities.
2854
-
2855
- // Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
2856
- // scss-docs-start utilities-colors
2857
- $utilities-colors: $theme-colors-rgb !default;
2858
- // scss-docs-end utilities-colors
2859
-
2860
- // scss-docs-start utilities-text-colors
2861
- $utilities-text: map-merge(
2862
- $utilities-colors,
2863
- (
2864
- "black": to-rgb($black),
2865
- "white": to-rgb($white),
2866
- "body": to-rgb($body-color)
2867
- )
2868
- ) !default;
2869
- $utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
2870
-
2871
- $utilities-text-emphasis-colors: (
2872
- "primary-emphasis": var(--#{$prefix}primary-text-emphasis),
2873
- "secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
2874
- "success-emphasis": var(--#{$prefix}success-text-emphasis),
2875
- "info-emphasis": var(--#{$prefix}info-text-emphasis),
2876
- "warning-emphasis": var(--#{$prefix}warning-text-emphasis),
2877
- "danger-emphasis": var(--#{$prefix}danger-text-emphasis),
2878
- "light-emphasis": var(--#{$prefix}light-text-emphasis),
2879
- "dark-emphasis": var(--#{$prefix}dark-text-emphasis)
2880
- ) !default;
2881
- // scss-docs-end utilities-text-colors
2882
-
2883
- // scss-docs-start utilities-bg-colors
2884
- $utilities-bg: map-merge(
2885
- $utilities-colors,
2886
- (
2887
- "black": to-rgb($black),
2888
- "white": to-rgb($white),
2889
- "body": to-rgb($body-bg)
2890
- )
2891
- ) !default;
2892
- $utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
2893
-
2894
- $utilities-bg-subtle: (
2895
- "primary-subtle": var(--#{$prefix}primary-bg-subtle),
2896
- "secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
2897
- "success-subtle": var(--#{$prefix}success-bg-subtle),
2898
- "info-subtle": var(--#{$prefix}info-bg-subtle),
2899
- "warning-subtle": var(--#{$prefix}warning-bg-subtle),
2900
- "danger-subtle": var(--#{$prefix}danger-bg-subtle),
2901
- "light-subtle": var(--#{$prefix}light-bg-subtle),
2902
- "dark-subtle": var(--#{$prefix}dark-bg-subtle)
2903
- ) !default;
2904
- // scss-docs-end utilities-bg-colors
2905
-
2906
- // scss-docs-start utilities-border-colors
2907
- $utilities-border: map-merge(
2908
- $utilities-colors,
2909
- (
2910
- "black": to-rgb($black),
2911
- "white": to-rgb($white)
2912
- )
2913
- ) !default;
2914
- $utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
2915
-
2916
- $utilities-border-subtle: (
2917
- "primary-subtle": var(--#{$prefix}primary-border-subtle),
2918
- "secondary-subtle": var(--#{$prefix}secondary-border-subtle),
2919
- "success-subtle": var(--#{$prefix}success-border-subtle),
2920
- "info-subtle": var(--#{$prefix}info-border-subtle),
2921
- "warning-subtle": var(--#{$prefix}warning-border-subtle),
2922
- "danger-subtle": var(--#{$prefix}danger-border-subtle),
2923
- "light-subtle": var(--#{$prefix}light-border-subtle),
2924
- "dark-subtle": var(--#{$prefix}dark-border-subtle)
2925
- ) !default;
2926
- // scss-docs-end utilities-border-colors
2927
-
2928
- $utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
2929
-
2930
- $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
2931
-
2932
- $gutters: $spacers !default;
2933
-
2934
2210
  // Toggles
2935
2211
  //
2936
2212
  // Used in conjunction with global variables to enable certain theme features.
@@ -4083,283 +3359,999 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height
4083
3359
  }
4084
3360
  }
4085
3361
 
4086
- @mixin border-bottom-start-radius($radius: $border-radius) {
4087
- @if $enable-rounded {
4088
- border-bottom-left-radius: valid-radius($radius);
4089
- }
4090
- }
4091
- // scss-docs-end border-radius-mixins
3362
+ @mixin border-bottom-start-radius($radius: $border-radius) {
3363
+ @if $enable-rounded {
3364
+ border-bottom-left-radius: valid-radius($radius);
3365
+ }
3366
+ }
3367
+ // scss-docs-end border-radius-mixins
3368
+
3369
+ @mixin box-shadow($shadow...) {
3370
+ @if $enable-shadows {
3371
+ $result: ();
3372
+
3373
+ @each $value in $shadow {
3374
+ @if $value != null {
3375
+ $result: append($result, $value, "comma");
3376
+ }
3377
+ @if $value == none and length($shadow) > 1 {
3378
+ @warn "The keyword 'none' must be used as a single argument.";
3379
+ }
3380
+ }
3381
+
3382
+ @if (length($result) > 0) {
3383
+ box-shadow: $result;
3384
+ }
3385
+ }
3386
+ }
3387
+
3388
+ // Gradients
3389
+
3390
+ // scss-docs-start gradient-bg-mixin
3391
+ @mixin gradient-bg($color: null) {
3392
+ background-color: $color;
3393
+
3394
+ @if $enable-gradients {
3395
+ background-image: var(--#{$prefix}gradient);
3396
+ }
3397
+ }
3398
+ // scss-docs-end gradient-bg-mixin
3399
+
3400
+ // scss-docs-start gradient-mixins
3401
+ // Horizontal gradient, from left to right
3402
+ //
3403
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
3404
+ @mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
3405
+ background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
3406
+ }
3407
+
3408
+ // Vertical gradient, from top to bottom
3409
+ //
3410
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
3411
+ @mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
3412
+ background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
3413
+ }
3414
+
3415
+ @mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
3416
+ background-image: linear-gradient($deg, $start-color, $end-color);
3417
+ }
3418
+
3419
+ @mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
3420
+ background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
3421
+ }
3422
+
3423
+ @mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
3424
+ background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
3425
+ }
3426
+
3427
+ @mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
3428
+ background-image: radial-gradient(circle, $inner-color, $outer-color);
3429
+ }
3430
+
3431
+ @mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
3432
+ background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
3433
+ }
3434
+ // scss-docs-end gradient-mixins
3435
+
3436
+ // stylelint-disable property-disallowed-list
3437
+ @mixin transition($transition...) {
3438
+ @if length($transition) == 0 {
3439
+ $transition: $transition-base;
3440
+ }
3441
+
3442
+ @if length($transition) > 1 {
3443
+ @each $value in $transition {
3444
+ @if $value == null or $value == none {
3445
+ @warn "The keyword 'none' or 'null' must be used as a single argument.";
3446
+ }
3447
+ }
3448
+ }
3449
+
3450
+ @if $enable-transitions {
3451
+ @if nth($transition, 1) != null {
3452
+ transition: $transition;
3453
+ }
3454
+
3455
+ @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {
3456
+ @media (prefers-reduced-motion: reduce) {
3457
+ transition: none;
3458
+ }
3459
+ }
3460
+ }
3461
+ }
3462
+
3463
+
3464
+ // Layout
3465
+ // scss-docs-start clearfix
3466
+ @mixin clearfix() {
3467
+ &::after {
3468
+ display: block;
3469
+ clear: both;
3470
+ content: "";
3471
+ }
3472
+ }
3473
+ // scss-docs-end clearfix
3474
+
3475
+ // Container mixins
3476
+
3477
+ @mixin make-container($gutter: $container-padding-x) {
3478
+ --#{$prefix}gutter-x: #{$gutter};
3479
+ --#{$prefix}gutter-y: 0;
3480
+ width: 100%;
3481
+ padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
3482
+ padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
3483
+ margin-right: auto;
3484
+ margin-left: auto;
3485
+ }
3486
+
3487
+ // Grid system
3488
+ //
3489
+ // Generate semantic grid columns with these mixins.
3490
+
3491
+ @mixin make-row($gutter: $grid-gutter-width) {
3492
+ --#{$prefix}gutter-x: #{$gutter};
3493
+ --#{$prefix}gutter-y: 0;
3494
+ display: flex;
3495
+ flex-wrap: wrap;
3496
+ // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed
3497
+ margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list
3498
+ margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
3499
+ margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
3500
+ }
3501
+
3502
+ @mixin make-col-ready() {
3503
+ // Add box sizing if only the grid is loaded
3504
+ box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);
3505
+ // Prevent columns from becoming too narrow when at smaller grid tiers by
3506
+ // always setting `width: 100%;`. This works because we set the width
3507
+ // later on to override this initial width.
3508
+ flex-shrink: 0;
3509
+ width: 100%;
3510
+ max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid
3511
+ padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
3512
+ padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
3513
+ margin-top: var(--#{$prefix}gutter-y);
3514
+ }
3515
+
3516
+ @mixin make-col($size: false, $columns: $grid-columns) {
3517
+ @if $size {
3518
+ flex: 0 0 auto;
3519
+ width: percentage(divide($size, $columns));
3520
+
3521
+ } @else {
3522
+ flex: 1 1 0;
3523
+ max-width: 100%;
3524
+ }
3525
+ }
3526
+
3527
+ @mixin make-col-auto() {
3528
+ flex: 0 0 auto;
3529
+ width: auto;
3530
+ }
3531
+
3532
+ @mixin make-col-offset($size, $columns: $grid-columns) {
3533
+ $num: divide($size, $columns);
3534
+ margin-left: if($num == 0, 0, percentage($num));
3535
+ }
3536
+
3537
+ // Row columns
3538
+ //
3539
+ // Specify on a parent element(e.g., .row) to force immediate children into NN
3540
+ // number of columns. Supports wrapping to new lines, but does not do a Masonry
3541
+ // style grid.
3542
+ @mixin row-cols($count) {
3543
+ > * {
3544
+ flex: 0 0 auto;
3545
+ width: percentage(divide(1, $count));
3546
+ }
3547
+ }
3548
+
3549
+ // Framework grid generation
3550
+ //
3551
+ // Used only by Bootstrap to generate the correct number of grid classes given
3552
+ // any value of `$grid-columns`.
3553
+
3554
+ @mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
3555
+ @each $breakpoint in map-keys($breakpoints) {
3556
+ $infix: breakpoint-infix($breakpoint, $breakpoints);
3557
+
3558
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
3559
+ // Provide basic `.col-{bp}` classes for equal-width flexbox columns
3560
+ .col#{$infix} {
3561
+ flex: 1 0 0;
3562
+ }
4092
3563
 
4093
- @mixin box-shadow($shadow...) {
4094
- @if $enable-shadows {
4095
- $result: ();
3564
+ .row-cols#{$infix}-auto > * {
3565
+ @include make-col-auto();
3566
+ }
4096
3567
 
4097
- @each $value in $shadow {
4098
- @if $value != null {
4099
- $result: append($result, $value, "comma");
3568
+ @if $grid-row-columns > 0 {
3569
+ @for $i from 1 through $grid-row-columns {
3570
+ .row-cols#{$infix}-#{$i} {
3571
+ @include row-cols($i);
3572
+ }
3573
+ }
4100
3574
  }
4101
- @if $value == none and length($shadow) > 1 {
4102
- @warn "The keyword 'none' must be used as a single argument.";
3575
+
3576
+ .col#{$infix}-auto {
3577
+ @include make-col-auto();
4103
3578
  }
4104
- }
4105
3579
 
4106
- @if (length($result) > 0) {
4107
- box-shadow: $result;
3580
+ @if $columns > 0 {
3581
+ @for $i from 1 through $columns {
3582
+ .col#{$infix}-#{$i} {
3583
+ @include make-col($i, $columns);
3584
+ }
3585
+ }
3586
+
3587
+ // `$columns - 1` because offsetting by the width of an entire row isn't possible
3588
+ @for $i from 0 through ($columns - 1) {
3589
+ @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
3590
+ .offset#{$infix}-#{$i} {
3591
+ @include make-col-offset($i, $columns);
3592
+ }
3593
+ }
3594
+ }
3595
+ }
3596
+
3597
+ // Gutters
3598
+ //
3599
+ // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.
3600
+ @each $key, $value in $gutters {
3601
+ .g#{$infix}-#{$key},
3602
+ .gx#{$infix}-#{$key} {
3603
+ --#{$prefix}gutter-x: #{$value};
3604
+ }
3605
+
3606
+ .g#{$infix}-#{$key},
3607
+ .gy#{$infix}-#{$key} {
3608
+ --#{$prefix}gutter-y: #{$value};
3609
+ }
3610
+ }
4108
3611
  }
4109
3612
  }
4110
3613
  }
4111
3614
 
4112
- // Gradients
3615
+ @mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {
3616
+ @each $breakpoint in map-keys($breakpoints) {
3617
+ $infix: breakpoint-infix($breakpoint, $breakpoints);
4113
3618
 
4114
- // scss-docs-start gradient-bg-mixin
4115
- @mixin gradient-bg($color: null) {
4116
- background-color: $color;
3619
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
3620
+ @if $columns > 0 {
3621
+ @for $i from 1 through $columns {
3622
+ .g-col#{$infix}-#{$i} {
3623
+ grid-column: auto / span $i;
3624
+ }
3625
+ }
4117
3626
 
4118
- @if $enable-gradients {
4119
- background-image: var(--#{$prefix}gradient);
3627
+ // Start with `1` because `0` is an invalid value.
3628
+ // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
3629
+ @for $i from 1 through ($columns - 1) {
3630
+ .g-start#{$infix}-#{$i} {
3631
+ grid-column-start: $i;
3632
+ }
3633
+ }
3634
+ }
3635
+ }
4120
3636
  }
4121
3637
  }
4122
- // scss-docs-end gradient-bg-mixin
4123
3638
 
4124
- // scss-docs-start gradient-mixins
4125
- // Horizontal gradient, from left to right
4126
- //
4127
- // Creates two color stops, start and end, by specifying a color and position for each color stop.
4128
- @mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
4129
- background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
3639
+
3640
+ $theme-colors: () !default;
3641
+ // stylelint-disable-next-line scss/dollar-variable-default
3642
+ $theme-colors: map-merge(
3643
+ (
3644
+ "theme": $theme
3645
+ ),
3646
+ $theme-colors
3647
+ );
3648
+
3649
+ // Alpha value (RGBA) e.g. for header background.
3650
+ $shimmering: 0.8 !default;
3651
+
3652
+ // Thumb color of scrollbar.
3653
+ $scrollbar-thumb-color: white !default;
3654
+
3655
+ // Thumb color of scrollbar as RGB (like `255, 255, 255`).
3656
+ $scrollbar-thumb-color-rgb:
3657
+ red($scrollbar-thumb-color), green($scrollbar-thumb-color), blue($scrollbar-thumb-color) !default;
3658
+
3659
+ // Default size for many components, like sidebar menu items.
3660
+ $normal-size: calc(
3661
+ var(--bs-btn-border-width, 1px) + var(--bs-btn-padding-y, 0.375rem) +
3662
+ (var(--bs-btn-font-size, 1rem) * var(--bs-btn-line-height, 1.5)) + var(--bs-btn-padding-y, 0.375rem) +
3663
+ var(--bs-btn-border-width, 1px)
3664
+ ) !default;
3665
+
3666
+ // Height of actions menu when it is expanded, like on mobile devices.
3667
+ $actions-height: 7.5rem !default;
3668
+
3669
+ // Background color of menu toggle button.
3670
+ $bla-button-bg-normal: rgba(0, 0, 0, 0.1) !default;
3671
+
3672
+ // Background color of menu toggle button on hover state.
3673
+ $bla-button-bg-hover: rgba(white, 0.25) !default;
3674
+
3675
+ // Font size for sidebar menu items.
3676
+ $bla-btn-font-size: 1em !default;
3677
+
3678
+ // Padding for action menu items.
3679
+ $bla-header-nav-padding: 0.75rem !default;
3680
+
3681
+ // Width of the sidebar.
3682
+ $bla-sidebar-width: 16.563rem !default;
3683
+
3684
+ // Background of sidebar.
3685
+ $sidebar-bg: $theme !default;
3686
+ $sidebar-bg-dark: $theme-dark !default;
3687
+
3688
+ // Background of sidebar when it's opened (on mobile devices).
3689
+ $sidebar-open-bg: darken($sidebar-bg, 30%) !default;
3690
+
3691
+ // Background of sidebar menu dropdown menus
3692
+ $sidebar-deep-bg: darken($sidebar-bg, 4%) !default;
3693
+
3694
+ // Text color of sidebar.
3695
+ $sidebar-color: color-contrast($sidebar-bg, $gray-900) !default;
3696
+ $sidebar-color-dark: color-contrast($sidebar-bg-dark, $gray-900) !default;
3697
+
3698
+ // Color of indicator for active sidebar item.
3699
+ $sidebar-indicator-color: $sidebar-color !default;
3700
+ $sidebar-indicator-color-dark: $sidebar-color-dark !default;
3701
+
3702
+ // Background of search control in sidebar.
3703
+ $sidebar-search-bg: $input-bg !default;
3704
+
3705
+ // Background of the body element
3706
+ $app-bg: $theme !default;
3707
+ $app-bg-dark: $theme-dark !default;
3708
+
3709
+ // Background color of Header
3710
+ $header-bg: $theme !default;
3711
+ $header-bg-dark: $theme-dark !default;
3712
+
3713
+ // Text color of header elements
3714
+ $header-color: color-contrast($header-bg, $gray-900) !default;
3715
+ $header-color-dark: color-contrast($header-bg-dark, $gray-900) !default;
3716
+
3717
+ // Background of header action menu dropdown menus
3718
+ $header-deep-bg: darken($header-bg, 4%) !default;
3719
+
3720
+ // Background color, when hovering action menu item.
3721
+ $actions-control-bg-hover: $bla-button-bg-hover !default;
3722
+
3723
+ // Width and height of the scrollbar indicators
3724
+ $scrollbar-size: 10px;
3725
+
3726
+ // Shrink sidebar on smaller screens
3727
+ $sidebar-shrink: true !default;
3728
+
3729
+ // Breakpoint for sidebar shrink
3730
+ $sidebar-shrink-breakpoint: 600px !default;
3731
+
3732
+ // Breakpoint for sidebar fully expanded
3733
+ $sidebar-expanded-breakpoint: 1400px !default;
3734
+
3735
+ :root {
3736
+ --blue-app-bg: #{$app-bg};
3737
+
3738
+ --blue-scrollbar-thumb-color-rgb: #{$scrollbar-thumb-color-rgb};
3739
+ --blue-scrollbar-size: #{$scrollbar-size};
3740
+
3741
+ --blue-sidebar-width: #{$bla-sidebar-width};
3742
+ --blue-sidebar-color: #{$sidebar-color};
3743
+ --blue-theme: var(--theme, #{$theme});
3744
+ --blue-shimmering: 0.9;
3745
+
3746
+ --blue-sidebar-bg: #{$sidebar-bg};
3747
+ --blue-header-bg: #{$header-bg};
3748
+
3749
+ --blue-header-color: #{$header-color};
3750
+ --blue-action-link-bg-color: var(--blue-theme);
3751
+ --blue-menu-item-indicator-bg: #{$sidebar-indicator-color};
3752
+ --blue-menu-item-height: #{$normal-size};
3753
+ }
3754
+
3755
+ @include color-mode(dark, true) {
3756
+ --blue-app-bg: #{$app-bg-dark};
3757
+
3758
+ --blue-sidebar-color: #{$sidebar-color-dark};
3759
+
3760
+ --blue-sidebar-bg: #{$sidebar-bg-dark};
3761
+ --blue-header-bg: #{$header-bg-dark};
3762
+
3763
+ --blue-header-color: #{$header-color-dark};
3764
+
3765
+ --blue-menu-item-indicator-bg: #{$sidebar-indicator-color-dark};
3766
+ }
3767
+
3768
+
3769
+ @mixin slide-transition() {
3770
+ $slide-transition: width 0.5s;
3771
+ transition: $slide-transition;
3772
+
3773
+ @media (prefers-reduced-motion) {
3774
+ transition: none;
3775
+ }
3776
+
3777
+ @media (prefers-reduced-motion) {
3778
+ transition: none;
3779
+ }
3780
+ }
3781
+
3782
+ @mixin header-bg() {
3783
+ background-image: linear-gradient(
3784
+ var(--blue-header-bg, $header-bg),
3785
+ rgba(var(--blue-header-bg-rgb, var(--bs-theme-rgb)), var(--blue-shimmering, $shimmering))
3786
+ );
3787
+ backdrop-filter: blur(3px) saturate(125%);
3788
+ }
3789
+
3790
+ @mixin blue-menu-item-indicator() {
3791
+ content: "";
3792
+ position: absolute;
3793
+ top: 0.625rem;
3794
+ bottom: 0.625rem;
3795
+ left: 0.125rem;
3796
+ right: initial;
3797
+ width: 0.25rem;
3798
+ height: auto;
3799
+ background-color: var(--blue-menu-item-indicator-bg);
3800
+ border-radius: 1rem;
3801
+ animation: blue-menu-item-indicator-in-from-side 0.2s ease-in-out;
3802
+
3803
+ @media (prefers-reduced-motion) {
3804
+ animation-duration: 0s;
3805
+ }
3806
+ }
3807
+
3808
+ @mixin blue-menu-item-indicator-horizontal() {
3809
+ top: initial;
3810
+ bottom: 0.125rem;
3811
+ left: 0.625rem;
3812
+ right: 0.625rem;
3813
+ width: auto;
3814
+ height: 0.25rem;
3815
+ animation: blue-menu-item-indicator-in-from-below 0.2s ease-in-out;
3816
+
3817
+ @media (prefers-reduced-motion) {
3818
+ animation-duration: 0s;
3819
+ }
3820
+ }
3821
+
3822
+ @mixin blue-menu-item-dropdown-for-shrunk-sidebar() {
3823
+ & > .blue-menu-item-wrapper {
3824
+ display: block;
3825
+ position: relative;
3826
+
3827
+ &:not(:has(.blue-menu-item-dropdown)) > .blue-menu-item:hover {
3828
+ .blue-menu-item-label {
3829
+ &::before,
3830
+ & {
3831
+ animation: tips-horz 150ms cubic-bezier(0.5, 0, 0.6, 1.3) 1ms forwards;
3832
+
3833
+ @media (prefers-reduced-motion) {
3834
+ animation-duration: 0s;
3835
+ }
3836
+ }
3837
+
3838
+ &::before {
3839
+ content: "";
3840
+ display: block;
3841
+ position: absolute;
3842
+ border: 5px solid transparent;
3843
+ z-index: 1001;
3844
+
3845
+ top: 50%;
3846
+ border-left-width: 0;
3847
+ border-right-color: var(--bs-tooltip-bg, #353539);
3848
+ left: calc(0em - 5px);
3849
+ transform: translate(0.5em, -50%);
3850
+ opacity: 0;
3851
+ }
3852
+
3853
+ display: block;
3854
+ text-transform: none;
3855
+ line-height: 1;
3856
+ font-size: 0.9em;
3857
+ -webkit-user-select: none;
3858
+ user-select: none;
3859
+ pointer-events: none;
3860
+ position: absolute;
3861
+ font-family: var(--bs-font-sans-serif);
3862
+ text-align: center;
3863
+ min-width: 3em;
3864
+ max-width: var(--bs-tooltip-max-width, 21em);
3865
+ padding: var(--bs-tooltip-padding-y, 1ch) var(--bs-tooltip-padding-x, 1.5ch);
3866
+ border-radius: var(--bs-tooltip-border-radius, 0.3em);
3867
+ box-shadow: 0 1em 2em -0.5em rgba(0, 0, 0, 0.35);
3868
+ background: var(--bs-tooltip-bg, #353539);
3869
+ color: var(--bs-tooltip-color, #fff);
3870
+ z-index: 1000;
3871
+ width: auto;
3872
+ top: 50%;
3873
+ left: calc(100% + 5px);
3874
+ transform: translate(-0.5em, -50%);
3875
+ overflow: visible;
3876
+ opacity: 0;
3877
+ }
3878
+ }
3879
+
3880
+ & > .blue-menu-item-dropdown,
3881
+ & > .blue-outside > .blue-menu-item-dropdown {
3882
+ @extend .ms-1;
3883
+ @extend .rounded;
3884
+ @extend .shadow;
3885
+ @extend .blue-menu-item-dropdown-from-start;
3886
+ @extend .blue-sidebar-state;
3887
+ @extend .open;
3888
+
3889
+ position: absolute;
3890
+ top: 0;
3891
+ width: $bla-sidebar-width;
3892
+ left: $normal-size;
3893
+ max-height: calc(100vh - (var(--offset-top, 0px) + 1rem));
3894
+ overflow-y: auto;
3895
+ overflow-x: hidden;
3896
+ background-color: var(--blue-sidebar-bg);
3897
+
3898
+ &::before {
3899
+ content: none;
3900
+ }
3901
+ }
3902
+
3903
+ &:has(.blue-menu-item-dropdown) {
3904
+ & > .blue-menu-item {
3905
+ @extend .highlighted;
3906
+ }
3907
+ }
3908
+ }
3909
+ }
3910
+
3911
+ @mixin show-action-menu-again() {
3912
+ max-height: initial;
3913
+ overflow: initial;
3914
+
3915
+ .blue-actions-menu {
3916
+ max-width: initial;
3917
+ }
3918
+ }
3919
+
3920
+ @mixin actions($breakpoint) {
3921
+ @media (max-width: #{$breakpoint + 1px}) {
3922
+ &.open {
3923
+ display: block;
3924
+ width: auto;
3925
+ position: absolute;
3926
+ z-index: 1;
3927
+ left: unset;
3928
+ top: 0.25rem;
3929
+ box-shadow: 0.6rem 6rem 6rem rgba(0, 0, 0, 0.3);
3930
+ animation: fadeInDown 0.5s;
3931
+
3932
+ @media (prefers-reduced-motion) {
3933
+ animation-duration: 0s;
3934
+ }
3935
+
3936
+ border-radius: $border-radius;
3937
+
3938
+ @include show-action-menu-again();
3939
+
3940
+ .blue-actions-menu-item:not(.blue-actions-menu-toggle) {
3941
+ display: flex;
3942
+ }
3943
+
3944
+ .blue-actions-menu {
3945
+ flex-direction: column;
3946
+ .blue-menu-item-dropdown {
3947
+ --blue-sidebar-bg: #{darken($theme, 34%)};
3948
+ }
3949
+ }
3950
+ }
3951
+
3952
+ .blue-actions-menu-item:not(.blue-actions-menu-toggle) {
3953
+ display: none;
3954
+ }
3955
+ }
3956
+
3957
+ @media (min-width: $breakpoint) {
3958
+ @include show-action-menu-again();
3959
+
3960
+ .blue-actions-menu .blue-actions-label {
3961
+ display: inline;
3962
+ }
3963
+
3964
+ .blue-actions-menu-toggle {
3965
+ display: none;
3966
+ }
3967
+
3968
+ .blue-actions-menu > .blue-menu-item-wrapper > .blue-menu-item-dropdown,
3969
+ .blue-actions-menu > .blue-menu-item-wrapper > * > .blue-menu-item-dropdown {
3970
+ position: absolute;
3971
+ right: 0;
3972
+ }
3973
+ }
3974
+ }
3975
+
3976
+ @mixin switch($width: 35px, $height: 20px, $padding: 3px, $color: $body-color, $color-active: $success) {
3977
+ $slider-size: $height - ($padding * 2);
3978
+
3979
+ & {
3980
+ position: relative;
3981
+ display: inline-block;
3982
+ width: $width;
3983
+ height: $height;
3984
+
3985
+ input {
3986
+ display: none;
3987
+ }
3988
+
3989
+ &.disabled {
3990
+ opacity: 0.8;
3991
+ }
3992
+
3993
+ &:not(.disabled) {
3994
+ .slider {
3995
+ cursor: pointer;
3996
+ }
3997
+ }
3998
+
3999
+ .slider {
4000
+ position: absolute;
4001
+ top: 0;
4002
+ left: 0;
4003
+ right: 0;
4004
+ bottom: 0;
4005
+ background-color: $input-group-addon-bg;
4006
+ transition: 0.4s;
4007
+
4008
+ @media (prefers-reduced-motion) {
4009
+ transition: none;
4010
+ }
4011
+
4012
+ box-shadow: inset 0 0 0 1px rgba($color, 0.5);
4013
+
4014
+ &::before {
4015
+ content: "";
4016
+ position: absolute;
4017
+ height: $slider-size;
4018
+ width: $slider-size;
4019
+ left: $padding;
4020
+ bottom: $padding;
4021
+ background-color: $color;
4022
+ transition: 0.4s;
4023
+
4024
+ @media (prefers-reduced-motion) {
4025
+ transition: none;
4026
+ }
4027
+ }
4028
+
4029
+ &::after {
4030
+ content: attr(data-label);
4031
+ position: absolute;
4032
+ top: 50%;
4033
+ left: 50%;
4034
+ transform: translate(-50%, -50%);
4035
+ margin-left: ($slider-size * 0.5);
4036
+ transition: margin-left 0.4s;
4037
+
4038
+ @media (prefers-reduced-motion) {
4039
+ transition: none;
4040
+ }
4041
+
4042
+ color: $color;
4043
+ }
4044
+ }
4045
+
4046
+ input:checked {
4047
+ & + .slider {
4048
+ background-color: $color-active;
4049
+ box-shadow: inset 0 0 12px rgba(255, 255, 255, 0.3);
4050
+
4051
+ &::before {
4052
+ transform: translateX($width - $slider-size - ($padding * 2));
4053
+ background-color: white;
4054
+ }
4055
+
4056
+ &::after {
4057
+ color: white;
4058
+ margin-left: ($slider-size * 0.5) * -1;
4059
+ }
4060
+ }
4061
+ }
4062
+ input:focus + .slider {
4063
+ box-shadow: 0 0 1px $color-active;
4064
+ }
4065
+ }
4066
+ }
4067
+
4068
+ @mixin customProperty($name, $value) {
4069
+ // fallback for older browser who do not support custom properties / css variables
4070
+ #{$name}: #{$value};
4071
+
4072
+ // create a css variable (this might override the variable on any of the ancestor elements)
4073
+ --#{$name}: #{$value};
4074
+
4075
+ // use the css variable on the property
4076
+ #{$name}: var(--#{$name}, #{$value});
4077
+ }
4078
+
4079
+ @mixin scroll-shadow($bg, $light-base: white) {
4080
+ background: linear-gradient($bg 30%, rgba($light-base, 0)),
4081
+ linear-gradient(rgba($light-base, 0) 10px, $bg 70%) bottom,
4082
+ radial-gradient(at top, rgba(0, 0, 0, 0.2), transparent 70%),
4083
+ radial-gradient(at bottom, rgba(0, 0, 0, 0.2), transparent 70%) bottom;
4084
+ background-repeat: no-repeat;
4085
+ background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
4086
+ background-attachment: local, local, scroll, scroll;
4087
+ }
4088
+
4089
+
4090
+ @keyframes fade-in {
4091
+ from {
4092
+ opacity: 0;
4093
+ }
4094
+ to {
4095
+ opacity: 1;
4096
+ }
4097
+ }
4098
+
4099
+ @keyframes blAppearUp {
4100
+ from {
4101
+ margin-top: 2.5rem;
4102
+ }
4103
+ to {
4104
+ margin-top: 0;
4105
+ }
4106
+ }
4107
+
4108
+ @keyframes blue-menu-item-dropdown {
4109
+ from {
4110
+ transform: translateY(-50%);
4111
+ opacity: 0;
4112
+ }
4113
+ }
4114
+
4115
+ @keyframes enabledBlueAppPage {
4116
+ from {
4117
+ transform: scale(0.98);
4118
+ opacity: 0;
4119
+ }
4120
+ to {
4121
+ opacity: 1;
4122
+ }
4123
+ }
4124
+
4125
+ @keyframes fadeInDown {
4126
+ from {
4127
+ opacity: 0;
4128
+ transform: translate3d(0, -100%, 0);
4129
+ }
4130
+
4131
+ to {
4132
+ opacity: 1;
4133
+ transform: none;
4134
+ }
4135
+ }
4136
+
4137
+ @keyframes alert-in {
4138
+ from {
4139
+ transform: scale(0, 0);
4140
+ opacity: 0.2;
4141
+ transition: 0s;
4142
+ }
4143
+ }
4144
+
4145
+ @keyframes circlebounce {
4146
+ 0%,
4147
+ 100% {
4148
+ transform: scale(0);
4149
+ }
4150
+ 50% {
4151
+ transform: scale(1);
4152
+ }
4153
+ }
4154
+
4155
+ @keyframes scrolling {
4156
+ from {
4157
+ transform: translateX(-100%);
4158
+ }
4159
+ to {
4160
+ transform: translateX(100%);
4161
+ }
4162
+ }
4163
+
4164
+
4165
+ @mixin bsBanner($file) {
4166
+ /*!
4167
+ * Bootstrap #{$file} v5.3.5 (https://getbootstrap.com/)
4168
+ * Copyright 2011-2025 The Bootstrap Authors
4169
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4170
+ */
4130
4171
  }
4131
-
4132
- // Vertical gradient, from top to bottom
4172
+
4173
+ @include bsBanner("");
4174
+
4175
+ // scss-docs-start import-stack
4176
+ // Configuration
4177
+
4178
+
4179
+
4180
+ // Re-assigned maps
4133
4181
  //
4134
- // Creates two color stops, start and end, by specifying a color and position for each color stop.
4135
- @mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
4136
- background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
4137
- }
4138
-
4139
- @mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
4140
- background-image: linear-gradient($deg, $start-color, $end-color);
4141
- }
4142
-
4143
- @mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
4144
- background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
4145
- }
4146
-
4147
- @mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
4148
- background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
4149
- }
4150
-
4151
- @mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
4152
- background-image: radial-gradient(circle, $inner-color, $outer-color);
4153
- }
4154
-
4155
- @mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
4156
- background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
4157
- }
4158
- // scss-docs-end gradient-mixins
4159
-
4160
- // stylelint-disable property-disallowed-list
4161
- @mixin transition($transition...) {
4162
- @if length($transition) == 0 {
4163
- $transition: $transition-base;
4164
- }
4165
-
4166
- @if length($transition) > 1 {
4167
- @each $value in $transition {
4168
- @if $value == null or $value == none {
4169
- @warn "The keyword 'none' or 'null' must be used as a single argument.";
4170
- }
4171
- }
4172
- }
4173
-
4174
- @if $enable-transitions {
4175
- @if nth($transition, 1) != null {
4176
- transition: $transition;
4177
- }
4178
-
4179
- @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {
4180
- @media (prefers-reduced-motion: reduce) {
4181
- transition: none;
4182
- }
4183
- }
4184
- }
4185
- }
4186
-
4187
-
4188
- // Layout
4189
- // scss-docs-start clearfix
4190
- @mixin clearfix() {
4191
- &::after {
4192
- display: block;
4193
- clear: both;
4194
- content: "";
4195
- }
4196
- }
4197
- // scss-docs-end clearfix
4198
-
4199
- // Container mixins
4200
-
4201
- @mixin make-container($gutter: $container-padding-x) {
4202
- --#{$prefix}gutter-x: #{$gutter};
4203
- --#{$prefix}gutter-y: 0;
4204
- width: 100%;
4205
- padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
4206
- padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
4207
- margin-right: auto;
4208
- margin-left: auto;
4209
- }
4182
+ // Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
4210
4183
 
4211
- // Grid system
4212
- //
4213
- // Generate semantic grid columns with these mixins.
4184
+ // scss-docs-start theme-colors-rgb
4185
+ $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
4186
+ // scss-docs-end theme-colors-rgb
4214
4187
 
4215
- @mixin make-row($gutter: $grid-gutter-width) {
4216
- --#{$prefix}gutter-x: #{$gutter};
4217
- --#{$prefix}gutter-y: 0;
4218
- display: flex;
4219
- flex-wrap: wrap;
4220
- // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed
4221
- margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list
4222
- margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
4223
- margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
4224
- }
4188
+ // scss-docs-start theme-text-map
4189
+ $theme-colors-text: (
4190
+ "primary": $primary-text-emphasis,
4191
+ "secondary": $secondary-text-emphasis,
4192
+ "success": $success-text-emphasis,
4193
+ "info": $info-text-emphasis,
4194
+ "warning": $warning-text-emphasis,
4195
+ "danger": $danger-text-emphasis,
4196
+ "light": $light-text-emphasis,
4197
+ "dark": $dark-text-emphasis,
4198
+ ) !default;
4199
+ // scss-docs-end theme-text-map
4225
4200
 
4226
- @mixin make-col-ready() {
4227
- // Add box sizing if only the grid is loaded
4228
- box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);
4229
- // Prevent columns from becoming too narrow when at smaller grid tiers by
4230
- // always setting `width: 100%;`. This works because we set the width
4231
- // later on to override this initial width.
4232
- flex-shrink: 0;
4233
- width: 100%;
4234
- max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid
4235
- padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
4236
- padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
4237
- margin-top: var(--#{$prefix}gutter-y);
4238
- }
4201
+ // scss-docs-start theme-bg-subtle-map
4202
+ $theme-colors-bg-subtle: (
4203
+ "primary": $primary-bg-subtle,
4204
+ "secondary": $secondary-bg-subtle,
4205
+ "success": $success-bg-subtle,
4206
+ "info": $info-bg-subtle,
4207
+ "warning": $warning-bg-subtle,
4208
+ "danger": $danger-bg-subtle,
4209
+ "light": $light-bg-subtle,
4210
+ "dark": $dark-bg-subtle,
4211
+ ) !default;
4212
+ // scss-docs-end theme-bg-subtle-map
4239
4213
 
4240
- @mixin make-col($size: false, $columns: $grid-columns) {
4241
- @if $size {
4242
- flex: 0 0 auto;
4243
- width: percentage(divide($size, $columns));
4214
+ // scss-docs-start theme-border-subtle-map
4215
+ $theme-colors-border-subtle: (
4216
+ "primary": $primary-border-subtle,
4217
+ "secondary": $secondary-border-subtle,
4218
+ "success": $success-border-subtle,
4219
+ "info": $info-border-subtle,
4220
+ "warning": $warning-border-subtle,
4221
+ "danger": $danger-border-subtle,
4222
+ "light": $light-border-subtle,
4223
+ "dark": $dark-border-subtle,
4224
+ ) !default;
4225
+ // scss-docs-end theme-border-subtle-map
4244
4226
 
4245
- } @else {
4246
- flex: 1 1 0;
4247
- max-width: 100%;
4248
- }
4249
- }
4227
+ $theme-colors-text-dark: null !default;
4228
+ $theme-colors-bg-subtle-dark: null !default;
4229
+ $theme-colors-border-subtle-dark: null !default;
4250
4230
 
4251
- @mixin make-col-auto() {
4252
- flex: 0 0 auto;
4253
- width: auto;
4254
- }
4231
+ @if $enable-dark-mode {
4232
+ // scss-docs-start theme-text-dark-map
4233
+ $theme-colors-text-dark: (
4234
+ "primary": $primary-text-emphasis-dark,
4235
+ "secondary": $secondary-text-emphasis-dark,
4236
+ "success": $success-text-emphasis-dark,
4237
+ "info": $info-text-emphasis-dark,
4238
+ "warning": $warning-text-emphasis-dark,
4239
+ "danger": $danger-text-emphasis-dark,
4240
+ "light": $light-text-emphasis-dark,
4241
+ "dark": $dark-text-emphasis-dark,
4242
+ ) !default;
4243
+ // scss-docs-end theme-text-dark-map
4255
4244
 
4256
- @mixin make-col-offset($size, $columns: $grid-columns) {
4257
- $num: divide($size, $columns);
4258
- margin-left: if($num == 0, 0, percentage($num));
4259
- }
4245
+ // scss-docs-start theme-bg-subtle-dark-map
4246
+ $theme-colors-bg-subtle-dark: (
4247
+ "primary": $primary-bg-subtle-dark,
4248
+ "secondary": $secondary-bg-subtle-dark,
4249
+ "success": $success-bg-subtle-dark,
4250
+ "info": $info-bg-subtle-dark,
4251
+ "warning": $warning-bg-subtle-dark,
4252
+ "danger": $danger-bg-subtle-dark,
4253
+ "light": $light-bg-subtle-dark,
4254
+ "dark": $dark-bg-subtle-dark,
4255
+ ) !default;
4256
+ // scss-docs-end theme-bg-subtle-dark-map
4260
4257
 
4261
- // Row columns
4262
- //
4263
- // Specify on a parent element(e.g., .row) to force immediate children into NN
4264
- // number of columns. Supports wrapping to new lines, but does not do a Masonry
4265
- // style grid.
4266
- @mixin row-cols($count) {
4267
- > * {
4268
- flex: 0 0 auto;
4269
- width: percentage(divide(1, $count));
4270
- }
4258
+ // scss-docs-start theme-border-subtle-dark-map
4259
+ $theme-colors-border-subtle-dark: (
4260
+ "primary": $primary-border-subtle-dark,
4261
+ "secondary": $secondary-border-subtle-dark,
4262
+ "success": $success-border-subtle-dark,
4263
+ "info": $info-border-subtle-dark,
4264
+ "warning": $warning-border-subtle-dark,
4265
+ "danger": $danger-border-subtle-dark,
4266
+ "light": $light-border-subtle-dark,
4267
+ "dark": $dark-border-subtle-dark,
4268
+ ) !default;
4269
+ // scss-docs-end theme-border-subtle-dark-map
4271
4270
  }
4272
4271
 
4273
- // Framework grid generation
4272
+ // Utilities maps
4274
4273
  //
4275
- // Used only by Bootstrap to generate the correct number of grid classes given
4276
- // any value of `$grid-columns`.
4277
-
4278
- @mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
4279
- @each $breakpoint in map-keys($breakpoints) {
4280
- $infix: breakpoint-infix($breakpoint, $breakpoints);
4281
-
4282
- @include media-breakpoint-up($breakpoint, $breakpoints) {
4283
- // Provide basic `.col-{bp}` classes for equal-width flexbox columns
4284
- .col#{$infix} {
4285
- flex: 1 0 0;
4286
- }
4287
-
4288
- .row-cols#{$infix}-auto > * {
4289
- @include make-col-auto();
4290
- }
4274
+ // Extends the default `$theme-colors` maps to help create our utilities.
4291
4275
 
4292
- @if $grid-row-columns > 0 {
4293
- @for $i from 1 through $grid-row-columns {
4294
- .row-cols#{$infix}-#{$i} {
4295
- @include row-cols($i);
4296
- }
4297
- }
4298
- }
4276
+ // Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
4277
+ // scss-docs-start utilities-colors
4278
+ $utilities-colors: $theme-colors-rgb !default;
4279
+ // scss-docs-end utilities-colors
4299
4280
 
4300
- .col#{$infix}-auto {
4301
- @include make-col-auto();
4302
- }
4281
+ // scss-docs-start utilities-text-colors
4282
+ $utilities-text: map-merge(
4283
+ $utilities-colors,
4284
+ (
4285
+ "black": to-rgb($black),
4286
+ "white": to-rgb($white),
4287
+ "body": to-rgb($body-color)
4288
+ )
4289
+ ) !default;
4290
+ $utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
4303
4291
 
4304
- @if $columns > 0 {
4305
- @for $i from 1 through $columns {
4306
- .col#{$infix}-#{$i} {
4307
- @include make-col($i, $columns);
4308
- }
4309
- }
4292
+ $utilities-text-emphasis-colors: (
4293
+ "primary-emphasis": var(--#{$prefix}primary-text-emphasis),
4294
+ "secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
4295
+ "success-emphasis": var(--#{$prefix}success-text-emphasis),
4296
+ "info-emphasis": var(--#{$prefix}info-text-emphasis),
4297
+ "warning-emphasis": var(--#{$prefix}warning-text-emphasis),
4298
+ "danger-emphasis": var(--#{$prefix}danger-text-emphasis),
4299
+ "light-emphasis": var(--#{$prefix}light-text-emphasis),
4300
+ "dark-emphasis": var(--#{$prefix}dark-text-emphasis)
4301
+ ) !default;
4302
+ // scss-docs-end utilities-text-colors
4310
4303
 
4311
- // `$columns - 1` because offsetting by the width of an entire row isn't possible
4312
- @for $i from 0 through ($columns - 1) {
4313
- @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
4314
- .offset#{$infix}-#{$i} {
4315
- @include make-col-offset($i, $columns);
4316
- }
4317
- }
4318
- }
4319
- }
4304
+ // scss-docs-start utilities-bg-colors
4305
+ $utilities-bg: map-merge(
4306
+ $utilities-colors,
4307
+ (
4308
+ "black": to-rgb($black),
4309
+ "white": to-rgb($white),
4310
+ "body": to-rgb($body-bg)
4311
+ )
4312
+ ) !default;
4313
+ $utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
4320
4314
 
4321
- // Gutters
4322
- //
4323
- // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.
4324
- @each $key, $value in $gutters {
4325
- .g#{$infix}-#{$key},
4326
- .gx#{$infix}-#{$key} {
4327
- --#{$prefix}gutter-x: #{$value};
4328
- }
4315
+ $utilities-bg-subtle: (
4316
+ "primary-subtle": var(--#{$prefix}primary-bg-subtle),
4317
+ "secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
4318
+ "success-subtle": var(--#{$prefix}success-bg-subtle),
4319
+ "info-subtle": var(--#{$prefix}info-bg-subtle),
4320
+ "warning-subtle": var(--#{$prefix}warning-bg-subtle),
4321
+ "danger-subtle": var(--#{$prefix}danger-bg-subtle),
4322
+ "light-subtle": var(--#{$prefix}light-bg-subtle),
4323
+ "dark-subtle": var(--#{$prefix}dark-bg-subtle)
4324
+ ) !default;
4325
+ // scss-docs-end utilities-bg-colors
4329
4326
 
4330
- .g#{$infix}-#{$key},
4331
- .gy#{$infix}-#{$key} {
4332
- --#{$prefix}gutter-y: #{$value};
4333
- }
4334
- }
4335
- }
4336
- }
4337
- }
4327
+ // scss-docs-start utilities-border-colors
4328
+ $utilities-border: map-merge(
4329
+ $utilities-colors,
4330
+ (
4331
+ "black": to-rgb($black),
4332
+ "white": to-rgb($white)
4333
+ )
4334
+ ) !default;
4335
+ $utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
4338
4336
 
4339
- @mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {
4340
- @each $breakpoint in map-keys($breakpoints) {
4341
- $infix: breakpoint-infix($breakpoint, $breakpoints);
4337
+ $utilities-border-subtle: (
4338
+ "primary-subtle": var(--#{$prefix}primary-border-subtle),
4339
+ "secondary-subtle": var(--#{$prefix}secondary-border-subtle),
4340
+ "success-subtle": var(--#{$prefix}success-border-subtle),
4341
+ "info-subtle": var(--#{$prefix}info-border-subtle),
4342
+ "warning-subtle": var(--#{$prefix}warning-border-subtle),
4343
+ "danger-subtle": var(--#{$prefix}danger-border-subtle),
4344
+ "light-subtle": var(--#{$prefix}light-border-subtle),
4345
+ "dark-subtle": var(--#{$prefix}dark-border-subtle)
4346
+ ) !default;
4347
+ // scss-docs-end utilities-border-colors
4342
4348
 
4343
- @include media-breakpoint-up($breakpoint, $breakpoints) {
4344
- @if $columns > 0 {
4345
- @for $i from 1 through $columns {
4346
- .g-col#{$infix}-#{$i} {
4347
- grid-column: auto / span $i;
4348
- }
4349
- }
4349
+ $utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
4350
4350
 
4351
- // Start with `1` because `0` is an invalid value.
4352
- // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
4353
- @for $i from 1 through ($columns - 1) {
4354
- .g-start#{$infix}-#{$i} {
4355
- grid-column-start: $i;
4356
- }
4357
- }
4358
- }
4359
- }
4360
- }
4361
- }
4351
+ $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
4362
4352
 
4353
+ $gutters: $spacers !default;
4354
+
4363
4355
 
4364
4356
  // Utilities
4365
4357
 
@@ -11089,7 +11081,12 @@ body {
11089
11081
  }
11090
11082
 
11091
11083
  .blue-menu-item {
11092
- transition: width 0.5s, background-color 0.3s, color 0.15s, box-shadow 0.3s, opacity 0.3s !important;
11084
+ transition:
11085
+ width 0.5s,
11086
+ background-color 0.3s,
11087
+ color 0.15s,
11088
+ box-shadow 0.3s,
11089
+ opacity 0.3s !important;
11093
11090
 
11094
11091
  @media (prefers-reduced-motion) {
11095
11092
  transition: none !important;
@@ -11155,65 +11152,6 @@ body {
11155
11152
  }
11156
11153
  }
11157
11154
 
11158
- .blue-sidebar .blue-menu-item-dropdown {
11159
- --blue-sidebar-bg: var(--blue-sidebar-depth-1-bg, #{$sidebar-deep-bg});
11160
-
11161
- &::before {
11162
- background-color: var(--blue-sidebar-bg);
11163
- box-shadow: 0 0.5rem 1rem $black;
11164
- opacity: 0.15;
11165
- border-color: currentColor;
11166
- }
11167
-
11168
- .blue-menu-item-dropdown {
11169
- --blue-sidebar-bg: var(--blue-sidebar-depth-2-bg, #{darken($sidebar-deep-bg, 4%)});
11170
-
11171
- .blue-menu-item-dropdown {
11172
- --blue-sidebar-bg: var(--blue-sidebar-depth-3-bg, #{darken($sidebar-deep-bg, 8%)});
11173
-
11174
- .blue-menu-item-dropdown {
11175
- --blue-sidebar-bg: var(--blue-sidebar-depth-4-bg, #{darken($sidebar-deep-bg, 12%)});
11176
-
11177
- .blue-menu-item-dropdown {
11178
- --blue-sidebar-bg: var(--blue-sidebar-depth-5-bg, #{darken($sidebar-deep-bg, 16%)});
11179
-
11180
- .blue-menu-item-dropdown {
11181
- --blue-sidebar-bg: var(--blue-sidebar-depth-6-bg, #{darken($sidebar-deep-bg, 20%)});
11182
- }
11183
- }
11184
- }
11185
- }
11186
- }
11187
- }
11188
-
11189
- .blue-header .blue-menu-item-dropdown {
11190
- --blue-sidebar-bg: #{$header-deep-bg};
11191
-
11192
- &::before {
11193
- background-color: var(--blue-header-bg);
11194
- }
11195
-
11196
- .blue-menu-item-dropdown {
11197
- --blue-sidebar-bg: #{darken($header-deep-bg, 4%)};
11198
-
11199
- .blue-menu-item-dropdown {
11200
- --blue-sidebar-bg: #{darken($header-deep-bg, 8%)};
11201
-
11202
- .blue-menu-item-dropdown {
11203
- --blue-sidebar-bg: #{darken($header-deep-bg, 12%)};
11204
-
11205
- .blue-menu-item-dropdown {
11206
- --blue-sidebar-bg: #{darken($header-deep-bg, 16%)};
11207
-
11208
- .blue-menu-item-dropdown {
11209
- --blue-sidebar-bg: #{darken($header-deep-bg, 20%)};
11210
- }
11211
- }
11212
- }
11213
- }
11214
- }
11215
- }
11216
-
11217
11155
  .blue-menu-item-dropdown-caret.blue-caret {
11218
11156
  display: none;
11219
11157
  position: absolute;
@@ -11711,13 +11649,6 @@ body {
11711
11649
  }
11712
11650
  }
11713
11651
 
11714
- .blue-btn-silent {
11715
- &:not(:hover):not(:focus):not(:active) {
11716
- border-color: transparent;
11717
- color: inherit;
11718
- }
11719
- }
11720
-
11721
11652
  @media (hover: hover) {
11722
11653
  .blue-d-hover {
11723
11654
  &:not(:hover):not(:focus):not(:active):not(.active):not(:focus-within) {
@@ -12260,10 +12191,6 @@ dialog.blue-modal:has(.offcanvas-start) {
12260
12191
  .blue-collapse {
12261
12192
  interpolate-size: allow-keywords;
12262
12193
 
12263
- &:has(summary:focus) {
12264
- overflow: hidden;
12265
- }
12266
-
12267
12194
  summary {
12268
12195
  list-style: none;
12269
12196
  }