# UI КОМПОНЕНТЫ СИСТЕМЫ SFERA ## 🎯 ОБЗОР UI СИСТЕМЫ SFERA использует современную дизайн-систему основанную на **Radix UI**, **Class Variance Authority (CVA)** и **Tailwind CSS** с уникальным **Glass Morphism** стилем. Система включает 36 специализированных UI компонентов с полной типизацией TypeScript. ### Архитектурные принципы: - **Headless UI** - Radix UI для функциональности + кастомная стилизация - **Variant-driven** - CVA для типизированных вариантов компонентов - **Glass Morphism** - Современные полупрозрачные эффекты с backdrop-filter - **Accessibility First** - Полная поддержка ARIA и клавиатурной навигации - **TypeScript Native** - Строгая типизация всех props и вариантов ## 📦 ПОЛНЫЙ КАТАЛОГ КОМПОНЕНТОВ (36 компонентов) ### 🔘 1. BUTTON (button.tsx) **Описание:** Основной интерактивный элемент с множественными вариантами дизайна. ```typescript interface ButtonProps { variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link' | 'glass' | 'glass-secondary' size?: 'default' | 'sm' | 'lg' | 'icon' asChild?: boolean } ``` **Варианты стилей:** - **`default`** - основная фиолетовая кнопка `bg-primary text-primary-foreground` - **`destructive`** - красная кнопка для опасных действий `bg-destructive text-white` - **`outline`** - кнопка с границей `border bg-background` - **`secondary`** - вторичная кнопка `bg-secondary text-secondary-foreground` - **`ghost`** - прозрачная кнопка `hover:bg-accent` - **`link`** - текстовая ссылка `text-primary underline-offset-4` - **`glass`** - Glass Morphism стиль с градиентом - **`glass-secondary`** - полупрозрачная Glass кнопка **Размеры:** - **`default`** - `h-9 px-4 py-2` (36px высота) - **`sm`** - `h-8 px-3` (32px высота) - **`lg`** - `h-10 px-6` (40px высота) - **`icon`** - `size-9` (36x36px квадрат) **Пример использования:** ```typescript ``` ### 🃏 2. CARD (card.tsx) **Описание:** Контейнер для группировки связанного контента с составной архитектурой. ```typescript // Составные компоненты Заголовок карточки Описание содержимого Действие Основное содержимое Нижняя часть ``` **CSS классы:** - **Card**: `bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm` - **CardHeader**: Использует CSS Grid для автоматического позиционирования - **CardTitle**: `leading-none font-semibold` - **CardDescription**: `text-muted-foreground text-sm` ### ⌨️ 3. INPUT (input.tsx) **Описание:** Поле ввода текста с поддержкой Glass Morphism и состояний фокуса. ```typescript interface InputProps extends React.ComponentProps<'input'> { // Стандартные HTML input props } // Два варианта стилизации ``` **Стили Input:** - Базовый класс: `h-9 w-full rounded-md border bg-transparent px-3 py-1` - Фокус: `focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]` - Ошибка: `aria-invalid:ring-destructive/20 aria-invalid:border-destructive` **Стили GlassInput:** - Базовый класс: `glass-input text-white placeholder:text-white/60` - Размеры: `h-11 rounded-lg px-4 py-3` (больше обычного input) - Эффекты: полупрозрачный фон с backdrop-filter ### 🏷️ 4. BADGE (badge.tsx) **Описание:** Небольшие метки для отображения статуса, категорий или счетчиков. ```typescript interface BadgeProps { variant?: 'default' | 'secondary' | 'destructive' | 'outline' asChild?: boolean } ``` **Варианты:** - **`default`** - `bg-primary text-primary-foreground` - **`secondary`** - `bg-secondary text-secondary-foreground` - **`destructive`** - `bg-destructive text-white` - **`outline`** - `text-foreground border` (прозрачный фон) **Базовые стили:** - Размер: `px-2 py-0.5 text-xs font-medium` - Форма: `rounded-md border` - Поддержка иконок: `[&>svg]:size-3 gap-1` ### 📊 5. PROGRESS (progress.tsx) **Описание:** Индикатор прогресса для отображения выполнения задач. ```typescript ``` ### 📱 6. ALERT (alert.tsx) **Описание:** Компонент для отображения важных сообщений пользователю. ```typescript Внимание Важное сообщение для пользователя ``` ### 🗂️ 7. TABS (tabs.tsx) **Описание:** Система вкладок для переключения между разными представлениями. ```typescript Вкладка 1 Вкладка 2 Содержимое 1 Содержимое 2 ``` **Особенности стилизации:** - Список вкладок: Glass Morphism фон `background: rgba(255, 255, 255, 0.12)` - Активная вкладка: `background: rgba(255, 255, 255, 0.2)` с белым текстом - Hover эффект: `background: rgba(255, 255, 255, 0.1)` ### 📝 8. TEXTAREA (textarea.tsx) **Описание:** Многострочное поле ввода текста. ```typescript