Componentes
Cubes

CheckoutCube

Checkout: contacto → envío → pago (slot agnóstico) → confirmación.

Checkout: contacto → envío → pago

Vista previa

Contacto y envío

import { CheckoutCube, type CheckoutAdapter } from "@eidondev/acme-ui/cubes";

const adapter: CheckoutAdapter = {
  getShippingOptions: ({ address, cart }) => rates.quote(address, cart), // opcional
  createOrder: ({ cart, email, address, shippingId }) =>
    orders.create({ cart, email, address, shippingId }), // → { ok, orderId, paymentClientSecret }
};

// El PASO DE PAGO es un slot: monta tu UI de proveedor con el clientSecret.
<CheckoutCube
  adapter={adapter}
  cart={cart}
  defaultEmail={session?.user.email}          // prefill de better-auth
  renderPayment={({ clientSecret, onPaid }) => (
    <StripePayment clientSecret={clientSecret} onSuccess={onPaid} />
  )}
  onComplete={(r) => router.push(`/orden/${r.orderId}`)}
/>

Comparación de temas

El mismo componente bajo distintos modos y marcas. No cambia el componente — solo los tokens (CSS variables) del contenedor.
Legacy · claro

Contacto y envío

Editorial · claro

Contacto y envío

Technical · oscuro

Contacto y envío

Warm · claro

Contacto y envío

Playful · claro

Contacto y envío