// Utilities // Extend / update default Bootstrap's utility classes @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; @import "bootstrap/scss/variables-dark"; @import "bootstrap/scss/maps"; @import "bootstrap/scss/mixins"; @import "bootstrap/scss/utilities"; /* stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines */ $utilities: map-merge( $utilities, ( // Remove utilities "link-offset": null, "link-underline": null, "link-underline-opacity": null, // Border radius "rounded": ( property: border-radius, class: rounded, values: ( null: var(--#{$prefix}border-radius), 0: 0, 1: var(--#{$prefix}border-radius-xs), 2: var(--#{$prefix}border-radius-sm), 3: var(--#{$prefix}border-radius), 4: var(--#{$prefix}border-radius-lg), 5: var(--#{$prefix}border-radius-xl), 6: var(--#{$prefix}border-radius-xxl), 7: var(--#{$prefix}border-radius-xxxl), circle: 50%, pill: var(--#{$prefix}border-radius-pill) ) ), "rounded-top": ( property: border-top-left-radius border-top-right-radius, class: rounded-top, values: ( null: var(--#{$prefix}border-radius), 0: 0, 1: var(--#{$prefix}border-radius-xs), 2: var(--#{$prefix}border-radius-sm), 3: var(--#{$prefix}border-radius), 4: var(--#{$prefix}border-radius-lg), 5: var(--#{$prefix}border-radius-xl), 6: var(--#{$prefix}border-radius-xxl), 7: var(--#{$prefix}border-radius-xxxl), circle: 50%, pill: var(--#{$prefix}border-radius-pill) ) ), "rounded-end": ( property: border-top-right-radius border-bottom-right-radius, class: rounded-end, values: ( null: var(--#{$prefix}border-radius), 0: 0, 1: var(--#{$prefix}border-radius-xs), 2: var(--#{$prefix}border-radius-sm), 3: var(--#{$prefix}border-radius), 4: var(--#{$prefix}border-radius-lg), 5: var(--#{$prefix}border-radius-xl), 6: var(--#{$prefix}border-radius-xxl), 7: var(--#{$prefix}border-radius-xxxl), circle: 50%, pill: var(--#{$prefix}border-radius-pill) ) ), "rounded-bottom": ( property: border-bottom-right-radius border-bottom-left-radius, class: rounded-bottom, values: ( null: var(--#{$prefix}border-radius), 0: 0, 1: var(--#{$prefix}border-radius-xs), 2: var(--#{$prefix}border-radius-sm), 3: var(--#{$prefix}border-radius), 4: var(--#{$prefix}border-radius-lg), 5: var(--#{$prefix}border-radius-xl), 6: var(--#{$prefix}border-radius-xxl), 7: var(--#{$prefix}border-radius-xxxl), circle: 50%, pill: var(--#{$prefix}border-radius-pill) ) ), "rounded-start": ( property: border-bottom-left-radius border-top-left-radius, class: rounded-start, values: ( null: var(--#{$prefix}border-radius), 0: 0, 1: var(--#{$prefix}border-radius-xs), 2: var(--#{$prefix}border-radius-sm), 3: var(--#{$prefix}border-radius), 4: var(--#{$prefix}border-radius-lg), 5: var(--#{$prefix}border-radius-xl), 6: var(--#{$prefix}border-radius-xxl), 7: var(--#{$prefix}border-radius-xxxl), circle: 50%, pill: var(--#{$prefix}border-radius-pill) ) ), // Min width "min-width": ( property: min-width, class: min-w, values: ( 0: 0, 100: 100 ) ), // Line height "line-height": ( property: line-height, class: lh, values: ( 0: 0, 1: 1, sm: $line-height-sm, base: $line-height-base, lg: $line-height-lg, ) ), // Opacity "opacity": ( property: opacity, values: ( 0: 0, 25: .25, 40: .4, 50: .5, 60: .6, 75: .75, 100: 1, ) ), // z-index "z-index": ( property: z-index, class: z, values: map-merge( $zindex-levels, ( sticky: $zindex-sticky, fixed: $zindex-fixed ) ) ), // cursor "cursor": ( property: cursor, class: cursor, values: ( pointer: pointer, default: default, help: help, wait: wait, crosshair: crosshair, not-allowed: not-allowed, zoom-in: zoom-in, zoom-out: zoom-out, grab: grab ) ) ) ); // Disable :focus / :focus-visible .focus-none { &:focus, &:focus-visible { outline: none !important; box-shadow: none !important; } } // Fix Safari quirk of rounded corners [class^="rounded"].overflow-hidden, [class*=" rounded"].overflow-hidden { transform: translateZ(0); } // Dotted background .bg-dotted { --#{$prefix}bg-color: var(--#{$prefix}tertiary-bg); --#{$prefix}dot-color: var(--#{$prefix}secondary); --#{$prefix}dot-size: 1px; --#{$prefix}dot-space: 20px; background: linear-gradient(90deg, var(--#{$prefix}bg-color) calc(var(--#{$prefix}dot-space) - var(--#{$prefix}dot-size)), transparent 1%) center, linear-gradient(var(--#{$prefix}bg-color) calc(var(--#{$prefix}dot-space) - var(--#{$prefix}dot-size)), transparent 1%) center, var(--#{$prefix}dot-color); background-size: var(--#{$prefix}dot-space) var(--#{$prefix}dot-space); } // Border styles .border-dashed { --#{$prefix}border-style: dashed; } .border-dotted { --#{$prefix}border-style: dotted; } // Disable transition on element .transition-none { transition: none !important; } // Disable transform on element .transform-none { transform: none !important; } // Disable background image on element .bg-image-none { background-image: none !important; } // Flip objects horizontally when the direction is set to RTL [dir="rtl"] .rtl-flip { transform: rotateY(180deg); } // Display element only when the direction is set to RTL [dir="rtl"] .d-none-rtl { display: none !important; } [dir="rtl"] .d-block-rtl { display: block !important; } [dir="rtl"] .d-inline-rtl { display: inline !important; } [dir="rtl"] .d-inline-block-rtl { display: inline-block !important; } [dir="rtl"] .d-flex-rtl { display: flex !important; } [dir="rtl"] .d-inline-flex-rtl { display: inline-flex !important; } // To make IntersectionObserver work with ".sticky-top" class correctly [data-sticky-element] { top: -1px !important; } // Dark mode @if $enable-dark-mode { @include color-mode(dark) { // Display utilities .d-none-dark { display: none !important; } .d-block-dark { display: block !important; } .d-inline-dark { display: inline !important; } .d-inline-block-dark { display: inline-block !important; } .d-inline-flex-dark { display: inline-flex !important; } .d-flex-dark { display: flex !important; } // Shadows .shadow:not([data-bs-theme="light"]) { box-shadow: $box-shadow-dark !important; } .shadow-sm:not([data-bs-theme="light"]) { box-shadow: $box-shadow-sm-dark !important; } .shadow-lg:not([data-bs-theme="light"]) { box-shadow: $box-shadow-lg-dark !important; } } } /* stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines */