import { EmptyStateMetadata } from './types'; /** * Opciones del helper. Los strings son requeridos para mantener el * componente i18n-agnóstico — la página los resuelve (con su namespace) y los * pasa ya traducidos. El helper solo decide la VARIANTE y compone los props. */ export interface CreateErrorStateOpts { /** * Título a mostrar. Convención: la página lo resuelve por escenario: * - red caída → `t('offlineTitle')` * - error backend → `t('errorTitle')` * * Si pasás un solo string, se usa en ambas variantes. Si pasás el objeto, * el helper elige según `isNetwork` del error interpretado. */ title: string | { offline: string; error: string; }; /** Descripción a mostrar (típicamente el `message` del backend en español). */ description?: string | { offline: string; error: string; }; /** Label del botón CTA (típicamente `t('retry')`). Si se omite, no se muestra botón. */ retryLabel?: string; /** Handler invocado al click de retry. Requerido si `retryLabel` está. */ onRetry?: () => void | Promise; /** `true` mientras el retry está corriendo — el botón pasa a WORKING. */ retrying?: boolean; } /** * Convierte un error capturado en `EmptyStateMetadata` listo para * ``. Decide la variante (`offline` vs `error`) según * `interpretError(err).isNetwork`. * * Uso típico en una page: * * ```ts * readonly errorState = computed(() => { * const err = this.loadError(); * if (!err) return null; * return createErrorStateProps(err, { * title: { offline: this.t('offlineTitle'), error: this.t('errorTitle') }, * description: { offline: this.t('offlineHint'), error: interpretError(err).message }, * retryLabel: this.t('retry'), * onRetry: () => this.reload(), * retrying: this.reloading(), * }); * }); * ``` * * En el template: * * ```html * @if (errorState(); as e) { * * } * ``` * * Para escenarios SIN error (lista vacía), construir `EmptyStateMetadata` * manualmente con `variant: 'empty'` — no es lo que este helper resuelve. */ export declare function createErrorStateProps(err: unknown, opts: CreateErrorStateOpts): EmptyStateMetadata;