From 461db99b9fcd4cad065d92091d3f4731967306cc Mon Sep 17 00:00:00 2001 From: Cesar Mendivil Date: Tue, 11 Nov 2025 15:20:13 -0700 Subject: [PATCH] feat: add form components including Checkbox, Radio, Switch, and Textarea --- packages/ui-components/COMPONENTS_UPDATE.md | 400 ++++++++++++++++ packages/ui-components/INDEX.md | 162 +++++++ packages/ui-components/QUICK_REFERENCE.md | 413 +++++++++++++++++ packages/ui-components/README.md | 44 +- packages/ui-components/UPDATE_V2.md | 433 ++++++++++++++++++ .../src/components/Accordion.module.css | 94 ++++ .../src/components/Accordion.tsx | 97 ++++ .../src/components/Breadcrumb.module.css | 97 ++++ .../src/components/Breadcrumb.tsx | 80 ++++ .../src/components/Checkbox.module.css | 100 ++++ .../ui-components/src/components/Checkbox.tsx | 61 +++ .../src/components/Pagination.module.css | 125 +++++ .../src/components/Pagination.tsx | 173 +++++++ .../src/components/Progress.module.css | 134 ++++++ .../ui-components/src/components/Progress.tsx | 73 +++ .../src/components/Radio.module.css | 115 +++++ .../ui-components/src/components/Radio.tsx | 66 +++ .../src/components/Select.module.css | 123 +++++ .../ui-components/src/components/Select.tsx | 132 ++++++ .../src/components/Switch.module.css | 122 +++++ .../ui-components/src/components/Switch.tsx | 65 +++ .../src/components/Tabs.module.css | 135 ++++++ .../ui-components/src/components/Tabs.tsx | 95 ++++ .../src/components/Textarea.module.css | 121 +++++ .../ui-components/src/components/Textarea.tsx | 133 ++++++ packages/ui-components/src/index.ts | 30 ++ 26 files changed, 3611 insertions(+), 12 deletions(-) create mode 100644 packages/ui-components/COMPONENTS_UPDATE.md create mode 100644 packages/ui-components/INDEX.md create mode 100644 packages/ui-components/QUICK_REFERENCE.md create mode 100644 packages/ui-components/UPDATE_V2.md create mode 100644 packages/ui-components/src/components/Accordion.module.css create mode 100644 packages/ui-components/src/components/Accordion.tsx create mode 100644 packages/ui-components/src/components/Breadcrumb.module.css create mode 100644 packages/ui-components/src/components/Breadcrumb.tsx create mode 100644 packages/ui-components/src/components/Checkbox.module.css create mode 100644 packages/ui-components/src/components/Checkbox.tsx create mode 100644 packages/ui-components/src/components/Pagination.module.css create mode 100644 packages/ui-components/src/components/Pagination.tsx create mode 100644 packages/ui-components/src/components/Progress.module.css create mode 100644 packages/ui-components/src/components/Progress.tsx create mode 100644 packages/ui-components/src/components/Radio.module.css create mode 100644 packages/ui-components/src/components/Radio.tsx create mode 100644 packages/ui-components/src/components/Select.module.css create mode 100644 packages/ui-components/src/components/Select.tsx create mode 100644 packages/ui-components/src/components/Switch.module.css create mode 100644 packages/ui-components/src/components/Switch.tsx create mode 100644 packages/ui-components/src/components/Tabs.module.css create mode 100644 packages/ui-components/src/components/Tabs.tsx create mode 100644 packages/ui-components/src/components/Textarea.module.css create mode 100644 packages/ui-components/src/components/Textarea.tsx diff --git a/packages/ui-components/COMPONENTS_UPDATE.md b/packages/ui-components/COMPONENTS_UPDATE.md new file mode 100644 index 0000000..9b469fc --- /dev/null +++ b/packages/ui-components/COMPONENTS_UPDATE.md @@ -0,0 +1,400 @@ + label="Suscribirse al newsletter" + checked={formData.subscribe} + onChange={(e) => setFormData({...formData, subscribe: e.target.checked})} + /> + + setFormData({...formData, darkMode: e.target.checked})} + /> + + + + + ); +} +``` + +### Tabs con Formularios + +```tsx +import { Tabs, Input, Textarea, Button } from 'avanza-ui'; + +function SettingsPanel() { + return ( + + + + + + ) + }, + { + id: 'privacy', + label: 'Privacidad', + content: ( + <> + + + + + ) + }, + { + id: 'notifications', + label: 'Notificaciones', + content: ( + <> + + + + + ) + } + ]} + /> + ); +} +``` + +--- + +## 📏 Tamaños de Bundle Actualizados + +```bash +dist/ +├── index.css (25KB) ⬆️ +6KB +├── index.esm.js (28KB) ⬆️ +7KB +├── index.js (30KB) ⬆️ +8KB +└── Total: ~83KB (vs 40KB anterior) +``` + +**Nota:** El aumento es por los 7 nuevos componentes. Aún así, el bundle es muy pequeño comparado con otras bibliotecas. + +--- + +## 🎯 Características de los Nuevos Componentes + +### Checkbox & Radio +- ✅ 5 variantes de color +- ✅ 3 tamaños +- ✅ Estados: checked, disabled +- ✅ Totalmente accesible +- ✅ Sin dependencias externas + +### Switch (Toggle) +- ✅ Animación suave +- ✅ 5 variantes de color +- ✅ 3 tamaños +- ✅ ARIA role="switch" + +### Select +- ✅ Dropdown nativo del navegador +- ✅ Placeholder +- ✅ Opciones con disabled +- ✅ Icono de flecha personalizado +- ✅ Validación integrada + +### Textarea +- ✅ Contador de caracteres +- ✅ Límite de caracteres +- ✅ Resize configurable +- ✅ Rows personalizables +- ✅ Validación y estados de error + +### Tabs +- ✅ 3 variantes: default, pills, boxed +- ✅ Orientación horizontal/vertical +- ✅ Soporte para íconos +- ✅ Tabs deshabilitados +- ✅ Animación al cambiar + +--- + +## 🚀 Migración desde Vristo + +Todos los componentes de formulario de Vristo han sido migrados y mejorados: + +| Vristo | Avanza UI | Mejoras | +|--------|-----------|---------| +| `` | `` | Componente dedicado, más props | +| `` | `` | Componente dedicado, variantes | +| `` | Tipado, validación, opciones | +| `