Saltar al contenido principal

Páginas y layouts

Quédate con el widget por defecto hasta que necesites páginas propias, integración en línea o tu propio contenedor.

Support da bastante de sí antes de que necesites el camino totalmente a medida. La mayoría de los cambios de maquetación siguen cabiendo en el entorno integrado.

Usa esto cuando

  • quieres otra pantalla de inicio o una página adicional
  • quieres el soporte integrado en la página en vez de flotante
  • necesitas tu propio contenedor pero sigues queriendo el router y el estado de Support

El cambio más pequeño que funciona

Usa customPages cuando quieras sustituir una página integrada y conservar el contenedor por defecto.

import { Support, useSupportNavigation } from "@fluxolat/react";
import { PENDING_CONVERSATION_ID } from "@fluxolat/react/utils/id";
 
function CustomHomePage() {
  const { navigate } = useSupportNavigation();
 
  return (
    <div className="flex h-full flex-col gap-4 p-6">
      <h2 className="text-2xl font-semibold">Launch support</h2>
      <p className="text-sm text-zinc-500">
        Keep the default conversation page. Only change the first screen.
      </p>
 
      <button
        className="border px-4 py-3 text-left"
        onClick={() =>
          navigate({
            page: "CONVERSATION",
            params: {
              conversationId: PENDING_CONVERSATION_ID,
              initialMessage: "Help me launch with the React SDK",
            },
          })
        }
        type="button"
      >
        Start a conversation
      </button>
    </div>
  );
}
 
<Support
  customPages={[
    {
      name: "HOME",
      component: CustomHomePage,
    },
  ]}
/>;

PENDING_CONVERSATION_ID es el único valor centinela que el SDK trata como una conversación aún no creada. No te inventes un ID de relleno: cualquier otra cadena se toma como una conversación real y puede provocar una petición de un registro que no existe.

Los ejemplos de maquetación de esta página usan utilidades de Tailwind por brevedad. Las API no requieren Tailwind: sustituye esas clases por tu propio CSS cuando importes @fluxolat/react/styles.css.

Variantes habituales

Integrar el soporte en la página

Usa mode="responsive" cuando el soporte deba vivir dentro de la página en lugar de flotar sobre ella.

import { Support } from "@fluxolat/react";
 
export default function SupportPanel() {
  return (
    <div className="h-[560px] overflow-hidden border">
      <Support mode="responsive" />
    </div>
  );
}

Morning Marc, how can we help?

We run onFluxo Logo

Controla el contenedor con Support.Root

Usa la composición completa cuando quieras tu propio disparador, tu propio envoltorio de contenido y tu propio registro de páginas.

import { Support } from "@fluxolat/react";
 
function LaunchChecklistPage() {
  return <div className="p-6">Your custom page</div>;
}
 
export default function App() {
  return (
    <Support.Root>
      <Support.Trigger asChild>
        <button type="button">Compose support</button>
      </Support.Trigger>
 
      <Support.Content className="border shadow-2xl">
        <Support.Router>
          <Support.Page component={LaunchChecklistPage} name="HOME" />
        </Support.Router>
      </Support.Content>
    </Support.Root>
  );
}

Launch checklist

Pick the quickest path to ship a support widget that matches your product.

Install the package
Wrap your app with SupportProvider
Choose slots or full composition

Support.Page también funciona con Support cuando quieres mantener el widget por defecto y registrar una página adicional.

Cuándo quedarte aquí

  • customPages, mode="responsive" o Support.Root te dan control suficiente
  • sigues queriendo el router, el estado y el flujo de conversación integrados
  • no necesitas una versión headless

Siguiente paso

  • Textos e idioma si lo siguiente que cambias son las palabras
  • Avanzado cuando quieras dejar el camino del widget ya hecho y construir tu propia interfaz

¿Te resultó útil esta página?

Abre una incidencia de documentación ya rellenada para que el equipo pueda actuar.