📦 Instalación del Component

Guía paso a paso para instalar y configurar Component-Limbo en tu proyecto.

🌐 Instalación via CDN

La forma más rápida de empezar es usando nuestro CDN integrado:

HTML
<!-- Component CSS -->
<link rel="stylesheet" href="https://limbo.lefebvre.es/cdn/component-limbo/latest/limbo.css">

<!-- Component JavaScript -->
<script src="https://limbo.lefebvre.es/cdn/component-limbo/latest/limbo.min.js"></script>

💡 Tip: Para producción, puedes usar una versión específica en lugar de 'latest':

<!-- Versión específica (recomendado para producción) -->
<script src="https://limbo.lefebvre.es/cdn/component-limbo/v1.0.0/limbo.min.js"></script>

📦 Instalación via NPM

Para proyectos que usan bundlers como Webpack, Vite, etc:

bash
npm install @lefebvre/component-limbo

Luego importa en tu código:

JavaScript
import Limbo from 'limbo-component';
import '@lefebvre/component-limbo/dist/limbo.css';

⚙️ Configuración Básica

Una vez instalado, configura tu primer componente:

HTML
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="https://limbo.lefebvre.es/cdn/component-limbo/latest/limbo.css">
</head>
<body>
    <!-- Opción 1: Contenedor para instancia manual -->
    <div id="limbo-gallery"></div>
    
    <!-- Opción 2: Input automático con clase js-limbo -->
    <input type="text" class="js-limbo" name="imagen" placeholder="URL de imagen">
    
    <script src="https://limbo.lefebvre.es/cdn/component-limbo/latest/limbo.min.js"></script>
    <script>
        // Configuración global
        Limbo.configure({
            publicKey: 'pk_tu_clave_publica',
            authMode: 'session'  // 'session', 'manual' o 'jwt'
        });
        
        // Opción 1: Crear instancia manual
        Limbo.create({
            container: '#limbo-gallery',
            mode: 'embed',      // 'embed', 'modal' o 'button'
            modeUI: 'full',     // 'full', 'gallery-only', 'upload-only', 'crop-only'
            callbacks: {
                onSelect: (data) => console.log('Imagen seleccionada:', data)
            }
        });
        
        // Opción 2: Configurar AutoInputs (detecta automáticamente .js-limbo)
        Limbo.configureAutoInputs({
            selector: '.js-limbo',
            return: 'json',     // 'url', 'json', 'assetId', 'base64'
            mode: 'modal'
        });
    </script>
</body>
</html>

🔧 Integración con Frameworks

React

import React, { useEffect, useRef } from 'react';

// Asume que Limbo está cargado globalmente o importado
function LimboGallery({ publicKey, onSelect }) {
    const containerRef = useRef(null);
    const instanceRef = useRef(null);

    useEffect(() => {
        // Configurar una sola vez
        Limbo.configure({
            publicKey: publicKey,
            authMode: 'session'
        });
    }, [publicKey]);

    useEffect(() => {
        if (containerRef.current && !instanceRef.current) {
            instanceRef.current = Limbo.create({
                container: containerRef.current,
                mode: 'embed',
                modeUI: 'full',
                callbacks: {
                    onSelect: (data) => onSelect?.(data)
                }
            });
        }

        return () => {
            if (instanceRef.current) {
                instanceRef.current.destroy();
                instanceRef.current = null;
            }
        };
    }, [onSelect]);

    return <div ref={containerRef}></div>;
}

Vue.js

<template>
  <div ref="limboContainer"></div>
</template>

<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue';

const props = defineProps(['publicKey']);
const emit = defineEmits(['select']);

const limboContainer = ref(null);
let limboInstance = null;

onMounted(() => {
  // Configurar
  Limbo.configure({
    publicKey: props.publicKey,
    authMode: 'session'
  });
  
  // Crear instancia
  limboInstance = Limbo.create({
    container: limboContainer.value,
    mode: 'embed',
    modeUI: 'full',
    callbacks: {
      onSelect: (data) => emit('select', data)
    }
  });
});

onBeforeUnmount(() => {
  limboInstance?.destroy();
});
</script>

📋 Requisitos

🌐 Navegadores

  • Chrome 80+
  • Firefox 75+
  • Safari 13+
  • Edge 80+

🔑 API Key

Necesitas una API Key válida de Limbo. Obtén una aquí.

📱 Responsive

El componente es completamente responsive y funciona en dispositivos móviles, tablets y desktop.

👉 Próximos Pasos