react-tech-slider
Version:
Reusable React component slider for showcasing brands
136 lines (100 loc) • 3.3 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 infinita suave.
Perfecto para portafolios, páginas de agencias, sitios SaaS y más.
## 🚀 Instalación
bash
npm install react-tech-slider
## 🌐 Demo en Vivo
👉 [Ver Demo](https://stackblitz.com)
## ✅ Uso Básico
```tsx
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} />
```
## ✨ Props Disponibles
| Propiedad | Tipo | Requerido | Descripción |
|------------------|-----------|-----------|----------------------------------------------------------|
| brandsList | Brand[] | ✅ | Arreglo de marcas a renderizar |
| borderColor | string | ❌ | Color del borde superior/inferior (#hex o color CSS) |
| backgroundColor | string | ❌ | Color de fondo (#hex, rgba, etc.) |
| borderWidth | number | ❌ | Grosor del borde en píxeles |
| iconWidth | number | ❌ | Ancho global de los íconos (en rem), si no se define uno por ítem |
### Interfaz Brand
```typescript
interface Brand {
id: number;
name: string;
img: string;
width?: number; // rem
height?: number; // rem
style?: React.CSSProperties;
className?: string;
}
```
## 🎨 Personalización
- Animación de scroll infinita con keyframes en CSS
- Totalmente responsivo con `clamp()` y media queries
- Fallback inteligente para el tamaño de íconos global o por ítem
- Estilos en línea opcionales a través de la prop `style`
- Pausa automática de la animación al hacer hover
- Gradiente en los bordes para un corte visual más suave
## 🧪 Ejemplo Totalmente Personalizado
```tsx
<Slider
brandsList={brands}
borderWidth={2}
borderColor="#0cf"
backgroundColor="#eef"
iconWidth={7}
/>
```
- También puedes definir tamaños, clases y estilos por ítem:
```tsx
brandsList={[
{
id: 1,
name: 'Nike',
img: 'https://img.icons8.com/ios-filled/500/nike.png',
width: 10,
height: 10,
style: { 'background-color': 'white' },
className: 'nike-brand'
},
...
]}
/>
```
## 📦 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)