button-styles
skillSistema de estilos de botones consistentes para iqEngi (Cards, CTAs, Formularios)
apm::install
apm install @phoenixdhr/button-stylesapm::skill.md
---
name: button-styles
description: Sistema de estilos de botones consistentes para iqEngi (Cards, CTAs, Formularios)
---
# Sistema de Botones Consistentes - iqEngi
Este skill define los estilos de botones estándar para mantener consistencia visual en todo el proyecto, basado en la implementación actual (TailwindCSS v4 + DaisyUI v5).
## Filosofía de Diseño
- **Formas**: `rounded-xl` para controles UI (Forms, Cards), `rounded-full` para CTAs destacados (Hero, Newsletter).
- **Interacción**: Hover con `scale-[1.03]` (tarjetas) o `scale-105` (CTAs grandes) y sombras dinámicas.
- **Colores**: Uso estricto de variables `--color-primary`, `--color-secondary` y variantes semánticas.
---
## 🎨 Clases Base de Botones
### 1. Botón Primary (Acción Principal)
Usar para: **Inscribirse, Comprar, Guardar, CTAs de Hero**
```html
<!-- ESTÁNDAR: Tamaño Normal (Cards, Formularios) -->
<!-- Nota: uppercase, font-bold y tracking-wide para llamadas a la acción fuertes -->
<button class="btn btn-primary h-10 min-h-[40px] px-6 text-white shadow-md shadow-primary/20 hover:bg-[var(--color-btn-hover)] hover:border-[var(--color-btn-hover)] hover:shadow-lg hover:shadow-[var(--color-btn-hover)]/40 hover:scale-[1.03] uppercase font-bold tracking-wide rounded-xl transition-all duration-300">
Comprar
</button>
<!-- LARGE: Hero / Secciones Destacadas -->
<!-- Nota: rounded-full y sombra más pronunciada -->
<button class="btn btn-primary btn-lg min-w-[160px] rounded-full shadow-lg shadow-[var(--color-primary)]/20 hover:bg-[var(--color-btn-hover)] hover:border-[var(--color-btn-hover)] hover:shadow-xl hover:shadow-[var(--color-btn-hover)]/40 hover:scale-105 transition-all duration-300">
Explorar Cursos
</button>
```
### 2. Botón Gradient (CTA Especial)
Usar para: **Newsletter, Suscripciones Premium, Destacados**
```html
<!-- Se usa bg-gradient-to-r y border-none para mantener el gradiente limpio -->
<button class="btn btn-lg rounded-full bg-gradient-to-r from-[var(--color-primary)] to-[var(--color-secondary)] text-white border-none hover:shadow-lg hover:shadow-[var(--color-primary)]/20 hover:scale-105 transition-all duration-300 min-w-[160px]">
Suscribirme
</button>
```
### 3. Botón Outline (Secundario)
Usar para: **Ver Detalles, Info adicional**
```html
<!-- ESTÁNDAR: Cards -->
<!-- Nota: !bg y !text importantes para sobreescribir estilos base de DaisyUI en hover si es necesario -->
<a href="#" class="btn btn-outline h-10 min-h-[40px] hover:!bg-[var(--color-btn-hover)] hover:!border-[var(--color-btn-hover)] hover:!text-white rounded-xl transition-all duration-300">
Ver Detalles
</a>
<!-- LARGE: Hero Secundario -->
<a href="#" class="btn btn-outline btn-lg min-w-[160px] rounded-full hover:bg-[var(--color-btn-hover)] hover:border-[var(--color-btn-hover)] hover:text-white hover:scale-105 transition-all duration-300">
Ir a Artículos
</a>
```
### 4. Botón Ghost (Navegación / Terciario)
Usar para: **Links de texto, acciones de bajo énfasis**
```html
<a href="#" class="btn btn-ghost btn-lg min-w-[160px] rounded-full hover:bg-[var(--color-surface-2)]">
Comunidad
</a>
```
---
## 📐 Reglas de Tamaño y Forma
| Contexto | Clase Tamaño | Altura | Border Radius | Ejemplo |
|----------|--------------|--------|---------------|---------|
| **Cards / Input Groups** | Default / `btn-md` | `h-10 min-h-[40px]` | `rounded-xl` | [CourseCard.tsx] |
| **Formularios** | Default | `h-10 min-h-[40px]` | `rounded-xl` | Login / Register |
| **Hero / CTAs Grandes** | `btn-lg` | Auto (`3.5rem`+) | `rounded-full` | [Hero.tsx, NewsletterCTA.tsx] |
---
## 🎭 Estados de Hover (Obligatorios)
La consistencia en el hover da vida a la UI.
- **Escala**:
- `hover:scale-[1.03]` para elementos rectangulares (`rounded-xl`).
- `hover:scale-105` para elementos pastilla (`rounded-full`).
- **Sombra**:
- `hover:shadow-lg` o `hover:shadow-xl`.
- Color de sombra: `shadow-[var(--color-primary)]/20` (base) -> `shadow-[...]/40` (hover).
- **Color**:
- Todo converge a `hover:bg-[var(--color-btn-hover)]` (Azul vibrante) para acciones principales/secundarias.
---
## 📋 Snippets Comunes
### Card Actions (CourseCard)
```tsx
<div className="grid grid-cols-2 gap-3 mt-4 pt-4 border-t border-base-200">
<a
href={`/cursos/${slug}`}
className="btn btn-outline h-10 min-h-[40px] hover:!bg-[var(--color-btn-hover)] hover:!border-[var(--color-btn-hover)] hover:!text-white rounded-xl transition-all duration-300"
>
Ver Detalles
</a>
<button className="btn btn-primary h-10 min-h-[40px] text-white shadow-md shadow-primary/20 hover:bg-[var(--color-btn-hover)] hover:border-[var(--color-btn-hover)] hover:shadow-lg hover:shadow-[var(--color-btn-hover)]/40 hover:scale-[1.03] uppercase font-bold tracking-wide rounded-xl transition-all duration-300">
Comprar
</button>
</div>
```
### Newsletter Submit
```tsx
<button
type="submit"
className="btn btn-lg rounded-full bg-gradient-to-r from-[var(--color-primary)] to-[var(--color-secondary)] text-white border-none hover:shadow-lg hover:shadow-[var(--color-primary)]/20 hover:scale-105 transition-all duration-300 min-w-[160px]"
>
Suscribirme
</button>
```
---
## ⚠️ Checklist de Validación
1. ¿Es un botón principal de página (Hero)? -> Usa `btn-lg` y `rounded-full`.
2. ¿Es un botón dentro de una tarjeta o formulario? -> Usa tamaño normal y `rounded-xl`.
3. ¿Es botón de compra? -> Agrega `uppercase font-bold tracking-wide`.
4. ¿Usaste las variables de color? -> Nunca uses hex codes directos (excepto blanco/negro puro si es necesario), usa `[var(--color-...)]`.