@use '../../../../utils/map' as *;
@use '../light/tile-manager' as *;

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

/// Generates a dark base tile manager schema.
/// @type Map
/// @prop {Map} hover-border-color [color: ('gray', 200)] - The border color of the tile component on hover.
/// @prop {Map} placeholder-background [color: ('primary', 700, .15)] - The background color of the ghost element that appears during drag and drop and while resizing.
/// @prop {Map} overlay-background [color: ('primary', 700, .5)] - The background color of the ghost element that appears on top of the tile that will be swapped.
$dark-base-tile-manager: (
    hover-border-color: (
        color: (
            'gray',
            200,
        ),
    ),

    placeholder-background: (
        color: (
            'primary',
            700,
            0.15,
        ),
    ),

    overlay-background: (
        color: (
            'primary',
            700,
            0.5,
        ),
    ),
    _meta: (
        name: 'tile-manager',
        variant: 'dark',
    ),
);

/// Generates a dark material tile manager schema.
/// @type Map
/// @requires $material-tile-manager
/// @requires $dark-base-tile-manager
$dark-material-tile-manager: extend($material-tile-manager, $dark-base-tile-manager);

/// Generates a dark fluent tile manager schema.
/// @type Map
/// @requires $fluent-tile-manager
/// @requires $dark-base-tile-manager
$dark-fluent-tile-manager: extend($fluent-tile-manager, $dark-base-tile-manager);

/// Generates a dark bootstrap tile manager schema.
/// @type Map
/// @prop {Map} background [color: ('gray', 100)] - The background color of the tile manager component.
/// @prop {Map} border-color [color: ('gray', 200)] - The border color of the tile component on hover.
/// @prop {Map} hover-border-color [color: ('gray', 300)] - The border color of the tile component on hover.
/// @prop {Map} placeholder-background [color: ('primary', 700, .15)] - The background color of the ghost element that appears during drag and drop and while resizing.
/// @prop {Map} overlay-background [color: ('primary', 700, .4)] - The background color of the ghost element that appears on top of the tile that will be swapped.
/// @requires $bootstrap-tile-manager
$dark-bootstrap-tile-manager: extend(
    $bootstrap-tile-manager,
    (
        background: (
            color: (
                'gray',
                100,
            ),
        ),

        border-color: (
            color: (
                'gray',
                200,
            ),
        ),

        hover-border-color: (
            color: (
                'gray',
                300,
            ),
        ),

        placeholder-background: (
            color: (
                'primary',
                700,
                0.15,
            ),
        ),

        overlay-background: (
            color: (
                'primary',
                700,
                0.4,
            ),
        ),

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

/// Generates a dark indigo tile manager schema.
/// @type Map
/// @prop {Map} tile-background [color: ('gray', 50)] - The background color of the tile component inside the tile manager.
/// @prop {Map} title-color [contrast-color: ('gray', 50, .9)] - The title color of the tile component.
/// @prop {Map} header-background [color: ('gray', 50)] - The background color of the tile header component.
/// @prop {Map} content-background [color: ('gray', 50)] - The background color of the tile component content.
/// @prop {Map} border-color [color: ('gray', 100)] - The border color of the tile component.
/// @prop {Map} hover-border-color [color: ('gray', 200)] - The border color of the tile component on hover.
/// @prop {Map} placeholder-background [color: ('primary', 500, .15)] - The background color of the ghost element that appears during drag and drop and while resizing.
/// @prop {Map} overlay-background [color: ('primary', 700, .5)] - The background color of the ghost element that appears on top of the tile that will be swapped.
/// @prop {Map} ghost-border [color: ('primary', 300)] - The border color of the ghost element that appears during drag and drop and while resizing.
/// @requires $indigo-tile-manager
$dark-indigo-tile-manager: extend(
    $indigo-tile-manager,
    (
        tile-background: (
            color: (
                'gray',
                50,
            ),
        ),

        title-color: (
            contrast-color: (
                'gray',
                50,
                0.9,
            ),
        ),

        header-background: (
            color: (
                'gray',
                50,
            ),
        ),

        content-background: (
            color: (
                'gray',
                50,
            ),
        ),

        border-color: (
            color: (
                'gray',
                100,
            ),
        ),

        hover-border-color: (
            color: (
                'gray',
                200,
            ),
        ),

        placeholder-background: (
            color: (
                'primary',
                500,
                0.15,
            ),
        ),

        overlay-background: (
            color: (
                'primary',
                700,
                0.5,
            ),
        ),

        ghost-border: (
            color: (
                'primary',
                300,
            ),
        ),

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