/**
 * Dropdown
 */

@use '../../../css/mixins';

.dropdown-wrapper {
    display: inline-block;
    position: relative;

    .dropdown-trigger {
        cursor: pointer;
    }

    .dropdown {
        @include mixins.popup(var(--dropdown--z-index, 2000));
        @include mixins.popup-arrow();
        @include mixins.popup-arrow-size-variant(var(--dropdown--arrow--size, 6px));

        text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
        list-style: none;
        line-height: var(--dropdown--line-height, var(--line-height));
        font-size: var(--dropdown--font-size, var(--font-size));
        background-clip: padding-box;
        display: inline-block;
        white-space: normal;
        min-width: var(--dropdown--min-width, 240px);
        max-width: var(--dropdown--max-width, 90vw);
        color: var(--dropdown--color);
        box-shadow: var(
            --dropdown--box-shadow,
            var(--dropdown--box-shadow-x-offset, var(--box-shadow-offset-x))
                var(--dropdown--box-shadow-y-offset, var(--box-shadow-offset-y))
                var(--dropdown--box-shadow-blur-radius, var(--box-shadow-blur-radius))
                var(--dropdown--box-shadow-spread-radius, var(--box-shadow-spread-radius))
                var(--dropdown--box-shadow-color, var(--box-shadow-color))
        );

        > .dropdown-header {
            border-style: var(
                --dropdown--header--border-style,
                var(
                        --dropdown--header--border-top-style,
                        var(--dropdown--border-top-style, var(--border-top-style))
                    )
                    var(
                        --dropdown--header--border-right-style,
                        var(--dropdown--border-right-style, var(--border-right-style))
                    )
                    var(
                        --dropdown--header--border-bottom-style,
                        var(--dropdown--border-bottom-style, var(--border-bottom-style))
                    )
                    var(
                        --dropdown--header--border-left-style,
                        var(--dropdown--border-left-style, var(--border-left-style))
                    )
            );
            border-width: var(
                --dropdown--header--border-width,
                var(
                        --dropdown--header--border-top-width,
                        var(--dropdown--border-top-width, var(--border-top-width))
                    )
                    var(
                        --dropdown--header--border-right-width,
                        var(--dropdown--border-right-width, var(--border-right-width))
                    )
                    var(
                        --dropdown--header--border-bottom-width,
                        var(--dropdown--border-bottom-width, 0)
                    )
                    var(
                        --dropdown--header--border-left-width,
                        var(--dropdown--border-left-width, var(--border-left-width))
                    )
            );
            border-color: var(
                --dropdown--header--border-color,
                var(
                        --dropdown--header--border-top-color,
                        var(--dropdown--border-top-color, var(--border-top-color))
                    )
                    var(
                        --dropdown--header--border-right-color,
                        var(--dropdown--border-right-color, var(--border-right-color))
                    )
                    var(
                        --dropdown--header--border-bottom-color,
                        var(--dropdown--border-bottom-color, var(--border-bottom-color))
                    )
                    var(
                        --dropdown--header--border-left-color,
                        var(--dropdown--border-left-color, var(--border-left-color))
                    )
            );
            background-color: var(--dropdown--header--background, var(--dropdown--background));
            padding: var(
                --dropdown--header--padding,
                var(
                        --dropdown--header--padding-top,
                        var(--dropdown--padding-top, var(--padding-top))
                    )
                    var(
                        --dropdown--header--padding-right,
                        var(--dropdown--padding-right, var(--padding-right))
                    )
                    var(
                        --dropdown--header--padding-bottom,
                        var(--dropdown--padding-bottom, var(--padding-bottom))
                    )
                    var(
                        --dropdown--header--padding-left,
                        var(--dropdown--padding-left, var(--padding-left))
                    )
            );
            transition-property: var(
                --dropdown--header--transition-property,
                var(--dropdown--transition-property, border-color)
            );
            transition-duration: var(
                --dropdown--header--transition-duration,
                var(--dropdown--transition-duration, var(--transition-duration))
            );
            transition-timing-function: var(
                --dropdown--header--transition-timing-function,
                var(--dropdown--transition-timing-function, var(--transition-timing-function))
            );
        }

        > .dropdown-body {
            display: flex;
            flex-direction: column;
            border-style: var(
                --dropdown--body--border-style,
                var(
                        --dropdown--body--border-top-style,
                        var(--dropdown--border-top-style, var(--border-top-style))
                    )
                    var(
                        --dropdown--body--border-right-style,
                        var(--dropdown--border-right-style, var(--border-right-style))
                    )
                    var(
                        --dropdown--body--border-bottom-style,
                        var(--dropdown--border-bottom-style, var(--border-bottom-style))
                    )
                    var(
                        --dropdown--body--border-left-style,
                        var(--dropdown--border-left-style, var(--border-left-style))
                    )
            );
            border-width: var(
                --dropdown--body--border-width,
                var(
                        --dropdown--body--border-top-width,
                        var(--dropdown--border-top-width, var(--border-top-width))
                    )
                    var(
                        --dropdown--body--border-right-width,
                        var(--dropdown--border-right-width, var(--border-right-width))
                    )
                    var(
                        --dropdown--body--border-bottom-width,
                        var(--dropdown--border-bottom-width, var(--border-bottom-width))
                    )
                    var(
                        --dropdown--body--border-left-width,
                        var(--dropdown--border-left-width, var(--border-left-width))
                    )
            );
            border-color: var(
                --dropdown--body--border-color,
                var(
                        --dropdown--body--border-top-color,
                        var(--dropdown--border-top-color, var(--border-top-color))
                    )
                    var(
                        --dropdown--body--border-right-color,
                        var(--dropdown--border-right-color, var(--border-right-color))
                    )
                    var(
                        --dropdown--body--border-bottom-color,
                        var(--dropdown--border-bottom-color, var(--border-bottom-color))
                    )
                    var(
                        --dropdown--body--border-left-color,
                        var(--dropdown--border-left-color, var(--border-left-color))
                    )
            );
            background-color: var(--dropdown--body--background, var(--dropdown--background));
            padding: var(
                --dropdown--body--padding,
                var(--dropdown--body--padding-top, var(--dropdown--padding-top, var(--padding-top)))
                    var(
                        --dropdown--body--padding-right,
                        var(--dropdown--padding-right, var(--padding-right))
                    )
                    var(
                        --dropdown--body--padding-bottom,
                        var(--dropdown--padding-bottom, var(--padding-bottom))
                    )
                    var(
                        --dropdown--body--padding-left,
                        var(--dropdown--padding-left, var(--padding-left))
                    )
            );
            transition-property: var(
                --dropdown--body--transition-property,
                var(--dropdown--transition-property, border-color)
            );
            transition-duration: var(
                --dropdown--body--transition-duration,
                var(--dropdown--transition-duration, var(--transition-duration))
            );
            transition-timing-function: var(
                --dropdown--body--transition-timing-function,
                var(--dropdown--transition-timing-function, var(--transition-timing-function))
            );

            .dropdown-wrapper {
                width: 100%;
            }
        }

        > .dropdown-footer {
            border-style: var(
                --dropdown--footer--border-style,
                var(
                        --dropdown--footer--border-top-style,
                        var(--dropdown--border-top-style, var(--border-top-style))
                    )
                    var(
                        --dropdown--footer--border-right-style,
                        var(--dropdown--border-right-style, var(--border-right-style))
                    )
                    var(
                        --dropdown--footer--border-bottom-style,
                        var(--dropdown--border-bottom-style, var(--border-bottom-style))
                    )
                    var(
                        --dropdown--footer--border-left-style,
                        var(--dropdown--border-left-style, var(--border-left-style))
                    )
            );
            border-width: var(
                --dropdown--footer--border-width,
                var(--dropdown--footer--border-top-width, var(--dropdown--border-top-width, 0))
                    var(
                        --dropdown--footer--border-right-width,
                        var(--dropdown--border-right-width, var(--border-right-width))
                    )
                    var(
                        --dropdown--footer--border-bottom-width,
                        var(--dropdown--border-bottom-width, var(--border-bottom-width))
                    )
                    var(
                        --dropdown--footer--border-left-width,
                        var(--dropdown--border-left-width, var(--border-left-width))
                    )
            );
            border-color: var(
                --dropdown--footer--border-color,
                var(
                        --dropdown--footer--border-top-color,
                        var(--dropdown--border-top-color, var(--border-top-color))
                    )
                    var(
                        --dropdown--footer--border-right-color,
                        var(--dropdown--border-right-color, var(--border-right-color))
                    )
                    var(
                        --dropdown--footer--border-bottom-color,
                        var(--dropdown--border-bottom-color, var(--border-bottom-color))
                    )
                    var(
                        --dropdown--footer--border-left-color,
                        var(--dropdown--border-left-color, var(--border-left-color))
                    )
            );
            background-color: var(--dropdown--footer--background, var(--dropdown--background));
            padding: var(
                --dropdown--footer--padding,
                var(
                        --dropdown--footer--padding-top,
                        var(--dropdown--padding-top, var(--padding-top))
                    )
                    var(
                        --dropdown--footer--padding-right,
                        var(--dropdown--padding-right, var(--padding-right))
                    )
                    var(
                        --dropdown--footer--padding-bottom,
                        var(--dropdown--padding-bottom, var(--padding-bottom))
                    )
                    var(
                        --dropdown--footer--padding-left,
                        var(--dropdown--padding-left, var(--padding-left))
                    )
            );
            transition-property: var(
                --dropdown--footer--transition-property,
                (var(--dropdown--transition-property, (border-color)))
            );
            transition-duration: var(
                --dropdown--footer--transition-duration,
                var(--dropdown--transition-duration, var(--transition-duration))
            );
            transition-timing-function: var(
                --dropdown--footer--transition-timing-function,
                var(--dropdown--transition-timing-function, var(--transition-timing-function))
            );
        }

        > div:first-of-type {
            border-top-left-radius: var(
                --dropdown--border-top-left-radius,
                var(--border-top-left-radius)
            );
            border-top-right-radius: var(
                --dropdown--border-top-right-radius,
                var(--border-top-right-radius)
            );
        }

        > div:last-of-type {
            border-bottom-left-radius: var(
                --dropdown--border-bottom-left-radius,
                var(--border-bottom-left-radius)
            );
            border-bottom-right-radius: var(
                --dropdown--border-bottom-right-radius,
                var(--border-bottom-right-radius)
            );
        }

        @include mixins.popup-arrow-color-variant-for-side(
            'top',
            var(--dropdown--background),
            var(--dropdown--border-bottom-color, var(--border-bottom-color))
        );

        @include mixins.popup-arrow-color-variant-for-side(
            'right',
            var(--dropdown--background),
            var(--dropdown--border-left-color, var(--border-left-color))
        );

        @include mixins.popup-arrow-color-variant-for-side(
            'bottom',
            var(--dropdown--background),
            var(--dropdown--border-top-color, var(--border-top-color))
        );

        @include mixins.popup-arrow-color-variant-for-side(
            'left',
            var(--dropdown--background),
            var(--dropdown--border-right-color, var(--border-right-color))
        );
    }
}
