/*******************************
*   Root variables extensions
********************************/
@use "sass:list";
@use "sass:meta";

@use "./variables" as vars;
@use "./helpers" as h;

$host-selector: if(vars.$enable-host, ":root, :host", ":root");

#{$host-selector} {
    // define color variables
    @each $name, $pair in vars.$colors {
        @include h.defineVar($name, list.nth($pair, 1));
        @include h.defineVar("#{$name}-invert", list.nth($pair, 2));
        @include h.defineVar(
            "#{$name}-focus",
            h.createFocus(list.nth($pair, 1))
        );
        @include h.defineVar(
            "#{$name}-lighter",
            h.createLighter(list.nth($pair, 1))
        );
        @include h.defineVar(
            "#{$name}-darker",
            h.createDarker(list.nth($pair, 1))
        );
    }

    // define focus box-shadow color variable
    @include h.defineVar("focus", h.createFocus(vars.$grey));

    // define additional colors
    @include h.defineVar("white", vars.$white);
    @include h.defineVar("black", vars.$black);
    @include h.defineVar("grey", vars.$grey);
    @include h.defineVar("grey-light", vars.$grey-light);
    @include h.defineVar("grey-lighter", vars.$grey-lighter);
    @include h.defineVar("grey-lightest", vars.$grey-lightest);
    @include h.defineVar("grey-dark", vars.$grey-dark);
    @include h.defineVar("grey-darker", vars.$grey-darker);
    @include h.defineVar("grey-darkest", vars.$grey-darkest);

    // define size variables
    @each $name, $size in vars.$sizes {
        @include h.defineVar("size-#{$name}", $size);
    }

    // define base variables
    @include h.defineVar("font-family", vars.$font-family);
    @include h.defineVar("font-size", vars.$font-size);
    @include h.defineVar("font-color", vars.$font-color);
    @include h.defineVar("font-weight", vars.$font-weight);
    @include h.defineVar("line-height", vars.$line-height);

    @include h.defineVar("border-radius", vars.$border-radius);
    @include h.defineVar("border-radius-rounded", vars.$border-radius-rounded);

    // define control variables
    @include h.defineVar("control-spacer", vars.$control-spacer);
    @include h.defineVar("control-height", vars.$control-height);
    @include h.defineVar(
        "control-padding-vertical",
        vars.$control-padding-vertical
    );
    @include h.defineVar(
        "control-padding-horizontal",
        vars.$control-padding-horizontal
    );
    @include h.defineVar("control-shadow-color", vars.$control-shadow-color);
    @include h.defineVar("control-box-shadow", vars.$control-box-shadow);
    @include h.defineVar(
        "control-box-shadow-inset",
        vars.$control-box-shadow-inset
    );
    @include h.defineVar(
        "control-focus-box-shadow",
        vars.$control-focus-box-shadow
    );
    @include h.defineVar(
        "control-background-color",
        vars.$control-background-color
    );
    @include h.defineVar("control-border-color", vars.$control-border-color);
    @include h.defineVar("control-border-width", vars.$control-border-width);
    @include h.defineVar(
        "control-disabled-opacity",
        vars.$control-disabled-opacity
    );

    @include h.defineVar(
        "overlay-background-color",
        vars.$overlay-background-color
    );
    @include h.defineVar("overlay-box-shadow", vars.$overlay-box-shadow);

    // define animation variables
    @include h.defineVar("animation-speed-slow", vars.$animation-speed-slow);
    @include h.defineVar("animation-speed", vars.$animation-speed);
    @include h.defineVar("animation-speed-fast", vars.$animation-speed-fast);
    @include h.defineVar("transition-duration", vars.$animation-speed-fast);
    @include h.defineVar("transition-timing", vars.$animation-timing);
}
