// Hacky way to detect if its the backend or not
$-is-backend: variable-exists('primary');

// Use auto threshold for yiq colors
$yiq-contrasted-threshold: false;

// Automatically update bootstrap colors map (unused by BS itself)
$-palette: nth($o-color-palettes, $o-color-palette-number);
$colors: () !default;
$colors: map-merge($-palette, $colors);

// Automatically extend bootstrap to create theme background/text/button classes
$-palette: nth($o-theme-color-palettes, $o-theme-color-palette-number);
$-main-color: map-get($-palette, 'alpha');
$-main-color-lightness: lightness($-main-color);
$-palette: map-merge((
    // alpha and beta colors are used to override primary and secondary BS4
    // colors by default, so that theme colors affect the default Odoo layouts
    'primary': $-main-color,
    'secondary': map-get($-palette, 'beta'),

    // BS light and dark colors are not used for any BS component, just
    // for color utilities. By default, we set them to a very light and
    // very dark version of a desaturate version of the main color
    'light': lighten(desaturate($-main-color, 80%), min(70%, max(0%, 97% - $-main-color-lightness))), // Does not increase over 97% lightness
    'dark': darken(desaturate($-main-color, 80%), min(70%, max(0%, $-main-color-lightness - 10%))), // Does not lower under 10% lightness
), o-map-omit($-palette));
@if $-is-backend {
    $-palette: map-remove($-palette, 'primary', 'secondary', 'success', 'info', 'warning', 'danger', 'light', 'dark');
}
$theme-colors: () !default;
$theme-colors: map-merge($-palette, $theme-colors);

// Extend grays with transparent ones (for some reason, BS4 create black-50 and
// white-50 but does not allow overridding that with variables), also use the
// theme gray palette (which is supposed to at least declare white and black).
$-palette: nth($o-gray-color-palettes, $o-gray-color-palette-number);
$-palette: map-merge($o-transparent-grays, $-palette);
@if $-is-backend {
    $-palette: map-remove($-palette, '100', '200', '300', '400', '500', '600', '700', '800', '900');
}
$grays: () !default;
$grays: map-merge($-palette, $grays);

// Bootstrap use standard variables to define individual colors which are then
// placed into a map which is then used to get the value of each individual
// color. As BS4 allows to extend the map a priori to define our own colors,
// it does not take care of making the standard variables match the values in
// the user's map. The problem is that, at least for grays, bootstrap uses the
// standard variables in its _variables.scss file, so if:
//
// User file:
// $grays: (
//     '100': blue,
// );
//
// BS4:
// $gray-100: gray !default;
// $grays: () !default;
// $grays: map-merge((
//     '100': $gray-100,
// ), $grays);
//
// -> Here gray('100') is blue but $gray-100 is still gray... so BS4 is not
// correctly generated as BS4 uses $gray-100 in _variables.scss
$primary: theme-color('primary') !default;
$secondary: theme-color('secondary') !default;
$success: theme-color('success') !default;
$info: theme-color('info') !default;
$warning: theme-color('warning') !default;
$danger: theme-color('danger') !default;
$light: theme-color('light') !default;
$dark: theme-color('dark') !default;

$white: gray('white') !default;
$gray-100: gray('100') !default;
$gray-200: gray('200') !default;
$gray-300: gray('300') !default;
$gray-400: gray('400') !default;
$gray-500: gray('500') !default;
$gray-600: gray('600') !default;
$gray-700: gray('700') !default;
$gray-800: gray('800') !default;
$gray-900: gray('900') !default;
$black: gray('black') !default;
