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

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

/// Generates a dark material radio schema.
/// @type {Map}
/// @requires $material-radio
$dark-material-radio: extend(
    $material-radio,
    (
        _meta: (
            theme: 'material',
            variant: 'dark',
        ),
    )
);

/// Generates a dark fluent radio schema.
/// @type {Map}
/// @prop {Map} hover-color [color: ('gray', 400)] - The border and dot colors on hover.
/// @prop {Map} fill-color [color: ('primary', 300)] - The checked border and dot colors.
/// @prop {Map} fill-hover-border-color [color: ('primary', 100)] - The text color used for the label text.
/// @prop {Map} fill-color-hover [color: ('primary', 100)] - The checked border and dot colors on hover.
/// @prop {Map} focus-outline-color [color: ('gray', 400)] - The focus outlined color.
/// @prop {Map} error-color [color: ('error', 100)] - The label, border and dot color in invalid state.
/// @prop {Map} error-color-hover [color: ('error', 50)] - The border and dot color in invalid state on hover.
/// @prop {Map} disabled-color [color: ('gray', 100)] - The disabled border and dot colors.
/// @prop {Map} disabled-fill-color [color: ('gray', 100)] - The disabled checked border and dot colors.
/// @prop {Map} disabled-label-color [color: ('gray', 300)] - The disabled label color.
/// @requires $fluent-radio
$dark-fluent-radio: extend(
    $fluent-radio,
    (
        hover-color: (
            color: (
                'gray',
                400,
            ),
        ),
        fill-color: (
            color: (
                'primary',
                300,
            ),
        ),
        fill-hover-border-color: (
            color: (
                'primary',
                100,
            ),
        ),
        fill-color-hover: (
            color: (
                'primary',
                100,
            ),
        ),
        focus-outline-color: (
            color: (
                'gray',
                400,
            ),
        ),
        error-color: (
            color: (
                'error',
                100,
            ),
        ),
        error-color-hover: (
            color: (
                'error',
                50,
            ),
        ),
        disabled-color: (
            color: (
                'gray',
                100,
            ),
        ),
        disabled-fill-color: (
            color: (
                'gray',
                100,
            ),
        ),
        disabled-label-color: (
            color: (
                'gray',
                300,
            ),
        ),
        _meta: (
            theme: 'fluent',
            variant: 'dark',
        ),
    )
);

/// Generates a dark bootstrap radio schema.
/// @type {Map}
/// @requires $bootstrap-radio
/// @prop {Map} focus-outline-color [color: ('primary', 900, 0.5)] - The focus outline color.
/// @prop {Map} focus-outline-color-error [color: ('error', 900, 0.5)] - The focus outline color when radio is invalid.
/// @prop {Map} error-color [color: ('error', 300)] - The label, border and dot color in invalid state.
/// @prop {Map} error-color-hover [color: ('error', 400)] - The focus outlined color in invalid state.
/// @prop {Map} disabled-color [color: ('gray', 100)] - The disabled border color.
/// @prop {Map} disabled-label-color [color: ('gray', 300)] - The disabled label color.
$dark-bootstrap-radio: extend(
    $bootstrap-radio,
    (
        focus-outline-color: (
            color: (
                'primary',
                900,
                0.5,
            ),
        ),
        focus-outline-color-error: (
            color: (
                'error',
                900,
                0.5,
            ),
        ),
        error-color: (
            color: (
                'error',
                300,
            ),
        ),
        error-color-hover: (
            color: (
                'error',
                400,
            ),
        ),
        disabled-color: (
            color: (
                'gray',
                100,
            ),
        ),
        disabled-label-color: (
            color: (
                'gray',
                300,
            ),
        ),
        _meta: (
            theme: 'bootstrap',
            variant: 'dark',
        ),
    )
);

/// Generates a dark indigo radio schema.
/// @type {Map}
/// @prop {Map} label-color [contrast-color: ('primary', 500, 0.8)] - The text color used for the label text.
/// @prop {Map} label-color-hover [contrast-color: ('primary', 500)] - The text color used for the label text on hover.
/// @prop {Map} hover-color [contrast-color: ('primary', 500, 0.8)] - The text color used for the label text.
/// @prop {Map} focus-outline-color [contrast-color: ('primary', 500, 0.2)] - The focus outlined color.
/// @prop {Map} empty-color [contrast-color: ('primary', 500, 0.6)] - The unchecked border color.
/// @prop {Map} disabled-color [contrast-color: ('primary', 500, 0.2)] - The disabled border and dot colors.
/// @prop {Map} disabled-label-color [contrast-color: ('primary', 500, 0.2)] - The disabled label color.
/// @prop {Map} error-color [color: ('error', 400)] - The label, border and dot color in invalid state.
/// @prop {Map} error-color-hover [color: ('error', 300)] - The focus outlined color in invalid state.
/// @prop {Map} focus-outline-color-error [color: ('error', 400, 0.5)] - The focus outline color when radio is filled and invalid.
/// @requires $indigo-radio
$dark-indigo-radio: extend(
    $indigo-radio,
    (
        label-color: (
            contrast-color: (
                'primary',
                500,
                0.8,
            ),
        ),
        label-color-hover: (
            contrast-color: (
                'primary',
                500,
            ),
        ),
        hover-color: (
            contrast-color: (
                'primary',
                500,
                0.8,
            ),
        ),
        focus-outline-color: (
            contrast-color: (
                'primary',
                500,
                0.2,
            ),
        ),
        error-color: (
            color: (
                'error',
                400,
            ),
        ),
        error-color-hover: (
            color: (
                'error',
                300,
            ),
        ),
        empty-color: (
            contrast-color: (
                'primary',
                500,
                0.6,
            ),
        ),
        disabled-color: (
            contrast-color: (
                'primary',
                500,
                0.2,
            ),
        ),
        disabled-label-color: (
            contrast-color: (
                'primary',
                500,
                0.2,
            ),
        ),
        _meta: (
            theme: 'indigo',
            variant: 'dark',
        ),
    )
);
