react-tech-slider
Version:
Reusable React component slider for showcasing brands
185 lines (137 loc) • 4.73 kB
Markdown
# 📛 react-tech-slider
Un componente **slider de React** reutilizable y personalizable para mostrar logotipos de marcas o stacks tecnológicos con una animación suave.
Es compatible hacia atrás: `<Slider brandsList={...} />` conserva el comportamiento running actual, y si omitís `variant` se usa `running` por defecto.
## 🚀 Instalación
```bash
npm install react-tech-slider
```
```bash
pnpm add react-tech-slider
```
## 🌐 Demo en vivo
👉 [Ver demo](https://react-tech-slider-demo-git-main-t0n1-devs-projects.vercel.app/)
## ✅ Uso por defecto (running)
Importá la hoja de estilos una sola vez en el entry de tu app:
```tsx
import "react-tech-slider/styles.css";
import { Slider } from 'react-tech-slider';
const brands = [
{
id: 1,
name: 'Nike',
img: 'https://img.icons8.com/ios-filled/500/nike.png'
},
{
id: 2,
name: 'Adidas',
img: 'https://img.icons8.com/ios/500/adidas-trefoil.png'
},
{
id: 3,
name: 'Jordan',
img: 'https://img.icons8.com/ios/500/air-jordan.png'
}
];
<Slider brandsList={brands} />
```
También podés dejar explícito el modo running:
```tsx
<Slider brandsList={brands} variant="running" />
```
## 🌫️ Variante fades
```tsx
<Slider
brandsList={brands}
variant="fades"
gap={24}
iconWidth={6}
speed={1.5}
/>
```
- `variant="fades"` cambia al slider con desvanecimiento.
- `speed` es un multiplicador positivo: `2` es el doble de rápido, `0.5` es la mitad.
- Si `speed` es inválido o no positivo, cae a `1`.
## ✨ Props
### Props compartidas
| Prop | Tipo | Requerido | Predeterminado | Descripción |
|------|------|----------|---------------|-------------|
| `brandsList` | `Brand[]` | ✅ | — | Arreglo de marcas para renderizar |
| `variant` | `running` o `fades` | ❌ | `running` | Selecciona el modo del slider; si se omite, usa running |
| `iconWidth` | `number` | ❌ | — | Ancho global de los íconos en `rem` cuando un ítem no define su propio ancho |
### Props de running (`variant="running"`)
| Prop | Tipo | Requerido | Predeterminado | Descripción |
|------|------|----------|---------------|-------------|
| `borderColor` | `string` | ❌ | `#7c05d8` | Color del borde superior/inferior |
| `backgroundColor` | `string` | ❌ | `#00000033` | Color de fondo |
| `borderWidth` | `number` | ❌ | `1` | Grosor del borde en píxeles |
| `isPlay` | `boolean` | ❌ | `true` | Si la animación running está activa |
| `pauseOnHoverActive` | `boolean` | ❌ | `false` | Pausa la animación running al pasar el cursor |
| `durationMs` | `number` | ❌ | `30000` | Duración completa del ciclo running en milisegundos |
### Props de fades (`variant="fades"`)
| Prop | Tipo | Requerido | Predeterminado | Descripción |
|------|------|----------|---------------|-------------|
| `gap` | `number` | ❌ | — | Separación entre columnas en píxeles |
| `speed` | `number` | ❌ | `1` | Multiplicador positivo para la velocidad total de la animación fades |
### Interfaz Brand
```ts
interface Brand {
id: number;
name: string;
img: string;
width?: number; // rem
height?: number; // rem
style?: React.CSSProperties;
className?: string;
}
```
- `width` y `height` están en `rem`.
- `style` y `className` se aplican al `<img>` renderizado en ambos modos.
## 🎨 Notas de personalización
- El modo running conserva el comportamiento CSS actual del slider.
- El modo fades rota las marcas en columnas apiladas con nombres de animación únicos por instancia.
- Ambos modos mantienen la misma forma de `Brand` y la personalización de imagen.
- `variant` es opcional; si se omite, el componente sigue en `running`.
## 🧪 Ejemplos
### Running
```tsx
<Slider
brandsList={brands}
variant="running"
borderWidth={2}
borderColor="#0cf"
backgroundColor="#eef"
iconWidth={6}
isPlay={true}
pauseOnHoverActive={true}
durationMs={20000}
/>
```
### Fades
```tsx
<Slider
brandsList={brands}
variant="fades"
gap={32}
iconWidth={5}
speed={2}
/>
```
## 📦 Compilar y publicar
```bash
npm run build
npm publish
```
## 🤝 Contribuciones
Pull requests y sugerencias son bienvenidas en
👉 [https://github.com/T0N1-Dev/react-tech-slider](https://github.com/T0N1-Dev/react-tech-slider)
[](https://github.com/T0N1-Dev/react-tech-slider)
[](https://www.npmjs.com/package/react-tech-slider?activeTab=readme)