AgentSkillsCN

button-styles

iqEngi 中按钮风格的一致性系统(卡片、CTA、表单)

SKILL.md
--- frontmatter
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

ContextoClase TamañoAlturaBorder RadiusEjemplo
Cards / Input GroupsDefault / btn-mdh-10 min-h-[40px]rounded-xl[CourseCard.tsx]
FormulariosDefaulth-10 min-h-[40px]rounded-xlLogin / Register
Hero / CTAs Grandesbtn-lgAuto (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-...)].