import { EventEmitter } from '@angular/core'; import { FaqCategory } from '../faq/types'; import { PageBlock, PageCTABlockProps, PageCTAIntent, PageFAQBlockProps, PageGalleryBlockProps, PageHeroBlockProps, PageTextBlockProps } from './types'; import * as i0 from "@angular/core"; /** * `val-page-block` * * Organism que renderiza UN bloque del constructor de páginas de plataforma * (ADR-077, `services/page` en el backend). Es el punto de la lib donde el * catálogo de bloques (`hero`, `text`, `gallery`, `cta`, `faq`) mapea 1:1 a * componentes reales — la razón de ser del ADR: "un rediseño de la lib * mejora todas las páginas publicadas sin tocar sus datos". * * Presentacional puro: recibe `props` ya tipados (espejo exacto del `Block` * del backend), sin llamadas HTTP propias ni conocimiento de a qué app * pertenece la página. El bloque `cta` NO navega — emite `(ctaAction)` con * la intención cruda (`{ action }`) para que el consumidor (la app) la * resuelva contra su propio routing (ADR-077: "el CTA guarda una intención, * nunca una URL"). * * El caller típico itera `Page.Blocks` y renderiza uno de estos por bloque: * * @example * ```html * @for (block of page().blocks; track $index) { * * } * ``` */ export declare class PageBlockComponent { /** El bloque a renderizar — espejo de `page.Block` (backend). */ props: PageBlock; /** * Emite la intención cruda del CTA al hacer click (`{ action }`, nunca una * URL — ver comentario de clase). El consumidor decide qué hacer con * `action`; este componente no la interpreta. */ ctaAction: EventEmitter; /** Fallback de imagen rota (convención de la lib) — un slot, una signal. */ readonly heroImageFailed: import("@angular/core").WritableSignal; /** Índices de `gallery.images` cuya carga falló (`error` del ``). */ readonly failedGalleryImages: import("@angular/core").WritableSignal>; get hero(): PageHeroBlockProps; get text(): PageTextBlockProps; get gallery(): PageGalleryBlockProps; get cta(): PageCTABlockProps; get faq(): PageFAQBlockProps; /** * `text.body` es texto plano (no markdown — a diferencia de * `val-article`/`val-faq`, `blocks_validate.go` solo exige un string no * vacío). Partido por línea para que `val-text` (un `

` por línea) * respete los saltos que el autor escribió, sin interpretar sintaxis. */ textParagraphs(): string[]; /** * `val-faq` agrupa por categoría; el bloque `faq` de `services/page` no * tiene categorías (solo `items` planos) — se envuelve en una única * categoría sin label (`hideSingleCategoryLabel` default `true` la oculta). */ faqCategories(): FaqCategory[]; onCtaClick(): void; onGalleryImageError(index: number): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }