@use '../../../../../utils/map' as *;
@use '../../../../../typography/functions' as *;
@use 'base' as *;
@use '../../light/calendar/days-view' as *;

/// Generates a dark material days-view schema.
/// @type {Map}
/// @prop {Map} date-special-foreground [color: ('secondary', 200)] - The foreground color of a special date.
/// @prop {Map} date-special-hover-foreground [color: ('secondary', 100)] - The :hover foreground color of a special date.
/// @prop {Map} date-special-focus-foreground [color: ('secondary', 100)] - The :focus foreground color of a special date.
/// @prop {Map} date-special-range-foreground [color: ('secondary', 200)] - The foreground color of a special date in a range selection.
/// @prop {Map} date-special-border-color [color: ('secondary', 200)] - The outline color around a special date.
/// @prop {Map} date-special-hover-border-color [color: ('secondary', 100)] - The outline color around a special date.
/// @prop {Map} date-special-range-border-color [color: ('secondary', 200)] - The outline color around a special date in a range selection.
/// @requires {Map} $material-days-view
/// @requires {Map} $dark-material-base
$dark-material-days-view: extend(
    $material-days-view,
    $dark-material-base,
    (
        date-special-foreground: (
            color: (
                'secondary',
                200,
            ),
        ),
        date-special-hover-foreground: (
            color: (
                'secondary',
                100,
            ),
        ),
        date-special-focus-foreground: (
            color: (
                'secondary',
                100,
            ),
        ),
        date-special-range-foreground: (
            color: (
                'secondary',
                200,
            ),
        ),
        date-special-border-color: (
            color: (
                'secondary',
                200,
            ),
        ),
        date-special-hover-border-color: (
            color: (
                'secondary',
                100,
            ),
        ),
        date-special-range-border-color: (
            color: (
                'secondary',
                200,
            ),
        ),

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

/// Generates a dark fluent days-view schema.
/// @type {Map}
/// @prop {Map} date-current-foreground [contrast-color: ('gray', 900)] - The foreground color of the current date.
/// @prop {Map} date-current-background [color: ('primary', 200)] - The background color of the current date.
/// @prop {Map} date-current-hover-foreground [contrast-color: ('gray', 900)] - The :hover foreground color of the current date.
/// @prop {Map} date-current-focus-foreground [contrast-color: ('gray', 900)] - The :focus foreground color of the current date.
/// @prop {Map} date-selected-current-foreground [contrast-color: ('gray', 900)] - The foreground color of the selected current date.
/// @prop {Map} date-selected-current-hover-foreground [contrast-color: ('gray', 900)] - The :hover foreground color of the selected current date.
/// @prop {Map} date-selected-current-focus-foreground [contrast-color: ('gray', 900)] - The :focus foreground color of the selected current date.
/// @prop {Map} date-selected-current-range-foreground [contrast-color: ('gray', 900)] - The foreground color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-hover-foreground [contrast-color: ('gray', 900)] - The :hover foreground color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-focus-foreground [contrast-color: ('gray', 900)] - The :focus foreground color of the current date in the selected range.
/// @prop {Map} date-special-border-color [color: ('primary', 50)] - The outline color around a special date.
/// @prop {Map} date-special-hover-border-color [color: ('primary', 50)] - The outline color around a special date.
/// @prop {Map} date-special-range-border-color [color: ('primary', 50)] - The outline color around a special date in a range selection.
/// @prop {Map} date-selected-special-border-color [color: ('primary', 50)] - The border color of the selected special date.
/// @prop {Map} date-selected-special-hover-border-color [color: ('primary', 50)] - The :hover border color of the selected special date.
/// @prop {Map} date-selected-special-focus-border-color [color: ('primary', 50)] - The :focus border color of the selected special date.
/// @requires {Map} $fluent-days-view
/// @requires {Map} $dark-fluent-base
$dark-fluent-days-view: extend(
    $fluent-days-view,
    $dark-fluent-base,
    (
        date-special-border-color: (
            color: (
                'primary',
                50,
            ),
        ),
        date-special-hover-border-color: (
            color: (
                'primary',
                50,
            ),
        ),
        date-special-range-border-color: (
            color: (
                'primary',
                50,
            ),
        ),
        date-current-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-current-background: (
            color: (
                'primary',
                200,
            ),
        ),
        date-current-hover-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-current-focus-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-hover-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-focus-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-range-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-range-hover-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-range-focus-foreground: (
            contrast-color: (
                'gray',
                900,
            ),
        ),
        date-selected-special-border-color: (
            color: (
                'primary',
                50,
            ),
        ),
        date-selected-special-hover-border-color: (
            color: (
                'primary',
                50,
            ),
        ),
        date-selected-special-focus-border-color: (
            color: (
                'primary',
                50,
            ),
        ),

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

/// Generates a dark bootstrap days-view schema.
/// @type {Map}
/// @prop {Map} date-special-hover-background [color: ('gray', 100)] - The background color of a special date.
/// @prop {Map} date-special-focus-background [color: ('gray', 100)] - The background color of a special date.
/// @prop {Map} date-special-range-hover-background [color: ('gray', 100)] - The :hover background color of a special date in range selection.
/// @prop {Map} date-special-range-focus-background [color: ('gray', 100)] - The :focus background color of a special date in range selection.
/// @prop {Map} date-hover-background [color: ('gray', 100)] - The :hover background color of a date.
/// @prop {Map} date-focus-background [color: ('gray', 100)] - The :focus background color of a date.
/// @prop {Map} date-special-border-color [color: ('primary', 200)] - The outline color around a special date.
/// @prop {Map} date-special-hover-border-color [color: ('primary', 200)] - The outline color around a special date.
/// @prop {Map} date-special-range-border-color [color: ('primary', 200)] - The outline color around a special date in a range selection.
/// @prop {Map} date-current-hover-background [color: ('gray', 100)] - The :hover background color of the current date.
/// @prop {Map} date-current-focus-background [color: ('gray', 100)] - The :focus background color of the current date.
/// @prop {Map} date-selected-range-hover-background [color: ('gray', 100)] - The :hover background color of the selected range.
/// @prop {Map} date-selected-range-focus-background [color: ('gray', 100)] - The :focus background color of the selected range.
/// @prop {Map} date-selected-current-range-focus-background [color: ('gray', 100)] - The :focus background color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-hover-background [color: ('gray', 100)] - The :hover background color of the current date in the selected range.
/// @requires {Map} $bootstrap-days-view
/// @requires {Map} $dark-bootstrap-base
$dark-bootstrap-days-view: extend(
    $bootstrap-days-view,
    $dark-bootstrap-base,
    (
        date-hover-foreground: (
            color: (
                'gray',
                900,
            ),
        ),
        date-special-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-special-focus-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-special-range-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-special-range-focus-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-focus-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-special-border-color: (
            color: (
                'primary',
                200,
            ),
        ),
        date-special-hover-border-color: (
            color: (
                'primary',
                200,
            ),
        ),
        date-special-range-border-color: (
            color: (
                'primary',
                200,
            ),
        ),
        date-current-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-current-focus-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-selected-range-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-selected-range-focus-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-selected-current-range-hover-background: (
            color: (
                'gray',
                100,
            ),
        ),
        date-selected-current-range-focus-background: (
            color: (
                'gray',
                100,
            ),
        ),

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

/// Generates a dark indigo days-view schema.
/// @type {Map}
/// @prop {Map} weekend-color [color: ('gray', 900)] - The foreground color of the weekend days.
/// @prop {Map} date-hover-foreground [contrast-color: ('gray', 50)] - The :hover foreground color of a date.
/// @prop {Map} date-hover-background [contrast-color: ('gray', 50, .1)] - The :hover background color of a date.
/// @prop {Map} date-focus-foreground [contrast-color: ('gray', 50)] - The :focus foreground color of a date.
/// @prop {Map} date-focus-background [contrast-color: ('gray', 50, .1)] - The :focus background color of date.
/// @prop {Map} date-disabled-foreground [color: ('gray', 400, .38,)] - The foreground color of disabled dates.
/// @prop {Map} date-disabled-range-foreground [color: ('gray', 600)] - The foreground color of disabled dates.
/// @prop {Map} date-current-foreground [color: ('gray', 900)] - The foreground color of the current date.
/// @prop {Map} date-current-background [color: ('primary', 700, .5)] - The background color of the current date.
/// @prop {Map} date-current-hover-background [color: ('primary', 700)] - The :hover background color of the current date.
/// @prop {Map} date-current-focus-background [color: ('primary', 700)] - The :focus background color of the current date.
/// @prop {Map} date-current-hover-foreground [contrast-color: ('gray', 50)] - The :hover foreground color of the current date.
/// @prop {Map} date-current-focus-foreground [contrast-color: ('gray', 50)] - The :focus foreground color of the current date.
/// @prop {Map} date-current-border-color [color: ('primary', 300)] - The border color of the current date.
/// @prop {Map} date-current-hover-border-color [color: ('primary', 200)] - The :hover border color of the current date.
/// @prop {Map} date-current-focus-border-color [color: ('primary', 200)] - The :focus border color of the current date.
/// @prop {Map} date-special-range-foreground [color: ('primary', 100)] - The foreground color of a special date in range selection.
/// @prop {Map} date-special-foreground [color: ('primary', 100)] - The foreground color of a special date.
/// @prop {Map} date-special-hover-foreground [color: ('primary', 50)] - The :hover foreground color of a special date.
/// @prop {Map} date-special-hover-background [contrast-color: ('gray', 50, .1)] - The :hover background color of a special date.
/// @prop {Map} date-special-focus-foreground [color: ('primary', 50)] - The :focus foreground color of a special date.
/// @prop {Map} date-special-focus-background [contrast-color: ('gray', 50, .1)] - The :focus background color of a special date.
/// @prop {Map} date-special-range-hover-background [contrast-color: ('gray', 600, .1)] - The :hover background color of a special date in range selection.
/// @prop {Map} date-special-range-focus-background [contrast-color: ('gray', 600, .1)] - The :focus background color of a special date in range selection.
/// @prop {Map} date-special-border-color [color: ('primary', 100)] - The outline color around a special date.
/// @prop {Map} date-special-hover-border-color [color: ('primary', 50)] - The outline color around a special date on hover.
/// @prop {Map} date-special-range-border-color [color: ('primary', 100)] - The outline color around a special date in range selection.
/// @prop {Map} week-number-foreground [color: ('gray', 500)] - The foreground color of the week number column.
/// @prop {Map} week-number-background [contrast-color: ('gray', 50, .05)] - The background color of the week number column.
/// @prop {Map} date-selected-range-background [color: ('primary', 400, .2)] - The background color of the selected range.
/// @prop {Map} date-selected-range-hover-background [contrast-color: ('gray', 50, .1)] - The :hover background color of the selected range.
/// @prop {Map} date-selected-range-focus-background [contrast-color: ('gray', 50, .1)] - The :focus background color of the selected range.
/// @prop {Map} date-selected-range-hover-foreground [contrast-color: ('gray', 50)] - The :hover foreground color of the selected range.
/// @prop {Map} date-selected-range-focus-foreground [contrast-color: ('gray', 50)] - The :focus foreground color of the selected range.
/// @prop {Map} date-selected-range-foreground [color: ('gray', 900)] - The foreground color of the selected range.
/// @prop {Map} date-selected-current-border-color [contrast-color: ('primary', 300)] - The border color of the selected current date.
/// @prop {Map} date-selected-current-range-background [color: ('primary', 700, .5)] - The background color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-hover-background [color: ('primary', 700)] - The :hover background color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-focus-background [color: ('primary', 700)] - The :focus background color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-foreground [color: ('gray', 900)] - The foreground color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-hover-foreground [contrast-color: ('gray', 50)] - The :hover foreground color of the current date in the selected range.
/// @prop {Map} date-selected-current-range-focus-foreground [contrast-color: ('gray', 50)] - The :focus foreground color of the current date in the selected range.
/// @requires {Map} $dark-indigo-base
$dark-indigo-days-view: extend(
    $indigo-days-view,
    $dark-indigo-base,
    (
        weekend-color: (
            color: (
                'gray',
                900,
            ),
        ),
        week-number-foreground: (
            color: (
                'gray',
                500,
            ),
        ),
        week-number-background: (
            contrast-color: (
                'gray',
                50,
                0.05,
            ),
        ),
        date-hover-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-hover-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-focus-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-focus-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-current-foreground: (
            color: (
                'gray',
                900,
            ),
        ),
        date-current-background: (
            color: (
                'primary',
                700,
                0.5,
            ),
        ),
        date-current-hover-background: (
            color: (
                'primary',
                700,
            ),
        ),
        date-current-focus-background: (
            color: (
                'primary',
                700,
            ),
        ),
        date-current-hover-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-current-focus-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-current-border-color: (
            color: (
                'primary',
                300,
            ),
        ),
        date-current-hover-border-color: (
            color: (
                'primary',
                200,
            ),
        ),
        date-current-focus-border-color: (
            color: (
                'primary',
                200,
            ),
        ),
        date-special-foreground: (
            color: (
                'primary',
                100,
            ),
        ),
        date-special-hover-foreground: (
            color: (
                'primary',
                50,
            ),
        ),
        date-special-hover-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-special-focus-foreground: (
            color: (
                'primary',
                50,
            ),
        ),
        date-special-focus-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-special-range-foreground: (
            color: (
                'primary',
                100,
            ),
        ),
        date-special-range-hover-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-special-range-focus-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-special-border-color: (
            color: (
                'primary',
                100,
            ),
        ),
        date-special-hover-border-color: (
            color: (
                'primary',
                50,
            ),
        ),
        date-special-range-border-color: (
            color: (
                'primary',
                100,
            ),
        ),
        date-selected-range-background: (
            color: (
                'primary',
                400,
                0.2,
            ),
        ),
        date-disabled-foreground: (
            color: (
                'gray',
                400,
                0.38,
            ),
        ),
        date-disabled-range-foreground: (
            color: (
                'gray',
                400,
                0.38,
            ),
        ),
        date-selected-range-hover-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-selected-range-focus-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-selected-range-hover-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-selected-range-focus-background: (
            contrast-color: (
                'gray',
                50,
                0.1,
            ),
        ),
        date-selected-range-foreground: (
            color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-border-color: (
            color: (
                'primary',
                300,
            ),
        ),
        date-selected-current-range-background: (
            color: (
                'primary',
                700,
                0.5,
            ),
        ),
        date-selected-current-range-hover-background: (
            color: (
                'primary',
                700,
            ),
        ),
        date-selected-current-range-focus-background: (
            color: (
                'primary',
                700,
            ),
        ),
        date-selected-current-range-foreground: (
            color: (
                'gray',
                900,
            ),
        ),
        date-selected-current-range-hover-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        date-selected-current-range-focus-foreground: (
            contrast-color: (
                'gray',
                50,
            ),
        ),
        _meta: (
            theme: 'indigo',
            variant: 'dark',
        ),
    )
);
