Apoya mi contenido: 

Tabla de contenido

Crear Componentes Reutilizables con Tailwind y shadcn/ui (Ejemplos)

shadcn/ui es una librería basada en Tailwind CSS y Radix UI que te permite tener control total sobre el código fuente de cada componente. Aquí te mostramos cómo crear y reutilizar componentes visuales modernos con esta herramienta.

¿Qué es shadcn/ui?

  • Código editable: no dependes de una librería empaquetada, puedes modificar todo.
  • Base accesible: utiliza Radix UI como base para cumplir estándares WCAG.
  • Estilizado con Tailwind: diseño consistente, ligero y fácil de personalizar.

Instalación básica

npx shadcn-ui@latest init
npx shadcn-ui@latest add button

Ejemplo 1: Botón animado con Framer Motion


// components/ui/AnimatedButton.tsx
import { Button } from "@/components/ui/button";
import { motion } from "framer-motion";

export function AnimatedButton({ label }: { label: string }) {
  return (
    <motion.div whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }} transition={{ duration: 0.2 }}>
      <Button className="bg-primary text-white px-4 py-2 rounded">
        {label}
      </Button>
    </motion.div>
  );
}

Uso:


<AnimatedButton label="Haz clic aquí" />

Ejemplo 2: Componente de Contenedor con variantes


import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/lib/utils";

const containerVariants = cva("mx-auto", {
  variants: {
    variant: {
      fullMobile: "max-w-7xl sm:px-6 lg:px-8",
      narrow: "max-w-3xl px-4 sm:px-6 lg:px-8",
    },
  },
  defaultVariants: {
    variant: "fullMobile",
  },
});

type ContainerProps = VariantProps<typeof containerVariants> & {
  children: React.ReactNode;
};

export function Container({ variant, children }: ContainerProps) {
  return <div className={cn(containerVariants({ variant }))}>{children}</div>;
}

Uso:


<Container variant="narrow">
  <p>Contenido centrado y limpio</p>
</Container>

Recursos y Componentes Comunitarios

  • manfromexistence/ui: +80 componentes reutilizables listos para copiar.
  • awesome-shadcn-ui (GitHub): Galería de componentes creativos de la comunidad.

Conclusión

shadcn/ui ofrece un enfoque moderno, accesible y altamente personalizable para construir sistemas de diseño con Tailwind. Al tener el control del código, puedes iterar rápido, mantener coherencia visual y escalar tu proyecto eficientemente.

¡Comunícate con nosotros!