import * as _angular_core from '@angular/core'; import { OnInit, AfterViewInit, OnDestroy, TemplateRef, EventEmitter, Provider } from '@angular/core'; import { AiCapability, FormConfig, ApiEndpoint, ApiUrlEntry, RichContentDocument, WidgetDefinition, WidgetEventEnvelope, FormReadyEvent, FormValueChangeEvent, ReactiveDeterminationExecutionEvent, JsonLogicRecord, ComponentDocMeta, SettingsValueProvider as SettingsValueProvider$1, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core'; import { FormGroup } from '@angular/forms'; import { PraxisDynamicForm } from '@praxisui/dynamic-form'; import { ThemePalette } from '@angular/material/core'; import { BaseAiAdapter, PatchResult, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage, PraxisAssistantShellContextItem } from '@praxisui/ai'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; import { BehaviorSubject } from 'rxjs'; import { SettingsValueProvider } from '@praxisui/settings-panel'; import * as _praxisui_stepper from '@praxisui/stepper'; declare class StepperAiAdapter extends BaseAiAdapter { private stepper; componentId: string; componentType: string; componentName: string; constructor(stepper: PraxisStepper); getCurrentConfig(): StepperMetadata; getCapabilities(): AiCapability[]; getRuntimeState(): Record; getDataProfile(): Record; getSchemaFields(): Array>; getAuthoringContext(): Record; createSnapshot(): StepperMetadata; restoreSnapshot(snapshot: StepperMetadata): Promise; applyPatch(patch: Partial): Promise; private applyConfig; private smartMergeStepperConfig; private mergeByKey; private cloneConfig; private hasRichContent; } type StepOrientation = 'horizontal' | 'vertical'; type StepHeaderPosition = 'top' | 'bottom'; type StepperReactiveDeterminationStabilityStatus = 'pending' | 'settled-satisfied' | 'settled-unsatisfied'; /** Aggregate, value-free stability evidence for all Dynamic Forms owned by this stepper. */ interface StepperReactiveDeterminationStabilityChange { status: StepperReactiveDeterminationStabilityStatus; pending: boolean; unsatisfied: boolean; } interface StepConfig { id?: string; label: string; optional?: boolean; editable?: boolean; completed?: boolean; hasError?: boolean; stateIcon?: string; state?: string; errorMessage?: string; ariaLabel?: string; ariaLabelledby?: string; form?: { resourcePath?: string; resourceId?: string | number; mode?: 'create' | 'edit' | 'view'; config?: FormConfig; schemaSource?: 'resource' | 'filter'; /** Explicit discovery URL. The stepper never infers schema authority. */ schemaUrl?: string; apiEndpointKey?: ApiEndpoint | string; apiUrlEntry?: ApiUrlEntry | null; formId?: string; }; /** Rich editorial content rendered before the step form. */ stepBlocksBeforeForm?: RichContentDocument | null; /** Rich editorial content rendered after the step form. */ stepBlocksAfterForm?: RichContentDocument | null; /** Advanced host-owned components rendered after the canonical rich content. */ widgets?: WidgetDefinition[]; description?: string; } interface StepperMetadata { orientation?: StepOrientation; linear?: boolean; headerPosition?: StepHeaderPosition; labelPosition?: 'bottom' | 'end'; color?: ThemePalette; disableRipple?: boolean; animationDuration?: string; selectedIndex?: number; steps: StepConfig[]; density?: 'default' | 'comfortable' | 'compact'; stepperClass?: string; headerClass?: string; contentClass?: string; appearance?: { preset?: 'ft-light'; themeClass?: string; tokens?: Record; icons?: { number?: string; done?: string; edit?: string; error?: string; }; iconsSet?: string; }; navigation?: { visible?: boolean; prevLabel?: string; nextLabel?: string; prevIcon?: string; nextIcon?: string; variant?: 'basic' | 'flat' | 'stroked' | 'raised'; color?: ThemePalette; align?: 'start' | 'center' | 'end' | 'space-between'; }; } declare class PraxisStepper implements OnInit, AfterViewInit, OnDestroy { stepLabelTpl?: TemplateRef; private materialStepper?; _config: _angular_core.WritableSignal; private _selectedIndex; private _formGroups; private _formComponents; private _formValidity; private _formPending; private readonly hostElement; private readonly renderer; private appliedHeaderClasses; private appliedTokenNames; primaryCta: { label: string; icon: string; color: "primary"; action: () => void; }; secondaryCtas: { label: string; icon: string; action: () => void; }[]; stepperId: string; componentInstanceId?: string; set config(c: StepperMetadata | string | null); set selectedIndexInput(i: number | null); set selectedIndex(i: number | null); disableRippleInput: boolean; enableCustomization: boolean; labelPosition?: 'bottom' | 'end'; color?: ThemePalette; /** * Validação remota opcional por etapa. Retorne ok=false com fieldErrors/formErrors para bloquear avanço. */ serverValidate?: (args: { step: StepConfig; stepIndex: number; formGroup?: FormGroup; formData?: any; }) => Promise<{ ok: boolean; fieldErrors?: Record; formErrors?: string[]; errorMessage?: string; }>; selectedIndexChange: EventEmitter; widgetEvent: EventEmitter; stepFormReady: EventEmitter<{ stepIndex: number; stepId?: string; event: FormReadyEvent; }>; stepFormValueChange: EventEmitter<{ stepIndex: number; stepId?: string; event: FormValueChangeEvent; }>; /** Metadata-only determination lifecycle forwarded from the child form. */ stepReactiveDeterminationExecuted: EventEmitter<{ stepIndex: number; stepId?: string; event: ReactiveDeterminationExecutionEvent; }>; stepReactiveDeterminationPendingChange: EventEmitter<{ stepIndex: number; stepId?: string; pending: boolean; }>; /** Aggregate stability; settled-unsatisfied is intentionally distinct from success. */ reactiveDeterminationStabilityChange: EventEmitter; stepperContext?: Record; private readonly settings; private readonly storage; private readonly componentKeys; private readonly logger; private readonly route; private readonly cdr; private reactiveDeterminationStabilitySignature; private readonly aiApi; private readonly assistantSessions; private readonly aiTurnOrchestrator; private readonly aiAssistantSessionEffect; private warnedMissingId; protected readonly emptyStepRichContentDocument: RichContentDocument; animationDone: EventEmitter; aiAdapter: StepperAiAdapter; aiAssistantOpen: boolean; aiAssistantPrompt: string; aiAssistantViewState: PraxisAssistantTurnViewState | null; aiAssistantLayout: PraxisAssistantShellLayout; readonly aiAssistantLabels: Partial; private aiAssistantController; private aiAssistantStateSubscription; steps: _angular_core.Signal; orientation: _angular_core.Signal; headerPosition: _angular_core.Signal; labelPos: _angular_core.Signal<"bottom" | "end">; linear: _angular_core.Signal; disableRipple: _angular_core.Signal; animationDuration: _angular_core.Signal; stepperColor: _angular_core.Signal; icons: _angular_core.Signal<{ number?: string; done?: string; edit?: string; error?: string; } | undefined>; iconsSet: _angular_core.Signal; private nav; navVisible: () => boolean; navVariant: () => "basic" | "flat" | "stroked" | "raised"; navColor: () => ThemePalette; navPrevLabel: () => string; navNextLabel: () => string; navPrevIcon: () => string | undefined; navNextIcon: () => string | undefined; stepperClassList: () => string; contentClassList: () => string; navActionsClass: () => string; navAlignClass: () => "nav-align-start" | "nav-align-center" | "nav-align-space-between" | "nav-align-end"; isNextDisabled(i: number): boolean; private clampIndex; selectedIndexComputed: _angular_core.Signal; densityClass: () => "" | "density-compact" | "density-comfortable"; selectionChange: EventEmitter; trackStep: (_: number, s: StepConfig) => string | number; onSelectionChange(ev: any): void; goTo(index: number): void; next(): void; prev(): void; reset(): void; private advanceTo; previous(): void; onFormReady(stepIndex: number, ev: FormReadyEvent, component?: PraxisDynamicForm): void; onFormValueChange(stepIndex: number, ev: FormValueChangeEvent): void; onReactiveDeterminationExecuted(stepIndex: number, event: ReactiveDeterminationExecutionEvent): void; onReactiveDeterminationPendingChange(stepIndex: number, pending: boolean): void; private emitReactiveDeterminationStability; formGroupFor(i: number): FormGroup | undefined; computedCompleted(i: number, step: StepConfig): boolean; computedHasError(i: number, step: StepConfig): boolean; onChildWidgetEvent(stepIndex: number, wd: WidgetDefinition, e: WidgetEventEnvelope): void; isStepEmpty(step: StepConfig): boolean; hasRichContent(document?: RichContentDocument | null): boolean; getStepRichContentContext(stepIndex: number): JsonLogicRecord; openEditor(): void; applyConfigFromAdapter(next: StepperMetadata): void; openAiAssistant(): void; openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void; closeAiAssistant(): void; onAiAssistantPromptChange(prompt: string): void; onAiAssistantSubmit(prompt: string): void; onAiAssistantApply(): void; onAiAssistantRetry(): void; onAiAssistantCancel(): void; onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void; onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void; onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void; onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void; buildAiAssistantContextItems(): PraxisAssistantShellContextItem[]; private initializeAiAssistantController; private buildAiAssistantContextSnapshot; private syncAiAssistantSession; private hasAiAssistantSessionState; private resolveAiAssistantSessionId; private resolveAiAssistantOwnerId; private safeAiAssistantStepperId; private resolveAiAssistantRouteKey; private resolveAiAssistantSummary; private resolveAiAssistantBadge; private resolveAiAssistantIcon; private collectAiAssistantStepNames; private collectAiAssistantCounts; addFirstStep(): void; onNext(i: number): Promise; validateStep(i?: number): Promise; nextWithValidation(i?: number): Promise; private hasBlockingReactiveDetermination; onPrev(): void; onAnimationDone(): void; private applyServerErrors; private persistConfig; private storageKey; private componentKeyId; private warnMissingId; ngOnDestroy(): void; ngOnInit(): void; ngAfterViewInit(): void; private scheduleDomSync; private syncAppearanceTokens; private syncHeaderClasses; private parseClassList; private resolveCssTokenName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare const PRAXIS_STEPPER_COMPONENT_METADATA: ComponentDocMeta; declare const PRAXIS_WIZARD_BENEFITS_METADATA: ComponentDocMeta; declare const PRAXIS_WIZARD_CONTENT_METADATA: ComponentDocMeta; declare const PRAXIS_WIZARD_NOTICE_METADATA: ComponentDocMeta; declare const PRAXIS_WIZARD_DIVIDER_METADATA: ComponentDocMeta; declare function providePraxisStepperMetadata(): Provider; type EditorialZone = 'before' | 'after'; declare class PraxisStepperConfigEditor implements SettingsValueProvider { private readonly i18n; set stepperConfig(value: StepperMetadata | string | null | undefined); config: StepperMetadata; activeStepRef: StepConfig | null; isDirty$: BehaviorSubject; isValid$: BehaviorSubject; isBusy$: BehaviorSubject; private readonly dialog; private readonly iconPicker; private readonly cdr; constructor(data?: any); private initializeConfig; tx(key: string, fallback: string): string; stepIndexLabel(index: number): string; stepRemoveAria(step: StepConfig, index: number): string; editingStepTitle(step: StepConfig): string; markDirty(): void; validate(): void; get navigationCfg(): NonNullable; get appearance(): NonNullable; stepperTokenKeys: string[]; onAppearanceChange(): void; onTokenChange(key: string, value: string): void; clearTokens(): void; applyPreset(id: 'primary' | 'neutral' | 'high-contrast'): void; scssSnippet(): string; get headerHeightPx(): number | undefined; setHeaderHeightPx(v: number | string | null): void; get headerLabelTextSizePx(): number | undefined; setHeaderLabelTextSizePx(v: number | string | null): void; get headerLabelTextWeight(): string | undefined; setHeaderLabelTextWeight(v: string | undefined): void; get icons(): NonNullable['icons']>; pickNavIcon(field: 'prevIcon' | 'nextIcon'): Promise; pickIcon(kind: 'number' | 'done' | 'edit' | 'error'): Promise; private symbolsLikely; get symbolsLikelySelected(): string[]; setIconsSetToSymbols(): void; drop(ev: CdkDragDrop): void; setActive(step: StepConfig): void; onStepItemEnter(event: Event, step: StepConfig): void; onStepItemSpace(event: Event, step: StepConfig): void; focusAdjacentStep(event: Event, index: number, delta: number): void; addStep(): void; removeStep(idx: number): void; get activeIndex(): number; get activeStep(): StepConfig | null; private ensureActiveStep; private commitFocusedFieldBeforeSwitch; ensureWidgets(): WidgetDefinition[]; displayWidgetName(w: WidgetDefinition): string; advancedWidgets(step: StepConfig): WidgetDefinition[]; richContentNodeCount(document?: RichContentDocument | null): number; richContentJson(step: StepConfig, zone: EditorialZone): string; setRichContentJson(step: StepConfig, zone: EditorialZone, value: string): void; seedRichContent(step: StepConfig, zone: EditorialZone): void; clearRichContent(step: StepConfig, zone: EditorialZone): void; private normalizeRichContentDocument; removeAdvancedWidget(w: WidgetDefinition): void; dropWidget(ev: CdkDragDrop): void; removeWidget(idx: number): void; canEditWidget(w: WidgetDefinition): boolean; addMainForm(): void; editMainForm(): void; removeMainForm(): void; addListSelection(): void; addSearchableSelect(): void; addFilesUpload(): void; openMoreComponents(): void; addTreeList(): void; addTransferListQuick(): void; editWidget(w: WidgetDefinition): void; private openNestedSettingsEditor; getSettingsValue(): any; onSave(): any; reset(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface PraxisStepperWidgetEditorInputs { config?: StepperMetadata | null; stepperId?: string | null; componentInstanceId?: string | null; selectedIndex?: number; [key: string]: unknown; } interface PraxisStepperWidgetEditorValue { inputs: PraxisStepperWidgetEditorInputs; } declare class PraxisStepperWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy { inputs: PraxisStepperWidgetEditorInputs | null; widgetKey?: string; stepperEditor?: PraxisStepperConfigEditor; readonly isDirty$: BehaviorSubject; readonly isValid$: BehaviorSubject; readonly isBusy$: BehaviorSubject; private readonly subscription; private readonly emptyConfig; get config(): StepperMetadata; get stepperId(): string | null | undefined; ngAfterViewInit(): void; ngOnDestroy(): void; getSettingsValue(): PraxisStepperWidgetEditorValue; onSave(): PraxisStepperWidgetEditorValue; reset(): void; private buildValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type WizardCtaAction = 'next' | 'submit' | 'custom'; type WizardSecondaryAction = 'prev' | 'cancel'; interface WizardProgressConfig { variant?: 'line' | 'dots'; showLabels?: boolean; labelPosition?: 'bottom' | 'end'; } interface WizardCard { title: string; description?: string; icon?: string; } interface WizardBenefitItem { icon?: string; title: string; text?: string; } type WizardBlockPlacement = 'beforeForm' | 'afterForm'; interface WizardBlockBase { /** * Optional stable identifier for telemetry/testing. * When provided, it is preferred over positional index when deriving blockId. */ id?: string; placement?: WizardBlockPlacement; } interface WizardBenefitsBlock extends WizardBlockBase { type: 'benefitsGrid'; title?: string; items: WizardBenefitItem[]; columns?: number; boxed?: boolean; } interface WizardContentBlock extends WizardBlockBase { type: 'contentBlock'; title?: string; subtitle?: string; text?: string; caption?: string; } interface WizardInlineNoticeBlock extends WizardBlockBase { type: 'inlineNotice'; text: string; tone?: 'neutral' | 'info' | 'warning'; } interface WizardDividerBlock extends WizardBlockBase { type: 'divider'; label?: string; } type WizardBlock = WizardBenefitsBlock | WizardContentBlock | WizardInlineNoticeBlock | WizardDividerBlock; interface WizardStepZones { intro?: WizardBlock[]; body?: WizardBlock[]; footer?: WizardBlock[]; } interface WizardCtaConfig { label: string; action?: WizardCtaAction; secondaryLabel?: string; secondaryAction?: WizardSecondaryAction; sticky?: boolean; } interface WizardStepFormConfig { formId?: string; config: FormConfig; resourcePath?: string; resourceId?: string | number; mode?: 'create' | 'edit' | 'view'; schemaSource?: 'resource' | 'filter'; /** Explicit schema authority; the wizard never derives it. */ schemaUrl?: string; apiEndpointKey?: ApiEndpoint | string; apiUrlEntry?: ApiUrlEntry | null; } interface WizardStepConfig { id: string; label: string; title?: string; subtitle?: string; description?: string; optional?: boolean; cards?: WizardCard[]; blocks?: WizardBlock[]; zones?: WizardStepZones; form?: WizardStepFormConfig; cta?: WizardCtaConfig; } interface WizardPreferencesConfig { stepId?: string; storageKey?: string; persistFields?: string[]; } interface WizardFormConfig { id: string; brand?: string; title?: string; subtitle?: string; description?: string; progress?: WizardProgressConfig; cta?: WizardCtaConfig; steps: WizardStepConfig[]; preferences?: WizardPreferencesConfig; /** * Optional theme configuration. * Keys are CSS variable names (without -- prefix) and values are the CSS values. * Example: { "praxis-wizard-card-bg": "#fff1e5" } */ theme?: Record; } declare const FT_WIZARD_JSON = "{\n \"id\": \"advanced-onboarding-wizard\",\n \"brand\": \"PRAXIS UI\",\n \"progress\": {\n \"variant\": \"line\",\n \"showLabels\": true,\n \"labelPosition\": \"bottom\"\n },\n \"cta\": {\n \"label\": \"Continuar\",\n \"action\": \"next\",\n \"secondaryLabel\": \"Voltar\",\n \"secondaryAction\": \"prev\",\n \"sticky\": true\n },\n \"preferences\": {\n \"stepId\": \"preferences\",\n \"storageKey\": \"praxis:advanced-wizard\",\n \"persistFields\": [\"novidadesProduto\", \"eventosConteudo\", \"recomendacoes\"]\n },\n \"theme\": {\n \"praxis-wizard-card-bg\": \"#fff7ef\",\n \"md-sys-color-surface\": \"#fff7ef\",\n \"md-sys-color-on-surface\": \"#33302e\",\n \"praxis-wizard-accent\": \"#0d7680\",\n \"praxis-wizard-border\": \"#cfcfcf\",\n \"md-sys-color-outline-variant\": \"#cfcfcf\",\n \"ft-font-head\": \"Georgia, \\\"Times New Roman\\\", serif\",\n \"ft-font-body\": \"\\\"Source Sans 3\\\", \\\"Segoe UI\\\", Arial, sans-serif\",\n \"ft-radius\": \"0\",\n \"ft-shadow\": \"none\",\n \"ft-header-border\": \"1px solid #cfcfcf\"\n },\n \"steps\": [\n {\n \"id\": \"access\",\n \"label\": \"Acesso\",\n \"title\": \"Crie sua conta\",\n \"subtitle\": \"Ative seu acesso em poucos passos e personalize a experi\u00EAncia desde o in\u00EDcio.\",\n \"zones\": {\n \"intro\": [\n {\n \"type\": \"benefitsGrid\",\n \"title\": \"Por que se cadastrar?\",\n \"columns\": 4,\n \"boxed\": true,\n \"items\": [\n {\n \"icon\": \"format_quote\",\n \"title\": \"Conte\u00FAdo relevante\",\n \"text\": \"Receba atualiza\u00E7\u00F5es, novidades e materiais selecionados para o seu perfil.\"\n },\n {\n \"icon\": \"edit_note\",\n \"title\": \"Fluxo guiado\",\n \"text\": \"Conclua o cadastro com uma jornada simples, clara e orientada por etapas.\"\n },\n {\n \"icon\": \"bookmarks\",\n \"title\": \"Prefer\u00EAncias salvas\",\n \"text\": \"Defina suas escolhas iniciais e retome o processo sem perder o progresso.\"\n },\n {\n \"icon\": \"mail\",\n \"title\": \"Comunica\u00E7\u00E3o sob controle\",\n \"text\": \"Escolha como deseja receber novidades, alertas e recomenda\u00E7\u00F5es.\"\n }\n ]\n }\n ],\n \"footer\": [\n {\n \"type\": \"inlineNotice\",\n \"text\": \"Ao continuar, voc\u00EA concorda com os termos de uso e com a pol\u00EDtica de privacidade da plataforma.\"\n }\n ]\n },\n \"cta\": {\n \"label\": \"Come\u00E7ar cadastro\",\n \"action\": \"next\"\n },\n \"form\": {\n \"config\": {\n \"sections\": [\n {\n \"id\": \"access-section\",\n \"rows\": [\n {\n \"columns\": [\n {\n \"fields\": [\"confirmAge\", \"receberNovidades\"]\n }\n ]\n }\n ]\n }\n ],\n \"fieldMetadata\": [\n {\n \"name\": \"confirmAge\",\n \"label\": \"\",\n \"controlType\": \"checkbox\",\n \"required\": true,\n \"layout\": \"horizontal\",\n \"options\": [\n {\n \"label\": \"Confirmo que li e aceito os termos de uso e a pol\u00EDtica de privacidade.\",\n \"value\": true\n }\n ]\n },\n {\n \"name\": \"receberNovidades\",\n \"label\": \"Receber novidades por e-mail\",\n \"controlType\": \"toggle\",\n \"defaultValue\": true,\n \"hint\": \"Voc\u00EA pode alterar essa prefer\u00EAncia a qualquer momento nas configura\u00E7\u00F5es da conta.\"\n }\n ],\n \"actions\": {\n \"submit\": { \"visible\": false, \"label\": \"Salvar\" },\n \"cancel\": { \"visible\": false, \"label\": \"Cancelar\" },\n \"reset\": { \"visible\": false, \"label\": \"Limpar\" }\n }\n }\n }\n },\n {\n \"id\": \"account\",\n \"label\": \"Conta\",\n \"title\": \"Configure seu acesso\",\n \"subtitle\": \"Esses dados ser\u00E3o usados para criar e proteger sua conta.\",\n \"zones\": {\n \"intro\": [\n {\n \"type\": \"inlineNotice\",\n \"text\": \"Use um e-mail v\u00E1lido para confirmar o cadastro e recuperar o acesso quando necess\u00E1rio.\",\n \"tone\": \"info\"\n }\n ],\n \"footer\": [\n {\n \"type\": \"inlineNotice\",\n \"text\": \"Mensagens de seguran\u00E7a e comunica\u00E7\u00F5es operacionais continuam ativas mesmo se voc\u00EA desativar novidades.\"\n }\n ]\n },\n \"form\": {\n \"config\": {\n \"sections\": [\n {\n \"id\": \"account-section\",\n \"rows\": [\n {\n \"columns\": [\n { \"fields\": [\"email\", \"password\"] },\n { \"fields\": [\"aceitaComunicacoes\"] }\n ]\n }\n ]\n }\n ],\n \"fieldMetadata\": [\n {\n \"name\": \"email\",\n \"label\": \"E-mail\",\n \"controlType\": \"email\",\n \"required\": true,\n \"placeholder\": \"Digite seu e-mail\"\n },\n {\n \"name\": \"password\",\n \"label\": \"Senha\",\n \"controlType\": \"password\",\n \"required\": true,\n \"placeholder\": \"Crie uma senha\",\n \"hint\": \"Use 8 ou mais caracteres, combinando letras, n\u00FAmeros e s\u00EDmbolos.\",\n \"validators\": {\n \"minLength\": 8\n },\n \"revealToggle\": {\n \"enabled\": true,\n \"style\": \"icon\",\n \"showLabel\": \"Mostrar senha\",\n \"hideLabel\": \"Ocultar senha\",\n \"ariaLabel\": \"Alternar visibilidade da senha\",\n \"iconShow\": \"visibility\",\n \"iconHide\": \"visibility_off\"\n }\n },\n {\n \"name\": \"aceitaComunicacoes\",\n \"label\": \"Receber comunica\u00E7\u00F5es da plataforma\",\n \"controlType\": \"toggle\",\n \"defaultValue\": true,\n \"hint\": \"Inclui novidades de produto, convites para eventos e conte\u00FAdos de apoio.\"\n }\n ],\n \"actions\": {\n \"submit\": { \"visible\": false, \"label\": \"Salvar\" },\n \"cancel\": { \"visible\": false, \"label\": \"Cancelar\" },\n \"reset\": { \"visible\": false, \"label\": \"Limpar\" }\n }\n }\n }\n },\n {\n \"id\": \"preferences\",\n \"label\": \"Prefer\u00EAncias\",\n \"title\": \"Personalize sua experi\u00EAncia\",\n \"subtitle\": \"Voc\u00EA pode alterar essas configura\u00E7\u00F5es a qualquer momento no painel da conta.\",\n \"description\": \"Escolha quais comunica\u00E7\u00F5es e recomenda\u00E7\u00F5es fazem sentido para o seu contexto.\",\n \"zones\": {\n \"footer\": [\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"inlineNotice\",\n \"text\": \"Alertas de seguran\u00E7a e mensagens essenciais sobre a conta permanecem ativos para garantir a opera\u00E7\u00E3o.\"\n }\n ]\n },\n \"cta\": {\n \"label\": \"Concluir cadastro\",\n \"action\": \"submit\",\n \"secondaryLabel\": \"Voltar\",\n \"secondaryAction\": \"prev\"\n },\n \"form\": {\n \"config\": {\n \"sections\": [\n {\n \"id\": \"prefs-section\",\n \"rows\": [\n {\n \"columns\": [\n { \"fields\": [\"novidadesProduto\"] },\n { \"fields\": [\"eventosConteudo\"] },\n { \"fields\": [\"recomendacoes\"] }\n ]\n }\n ]\n }\n ],\n \"fieldMetadata\": [\n {\n \"name\": \"novidadesProduto\",\n \"label\": \"Novidades de produto\",\n \"controlType\": \"toggle\",\n \"defaultValue\": true,\n \"hint\": \"Receba lancamentos, melhorias e comunicados importantes sobre a plataforma.\"\n },\n {\n \"name\": \"eventosConteudo\",\n \"label\": \"Eventos e conte\u00FAdos especiais\",\n \"controlType\": \"toggle\",\n \"defaultValue\": true,\n \"hint\": \"Seja avisado sobre webinars, materiais t\u00E9cnicos e convites para trilhas de capacita\u00E7\u00E3o.\"\n },\n {\n \"name\": \"recomendacoes\",\n \"label\": \"Recomenda\u00E7\u00F5es personalizadas\",\n \"controlType\": \"toggle\",\n \"defaultValue\": false,\n \"hint\": \"Receba sugest\u00F5es de recursos e exemplos com base nas suas prefer\u00EAncias de uso.\"\n }\n ],\n \"actions\": {\n \"submit\": { \"visible\": false, \"label\": \"Salvar\" },\n \"cancel\": { \"visible\": false, \"label\": \"Cancelar\" },\n \"reset\": { \"visible\": false, \"label\": \"Limpar\" }\n }\n }\n }\n }\n ]\n}"; declare const FT_WIZARD_CONFIG: WizardFormConfig; declare class PraxisWizardFormComponent { private readonly el; private readonly renderer; private readonly storage; constructor(); stepper?: PraxisStepper; wizardId: string; enableCustomization: boolean; set config(cfg: WizardFormConfig | string | null); submit: EventEmitter<{ wizardId: string; values: Record; }>; completed: EventEmitter<{ wizardId: string; values: Record; }>; customAction: EventEmitter<{ wizardId: string; stepId?: string; stepIndex: number; values: Record; }>; private readonly _config; private readonly persistedState; readonly selectedIndex: _angular_core.WritableSignal; readonly wizard: _angular_core.Signal; readonly stepperConfig: _angular_core.Signal<_praxisui_stepper.StepperMetadata | null>; readonly activeStep: _angular_core.Signal; wizardBrand: _angular_core.Signal; activeTitle: _angular_core.Signal; activeSubtitle: _angular_core.Signal; activeDescription: _angular_core.Signal; readonly resolvedCta: _angular_core.Signal>; primaryLabel: _angular_core.Signal; primaryAction: _angular_core.Signal<_praxisui_stepper.WizardCtaAction>; secondaryLabel: _angular_core.Signal; secondaryAction: _angular_core.Signal<_praxisui_stepper.WizardSecondaryAction>; showSecondaryAction(): boolean; isPrimaryDisabled(): boolean; onPrimaryAction(): Promise; onSecondaryAction(): void; onSelectedIndexChange(idx: number): void; onStepFormValueChange(ev: { stepIndex: number; stepId?: string; event: { formData?: any; }; }): void; ngOnInit(): void; private collectValues; private loadPersistedState; private persistState; private storageKey; private resetProgress; private focusPrimaryAction; private focusSecondaryAction; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Capabilities catalog for Praxis Stepper (StepperMetadata). * Paths follow StepperMetadata shape (patch merged at config root). */ declare module '@praxisui/core' { interface AiCapabilityCategoryMap { navigation: true; steps: true; meta: true; } } type CapabilityCategory = AiCapabilityCategory; type ValueKind = AiValueKind; interface Capability extends AiCapability { category: CapabilityCategory; } interface CapabilityCatalog extends AiCapabilityCatalog { capabilities: Capability[]; } declare const STEPPER_AI_CAPABILITIES: CapabilityCatalog; declare const PRAXIS_STEPPER_AUTHORING_MANIFEST: ComponentAuthoringManifest; export { FT_WIZARD_CONFIG, FT_WIZARD_JSON, PRAXIS_STEPPER_AUTHORING_MANIFEST, PRAXIS_STEPPER_COMPONENT_METADATA, PRAXIS_WIZARD_BENEFITS_METADATA, PRAXIS_WIZARD_CONTENT_METADATA, PRAXIS_WIZARD_DIVIDER_METADATA, PRAXIS_WIZARD_NOTICE_METADATA, PraxisStepper, PraxisStepperConfigEditor, PraxisStepperWidgetConfigEditor, PraxisWizardFormComponent, STEPPER_AI_CAPABILITIES, providePraxisStepperMetadata }; export type { Capability, CapabilityCatalog, CapabilityCategory, PraxisStepperWidgetEditorInputs, PraxisStepperWidgetEditorValue, StepConfig, StepHeaderPosition, StepOrientation, StepperMetadata, StepperReactiveDeterminationStabilityChange, StepperReactiveDeterminationStabilityStatus, ValueKind, WizardBenefitItem, WizardBenefitsBlock, WizardBlock, WizardBlockBase, WizardBlockPlacement, WizardCard, WizardContentBlock, WizardCtaAction, WizardCtaConfig, WizardDividerBlock, WizardFormConfig, WizardInlineNoticeBlock, WizardPreferencesConfig, WizardProgressConfig, WizardSecondaryAction, WizardStepConfig, WizardStepFormConfig, WizardStepZones };