@praxisui/editorial-forms 1.0.0-beta.63 → 1.0.0-beta.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"praxisui-editorial-forms.mjs","sources":["../../../projects/praxis-editorial-forms/src/lib/praxis-editorial-forms.ts","../../../projects/praxis-editorial-forms/src/lib/editorial-runtime.contract.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/editorial-data-block-adapter.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/editorial-data-block-adapter-registry.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-data-collection-block-outlet.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-intro-hero-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-review-sections-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-selection-cards-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-success-panel-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-block-renderer.component.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-presentation.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-stepper.component.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-preset-resolver.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-state.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-fallback.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-theme.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/editorial-form-runtime.component.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/dynamic-form/editorial-dynamic-form.adapter.ts","../../../projects/praxis-editorial-forms/src/lib/i18n/editorial-forms.en.ts","../../../projects/praxis-editorial-forms/src/lib/i18n/editorial-forms.pt.ts","../../../projects/praxis-editorial-forms/src/lib/i18n/editorial-forms.i18n.ts","../../../projects/praxis-editorial-forms/src/lib/testing/editorial-runtime.fixtures.ts","../../../projects/praxis-editorial-forms/src/public-api.ts","../../../projects/praxis-editorial-forms/src/praxisui-editorial-forms.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Root provider entrypoint for the editorial runtime package.\n *\n * Intentionally minimal in v1:\n * - no global singleton graph yet\n * - no dependency on @praxisui/dynamic-form\n * - safe to consume from apps without pulling generic form authoring\n */\nexport function providePraxisEditorialForms(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","import type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\n\nexport interface EditorialRuntimeInput {\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n runtimeContext?: Record<string, unknown> | null;\n}\n\nexport interface EditorialRuntimeHostConfig {\n emitOperationalEvents?: boolean;\n forwardAdapterOperationalEvents?: boolean;\n}\n\nexport const DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG: Required<EditorialRuntimeHostConfig> = {\n emitOperationalEvents: true,\n forwardAdapterOperationalEvents: true,\n};\n","import type {\n EditorialBlock,\n EditorialBlockVisibilityRule,\n} from '@praxisui/core';\n\nexport function resolveActiveJourney<TJourney extends { journeyId: string }>(\n journeys: ReadonlyArray<TJourney>,\n journeyId: string | null | undefined,\n): TJourney | null {\n if (!journeys.length) {\n return null;\n }\n return journeys.find((journey) => journey.journeyId === journeyId) ?? journeys[0];\n}\n\nexport function resolveActiveStep<TStep extends { stepId: string }>(\n journey: { steps: ReadonlyArray<TStep> } | null,\n stepId: string | null | undefined,\n): TStep | null {\n if (!journey?.steps.length) {\n return null;\n }\n return journey.steps.find((step) => step.stepId === stepId) ?? journey.steps[0];\n}\n\nexport function getVisibleBlocks(\n blocks: ReadonlyArray<EditorialBlock> | null | undefined,\n runtimeContext: Record<string, unknown> | null | undefined,\n): EditorialBlock[] {\n return (blocks ?? []).filter((block) => isBlockVisible(block, runtimeContext));\n}\n\nexport function isBlockVisible(\n block: EditorialBlock,\n runtimeContext: Record<string, unknown> | null | undefined,\n): boolean {\n if (!block.visibility?.length) {\n return true;\n }\n return block.visibility.every((rule) => matchesVisibilityRule(rule, runtimeContext));\n}\n\nexport function matchesVisibilityRule(\n rule: EditorialBlockVisibilityRule,\n runtimeContext: Record<string, unknown> | null | undefined,\n): boolean {\n if (!rule.when) {\n return true;\n }\n const currentValue = getValueAtPath(runtimeContext ?? {}, rule.when);\n if (rule.exists === true) {\n return currentValue != null;\n }\n if (rule.exists === false) {\n return currentValue == null;\n }\n if (rule.equals !== undefined) {\n return currentValue === rule.equals;\n }\n if (rule.notEquals !== undefined) {\n return currentValue !== rule.notEquals;\n }\n return true;\n}\n\nexport function getValueAtPath(source: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((current, segment) => {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n return (current as Record<string, unknown>)[segment];\n }, source);\n}\n","import { InjectionToken, Type } from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n FormConfig,\n} from '@praxisui/core';\n\nexport type EditorialDataBlockComponentInputs = Record<string, unknown>;\n\nexport interface EditorialDataBlockValueChangeEvent {\n formData: Record<string, unknown>;\n mode?: 'merge' | 'replace';\n removedKeys?: string[];\n}\n\nexport interface EditorialDataBlockContext {\n block: EditorialDataCollectionBlock;\n runtimeContext: Record<string, unknown> | null;\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n resolvedFormConfig: FormConfig | null;\n}\n\nexport interface EditorialDataBlockAdapter {\n readonly adapterId: string;\n readonly displayName?: string;\n readonly component?: Type<unknown>;\n resolveComponent?(\n context: EditorialDataBlockContext,\n ): Promise<Type<unknown>> | Type<unknown>;\n supports?(context: EditorialDataBlockContext): boolean;\n buildInputs?(context: EditorialDataBlockContext): EditorialDataBlockComponentInputs;\n validateComponent?(\n component: Type<unknown>,\n context: EditorialDataBlockContext,\n ): { ok: true } | { ok: false; reason: string };\n}\n\nfunction getEditorialDataBlockAdapterToken(): InjectionToken<\n ReadonlyArray<EditorialDataBlockAdapter>\n> {\n const registryKey = '__PAX_EDITORIAL_DATA_BLOCK_ADAPTER_TOKEN__';\n const globalRegistry = globalThis as typeof globalThis & {\n [registryKey]?: InjectionToken<ReadonlyArray<EditorialDataBlockAdapter>>;\n };\n\n if (!globalRegistry[registryKey]) {\n globalRegistry[registryKey] = new InjectionToken<\n ReadonlyArray<EditorialDataBlockAdapter>\n >('EDITORIAL_DATA_BLOCK_ADAPTER');\n }\n\n return globalRegistry[registryKey];\n}\n\nexport const EDITORIAL_DATA_BLOCK_ADAPTER =\n getEditorialDataBlockAdapterToken();\n\nexport interface EditorialDataBlockResolution {\n source:\n | 'block.formConfig'\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs'\n | 'unresolved';\n formConfig: FormConfig | null;\n lookupKey?: string;\n ambiguous?: boolean;\n matchedSources?: Array<\n | 'block.formConfig'\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs'\n >;\n matchedKeys?: string[];\n}\n\nexport function resolveEditorialDataBlockFormConfigDetails(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): EditorialDataBlockResolution {\n if (block.formConfig) {\n return {\n source: 'block.formConfig',\n formConfig: block.formConfig,\n lookupKey: block.formBlockId,\n ambiguous: false,\n matchedSources: ['block.formConfig'],\n matchedKeys: [block.formBlockId],\n };\n }\n\n const runtimeConfigs = instance?.overrides?.runtimeFormConfigs;\n const compatibilityConfigs = instance?.compatibilityFormConfigs;\n const candidateKeys = [...new Set([block.formConfigRef, block.formBlockId].filter(\n (value): value is string => Boolean(value),\n ))];\n const matches: Array<{\n source:\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs';\n formConfig: FormConfig;\n lookupKey: string;\n }> = [];\n\n for (const key of candidateKeys) {\n const runtimeResolved = runtimeConfigs?.[key];\n if (runtimeResolved) {\n matches.push({\n source: 'instance.overrides.runtimeFormConfigs',\n formConfig: runtimeResolved,\n lookupKey: key,\n });\n }\n\n const compatibilityResolved = compatibilityConfigs?.[key];\n if (compatibilityResolved) {\n matches.push({\n source: 'instance.compatibilityFormConfigs',\n formConfig: compatibilityResolved,\n lookupKey: key,\n });\n }\n }\n\n if (matches.length) {\n const selected = matches[0];\n return {\n source: selected.source,\n formConfig: selected.formConfig,\n lookupKey: selected.lookupKey,\n ambiguous: matches.length > 1,\n matchedSources: matches.map((match) => match.source),\n matchedKeys: matches.map((match) => match.lookupKey),\n };\n }\n\n return {\n source: 'unresolved',\n formConfig: null,\n lookupKey: block.formConfigRef ?? block.formBlockId,\n ambiguous: false,\n matchedSources: [],\n matchedKeys: [],\n };\n}\n\nexport function resolveEditorialDataBlockFormConfig(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): FormConfig | null {\n return resolveEditorialDataBlockFormConfigDetails(block, instance).formConfig;\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport type {\n EditorialDataBlockAdapter,\n EditorialDataBlockContext,\n} from './editorial-data-block-adapter';\nimport { EDITORIAL_DATA_BLOCK_ADAPTER } from './editorial-data-block-adapter';\n\nexport type EditorialDataBlockAdapterResolutionStatus =\n | 'resolved'\n | 'missing'\n | 'incompatible';\n\nexport interface EditorialDataBlockAdapterResolution {\n status: EditorialDataBlockAdapterResolutionStatus;\n adapter: EditorialDataBlockAdapter | null;\n adapterIds: string[];\n registrySize: number;\n}\n\nexport class EditorialDataBlockAdapterRegistry {\n constructor(\n private readonly adapters: ReadonlyArray<EditorialDataBlockAdapter>,\n ) {}\n\n resolve(\n context: EditorialDataBlockContext,\n ): EditorialDataBlockAdapterResolution {\n return resolveEditorialDataBlockAdapter(this.adapters, context);\n }\n}\n\nexport function provideEditorialDataBlockAdapter(\n adapter: EditorialDataBlockAdapter,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: EDITORIAL_DATA_BLOCK_ADAPTER,\n useValue: adapter,\n multi: true,\n },\n ]);\n}\n\nexport function resolveEditorialDataBlockAdapter(\n adapters: ReadonlyArray<EditorialDataBlockAdapter>,\n context: EditorialDataBlockContext,\n): EditorialDataBlockAdapterResolution {\n if (!adapters.length) {\n return {\n status: 'missing',\n adapter: null,\n adapterIds: [],\n registrySize: 0,\n };\n }\n\n const resolved = adapters.find(\n (candidate) => candidate.supports?.(context) ?? true,\n ) ?? null;\n\n return {\n status: resolved ? 'resolved' : 'incompatible',\n adapter: resolved,\n adapterIds: adapters.map((item) => item.adapterId),\n registrySize: adapters.length,\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ComponentRef,\n Component,\n Type,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport { PraxisI18nService } from '@praxisui/core';\nimport type { EditorialResolvedDataCollectionBlock } from '../runtime/editorial-runtime-snapshot.model';\nimport {\n EDITORIAL_DATA_BLOCK_ADAPTER,\n EditorialDataBlockAdapter,\n EditorialDataBlockResolution,\n type EditorialDataBlockValueChangeEvent,\n resolveEditorialDataBlockFormConfig,\n resolveEditorialDataBlockFormConfigDetails,\n} from '../adapters/editorial-data-block-adapter';\nimport {\n EditorialDataBlockAdapterRegistry,\n} from '../adapters/editorial-data-block-adapter-registry';\nimport type { EditorialRuntimeOperationalEvent } from '../runtime/editorial-runtime-events.model';\n\ntype DataCollectionOutletState =\n | { kind: 'idle' }\n | { kind: 'loading'; message: string }\n | { kind: 'ready' }\n | { kind: 'error'; title: string; message: string; details?: string };\n\ntype DataCollectionLoadingState = Extract<\n DataCollectionOutletState,\n { kind: 'loading' }\n>;\ntype DataCollectionErrorState = Extract<\n DataCollectionOutletState,\n { kind: 'error' }\n>;\n\n@Component({\n selector: 'praxis-editorial-data-collection-block-outlet',\n standalone: true,\n imports: [CommonModule],\n template: `\n <section\n class=\"data-block\"\n [class.block-card]=\"effectiveSurface() === 'card'\"\n [class.block-plain]=\"effectiveSurface() === 'plain'\"\n [attr.data-surface]=\"effectiveSurface()\"\n >\n @if (block().title) {\n <h3>{{ block().title }}</h3>\n }\n\n @if (block().description) {\n <p class=\"description\">{{ block().description }}</p>\n }\n\n @if (adapterComponent(); as adapterComponent) {\n <ng-template #adapterHost></ng-template>\n } @else if (loadingState(); as loadingState) {\n <div class=\"feedback status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <strong>{{ t('dataCollection.loadingTitle', 'Preparando coleta') }}</strong>\n <p>{{ loadingState.message }}</p>\n </div>\n } @else if (errorState(); as errorState) {\n <div class=\"feedback error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n <strong>{{ errorState.title }}</strong>\n <p>{{ errorState.message }}</p>\n @if (errorState.details) {\n <p class=\"details\">{{ errorState.details }}</p>\n }\n </div>\n } @else {\n <div class=\"feedback status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <strong>{{ t('dataCollection.unavailableTitle', 'Coleta nao disponivel') }}</strong>\n <p>{{ fallbackMessage() }}</p>\n </div>\n }\n </section>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .data-block {\n display: grid;\n gap: 12px;\n }\n\n .block-card {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: var(--editorial-card-radius, 18px);\n background: var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));\n border: 1px solid color-mix(\n in srgb,\n var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 65%,\n transparent\n );\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .block-plain {\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n }\n\n h3,\n p {\n margin: 0;\n }\n\n .description,\n .feedback {\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n\n .feedback {\n display: grid;\n gap: 6px;\n padding: 12px 14px;\n border-radius: 14px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 70%, transparent);\n background: var(--md-sys-color-surface, #fff);\n }\n\n .feedback strong {\n color: var(--md-sys-color-on-surface, #1b1b1f);\n }\n\n .error {\n border-color: color-mix(in srgb, var(--md-sys-color-error, #b3261e) 50%, transparent);\n background: color-mix(in srgb, var(--md-sys-color-error-container, #f9dedc) 35%, var(--md-sys-color-surface, #fff));\n }\n\n .details {\n font-size: 0.9rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialDataCollectionBlockOutletComponent {\n private readonly i18n = inject(PraxisI18nService);\n private readonly adapters = inject(EDITORIAL_DATA_BLOCK_ADAPTER, {\n optional: true,\n }) ?? [];\n private readonly destroyRef = inject(DestroyRef);\n private readonly adapterRegistry = new EditorialDataBlockAdapterRegistry(this.adapters);\n private readonly adapterHost = viewChild('adapterHost', { read: ViewContainerRef });\n private loadVersion = 0;\n private lastAdapterEventSignature: string | null = null;\n private componentRef: ComponentRef<unknown> | null = null;\n private renderedComponentType: Type<unknown> | null = null;\n private componentOutputSubscriptions: Array<{ unsubscribe(): void }> = [];\n\n readonly block = input.required<\n EditorialDataCollectionBlock | EditorialResolvedDataCollectionBlock\n >();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContextChange = output<Record<string, unknown>>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n private readonly resolvedComponent = signal<Type<unknown> | null>(null);\n protected readonly state = signal<DataCollectionOutletState>({ kind: 'idle' });\n\n protected readonly adapterContext = computed(() => ({\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: resolveEditorialDataBlockFormConfig(\n this.block(),\n this.instance(),\n ),\n }));\n\n private readonly resolution = computed<EditorialDataBlockResolution>(() =>\n resolveEditorialDataBlockFormConfigDetails(this.block(), this.instance()),\n );\n\n protected readonly adapterResolution = computed(() =>\n this.adapterRegistry.resolve(this.adapterContext()),\n );\n protected readonly adapter = computed(() =>\n this.adapterResolution().adapter,\n );\n\n protected readonly adapterComponent = computed(\n () => this.resolvedComponent() ?? this.adapter()?.component ?? null,\n );\n protected readonly loadingState = computed<DataCollectionLoadingState | null>(() => {\n const state = this.state();\n return state.kind === 'loading' ? state : null;\n });\n protected readonly errorState = computed<DataCollectionErrorState | null>(() => {\n const state = this.state();\n return state.kind === 'error' ? state : null;\n });\n\n protected readonly adapterInputs = computed(() => {\n const adapter = this.adapter();\n if (!adapter) {\n return {};\n }\n\n return {\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: this.resolution().formConfig,\n ...(adapter.buildInputs?.(this.adapterContext()) ?? {}),\n };\n });\n\n protected readonly fallbackMessage = computed(() => {\n const resolution = this.resolution();\n const block = this.block();\n const adapterResolution = this.adapterResolution();\n const errorState = this.errorState();\n const snapshotState = isResolvedDataCollectionBlock(block)\n ? block.dataCollectionState\n : null;\n\n if (errorState) {\n return errorState.message;\n }\n\n if (snapshotState?.readiness === 'invalid') {\n return this.t(\n 'dataCollection.fallback.invalid',\n 'O bloco \"{formBlockId}\" foi materializado com estado invalido. Revise formBlockId, formConfigRef e a configuracao editorial herdada.',\n { formBlockId: block.formBlockId },\n );\n }\n\n if (snapshotState?.readiness === 'missingConfig') {\n return this.t(\n 'dataCollection.fallback.missingConfig',\n 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta. Chave consultada: {lookupKey}.',\n {\n formBlockId: block.formBlockId,\n lookupKey: snapshotState.resolvedFormConfigLookupKey ?? 'nenhuma chave candidata',\n },\n );\n }\n\n if (adapterResolution.status === 'incompatible') {\n return this.t(\n 'dataCollection.fallback.incompatible',\n 'O bloco \"{formBlockId}\" encontrou adapters registrados ({adapterIds}), mas nenhum declarou compatibilidade para esta coleta.',\n {\n formBlockId: block.formBlockId,\n adapterIds: adapterResolution.adapterIds.join(', ') || 'nenhum',\n },\n );\n }\n\n if (!resolution.formConfig && adapterResolution.status === 'missing') {\n return this.t(\n 'dataCollection.fallback.missingAdapter',\n 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta nem adaptador registrado. Verifique o provider do host e a materializacao do FormConfig editorial.',\n { formBlockId: block.formBlockId },\n );\n }\n\n if (!resolution.formConfig) {\n return this.t(\n 'dataCollection.fallback.adapterWithoutConfig',\n 'O bloco \"{formBlockId}\" encontrou um adaptador, mas nao encontrou FormConfig em {lookupKey}.',\n {\n formBlockId: block.formBlockId,\n lookupKey: resolution.lookupKey ?? 'nenhuma chave conhecida',\n },\n );\n }\n\n return this.t(\n 'dataCollection.fallback.unresolvedEngine',\n 'Existe configuracao para \"{formBlockId}\" ({source}), mas nenhum adaptador de coleta foi registrado para materializar a engine.',\n {\n formBlockId: block.formBlockId,\n source: resolution.source,\n },\n );\n });\n\n protected readonly effectiveSurface = computed<'card' | 'plain'>(() =>\n this.block().surface === 'plain' ? 'plain' : 'card',\n );\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.destroyRenderedComponent();\n });\n\n effect(() => {\n const context = this.adapterContext();\n const resolution = this.resolution();\n const adapterResolution = this.adapterResolution();\n const adapter = adapterResolution.adapter;\n const requestVersion = ++this.loadVersion;\n\n this.emitAdapterResolutionEvent(adapterResolution.status, adapter, undefined);\n\n if (!adapter) {\n this.resolvedComponent.set(null);\n this.state.set({ kind: 'idle' });\n if (adapterResolution.status === 'incompatible') {\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.incompatibleTitle', 'Adaptador incompatível'),\n message: this.t(\n 'dataCollection.error.incompatibleMessage',\n 'Nenhum adaptador registrado aceitou o bloco \"{formBlockId}\".',\n { formBlockId: context.block.formBlockId },\n ),\n details: this.t(\n 'dataCollection.error.availableAdapters',\n 'Adapters disponiveis: {adapterIds}.',\n { adapterIds: adapterResolution.adapterIds.join(', ') || 'nenhum' },\n ),\n });\n }\n return;\n }\n\n if (!resolution.formConfig) {\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.missingConfigTitle', 'Configuracao de coleta ausente'),\n message: this.t(\n 'dataCollection.error.missingConfigMessage',\n 'O bloco \"{formBlockId}\" nao possui FormConfig resolvido para a engine de coleta.',\n { formBlockId: context.block.formBlockId },\n ),\n details: this.t(\n 'dataCollection.error.lookupSource',\n 'Origem consultada: {lookupKey}.',\n { lookupKey: resolution.lookupKey ?? 'nenhuma chave candidata' },\n ),\n });\n return;\n }\n\n if (!adapter.resolveComponent) {\n const component = adapter.component ?? null;\n if (!component) {\n this.resolvedComponent.set(null);\n this.emitAdapterResolutionEvent(\n 'invalid',\n adapter,\n this.t(\n 'dataCollection.error.adapterRegistrationHint',\n 'Registre um componente compatível ou implemente resolveComponent().',\n ),\n );\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.incompleteAdapterTitle', 'Adaptador incompleto'),\n message: this.t(\n 'dataCollection.error.incompleteAdapterMessage',\n 'O adaptador \"{adapterName}\" nao expôs um componente de coleta.',\n { adapterName: adapter.displayName ?? adapter.adapterId },\n ),\n details: this.t(\n 'dataCollection.error.adapterRegistrationHint',\n 'Registre um componente compatível ou implemente resolveComponent().',\n ),\n });\n return;\n }\n\n this.applyResolvedComponent(component, adapter, context, requestVersion);\n return;\n }\n\n this.state.set({\n kind: 'loading',\n message: this.t(\n 'dataCollection.loadingMessage',\n 'Carregando a engine de coleta para \"{formBlockId}\"...',\n { formBlockId: context.block.formBlockId },\n ),\n });\n void this.loadAdapterComponent(adapter, context, requestVersion);\n });\n\n effect(() => {\n const component = this.adapterComponent();\n const host = this.adapterHost();\n\n if (!host || !component) {\n this.destroyRenderedComponent();\n return;\n }\n\n if (this.renderedComponentType !== component) {\n this.destroyRenderedComponent();\n host.clear();\n this.componentRef = host.createComponent(component);\n this.renderedComponentType = component;\n this.bindComponentOutputs(this.componentRef);\n }\n\n this.applyComponentInputs();\n });\n }\n\n private async loadAdapterComponent(\n adapter: EditorialDataBlockAdapter,\n context: ReturnType<typeof this.adapterContext>,\n requestVersion: number,\n ): Promise<void> {\n try {\n const component = await adapter.resolveComponent?.(context);\n this.applyResolvedComponent(component ?? null, adapter, context, requestVersion);\n } catch {\n if (requestVersion !== this.loadVersion) {\n return;\n }\n\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.loadFailureTitle', 'Falha ao carregar a engine'),\n message: this.t(\n 'dataCollection.error.loadFailureMessage',\n 'O adaptador \"{adapterName}\" falhou ao preparar a coleta do bloco \"{formBlockId}\".',\n {\n adapterName: adapter.displayName ?? adapter.adapterId,\n formBlockId: context.block.formBlockId,\n },\n ),\n details: this.t(\n 'dataCollection.error.loadFailureDetails',\n 'Valide o provider opcional do host e a disponibilidade do componente compatível.',\n ),\n });\n }\n }\n\n private applyResolvedComponent(\n component: Type<unknown> | null,\n adapter: EditorialDataBlockAdapter,\n context: ReturnType<typeof this.adapterContext>,\n requestVersion: number,\n ): void {\n if (requestVersion !== this.loadVersion) {\n return;\n }\n\n if (!component) {\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.unresolvedComponentTitle', 'Componente nao resolvido'),\n message: this.t(\n 'dataCollection.error.unresolvedComponentMessage',\n 'O adaptador \"{adapterName}\" nao retornou um componente para o bloco \"{formBlockId}\".',\n {\n adapterName: adapter.displayName ?? adapter.adapterId,\n formBlockId: context.block.formBlockId,\n },\n ),\n details: this.t(\n 'dataCollection.error.unresolvedComponentDetails',\n 'Implemente component ou resolveComponent() com um componente Angular compatível.',\n ),\n });\n return;\n }\n\n const validation = adapter.validateComponent?.(component, context) ?? { ok: true as const };\n if (!validation.ok) {\n this.resolvedComponent.set(null);\n this.emitAdapterResolutionEvent('invalid', adapter, validation.reason);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.invalidComponentTitle', 'Componente incompatível'),\n message: this.t(\n 'dataCollection.error.invalidComponentMessage',\n 'O adaptador \"{adapterName}\" retornou um componente incompatível para \"{formBlockId}\".',\n {\n adapterName: adapter.displayName ?? adapter.adapterId,\n formBlockId: context.block.formBlockId,\n },\n ),\n details: validation.reason,\n });\n return;\n }\n\n this.resolvedComponent.set(component);\n this.state.set({ kind: 'ready' });\n this.emitAdapterResolutionEvent('resolved', adapter);\n }\n\n private emitAdapterResolutionEvent(\n status: 'resolved' | 'missing' | 'incompatible' | 'invalid',\n adapter: EditorialDataBlockAdapter | null,\n reason?: string,\n ): void {\n const block = this.block();\n const adapterIds = this.adapterResolution().adapterIds;\n const signature = `${status}:${block.blockId}:${block.formBlockId}:${adapter?.adapterId ?? 'none'}:${reason ?? ''}:${adapterIds.join(',')}`;\n if (signature === this.lastAdapterEventSignature) {\n return;\n }\n this.lastAdapterEventSignature = signature;\n\n if (status === 'resolved' && adapter) {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-resolved',\n timestamp: Date.now(),\n severity: 'info',\n blockId: block.blockId,\n payload: {\n adapterId: adapter.adapterId,\n formBlockId: block.formBlockId,\n },\n });\n return;\n }\n\n if (status === 'invalid' && adapter) {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-invalid',\n timestamp: Date.now(),\n severity: 'error',\n blockId: block.blockId,\n payload: {\n adapterId: adapter.adapterId,\n formBlockId: block.formBlockId,\n reason: reason ?? 'Adaptador retornou componente incompatível.',\n },\n });\n return;\n }\n\n if (status === 'incompatible') {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-incompatible',\n timestamp: Date.now(),\n severity: 'warning',\n blockId: block.blockId,\n payload: {\n formBlockId: block.formBlockId,\n adapterIds,\n },\n });\n return;\n }\n\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-missing',\n timestamp: Date.now(),\n severity: 'warning',\n blockId: block.blockId,\n payload: {\n formBlockId: block.formBlockId,\n adapterIds,\n },\n });\n }\n\n private applyComponentInputs(): void {\n if (!this.componentRef) {\n return;\n }\n\n const inputs = {\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: this.resolution().formConfig,\n ...(this.adapter()?.buildInputs?.(this.adapterContext()) ?? {}),\n };\n\n for (const [key, value] of Object.entries(inputs)) {\n this.componentRef.setInput(key, value);\n }\n }\n\n private bindComponentOutputs(componentRef: ComponentRef<unknown>): void {\n this.componentOutputSubscriptions = [];\n const instance = componentRef.instance as Record<string, unknown>;\n const valueChange = instance['valueChange'];\n\n if (!isSubscribableOutput(valueChange)) {\n return;\n }\n\n this.componentOutputSubscriptions.push(\n valueChange.subscribe((event: unknown) => {\n const payload = extractFormDataChangeEvent(event);\n if (!payload) {\n return;\n }\n this.runtimeContextChange.emit(this.mergeFormDataIntoRuntimeContext(payload));\n }),\n );\n }\n\n private mergeFormDataIntoRuntimeContext(\n payload: EditorialDataBlockValueChangeEvent,\n ): Record<string, unknown> {\n const runtimeContext = this.runtimeContext();\n const currentFormData = readRuntimeFormData(runtimeContext);\n const nextFormData = payload.mode === 'replace'\n ? { ...payload.formData }\n : { ...currentFormData, ...payload.formData };\n\n for (const key of payload.removedKeys ?? []) {\n delete nextFormData[key];\n }\n\n return {\n ...(runtimeContext ?? {}),\n formData: nextFormData,\n };\n }\n\n private destroyRenderedComponent(): void {\n for (const subscription of this.componentOutputSubscriptions) {\n subscription.unsubscribe();\n }\n this.componentOutputSubscriptions = [];\n this.componentRef?.destroy();\n this.componentRef = null;\n this.renderedComponentType = null;\n }\n\n protected t(\n key: string,\n fallback: string,\n params?: Record<string, string | number | boolean | null | undefined>,\n ): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, params, fallback);\n }\n}\n\nfunction isSubscribableOutput(\n candidate: unknown,\n): candidate is { subscribe(callback: (value: unknown) => void): { unsubscribe(): void } } {\n return !!candidate && typeof candidate === 'object' && typeof (candidate as { subscribe?: unknown }).subscribe === 'function';\n}\n\nfunction extractFormDataChangeEvent(\n event: unknown,\n): EditorialDataBlockValueChangeEvent | null {\n if (!event || typeof event !== 'object') {\n return null;\n }\n const formData = (event as { formData?: unknown }).formData;\n if (!formData || typeof formData !== 'object' || Array.isArray(formData)) {\n return null;\n }\n const mode = (event as { mode?: unknown }).mode;\n const removedKeys = (event as { removedKeys?: unknown }).removedKeys;\n return {\n formData: { ...(formData as Record<string, unknown>) },\n mode: mode === 'replace' ? 'replace' : 'merge',\n removedKeys: Array.isArray(removedKeys)\n ? removedKeys.filter((item): item is string => typeof item === 'string')\n : undefined,\n };\n}\n\nfunction readRuntimeFormData(\n runtimeContext: Record<string, unknown> | null,\n): Record<string, unknown> {\n const formData = runtimeContext?.['formData'];\n if (!formData || typeof formData !== 'object' || Array.isArray(formData)) {\n return {};\n }\n return formData as Record<string, unknown>;\n}\n\nfunction isResolvedDataCollectionBlock(\n block: EditorialDataCollectionBlock | EditorialResolvedDataCollectionBlock,\n): block is EditorialResolvedDataCollectionBlock {\n return 'dataCollectionState' in block;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisIconDirective,\n type EditorialIntroHeroBlock,\n type EditorialPresentationalAction,\n} from '@praxisui/core';\n\n@Component({\n selector: 'praxis-editorial-intro-hero-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"intro-hero\" [attr.data-align]=\"block().align ?? 'center'\">\n @if (block().icon?.name) {\n <div class=\"hero-icon\"><mat-icon aria-hidden=\"true\" [praxisIcon]=\"block().icon?.name\"></mat-icon></div>\n }\n <div class=\"hero-copy\">\n <h3>{{ block().title }}</h3>\n @if (block().subtitle) {\n <p class=\"subtitle\">{{ block().subtitle }}</p>\n }\n @if (block().description) {\n <p class=\"description\">{{ block().description }}</p>\n }\n </div>\n\n @if (block().highlightItems?.length) {\n <div class=\"hero-highlights\">\n @for (item of block().highlightItems; track item.id) {\n <article class=\"highlight-card\">\n @if (item.icon?.name) {\n <mat-icon class=\"highlight-icon\" aria-hidden=\"true\" [praxisIcon]=\"item.icon?.name\"></mat-icon>\n }\n <strong>{{ item.title }}</strong>\n @if (item.description) {\n <p>{{ item.description }}</p>\n }\n </article>\n }\n </div>\n }\n\n @if (block().primaryAction || block().secondaryAction) {\n <div class=\"hero-actions\">\n @if (block().primaryAction; as action) {\n <button\n type=\"button\"\n class=\"hero-action primary\"\n [attr.data-appearance]=\"action.appearance ?? 'primary'\"\n (click)=\"triggerAction(action)\"\n >\n @if (action.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"action.icon?.name\"></mat-icon>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n @if (block().secondaryAction; as action) {\n <button\n type=\"button\"\n class=\"hero-action secondary\"\n [attr.data-appearance]=\"action.appearance ?? 'secondary'\"\n (click)=\"triggerAction(action)\"\n >\n @if (action.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"action.icon?.name\"></mat-icon>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n </div>\n }\n </section>\n `,\n styles: [`\n .intro-hero {\n display: grid;\n gap: 18px;\n text-align: center;\n }\n\n .intro-hero[data-align='left'] {\n text-align: left;\n }\n\n .hero-icon {\n width: 64px;\n height: 64px;\n border-radius: 18px;\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 18%, #fff);\n color: var(--editorial-accent, #264a8a);\n display: grid;\n place-items: center;\n justify-self: center;\n font-weight: 700;\n }\n\n .hero-icon mat-icon,\n .highlight-icon {\n width: 22px;\n height: 22px;\n font-size: 22px;\n line-height: 22px;\n }\n\n .intro-hero[data-align='left'] .hero-icon {\n justify-self: start;\n }\n\n .hero-copy {\n display: grid;\n gap: 10px;\n }\n\n .hero-copy h3,\n .hero-copy p {\n margin: 0;\n }\n\n .hero-copy h3 {\n font-size: var(--editorial-hero-title-size, 1.75rem);\n line-height: 1.15;\n }\n\n .subtitle,\n .description {\n font-size: var(--editorial-body-size, 1rem);\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .hero-highlights {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 12px;\n }\n\n .hero-actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 12px;\n }\n\n .intro-hero[data-align='left'] .hero-actions {\n justify-content: flex-start;\n }\n\n .hero-action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-height: 44px;\n padding: 0 20px;\n border-radius: var(--editorial-button-radius, var(--editorial-card-radius, 18px));\n border: 1px solid transparent;\n cursor: pointer;\n font: inherit;\n font-weight: 600;\n transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;\n }\n\n .hero-action mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n\n .hero-action.primary {\n background: var(--editorial-cta-primary, var(--editorial-accent, #264a8a));\n color: var(--editorial-cta-primary-text, #fff);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .hero-action.secondary {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 8%, #fff);\n border-color: color-mix(in srgb, var(--editorial-accent, #264a8a) 20%, transparent);\n color: var(--editorial-accent, #264a8a);\n }\n\n .highlight-card {\n display: grid;\n gap: 6px;\n padding: 14px;\n border-radius: var(--editorial-card-radius, 18px);\n background: var(--editorial-surface-primary, #fff);\n border: 1px solid var(--editorial-border-color, #d9deea);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .highlight-card p {\n margin: 0;\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialIntroHeroBlockComponent {\n readonly block = input.required<EditorialIntroHeroBlock>();\n readonly actionTriggered = output<string>();\n\n protected triggerAction(action: EditorialPresentationalAction): void {\n this.actionTriggered.emit(action.actionId);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisI18nService,\n PraxisIconDirective,\n EditorialReviewSectionField,\n EditorialReviewSectionsBlock,\n} from '@praxisui/core';\nimport { getValueAtPath } from '../runtime/editorial-runtime.helpers';\n\n@Component({\n selector: 'praxis-editorial-review-sections-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"review-sections\">\n @if (block().title) {\n <header class=\"review-header\">\n <h3>{{ block().title }}</h3>\n @if (block().description) {\n <p>{{ block().description }}</p>\n }\n </header>\n }\n\n <div class=\"review-sections-grid\">\n @for (section of block().sections; track section.id) {\n <article class=\"review-section\">\n <header class=\"review-section-header\">\n @if (section.icon?.name) {\n <mat-icon class=\"section-icon\" aria-hidden=\"true\" [praxisIcon]=\"section.icon?.name\"></mat-icon>\n }\n <h4>{{ section.title }}</h4>\n </header>\n <dl class=\"review-grid\">\n @for (field of visibleFields(section.fields); track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(field) }}</dd>\n </div>\n }\n </dl>\n </article>\n }\n </div>\n </section>\n `,\n styles: [`\n .review-sections,\n .review-header {\n display: grid;\n gap: 10px;\n }\n\n .review-header h3,\n .review-header p,\n .review-section h4 {\n margin: 0;\n }\n\n .review-header p {\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .review-sections-grid {\n display: grid;\n gap: 14px;\n }\n\n .review-section {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: var(--editorial-card-radius, 18px);\n border: 1px solid var(--editorial-border-color, #d9deea);\n background: var(--editorial-surface-primary, #fff);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .review-section-header {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n }\n\n .section-icon {\n display: grid;\n place-items: center;\n width: 18px;\n height: 18px;\n color: var(--editorial-accent, #264a8a);\n font-size: 18px;\n line-height: 18px;\n }\n\n .review-grid {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n margin: 0;\n }\n\n .review-grid dt {\n margin-bottom: 4px;\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.82rem;\n }\n\n .review-grid dd {\n margin: 0;\n font-weight: 600;\n color: var(--editorial-text-primary, #24324a);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialReviewSectionsBlockComponent {\n private readonly i18n = inject(PraxisI18nService);\n\n readonly block = input.required<EditorialReviewSectionsBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n\n protected visibleFields(fields: EditorialReviewSectionField[]): EditorialReviewSectionField[] {\n return fields.filter((field) => {\n if (!field.hideWhenEmpty) {\n return true;\n }\n return this.readValue(field) != null && this.readValue(field) !== '';\n });\n }\n\n protected resolveValue(field: EditorialReviewSectionField): string {\n const value = this.readValue(field);\n if (value == null || value === '') {\n return this.t('review.empty', '-');\n }\n return this.formatValue(value, field.format);\n }\n\n private readValue(field: EditorialReviewSectionField): unknown {\n return getValueAtPath(this.runtimeContext() ?? {}, field.valuePath);\n }\n\n private formatValue(\n value: unknown,\n format: EditorialReviewSectionField['format'] | undefined,\n ): string {\n switch (format) {\n case 'date':\n return this.formatDateValue(value);\n case 'phone':\n return this.formatPhoneValue(value);\n case 'email':\n return String(value);\n case 'boolean':\n return this.formatBooleanValue(value);\n case 'list':\n return this.formatListValue(value);\n case 'text':\n default:\n if (Array.isArray(value)) {\n return this.formatListValue(value);\n }\n if (typeof value === 'boolean') {\n return this.formatBooleanValue(value);\n }\n return String(value);\n }\n }\n\n private formatDateValue(value: unknown): string {\n if (value == null || value === '') {\n return this.t('review.empty', '-');\n }\n return this.i18n.formatDate(value as string | number | Date);\n }\n\n private formatPhoneValue(value: unknown): string {\n const raw = String(value ?? '').trim();\n if (!raw) {\n return this.t('review.empty', '-');\n }\n\n const digits = raw.replace(/\\D+/g, '');\n if (digits.length === 11) {\n return `(${digits.slice(0, 2)}) ${digits.slice(2, 7)}-${digits.slice(7)}`;\n }\n if (digits.length === 10) {\n return `(${digits.slice(0, 2)}) ${digits.slice(2, 6)}-${digits.slice(6)}`;\n }\n if (digits.length > 11) {\n return `+${digits}`;\n }\n return raw;\n }\n\n private formatBooleanValue(value: unknown): string {\n return value\n ? this.t('review.boolean.true', 'Sim')\n : this.t('review.boolean.false', 'Nao');\n }\n\n private formatListValue(value: unknown): string {\n if (!Array.isArray(value)) {\n return String(value);\n }\n return value.map((item) => String(item)).join(', ');\n }\n\n private t(key: string, fallback: string): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisI18nService,\n PraxisIconDirective,\n type EditorialSelectionCardsBlock,\n} from '@praxisui/core';\n\n@Component({\n selector: 'praxis-editorial-selection-cards-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"selection-block\">\n @if (block().title) {\n <header class=\"selection-header\">\n <h3>{{ block().title }}</h3>\n @if (block().description) {\n <p>{{ block().description }}</p>\n }\n </header>\n }\n\n <div\n class=\"selection-grid\"\n [attr.data-icon-position]=\"block().style?.iconPosition ?? 'left'\"\n [style.grid-template-columns]=\"gridTemplateColumns()\"\n [attr.id]=\"groupId()\"\n [attr.role]=\"block().selectionMode === 'single' ? 'radiogroup' : 'group'\"\n [attr.aria-label]=\"groupAriaLabel()\"\n >\n @for (item of block().items; track item.id) {\n <button\n type=\"button\"\n class=\"selection-card\"\n [class.selected]=\"isSelected(item.value)\"\n [attr.data-variant]=\"block().style?.variant ?? 'default'\"\n [attr.data-tone]=\"item.tone ?? 'default'\"\n [disabled]=\"item.disabled\"\n [attr.role]=\"block().selectionMode === 'single' ? 'radio' : 'checkbox'\"\n [attr.aria-checked]=\"isSelected(item.value)\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.tabindex]=\"itemTabIndex(item.value)\"\n [attr.aria-label]=\"buildItemAriaLabel(item.label, item.value)\"\n (click)=\"toggleValue(item.value)\"\n (keydown)=\"handleKeydown($event, item.value)\"\n >\n <span class=\"selection-leading\">\n @if (item.icon?.name) {\n <mat-icon class=\"selection-icon\" aria-hidden=\"true\" [praxisIcon]=\"item.icon?.name\"></mat-icon>\n }\n <span class=\"selection-copy\">\n <strong>{{ item.label }}</strong>\n @if (item.description) {\n <span>{{ item.description }}</span>\n }\n </span>\n </span>\n @if (block().style?.showCheckmark ?? true) {\n <span class=\"selection-check\" aria-hidden=\"true\">\n @if (isSelected(item.value)) {\n <mat-icon aria-hidden=\"true\" praxisIcon=\"check\"></mat-icon>\n }\n </span>\n }\n </button>\n }\n </div>\n </section>\n `,\n styles: [`\n .selection-block,\n .selection-header {\n display: grid;\n gap: 10px;\n }\n\n .selection-header h3,\n .selection-header p {\n margin: 0;\n }\n\n .selection-header p {\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .selection-grid {\n display: grid;\n gap: 14px;\n }\n\n .selection-card {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n min-height: 72px;\n padding: 16px;\n border-radius: var(--editorial-card-radius, 18px);\n border: 1px solid var(--editorial-border-color, #d9deea);\n background: var(--editorial-surface-primary, #fff);\n color: var(--editorial-text-primary, #24324a);\n box-shadow: var(--editorial-card-shadow, none);\n cursor: pointer;\n text-align: left;\n transition: background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;\n }\n\n .selection-card:hover:not([disabled]) {\n transform: translateY(-1px);\n }\n\n .selection-card.selected {\n border-color: var(--editorial-accent, #264a8a);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--editorial-accent, #264a8a) 22%, transparent);\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 8%, #fff);\n }\n\n .selection-card[data-variant='accent'] {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 4%, #fff);\n border-color: color-mix(in srgb, var(--editorial-accent, #264a8a) 18%, transparent);\n }\n\n .selection-card[data-variant='outline'] {\n box-shadow: none;\n background: transparent;\n }\n\n .selection-card[data-tone='accent'] .selection-icon {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 18%, #fff);\n color: var(--editorial-accent, #264a8a);\n }\n\n .selection-card[data-tone='muted'] .selection-icon {\n background: var(--editorial-surface-secondary, #eef2f8);\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .selection-card[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .selection-leading {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n flex: 1 1 auto;\n }\n\n .selection-grid[data-icon-position='top'] .selection-card {\n flex-direction: column;\n align-items: stretch;\n }\n\n .selection-grid[data-icon-position='top'] .selection-leading {\n display: grid;\n gap: 10px;\n }\n\n .selection-grid[data-icon-position='top'] .selection-check {\n align-self: flex-end;\n }\n\n .selection-icon,\n .selection-check {\n display: grid;\n place-items: center;\n width: 28px;\n height: 28px;\n border-radius: 999px;\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 14%, #fff);\n color: var(--editorial-accent, #264a8a);\n font-size: 0.75rem;\n font-weight: 700;\n flex: 0 0 auto;\n }\n\n .selection-icon,\n .selection-check mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n\n .selection-copy {\n display: grid;\n gap: 4px;\n min-width: 0;\n }\n\n .selection-copy span {\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.9rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialSelectionCardsBlockComponent {\n private readonly i18n = inject(PraxisI18nService);\n\n readonly block = input.required<EditorialSelectionCardsBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly runtimeContextChange = output<Record<string, unknown>>();\n readonly valueChange = output<{ field: string; value: string | string[] | null }>();\n\n protected readonly groupId = computed(() => `selection-group-${this.block().blockId}`);\n protected readonly gridTemplateColumns = computed(() => {\n const columns = this.block().columns ?? 2;\n return `repeat(${columns}, minmax(0, 1fr))`;\n });\n protected readonly groupAriaLabel = computed(() =>\n this.block().title\n || this.t('selection.group.label', 'Grupo de selecao'),\n );\n\n protected isSelected(value: string): boolean {\n const currentValue = this.currentValue();\n if (Array.isArray(currentValue)) {\n return currentValue.includes(value);\n }\n return currentValue === value;\n }\n\n protected toggleValue(value: string): void {\n const field = this.block().field;\n if (this.block().selectionMode === 'single') {\n const currentValue = this.currentValue();\n const nextValue = currentValue === value ? null : value;\n this.runtimeContextChange.emit(this.buildNextRuntimeContext(field, nextValue));\n this.valueChange.emit({ field, value: nextValue });\n return;\n }\n\n const currentValue = this.currentValue();\n const current = Array.isArray(currentValue) ? [...currentValue] : [];\n const index = current.indexOf(value);\n if (index >= 0) {\n current.splice(index, 1);\n } else {\n current.push(value);\n }\n this.runtimeContextChange.emit(this.buildNextRuntimeContext(field, current));\n this.valueChange.emit({ field, value: current });\n }\n\n protected itemTabIndex(value: string): number {\n if (this.block().selectionMode !== 'single') {\n return 0;\n }\n const currentValue = this.currentValue();\n if (currentValue === value) {\n return 0;\n }\n const firstValue = this.enabledItemValues()[0];\n return firstValue === value && currentValue == null ? 0 : -1;\n }\n\n protected handleKeydown(event: KeyboardEvent, value: string): void {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggleValue(value);\n return;\n }\n\n if (!['ArrowRight', 'ArrowDown', 'ArrowLeft', 'ArrowUp'].includes(event.key)) {\n return;\n }\n\n const enabledValues = this.enabledItemValues();\n const currentIndex = enabledValues.indexOf(value);\n if (currentIndex < 0) {\n return;\n }\n\n event.preventDefault();\n const nextIndex = event.key === 'ArrowRight' || event.key === 'ArrowDown'\n ? (currentIndex + 1) % enabledValues.length\n : (currentIndex - 1 + enabledValues.length) % enabledValues.length;\n const nextValue = enabledValues[nextIndex];\n\n this.focusItem(nextValue);\n if (this.block().selectionMode === 'single') {\n this.toggleValue(nextValue);\n }\n }\n\n protected buildItemAriaLabel(label: string, value: string): string {\n const selected = this.isSelected(value)\n ? this.t('selection.state.selected', 'selecionado')\n : this.t('selection.state.unselected', 'nao selecionado');\n return `${label}, ${selected}`;\n }\n\n private currentValue(): string | string[] | null {\n const formData = this.readFormData();\n const value = formData[this.block().field];\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string');\n }\n return typeof value === 'string' ? value : null;\n }\n\n private buildNextRuntimeContext(\n field: string,\n value: string | string[] | null,\n ): Record<string, unknown> {\n const context = this.runtimeContext();\n const nextContext = context ? { ...context } : {};\n const formData = this.cloneFormData();\n\n if (value == null) {\n delete formData[field];\n } else {\n formData[field] = value;\n }\n nextContext['formData'] = formData;\n return nextContext;\n }\n\n private readFormData(): Record<string, unknown> {\n const context = this.runtimeContext();\n if (!context) {\n return {};\n }\n const existing = context['formData'];\n if (existing && typeof existing === 'object' && !Array.isArray(existing)) {\n return existing as Record<string, unknown>;\n }\n return {};\n }\n\n private cloneFormData(): Record<string, unknown> {\n return { ...this.readFormData() };\n }\n\n private enabledItemValues(): string[] {\n return this.block().items\n .filter((item) => !item.disabled)\n .map((item) => item.value);\n }\n\n private focusItem(value: string): void {\n const container = document.getElementById(this.groupId());\n const buttons = container?.querySelectorAll<HTMLButtonElement>('.selection-card');\n const targetIndex = this.block().items.findIndex((candidate) => candidate.value === value);\n const element = targetIndex >= 0 ? buttons?.[targetIndex] : null;\n element?.focus();\n }\n\n private t(key: string, fallback: string): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisIconDirective,\n type EditorialPresentationalAction,\n type EditorialSuccessPanelBlock,\n} from '@praxisui/core';\n\n@Component({\n selector: 'praxis-editorial-success-panel-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"success-panel\" [attr.data-tone]=\"block().tone ?? 'success'\">\n @if (block().icon?.name) {\n <div class=\"success-icon\"><mat-icon aria-hidden=\"true\" [praxisIcon]=\"block().icon?.name\"></mat-icon></div>\n }\n <h3>{{ block().title }}</h3>\n @if (block().description) {\n <p>{{ block().description }}</p>\n }\n @if (block().secondaryMessage) {\n <p class=\"secondary-message\">{{ block().secondaryMessage }}</p>\n }\n @if (block().nextSteps?.length) {\n <ul>\n @for (item of block().nextSteps; track item) {\n <li>{{ item }}</li>\n }\n </ul>\n }\n @if (block().primaryAction; as action) {\n <button type=\"button\" class=\"success-action\" (click)=\"triggerAction(action)\">\n @if (action.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"action.icon?.name\"></mat-icon>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n </section>\n `,\n styles: [`\n .success-panel {\n display: grid;\n gap: 12px;\n text-align: center;\n padding: 20px;\n border-radius: var(--editorial-card-radius, 18px);\n background: color-mix(in srgb, var(--editorial-success, #35b37e) 10%, #fff);\n border: 1px solid color-mix(in srgb, var(--editorial-success, #35b37e) 32%, transparent);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .success-panel[data-tone='accent'] {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 10%, #fff);\n border-color: color-mix(in srgb, var(--editorial-accent, #264a8a) 24%, transparent);\n }\n\n .success-panel[data-tone='neutral'] {\n background: var(--editorial-surface-primary, #fff);\n border-color: var(--editorial-border-color, #d9deea);\n }\n\n .success-panel h3,\n .success-panel p,\n .success-panel ul {\n margin: 0;\n }\n\n .success-panel ul {\n padding-left: 20px;\n text-align: left;\n }\n\n .secondary-message {\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: var(--editorial-body-size, 1rem);\n }\n\n .success-icon {\n display: grid;\n place-items: center;\n width: 48px;\n height: 48px;\n border-radius: 999px;\n background: var(--editorial-success, #35b37e);\n color: #fff;\n justify-self: center;\n font-weight: 700;\n }\n\n .success-panel[data-tone='accent'] .success-icon {\n background: var(--editorial-accent, #264a8a);\n }\n\n .success-panel[data-tone='neutral'] .success-icon {\n background: var(--editorial-surface-secondary, #eef2f8);\n color: var(--editorial-text-primary, #24324a);\n }\n\n .success-icon mat-icon {\n width: 20px;\n height: 20px;\n font-size: 20px;\n line-height: 20px;\n }\n\n .success-action {\n justify-self: center;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-height: 44px;\n padding: 0 20px;\n border: 0;\n border-radius: var(--editorial-button-radius, var(--editorial-card-radius, 18px));\n background: var(--editorial-cta-primary, var(--editorial-success, #35b37e));\n color: var(--editorial-cta-primary-text, #fff);\n box-shadow: var(--editorial-card-shadow, none);\n cursor: pointer;\n font: inherit;\n font-weight: 600;\n }\n\n .success-action mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialSuccessPanelBlockComponent {\n readonly block = input.required<EditorialSuccessPanelBlock>();\n readonly actionTriggered = output<string>();\n\n protected triggerAction(action: EditorialPresentationalAction): void {\n this.actionTriggered.emit(action.actionId);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { DynamicWidgetLoaderDirective } from '@praxisui/core';\nimport type {\n EditorialBlock,\n EditorialContextSummaryBlock,\n EditorialDataCollectionBlock,\n EditorialFaqAccordionBlock,\n EditorialHeroBlock,\n EditorialInfoCardsBlock,\n EditorialIntroHeroBlock,\n EditorialPolicyListBlock,\n EditorialReviewSummaryBlock,\n EditorialReviewSectionsBlock,\n EditorialRichTextBlock,\n EditorialSelectionCardsBlock,\n EditorialSolutionDefinition,\n EditorialSuccessPanelBlock,\n EditorialTemplateInstance,\n EditorialTimelineStepsBlock,\n} from '@praxisui/core';\nimport { getValueAtPath } from '../runtime/editorial-runtime.helpers';\nimport type { EditorialRuntimeOperationalEvent } from '../runtime/editorial-runtime-events.model';\nimport { EditorialDataCollectionBlockOutletComponent } from './editorial-data-collection-block-outlet.component';\nimport { EditorialIntroHeroBlockComponent } from './editorial-intro-hero-block.component';\nimport { EditorialReviewSectionsBlockComponent } from './editorial-review-sections-block.component';\nimport { EditorialSelectionCardsBlockComponent } from './editorial-selection-cards-block.component';\nimport { EditorialSuccessPanelBlockComponent } from './editorial-success-panel-block.component';\n\n@Component({\n selector: 'praxis-editorial-block-renderer',\n standalone: true,\n imports: [\n CommonModule,\n DynamicWidgetLoaderDirective,\n EditorialDataCollectionBlockOutletComponent,\n EditorialIntroHeroBlockComponent,\n EditorialSelectionCardsBlockComponent,\n EditorialReviewSectionsBlockComponent,\n EditorialSuccessPanelBlockComponent,\n ],\n template: `\n @switch (block().kind) {\n @case ('introHero') {\n <praxis-editorial-intro-hero-block\n [block]=\"introHero()\"\n (actionTriggered)=\"blockAction.emit({ blockId: introHero().blockId, actionId: $event })\"\n />\n }\n @case ('hero') {\n <section class=\"block-card hero-block\">\n @if (hero().subtitle) {\n <p class=\"eyebrow\">{{ hero().subtitle }}</p>\n }\n <h3>\n {{ hero().title }}\n @if (hero().titleAccent) {\n <span>{{ hero().titleAccent }}</span>\n }\n </h3>\n @if (hero().description) {\n <p class=\"description\">{{ hero().description }}</p>\n }\n </section>\n }\n @case ('richText') {\n <section class=\"block-card\">\n @if (richText().title) {\n <h3>{{ richText().title }}</h3>\n }\n <div class=\"content\">{{ richText().content }}</div>\n </section>\n }\n @case ('legalNotice') {\n <section class=\"block-card notice-block\">\n @if (richText().title) {\n <h3>{{ richText().title }}</h3>\n }\n <div class=\"content\">{{ richText().content }}</div>\n </section>\n }\n @case ('policyList') {\n <section class=\"block-card\">\n @if (policyList().title) {\n <h3>{{ policyList().title }}</h3>\n }\n <ul class=\"list-reset stack-sm\">\n @for (item of policyList().items; track item.id) {\n <li class=\"policy-item\">\n <strong>{{ item.title }}</strong>\n @if (item.summary) {\n <p>{{ item.summary }}</p>\n }\n </li>\n }\n </ul>\n </section>\n }\n @case ('timelineSteps') {\n <section class=\"block-card\">\n @if (timeline().title) {\n <h3>{{ timeline().title }}</h3>\n }\n <ol class=\"timeline\">\n @for (item of timeline().steps; track item.id) {\n <li class=\"timeline-item\">\n <strong>{{ item.label }}</strong>\n @if (item.description) {\n <span>{{ item.description }}</span>\n }\n </li>\n }\n </ol>\n </section>\n }\n @case ('reviewSummary') {\n <section class=\"block-card\">\n @if (review().title) {\n <h3>{{ review().title }}</h3>\n }\n <dl class=\"review-grid\">\n @for (field of review().fields; track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(field.valuePath, field.fallback) }}</dd>\n </div>\n }\n </dl>\n </section>\n }\n @case ('reviewSections') {\n <praxis-editorial-review-sections-block\n [block]=\"reviewSections()\"\n [runtimeContext]=\"runtimeContext()\"\n />\n }\n @case ('contextSummary') {\n <section class=\"block-card\">\n @if (contextSummary().title) {\n <h3>{{ contextSummary().title }}</h3>\n }\n <dl class=\"review-grid\">\n @for (field of contextSummary().fields; track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(resolveContextPath(field.valuePath), field.fallback) }}</dd>\n </div>\n }\n </dl>\n </section>\n }\n @case ('selectionCards') {\n <praxis-editorial-selection-cards-block\n [block]=\"selectionCards()\"\n [runtimeContext]=\"runtimeContext()\"\n (runtimeContextChange)=\"runtimeContextChange.emit($event)\"\n />\n }\n @case ('infoCards') {\n <section class=\"block-card\">\n <div class=\"cards-grid\">\n @for (item of infoCards().items; track item.id) {\n <article class=\"info-card\">\n <strong>{{ item.title }}</strong>\n @if (item.description) {\n <p>{{ item.description }}</p>\n }\n </article>\n }\n </div>\n </section>\n }\n @case ('successPanel') {\n <praxis-editorial-success-panel-block\n [block]=\"successPanel()\"\n (actionTriggered)=\"blockAction.emit({ blockId: successPanel().blockId, actionId: $event })\"\n />\n }\n @case ('faqAccordion') {\n <section class=\"block-card stack-sm\">\n @for (item of faq().items; track item.id) {\n <details class=\"faq-item\">\n <summary>{{ item.question }}</summary>\n <p>{{ item.answer }}</p>\n </details>\n }\n </section>\n }\n @case ('dataCollection') {\n <praxis-editorial-data-collection-block-outlet\n [block]=\"dataCollection()\"\n [runtimeContext]=\"runtimeContext()\"\n [solution]=\"solution()\"\n [instance]=\"instance()\"\n (runtimeContextChange)=\"runtimeContextChange.emit($event)\"\n (operationalEvent)=\"operationalEvent.emit($event)\"\n />\n }\n @case ('customWidget') {\n <ng-container\n [dynamicWidgetLoader]=\"customWidget().widget\"\n [context]=\"runtimeContext()\"\n [strictValidation]=\"true\"\n [autoWireOutputs]=\"true\"\n />\n }\n @case ('footerLinks') {\n <ng-container\n [dynamicWidgetLoader]=\"customWidget().widget\"\n [context]=\"runtimeContext()\"\n [strictValidation]=\"true\"\n [autoWireOutputs]=\"true\"\n />\n }\n }\n `,\n styles: [`\n :host {\n display: block;\n }\n .block-card {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: 18px;\n background: var(--md-sys-color-surface-container-low, #f7f2fa);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n }\n .eyebrow {\n margin: 0;\n font-size: 0.8rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--md-sys-color-primary, #6750a4);\n }\n h3, p, ul, ol, dl { margin: 0; }\n .description, .content, .timeline-item span, .policy-item p, .info-card p, .faq-item p {\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n .hero-block h3 span { color: var(--md-sys-color-primary, #6750a4); }\n .review-grid {\n display: grid;\n gap: 12px;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n }\n .review-grid dt {\n margin-bottom: 4px;\n font-size: 0.78rem;\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n .review-grid dd { margin: 0; font-weight: 600; }\n .list-reset { list-style: none; padding: 0; margin: 0; }\n .stack-sm { display: grid; gap: 10px; }\n .timeline { display: grid; gap: 12px; padding-left: 18px; margin: 0; }\n .timeline-item { display: grid; gap: 4px; }\n .policy-item, .faq-item, .info-card {\n padding: 12px;\n border-radius: 14px;\n background: var(--md-sys-color-surface, #fff);\n }\n .cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .notice-block {\n border-left: 4px solid var(--md-sys-color-primary, #6750a4);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialBlockRendererComponent {\n readonly block = input.required<EditorialBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContextChange = output<Record<string, unknown>>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n readonly blockAction = output<{ blockId: string; actionId: string }>();\n\n protected readonly introHero = computed(() => this.block() as EditorialIntroHeroBlock);\n protected readonly hero = computed(() => this.block() as EditorialHeroBlock);\n protected readonly richText = computed(() => this.block() as EditorialRichTextBlock);\n protected readonly policyList = computed(() => this.block() as EditorialPolicyListBlock);\n protected readonly timeline = computed(() => this.block() as EditorialTimelineStepsBlock);\n protected readonly review = computed(() => this.block() as EditorialReviewSummaryBlock);\n protected readonly reviewSections = computed(() => this.block() as EditorialReviewSectionsBlock);\n protected readonly contextSummary = computed(() => this.block() as EditorialContextSummaryBlock);\n protected readonly selectionCards = computed(() => this.block() as EditorialSelectionCardsBlock);\n protected readonly infoCards = computed(() => this.block() as EditorialInfoCardsBlock);\n protected readonly successPanel = computed(() => this.block() as EditorialSuccessPanelBlock);\n protected readonly faq = computed(() => this.block() as EditorialFaqAccordionBlock);\n protected readonly dataCollection = computed(() => this.block() as EditorialDataCollectionBlock);\n protected readonly customWidget = computed(() => this.block() as Extract<EditorialBlock, { kind: 'customWidget' | 'footerLinks' }>);\n\n protected resolveValue(valuePath?: string, fallback: string = '-'): string {\n if (!valuePath) {\n return fallback;\n }\n const value = getValueAtPath(this.runtimeContext() ?? {}, valuePath);\n return value == null || value === '' ? fallback : String(value);\n }\n\n protected resolveContextPath(valuePath?: string): string | undefined {\n const contextPath = this.contextSummary().contextPath;\n if (!contextPath) {\n return valuePath;\n }\n return valuePath ? `${contextPath}.${valuePath}` : contextPath;\n }\n}\n","import type {\n EditorialLayoutConfig,\n EditorialOrientation,\n EditorialStepperConfig,\n} from '@praxisui/core';\nimport type { EditorialResolvedStep } from './editorial-runtime-snapshot.model';\n\nexport function resolveRuntimeOrientation(\n layout?: EditorialLayoutConfig | null,\n stepper?: EditorialStepperConfig | null,\n compactViewport: boolean = false,\n): EditorialOrientation {\n if (compactViewport && layout?.responsive?.mobileOrientation) {\n return layout.responsive.mobileOrientation;\n }\n return stepper?.orientation ?? layout?.orientation ?? 'horizontal';\n}\n\nexport function resolveShellVariant(\n layout?: EditorialLayoutConfig | null,\n): string {\n return layout?.shellVariant ?? 'corporate-wizard';\n}\n\nexport function resolveDensity(\n layout?: EditorialLayoutConfig | null,\n): string {\n return layout?.density ?? 'comfortable';\n}\n\nexport function buildRuntimeLayoutCss(\n layout?: EditorialLayoutConfig | null,\n): string {\n if (!layout) {\n return '';\n }\n\n return [\n layout.maxWidth ? `max-width:${layout.maxWidth};width:100%;margin-inline:auto` : '',\n layout.spacing?.pagePadding ? `--editorial-page-padding:${layout.spacing.pagePadding}` : '',\n layout.spacing?.shellPadding ? `--editorial-shell-padding:${layout.spacing.shellPadding}` : '',\n layout.spacing?.blockGap ? `--editorial-block-gap:${layout.spacing.blockGap}` : '',\n layout.spacing?.sectionGap ? `--editorial-section-gap:${layout.spacing.sectionGap}` : '',\n layout.spacing?.actionGap ? `--editorial-action-gap:${layout.spacing.actionGap}` : '',\n ].filter(Boolean).join(';');\n}\n\nexport function getStepDisplayState(\n step: EditorialResolvedStep,\n steps: ReadonlyArray<EditorialResolvedStep>,\n activeStepId: string | null,\n isBlocked: boolean,\n): 'pending' | 'active' | 'completed' | 'blocked' {\n if (step.stepId === activeStepId && isBlocked) {\n return 'blocked';\n }\n if (step.stepId === activeStepId) {\n return 'active';\n }\n\n const activeIndex = steps.findIndex((item) => item.stepId === activeStepId);\n const stepIndex = steps.findIndex((item) => item.stepId === step.stepId);\n\n if (activeIndex >= 0 && stepIndex >= 0 && stepIndex < activeIndex) {\n return 'completed';\n }\n\n return 'pending';\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisI18nService, PraxisIconDirective } from '@praxisui/core';\nimport type {\n EditorialOrientation,\n EditorialStepperConfig,\n} from '@praxisui/core';\nimport { getStepDisplayState } from '../runtime/editorial-runtime-presentation.helpers';\nimport type { EditorialResolvedStep } from '../runtime/editorial-runtime-snapshot.model';\n\n@Component({\n selector: 'praxis-editorial-stepper',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <ol\n class=\"steps-nav\"\n [class.vertical]=\"effectiveOrientation() === 'vertical'\"\n [class.horizontal]=\"effectiveOrientation() === 'horizontal'\"\n [attr.data-variant]=\"config()?.variant ?? 'icon-label'\"\n [attr.data-align]=\"config()?.align ?? 'start'\"\n [attr.data-size]=\"config()?.size ?? 'md'\"\n [attr.aria-label]=\"stepperAriaLabel()\"\n >\n @for (step of steps(); track step.stepId; let last = $last) {\n <li\n class=\"stepper-item\"\n [attr.data-state]=\"stepState(step)\"\n [attr.aria-posinset]=\"stepNumber(step)\"\n [attr.aria-setsize]=\"steps().length\"\n >\n <button\n type=\"button\"\n class=\"step-chip\"\n [class.active]=\"activeStepId() === step.stepId\"\n [class.completed]=\"stepState(step) === 'completed'\"\n [class.blocked]=\"stepState(step) === 'blocked'\"\n [disabled]=\"isSelectionBlocked(step.stepId)\"\n [attr.aria-current]=\"activeStepId() === step.stepId ? 'step' : null\"\n [attr.aria-label]=\"buildStepAriaLabel(step)\"\n (click)=\"onStepClick(step.stepId)\"\n >\n <span class=\"step-icon\" [attr.data-state]=\"stepState(step)\" aria-hidden=\"true\">\n @if (stepState(step) === 'completed') {\n <mat-icon aria-hidden=\"true\" praxisIcon=\"check\"></mat-icon>\n } @else if (step.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"step.icon?.name\"></mat-icon>\n } @else {\n <span>{{ stepNumber(step) }}</span>\n }\n </span>\n @if ((config()?.showLabels ?? true) !== false) {\n <span class=\"step-copy\">\n <span class=\"step-label\">{{ step.label }}</span>\n @if ((config()?.showDescriptions ?? false) && step.description) {\n <span class=\"step-description\">{{ step.description }}</span>\n }\n </span>\n }\n </button>\n @if ((config()?.showConnectors ?? true) && !last) {\n <span class=\"step-connector\" [attr.data-style]=\"config()?.connectorStyle ?? 'solid'\"></span>\n }\n </li>\n }\n </ol>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .steps-nav {\n display: flex;\n gap: 12px;\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n .steps-nav.horizontal[data-align='center'] {\n justify-content: center;\n }\n\n .steps-nav.horizontal[data-align='space-between'] {\n justify-content: space-between;\n }\n\n .steps-nav.vertical {\n flex-direction: column;\n }\n\n .stepper-item {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n }\n\n .steps-nav.vertical .stepper-item {\n align-items: stretch;\n flex-direction: column;\n }\n\n .step-chip {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n min-height: 48px;\n padding: 10px 14px;\n border-radius: var(--editorial-step-radius, 999px);\n border: 1px solid var(--editorial-border-color, #d9deea);\n background: var(--editorial-surface-primary, #fff);\n color: var(--editorial-text-primary, #24324a);\n cursor: pointer;\n text-align: left;\n }\n\n .steps-nav[data-size='sm'] .step-chip {\n min-height: 42px;\n padding: 8px 12px;\n gap: 8px;\n }\n\n .steps-nav[data-size='lg'] .step-chip {\n min-height: 56px;\n padding: 12px 18px;\n gap: 12px;\n }\n\n .step-chip.active {\n border-color: var(--editorial-step-active, var(--editorial-accent, #264a8a));\n box-shadow: 0 0 0 var(--editorial-active-step-border-width, 2px)\n color-mix(in srgb, var(--editorial-accent, #264a8a) 24%, transparent);\n }\n\n .step-chip.completed .step-icon {\n background: var(--editorial-step-completed, var(--editorial-success, #35b37e));\n color: #fff;\n }\n\n .step-chip.blocked .step-icon {\n background: var(--editorial-step-blocked, #c84b4b);\n color: #fff;\n }\n\n .step-chip[disabled] {\n opacity: 0.72;\n cursor: not-allowed;\n }\n\n .step-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border-radius: 999px;\n background: var(--editorial-step-pending, #eef1f7);\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.75rem;\n font-weight: 700;\n flex: 0 0 auto;\n }\n\n .steps-nav[data-size='sm'] .step-icon {\n width: 28px;\n height: 28px;\n font-size: 0.7rem;\n }\n\n .steps-nav[data-size='lg'] .step-icon {\n width: 42px;\n height: 42px;\n font-size: 0.9rem;\n }\n\n .step-icon mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n\n .step-chip.active .step-icon {\n background: var(--editorial-step-active, var(--editorial-accent, #264a8a));\n color: var(--editorial-accent-contrast, #fff);\n }\n\n .step-copy {\n display: grid;\n gap: 2px;\n min-width: 0;\n }\n\n .step-label {\n font-weight: 700;\n white-space: nowrap;\n }\n\n .step-description {\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.85rem;\n }\n\n .step-connector {\n display: block;\n flex: 1 1 auto;\n min-width: 32px;\n height: 2px;\n background: var(--editorial-connector, #8fd8c0);\n border-radius: 999px;\n }\n\n .steps-nav.vertical .step-connector {\n width: 2px;\n min-width: 2px;\n min-height: 24px;\n margin-left: 16px;\n height: 24px;\n }\n\n .step-connector[data-style='dashed'] {\n background:\n repeating-linear-gradient(\n 90deg,\n var(--editorial-connector, #8fd8c0) 0 8px,\n transparent 8px 14px\n );\n }\n\n .steps-nav.vertical .step-connector[data-style='dashed'] {\n background:\n repeating-linear-gradient(\n 180deg,\n var(--editorial-connector, #8fd8c0) 0 8px,\n transparent 8px 14px\n );\n }\n\n .steps-nav[data-variant='simple'] .step-copy {\n display: none;\n }\n\n .steps-nav[data-variant='simple-circle'] {\n gap: 20px;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'] .stepper-item {\n flex: 1 1 0;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'] .step-chip {\n flex-direction: column;\n justify-content: flex-start;\n min-height: auto;\n padding: 0;\n gap: 8px;\n border: 0;\n background: transparent;\n box-shadow: none;\n text-align: center;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'] .step-copy {\n justify-items: center;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'] .step-label {\n white-space: normal;\n font-size: 0.92rem;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'] .step-connector {\n width: 100%;\n min-width: 56px;\n margin-top: 18px;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'][data-size='sm'] .step-connector {\n margin-top: 14px;\n }\n\n .steps-nav.horizontal[data-variant='simple-circle'][data-size='lg'] .step-connector {\n margin-top: 22px;\n }\n\n .steps-nav.vertical[data-variant='simple-circle'] .stepper-item {\n align-items: start;\n gap: 10px;\n }\n\n .steps-nav.vertical[data-variant='simple-circle'] .step-chip {\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialStepperComponent {\n private readonly i18n = inject(PraxisI18nService);\n\n readonly steps = input.required<EditorialResolvedStep[]>();\n readonly activeStepId = input<string | null>(null);\n readonly config = input<EditorialStepperConfig | null>(null);\n readonly orientation = input<EditorialOrientation>('horizontal');\n readonly progressionBlocked = input(false);\n readonly isStepSelectionBlocked = input<(stepId: string) => boolean>(() => false);\n readonly stepSelected = output<string>();\n\n protected readonly effectiveOrientation = computed(\n () => this.config()?.orientation ?? this.orientation(),\n );\n protected readonly stepperAriaLabel = computed(() =>\n this.t('stepper.ariaLabel', 'Etapas da jornada'),\n );\n\n protected stepState(step: EditorialResolvedStep): string {\n return getStepDisplayState(\n step,\n this.steps(),\n this.activeStepId(),\n this.progressionBlocked(),\n );\n }\n\n protected stepNumber(step: EditorialResolvedStep): number {\n return this.steps().findIndex((item) => item.stepId === step.stepId) + 1;\n }\n\n protected isSelectionBlocked(stepId: string): boolean {\n if (this.config()?.allowStepJump) {\n return false;\n }\n return this.isStepSelectionBlocked()(stepId);\n }\n\n protected onStepClick(stepId: string): void {\n if (this.isSelectionBlocked(stepId)) {\n return;\n }\n this.stepSelected.emit(stepId);\n }\n\n protected buildStepAriaLabel(step: EditorialResolvedStep): string {\n const state = this.stepState(step);\n const status = state === 'completed'\n ? this.t('stepper.state.completed', 'concluida')\n : state === 'active'\n ? this.t('stepper.state.active', 'etapa atual')\n : state === 'blocked'\n ? this.t('stepper.state.blocked', 'bloqueada')\n : this.t('stepper.state.pending', 'pendente');\n return `${this.stepNumber(step)}. ${step.label}, ${status}`;\n }\n\n private t(key: string, fallback: string): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);\n }\n}\n","import type {\n EditorialBlock,\n EditorialBlockOverride,\n EditorialCompliancePreset,\n EditorialContextFieldContract,\n EditorialDataCollectionBlock,\n EditorialJourney,\n EditorialJourneyOverride,\n EditorialLayoutConfig,\n EditorialJourneyStep,\n EditorialPresentationShellVariant,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n EditorialThemePreset,\n EditorialWizardPresentation,\n} from '@praxisui/core';\nimport {\n resolveEditorialDataBlockFormConfigDetails,\n} from '../adapters/editorial-data-block-adapter';\nimport type { EditorialRuntimeDiagnostic } from './editorial-runtime-diagnostics.model';\nimport { getValueAtPath } from './editorial-runtime.helpers';\nimport type {\n EditorialResolvedBlock,\n EditorialResolvedBlockCompositionEntry,\n EditorialResolvedBlockSourceRef,\n EditorialResolvedDataCollectionBlock,\n EditorialResolvedDataCollectionState,\n EditorialResolvedJourney,\n EditorialResolvedStep,\n EditorialRuntimeSnapshot,\n} from './editorial-runtime-snapshot.model';\n\nexport interface ResolveEditorialRuntimeSnapshotInput {\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n runtimeContext?: Record<string, unknown> | null;\n}\n\nexport function resolveEditorialRuntimeSnapshot(\n input: ResolveEditorialRuntimeSnapshotInput,\n): EditorialRuntimeSnapshot {\n const diagnostics: EditorialRuntimeDiagnostic[] = [];\n const solution = input.solution;\n const instance = input.instance;\n const context = mergeContext(\n instance?.context ?? {},\n instance?.overrides?.contextPatch ?? {},\n input.runtimeContext ?? {},\n );\n const runtimeProblemType = solution?.problemType ?? instance?.template.problemType ?? null;\n\n const effectiveThemePreset = resolveEffectiveThemePreset(solution, instance, diagnostics);\n const effectiveCompliancePresets = resolveEffectiveCompliancePresets(\n solution,\n instance,\n runtimeProblemType,\n diagnostics,\n );\n\n validateContextContract(solution?.contextContract ?? [], context, diagnostics);\n validateComplianceContext(effectiveCompliancePresets, context, diagnostics);\n validateComplianceRequirements(effectiveCompliancePresets, context, diagnostics);\n diagnoseUnsupportedPresentationConfig(solution?.presentation ?? null, diagnostics);\n\n const journeys = mergeJourneys(solution, instance, diagnostics);\n applyCompliancePresetBlocks(journeys, effectiveCompliancePresets, solution, instance);\n applyJourneyOverrides(\n journeys,\n instance?.overrides?.journeyOverrides ?? [],\n diagnostics,\n instance,\n );\n diagnoseResolvedBlocks(journeys, diagnostics, instance);\n annotateDiagnostics(journeys, diagnostics);\n\n if (!solution && !instance) {\n diagnostics.push({\n code: 'solution-missing',\n severity: 'warning',\n message: 'Nenhuma solution ou instance editorial foi fornecida ao runtime.',\n scopeKind: 'global',\n path: 'runtime',\n });\n }\n\n return {\n solutionId: solution?.solutionId ?? instance?.template.templateId ?? null,\n instanceId: instance?.instanceId ?? null,\n title: solution?.title ?? instance?.template.title ?? null,\n description: solution?.description ?? null,\n problemType: solution?.problemType ?? instance?.template.problemType ?? null,\n context,\n presentation: resolveEffectivePresentation(solution?.presentation ?? null, effectiveThemePreset),\n effectiveThemePreset,\n effectiveCompliancePresets,\n journeys,\n diagnostics: {\n items: diagnostics,\n hasErrors: diagnostics.some((item) => item.severity === 'error'),\n hasWarnings: diagnostics.some((item) => item.severity === 'warning'),\n },\n };\n}\n\nfunction resolveEffectiveThemePreset(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialThemePreset | null {\n if (instance?.selectedThemePreset) {\n return instance.selectedThemePreset;\n }\n\n const requestedThemeId = instance?.overrides?.themePresetId;\n if (!requestedThemeId) {\n return solution?.themePresets?.[0] ?? null;\n }\n\n const resolved = solution?.themePresets?.find((preset) => preset.themeId === requestedThemeId) ?? null;\n if (!resolved) {\n diagnostics.push({\n code: 'theme-preset-not-found',\n severity: 'warning',\n message: `Theme preset \"${requestedThemeId}\" nao foi resolvido no catalogo da solution.`,\n scopeKind: 'global',\n path: `themePreset:${requestedThemeId}`,\n });\n }\n return resolved;\n}\n\nfunction resolveEffectiveCompliancePresets(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n runtimeProblemType: string | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialCompliancePreset[] {\n if (instance?.selectedCompliancePresets?.length) {\n return filterCompliancePresetsByProblemType(\n instance.selectedCompliancePresets,\n runtimeProblemType,\n diagnostics,\n );\n }\n\n const requestedPresetIds = instance?.overrides?.compliancePresetIds;\n if (!requestedPresetIds?.length) {\n return filterCompliancePresetsByProblemType(\n solution?.compliancePresets ?? [],\n runtimeProblemType,\n diagnostics,\n );\n }\n\n const resolved: EditorialCompliancePreset[] = [];\n for (const presetId of requestedPresetIds) {\n const preset = solution?.compliancePresets?.find((item) => item.presetId === presetId);\n if (!preset) {\n diagnostics.push({\n code: 'compliance-preset-not-found',\n severity: 'warning',\n message: `Compliance preset \"${presetId}\" nao foi resolvido no catalogo da solution.`,\n scopeKind: 'global',\n path: `compliancePreset:${presetId}`,\n });\n continue;\n }\n resolved.push(preset);\n }\n return filterCompliancePresetsByProblemType(resolved, runtimeProblemType, diagnostics);\n}\n\nfunction validateContextContract(\n contract: EditorialContextFieldContract[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const field of contract) {\n if (!field.required) {\n continue;\n }\n\n const value = getValueAtPath(context, field.key);\n if (value != null && value !== '') {\n continue;\n }\n\n diagnostics.push({\n code: 'context-required-missing',\n severity: 'error',\n message: `Contexto obrigatorio ausente: \"${field.key}\".`,\n scopeKind: 'global',\n path: field.key,\n });\n }\n}\n\nfunction validateComplianceContext(\n presets: EditorialCompliancePreset[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const preset of presets) {\n for (const key of preset.requiredContextKeys ?? []) {\n const value = getValueAtPath(context, key);\n if (value != null && value !== '') {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-context-required-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer o contexto \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:${key}`,\n });\n }\n }\n}\n\nfunction validateComplianceRequirements(\n presets: EditorialCompliancePreset[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const preset of presets) {\n for (const key of preset.requiredEvidenceKeys ?? []) {\n const value = resolveComplianceValue(context, key);\n if (value != null && value !== '' && (!Array.isArray(value) || value.length > 0)) {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-evidence-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer a evidência \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:evidence:${key}`,\n });\n }\n\n for (const key of preset.requiredAcceptances ?? []) {\n const value = resolveComplianceValue(context, key);\n const accepted = value === true\n || value === 'true'\n || value === 'accepted'\n || value === 'ACCEPTED';\n if (accepted) {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-acceptance-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer o aceite \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:acceptance:${key}`,\n });\n }\n }\n}\n\nfunction mergeJourneys(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialResolvedJourney[] {\n const resolvedJourneys = new Map<string, EditorialResolvedJourney>();\n const order: string[] = [];\n\n for (const journey of solution?.journeys ?? []) {\n resolvedJourneys.set(\n journey.journeyId,\n createResolvedJourney(\n journey,\n createSourceRef('solution', {\n solutionId: solution?.solutionId ?? undefined,\n journeyId: journey.journeyId,\n }),\n instance,\n ),\n );\n order.push(journey.journeyId);\n }\n\n for (const journey of instance?.journeys ?? []) {\n const existing = resolvedJourneys.get(journey.journeyId);\n if (!existing) {\n resolvedJourneys.set(\n journey.journeyId,\n createResolvedJourney(\n journey,\n createSourceRef('instanceJourney', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId: journey.journeyId,\n }),\n instance,\n ),\n );\n order.push(journey.journeyId);\n continue;\n }\n\n resolvedJourneys.set(\n journey.journeyId,\n mergeJourney(\n existing,\n journey,\n createSourceRef('instanceJourney', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId: journey.journeyId,\n }),\n diagnostics,\n instance,\n ),\n );\n }\n\n return order\n .map((journeyId) => resolvedJourneys.get(journeyId))\n .filter((journey): journey is EditorialResolvedJourney => Boolean(journey));\n}\n\nfunction createResolvedJourney(\n journey: EditorialJourney,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedJourney {\n return {\n journeyId: journey.journeyId,\n label: journey.label,\n description: journey.description,\n steps: journey.steps.map((step) =>\n createResolvedStep(\n step,\n {\n ...source,\n stepId: step.stepId,\n },\n instance,\n ),\n ),\n };\n}\n\nfunction createResolvedStep(\n step: EditorialJourneyStep,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedStep {\n return {\n stepId: step.stepId,\n label: step.label,\n description: step.description,\n kind: step.kind,\n icon: step.icon,\n visual: step.visual,\n optional: step.optional,\n editableFromReview: step.editableFromReview,\n blocks: step.blocks.map((block) =>\n createResolvedBlock(\n block,\n {\n ...source,\n blockId: block.blockId,\n },\n instance,\n ),\n ),\n };\n}\n\nfunction createResolvedBlock(\n block: EditorialBlock,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n previousTrail: EditorialResolvedBlockCompositionEntry[] = [],\n operation: EditorialResolvedBlockCompositionEntry['operation'] = 'seed',\n): EditorialResolvedBlock {\n const trail = dedupeTrail([\n ...previousTrail,\n { operation, source },\n ]);\n\n if (block.kind === 'dataCollection') {\n return {\n ...block,\n provenance: {\n primarySource: source,\n trail,\n },\n dataCollectionState: buildDataCollectionState(block, instance),\n };\n }\n\n return {\n ...block,\n provenance: {\n primarySource: source,\n trail,\n },\n };\n}\n\nfunction mergeJourney(\n base: EditorialResolvedJourney,\n override: EditorialJourney,\n source: EditorialResolvedBlockSourceRef,\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedJourney {\n const steps = new Map<string, EditorialResolvedStep>(\n base.steps.map((step) => [step.stepId, step] as const),\n );\n const order = base.steps.map((step) => step.stepId);\n\n for (const step of override.steps) {\n const existing = steps.get(step.stepId);\n if (!existing) {\n steps.set(\n step.stepId,\n createResolvedStep(\n step,\n {\n ...source,\n stepId: step.stepId,\n },\n instance,\n ),\n );\n order.push(step.stepId);\n continue;\n }\n\n const mergedBlocks = [...existing.blocks];\n for (const block of step.blocks) {\n const hasConflict = mergedBlocks.some((candidate) => candidate.blockId === block.blockId);\n if (hasConflict) {\n diagnostics.push({\n code: 'instance-journey-block-conflict',\n severity: 'warning',\n message: `Journey da instance tentou redefinir o bloco \"${block.blockId}\" em \"${override.journeyId}/${step.stepId}\" sem usar journeyOverrides.`,\n scopeKind: 'block',\n path: `instanceJourney:${override.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: override.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n mergedBlocks.push(\n createResolvedBlock(\n block,\n {\n ...source,\n stepId: step.stepId,\n blockId: block.blockId,\n },\n instance,\n [],\n 'instance-journey-append',\n ),\n );\n }\n\n steps.set(step.stepId, {\n stepId: step.stepId,\n label: step.label || existing.label,\n description: step.description ?? existing.description,\n kind: step.kind ?? existing.kind,\n icon: step.icon ?? existing.icon,\n visual: step.visual ?? existing.visual,\n optional: step.optional ?? existing.optional,\n editableFromReview: step.editableFromReview ?? existing.editableFromReview,\n blocks: mergedBlocks,\n });\n }\n\n return {\n journeyId: override.journeyId,\n label: override.label || base.label,\n description: override.description ?? base.description,\n steps: order\n .map((stepId) => steps.get(stepId))\n .filter((step): step is EditorialResolvedStep => Boolean(step)),\n };\n}\n\nfunction applyCompliancePresetBlocks(\n journeys: EditorialResolvedJourney[],\n presets: EditorialCompliancePreset[],\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journey of journeys) {\n const targetStep = journey.steps[journey.steps.length - 1];\n if (!targetStep) {\n continue;\n }\n\n for (const preset of presets) {\n for (const block of preset.blocks ?? []) {\n targetStep.blocks.push(\n createResolvedBlock(\n block,\n createSourceRef('compliancePreset', {\n solutionId: solution?.solutionId ?? undefined,\n presetId: preset.presetId,\n journeyId: journey.journeyId,\n stepId: targetStep.stepId,\n blockId: block.blockId,\n }),\n instance,\n [],\n 'compliance-append',\n ),\n );\n }\n }\n }\n}\n\nfunction filterCompliancePresetsByProblemType(\n presets: EditorialCompliancePreset[],\n runtimeProblemType: string | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialCompliancePreset[] {\n if (!runtimeProblemType) {\n return presets;\n }\n\n return presets.filter((preset) => {\n if (!preset.problemTypes?.length || preset.problemTypes.includes(runtimeProblemType)) {\n return true;\n }\n\n diagnostics.push({\n code: 'compliance-preset-problem-type-mismatch',\n severity: 'warning',\n message: `Compliance preset \"${preset.presetId}\" nao se aplica ao problemType \"${runtimeProblemType}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:problemType`,\n });\n return false;\n });\n}\n\nfunction resolveComplianceValue(\n context: Record<string, unknown>,\n key: string,\n): unknown {\n const direct = getValueAtPath(context, key);\n if (direct != null && direct !== '') {\n return direct;\n }\n return getValueAtPath(context, `formData.${key}`);\n}\n\nfunction resolveEffectivePresentation(\n basePresentation: EditorialWizardPresentation | null,\n themePreset: EditorialThemePreset | null,\n): EditorialWizardPresentation | null {\n if (!basePresentation && !themePreset) {\n return null;\n }\n\n const layout: EditorialLayoutConfig = {\n ...(basePresentation?.layout ?? {}),\n };\n\n if (themePreset?.maxWidth != null && !layout.maxWidth) {\n layout.maxWidth = String(themePreset.maxWidth);\n }\n if (themePreset?.pageSpacing != null) {\n layout.spacing = {\n ...(layout.spacing ?? {}),\n pagePadding: layout.spacing?.pagePadding ?? String(themePreset.pageSpacing),\n };\n }\n if (themePreset?.shellVariant && !layout.shellVariant) {\n layout.shellVariant = mapThemeShellVariant(themePreset.shellVariant);\n }\n\n const theme = {\n ...(basePresentation?.theme ?? {}),\n color: {\n ...(basePresentation?.theme?.color ?? {}),\n pageBackground: basePresentation?.theme?.color?.pageBackground ?? themePreset?.background,\n },\n };\n\n return {\n ...(basePresentation ?? {}),\n layout,\n theme,\n };\n}\n\nfunction diagnoseUnsupportedPresentationConfig(\n presentation: EditorialWizardPresentation | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n if (!presentation) {\n return;\n }\n\n const unsupportedEntries: Array<{ path: string; reason: string }> = [];\n\n if (presentation.layout?.contentAlign) {\n unsupportedEntries.push({\n path: 'presentation.layout.contentAlign',\n reason: 'contentAlign ainda nao afeta o shell do runtime.',\n });\n }\n if (presentation.layout?.responsive?.tabletOrientation) {\n unsupportedEntries.push({\n path: 'presentation.layout.responsive.tabletOrientation',\n reason: 'tabletOrientation ainda nao possui comportamento responsivo dedicado.',\n });\n }\n if (presentation.motion) {\n unsupportedEntries.push({\n path: 'presentation.motion',\n reason: 'motion ainda nao possui integracao operacional no renderer do runtime.',\n });\n }\n\n for (const entry of unsupportedEntries) {\n diagnostics.push({\n code: 'presentation-config-unsupported',\n severity: 'warning',\n message: `Configuracao de presentation ignorada em \"${entry.path}\". ${entry.reason}`,\n scopeKind: 'global',\n path: entry.path,\n });\n }\n}\n\nfunction mapThemeShellVariant(\n shellVariant: EditorialThemePreset['shellVariant'],\n): EditorialPresentationShellVariant {\n if (shellVariant === 'wizard') {\n return 'corporate-wizard';\n }\n if (shellVariant === 'split') {\n return 'sidebar-journey';\n }\n if (shellVariant === 'plain') {\n return 'compliance-flow';\n }\n if (shellVariant === 'card') {\n return 'compact-form';\n }\n return 'editorial-rich';\n}\n\nfunction applyJourneyOverrides(\n journeys: EditorialResolvedJourney[],\n overrides: EditorialJourneyOverride[],\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journeyOverride of overrides) {\n const journey = journeys.find((candidate) => candidate.journeyId === journeyOverride.journeyId);\n if (!journey) {\n diagnostics.push({\n code: 'journey-override-target-missing',\n severity: 'warning',\n message: `Journey override referencia a jornada inexistente \"${journeyOverride.journeyId}\".`,\n scopeKind: 'journey',\n path: `journeyOverride:${journeyOverride.journeyId}`,\n journeyId: journeyOverride.journeyId,\n });\n continue;\n }\n\n const touchedTargets = new Set<string>();\n for (const stepOverride of journeyOverride.stepOverrides ?? []) {\n const step = journey.steps.find((candidate) => candidate.stepId === stepOverride.stepId);\n if (!step) {\n diagnostics.push({\n code: 'step-override-target-missing',\n severity: 'warning',\n message: `Journey override referencia a etapa inexistente \"${stepOverride.stepId}\" na jornada \"${journeyOverride.journeyId}\".`,\n scopeKind: 'step',\n path: `journeyOverride:${journeyOverride.journeyId}:${stepOverride.stepId}`,\n journeyId: journeyOverride.journeyId,\n stepId: stepOverride.stepId,\n });\n continue;\n }\n\n for (const blockOverride of stepOverride.blockOverrides ?? []) {\n applyBlockOverride(\n step,\n blockOverride,\n diagnostics,\n journeyOverride.journeyId,\n touchedTargets,\n instance,\n );\n }\n }\n }\n}\n\nfunction applyBlockOverride(\n step: EditorialResolvedStep,\n override: EditorialBlockOverride,\n diagnostics: EditorialRuntimeDiagnostic[],\n journeyId: string,\n touchedTargets: Set<string>,\n instance: EditorialTemplateInstance | null,\n): void {\n const source = createSourceRef('instanceOverride', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId,\n stepId: step.stepId,\n blockId: override.blockId,\n });\n const conflictKeys = buildOverrideConflictKeys(step.stepId, override);\n if (conflictKeys.some((key) => touchedTargets.has(key))) {\n diagnostics.push({\n code: 'block-override-conflict',\n severity: 'warning',\n message: `Multiplas operacoes de override atingem o bloco \"${override.blockId}\" em \"${journeyId}/${step.stepId}\". A ordem declarada sera aplicada de forma deterministica.`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${step.stepId}:${override.blockId}`,\n journeyId,\n stepId: step.stepId,\n blockId: override.blockId,\n });\n }\n for (const key of conflictKeys) {\n touchedTargets.add(key);\n }\n\n if (override.operation === 'append') {\n if (!override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'Append requer value.',\n ),\n );\n return;\n }\n\n step.blocks.push(\n createResolvedBlock(\n override.value,\n source,\n instance,\n [],\n 'instance-override-append',\n ),\n );\n return;\n }\n\n const blockIndex = step.blocks.findIndex((block) => block.blockId === override.blockId);\n if (override.operation === 'remove' || override.operation === 'replace') {\n if (blockIndex === -1) {\n diagnostics.push(\n createMissingBlockOverrideTargetDiagnostic(\n journeyId,\n step.stepId,\n override.blockId,\n ),\n );\n return;\n }\n\n if (override.operation === 'remove') {\n step.blocks.splice(blockIndex, 1);\n return;\n }\n\n if (!override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'Replace requer value.',\n ),\n );\n return;\n }\n\n const previous = step.blocks[blockIndex];\n step.blocks.splice(\n blockIndex,\n 1,\n createResolvedBlock(\n override.value,\n source,\n instance,\n previous.provenance.trail,\n 'instance-override-replace',\n ),\n );\n return;\n }\n\n if (!override.referenceBlockId || !override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'InsertBefore/InsertAfter requerem referenceBlockId e value.',\n ),\n );\n return;\n }\n\n const referenceIndex = step.blocks.findIndex((block) => block.blockId === override.referenceBlockId);\n if (referenceIndex === -1) {\n diagnostics.push(\n createMissingBlockOverrideTargetDiagnostic(\n journeyId,\n step.stepId,\n override.referenceBlockId,\n ),\n );\n return;\n }\n\n const insertIndex = override.operation === 'insertBefore'\n ? referenceIndex\n : referenceIndex + 1;\n step.blocks.splice(\n insertIndex,\n 0,\n createResolvedBlock(\n override.value,\n source,\n instance,\n [],\n override.operation === 'insertBefore'\n ? 'instance-override-insert-before'\n : 'instance-override-insert-after',\n ),\n );\n}\n\nfunction buildOverrideConflictKeys(\n stepId: string,\n override: EditorialBlockOverride,\n): string[] {\n const keys = [`${stepId}:block:${override.blockId}`];\n\n if (override.operation === 'replace' || override.operation === 'remove') {\n keys.push(`${stepId}:target:${override.blockId}`);\n }\n\n if (override.referenceBlockId) {\n keys.push(`${stepId}:reference:${override.referenceBlockId}`);\n keys.push(`${stepId}:target:${override.referenceBlockId}`);\n }\n\n return keys;\n}\n\nfunction createInvalidBlockOverrideDiagnostic(\n journeyId: string,\n stepId: string,\n override: EditorialBlockOverride,\n reason: string,\n): EditorialRuntimeDiagnostic {\n return {\n code: 'block-override-invalid',\n severity: 'warning',\n message: `Override invalido para bloco \"${override.blockId}\" em \"${journeyId}/${stepId}\": ${reason}`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${stepId}:${override.blockId}`,\n journeyId,\n stepId,\n blockId: override.blockId,\n };\n}\n\nfunction createMissingBlockOverrideTargetDiagnostic(\n journeyId: string,\n stepId: string,\n blockId: string,\n): EditorialRuntimeDiagnostic {\n return {\n code: 'block-override-target-missing',\n severity: 'warning',\n message: `Override referencia bloco inexistente \"${blockId}\" em \"${journeyId}/${stepId}\".`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${stepId}:${blockId}`,\n journeyId,\n stepId,\n blockId,\n };\n}\n\nfunction diagnoseResolvedBlocks(\n journeys: EditorialResolvedJourney[],\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journey of journeys) {\n for (const step of journey.steps) {\n for (const block of step.blocks) {\n if (block.kind !== 'dataCollection') {\n continue;\n }\n\n const dataBlock = block as EditorialResolvedDataCollectionBlock;\n const resolution = resolveEditorialDataBlockFormConfigDetails(dataBlock, instance);\n if (resolution.ambiguous) {\n diagnostics.push({\n code: 'data-collection-config-ambiguous',\n severity: 'warning',\n message: `Bloco dataCollection \"${block.blockId}\" encontrou mais de uma configuracao candidata para \"${block.formBlockId}\". A primeira correspondencia valida foi aplicada de forma deterministica.`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n }\n\n if (dataBlock.dataCollectionState.readiness === 'missingConfig') {\n diagnostics.push({\n code: 'data-collection-config-missing',\n severity: 'error',\n message: `Bloco dataCollection \"${block.blockId}\" nao possui FormConfig resolvido para \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n if (dataBlock.dataCollectionState.readiness === 'requiresAdapter') {\n diagnostics.push({\n code: 'data-collection-adapter-missing',\n severity: 'warning',\n message: `Bloco dataCollection \"${block.blockId}\" depende de adaptador opcional para materializar \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n if (dataBlock.dataCollectionState.readiness === 'invalid') {\n diagnostics.push({\n code: 'data-collection-invalid',\n severity: 'error',\n message: `Bloco dataCollection \"${block.blockId}\" possui materializacao invalida para \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n }\n }\n }\n }\n}\n\nfunction annotateDiagnostics(\n journeys: EditorialResolvedJourney[],\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const diagnostic of diagnostics) {\n const journey = diagnostic.journeyId\n ? journeys.find((item) => item.journeyId === diagnostic.journeyId)\n : undefined;\n const step = diagnostic.stepId\n ? journey?.steps.find((item) => item.stepId === diagnostic.stepId)\n : undefined;\n const block = diagnostic.blockId\n ? step?.blocks.find((item) => item.blockId === diagnostic.blockId)\n : undefined;\n\n if (!diagnostic.scopeKind) {\n diagnostic.scopeKind = block\n ? 'block'\n : step\n ? 'step'\n : journey\n ? 'journey'\n : 'global';\n }\n\n if (journey) {\n diagnostic.journeyLabel = journey.label;\n }\n if (step) {\n diagnostic.stepLabel = step.label;\n }\n if (block) {\n diagnostic.blockLabel = block.title ?? block.subtitle ?? block.blockId;\n }\n }\n}\n\nfunction dedupeTrail(\n trail: EditorialResolvedBlockCompositionEntry[],\n): EditorialResolvedBlockCompositionEntry[] {\n const seen = new Set<string>();\n const deduped: EditorialResolvedBlockCompositionEntry[] = [];\n\n for (const entry of trail) {\n const key = `${entry.operation}:${entry.source.kind}:${entry.source.sourceId}:${entry.source.journeyId ?? ''}:${entry.source.stepId ?? ''}:${entry.source.blockId ?? ''}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(entry);\n }\n\n return deduped;\n}\n\nfunction buildDataCollectionState(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedDataCollectionState {\n const resolution = resolveEditorialDataBlockFormConfigDetails(block, instance);\n const hasInlineFormConfig = Boolean(block.formConfig);\n const hasResolvedFormConfig = Boolean(resolution.formConfig);\n\n let readiness: EditorialResolvedDataCollectionState['readiness'];\n if (!block.formBlockId) {\n readiness = 'invalid';\n } else if (!hasResolvedFormConfig) {\n readiness = 'missingConfig';\n } else {\n readiness = 'requiresAdapter';\n }\n\n return {\n formBlockId: block.formBlockId,\n formConfigRef: block.formConfigRef,\n hasInlineFormConfig,\n resolvedFormConfigSource: resolution.source,\n resolvedFormConfigLookupKey: resolution.lookupKey,\n hasResolvedFormConfig,\n expectedAdapter: 'optional',\n readiness,\n };\n}\n\nfunction createSourceRef(\n kind: EditorialResolvedBlockSourceRef['kind'],\n details: Omit<EditorialResolvedBlockSourceRef, 'kind' | 'sourceId'>,\n): EditorialResolvedBlockSourceRef {\n const sourceId = [\n kind,\n details.solutionId,\n details.presetId,\n details.instanceId,\n details.journeyId,\n details.stepId,\n details.blockId,\n ]\n .filter((value): value is string => Boolean(value))\n .join(':');\n\n return {\n kind,\n sourceId: sourceId || kind,\n ...details,\n };\n}\n\nfunction mergeContext(\n ...sources: Array<Record<string, unknown>>\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const source of sources) {\n mergeContextInto(result, source);\n }\n return result;\n}\n\nfunction mergeContextInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const [key, value] of Object.entries(source)) {\n if (isPlainObject(value) && isPlainObject(target[key])) {\n mergeContextInto(\n target[key] as Record<string, unknown>,\n value,\n );\n continue;\n }\n\n if (isPlainObject(value)) {\n target[key] = clonePlainObject(value);\n continue;\n }\n\n target[key] = value;\n }\n}\n\nfunction clonePlainObject(value: Record<string, unknown>): Record<string, unknown> {\n const target: Record<string, unknown> = {};\n mergeContextInto(target, value);\n return target;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import { computed, signal } from '@angular/core';\nimport type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport {\n resolveActiveJourney,\n resolveActiveStep,\n} from './editorial-runtime.helpers';\nimport { resolveEditorialRuntimeSnapshot } from './editorial-preset-resolver';\nimport type {\n EditorialResolvedJourney,\n EditorialResolvedStep,\n EditorialRuntimeSnapshot,\n} from './editorial-runtime-snapshot.model';\n\nexport class EditorialRuntimeState {\n private readonly journeyId = signal<string | null>(null);\n private readonly stepId = signal<string | null>(null);\n\n readonly activeJourneyId = this.journeyId.asReadonly();\n readonly activeStepId = this.stepId.asReadonly();\n\n connect(\n solution: () => EditorialSolutionDefinition | null,\n instance: () => EditorialTemplateInstance | null,\n runtimeContext: () => Record<string, unknown> | null,\n ): {\n snapshot: () => EditorialRuntimeSnapshot;\n journeys: () => EditorialResolvedJourney[];\n activeJourney: () => EditorialResolvedJourney | null;\n activeStep: () => EditorialResolvedStep | null;\n } {\n const snapshot = computed(() =>\n resolveEditorialRuntimeSnapshot({\n solution: solution(),\n instance: instance(),\n runtimeContext: runtimeContext(),\n }),\n );\n const journeys = computed(() => snapshot().journeys);\n const activeJourney = computed(() =>\n resolveActiveJourney(journeys(), this.journeyId()),\n );\n const activeStep = computed(() =>\n resolveActiveStep(activeJourney(), this.stepId()),\n );\n return {\n snapshot,\n journeys,\n activeJourney,\n activeStep,\n };\n }\n\n selectJourney(journeyId: string): void {\n this.journeyId.set(journeyId);\n this.stepId.set(null);\n }\n\n selectStep(stepId: string): void {\n this.stepId.set(stepId);\n }\n}\n","import type { EditorialRuntimeDiagnostic } from './editorial-runtime-diagnostics.model';\nimport type { EditorialRuntimeSnapshot } from './editorial-runtime-snapshot.model';\n\nexport type EditorialRuntimeFallbackMode =\n | 'normal'\n | 'warning'\n | 'degraded'\n | 'blocked';\n\nexport interface EditorialRuntimeFallbackState {\n mode: EditorialRuntimeFallbackMode;\n progressionBlocked: boolean;\n hasGlobalErrors: boolean;\n hasActiveStepErrors: boolean;\n hasWarnings: boolean;\n requiresEngineAttention: boolean;\n diagnostics: EditorialRuntimeDiagnostic[];\n blockingDiagnostics: EditorialRuntimeDiagnostic[];\n}\n\nexport interface EditorialRuntimeFallbackScope {\n journeyId?: string | null;\n stepId?: string | null;\n}\n\nexport function deriveRuntimeFallbackState(\n snapshot: EditorialRuntimeSnapshot,\n scope: EditorialRuntimeFallbackScope = {},\n): EditorialRuntimeFallbackState {\n const diagnostics = snapshot.diagnostics.items;\n const blockingDiagnostics = diagnostics.filter((item) => {\n if (item.severity !== 'error') {\n return false;\n }\n\n if (item.scopeKind === 'global') {\n return true;\n }\n\n return item.journeyId === scope.journeyId && item.stepId === scope.stepId;\n });\n const hasGlobalErrors = diagnostics.some(\n (item) => item.severity === 'error' && item.scopeKind === 'global',\n );\n const hasActiveStepErrors = diagnostics.some(\n (item) =>\n item.severity === 'error'\n && item.scopeKind !== 'global'\n && item.journeyId === scope.journeyId\n && item.stepId === scope.stepId,\n );\n const hasAnyErrors = diagnostics.some((item) => item.severity === 'error');\n const hasWarnings = diagnostics.some((item) => item.severity === 'warning');\n const requiresEngineAttention = diagnostics.some((item) =>\n item.code === 'data-collection-adapter-missing',\n );\n\n let mode: EditorialRuntimeFallbackMode = 'normal';\n if (blockingDiagnostics.length) {\n mode = 'blocked';\n } else if (hasAnyErrors || requiresEngineAttention) {\n mode = 'degraded';\n } else if (hasWarnings) {\n mode = 'warning';\n }\n\n return {\n mode,\n progressionBlocked: blockingDiagnostics.length > 0,\n hasGlobalErrors,\n hasActiveStepErrors,\n hasWarnings,\n requiresEngineAttention,\n diagnostics,\n blockingDiagnostics,\n };\n}\n","import type {\n EditorialThemeTokens,\n} from '@praxisui/core';\n\nexport function buildRuntimeCssVars(\n theme?: EditorialThemeTokens | null,\n): string {\n if (!theme) {\n return '';\n }\n\n const vars: Array<[string, string | undefined]> = [\n ['--editorial-page-background', theme.color?.pageBackground],\n ['--editorial-surface-primary', theme.color?.surfacePrimary],\n ['--editorial-surface-secondary', theme.color?.surfaceSecondary],\n ['--editorial-border-color', theme.color?.border],\n ['--editorial-text-primary', theme.color?.textPrimary],\n ['--editorial-text-secondary', theme.color?.textSecondary],\n ['--editorial-accent', theme.color?.accent],\n ['--editorial-accent-contrast', theme.color?.accentContrast],\n ['--editorial-success', theme.color?.success],\n ['--editorial-warning', theme.color?.warning],\n ['--editorial-danger', theme.color?.danger],\n ['--editorial-muted', theme.color?.muted],\n ['--editorial-step-active', theme.color?.stepActive],\n ['--editorial-step-completed', theme.color?.stepCompleted],\n ['--editorial-step-pending', theme.color?.stepPending],\n ['--editorial-step-blocked', theme.color?.stepBlocked],\n ['--editorial-connector', theme.color?.connector],\n ['--editorial-cta-primary', theme.color?.ctaPrimary],\n ['--editorial-cta-primary-text', theme.color?.ctaPrimaryText],\n ['--editorial-cta-secondary', theme.color?.ctaSecondary],\n ['--editorial-cta-secondary-text', theme.color?.ctaSecondaryText],\n ['--editorial-shell-radius', theme.radius?.shell],\n ['--editorial-card-radius', theme.radius?.card],\n ['--editorial-button-radius', theme.radius?.button],\n ['--editorial-field-radius', theme.radius?.field],\n ['--editorial-step-radius', theme.radius?.step],\n ['--editorial-shell-shadow', theme.shadow?.shell],\n ['--editorial-card-shadow', theme.shadow?.card],\n ['--editorial-floating-shadow', theme.shadow?.floating],\n ['--editorial-shell-border-width', theme.borderWidth?.shell],\n ['--editorial-card-border-width', theme.borderWidth?.card],\n ['--editorial-field-border-width', theme.borderWidth?.field],\n ['--editorial-active-step-border-width', theme.borderWidth?.activeStep],\n ['--editorial-title-font-family', theme.typography?.titleFontFamily],\n ['--editorial-body-font-family', theme.typography?.bodyFontFamily],\n ['--editorial-hero-title-size', theme.typography?.heroTitleSize],\n ['--editorial-step-title-size', theme.typography?.stepTitleSize],\n ['--editorial-body-size', theme.typography?.bodySize],\n ['--editorial-caption-size', theme.typography?.captionSize],\n ];\n\n const textPrimaryRgb = toRgbTuple(theme.color?.textPrimary);\n const textSecondaryRgb = toRgbTuple(theme.color?.textSecondary);\n const surfacePrimaryRgb = toRgbTuple(theme.color?.surfacePrimary);\n const surfaceSecondaryRgb = toRgbTuple(theme.color?.surfaceSecondary);\n\n if (textPrimaryRgb) {\n vars.push(['--editorial-text-primary-rgb', textPrimaryRgb]);\n }\n if (textSecondaryRgb) {\n vars.push(['--editorial-text-secondary-rgb', textSecondaryRgb]);\n }\n if (surfacePrimaryRgb) {\n vars.push(['--editorial-surface-primary-rgb', surfacePrimaryRgb]);\n }\n if (surfaceSecondaryRgb) {\n vars.push(['--editorial-surface-secondary-rgb', surfaceSecondaryRgb]);\n }\n\n return vars\n .filter(([, value]) => Boolean(value))\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n}\n\nfunction toRgbTuple(value?: string | null): string | undefined {\n if (!value) {\n return undefined;\n }\n\n const normalized = value.trim();\n const hex = normalized.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);\n if (hex) {\n const raw = hex[1];\n const expanded = raw.length === 3\n ? raw.split('').map((char) => `${char}${char}`).join('')\n : raw;\n const r = parseInt(expanded.slice(0, 2), 16);\n const g = parseInt(expanded.slice(2, 4), 16);\n const b = parseInt(expanded.slice(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n }\n\n const rgb = normalized.match(\n /^rgba?\\(\\s*(\\d{1,3})[\\s,]+(\\d{1,3})[\\s,]+(\\d{1,3})(?:[\\s,\\/]+[\\d.]+)?\\s*\\)$/i,\n );\n if (rgb) {\n return `${rgb[1]}, ${rgb[2]}, ${rgb[3]}`;\n }\n\n return undefined;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n PraxisI18nService,\n type PraxisTranslationParams,\n} from '@praxisui/core';\nimport type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport {\n DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,\n type EditorialRuntimeHostConfig,\n} from './editorial-runtime.contract';\nimport { EditorialBlockRendererComponent } from './renderers/editorial-block-renderer.component';\nimport { EditorialStepperComponent } from './renderers/editorial-stepper.component';\nimport { EditorialRuntimeState } from './runtime/editorial-runtime-state';\nimport { getVisibleBlocks } from './runtime/editorial-runtime.helpers';\nimport type {\n EditorialResolvedJourney,\n EditorialRuntimeSnapshot,\n} from './runtime/editorial-runtime-snapshot.model';\nimport type { EditorialRuntimeDiagnostic } from './runtime/editorial-runtime-diagnostics.model';\nimport type { EditorialRuntimeOperationalEvent } from './runtime/editorial-runtime-events.model';\nimport {\n deriveRuntimeFallbackState,\n type EditorialRuntimeFallbackState,\n} from './runtime/editorial-runtime-fallback';\nimport { buildRuntimeCssVars } from './runtime/editorial-runtime-theme.helpers';\nimport {\n buildRuntimeLayoutCss,\n resolveDensity,\n resolveRuntimeOrientation,\n resolveShellVariant,\n} from './runtime/editorial-runtime-presentation.helpers';\n\n@Component({\n selector: 'praxis-editorial-form-runtime',\n standalone: true,\n imports: [CommonModule, EditorialBlockRendererComponent, EditorialStepperComponent],\n template: `\n <section\n class=\"editorial-runtime\"\n [class.orientation-horizontal]=\"effectiveOrientation() === 'horizontal'\"\n [class.orientation-vertical]=\"effectiveOrientation() === 'vertical'\"\n [class.density-compact]=\"effectiveDensity() === 'compact'\"\n [class.density-comfortable]=\"effectiveDensity() === 'comfortable'\"\n [class.density-relaxed]=\"effectiveDensity() === 'relaxed'\"\n [attr.data-shell-variant]=\"shellVariant()\"\n [style]=\"runtimeStyleAttr()\"\n >\n @if (runtimeDiagnostics().items.length) {\n <section\n class=\"diagnostics-panel\"\n [class.error]=\"runtimeDiagnostics().hasErrors\"\n [class.warning]=\"runtimeDiagnostics().hasWarnings\"\n [attr.role]=\"runtimeDiagnostics().hasErrors ? 'alert' : 'status'\"\n [attr.aria-live]=\"runtimeDiagnostics().hasErrors ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n >\n <h2>{{ t('runtime.diagnostics.title', 'Diagnosticos do runtime') }}</h2>\n <p>{{ diagnosticsMessage() }}</p>\n <div\n class=\"diagnostics-summary\"\n [attr.aria-label]=\"t('runtime.diagnostics.severitySummary', 'Resumo de severidade')\"\n >\n <span class=\"summary-pill error\">{{ t('runtime.diagnostics.errorsCount', 'Erros: {count}', { count: diagnosticsErrorCount() }) }}</span>\n <span class=\"summary-pill warning\">{{ t('runtime.diagnostics.warningsCount', 'Avisos: {count}', { count: diagnosticsWarningCount() }) }}</span>\n <span class=\"summary-pill info\">{{ t('runtime.diagnostics.infoCount', 'Infos: {count}', { count: diagnosticsInfoCount() }) }}</span>\n </div>\n <details class=\"diagnostics-details\">\n <summary>\n {{ t('runtime.diagnostics.details', 'Ver detalhes ({count})', { count: diagnosticItems().length }) }}\n </summary>\n @if (globalDiagnostics().length) {\n <section\n class=\"diagnostic-group global\"\n [attr.aria-label]=\"t('runtime.diagnostics.globalErrors', 'Erros globais do runtime')\"\n >\n <h3>{{ t('runtime.diagnostics.globalErrors', 'Erros globais do runtime') }}</h3>\n <ul class=\"diagnostics-list\">\n @for (item of globalDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n <ul class=\"diagnostics-list\">\n @for (item of contextualDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </details>\n </section>\n }\n\n @if (runtimeTitle(); as title) {\n <header class=\"runtime-header\">\n <span class=\"runtime-state-pill\" [attr.data-mode]=\"fallbackState().mode\">\n {{ fallbackLabel() }}\n </span>\n @if (runtimeEyebrow()) {\n <p class=\"eyebrow\">{{ runtimeEyebrow() }}</p>\n }\n <h1>{{ title }}</h1>\n @if (runtimeDescription()) {\n <p class=\"description\">{{ runtimeDescription() }}</p>\n }\n </header>\n\n @if (journeys().length > 1) {\n <nav\n class=\"journey-tabs\"\n [attr.aria-label]=\"t('runtime.journeys.ariaLabel', 'Jornadas editoriais')\"\n >\n @for (journey of journeys(); track journey.journeyId) {\n <button\n type=\"button\"\n class=\"journey-tab\"\n [class.active]=\"activeJourney()?.journeyId === journey.journeyId\"\n [disabled]=\"isJourneySelectionBlocked(journey.journeyId)\"\n [attr.aria-describedby]=\"isJourneySelectionBlocked(journey.journeyId) ? 'navigation-blocking-note' : null\"\n (click)=\"selectJourney(journey.journeyId)\"\n >\n {{ journey.label }}\n @if (journeyErrorCount(journey.journeyId)) {\n <span\n class=\"status-badge error\"\n [attr.aria-label]=\"t('runtime.journeys.errors', 'Jornada com erros')\"\n >\n {{ journeyErrorCount(journey.journeyId) }}\n </span>\n } @else if (journeyWarningCount(journey.journeyId)) {\n <span\n class=\"status-badge warning\"\n [attr.aria-label]=\"t('runtime.journeys.warnings', 'Jornada com avisos')\"\n >\n {{ journeyWarningCount(journey.journeyId) }}\n </span>\n }\n </button>\n }\n </nav>\n }\n\n @if (activeJourney(); as journey) {\n <section class=\"journey-card\">\n <header class=\"journey-header\">\n <h2>{{ journey.label }}</h2>\n @if (journey.description) {\n <p>{{ journey.description }}</p>\n }\n </header>\n\n @if (journey.steps.length > 1 && stepperVisible()) {\n <praxis-editorial-stepper\n [steps]=\"journey.steps\"\n [activeStepId]=\"activeStep()?.stepId ?? null\"\n [config]=\"stepperConfig()\"\n [orientation]=\"effectiveOrientation()\"\n [progressionBlocked]=\"isForwardNavigationBlocked()\"\n [isStepSelectionBlocked]=\"stepSelectionBlocker\"\n (stepSelected)=\"selectStep($event)\"\n />\n }\n\n @if (activeStep(); as step) {\n <section\n class=\"step-panel\"\n [class.error]=\"activeStepHasErrors() || activeGlobalDiagnostics().length\"\n [class.warning]=\"!activeStepHasErrors() && !activeGlobalDiagnostics().length && activeStepHasWarnings()\"\n >\n <header class=\"step-header\">\n <div>\n <h3>{{ step.label }}</h3>\n @if (step.description) {\n <p>{{ step.description }}</p>\n }\n </div>\n <div class=\"step-counter\">\n {{\n t('runtime.step.counter', 'Etapa {current} de {total}', {\n current: currentStepIndex() + 1,\n total: journey.steps.length,\n })\n }}\n </div>\n </header>\n\n @if (activeStepDiagnostics().length) {\n <section\n class=\"step-diagnostics\"\n [class.error]=\"activeStepHasErrors()\"\n [class.warning]=\"!activeStepHasErrors() && activeStepHasWarnings()\"\n [attr.role]=\"activeStepHasErrors() ? 'alert' : 'status'\"\n [attr.aria-live]=\"activeStepHasErrors() ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n >\n <h4>{{ t('runtime.step.statusTitle', 'Situacao desta etapa') }}</h4>\n <ul class=\"diagnostics-list contextual\">\n @for (item of activeStepDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n\n @if (activeGlobalDiagnostics().length) {\n <section\n class=\"step-diagnostics global\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n >\n <h4>{{ t('runtime.step.globalErrorTitle', 'Erro global do runtime') }}</h4>\n <ul class=\"diagnostics-list contextual\">\n @for (item of activeGlobalDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n\n <div class=\"block-stack\">\n @for (block of visibleBlocks(); track block.blockId) {\n <praxis-editorial-block-renderer\n [block]=\"block\"\n [runtimeContext]=\"resolvedContext()\"\n [solution]=\"solution()\"\n [instance]=\"instance()\"\n (runtimeContextChange)=\"updateRuntimeContext($event)\"\n (blockAction)=\"handleBlockAction($event)\"\n (operationalEvent)=\"emitOperationalEvent($event)\"\n />\n }\n </div>\n\n @if (journey.steps.length > 1) {\n <footer class=\"step-actions\">\n <button\n type=\"button\"\n class=\"secondary\"\n (click)=\"goToPreviousStep()\"\n [disabled]=\"!hasPreviousStep()\"\n >\n {{ t('runtime.actions.previous', 'Etapa anterior') }}\n </button>\n <button\n type=\"button\"\n class=\"primary\"\n (click)=\"goToNextStep()\"\n [disabled]=\"!hasNextStep() || isForwardNavigationBlocked()\"\n [attr.aria-describedby]=\"isForwardNavigationBlocked() ? 'navigation-blocking-note' : null\"\n >\n {{\n isForwardNavigationBlocked()\n ? t('runtime.actions.nextBlocked', 'Corrija os erros para avancar')\n : t('runtime.actions.next', 'Proxima etapa')\n }}\n </button>\n </footer>\n @if (isForwardNavigationBlocked()) {\n <p id=\"navigation-blocking-note\" class=\"step-blocking-note\">\n {{ navigationBlockingMessage() }}\n </p>\n }\n }\n </section>\n }\n </section>\n } @else {\n <section class=\"empty-state\">\n <h2>{{ t('runtime.empty.noJourneyTitle', 'Editorial runtime sem jornada') }}</h2>\n <p>\n {{ t('runtime.empty.noJourneyDescription', 'Nenhuma jornada editorial foi resolvida para o estado atual.') }}\n </p>\n </section>\n }\n } @else {\n <section class=\"empty-state\">\n <h2>{{ t('runtime.empty.noSolutionTitle', 'Editorial runtime vazio') }}</h2>\n <p>\n {{ t('runtime.empty.noSolutionDescription', 'Forneca uma solution ou instance editorial para materializar a jornada.') }}\n </p>\n </section>\n }\n </section>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .editorial-runtime {\n display: grid;\n gap: 24px;\n padding: var(--editorial-page-padding, 24px);\n color: var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));\n background: var(--editorial-page-background, var(--md-sys-color-surface, #fdf8fd));\n font-family: var(--editorial-body-font-family, inherit);\n }\n\n .runtime-header,\n .journey-card,\n .empty-state,\n .diagnostics-panel {\n border: var(--editorial-shell-border-width, 1px) solid color-mix(in srgb, var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%, transparent);\n border-radius: var(--editorial-shell-radius, 20px);\n background: var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));\n padding: var(--editorial-shell-padding, 20px);\n box-shadow: var(--editorial-shell-shadow, none);\n }\n\n .diagnostics-panel {\n display: grid;\n gap: 10px;\n }\n\n .diagnostics-panel.warning {\n border-color: color-mix(in srgb, #b26a00 55%, var(--md-sys-color-outline-variant, #cac4d0));\n background: color-mix(in srgb, #fff4de 78%, var(--md-sys-color-surface-container-low, #f7f2fa));\n }\n\n .diagnostics-panel.error {\n border-color: color-mix(in srgb, #b3261e 60%, var(--md-sys-color-outline-variant, #cac4d0));\n background: color-mix(in srgb, #fde7e9 78%, var(--md-sys-color-surface-container-low, #f7f2fa));\n }\n\n .diagnostics-list {\n margin: 0;\n padding-left: 18px;\n display: grid;\n gap: 8px;\n }\n\n .diagnostics-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .summary-pill {\n display: inline-flex;\n align-items: center;\n min-height: 32px;\n padding: 6px 10px;\n border-radius: 999px;\n font-size: 0.85rem;\n border: 1px solid transparent;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 85%, transparent);\n }\n\n .summary-pill.error {\n border-color: color-mix(in srgb, #b3261e 45%, transparent);\n }\n\n .summary-pill.warning {\n border-color: color-mix(in srgb, #b26a00 45%, transparent);\n }\n\n .summary-pill.info {\n border-color: color-mix(in srgb, #00639b 45%, transparent);\n }\n\n .status-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 22px;\n min-height: 22px;\n padding: 0 6px;\n border-radius: 999px;\n font-size: 0.75rem;\n font-weight: 700;\n background: var(--md-sys-color-surface, #fff);\n }\n\n .status-badge.error {\n color: #8c1d18;\n background: #fde7e9;\n }\n\n .status-badge.warning {\n color: #7a4b00;\n background: #fff4de;\n }\n\n .diagnostics-details summary {\n cursor: pointer;\n font-weight: 600;\n }\n\n .diagnostic-group {\n display: grid;\n gap: 8px;\n padding: 12px 0;\n }\n\n .diagnostic-group.global {\n border-bottom: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n margin-bottom: 12px;\n }\n\n .step-panel.error {\n border-left: 4px solid #b3261e;\n }\n\n .step-panel.warning {\n border-left: 4px solid #b26a00;\n }\n\n .step-diagnostics {\n display: grid;\n gap: 8px;\n padding: 14px 16px;\n border-radius: 16px;\n }\n\n .step-diagnostics.error {\n background: #fde7e9;\n color: #5b1210;\n }\n\n .step-diagnostics.warning {\n background: #fff4de;\n color: #6b4300;\n }\n\n .step-diagnostics.global {\n background: #fde7e9;\n color: #5b1210;\n border: 1px solid color-mix(in srgb, #b3261e 35%, transparent);\n }\n\n .diagnostics-list.contextual {\n padding-left: 16px;\n }\n\n .diagnostic-location {\n display: block;\n margin-top: 4px;\n font-size: 0.82rem;\n opacity: 0.85;\n }\n\n .step-blocking-note {\n font-size: 0.9rem;\n color: #8c1d18;\n }\n\n .eyebrow {\n margin: 0 0 8px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-size: var(--editorial-caption-size, 0.75rem);\n color: var(--editorial-accent, var(--md-sys-color-primary, #6750a4));\n font-weight: 700;\n }\n\n .runtime-state-pill {\n justify-self: start;\n display: inline-flex;\n align-items: center;\n min-height: 30px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 0.8rem;\n font-weight: 700;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, transparent);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 70%, transparent);\n }\n\n .runtime-state-pill[data-mode='warning'] {\n color: #7a4b00;\n background: #fff4de;\n }\n\n .runtime-state-pill[data-mode='degraded'] {\n color: #8c1d18;\n background: #fde7e9;\n }\n\n .runtime-state-pill[data-mode='blocked'] {\n color: #8c1d18;\n background: #fde7e9;\n border-color: color-mix(in srgb, #b3261e 55%, transparent);\n }\n\n h1,\n h2,\n h3,\n p {\n margin: 0;\n }\n\n h1 {\n font-size: var(--editorial-hero-title-size, 2rem);\n line-height: 1.1;\n }\n\n .step-header h3 {\n font-size: var(--editorial-step-title-size, 1.25rem);\n line-height: 1.2;\n }\n\n .runtime-header,\n .journey-card,\n .journey-header,\n .step-panel {\n display: grid;\n gap: 12px;\n }\n\n .editorial-runtime[data-shell-variant='sidebar-journey'] .journey-card {\n grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);\n align-items: start;\n }\n\n .orientation-vertical .journey-card {\n grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);\n align-items: start;\n }\n\n .description,\n .journey-header p,\n .step-header p,\n .step-counter,\n .empty-state p {\n font-size: var(--editorial-body-size, 1rem);\n color: var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f));\n }\n\n .journey-tabs,\n .step-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n align-items: center;\n }\n\n .journey-tab,\n .step-actions button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n padding: 10px 12px;\n border-radius: var(--editorial-button-radius, 999px);\n border: 1px solid color-mix(\n in srgb,\n var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 75%,\n transparent\n );\n background: var(--editorial-surface-primary, var(--md-sys-color-surface, #fff));\n color: inherit;\n box-shadow: var(--editorial-card-shadow, none);\n cursor: pointer;\n }\n\n .journey-tab.active,\n .step-actions button.primary {\n background: var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)));\n color: var(--editorial-cta-primary-text, var(--editorial-accent-contrast, var(--md-sys-color-on-primary, #fff)));\n border-color: transparent;\n }\n\n .step-actions button.secondary {\n color: var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)));\n }\n\n .step-header {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n }\n\n .block-stack {\n display: grid;\n gap: var(--editorial-block-gap, 16px);\n }\n\n .step-actions button[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .density-compact {\n --editorial-page-padding: 16px;\n --editorial-shell-padding: 16px;\n --editorial-block-gap: 12px;\n }\n\n .density-comfortable {\n --editorial-page-padding: 24px;\n --editorial-shell-padding: 20px;\n --editorial-block-gap: 16px;\n }\n\n .density-relaxed {\n --editorial-page-padding: 32px;\n --editorial-shell-padding: 28px;\n --editorial-block-gap: 20px;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialFormRuntimeComponent {\n private readonly i18n = inject(PraxisI18nService);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly hostConfig = input<EditorialRuntimeHostConfig | null>(null);\n readonly snapshotChange = output<EditorialRuntimeSnapshot>();\n readonly fallbackChange = output<EditorialRuntimeFallbackState>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n private readonly state = new EditorialRuntimeState();\n private readonly solutionState = signal<EditorialSolutionDefinition | null>(null);\n private readonly instanceState = signal<EditorialTemplateInstance | null>(null);\n private readonly runtimeContextState = signal<Record<string, unknown> | null>(null);\n private readonly compactViewport = signal(false);\n private lastSnapshotSignature: string | null = null;\n private lastDiagnosticsSignature: string | null = null;\n private lastFallbackSignature: string | null = null;\n private lastBlockingSignature: string | null = null;\n private lastOverrideConflictSignature: string | null = null;\n private readonly runtime = this.state.connect(\n this.solutionState,\n this.instanceState,\n this.runtimeContextState,\n );\n\n protected readonly snapshot = computed(() => this.runtime.snapshot());\n protected readonly resolvedHostConfig = computed(() => ({\n ...DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,\n ...(this.hostConfig() ?? {}),\n }));\n protected readonly journeys = computed<EditorialResolvedJourney[]>(() => this.runtime.journeys());\n protected readonly activeJourney = computed(() => this.runtime.activeJourney());\n protected readonly activeStep = computed(() => this.runtime.activeStep());\n protected readonly resolvedContext = computed(() => this.snapshot().context);\n protected readonly runtimeDiagnostics = computed(() => this.snapshot().diagnostics);\n protected readonly fallbackState = computed(() =>\n deriveRuntimeFallbackState(this.snapshot(), {\n journeyId: this.activeJourney()?.journeyId,\n stepId: this.activeStep()?.stepId,\n }),\n );\n protected readonly diagnosticItems = computed(() =>\n sortDiagnostics(dedupeDiagnostics(this.runtimeDiagnostics().items)),\n );\n protected readonly globalDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => item.scopeKind === 'global'),\n );\n protected readonly contextualDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => item.scopeKind !== 'global'),\n );\n protected readonly diagnosticsErrorCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'error').length,\n );\n protected readonly diagnosticsWarningCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'warning').length,\n );\n protected readonly diagnosticsInfoCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'info').length,\n );\n protected readonly activeStepDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => isDiagnosticInActiveStep(item, this.activeJourney()?.journeyId, this.activeStep()?.stepId)),\n );\n protected readonly activeStepHasErrors = computed(() =>\n this.activeStepDiagnostics().some((item) => item.severity === 'error'),\n );\n protected readonly activeStepHasWarnings = computed(() =>\n this.activeStepDiagnostics().some((item) => item.severity === 'warning'),\n );\n protected readonly diagnosticsMessage = computed(() =>\n this.fallbackState().mode === 'blocked'\n ? this.t('runtime.diagnostics.message.blocked', 'Existem inconsistencias bloqueadoras que impedem a progressao segura do fluxo editorial.')\n : this.fallbackState().mode === 'degraded'\n ? this.t('runtime.diagnostics.message.degraded', 'O runtime esta operando de forma degradada e requer atencao operacional.')\n : this.runtimeDiagnostics().hasErrors\n ? this.t('runtime.diagnostics.message.error', 'Existem inconsistencias que podem comprometer a experiencia editorial.')\n : this.t('runtime.diagnostics.message.warning', 'Existem avisos operacionais para revisar nesta instancia editorial.'),\n );\n protected readonly activeGlobalDiagnostics = computed(() =>\n this.globalDiagnostics().filter((item) => item.severity === 'error'),\n );\n protected readonly visibleBlocks = computed(() =>\n getVisibleBlocks(this.activeStep()?.blocks, this.resolvedContext()),\n );\n protected readonly runtimeTitle = computed(() =>\n this.snapshot().title,\n );\n protected readonly runtimeDescription = computed(() =>\n this.snapshot().description,\n );\n protected readonly runtimeEyebrow = computed(() =>\n this.snapshot().problemType,\n );\n protected readonly presentation = computed(() => this.snapshot().presentation);\n protected readonly runtimeCssVars = computed(() =>\n buildRuntimeCssVars(this.presentation()?.theme),\n );\n protected readonly runtimeLayoutCss = computed(() =>\n buildRuntimeLayoutCss(this.presentation()?.layout),\n );\n protected readonly runtimeStyleAttr = computed(() =>\n [this.runtimeCssVars(), this.runtimeLayoutCss()].filter(Boolean).join(';'),\n );\n protected readonly effectiveOrientation = computed(() =>\n resolveRuntimeOrientation(\n this.presentation()?.layout,\n this.presentation()?.stepper,\n this.compactViewport(),\n ),\n );\n protected readonly shellVariant = computed(() =>\n resolveShellVariant(this.presentation()?.layout),\n );\n protected readonly effectiveDensity = computed(() =>\n resolveDensity(this.presentation()?.layout),\n );\n protected readonly stepperConfig = computed(() => this.presentation()?.stepper ?? null);\n protected readonly stepperVisible = computed(() => this.stepperConfig()?.visible !== false);\n protected readonly stepSelectionBlocker = (stepId: string) =>\n this.isStepSelectionBlocked(stepId);\n protected readonly fallbackLabel = computed(() => {\n if (this.fallbackState().mode === 'blocked') {\n return this.t('runtime.fallback.blocked', 'Runtime bloqueado');\n }\n if (this.fallbackState().mode === 'degraded') {\n return this.t('runtime.fallback.degraded', 'Runtime degradado');\n }\n if (this.fallbackState().mode === 'warning') {\n return this.t('runtime.fallback.warning', 'Runtime com aviso');\n }\n return this.t('runtime.fallback.healthy', 'Runtime saudavel');\n });\n protected readonly currentStepIndex = computed(() => {\n const journey = this.activeJourney();\n const step = this.activeStep();\n if (!journey || !step) {\n return 0;\n }\n return Math.max(\n 0,\n journey.steps.findIndex((candidate) => candidate.stepId === step.stepId),\n );\n });\n protected readonly hasPreviousStep = computed(() => this.currentStepIndex() > 0);\n protected readonly hasNextStep = computed(() => {\n const journey = this.activeJourney();\n return !!journey && this.currentStepIndex() < journey.steps.length - 1;\n });\n\n constructor() {\n effect(() => {\n this.solutionState.set(this.solution());\n this.instanceState.set(this.instance());\n this.runtimeContextState.set(this.runtimeContext());\n });\n\n effect((onCleanup) => {\n const breakpoint = this.presentation()?.layout?.responsive?.collapseStepperBelow;\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function' || !breakpoint) {\n this.compactViewport.set(false);\n return;\n }\n\n const media = window.matchMedia(`(max-width: ${breakpoint})`);\n const sync = () => this.compactViewport.set(media.matches);\n sync();\n\n const listener = () => sync();\n if (typeof media.addEventListener === 'function') {\n media.addEventListener('change', listener);\n onCleanup(() => media.removeEventListener('change', listener));\n return;\n }\n\n media.addListener(listener);\n onCleanup(() => media.removeListener(listener));\n });\n\n effect(() => {\n const snapshot = this.snapshot();\n const snapshotSignature = buildSnapshotSignature(snapshot);\n if (snapshotSignature !== this.lastSnapshotSignature) {\n this.lastSnapshotSignature = snapshotSignature;\n this.snapshotChange.emit(snapshot);\n }\n });\n\n effect(() => {\n const fallback = this.fallbackState();\n const signature = `${fallback.mode}:${fallback.progressionBlocked}:${fallback.requiresEngineAttention}:${fallback.blockingDiagnostics.map((item) => item.path ?? item.message).join('|')}`;\n if (signature !== this.lastFallbackSignature) {\n this.lastFallbackSignature = signature;\n this.fallbackChange.emit(fallback);\n this.emitOperationalEvent({\n eventType: 'fallback-changed',\n timestamp: Date.now(),\n severity: fallback.mode === 'blocked'\n ? 'error'\n : fallback.mode === 'degraded'\n ? 'warning'\n : 'info',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n fallback,\n },\n });\n }\n\n if (!fallback.blockingDiagnostics.length) {\n return;\n }\n\n const blockingSignature = fallback.blockingDiagnostics\n .map((item) => item.path ?? item.message)\n .join('|');\n if (blockingSignature === this.lastBlockingSignature) {\n return;\n }\n this.lastBlockingSignature = blockingSignature;\n this.emitOperationalEvent({\n eventType: 'blocking-error-detected',\n timestamp: Date.now(),\n severity: 'error',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n diagnostics: fallback.blockingDiagnostics,\n scope: fallback.hasGlobalErrors ? 'global' : 'step',\n },\n });\n });\n\n effect(() => {\n const diagnostics = this.diagnosticItems();\n const signature = diagnostics\n .map((item) => `${item.severity}:${item.code}:${item.path ?? ''}`)\n .join('|');\n if (signature === this.lastDiagnosticsSignature) {\n return;\n }\n this.lastDiagnosticsSignature = signature;\n\n const errorCount = diagnostics.filter((item) => item.severity === 'error').length;\n const warningCount = diagnostics.filter((item) => item.severity === 'warning').length;\n const infoCount = diagnostics.filter((item) => item.severity === 'info').length;\n this.emitOperationalEvent({\n eventType: 'diagnostics-emitted',\n timestamp: Date.now(),\n severity: errorCount ? 'error' : warningCount ? 'warning' : 'info',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n diagnostics,\n errorCount,\n warningCount,\n infoCount,\n },\n });\n\n const overrideConflictDiagnostics = diagnostics.filter(\n (item) => item.code === 'block-override-conflict',\n );\n const overrideSignature = overrideConflictDiagnostics\n .map((item) => item.path ?? item.message)\n .join('|');\n if (overrideConflictDiagnostics.length && overrideSignature !== this.lastOverrideConflictSignature) {\n this.lastOverrideConflictSignature = overrideSignature;\n this.emitOperationalEvent({\n eventType: 'override-conflict-detected',\n timestamp: Date.now(),\n severity: 'warning',\n journeyId: overrideConflictDiagnostics[0]?.journeyId,\n stepId: overrideConflictDiagnostics[0]?.stepId,\n blockId: overrideConflictDiagnostics[0]?.blockId,\n payload: {\n diagnostics: overrideConflictDiagnostics,\n },\n });\n }\n });\n }\n\n protected selectJourney(journeyId: string): void {\n if (this.isJourneySelectionBlocked(journeyId)) {\n return;\n }\n this.state.selectJourney(journeyId);\n }\n\n protected selectStep(stepId: string): void {\n if (this.isStepSelectionBlocked(stepId)) {\n return;\n }\n this.state.selectStep(stepId);\n }\n\n protected goToPreviousStep(): void {\n const journey = this.activeJourney();\n if (!journey || !this.hasPreviousStep()) {\n return;\n }\n const previous = journey.steps[this.currentStepIndex() - 1];\n if (previous) {\n this.state.selectStep(previous.stepId);\n }\n }\n\n protected goToNextStep(): void {\n const journey = this.activeJourney();\n if (!journey || !this.hasNextStep() || this.isForwardNavigationBlocked()) {\n return;\n }\n const next = journey.steps[this.currentStepIndex() + 1];\n if (next) {\n this.state.selectStep(next.stepId);\n }\n }\n\n protected handleBlockAction(action: { blockId: string; actionId: string }): void {\n if (action.actionId === 'next-step') {\n this.goToNextStep();\n return;\n }\n\n if (action.actionId === 'previous-step') {\n this.goToPreviousStep();\n }\n }\n\n protected updateRuntimeContext(nextContext: Record<string, unknown>): void {\n this.runtimeContextState.set(nextContext);\n }\n\n protected journeyErrorCount(journeyId: string): number {\n return this.countDiagnostics((item) => item.journeyId === journeyId && item.severity === 'error');\n }\n\n protected journeyWarningCount(journeyId: string): number {\n return this.countDiagnostics((item) => item.journeyId === journeyId && item.severity === 'warning');\n }\n\n protected stepErrorCount(stepId: string): number {\n return this.countDiagnostics(\n (item) => item.journeyId === this.activeJourney()?.journeyId && item.stepId === stepId && item.severity === 'error',\n );\n }\n\n protected stepWarningCount(stepId: string): number {\n return this.countDiagnostics(\n (item) => item.journeyId === this.activeJourney()?.journeyId && item.stepId === stepId && item.severity === 'warning',\n );\n }\n\n protected formatDiagnosticSeverity(item: EditorialRuntimeDiagnostic): string {\n if (item.severity === 'error') {\n return this.t('runtime.diagnostics.severity.error', 'Erro');\n }\n if (item.severity === 'warning') {\n return this.t('runtime.diagnostics.severity.warning', 'Aviso');\n }\n return this.t('runtime.diagnostics.severity.info', 'Info');\n }\n\n protected formatDiagnosticScope(item: EditorialRuntimeDiagnostic): string {\n const parts = [\n item.scopeKind === 'global'\n ? this.t('runtime.scope.global', 'Escopo: runtime global')\n : null,\n formatScopeLabel(this.t('runtime.scope.journey', 'Jornada'), item.journeyLabel, item.journeyId),\n formatScopeLabel(this.t('runtime.scope.step', 'Etapa'), item.stepLabel, item.stepId),\n formatScopeLabel(this.t('runtime.scope.block', 'Bloco'), item.blockLabel, item.blockId),\n item.path ? `${this.t('runtime.scope.path', 'Path')}: ${item.path}` : null,\n ].filter((value): value is string => Boolean(value));\n\n return parts.join(' | ');\n }\n\n protected isForwardNavigationBlocked(): boolean {\n return this.fallbackState().progressionBlocked;\n }\n\n protected isJourneySelectionBlocked(journeyId: string): boolean {\n const activeJourneyId = this.activeJourney()?.journeyId;\n if (journeyId === activeJourneyId) {\n return false;\n }\n return this.isForwardNavigationBlocked();\n }\n\n protected isStepSelectionBlocked(stepId: string): boolean {\n const activeStepId = this.activeStep()?.stepId;\n if (stepId === activeStepId) {\n return false;\n }\n if (this.stepperConfig()?.allowStepJump === false) {\n return true;\n }\n return this.isForwardNavigationBlocked();\n }\n\n protected navigationBlockingMessage(): string {\n if (this.activeGlobalDiagnostics().length) {\n return this.t(\n 'runtime.navigation.globalBlocked',\n 'A navegacao de avanço foi bloqueada porque o runtime possui erro global que precisa ser corrigido antes de continuar.',\n );\n }\n return this.t(\n 'runtime.navigation.stepBlocked',\n 'A navegacao de avanço foi bloqueada porque a etapa atual possui erro estrutural.',\n );\n }\n\n private countDiagnostics(\n predicate: (item: EditorialRuntimeDiagnostic) => boolean,\n ): number {\n return this.diagnosticItems().filter(predicate).length;\n }\n\n protected emitOperationalEvent(event: EditorialRuntimeOperationalEvent): void {\n if (!this.resolvedHostConfig().emitOperationalEvents) {\n return;\n }\n if (\n !this.resolvedHostConfig().forwardAdapterOperationalEvents\n && event.eventType.startsWith('data-collection-adapter-')\n ) {\n return;\n }\n this.operationalEvent.emit(event);\n }\n\n protected t(\n key: string,\n fallback: string,\n params?: PraxisTranslationParams,\n ): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, params, fallback);\n }\n}\n\nfunction buildSnapshotSignature(snapshot: EditorialRuntimeSnapshot): string {\n return stableSerializeForSignature(snapshot);\n}\n\nfunction stableSerializeForSignature(value: unknown): string {\n if (value == null) {\n return String(value);\n }\n if (\n typeof value === 'string'\n || typeof value === 'number'\n || typeof value === 'boolean'\n ) {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableSerializeForSignature(item)).join(',')}]`;\n }\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => `${JSON.stringify(key)}:${stableSerializeForSignature(entryValue)}`);\n return `{${entries.join(',')}}`;\n }\n return JSON.stringify(String(value));\n}\n\nfunction dedupeDiagnostics(\n items: ReadonlyArray<EditorialRuntimeDiagnostic>,\n): EditorialRuntimeDiagnostic[] {\n const seen = new Set<string>();\n const deduped: EditorialRuntimeDiagnostic[] = [];\n\n for (const item of items) {\n const key = `${item.severity}:${item.code}:${item.journeyId ?? ''}:${item.stepId ?? ''}:${item.blockId ?? ''}:${item.path ?? item.message}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(item);\n }\n\n return deduped;\n}\n\nfunction sortDiagnostics(\n items: ReadonlyArray<EditorialRuntimeDiagnostic>,\n): EditorialRuntimeDiagnostic[] {\n return [...items].sort((left, right) => {\n const severityScore = getSeverityScore(left.severity) - getSeverityScore(right.severity);\n if (severityScore !== 0) {\n return severityScore;\n }\n\n const scopeScore = getScopeScore(left.scopeKind) - getScopeScore(right.scopeKind);\n if (scopeScore !== 0) {\n return scopeScore;\n }\n\n return `${left.journeyLabel ?? left.journeyId ?? ''}${left.stepLabel ?? left.stepId ?? ''}${left.blockLabel ?? left.blockId ?? ''}${left.path ?? ''}`\n .localeCompare(`${right.journeyLabel ?? right.journeyId ?? ''}${right.stepLabel ?? right.stepId ?? ''}${right.blockLabel ?? right.blockId ?? ''}${right.path ?? ''}`);\n });\n}\n\nfunction getSeverityScore(\n severity: EditorialRuntimeDiagnostic['severity'],\n): number {\n if (severity === 'error') {\n return 0;\n }\n if (severity === 'warning') {\n return 1;\n }\n return 2;\n}\n\nfunction getScopeScore(\n scopeKind: EditorialRuntimeDiagnostic['scopeKind'],\n): number {\n if (scopeKind === 'global') {\n return 0;\n }\n if (scopeKind === 'journey') {\n return 1;\n }\n if (scopeKind === 'step') {\n return 2;\n }\n return 3;\n}\n\nfunction isDiagnosticInActiveStep(\n item: EditorialRuntimeDiagnostic,\n journeyId: string | undefined,\n stepId: string | undefined,\n): boolean {\n if (!journeyId || !stepId) {\n return false;\n }\n return item.journeyId === journeyId && item.stepId === stepId;\n}\n\nfunction formatScopeLabel(\n labelName: string,\n label: string | undefined,\n id: string | undefined,\n): string | null {\n if (label && id && label !== id) {\n return `${labelName}: ${label} (${id})`;\n }\n if (label) {\n return `${labelName}: ${label}`;\n }\n if (id) {\n return `${labelName}: ${id}`;\n }\n return null;\n}\n","import {\n Type,\n reflectComponentType,\n} from '@angular/core';\nimport type { FormConfig } from '@praxisui/core';\nimport type {\n EditorialDataBlockAdapter,\n EditorialDataBlockContext,\n} from '../editorial-data-block-adapter';\nimport { provideEditorialDataBlockAdapter } from '../editorial-data-block-adapter-registry';\n\nconst REQUIRED_DYNAMIC_FORM_INPUTS = ['config', 'formId', 'editorialContext'] as const;\n\nexport interface EditorialDynamicFormAdapterOptions {\n component: Type<DynamicFormCompatibleComponent>;\n}\n\nexport interface DynamicFormCompatibleComponent {\n config: FormConfig;\n formId?: string;\n editorialContext?: Record<string, unknown> | null;\n}\n\ntype DynamicFormAdapterInputBindings = {\n config: FormConfig | null;\n formId?: string;\n editorialContext?: Record<string, unknown> | null;\n};\n\nexport function createEditorialDynamicFormAdapter(\n options: EditorialDynamicFormAdapterOptions,\n): EditorialDataBlockAdapter {\n return {\n adapterId: 'dynamic-form',\n displayName: 'Praxis Dynamic Form',\n\n supports(_context: EditorialDataBlockContext): boolean {\n return true;\n },\n\n resolveComponent(): Type<unknown> {\n return options.component;\n },\n\n buildInputs(context: EditorialDataBlockContext): Record<string, unknown> {\n return {\n config: context.resolvedFormConfig,\n formId: context.block.formBlockId,\n editorialContext: context.runtimeContext,\n } satisfies DynamicFormAdapterInputBindings;\n },\n\n validateComponent(component: Type<unknown>) {\n const mirror = reflectComponentType(component);\n if (!mirror) {\n return {\n ok: false as const,\n reason:\n 'O componente informado nao parece ser um componente Angular valido para o adaptador dynamic-form.',\n };\n }\n\n const availableInputs = new Set(mirror.inputs.map((input) => input.propName));\n const missingInputs = REQUIRED_DYNAMIC_FORM_INPUTS.filter(\n (inputName) => !availableInputs.has(inputName),\n );\n\n if (missingInputs.length) {\n return {\n ok: false as const,\n reason: `O componente informado nao segue a convencao do adapter dynamic-form. Inputs ausentes: ${missingInputs.join(', ')}.`,\n };\n }\n\n return { ok: true as const };\n },\n };\n}\n\nexport function provideEditorialDynamicFormAdapter(\n options: EditorialDynamicFormAdapterOptions,\n){\n return provideEditorialDataBlockAdapter(\n createEditorialDynamicFormAdapter(options),\n );\n}\n","export const PRAXIS_EDITORIAL_FORMS_EN_US = {\n 'praxis.editorialForms.runtime.diagnostics.title': 'Runtime diagnostics',\n 'praxis.editorialForms.runtime.diagnostics.severitySummary': 'Severity summary',\n 'praxis.editorialForms.runtime.diagnostics.globalErrors': 'Global runtime errors',\n 'praxis.editorialForms.runtime.diagnostics.details': 'View details ({count})',\n 'praxis.editorialForms.runtime.journeys.ariaLabel': 'Editorial journeys',\n 'praxis.editorialForms.runtime.journeys.errors': 'Journey has errors',\n 'praxis.editorialForms.runtime.journeys.warnings': 'Journey has warnings',\n 'praxis.editorialForms.runtime.step.counter': 'Step {current} of {total}',\n 'praxis.editorialForms.runtime.step.statusTitle': 'Current step status',\n 'praxis.editorialForms.runtime.step.globalErrorTitle': 'Global runtime error',\n 'praxis.editorialForms.runtime.actions.previous': 'Previous step',\n 'praxis.editorialForms.runtime.actions.next': 'Next step',\n 'praxis.editorialForms.runtime.actions.nextBlocked': 'Fix the errors to continue',\n 'praxis.editorialForms.runtime.empty.noJourneyTitle': 'Editorial runtime without journey',\n 'praxis.editorialForms.runtime.empty.noJourneyDescription': 'No editorial journey was resolved for the current state.',\n 'praxis.editorialForms.runtime.empty.noSolutionTitle': 'Empty editorial runtime',\n 'praxis.editorialForms.runtime.empty.noSolutionDescription': 'Provide an editorial solution or instance to materialize the journey.',\n 'praxis.editorialForms.runtime.fallback.blocked': 'Runtime blocked',\n 'praxis.editorialForms.runtime.fallback.degraded': 'Runtime degraded',\n 'praxis.editorialForms.runtime.fallback.warning': 'Runtime warning',\n 'praxis.editorialForms.runtime.fallback.healthy': 'Runtime healthy',\n 'praxis.editorialForms.runtime.navigation.globalBlocked': 'Forward navigation was blocked because the runtime has a global error that must be fixed before continuing.',\n 'praxis.editorialForms.runtime.navigation.stepBlocked': 'Forward navigation was blocked because the current step has a structural error.',\n 'praxis.editorialForms.runtime.diagnostics.severity.error': 'Error',\n 'praxis.editorialForms.runtime.diagnostics.severity.warning': 'Warning',\n 'praxis.editorialForms.runtime.diagnostics.severity.info': 'Info',\n 'praxis.editorialForms.runtime.diagnostics.errorsCount': 'Errors: {count}',\n 'praxis.editorialForms.runtime.diagnostics.warningsCount': 'Warnings: {count}',\n 'praxis.editorialForms.runtime.diagnostics.infoCount': 'Info: {count}',\n 'praxis.editorialForms.runtime.diagnostics.message.blocked': 'Blocking inconsistencies prevent the editorial flow from progressing safely.',\n 'praxis.editorialForms.runtime.diagnostics.message.degraded': 'The runtime is operating in a degraded mode and requires operational attention.',\n 'praxis.editorialForms.runtime.diagnostics.message.error': 'There are inconsistencies that may compromise the editorial experience.',\n 'praxis.editorialForms.runtime.diagnostics.message.warning': 'There are operational warnings to review for this editorial instance.',\n 'praxis.editorialForms.runtime.scope.global': 'Scope: global runtime',\n 'praxis.editorialForms.runtime.scope.journey': 'Journey',\n 'praxis.editorialForms.runtime.scope.step': 'Step',\n 'praxis.editorialForms.runtime.scope.block': 'Block',\n 'praxis.editorialForms.runtime.scope.path': 'Path',\n 'praxis.editorialForms.stepper.ariaLabel': 'Journey steps',\n 'praxis.editorialForms.stepper.state.completed': 'completed',\n 'praxis.editorialForms.stepper.state.active': 'current step',\n 'praxis.editorialForms.stepper.state.blocked': 'blocked',\n 'praxis.editorialForms.stepper.state.pending': 'pending',\n 'praxis.editorialForms.selection.state.selected': 'selected',\n 'praxis.editorialForms.selection.state.unselected': 'not selected',\n 'praxis.editorialForms.selection.group.label': 'Selection group',\n 'praxis.editorialForms.review.empty': '-',\n 'praxis.editorialForms.review.boolean.true': 'Yes',\n 'praxis.editorialForms.review.boolean.false': 'No',\n 'praxis.editorialForms.dataCollection.loadingTitle': 'Preparing data collection',\n 'praxis.editorialForms.dataCollection.unavailableTitle': 'Data collection unavailable',\n 'praxis.editorialForms.dataCollection.error.incompatibleTitle': 'Incompatible adapter',\n 'praxis.editorialForms.dataCollection.error.missingConfigTitle': 'Missing data collection configuration',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterTitle': 'Incomplete adapter',\n 'praxis.editorialForms.dataCollection.error.loadFailureTitle': 'Failed to load engine',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentTitle': 'Component not resolved',\n 'praxis.editorialForms.dataCollection.error.invalidComponentTitle': 'Incompatible component',\n 'praxis.editorialForms.dataCollection.fallback.invalid': 'Block \"{formBlockId}\" was materialized with an invalid state. Review formBlockId, formConfigRef and inherited editorial configuration.',\n 'praxis.editorialForms.dataCollection.fallback.missingConfig': 'Block \"{formBlockId}\" did not find data collection configuration. Lookup key checked: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.incompatible': 'Block \"{formBlockId}\" found registered adapters ({adapterIds}), but none declared compatibility for this data collection.',\n 'praxis.editorialForms.dataCollection.fallback.missingAdapter': 'Block \"{formBlockId}\" did not find data collection configuration nor a registered adapter. Check the host provider and editorial FormConfig materialization.',\n 'praxis.editorialForms.dataCollection.fallback.adapterWithoutConfig': 'Block \"{formBlockId}\" found an adapter, but did not find FormConfig at {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.unresolvedEngine': 'Configuration exists for \"{formBlockId}\" ({source}), but no data collection adapter was registered to materialize the engine.',\n 'praxis.editorialForms.dataCollection.error.incompatibleMessage': 'No registered adapter accepted block \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.availableAdapters': 'Available adapters: {adapterIds}.',\n 'praxis.editorialForms.dataCollection.error.missingConfigMessage': 'Block \"{formBlockId}\" has no resolved FormConfig for the data collection engine.',\n 'praxis.editorialForms.dataCollection.error.lookupSource': 'Lookup source: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.error.adapterRegistrationHint': 'Register a compatible component or implement resolveComponent().',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterMessage': 'Adapter \"{adapterName}\" did not expose a data collection component.',\n 'praxis.editorialForms.dataCollection.loadingMessage': 'Loading the data collection engine for \"{formBlockId}\"...',\n 'praxis.editorialForms.dataCollection.error.loadFailureMessage': 'Adapter \"{adapterName}\" failed while preparing block \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.loadFailureDetails': 'Validate the optional host provider and the availability of a compatible component.',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentMessage': 'Adapter \"{adapterName}\" did not return a component for block \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentDetails': 'Implement component or resolveComponent() with a compatible Angular component.',\n 'praxis.editorialForms.dataCollection.error.invalidComponentMessage': 'Adapter \"{adapterName}\" returned an incompatible component for \"{formBlockId}\".',\n} as const;\n","export const PRAXIS_EDITORIAL_FORMS_PT_BR = {\n 'praxis.editorialForms.runtime.diagnostics.title': 'Diagnosticos do runtime',\n 'praxis.editorialForms.runtime.diagnostics.severitySummary': 'Resumo de severidade',\n 'praxis.editorialForms.runtime.diagnostics.globalErrors': 'Erros globais do runtime',\n 'praxis.editorialForms.runtime.diagnostics.details': 'Ver detalhes ({count})',\n 'praxis.editorialForms.runtime.journeys.ariaLabel': 'Jornadas editoriais',\n 'praxis.editorialForms.runtime.journeys.errors': 'Jornada com erros',\n 'praxis.editorialForms.runtime.journeys.warnings': 'Jornada com avisos',\n 'praxis.editorialForms.runtime.step.counter': 'Etapa {current} de {total}',\n 'praxis.editorialForms.runtime.step.statusTitle': 'Situacao desta etapa',\n 'praxis.editorialForms.runtime.step.globalErrorTitle': 'Erro global do runtime',\n 'praxis.editorialForms.runtime.actions.previous': 'Etapa anterior',\n 'praxis.editorialForms.runtime.actions.next': 'Proxima etapa',\n 'praxis.editorialForms.runtime.actions.nextBlocked': 'Corrija os erros para avancar',\n 'praxis.editorialForms.runtime.empty.noJourneyTitle': 'Editorial runtime sem jornada',\n 'praxis.editorialForms.runtime.empty.noJourneyDescription': 'Nenhuma jornada editorial foi resolvida para o estado atual.',\n 'praxis.editorialForms.runtime.empty.noSolutionTitle': 'Editorial runtime vazio',\n 'praxis.editorialForms.runtime.empty.noSolutionDescription': 'Forneca uma solution ou instance editorial para materializar a jornada.',\n 'praxis.editorialForms.runtime.fallback.blocked': 'Runtime bloqueado',\n 'praxis.editorialForms.runtime.fallback.degraded': 'Runtime degradado',\n 'praxis.editorialForms.runtime.fallback.warning': 'Runtime com aviso',\n 'praxis.editorialForms.runtime.fallback.healthy': 'Runtime saudavel',\n 'praxis.editorialForms.runtime.navigation.globalBlocked': 'A navegacao de avanço foi bloqueada porque o runtime possui erro global que precisa ser corrigido antes de continuar.',\n 'praxis.editorialForms.runtime.navigation.stepBlocked': 'A navegacao de avanço foi bloqueada porque a etapa atual possui erro estrutural.',\n 'praxis.editorialForms.runtime.diagnostics.severity.error': 'Erro',\n 'praxis.editorialForms.runtime.diagnostics.severity.warning': 'Aviso',\n 'praxis.editorialForms.runtime.diagnostics.severity.info': 'Info',\n 'praxis.editorialForms.runtime.diagnostics.errorsCount': 'Erros: {count}',\n 'praxis.editorialForms.runtime.diagnostics.warningsCount': 'Avisos: {count}',\n 'praxis.editorialForms.runtime.diagnostics.infoCount': 'Infos: {count}',\n 'praxis.editorialForms.runtime.diagnostics.message.blocked': 'Existem inconsistencias bloqueadoras que impedem a progressao segura do fluxo editorial.',\n 'praxis.editorialForms.runtime.diagnostics.message.degraded': 'O runtime esta operando de forma degradada e requer atencao operacional.',\n 'praxis.editorialForms.runtime.diagnostics.message.error': 'Existem inconsistencias que podem comprometer a experiencia editorial.',\n 'praxis.editorialForms.runtime.diagnostics.message.warning': 'Existem avisos operacionais para revisar nesta instancia editorial.',\n 'praxis.editorialForms.runtime.scope.global': 'Escopo: runtime global',\n 'praxis.editorialForms.runtime.scope.journey': 'Jornada',\n 'praxis.editorialForms.runtime.scope.step': 'Etapa',\n 'praxis.editorialForms.runtime.scope.block': 'Bloco',\n 'praxis.editorialForms.runtime.scope.path': 'Path',\n 'praxis.editorialForms.stepper.ariaLabel': 'Etapas da jornada',\n 'praxis.editorialForms.stepper.state.completed': 'concluida',\n 'praxis.editorialForms.stepper.state.active': 'etapa atual',\n 'praxis.editorialForms.stepper.state.blocked': 'bloqueada',\n 'praxis.editorialForms.stepper.state.pending': 'pendente',\n 'praxis.editorialForms.selection.state.selected': 'selecionado',\n 'praxis.editorialForms.selection.state.unselected': 'nao selecionado',\n 'praxis.editorialForms.selection.group.label': 'Grupo de selecao',\n 'praxis.editorialForms.review.empty': '-',\n 'praxis.editorialForms.review.boolean.true': 'Sim',\n 'praxis.editorialForms.review.boolean.false': 'Nao',\n 'praxis.editorialForms.dataCollection.loadingTitle': 'Preparando coleta',\n 'praxis.editorialForms.dataCollection.unavailableTitle': 'Coleta nao disponivel',\n 'praxis.editorialForms.dataCollection.error.incompatibleTitle': 'Adaptador incompatível',\n 'praxis.editorialForms.dataCollection.error.missingConfigTitle': 'Configuracao de coleta ausente',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterTitle': 'Adaptador incompleto',\n 'praxis.editorialForms.dataCollection.error.loadFailureTitle': 'Falha ao carregar a engine',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentTitle': 'Componente nao resolvido',\n 'praxis.editorialForms.dataCollection.error.invalidComponentTitle': 'Componente incompatível',\n 'praxis.editorialForms.dataCollection.fallback.invalid': 'O bloco \"{formBlockId}\" foi materializado com estado invalido. Revise formBlockId, formConfigRef e a configuracao editorial herdada.',\n 'praxis.editorialForms.dataCollection.fallback.missingConfig': 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta. Chave consultada: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.incompatible': 'O bloco \"{formBlockId}\" encontrou adapters registrados ({adapterIds}), mas nenhum declarou compatibilidade para esta coleta.',\n 'praxis.editorialForms.dataCollection.fallback.missingAdapter': 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta nem adaptador registrado. Verifique o provider do host e a materializacao do FormConfig editorial.',\n 'praxis.editorialForms.dataCollection.fallback.adapterWithoutConfig': 'O bloco \"{formBlockId}\" encontrou um adaptador, mas nao encontrou FormConfig em {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.unresolvedEngine': 'Existe configuracao para \"{formBlockId}\" ({source}), mas nenhum adaptador de coleta foi registrado para materializar a engine.',\n 'praxis.editorialForms.dataCollection.error.incompatibleMessage': 'Nenhum adaptador registrado aceitou o bloco \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.availableAdapters': 'Adapters disponiveis: {adapterIds}.',\n 'praxis.editorialForms.dataCollection.error.missingConfigMessage': 'O bloco \"{formBlockId}\" nao possui FormConfig resolvido para a engine de coleta.',\n 'praxis.editorialForms.dataCollection.error.lookupSource': 'Origem consultada: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.error.adapterRegistrationHint': 'Registre um componente compatível ou implemente resolveComponent().',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterMessage': 'O adaptador \"{adapterName}\" nao expôs um componente de coleta.',\n 'praxis.editorialForms.dataCollection.loadingMessage': 'Carregando a engine de coleta para \"{formBlockId}\"...',\n 'praxis.editorialForms.dataCollection.error.loadFailureMessage': 'O adaptador \"{adapterName}\" falhou ao preparar a coleta do bloco \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.loadFailureDetails': 'Valide o provider opcional do host e a disponibilidade do componente compatível.',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentMessage': 'O adaptador \"{adapterName}\" nao retornou um componente para o bloco \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentDetails': 'Implemente component ou resolveComponent() com um componente Angular compatível.',\n 'praxis.editorialForms.dataCollection.error.invalidComponentMessage': 'O adaptador \"{adapterName}\" retornou um componente incompatível para \"{formBlockId}\".',\n} as const;\n","import {\n providePraxisI18n,\n type PraxisI18nConfig,\n type PraxisI18nDictionary,\n} from '@praxisui/core';\nimport { PRAXIS_EDITORIAL_FORMS_EN_US } from './editorial-forms.en';\nimport { PRAXIS_EDITORIAL_FORMS_PT_BR } from './editorial-forms.pt';\n\nexport interface PraxisEditorialFormsI18nOptions {\n locale?: string;\n fallbackLocale?: string;\n dictionaries?: Record<string, PraxisI18nDictionary>;\n}\n\nexport function createPraxisEditorialFormsI18nConfig(\n options: PraxisEditorialFormsI18nOptions = {},\n): Partial<PraxisI18nConfig> {\n const dictionaries: Record<string, PraxisI18nDictionary> = {\n 'pt-BR': {\n ...PRAXIS_EDITORIAL_FORMS_PT_BR,\n ...(options.dictionaries?.['pt-BR'] ?? {}),\n },\n 'en-US': {\n ...PRAXIS_EDITORIAL_FORMS_EN_US,\n ...(options.dictionaries?.['en-US'] ?? {}),\n },\n };\n\n for (const [locale, dictionary] of Object.entries(options.dictionaries ?? {})) {\n if (locale === 'pt-BR' || locale === 'en-US') {\n continue;\n }\n dictionaries[locale] = {\n ...(dictionaries[locale] ?? {}),\n ...dictionary,\n };\n }\n\n return {\n locale: options.locale,\n fallbackLocale: options.fallbackLocale ?? 'pt-BR',\n dictionaries,\n };\n}\n\nexport function providePraxisEditorialFormsI18n(\n options: PraxisEditorialFormsI18nOptions = {},\n) {\n return providePraxisI18n(\n createPraxisEditorialFormsI18nConfig(options) as PraxisI18nConfig,\n );\n}\n","import { Component, Input, Type } from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n FormConfig,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport type { EditorialRuntimeFallbackMode } from '../runtime/editorial-runtime-fallback';\nimport type { EditorialRuntimeInput } from '../editorial-runtime.contract';\n\n@Component({\n standalone: true,\n selector: 'praxis-editorial-harness-data-engine',\n template: '<p>Harness data engine</p>',\n})\nexport class HarnessDataEngineComponent {\n @Input() config!: FormConfig;\n @Input() formId?: string;\n @Input() editorialContext: Record<string, unknown> | null = null;\n @Input() block: EditorialDataCollectionBlock | null = null;\n @Input() runtimeContext: Record<string, unknown> | null = null;\n @Input() solution: EditorialSolutionDefinition | null = null;\n @Input() instance: EditorialTemplateInstance | null = null;\n @Input() resolvedFormConfig: FormConfig | null = null;\n}\n\nexport interface EditorialRuntimeFixture {\n id: string;\n title: string;\n input: EditorialRuntimeInput;\n expectedFallbackMode: EditorialRuntimeFallbackMode;\n expectsAdapter: boolean;\n}\n\nexport interface EditorialRuntimeHarnessCatalog {\n healthy: EditorialRuntimeFixture;\n warning: EditorialRuntimeFixture;\n globalError: EditorialRuntimeFixture;\n dataCollectionMissingAdapter: EditorialRuntimeFixture;\n dataCollectionWithAdapter: EditorialRuntimeFixture;\n}\n\nexport function createEditorialRuntimeHarnessCatalog(): EditorialRuntimeHarnessCatalog {\n const warningSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-warning',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Warning solution',\n themePresets: [\n {\n themeId: 'default-theme',\n label: 'Default',\n shellVariant: 'page',\n },\n ],\n journeys: [\n {\n journeyId: 'journey-warning',\n label: 'Journey Warning',\n steps: [\n {\n stepId: 'step-warning',\n label: 'Step Warning',\n blocks: [\n {\n blockId: 'copy-warning',\n kind: 'richText',\n content: 'Warning content',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const warningInstance: EditorialTemplateInstance = {\n instanceId: 'instance-warning',\n template: {\n templateId: 'solution-warning',\n version: '1.0.0',\n title: 'Warning solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n overrides: {\n themePresetId: 'missing-theme',\n },\n };\n\n const healthyInstance: EditorialTemplateInstance = {\n instanceId: 'instance-healthy',\n template: {\n templateId: 'solution-warning',\n version: '1.0.0',\n title: 'Warning solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n };\n\n const globalErrorSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-global-error',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Global error solution',\n contextContract: [\n {\n key: 'accountContext.user.name',\n required: true,\n },\n ],\n journeys: [\n {\n journeyId: 'journey-global',\n label: 'Journey Global',\n steps: [\n {\n stepId: 'step-global',\n label: 'Step Global',\n blocks: [\n {\n blockId: 'copy-global',\n kind: 'richText',\n content: 'Global error content',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const globalErrorInstance: EditorialTemplateInstance = {\n instanceId: 'instance-global-error',\n template: {\n templateId: 'solution-global-error',\n version: '1.0.0',\n title: 'Global error solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n };\n\n const dataCollectionSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-data',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Data collection solution',\n journeys: [\n {\n journeyId: 'journey-data',\n label: 'Journey Data',\n steps: [\n {\n stepId: 'step-data',\n label: 'Step Data',\n blocks: [\n {\n blockId: 'collect-data',\n kind: 'dataCollection',\n formBlockId: 'registration-form',\n formConfigRef: 'registration-form',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const dataCollectionInstance: EditorialTemplateInstance = {\n instanceId: 'instance-data',\n template: {\n templateId: 'solution-data',\n version: '1.0.0',\n title: 'Data collection solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n overrides: {\n runtimeFormConfigs: {\n 'registration-form': {\n sections: [],\n },\n },\n },\n };\n\n return {\n healthy: {\n id: 'healthy',\n title: 'Fixture healthy',\n input: {\n solution: warningSolution,\n instance: healthyInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'normal',\n expectsAdapter: false,\n },\n warning: {\n id: 'warning',\n title: 'Fixture warning',\n input: {\n solution: warningSolution,\n instance: warningInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'warning',\n expectsAdapter: false,\n },\n globalError: {\n id: 'global-error',\n title: 'Fixture global error',\n input: {\n solution: globalErrorSolution,\n instance: globalErrorInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'blocked',\n expectsAdapter: false,\n },\n dataCollectionMissingAdapter: {\n id: 'data-collection-missing-adapter',\n title: 'Fixture dataCollection missing adapter',\n input: {\n solution: dataCollectionSolution,\n instance: dataCollectionInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'degraded',\n expectsAdapter: true,\n },\n dataCollectionWithAdapter: {\n id: 'data-collection-with-adapter',\n title: 'Fixture dataCollection with adapter',\n input: {\n solution: dataCollectionSolution,\n instance: dataCollectionInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'degraded',\n expectsAdapter: true,\n },\n };\n}\n\nexport function getHarnessDataEngineComponent(): Type<unknown> {\n return HarnessDataEngineComponent;\n}\n","/*\n * Public API Surface of praxis-editorial-forms\n */\n\nexport * from './lib/praxis-editorial-forms';\nexport * from './lib/editorial-form-runtime.component';\nexport * from './lib/editorial-runtime.contract';\nexport * from './lib/adapters/editorial-data-block-adapter';\nexport * from './lib/adapters/editorial-data-block-adapter-registry';\nexport * from './lib/adapters/editorial-data-collection-block-outlet.component';\nexport * from './lib/adapters/dynamic-form/editorial-dynamic-form.adapter';\nexport * from './lib/runtime/editorial-runtime-diagnostics.model';\nexport * from './lib/runtime/editorial-runtime-events.model';\nexport * from './lib/runtime/editorial-runtime-fallback';\nexport * from './lib/runtime/editorial-runtime-snapshot.model';\nexport * from './lib/runtime/editorial-preset-resolver';\nexport * from './lib/runtime/editorial-runtime-presentation.helpers';\nexport * from './lib/runtime/editorial-runtime-state';\nexport * from './lib/runtime/editorial-runtime-theme.helpers';\nexport * from './lib/runtime/editorial-runtime.helpers';\nexport * from './lib/i18n/editorial-forms.en';\nexport * from './lib/i18n/editorial-forms.i18n';\nexport * from './lib/i18n/editorial-forms.pt';\nexport * from './lib/renderers/editorial-block-renderer.component';\nexport * from './lib/renderers/editorial-intro-hero-block.component';\nexport * from './lib/renderers/editorial-review-sections-block.component';\nexport * from './lib/renderers/editorial-selection-cards-block.component';\nexport * from './lib/renderers/editorial-stepper.component';\nexport * from './lib/renderers/editorial-success-panel-block.component';\nexport * from './lib/testing/editorial-runtime.fixtures';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"praxisui-editorial-forms.mjs","sources":["../../../projects/praxis-editorial-forms/src/lib/praxis-editorial-forms.ts","../../../projects/praxis-editorial-forms/src/lib/editorial-runtime.contract.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/editorial-data-block-adapter.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/editorial-data-block-adapter-registry.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-data-collection-block-outlet.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-intro-hero-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-review-sections-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-selection-cards-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-success-panel-block.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-block-renderer.component.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-presentation.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-stepper.component.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-preset-resolver.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-state.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-fallback.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-theme.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/editorial-form-runtime.component.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/dynamic-form/editorial-dynamic-form.adapter.ts","../../../projects/praxis-editorial-forms/src/lib/i18n/editorial-forms.en.ts","../../../projects/praxis-editorial-forms/src/lib/i18n/editorial-forms.pt.ts","../../../projects/praxis-editorial-forms/src/lib/i18n/editorial-forms.i18n.ts","../../../projects/praxis-editorial-forms/src/lib/testing/editorial-runtime.fixtures.ts","../../../projects/praxis-editorial-forms/src/public-api.ts","../../../projects/praxis-editorial-forms/src/praxisui-editorial-forms.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Root provider entrypoint for the editorial runtime package.\n *\n * Intentionally minimal in v1:\n * - no global singleton graph yet\n * - no dependency on @praxisui/dynamic-form\n * - safe to consume from apps without pulling generic form authoring\n */\nexport function providePraxisEditorialForms(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","import type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\n\nexport interface EditorialRuntimeInput {\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n runtimeContext?: Record<string, unknown> | null;\n}\n\nexport interface EditorialRuntimeHostConfig {\n emitOperationalEvents?: boolean;\n forwardAdapterOperationalEvents?: boolean;\n}\n\nexport const DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG: Required<EditorialRuntimeHostConfig> = {\n emitOperationalEvents: true,\n forwardAdapterOperationalEvents: true,\n};\n","import type {\n EditorialBlock,\n EditorialBlockVisibilityRule,\n} from '@praxisui/core';\n\nexport function resolveActiveJourney<TJourney extends { journeyId: string }>(\n journeys: ReadonlyArray<TJourney>,\n journeyId: string | null | undefined,\n): TJourney | null {\n if (!journeys.length) {\n return null;\n }\n return journeys.find((journey) => journey.journeyId === journeyId) ?? journeys[0];\n}\n\nexport function resolveActiveStep<TStep extends { stepId: string }>(\n journey: { steps: ReadonlyArray<TStep> } | null,\n stepId: string | null | undefined,\n): TStep | null {\n if (!journey?.steps.length) {\n return null;\n }\n return journey.steps.find((step) => step.stepId === stepId) ?? journey.steps[0];\n}\n\nexport function getVisibleBlocks(\n blocks: ReadonlyArray<EditorialBlock> | null | undefined,\n runtimeContext: Record<string, unknown> | null | undefined,\n): EditorialBlock[] {\n return (blocks ?? []).filter((block) => isBlockVisible(block, runtimeContext));\n}\n\nexport function isBlockVisible(\n block: EditorialBlock,\n runtimeContext: Record<string, unknown> | null | undefined,\n): boolean {\n if (!block.visibility?.length) {\n return true;\n }\n return block.visibility.every((rule) => matchesVisibilityRule(rule, runtimeContext));\n}\n\nexport function matchesVisibilityRule(\n rule: EditorialBlockVisibilityRule,\n runtimeContext: Record<string, unknown> | null | undefined,\n): boolean {\n if (!rule.when) {\n return true;\n }\n const currentValue = getValueAtPath(runtimeContext ?? {}, rule.when);\n if (rule.exists === true) {\n return currentValue != null;\n }\n if (rule.exists === false) {\n return currentValue == null;\n }\n if (rule.equals !== undefined) {\n return currentValue === rule.equals;\n }\n if (rule.notEquals !== undefined) {\n return currentValue !== rule.notEquals;\n }\n return true;\n}\n\nexport function getValueAtPath(source: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((current, segment) => {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n return (current as Record<string, unknown>)[segment];\n }, source);\n}\n","import { InjectionToken, Type } from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n FormConfig,\n} from '@praxisui/core';\n\nexport type EditorialDataBlockComponentInputs = Record<string, unknown>;\n\nexport interface EditorialDataBlockValueChangeEvent {\n formData: Record<string, unknown>;\n mode?: 'merge' | 'replace';\n removedKeys?: string[];\n}\n\nexport interface EditorialDataBlockContext {\n block: EditorialDataCollectionBlock;\n runtimeContext: Record<string, unknown> | null;\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n resolvedFormConfig: FormConfig | null;\n}\n\nexport interface EditorialDataBlockAdapter {\n readonly adapterId: string;\n readonly displayName?: string;\n readonly component?: Type<unknown>;\n resolveComponent?(\n context: EditorialDataBlockContext,\n ): Promise<Type<unknown>> | Type<unknown>;\n supports?(context: EditorialDataBlockContext): boolean;\n buildInputs?(context: EditorialDataBlockContext): EditorialDataBlockComponentInputs;\n validateComponent?(\n component: Type<unknown>,\n context: EditorialDataBlockContext,\n ): { ok: true } | { ok: false; reason: string };\n}\n\nfunction getEditorialDataBlockAdapterToken(): InjectionToken<\n ReadonlyArray<EditorialDataBlockAdapter>\n> {\n const registryKey = '__PAX_EDITORIAL_DATA_BLOCK_ADAPTER_TOKEN__';\n const globalRegistry = globalThis as typeof globalThis & {\n [registryKey]?: InjectionToken<ReadonlyArray<EditorialDataBlockAdapter>>;\n };\n\n if (!globalRegistry[registryKey]) {\n globalRegistry[registryKey] = new InjectionToken<\n ReadonlyArray<EditorialDataBlockAdapter>\n >('EDITORIAL_DATA_BLOCK_ADAPTER');\n }\n\n return globalRegistry[registryKey];\n}\n\nexport const EDITORIAL_DATA_BLOCK_ADAPTER =\n getEditorialDataBlockAdapterToken();\n\nexport interface EditorialDataBlockResolution {\n source:\n | 'block.formConfig'\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs'\n | 'unresolved';\n formConfig: FormConfig | null;\n lookupKey?: string;\n ambiguous?: boolean;\n matchedSources?: Array<\n | 'block.formConfig'\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs'\n >;\n matchedKeys?: string[];\n}\n\nexport function resolveEditorialDataBlockFormConfigDetails(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): EditorialDataBlockResolution {\n if (block.formConfig) {\n return {\n source: 'block.formConfig',\n formConfig: block.formConfig,\n lookupKey: block.formBlockId,\n ambiguous: false,\n matchedSources: ['block.formConfig'],\n matchedKeys: [block.formBlockId],\n };\n }\n\n const runtimeConfigs = instance?.overrides?.runtimeFormConfigs;\n const compatibilityConfigs = instance?.compatibilityFormConfigs;\n const candidateKeys = [...new Set([block.formConfigRef, block.formBlockId].filter(\n (value): value is string => Boolean(value),\n ))];\n const matches: Array<{\n source:\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs';\n formConfig: FormConfig;\n lookupKey: string;\n }> = [];\n\n for (const key of candidateKeys) {\n const runtimeResolved = runtimeConfigs?.[key];\n if (runtimeResolved) {\n matches.push({\n source: 'instance.overrides.runtimeFormConfigs',\n formConfig: runtimeResolved,\n lookupKey: key,\n });\n }\n\n const compatibilityResolved = compatibilityConfigs?.[key];\n if (compatibilityResolved) {\n matches.push({\n source: 'instance.compatibilityFormConfigs',\n formConfig: compatibilityResolved,\n lookupKey: key,\n });\n }\n }\n\n if (matches.length) {\n const selected = matches[0];\n return {\n source: selected.source,\n formConfig: selected.formConfig,\n lookupKey: selected.lookupKey,\n ambiguous: matches.length > 1,\n matchedSources: matches.map((match) => match.source),\n matchedKeys: matches.map((match) => match.lookupKey),\n };\n }\n\n return {\n source: 'unresolved',\n formConfig: null,\n lookupKey: block.formConfigRef ?? block.formBlockId,\n ambiguous: false,\n matchedSources: [],\n matchedKeys: [],\n };\n}\n\nexport function resolveEditorialDataBlockFormConfig(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): FormConfig | null {\n return resolveEditorialDataBlockFormConfigDetails(block, instance).formConfig;\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport type {\n EditorialDataBlockAdapter,\n EditorialDataBlockContext,\n} from './editorial-data-block-adapter';\nimport { EDITORIAL_DATA_BLOCK_ADAPTER } from './editorial-data-block-adapter';\n\nexport type EditorialDataBlockAdapterResolutionStatus =\n | 'resolved'\n | 'missing'\n | 'incompatible';\n\nexport interface EditorialDataBlockAdapterResolution {\n status: EditorialDataBlockAdapterResolutionStatus;\n adapter: EditorialDataBlockAdapter | null;\n adapterIds: string[];\n registrySize: number;\n}\n\nexport class EditorialDataBlockAdapterRegistry {\n constructor(\n private readonly adapters: ReadonlyArray<EditorialDataBlockAdapter>,\n ) {}\n\n resolve(\n context: EditorialDataBlockContext,\n ): EditorialDataBlockAdapterResolution {\n return resolveEditorialDataBlockAdapter(this.adapters, context);\n }\n}\n\nexport function provideEditorialDataBlockAdapter(\n adapter: EditorialDataBlockAdapter,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: EDITORIAL_DATA_BLOCK_ADAPTER,\n useValue: adapter,\n multi: true,\n },\n ]);\n}\n\nexport function resolveEditorialDataBlockAdapter(\n adapters: ReadonlyArray<EditorialDataBlockAdapter>,\n context: EditorialDataBlockContext,\n): EditorialDataBlockAdapterResolution {\n if (!adapters.length) {\n return {\n status: 'missing',\n adapter: null,\n adapterIds: [],\n registrySize: 0,\n };\n }\n\n const resolved = adapters.find(\n (candidate) => candidate.supports?.(context) ?? true,\n ) ?? null;\n\n return {\n status: resolved ? 'resolved' : 'incompatible',\n adapter: resolved,\n adapterIds: adapters.map((item) => item.adapterId),\n registrySize: adapters.length,\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ComponentRef,\n Component,\n Type,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport { PraxisI18nService } from '@praxisui/core';\nimport type { EditorialResolvedDataCollectionBlock } from '../runtime/editorial-runtime-snapshot.model';\nimport {\n EDITORIAL_DATA_BLOCK_ADAPTER,\n EditorialDataBlockAdapter,\n EditorialDataBlockResolution,\n type EditorialDataBlockValueChangeEvent,\n resolveEditorialDataBlockFormConfig,\n resolveEditorialDataBlockFormConfigDetails,\n} from '../adapters/editorial-data-block-adapter';\nimport {\n EditorialDataBlockAdapterRegistry,\n} from '../adapters/editorial-data-block-adapter-registry';\nimport type { EditorialRuntimeOperationalEvent } from '../runtime/editorial-runtime-events.model';\n\ntype DataCollectionOutletState =\n | { kind: 'idle' }\n | { kind: 'loading'; message: string }\n | { kind: 'ready' }\n | { kind: 'error'; title: string; message: string; details?: string };\n\ntype DataCollectionLoadingState = Extract<\n DataCollectionOutletState,\n { kind: 'loading' }\n>;\ntype DataCollectionErrorState = Extract<\n DataCollectionOutletState,\n { kind: 'error' }\n>;\n\n@Component({\n selector: 'praxis-editorial-data-collection-block-outlet',\n standalone: true,\n imports: [CommonModule],\n template: `\n <section\n class=\"data-block\"\n [class.block-card]=\"effectiveSurface() === 'card'\"\n [class.block-plain]=\"effectiveSurface() === 'plain'\"\n [attr.data-surface]=\"effectiveSurface()\"\n >\n @if (showBlockHeader()) {\n <header class=\"block-header\">\n @if (showBlockTitle()) {\n <h3 class=\"block-title\">{{ block().title }}</h3>\n }\n\n @if (showBlockDescription()) {\n <p class=\"description\">{{ block().description }}</p>\n }\n </header>\n }\n\n <div class=\"block-body\">\n @if (adapterComponent(); as adapterComponent) {\n <ng-template #adapterHost></ng-template>\n } @else if (loadingState(); as loadingState) {\n <div class=\"feedback status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <strong>{{ t('dataCollection.loadingTitle', 'Preparando coleta') }}</strong>\n <p>{{ loadingState.message }}</p>\n </div>\n } @else if (errorState(); as errorState) {\n <div class=\"feedback error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n <strong>{{ errorState.title }}</strong>\n <p>{{ errorState.message }}</p>\n @if (errorState.details) {\n <p class=\"details\">{{ errorState.details }}</p>\n }\n </div>\n } @else {\n <div class=\"feedback status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <strong>{{ t('dataCollection.unavailableTitle', 'Coleta nao disponivel') }}</strong>\n <p>{{ fallbackMessage() }}</p>\n </div>\n }\n </div>\n </section>\n `,\n styles: [`\n :host {\n display: block;\n color: var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));\n }\n\n .data-block {\n display: grid;\n gap: 16px;\n font-family: var(--editorial-body-font-family, inherit);\n }\n\n .block-card {\n display: grid;\n gap: 16px;\n padding: clamp(18px, 2vw, 24px);\n border-radius: var(--editorial-card-radius, 18px);\n background: var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));\n border: var(--editorial-card-border-width, 1px) solid color-mix(\n in srgb,\n var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 65%,\n transparent\n );\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .block-plain {\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n gap: 0;\n }\n\n .block-header {\n display: grid;\n gap: 8px;\n }\n\n .block-plain .block-header {\n margin-bottom: 16px;\n padding-bottom: 4px;\n }\n\n .block-body {\n min-width: 0;\n }\n\n h3,\n p {\n margin: 0;\n }\n\n .block-title {\n font-family: var(--editorial-title-font-family, var(--editorial-body-font-family, inherit));\n font-size: var(--editorial-step-title-size, 1.15rem);\n line-height: 1.15;\n color: var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));\n }\n\n .description,\n .feedback {\n color: var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f));\n font-size: var(--editorial-body-size, 0.95rem);\n line-height: 1.55;\n }\n\n .feedback {\n display: grid;\n gap: 6px;\n padding: 12px 14px;\n border-radius: var(--editorial-card-radius, 14px);\n border: var(--editorial-card-border-width, 1px) solid color-mix(\n in srgb,\n var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%,\n transparent\n );\n background: color-mix(\n in srgb,\n var(--editorial-surface-primary, var(--md-sys-color-surface, #fff)) 94%,\n var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa)) 6%\n );\n }\n\n .feedback strong {\n color: var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));\n font-family: var(--editorial-title-font-family, var(--editorial-body-font-family, inherit));\n }\n\n .error {\n border-color: color-mix(in srgb, var(--md-sys-color-error, #b3261e) 50%, transparent);\n background: color-mix(in srgb, var(--md-sys-color-error-container, #f9dedc) 35%, var(--md-sys-color-surface, #fff));\n }\n\n .details {\n font-size: 0.9rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialDataCollectionBlockOutletComponent {\n private readonly i18n = inject(PraxisI18nService);\n private readonly adapters = inject(EDITORIAL_DATA_BLOCK_ADAPTER, {\n optional: true,\n }) ?? [];\n private readonly destroyRef = inject(DestroyRef);\n private readonly adapterRegistry = new EditorialDataBlockAdapterRegistry(this.adapters);\n private readonly adapterHost = viewChild('adapterHost', { read: ViewContainerRef });\n private loadVersion = 0;\n private lastAdapterEventSignature: string | null = null;\n private componentRef: ComponentRef<unknown> | null = null;\n private renderedComponentType: Type<unknown> | null = null;\n private componentOutputSubscriptions: Array<{ unsubscribe(): void }> = [];\n\n readonly block = input.required<\n EditorialDataCollectionBlock | EditorialResolvedDataCollectionBlock\n >();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContextChange = output<Record<string, unknown>>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n private readonly resolvedComponent = signal<Type<unknown> | null>(null);\n protected readonly state = signal<DataCollectionOutletState>({ kind: 'idle' });\n\n protected readonly adapterContext = computed(() => ({\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: resolveEditorialDataBlockFormConfig(\n this.block(),\n this.instance(),\n ),\n }));\n\n private readonly resolution = computed<EditorialDataBlockResolution>(() =>\n resolveEditorialDataBlockFormConfigDetails(this.block(), this.instance()),\n );\n\n protected readonly adapterResolution = computed(() =>\n this.adapterRegistry.resolve(this.adapterContext()),\n );\n protected readonly adapter = computed(() =>\n this.adapterResolution().adapter,\n );\n\n protected readonly adapterComponent = computed(\n () => this.resolvedComponent() ?? this.adapter()?.component ?? null,\n );\n protected readonly loadingState = computed<DataCollectionLoadingState | null>(() => {\n const state = this.state();\n return state.kind === 'loading' ? state : null;\n });\n protected readonly errorState = computed<DataCollectionErrorState | null>(() => {\n const state = this.state();\n return state.kind === 'error' ? state : null;\n });\n\n protected readonly adapterInputs = computed(() => {\n const adapter = this.adapter();\n if (!adapter) {\n return {};\n }\n\n return {\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: this.resolution().formConfig,\n ...(adapter.buildInputs?.(this.adapterContext()) ?? {}),\n };\n });\n\n protected readonly fallbackMessage = computed(() => {\n const resolution = this.resolution();\n const block = this.block();\n const adapterResolution = this.adapterResolution();\n const errorState = this.errorState();\n const snapshotState = isResolvedDataCollectionBlock(block)\n ? block.dataCollectionState\n : null;\n\n if (errorState) {\n return errorState.message;\n }\n\n if (snapshotState?.readiness === 'invalid') {\n return this.t(\n 'dataCollection.fallback.invalid',\n 'O bloco \"{formBlockId}\" foi materializado com estado invalido. Revise formBlockId, formConfigRef e a configuracao editorial herdada.',\n { formBlockId: block.formBlockId },\n );\n }\n\n if (snapshotState?.readiness === 'missingConfig') {\n return this.t(\n 'dataCollection.fallback.missingConfig',\n 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta. Chave consultada: {lookupKey}.',\n {\n formBlockId: block.formBlockId,\n lookupKey: snapshotState.resolvedFormConfigLookupKey ?? 'nenhuma chave candidata',\n },\n );\n }\n\n if (adapterResolution.status === 'incompatible') {\n return this.t(\n 'dataCollection.fallback.incompatible',\n 'O bloco \"{formBlockId}\" encontrou adapters registrados ({adapterIds}), mas nenhum declarou compatibilidade para esta coleta.',\n {\n formBlockId: block.formBlockId,\n adapterIds: adapterResolution.adapterIds.join(', ') || 'nenhum',\n },\n );\n }\n\n if (!resolution.formConfig && adapterResolution.status === 'missing') {\n return this.t(\n 'dataCollection.fallback.missingAdapter',\n 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta nem adaptador registrado. Verifique o provider do host e a materializacao do FormConfig editorial.',\n { formBlockId: block.formBlockId },\n );\n }\n\n if (!resolution.formConfig) {\n return this.t(\n 'dataCollection.fallback.adapterWithoutConfig',\n 'O bloco \"{formBlockId}\" encontrou um adaptador, mas nao encontrou FormConfig em {lookupKey}.',\n {\n formBlockId: block.formBlockId,\n lookupKey: resolution.lookupKey ?? 'nenhuma chave conhecida',\n },\n );\n }\n\n return this.t(\n 'dataCollection.fallback.unresolvedEngine',\n 'Existe configuracao para \"{formBlockId}\" ({source}), mas nenhum adaptador de coleta foi registrado para materializar a engine.',\n {\n formBlockId: block.formBlockId,\n source: resolution.source,\n },\n );\n });\n\n protected readonly effectiveSurface = computed<'card' | 'plain'>(() =>\n this.block().surface === 'plain' ? 'plain' : 'card',\n );\n protected readonly showBlockTitle = computed(() =>\n Boolean(this.block().title) && !this.shouldHideBlockTitle(),\n );\n protected readonly showBlockDescription = computed(() =>\n Boolean(this.block().description) && !this.shouldHideBlockDescription(),\n );\n protected readonly showBlockHeader = computed(() =>\n this.showBlockTitle() || this.showBlockDescription(),\n );\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.destroyRenderedComponent();\n });\n\n effect(() => {\n const context = this.adapterContext();\n const resolution = this.resolution();\n const adapterResolution = this.adapterResolution();\n const adapter = adapterResolution.adapter;\n const requestVersion = ++this.loadVersion;\n\n this.emitAdapterResolutionEvent(adapterResolution.status, adapter, undefined);\n\n if (!adapter) {\n this.resolvedComponent.set(null);\n this.state.set({ kind: 'idle' });\n if (adapterResolution.status === 'incompatible') {\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.incompatibleTitle', 'Adaptador incompatível'),\n message: this.t(\n 'dataCollection.error.incompatibleMessage',\n 'Nenhum adaptador registrado aceitou o bloco \"{formBlockId}\".',\n { formBlockId: context.block.formBlockId },\n ),\n details: this.t(\n 'dataCollection.error.availableAdapters',\n 'Adapters disponiveis: {adapterIds}.',\n { adapterIds: adapterResolution.adapterIds.join(', ') || 'nenhum' },\n ),\n });\n }\n return;\n }\n\n if (!resolution.formConfig) {\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.missingConfigTitle', 'Configuracao de coleta ausente'),\n message: this.t(\n 'dataCollection.error.missingConfigMessage',\n 'O bloco \"{formBlockId}\" nao possui FormConfig resolvido para a engine de coleta.',\n { formBlockId: context.block.formBlockId },\n ),\n details: this.t(\n 'dataCollection.error.lookupSource',\n 'Origem consultada: {lookupKey}.',\n { lookupKey: resolution.lookupKey ?? 'nenhuma chave candidata' },\n ),\n });\n return;\n }\n\n if (!adapter.resolveComponent) {\n const component = adapter.component ?? null;\n if (!component) {\n this.resolvedComponent.set(null);\n this.emitAdapterResolutionEvent(\n 'invalid',\n adapter,\n this.t(\n 'dataCollection.error.adapterRegistrationHint',\n 'Registre um componente compatível ou implemente resolveComponent().',\n ),\n );\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.incompleteAdapterTitle', 'Adaptador incompleto'),\n message: this.t(\n 'dataCollection.error.incompleteAdapterMessage',\n 'O adaptador \"{adapterName}\" nao expôs um componente de coleta.',\n { adapterName: adapter.displayName ?? adapter.adapterId },\n ),\n details: this.t(\n 'dataCollection.error.adapterRegistrationHint',\n 'Registre um componente compatível ou implemente resolveComponent().',\n ),\n });\n return;\n }\n\n this.applyResolvedComponent(component, adapter, context, requestVersion);\n return;\n }\n\n this.state.set({\n kind: 'loading',\n message: this.t(\n 'dataCollection.loadingMessage',\n 'Carregando a engine de coleta para \"{formBlockId}\"...',\n { formBlockId: context.block.formBlockId },\n ),\n });\n void this.loadAdapterComponent(adapter, context, requestVersion);\n });\n\n effect(() => {\n const component = this.adapterComponent();\n const host = this.adapterHost();\n\n if (!host || !component) {\n this.destroyRenderedComponent();\n return;\n }\n\n if (this.renderedComponentType !== component) {\n this.destroyRenderedComponent();\n host.clear();\n this.componentRef = host.createComponent(component);\n this.renderedComponentType = component;\n this.bindComponentOutputs(this.componentRef);\n }\n\n this.applyComponentInputs();\n });\n }\n\n private async loadAdapterComponent(\n adapter: EditorialDataBlockAdapter,\n context: ReturnType<typeof this.adapterContext>,\n requestVersion: number,\n ): Promise<void> {\n try {\n const component = await adapter.resolveComponent?.(context);\n this.applyResolvedComponent(component ?? null, adapter, context, requestVersion);\n } catch {\n if (requestVersion !== this.loadVersion) {\n return;\n }\n\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.loadFailureTitle', 'Falha ao carregar a engine'),\n message: this.t(\n 'dataCollection.error.loadFailureMessage',\n 'O adaptador \"{adapterName}\" falhou ao preparar a coleta do bloco \"{formBlockId}\".',\n {\n adapterName: adapter.displayName ?? adapter.adapterId,\n formBlockId: context.block.formBlockId,\n },\n ),\n details: this.t(\n 'dataCollection.error.loadFailureDetails',\n 'Valide o provider opcional do host e a disponibilidade do componente compatível.',\n ),\n });\n }\n }\n\n private applyResolvedComponent(\n component: Type<unknown> | null,\n adapter: EditorialDataBlockAdapter,\n context: ReturnType<typeof this.adapterContext>,\n requestVersion: number,\n ): void {\n if (requestVersion !== this.loadVersion) {\n return;\n }\n\n if (!component) {\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.unresolvedComponentTitle', 'Componente nao resolvido'),\n message: this.t(\n 'dataCollection.error.unresolvedComponentMessage',\n 'O adaptador \"{adapterName}\" nao retornou um componente para o bloco \"{formBlockId}\".',\n {\n adapterName: adapter.displayName ?? adapter.adapterId,\n formBlockId: context.block.formBlockId,\n },\n ),\n details: this.t(\n 'dataCollection.error.unresolvedComponentDetails',\n 'Implemente component ou resolveComponent() com um componente Angular compatível.',\n ),\n });\n return;\n }\n\n const validation = adapter.validateComponent?.(component, context) ?? { ok: true as const };\n if (!validation.ok) {\n this.resolvedComponent.set(null);\n this.emitAdapterResolutionEvent('invalid', adapter, validation.reason);\n this.state.set({\n kind: 'error',\n title: this.t('dataCollection.error.invalidComponentTitle', 'Componente incompatível'),\n message: this.t(\n 'dataCollection.error.invalidComponentMessage',\n 'O adaptador \"{adapterName}\" retornou um componente incompatível para \"{formBlockId}\".',\n {\n adapterName: adapter.displayName ?? adapter.adapterId,\n formBlockId: context.block.formBlockId,\n },\n ),\n details: validation.reason,\n });\n return;\n }\n\n this.resolvedComponent.set(component);\n this.state.set({ kind: 'ready' });\n this.emitAdapterResolutionEvent('resolved', adapter);\n }\n\n private emitAdapterResolutionEvent(\n status: 'resolved' | 'missing' | 'incompatible' | 'invalid',\n adapter: EditorialDataBlockAdapter | null,\n reason?: string,\n ): void {\n const block = this.block();\n const adapterIds = this.adapterResolution().adapterIds;\n const signature = `${status}:${block.blockId}:${block.formBlockId}:${adapter?.adapterId ?? 'none'}:${reason ?? ''}:${adapterIds.join(',')}`;\n if (signature === this.lastAdapterEventSignature) {\n return;\n }\n this.lastAdapterEventSignature = signature;\n\n if (status === 'resolved' && adapter) {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-resolved',\n timestamp: Date.now(),\n severity: 'info',\n blockId: block.blockId,\n payload: {\n adapterId: adapter.adapterId,\n formBlockId: block.formBlockId,\n },\n });\n return;\n }\n\n if (status === 'invalid' && adapter) {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-invalid',\n timestamp: Date.now(),\n severity: 'error',\n blockId: block.blockId,\n payload: {\n adapterId: adapter.adapterId,\n formBlockId: block.formBlockId,\n reason: reason ?? 'Adaptador retornou componente incompatível.',\n },\n });\n return;\n }\n\n if (status === 'incompatible') {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-incompatible',\n timestamp: Date.now(),\n severity: 'warning',\n blockId: block.blockId,\n payload: {\n formBlockId: block.formBlockId,\n adapterIds,\n },\n });\n return;\n }\n\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-missing',\n timestamp: Date.now(),\n severity: 'warning',\n blockId: block.blockId,\n payload: {\n formBlockId: block.formBlockId,\n adapterIds,\n },\n });\n }\n\n private applyComponentInputs(): void {\n if (!this.componentRef) {\n return;\n }\n\n const inputs = {\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: this.resolution().formConfig,\n ...(this.adapter()?.buildInputs?.(this.adapterContext()) ?? {}),\n };\n\n for (const [key, value] of Object.entries(inputs)) {\n this.componentRef.setInput(key, value);\n }\n }\n\n private bindComponentOutputs(componentRef: ComponentRef<unknown>): void {\n this.componentOutputSubscriptions = [];\n const instance = componentRef.instance as Record<string, unknown>;\n const valueChange = instance['valueChange'];\n\n if (!isSubscribableOutput(valueChange)) {\n return;\n }\n\n this.componentOutputSubscriptions.push(\n valueChange.subscribe((event: unknown) => {\n const payload = extractFormDataChangeEvent(event);\n if (!payload) {\n return;\n }\n this.runtimeContextChange.emit(this.mergeFormDataIntoRuntimeContext(payload));\n }),\n );\n }\n\n private mergeFormDataIntoRuntimeContext(\n payload: EditorialDataBlockValueChangeEvent,\n ): Record<string, unknown> {\n const runtimeContext = this.runtimeContext();\n const currentFormData = readRuntimeFormData(runtimeContext);\n const nextFormData = payload.mode === 'replace'\n ? { ...payload.formData }\n : { ...currentFormData, ...payload.formData };\n\n for (const key of payload.removedKeys ?? []) {\n delete nextFormData[key];\n }\n\n return {\n ...(runtimeContext ?? {}),\n formData: nextFormData,\n };\n }\n\n private destroyRenderedComponent(): void {\n for (const subscription of this.componentOutputSubscriptions) {\n subscription.unsubscribe();\n }\n this.componentOutputSubscriptions = [];\n this.componentRef?.destroy();\n this.componentRef = null;\n this.renderedComponentType = null;\n }\n\n protected t(\n key: string,\n fallback: string,\n params?: Record<string, string | number | boolean | null | undefined>,\n ): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, params, fallback);\n }\n\n private shouldHideBlockTitle(): boolean {\n if (this.effectiveSurface() !== 'plain') {\n return false;\n }\n\n const section = this.getSingleResolvedSection();\n return !!section && areEquivalentCopy(this.block().title, section.title);\n }\n\n private shouldHideBlockDescription(): boolean {\n if (this.effectiveSurface() !== 'plain') {\n return false;\n }\n\n const section = this.getSingleResolvedSection();\n return !!section && areEquivalentCopy(this.block().description, section.description);\n }\n\n private getSingleResolvedSection(): { title?: string | null; description?: string | null } | null {\n const sections = this.resolution().formConfig?.sections ?? [];\n if (sections.length !== 1) {\n return null;\n }\n\n const [section] = sections;\n return section ?? null;\n }\n}\n\nfunction isSubscribableOutput(\n candidate: unknown,\n): candidate is { subscribe(callback: (value: unknown) => void): { unsubscribe(): void } } {\n return !!candidate && typeof candidate === 'object' && typeof (candidate as { subscribe?: unknown }).subscribe === 'function';\n}\n\nfunction extractFormDataChangeEvent(\n event: unknown,\n): EditorialDataBlockValueChangeEvent | null {\n if (!event || typeof event !== 'object') {\n return null;\n }\n const formData = (event as { formData?: unknown }).formData;\n if (!formData || typeof formData !== 'object' || Array.isArray(formData)) {\n return null;\n }\n const mode = (event as { mode?: unknown }).mode;\n const removedKeys = (event as { removedKeys?: unknown }).removedKeys;\n return {\n formData: { ...(formData as Record<string, unknown>) },\n mode: mode === 'replace' ? 'replace' : 'merge',\n removedKeys: Array.isArray(removedKeys)\n ? removedKeys.filter((item): item is string => typeof item === 'string')\n : undefined,\n };\n}\n\nfunction readRuntimeFormData(\n runtimeContext: Record<string, unknown> | null,\n): Record<string, unknown> {\n const formData = runtimeContext?.['formData'];\n if (!formData || typeof formData !== 'object' || Array.isArray(formData)) {\n return {};\n }\n return formData as Record<string, unknown>;\n}\n\nfunction isResolvedDataCollectionBlock(\n block: EditorialDataCollectionBlock | EditorialResolvedDataCollectionBlock,\n): block is EditorialResolvedDataCollectionBlock {\n return 'dataCollectionState' in block;\n}\n\nfunction areEquivalentCopy(\n left?: string | null,\n right?: string | null,\n): boolean {\n if (!left || !right) {\n return false;\n }\n\n return normalizeComparableCopy(left) === normalizeComparableCopy(right);\n}\n\nfunction normalizeComparableCopy(value: string): string {\n return value.trim().replace(/\\s+/g, ' ').toLocaleLowerCase();\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisIconDirective,\n type EditorialIntroHeroBlock,\n type EditorialPresentationalAction,\n} from '@praxisui/core';\n\n@Component({\n selector: 'praxis-editorial-intro-hero-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"intro-hero\" [attr.data-align]=\"block().align ?? 'center'\">\n @if (block().icon?.name) {\n <div class=\"hero-icon\"><mat-icon aria-hidden=\"true\" [praxisIcon]=\"block().icon?.name\"></mat-icon></div>\n }\n <div class=\"hero-copy\">\n <h3>{{ block().title }}</h3>\n @if (block().subtitle) {\n <p class=\"subtitle\">{{ block().subtitle }}</p>\n }\n @if (block().description) {\n <p class=\"description\">{{ block().description }}</p>\n }\n </div>\n\n @if (block().highlightItems?.length) {\n <div class=\"hero-highlights\">\n @for (item of block().highlightItems; track item.id) {\n <article class=\"highlight-card\">\n @if (item.icon?.name) {\n <mat-icon class=\"highlight-icon\" aria-hidden=\"true\" [praxisIcon]=\"item.icon?.name\"></mat-icon>\n }\n <strong>{{ item.title }}</strong>\n @if (item.description) {\n <p>{{ item.description }}</p>\n }\n </article>\n }\n </div>\n }\n\n @if (block().primaryAction || block().secondaryAction) {\n <div class=\"hero-actions\">\n @if (block().primaryAction; as action) {\n <button\n type=\"button\"\n class=\"hero-action primary\"\n [attr.data-appearance]=\"action.appearance ?? 'primary'\"\n (click)=\"triggerAction(action)\"\n >\n @if (action.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"action.icon?.name\"></mat-icon>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n @if (block().secondaryAction; as action) {\n <button\n type=\"button\"\n class=\"hero-action secondary\"\n [attr.data-appearance]=\"action.appearance ?? 'secondary'\"\n (click)=\"triggerAction(action)\"\n >\n @if (action.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"action.icon?.name\"></mat-icon>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n </div>\n }\n </section>\n `,\n styles: [`\n .intro-hero {\n display: grid;\n gap: 18px;\n text-align: center;\n }\n\n .intro-hero[data-align='left'] {\n text-align: left;\n }\n\n .hero-icon {\n width: 64px;\n height: 64px;\n border-radius: 18px;\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 18%, #fff);\n color: var(--editorial-accent, #264a8a);\n display: grid;\n place-items: center;\n justify-self: center;\n font-weight: 700;\n }\n\n .hero-icon mat-icon,\n .highlight-icon {\n width: 22px;\n height: 22px;\n font-size: 22px;\n line-height: 22px;\n }\n\n .intro-hero[data-align='left'] .hero-icon {\n justify-self: start;\n }\n\n .hero-copy {\n display: grid;\n gap: 10px;\n }\n\n .hero-copy h3,\n .hero-copy p {\n margin: 0;\n }\n\n .hero-copy h3 {\n font-size: var(--editorial-hero-title-size, 1.75rem);\n line-height: 1.15;\n }\n\n .subtitle,\n .description {\n font-size: var(--editorial-body-size, 1rem);\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .hero-highlights {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 12px;\n }\n\n .hero-actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 12px;\n }\n\n .intro-hero[data-align='left'] .hero-actions {\n justify-content: flex-start;\n }\n\n .hero-action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-height: 44px;\n padding: 0 20px;\n border-radius: var(--editorial-button-radius, var(--editorial-card-radius, 18px));\n border: 1px solid transparent;\n cursor: pointer;\n font: inherit;\n font-weight: 600;\n transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;\n }\n\n .hero-action mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n\n .hero-action.primary {\n background: var(--editorial-cta-primary, var(--editorial-accent, #264a8a));\n color: var(--editorial-cta-primary-text, #fff);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .hero-action.secondary {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 8%, #fff);\n border-color: color-mix(in srgb, var(--editorial-accent, #264a8a) 20%, transparent);\n color: var(--editorial-accent, #264a8a);\n }\n\n .highlight-card {\n display: grid;\n gap: 6px;\n padding: 14px;\n border-radius: var(--editorial-card-radius, 18px);\n background: var(--editorial-surface-primary, #fff);\n border: 1px solid var(--editorial-border-color, #d9deea);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .highlight-card p {\n margin: 0;\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialIntroHeroBlockComponent {\n readonly block = input.required<EditorialIntroHeroBlock>();\n readonly actionTriggered = output<string>();\n\n protected triggerAction(action: EditorialPresentationalAction): void {\n this.actionTriggered.emit(action.actionId);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisI18nService,\n PraxisIconDirective,\n EditorialReviewSectionField,\n EditorialReviewSectionsBlock,\n} from '@praxisui/core';\nimport { getValueAtPath } from '../runtime/editorial-runtime.helpers';\n\n@Component({\n selector: 'praxis-editorial-review-sections-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"review-sections\">\n @if (block().title) {\n <header class=\"review-header\">\n <h3>{{ block().title }}</h3>\n @if (block().description) {\n <p>{{ block().description }}</p>\n }\n </header>\n }\n\n <div class=\"review-sections-grid\">\n @for (section of block().sections; track section.id) {\n <article class=\"review-section\">\n <header class=\"review-section-header\">\n @if (section.icon?.name) {\n <mat-icon class=\"section-icon\" aria-hidden=\"true\" [praxisIcon]=\"section.icon?.name\"></mat-icon>\n }\n <h4>{{ section.title }}</h4>\n </header>\n <dl class=\"review-grid\">\n @for (field of visibleFields(section.fields); track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(field) }}</dd>\n </div>\n }\n </dl>\n </article>\n }\n </div>\n </section>\n `,\n styles: [`\n .review-sections,\n .review-header {\n display: grid;\n gap: 10px;\n }\n\n .review-header h3,\n .review-header p,\n .review-section h4 {\n margin: 0;\n }\n\n .review-header p {\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .review-sections-grid {\n display: grid;\n gap: 14px;\n }\n\n .review-section {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: var(--editorial-card-radius, 18px);\n border: 1px solid var(--editorial-border-color, #d9deea);\n background: var(--editorial-surface-primary, #fff);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .review-section-header {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n }\n\n .section-icon {\n display: grid;\n place-items: center;\n width: 18px;\n height: 18px;\n color: var(--editorial-accent, #264a8a);\n font-size: 18px;\n line-height: 18px;\n }\n\n .review-grid {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n margin: 0;\n }\n\n .review-grid dt {\n margin-bottom: 4px;\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.82rem;\n }\n\n .review-grid dd {\n margin: 0;\n font-weight: 600;\n color: var(--editorial-text-primary, #24324a);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialReviewSectionsBlockComponent {\n private readonly i18n = inject(PraxisI18nService);\n\n readonly block = input.required<EditorialReviewSectionsBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n\n protected visibleFields(fields: EditorialReviewSectionField[]): EditorialReviewSectionField[] {\n return fields.filter((field) => {\n if (!field.hideWhenEmpty) {\n return true;\n }\n return this.readValue(field) != null && this.readValue(field) !== '';\n });\n }\n\n protected resolveValue(field: EditorialReviewSectionField): string {\n const value = this.readValue(field);\n if (value == null || value === '') {\n return this.t('review.empty', '-');\n }\n return this.formatValue(value, field.format);\n }\n\n private readValue(field: EditorialReviewSectionField): unknown {\n return getValueAtPath(this.runtimeContext() ?? {}, field.valuePath);\n }\n\n private formatValue(\n value: unknown,\n format: EditorialReviewSectionField['format'] | undefined,\n ): string {\n switch (format) {\n case 'date':\n return this.formatDateValue(value);\n case 'phone':\n return this.formatPhoneValue(value);\n case 'email':\n return String(value);\n case 'boolean':\n return this.formatBooleanValue(value);\n case 'list':\n return this.formatListValue(value);\n case 'text':\n default:\n if (Array.isArray(value)) {\n return this.formatListValue(value);\n }\n if (typeof value === 'boolean') {\n return this.formatBooleanValue(value);\n }\n return String(value);\n }\n }\n\n private formatDateValue(value: unknown): string {\n if (value == null || value === '') {\n return this.t('review.empty', '-');\n }\n return this.i18n.formatDate(value as string | number | Date);\n }\n\n private formatPhoneValue(value: unknown): string {\n const raw = String(value ?? '').trim();\n if (!raw) {\n return this.t('review.empty', '-');\n }\n\n const digits = raw.replace(/\\D+/g, '');\n if (digits.length === 11) {\n return `(${digits.slice(0, 2)}) ${digits.slice(2, 7)}-${digits.slice(7)}`;\n }\n if (digits.length === 10) {\n return `(${digits.slice(0, 2)}) ${digits.slice(2, 6)}-${digits.slice(6)}`;\n }\n if (digits.length > 11) {\n return `+${digits}`;\n }\n return raw;\n }\n\n private formatBooleanValue(value: unknown): string {\n return value\n ? this.t('review.boolean.true', 'Sim')\n : this.t('review.boolean.false', 'Nao');\n }\n\n private formatListValue(value: unknown): string {\n if (!Array.isArray(value)) {\n return String(value);\n }\n return value.map((item) => String(item)).join(', ');\n }\n\n private t(key: string, fallback: string): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisI18nService,\n PraxisIconDirective,\n type EditorialSelectionCardsBlock,\n} from '@praxisui/core';\n\n@Component({\n selector: 'praxis-editorial-selection-cards-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"selection-block\">\n @if (block().title) {\n <header class=\"selection-header\">\n <h3>{{ block().title }}</h3>\n @if (block().description) {\n <p>{{ block().description }}</p>\n }\n </header>\n }\n\n <div\n class=\"selection-grid\"\n [attr.data-icon-position]=\"block().style?.iconPosition ?? 'left'\"\n [style.grid-template-columns]=\"gridTemplateColumns()\"\n [attr.id]=\"groupId()\"\n [attr.role]=\"block().selectionMode === 'single' ? 'radiogroup' : 'group'\"\n [attr.aria-label]=\"groupAriaLabel()\"\n >\n @for (item of block().items; track item.id) {\n <button\n type=\"button\"\n class=\"selection-card\"\n [class.selected]=\"isSelected(item.value)\"\n [attr.data-variant]=\"block().style?.variant ?? 'default'\"\n [attr.data-tone]=\"item.tone ?? 'default'\"\n [disabled]=\"item.disabled\"\n [attr.role]=\"block().selectionMode === 'single' ? 'radio' : 'checkbox'\"\n [attr.aria-checked]=\"isSelected(item.value)\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.tabindex]=\"itemTabIndex(item.value)\"\n [attr.aria-label]=\"buildItemAriaLabel(item.label, item.value)\"\n (click)=\"toggleValue(item.value)\"\n (keydown)=\"handleKeydown($event, item.value)\"\n >\n <span class=\"selection-leading\">\n @if (item.icon?.name) {\n <mat-icon class=\"selection-icon\" aria-hidden=\"true\" [praxisIcon]=\"item.icon?.name\"></mat-icon>\n }\n <span class=\"selection-copy\">\n <strong>{{ item.label }}</strong>\n @if (item.description) {\n <span>{{ item.description }}</span>\n }\n </span>\n </span>\n @if (block().style?.showCheckmark ?? true) {\n <span class=\"selection-check\" aria-hidden=\"true\">\n @if (isSelected(item.value)) {\n <mat-icon aria-hidden=\"true\" praxisIcon=\"check\"></mat-icon>\n }\n </span>\n }\n </button>\n }\n </div>\n </section>\n `,\n styles: [`\n .selection-block,\n .selection-header {\n display: grid;\n gap: 10px;\n }\n\n .selection-header h3,\n .selection-header p {\n margin: 0;\n }\n\n .selection-header p {\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .selection-grid {\n display: grid;\n gap: 14px;\n }\n\n .selection-card {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n min-height: 72px;\n padding: 16px;\n border-radius: var(--editorial-card-radius, 18px);\n border: 1px solid var(--editorial-border-color, #d9deea);\n background: var(--editorial-surface-primary, #fff);\n color: var(--editorial-text-primary, #24324a);\n box-shadow: var(--editorial-card-shadow, none);\n cursor: pointer;\n text-align: left;\n transition: background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;\n }\n\n .selection-card:hover:not([disabled]) {\n transform: translateY(-1px);\n }\n\n .selection-card.selected {\n border-color: var(--editorial-accent, #264a8a);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--editorial-accent, #264a8a) 22%, transparent);\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 8%, #fff);\n }\n\n .selection-card[data-variant='accent'] {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 4%, #fff);\n border-color: color-mix(in srgb, var(--editorial-accent, #264a8a) 18%, transparent);\n }\n\n .selection-card[data-variant='outline'] {\n box-shadow: none;\n background: transparent;\n }\n\n .selection-card[data-tone='accent'] .selection-icon {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 18%, #fff);\n color: var(--editorial-accent, #264a8a);\n }\n\n .selection-card[data-tone='muted'] .selection-icon {\n background: var(--editorial-surface-secondary, #eef2f8);\n color: var(--editorial-text-secondary, #7b8aa0);\n }\n\n .selection-card[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .selection-leading {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n flex: 1 1 auto;\n }\n\n .selection-grid[data-icon-position='top'] .selection-card {\n flex-direction: column;\n align-items: stretch;\n }\n\n .selection-grid[data-icon-position='top'] .selection-leading {\n display: grid;\n gap: 10px;\n }\n\n .selection-grid[data-icon-position='top'] .selection-check {\n align-self: flex-end;\n }\n\n .selection-icon,\n .selection-check {\n display: grid;\n place-items: center;\n width: 28px;\n height: 28px;\n border-radius: 999px;\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 14%, #fff);\n color: var(--editorial-accent, #264a8a);\n font-size: 0.75rem;\n font-weight: 700;\n flex: 0 0 auto;\n }\n\n .selection-icon,\n .selection-check mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n\n .selection-copy {\n display: grid;\n gap: 4px;\n min-width: 0;\n }\n\n .selection-copy span {\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.9rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialSelectionCardsBlockComponent {\n private readonly i18n = inject(PraxisI18nService);\n\n readonly block = input.required<EditorialSelectionCardsBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly runtimeContextChange = output<Record<string, unknown>>();\n readonly valueChange = output<{ field: string; value: string | string[] | null }>();\n\n protected readonly groupId = computed(() => `selection-group-${this.block().blockId}`);\n protected readonly gridTemplateColumns = computed(() => {\n const columns = this.block().columns ?? 2;\n return `repeat(${columns}, minmax(0, 1fr))`;\n });\n protected readonly groupAriaLabel = computed(() =>\n this.block().title\n || this.t('selection.group.label', 'Grupo de selecao'),\n );\n\n protected isSelected(value: string): boolean {\n const currentValue = this.currentValue();\n if (Array.isArray(currentValue)) {\n return currentValue.includes(value);\n }\n return currentValue === value;\n }\n\n protected toggleValue(value: string): void {\n const field = this.block().field;\n if (this.block().selectionMode === 'single') {\n const currentValue = this.currentValue();\n const nextValue = currentValue === value ? null : value;\n this.runtimeContextChange.emit(this.buildNextRuntimeContext(field, nextValue));\n this.valueChange.emit({ field, value: nextValue });\n return;\n }\n\n const currentValue = this.currentValue();\n const current = Array.isArray(currentValue) ? [...currentValue] : [];\n const index = current.indexOf(value);\n if (index >= 0) {\n current.splice(index, 1);\n } else {\n current.push(value);\n }\n this.runtimeContextChange.emit(this.buildNextRuntimeContext(field, current));\n this.valueChange.emit({ field, value: current });\n }\n\n protected itemTabIndex(value: string): number {\n if (this.block().selectionMode !== 'single') {\n return 0;\n }\n const currentValue = this.currentValue();\n if (currentValue === value) {\n return 0;\n }\n const firstValue = this.enabledItemValues()[0];\n return firstValue === value && currentValue == null ? 0 : -1;\n }\n\n protected handleKeydown(event: KeyboardEvent, value: string): void {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggleValue(value);\n return;\n }\n\n if (!['ArrowRight', 'ArrowDown', 'ArrowLeft', 'ArrowUp'].includes(event.key)) {\n return;\n }\n\n const enabledValues = this.enabledItemValues();\n const currentIndex = enabledValues.indexOf(value);\n if (currentIndex < 0) {\n return;\n }\n\n event.preventDefault();\n const nextIndex = event.key === 'ArrowRight' || event.key === 'ArrowDown'\n ? (currentIndex + 1) % enabledValues.length\n : (currentIndex - 1 + enabledValues.length) % enabledValues.length;\n const nextValue = enabledValues[nextIndex];\n\n this.focusItem(nextValue);\n if (this.block().selectionMode === 'single') {\n this.toggleValue(nextValue);\n }\n }\n\n protected buildItemAriaLabel(label: string, value: string): string {\n const selected = this.isSelected(value)\n ? this.t('selection.state.selected', 'selecionado')\n : this.t('selection.state.unselected', 'nao selecionado');\n return `${label}, ${selected}`;\n }\n\n private currentValue(): string | string[] | null {\n const formData = this.readFormData();\n const value = formData[this.block().field];\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string');\n }\n return typeof value === 'string' ? value : null;\n }\n\n private buildNextRuntimeContext(\n field: string,\n value: string | string[] | null,\n ): Record<string, unknown> {\n const context = this.runtimeContext();\n const nextContext = context ? { ...context } : {};\n const formData = this.cloneFormData();\n\n if (value == null) {\n delete formData[field];\n } else {\n formData[field] = value;\n }\n nextContext['formData'] = formData;\n return nextContext;\n }\n\n private readFormData(): Record<string, unknown> {\n const context = this.runtimeContext();\n if (!context) {\n return {};\n }\n const existing = context['formData'];\n if (existing && typeof existing === 'object' && !Array.isArray(existing)) {\n return existing as Record<string, unknown>;\n }\n return {};\n }\n\n private cloneFormData(): Record<string, unknown> {\n return { ...this.readFormData() };\n }\n\n private enabledItemValues(): string[] {\n return this.block().items\n .filter((item) => !item.disabled)\n .map((item) => item.value);\n }\n\n private focusItem(value: string): void {\n const container = document.getElementById(this.groupId());\n const buttons = container?.querySelectorAll<HTMLButtonElement>('.selection-card');\n const targetIndex = this.block().items.findIndex((candidate) => candidate.value === value);\n const element = targetIndex >= 0 ? buttons?.[targetIndex] : null;\n element?.focus();\n }\n\n private t(key: string, fallback: string): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n PraxisIconDirective,\n type EditorialPresentationalAction,\n type EditorialSuccessPanelBlock,\n} from '@praxisui/core';\n\n@Component({\n selector: 'praxis-editorial-success-panel-block',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <section class=\"success-panel\" [attr.data-tone]=\"block().tone ?? 'success'\">\n @if (block().icon?.name) {\n <div class=\"success-icon\"><mat-icon aria-hidden=\"true\" [praxisIcon]=\"block().icon?.name\"></mat-icon></div>\n }\n <h3>{{ block().title }}</h3>\n @if (block().description) {\n <p>{{ block().description }}</p>\n }\n @if (block().secondaryMessage) {\n <p class=\"secondary-message\">{{ block().secondaryMessage }}</p>\n }\n @if (block().nextSteps?.length) {\n <ul>\n @for (item of block().nextSteps; track item) {\n <li>{{ item }}</li>\n }\n </ul>\n }\n @if (block().primaryAction; as action) {\n <button type=\"button\" class=\"success-action\" (click)=\"triggerAction(action)\">\n @if (action.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"action.icon?.name\"></mat-icon>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n </section>\n `,\n styles: [`\n .success-panel {\n display: grid;\n gap: 12px;\n text-align: center;\n padding: 20px;\n border-radius: var(--editorial-card-radius, 18px);\n background: color-mix(in srgb, var(--editorial-success, #35b37e) 10%, #fff);\n border: 1px solid color-mix(in srgb, var(--editorial-success, #35b37e) 32%, transparent);\n box-shadow: var(--editorial-card-shadow, none);\n }\n\n .success-panel[data-tone='accent'] {\n background: color-mix(in srgb, var(--editorial-accent, #264a8a) 10%, #fff);\n border-color: color-mix(in srgb, var(--editorial-accent, #264a8a) 24%, transparent);\n }\n\n .success-panel[data-tone='neutral'] {\n background: var(--editorial-surface-primary, #fff);\n border-color: var(--editorial-border-color, #d9deea);\n }\n\n .success-panel h3,\n .success-panel p,\n .success-panel ul {\n margin: 0;\n }\n\n .success-panel ul {\n padding-left: 20px;\n text-align: left;\n }\n\n .secondary-message {\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: var(--editorial-body-size, 1rem);\n }\n\n .success-icon {\n display: grid;\n place-items: center;\n width: 48px;\n height: 48px;\n border-radius: 999px;\n background: var(--editorial-success, #35b37e);\n color: #fff;\n justify-self: center;\n font-weight: 700;\n }\n\n .success-panel[data-tone='accent'] .success-icon {\n background: var(--editorial-accent, #264a8a);\n }\n\n .success-panel[data-tone='neutral'] .success-icon {\n background: var(--editorial-surface-secondary, #eef2f8);\n color: var(--editorial-text-primary, #24324a);\n }\n\n .success-icon mat-icon {\n width: 20px;\n height: 20px;\n font-size: 20px;\n line-height: 20px;\n }\n\n .success-action {\n justify-self: center;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-height: 44px;\n padding: 0 20px;\n border: 0;\n border-radius: var(--editorial-button-radius, var(--editorial-card-radius, 18px));\n background: var(--editorial-cta-primary, var(--editorial-success, #35b37e));\n color: var(--editorial-cta-primary-text, #fff);\n box-shadow: var(--editorial-card-shadow, none);\n cursor: pointer;\n font: inherit;\n font-weight: 600;\n }\n\n .success-action mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialSuccessPanelBlockComponent {\n readonly block = input.required<EditorialSuccessPanelBlock>();\n readonly actionTriggered = output<string>();\n\n protected triggerAction(action: EditorialPresentationalAction): void {\n this.actionTriggered.emit(action.actionId);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { DynamicWidgetLoaderDirective } from '@praxisui/core';\nimport type {\n EditorialBlock,\n EditorialContextSummaryBlock,\n EditorialDataCollectionBlock,\n EditorialFaqAccordionBlock,\n EditorialHeroBlock,\n EditorialInfoCardsBlock,\n EditorialIntroHeroBlock,\n EditorialPolicyListBlock,\n EditorialReviewSummaryBlock,\n EditorialReviewSectionsBlock,\n EditorialRichTextBlock,\n EditorialSelectionCardsBlock,\n EditorialSolutionDefinition,\n EditorialSuccessPanelBlock,\n EditorialTemplateInstance,\n EditorialTimelineStepsBlock,\n} from '@praxisui/core';\nimport { getValueAtPath } from '../runtime/editorial-runtime.helpers';\nimport type { EditorialRuntimeOperationalEvent } from '../runtime/editorial-runtime-events.model';\nimport { EditorialDataCollectionBlockOutletComponent } from './editorial-data-collection-block-outlet.component';\nimport { EditorialIntroHeroBlockComponent } from './editorial-intro-hero-block.component';\nimport { EditorialReviewSectionsBlockComponent } from './editorial-review-sections-block.component';\nimport { EditorialSelectionCardsBlockComponent } from './editorial-selection-cards-block.component';\nimport { EditorialSuccessPanelBlockComponent } from './editorial-success-panel-block.component';\n\n@Component({\n selector: 'praxis-editorial-block-renderer',\n standalone: true,\n imports: [\n CommonModule,\n DynamicWidgetLoaderDirective,\n EditorialDataCollectionBlockOutletComponent,\n EditorialIntroHeroBlockComponent,\n EditorialSelectionCardsBlockComponent,\n EditorialReviewSectionsBlockComponent,\n EditorialSuccessPanelBlockComponent,\n ],\n template: `\n @switch (block().kind) {\n @case ('introHero') {\n <praxis-editorial-intro-hero-block\n [block]=\"introHero()\"\n (actionTriggered)=\"blockAction.emit({ blockId: introHero().blockId, actionId: $event })\"\n />\n }\n @case ('hero') {\n <section class=\"block-card hero-block\">\n @if (hero().subtitle) {\n <p class=\"eyebrow\">{{ hero().subtitle }}</p>\n }\n <h3>\n {{ hero().title }}\n @if (hero().titleAccent) {\n <span>{{ hero().titleAccent }}</span>\n }\n </h3>\n @if (hero().description) {\n <p class=\"description\">{{ hero().description }}</p>\n }\n </section>\n }\n @case ('richText') {\n <section class=\"block-card\">\n @if (richText().title) {\n <h3>{{ richText().title }}</h3>\n }\n <div class=\"content\">{{ richText().content }}</div>\n </section>\n }\n @case ('legalNotice') {\n <section class=\"block-card notice-block\">\n @if (richText().title) {\n <h3>{{ richText().title }}</h3>\n }\n <div class=\"content\">{{ richText().content }}</div>\n </section>\n }\n @case ('policyList') {\n <section class=\"block-card\">\n @if (policyList().title) {\n <h3>{{ policyList().title }}</h3>\n }\n <ul class=\"list-reset stack-sm\">\n @for (item of policyList().items; track item.id) {\n <li class=\"policy-item\">\n <strong>{{ item.title }}</strong>\n @if (item.summary) {\n <p>{{ item.summary }}</p>\n }\n </li>\n }\n </ul>\n </section>\n }\n @case ('timelineSteps') {\n <section class=\"block-card\">\n @if (timeline().title) {\n <h3>{{ timeline().title }}</h3>\n }\n <ol class=\"timeline\">\n @for (item of timeline().steps; track item.id) {\n <li class=\"timeline-item\">\n <strong>{{ item.label }}</strong>\n @if (item.description) {\n <span>{{ item.description }}</span>\n }\n </li>\n }\n </ol>\n </section>\n }\n @case ('reviewSummary') {\n <section class=\"block-card\">\n @if (review().title) {\n <h3>{{ review().title }}</h3>\n }\n <dl class=\"review-grid\">\n @for (field of review().fields; track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(field.valuePath, field.fallback) }}</dd>\n </div>\n }\n </dl>\n </section>\n }\n @case ('reviewSections') {\n <praxis-editorial-review-sections-block\n [block]=\"reviewSections()\"\n [runtimeContext]=\"runtimeContext()\"\n />\n }\n @case ('contextSummary') {\n <section class=\"block-card\">\n @if (contextSummary().title) {\n <h3>{{ contextSummary().title }}</h3>\n }\n <dl class=\"review-grid\">\n @for (field of contextSummary().fields; track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(resolveContextPath(field.valuePath), field.fallback) }}</dd>\n </div>\n }\n </dl>\n </section>\n }\n @case ('selectionCards') {\n <praxis-editorial-selection-cards-block\n [block]=\"selectionCards()\"\n [runtimeContext]=\"runtimeContext()\"\n (runtimeContextChange)=\"runtimeContextChange.emit($event)\"\n />\n }\n @case ('infoCards') {\n <section class=\"block-card\">\n <div class=\"cards-grid\">\n @for (item of infoCards().items; track item.id) {\n <article class=\"info-card\">\n <strong>{{ item.title }}</strong>\n @if (item.description) {\n <p>{{ item.description }}</p>\n }\n </article>\n }\n </div>\n </section>\n }\n @case ('successPanel') {\n <praxis-editorial-success-panel-block\n [block]=\"successPanel()\"\n (actionTriggered)=\"blockAction.emit({ blockId: successPanel().blockId, actionId: $event })\"\n />\n }\n @case ('faqAccordion') {\n <section class=\"block-card stack-sm\">\n @for (item of faq().items; track item.id) {\n <details class=\"faq-item\">\n <summary>{{ item.question }}</summary>\n <p>{{ item.answer }}</p>\n </details>\n }\n </section>\n }\n @case ('dataCollection') {\n <praxis-editorial-data-collection-block-outlet\n [block]=\"dataCollection()\"\n [runtimeContext]=\"runtimeContext()\"\n [solution]=\"solution()\"\n [instance]=\"instance()\"\n (runtimeContextChange)=\"runtimeContextChange.emit($event)\"\n (operationalEvent)=\"operationalEvent.emit($event)\"\n />\n }\n @case ('customWidget') {\n <ng-container\n [dynamicWidgetLoader]=\"customWidget().widget\"\n [context]=\"runtimeContext()\"\n [strictValidation]=\"true\"\n [autoWireOutputs]=\"true\"\n />\n }\n @case ('footerLinks') {\n <ng-container\n [dynamicWidgetLoader]=\"customWidget().widget\"\n [context]=\"runtimeContext()\"\n [strictValidation]=\"true\"\n [autoWireOutputs]=\"true\"\n />\n }\n }\n `,\n styles: [`\n :host {\n display: block;\n }\n .block-card {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: 18px;\n background: var(--md-sys-color-surface-container-low, #f7f2fa);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n }\n .eyebrow {\n margin: 0;\n font-size: 0.8rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--md-sys-color-primary, #6750a4);\n }\n h3, p, ul, ol, dl { margin: 0; }\n .description, .content, .timeline-item span, .policy-item p, .info-card p, .faq-item p {\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n .hero-block h3 span { color: var(--md-sys-color-primary, #6750a4); }\n .review-grid {\n display: grid;\n gap: 12px;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n }\n .review-grid dt {\n margin-bottom: 4px;\n font-size: 0.78rem;\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n .review-grid dd { margin: 0; font-weight: 600; }\n .list-reset { list-style: none; padding: 0; margin: 0; }\n .stack-sm { display: grid; gap: 10px; }\n .timeline { display: grid; gap: 12px; padding-left: 18px; margin: 0; }\n .timeline-item { display: grid; gap: 4px; }\n .policy-item, .faq-item, .info-card {\n padding: 12px;\n border-radius: 14px;\n background: var(--md-sys-color-surface, #fff);\n }\n .cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .notice-block {\n border-left: 4px solid var(--md-sys-color-primary, #6750a4);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialBlockRendererComponent {\n readonly block = input.required<EditorialBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContextChange = output<Record<string, unknown>>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n readonly blockAction = output<{ blockId: string; actionId: string }>();\n\n protected readonly introHero = computed(() => this.block() as EditorialIntroHeroBlock);\n protected readonly hero = computed(() => this.block() as EditorialHeroBlock);\n protected readonly richText = computed(() => this.block() as EditorialRichTextBlock);\n protected readonly policyList = computed(() => this.block() as EditorialPolicyListBlock);\n protected readonly timeline = computed(() => this.block() as EditorialTimelineStepsBlock);\n protected readonly review = computed(() => this.block() as EditorialReviewSummaryBlock);\n protected readonly reviewSections = computed(() => this.block() as EditorialReviewSectionsBlock);\n protected readonly contextSummary = computed(() => this.block() as EditorialContextSummaryBlock);\n protected readonly selectionCards = computed(() => this.block() as EditorialSelectionCardsBlock);\n protected readonly infoCards = computed(() => this.block() as EditorialInfoCardsBlock);\n protected readonly successPanel = computed(() => this.block() as EditorialSuccessPanelBlock);\n protected readonly faq = computed(() => this.block() as EditorialFaqAccordionBlock);\n protected readonly dataCollection = computed(() => this.block() as EditorialDataCollectionBlock);\n protected readonly customWidget = computed(() => this.block() as Extract<EditorialBlock, { kind: 'customWidget' | 'footerLinks' }>);\n\n protected resolveValue(valuePath?: string, fallback: string = '-'): string {\n if (!valuePath) {\n return fallback;\n }\n const value = getValueAtPath(this.runtimeContext() ?? {}, valuePath);\n return value == null || value === '' ? fallback : String(value);\n }\n\n protected resolveContextPath(valuePath?: string): string | undefined {\n const contextPath = this.contextSummary().contextPath;\n if (!contextPath) {\n return valuePath;\n }\n return valuePath ? `${contextPath}.${valuePath}` : contextPath;\n }\n}\n","import type {\n EditorialLayoutConfig,\n EditorialOrientation,\n EditorialStepperConfig,\n} from '@praxisui/core';\nimport type { EditorialResolvedStep } from './editorial-runtime-snapshot.model';\n\nexport function resolveRuntimeOrientation(\n layout?: EditorialLayoutConfig | null,\n stepper?: EditorialStepperConfig | null,\n compactViewport: boolean = false,\n): EditorialOrientation {\n if (compactViewport && layout?.responsive?.mobileOrientation) {\n return layout.responsive.mobileOrientation;\n }\n return stepper?.orientation ?? layout?.orientation ?? 'horizontal';\n}\n\nexport function resolveShellVariant(\n layout?: EditorialLayoutConfig | null,\n): string {\n return layout?.shellVariant ?? 'corporate-wizard';\n}\n\nexport function resolveDensity(\n layout?: EditorialLayoutConfig | null,\n): string {\n return layout?.density ?? 'comfortable';\n}\n\nexport function buildRuntimeLayoutCss(\n layout?: EditorialLayoutConfig | null,\n): string {\n if (!layout) {\n return '';\n }\n\n return [\n layout.maxWidth ? `max-width:${layout.maxWidth};width:100%;margin-inline:auto` : '',\n layout.spacing?.pagePadding ? `--editorial-page-padding:${layout.spacing.pagePadding}` : '',\n layout.spacing?.shellPadding ? `--editorial-shell-padding:${layout.spacing.shellPadding}` : '',\n layout.spacing?.blockGap ? `--editorial-block-gap:${layout.spacing.blockGap}` : '',\n layout.spacing?.sectionGap ? `--editorial-section-gap:${layout.spacing.sectionGap}` : '',\n layout.spacing?.actionGap ? `--editorial-action-gap:${layout.spacing.actionGap}` : '',\n ].filter(Boolean).join(';');\n}\n\nexport function getStepDisplayState(\n step: EditorialResolvedStep,\n steps: ReadonlyArray<EditorialResolvedStep>,\n activeStepId: string | null,\n isBlocked: boolean,\n): 'pending' | 'active' | 'completed' | 'blocked' {\n if (step.stepId === activeStepId && isBlocked) {\n return 'blocked';\n }\n if (step.stepId === activeStepId) {\n return 'active';\n }\n\n const activeIndex = steps.findIndex((item) => item.stepId === activeStepId);\n const stepIndex = steps.findIndex((item) => item.stepId === step.stepId);\n\n if (activeIndex >= 0 && stepIndex >= 0 && stepIndex < activeIndex) {\n return 'completed';\n }\n\n return 'pending';\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisI18nService, PraxisIconDirective } from '@praxisui/core';\nimport type {\n EditorialOrientation,\n EditorialStepperConfig,\n} from '@praxisui/core';\nimport { getStepDisplayState } from '../runtime/editorial-runtime-presentation.helpers';\nimport type { EditorialResolvedStep } from '../runtime/editorial-runtime-snapshot.model';\n\n@Component({\n selector: 'praxis-editorial-stepper',\n standalone: true,\n imports: [CommonModule, MatIconModule, PraxisIconDirective],\n template: `\n <ol\n class=\"steps-nav\"\n [class.vertical]=\"effectiveOrientation() === 'vertical'\"\n [class.horizontal]=\"effectiveOrientation() === 'horizontal'\"\n [attr.data-variant]=\"stepperVariant()\"\n [attr.data-align]=\"config()?.align ?? 'start'\"\n [attr.data-size]=\"config()?.size ?? 'md'\"\n [attr.aria-label]=\"stepperAriaLabel()\"\n >\n @for (step of steps(); track step.stepId; let last = $last) {\n <li\n class=\"stepper-item\"\n [attr.data-state]=\"stepState(step)\"\n [attr.aria-posinset]=\"stepNumber(step)\"\n [attr.aria-setsize]=\"steps().length\"\n >\n <button\n type=\"button\"\n class=\"step-chip\"\n [class.active]=\"activeStepId() === step.stepId\"\n [class.completed]=\"stepState(step) === 'completed'\"\n [class.blocked]=\"stepState(step) === 'blocked'\"\n [disabled]=\"isSelectionBlocked(step.stepId)\"\n [attr.data-state]=\"stepState(step)\"\n [attr.aria-current]=\"activeStepId() === step.stepId ? 'step' : null\"\n [attr.aria-label]=\"buildStepAriaLabel(step)\"\n (click)=\"onStepClick(step.stepId)\"\n >\n <span class=\"step-icon\" aria-hidden=\"true\">\n @if (stepState(step) === 'completed') {\n <mat-icon aria-hidden=\"true\" praxisIcon=\"check\"></mat-icon>\n } @else if (step.icon?.name) {\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"step.icon?.name\"></mat-icon>\n } @else {\n <span>{{ stepNumber(step) }}</span>\n }\n </span>\n @if ((config()?.showLabels ?? true) !== false) {\n <span class=\"step-copy\">\n <span class=\"step-label\">{{ step.label }}</span>\n @if ((config()?.showDescriptions ?? false) && step.description) {\n <span class=\"step-description\">{{ step.description }}</span>\n }\n </span>\n }\n </button>\n @if ((config()?.showConnectors ?? true) && !last) {\n <span\n class=\"step-connector\"\n [attr.data-state]=\"connectorState(step)\"\n [attr.data-style]=\"config()?.connectorStyle ?? 'solid'\"\n ></span>\n }\n </li>\n }\n </ol>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .steps-nav {\n --step-indicator-size: 42px;\n --step-copy-padding-block: 12px;\n --step-copy-padding-inline: 14px;\n --step-copy-width: minmax(0, 176px);\n --step-gap: 16px;\n --step-connector-offset: 26px;\n --step-connector-size: 4px;\n display: flex;\n align-items: flex-start;\n gap: var(--step-gap);\n list-style: none;\n padding: 0;\n margin: 0;\n width: 100%;\n }\n\n .steps-nav.horizontal[data-align='center'] {\n justify-content: center;\n }\n\n .steps-nav.horizontal[data-align='space-between'] {\n justify-content: space-between;\n }\n\n .steps-nav.horizontal[data-align='space-between'] .stepper-item {\n flex: 1 1 0;\n }\n\n .steps-nav.horizontal[data-align='start'] .stepper-item,\n .steps-nav.horizontal[data-align='center'] .stepper-item {\n flex: 0 1 196px;\n }\n\n .steps-nav.vertical {\n flex-direction: column;\n gap: 14px;\n }\n\n .stepper-item {\n display: flex;\n align-items: flex-start;\n gap: var(--step-gap);\n min-width: 0;\n }\n\n .steps-nav.vertical .stepper-item {\n align-items: stretch;\n flex-direction: column;\n gap: 10px;\n }\n\n .step-chip {\n position: relative;\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n width: 100%;\n min-width: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--editorial-text-primary, #24324a);\n cursor: pointer;\n text-align: center;\n transition:\n transform 180ms ease,\n opacity 180ms ease;\n }\n\n .step-chip:hover:not([disabled]) {\n transform: translateY(-1px);\n }\n\n .step-chip:focus-visible {\n outline: 3px solid var(--editorial-step-active, var(--editorial-accent, #264a8a));\n outline: 3px solid color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 32%, white);\n outline-offset: 6px;\n border-radius: calc(var(--editorial-card-radius, 22px) + 4px);\n }\n\n .steps-nav[data-size='sm'] {\n --step-indicator-size: 34px;\n --step-copy-padding-block: 9px;\n --step-copy-padding-inline: 12px;\n --step-copy-width: minmax(0, 132px);\n --step-gap: 12px;\n --step-connector-offset: 21px;\n }\n\n .steps-nav[data-size='lg'] {\n --step-indicator-size: 52px;\n --step-copy-padding-block: 15px;\n --step-copy-padding-inline: 18px;\n --step-copy-width: minmax(0, 220px);\n --step-gap: 20px;\n --step-connector-offset: 32px;\n }\n\n .step-chip[disabled] {\n opacity: 0.72;\n cursor: not-allowed;\n transform: none;\n }\n\n .step-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--step-indicator-size);\n height: var(--step-indicator-size);\n border-radius: 999px;\n border: 1px solid var(--editorial-border-color, #d9deea);\n border: 1px solid color-mix(in srgb, var(--editorial-border-color, #d9deea) 74%, white);\n background: var(--editorial-step-pending, #eef1f7);\n background:\n radial-gradient(\n circle at 30% 30%,\n color-mix(in srgb, var(--editorial-surface-primary, #fff) 86%, white) 0%,\n color-mix(in srgb, var(--editorial-step-pending, #eef1f7) 92%, white) 100%\n );\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.82rem;\n font-weight: 700;\n flex: 0 0 auto;\n box-shadow:\n inset 0 1px 0 rgba(255, 255, 255, 0.92),\n 0 10px 22px rgba(20, 39, 68, 0.08);\n transition:\n background 180ms ease,\n color 180ms ease,\n box-shadow 180ms ease,\n border-color 180ms ease;\n }\n\n .step-icon mat-icon {\n width: 18px;\n height: 18px;\n font-size: 18px;\n line-height: 18px;\n }\n\n .steps-nav[data-size='lg'] .step-icon mat-icon {\n width: 22px;\n height: 22px;\n font-size: 22px;\n line-height: 22px;\n }\n\n .step-chip.active .step-icon {\n border-color: var(--editorial-step-active, var(--editorial-accent, #264a8a));\n background: var(--editorial-step-active, var(--editorial-accent, #264a8a));\n border-color: color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 62%, white);\n color: var(--editorial-accent-contrast, #fff);\n box-shadow:\n 0 0 0 var(--editorial-active-step-border-width, 2px)\n color-mix(in srgb, var(--editorial-accent, #264a8a) 20%, transparent),\n 0 16px 28px color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 22%, transparent);\n }\n\n .step-chip.completed .step-icon {\n border-color: var(--editorial-step-completed, var(--editorial-success, #35b37e));\n background: var(--editorial-step-completed, var(--editorial-success, #35b37e));\n border-color: color-mix(in srgb, var(--editorial-step-completed, var(--editorial-success, #35b37e)) 66%, white);\n color: #fff;\n box-shadow:\n 0 14px 24px color-mix(in srgb, var(--editorial-step-completed, var(--editorial-success, #35b37e)) 20%, transparent);\n }\n\n .step-chip.blocked .step-icon {\n border-color: var(--editorial-step-blocked, var(--editorial-warning, #f28c38));\n background: var(--editorial-step-blocked, var(--editorial-warning, #f28c38));\n border-color: color-mix(in srgb, var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 66%, white);\n color: #fff;\n box-shadow:\n 0 14px 24px color-mix(in srgb, var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 18%, transparent);\n }\n\n .step-copy {\n display: grid;\n gap: 4px;\n min-width: 0;\n width: var(--step-copy-width);\n padding: var(--step-copy-padding-block) var(--step-copy-padding-inline);\n border-radius: calc(var(--editorial-card-radius, 22px) - 4px);\n border: 1px solid var(--editorial-border-color, #d9deea);\n border: 1px solid color-mix(in srgb, var(--editorial-border-color, #d9deea) 92%, white);\n background: var(--editorial-surface-primary, #fff);\n background:\n linear-gradient(\n 180deg,\n color-mix(in srgb, var(--editorial-surface-primary, #fff) 96%, white) 0%,\n color-mix(in srgb, var(--editorial-surface-secondary, #f6f8fc) 74%, white) 100%\n );\n box-shadow: 0 16px 32px rgba(20, 39, 68, 0.08);\n transition:\n border-color 180ms ease,\n background 180ms ease,\n box-shadow 180ms ease;\n }\n\n .step-chip.active .step-copy {\n border-color: var(--editorial-step-active, var(--editorial-accent, #264a8a));\n background: var(--editorial-surface-primary, #fff);\n border-color: color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 32%, var(--editorial-border-color, #d9deea));\n background:\n linear-gradient(\n 180deg,\n color-mix(in srgb, var(--editorial-surface-primary, #fff) 90%, white) 0%,\n color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 8%, var(--editorial-surface-primary, #fff)) 100%\n );\n box-shadow:\n 0 18px 36px rgba(20, 39, 68, 0.10),\n 0 0 0 1px color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 12%, transparent);\n }\n\n .step-chip.completed .step-copy {\n border-color: var(--editorial-step-completed, var(--editorial-success, #35b37e));\n background: var(--editorial-surface-primary, #fff);\n border-color: color-mix(in srgb, var(--editorial-step-completed, var(--editorial-success, #35b37e)) 34%, var(--editorial-border-color, #d9deea));\n background:\n linear-gradient(\n 180deg,\n color-mix(in srgb, var(--editorial-surface-primary, #fff) 88%, white) 0%,\n color-mix(in srgb, var(--editorial-step-completed, var(--editorial-success, #35b37e)) 8%, var(--editorial-surface-primary, #fff)) 100%\n );\n }\n\n .step-chip.blocked .step-copy {\n border-color: var(--editorial-step-blocked, var(--editorial-warning, #f28c38));\n background: var(--editorial-surface-primary, #fff);\n border-color: color-mix(in srgb, var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 38%, var(--editorial-border-color, #d9deea));\n background:\n linear-gradient(\n 180deg,\n color-mix(in srgb, var(--editorial-surface-primary, #fff) 90%, white) 0%,\n color-mix(in srgb, var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 10%, var(--editorial-surface-primary, #fff)) 100%\n );\n }\n\n .step-label {\n font-weight: 700;\n line-height: 1.25;\n white-space: normal;\n }\n\n .step-description {\n color: var(--editorial-text-secondary, #7b8aa0);\n font-size: 0.85rem;\n line-height: 1.35;\n }\n\n .step-connector {\n display: block;\n flex: 1 1 auto;\n align-self: flex-start;\n min-width: 40px;\n margin-top: var(--step-connector-offset);\n height: var(--step-connector-size);\n background: var(--editorial-connector, #8fd8c0);\n background:\n linear-gradient(\n 90deg,\n color-mix(in srgb, var(--editorial-border-color, #d9deea) 58%, white) 0%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 72%, white) 100%\n );\n border-radius: 999px;\n opacity: 0.92;\n }\n\n .steps-nav.vertical .step-connector {\n width: var(--step-connector-size);\n min-width: var(--step-connector-size);\n min-height: 28px;\n margin-top: 0;\n margin-left: calc((var(--step-indicator-size) / 2) - (var(--step-connector-size) / 2));\n height: 32px;\n }\n\n .step-connector[data-style='dashed'] {\n background:\n repeating-linear-gradient(\n 90deg,\n var(--editorial-connector, #8fd8c0) 0 8px,\n transparent 8px 14px\n );\n }\n\n .steps-nav.vertical .step-connector[data-style='dashed'] {\n background:\n repeating-linear-gradient(\n 180deg,\n var(--editorial-connector, #8fd8c0) 0 8px,\n transparent 8px 14px\n );\n }\n\n .step-connector[data-style='soft'] {\n height: 8px;\n background: var(--editorial-connector, #8fd8c0);\n background:\n linear-gradient(\n 90deg,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 24%, transparent) 0%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 88%, white) 55%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 24%, transparent) 100%\n );\n }\n\n .steps-nav.vertical .step-connector[data-style='soft'] {\n width: 8px;\n min-width: 8px;\n height: 32px;\n background: var(--editorial-connector, #8fd8c0);\n background:\n linear-gradient(\n 180deg,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 24%, transparent) 0%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 88%, white) 55%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 24%, transparent) 100%\n );\n }\n\n .step-connector[data-state='completed'] {\n background: var(--editorial-step-completed, var(--editorial-success, #35b37e));\n background:\n linear-gradient(\n 90deg,\n color-mix(in srgb, var(--editorial-step-completed, var(--editorial-success, #35b37e)) 92%, white) 0%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 82%, white) 100%\n );\n }\n\n .step-connector[data-state='active'] {\n background: var(--editorial-step-active, var(--editorial-accent, #264a8a));\n background:\n linear-gradient(\n 90deg,\n color-mix(in srgb, var(--editorial-step-active, var(--editorial-accent, #264a8a)) 86%, white) 0%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 84%, white) 60%,\n color-mix(in srgb, var(--editorial-border-color, #d9deea) 48%, white) 100%\n );\n }\n\n .step-connector[data-state='blocked'] {\n background: var(--editorial-step-blocked, var(--editorial-warning, #f28c38));\n background:\n linear-gradient(\n 90deg,\n color-mix(in srgb, var(--editorial-step-blocked, var(--editorial-warning, #f28c38)) 78%, white) 0%,\n color-mix(in srgb, var(--editorial-border-color, #d9deea) 48%, white) 100%\n );\n }\n\n .steps-nav[data-variant='simple'] .step-copy {\n display: none;\n }\n\n .steps-nav[data-variant='simple'] .step-description,\n .steps-nav[data-variant='icon'] .step-description {\n display: none;\n }\n\n .steps-nav[data-variant='simple'] .step-chip,\n .steps-nav[data-variant='icon'] .step-chip {\n gap: 8px;\n }\n\n .steps-nav.horizontal[data-variant='simple'] .stepper-item,\n .steps-nav.horizontal[data-variant='icon'] .stepper-item {\n align-items: center;\n }\n\n .steps-nav[data-variant='rich'] .step-copy {\n border-radius: var(--editorial-card-radius, 22px);\n box-shadow:\n 0 20px 36px rgba(20, 39, 68, 0.09),\n 0 0 0 1px rgba(255, 255, 255, 0.55);\n }\n\n .steps-nav.horizontal[data-variant='rich'] .step-chip {\n align-items: stretch;\n }\n\n .steps-nav.horizontal[data-variant='rich'] .step-copy {\n text-align: left;\n }\n\n .steps-nav.vertical .step-chip {\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n text-align: left;\n gap: 14px;\n }\n\n .steps-nav.vertical .step-copy {\n width: 100%;\n }\n\n @media (max-width: 860px) {\n .steps-nav.horizontal {\n flex-direction: column;\n gap: 12px;\n }\n\n .steps-nav.horizontal .stepper-item {\n flex: none;\n }\n\n .steps-nav.horizontal .step-chip {\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n text-align: left;\n }\n\n .steps-nav.horizontal .step-copy {\n width: 100%;\n }\n\n .steps-nav.horizontal .step-connector {\n width: var(--step-connector-size);\n min-width: var(--step-connector-size);\n min-height: 24px;\n margin-top: 0;\n margin-left: calc((var(--step-indicator-size) / 2) - (var(--step-connector-size) / 2));\n height: 24px;\n }\n\n .steps-nav.horizontal .step-connector[data-style='dashed'] {\n background:\n repeating-linear-gradient(\n 180deg,\n var(--editorial-connector, #8fd8c0) 0 8px,\n transparent 8px 14px\n );\n }\n\n .steps-nav.horizontal .step-connector[data-style='soft'] {\n width: 8px;\n min-width: 8px;\n height: 24px;\n background: var(--editorial-connector, #8fd8c0);\n background:\n linear-gradient(\n 180deg,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 24%, transparent) 0%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 88%, white) 55%,\n color-mix(in srgb, var(--editorial-connector, #8fd8c0) 24%, transparent) 100%\n );\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .step-chip,\n .step-icon,\n .step-copy {\n transition: none;\n }\n\n .step-chip:hover:not([disabled]) {\n transform: none;\n }\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialStepperComponent {\n private readonly i18n = inject(PraxisI18nService);\n\n readonly steps = input.required<EditorialResolvedStep[]>();\n readonly activeStepId = input<string | null>(null);\n readonly config = input<EditorialStepperConfig | null>(null);\n readonly orientation = input<EditorialOrientation>('horizontal');\n readonly progressionBlocked = input(false);\n readonly isStepSelectionBlocked = input<(stepId: string) => boolean>(() => false);\n readonly stepSelected = output<string>();\n\n protected readonly effectiveOrientation = computed(\n () => this.config()?.orientation ?? this.orientation(),\n );\n protected readonly stepperVariant = computed(\n () => this.config()?.variant ?? 'icon-label',\n );\n protected readonly stepperAriaLabel = computed(() =>\n this.t('stepper.ariaLabel', 'Etapas da jornada'),\n );\n\n protected stepState(step: EditorialResolvedStep): string {\n return getStepDisplayState(\n step,\n this.steps(),\n this.activeStepId(),\n this.progressionBlocked(),\n );\n }\n\n protected stepNumber(step: EditorialResolvedStep): number {\n return this.steps().findIndex((item) => item.stepId === step.stepId) + 1;\n }\n\n protected isSelectionBlocked(stepId: string): boolean {\n if (this.config()?.allowStepJump) {\n return false;\n }\n return this.isStepSelectionBlocked()(stepId);\n }\n\n protected onStepClick(stepId: string): void {\n if (this.isSelectionBlocked(stepId)) {\n return;\n }\n this.stepSelected.emit(stepId);\n }\n\n protected connectorState(step: EditorialResolvedStep): string {\n const state = this.stepState(step);\n if (state === 'completed') {\n return 'completed';\n }\n if (state === 'active') {\n return 'active';\n }\n if (state === 'blocked') {\n return 'blocked';\n }\n return 'pending';\n }\n\n protected buildStepAriaLabel(step: EditorialResolvedStep): string {\n const state = this.stepState(step);\n const status = state === 'completed'\n ? this.t('stepper.state.completed', 'concluida')\n : state === 'active'\n ? this.t('stepper.state.active', 'etapa atual')\n : state === 'blocked'\n ? this.t('stepper.state.blocked', 'bloqueada')\n : this.t('stepper.state.pending', 'pendente');\n return `${this.stepNumber(step)}. ${step.label}, ${status}`;\n }\n\n private t(key: string, fallback: string): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, undefined, fallback);\n }\n}\n","import type {\n EditorialBlock,\n EditorialBlockOverride,\n EditorialCompliancePreset,\n EditorialContextFieldContract,\n EditorialDataCollectionBlock,\n EditorialJourney,\n EditorialJourneyOverride,\n EditorialLayoutConfig,\n EditorialJourneyStep,\n EditorialPresentationShellVariant,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n EditorialThemePreset,\n EditorialWizardPresentation,\n} from '@praxisui/core';\nimport {\n resolveEditorialDataBlockFormConfigDetails,\n} from '../adapters/editorial-data-block-adapter';\nimport type { EditorialRuntimeDiagnostic } from './editorial-runtime-diagnostics.model';\nimport { getValueAtPath } from './editorial-runtime.helpers';\nimport type {\n EditorialResolvedBlock,\n EditorialResolvedBlockCompositionEntry,\n EditorialResolvedBlockSourceRef,\n EditorialResolvedDataCollectionBlock,\n EditorialResolvedDataCollectionState,\n EditorialResolvedJourney,\n EditorialResolvedStep,\n EditorialRuntimeSnapshot,\n} from './editorial-runtime-snapshot.model';\n\nexport interface ResolveEditorialRuntimeSnapshotInput {\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n runtimeContext?: Record<string, unknown> | null;\n}\n\nexport function resolveEditorialRuntimeSnapshot(\n input: ResolveEditorialRuntimeSnapshotInput,\n): EditorialRuntimeSnapshot {\n const diagnostics: EditorialRuntimeDiagnostic[] = [];\n const solution = input.solution;\n const instance = input.instance;\n const context = mergeContext(\n instance?.context ?? {},\n instance?.overrides?.contextPatch ?? {},\n input.runtimeContext ?? {},\n );\n const runtimeProblemType = solution?.problemType ?? instance?.template.problemType ?? null;\n\n const effectiveThemePreset = resolveEffectiveThemePreset(solution, instance, diagnostics);\n const effectiveCompliancePresets = resolveEffectiveCompliancePresets(\n solution,\n instance,\n runtimeProblemType,\n diagnostics,\n );\n\n validateContextContract(solution?.contextContract ?? [], context, diagnostics);\n validateComplianceContext(effectiveCompliancePresets, context, diagnostics);\n validateComplianceRequirements(effectiveCompliancePresets, context, diagnostics);\n diagnoseUnsupportedPresentationConfig(solution?.presentation ?? null, diagnostics);\n\n const journeys = mergeJourneys(solution, instance, diagnostics);\n applyCompliancePresetBlocks(journeys, effectiveCompliancePresets, solution, instance);\n applyJourneyOverrides(\n journeys,\n instance?.overrides?.journeyOverrides ?? [],\n diagnostics,\n instance,\n );\n diagnoseResolvedBlocks(journeys, diagnostics, instance);\n annotateDiagnostics(journeys, diagnostics);\n\n if (!solution && !instance) {\n diagnostics.push({\n code: 'solution-missing',\n severity: 'warning',\n message: 'Nenhuma solution ou instance editorial foi fornecida ao runtime.',\n scopeKind: 'global',\n path: 'runtime',\n });\n }\n\n return {\n solutionId: solution?.solutionId ?? instance?.template.templateId ?? null,\n instanceId: instance?.instanceId ?? null,\n title: solution?.title ?? instance?.template.title ?? null,\n description: solution?.description ?? null,\n problemType: solution?.problemType ?? instance?.template.problemType ?? null,\n context,\n presentation: resolveEffectivePresentation(solution?.presentation ?? null, effectiveThemePreset),\n effectiveThemePreset,\n effectiveCompliancePresets,\n journeys,\n diagnostics: {\n items: diagnostics,\n hasErrors: diagnostics.some((item) => item.severity === 'error'),\n hasWarnings: diagnostics.some((item) => item.severity === 'warning'),\n },\n };\n}\n\nfunction resolveEffectiveThemePreset(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialThemePreset | null {\n if (instance?.selectedThemePreset) {\n return instance.selectedThemePreset;\n }\n\n const requestedThemeId = instance?.overrides?.themePresetId;\n if (!requestedThemeId) {\n return solution?.themePresets?.[0] ?? null;\n }\n\n const resolved = solution?.themePresets?.find((preset) => preset.themeId === requestedThemeId) ?? null;\n if (!resolved) {\n diagnostics.push({\n code: 'theme-preset-not-found',\n severity: 'warning',\n message: `Theme preset \"${requestedThemeId}\" nao foi resolvido no catalogo da solution.`,\n scopeKind: 'global',\n path: `themePreset:${requestedThemeId}`,\n });\n }\n return resolved;\n}\n\nfunction resolveEffectiveCompliancePresets(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n runtimeProblemType: string | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialCompliancePreset[] {\n if (instance?.selectedCompliancePresets?.length) {\n return filterCompliancePresetsByProblemType(\n instance.selectedCompliancePresets,\n runtimeProblemType,\n diagnostics,\n );\n }\n\n const requestedPresetIds = instance?.overrides?.compliancePresetIds;\n if (!requestedPresetIds?.length) {\n return filterCompliancePresetsByProblemType(\n solution?.compliancePresets ?? [],\n runtimeProblemType,\n diagnostics,\n );\n }\n\n const resolved: EditorialCompliancePreset[] = [];\n for (const presetId of requestedPresetIds) {\n const preset = solution?.compliancePresets?.find((item) => item.presetId === presetId);\n if (!preset) {\n diagnostics.push({\n code: 'compliance-preset-not-found',\n severity: 'warning',\n message: `Compliance preset \"${presetId}\" nao foi resolvido no catalogo da solution.`,\n scopeKind: 'global',\n path: `compliancePreset:${presetId}`,\n });\n continue;\n }\n resolved.push(preset);\n }\n return filterCompliancePresetsByProblemType(resolved, runtimeProblemType, diagnostics);\n}\n\nfunction validateContextContract(\n contract: EditorialContextFieldContract[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const field of contract) {\n if (!field.required) {\n continue;\n }\n\n const value = getValueAtPath(context, field.key);\n if (value != null && value !== '') {\n continue;\n }\n\n diagnostics.push({\n code: 'context-required-missing',\n severity: 'error',\n message: `Contexto obrigatorio ausente: \"${field.key}\".`,\n scopeKind: 'global',\n path: field.key,\n });\n }\n}\n\nfunction validateComplianceContext(\n presets: EditorialCompliancePreset[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const preset of presets) {\n for (const key of preset.requiredContextKeys ?? []) {\n const value = getValueAtPath(context, key);\n if (value != null && value !== '') {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-context-required-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer o contexto \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:${key}`,\n });\n }\n }\n}\n\nfunction validateComplianceRequirements(\n presets: EditorialCompliancePreset[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const preset of presets) {\n for (const key of preset.requiredEvidenceKeys ?? []) {\n const value = resolveComplianceValue(context, key);\n if (value != null && value !== '' && (!Array.isArray(value) || value.length > 0)) {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-evidence-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer a evidência \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:evidence:${key}`,\n });\n }\n\n for (const key of preset.requiredAcceptances ?? []) {\n const value = resolveComplianceValue(context, key);\n const accepted = value === true\n || value === 'true'\n || value === 'accepted'\n || value === 'ACCEPTED';\n if (accepted) {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-acceptance-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer o aceite \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:acceptance:${key}`,\n });\n }\n }\n}\n\nfunction mergeJourneys(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialResolvedJourney[] {\n const resolvedJourneys = new Map<string, EditorialResolvedJourney>();\n const order: string[] = [];\n\n for (const journey of solution?.journeys ?? []) {\n resolvedJourneys.set(\n journey.journeyId,\n createResolvedJourney(\n journey,\n createSourceRef('solution', {\n solutionId: solution?.solutionId ?? undefined,\n journeyId: journey.journeyId,\n }),\n instance,\n ),\n );\n order.push(journey.journeyId);\n }\n\n for (const journey of instance?.journeys ?? []) {\n const existing = resolvedJourneys.get(journey.journeyId);\n if (!existing) {\n resolvedJourneys.set(\n journey.journeyId,\n createResolvedJourney(\n journey,\n createSourceRef('instanceJourney', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId: journey.journeyId,\n }),\n instance,\n ),\n );\n order.push(journey.journeyId);\n continue;\n }\n\n resolvedJourneys.set(\n journey.journeyId,\n mergeJourney(\n existing,\n journey,\n createSourceRef('instanceJourney', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId: journey.journeyId,\n }),\n diagnostics,\n instance,\n ),\n );\n }\n\n return order\n .map((journeyId) => resolvedJourneys.get(journeyId))\n .filter((journey): journey is EditorialResolvedJourney => Boolean(journey));\n}\n\nfunction createResolvedJourney(\n journey: EditorialJourney,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedJourney {\n return {\n journeyId: journey.journeyId,\n label: journey.label,\n description: journey.description,\n steps: journey.steps.map((step) =>\n createResolvedStep(\n step,\n {\n ...source,\n stepId: step.stepId,\n },\n instance,\n ),\n ),\n };\n}\n\nfunction createResolvedStep(\n step: EditorialJourneyStep,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedStep {\n return {\n stepId: step.stepId,\n label: step.label,\n description: step.description,\n kind: step.kind,\n icon: step.icon,\n visual: step.visual,\n optional: step.optional,\n editableFromReview: step.editableFromReview,\n blocks: step.blocks.map((block) =>\n createResolvedBlock(\n block,\n {\n ...source,\n blockId: block.blockId,\n },\n instance,\n ),\n ),\n };\n}\n\nfunction createResolvedBlock(\n block: EditorialBlock,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n previousTrail: EditorialResolvedBlockCompositionEntry[] = [],\n operation: EditorialResolvedBlockCompositionEntry['operation'] = 'seed',\n): EditorialResolvedBlock {\n const trail = dedupeTrail([\n ...previousTrail,\n { operation, source },\n ]);\n\n if (block.kind === 'dataCollection') {\n return {\n ...block,\n provenance: {\n primarySource: source,\n trail,\n },\n dataCollectionState: buildDataCollectionState(block, instance),\n };\n }\n\n return {\n ...block,\n provenance: {\n primarySource: source,\n trail,\n },\n };\n}\n\nfunction mergeJourney(\n base: EditorialResolvedJourney,\n override: EditorialJourney,\n source: EditorialResolvedBlockSourceRef,\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedJourney {\n const steps = new Map<string, EditorialResolvedStep>(\n base.steps.map((step) => [step.stepId, step] as const),\n );\n const order = base.steps.map((step) => step.stepId);\n\n for (const step of override.steps) {\n const existing = steps.get(step.stepId);\n if (!existing) {\n steps.set(\n step.stepId,\n createResolvedStep(\n step,\n {\n ...source,\n stepId: step.stepId,\n },\n instance,\n ),\n );\n order.push(step.stepId);\n continue;\n }\n\n const mergedBlocks = [...existing.blocks];\n for (const block of step.blocks) {\n const hasConflict = mergedBlocks.some((candidate) => candidate.blockId === block.blockId);\n if (hasConflict) {\n diagnostics.push({\n code: 'instance-journey-block-conflict',\n severity: 'warning',\n message: `Journey da instance tentou redefinir o bloco \"${block.blockId}\" em \"${override.journeyId}/${step.stepId}\" sem usar journeyOverrides.`,\n scopeKind: 'block',\n path: `instanceJourney:${override.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: override.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n mergedBlocks.push(\n createResolvedBlock(\n block,\n {\n ...source,\n stepId: step.stepId,\n blockId: block.blockId,\n },\n instance,\n [],\n 'instance-journey-append',\n ),\n );\n }\n\n steps.set(step.stepId, {\n stepId: step.stepId,\n label: step.label || existing.label,\n description: step.description ?? existing.description,\n kind: step.kind ?? existing.kind,\n icon: step.icon ?? existing.icon,\n visual: step.visual ?? existing.visual,\n optional: step.optional ?? existing.optional,\n editableFromReview: step.editableFromReview ?? existing.editableFromReview,\n blocks: mergedBlocks,\n });\n }\n\n return {\n journeyId: override.journeyId,\n label: override.label || base.label,\n description: override.description ?? base.description,\n steps: order\n .map((stepId) => steps.get(stepId))\n .filter((step): step is EditorialResolvedStep => Boolean(step)),\n };\n}\n\nfunction applyCompliancePresetBlocks(\n journeys: EditorialResolvedJourney[],\n presets: EditorialCompliancePreset[],\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journey of journeys) {\n const targetStep = journey.steps[journey.steps.length - 1];\n if (!targetStep) {\n continue;\n }\n\n for (const preset of presets) {\n for (const block of preset.blocks ?? []) {\n targetStep.blocks.push(\n createResolvedBlock(\n block,\n createSourceRef('compliancePreset', {\n solutionId: solution?.solutionId ?? undefined,\n presetId: preset.presetId,\n journeyId: journey.journeyId,\n stepId: targetStep.stepId,\n blockId: block.blockId,\n }),\n instance,\n [],\n 'compliance-append',\n ),\n );\n }\n }\n }\n}\n\nfunction filterCompliancePresetsByProblemType(\n presets: EditorialCompliancePreset[],\n runtimeProblemType: string | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialCompliancePreset[] {\n if (!runtimeProblemType) {\n return presets;\n }\n\n return presets.filter((preset) => {\n if (!preset.problemTypes?.length || preset.problemTypes.includes(runtimeProblemType)) {\n return true;\n }\n\n diagnostics.push({\n code: 'compliance-preset-problem-type-mismatch',\n severity: 'warning',\n message: `Compliance preset \"${preset.presetId}\" nao se aplica ao problemType \"${runtimeProblemType}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:problemType`,\n });\n return false;\n });\n}\n\nfunction resolveComplianceValue(\n context: Record<string, unknown>,\n key: string,\n): unknown {\n const direct = getValueAtPath(context, key);\n if (direct != null && direct !== '') {\n return direct;\n }\n return getValueAtPath(context, `formData.${key}`);\n}\n\nfunction resolveEffectivePresentation(\n basePresentation: EditorialWizardPresentation | null,\n themePreset: EditorialThemePreset | null,\n): EditorialWizardPresentation | null {\n if (!basePresentation && !themePreset) {\n return null;\n }\n\n const layout: EditorialLayoutConfig = {\n ...(basePresentation?.layout ?? {}),\n };\n\n if (themePreset?.maxWidth != null && !layout.maxWidth) {\n layout.maxWidth = String(themePreset.maxWidth);\n }\n if (themePreset?.pageSpacing != null) {\n layout.spacing = {\n ...(layout.spacing ?? {}),\n pagePadding: layout.spacing?.pagePadding ?? String(themePreset.pageSpacing),\n };\n }\n if (themePreset?.shellVariant && !layout.shellVariant) {\n layout.shellVariant = mapThemeShellVariant(themePreset.shellVariant);\n }\n\n const theme = {\n ...(basePresentation?.theme ?? {}),\n color: {\n ...(basePresentation?.theme?.color ?? {}),\n pageBackground: basePresentation?.theme?.color?.pageBackground ?? themePreset?.background,\n },\n };\n\n return {\n ...(basePresentation ?? {}),\n layout,\n theme,\n };\n}\n\nfunction diagnoseUnsupportedPresentationConfig(\n presentation: EditorialWizardPresentation | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n if (!presentation) {\n return;\n }\n\n const unsupportedEntries: Array<{ path: string; reason: string }> = [];\n\n if (presentation.layout?.contentAlign) {\n unsupportedEntries.push({\n path: 'presentation.layout.contentAlign',\n reason: 'contentAlign ainda nao afeta o shell do runtime.',\n });\n }\n if (presentation.layout?.responsive?.tabletOrientation) {\n unsupportedEntries.push({\n path: 'presentation.layout.responsive.tabletOrientation',\n reason: 'tabletOrientation ainda nao possui comportamento responsivo dedicado.',\n });\n }\n if (presentation.motion) {\n unsupportedEntries.push({\n path: 'presentation.motion',\n reason: 'motion ainda nao possui integracao operacional no renderer do runtime.',\n });\n }\n\n for (const entry of unsupportedEntries) {\n diagnostics.push({\n code: 'presentation-config-unsupported',\n severity: 'warning',\n message: `Configuracao de presentation ignorada em \"${entry.path}\". ${entry.reason}`,\n scopeKind: 'global',\n path: entry.path,\n });\n }\n}\n\nfunction mapThemeShellVariant(\n shellVariant: EditorialThemePreset['shellVariant'],\n): EditorialPresentationShellVariant {\n if (shellVariant === 'wizard') {\n return 'corporate-wizard';\n }\n if (shellVariant === 'split') {\n return 'sidebar-journey';\n }\n if (shellVariant === 'plain') {\n return 'compliance-flow';\n }\n if (shellVariant === 'card') {\n return 'compact-form';\n }\n return 'editorial-rich';\n}\n\nfunction applyJourneyOverrides(\n journeys: EditorialResolvedJourney[],\n overrides: EditorialJourneyOverride[],\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journeyOverride of overrides) {\n const journey = journeys.find((candidate) => candidate.journeyId === journeyOverride.journeyId);\n if (!journey) {\n diagnostics.push({\n code: 'journey-override-target-missing',\n severity: 'warning',\n message: `Journey override referencia a jornada inexistente \"${journeyOverride.journeyId}\".`,\n scopeKind: 'journey',\n path: `journeyOverride:${journeyOverride.journeyId}`,\n journeyId: journeyOverride.journeyId,\n });\n continue;\n }\n\n const touchedTargets = new Set<string>();\n for (const stepOverride of journeyOverride.stepOverrides ?? []) {\n const step = journey.steps.find((candidate) => candidate.stepId === stepOverride.stepId);\n if (!step) {\n diagnostics.push({\n code: 'step-override-target-missing',\n severity: 'warning',\n message: `Journey override referencia a etapa inexistente \"${stepOverride.stepId}\" na jornada \"${journeyOverride.journeyId}\".`,\n scopeKind: 'step',\n path: `journeyOverride:${journeyOverride.journeyId}:${stepOverride.stepId}`,\n journeyId: journeyOverride.journeyId,\n stepId: stepOverride.stepId,\n });\n continue;\n }\n\n for (const blockOverride of stepOverride.blockOverrides ?? []) {\n applyBlockOverride(\n step,\n blockOverride,\n diagnostics,\n journeyOverride.journeyId,\n touchedTargets,\n instance,\n );\n }\n }\n }\n}\n\nfunction applyBlockOverride(\n step: EditorialResolvedStep,\n override: EditorialBlockOverride,\n diagnostics: EditorialRuntimeDiagnostic[],\n journeyId: string,\n touchedTargets: Set<string>,\n instance: EditorialTemplateInstance | null,\n): void {\n const source = createSourceRef('instanceOverride', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId,\n stepId: step.stepId,\n blockId: override.blockId,\n });\n const conflictKeys = buildOverrideConflictKeys(step.stepId, override);\n if (conflictKeys.some((key) => touchedTargets.has(key))) {\n diagnostics.push({\n code: 'block-override-conflict',\n severity: 'warning',\n message: `Multiplas operacoes de override atingem o bloco \"${override.blockId}\" em \"${journeyId}/${step.stepId}\". A ordem declarada sera aplicada de forma deterministica.`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${step.stepId}:${override.blockId}`,\n journeyId,\n stepId: step.stepId,\n blockId: override.blockId,\n });\n }\n for (const key of conflictKeys) {\n touchedTargets.add(key);\n }\n\n if (override.operation === 'append') {\n if (!override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'Append requer value.',\n ),\n );\n return;\n }\n\n step.blocks.push(\n createResolvedBlock(\n override.value,\n source,\n instance,\n [],\n 'instance-override-append',\n ),\n );\n return;\n }\n\n const blockIndex = step.blocks.findIndex((block) => block.blockId === override.blockId);\n if (override.operation === 'remove' || override.operation === 'replace') {\n if (blockIndex === -1) {\n diagnostics.push(\n createMissingBlockOverrideTargetDiagnostic(\n journeyId,\n step.stepId,\n override.blockId,\n ),\n );\n return;\n }\n\n if (override.operation === 'remove') {\n step.blocks.splice(blockIndex, 1);\n return;\n }\n\n if (!override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'Replace requer value.',\n ),\n );\n return;\n }\n\n const previous = step.blocks[blockIndex];\n step.blocks.splice(\n blockIndex,\n 1,\n createResolvedBlock(\n override.value,\n source,\n instance,\n previous.provenance.trail,\n 'instance-override-replace',\n ),\n );\n return;\n }\n\n if (!override.referenceBlockId || !override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'InsertBefore/InsertAfter requerem referenceBlockId e value.',\n ),\n );\n return;\n }\n\n const referenceIndex = step.blocks.findIndex((block) => block.blockId === override.referenceBlockId);\n if (referenceIndex === -1) {\n diagnostics.push(\n createMissingBlockOverrideTargetDiagnostic(\n journeyId,\n step.stepId,\n override.referenceBlockId,\n ),\n );\n return;\n }\n\n const insertIndex = override.operation === 'insertBefore'\n ? referenceIndex\n : referenceIndex + 1;\n step.blocks.splice(\n insertIndex,\n 0,\n createResolvedBlock(\n override.value,\n source,\n instance,\n [],\n override.operation === 'insertBefore'\n ? 'instance-override-insert-before'\n : 'instance-override-insert-after',\n ),\n );\n}\n\nfunction buildOverrideConflictKeys(\n stepId: string,\n override: EditorialBlockOverride,\n): string[] {\n const keys = [`${stepId}:block:${override.blockId}`];\n\n if (override.operation === 'replace' || override.operation === 'remove') {\n keys.push(`${stepId}:target:${override.blockId}`);\n }\n\n if (override.referenceBlockId) {\n keys.push(`${stepId}:reference:${override.referenceBlockId}`);\n keys.push(`${stepId}:target:${override.referenceBlockId}`);\n }\n\n return keys;\n}\n\nfunction createInvalidBlockOverrideDiagnostic(\n journeyId: string,\n stepId: string,\n override: EditorialBlockOverride,\n reason: string,\n): EditorialRuntimeDiagnostic {\n return {\n code: 'block-override-invalid',\n severity: 'warning',\n message: `Override invalido para bloco \"${override.blockId}\" em \"${journeyId}/${stepId}\": ${reason}`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${stepId}:${override.blockId}`,\n journeyId,\n stepId,\n blockId: override.blockId,\n };\n}\n\nfunction createMissingBlockOverrideTargetDiagnostic(\n journeyId: string,\n stepId: string,\n blockId: string,\n): EditorialRuntimeDiagnostic {\n return {\n code: 'block-override-target-missing',\n severity: 'warning',\n message: `Override referencia bloco inexistente \"${blockId}\" em \"${journeyId}/${stepId}\".`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${stepId}:${blockId}`,\n journeyId,\n stepId,\n blockId,\n };\n}\n\nfunction diagnoseResolvedBlocks(\n journeys: EditorialResolvedJourney[],\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journey of journeys) {\n for (const step of journey.steps) {\n for (const block of step.blocks) {\n if (block.kind !== 'dataCollection') {\n continue;\n }\n\n const dataBlock = block as EditorialResolvedDataCollectionBlock;\n const resolution = resolveEditorialDataBlockFormConfigDetails(dataBlock, instance);\n if (resolution.ambiguous) {\n diagnostics.push({\n code: 'data-collection-config-ambiguous',\n severity: 'warning',\n message: `Bloco dataCollection \"${block.blockId}\" encontrou mais de uma configuracao candidata para \"${block.formBlockId}\". A primeira correspondencia valida foi aplicada de forma deterministica.`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n }\n\n if (dataBlock.dataCollectionState.readiness === 'missingConfig') {\n diagnostics.push({\n code: 'data-collection-config-missing',\n severity: 'error',\n message: `Bloco dataCollection \"${block.blockId}\" nao possui FormConfig resolvido para \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n if (dataBlock.dataCollectionState.readiness === 'requiresAdapter') {\n diagnostics.push({\n code: 'data-collection-adapter-missing',\n severity: 'warning',\n message: `Bloco dataCollection \"${block.blockId}\" depende de adaptador opcional para materializar \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n if (dataBlock.dataCollectionState.readiness === 'invalid') {\n diagnostics.push({\n code: 'data-collection-invalid',\n severity: 'error',\n message: `Bloco dataCollection \"${block.blockId}\" possui materializacao invalida para \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n }\n }\n }\n }\n}\n\nfunction annotateDiagnostics(\n journeys: EditorialResolvedJourney[],\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const diagnostic of diagnostics) {\n const journey = diagnostic.journeyId\n ? journeys.find((item) => item.journeyId === diagnostic.journeyId)\n : undefined;\n const step = diagnostic.stepId\n ? journey?.steps.find((item) => item.stepId === diagnostic.stepId)\n : undefined;\n const block = diagnostic.blockId\n ? step?.blocks.find((item) => item.blockId === diagnostic.blockId)\n : undefined;\n\n if (!diagnostic.scopeKind) {\n diagnostic.scopeKind = block\n ? 'block'\n : step\n ? 'step'\n : journey\n ? 'journey'\n : 'global';\n }\n\n if (journey) {\n diagnostic.journeyLabel = journey.label;\n }\n if (step) {\n diagnostic.stepLabel = step.label;\n }\n if (block) {\n diagnostic.blockLabel = block.title ?? block.subtitle ?? block.blockId;\n }\n }\n}\n\nfunction dedupeTrail(\n trail: EditorialResolvedBlockCompositionEntry[],\n): EditorialResolvedBlockCompositionEntry[] {\n const seen = new Set<string>();\n const deduped: EditorialResolvedBlockCompositionEntry[] = [];\n\n for (const entry of trail) {\n const key = `${entry.operation}:${entry.source.kind}:${entry.source.sourceId}:${entry.source.journeyId ?? ''}:${entry.source.stepId ?? ''}:${entry.source.blockId ?? ''}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(entry);\n }\n\n return deduped;\n}\n\nfunction buildDataCollectionState(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedDataCollectionState {\n const resolution = resolveEditorialDataBlockFormConfigDetails(block, instance);\n const hasInlineFormConfig = Boolean(block.formConfig);\n const hasResolvedFormConfig = Boolean(resolution.formConfig);\n\n let readiness: EditorialResolvedDataCollectionState['readiness'];\n if (!block.formBlockId) {\n readiness = 'invalid';\n } else if (!hasResolvedFormConfig) {\n readiness = 'missingConfig';\n } else {\n readiness = 'requiresAdapter';\n }\n\n return {\n formBlockId: block.formBlockId,\n formConfigRef: block.formConfigRef,\n hasInlineFormConfig,\n resolvedFormConfigSource: resolution.source,\n resolvedFormConfigLookupKey: resolution.lookupKey,\n hasResolvedFormConfig,\n expectedAdapter: 'optional',\n readiness,\n };\n}\n\nfunction createSourceRef(\n kind: EditorialResolvedBlockSourceRef['kind'],\n details: Omit<EditorialResolvedBlockSourceRef, 'kind' | 'sourceId'>,\n): EditorialResolvedBlockSourceRef {\n const sourceId = [\n kind,\n details.solutionId,\n details.presetId,\n details.instanceId,\n details.journeyId,\n details.stepId,\n details.blockId,\n ]\n .filter((value): value is string => Boolean(value))\n .join(':');\n\n return {\n kind,\n sourceId: sourceId || kind,\n ...details,\n };\n}\n\nfunction mergeContext(\n ...sources: Array<Record<string, unknown>>\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const source of sources) {\n mergeContextInto(result, source);\n }\n return result;\n}\n\nfunction mergeContextInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const [key, value] of Object.entries(source)) {\n if (isPlainObject(value) && isPlainObject(target[key])) {\n mergeContextInto(\n target[key] as Record<string, unknown>,\n value,\n );\n continue;\n }\n\n if (isPlainObject(value)) {\n target[key] = clonePlainObject(value);\n continue;\n }\n\n target[key] = value;\n }\n}\n\nfunction clonePlainObject(value: Record<string, unknown>): Record<string, unknown> {\n const target: Record<string, unknown> = {};\n mergeContextInto(target, value);\n return target;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import { computed, signal } from '@angular/core';\nimport type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport {\n resolveActiveJourney,\n resolveActiveStep,\n} from './editorial-runtime.helpers';\nimport { resolveEditorialRuntimeSnapshot } from './editorial-preset-resolver';\nimport type {\n EditorialResolvedJourney,\n EditorialResolvedStep,\n EditorialRuntimeSnapshot,\n} from './editorial-runtime-snapshot.model';\n\nexport class EditorialRuntimeState {\n private readonly journeyId = signal<string | null>(null);\n private readonly stepId = signal<string | null>(null);\n\n readonly activeJourneyId = this.journeyId.asReadonly();\n readonly activeStepId = this.stepId.asReadonly();\n\n connect(\n solution: () => EditorialSolutionDefinition | null,\n instance: () => EditorialTemplateInstance | null,\n runtimeContext: () => Record<string, unknown> | null,\n ): {\n snapshot: () => EditorialRuntimeSnapshot;\n journeys: () => EditorialResolvedJourney[];\n activeJourney: () => EditorialResolvedJourney | null;\n activeStep: () => EditorialResolvedStep | null;\n } {\n const snapshot = computed(() =>\n resolveEditorialRuntimeSnapshot({\n solution: solution(),\n instance: instance(),\n runtimeContext: runtimeContext(),\n }),\n );\n const journeys = computed(() => snapshot().journeys);\n const activeJourney = computed(() =>\n resolveActiveJourney(journeys(), this.journeyId()),\n );\n const activeStep = computed(() =>\n resolveActiveStep(activeJourney(), this.stepId()),\n );\n return {\n snapshot,\n journeys,\n activeJourney,\n activeStep,\n };\n }\n\n selectJourney(journeyId: string): void {\n this.journeyId.set(journeyId);\n this.stepId.set(null);\n }\n\n selectStep(stepId: string): void {\n this.stepId.set(stepId);\n }\n}\n","import type { EditorialRuntimeDiagnostic } from './editorial-runtime-diagnostics.model';\nimport type { EditorialRuntimeSnapshot } from './editorial-runtime-snapshot.model';\n\nexport type EditorialRuntimeFallbackMode =\n | 'normal'\n | 'warning'\n | 'degraded'\n | 'blocked';\n\nexport interface EditorialRuntimeFallbackState {\n mode: EditorialRuntimeFallbackMode;\n progressionBlocked: boolean;\n hasGlobalErrors: boolean;\n hasActiveStepErrors: boolean;\n hasWarnings: boolean;\n requiresEngineAttention: boolean;\n diagnostics: EditorialRuntimeDiagnostic[];\n blockingDiagnostics: EditorialRuntimeDiagnostic[];\n}\n\nexport interface EditorialRuntimeFallbackScope {\n journeyId?: string | null;\n stepId?: string | null;\n}\n\nexport function deriveRuntimeFallbackState(\n snapshot: EditorialRuntimeSnapshot,\n scope: EditorialRuntimeFallbackScope = {},\n): EditorialRuntimeFallbackState {\n const diagnostics = snapshot.diagnostics.items;\n const blockingDiagnostics = diagnostics.filter((item) => {\n if (item.severity !== 'error') {\n return false;\n }\n\n if (item.scopeKind === 'global') {\n return true;\n }\n\n return item.journeyId === scope.journeyId && item.stepId === scope.stepId;\n });\n const hasGlobalErrors = diagnostics.some(\n (item) => item.severity === 'error' && item.scopeKind === 'global',\n );\n const hasActiveStepErrors = diagnostics.some(\n (item) =>\n item.severity === 'error'\n && item.scopeKind !== 'global'\n && item.journeyId === scope.journeyId\n && item.stepId === scope.stepId,\n );\n const hasAnyErrors = diagnostics.some((item) => item.severity === 'error');\n const hasWarnings = diagnostics.some((item) => item.severity === 'warning');\n const requiresEngineAttention = diagnostics.some((item) =>\n item.code === 'data-collection-adapter-missing',\n );\n\n let mode: EditorialRuntimeFallbackMode = 'normal';\n if (blockingDiagnostics.length) {\n mode = 'blocked';\n } else if (hasAnyErrors || requiresEngineAttention) {\n mode = 'degraded';\n } else if (hasWarnings) {\n mode = 'warning';\n }\n\n return {\n mode,\n progressionBlocked: blockingDiagnostics.length > 0,\n hasGlobalErrors,\n hasActiveStepErrors,\n hasWarnings,\n requiresEngineAttention,\n diagnostics,\n blockingDiagnostics,\n };\n}\n","import type {\n EditorialThemeTokens,\n} from '@praxisui/core';\n\nexport function buildRuntimeCssVars(\n theme?: EditorialThemeTokens | null,\n): string {\n if (!theme) {\n return '';\n }\n\n const vars: Array<[string, string | undefined]> = [\n ['--editorial-page-background', theme.color?.pageBackground],\n ['--editorial-surface-primary', theme.color?.surfacePrimary],\n ['--editorial-surface-secondary', theme.color?.surfaceSecondary],\n ['--editorial-border-color', theme.color?.border],\n ['--editorial-text-primary', theme.color?.textPrimary],\n ['--editorial-text-secondary', theme.color?.textSecondary],\n ['--editorial-accent', theme.color?.accent],\n ['--editorial-accent-contrast', theme.color?.accentContrast],\n ['--editorial-success', theme.color?.success],\n ['--editorial-warning', theme.color?.warning],\n ['--editorial-danger', theme.color?.danger],\n ['--editorial-muted', theme.color?.muted],\n ['--editorial-step-active', theme.color?.stepActive],\n ['--editorial-step-completed', theme.color?.stepCompleted],\n ['--editorial-step-pending', theme.color?.stepPending],\n ['--editorial-step-blocked', theme.color?.stepBlocked],\n ['--editorial-connector', theme.color?.connector],\n ['--editorial-cta-primary', theme.color?.ctaPrimary],\n ['--editorial-cta-primary-text', theme.color?.ctaPrimaryText],\n ['--editorial-cta-secondary', theme.color?.ctaSecondary],\n ['--editorial-cta-secondary-text', theme.color?.ctaSecondaryText],\n ['--editorial-shell-radius', theme.radius?.shell],\n ['--editorial-card-radius', theme.radius?.card],\n ['--editorial-button-radius', theme.radius?.button],\n ['--editorial-field-radius', theme.radius?.field],\n ['--editorial-step-radius', theme.radius?.step],\n ['--editorial-shell-shadow', theme.shadow?.shell],\n ['--editorial-card-shadow', theme.shadow?.card],\n ['--editorial-floating-shadow', theme.shadow?.floating],\n ['--editorial-shell-border-width', theme.borderWidth?.shell],\n ['--editorial-card-border-width', theme.borderWidth?.card],\n ['--editorial-field-border-width', theme.borderWidth?.field],\n ['--editorial-active-step-border-width', theme.borderWidth?.activeStep],\n ['--editorial-title-font-family', theme.typography?.titleFontFamily],\n ['--editorial-body-font-family', theme.typography?.bodyFontFamily],\n ['--editorial-title-weight', stringifyToken(theme.typography?.titleWeight)],\n ['--editorial-body-weight', stringifyToken(theme.typography?.bodyWeight)],\n ['--editorial-hero-title-size', theme.typography?.heroTitleSize],\n ['--editorial-step-title-size', theme.typography?.stepTitleSize],\n ['--editorial-body-size', theme.typography?.bodySize],\n ['--editorial-caption-size', theme.typography?.captionSize],\n ];\n\n const textPrimaryRgb = toRgbTuple(theme.color?.textPrimary);\n const textSecondaryRgb = toRgbTuple(theme.color?.textSecondary);\n const surfacePrimaryRgb = toRgbTuple(theme.color?.surfacePrimary);\n const surfaceSecondaryRgb = toRgbTuple(theme.color?.surfaceSecondary);\n\n if (textPrimaryRgb) {\n vars.push(['--editorial-text-primary-rgb', textPrimaryRgb]);\n }\n if (textSecondaryRgb) {\n vars.push(['--editorial-text-secondary-rgb', textSecondaryRgb]);\n }\n if (surfacePrimaryRgb) {\n vars.push(['--editorial-surface-primary-rgb', surfacePrimaryRgb]);\n }\n if (surfaceSecondaryRgb) {\n vars.push(['--editorial-surface-secondary-rgb', surfaceSecondaryRgb]);\n }\n\n return vars\n .filter(([, value]) => Boolean(value))\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n}\n\nfunction stringifyToken(value?: string | number | null): string | undefined {\n if (value === undefined || value === null || value === '') {\n return undefined;\n }\n\n return String(value);\n}\n\nfunction toRgbTuple(value?: string | null): string | undefined {\n if (!value) {\n return undefined;\n }\n\n const normalized = value.trim();\n const hex = normalized.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);\n if (hex) {\n const raw = hex[1];\n const expanded = raw.length === 3\n ? raw.split('').map((char) => `${char}${char}`).join('')\n : raw;\n const r = parseInt(expanded.slice(0, 2), 16);\n const g = parseInt(expanded.slice(2, 4), 16);\n const b = parseInt(expanded.slice(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n }\n\n const rgb = normalized.match(\n /^rgba?\\(\\s*(\\d{1,3})[\\s,]+(\\d{1,3})[\\s,]+(\\d{1,3})(?:[\\s,\\/]+[\\d.]+)?\\s*\\)$/i,\n );\n if (rgb) {\n return `${rgb[1]}, ${rgb[2]}, ${rgb[3]}`;\n }\n\n return undefined;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n PraxisI18nService,\n type PraxisTranslationParams,\n} from '@praxisui/core';\nimport type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport {\n DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,\n type EditorialRuntimeHostConfig,\n} from './editorial-runtime.contract';\nimport { EditorialBlockRendererComponent } from './renderers/editorial-block-renderer.component';\nimport { EditorialStepperComponent } from './renderers/editorial-stepper.component';\nimport { EditorialRuntimeState } from './runtime/editorial-runtime-state';\nimport { getVisibleBlocks } from './runtime/editorial-runtime.helpers';\nimport type {\n EditorialResolvedJourney,\n EditorialRuntimeSnapshot,\n} from './runtime/editorial-runtime-snapshot.model';\nimport type { EditorialRuntimeDiagnostic } from './runtime/editorial-runtime-diagnostics.model';\nimport type { EditorialRuntimeOperationalEvent } from './runtime/editorial-runtime-events.model';\nimport {\n deriveRuntimeFallbackState,\n type EditorialRuntimeFallbackState,\n} from './runtime/editorial-runtime-fallback';\nimport { buildRuntimeCssVars } from './runtime/editorial-runtime-theme.helpers';\nimport {\n buildRuntimeLayoutCss,\n resolveDensity,\n resolveRuntimeOrientation,\n resolveShellVariant,\n} from './runtime/editorial-runtime-presentation.helpers';\n\n@Component({\n selector: 'praxis-editorial-form-runtime',\n standalone: true,\n imports: [CommonModule, EditorialBlockRendererComponent, EditorialStepperComponent],\n template: `\n <section\n class=\"editorial-runtime\"\n [class.orientation-horizontal]=\"effectiveOrientation() === 'horizontal'\"\n [class.orientation-vertical]=\"effectiveOrientation() === 'vertical'\"\n [class.density-compact]=\"effectiveDensity() === 'compact'\"\n [class.density-comfortable]=\"effectiveDensity() === 'comfortable'\"\n [class.density-relaxed]=\"effectiveDensity() === 'relaxed'\"\n [attr.data-shell-variant]=\"shellVariant()\"\n [style]=\"runtimeStyleAttr()\"\n >\n @if (runtimeDiagnostics().items.length) {\n <section\n class=\"diagnostics-panel\"\n [class.error]=\"runtimeDiagnostics().hasErrors\"\n [class.warning]=\"runtimeDiagnostics().hasWarnings\"\n [attr.role]=\"runtimeDiagnostics().hasErrors ? 'alert' : 'status'\"\n [attr.aria-live]=\"runtimeDiagnostics().hasErrors ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n >\n <h2>{{ t('runtime.diagnostics.title', 'Diagnosticos do runtime') }}</h2>\n <p>{{ diagnosticsMessage() }}</p>\n <div\n class=\"diagnostics-summary\"\n [attr.aria-label]=\"t('runtime.diagnostics.severitySummary', 'Resumo de severidade')\"\n >\n <span class=\"summary-pill error\">{{ t('runtime.diagnostics.errorsCount', 'Erros: {count}', { count: diagnosticsErrorCount() }) }}</span>\n <span class=\"summary-pill warning\">{{ t('runtime.diagnostics.warningsCount', 'Avisos: {count}', { count: diagnosticsWarningCount() }) }}</span>\n <span class=\"summary-pill info\">{{ t('runtime.diagnostics.infoCount', 'Infos: {count}', { count: diagnosticsInfoCount() }) }}</span>\n </div>\n <details class=\"diagnostics-details\">\n <summary>\n {{ t('runtime.diagnostics.details', 'Ver detalhes ({count})', { count: diagnosticItems().length }) }}\n </summary>\n @if (globalDiagnostics().length) {\n <section\n class=\"diagnostic-group global\"\n [attr.aria-label]=\"t('runtime.diagnostics.globalErrors', 'Erros globais do runtime')\"\n >\n <h3>{{ t('runtime.diagnostics.globalErrors', 'Erros globais do runtime') }}</h3>\n <ul class=\"diagnostics-list\">\n @for (item of globalDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n <ul class=\"diagnostics-list\">\n @for (item of contextualDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </details>\n </section>\n }\n\n @if (runtimeTitle(); as title) {\n <header class=\"runtime-header\">\n <span class=\"runtime-state-pill\" [attr.data-mode]=\"fallbackState().mode\">\n {{ fallbackLabel() }}\n </span>\n @if (runtimeEyebrow()) {\n <p class=\"eyebrow\">{{ runtimeEyebrow() }}</p>\n }\n <h1>{{ title }}</h1>\n @if (runtimeDescription()) {\n <p class=\"description\">{{ runtimeDescription() }}</p>\n }\n </header>\n\n @if (journeys().length > 1) {\n <nav\n class=\"journey-tabs\"\n [attr.aria-label]=\"t('runtime.journeys.ariaLabel', 'Jornadas editoriais')\"\n >\n @for (journey of journeys(); track journey.journeyId) {\n <button\n type=\"button\"\n class=\"journey-tab\"\n [class.active]=\"activeJourney()?.journeyId === journey.journeyId\"\n [disabled]=\"isJourneySelectionBlocked(journey.journeyId)\"\n [attr.aria-describedby]=\"isJourneySelectionBlocked(journey.journeyId) ? 'navigation-blocking-note' : null\"\n (click)=\"selectJourney(journey.journeyId)\"\n >\n {{ journey.label }}\n @if (journeyErrorCount(journey.journeyId)) {\n <span\n class=\"status-badge error\"\n [attr.aria-label]=\"t('runtime.journeys.errors', 'Jornada com erros')\"\n >\n {{ journeyErrorCount(journey.journeyId) }}\n </span>\n } @else if (journeyWarningCount(journey.journeyId)) {\n <span\n class=\"status-badge warning\"\n [attr.aria-label]=\"t('runtime.journeys.warnings', 'Jornada com avisos')\"\n >\n {{ journeyWarningCount(journey.journeyId) }}\n </span>\n }\n </button>\n }\n </nav>\n }\n\n @if (activeJourney(); as journey) {\n <section class=\"journey-card\">\n <header class=\"journey-header\">\n <h2>{{ journey.label }}</h2>\n @if (journey.description) {\n <p>{{ journey.description }}</p>\n }\n </header>\n\n @if (journey.steps.length > 1 && stepperVisible()) {\n <praxis-editorial-stepper\n [steps]=\"journey.steps\"\n [activeStepId]=\"activeStep()?.stepId ?? null\"\n [config]=\"stepperConfig()\"\n [orientation]=\"effectiveOrientation()\"\n [progressionBlocked]=\"isForwardNavigationBlocked()\"\n [isStepSelectionBlocked]=\"stepSelectionBlocker\"\n (stepSelected)=\"selectStep($event)\"\n />\n }\n\n @if (activeStep(); as step) {\n <section\n class=\"step-panel\"\n [class.error]=\"activeStepHasErrors() || activeGlobalDiagnostics().length\"\n [class.warning]=\"!activeStepHasErrors() && !activeGlobalDiagnostics().length && activeStepHasWarnings()\"\n >\n <header class=\"step-header\">\n <div>\n <h3>{{ step.label }}</h3>\n @if (step.description) {\n <p>{{ step.description }}</p>\n }\n </div>\n <div class=\"step-counter\">\n {{\n t('runtime.step.counter', 'Etapa {current} de {total}', {\n current: currentStepIndex() + 1,\n total: journey.steps.length,\n })\n }}\n </div>\n </header>\n\n @if (activeStepDiagnostics().length) {\n <section\n class=\"step-diagnostics\"\n [class.error]=\"activeStepHasErrors()\"\n [class.warning]=\"!activeStepHasErrors() && activeStepHasWarnings()\"\n [attr.role]=\"activeStepHasErrors() ? 'alert' : 'status'\"\n [attr.aria-live]=\"activeStepHasErrors() ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n >\n <h4>{{ t('runtime.step.statusTitle', 'Situacao desta etapa') }}</h4>\n <ul class=\"diagnostics-list contextual\">\n @for (item of activeStepDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n\n @if (activeGlobalDiagnostics().length) {\n <section\n class=\"step-diagnostics global\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n >\n <h4>{{ t('runtime.step.globalErrorTitle', 'Erro global do runtime') }}</h4>\n <ul class=\"diagnostics-list contextual\">\n @for (item of activeGlobalDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n\n <div class=\"block-stack\">\n @for (block of visibleBlocks(); track block.blockId) {\n <praxis-editorial-block-renderer\n [block]=\"block\"\n [runtimeContext]=\"resolvedContext()\"\n [solution]=\"solution()\"\n [instance]=\"instance()\"\n (runtimeContextChange)=\"updateRuntimeContext($event)\"\n (blockAction)=\"handleBlockAction($event)\"\n (operationalEvent)=\"emitOperationalEvent($event)\"\n />\n }\n </div>\n\n @if (journey.steps.length > 1) {\n <footer class=\"step-actions\">\n <button\n type=\"button\"\n class=\"secondary\"\n (click)=\"goToPreviousStep()\"\n [disabled]=\"!hasPreviousStep()\"\n >\n {{ t('runtime.actions.previous', 'Etapa anterior') }}\n </button>\n <button\n type=\"button\"\n class=\"primary\"\n (click)=\"goToNextStep()\"\n [disabled]=\"!hasNextStep() || isForwardNavigationBlocked()\"\n [attr.aria-describedby]=\"isForwardNavigationBlocked() ? 'navigation-blocking-note' : null\"\n >\n {{\n isForwardNavigationBlocked()\n ? t('runtime.actions.nextBlocked', 'Corrija os erros para avancar')\n : t('runtime.actions.next', 'Proxima etapa')\n }}\n </button>\n </footer>\n @if (isForwardNavigationBlocked()) {\n <p id=\"navigation-blocking-note\" class=\"step-blocking-note\">\n {{ navigationBlockingMessage() }}\n </p>\n }\n }\n </section>\n }\n </section>\n } @else {\n <section class=\"empty-state\">\n <h2>{{ t('runtime.empty.noJourneyTitle', 'Editorial runtime sem jornada') }}</h2>\n <p>\n {{ t('runtime.empty.noJourneyDescription', 'Nenhuma jornada editorial foi resolvida para o estado atual.') }}\n </p>\n </section>\n }\n } @else {\n <section class=\"empty-state\">\n <h2>{{ t('runtime.empty.noSolutionTitle', 'Editorial runtime vazio') }}</h2>\n <p>\n {{ t('runtime.empty.noSolutionDescription', 'Forneca uma solution ou instance editorial para materializar a jornada.') }}\n </p>\n </section>\n }\n </section>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .editorial-runtime {\n display: grid;\n gap: 24px;\n padding: var(--editorial-page-padding, 24px);\n color: var(--editorial-text-primary, var(--md-sys-color-on-surface, #1b1b1f));\n background: var(--editorial-page-background, var(--md-sys-color-surface, #fdf8fd));\n font-family: var(--editorial-body-font-family, inherit);\n }\n\n .runtime-header,\n .journey-card,\n .empty-state,\n .diagnostics-panel {\n border: var(--editorial-shell-border-width, 1px) solid color-mix(in srgb, var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 70%, transparent);\n border-radius: var(--editorial-shell-radius, 20px);\n background: var(--editorial-surface-secondary, var(--md-sys-color-surface-container-low, #f7f2fa));\n padding: var(--editorial-shell-padding, 20px);\n box-shadow: var(--editorial-shell-shadow, none);\n }\n\n .diagnostics-panel {\n display: grid;\n gap: 10px;\n }\n\n .diagnostics-panel.warning {\n border-color: color-mix(in srgb, #b26a00 55%, var(--md-sys-color-outline-variant, #cac4d0));\n background: color-mix(in srgb, #fff4de 78%, var(--md-sys-color-surface-container-low, #f7f2fa));\n }\n\n .diagnostics-panel.error {\n border-color: color-mix(in srgb, #b3261e 60%, var(--md-sys-color-outline-variant, #cac4d0));\n background: color-mix(in srgb, #fde7e9 78%, var(--md-sys-color-surface-container-low, #f7f2fa));\n }\n\n .diagnostics-list {\n margin: 0;\n padding-left: 18px;\n display: grid;\n gap: 8px;\n }\n\n .diagnostics-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .summary-pill {\n display: inline-flex;\n align-items: center;\n min-height: 32px;\n padding: 6px 10px;\n border-radius: 999px;\n font-size: 0.85rem;\n border: 1px solid transparent;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 85%, transparent);\n }\n\n .summary-pill.error {\n border-color: color-mix(in srgb, #b3261e 45%, transparent);\n }\n\n .summary-pill.warning {\n border-color: color-mix(in srgb, #b26a00 45%, transparent);\n }\n\n .summary-pill.info {\n border-color: color-mix(in srgb, #00639b 45%, transparent);\n }\n\n .status-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 22px;\n min-height: 22px;\n padding: 0 6px;\n border-radius: 999px;\n font-size: 0.75rem;\n font-weight: 700;\n background: var(--md-sys-color-surface, #fff);\n }\n\n .status-badge.error {\n color: #8c1d18;\n background: #fde7e9;\n }\n\n .status-badge.warning {\n color: #7a4b00;\n background: #fff4de;\n }\n\n .diagnostics-details summary {\n cursor: pointer;\n font-weight: 600;\n }\n\n .diagnostic-group {\n display: grid;\n gap: 8px;\n padding: 12px 0;\n }\n\n .diagnostic-group.global {\n border-bottom: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n margin-bottom: 12px;\n }\n\n .step-panel.error {\n border-left: 4px solid #b3261e;\n }\n\n .step-panel.warning {\n border-left: 4px solid #b26a00;\n }\n\n .step-diagnostics {\n display: grid;\n gap: 8px;\n padding: 14px 16px;\n border-radius: 16px;\n }\n\n .step-diagnostics.error {\n background: #fde7e9;\n color: #5b1210;\n }\n\n .step-diagnostics.warning {\n background: #fff4de;\n color: #6b4300;\n }\n\n .step-diagnostics.global {\n background: #fde7e9;\n color: #5b1210;\n border: 1px solid color-mix(in srgb, #b3261e 35%, transparent);\n }\n\n .diagnostics-list.contextual {\n padding-left: 16px;\n }\n\n .diagnostic-location {\n display: block;\n margin-top: 4px;\n font-size: 0.82rem;\n opacity: 0.85;\n }\n\n .step-blocking-note {\n font-size: 0.9rem;\n color: #8c1d18;\n }\n\n .eyebrow {\n margin: 0 0 8px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-size: var(--editorial-caption-size, 0.75rem);\n color: var(--editorial-accent, var(--md-sys-color-primary, #6750a4));\n font-weight: 700;\n }\n\n .runtime-state-pill {\n justify-self: start;\n display: inline-flex;\n align-items: center;\n min-height: 30px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 0.8rem;\n font-weight: 700;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, transparent);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 70%, transparent);\n }\n\n .runtime-state-pill[data-mode='warning'] {\n color: #7a4b00;\n background: #fff4de;\n }\n\n .runtime-state-pill[data-mode='degraded'] {\n color: #8c1d18;\n background: #fde7e9;\n }\n\n .runtime-state-pill[data-mode='blocked'] {\n color: #8c1d18;\n background: #fde7e9;\n border-color: color-mix(in srgb, #b3261e 55%, transparent);\n }\n\n h1,\n h2,\n h3,\n p {\n margin: 0;\n }\n\n h1 {\n font-size: var(--editorial-hero-title-size, 2rem);\n line-height: 1.1;\n }\n\n .step-header h3 {\n font-size: var(--editorial-step-title-size, 1.25rem);\n line-height: 1.2;\n }\n\n .runtime-header,\n .journey-card,\n .journey-header,\n .step-panel {\n display: grid;\n gap: 12px;\n }\n\n .editorial-runtime[data-shell-variant='sidebar-journey'] .journey-card {\n grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);\n align-items: start;\n }\n\n .orientation-vertical .journey-card {\n grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);\n align-items: start;\n }\n\n .description,\n .journey-header p,\n .step-header p,\n .step-counter,\n .empty-state p {\n font-size: var(--editorial-body-size, 1rem);\n color: var(--editorial-text-secondary, var(--md-sys-color-on-surface-variant, #49454f));\n }\n\n .journey-tabs,\n .step-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n align-items: center;\n }\n\n .journey-tab,\n .step-actions button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n padding: 10px 12px;\n border-radius: var(--editorial-button-radius, 999px);\n border: 1px solid color-mix(\n in srgb,\n var(--editorial-border-color, var(--md-sys-color-outline-variant, #cac4d0)) 75%,\n transparent\n );\n background: var(--editorial-surface-primary, var(--md-sys-color-surface, #fff));\n color: inherit;\n box-shadow: var(--editorial-card-shadow, none);\n cursor: pointer;\n }\n\n .journey-tab.active,\n .step-actions button.primary {\n background: var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)));\n color: var(--editorial-cta-primary-text, var(--editorial-accent-contrast, var(--md-sys-color-on-primary, #fff)));\n border-color: transparent;\n }\n\n .step-actions button.secondary {\n color: var(--editorial-cta-primary, var(--editorial-accent, var(--md-sys-color-primary, #6750a4)));\n }\n\n .step-header {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n }\n\n .block-stack {\n display: grid;\n gap: var(--editorial-block-gap, 16px);\n }\n\n .step-actions button[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .density-compact {\n --editorial-page-padding: 16px;\n --editorial-shell-padding: 16px;\n --editorial-block-gap: 12px;\n }\n\n .density-comfortable {\n --editorial-page-padding: 24px;\n --editorial-shell-padding: 20px;\n --editorial-block-gap: 16px;\n }\n\n .density-relaxed {\n --editorial-page-padding: 32px;\n --editorial-shell-padding: 28px;\n --editorial-block-gap: 20px;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialFormRuntimeComponent {\n private readonly i18n = inject(PraxisI18nService);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly hostConfig = input<EditorialRuntimeHostConfig | null>(null);\n readonly snapshotChange = output<EditorialRuntimeSnapshot>();\n readonly fallbackChange = output<EditorialRuntimeFallbackState>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n private readonly state = new EditorialRuntimeState();\n private readonly solutionState = signal<EditorialSolutionDefinition | null>(null);\n private readonly instanceState = signal<EditorialTemplateInstance | null>(null);\n private readonly runtimeContextState = signal<Record<string, unknown> | null>(null);\n private readonly compactViewport = signal(false);\n private lastSnapshotSignature: string | null = null;\n private lastDiagnosticsSignature: string | null = null;\n private lastFallbackSignature: string | null = null;\n private lastBlockingSignature: string | null = null;\n private lastOverrideConflictSignature: string | null = null;\n private readonly runtime = this.state.connect(\n this.solutionState,\n this.instanceState,\n this.runtimeContextState,\n );\n\n protected readonly snapshot = computed(() => this.runtime.snapshot());\n protected readonly resolvedHostConfig = computed(() => ({\n ...DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,\n ...(this.hostConfig() ?? {}),\n }));\n protected readonly journeys = computed<EditorialResolvedJourney[]>(() => this.runtime.journeys());\n protected readonly activeJourney = computed(() => this.runtime.activeJourney());\n protected readonly activeStep = computed(() => this.runtime.activeStep());\n protected readonly resolvedContext = computed(() => this.snapshot().context);\n protected readonly runtimeDiagnostics = computed(() => this.snapshot().diagnostics);\n protected readonly fallbackState = computed(() =>\n deriveRuntimeFallbackState(this.snapshot(), {\n journeyId: this.activeJourney()?.journeyId,\n stepId: this.activeStep()?.stepId,\n }),\n );\n protected readonly diagnosticItems = computed(() =>\n sortDiagnostics(dedupeDiagnostics(this.runtimeDiagnostics().items)),\n );\n protected readonly globalDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => item.scopeKind === 'global'),\n );\n protected readonly contextualDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => item.scopeKind !== 'global'),\n );\n protected readonly diagnosticsErrorCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'error').length,\n );\n protected readonly diagnosticsWarningCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'warning').length,\n );\n protected readonly diagnosticsInfoCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'info').length,\n );\n protected readonly activeStepDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => isDiagnosticInActiveStep(item, this.activeJourney()?.journeyId, this.activeStep()?.stepId)),\n );\n protected readonly activeStepHasErrors = computed(() =>\n this.activeStepDiagnostics().some((item) => item.severity === 'error'),\n );\n protected readonly activeStepHasWarnings = computed(() =>\n this.activeStepDiagnostics().some((item) => item.severity === 'warning'),\n );\n protected readonly diagnosticsMessage = computed(() =>\n this.fallbackState().mode === 'blocked'\n ? this.t('runtime.diagnostics.message.blocked', 'Existem inconsistencias bloqueadoras que impedem a progressao segura do fluxo editorial.')\n : this.fallbackState().mode === 'degraded'\n ? this.t('runtime.diagnostics.message.degraded', 'O runtime esta operando de forma degradada e requer atencao operacional.')\n : this.runtimeDiagnostics().hasErrors\n ? this.t('runtime.diagnostics.message.error', 'Existem inconsistencias que podem comprometer a experiencia editorial.')\n : this.t('runtime.diagnostics.message.warning', 'Existem avisos operacionais para revisar nesta instancia editorial.'),\n );\n protected readonly activeGlobalDiagnostics = computed(() =>\n this.globalDiagnostics().filter((item) => item.severity === 'error'),\n );\n protected readonly visibleBlocks = computed(() =>\n getVisibleBlocks(this.activeStep()?.blocks, this.resolvedContext()),\n );\n protected readonly runtimeTitle = computed(() =>\n this.snapshot().title,\n );\n protected readonly runtimeDescription = computed(() =>\n this.snapshot().description,\n );\n protected readonly runtimeEyebrow = computed(() =>\n this.snapshot().problemType,\n );\n protected readonly presentation = computed(() => this.snapshot().presentation);\n protected readonly runtimeCssVars = computed(() =>\n buildRuntimeCssVars(this.presentation()?.theme),\n );\n protected readonly runtimeLayoutCss = computed(() =>\n buildRuntimeLayoutCss(this.presentation()?.layout),\n );\n protected readonly runtimeStyleAttr = computed(() =>\n [this.runtimeCssVars(), this.runtimeLayoutCss()].filter(Boolean).join(';'),\n );\n protected readonly effectiveOrientation = computed(() =>\n resolveRuntimeOrientation(\n this.presentation()?.layout,\n this.presentation()?.stepper,\n this.compactViewport(),\n ),\n );\n protected readonly shellVariant = computed(() =>\n resolveShellVariant(this.presentation()?.layout),\n );\n protected readonly effectiveDensity = computed(() =>\n resolveDensity(this.presentation()?.layout),\n );\n protected readonly stepperConfig = computed(() => this.presentation()?.stepper ?? null);\n protected readonly stepperVisible = computed(() => this.stepperConfig()?.visible !== false);\n protected readonly stepSelectionBlocker = (stepId: string) =>\n this.isStepSelectionBlocked(stepId);\n protected readonly fallbackLabel = computed(() => {\n if (this.fallbackState().mode === 'blocked') {\n return this.t('runtime.fallback.blocked', 'Runtime bloqueado');\n }\n if (this.fallbackState().mode === 'degraded') {\n return this.t('runtime.fallback.degraded', 'Runtime degradado');\n }\n if (this.fallbackState().mode === 'warning') {\n return this.t('runtime.fallback.warning', 'Runtime com aviso');\n }\n return this.t('runtime.fallback.healthy', 'Runtime saudavel');\n });\n protected readonly currentStepIndex = computed(() => {\n const journey = this.activeJourney();\n const step = this.activeStep();\n if (!journey || !step) {\n return 0;\n }\n return Math.max(\n 0,\n journey.steps.findIndex((candidate) => candidate.stepId === step.stepId),\n );\n });\n protected readonly hasPreviousStep = computed(() => this.currentStepIndex() > 0);\n protected readonly hasNextStep = computed(() => {\n const journey = this.activeJourney();\n return !!journey && this.currentStepIndex() < journey.steps.length - 1;\n });\n\n constructor() {\n effect(() => {\n this.solutionState.set(this.solution());\n this.instanceState.set(this.instance());\n this.runtimeContextState.set(this.runtimeContext());\n });\n\n effect((onCleanup) => {\n const breakpoint = this.presentation()?.layout?.responsive?.collapseStepperBelow;\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function' || !breakpoint) {\n this.compactViewport.set(false);\n return;\n }\n\n const media = window.matchMedia(`(max-width: ${breakpoint})`);\n const sync = () => this.compactViewport.set(media.matches);\n sync();\n\n const listener = () => sync();\n if (typeof media.addEventListener === 'function') {\n media.addEventListener('change', listener);\n onCleanup(() => media.removeEventListener('change', listener));\n return;\n }\n\n media.addListener(listener);\n onCleanup(() => media.removeListener(listener));\n });\n\n effect(() => {\n const snapshot = this.snapshot();\n const snapshotSignature = buildSnapshotSignature(snapshot);\n if (snapshotSignature !== this.lastSnapshotSignature) {\n this.lastSnapshotSignature = snapshotSignature;\n this.snapshotChange.emit(snapshot);\n }\n });\n\n effect(() => {\n const fallback = this.fallbackState();\n const signature = `${fallback.mode}:${fallback.progressionBlocked}:${fallback.requiresEngineAttention}:${fallback.blockingDiagnostics.map((item) => item.path ?? item.message).join('|')}`;\n if (signature !== this.lastFallbackSignature) {\n this.lastFallbackSignature = signature;\n this.fallbackChange.emit(fallback);\n this.emitOperationalEvent({\n eventType: 'fallback-changed',\n timestamp: Date.now(),\n severity: fallback.mode === 'blocked'\n ? 'error'\n : fallback.mode === 'degraded'\n ? 'warning'\n : 'info',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n fallback,\n },\n });\n }\n\n if (!fallback.blockingDiagnostics.length) {\n return;\n }\n\n const blockingSignature = fallback.blockingDiagnostics\n .map((item) => item.path ?? item.message)\n .join('|');\n if (blockingSignature === this.lastBlockingSignature) {\n return;\n }\n this.lastBlockingSignature = blockingSignature;\n this.emitOperationalEvent({\n eventType: 'blocking-error-detected',\n timestamp: Date.now(),\n severity: 'error',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n diagnostics: fallback.blockingDiagnostics,\n scope: fallback.hasGlobalErrors ? 'global' : 'step',\n },\n });\n });\n\n effect(() => {\n const diagnostics = this.diagnosticItems();\n const signature = diagnostics\n .map((item) => `${item.severity}:${item.code}:${item.path ?? ''}`)\n .join('|');\n if (signature === this.lastDiagnosticsSignature) {\n return;\n }\n this.lastDiagnosticsSignature = signature;\n\n const errorCount = diagnostics.filter((item) => item.severity === 'error').length;\n const warningCount = diagnostics.filter((item) => item.severity === 'warning').length;\n const infoCount = diagnostics.filter((item) => item.severity === 'info').length;\n this.emitOperationalEvent({\n eventType: 'diagnostics-emitted',\n timestamp: Date.now(),\n severity: errorCount ? 'error' : warningCount ? 'warning' : 'info',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n diagnostics,\n errorCount,\n warningCount,\n infoCount,\n },\n });\n\n const overrideConflictDiagnostics = diagnostics.filter(\n (item) => item.code === 'block-override-conflict',\n );\n const overrideSignature = overrideConflictDiagnostics\n .map((item) => item.path ?? item.message)\n .join('|');\n if (overrideConflictDiagnostics.length && overrideSignature !== this.lastOverrideConflictSignature) {\n this.lastOverrideConflictSignature = overrideSignature;\n this.emitOperationalEvent({\n eventType: 'override-conflict-detected',\n timestamp: Date.now(),\n severity: 'warning',\n journeyId: overrideConflictDiagnostics[0]?.journeyId,\n stepId: overrideConflictDiagnostics[0]?.stepId,\n blockId: overrideConflictDiagnostics[0]?.blockId,\n payload: {\n diagnostics: overrideConflictDiagnostics,\n },\n });\n }\n });\n }\n\n protected selectJourney(journeyId: string): void {\n if (this.isJourneySelectionBlocked(journeyId)) {\n return;\n }\n this.state.selectJourney(journeyId);\n }\n\n protected selectStep(stepId: string): void {\n if (this.isStepSelectionBlocked(stepId)) {\n return;\n }\n this.state.selectStep(stepId);\n }\n\n protected goToPreviousStep(): void {\n const journey = this.activeJourney();\n if (!journey || !this.hasPreviousStep()) {\n return;\n }\n const previous = journey.steps[this.currentStepIndex() - 1];\n if (previous) {\n this.state.selectStep(previous.stepId);\n }\n }\n\n protected goToNextStep(): void {\n const journey = this.activeJourney();\n if (!journey || !this.hasNextStep() || this.isForwardNavigationBlocked()) {\n return;\n }\n const next = journey.steps[this.currentStepIndex() + 1];\n if (next) {\n this.state.selectStep(next.stepId);\n }\n }\n\n protected handleBlockAction(action: { blockId: string; actionId: string }): void {\n if (action.actionId === 'next-step') {\n this.goToNextStep();\n return;\n }\n\n if (action.actionId === 'previous-step') {\n this.goToPreviousStep();\n }\n }\n\n protected updateRuntimeContext(nextContext: Record<string, unknown>): void {\n this.runtimeContextState.set(nextContext);\n }\n\n protected journeyErrorCount(journeyId: string): number {\n return this.countDiagnostics((item) => item.journeyId === journeyId && item.severity === 'error');\n }\n\n protected journeyWarningCount(journeyId: string): number {\n return this.countDiagnostics((item) => item.journeyId === journeyId && item.severity === 'warning');\n }\n\n protected stepErrorCount(stepId: string): number {\n return this.countDiagnostics(\n (item) => item.journeyId === this.activeJourney()?.journeyId && item.stepId === stepId && item.severity === 'error',\n );\n }\n\n protected stepWarningCount(stepId: string): number {\n return this.countDiagnostics(\n (item) => item.journeyId === this.activeJourney()?.journeyId && item.stepId === stepId && item.severity === 'warning',\n );\n }\n\n protected formatDiagnosticSeverity(item: EditorialRuntimeDiagnostic): string {\n if (item.severity === 'error') {\n return this.t('runtime.diagnostics.severity.error', 'Erro');\n }\n if (item.severity === 'warning') {\n return this.t('runtime.diagnostics.severity.warning', 'Aviso');\n }\n return this.t('runtime.diagnostics.severity.info', 'Info');\n }\n\n protected formatDiagnosticScope(item: EditorialRuntimeDiagnostic): string {\n const parts = [\n item.scopeKind === 'global'\n ? this.t('runtime.scope.global', 'Escopo: runtime global')\n : null,\n formatScopeLabel(this.t('runtime.scope.journey', 'Jornada'), item.journeyLabel, item.journeyId),\n formatScopeLabel(this.t('runtime.scope.step', 'Etapa'), item.stepLabel, item.stepId),\n formatScopeLabel(this.t('runtime.scope.block', 'Bloco'), item.blockLabel, item.blockId),\n item.path ? `${this.t('runtime.scope.path', 'Path')}: ${item.path}` : null,\n ].filter((value): value is string => Boolean(value));\n\n return parts.join(' | ');\n }\n\n protected isForwardNavigationBlocked(): boolean {\n return this.fallbackState().progressionBlocked;\n }\n\n protected isJourneySelectionBlocked(journeyId: string): boolean {\n const activeJourneyId = this.activeJourney()?.journeyId;\n if (journeyId === activeJourneyId) {\n return false;\n }\n return this.isForwardNavigationBlocked();\n }\n\n protected isStepSelectionBlocked(stepId: string): boolean {\n const activeStepId = this.activeStep()?.stepId;\n if (stepId === activeStepId) {\n return false;\n }\n if (this.stepperConfig()?.allowStepJump === false) {\n return true;\n }\n return this.isForwardNavigationBlocked();\n }\n\n protected navigationBlockingMessage(): string {\n if (this.activeGlobalDiagnostics().length) {\n return this.t(\n 'runtime.navigation.globalBlocked',\n 'A navegacao de avanço foi bloqueada porque o runtime possui erro global que precisa ser corrigido antes de continuar.',\n );\n }\n return this.t(\n 'runtime.navigation.stepBlocked',\n 'A navegacao de avanço foi bloqueada porque a etapa atual possui erro estrutural.',\n );\n }\n\n private countDiagnostics(\n predicate: (item: EditorialRuntimeDiagnostic) => boolean,\n ): number {\n return this.diagnosticItems().filter(predicate).length;\n }\n\n protected emitOperationalEvent(event: EditorialRuntimeOperationalEvent): void {\n if (!this.resolvedHostConfig().emitOperationalEvents) {\n return;\n }\n if (\n !this.resolvedHostConfig().forwardAdapterOperationalEvents\n && event.eventType.startsWith('data-collection-adapter-')\n ) {\n return;\n }\n this.operationalEvent.emit(event);\n }\n\n protected t(\n key: string,\n fallback: string,\n params?: PraxisTranslationParams,\n ): string {\n return this.i18n.t(`praxis.editorialForms.${key}`, params, fallback);\n }\n}\n\nfunction buildSnapshotSignature(snapshot: EditorialRuntimeSnapshot): string {\n return stableSerializeForSignature(snapshot);\n}\n\nfunction stableSerializeForSignature(value: unknown): string {\n if (value == null) {\n return String(value);\n }\n if (\n typeof value === 'string'\n || typeof value === 'number'\n || typeof value === 'boolean'\n ) {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableSerializeForSignature(item)).join(',')}]`;\n }\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => `${JSON.stringify(key)}:${stableSerializeForSignature(entryValue)}`);\n return `{${entries.join(',')}}`;\n }\n return JSON.stringify(String(value));\n}\n\nfunction dedupeDiagnostics(\n items: ReadonlyArray<EditorialRuntimeDiagnostic>,\n): EditorialRuntimeDiagnostic[] {\n const seen = new Set<string>();\n const deduped: EditorialRuntimeDiagnostic[] = [];\n\n for (const item of items) {\n const key = `${item.severity}:${item.code}:${item.journeyId ?? ''}:${item.stepId ?? ''}:${item.blockId ?? ''}:${item.path ?? item.message}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(item);\n }\n\n return deduped;\n}\n\nfunction sortDiagnostics(\n items: ReadonlyArray<EditorialRuntimeDiagnostic>,\n): EditorialRuntimeDiagnostic[] {\n return [...items].sort((left, right) => {\n const severityScore = getSeverityScore(left.severity) - getSeverityScore(right.severity);\n if (severityScore !== 0) {\n return severityScore;\n }\n\n const scopeScore = getScopeScore(left.scopeKind) - getScopeScore(right.scopeKind);\n if (scopeScore !== 0) {\n return scopeScore;\n }\n\n return `${left.journeyLabel ?? left.journeyId ?? ''}${left.stepLabel ?? left.stepId ?? ''}${left.blockLabel ?? left.blockId ?? ''}${left.path ?? ''}`\n .localeCompare(`${right.journeyLabel ?? right.journeyId ?? ''}${right.stepLabel ?? right.stepId ?? ''}${right.blockLabel ?? right.blockId ?? ''}${right.path ?? ''}`);\n });\n}\n\nfunction getSeverityScore(\n severity: EditorialRuntimeDiagnostic['severity'],\n): number {\n if (severity === 'error') {\n return 0;\n }\n if (severity === 'warning') {\n return 1;\n }\n return 2;\n}\n\nfunction getScopeScore(\n scopeKind: EditorialRuntimeDiagnostic['scopeKind'],\n): number {\n if (scopeKind === 'global') {\n return 0;\n }\n if (scopeKind === 'journey') {\n return 1;\n }\n if (scopeKind === 'step') {\n return 2;\n }\n return 3;\n}\n\nfunction isDiagnosticInActiveStep(\n item: EditorialRuntimeDiagnostic,\n journeyId: string | undefined,\n stepId: string | undefined,\n): boolean {\n if (!journeyId || !stepId) {\n return false;\n }\n return item.journeyId === journeyId && item.stepId === stepId;\n}\n\nfunction formatScopeLabel(\n labelName: string,\n label: string | undefined,\n id: string | undefined,\n): string | null {\n if (label && id && label !== id) {\n return `${labelName}: ${label} (${id})`;\n }\n if (label) {\n return `${labelName}: ${label}`;\n }\n if (id) {\n return `${labelName}: ${id}`;\n }\n return null;\n}\n","import {\n Type,\n reflectComponentType,\n} from '@angular/core';\nimport type { FormConfig } from '@praxisui/core';\nimport type {\n EditorialDataBlockAdapter,\n EditorialDataBlockContext,\n} from '../editorial-data-block-adapter';\nimport { provideEditorialDataBlockAdapter } from '../editorial-data-block-adapter-registry';\n\nconst REQUIRED_DYNAMIC_FORM_INPUTS = ['config', 'formId', 'editorialContext'] as const;\n\nexport interface EditorialDynamicFormAdapterOptions {\n component: Type<DynamicFormCompatibleComponent>;\n}\n\nexport interface DynamicFormCompatibleComponent {\n config: FormConfig;\n formId?: string;\n editorialContext?: Record<string, unknown> | null;\n}\n\ntype DynamicFormAdapterInputBindings = {\n config: FormConfig | null;\n formId?: string;\n editorialContext?: Record<string, unknown> | null;\n};\n\nfunction readRuntimeFormData(\n runtimeContext: Record<string, unknown> | null,\n): Record<string, unknown> {\n const formData = runtimeContext?.['formData'];\n if (!formData || typeof formData !== 'object' || Array.isArray(formData)) {\n return {};\n }\n return formData as Record<string, unknown>;\n}\n\nfunction cloneRuntimeValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneRuntimeValue(entry));\n }\n\n if (value && typeof value === 'object') {\n return { ...(value as Record<string, unknown>) };\n }\n\n return value;\n}\n\nfunction applyRuntimeFormDataDefaults(\n config: FormConfig | null,\n runtimeContext: Record<string, unknown> | null,\n): FormConfig | null {\n if (!config) {\n return null;\n }\n\n const runtimeFormData = readRuntimeFormData(runtimeContext);\n const fieldMetadata = config.fieldMetadata ?? [];\n\n if (!fieldMetadata.length || !Object.keys(runtimeFormData).length) {\n return config;\n }\n\n let changed = false;\n const nextFieldMetadata = fieldMetadata.map((field) => {\n if (!Object.prototype.hasOwnProperty.call(runtimeFormData, field.name)) {\n return field;\n }\n\n const runtimeValue = runtimeFormData[field.name];\n if ((field as { defaultValue?: unknown }).defaultValue === runtimeValue) {\n return field;\n }\n\n changed = true;\n return {\n ...field,\n defaultValue: cloneRuntimeValue(runtimeValue),\n };\n });\n\n if (!changed) {\n return config;\n }\n\n return {\n ...config,\n fieldMetadata: nextFieldMetadata,\n };\n}\n\nexport function createEditorialDynamicFormAdapter(\n options: EditorialDynamicFormAdapterOptions,\n): EditorialDataBlockAdapter {\n return {\n adapterId: 'dynamic-form',\n displayName: 'Praxis Dynamic Form',\n\n supports(_context: EditorialDataBlockContext): boolean {\n return true;\n },\n\n resolveComponent(): Type<unknown> {\n return options.component;\n },\n\n buildInputs(context: EditorialDataBlockContext): Record<string, unknown> {\n return {\n config: applyRuntimeFormDataDefaults(\n context.resolvedFormConfig,\n context.runtimeContext,\n ),\n formId: context.block.formBlockId,\n editorialContext: context.runtimeContext,\n } satisfies DynamicFormAdapterInputBindings;\n },\n\n validateComponent(component: Type<unknown>) {\n const mirror = reflectComponentType(component);\n if (!mirror) {\n return {\n ok: false as const,\n reason:\n 'O componente informado nao parece ser um componente Angular valido para o adaptador dynamic-form.',\n };\n }\n\n const availableInputs = new Set(mirror.inputs.map((input) => input.propName));\n const missingInputs = REQUIRED_DYNAMIC_FORM_INPUTS.filter(\n (inputName) => !availableInputs.has(inputName),\n );\n\n if (missingInputs.length) {\n return {\n ok: false as const,\n reason: `O componente informado nao segue a convencao do adapter dynamic-form. Inputs ausentes: ${missingInputs.join(', ')}.`,\n };\n }\n\n return { ok: true as const };\n },\n };\n}\n\nexport function provideEditorialDynamicFormAdapter(\n options: EditorialDynamicFormAdapterOptions,\n){\n return provideEditorialDataBlockAdapter(\n createEditorialDynamicFormAdapter(options),\n );\n}\n","export const PRAXIS_EDITORIAL_FORMS_EN_US = {\n 'praxis.editorialForms.runtime.diagnostics.title': 'Runtime diagnostics',\n 'praxis.editorialForms.runtime.diagnostics.severitySummary': 'Severity summary',\n 'praxis.editorialForms.runtime.diagnostics.globalErrors': 'Global runtime errors',\n 'praxis.editorialForms.runtime.diagnostics.details': 'View details ({count})',\n 'praxis.editorialForms.runtime.journeys.ariaLabel': 'Editorial journeys',\n 'praxis.editorialForms.runtime.journeys.errors': 'Journey has errors',\n 'praxis.editorialForms.runtime.journeys.warnings': 'Journey has warnings',\n 'praxis.editorialForms.runtime.step.counter': 'Step {current} of {total}',\n 'praxis.editorialForms.runtime.step.statusTitle': 'Current step status',\n 'praxis.editorialForms.runtime.step.globalErrorTitle': 'Global runtime error',\n 'praxis.editorialForms.runtime.actions.previous': 'Previous step',\n 'praxis.editorialForms.runtime.actions.next': 'Next step',\n 'praxis.editorialForms.runtime.actions.nextBlocked': 'Fix the errors to continue',\n 'praxis.editorialForms.runtime.empty.noJourneyTitle': 'Editorial runtime without journey',\n 'praxis.editorialForms.runtime.empty.noJourneyDescription': 'No editorial journey was resolved for the current state.',\n 'praxis.editorialForms.runtime.empty.noSolutionTitle': 'Empty editorial runtime',\n 'praxis.editorialForms.runtime.empty.noSolutionDescription': 'Provide an editorial solution or instance to materialize the journey.',\n 'praxis.editorialForms.runtime.fallback.blocked': 'Runtime blocked',\n 'praxis.editorialForms.runtime.fallback.degraded': 'Runtime degraded',\n 'praxis.editorialForms.runtime.fallback.warning': 'Runtime warning',\n 'praxis.editorialForms.runtime.fallback.healthy': 'Runtime healthy',\n 'praxis.editorialForms.runtime.navigation.globalBlocked': 'Forward navigation was blocked because the runtime has a global error that must be fixed before continuing.',\n 'praxis.editorialForms.runtime.navigation.stepBlocked': 'Forward navigation was blocked because the current step has a structural error.',\n 'praxis.editorialForms.runtime.diagnostics.severity.error': 'Error',\n 'praxis.editorialForms.runtime.diagnostics.severity.warning': 'Warning',\n 'praxis.editorialForms.runtime.diagnostics.severity.info': 'Info',\n 'praxis.editorialForms.runtime.diagnostics.errorsCount': 'Errors: {count}',\n 'praxis.editorialForms.runtime.diagnostics.warningsCount': 'Warnings: {count}',\n 'praxis.editorialForms.runtime.diagnostics.infoCount': 'Info: {count}',\n 'praxis.editorialForms.runtime.diagnostics.message.blocked': 'Blocking inconsistencies prevent the editorial flow from progressing safely.',\n 'praxis.editorialForms.runtime.diagnostics.message.degraded': 'The runtime is operating in a degraded mode and requires operational attention.',\n 'praxis.editorialForms.runtime.diagnostics.message.error': 'There are inconsistencies that may compromise the editorial experience.',\n 'praxis.editorialForms.runtime.diagnostics.message.warning': 'There are operational warnings to review for this editorial instance.',\n 'praxis.editorialForms.runtime.scope.global': 'Scope: global runtime',\n 'praxis.editorialForms.runtime.scope.journey': 'Journey',\n 'praxis.editorialForms.runtime.scope.step': 'Step',\n 'praxis.editorialForms.runtime.scope.block': 'Block',\n 'praxis.editorialForms.runtime.scope.path': 'Path',\n 'praxis.editorialForms.stepper.ariaLabel': 'Journey steps',\n 'praxis.editorialForms.stepper.state.completed': 'completed',\n 'praxis.editorialForms.stepper.state.active': 'current step',\n 'praxis.editorialForms.stepper.state.blocked': 'blocked',\n 'praxis.editorialForms.stepper.state.pending': 'pending',\n 'praxis.editorialForms.selection.state.selected': 'selected',\n 'praxis.editorialForms.selection.state.unselected': 'not selected',\n 'praxis.editorialForms.selection.group.label': 'Selection group',\n 'praxis.editorialForms.review.empty': '-',\n 'praxis.editorialForms.review.boolean.true': 'Yes',\n 'praxis.editorialForms.review.boolean.false': 'No',\n 'praxis.editorialForms.dataCollection.loadingTitle': 'Preparing data collection',\n 'praxis.editorialForms.dataCollection.unavailableTitle': 'Data collection unavailable',\n 'praxis.editorialForms.dataCollection.error.incompatibleTitle': 'Incompatible adapter',\n 'praxis.editorialForms.dataCollection.error.missingConfigTitle': 'Missing data collection configuration',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterTitle': 'Incomplete adapter',\n 'praxis.editorialForms.dataCollection.error.loadFailureTitle': 'Failed to load engine',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentTitle': 'Component not resolved',\n 'praxis.editorialForms.dataCollection.error.invalidComponentTitle': 'Incompatible component',\n 'praxis.editorialForms.dataCollection.fallback.invalid': 'Block \"{formBlockId}\" was materialized with an invalid state. Review formBlockId, formConfigRef and inherited editorial configuration.',\n 'praxis.editorialForms.dataCollection.fallback.missingConfig': 'Block \"{formBlockId}\" did not find data collection configuration. Lookup key checked: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.incompatible': 'Block \"{formBlockId}\" found registered adapters ({adapterIds}), but none declared compatibility for this data collection.',\n 'praxis.editorialForms.dataCollection.fallback.missingAdapter': 'Block \"{formBlockId}\" did not find data collection configuration nor a registered adapter. Check the host provider and editorial FormConfig materialization.',\n 'praxis.editorialForms.dataCollection.fallback.adapterWithoutConfig': 'Block \"{formBlockId}\" found an adapter, but did not find FormConfig at {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.unresolvedEngine': 'Configuration exists for \"{formBlockId}\" ({source}), but no data collection adapter was registered to materialize the engine.',\n 'praxis.editorialForms.dataCollection.error.incompatibleMessage': 'No registered adapter accepted block \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.availableAdapters': 'Available adapters: {adapterIds}.',\n 'praxis.editorialForms.dataCollection.error.missingConfigMessage': 'Block \"{formBlockId}\" has no resolved FormConfig for the data collection engine.',\n 'praxis.editorialForms.dataCollection.error.lookupSource': 'Lookup source: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.error.adapterRegistrationHint': 'Register a compatible component or implement resolveComponent().',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterMessage': 'Adapter \"{adapterName}\" did not expose a data collection component.',\n 'praxis.editorialForms.dataCollection.loadingMessage': 'Loading the data collection engine for \"{formBlockId}\"...',\n 'praxis.editorialForms.dataCollection.error.loadFailureMessage': 'Adapter \"{adapterName}\" failed while preparing block \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.loadFailureDetails': 'Validate the optional host provider and the availability of a compatible component.',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentMessage': 'Adapter \"{adapterName}\" did not return a component for block \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentDetails': 'Implement component or resolveComponent() with a compatible Angular component.',\n 'praxis.editorialForms.dataCollection.error.invalidComponentMessage': 'Adapter \"{adapterName}\" returned an incompatible component for \"{formBlockId}\".',\n} as const;\n","export const PRAXIS_EDITORIAL_FORMS_PT_BR = {\n 'praxis.editorialForms.runtime.diagnostics.title': 'Diagnosticos do runtime',\n 'praxis.editorialForms.runtime.diagnostics.severitySummary': 'Resumo de severidade',\n 'praxis.editorialForms.runtime.diagnostics.globalErrors': 'Erros globais do runtime',\n 'praxis.editorialForms.runtime.diagnostics.details': 'Ver detalhes ({count})',\n 'praxis.editorialForms.runtime.journeys.ariaLabel': 'Jornadas editoriais',\n 'praxis.editorialForms.runtime.journeys.errors': 'Jornada com erros',\n 'praxis.editorialForms.runtime.journeys.warnings': 'Jornada com avisos',\n 'praxis.editorialForms.runtime.step.counter': 'Etapa {current} de {total}',\n 'praxis.editorialForms.runtime.step.statusTitle': 'Situacao desta etapa',\n 'praxis.editorialForms.runtime.step.globalErrorTitle': 'Erro global do runtime',\n 'praxis.editorialForms.runtime.actions.previous': 'Etapa anterior',\n 'praxis.editorialForms.runtime.actions.next': 'Proxima etapa',\n 'praxis.editorialForms.runtime.actions.nextBlocked': 'Corrija os erros para avancar',\n 'praxis.editorialForms.runtime.empty.noJourneyTitle': 'Editorial runtime sem jornada',\n 'praxis.editorialForms.runtime.empty.noJourneyDescription': 'Nenhuma jornada editorial foi resolvida para o estado atual.',\n 'praxis.editorialForms.runtime.empty.noSolutionTitle': 'Editorial runtime vazio',\n 'praxis.editorialForms.runtime.empty.noSolutionDescription': 'Forneca uma solution ou instance editorial para materializar a jornada.',\n 'praxis.editorialForms.runtime.fallback.blocked': 'Runtime bloqueado',\n 'praxis.editorialForms.runtime.fallback.degraded': 'Runtime degradado',\n 'praxis.editorialForms.runtime.fallback.warning': 'Runtime com aviso',\n 'praxis.editorialForms.runtime.fallback.healthy': 'Runtime saudavel',\n 'praxis.editorialForms.runtime.navigation.globalBlocked': 'A navegacao de avanço foi bloqueada porque o runtime possui erro global que precisa ser corrigido antes de continuar.',\n 'praxis.editorialForms.runtime.navigation.stepBlocked': 'A navegacao de avanço foi bloqueada porque a etapa atual possui erro estrutural.',\n 'praxis.editorialForms.runtime.diagnostics.severity.error': 'Erro',\n 'praxis.editorialForms.runtime.diagnostics.severity.warning': 'Aviso',\n 'praxis.editorialForms.runtime.diagnostics.severity.info': 'Info',\n 'praxis.editorialForms.runtime.diagnostics.errorsCount': 'Erros: {count}',\n 'praxis.editorialForms.runtime.diagnostics.warningsCount': 'Avisos: {count}',\n 'praxis.editorialForms.runtime.diagnostics.infoCount': 'Infos: {count}',\n 'praxis.editorialForms.runtime.diagnostics.message.blocked': 'Existem inconsistencias bloqueadoras que impedem a progressao segura do fluxo editorial.',\n 'praxis.editorialForms.runtime.diagnostics.message.degraded': 'O runtime esta operando de forma degradada e requer atencao operacional.',\n 'praxis.editorialForms.runtime.diagnostics.message.error': 'Existem inconsistencias que podem comprometer a experiencia editorial.',\n 'praxis.editorialForms.runtime.diagnostics.message.warning': 'Existem avisos operacionais para revisar nesta instancia editorial.',\n 'praxis.editorialForms.runtime.scope.global': 'Escopo: runtime global',\n 'praxis.editorialForms.runtime.scope.journey': 'Jornada',\n 'praxis.editorialForms.runtime.scope.step': 'Etapa',\n 'praxis.editorialForms.runtime.scope.block': 'Bloco',\n 'praxis.editorialForms.runtime.scope.path': 'Path',\n 'praxis.editorialForms.stepper.ariaLabel': 'Etapas da jornada',\n 'praxis.editorialForms.stepper.state.completed': 'concluida',\n 'praxis.editorialForms.stepper.state.active': 'etapa atual',\n 'praxis.editorialForms.stepper.state.blocked': 'bloqueada',\n 'praxis.editorialForms.stepper.state.pending': 'pendente',\n 'praxis.editorialForms.selection.state.selected': 'selecionado',\n 'praxis.editorialForms.selection.state.unselected': 'nao selecionado',\n 'praxis.editorialForms.selection.group.label': 'Grupo de selecao',\n 'praxis.editorialForms.review.empty': '-',\n 'praxis.editorialForms.review.boolean.true': 'Sim',\n 'praxis.editorialForms.review.boolean.false': 'Nao',\n 'praxis.editorialForms.dataCollection.loadingTitle': 'Preparando coleta',\n 'praxis.editorialForms.dataCollection.unavailableTitle': 'Coleta nao disponivel',\n 'praxis.editorialForms.dataCollection.error.incompatibleTitle': 'Adaptador incompatível',\n 'praxis.editorialForms.dataCollection.error.missingConfigTitle': 'Configuracao de coleta ausente',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterTitle': 'Adaptador incompleto',\n 'praxis.editorialForms.dataCollection.error.loadFailureTitle': 'Falha ao carregar a engine',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentTitle': 'Componente nao resolvido',\n 'praxis.editorialForms.dataCollection.error.invalidComponentTitle': 'Componente incompatível',\n 'praxis.editorialForms.dataCollection.fallback.invalid': 'O bloco \"{formBlockId}\" foi materializado com estado invalido. Revise formBlockId, formConfigRef e a configuracao editorial herdada.',\n 'praxis.editorialForms.dataCollection.fallback.missingConfig': 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta. Chave consultada: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.incompatible': 'O bloco \"{formBlockId}\" encontrou adapters registrados ({adapterIds}), mas nenhum declarou compatibilidade para esta coleta.',\n 'praxis.editorialForms.dataCollection.fallback.missingAdapter': 'O bloco \"{formBlockId}\" nao encontrou configuracao de coleta nem adaptador registrado. Verifique o provider do host e a materializacao do FormConfig editorial.',\n 'praxis.editorialForms.dataCollection.fallback.adapterWithoutConfig': 'O bloco \"{formBlockId}\" encontrou um adaptador, mas nao encontrou FormConfig em {lookupKey}.',\n 'praxis.editorialForms.dataCollection.fallback.unresolvedEngine': 'Existe configuracao para \"{formBlockId}\" ({source}), mas nenhum adaptador de coleta foi registrado para materializar a engine.',\n 'praxis.editorialForms.dataCollection.error.incompatibleMessage': 'Nenhum adaptador registrado aceitou o bloco \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.availableAdapters': 'Adapters disponiveis: {adapterIds}.',\n 'praxis.editorialForms.dataCollection.error.missingConfigMessage': 'O bloco \"{formBlockId}\" nao possui FormConfig resolvido para a engine de coleta.',\n 'praxis.editorialForms.dataCollection.error.lookupSource': 'Origem consultada: {lookupKey}.',\n 'praxis.editorialForms.dataCollection.error.adapterRegistrationHint': 'Registre um componente compatível ou implemente resolveComponent().',\n 'praxis.editorialForms.dataCollection.error.incompleteAdapterMessage': 'O adaptador \"{adapterName}\" nao expôs um componente de coleta.',\n 'praxis.editorialForms.dataCollection.loadingMessage': 'Carregando a engine de coleta para \"{formBlockId}\"...',\n 'praxis.editorialForms.dataCollection.error.loadFailureMessage': 'O adaptador \"{adapterName}\" falhou ao preparar a coleta do bloco \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.loadFailureDetails': 'Valide o provider opcional do host e a disponibilidade do componente compatível.',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentMessage': 'O adaptador \"{adapterName}\" nao retornou um componente para o bloco \"{formBlockId}\".',\n 'praxis.editorialForms.dataCollection.error.unresolvedComponentDetails': 'Implemente component ou resolveComponent() com um componente Angular compatível.',\n 'praxis.editorialForms.dataCollection.error.invalidComponentMessage': 'O adaptador \"{adapterName}\" retornou um componente incompatível para \"{formBlockId}\".',\n} as const;\n","import {\n providePraxisI18n,\n type PraxisI18nConfig,\n type PraxisI18nDictionary,\n} from '@praxisui/core';\nimport { PRAXIS_EDITORIAL_FORMS_EN_US } from './editorial-forms.en';\nimport { PRAXIS_EDITORIAL_FORMS_PT_BR } from './editorial-forms.pt';\n\nexport interface PraxisEditorialFormsI18nOptions {\n locale?: string;\n fallbackLocale?: string;\n dictionaries?: Record<string, PraxisI18nDictionary>;\n}\n\nexport function createPraxisEditorialFormsI18nConfig(\n options: PraxisEditorialFormsI18nOptions = {},\n): Partial<PraxisI18nConfig> {\n const dictionaries: Record<string, PraxisI18nDictionary> = {\n 'pt-BR': {\n ...PRAXIS_EDITORIAL_FORMS_PT_BR,\n ...(options.dictionaries?.['pt-BR'] ?? {}),\n },\n 'en-US': {\n ...PRAXIS_EDITORIAL_FORMS_EN_US,\n ...(options.dictionaries?.['en-US'] ?? {}),\n },\n };\n\n for (const [locale, dictionary] of Object.entries(options.dictionaries ?? {})) {\n if (locale === 'pt-BR' || locale === 'en-US') {\n continue;\n }\n dictionaries[locale] = {\n ...(dictionaries[locale] ?? {}),\n ...dictionary,\n };\n }\n\n return {\n locale: options.locale,\n fallbackLocale: options.fallbackLocale ?? 'pt-BR',\n dictionaries,\n };\n}\n\nexport function providePraxisEditorialFormsI18n(\n options: PraxisEditorialFormsI18nOptions = {},\n) {\n return providePraxisI18n(\n createPraxisEditorialFormsI18nConfig(options) as PraxisI18nConfig,\n );\n}\n","import { Component, Input, Type } from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n FormConfig,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport type { EditorialRuntimeFallbackMode } from '../runtime/editorial-runtime-fallback';\nimport type { EditorialRuntimeInput } from '../editorial-runtime.contract';\n\n@Component({\n standalone: true,\n selector: 'praxis-editorial-harness-data-engine',\n template: '<p>Harness data engine</p>',\n})\nexport class HarnessDataEngineComponent {\n @Input() config!: FormConfig;\n @Input() formId?: string;\n @Input() editorialContext: Record<string, unknown> | null = null;\n @Input() block: EditorialDataCollectionBlock | null = null;\n @Input() runtimeContext: Record<string, unknown> | null = null;\n @Input() solution: EditorialSolutionDefinition | null = null;\n @Input() instance: EditorialTemplateInstance | null = null;\n @Input() resolvedFormConfig: FormConfig | null = null;\n}\n\nexport interface EditorialRuntimeFixture {\n id: string;\n title: string;\n input: EditorialRuntimeInput;\n expectedFallbackMode: EditorialRuntimeFallbackMode;\n expectsAdapter: boolean;\n}\n\nexport interface EditorialRuntimeHarnessCatalog {\n healthy: EditorialRuntimeFixture;\n warning: EditorialRuntimeFixture;\n globalError: EditorialRuntimeFixture;\n dataCollectionMissingAdapter: EditorialRuntimeFixture;\n dataCollectionWithAdapter: EditorialRuntimeFixture;\n}\n\nexport function createEditorialRuntimeHarnessCatalog(): EditorialRuntimeHarnessCatalog {\n const warningSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-warning',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Warning solution',\n themePresets: [\n {\n themeId: 'default-theme',\n label: 'Default',\n shellVariant: 'page',\n },\n ],\n journeys: [\n {\n journeyId: 'journey-warning',\n label: 'Journey Warning',\n steps: [\n {\n stepId: 'step-warning',\n label: 'Step Warning',\n blocks: [\n {\n blockId: 'copy-warning',\n kind: 'richText',\n content: 'Warning content',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const warningInstance: EditorialTemplateInstance = {\n instanceId: 'instance-warning',\n template: {\n templateId: 'solution-warning',\n version: '1.0.0',\n title: 'Warning solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n overrides: {\n themePresetId: 'missing-theme',\n },\n };\n\n const healthyInstance: EditorialTemplateInstance = {\n instanceId: 'instance-healthy',\n template: {\n templateId: 'solution-warning',\n version: '1.0.0',\n title: 'Warning solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n };\n\n const globalErrorSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-global-error',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Global error solution',\n contextContract: [\n {\n key: 'accountContext.user.name',\n required: true,\n },\n ],\n journeys: [\n {\n journeyId: 'journey-global',\n label: 'Journey Global',\n steps: [\n {\n stepId: 'step-global',\n label: 'Step Global',\n blocks: [\n {\n blockId: 'copy-global',\n kind: 'richText',\n content: 'Global error content',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const globalErrorInstance: EditorialTemplateInstance = {\n instanceId: 'instance-global-error',\n template: {\n templateId: 'solution-global-error',\n version: '1.0.0',\n title: 'Global error solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n };\n\n const dataCollectionSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-data',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Data collection solution',\n journeys: [\n {\n journeyId: 'journey-data',\n label: 'Journey Data',\n steps: [\n {\n stepId: 'step-data',\n label: 'Step Data',\n blocks: [\n {\n blockId: 'collect-data',\n kind: 'dataCollection',\n formBlockId: 'registration-form',\n formConfigRef: 'registration-form',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const dataCollectionInstance: EditorialTemplateInstance = {\n instanceId: 'instance-data',\n template: {\n templateId: 'solution-data',\n version: '1.0.0',\n title: 'Data collection solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n overrides: {\n runtimeFormConfigs: {\n 'registration-form': {\n sections: [],\n },\n },\n },\n };\n\n return {\n healthy: {\n id: 'healthy',\n title: 'Fixture healthy',\n input: {\n solution: warningSolution,\n instance: healthyInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'normal',\n expectsAdapter: false,\n },\n warning: {\n id: 'warning',\n title: 'Fixture warning',\n input: {\n solution: warningSolution,\n instance: warningInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'warning',\n expectsAdapter: false,\n },\n globalError: {\n id: 'global-error',\n title: 'Fixture global error',\n input: {\n solution: globalErrorSolution,\n instance: globalErrorInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'blocked',\n expectsAdapter: false,\n },\n dataCollectionMissingAdapter: {\n id: 'data-collection-missing-adapter',\n title: 'Fixture dataCollection missing adapter',\n input: {\n solution: dataCollectionSolution,\n instance: dataCollectionInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'degraded',\n expectsAdapter: true,\n },\n dataCollectionWithAdapter: {\n id: 'data-collection-with-adapter',\n title: 'Fixture dataCollection with adapter',\n input: {\n solution: dataCollectionSolution,\n instance: dataCollectionInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'degraded',\n expectsAdapter: true,\n },\n };\n}\n\nexport function getHarnessDataEngineComponent(): Type<unknown> {\n return HarnessDataEngineComponent;\n}\n","/*\n * Public API Surface of praxis-editorial-forms\n */\n\nexport * from './lib/praxis-editorial-forms';\nexport * from './lib/editorial-form-runtime.component';\nexport * from './lib/editorial-runtime.contract';\nexport * from './lib/adapters/editorial-data-block-adapter';\nexport * from './lib/adapters/editorial-data-block-adapter-registry';\nexport * from './lib/adapters/editorial-data-collection-block-outlet.component';\nexport * from './lib/adapters/dynamic-form/editorial-dynamic-form.adapter';\nexport * from './lib/runtime/editorial-runtime-diagnostics.model';\nexport * from './lib/runtime/editorial-runtime-events.model';\nexport * from './lib/runtime/editorial-runtime-fallback';\nexport * from './lib/runtime/editorial-runtime-snapshot.model';\nexport * from './lib/runtime/editorial-preset-resolver';\nexport * from './lib/runtime/editorial-runtime-presentation.helpers';\nexport * from './lib/runtime/editorial-runtime-state';\nexport * from './lib/runtime/editorial-runtime-theme.helpers';\nexport * from './lib/runtime/editorial-runtime.helpers';\nexport * from './lib/i18n/editorial-forms.en';\nexport * from './lib/i18n/editorial-forms.i18n';\nexport * from './lib/i18n/editorial-forms.pt';\nexport * from './lib/renderers/editorial-block-renderer.component';\nexport * from './lib/renderers/editorial-intro-hero-block.component';\nexport * from './lib/renderers/editorial-review-sections-block.component';\nexport * from './lib/renderers/editorial-selection-cards-block.component';\nexport * from './lib/renderers/editorial-stepper.component';\nexport * from './lib/renderers/editorial-success-panel-block.component';\nexport * from './lib/testing/editorial-runtime.fixtures';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["readRuntimeFormData"],"mappings":"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"}