Chat Attachments

Кластер вложений композера — квадратные плитки image/doc/pasted, цитаты-фрагменты и control удаления со смещением 8px и всеми состояниями загрузки.

Установка

Использование

Варианты плиток

item.kind определяет, какая плитка отрисовывается. Каждый файл — одинаковый квадрат 120 × 120; фрагмент-цитата — блок цитаты с авто-шириной.

Состояния

  • idle — плитка в покое: border-foreground/15 на bg-card, поднимается до border-foreground/30 при наведении.
  • uploading — спиннер size-5 на теле карточки; FileBadge показывает спиннер size-3.
  • failedborder-destructive/50 bg-destructive/5 (фрагмент: bg-destructive/5 ring-1 ring-destructive/40) с destructive-глифом алерта.
  • remove — крестик проявляется при наведении на плитку / focus-within и располагается на 8px вне левого верхнего угла. Опусти onRemove для read-only-сценария отправленного сообщения.

Read-only (отправленные сообщения)

Опусти onRemoveonPreview), чтобы отрисовать статичный, неинтерактивный ряд — без control'а удаления, без внутренних кнопок.

Превью по клику

Два разных действия на одной плитке:

  • onPreview (клик по карточке) → центрированная модалка file-preview-modal;
  • onBadgeClick (клик по бейджу формата) → боковая панель chat-artifact с шапкой «← имя · мета».

Тело в обоих случаях одно — картинка, исходник (FilePreviewSource), PDF-веер (pdf-thumbnail) или таблица (Table); выбирает его приложение по типу файла.

Тип данных

Преобразуй данные загрузки / черновика в ChatAttachmentItem перед передачей — ни один тип загрузки приложения не пересекает эту границу.

Подкомпоненты

Для кастомных раскладок собирай экспортируемые части напрямую:

  • ChatAttachment (алиас ChatAttachmentTile) — одиночная плитка; item.kind выбирает тело.
  • ChatAttachmentImage / ChatAttachmentDoc / ChatAttachmentPasted / ChatAttachmentExcerpt — тела для каждого kind.
  • FileBadge — чип формата 18px в верхнем регистре, с опциональным тултипом hint.
  • ChatAttachmentRemove — специальная заливная пилюля-крестик, с опциональным тултипом hint.
  • getChatAttachmentExt(name) — выводит расширение в верхнем регистре из имени файла.

Oracul DS

Built for the future of AI-driven interfaces.