@use 'sass:map';
@use '../../config';
@use '../../functions' as *;
@use '../../schemas/' as *;
@use '../../../utils/map' as *;
@use '../../../color/functions' as *;
@use '../../../elevations/' as *;

////
/// @package theming
/// @group themes
/// @access public
/// @author <a href="https://github.com/simeonoff" target="_blank">Simeon Simeonoff</a>
/// @author <a href="https://github.com/desig9stein" target="_blank">Marin Popov</a>
////

/// Calendar Theme
///
/// PRIMARY TOKENS:
/// - `$header-background` — The main accent color.
/// - `$content-background` — The calendar body background.
///
/// Text and icon colors are auto-calculated for contrast.
///
/// @param {Map} $schema [$light-material-schema] - The schema used as basis for styling the component.
///
/// @param {Number} $size [null] - Size of days, months, and years views.
/// @param {Number} $inner-size [null] - Inner size for calendar elements.
/// @param {Color} $weekday-color [null] - Color for weekday labels. Auto-derived from content-background.
/// @param {Color} $actions-divider-color [null] - Divider color for date-picker actions.
/// @param {List} $border-radius [null] - Border radius for calendar container.
/// @param {Color} $content-background [null] - Background color for calendar. PRIMARY - derives content-foreground, inactive-color, date-hover colors, week-number colors.
/// @param {Color} $border-color [null] - Border color for calendar container.
/// @param {Color} $header-background [null] - Header background color. PRIMARY - derives header-foreground and most accent/selection colors.
/// @param {Color} $header-foreground [null] - Header foreground color. Auto-derived from header-background.
/// @param {Color} $picker-foreground [null] - Foreground for the calendar picker. Auto-derived from picker-background.
/// @param {Color} $picker-background [null] - Background for the calendar picker.
/// @param {Color} $picker-hover-foreground [null] - :Hover foreground for the calendar picker. Auto-derived from header-background.
/// @param {Color} $picker-focus-foreground [null] - :Focus foreground for the calendar picker. Auto-derived from picker-hover-foreground.
/// @param {Color} $navigation-color [null] - Icon color for month navigation. Auto-derived from picker-background.
/// @param {Color} $navigation-hover-color [null] - :Hover color for navigation icons. Auto-derived from picker-hover-foreground.
/// @param {Color} $navigation-focus-color [null] - :Focus color for navigation icons. Auto-derived from navigation-hover-color.
/// @param {List} $ym-border-radius [null] - Border radius for year/month views.
/// @param {Color} $ym-hover-foreground [null] - :Hover foreground for year/month. Auto-derived from ym-hover-background.
/// @param {Color} $ym-hover-background [null] - :Hover background for year/month. Auto-derived from date-hover-background.
/// @param {Color} $ym-current-outline-color [null] - Outline color for current year/month. Auto-derived from date-current-border-color.
/// @param {Color} $ym-current-outline-hover-color [null] - :Hover outline color for current year/month.
/// @param {Color} $ym-current-outline-focus-color [null] - :Focus outline color for current year/month.
/// @param {Color} $ym-current-background [null] - Background for current year/month.
/// @param {Color} $ym-current-foreground [null] - Foreground for current year/month. Auto-derived from ym-current-background.
/// @param {Color} $ym-current-hover-foreground [null] - :Hover foreground for current year/month.
/// @param {Color} $ym-current-hover-background [null] - :Hover background for current year/month.
/// @param {Color} $ym-selected-outline-color [null] - Outline color for selected year/month.
/// @param {Color} $ym-selected-hover-outline-color [null] - :Hover outline color for selected year/month.
/// @param {Color} $ym-selected-focus-outline-color [null] - :Focus outline color for selected year/month.
/// @param {Color} $ym-selected-foreground [null] - Foreground for selected year/month. Auto-derived from ym-selected-background.
/// @param {Color} $ym-selected-background [null] - Background for selected year/month. Auto-derived from header-background.
/// @param {Color} $ym-selected-hover-foreground [null] - :Hover foreground for selected year/month.
/// @param {Color} $ym-selected-hover-background [null] - :Hover background for selected year/month.
/// @param {Color} $ym-selected-current-outline-color [null] - Outline color for selected current year/month.
/// @param {Color} $ym-selected-current-outline-hover-color [null] - :Hover outline color for selected current year/month.
/// @param {Color} $ym-selected-current-outline-focus-color [null] - :Focus outline color for selected current year/month.
/// @param {Color} $ym-selected-current-foreground [null] - Foreground for selected current year/month.
/// @param {Color} $ym-selected-current-background [null] - Background for selected current year/month.
/// @param {Color} $ym-selected-current-hover-foreground [null] - :Hover foreground for selected current year/month.
/// @param {Color} $ym-selected-current-hover-background [null] - :Hover background for selected current year/month.
/// @param {List} $week-number-border-radius [null] - Border radius for week number column.
/// @param {Color} $week-number-foreground [null] - Foreground for week number column. Auto-derived from week-number-background.
/// @param {Color} $week-number-background [null] - Background for week number column. Auto-derived from content-background.
/// @param {Color} $content-foreground [null] - The foreground color for idle dates. Auto-derived from content-background.
/// @param {Color} $weekend-color [null] - Color for weekend days. Auto-derived from content-foreground.
/// @param {Color} $inactive-color [null] - Color for inactive dates (outside current month). Auto-derived from content-background.
/// @param {List} $date-border-radius [null] - Border radius for date cells.
/// @param {Color} $date-border-color [null] - Border color for date cells.
/// @param {Color} $date-hover-border-color [null] - :Hover border color for date cells.
/// @param {Color} $date-focus-border-color [null] - :Focus border color for date cells.
/// @param {Color} $date-hover-background [null] - :Hover background for date cells. Auto-derived from content-background.
/// @param {Color} $date-focus-background [null] - :Focus background for date cells. Auto-derived from date-hover-background.
/// @param {Color} $date-hover-foreground [null] - :Hover foreground for date cells. Auto-derived from date-hover-background.
/// @param {Color} $date-focus-foreground [null] - :Focus foreground for date cells. Auto-derived from date-hover-foreground.
/// @param {Color} $date-selected-border-color [null] - Border color for selected date.
/// @param {Color} $date-selected-hover-border-color [null] - :Hover border color for selected date.
/// @param {Color} $date-selected-focus-border-color [null] - :Focus border color for selected date.
/// @param {Color} $date-selected-background [null] - Background for selected date. Auto-derived from header-background.
/// @param {Color} $date-selected-foreground [null] - Foreground for selected date. Auto-derived from date-selected-background.
/// @param {Color} $date-selected-hover-background [null] - :Hover background for selected date. Auto-derived from date-selected-background.
/// @param {Color} $date-selected-focus-background [null] - :Focus background for selected date.
/// @param {Color} $date-selected-hover-foreground [null] - :Hover foreground for selected date.
/// @param {Color} $date-selected-focus-foreground [null] - :Focus foreground for selected date.
/// @param {Color} $date-selected-special-border-color [null] - Border color for selected special date.
/// @param {Color} $date-selected-special-hover-border-color [null] - :Hover border color for selected special date.
/// @param {Color} $date-selected-special-focus-border-color [null] - :Focus border color for selected special date.
/// @param {Color} $date-selected-special-background [null] - Background for selected special date.
/// @param {Color} $date-selected-special-foreground [null] - Foreground for selected special date.
/// @param {Color} $date-selected-special-hover-background [null] - :Hover background for selected special date.
/// @param {Color} $date-selected-special-focus-background [null] - :Focus background for selected special date.
/// @param {Color} $date-selected-special-hover-foreground [null] - :Hover foreground for selected special date.
/// @param {Color} $date-selected-special-focus-foreground [null] - :Focus foreground for selected special date.
/// @param {List} $date-range-border-radius [null] - Border radius for date range selection.
/// @param {Color} $date-range-border-color [null] - Border color for date range selection.
/// @param {Color} $date-range-preview-border-color [null] - Preview border color for date range selection.
/// @param {Color} $date-selected-range-foreground [null] - Foreground for dates in selected range.
/// @param {Color} $date-selected-range-background [null] - Background for dates in selected range.
/// @param {Color} $date-selected-range-hover-foreground [null] - :Hover foreground for dates in selected range.
/// @param {Color} $date-selected-range-hover-background [null] - :Hover background for dates in selected range.
/// @param {Color} $date-selected-range-focus-foreground [null] - :Focus foreground for dates in selected range.
/// @param {Color} $date-selected-range-focus-background [null] - :Focus background for dates in selected range.
/// @param {Color} $date-selected-current-range-foreground [null] - Foreground for current date in selected range.
/// @param {Color} $date-selected-current-range-background [null] - Background for current date in selected range.
/// @param {Color} $date-selected-current-range-hover-foreground [null] - :Hover foreground for current date in selected range.
/// @param {Color} $date-selected-current-range-hover-background [null] - :Hover background for current date in selected range.
/// @param {Color} $date-selected-current-range-focus-foreground [null] - :Focus foreground for current date in selected range.
/// @param {Color} $date-selected-current-range-focus-background [null] - :Focus background for current date in selected range.
/// @param {List} $date-current-border-radius [null] - Border radius for current date.
/// @param {Color} $date-current-border-color [null] - Border color for current date.
/// @param {Color} $date-current-hover-border-color [null] - :Hover border color for current date.
/// @param {Color} $date-current-focus-border-color [null] - :Focus border color for current date.
/// @param {Color} $date-current-background [null] - Background for current date.
/// @param {Color} $date-current-foreground [null] - Foreground for current date.
/// @param {Color} $date-current-hover-background [null] - :Hover background for current date.
/// @param {Color} $date-current-focus-background [null] - :Focus background for current date.
/// @param {Color} $date-current-hover-foreground [null] - :Hover foreground for current date.
/// @param {Color} $date-current-focus-foreground [null] - :Focus foreground for current date.
/// @param {Color} $date-selected-current-border-color [null] - Border color for selected current date.
/// @param {Color} $date-selected-current-hover-border-color [null] - :Hover border color for selected current date.
/// @param {Color} $date-selected-current-focus-border-color [null] - :Focus border color for selected current date.
/// @param {Color} $date-selected-current-background [null] - Background for selected current date.
/// @param {Color} $date-selected-current-hover-background [null] - :Hover background for selected current date.
/// @param {Color} $date-selected-current-focus-background [null] - :Focus background for selected current date.
/// @param {Color} $date-selected-current-foreground [null] - Foreground for selected current date.
/// @param {Color} $date-selected-current-hover-foreground [null] - :Hover foreground for selected current date.
/// @param {Color} $date-selected-current-focus-foreground [null] - :Focus foreground for selected current date.
/// @param {List} $date-special-border-radius [null] - Border radius for special date.
/// @param {Color} $date-special-border-color [null] - Border color for special date.
/// @param {Color} $date-special-hover-border-color [null] - :Hover border color for special date.
/// @param {Color} $date-special-focus-border-color [null] - :Focus border color for special date.
/// @param {Color} $date-special-foreground [null] - Foreground for special date. Auto-derived from header-background.
/// @param {Color} $date-special-background [null] - Background for special date.
/// @param {Color} $date-special-hover-foreground [null] - :Hover foreground for special date.
/// @param {Color} $date-special-hover-background [null] - :Hover background for special date.
/// @param {Color} $date-special-focus-foreground [null] - :Focus foreground for special date.
/// @param {Color} $date-special-focus-background [null] - :Focus background for special date.
/// @param {Color} $date-special-range-border-color [null] - Border color for special date in range.
/// @param {Color} $date-special-range-hover-border-color [null] - :Hover border color for special date in range.
/// @param {Color} $date-special-range-focus-border-color [null] - :Focus border color for special date in range.
/// @param {Color} $date-special-range-foreground [null] - Foreground for special date in range.
/// @param {Color} $date-special-range-hover-foreground [null] - :Hover foreground for special date in range.
/// @param {Color} $date-special-range-focus-foreground [null] - :Focus foreground for special date in range.
/// @param {Color} $date-special-range-background [null] - Background for special date in range.
/// @param {Color} $date-special-range-hover-background [null] - :Hover background for special date in range.
/// @param {Color} $date-special-range-focus-background [null] - :Focus background for special date in range.
/// @param {Color} $date-disabled-foreground [null] - Foreground for disabled dates.
/// @param {Color} $date-disabled-range-foreground [null] - Foreground for disabled dates in selected range.
/// @requires $light-material-schema
///
/// @example scss - Change the header and content background colors
///   $my-calendar-theme: calendar-theme(
///     $header-background: purple,
///     $content-background: black
///   );
///   // Pass the theme to the css-vars() mixin
///   @include css-vars($my-calendar-theme);
@function calendar-theme(
    $schema: $light-material-schema,

    $size: null,
    $inner-size: null,

    $weekday-color: null,
    $actions-divider-color: null,

    // CALENDAR container
    $border-radius: null,
    $content-background: null,
    $border-color: null,

    // HEADER section
    $header-background: null,
    $header-foreground: null,

    // PICKER sections
    $picker-foreground: null,
    $picker-background: null,
    $picker-hover-foreground: null,
    $picker-focus-foreground: null,

    // NAVIGATION (icons)
    $navigation-color: null,
    $navigation-hover-color: null,
    $navigation-focus-color: null,

    // YEARS & MONTH
    $ym-border-radius: null,

    $ym-hover-foreground: null,
    $ym-hover-background: null,

    // current state
    $ym-current-outline-color: null,
    $ym-current-outline-hover-color: null,
    $ym-current-outline-focus-color: null,

    $ym-current-background: null,
    $ym-current-foreground: null,
    $ym-current-hover-foreground: null,
    $ym-current-hover-background: null,

    // selected state
    $ym-selected-outline-color: null,
    $ym-selected-hover-outline-color: null,
    $ym-selected-focus-outline-color: null,

    $ym-selected-foreground: null,
    $ym-selected-background: null,
    $ym-selected-hover-foreground: null,
    $ym-selected-hover-background: null,

    // selected + current state
    $ym-selected-current-outline-color: null,
    $ym-selected-current-outline-hover-color: null,
    $ym-selected-current-outline-focus-color: null,

    $ym-selected-current-foreground: null,
    $ym-selected-current-background: null,
    $ym-selected-current-hover-foreground: null,
    $ym-selected-current-hover-background: null,

    // WEEK NUMBERS COLUMN
    $week-number-border-radius: null,
    $week-number-foreground: null,
    $week-number-background: null,

    // DATES
    // content foreground is used as default date foreground
    $content-foreground: null,

    // weekend is Saturday & Sunday
    $weekend-color: null,

    // inactive dates are from previous or next month
    $inactive-color: null,

    // idle state
    $date-border-radius: null,

    $date-border-color: null,
    $date-hover-border-color: null,
    $date-focus-border-color: null,

    $date-hover-background: null,
    $date-focus-background: null,
    $date-hover-foreground: null,
    $date-focus-foreground: null,

    // selected state
    $date-selected-border-color: null,
    $date-selected-hover-border-color: null,
    $date-selected-focus-border-color: null,

    $date-selected-background: null,
    $date-selected-foreground: null,
    $date-selected-hover-background: null,
    $date-selected-focus-background: null,
    $date-selected-hover-foreground: null,
    $date-selected-focus-foreground: null,

    // selected + special state
    $date-selected-special-border-color: null,
    $date-selected-special-hover-border-color: null,
    $date-selected-special-focus-border-color: null,

    $date-selected-special-background: null,
    $date-selected-special-foreground: null,
    $date-selected-special-hover-background: null,
    $date-selected-special-focus-background: null,
    $date-selected-special-hover-foreground: null,
    $date-selected-special-focus-foreground: null,

    $date-range-border-radius: null,
    $date-range-border-color: null,
    $date-range-preview-border-color: null,

    // date selected + range state
    $date-selected-range-foreground: null,
    $date-selected-range-background: null,
    $date-selected-range-hover-foreground: null,
    $date-selected-range-hover-background: null,
    $date-selected-range-focus-foreground: null,
    $date-selected-range-focus-background: null,

    // date selected + current + range state
    $date-selected-current-range-foreground: null,
    $date-selected-current-range-background: null,
    $date-selected-current-range-hover-foreground: null,
    $date-selected-current-range-hover-background: null,
    $date-selected-current-range-focus-foreground: null,
    $date-selected-current-range-focus-background: null,

    // current state
    $date-current-border-radius: null,

    $date-current-border-color: null,
    $date-current-hover-border-color: null,
    $date-current-focus-border-color: null,

    $date-current-background: null,
    $date-current-foreground: null,
    $date-current-hover-background: null,
    $date-current-focus-background: null,
    $date-current-hover-foreground: null,
    $date-current-focus-foreground: null,

    // date selected + state
    $date-selected-current-border-color: null,
    $date-selected-current-hover-border-color: null,
    $date-selected-current-focus-border-color: null,

    $date-selected-current-background: null,
    $date-selected-current-hover-background: null,
    $date-selected-current-focus-background: null,
    $date-selected-current-foreground: null,
    $date-selected-current-hover-foreground: null,
    $date-selected-current-focus-foreground: null,

    // date special state
    $date-special-border-radius: null,

    $date-special-border-color: null,
    $date-special-hover-border-color: null,
    $date-special-focus-border-color: null,

    $date-special-foreground: null,
    $date-special-background: null,
    $date-special-hover-foreground: null,
    $date-special-hover-background: null,
    $date-special-focus-foreground: null,
    $date-special-focus-background: null,

    // date special + range state
    $date-special-range-border-color: null,
    $date-special-range-hover-border-color: null,
    $date-special-range-focus-border-color: null,

    $date-special-range-foreground: null,
    $date-special-range-hover-foreground: null,
    $date-special-range-focus-foreground: null,
    $date-special-range-background: null,
    $date-special-range-hover-background: null,
    $date-special-range-focus-background: null,

    // disabled dates
    // date-disabled-foreground is used for idle date
    $date-disabled-foreground: null,

    // date-disabled-range-foreground is used for idle date in selected range
    $date-disabled-range-foreground: null
) {
    $selector: (
        #{config.element-prefix() + '-' + 'calendar'},
        #{'.' + config.element-prefix() + '-' + 'date-picker'},
        #{config.element-prefix() + '-' + 'month-picker'},
        '.igx-days-view--standalone',
        '.igx-calendar-view--standalone'
    );
    $calendar-schema: ();

    @if map.has-key($schema, 'calendar') {
        $calendar-schema: map.get($schema, 'calendar');
    } @else {
        $calendar-schema: $schema;
    }

    $theme: digest-schema($calendar-schema);
    $variant: map.get($schema, '_meta', 'theme');

    @if not($date-range-border-radius) and $date-border-radius {
        $date-range-border-radius: $date-border-radius;
    }

    @if not($date-border-radius) and $date-range-border-radius {
        $date-border-radius: $date-range-border-radius;
    }

    @if not($date-current-border-radius) and $date-border-radius {
        $date-current-border-radius: $date-border-radius;
    }

    @if not($date-special-border-radius) and $date-border-radius {
        $date-special-border-radius: $date-border-radius;
    }

    // base start
    @if not($header-foreground) and $header-background {
        $header-foreground: adaptive-contrast(var(--header-background));
    }

    @if not($content-foreground) and $content-background {
        $content-foreground: adaptive-contrast(var(--content-background));
    }

    @if not($weekend-color) and $content-foreground {
        $weekend-color: var(--content-foreground);
    }

    @if not($inactive-color) and $content-background {
        $inactive-color: hsl(from adaptive-contrast(var(--content-background)) h s l / 0.5);
    }

    @if not($weekday-color) and $inactive-color {
        $weekday-color: var(--inactive-color);
    }

    @if not($week-number-background) and $content-background {
        $week-number-background: hsl(from var(--content-background) h s calc(l * 0.8));
    }

    @if not($week-number-foreground) and $week-number-background {
        $week-number-foreground: hsl(from adaptive-contrast(var(--week-number-background)) h s l / 0.5);
    }

    // base end

    // picker start
    @if $variant == 'bootstrap' {
        @if not($picker-background) and $header-background {
            $picker-background: var(--header-background);
        }

        @if not($weekday-color) and $header-background {
            $weekday-color: hsl(from adaptive-contrast(var(--header-background)) h s l / 0.8);
        }

        @if not($week-number-foreground) and not($week-number-background) and $header-background {
            $week-number-foreground: var(--header-background);
        }
    } @else {
        @if not($picker-background) and $content-background {
            $picker-background: var(--content-background);
        }
    }

    @if not($picker-foreground) and $picker-background {
        $picker-foreground: adaptive-contrast(var(--picker-background));
    }

    @if $variant != 'bootstrap' {
        @if not($picker-hover-foreground) and $header-background and not($picker-background) {
            $picker-hover-foreground: var(--header-background);
        }
    }

    @if not($picker-hover-foreground) and $picker-background {
        $picker-hover-foreground: hsl(from adaptive-contrast(var(--picker-background)) h s l / 0.8);
    }

    @if not($picker-focus-foreground) and $picker-hover-foreground {
        $picker-focus-foreground: var(--picker-hover-foreground);
    }

    @if not($navigation-color) and $picker-background {
        $navigation-color: adaptive-contrast(var(--picker-background));
    }

    @if not($navigation-hover-color) and $picker-hover-foreground {
        $navigation-hover-color: var(--picker-hover-foreground);
    }

    @if not($navigation-focus-color) and $navigation-hover-color {
        $navigation-focus-color: var(--navigation-hover-color);
    }

    // picker end

    // date start
    @if not($date-hover-background) and $content-background {
        $date-hover-background: dynamic-shade(var(--content-background));
    }

    @if not($date-hover-foreground) and $date-hover-background {
        $date-hover-foreground: adaptive-contrast(var(--date-hover-background));
    }

    @if not($date-focus-background) and $date-hover-background {
        $date-focus-background: var(--date-hover-background);
    }

    @if not($date-focus-foreground) and $date-hover-foreground {
        $date-focus-foreground: var(--date-hover-foreground);
    }

    @if not($ym-hover-background) and $date-hover-background {
        $ym-hover-background: var(--date-hover-background);
    }

    @if not($ym-hover-foreground) and $ym-hover-background {
        $ym-hover-foreground: adaptive-contrast(var(--ym-hover-background));
    }

    // date end

    // date current start
    @if $variant == 'indigo' {
        @if not($date-current-background) and $header-background {
            $date-current-background: hsl(from var(--header-background) h s l / 0.4);
        }

        @if not($date-current-border-color) and $date-current-background {
            $date-current-border-color: hsl(from var(--date-current-background) h s l / 0.6);
        }

        @if not($date-current-hover-background) and $date-current-background {
            $date-current-hover-background: dynamic-shade(var(--date-current-background));
        }

        @if not($date-current-hover-border-color) and $date-current-border-color {
            $date-current-hover-border-color: dynamic-shade(var(--date-current-border-color));
        }

        @if not($date-current-focus-background) and $date-current-hover-background {
            $date-current-focus-background: var(--date-current-hover-background);
        }

        @if not($date-current-focus-border-color) and $date-current-hover-border-color {
            $date-current-focus-border-color: var(--date-current-hover-border-color);
        }

        @if not($date-current-foreground) and $date-current-background {
            $date-current-foreground: adaptive-contrast(var(--date-current-background));
        }

        @if not($date-current-foreground) and $content-foreground {
            $date-current-foreground: var(--content-foreground);
        }

        @if not($date-current-hover-foreground) and $date-current-foreground {
            $date-current-hover-foreground: var(--date-current-foreground);
        }

        @if not($date-current-focus-foreground) and $date-current-foreground {
            $date-current-focus-foreground: var(--date-current-foreground);
        }
    }

    @if $variant == 'fluent' {
        @if not($date-current-background) and $header-background {
            $date-current-background: var(--header-background);
        }
    }

    @if $variant == 'material' or $variant == 'bootstrap' {
        @if not($date-current-background) and $content-background {
            $date-current-background: var(--content-background);
        }
    }

    @if $variant != 'indigo' {
        @if not($date-current-foreground) and $date-current-background {
            $date-current-foreground: adaptive-contrast(var(--date-current-background));
        }

        @if not($date-current-hover-background) and $date-hover-background {
            $date-current-hover-background: var(--date-hover-background);
        }

        @if not($date-current-focus-background) and $date-focus-background {
            $date-current-focus-background: var(--date-focus-background);
        }

        @if $variant == 'fluent' {
            @if not($date-current-hover-foreground) and $date-current-background {
                $date-current-hover-foreground: adaptive-contrast(var(--date-current-background));
            }

            @if not($date-current-focus-foreground) and $date-current-background {
                $date-current-focus-foreground: adaptive-contrast(var(--date-current-background));
            }

            @if not($date-current-hover-background) and $date-current-background {
                $date-current-hover-background: var(--date-current-background);
            }

            @if not($date-current-focus-background) and $date-current-hover-background {
                $date-current-focus-background: var(--date-current-hover-background);
            }
        }

        @if not($date-current-hover-foreground) and $date-current-hover-background {
            $date-current-hover-foreground: adaptive-contrast(var(--date-current-hover-background));
        }

        @if not($date-current-focus-foreground) and $date-current-hover-background {
            $date-current-focus-foreground: adaptive-contrast(var(--date-current-hover-background));
        }
    }

    @if $variant == 'material' or $variant == 'bootstrap' {
        @if not($date-current-border-color) and $date-current-foreground {
            $date-current-border-color: var(--date-current-foreground);
        }

        @if not($date-current-hover-border-color) and $date-current-hover-foreground {
            $date-current-hover-border-color: var(--date-current-hover-foreground);
        }

        @if not($date-current-focus-border-color) and $date-current-focus-foreground {
            $date-current-focus-border-color: var(--date-current-focus-foreground);
        }
    }

    // date current end

    // date selected start
    @if $variant == 'fluent' {
        @if not($date-selected-background) and $date-hover-background {
            $date-selected-background: var(--date-hover-background);
        }

        @if not($date-selected-current-background) and $date-current-background {
            $date-selected-current-background: var(--date-current-background);
        }

        @if not($date-selected-current-hover-background) and $date-current-hover-background {
            $date-selected-current-hover-background: var(--date-current-hover-background);
        }

        @if not($date-selected-current-focus-background) and $date-current-hover-background {
            $date-selected-current-focus-background: var(--date-current-hover-background);
        }

        @if not($date-selected-current-foreground) and $date-current-foreground {
            $date-selected-current-foreground: var(--date-current-foreground);
        }

        @if not($date-selected-current-hover-foreground) and $date-current-hover-foreground {
            $date-selected-current-hover-foreground: var(--date-current-hover-foreground);
        }

        @if not($date-selected-current-focus-foreground) and $date-current-hover-foreground {
            $date-selected-current-focus-foreground: var(--date-current-hover-foreground);
        }

        @if not($date-current-border-color) and $date-current-background {
            $date-current-border-color: var(--date-current-background);
        }

        @if not($date-selected-current-border-color) and $date-current-border-color {
            $date-selected-current-border-color: var(--date-current-border-color);
        }

        @if not($date-selected-current-border-color) and $date-selected-current-background {
            $date-selected-current-border-color: var(--date-selected-current-background);
        }

        @if not($date-selected-current-hover-border-color) and $date-current-hover-border-color {
            $date-selected-current-hover-border-color: var(--date-current-hover-border-color);
        }

        @if not($date-selected-current-focus-border-color) and $date-selected-current-hover-border-color {
            $date-selected-current-focus-border-color: var(--date-selected-current-hover-border-color);
        }

        @if not($date-selected-current-hover-border-color) and $date-selected-current-border-color {
            $date-selected-current-hover-border-color: var(--date-selected-current-border-color);
        }

        @if not($date-selected-current-focus-border-color) and $date-selected-current-hover-border-color {
            $date-selected-current-focus-border-color: var(--date-selected-current-hover-border-color);
        }
    } @else {
        @if not($date-selected-background) and $header-background {
            $date-selected-background: var(--header-background);
        }

        @if not($date-selected-current-background) and $date-selected-background {
            $date-selected-current-background: var(--date-selected-background);
        }

        @if not($date-selected-current-hover-background) and $date-selected-hover-background {
            $date-selected-current-hover-background: var(--date-selected-hover-background);
        }

        @if not($date-selected-current-focus-background) and $date-selected-background {
            $date-selected-current-focus-background: var(--date-selected-background);
        }

        @if not($date-selected-current-focus-background) and $date-selected-current-hover-background {
            $date-selected-current-focus-background: var(--date-selected-current-hover-background);
        }
    }

    @if not($date-selected-hover-background) and $date-selected-background {
        $date-selected-hover-background: dynamic-shade(var(--date-selected-background));
    }

    @if not($date-selected-focus-background) and $date-selected-hover-background {
        $date-selected-focus-background: var(--date-selected-hover-background);
    }

    @if not($date-selected-foreground) and $date-selected-background {
        $date-selected-foreground: adaptive-contrast(var(--date-selected-background));
    }

    @if not($date-selected-hover-foreground) and $date-selected-background {
        $date-selected-hover-foreground: adaptive-contrast(var(--date-selected-background));
    }

    @if not($date-selected-focus-foreground) and $date-selected-background {
        $date-selected-focus-foreground: adaptive-contrast(var(--date-selected-background));
    }

    @if $variant == 'indigo' {
        @if not($date-selected-current-border-color) and $date-selected-current-background {
            $date-selected-current-border-color: hsl(
                from var(--date-selected-current-background) h calc(s * 0.9) calc(l * 1.5)
            );
        }

        @if not($date-selected-current-range-foreground) and $date-current-foreground {
            $date-selected-current-range-foreground: var(--date-current-foreground);
        }

        @if not($date-selected-current-range-hover-foreground) and $date-current-hover-foreground {
            $date-selected-current-range-hover-foreground: var(--date-current-hover-foreground);
        }

        @if not($date-selected-current-range-focus-foreground) and $date-selected-current-range-hover-foreground {
            $date-selected-current-range-focus-foreground: var(--date-selected-current-range-hover-foreground);
        }
    } @else {
        @if not($date-selected-current-border-color) and $content-foreground {
            $date-selected-current-border-color: var(--content-foreground);
        }
    }

    @if not($date-selected-current-hover-background) and $date-selected-hover-background {
        $date-selected-current-hover-background: var(--date-selected-hover-background);
    }

    @if not($date-selected-current-hover-border-color) and $date-selected-current-border-color {
        $date-selected-current-hover-border-color: var(--date-selected-current-border-color);
    }

    @if $variant == 'fluent' {
        @if not($date-selected-current-foreground) and $date-current-background {
            $date-selected-current-foreground: adaptive-contrast(var(--date-current-background));
        }

        @if not($date-selected-current-hover-foreground) and $date-current-background {
            $date-selected-current-hover-foreground: adaptive-contrast(var(--date-current-background));
        }

        @if not($date-selected-current-focus-foreground) and $date-current-background {
            $date-selected-current-focus-foreground: adaptive-contrast(var(--date-current-background));
        }
    } @else {
        @if not($date-selected-current-foreground) and $date-selected-background {
            $date-selected-current-foreground: adaptive-contrast(var(--date-selected-background));
        }

        @if not($date-selected-current-hover-foreground) and $date-selected-background {
            $date-selected-current-hover-foreground: adaptive-contrast(var(--date-selected-background));
        }

        @if not($date-selected-current-focus-foreground) and $date-selected-current-focus-background {
            $date-selected-current-focus-foreground: adaptive-contrast(var(--date-selected-current-focus-background));
        }
    }

    @if not($date-selected-current-focus-border-color) and $date-selected-current-hover-border-color {
        $date-selected-current-focus-border-color: var(--date-selected-current-hover-border-color);
    }

    // date selected end

    // date special start
    @if $variant == 'fluent' or $variant == 'bootstrap' {
        @if not($date-special-foreground) and $content-foreground {
            $date-special-foreground: var(--content-foreground);
        }

        @if not($date-special-hover-foreground) and $date-special-foreground {
            $date-special-hover-foreground: var(--date-special-foreground);
        }

        @if not($date-special-focus-foreground) and $date-special-hover-foreground {
            $date-special-focus-foreground: var(--date-special-hover-foreground);
        }

        @if not($date-special-border-color) and $header-background {
            $date-special-border-color: var(--header-background);
        }

        @if not($date-special-hover-border-color) and $date-special-border-color {
            $date-special-hover-border-color: var(--date-special-border-color);
        }

        @if not($date-special-focus-border-color) and $date-special-hover-border-color {
            $date-special-focus-border-color: var(--date-special-hover-border-color);
        }
    } @else {
        @if not($date-special-foreground) and $header-background and not($content-background) {
            $date-special-foreground: var(--header-background);
        }

        @if not($date-special-foreground) and $content-background {
            $date-special-foreground: adaptive-contrast(var(--content-background));
        }

        @if not($date-special-border-color) and $date-special-foreground {
            $date-special-border-color: var(--date-special-foreground);
        }

        @if not($date-special-hover-foreground) and $date-special-foreground {
            $date-special-hover-foreground: dynamic-shade(var(--date-special-foreground), $offset: 7);
        }

        @if not($date-special-hover-border-color) and $date-special-border-color {
            $date-special-hover-border-color: dynamic-shade(var(--date-special-border-color), $offset: 7);
        }

        @if not($date-special-focus-foreground) and $date-special-hover-border-color {
            $date-special-focus-foreground: var(--date-special-hover-border-color);
        }
    }

    @if not($date-special-hover-foreground) and $date-special-foreground {
        $date-special-hover-foreground: dynamic-shade(var(--date-special-foreground), $offset: 7);
    }

    // Special range
    @if not($date-special-range-foreground) and $date-special-foreground {
        $date-special-range-foreground: var(--date-special-foreground);
    }

    @if not($date-special-range-hover-foreground) and $date-special-hover-foreground {
        $date-special-range-hover-foreground: var(--date-special-hover-foreground);
    }

    @if not($date-special-range-focus-foreground) and $date-special-range-hover-foreground {
        $date-special-range-focus-foreground: var(--date-special-range-hover-foreground);
    }

    @if not($date-special-range-background) and $date-special-background {
        $date-special-range-background: var(--date-special-background);
    }

    @if not($date-special-range-hover-background) and $date-special-hover-background {
        $date-special-range-hover-background: var(--date-special-hover-background);
    }

    @if not($date-special-range-focus-background) and $date-special-hover-background {
        $date-special-range-focus-background: var(--date-special-hover-background);
    }

    @if not($date-special-range-border-color) and $date-special-border-color {
        $date-special-range-border-color: var(--date-special-border-color);
    }

    @if not($date-special-range-hover-border-color) and $date-special-range-border-color {
        $date-special-range-hover-border-color: var(--date-special-range-border-color);
    }

    @if not($date-special-range-focus-border-color) and $date-special-range-hover-border-color {
        $date-special-range-focus-border-color: var(--date-special-range-hover-border-color);
    }

    // special range end

    @if not($date-special-hover-background) and $date-hover-background {
        $date-special-hover-background: var(--date-hover-background);
    }

    @if not($date-special-focus-background) and $date-focus-background {
        $date-special-focus-background: var(--date-focus-background);
    }

    @if not($date-special-range-focus-background) and $date-special-focus-background {
        $date-special-range-focus-background: var(--date-special-focus-background);
    }

    @if $variant != 'fluent' {
        @if not($date-special-hover-border-color) and $date-special-border-color {
            $date-special-hover-border-color: var(--date-special-border-color);
        }

        @if not($date-special-hover-border-color) and $date-special-hover-foreground {
            $date-special-hover-border-color: var(--date-special-hover-foreground);
        }

        @if not($date-special-focus-border-color) and $date-special-hover-border-color {
            $date-special-focus-border-color: var(--date-special-hover-border-color);
        }

        @if not($date-selected-special-border-color) and $date-selected-foreground {
            $date-selected-special-border-color: var(--date-selected-foreground);
        }

        @if not($date-selected-special-hover-border-color) and $date-selected-hover-foreground {
            $date-selected-special-hover-border-color: var(--date-selected-hover-foreground);
        }

        @if not($date-selected-special-focus-border-color) and $date-selected-focus-foreground {
            $date-selected-special-focus-border-color: var(--date-selected-focus-foreground);
        }
    } @else {
        @if not($date-selected-special-border-color) and $date-special-border-color {
            $date-selected-special-border-color: var(--date-special-border-color);
        }

        @if not($date-selected-special-hover-border-color) and $date-selected-special-border-color {
            $date-selected-special-hover-border-color: var(--date-selected-special-border-color);
        }

        @if not($date-selected-special-focus-border-color) and $date-selected-special-border-color {
            $date-selected-special-focus-border-color: var(--date-selected-special-border-color);
        }
    }

    // date special end

    // calendar views start
    @if $variant != 'fluent' {
        @if not($ym-selected-background) and $header-background {
            $ym-selected-background: var(--header-background);
        }

        @if not($ym-selected-hover-background) and $ym-selected-background {
            $ym-selected-hover-background: dynamic-shade(var(--ym-selected-background));
        }

        @if not($ym-current-background) and $date-current-background {
            $ym-current-background: var(--date-current-background);
        }

        @if not($ym-current-hover-background) and $date-current-hover-background {
            $ym-current-hover-background: var(--date-current-hover-background);
        }

        @if not($ym-current-outline-color) and $date-current-border-color {
            $ym-current-outline-color: var(--date-current-border-color);
        }

        @if not($ym-current-outline-hover-color) and $ym-current-outline-color {
            $ym-current-outline-hover-color: var(--ym-current-outline-color);
        }

        @if not($ym-current-outline-focus-color) and $ym-current-outline-hover-color {
            $ym-current-outline-focus-color: var(--ym-current-outline-hover-color);
        }

        @if not($ym-selected-current-outline-color) and $ym-current-outline-color {
            $ym-selected-current-outline-color: var(--ym-current-outline-color);
        }

        @if not($ym-selected-current-outline-hover-color) and $ym-current-outline-hover-color {
            $ym-selected-current-outline-hover-color: var(--ym-current-outline-hover-color);
        }

        @if not($ym-selected-current-outline-focus-color) and $ym-current-outline-focus-color {
            $ym-selected-current-outline-focus-color: var(--ym-current-outline-focus-color);
        }
    } @else {
        @if not($ym-selected-background) and $header-background {
            $ym-selected-background: hsl(from var(--header-background) h s l / 0.3);
        }

        @if not($ym-current-background) and $date-selected-background {
            $ym-current-background: var(--date-selected-background);
        }

        @if not($ym-current-hover-background) and $ym-current-background {
            $ym-current-hover-background: dynamic-shade(var(--ym-current-background));
        }

        @if not($ym-selected-hover-background) and $ym-selected-background {
            $ym-selected-hover-background: hsl(from dynamic-shade(var(--ym-selected-background)) h s l / 0.5);
        }

        @if not($ym-selected-current-outline-color) and $ym-selected-current-foreground {
            $ym-selected-current-outline-color: var(--ym-selected-current-foreground);
        }
    }

    @if not($ym-selected-current-background) and $ym-selected-background {
        $ym-selected-current-background: var(--ym-selected-background);
    }

    @if not($ym-selected-current-hover-background) and $ym-selected-hover-background {
        $ym-selected-current-hover-background: var(--ym-selected-hover-background);
    }

    @if not($ym-current-foreground) and $ym-current-background {
        $ym-current-foreground: adaptive-contrast(var(--ym-current-background));
    }

    @if not($ym-current-hover-foreground) and $ym-current-hover-background {
        $ym-current-hover-foreground: adaptive-contrast(var(--ym-current-hover-background));
    }

    @if not($ym-selected-foreground) and $ym-selected-background {
        $ym-selected-foreground: adaptive-contrast(var(--ym-selected-background));
    }

    @if not($ym-selected-hover-foreground) and $ym-selected-hover-background {
        $ym-selected-hover-foreground: adaptive-contrast(var(--ym-selected-hover-background));
    }

    @if not($ym-selected-current-foreground) and $ym-selected-current-background {
        $ym-selected-current-foreground: adaptive-contrast(var(--ym-selected-current-background));
    }

    @if not($ym-selected-current-hover-foreground) and $ym-selected-current-hover-background {
        $ym-selected-current-hover-foreground: adaptive-contrast(var(--ym-selected-current-hover-background));
    }

    // calendar views end

    // date range start
    @if not($date-selected-range-foreground) and $content-foreground {
        $date-selected-range-foreground: var(--content-foreground);
    }

    @if $variant == 'fluent' {
        @if not($date-selected-current-range-background) and $date-current-background {
            $date-selected-current-range-background: var(--date-current-background);
        }

        @if not($date-selected-current-range-hover-background) and $date-selected-current-range-background {
            $date-selected-current-range-hover-background: var(--date-selected-current-range-background);
        }

        @if not($date-selected-current-range-focus-background) and $date-selected-current-range-hover-background {
            $date-selected-current-range-focus-background: var(--date-selected-current-range-hover-background);
        }

        @if not($date-selected-current-range-foreground) and $date-current-foreground {
            $date-selected-current-range-foreground: var(--date-current-foreground);
        }

        @if not($date-selected-current-range-hover-foreground) and $date-current-hover-foreground {
            $date-selected-current-range-hover-foreground: var(--date-current-hover-foreground);
        }

        @if not($date-selected-current-range-focus-foreground) and $date-selected-current-range-hover-foreground {
            $date-selected-current-range-focus-foreground: var(--date-selected-current-range-hover-foreground);
        }

        @if not($date-selected-current-range-focus-background) and $date-current-background {
            $date-selected-current-range-focus-background: adaptive-contrast(var(--date-current-background));
        }

        @if not($date-selected-range-background) and $date-selected-background {
            $date-selected-range-background: var(--date-selected-background);
        }

        @if not($date-selected-range-hover-background) and $date-selected-hover-background {
            $date-selected-range-hover-background: var(--date-selected-hover-background);
        }

        @if not($date-selected-range-focus-background) and $date-selected-hover-background {
            $date-selected-range-focus-background: var(--date-selected-hover-background);
        }
    } @else {
        @if not($date-selected-range-background) and $date-selected-background {
            $date-selected-range-background: hsl(from var(--date-selected-background) h s l / 0.24);
        }

        @if not($date-range-preview-border-color) and $date-selected-background {
            $date-range-preview-border-color: hsl(from var(--date-selected-background) h s l / 0.5);
        }

        @if not($date-selected-current-range-hover-foreground) and $date-selected-current-range-hover-background {
            $date-selected-current-range-hover-foreground: adaptive-contrast(
                var(--date-selected-current-range-hover-background)
            );
        }

        @if not($date-selected-current-range-hover-foreground) and $content-foreground {
            $date-selected-current-range-hover-foreground: var(--content-foreground);
        }

        @if not($date-selected-current-range-background) and $date-current-background {
            $date-selected-current-range-background: var(--date-current-background);
        }

        @if not($date-selected-current-range-hover-background) and $date-selected-current-range-background {
            $date-selected-current-range-hover-background: var(--date-selected-current-range-background);
        }

        @if not($date-selected-current-range-focus-background) and $date-selected-current-range-hover-background {
            $date-selected-current-range-focus-background: var(--date-selected-current-range-hover-background);
        }
    }

    @if not($date-selected-range-hover-background) and $date-hover-background {
        $date-selected-range-hover-background: var(--date-hover-background);
    }

    @if not($date-selected-range-focus-background) and $date-selected-range-hover-background {
        $date-selected-range-focus-background: var(--date-selected-range-hover-background);
    }

    @if not($date-selected-range-hover-foreground) and $date-selected-range-hover-background {
        $date-selected-range-hover-foreground: adaptive-contrast(
            hsl(from var(--date-selected-range-hover-background) h s l / 1)
        );
    }

    @if not($date-selected-range-focus-foreground) and $date-selected-range-focus-background {
        $date-selected-range-focus-foreground: adaptive-contrast(
            hsl(from var(--date-selected-range-focus-background) h s l / 1)
        );
    }

    @if $variant == 'indigo' {
        @if not($date-selected-current-range-background) and $date-selected-background {
            $date-selected-current-range-background: hsl(from var(--date-selected-background) h s calc(l * 0.9) / 0.12);
        }

        @if not($date-selected-current-range-hover-background) and $date-selected-background {
            $date-selected-current-range-hover-background: hsl(
                from var(--date-selected-background) h s calc(l * 0.9) / 0.24
            );
        }

        @if not($date-selected-current-range-foreground) and $date-current-background {
            $date-selected-current-range-foreground: adaptive-contrast(var(--date-current-background));
        }
    } @else {
        @if not($date-selected-current-range-foreground) and $date-current-background {
            $date-selected-current-range-foreground: adaptive-contrast(var(--date-current-background));
        }

        @if not($date-selected-current-range-foreground) and $content-foreground {
            $date-selected-current-range-foreground: var(--content-foreground);
        }
    }

    @if not($date-special-range-foreground) and $date-special-foreground {
        $date-special-range-foreground: dynamic-shade(var(--date-special-foreground), $offset: 7);
    }

    @if not($date-special-range-border-color) and $date-special-range-foreground {
        $date-special-range-border-color: var(--date-special-range-foreground);
    }

    @if not($date-special-range-hover-background) and $date-selected-range-hover-background {
        $date-special-range-hover-background: var(--date-selected-range-hover-background);
    }

    // date range end

    @if not($date-disabled-foreground) and $content-background {
        $date-disabled-foreground: hsl(from adaptive-contrast(var(--content-background)) h s l / 0.3);
    }

    @if not($date-disabled-range-foreground) and $date-selected-range-background {
        $date-disabled-range-foreground: hsl(from adaptive-contrast(var(--content-background)) h s l / 0.3);
    }

    // Selected + special
    @if not($date-selected-special-background) and $date-selected-background {
        $date-selected-special-background: var(--date-selected-background);
    }

    @if not($date-selected-special-hover-background) and $date-selected-hover-background {
        $date-selected-special-hover-background: var(--date-selected-hover-background);
    }

    @if not($date-selected-special-focus-background) and $date-selected-hover-background {
        $date-selected-special-focus-background: var(--date-selected-hover-background);
    }

    @if not($date-selected-special-focus-background) and $date-selected-focus-background {
        $date-selected-special-focus-background: var(--date-selected-focus-background);
    }

    @if not($date-selected-special-foreground) and $date-selected-foreground {
        $date-selected-special-foreground: var(--date-selected-foreground);
    }

    @if not($date-selected-special-hover-foreground) and $date-selected-hover-foreground {
        $date-selected-special-hover-foreground: var(--date-selected-hover-foreground);
    }

    @if not($date-selected-special-focus-foreground) and $date-selected-special-hover-foreground {
        $date-selected-special-focus-foreground: var(--date-selected-special-hover-foreground);
    }

    @if not($date-selected-special-focus-foreground) and $date-selected-focus-foreground {
        $date-selected-special-focus-foreground: var(--date-selected-focus-foreground);
    }

    @return extend(
        $theme,
        (
            selector: $selector,

            size: $size,
            inner-size: $inner-size,

            weekday-color: $weekday-color,
            actions-divider-color: $actions-divider-color,

            // CALENDAR container
            border-radius: $border-radius,
            content-background: $content-background,
            border-color: $border-color,

            // HEADER section
            header-background: $header-background,
            header-foreground: $header-foreground,

            // PICKER sections
            picker-foreground: $picker-foreground,
            picker-background: $picker-background,
            picker-hover-foreground: $picker-hover-foreground,
            picker-focus-foreground: $picker-focus-foreground,

            // NAVIGATION (icons)
            navigation-color: $navigation-color,
            navigation-hover-color: $navigation-hover-color,
            navigation-focus-color: $navigation-focus-color,

            // YEARS & MONTH
            ym-border-radius: $ym-border-radius,

            ym-hover-foreground: $ym-hover-foreground,
            ym-hover-background: $ym-hover-background,

            // current state
            ym-current-outline-color: $ym-current-outline-color,
            ym-current-outline-hover-color: $ym-current-outline-hover-color,
            ym-current-outline-focus-color: $ym-current-outline-focus-color,

            ym-current-background: $ym-current-background,
            ym-current-foreground: $ym-current-foreground,
            ym-current-hover-foreground: $ym-current-hover-foreground,
            ym-current-hover-background: $ym-current-hover-background,

            // selected state
            ym-selected-outline-color: $ym-selected-outline-color,
            ym-selected-hover-outline-color: $ym-selected-hover-outline-color,
            ym-selected-focus-outline-color: $ym-selected-focus-outline-color,

            ym-selected-foreground: $ym-selected-foreground,
            ym-selected-background: $ym-selected-background,
            ym-selected-hover-foreground: $ym-selected-hover-foreground,
            ym-selected-hover-background: $ym-selected-hover-background,

            // selected + current state
            ym-selected-current-outline-color: $ym-selected-current-outline-color,
            ym-selected-current-outline-hover-color: $ym-selected-current-outline-hover-color,
            ym-selected-current-outline-focus-color: $ym-selected-current-outline-focus-color,

            ym-selected-current-foreground: $ym-selected-current-foreground,
            ym-selected-current-background: $ym-selected-current-background,
            ym-selected-current-hover-foreground: $ym-selected-current-hover-foreground,
            ym-selected-current-hover-background: $ym-selected-current-hover-background,

            // WEEK NUMBERS COLUMN
            week-number-border-radius: $week-number-border-radius,
            week-number-foreground: $week-number-foreground,
            week-number-background: $week-number-background,

            // DATES
            // content foreground is used as default date foreground
            content-foreground: $content-foreground,

            // weekend is Saturday & Sunday
            weekend-color: $weekend-color,

            // inactive dates are from previous or next month
            inactive-color: $inactive-color,

            // idle state
            date-border-radius: $date-border-radius,

            date-border-color: $date-border-color,
            date-hover-border-color: $date-hover-border-color,
            date-focus-border-color: $date-focus-border-color,

            date-hover-background: $date-hover-background,
            date-focus-background: $date-focus-background,
            date-hover-foreground: $date-hover-foreground,
            date-focus-foreground: $date-focus-foreground,

            // selected state
            date-selected-border-color: $date-selected-border-color,
            date-selected-hover-border-color: $date-selected-hover-border-color,
            date-selected-focus-border-color: $date-selected-focus-border-color,

            date-selected-background: $date-selected-background,
            date-selected-foreground: $date-selected-foreground,
            date-selected-hover-background: $date-selected-hover-background,
            date-selected-focus-background: $date-selected-focus-background,
            date-selected-hover-foreground: $date-selected-hover-foreground,
            date-selected-focus-foreground: $date-selected-focus-foreground,

            // selected + special state
            date-selected-special-border-color: $date-selected-special-border-color,
            date-selected-special-hover-border-color: $date-selected-special-hover-border-color,
            date-selected-special-focus-border-color: $date-selected-special-focus-border-color,

            date-selected-special-background: $date-selected-special-background,
            date-selected-special-foreground: $date-selected-special-foreground,
            date-selected-special-hover-background: $date-selected-special-hover-background,
            date-selected-special-focus-background: $date-selected-special-focus-background,
            date-selected-special-hover-foreground: $date-selected-special-hover-foreground,
            date-selected-special-focus-foreground: $date-selected-special-focus-foreground,

            // date selected + range state
            date-range-border-radius: $date-range-border-radius,
            date-range-border-color: $date-range-border-color,
            date-range-preview-border-color: $date-range-preview-border-color,

            date-selected-range-foreground: $date-selected-range-foreground,
            date-selected-range-background: $date-selected-range-background,
            date-selected-range-hover-foreground: $date-selected-range-hover-foreground,
            date-selected-range-hover-background: $date-selected-range-hover-background,
            date-selected-range-focus-foreground: $date-selected-range-focus-foreground,
            date-selected-range-focus-background: $date-selected-range-focus-background,

            // date selected + current + range state
            date-selected-current-range-foreground: $date-selected-current-range-foreground,
            date-selected-current-range-background: $date-selected-current-range-background,
            date-selected-current-range-hover-foreground: $date-selected-current-range-hover-foreground,
            date-selected-current-range-hover-background: $date-selected-current-range-hover-background,
            date-selected-current-range-focus-foreground: $date-selected-current-range-focus-foreground,
            date-selected-current-range-focus-background: $date-selected-current-range-focus-background,

            // current state
            date-current-border-radius: $date-current-border-radius,

            date-current-border-color: $date-current-border-color,
            date-current-hover-border-color: $date-current-hover-border-color,
            date-current-focus-border-color: $date-current-focus-border-color,

            date-current-background: $date-current-background,
            date-current-foreground: $date-current-foreground,
            date-current-hover-background: $date-current-hover-background,
            date-current-focus-background: $date-current-focus-background,
            date-current-hover-foreground: $date-current-hover-foreground,
            date-current-focus-foreground: $date-current-focus-foreground,

            // date selected + state
            date-selected-current-border-color: $date-selected-current-border-color,
            date-selected-current-hover-border-color: $date-selected-current-hover-border-color,
            date-selected-current-focus-border-color: $date-selected-current-focus-border-color,

            date-selected-current-background: $date-selected-current-background,
            date-selected-current-hover-background: $date-selected-current-hover-background,
            date-selected-current-focus-background: $date-selected-current-focus-background,
            date-selected-current-foreground: $date-selected-current-foreground,
            date-selected-current-hover-foreground: $date-selected-current-hover-foreground,
            date-selected-current-focus-foreground: $date-selected-current-focus-foreground,

            // date special state
            date-special-border-radius: $date-special-border-radius,

            date-special-border-color: $date-special-border-color,
            date-special-hover-border-color: $date-special-hover-border-color,
            date-special-focus-border-color: $date-special-focus-border-color,

            date-special-foreground: $date-special-foreground,
            date-special-background: $date-special-background,
            date-special-hover-foreground: $date-special-hover-foreground,
            date-special-hover-background: $date-special-hover-background,
            date-special-focus-foreground: $date-special-focus-foreground,
            date-special-focus-background: $date-special-focus-background,

            // date special + range state
            date-special-range-border-color: $date-special-range-border-color,
            date-special-range-hover-border-color: $date-special-range-hover-border-color,
            date-special-range-focus-border-color: $date-special-range-focus-border-color,

            date-special-range-foreground: $date-special-range-foreground,
            date-special-range-hover-foreground: $date-special-range-hover-foreground,
            date-special-range-focus-foreground: $date-special-range-focus-foreground,
            date-special-range-background: $date-special-range-background,
            date-special-range-hover-background: $date-special-range-hover-background,
            date-special-range-focus-background: $date-special-range-focus-background,

            // disabled dates
            // date-disabled-foreground is used for idle date
            date-disabled-foreground: $date-disabled-foreground,

            // date-disabled-range-foreground is used for idle date in selected range
            date-disabled-range-foreground: $date-disabled-range-foreground,
        )
    );
}
