@use '../../../../utils/map' as *;
@use '../light/carousel' as *;

////
/// @package theming
/// @group schemas
/// @access public
////

/// Generates the base dark carousel schema.
/// @type {Map}
/// @prop {Map} indicator-focus-color [color: ('secondary', 200)] - The indicators border and dot color on focus.
/// @prop {Map} button-focus-border-color [color: ('secondary', 200)] - The navigation buttons border color on focus.
/// @requires $light-carousel
$base-dark-carousel: extend(
    $light-carousel,
    (
        indicator-focus-color: (
            color: (
                'secondary',
                200,
            ),
        ),

        button-focus-border-color: (
            color: (
                'secondary',
                200,
            ),
        ),
    )
);

/// Generates a dark material carousel schema based on a mix of $material-carousel and $base-dark-carousel
/// @type {Map}
/// @prop {Map} button-focus-arrow-color [color: ('secondary', 200)] - The previous/next buttons focus arrow color.
/// @requires $material-carousel
/// @requires $base-dark-carousel
$dark-material-carousel: extend(
    $material-carousel,
    $base-dark-carousel,
    (
        button-focus-arrow-color: (
            color: (
                'secondary',
                200,
            ),
        ),

        _meta: (
            theme: 'material',
            variant: 'dark',
        ),
    )
);

/// Generates a dark fluent carousel schema based on a mix of $fluent-carousel and $base-dark-carousel
/// @type {Map}
/// @prop {Map} button-focus-arrow-color [color: ('primary', 200)] - The previous/next buttons focus arrow color.
/// @prop {Map} button-disabled-background [color: ('gray', 50)] - The previous/next buttons disabled background color.
/// @prop {Map} button-disabled-arrow-color [color: ('gray' 200)] - The previous/next buttons disabled color.
/// @prop {Map} indicator-focus-color [color: ('primary', 200)] - The buttons/indicators border color on focus.
/// @prop {Map} button-focus-border-color [color: ('gray', 400)] - The navigation buttons border color on focus.
/// @requires $fluent-carousel
$dark-fluent-carousel: extend(
    $fluent-carousel,
    (
        button-focus-arrow-color: (
            color: (
                'primary',
                200,
            ),
        ),

        button-disabled-background: (
            color: (
                'gray',
                50,
            ),
        ),

        button-disabled-arrow-color: (
            color: (
                'gray',
                200,
            ),
        ),

        indicator-focus-color: (
            color: (
                'primary',
                200,
            ),
        ),

        button-focus-border-color: (
            color: (
                'gray',
                400,
            ),
        ),

        _meta: (
            theme: 'fluent',
            variant: 'dark',
        ),
    )
);

/// Generates a dark bootstrap carousel schema based on a mix of $bootstrap-carousel and $base-dark-carousel
/// @type {Map}
/// @prop {Map} indicator-focus-color [color: ('primary', 200)] - The buttons/indicators border color on focus.
/// @requires $bootstrap-carousel
$dark-bootstrap-carousel: extend(
    $bootstrap-carousel,
    (
        indicator-focus-color: (
            color: (
                'primary',
                200,
            ),
        ),
        _meta: (
            theme: 'bootstrap',
            variant: 'dark',
        ),
    )
);

/// Generates a dark indigo carousel schema based on a mix of $indigo-carousel and $base-dark-carousel
/// @type {Map}
/// @prop {Map} button-hover-background [color: ('gray', 100)] - The previous/next buttons hover background color.
/// @prop {Map} button-arrow-color [contrast-color: ('gray', 50, .8)] - The previous/next buttons idle arrow color.
/// @prop {Map} button-hover-arrow-color [color: ('gray', 50)] - The previous/next buttons hover arrow color.
/// @prop {Map} button-focus-arrow-color [contrast-color: ('gray', 50, .8)] - The previous/next buttons focus arrow color.
/// @prop {Map} button-border-color [color: ('gray', 200)] - The previous/next buttons idle border color.
/// @prop {Map} button-hover-border-color [color: ('gray', 300)] - The previous/next buttons hover border color.
/// @prop {Map} button-disabled-border-color [contrast-color: ('gray', 50, .15)] - The previous/next buttons disabled border color.
/// @prop {Map} button-disabled-arrow-color [contrast-color: ('gray' 50, .2)] - The previous/next buttons disabled color.
/// @prop {Map} indicator-dot-color [color: ('gray', 400)] - The idle indicator dot color.
/// @prop {Map} indicator-hover-dot-color [color: ('gray', 500)] - The hover indicator dot color.
/// @requires $indigo-carousel
$dark-indigo-carousel: extend(
    $indigo-carousel,
    (
        button-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),

        button-arrow-color: (
            contrast-color: (
                'gray',
                50,
                0.8,
            ),
        ),

        button-hover-arrow-color: (
            contrast-color: (
                'gray',
                50,
            ),
        ),

        button-focus-arrow-color: (
            contrast-color: (
                'gray',
                50,
                0.8,
            ),
        ),

        button-disabled-arrow-color: (
            contrast-color: (
                'gray',
                50,
                0.2,
            ),
        ),

        button-border-color: (
            color: (
                'gray',
                200,
            ),
        ),

        button-hover-border-color: (
            color: (
                'gray',
                300,
            ),
        ),

        button-disabled-border-color: (
            contrast-color: (
                'gray',
                50,
                0.15,
            ),
        ),

        indicator-dot-color: (
            color: (
                'gray',
                400,
            ),
        ),

        indicator-hover-dot-color: (
            color: (
                'gray',
                500,
            ),
        ),

        _meta: (
            theme: 'indigo',
            variant: 'dark',
        ),
    )
);
