# Avanza UI Sistema de componentes UI independiente para AvanzaCast - Sin dependencias de Tailwind CSS ## 🎯 Componentes Disponibles ### Componentes Básicos - ✅ **Button** - Botones con múltiples variantes y tamaños - ✅ **Card** - Tarjetas con header, body y footer - ✅ **Input** - Campos de entrada con validación - ✅ **Badge** - Insignias y etiquetas - ✅ **Avatar** - Avatares con soporte de imágenes e iniciales - ✅ **Spinner** - Indicadores de carga ### Componentes de Feedback - ✅ **Alert** - Mensajes de alerta (success, warning, danger, info) - ✅ **Tooltip** - Tooltips posicionables - ✅ **Modal** - Modales con header, body y footer ### Componentes de Navegación - ✅ **Dropdown** - Menús desplegables con items y dividers ## 📦 Instalación ```bash # Desde el workspace (monorepo) npm install avanza-ui@file:../ui-components # O crear link simbólico cd packages/ui-components npm link cd ../tu-proyecto npm link avanza-ui ``` ## 🚀 Uso Rápido ```tsx import { Button, Card, CardHeader, CardBody, Input, Alert, Avatar, Badge, Spinner, Modal, ModalHeader, ModalBody, ModalFooter, Dropdown, DropdownItem, Tooltip } from 'avanza-ui'; // Importar estilos globales import 'avanza-ui/dist/index.css'; function App() { const [isModalOpen, setIsModalOpen] = React.useState(false); return (
{/* Alert */} {/* Card con componentes */}

Usuario

Premium
{/* Dropdown */} Opciones}> 👤}>Mi Perfil ⚙️}>Configuración 🚪}>Cerrar Sesión {/* Modal */} setIsModalOpen(false)} size="md"> setIsModalOpen(false)} />

Contenido del modal

{/* Spinner */} {loading && }
); } ``` ## 🎨 Personalización de Temas ```tsx // Cambiar tema programáticamente document.documentElement.setAttribute('data-theme', 'dark'); // o 'light' // Personalizar variables CSS const customStyles = ` :root { --au-primary-600: #your-color; --au-spacing-4: 1.5rem; } `; ``` ## 📖 API de Componentes ### Button ```tsx ``` ### Avatar ```tsx ``` ### Badge ```tsx Texto ``` ### Alert ```tsx {}} /> ``` ## 🎯 Variables CSS Disponibles ### Colores - `--au-primary-*` (50-950) - `--au-gray-*` (50-950) - `--au-success-*` - `--au-warning-*` - `--au-danger-*` - `--au-info-*` ### Espaciado - `--au-spacing-0` a `--au-spacing-24` ### Tipografía - `--au-text-xs` a `--au-text-4xl` - `--au-font-normal`, `--au-font-medium`, `--au-font-semibold`, `--au-font-bold` ### Bordes - `--au-radius-none` a `--au-radius-full` ### Sombras - `--au-shadow-sm` a `--au-shadow-xl` ## 🛠️ Utilidades ```tsx import { cn, debounce, throttle, generateId } from 'avanza-ui'; // Combinar clases const className = cn('base-class', condition && 'conditional-class'); // Debounce const debouncedFn = debounce((value) => console.log(value), 300); // Throttle const throttledFn = throttle(() => console.log('scroll'), 100); // Generar ID único const id = generateId('component'); // 'component-a1b2c3d4' ``` ## 📄 Licencia MIT --- **Avanza UI** v1.0.0 - Sistema de componentes para AvanzaCast