@use "../core/_index.scss" as *;
@use "../button/_variables.scss" as *;
@use "../list/_variables.scss" as *;
@use "../popup/_variables.scss" as *;
@use "../tooltip/_variables.scss" as *;
@use "./_variables.scss" as *;
@use "@progress/kendo-theme-core/scss/components/grid/_theme.scss" as *;

@mixin kendo-grid--theme() {

    @include kendo-grid--theme-base();

    .k-grouping-header,
    .k-grid-grouping-header {
        @include fill(
            $kendo-grid-grouping-header-text,
            $kendo-grid-grouping-header-bg,
            $kendo-grid-grouping-header-border
        );
    }

    .k-group-footer td,
    .k-grouping-row td,
    .k-group-footer .k-table-td,
    .k-grouping-row .k-table-td,
    .k-table-tbody .k-group-cell {
        @include fill(
            $border: $kendo-grid-grouping-row-border
        );
    }

    .k-grouping-dropclue {
        &::before,
        &::after {
            @include fill(
                $bg: $kendo-grid-group-drop-hint-bg
            );
        }
    }

    .k-grid {
        .k-grid-container {
            border-color: inherit;
        }

        // Hover state
        .k-table-tbody > .k-table-row:not(.k-detail-row):hover,
        .k-table-tbody > .k-table-row:not(.k-detail-row).k-hover {
            @include fill(
                $border: $kendo-grid-hover-border
            );
        }

        // Selected state
        td.k-selected,
        .k-table-row.k-selected > td,
        .k-table-td.k-selected,
        .k-table-row.k-selected > .k-table-td {
            border-block-color: $kendo-grid-selected-border;
        }

        // Locked columns
        .k-grid-header-locked,
        .k-grid-content-locked,
        .k-grid-footer-locked,
        .k-grid-header-locked .k-table-th,
        .k-grid-content-locked td,
        .k-grid-content-locked .k-table-td,
        .k-grid-footer-locked td,
        .k-grid-footer-locked .k-table-td {
            border-inline-color: $kendo-grid-sticky-header-border;
            border-block-color: $kendo-grid-border;
        }

        // Sticky columns
        .k-master-row {
            .k-grid-content-sticky {
                border-color: $kendo-grid-header-border;
                border-inline-color: $kendo-grid-sticky-header-border;
            }
        }


        .k-table-row.k-selected > .k-table-td.k-grid-content-sticky {
            border-inline-color: $kendo-grid-sticky-border;
        }
    }

    // Grid header
    .k-grid-header {
        @include fill(
            $kendo-grid-header-text,
            $kendo-grid-header-bg,
            $kendo-grid-header-border
        );

        .k-sort-icon {
            @include fill( $color: $kendo-grid-sort-indicator-text );
        }

        .k-sort-order {
            @include fill( $color: $kendo-grid-sort-indicator-order-text );
        }

        .k-grid-filter,
        .k-header-column-menu,
        .k-grid-header-menu,
        .k-hierarchy-cell .k-icon {
            &:hover {
                @include fill(
                    $color: k-color(on-base),
                    $bg: k-color(base-hover)
                );
            }
            &:focus,
            &.k-focus {
                box-shadow: inset 0 0 0 2px color-mix(in srgb, k-color(on-app-surface) 10%, transparent);
            }
            &.k-active {
                @include fill(
                    $color: k-color(on-base),
                    $bg: k-color(base-active)
                );
            }
        }

    }

    .k-grid-pinned-wrap {
        > .k-table {
            box-shadow: $kendo-grid-border-width 0 0 0 $kendo-grid-border;
        }
    }


    // Column/Filter Menu
    .k-filter-menu.k-popup,
    .k-column-menu.k-popup {
        @include box-shadow( $kendo-grid-column-menu-shadow );
    }

    .k-column-menu {
        .k-menu:not(.k-context-menu) {
            @include fill(
                $kendo-grid-column-menu-text,
                $kendo-grid-column-menu-bg,
                $kendo-grid-column-menu-border
            );
        }

        .k-columnmenu-item,
        .k-column-list-item,
        .k-menu:not(.k-context-menu) .k-item {
            @include fill(
                $kendo-grid-column-menu-item-text,
                $kendo-grid-column-menu-item-bg
            );

            .k-icon {
                @include fill(
                    $color: $kendo-grid-column-menu-item-icon-text
                );
            }

            &.k-disabled .k-link,
            &.k-disabled .k-icon {
                @include disabled(
                    color-mix(in srgb, k-color(on-app-surface) 46%, transparent)
                );
            }
        }

        .k-listgroup-item {
            &.k-disabled {
                @include disabled(
                    $bg: k-color(base-subtle)
                );
            }
        }
    }

    .k-columnmenu-item-wrapper + .k-columnmenu-item-wrapper,
    .k-column-menu-footer {
        border-block-start-color: color-mix(in srgb, k-color(border) 16%, transparent);
    }

    .k-columnmenu-indicators {
        color: $kendo-grid-sort-indicator-order-text;
    }
}
