@use '../../../../utils/map' as *;
@use '../../../../typography/functions' as *;

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

/// Generates a light banner schema.
/// @type {Map}
/// @prop {Map} banner-background [color: 'surface'] - The color used for the banner background.
/// @prop {Map} banner-message-color [contrast-color: 'surface'] - The color used for the banner label.
/// @prop {Map} typography [message: (value: 'body-2')] - The typography styles used for the component.
/// @prop {Number} border-radius [0] - The border radius of the banner
$light-banner: (
    banner-background: (
        color: 'surface',
    ),

    border-radius: 0,

    typography: (
        message: (
            value: 'body-2',
        ),
    ),
);

/// Generates a material banner schema.
/// @type {Map}
/// @prop {Map} banner-message-color [color: ('gray', 900)] - The color used for the banner label.
/// @prop {Map} banner-illustration-color [color: ('gray', 900)] - The color used for the banner illustration.
/// @prop {Map} banner-border-color [color: ('gray', 300)] - The color used for the banner border.
/// @requires {Map} $light-banner
$material-banner: extend(
    $light-banner,
    (
        banner-border-color: (
            color: (
                'gray',
                300,
            ),
        ),

        banner-message-color: (
            color: (
                'gray',
                900,
            ),
        ),

        banner-illustration-color: (
            color: (
                'gray',
                900,
            ),
        ),

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

/// Generates a fluent banner schema.
/// @type {Map}
/// @prop {Map} banner-message-color [color: ('gray', 900)] - The color used for the banner label.
/// @prop {Map} banner-illustration-color [color: ('gray', 900)] - The color used for the banner illustration.
/// @prop {Map} banner-border-color [color: ('gray', 300)] - The color used for the banner border.
/// @prop {Map} typography [message: (value: 'caption')] - The typography styles used for the component.
/// @requires {Map} $light-banner
$fluent-banner: extend(
    $light-banner,
    (
        banner-border-color: (
            color: (
                'gray',
                300,
            ),
        ),

        banner-message-color: (
            color: (
                'gray',
                900,
            ),
        ),

        banner-illustration-color: (
            color: (
                'gray',
                900,
            ),
        ),

        typography: (
            message: (
                value: 'caption',
            ),
        ),

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

/// Generates a bootstrap banner schema.
/// @type {Map}
/// @prop {Map} banner-message-color [color: ('gray', 800)] - The color used for the banner label.
/// @prop {Map} banner-border-color [color: ('gray', 300)] - The color used for the banner border.
/// @prop {Map} banner-illustration-color [color: ('gray', 800)] - The color used for the banner illustration.
/// @requires {Map} $light-banner
$bootstrap-banner: extend(
    $light-banner,
    (
        banner-border-color: (
            color: (
                'gray',
                300,
            ),
        ),

        banner-message-color: (
            color: (
                'gray',
                800,
            ),
        ),

        banner-illustration-color: (
            color: (
                'gray',
                800,
            ),
        ),

        _meta: (
            theme: 'bootstrap',
            variant: 'light',
        ),
    )
);

/// Generates an indigo banner schema.
/// @type {Map}
/// @prop {Map} banner-background [color: ('gray', 200)] - The color used for the banner background.
/// @prop {Map} banner-message-color [color: ('gray', 700)] - The color used for the banner label.
/// @prop {Map} banner-border-color [color: ('gray', 300)] - The color used for the banner border.
/// @prop {Map} banner-illustration-color [color: ('gray', 600)] - The color used for the banner illustration.
/// @prop {Number} border-radius [rem(6px)] - The border radius of the banner
$indigo-banner: (
    banner-background: (
        color: (
            'gray',
            200,
        ),
    ),

    banner-border-color: (
        color: (
            'gray',
            300,
        ),
    ),

    banner-message-color: (
        color: (
            'gray',
            700,
        ),
    ),

    banner-illustration-color: (
        color: (
            'gray',
            600,
        ),
    ),

    border-radius: rem(6px),
    _meta: (
        theme: 'indigo',
        variant: 'light',
    ),
);
