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

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

/// Generates a base light navbar schema.
/// @type Map
/// @prop {Map} background [color: ('primary', 400)] - The navbar background color.
/// @prop {Color} border-color [transparent] - The navbar border color.
/// @prop {Map} text-color [contrast-color: ('primary', 400)] - The navbar text color.
/// @prop {Map} idle-icon-color [color: ('gray', 900)] - The navbar idle icon color.
/// @prop {Map} hover-icon-color [color: ('gray', 900)] - The navbar hover icon color.
/// @prop {Map} typography [title: (value: 'h5')] - The typography styles used for the component.
/// @prop {Number} elevation [4] - The elevation level, between 0-24, to be used for the navbar.
/// @requires $default-elevation-navbar
$light-navbar: extend(
    $default-elevation-navbar,
    (
        background: (
            color: (
                'primary',
                400,
            ),
        ),
        text-color: (
            contrast-color: (
                'primary',
                400,
            ),
        ),
        idle-icon-color: (
            color: (
                'gray',
                900,
            ),
        ),
        hover-icon-color: (
            color: (
                'gray',
                900,
            ),
        ),
        border-color: transparent,
        typography: (
            title: (
                value: 'h5',
            ),
        ),
        _meta: (
            name: 'navbar',
            variant: 'light',
        ),
    )
);

/// Generates a material navbar schema.
/// @type Map
/// @prop {Map} typography [title: (value: 'h6')] - The typography styles used for the component.
/// @requires $light-navbar
$material-navbar: extend(
    $light-navbar,
    (
        typography: (
            title: (
                value: 'h6',
            ),
        ),
        _meta: (
            theme: 'material',
        ),
    )
);

/// Generates a fluent navbar schema.
/// @type Map
/// @prop {Map} background [color: 'surface'] - The navbar background color.
/// @prop {Map} text-color [color: ('gray', 900)] - The navbar text color.
/// @prop {Map} idle-icon-color [color: ('primary', 500)] - The navbar idle icon color.
/// @prop {Map} hover-icon-color [color: ('primary', 500)] - The navbar hover icon color.
/// @prop {Map} typography [title: (value: 'subtitle-2')] - The typography styles used for the component.
/// @requires $light-navbar
$fluent-navbar: extend(
    $light-navbar,
    (
        background: (
            color: 'surface',
        ),
        text-color: (
            color: (
                'gray',
                900,
            ),
        ),
        idle-icon-color: (
            color: (
                'primary',
                500,
            ),
        ),
        hover-icon-color: (
            color: (
                'primary',
                500,
            ),
        ),
        typography: (
            title: (
                value: 'subtitle-2',
            ),
        ),
        _meta: (
            theme: 'fluent',
        ),
    )
);

/// Generates a bootstrap navbar schema.
/// @type Map
/// @prop {Map} background [color: 'surface'] - The navbar background color.
/// @prop {Map} border-color [color: ('gray', 300)] - The navbar border color.
/// @prop {Map} text-color [contrast-color: 'surface'] - The navbar text color.
/// @prop {Map} idle-icon-color [contrast-color: 'surface'] - The navbar idle icon color.
/// @prop {Map} hover-icon-color [contrast-color: 'surface'] - The navbar hover icon color.
/// @prop {Number} elevation [0] - The elevation level, between 0-24, to be used for the navbar.
/// @requires $light-navbar
/// @requires $bootstrap-elevation-navbar
$bootstrap-navbar: extend(
    $light-navbar,
    $bootstrap-elevation-navbar,
    (
        background: (
            color: 'surface',
        ),
        border-color: (
            color: (
                'gray',
                300,
            ),
        ),
        text-color: (
            contrast-color: 'surface',
        ),
        idle-icon-color: (
            contrast-color: 'surface',
        ),
        hover-icon-color: (
            contrast-color: 'surface',
        ),
        _meta: (
            theme: 'bootstrap',
        ),
    )
);

/// Generates an indigo navbar schema.
/// @type Map
/// @prop {Map} background [color: ('surface', 500)] - The navbar background color.
/// @prop {Map} text-color [color: ('gray', 800)] - The navbar text color.
/// @prop {Map} idle-icon-color [color: ('gray', 600)] - The navbar idle icon color.
/// @prop {Map} hover-icon-color [color: ('gray', 700)] - The navbar hover icon color.
/// @prop {Color} border-color [color: ('primary', 500)] - The navbar border color.
/// @prop {Number} elevation [0] - The elevation level, between 0-24, to be used for the navbar.
/// @requires $light-navbar
/// @requires $indigo-elevation-navbar
$indigo-navbar: extend(
    $light-navbar,
    $indigo-elevation-navbar,
    (
        background: (
            color: (
                'surface',
            ),
        ),
        text-color: (
            color: (
                'gray',
                800,
            ),
        ),
        idle-icon-color: (
            color: (
                'gray',
                600,
            ),
        ),
        hover-icon-color: (
            color: (
                'gray',
                700,
            ),
        ),
        border-color: (
            color: (
                'primary',
                500,
            ),
        ),
        _meta: (
            theme: 'indigo',
        ),
    )
);
