@praxisui/editorial-forms 3.0.0-beta.0 → 3.0.0-beta.10
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.
|
@@ -1500,7 +1500,7 @@ class EditorialBlockRendererComponent {
|
|
|
1500
1500
|
/>
|
|
1501
1501
|
}
|
|
1502
1502
|
}
|
|
1503
|
-
`, isInline: true, styles: [":host{display:block}.block-card{display:grid;gap:12px;padding:18px;border-radius:18px;background:var(--md-sys-color-surface-container-low, #f7f2fa);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 65%,transparent)}.eyebrow{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-primary, #6750a4)}h3,p,ul,ol,dl{margin:0}.description,.content,.timeline-item span,.policy-item p,.info-card p,.faq-item p{color:var(--md-sys-color-on-surface-variant, #49454f)}.hero-block h3 span{color:var(--md-sys-color-primary, #6750a4)}.review-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.review-grid dt{margin-bottom:4px;font-size:.78rem;color:var(--md-sys-color-on-surface-variant, #49454f)}.review-grid dd{margin:0;font-weight:600}.list-reset{list-style:none;padding:0;margin:0}.stack-sm{display:grid;gap:10px}.timeline{display:grid;gap:12px;padding-left:18px;margin:0}.timeline-item{display:grid;gap:4px}.policy-item,.faq-item,.info-card{padding:12px;border-radius:14px;background:var(--md-sys-color-surface, #fff)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.notice-block{border-left:4px solid var(--md-sys-color-primary, #6750a4)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: EditorialDataCollectionBlockOutletComponent, selector: "praxis-editorial-data-collection-block-outlet", inputs: ["block", "runtimeContext", "solution", "instance"], outputs: ["runtimeContextChange", "operationalEvent"] }, { kind: "component", type: EditorialIntroHeroBlockComponent, selector: "praxis-editorial-intro-hero-block", inputs: ["block"], outputs: ["actionTriggered"] }, { kind: "component", type: EditorialSelectionCardsBlockComponent, selector: "praxis-editorial-selection-cards-block", inputs: ["block", "runtimeContext"], outputs: ["runtimeContextChange", "valueChange"] }, { kind: "component", type: EditorialReviewSectionsBlockComponent, selector: "praxis-editorial-review-sections-block", inputs: ["block", "runtimeContext"] }, { kind: "component", type: EditorialSuccessPanelBlockComponent, selector: "praxis-editorial-success-panel-block", inputs: ["block"], outputs: ["actionTriggered"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1503
|
+
`, isInline: true, styles: [":host{display:block}.block-card{display:grid;gap:12px;padding:18px;border-radius:18px;background:var(--md-sys-color-surface-container-low, #f7f2fa);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 65%,transparent)}.eyebrow{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-primary, #6750a4)}h3,p,ul,ol,dl{margin:0}.description,.content,.timeline-item span,.policy-item p,.info-card p,.faq-item p{color:var(--md-sys-color-on-surface-variant, #49454f)}.hero-block h3 span{color:var(--md-sys-color-primary, #6750a4)}.review-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.review-grid dt{margin-bottom:4px;font-size:.78rem;color:var(--md-sys-color-on-surface-variant, #49454f)}.review-grid dd{margin:0;font-weight:600}.list-reset{list-style:none;padding:0;margin:0}.stack-sm{display:grid;gap:10px}.timeline{display:grid;gap:12px;padding-left:18px;margin:0}.timeline-item{display:grid;gap:4px}.policy-item,.faq-item,.info-card{padding:12px;border-radius:14px;background:var(--md-sys-color-surface, #fff)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.notice-block{border-left:4px solid var(--md-sys-color-primary, #6750a4)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: EditorialDataCollectionBlockOutletComponent, selector: "praxis-editorial-data-collection-block-outlet", inputs: ["block", "runtimeContext", "solution", "instance"], outputs: ["runtimeContextChange", "operationalEvent"] }, { kind: "component", type: EditorialIntroHeroBlockComponent, selector: "praxis-editorial-intro-hero-block", inputs: ["block"], outputs: ["actionTriggered"] }, { kind: "component", type: EditorialSelectionCardsBlockComponent, selector: "praxis-editorial-selection-cards-block", inputs: ["block", "runtimeContext"], outputs: ["runtimeContextChange", "valueChange"] }, { kind: "component", type: EditorialReviewSectionsBlockComponent, selector: "praxis-editorial-review-sections-block", inputs: ["block", "runtimeContext"] }, { kind: "component", type: EditorialSuccessPanelBlockComponent, selector: "praxis-editorial-success-panel-block", inputs: ["block"], outputs: ["actionTriggered"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1504
1504
|
}
|
|
1505
1505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EditorialBlockRendererComponent, decorators: [{
|
|
1506
1506
|
type: Component,
|
|
@@ -4302,4 +4302,3 @@ function getHarnessDataEngineComponent() {
|
|
|
4302
4302
|
*/
|
|
4303
4303
|
|
|
4304
4304
|
export { DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG, EDITORIAL_DATA_BLOCK_ADAPTER, EditorialBlockRendererComponent, EditorialDataBlockAdapterRegistry, EditorialDataCollectionBlockOutletComponent, EditorialFormRuntimeComponent, EditorialIntroHeroBlockComponent, EditorialReviewSectionsBlockComponent, EditorialRuntimeState, EditorialSelectionCardsBlockComponent, EditorialStepperComponent, EditorialSuccessPanelBlockComponent, HarnessDataEngineComponent, PRAXIS_EDITORIAL_FORMS_EN_US, PRAXIS_EDITORIAL_FORMS_PT_BR, buildRuntimeCssVars, buildRuntimeLayoutCss, createEditorialDynamicFormAdapter, createEditorialRuntimeHarnessCatalog, createPraxisEditorialFormsI18nConfig, deriveRuntimeFallbackState, getHarnessDataEngineComponent, getStepDisplayState, getValueAtPath, getVisibleBlocks, isBlockVisible, matchesVisibilityRule, provideEditorialDataBlockAdapter, provideEditorialDynamicFormAdapter, providePraxisEditorialForms, providePraxisEditorialFormsI18n, resolveActiveJourney, resolveActiveStep, resolveDensity, resolveEditorialDataBlockAdapter, resolveEditorialDataBlockFormConfig, resolveEditorialDataBlockFormConfigDetails, resolveEditorialRuntimeSnapshot, resolveRuntimeOrientation, resolveShellVariant };
|
|
4305
|
-
//# sourceMappingURL=praxisui-editorial-forms.mjs.map
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/editorial-forms",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.10",
|
|
4
4
|
"description": "Editorial form runtime for Praxis UI: journeys, presets, semantic blocks, and specialist hosting for editorial experiences.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^20.0.0",
|
|
7
7
|
"@angular/core": "^20.0.0",
|
|
8
|
-
"@praxisui/core": "^3.0.0-beta.
|
|
8
|
+
"@praxisui/core": "^3.0.0-beta.10"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"tslib": "^2.3.0"
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|