/** * Configuración del componente `val-user-avatar`. * * Avatar smart con cadena de fallback: * foto (`avatarUrl`) → iniciales (de `name`/`email`) → icono persona. * * Diseñado para headers, perfiles, listas de usuarios y dropdowns. * * @example Con user completo (greeting hero): * ```html * * ``` * * @example Standalone fields: * ```html * * ``` * * @example Header avatar clickable (link a /profile): * ```html * * ``` */ export interface UserAvatarMetadata { /** * User shape — pasa el resultado de `auth.user()` directamente. Cualquier * combinación de `name`/`avatarUrl`/`email` se acepta. Tienen precedencia * sobre los props sueltos (`name`, `email`, `avatarUrl`) abajo. */ user?: { name?: string; avatarUrl?: string; email?: string; handle?: string; } | null; /** Nombre directo — usado si no hay `user` o si `user.name` está vacío. */ name?: string; /** Email directo — usado si no hay `user` o si `user.email` está vacío. */ email?: string; /** URL de avatar directa — usado si no hay `user` o si `user.avatarUrl` está vacío. */ avatarUrl?: string; /** * Tamaño: * - `'xsmall'` 28px * - `'small'` (default) 32px * - `'medium'` 48px * - `'large'` 72px * - `'xlarge'` 96px */ size?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge'; /** * Forma: * - `'circle'` (default) — redondo completo * - `'square'` — bordes redondeados pero cuadrado */ shape?: 'circle' | 'square'; /** * Color de fondo para el modo iniciales/icono. Cuando no se provee, se * derive deterministicamente del `name`/`email` (mismo input → mismo color) * para que el mismo user tenga siempre el mismo color. */ background?: string; /** Color del texto/icono cuando no hay foto. Default `'#fff'`. */ foreground?: string; /** * Mostrar border. Útil para overlays sobre fotos o backgrounds dark. * Default: `false`. */ bordered?: boolean; /** Habilita grayscale (e.g., user desactivado). Default: `false`. */ grayscale?: boolean; /** Clase CSS extra. */ cssClass?: string; }