Un componente flexible y personalizable para mostrar historias (stories) al estilo de redes sociales en tus aplicaciones React.
- Soporte para múltiples tipos de contenido: imágenes, videos, YouTube, contenido JSX personalizado.
- Duración personalizable: define cuántos segundos dura cada historia.
- Interactividad: pausa, reanuda y avanza las historias con facilidad.
- Estilo adaptable: personaliza el aspecto visual según tus necesidades.
Primero, instala el paquete usando npm o yarn:
npm install storie-component
# o
yarn add storie-componentImporta el componente y pásale un array de historias como propiedad content. Cada historia debe incluir un tipo (type) y el contenido asociado.
| Propiedad | Tipo | Descripción | Obligatoria |
|---|---|---|---|
content |
TContent[] |
Array de historias (puede incluir imágenes, videos, YouTube y JSX). | ✅ |
seconds |
number |
Duración de cada historia en segundos. | ✅ |
progress |
boolean |
Muestra u oculta la barra de progreso. | ❌ |
-
Imagen (
type: 'image'):url: URL de la imagen.
-
YouTube (
type: 'youtube'):url: URL del video en formato embebido (https://www.youtube.com/embed/...).
-
Contenido JSX (
type: 'jsx'):content: Función que retorna un componente JSX. Se recibe la propisPlaypara manejar el estado de reproducción.styles: (Opcional) Objeto de estilos para personalizar el fondo o color.
-
Video (
type: 'video'):url: URL del video.fullscreen: (Opcional) Si el video debe mostrarse en pantalla completa (truepor defecto).muted: (Opcional) Si el video está silenciado.
Si necesitas compilar el proyecto antes de publicarlo:
npm run buildAsegúrate de que las dependencias de peerDependencies estén correctamente configuradas para React y ReactDOM.
Puedes personalizar los estilos agregando tu propio archivo CSS o modificando el objeto styles en las historias JSX.
const advancedArray = [
{
type: 'image',
url: 'https://via.placeholder.com/360x640',
},
{
type: 'video',
url: 'https://cdn.example.com/sample-video.mp4',
muted: true,
fullscreen: false,
},
{
type: 'jsx',
content: ({ isPlay }) => (
<div style={{ padding: '20px', color: '#fff', backgroundColor: 'blue' }}>
<h1>¡Hola!</h1>
<p>Esto es contenido personalizado</p>
<p>¿Está reproduciéndose? {isPlay ? 'Sí' : 'No'}</p>
</div>
),
},
];
<StoriesComponent content={advancedArray} seconds={10} />;- Licencia: MIT.
- Contribución: Se aceptan PRs y sugerencias en el repositorio oficial.
Para preguntas, puedes contactarme en GitHub.