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

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

/// Generates a base light progress-linear schema.
/// @type Map
/// @prop {Map} track-color [color: ('gray', 300)] - The main track color.
/// @prop {Map} fill-color-default [color: ('primary', 500)] - The track default fill color.
/// @prop {Map} fill-color-danger [color: ('error')] - The track danger fill color.
/// @prop {Map} fill-color-warning [color: ('warn')] - The track warning fill color.
/// @prop {Map} fill-color-info [color: ('info')] - The track info fill color.
/// @prop {Map} fill-color-success [color: ('success')] - The track success fill color.
/// @prop {Map} stripes-color [color: ('gray', 50, .7)] - The track stripes color.
/// @prop {Map} text-color [color: ('gray', 700)] - The track value text color.
/// @prop {List} track-border-radius [(rem(0), rem(0), rem(8px))] - The border radius used for the progress bar track.
/// @prop {Number} track-height [rem(4px)] - The linear progress bar track height.
/// @prop {Number} strip-size [rem(16px)] - The linear progress bar strip size.
/// @prop {Map} typography [label: (value: 'subtitle-2')] - The typography styles used for the component.
$light-progress-linear: extend(
    (
        track-color: (
            color: (
                'gray',
                300,
            ),
        ),

        fill-color-default: (
            color: (
                'primary',
                500,
            ),
        ),

        fill-color-danger: (
            color: (
                'error',
            ),
        ),

        fill-color-warning: (
            color: (
                'warn',
            ),
        ),

        fill-color-info: (
            color: (
                'info',
            ),
        ),

        fill-color-success: (
            color: (
                'success',
            ),
        ),

        stripes-color: (
            color: (
                'gray',
                50,
                0.7,
            ),
        ),

        text-color: (
            color: (
                'gray',
                700,
            ),
        ),

        track-border-radius: (
            border-radius: (
                rem(0),
                rem(0),
                rem(8px),
            ),
        ),

        track-height: rem(4px),
        strip-size: rem(16px),
        typography: (
            label: (
                value: 'subtitle-2',
            ),
        ),
        _meta: (
            name: 'linear-bar',
            variant: 'light',
        ),
    )
);

/// Generates a material progress-linear schema.
/// @type Map
/// @requires $light-progress-linear
$material-progress-linear: extend(
    $light-progress-linear,
    (
        _meta: (
            theme: 'material',
        ),
    )
);

/// Generates a fluent progress-linear schema.
/// @type Map
/// @prop {Number} track-height [rem(2px)] - The linear progress bar track height.
/// @requires $light-progress-linear
$fluent-progress-linear: extend(
    $light-progress-linear,
    (
        track-height: rem(2px),
        _meta: (
            theme: 'fluent',
        ),
    )
);

/// Generates a bootstrap progress-linear schema.
/// @type Map
/// @prop {Map} stripes-color [color: ('gray', 50, .2)] - The track stripes color.
/// @prop {List} track-border-radius [(rem(4px), rem(0), rem(8px))] - The border radius used for the progress bar track.
/// @prop {Number} track-height [rem(16px)] - The linear progress bar track height.
/// @prop {Number} strip-size [rem(5px)] - The linear progress bar strip size.
/// @requires $light-progress-linear
$bootstrap-progress-linear: extend(
    $light-progress-linear,
    (
        stripes-color: (
            color: (
                'gray',
                50,
                0.2,
            ),
        ),

        track-border-radius: (
            border-radius: (
                rem(4px),
                rem(0),
                rem(8px),
            ),
        ),

        track-height: rem(16px),
        strip-size: rem(5px),
        _meta: (
            theme: 'bootstrap',
        ),
    )
);

/// Generates an indigo progress-linear schema.
/// @type Map
/// @prop {Map} text-color [color: ('gray', 600)] - The track value text color.
/// @prop {Map} track-color [color: ('gray', 900, .15)] - The main track color.
/// @prop {Map} fill-color-default [color: ('primary', 400)] - The track default fill color.
/// @prop {Map} fill-color-danger [color: ('error', 400)] - The track danger fill color.
/// @prop {Map} fill-color-warning [color: ('warn', 400)] - The track warning fill color.
/// @prop {Map} fill-color-info [color: ('info', 400)] - The track info fill color.
/// @prop {Map} fill-color-success [color: ('success', 400)] - The track success fill color.
/// @prop {Map} stripes-color [contrast-color: ('gray', 900, .3)] - The track stripes color.
/// @requires $light-progress-linear
$indigo-progress-linear: extend(
    $light-progress-linear,
    (
        text-color: (
            color: (
                'gray',
                600,
            ),
        ),

        track-color: (
            color: (
                'gray',
                900,
                0.15,
            ),
        ),

        fill-color-default: (
            color: (
                'primary',
                400,
            ),
        ),

        fill-color-danger: (
            color: (
                'error',
                400,
            ),
        ),

        fill-color-warning: (
            color: (
                'warn',
                400,
            ),
        ),

        fill-color-info: (
            color: (
                'info',
                400,
            ),
        ),

        fill-color-success: (
            color: (
                'success',
                400,
            ),
        ),

        stripes-color: (
            contrast-color: (
                'gray',
                900,
                0.3,
            ),
        ),
        _meta: (
            theme: 'indigo',
        ),
    )
);

