discourse/plugins/discourse-ai/assets/stylesheets/modules/ai-bot/common/ai-agent.scss
Jarek Radosz 79f5e56cf5
FEATURE: Auto-resizing textareas in FormKit (#39751)
Adds `@autoResize` argument to FormKit's `textarea` control.

Closes #39736
2026-05-06 22:12:26 +02:00

635 lines
11 KiB
SCSS
Vendored

@use "lib/viewport";
.admin-contents .ai-agent-list-editor {
margin-top: 0;
}
.ai-agent-list-editor {
@include viewport.until(md) {
td {
border: none;
padding: 0;
&.ai-agent-list__llms,
&.ai-agent-list__features {
padding-block: 0;
.--card-label {
display: inline-block;
font-size: var(--font-down-1);
color: var(--primary-high);
}
}
}
}
&__header {
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 0 1em 0;
h3 {
margin: 0;
}
}
&__current {
padding-left: 20px;
}
li.disabled {
opacity: 0.5;
}
&__controls {
display: flex;
gap: var(--space-2);
margin-bottom: var(--space-4);
.filter-input-container {
flex: 4 1 auto;
}
.d-select {
flex: 1 1 auto;
width: auto;
height: auto;
}
}
&__no-results {
display: flex;
flex-direction: column;
text-align: center;
justify-content: center;
padding: var(--space-6);
gap: var(--space-2);
h3 {
font-weight: normal;
}
.btn {
align-self: center;
}
}
&.--layout-table {
.--card-label {
display: none;
}
}
&.--layout-card {
tbody {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(18em, 1fr));
gap: var(--space-4);
border: none;
}
thead {
display: none;
}
.d-table__row {
display: grid;
grid-template-rows: auto 1fr auto auto;
grid-template-columns: 1fr auto;
border: 1px solid var(--primary-low);
padding: var(--space-2) var(--space-4) var(--space-4);
border-radius: var(--d-border-radius);
.d-table__cell.--overview,
.ai-agent-list__name-with-description {
display: contents;
}
.ai-agent-list__name {
grid-row: 1;
grid-column: 1;
font-size: var(--font-up-1);
display: inline;
align-self: center;
.avatar {
height: 1.25em;
position: relative;
bottom: 0.15em;
}
}
.ai-agent-list__description {
grid-row: 2;
grid-column: 1;
margin: var(--space-2) 0;
}
.d-table__cell.--controls {
grid-row: 1;
grid-column: 2;
}
.ai-agent-list__features {
grid-row: 4;
grid-column: 1 / span 2;
padding: 0;
.btn {
margin-top: var(--space-0);
}
}
.ai-agent-list__llms {
grid-row: 3;
grid-column: 1 / span 2;
padding: 0;
.btn {
margin-top: var(--space-2);
}
}
.--card-label {
color: var(--primary-high);
font-size: var(--font-down-1);
}
}
}
.ai-agent-list {
&__row-item-feature {
padding: 0;
text-align: left;
}
&__description {
color: var(--primary-high);
}
&__name {
display: flex;
align-items: center;
gap: var(--space-1);
font-size: var(--font-up-0);
color: var(--primary);
margin: 0;
padding: 0;
line-height: var(--line-height-medium);
.avatar {
width: auto;
height: 1.25em;
}
}
&__row {
&__overview {
padding-left: var(--space-2);
}
}
}
.ai-agent-list__feature-list {
color: var(--primary-medium);
}
}
.ai-agent-tool-option-editor {
&__instructions {
color: var(--primary-medium);
font-size: var(--font-down-1);
line-height: var(--line-height-large);
}
}
.ai-agents__container {
display: flex;
flex-direction: row;
align-items: center;
gap: 10px;
width: 100%;
}
.ai-agent-editor {
padding-left: 0.5em;
.select-kit.multi-select.is-disabled {
height: auto;
.multi-select-header {
height: auto;
min-height: var(--d-input-height);
overflow: visible;
.formatted-selection {
white-space: normal;
overflow: visible;
text-overflow: unset;
}
.select-kit-header--filter {
height: auto;
}
}
}
[data-name="system_prompt"] {
--expanding-text-area-min-height: 13.5rem;
--expanding-text-area-max-height: 43.75rem;
}
&__tool-options {
padding: 1em;
border: 1px solid var(--content-border-color);
width: 480px;
}
&__tool-options-name {
margin-bottom: 10px;
font-size: var(--font-down-1);
}
&__tool-token-list {
list-style: none;
margin: 0 0 0.5em;
padding: 0;
}
&__tool-token-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.2em 0;
font-size: var(--font-down-1);
border-bottom: 1px solid var(--primary-low);
}
&__tool-token-count {
color: var(--primary-medium);
}
&__tool-context-cost {
margin-bottom: var(--space-4);
padding: var(--space-4);
border: 1px solid var(--content-border-color);
@include viewport.from(lg) {
max-width: 480px;
}
&:has(.--token:hover) {
.ai-agent-editor__tool-context-cost-bar-indicator.--token {
color: var(--primary);
transform: translateX(-50%) scale(1.4);
}
}
&:has(.--count:hover) {
.ai-agent-editor__tool-context-cost-bar-indicator.--count {
color: var(--primary);
transform: translateX(-50%) scale(1.4);
}
}
}
&__tool-context-cost-header {
margin-block: var(--space-4) var(--space-2);
}
&__tool-context-cost-label {
font-weight: bold;
font-size: var(--font-down-1);
color: var(--primary);
}
&__tool-context-cost-legend {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
font-size: var(--font-down-1);
color: var(--primary-high);
}
&__tool-context-cost-legend-item {
display: flex;
align-items: center;
gap: 0.25em;
cursor: default;
.d-icon {
color: var(--primary-medium);
transition: color 0.15s ease;
}
&:hover .d-icon {
color: var(--primary);
}
}
&__tool-context-cost-value {
color: var(--primary-high);
&.low {
color: var(--success);
}
&.medium {
color: var(--highlight-high);
}
&.high {
color: var(--danger);
}
}
&__tool-context-cost-bar {
height: 0.35em;
border-radius: 1em;
background: linear-gradient(
in oklch to right,
var(--success),
var(--danger)
);
position: relative;
margin-block: var(--space-4) var(--space-6);
}
&__tool-context-cost-bar-indicator {
position: absolute;
transform: translateX(-50%);
color: var(--primary-medium);
transition:
transform 0.15s ease,
color 0.15s ease;
.d-icon {
display: block;
}
&.--token {
bottom: 100%;
}
&.--count {
top: 100%;
}
}
&__tool-context-cost-warning {
font-size: var(--font-down-1);
color: var(--primary-high);
line-height: var(--line-height-large);
margin-top: var(--space-4);
span {
font-weight: bold;
color: var(--highlight-high);
}
.--high & span {
color: var(--danger);
}
}
&__response-format {
width: 100%;
display: block;
}
&__response-format-pre {
margin-bottom: 0;
white-space: pre-line;
}
&__response-format-none {
margin-bottom: 1em;
margin-top: 0.5em;
}
&__mcp-server-summary {
margin-bottom: var(--space-4);
padding: var(--space-3);
border: 1px solid var(--content-border-color);
max-width: 480px;
}
&__mcp-server-help {
margin: 0 0 var(--space-3);
max-width: 480px;
color: var(--primary-medium);
font-size: var(--font-down-1);
}
&__mcp-server-item {
display: flex;
justify-content: space-between;
gap: var(--space-2);
align-items: flex-start;
font-size: var(--font-down-1);
color: var(--primary-high);
& + & {
margin-top: var(--space-2);
}
}
&__mcp-server-item-main {
display: grid;
gap: 0.35rem;
}
&__mcp-server-name {
font-weight: 700;
color: var(--primary);
}
&__mcp-server-meta {
display: flex;
flex-wrap: wrap;
gap: 0.35rem 0.9rem;
align-items: center;
color: var(--primary-high);
}
&__mcp-server-action {
flex-shrink: 0;
}
&__mcp-server-health {
&.--healthy {
color: var(--success);
}
&.--unhealthy {
color: var(--danger);
}
}
}
.ai-agent-mcp-tools-modal {
&__body {
display: grid;
gap: 1rem;
max-height: 70vh;
overflow-y: auto;
}
&__summary,
&__selection-summary,
&__empty {
margin: 0;
color: var(--primary-medium);
}
&__controls {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
align-items: stretch;
}
&__filter {
flex: 1 1 14rem;
min-width: 0;
margin: 0;
height: 2.5rem;
box-sizing: border-box;
}
&__select-all,
&__clear-all {
display: inline-flex;
align-items: center;
justify-content: center;
height: 2.5rem;
box-sizing: border-box;
}
&__tool {
padding: 0.85rem 1rem;
border: 1px solid var(--primary-low);
border-radius: var(--d-border-radius);
}
&__tool-header {
display: grid;
grid-template-columns: auto 1fr auto;
gap: 0.75rem;
align-items: start;
cursor: pointer;
}
&__tool-checkbox {
padding-top: 0.15rem;
}
&__tool-header-content {
display: grid;
gap: 0.1rem;
}
&__tool-title {
font-weight: 700;
color: var(--primary);
}
&__tool-name,
&__tool-token-count {
color: var(--primary-medium);
font-size: var(--font-down-1);
}
&__tool-name {
background: transparent;
padding: 0;
border: 0;
}
}
.rag-options {
&__indexing-options {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
}
.rag-uploader {
&__search-input {
display: flex;
align-items: center;
border: 1px solid var(--primary-400);
width: 100%;
box-sizing: border-box;
height: 35px;
padding: 0 0.5rem;
&:focus,
&:focus-within {
@include default-focus;
}
&-container {
display: flex;
flex-grow: 1;
}
&__search-icon {
background: none !important;
color: var(--primary-medium);
}
&__input {
width: 100% !important;
}
&__input,
&__input:focus {
margin: 0 !important;
border: 0 !important;
appearance: none !important;
outline: none !important;
background: none !important;
}
}
&__uploads-list {
&:has(tr) {
margin-bottom: 20px;
}
tbody {
border-top: none;
}
}
&__upload-status {
text-align: right;
padding-right: 0;
.indexed {
color: var(--success);
}
.uploaded,
.indexing {
color: var(--primary-low-mid);
}
}
&__remove-file {
text-align: right;
padding-left: 0;
}
&__rag-file-icon {
margin-right: 5px;
}
.hidden-upload-field {
visibility: hidden;
position: absolute;
}
}