/** * Configuración acotada de `val-about-view` (object-first). La vista About es * app-specific por naturaleza (logo, nombre, versión, redes, acciones extra), * así que lo propio de cada app se parametriza como **DATA de config** — NO como * slots arbitrarios (ADR-021: una vista full-feature no abre slots; si falta * algo, se promueve un nuevo punto de extensión). * * Ejes de variación permitidos: * - **branding** — `brand.name` / `brand.logoSrc` (qué muestra el HERO). * - **versión** — `version` la pasa el consumer (la lib NO puede importar el * `version.ts` de la app). Si no se pasa, se oculta el pill de versión. * - **redes** — `socialLinks`; si está vacío se oculta la sección social. * - **rating** — `showRating` + `ratingEntityId` + `onRated`. * - **acciones extra** — `actions[]` genéricas que el consumer agrega junto a * la acción de rating built-in. * - **branding i18n** — `i18nNamespace` (default `'Settings.About'`). */ /** Marca a mostrar en el HERO (logo + nombre). */ export interface AboutBrand { /** Nombre de la marca. Default `'Valtech'`. */ name?: string; /** Ruta del logo. Default `'assets/images/main-icon.png'`. */ logoSrc?: string; /** * Nombre de una CSS custom property (ej. `'--main-logo-mini'`) cuyo valor es un * `url(...)` con el logo de marca. Si se pasa, el HERO renderiza el logo como * background de la variable — **theme-aware** (cambia con dark mode si la app * redefine la variable) — en vez del ``. Tiene prioridad sobre * `logoSrc`. Pensado para el patrón del factory donde cada app define * `--main-logo`/`--main-logo-mini` en su `variables.scss`. */ logoVar?: string; } /** * Acción genérica extra de la sección "Acciones" (además del rating built-in). * El consumer la modela completa (label/descripción/ícono + handler). Las * acciones share/faq de showcase NO son genéricas (Web Share API y ruta interna * de la app), por eso se exponen como `actions` para que cada app aporte las * suyas en vez de hardcodearlas en la lib. */ export interface AboutAction { /** Texto principal de la action-card. */ label: string; /** Texto secundario (opcional). */ description?: string; /** Ionicon name (ej. `'share-social-outline'`). */ icon?: string; /** Handler del click. */ onClick: () => void; } export interface AboutViewConfig { /** Marca del HERO (logo + nombre). Default Valtech. */ brand?: AboutBrand; /** * Versión a mostrar en el pill (el consumer pasa su `APP_VERSION`). La lib NO * importa el `version.ts` de la app. Si no se pasa, el pill de versión se * oculta. */ version?: string; /** * Redes sociales. Si está vacío (o no se pasa), la sección social se oculta. * `icon` = ionicon name; `url` = destino; `label` = aria-label. */ socialLinks?: { icon: string; url: string; label: string; }[]; /** Muestra la action-card de rating built-in. Default `true`. */ showRating?: boolean; /** * `entityId` del `entityRef` que recibe `val-content-reaction` al calificar * (el `entityType` es siempre `'app'`). Default `'experience'`. */ ratingEntityId?: string; /** Acciones genéricas extra de la sección "Acciones". Default `[]`. */ actions?: AboutAction[]; /** * Namespace i18n con el que la vista resuelve sus textos. * Default `'Settings.About'`. */ i18nNamespace?: string; /** Hook tras enviar la calificación (rating) desde `val-content-reaction`. */ onRated?: () => void; }