ReboFilesDocs
Empezar3
Qué es ReboFiles
Primeros pasos
Demos para ejecutar
Ponlo en tu app6
Componente de React
Headless: tu propia interfaz
Sin framework
Estilos y temas
Teclado y accesibilidad
Idiomas
Archivos9
Subidas
Vistas previas y el visor
Búsqueda
Cambios en vivo y carpetas grandes
Comentarios
Destacados y campos
Versiones, papelera y espacio
Descargar como .zip
Documentos de Word
El servidor14
La ruta
Frameworks e inicio de sesión
Quién puede hacer qué
Almacenamiento: S3, GCS, Azure y disco
Revisar las subidas
Metadatos: SQLite y Postgres
Esquema de la base de datos
Compartir y enlaces
Actividad y notificaciones
Ganchos, registros y límites
Retención, bloqueos y exportación
Escritorio y otros orígenes
Sincronizar una carpeta
Ir a producción
En equipo1
Asistentes de IA (MCP)
Referencia5
Paquetes
Componentes y hooks
API del cliente
Rutas HTTP
Estado y hoja de ruta
↑↓ para moverte↵ para abrirEsc para cerrar38 páginas

Ponlo en tu app Componente de React

Componente de React

<FileDrive> es el drive completo: la búsqueda, las secciones, la lista y la cuadrícula, los detalles, el visor, las subidas, compartir y los ajustes. Ocupa la altura que se le da y no pide nada a tu CSS.
Empezar

Ponlo en una página

Un componente de cliente, dentro de un elemento con altura. Con Rebodocs instalado, los documentos de Word se leen con su motor.

app/files/page.tsx
'use client';
import { FileDrive } from '@rebofiles/react';
import { pictureOfDocx, previewDocx, textOfDocx, thumbDocx, viewDocx } from '@rebofiles/react/rebodocs';

export default function Files() {
  return (
    <div style={{ height: 'calc(100vh - 64px)' }}>
      <FileDrive
        base="/api/files"
        title="Acme Files"
        language="es"
        theme="auto"
        headers={async () => ({ authorization: `Bearer ${await token()}` })}
        linkAddress={(token) => `${location.origin}/shared?link=${token}`}
        previewDocument={previewDocx}
        viewDocument={viewDocx}
        thumbDocument={thumbDocx}
        pictureDocument={pictureOfDocx}
        textDocument={textOfDocx}
      />
    </div>
  );
}
Props

Props: servidor

PropTypeWhat it does
basestringDónde están las rutas de @rebofiles/server. /api/files si no se dice.
clientDriveClientUn cliente propio en lugar de base: el drive guardado en la página (createMemoryClient), o uno compartido con el resto de la página.
headers() => Record<string, string>Cabeceras para cada petición a tu servidor, como un token de la sesión; nunca se envían al bucket. Puede ser async.
linkAddress(token) => stringAdónde apunta un enlace del drive: tu página con <SharedLink>. Esta página con ?link= si no se da.
settingsbooleanfalse quita la pantalla de ajustes y el botón que la abre.
Props

Props: aspecto

PropTypeWhat it does
language'en' | 'es' | 'zh'Por debajo de la elección de cada persona, por encima de la del drive. Inglés si no se da.
textsTextsLas palabras de otro idioma, con las claves de TEXTS.en.
theme'light' | 'dark' | 'auto'Por debajo de la elección de cada persona, por encima de la del drive. auto sigue al sistema.
titlestringEl nombre sobre el drive: el de tu aplicación, o “Files”.
defaultView'list' | 'grid'Cómo se muestra una carpeta la primera vez.
layout'full' | 'compact'compact: sin columna a la izquierda; Nuevo y los lugares en una franja sobre la lista, para un drive en una parte más pequeña de la página.
classNamestringUna clase propia en .rf-drive, para sus propiedades personalizadas.
chromebooleanfalse quita su barra y sus secciones, para que tu aplicación ponga las suyas: lo maneja con go, search, upload, newFolder, requestFiles, share y openSettings.
rootEntryIdLa carpeta en la que se queda, como los archivos de un registro tuyo: empieza ahí, su ruta empieza ahí y nada por encima.
onState(state) => voidDónde está, cada vez que cambia: la sección, la carpeta y su ruta, lo buscado, cuántos y el espacio; para tu propia barra.
controlsRefObject<DriveControls>React: go, search, upload, newFolder, requestFiles, share y openSettings del drive, puestos en él mientras está.
Props

Props: archivos

PropTypeWhat it does
checkUploadsbooleanfalse sube sin buscar antes el mismo archivo, o uno con su nombre, en el drive: un nombre ocupado se libera con “(2)”.
requestTemplatesbooleanfalse quita las plantillas de solicitudes: para empezar de una y para guardar una.
qrbooleanfalse quita el código QR de una solicitud hecha.
onOpen(file, url) => voidUn archivo abierto con doble clic o Enter, a tu manera. Si no se da, lo muestra el visor del drive.
fields'show' | 'edit' | falseLos campos de tu aplicación en una entrada, en sus detalles: se muestran (si no se dice), se cambian ahí por quien puede renombrarla (edit), o se dejan fuera.
Props

Props: documentos de Word

PropTypeWhat it does
previewDocument(bytes) => DocumentPreviewLos detalles de un .docx: su título y primeros párrafos. previewDocx.
viewDocument(element, bytes) => ShownDocumentEl visor de un .docx: sus páginas, una a una o todas, con el zoom y la impresión de Rebodocs. viewDocx.
thumbDocument(bytes) => Promise<HTMLElement>Su primera página dibujada en la cuadrícula, hasta que se haga una imagen de ella. thumbDocx.
pictureDocument(bytes, size, type, quality) => Promise<Blob>Su primera página como imagen, hecha al subir y guardada como su miniatura en los tamaños del drive. pictureOfDocx.
textDocument(bytes) => stringLo que tiene escrito, enviado al subir, para que una búsqueda lo encuentre. textOfDocx.
onOpenDocument(file, url) => voidDa a un .docx un botón “Abrir en Rebodocs”, llamado con una dirección desde la que leerlo.
compareDocument(element, before, after) => ShownDocument“Comparar” en cada versión salvo la actual, en el historial: lo que cambió, sobre sus páginas. compareDocx.
newDocument() => Uint8Array“Documento nuevo” en el menú Subir: un .docx vacío con el nombre que le da la persona, en la carpeta donde está, y luego abierto. newDocx.
Props

Props: eventos

PropTypeWhat it does
onChange() => voidTras cada cambio hecho desde el drive, para lo demás de la página que lo muestra (mountDrive; en React, el provider avisa a los hooks).
livebooleanLo que cambian otros, mostrado en el momento, desde /events del servidor. true si no se dice; en React, el del provider.
Compartir

Lo que ve quien recibió un enlace, sin iniciar sesión: lo que puede leer, sus carpetas, un .zip de ellas; primero se pide la contraseña, si tiene.

app/shared/page.tsx
'use client';
import { SharedLink } from '@rebofiles/react';
import { useSearchParams } from 'next/navigation';

export default function Shared() {
  return <SharedLink base="/api/files" token={useSearchParams().get('link') ?? ''} theme="auto" />;
}

Haz que los enlaces del drive apunten a ella con linkAddress.

A saber

Cuando cambia una prop

  • language, theme, title y los callbacks se aplican al cambiar, sin volver a empezar.
  • base, client o headers vuelven a crear el cliente del drive; lo que estaba subiendo sigue con el anterior.
  • Dentro de un <DriveProvider> tuyo, usa el cliente y las palabras de ese: lo que hace, lo ven tus hooks.