// stylelint-disable max-line-length
@use '../../../../utils/map' as *;

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

/// Generates a base category chart schema.
/// @access private
/// @type Map
$light-category-chart: (
    _meta: (
        name: 'category-chart',
        variant: 'light',
    ),
);

/// Generates a material category chart schema.
/// @type Map
/// @property {List} margin [null] - Sets the margin (top, right, bottom, left) of the chart content.
/// @property {List} brushes [series] - Defines the palette from which automatically assigned series brushes colors are selected.
/// @property {List} marker-brushes [series]- Defines the palette from which automatically assigned series marker brushes colors are selected.
/// @property {List} negative-brushes [hsl(347, 82%, 64%)] - Defines the palette used for coloring negative items in a chart type with contextual coloring, such as Waterfall.
/// @property {List} negative-outlines [hsl(347, 82%, 64%)] - Defines the brushes used for drawing negative elements in a chart type with contextual coloring, such as Waterfall.
/// @property {List} outlines [series] - Defines the palette from which automatically assigned series outline colors are selected.
/// @property {List} marker-outlines [series] - Defines the palette from which automatically assigned series marker outline colors are selected.
/// @property {String} title-alignment [null] - The horizontal alignment to use for the title.
/// @property {List} title-margin [null] - Sets the margin (top, right, bottom, left) of the chart title.
/// @property {Color} title-text-color [color: ('gray', 900)] - Sets the color of the chart title.
/// @property {String} title-text-style [null] - Sets the CSS font property of the chart title.
/// @property {List} subtitle-margin [null] - Sets the margins (top, right, bottom, left) of the chart subtitle.
/// @property {String} subtitle-alignment [null] - The horizontal alignment to use for the subtitle.
/// @property {Color} subtitle-text-color [color: ('gray', 700)] - Sets the color of the chart subtitle.
/// @property {String} subtitle-text-style [null] - Sets the CSS font property of the chart subtitle.
/// @property {Number} thickness [null] - Sets the thickness for all series in a chart.
/// @property {List} trend-line-brushes [series] - Defines the palette of brushes used for coloring trend lines in a chart.
/// @property {Number} trend-line-thickness [null] - Sets the thickness of the trend lines in a chart of type point, line, spline or bubble.
/// @property {List} x-axis-label-margin [null] - Sets the margin (top, right, bottom, left) of labels on the X-axis.
/// @property {Color} x-axis-label-text-color [color: ('gray', 700)] - Sets the color of labels on the X-axis.
/// @property {String} x-axis-label-text-style [null] - Sets the CSS font property for labels on X-axis.
/// @property {String} x-axis-label-vertical-alignment [null] - Sets the vertical alignment of X-axis labels.
/// @property {Color} x-axis-major-stroke [null] - Sets the color to apply to major gridlines along the X-axis.
/// @property {Number} x-axis-major-stroke-thickness [null] - Sets the thickness to apply to major gridlines along the X-axis.
/// @property {Color} x-axis-minor-stroke [null] - Sets the color to apply to minor gridlines along the X-axis.
/// @property {Number} x-axis-minor-stroke-thickness [null] - Sets the thickness to apply to minor gridlines along the X-axis.
/// @property {Color} x-axis-strip [null] - Sets the color to apply to stripes along the X-axis.
/// @property {Color} x-axis-stroke [color: ('gray', 500)] - Sets the color to apply to the X-axis line.
/// @property {Number} x-axis-stroke-thickness [null] - Sets the thickness to apply to the X-axis line.
/// @property {Number} x-axis-tick-length [null] - Sets the length of tickmarks along the X-axis.
/// @property {Color} x-axis-tick-stroke [color: ('gray', 500)] - Sets the color to apply to tickmarks along the X-axis.
/// @property {Number} x-axis-tick-stroke-thickness [null] - Sets the thickness to apply to tickmarks along the X-axis.
/// @property {String} x-axis-title-alignment [null] - Sets the horizontal alignment of the X-axis title.
/// @property {List} x-axis-title-margin [null] - Sets the margin (top, right, bottom, left) of a title on the X-axis.
/// @property {Color} x-axis-title-text-color [color: ('gray', 900)] - Sets the color of the title on the X-axis.
/// @property {String} x-axis-title-text-style [null] - Sets the CSS font property for the title on the X-axis.
/// @property {List} y-axis-label-margin [null] - Sets the margin (top, right, bottom, left) of labels on the Y-axis.
/// @property {Color} y-axis-label-text-color [color: ('gray', 700)] - Sets the color of labels on the Y-axis.
/// @property {String} y-axis-label-text-style [null] - Sets the CSS font property for labels on Y-axis.
/// @property {String} y-axis-label-vertical-alignment [null] - Sets the vertical alignment of Y-axis labels.
/// @property {Color} y-axis-major-stroke [color: ('gray', 300)] - Sets the color to apply to major gridlines along the y-axis.
/// @property {Number} y-axis-major-stroke-thickness [null] - Sets the thickness to apply to major gridlines along the Y-axis.
/// @property {Color} y-axis-minor-stroke [null] - Sets the color to apply to minor gridlines along the Y-axis.
/// @property {Number} y-axis-minor-stroke-thickness [null] - Sets the thickness to apply to minor gridlines along the Y-axis.
/// @property {Color} y-axis-strip [null] - Sets the color to apply to stripes along the Y-axis.
/// @property {Color} y-axis-stroke [null] - Sets the color to apply to the Y-axis line.
/// @property {Number} y-axis-stroke-thickness [null] - Sets the thickness to apply to the Y-axis line.
/// @property {String} y-axis-title-alignment [null] - Sets the horizontal alignment of the Y-axis title.
/// @property {List} y-axis-title-margin [null] - Sets the margin (top, right, bottom, left) of a title on the Y-axis.
/// @property {Color} y-axis-title-text-color [color: ('gray', 900)] - Sets the color of a title on the Y-axis.
/// @property {String} y-axis-title-text-style [null] - Sets the CSS font property for the title on the Y-axis.
/// @property {Number} y-axis-tick-length [null] - Sets the length of tickmarks along the Y-axis.
/// @property {Color} y-axis-tick-stroke [color: ('gray', 500)] - Sets the color to apply to tickmarks along the Y-axis.
/// @property {Number} y-axis-tick-stroke-thickness [null] - Sets the thickness to apply to tickmarks along the Y-axis.
$material-category-chart: extend(
    $light-category-chart,
    (
        margin: (
            expand-shorthand: (
                null,
            ),
        ),
        brushes: series,
        marker-brushes: series,
        negative-brushes: hsl(347deg 82% 64%),
        outlines: series,
        marker-outlines: series,
        negative-outlines: hsl(347deg 82% 64%),
        title-alignment: null,
        title-margin: (
            expand-shorthand: (
                null,
            ),
            map-keys-prefix: 'title',
        ),
        title-text-color: (
            color: (
                'gray',
                900,
            ),
        ),
        title-text-style: null,
        subtitle-margin: (
            expand-shorthand: (
                null,
            ),
            map-keys-prefix: 'subtitle',
        ),
        subtitle-alignment: null,
        subtitle-text-color: (
            color: (
                'gray',
                700,
            ),
        ),
        subtitle-text-style: null,
        thickness: null,
        trend-line-brushes: series,
        trend-line-thickness: null,
        x-axis-label-margin: (
            expand-shorthand: (
                null,
            ),
            map-keys-prefix: 'x-axis-label',
        ),
        x-axis-label-text-color: (
            color: (
                'gray',
                700,
            ),
        ),
        x-axis-label-text-style: null,
        x-axis-label-vertical-alignment: null,
        x-axis-major-stroke: null,
        x-axis-major-stroke-thickness: null,
        x-axis-minor-stroke: null,
        x-axis-minor-stroke-thickness: null,
        x-axis-strip: null,
        x-axis-stroke: (
            color: (
                'gray',
                500,
            ),
        ),
        x-axis-stroke-thickness: null,
        x-axis-tick-length: null,
        x-axis-tick-stroke: (
            color: (
                'gray',
                500,
            ),
        ),
        x-axis-tick-stroke-thickness: null,
        x-axis-title-alignment: null,
        x-axis-title-margin: (
            expand-shorthand: (
                null,
            ),
            map-keys-prefix: 'x-axis-title',
        ),
        x-axis-title-text-color: (
            color: (
                'gray',
                900,
            ),
        ),
        x-axis-title-text-style: null,
        y-axis-label-margin: (
            expand-shorthand: (
                null,
            ),
            map-keys-prefix: 'y-axis-label',
        ),
        y-axis-label-text-color: (
            color: (
                'gray',
                700,
            ),
        ),
        y-axis-label-text-style: null,
        y-axis-label-vertical-alignment: null,
        y-axis-major-stroke: (
            color: (
                'gray',
                300,
            ),
        ),
        y-axis-major-stroke-thickness: null,
        y-axis-minor-stroke: null,
        y-axis-minor-stroke-thickness: null,
        y-axis-strip: null,
        y-axis-stroke: null,
        y-axis-stroke-thickness: null,
        y-axis-title-alignment: null,
        y-axis-title-margin: (
            expand-shorthand: (
                null,
            ),
            map-keys-prefix: 'y-axis-title',
        ),
        y-axis-title-text-color: (
            color: (
                'gray',
                900,
            ),
        ),
        y-axis-title-text-style: null,
        y-axis-tick-length: null,
        y-axis-tick-stroke: (
            color: (
                'gray',
                500,
            ),
        ),
        y-axis-tick-stroke-thickness: null,
        _meta: (
            theme: 'material',
        ),
    )
);

/// Generates a fluent category-chart schema.
/// @type Map
/// @requires {function} extend
/// @requires $material-category-chart
$fluent-category-chart: extend(
    $material-category-chart,
    (
        _meta: (
            theme: 'fluent',
        ),
    )
);

/// Generates a bootstrap category-chart schema.
/// @type Map
/// @requires {function} extend
/// @requires $material-category-chart
$bootstrap-category-chart: extend(
    $material-category-chart,
    (
        _meta: (
            theme: 'bootstrap',
        ),
    )
);

/// Generates an indigo category-chart schema.
/// @type Map
/// @requires {function} extend
/// @requires $material-category-chart
$indigo-category-chart: extend(
    $material-category-chart,
    (
        _meta: (
            theme: 'indigo',
        ),
    )
);