/// Generates a base light progress-circular schema.
/// @type Map
/// @prop {Map} track-color [color: ('gray', 300)] - The base circle fill color.
/// @prop {Map} fill-color-default [color: ('primary', 500)] - The progress circle default fill color.
/// @prop {Map} fill-color-danger [color: ('error')] - The progress circle danger fill color.
/// @prop {Map} fill-color-warning [color: ('warn')] - The progress circle warning fill color.
/// @prop {Map} fill-color-info [color: ('info')] - The progress circle info fill color.
/// @prop {Map} fill-color-success [color: ('success')] - The progress circle success fill color.
/// @prop {Map} text-color [color: ('gray', 700)] - The value text color.
/// @prop {Number} diameter [rem(32px)] - The progress circle diameter.
/// @prop {List} track-border-radius [rem(0)] - The border radius used for the progress bar track.
$light-progress-circular: extend(
    (
        track-color: (
            color: (
                'gray',
                300,
            ),
        ),

        fill-color-default: (
            color: (
                'primary',
                500,
            ),
        ),

        fill-color-danger: (
            color: (
                'error',
            ),
        ),

        fill-color-warning: (
            color: (
                'warn',
            ),
        ),

        fill-color-info: (
            color: (
                'info',
            ),
        ),

        fill-color-success: (
            color: (
                'success',
            ),
        ),

        text-color: (
            color: (
                'gray',
                700,
            ),
        ),

        diameter: rem(32px),
        track-border-radius: rem(0),
        _meta: (
            name: 'circular-bar',
            variant: 'light',
        ),
    )
);

/// Generates a material progress-circular schema.
/// @type Map
/// @requires $light-progress-circular
$material-progress-circular: extend(
    $light-progress-circular,
    (
        _meta: (
            theme: 'material',
        ),
    )
);

/// Generates a fluent progress-circular schema.
/// @type Map
/// @requires $light-progress-circular
$fluent-progress-circular: extend(
    $light-progress-circular,
    (
        _meta: (
            theme: 'fluent',
        ),
    )
);

/// Generates a bootstrap progress-circular schema.
/// @type Map
/// @prop {Number} diameter [rem(54px)] - The progress circle diameter.
/// @requires $light-progress-circular
$bootstrap-progress-circular: extend(
    $light-progress-circular,
    (
        diameter: rem(54px),
        _meta: (
            theme: 'bootstrap',
        ),
    )
);

/// Generates an indigo progress-circular schema.
/// @type Map
/// @prop {Map} track-color [color: ('gray', 900, .15)] - The base circle fill color.
/// @prop {Map} fill-color-default [color: ('primary', 400)] - The track default fill color.
/// @prop {Map} fill-color-danger [color: ('error', 400)] - The track danger fill color.
/// @prop {Map} fill-color-warning [color: ('warn', 400)] - The track warning fill color.
/// @prop {Map} fill-color-info [color: ('info', 400)] - The track info fill color.
/// @prop {Map} fill-color-success [color: ('success', 400)] - The track success fill color.
/// @prop {Map} text-color [color: ('gray', 600)] - The value text color.
/// @prop {Number} diameter [rem(48px)] - The progress circle diameter.
$indigo-progress-circular: extend(
    $light-progress-circular,
    (
        track-color: (
            color: (
                'gray',
                900,
                0.15,
            ),
        ),

        fill-color-default: (
            color: (
                'primary',
                400,
            ),
        ),

        fill-color-danger: (
            color: (
                'error',
                400,
            ),
        ),

        fill-color-warning: (
            color: (
                'warn',
                400,
            ),
        ),

        fill-color-info: (
            color: (
                'info',
                400,
            ),
        ),

        fill-color-success: (
            color: (
                'success',
                400,
            ),
        ),

        text-color: (
            color: (
                'gray',
                600,
            ),
        ),

        diameter: rem(48px),
        _meta: (
            theme: 'indigo',
        ),
    )
);
