AiToolDetails

Карточка деталей инструмента: заголовок-лейбл (AiToolDetailsLabel) поверх скроллируемого тела.

Весь текстовый контент внутри карточки автоматически становится моноширинным; в состоянии error — ещё и красным. Это прокидывается во вложенные AiToolText, AiToolKeyValue, AiToolObject, AiToolArray без ручной простановки пропсов.

Когда использовать

  • Блок с аргументами или результатом одного вызова инструмента.
  • Контейнер для дерева данных с фиксированной высотой и скроллом.

Анатомия

State (default default)

  • default — нейтральная рамка и заголовок.
  • error — красная рамка и заголовок; вложенный контент становится mono + error.

Scroll (default true)

Ограничивает высоту тела и включает вертикальный скролл. При false карточка растягивается по контенту.

Height (default small)

Задаёт максимальную высоту тела при scroll=true:

  • small — компактный блок до 140 px.
  • large — расширенный блок до 360 px для длинных аргументов или результатов.

При scroll=false значение height не ограничивает рост карточки.

Copy

showCopyButton управляет кнопкой копирования в заголовке. В copyValue передаётся строковое представление содержимого ToolDetails, например JSON или многострочный текст. Кнопка отображается при showCopyButton=true и непустом copyValue. После копирования onCopyClick получает скопированное содержимое.

Установка

pnpm add @cloud-ru/ds-ai-tool
import { AiToolDetails } from '@cloud-ru/ds-ai-tool'

Примеры использования

Блок деталей

Блок деталейAiToolDetails с моноширинным контентом
create_instance
{ "region": "ru-central1", "status": "ok" }
tsx
import { AiToolDetails, AiToolText } from '@cloud-ru/ds-ai-tool';

const DETAILS_CONTENT = '{ "region": "ru-central1", "status": "ok" }';

export function DetailsCard() {
  return (
    <AiToolDetails label='create_instance' state='default' height='large' copyValue={DETAILS_CONTENT}>
      <AiToolText mono>{DETAILS_CONTENT}</AiToolText>
    </AiToolDetails>
  );
}

Props

Types

PropsAiToolDetailsProps
PropTypeDefaultRequiredDescription
childrenReactNode—noКонтент блока деталей (текст, key-value, дерево).
classNamestring—noДоп. класс корня.
copyValuestring—noСериализованное содержимое `ToolDetails` для копирования.
data-test-idstringai-tool-detailsno
height"large" | "small"smallnoМаксимальная высота прокручиваемого контента. По умолчанию `small`.
labelReactNode—noТекст заголовка-лейбла.
onCopyClick((value: string) => void)—noВызывается после копирования содержимого.
onToggleSecret((event: MouseEvent<HTMLButtonElement, MouseEvent>) => void)—noКлик по кнопке-«глаз» заголовка.
scrollbooleantruenoОграничить высоту контента и включить вертикальный скролл. По умолчанию `true`.
secretRevealedbooleanfalsenoСекрет раскрыт. Источник истины — родитель.
showCopyButtonbooleantruenoПоказать кнопку копирования. По умолчанию `true`; требуется непустой `copyValue`.
showEyeButtonbooleanfalsenoПоказать кнопку-«глаз» в заголовке для раскрытия секрета.
state"default" | "error"defaultnoСостояние: `default` — нейтральный, `error` — красная рамка и лейбл.

Unions

Types

AiToolDetailsProps

Unions

Storybook

Figma