Need More Gradients UI

Biblioteca de componentes UI para React con estilo colorido basado en gradientes

Características

🎨

Componentes con gradientes

Dos componentes especializados: Grapper y Gradow

Fácil instalación

Instalable desde NPM o sistema de copiar-usar

🔧

Altamente personalizable

Múltiples variantes y modos de configuración

📱

Interactivo

Efectos que siguen el cursor y animaciones fluidas

🎯

TypeScript

Completamente tipado para mejor experiencia de desarrollo

🌈

Variables CSS

Personalización completa a través de variables CSS

Instalación

Via NPM

npm install need-more-gradients-ui

Sistema Copy-Use

También puedes copiar los componentes directamente en tu proyecto:

  1. Copia los archivos Grapper.tsx, Grapper.css, Gradow.tsx y Gradow.css
  2. Importa los componentes en tu proyecto
  3. Asegúrate de tener las variables CSS necesarias en tu tema

Inicio Rápido

import {Grapper, Gradow} from 'need-more-gradients-ui'

function App() {
  return (
    <div>
      <Grapper variant="static" mode="border">
        <p>Contenido con borde gradiente</p>
      </Grapper>
      
      <Gradow variant="spin" mode="permanent">
        <h2>Título con resplandor</h2>
      </Gradow>
    </div>
  )
}

Componente Grapper

Grapper es un componente que envuelve contenido con bordes o fondos de gradiente animados.

Props del Grapper

Prop Tipo Valor por defecto Descripción
variant 'static' | 'spotlight' | 'sticky' 'static' Tipo de animación del gradiente
mode 'border' | 'solid' | 'ghost' 'border' Estilo de visualización
borderWidth string '2px' Grosor del borde (solo en mode='border')
borderRadius string '16px' Radio de las esquinas
children React.ReactNode - Contenido a envolver

Variantes del Grapper

Static

Gradiente estático sin animación:

<Grapper variant="static" mode="border">
  Contenido con borde gradiente estático
</Grapper>

Spotlight

Gradiente que rota continuamente:

<Grapper variant="spotlight" mode="solid">
  Contenido con fondo gradiente rotativo
</Grapper>

Sticky

Gradiente que sigue el cursor del mouse:

<Grapper variant="sticky" mode="ghost">
  Contenido que se ilumina al hacer hover
</Grapper>

Modos del Grapper

  • border: Muestra solo el borde con gradiente
  • solid: Rellena completamente con el gradiente
  • ghost: Aparece solo al hacer hover

Componente Gradow

Gradow añade un efecto de resplandor con gradiente detrás del contenido.

Props del Gradow

Prop Tipo Valor por defecto Descripción
variant 'spin' | 'pulse' | 'sticky' 'spin' Tipo de animación del resplandor
mode 'permanent' | 'hover' 'permanent' Cuándo mostrar el resplandor
opacity number 0.5 Opacidad del resplandor (0-1)
children React.ReactNode - Contenido a envolver

Variantes del Gradow

Spin

Resplandor que rota continuamente:

<Gradow variant="spin" mode="permanent" opacity={0.7}>
  <h2>Título con resplandor rotativo</h2>
</Gradow>

Pulse

Resplandor que pulsa con diferentes colores:

<Gradow variant="pulse" mode="hover" opacity={0.8}>
  <button>Botón con efecto pulse al hover</button>
</Gradow>

Sticky

Resplandor que sigue el cursor:

<Gradow variant="sticky" mode="permanent">
  <div>Contenido con resplandor que sigue el mouse</div>
</Gradow>

Personalización

Variables CSS Requeridas

Para que los componentes funcionen correctamente, necesitas definir estas variables CSS en tu tema:

:root {
  /* Colores del gradiente */
  --gradient-100: #ff6b6b;
  --gradient-200: #4ecdc4;
  --gradient-300: #45b7d1;
  
  /* Color del contenido sobre gradiente sólido */
  --gradient-content: #ffffff;
  
  /* Colores de superficie */
  --surface-300: #f8f9fa;
  
  /* Color del contenido normal */
  --content: #333333;
}

Personalización Avanzada

Puedes personalizar completamente los gradientes modificando las variables CSS:

/* Tema oscuro */
:root[data-theme="dark"] {
  --gradient-100: #667eea;
  --gradient-200: #764ba2;
  --gradient-300: #f093fb;
  --gradient-content: #ffffff;
  --surface-300: #1a1a1a;
  --content: #ffffff;
}

/* Tema personalizado */
:root[data-theme="custom"] {
  --gradient-100: #ffeaa7;
  --gradient-200: #fab1a0;
  --gradient-300: #fd79a8;
}

Ejemplos Avanzados

Tarjeta con Efectos Combinados

<Gradow variant="pulse" mode="hover" opacity={0.3}>
  <Grapper variant="sticky" mode="ghost" borderRadius="20px">
    <div style={{ padding: '2rem' }}>
      <h3>Tarjeta Interactiva</h3>
      <p>Esta tarjeta combina ambos componentes para crear un efecto único</p>
    </div>
  </Grapper>
</Gradow>

Botón con Múltiples Estados

function GradientButton({ children, onClick }) {
  const [isActive, setIsActive] = useState(false)
  
  return (
    <Gradow 
      variant="spin" 
      mode={isActive ? "permanent" : "hover"}
      opacity={0.6}
    >
      <Grapper 
        variant="spotlight" 
        mode="solid"
        borderRadius="12px"
      >
        <button 
          onClick={() => {
            setIsActive(!isActive)
            onClick?.()
          }}
          style={{ 
            padding: '1rem 2rem',
            border: 'none',
            background: 'transparent',
            color: 'inherit',
            cursor: 'pointer'
          }}
        >
          {children}
        </button>
      </Grapper>
    </Gradow>
  )
}

Layout con Efectos de Fondo

<div style={{ position: 'relative', minHeight: '100vh' }}>
  <Gradow variant="sticky" mode="permanent" opacity={0.1}>
    <div style={{ 
      position: 'absolute',
      inset: 0,
      zIndex: -1
    }} />
  </Gradow>
  
  <main>
    <h1>Contenido principal</h1>
    <p>El fondo responde al movimiento del cursor</p>
  </main>
</div>

Enlaces Útiles

Creado por Andoni Abarzuza (@kiyameh)

Licencia MIT - ¡Las contribuciones son bienvenidas!