InspectorRAGet / src /components /chat /ChatLine.module.scss
kpfadnis's picture
refactor: type consolidation, chat component promotion, generation UX fixes, converter cleanup
753fcc5
Raw
History Blame
5.35 kB
/**
*
* Copyright 2023-present InspectorRAGet Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**/
@use '@carbon/react/scss/spacing' as *;
@use '@carbon/colors' as *;
.line {
display: flex;
flex-direction: row-reverse;
justify-content: flex-start;
align-items: flex-end;
margin-bottom: 1.25rem;
gap: 24px;
}
.assistantLine {
justify-content: flex-start;
flex-direction: row;
}
.latestResponse {
margin-bottom: $spacing-12;
}
.baloon {
display: flex;
flex-direction: column;
border-radius: 1rem;
border-bottom-right-radius: 0;
background: var(--cds-layer-01);
width: 80%;
border: 2px solid transparent;
transition: border-color 0.1s ease;
}
.baloonSelected {
border-color: var(--cds-border-interactive);
}
.assistantBaloon {
border-bottom-left-radius: 0;
border-bottom-right-radius: 1rem;
}
.toolCallBaloon {
border-bottom-left-radius: 0;
border-bottom-right-radius: 1rem;
padding: $spacing-03;
}
.toolResponseBaloon {
border-bottom-left-radius: 0;
border-bottom-right-radius: 1rem;
padding: $spacing-03;
}
// Footer row at the bottom of every balloon.
// Left side is reserved for future additions; status+retries are grouped on the right.
.balloonFooter {
display: flex;
align-items: center;
padding: $spacing-02 $spacing-03;
border-top: 1px solid var(--cds-border-subtle-01);
min-height: 28px;
}
.balloonFooterRight {
margin-left: auto;
display: flex;
align-items: center;
gap: $spacing-03;
}
.statusBadge {
display: inline-flex;
align-items: center;
gap: $spacing-02;
font-size: 0.75rem;
font-weight: 600;
// DefinitionTooltip renders an inner trigger button — make it flex so the
// icon and label sit side-by-side, and inherit the color from the wrapper.
:global(.cds--definition-term) {
display: inline-flex;
align-items: center;
gap: $spacing-02;
font-size: inherit;
font-weight: inherit;
color: inherit;
}
}
.statusBadgePass {
color: var(--cds-support-success);
}
.statusBadgeWarn {
color: var(--cds-support-warning);
}
.statusBadgeFail {
color: var(--cds-support-error);
}
// Retries modal content
.retriesModalContent {
display: flex;
flex-direction: column;
gap: $spacing-05;
}
.retryAttempt {
display: flex;
flex-direction: column;
gap: $spacing-03;
padding: $spacing-04;
background: var(--cds-layer-01);
border-radius: 4px;
}
.retryAttemptHeader {
font-size: 0.875rem;
font-weight: 600;
color: var(--cds-text-secondary);
}
.retryError {
display: flex;
flex-direction: column;
gap: $spacing-02;
}
.retryErrorLabel {
font-size: 0.75rem;
font-weight: 600;
color: var(--cds-support-error);
}
.retryErrorText {
font-size: 0.875rem;
color: var(--cds-text-primary);
}
.message {
font-size: 16px;
line-height: 22px;
margin: $spacing-04 $spacing-05;
min-width: 120px;
}
.assistantResponse {
display: flex;
flex-direction: column;
}
// Each tool call card inside an assistant balloon; top border separates adjacent calls
.toolCallItem {
border-top: 1px solid var(--cds-border-subtle-01);
}
.toolCall {
display: flex;
flex-direction: column;
row-gap: $spacing-03;
}
.toolCall :global(.cds--snippet--multi) {
min-inline-size: 100%;
max-inline-size: 100%;
padding: 0 0 $spacing-03;
background-color: var(--cds-background);
}
.toolCall :global(.cds--snippet-container) {
padding: $spacing-03;
}
.toolResponse {
display: flex;
flex-direction: column;
row-gap: $spacing-03;
}
.toolResponse :global(.cds--snippet--multi) {
max-inline-size: 100%;
padding: 0 0 $spacing-03;
background-color: var(--cds-background);
}
.toolResponse :global(.cds--snippet-container) {
padding: $spacing-03;
}
.viewDocumentsButton {
border: 1px solid var(--cds-background-inverse);
border-radius: 50%;
width: 32px;
height: 32px;
margin: -10px auto -16px;
background: var(--cds-background);
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
}
.viewDocumentsIcon {
color: var(--cds-background-inverse);
}
.toolbar {
border: none;
cursor: pointer;
display: flex;
justify-content: flex-end;
margin: 0 $spacing-05;
align-items: baseline;
}
.btnActive {
background-color: var(--cds-background-selected);
}
.superscript {
vertical-align: super;
font-size: 12px;
margin-left: $spacing-01;
}
.citations {
margin: 0 $spacing-05;
}
.feedbackContainer {
width: 500px;
display: flex;
flex-direction: column;
margin: 0 $spacing-05 $spacing-03;
align-self: flex-start;
row-gap: $spacing-03;
}
.feedbackMetricContainer {
display: flex;
justify-content: space-between;
align-items: center;
}
.feedbackMetricDescription {
display: flex;
column-gap: $spacing-02;
}
.feedbackMetricValues {
margin-left: auto;
align-self: flex-end;
}