AiFieldNotice
AiFieldNotice — композиция над AiFieldBanner и AiQueue для AI-полей. Один корневой компонент, один баннер на экран: сценарий выбирается через variant, текст, иконка и тип баннера предзашиты.
Мастер-ширина — 400px. Размеры наследуются от AiFieldBanner: s — desktop, m — mobile.
Когда использовать
- Контекстное уведомление над AI-полем ввода — password, SSH, управление ВМ, поддержка или очередь задач.
- Нужен готовый сценарий из Figma Field Notice без ручной сборки
AiFieldBanner.
Когда не нужен
- Универсальный баннер с произвольным текстом и типом:
- используйте
@cloud-ru/ds-ai-field-bannerнапрямую.
- используйте
- Inline-alert в контенте страницы:
- используйте
@cloud-ru/ds-alert.
- используйте
Анатомия
Variant
variant — discriminated union: набор пропсов зависит от значения. В каждый момент рендерится один баннер.
password— безопасный ввод пароля. Баннерsecurity, иконкаPasswordLock. Ротирующее описание с hover на «Гига не получит ваши данные».ssh— безопасный ввод SSH-ключа. Баннерsecurity, иконкаPasswordLock. Та же анимация описания, финальный кадр — «Введите SSH-ключ».vmAgent— управление виртуальной машиной. Баннерagentic, без иконки. Ротация между заголовком и строкойvmName/vmIp. ОбязательныvmNameиvmIp.support— чат с инженером. Баннерhelp, иконкаHeadphones, статичное описание.queue— очередь задач агента. Information-баннер сAiQueueвнутри. Обязателен пропqueue(AiQueueProps).onActionClickне используется.
<AiFieldNotice variant='password' onActionClick={handleCancel} />
<AiFieldNotice
variant='vmAgent'
vmName='my-lovely-vm'
vmIp='93.7.94.11'
onActionClick={handleNewSession}
/>
<AiFieldNotice variant='queue' queue={{ steps, defaultOpen: true }} />
Size (default s)
Общий size на корне — передаётся в AiFieldBanner и внутренние части описания.
s— desktop (Mobile Off).m— mobile (Mobile On).
Action
Для password, ssh, support, vmAgent — текстовая кнопка справа с предзашитой подписью (VARIANT_ACTION_LABELS) и обработчиком onActionClick.
При variant='queue' action-слот не используется — управление очередью через пропсы queue.
Animated description
Для password и ssh — AiFieldNoticeAnimatedDescription: автосмена кадров до финального промпта («Введите пароль» / «Введите SSH-ключ»), затем при hover на баннер — кадр «Гига не получит ваши данные».
Для vmAgent — ротация между заголовком и блоком vmName / vmIp без hover-кадра.
Установка
pnpm add @cloud-ru/ds-ai-field-notice
import { AiFieldNotice, SIZE, VARIANT } from '@cloud-ru/ds-ai-field-notice'
Примеры использования
Password
import { AiFieldNotice, SIZE, VARIANT } from '@cloud-ru/ds-ai-field-notice';
export function Password() {
return <AiFieldNotice size={SIZE.S} variant={VARIANT.Password} onActionClick={() => undefined} />;
}SSH
import { AiFieldNotice, SIZE, VARIANT } from '@cloud-ru/ds-ai-field-notice';
export function Ssh() {
return <AiFieldNotice size={SIZE.S} variant={VARIANT.Ssh} onActionClick={() => undefined} />;
}Support
import { AiFieldNotice, SIZE, VARIANT } from '@cloud-ru/ds-ai-field-notice';
export function Support() {
return <AiFieldNotice size={SIZE.S} variant={VARIANT.Support} onActionClick={() => undefined} />;
}VM Agent
import { AiFieldNotice, SIZE, VARIANT } from '@cloud-ru/ds-ai-field-notice';
export function VmAgent() {
return (
<AiFieldNotice
size={SIZE.S}
variant={VARIANT.VmAgent}
vmName='my-lovely-vm'
vmIp='93.7.94.11'
onActionClick={() => undefined}
/>
);
}Queue
import { AI_QUEUE_STEP_STATE, AiFieldNotice, SIZE, VARIANT } from '@cloud-ru/ds-ai-field-notice';
const steps = [
{ label: 'Step Description', state: AI_QUEUE_STEP_STATE.Done },
{ label: 'Step Description', state: AI_QUEUE_STEP_STATE.Error },
{ label: 'Step Description', state: AI_QUEUE_STEP_STATE.Done },
{ label: 'Step Description', state: AI_QUEUE_STEP_STATE.Progress },
{ label: 'Step Description', state: AI_QUEUE_STEP_STATE.Planned },
];
export function Queue() {
return (
<AiFieldNotice
size={SIZE.S}
variant={VARIANT.Queue}
queue={{
steps,
defaultOpen: true,
}}
/>
);
}Props
AiFieldNoticeProps — discriminated union по variant:
queue— только приvariant='queue'.vmName,vmIp— только приvariant='vmAgent'.onActionClick— для остальных variant, кромеqueue.
Types
AiFieldNoticeProps| Prop | Type | Default | Required | Description |
|---|---|---|---|---|
className | string | — | no | Доп. класс корня. |
data-test-id | string | — | no | |
onActionClick | ((event: MouseEvent<HTMLButtonElement, MouseEvent>) => void) | — | no | Обработчик клика по кнопке действия. Не используется при `variant='queue'`. |
queue | AiQueueProps | — | yes | Пропсы `AiQueue`. Только при `variant='queue'`. |
size | "m" | "s" | — | no | Разме р баннера. |
variant | "password" | "queue" | "ssh" | "support" | "vmAgent" | — | yes | Предзашитый сценарий: password, ssh, vmAgent, support или queue. Набор пропсов зависит от значения. |
vmIp | string | — | yes | IP-адрес виртуальной машины для второго кадра описания. Только при `variant='vmAgent'`. |
vmName | string | — | yes | Имя виртуальной машины для второго кадра описания. Только при `variant='vmAgent'`. |
Types
AiFieldNoticeProps
Related props
AiFieldBannerProps
Storybook
Figma
Смотри также
@cloud-ru/ds-ai-field-banner— базовый баннер под полем ввода.@cloud-ru/ds-ai-queue— очередь задач дляvariant='queue'.