@use 'sass:color';

// --- BootstrapVue custom SCSS variables ---
//
// Users can override these variables in their custom SCSS
//
// Variables beginning with `$bv-` are used to enable/disable specific section CSS generation
// Variables beginning with `$b-` are used to control values within the CSS generation

// --- Custom inputs (adds sizing support) ---

// Indicator height (and sometimes width)
$b-custom-control-indicator-size-lg: $custom-control-indicator-size * 1.25 !default;
$b-custom-control-indicator-size-sm: $custom-control-indicator-size * 0.875 !default;

// Indicator background
$b-custom-control-indicator-bg-size-lg: $custom-control-indicator-bg-size !default;
$b-custom-control-indicator-bg-size-sm: $custom-control-indicator-bg-size !default;

// Gutter widths
$b-custom-control-gutter-lg: $custom-control-gutter * 1.25 !default;
$b-custom-control-gutter-sm: $custom-control-gutter * 0.875 !default;

// Custom radio sizes (uses defaults of 50%, since radios are round)
$b-custom-radio-indicator-border-radius-lg: $custom-radio-indicator-border-radius !default;
$b-custom-radio-indicator-border-radius-sm: $custom-radio-indicator-border-radius !default;

// Custom checkbox sizes
$b-custom-checkbox-indicator-border-radius-lg: $border-radius-lg !default;
$b-custom-checkbox-indicator-border-radius-sm: $border-radius-sm !default;

// Custom switch sizes
$b-custom-switch-width-lg: $b-custom-control-indicator-size-lg * 1.75 !default;
$b-custom-switch-width-sm: $b-custom-control-indicator-size-sm * 1.75 !default;
$b-custom-switch-indicator-border-radius-lg: $b-custom-control-indicator-size-lg * 0.5 !default;
$b-custom-switch-indicator-border-radius-sm: $b-custom-control-indicator-size-sm * 0.5 !default;
$b-custom-switch-indicator-size-lg: calc(
  #{$b-custom-control-indicator-size-lg} - #{$custom-control-indicator-border-width * 4}
) !default;
$b-custom-switch-indicator-size-sm: calc(
  #{$b-custom-control-indicator-size-sm} - #{$custom-control-indicator-border-width * 4}
) !default;

// --- Tables ---

// Table busy state
$b-table-busy-opacity: 1 !default;

// Table sorting
$b-table-sort-icon-bg-width: 0.65em !default;
$b-table-sort-icon-bg-height: 1em !default;
// Sort icons are square, but "squished" horizontally by the above variables
$b-table-sort-icon-bg-not-sorted: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'><path fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/></svg>") !default;
$b-table-sort-icon-bg-ascending: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'><path fill='black' d='M51 1l25 23 24 22H1l25-22z'/><path fill='black' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/></svg>") !default;
$b-table-sort-icon-bg-descending: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'><path fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/><path fill='black' d='M51 101l25-23 24-22H1l25 22z'/></svg>") !default;
// Icons to use on dark table or dark header/footer (lighter color icons)
// We simply just replace the fill color 'black' white 'white'
$b-table-sort-icon-bg-dark-not-sorted: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'><path fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/></svg>") !default;
$b-table-sort-icon-bg-dark-ascending: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'><path fill='white' d='M51 1l25 23 24 22H1l25-22z'/><path fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/></svg>") !default;
$b-table-sort-icon-bg-dark-descending: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'><path fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/><path fill='white' d='M51 101l25-23 24-22H1l25 22z'/></svg>") !default;

// Flag to enable sticky table header and column CSS generation
$bv-enable-table-sticky: true !default;
// Default max-height for tables with sticky headers
$b-table-sticky-header-max-height: 300px !default;

// Flag to enable table stacked CSS generation
$bv-enable-table-stacked: true !default;
// Table stacked defaults
$b-table-stacked-heading-width: 40% !default;
$b-table-stacked-gap: 1rem !default;

// Bootstrap v4.3 is missing the "active" variant for dark tables
// Which translates to `bg-active`, but only for tables
$table-dark-active-bg: $table-dark-hover-bg !default;

// --- Toasts ---

// Toaster defaults
$b-toaster-zindex: 1100 !default;
$b-toaster-offset-top: 0.5rem !default;
$b-toaster-offset-bottom: $b-toaster-offset-top !default;
$b-toaster-offset-left: $b-toaster-offset-top !default;
$b-toaster-offset-right: $b-toaster-offset-top !default;

// Default toast opacity
// Value from 0 to 1, or 0% to 100%
// Bootstrap default is 0.85 (extracted from the `$toast-background-color` value)
// Bootstrap does not have this as a variable, so we add it in.
$b-toast-background-opacity: color.alpha($toast-background-color) !default;

// Toast variant levels wrt theme color value
$b-toast-bg-level: $alert-bg-level !default;
$b-toast-border-level: $alert-border-level !default;
$b-toast-color-level: $alert-color-level !default;

// --- Tooltips ---

// Flag to enable tooltip variant CSS generation
$bv-enable-tooltip-variants: true !default;

// Tooltip background variant level wrt theme color value
$b-tooltip-bg-level: 0 !default;

// --- Popovers ---

// Flag to enable popover variant CSS generation
$bv-enable-popover-variants: true !default;

// Popover variant levels wrt theme color value
$b-popover-bg-level: $alert-bg-level !default;
$b-popover-border-level: $alert-border-level !default;
$b-popover-color-level: $alert-color-level !default;
