// (C) 2024-2025 GoodData Corporation
// stylelint-disable max-nesting-depth

@use "sass:color";
@use "@gooddata/sdk-ui-kit/styles/scss/variables" as kit-variables;
@use "@gooddata/sdk-ui-kit/styles/scss/mixins" as kit-mixins;
@use "@gooddata/sdk-ui-kit/styles/scss/Form/mixins" as form-mixins;
@use "variables" as variables;

.gd-gen-ai-chat__input {
    $root: &;

    transition: margin-top 0.2s ease-in-out;
    margin: 0 variables.$x-spacing;
    margin-top: 0;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-direction: column;

    &--fullscreen#{$root}--big-screen#{$root}--empty {
        flex-grow: 1;

        &.focused {
            margin-top: 0;
        }

        .gd-gen-ai-chat__input__info.top {
            display: none;
        }

        .gd-gen-ai-chat__input__info.bottom {
            display: block;
        }
    }

    &.focused {
        margin-top: variables.$info-height;
    }

    &__content {
        position: relative;
        max-width: 720px;
        width: 100%;
    }

    &__context {
        cursor: text;
        flex-grow: 1;
        flex-direction: row;
        align-items: flex-start;
        display: flex;
    }

    &--agent-switching &__container {
        position: relative;
        z-index: 1;
        width: 100%;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        border: 1px solid kit-variables.$gd-input-text-border;
        border-radius: 3px;
        background: kit-variables.$gd-color-white;
        @include kit-mixins.box-shadow(
            inset 0 1px 1px 0 color.adjust(kit-variables.$gd-input-text-box-shadow-color, $alpha: -0.85)
        );
        @include kit-mixins.transition(all, 0.25s, ease-in-out);

        &:hover {
            border-color: kit-variables.$gd-input-text-hover-border;
        }
    }

    &--agent-switching:focus-within &__container {
        border-color: kit-variables.$gd-palette-primary-base;
    }

    &--agent-switching#{$root}--no-agents &__container,
    &--agent-switching#{$root}--no-agents:focus-within &__container {
        border-color: kit-variables.$gd-input-text-border-error;
    }

    &--agent-switching &__text {
        position: relative;
        z-index: 1;
    }

    &__mc {
        position: relative;
        z-index: 1;

        .cm-editor {
            height: auto;
            padding: 3px 30px 3px 5px;
            border: 0;
            border-radius: 0;
            box-shadow: none;
        }

        .cm-scroller {
            // stylelint-disable-next-line declaration-no-important
            font-family: kit-variables.$gd-font-primary !important;
        }
    }

    &--agent-switching &__mc {
        .cm-editor {
            padding: 3px 5px 0;
            border: 0;
            border-radius: 0;
            background: transparent;
            box-shadow: none;

            &:hover,
            &.cm-focused {
                border: 0;
                box-shadow: none;
            }
        }
    }

    &__actions {
        position: relative;
        display: flex;
        box-sizing: border-box;
        align-items: center;
        justify-content: flex-end;
        gap: 10px;
        padding: 5px;
    }

    &__agent-dropdown {
        min-width: 0;

        .gd-ui-kit-button__text {
            color: var(--gd-palette-complementary-7);
        }

        .gd-ui-kit-button__badge-text {
            color: var(--gd-palette-complementary-6);
            margin-left: 0;
        }

        // Reuse the assistant "Thinking..." shimmer on the loading label, keeping the button's own font.
        &--loading .gd-ui-kit-button__text {
            @include variables.gd-reasoning();
        }
    }

    &__send_button {
        @include kit-mixins.transition(all, 0.25s, ease-in-out);

        position: absolute;
        top: 2px;
        right: 2px;
        bottom: 2px;
        z-index: 2;
    }

    &__no-agent {
        display: inline-flex;
        align-items: center;
        max-width: 100%;
        overflow: hidden;
        box-sizing: border-box;
        padding: 4px 10px;
        border: var(--gd-message-error-borderWidth) solid var(--gd-message-error-borderColor);
        border-radius: var(--gd-message-error-borderRadius);
        background: var(--gd-message-error-backgroundColor);
        color: var(--gd-message-error-textColor);
        font-size: 12px;
        line-height: 16px;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    &:focus-within &__send_button {
        path,
        rect {
            fill: kit-variables.$gd-palette-primary-base;
        }

        &--disabled,
        &--disabled:hover {
            cursor: default;

            path,
            rect {
                fill: kit-variables.$gd-color-disabled;
            }
        }
    }

    &__info {
        z-index: 0;
        position: absolute;
        width: calc(100% + #{variables.$x-spacing * 2});
        margin-left: -#{variables.$x-spacing};
        margin-right: -#{variables.$x-spacing};
        padding: variables.$y-spacing variables.$x-spacing;
        background: kit-variables.$gd-color-light;
        pointer-events: none;

        color: kit-variables.$gd-color-state-blank;
        text-align: left;
        font-size: 12px;
        font-weight: 400;
        font-style: normal;
        line-height: normal;

        opacity: 1;
        transition:
            top 0.2s ease-in-out,
            bottom 0.2s ease-in-out,
            opacity 0.2s ease-in-out;

        &.bottom {
            display: none;
            bottom: -#{variables.$info-height};
        }

        &.top {
            top: -#{variables.$info-height};
        }

        &.top.hidden {
            top: 0;
            opacity: 0;
        }

        &.bottom.hidden {
            bottom: 0;
            opacity: 0;
        }

        code {
            display: inline-flex;
            justify-content: center;
            align-items: center;
            width: 17px;
            height: 17px;
            margin: 0 2px;
            border-radius: 3px;
            background: kit-variables.$is-focused-background;
            color: kit-variables.$gd-color-link;
            font-weight: 400;
            font-size: 11px;
            font-style: normal;
            line-height: normal;
        }
    }

    &--agent-switching &__info {
        box-sizing: border-box;
        width: 100%;
        margin-left: 0;
        margin-right: 0;
        padding: variables.$y-spacing 0;
    }

    //CodeMirror autocomplete restyle
    .cm-tooltip.cm-tooltip-autocomplete {
        background: kit-variables.$gd-color-white;
        border: 1px solid kit-variables.$gd-border-color;
        border-radius: 3px;

        & > ul {
            padding: 6px 0;
            min-width: 240px;
            max-height: 205px;

            & > li {
                display: flex;
                padding: 5px 10px;
                align-items: center;
                gap: 7px;
                align-self: stretch;

                &[aria-selected="true"],
                &:hover {
                    background: kit-variables.$is-focused-background;
                }

                .cm-completionIcon {
                    width: 17px;
                    aspect-ratio: 1 / 1;

                    &-metric {
                        @include variables.gd-svg-icon("metric");
                    }

                    &-attribute {
                        @include variables.gd-svg-icon("attribute");
                    }

                    &-fact {
                        @include variables.gd-svg-icon("measure");
                    }

                    &-date {
                        @include variables.gd-svg-icon("date");
                    }
                }

                .cm-completionLabel {
                    font-family: kit-variables.$gd-font-primary;
                    color: kit-variables.$gd-color-text;
                    flex: 1 0 0;
                    font-size: 12px;
                    font-style: normal;
                    font-weight: 400;
                    line-height: 18px;
                }
            }
        }
    }

    //CodeMirror completion info restyle
    .cm-tooltip.cm-completionInfo {
        min-width: 220px;
        background: kit-variables.$gd-color-white;
        border: 1px solid kit-variables.$gd-border-color;
        border-radius: 3px;
        padding: 0;
    }

    //CodeMirror highlight restyle
    .cm-editor .cm-highlight-phrase {
        font-weight: normal;

        &.metric {
            color: kit-variables.$gd-color-positive;
        }

        &.fact {
            color: kit-variables.$gd-color-positive;
        }

        &.attribute {
            color: kit-variables.$gd-color-warning;
        }

        &.date {
            color: kit-variables.$gd-color-highlight;
        }
    }

    .cm-editor .cm-icon-widget {
        display: inline-block;
        width: 18px;
        height: 18px;
        margin-bottom: -0.3em;
        margin-right: 5px;

        &.metric {
            @include variables.gd-svg-icon("metric");
        }

        &.attribute {
            @include variables.gd-svg-icon("attribute");
        }

        &.fact {
            @include variables.gd-svg-icon("measure");
        }

        &.date {
            @include variables.gd-svg-icon("date");
        }
    }
}

.gd-gen-ai-chat__reasoning-row {
    &__button {
        display: flex;
        align-items: center;
        gap: 10px;
        box-sizing: border-box;
        width: 100%;
        height: 26px;
        padding: 4px 10px;
        border: 0;
        background: transparent;
        cursor: pointer;
        font-size: 12px;
        line-height: 18px;
        color: var(--gd-palette-complementary-8);

        &:hover {
            background-color: var(--gd-palette-complementary-2);
        }
    }

    // Selected value (e.g. "Quick") as greyed secondary text, pushed to the right before the arrow.
    &__value {
        margin-left: auto;
        color: var(--gd-palette-complementary-6);
    }

    .gd-icon-navigateright {
        color: var(--gd-palette-complementary-5);
    }
}
