@use "../../mixins/index.scss" as *;
@use "../../spacing/index.scss" as *;
@use "../../color-system/_constants.scss" as *;
@use "../../color-system/_functions.scss" as *;
@use "../../_variables.scss" as *;
@use "./variables.scss" as *;
@use "../button/_variables.scss" as *;
@use "../list/_variables.scss" as *;
@use "../popup/_variables.scss" as *;

@mixin kendo-grid--theme-base() {


    .k-grid {
        background-color: $kendo-grid-bg;
        color: $kendo-grid-text;
        border-color: $kendo-grid-border;

        .k-table {
            background-color: inherit;
            color: inherit;
        }

        .k-table-th,
        .k-table-td {
            border-color: $kendo-grid-header-border;
        }

        // Sorted column
        .k-sorted {
            background-color: $kendo-grid-sorted-bg;
        }

        // Alt row
        .k-table-alt-row {
            background-color: $kendo-grid-alt-bg;
        }

        // Hover state
        :where(.k-grid-container) .k-table-row:is(:hover, .k-hover),
        :where(.k-grid-container) .k-master-row:is(:hover, .k-hover) {
            color: $kendo-grid-hover-text;
            background-color: $kendo-grid-hover-bg;
        }

        // Focus state
        .k-table-row:is(:focus, .k-focus),
        .k-master-row:is(:focus, .k-focus),
        .k-grouping-row:is(:focus, .k-focus),
        .k-grid-pager:is(:focus, .k-focus) {
            @include focus-indicator( $kendo-grid-focus-shadow, true );
        }
        .k-table-row,
        .k-master-row,
        .k-grouping-row {
            > :is(:focus, .k-focus) {
                @include focus-indicator( $kendo-grid-focus-shadow, true );
            }
        }

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

        // Highlighted state
        .k-table-td.k-highlighted,
        .k-table-row.k-highlighted > .k-table-td {
            background-color: $kendo-grid-highlighted-bg;
        }

        // Highlighted Selected state
        .k-table-td.k-highlighted.k-selected,
        .k-table-row.k-highlighted.k-selected > .k-table-td,
        .k-table-row.k-highlighted > .k-table-td.k-selected,
        .k-table-row.k-selected > .k-table-td.k-highlighted {
            background-color: $kendo-grid-selected-highlighted-bg;
        }

        // Grouping row
        .k-grouping-row {
            background-color: $kendo-grid-grouping-row-bg;

            .k-table-td {
                color: $kendo-grid-grouping-row-text;
                background-color: $kendo-grid-grouping-row-bg;
            }

            .k-icon:not(.k-action-icon) {
                color: $kendo-grid-header-text;
            }

            .k-grid-content-sticky {
                border-inline-color: $kendo-grid-sticky-border;
                border-block-start-color: $kendo-grid-header-border;
            }

            &:hover .k-grid-content-sticky,
            &.k-hover .k-grid-content-sticky {
                background-color: $kendo-grid-sticky-hover-bg;
            }
        }

        // Locked columns
        .k-grid-content-locked {
            border-color: $kendo-grid-sticky-header-border;
        }


        // Sticky columns

        .k-grid-sticky-container {
            background-color: $kendo-grid-sticky-bg;
            border-color: $kendo-grid-sticky-border;
        }

        .k-master-row {
            .k-grid-content-sticky {
                background-color: $kendo-grid-sticky-bg;
                border-inline-color: $kendo-grid-sticky-border;
                border-block-start-color: $kendo-grid-header-border;
            }

            &.k-table-row {

                // Sticky
                .k-grid-content-sticky,
                .k-table-td.k-grid-content-sticky,
                .k-grid-row-sticky,
                &.k-grid-row-sticky > .k-table-td {
                    background-color: $kendo-grid-sticky-bg;
                }

                .k-grid-row-sticky,
                &.k-grid-row-sticky > .k-table-td {
                    border-block-start-color: $kendo-grid-sticky-border;
                    border-block-end-color: $kendo-grid-sticky-border;
                }

                // Sticky Hover
                &:is(:hover, .k-hover) {
                    .k-grid-row-sticky,
                    .k-table-td.k-grid-content-sticky,
                    &.k-grid-row-sticky > .k-table-td {
                        background-color: $kendo-grid-sticky-hover-bg;
                    }
                }

                // Sticky Selected state
                &.k-selected.k-grid-row-sticky > .k-table-td,
                &.k-selected .k-table-td.k-grid-row-sticky,
                &.k-selected .k-grid-content-sticky,
                .k-selected.k-table-td.k-grid-content-sticky {
                    &::before {
                        background-color: $kendo-grid-selected-bg;
                    }
                }

                // Sticky Highlighted state
                &.k-highlighted.k-grid-row-sticky > .k-table-td,
                &.k-highlighted .k-table-td.k-grid-row-sticky,
                &.k-highlighted .k-grid-content-sticky,
                .k-highlighted.k-table-td.k-grid-content-sticky {
                    &::before {
                        background-color: $kendo-grid-highlighted-bg;
                    }
                }

                // Sticky Selected Highlighted state
                &.k-selected.k-highlighted.k-grid-row-sticky > .k-table-td,
                &.k-selected.k-highlighted .k-table-td.k-grid-row-sticky,
                &.k-selected.k-highlighted .k-grid-content-sticky,
                &.k-selected .k-table-td.k-grid-content-sticky.k-highlighted,
                &.k-highlighted .k-table-td.k-grid-content-sticky.k-selected,
                .k-table-td.k-grid-content-sticky.k-selected.k-highlighted {
                    &::before {
                        background-color: $kendo-grid-selected-highlighted-bg;
                    }
                }

            }

            &.k-table-alt-row {
                .k-grid-content-sticky,
                .k-table-td.k-grid-content-sticky,
                &.k-grid-row-sticky > .k-table-td,
                .k-grid-row-sticky {
                    background-color: $kendo-grid-sticky-alt-bg;
                }
            }
        }

    }

    // Grid header
    .k-grid-header {
        border-color: $kendo-grid-header-border;
        color: $kendo-grid-header-text;
        background-color: $kendo-grid-header-bg;

        .k-sort-icon,
        .k-sort-order {
            color: $kendo-grid-sorting-indicator-text;
        }

        .k-grid-filter,
        .k-header-column-menu,
        .k-grid-header-menu,
        .k-hierarchy-cell .k-icon {

            color: $kendo-grid-header-text;

            &:hover {
                color: $kendo-button-hover-text;
                background-color: $kendo-button-hover-bg;
            }
            &:focus,
            &.k-focus {
                @include focus-indicator( inset 0 0 0 2px rgba( $kendo-color-black, .1 ), true );
            }
            &.k-active {
                color: k-color(on-primary);
                background-color: k-color(primary);
            }
        }

        .k-grid-header-locked {
            border-color: $kendo-grid-sticky-header-border;
        }

        .k-table-th.k-grid-header-sticky,
        .k-table-td.k-grid-header-sticky,
        .k-grid-header-sticky.k-sorted {
            @include fill(
                $color: $kendo-grid-sticky-header-text,
                $bg: $kendo-grid-sticky-header-bg
            );

            border-inline-end-color: $kendo-grid-sticky-header-border;
            border-inline-start-color: $kendo-grid-sticky-header-border;
        }

    }

    .k-grid-header-wrap {
        border-color: $kendo-grid-header-border;
    }

    // Grid footer
    .k-grid-footer {
        border-color: $kendo-grid-footer-border;
        color: $kendo-grid-footer-text;
        background-color: $kendo-grid-footer-bg;

        .k-grid-footer-sticky {
            border-inline-start-color: $kendo-grid-sticky-border;
            border-inline-end-color: $kendo-grid-sticky-border;
            background-color: $kendo-grid-sticky-footer-bg;
        }

        .k-grid-footer-locked {
            border-color: $kendo-grid-sticky-border;
        }
    }

    .k-grid-footer-wrap {
        border-color: $kendo-grid-footer-border;
    }

    // Grid toolbar
    .k-grid-toolbar {
        border-color: inherit;
        @include box-shadow( none );
    }

    // Grid content
    .k-grid-content {
        // setting this background color resolves glitches in iOS
        @include fill($bg: $kendo-grid-bg );
    }

    .k-grid-add-row {
        color: $kendo-grid-header-text;
        background-color: $kendo-grid-header-bg;
        border-color: $kendo-grid-header-border;
    }

    // Grouping
    .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 .k-table-td,
    .k-table-tbody .k-group-cell {
        @include fill(
            $color: $kendo-grid-grouping-row-text,
            $bg: $kendo-grid-grouping-row-bg
        );
    }

    .k-grouping-dropclue {
        &::before {
            border-color: $kendo-grid-header-text transparent transparent;
        }

        &::after {
            background-color: $kendo-grid-header-text;
        }
    }

    // Filtering
    .k-filter-row > .k-table-th,
    .k-filter-row > .k-table-td {
        border-color: $kendo-grid-header-border;
    }

    // Pinned rows
    .k-grid-pinned-container {
        background-color: $kendo-grid-header-bg;
        border-color: $kendo-grid-border;
    }

    .k-grid-pinned-wrap {
        border-color: $kendo-grid-header-border;

        > .k-table {
            background-color: $kendo-grid-bg;
            box-shadow: $kendo-grid-cell-vertical-border-width 0 0 0 $kendo-grid-border;
        }
    }

    // Selection Aggregates
    .k-selection-aggregates {
        color: $kendo-grid-selection-aggregates-text;
        background-color: $kendo-grid-selection-aggregates-bg;
        border-color: $kendo-grid-selection-aggregates-border;
    }

    // Grid stack layout
    .k-grid-stack-header {
        color: $kendo-grid-stack-header-color;
    }

    .k-grid-stack-cell {
        &:focus,
        &.k-focus {
            outline: 1px solid $kendo-grid-stack-focus-outline;
        }

        &.k-selected {
            background-color: $kendo-grid-selected-bg;
        }
    }

    // Dirty cell
    .k-grid-stack-cell .k-dirty {
        border-inline-start-color: rgba(0, 0, 0, 0);
        border-inline-end-color: currentColor;
    }


    // Column menu
    .k-column-list-item,
    .k-columnmenu-item {
        &:hover {
            color: $kendo-list-item-hover-text;
            background-color: $kendo-list-item-hover-bg;
        }

        &:focus,
        &.k-focus {
            @include focus-indicator( $kendo-list-item-focus-shadow, true );
        }

        &.k-selected {
            color: $kendo-list-item-selected-text;
            background-color: $kendo-list-item-selected-bg;
        }
    }

    .k-column-menu {

        .k-menu:not(.k-context-menu) {
            color: $kendo-popup-text;
            background-color: $kendo-popup-bg;
            border-color: $kendo-popup-border;

            .k-item {
                color: $kendo-list-item-text;
                background-color: $kendo-list-item-bg;

                &:hover,
                &.k-hover {
                    color: $kendo-list-item-hover-text;
                    background-color: $kendo-list-item-hover-bg;
                }

                &:focus,
                &.k-focus {
                    @include focus-indicator( $kendo-list-item-focus-shadow, true );
                }

                &.k-selected {
                    color: $kendo-list-item-selected-text;
                    background-color: $kendo-list-item-selected-bg;
                }
            }
        }
    }

    .k-column-menu-tabbed {
        background-color: $kendo-grid-column-menu-tabbed-bg;
    }

    .k-column-menu-group-header-text {
        color: $kendo-grid-column-menu-group-header-text;
        background-color: $kendo-grid-column-menu-group-header-bg;
        border-color: $kendo-grid-column-menu-group-header-border;
    }

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

    .k-check-all-wrap {
        border-color: $kendo-popup-border;
    }

    .k-grid-norecords-template {
        background-color: $kendo-grid-bg;
        border-color: $kendo-grid-border;
    }

    // Row resizing
    .k-resizer-wrap {
        &.k-hover .k-row-resizer {
            @include fill( $bg: $kendo-grid-row-resizer-hover-bg );
        }

        &.k-active .k-row-resizer {
            @include fill( $bg: $kendo-grid-row-resizer-active-bg );
        }
    }
}
