import { GetProfileResponse } from '../../../services/auth/types'; import { AvatarUploadResult } from '../avatar-upload/types'; /** * Configuración acotada de `val-profile-view` (object-first). Ejes permitidos: * - **secciones visibles** — gatean el render del avatar y de los campos * handle/phone del formulario. * - **branding** — `i18nNamespace` para resolver los textos (default * `'Settings.Profile'`). El consumer puede registrar ese namespace para * override de los defaults embebidos. * - **callbacks** — hooks tras un save / avatar exitoso (además de los toasts * internos). * * NO admite slots arbitrarios ni override del layout: la vista es full-feature * y autocontenida. */ export interface ProfileViewConfig { /** Muestra la sección de avatar (upload + meta). Default `true`. */ showAvatar?: boolean; /** Incluye el campo `handle` (@usuario) en el formulario. Default `true`. */ showHandle?: boolean; /** Incluye el campo `phone` en el formulario. Default `true`. */ showPhone?: boolean; /** * Namespace i18n con el que la vista resuelve sus textos. * Default `'Settings.Profile'`. */ i18nNamespace?: string; /** * Muestra la CTA de compartir perfil (QR modal). Requiere que el user tenga * handle configurado — si no, la sección no aparece aunque esté en `true`. * Default `true`. */ showShareCta?: boolean; /** * URL base de la app para construir el enlace del perfil público. * El enlace final es `${profileBaseUrl}/u/${handle}`. * Ej: `'https://app.myvaltech.com'`. */ profileBaseUrl?: string; /** Callback tras un guardado de perfil exitoso. */ onSaved?: (profile: GetProfileResponse) => void; /** Callback tras subir/actualizar el avatar exitosamente. */ onAvatarUploaded?: (result: AvatarUploadResult) => void; }