ТTessora Docs

Frontend

UI Kit, компоненты, хуки, сторы и state management

UI Kit — src/components/ui/

Для новых элементов интерфейса обязательно использовать UI Kit, а не писать кастомные стили:

import { Button, IconButton, Pagination } from "@/components/ui";

<Button variant="primary">Сохранить</Button>
<Button variant="secondary">Отмена</Button>
<Button variant="danger">Удалить</Button>
<IconButton icon={<Settings size={18} />} variant="ghost" label="Настройки" />
<Pagination {...pagination} isLoading={isFetching} />
КомпонентНазначение
Button, IconButtonКнопки (variants: primary, secondary, danger, ghost)
PaginationПагинация (страницы, стрелки, размер)
AdaptiveImage, AdaptiveVideoАдаптивные медиа
ReferenceVideoCardКарточка референса
AiBadge, CopyButtonБейдж AI-контента, копирование
calendar, date-picker, popoverДата и попапы (react-day-picker, Radix)
StubPageЗаглушка для недоделанных страниц

Живое демо всех компонентов: страница /ui-kit.

Доменные компоненты — src/components/

25+ папок по доменам: admin/, calendar/, new-task/, ready/, references/, tasks/, safebot/, smart-selector/, content-maker/, notifications/, uploads/, sidebar/, layout/, modal/, toast/, theme/, login/, auth/.

Навигация сайдбара конфигурируется в src/components/sidebar/nav-config.ts — массивы пунктов по ролям (NAV_CLIENT, NAV_TEAM, NAV_ADMIN_BASE, NAV_SUPER_ADMIN) с привязкой к permissions.

Данные: TanStack Query

Серверное состояние — только через TanStack Query. Хуки в src/lib/api/hooks/:

ХукНазначение
use-tasks.ts, use-tasks-ui.ts, use-task-stats.tsЗадачи: данные, UI-состояние, статистика
use-ready-content.ts, use-ready-ui.tsГотовый контент
use-references.ts, use-references-ui.ts, use-reference-categories.ts, use-reference-upload.tsРеференсы и категории
use-calendar.ts, use-calendar-ui.tsКалендарь
use-companies.tsКомпании (админ)
use-ai-admin.tsAI-панель
use-uploads.tsPresigned-загрузки

Прикладные хуки — src/hooks/

ХукНазначение
use-pagination.tsПагинация с синхронизацией в URL (page, pageSize)
use-responsive-page-size.tsРазмер страницы по ширине экрана
useNotifications.tsPolling in-app уведомлений (30s)
usePushNotifications.tsРегистрация Service Worker + push-подписка
useAutoRequestPush.tsАвтозапрос разрешения на push
useTaskCatalog.tsКаталог Smart Selector с кэшем
use-ai-prompt.tsМутация генерации AI-промпта

Zustand — src/stores/

Локальное клиентское состояние, где Query не подходит: safebot-status.ts (статусы скачиваний в реальном времени).

Пагинация (паттерн)

Единая система (подробно — docs/PAGINATION.md в репо):

const pagination = usePagination();          // page/pageSize из URL
const { data, isFetching } = useTasksUi();   // хук учитывает пагинацию
<Pagination {...pagination} isLoading={isFetching} />

On this page