@praxisui/stepper 10.0.0-rc.4 → 10.0.0-rc.41

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.
package/README.md CHANGED
@@ -105,6 +105,8 @@ validateStep = async ({ step, stepIndex, formGroup, formData }) => {
105
105
 
106
106
  Remote dynamic forms still require the effective host to provide the CRUD/resource services expected by `@praxisui/dynamic-form`.
107
107
 
108
+ When a workflow includes rich-content review blocks (`stepBlocksBeforeForm` or `stepBlocksAfterForm`), `PraxisStepper` reactively merges live form values from all steps into the rich-content evaluation context (`values`, root fields, and `forms[stepId | stepIndex]`). Review steps can therefore bind `recordReference`, `keyValueList`, `propertySheet` or `recordSummary` nodes with `quickView` (`ResourceQuickViewBinding`) to foreign-key IDs or `entity-lookup` selections made in earlier steps.
109
+
108
110
  ## Main Inputs And Outputs
109
111
 
110
112
  - `stepperId: string`: required stable id for persisted configuration.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-10-07T11:07:08.250Z",
3
+ "generatedAt": "2026-10-27T22:14:23.237Z",
4
4
  "packageName": "@praxisui/stepper",
5
- "packageVersion": "10.0.0-rc.4",
5
+ "packageVersion": "10.0.0-rc.41",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -22,15 +22,17 @@ import * as i3$1 from '@angular/material/form-field';
22
22
  import { MatFormFieldModule } from '@angular/material/form-field';
23
23
  import * as i4$1 from '@angular/material/input';
24
24
  import { MatInputModule } from '@angular/material/input';
25
- import * as i6 from '@angular/material/slide-toggle';
25
+ import * as i4$2 from '@angular/material/select';
26
+ import { MatSelectModule } from '@angular/material/select';
27
+ import * as i7 from '@angular/material/slide-toggle';
26
28
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
27
- import * as i7 from '@angular/cdk/drag-drop';
29
+ import * as i8 from '@angular/cdk/drag-drop';
28
30
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
29
- import * as i8 from '@angular/material/tooltip';
31
+ import * as i9 from '@angular/material/tooltip';
30
32
  import { MatTooltipModule } from '@angular/material/tooltip';
31
33
  import * as i1$1 from '@angular/material/dialog';
32
34
  import { MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
33
- import * as i9 from '@angular/material/tabs';
35
+ import * as i10 from '@angular/material/tabs';
34
36
  import { MatTabsModule } from '@angular/material/tabs';
35
37
  import { PRAXIS_LIST_COMPONENT_METADATA } from '@praxisui/list';
36
38
  import { PraxisFilesUploadConfigEditor } from '@praxisui/files-upload';
@@ -593,6 +595,8 @@ class PraxisStepper {
593
595
  _formComponents = new Map();
594
596
  _formValidity = new Map();
595
597
  _formPending = new Map();
598
+ _stepFormValues = signal({}, ...(ngDevMode ? [{ debugName: "_stepFormValues" }] : /* istanbul ignore next */ []));
599
+ _formValueSubscriptions = new Map();
596
600
  hostElement = inject((ElementRef));
597
601
  renderer = inject(Renderer2);
598
602
  appliedHeaderClasses = [];
@@ -631,8 +635,15 @@ class PraxisStepper {
631
635
  if (i != null)
632
636
  this._selectedIndex.set(i);
633
637
  }
638
+ _enableCustomization = signal(false, ...(ngDevMode ? [{ debugName: "_enableCustomization" }] : /* istanbul ignore next */ []));
634
639
  disableRippleInput = false;
635
- enableCustomization = false;
640
+ set enableCustomization(value) {
641
+ this._enableCustomization.set(!!value);
642
+ this.cdr.markForCheck();
643
+ }
644
+ get enableCustomization() {
645
+ return this._enableCustomization();
646
+ }
636
647
  // Paridade com API do Material
637
648
  labelPosition;
638
649
  color;
@@ -809,6 +820,15 @@ class PraxisStepper {
809
820
  if (component)
810
821
  this._formComponents.set(stepIndex, component);
811
822
  this._formValidity.set(stepIndex, ev.formGroup.valid);
823
+ this.syncStepFormValues(stepIndex, ev.formGroup);
824
+ this._formValueSubscriptions.get(stepIndex)?.unsubscribe();
825
+ if (ev.formGroup?.valueChanges) {
826
+ this._formValueSubscriptions.set(stepIndex, ev.formGroup.valueChanges.subscribe(() => {
827
+ this.syncStepFormValues(stepIndex, ev.formGroup);
828
+ this.cdr.markForCheck();
829
+ }));
830
+ }
831
+ this.cdr.markForCheck();
812
832
  this.stepFormReady.emit({
813
833
  stepIndex,
814
834
  stepId: this.steps()[stepIndex]?.id,
@@ -817,12 +837,37 @@ class PraxisStepper {
817
837
  }
818
838
  onFormValueChange(stepIndex, ev) {
819
839
  this._formValidity.set(stepIndex, ev.isValid);
840
+ const fg = this._formGroups.get(stepIndex);
841
+ if (ev.formData &&
842
+ typeof ev.formData === 'object' &&
843
+ !Array.isArray(ev.formData)) {
844
+ this._stepFormValues.update((prev) => ({
845
+ ...prev,
846
+ [stepIndex]: { ...ev.formData },
847
+ }));
848
+ }
849
+ else if (fg) {
850
+ this.syncStepFormValues(stepIndex, fg);
851
+ }
852
+ this.cdr.markForCheck();
820
853
  this.stepFormValueChange.emit({
821
854
  stepIndex,
822
855
  stepId: this.steps()[stepIndex]?.id,
823
856
  event: ev,
824
857
  });
825
858
  }
859
+ syncStepFormValues(stepIndex, formGroup) {
860
+ const raw = typeof formGroup?.getRawValue === 'function'
861
+ ? formGroup.getRawValue()
862
+ : formGroup?.value;
863
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
864
+ return;
865
+ }
866
+ this._stepFormValues.update((prev) => ({
867
+ ...prev,
868
+ [stepIndex]: { ...raw },
869
+ }));
870
+ }
826
871
  onReactiveDeterminationExecuted(stepIndex, event) {
827
872
  this.stepReactiveDeterminationExecuted.emit({
828
873
  stepIndex,
@@ -893,8 +938,37 @@ class PraxisStepper {
893
938
  return Array.isArray(document?.nodes) && document.nodes.length > 0;
894
939
  }
895
940
  getStepRichContentContext(stepIndex) {
896
- const step = this.steps()[stepIndex];
941
+ const allSteps = this.steps();
942
+ const step = allSteps[stepIndex];
943
+ const trackedValues = this._stepFormValues();
944
+ const formsByStep = {};
945
+ const mergedFormValues = {};
946
+ allSteps.forEach((candidateStep, idx) => {
947
+ const fg = this._formGroups.get(idx);
948
+ const liveRaw = typeof fg?.getRawValue === 'function'
949
+ ? fg.getRawValue()
950
+ : fg?.value;
951
+ const stepValues = (liveRaw && typeof liveRaw === 'object' && !Array.isArray(liveRaw)
952
+ ? liveRaw
953
+ : trackedValues[idx]) ?? undefined;
954
+ if (!stepValues) {
955
+ return;
956
+ }
957
+ const snapshot = { ...stepValues };
958
+ formsByStep[String(idx)] = snapshot;
959
+ if (candidateStep?.id) {
960
+ formsByStep[candidateStep.id] = snapshot;
961
+ }
962
+ Object.assign(mergedFormValues, snapshot);
963
+ });
964
+ const currentStepValues = formsByStep[String(stepIndex)] ??
965
+ (step?.id ? formsByStep[step.id] : undefined) ??
966
+ {};
897
967
  return {
968
+ ...mergedFormValues,
969
+ values: mergedFormValues,
970
+ forms: formsByStep,
971
+ currentStepValues: currentStepValues,
898
972
  step: (step ?? {}),
899
973
  stepIndex,
900
974
  stepper: {
@@ -1392,6 +1466,8 @@ class PraxisStepper {
1392
1466
  });
1393
1467
  }
1394
1468
  ngOnDestroy() {
1469
+ this._formValueSubscriptions.forEach((sub) => sub.unsubscribe());
1470
+ this._formValueSubscriptions.clear();
1395
1471
  this.assistantSessions.removeContextSession(this.buildAiAssistantContextSnapshot().identity);
1396
1472
  this.aiAssistantStateSubscription?.unsubscribe();
1397
1473
  }
@@ -1617,11 +1693,15 @@ class PraxisStepper {
1617
1693
  icon="dashboard_customize"
1618
1694
  title="Sem conteúdo nesta etapa"
1619
1695
  description="Adicione um formulário ou widgets a esta etapa, ou abra o editor para configurar."
1620
- [primaryAction]="{
1621
- label: 'Abrir editor',
1622
- icon: 'tune',
1623
- action: openEditor.bind(this),
1624
- }"
1696
+ [primaryAction]="
1697
+ enableCustomization
1698
+ ? {
1699
+ label: 'Abrir editor',
1700
+ icon: 'tune',
1701
+ action: openEditor.bind(this),
1702
+ }
1703
+ : undefined
1704
+ "
1625
1705
  ></praxis-empty-state-card>
1626
1706
  }
1627
1707
  </div>
@@ -1754,8 +1834,8 @@ class PraxisStepper {
1754
1834
  [inline]="true"
1755
1835
  title="Stepper sem etapas"
1756
1836
  description="Adicione etapas para começar. Você pode configurar formulários ou widgets em cada etapa."
1757
- [primaryAction]="primaryCta"
1758
- [secondaryActions]="secondaryCtas"
1837
+ [primaryAction]="enableCustomization ? primaryCta : undefined"
1838
+ [secondaryActions]="enableCustomization ? secondaryCtas : []"
1759
1839
  ></praxis-empty-state-card>
1760
1840
  }
1761
1841
  @if (enableCustomization) {
@@ -1768,7 +1848,7 @@ class PraxisStepper {
1768
1848
  <mat-icon fontIcon="edit"></mat-icon>
1769
1849
  </button>
1770
1850
  }
1771
- `, isInline: true, styles: [":host{display:block;position:relative}.praxis-stepper{width:100%;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;padding:12px;box-shadow:var(--mat-elevation-level1)}.praxis-stepper.pdx-stepper-ft-light{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}:host(.density-compact) ::ng-deep .mat-step-header{min-height:36px}:host(.density-compact) .pdx-step-actions{padding-top:4px;gap:6px}:host(.density-comfortable) ::ng-deep .mat-step-header{min-height:44px}.pdx-step-content{padding:12px 4px 8px;color:var(--md-sys-color-on-surface)}.pdx-step-actions{display:flex;gap:8px;padding-top:8px}::ng-deep .praxis-stepper .mat-step-header{border-radius:999px;margin:4px 0;color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label{color:var(--md-sys-color-on-surface);opacity:1}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-active{color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-selected{color:var(--md-sys-color-on-surface);font-weight:600}::ng-deep .praxis-stepper .mat-step-optional{color:var(--md-sys-color-on-surface);opacity:1}::ng-deep .praxis-stepper .mat-step-header.cdk-keyboard-focused,::ng-deep .praxis-stepper .mat-step-header.cdk-program-focused{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}::ng-deep .praxis-stepper .mat-step-icon{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-icon-selected{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}::ng-deep .praxis-stepper .mat-step-icon-state-done{background:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}::ng-deep .praxis-stepper .mat-step-icon-state-error{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}::ng-deep .praxis-stepper .mat-stepper-horizontal-line{border-top-color:var(--md-sys-color-outline-variant)}::ng-deep .praxis-stepper .mat-stepper-vertical-line:before{border-left-color:var(--md-sys-color-outline-variant)}::ng-deep .pdx-stepper-ft-light .mat-stepper-horizontal{background:transparent;--mat-stepper-header-hover-state-layer-color: color-mix( in srgb, var(--md-sys-color-on-surface) 8%, transparent );--mat-stepper-header-focus-state-layer-color: transparent;--mat-stepper-header-hover-state-layer-shape: 14px;--mat-stepper-header-focus-state-layer-shape: 14px}::ng-deep .pdx-stepper-ft-light .mat-step-header{margin:0}::ng-deep .pdx-stepper-ft-light .mat-step-header .mat-step-header-ripple{display:none}::ng-deep .ft-stepper{background:transparent}.ft-stepper-content{padding:0}.ft-stepper-content .form-section{border:none;padding:0;background:transparent}.nav-align-start{justify-content:flex-start}.nav-align-center{justify-content:center}.nav-align-end{justify-content:flex-end}.nav-align-space-between{justify-content:space-between}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.stepper-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.stepper-ai-assistant-trigger{box-shadow:var( --md-sys-elevation-level2, 0 4px 12px rgba(0, 0, 0, .18) )}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i2.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i2.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i2.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i2.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisDynamicForm, selector: "praxis-dynamic-form", inputs: ["resourcePath", "resourceId", "initialValue", "emptyState", "editorialContext", "mode", "config", "actions", "schemaSource", "schemaUrl", "readUrl", "submitUrl", "submitMethod", "submitIdempotencyKey", "submitCorrelationId", "submitResourceVersion", "submitResourceVersionTargetResourceKey", "submitResourceVersionTargetIdField", "responseSchemaUrl", "apiEndpointKey", "apiUrlEntry", "enableCustomization", "showAiAssistant", "formId", "componentInstanceId", "configPersistenceStrategy", "layout", "generatedLayoutPreset", "layoutPolicy", "backConfig", "hooks", "removeEmptyContainersOnSave", "reactiveValidation", "reactiveValidationDebounceMs", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "readonlyModeGlobal", "disabledModeGlobal", "presentationModeGlobal", "presentation", "visibleGlobal", "fieldIconPolicy", "domainRules", "customEndpoints"], outputs: ["formSubmit", "formCancel", "formReset", "configChange", "configPatchChange", "formReady", "valueChange", "payloadPreviewChange", "syncCompleted", "initializationError", "loadingStateChange", "enableCustomizationChange", "customAction", "actionConfirmation", "schemaStatusChange", "fieldRenderError", "ruleDiagnosticsChange", "reactiveDeterminationExecuted", "reactiveDeterminationPendingChange"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }, { kind: "component", type: PraxisRichContent, selector: "praxis-rich-content", inputs: ["document", "nodes", "context", "hostCapabilities", "layout", "rootClassName"], outputs: ["nodeAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1851
+ `, isInline: true, styles: [":host{display:block;position:relative}.praxis-stepper{width:100%;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;padding:12px;box-shadow:var(--mat-elevation-level1)}.praxis-stepper.pdx-stepper-ft-light{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}:host(.density-compact) ::ng-deep .mat-step-header{min-height:36px}:host(.density-compact) .pdx-step-actions{padding-top:4px;gap:6px}:host(.density-comfortable) ::ng-deep .mat-step-header{min-height:44px}.pdx-step-content{padding:12px 4px 8px;color:var(--md-sys-color-on-surface)}.pdx-step-actions{display:flex;gap:8px;padding-top:8px}::ng-deep .praxis-stepper .mat-step-header{border-radius:999px;margin:4px 0;color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label{color:var(--md-sys-color-on-surface);opacity:1}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-active{color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-selected{color:var(--md-sys-color-on-surface);font-weight:600}::ng-deep .praxis-stepper .mat-step-optional{color:var(--md-sys-color-on-surface);opacity:1}::ng-deep .praxis-stepper .mat-step-header.cdk-keyboard-focused,::ng-deep .praxis-stepper .mat-step-header.cdk-program-focused{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}::ng-deep .praxis-stepper .mat-step-icon{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-icon-selected{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}::ng-deep .praxis-stepper .mat-step-icon-state-done{background:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}::ng-deep .praxis-stepper .mat-step-icon-state-error{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}::ng-deep .praxis-stepper .mat-stepper-horizontal-line{border-top-color:var(--md-sys-color-outline-variant)}::ng-deep .praxis-stepper .mat-stepper-vertical-line:before{border-left-color:var(--md-sys-color-outline-variant)}::ng-deep .pdx-stepper-ft-light .mat-stepper-horizontal{background:transparent;--mat-stepper-header-hover-state-layer-color: color-mix( in srgb, var(--md-sys-color-on-surface) 8%, transparent );--mat-stepper-header-focus-state-layer-color: transparent;--mat-stepper-header-hover-state-layer-shape: 14px;--mat-stepper-header-focus-state-layer-shape: 14px}::ng-deep .pdx-stepper-ft-light .mat-step-header{margin:0}::ng-deep .pdx-stepper-ft-light .mat-step-header .mat-step-header-ripple{display:none}::ng-deep .ft-stepper{background:transparent}.ft-stepper-content{padding:0}.ft-stepper-content .form-section{border:none;padding:0;background:transparent}.nav-align-start{justify-content:flex-start}.nav-align-center{justify-content:center}.nav-align-end{justify-content:flex-end}.nav-align-space-between{justify-content:space-between}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.stepper-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.stepper-ai-assistant-trigger{box-shadow:var( --md-sys-elevation-level2, 0 4px 12px rgba(0, 0, 0, .18) )}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i2.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i2.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i2.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i2.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisDynamicForm, selector: "praxis-dynamic-form", inputs: ["resourcePath", "resourceId", "initialValue", "emptyState", "editorialContext", "mode", "config", "actions", "schemaSource", "actionId", "operationId", "schemaUrl", "readUrl", "submitUrl", "submitMethod", "submitIdempotencyKey", "submitCorrelationId", "submitResourceVersion", "submitResourceVersionTargetResourceKey", "submitResourceVersionTargetIdField", "responseSchemaUrl", "apiEndpointKey", "apiUrlEntry", "enableCustomization", "showAiAssistant", "formId", "componentInstanceId", "configPersistenceStrategy", "layout", "layoutMode", "formLayout", "generatedLayoutPreset", "layoutPolicy", "backConfig", "hooks", "removeEmptyContainersOnSave", "reactiveValidation", "reactiveValidationDebounceMs", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "readonlyModeGlobal", "disabledModeGlobal", "presentationModeGlobal", "presentation", "presentationPreset", "sectionDefaultAppearance", "sectionDivider", "visibleGlobal", "fieldIconPolicy", "domainRules", "customEndpoints"], outputs: ["formSubmit", "formCancel", "formReset", "configChange", "configPatchChange", "formReady", "valueChange", "payloadPreviewChange", "syncCompleted", "initializationError", "loadingStateChange", "enableCustomizationChange", "customAction", "actionConfirmation", "schemaStatusChange", "fieldRenderError", "ruleDiagnosticsChange", "reactiveDeterminationExecuted", "reactiveDeterminationPendingChange", "tabChange", "tabSelected"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }, { kind: "component", type: PraxisRichContent, selector: "praxis-rich-content", inputs: ["document", "nodes", "context", "hostCapabilities", "layout", "rootClassName"], outputs: ["nodeAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1772
1852
  }
1773
1853
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisStepper, decorators: [{
1774
1854
  type: Component,
@@ -1939,11 +2019,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1939
2019
  icon="dashboard_customize"
1940
2020
  title="Sem conteúdo nesta etapa"
1941
2021
  description="Adicione um formulário ou widgets a esta etapa, ou abra o editor para configurar."
1942
- [primaryAction]="{
1943
- label: 'Abrir editor',
1944
- icon: 'tune',
1945
- action: openEditor.bind(this),
1946
- }"
2022
+ [primaryAction]="
2023
+ enableCustomization
2024
+ ? {
2025
+ label: 'Abrir editor',
2026
+ icon: 'tune',
2027
+ action: openEditor.bind(this),
2028
+ }
2029
+ : undefined
2030
+ "
1947
2031
  ></praxis-empty-state-card>
1948
2032
  }
1949
2033
  </div>
@@ -2076,8 +2160,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2076
2160
  [inline]="true"
2077
2161
  title="Stepper sem etapas"
2078
2162
  description="Adicione etapas para começar. Você pode configurar formulários ou widgets em cada etapa."
2079
- [primaryAction]="primaryCta"
2080
- [secondaryActions]="secondaryCtas"
2163
+ [primaryAction]="enableCustomization ? primaryCta : undefined"
2164
+ [secondaryActions]="enableCustomization ? secondaryCtas : []"
2081
2165
  ></praxis-empty-state-card>
2082
2166
  }
2083
2167
  @if (enableCustomization) {
@@ -3542,14 +3626,15 @@ class PraxisStepperConfigEditor {
3542
3626
  this.onAppearanceChange();
3543
3627
  }
3544
3628
  get headerLabelTextWeight() {
3545
- return this.appearance.tokens['header-label-text-weight'];
3629
+ const raw = this.appearance.tokens['header-label-text-weight'];
3630
+ return raw != null && String(raw).trim() !== '' ? String(raw).trim() : undefined;
3546
3631
  }
3547
3632
  setHeaderLabelTextWeight(v) {
3548
3633
  if (!v) {
3549
3634
  delete this.appearance.tokens['header-label-text-weight'];
3550
3635
  }
3551
3636
  else {
3552
- this.appearance.tokens['header-label-text-weight'] = v;
3637
+ this.appearance.tokens['header-label-text-weight'] = String(v);
3553
3638
  }
3554
3639
  this.onAppearanceChange();
3555
3640
  }
@@ -4057,32 +4142,32 @@ class PraxisStepperConfigEditor {
4057
4142
  <div class="pdx-grid">
4058
4143
  <mat-form-field appearance="outline">
4059
4144
  <mat-label>{{ tx('editor.general.orientation', 'Orientation') }}</mat-label>
4060
- <select matNativeControl [(ngModel)]="config.orientation" (ngModelChange)="markDirty()">
4061
- <option value="horizontal">{{ tx('editor.general.orientation.horizontal', 'Horizontal') }}</option>
4062
- <option value="vertical">{{ tx('editor.general.orientation.vertical', 'Vertical') }}</option>
4063
- </select>
4145
+ <mat-select [(ngModel)]="config.orientation" (ngModelChange)="markDirty()">
4146
+ <mat-option value="horizontal">{{ tx('editor.general.orientation.horizontal', 'Horizontal') }}</mat-option>
4147
+ <mat-option value="vertical">{{ tx('editor.general.orientation.vertical', 'Vertical') }}</mat-option>
4148
+ </mat-select>
4064
4149
  </mat-form-field>
4065
4150
  <mat-form-field appearance="outline">
4066
4151
  <mat-label>{{ tx('editor.general.headerPosition', 'Title position') }}</mat-label>
4067
- <select matNativeControl [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
4068
- <option value="top">{{ tx('editor.general.headerPosition.top', 'Above') }}</option>
4069
- <option value="bottom">{{ tx('editor.general.headerPosition.bottom', 'Below') }}</option>
4070
- </select>
4152
+ <mat-select [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
4153
+ <mat-option value="top">{{ tx('editor.general.headerPosition.top', 'Above') }}</mat-option>
4154
+ <mat-option value="bottom">{{ tx('editor.general.headerPosition.bottom', 'Below') }}</mat-option>
4155
+ </mat-select>
4071
4156
  </mat-form-field>
4072
4157
  <mat-form-field appearance="outline">
4073
4158
  <mat-label>{{ tx('editor.general.labelPosition', 'Label position') }}</mat-label>
4074
- <select matNativeControl [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
4075
- <option value="end">{{ tx('editor.general.labelPosition.end', 'Beside') }}</option>
4076
- <option value="bottom">{{ tx('editor.general.labelPosition.bottom', 'Below') }}</option>
4077
- </select>
4159
+ <mat-select [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
4160
+ <mat-option value="end">{{ tx('editor.general.labelPosition.end', 'Beside') }}</mat-option>
4161
+ <mat-option value="bottom">{{ tx('editor.general.labelPosition.bottom', 'Below') }}</mat-option>
4162
+ </mat-select>
4078
4163
  </mat-form-field>
4079
4164
  <mat-form-field appearance="outline">
4080
4165
  <mat-label>{{ tx('editor.general.density', 'Density') }}</mat-label>
4081
- <select matNativeControl [(ngModel)]="config.density" (ngModelChange)="markDirty()">
4082
- <option [ngValue]="undefined">{{ tx('editor.general.density.default', 'Default') }}</option>
4083
- <option value="comfortable">{{ tx('editor.general.density.comfortable', 'Comfortable') }}</option>
4084
- <option value="compact">{{ tx('editor.general.density.compact', 'Compact') }}</option>
4085
- </select>
4166
+ <mat-select [(ngModel)]="config.density" (ngModelChange)="markDirty()" [placeholder]="tx('editor.general.density.default', 'Default')">
4167
+ <mat-option [value]="undefined">{{ tx('editor.general.density.default', 'Default') }}</mat-option>
4168
+ <mat-option value="comfortable">{{ tx('editor.general.density.comfortable', 'Comfortable') }}</mat-option>
4169
+ <mat-option value="compact">{{ tx('editor.general.density.compact', 'Compact') }}</mat-option>
4170
+ </mat-select>
4086
4171
  </mat-form-field>
4087
4172
  <mat-form-field appearance="outline">
4088
4173
  <mat-label>{{ tx('editor.general.animationDuration', 'Animation duration') }}</mat-label>
@@ -4476,32 +4561,32 @@ class PraxisStepperConfigEditor {
4476
4561
  <div class="pdx-grid">
4477
4562
  <mat-form-field appearance="outline">
4478
4563
  <mat-label>{{ tx('editor.navigation.variant', 'Button style') }}</mat-label>
4479
- <select matNativeControl [(ngModel)]="navigationCfg.variant" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
4480
- <option [ngValue]="undefined">{{ tx('editor.navigation.variant.default', 'Default (raised)') }}</option>
4481
- <option value="basic">{{ tx('editor.navigation.variant.basic', 'Text') }}</option>
4482
- <option value="flat">{{ tx('editor.navigation.variant.flat', 'Flat') }}</option>
4483
- <option value="stroked">{{ tx('editor.navigation.variant.stroked', 'Stroked') }}</option>
4484
- <option value="raised">{{ tx('editor.navigation.variant.raised', 'Raised') }}</option>
4485
- </select>
4564
+ <mat-select [(ngModel)]="navigationCfg.variant" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible" [placeholder]="tx('editor.navigation.variant.default', 'Default (raised)')">
4565
+ <mat-option [value]="undefined">{{ tx('editor.navigation.variant.default', 'Default (raised)') }}</mat-option>
4566
+ <mat-option value="basic">{{ tx('editor.navigation.variant.basic', 'Text') }}</mat-option>
4567
+ <mat-option value="flat">{{ tx('editor.navigation.variant.flat', 'Flat') }}</mat-option>
4568
+ <mat-option value="stroked">{{ tx('editor.navigation.variant.stroked', 'Stroked') }}</mat-option>
4569
+ <mat-option value="raised">{{ tx('editor.navigation.variant.raised', 'Raised') }}</mat-option>
4570
+ </mat-select>
4486
4571
  </mat-form-field>
4487
4572
  <mat-form-field appearance="outline">
4488
4573
  <mat-label>{{ tx('editor.navigation.color', 'Color') }}</mat-label>
4489
- <select matNativeControl [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
4490
- <option [ngValue]="undefined">{{ tx('editor.navigation.color.default', 'Default') }}</option>
4491
- <option value="primary">{{ tx('editor.navigation.color.primary', 'Primary') }}</option>
4492
- <option value="accent">{{ tx('editor.navigation.color.accent', 'Accent') }}</option>
4493
- <option value="warn">{{ tx('editor.navigation.color.warn', 'Warn') }}</option>
4494
- </select>
4574
+ <mat-select [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible" [placeholder]="tx('editor.navigation.color.default', 'Default')">
4575
+ <mat-option [value]="undefined">{{ tx('editor.navigation.color.default', 'Default') }}</mat-option>
4576
+ <mat-option value="primary">{{ tx('editor.navigation.color.primary', 'Primary') }}</mat-option>
4577
+ <mat-option value="accent">{{ tx('editor.navigation.color.accent', 'Accent') }}</mat-option>
4578
+ <mat-option value="warn">{{ tx('editor.navigation.color.warn', 'Warn') }}</mat-option>
4579
+ </mat-select>
4495
4580
  </mat-form-field>
4496
4581
  <mat-form-field appearance="outline">
4497
4582
  <mat-label>{{ tx('editor.navigation.align', 'Alignment') }}</mat-label>
4498
- <select matNativeControl [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
4499
- <option [ngValue]="undefined">{{ tx('editor.navigation.align.default', 'Right') }}</option>
4500
- <option value="start">{{ tx('editor.navigation.align.start', 'Left') }}</option>
4501
- <option value="center">{{ tx('editor.navigation.align.center', 'Center') }}</option>
4502
- <option value="space-between">{{ tx('editor.navigation.align.spaceBetween', 'Spaced') }}</option>
4503
- <option value="end">{{ tx('editor.navigation.align.end', 'Right') }}</option>
4504
- </select>
4583
+ <mat-select [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible" [placeholder]="tx('editor.navigation.align.default', 'Right')">
4584
+ <mat-option [value]="undefined">{{ tx('editor.navigation.align.default', 'Right') }}</mat-option>
4585
+ <mat-option value="start">{{ tx('editor.navigation.align.start', 'Left') }}</mat-option>
4586
+ <mat-option value="center">{{ tx('editor.navigation.align.center', 'Center') }}</mat-option>
4587
+ <mat-option value="space-between">{{ tx('editor.navigation.align.spaceBetween', 'Spaced') }}</mat-option>
4588
+ <mat-option value="end">{{ tx('editor.navigation.align.end', 'Right') }}</mat-option>
4589
+ </mat-select>
4505
4590
  </mat-form-field>
4506
4591
  </div>
4507
4592
  </div>
@@ -4573,13 +4658,13 @@ class PraxisStepperConfigEditor {
4573
4658
  </mat-form-field>
4574
4659
  <mat-form-field appearance="outline">
4575
4660
  <mat-label>{{ tx('editor.appearance.textWeight', 'Text weight') }}</mat-label>
4576
- <select matNativeControl [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)">
4577
- <option [ngValue]="undefined">{{ tx('editor.appearance.textWeight.default', 'Default') }}</option>
4578
- <option value="400">{{ tx('editor.appearance.textWeight.400', 'Normal') }}</option>
4579
- <option value="500">{{ tx('editor.appearance.textWeight.500', 'Medium') }}</option>
4580
- <option value="600">{{ tx('editor.appearance.textWeight.600', 'Semibold') }}</option>
4581
- <option value="700">{{ tx('editor.appearance.textWeight.700', 'Bold') }}</option>
4582
- </select>
4661
+ <mat-select [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)" [placeholder]="tx('editor.appearance.textWeight.default', 'Default')">
4662
+ <mat-option [value]="undefined">{{ tx('editor.appearance.textWeight.default', 'Default') }}</mat-option>
4663
+ <mat-option value="400">{{ tx('editor.appearance.textWeight.400', 'Normal') }}</mat-option>
4664
+ <mat-option value="500">{{ tx('editor.appearance.textWeight.500', 'Medium') }}</mat-option>
4665
+ <mat-option value="600">{{ tx('editor.appearance.textWeight.600', 'Semibold') }}</mat-option>
4666
+ <mat-option value="700">{{ tx('editor.appearance.textWeight.700', 'Bold') }}</mat-option>
4667
+ </mat-select>
4583
4668
  </mat-form-field>
4584
4669
  <mat-form-field appearance="outline" class="field-span-2">
4585
4670
  <mat-label>{{ tx('editor.appearance.themeClass', 'Theme class') }}</mat-label>
@@ -4587,12 +4672,12 @@ class PraxisStepperConfigEditor {
4587
4672
  </mat-form-field>
4588
4673
  <mat-form-field appearance="outline">
4589
4674
  <mat-label>{{ tx('editor.appearance.iconSet', 'Icon set') }}</mat-label>
4590
- <select matNativeControl [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()">
4591
- <option [ngValue]="undefined">{{ tx('editor.appearance.iconSet.default', 'Material Icons (default)') }}</option>
4592
- <option value="material-symbols-outlined">Material Symbols (Outlined)</option>
4593
- <option value="material-symbols-rounded">Material Symbols (Rounded)</option>
4594
- <option value="material-symbols-sharp">Material Symbols (Sharp)</option>
4595
- </select>
4675
+ <mat-select [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()" [placeholder]="tx('editor.appearance.iconSet.default', 'Material Icons (default)')">
4676
+ <mat-option [value]="undefined">{{ tx('editor.appearance.iconSet.default', 'Material Icons (default)') }}</mat-option>
4677
+ <mat-option value="material-symbols-outlined">Material Symbols (Outlined)</mat-option>
4678
+ <mat-option value="material-symbols-rounded">Material Symbols (Rounded)</mat-option>
4679
+ <mat-option value="material-symbols-sharp">Material Symbols (Sharp)</mat-option>
4680
+ </mat-select>
4596
4681
  </mat-form-field>
4597
4682
  </div>
4598
4683
  <div class="inline-actions-grid icon-picker-grid">
@@ -4678,7 +4763,7 @@ class PraxisStepperConfigEditor {
4678
4763
  </mat-tab>
4679
4764
  </mat-tab-group>
4680
4765
  </div>
4681
- `, isInline: true, styles: [".pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:16px;display:grid;gap:16px;background:var(--md-sys-color-surface);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);border-radius:16px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.editor-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:4px 2px 2px}.editor-intro-copy{display:grid;gap:6px;max-width:760px}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant);font-weight:600}.editor-title{font-size:22px;line-height:1.15;font-weight:650;color:var(--md-sys-color-on-surface)}.editor-subtitle{max-width:72ch;color:var(--md-sys-color-on-surface-variant);line-height:1.45;font-size:14px}.editor-intro-meta{display:flex;gap:8px;align-items:flex-start}.meta-pill{display:grid;gap:2px;min-width:88px;padding:10px 12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container-low)}.meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.settings-group{display:grid;gap:14px;padding:2px 0 4px}.settings-group+.settings-group,.settings-group+.disclosure,.disclosure+.settings-group{padding-top:18px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 60%,transparent)}.group-head{display:grid;gap:4px;max-width:72ch}.inline-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.inline-action-item{display:grid;gap:8px;align-content:start;min-width:0}.pdx-steps{display:grid;gap:12px;padding:4px 0 2px}.steps-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.pdx-step-list{display:grid;gap:10px}.pdx-step-item{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent);border-radius:14px;background:var(--md-sys-color-surface);cursor:pointer;outline:none}.pdx-step-item.active{border-color:color-mix(in srgb,var(--md-sys-color-primary) 55%,var(--md-sys-color-outline-variant));background:color-mix(in srgb,var(--md-sys-color-primary-container) 26%,var(--md-sys-color-surface));box-shadow:none}.pdx-step-item:focus-visible{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.step-summary{display:grid;gap:8px;min-width:0}.step-summary-head{display:grid;gap:2px}.step-summary-index{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant);font-weight:600}.step-summary-title{font-size:15px;line-height:1.3;font-weight:600;color:var(--md-sys-color-on-surface)}.step-summary-sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-summary-flags{display:flex;gap:6px;flex-wrap:wrap}.summary-chip{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:600}.summary-chip-warn{background:color-mix(in srgb,var(--md-sys-color-error-container) 60%,transparent);color:var(--md-sys-color-on-error-container)}.pdx-active-step{display:grid;gap:18px;min-width:0}.pdx-active-step .hdr{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.active-step-head{display:grid;gap:4px}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:12px;padding:0;border:none;border-radius:0;background:transparent}.section-body{display:grid;gap:12px}.section-title{font-weight:600;font-size:15px;color:var(--md-sys-color-on-surface)}.section-subtitle{font-size:13px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field-span-2{grid-column:span 2}.toggle-group{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.disclosure{padding:0 0 12px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 62%,transparent)}.disclosure summary{list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:16px;cursor:pointer;padding:0;position:relative}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:after{content:\"expand_more\";font-family:Material Icons;font-size:18px;color:var(--md-sys-color-on-surface-variant);transition:transform .16s ease}.disclosure[open] summary:after{transform:rotate(180deg)}.disclosure summary:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:4px;border-radius:8px}.disclosure-body{padding-top:12px}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:12px;padding:10px 0;border:none;border-radius:0;background:transparent;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.widget-item .info .meta{margin-top:2px;font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:2px;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;opacity:.92}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-end}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:4px}.cta-row-item{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-column{display:grid;gap:10px;min-width:0}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-column+.zone-column{padding-left:16px;border-left:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.form-row-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.form-row-main{display:flex;align-items:center;gap:12px;min-width:0}.form-row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.editor-icon-action{color:var(--md-sys-color-on-surface-variant)}.editor-icon-action--danger{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}.cta-row-item .cta-head{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:10px}.cta-row-item .cta-title{font-weight:600;color:var(--md-sys-color-on-surface)}.cta-row-item .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45;margin-top:2px}.cta-row-item .cta-actions{display:flex;gap:8px;align-items:center}.widget-item:last-child,.cta-row-item:last-child,.form-row-card:last-child{border-bottom:none}@media(max-width:900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@media(max-width:640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i6.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i9.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i9.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] });
4766
+ `, isInline: true, styles: [":host{display:block;container-type:inline-size;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:16px;display:grid;gap:16px;background:var(--pfx-settings-panel-surface, var(--md-sys-color-surface));border:1px solid color-mix(in srgb,var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant)) 78%,transparent);border-radius:16px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.editor-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:4px 2px 2px}.editor-intro-copy{display:grid;gap:6px;max-width:760px}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant);font-weight:600}.editor-title{font-size:22px;line-height:1.15;font-weight:650;color:var(--md-sys-color-on-surface)}.editor-subtitle{max-width:72ch;color:var(--md-sys-color-on-surface-variant);line-height:1.45;font-size:14px}.editor-intro-meta{display:flex;gap:8px;align-items:flex-start}.meta-pill{display:grid;gap:2px;min-width:88px;padding:10px 12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container-low)}.meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.settings-group{display:grid;gap:14px;padding:2px 0 4px}.settings-group+.settings-group,.settings-group+.disclosure,.disclosure+.settings-group{padding-top:18px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 60%,transparent)}.group-head{display:grid;gap:4px;max-width:72ch}.inline-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.inline-action-item{display:grid;gap:8px;align-content:start;min-width:0}.pdx-steps{display:grid;gap:12px;padding:4px 0 2px}.steps-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.pdx-step-list{display:grid;gap:10px}.pdx-step-item{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent);border-radius:14px;background:var(--md-sys-color-surface);cursor:pointer;outline:none}.pdx-step-item.active{border-color:color-mix(in srgb,var(--md-sys-color-primary) 55%,var(--md-sys-color-outline-variant));background:color-mix(in srgb,var(--md-sys-color-primary-container) 26%,var(--md-sys-color-surface));box-shadow:none}.pdx-step-item:focus-visible{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.step-summary{display:grid;gap:8px;min-width:0}.step-summary-head{display:grid;gap:2px}.step-summary-index{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant);font-weight:600}.step-summary-title{font-size:15px;line-height:1.3;font-weight:600;color:var(--md-sys-color-on-surface)}.step-summary-sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-summary-flags{display:flex;gap:6px;flex-wrap:wrap}.summary-chip{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:600}.summary-chip-warn{background:color-mix(in srgb,var(--md-sys-color-error-container) 60%,transparent);color:var(--md-sys-color-on-error-container)}.pdx-active-step{display:grid;gap:18px;min-width:0}.pdx-active-step .hdr{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.active-step-head{display:grid;gap:4px}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:12px;padding:0;border:none;border-radius:0;background:transparent}.section-body{display:grid;gap:12px}.section-title{font-weight:600;font-size:15px;color:var(--md-sys-color-on-surface)}.section-subtitle{font-size:13px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field-span-2{grid-column:span 2}.toggle-group{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.disclosure{padding:0 0 12px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 62%,transparent)}.disclosure summary{list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:16px;cursor:pointer;padding:0;position:relative}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:after{content:\"expand_more\";font-family:Material Icons;font-size:18px;color:var(--md-sys-color-on-surface-variant);transition:transform .16s ease}.disclosure[open] summary:after{transform:rotate(180deg)}.disclosure summary:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:4px;border-radius:8px}.disclosure-body{padding-top:12px}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:12px;padding:10px 0;border:none;border-radius:0;background:transparent;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.widget-item .info .meta{margin-top:2px;font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:2px;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;opacity:.92}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-end}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:4px}.cta-row-item{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-column{display:grid;gap:10px;min-width:0}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-column+.zone-column{padding-left:16px;border-left:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.form-row-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.form-row-main{display:flex;align-items:center;gap:12px;min-width:0}.form-row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.editor-icon-action{color:var(--md-sys-color-on-surface-variant)}.editor-icon-action--danger{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}.cta-row-item .cta-head{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:10px}.cta-row-item .cta-title{font-weight:600;color:var(--md-sys-color-on-surface)}.cta-row-item .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45;margin-top:2px}.cta-row-item .cta-actions{display:flex;gap:8px;align-items:center}.widget-item:last-child,.cta-row-item:last-child,.form-row-card:last-child{border-bottom:none}@container (max-width: 900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@container (max-width: 640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}@media(max-width:900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@media(max-width:640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i10.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i10.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] });
4682
4767
  }
4683
4768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisStepperConfigEditor, decorators: [{
4684
4769
  type: Component,
@@ -4686,6 +4771,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
4686
4771
  FormsModule,
4687
4772
  MatFormFieldModule,
4688
4773
  MatInputModule,
4774
+ MatSelectModule,
4689
4775
  MatIconModule,
4690
4776
  PraxisIconButtonComponent,
4691
4777
  PraxisIconDirective,
@@ -4715,32 +4801,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
4715
4801
  <div class="pdx-grid">
4716
4802
  <mat-form-field appearance="outline">
4717
4803
  <mat-label>{{ tx('editor.general.orientation', 'Orientation') }}</mat-label>
4718
- <select matNativeControl [(ngModel)]="config.orientation" (ngModelChange)="markDirty()">
4719
- <option value="horizontal">{{ tx('editor.general.orientation.horizontal', 'Horizontal') }}</option>
4720
- <option value="vertical">{{ tx('editor.general.orientation.vertical', 'Vertical') }}</option>
4721
- </select>
4804
+ <mat-select [(ngModel)]="config.orientation" (ngModelChange)="markDirty()">
4805
+ <mat-option value="horizontal">{{ tx('editor.general.orientation.horizontal', 'Horizontal') }}</mat-option>
4806
+ <mat-option value="vertical">{{ tx('editor.general.orientation.vertical', 'Vertical') }}</mat-option>
4807
+ </mat-select>
4722
4808
  </mat-form-field>
4723
4809
  <mat-form-field appearance="outline">
4724
4810
  <mat-label>{{ tx('editor.general.headerPosition', 'Title position') }}</mat-label>
4725
- <select matNativeControl [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
4726
- <option value="top">{{ tx('editor.general.headerPosition.top', 'Above') }}</option>
4727
- <option value="bottom">{{ tx('editor.general.headerPosition.bottom', 'Below') }}</option>
4728
- </select>
4811
+ <mat-select [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
4812
+ <mat-option value="top">{{ tx('editor.general.headerPosition.top', 'Above') }}</mat-option>
4813
+ <mat-option value="bottom">{{ tx('editor.general.headerPosition.bottom', 'Below') }}</mat-option>
4814
+ </mat-select>
4729
4815
  </mat-form-field>
4730
4816
  <mat-form-field appearance="outline">
4731
4817
  <mat-label>{{ tx('editor.general.labelPosition', 'Label position') }}</mat-label>
4732
- <select matNativeControl [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
4733
- <option value="end">{{ tx('editor.general.labelPosition.end', 'Beside') }}</option>
4734
- <option value="bottom">{{ tx('editor.general.labelPosition.bottom', 'Below') }}</option>
4735
- </select>
4818
+ <mat-select [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
4819
+ <mat-option value="end">{{ tx('editor.general.labelPosition.end', 'Beside') }}</mat-option>
4820
+ <mat-option value="bottom">{{ tx('editor.general.labelPosition.bottom', 'Below') }}</mat-option>
4821
+ </mat-select>
4736
4822
  </mat-form-field>
4737
4823
  <mat-form-field appearance="outline">
4738
4824
  <mat-label>{{ tx('editor.general.density', 'Density') }}</mat-label>
4739
- <select matNativeControl [(ngModel)]="config.density" (ngModelChange)="markDirty()">
4740
- <option [ngValue]="undefined">{{ tx('editor.general.density.default', 'Default') }}</option>
4741
- <option value="comfortable">{{ tx('editor.general.density.comfortable', 'Comfortable') }}</option>
4742
- <option value="compact">{{ tx('editor.general.density.compact', 'Compact') }}</option>
4743
- </select>
4825
+ <mat-select [(ngModel)]="config.density" (ngModelChange)="markDirty()" [placeholder]="tx('editor.general.density.default', 'Default')">
4826
+ <mat-option [value]="undefined">{{ tx('editor.general.density.default', 'Default') }}</mat-option>
4827
+ <mat-option value="comfortable">{{ tx('editor.general.density.comfortable', 'Comfortable') }}</mat-option>
4828
+ <mat-option value="compact">{{ tx('editor.general.density.compact', 'Compact') }}</mat-option>
4829
+ </mat-select>
4744
4830
  </mat-form-field>
4745
4831
  <mat-form-field appearance="outline">
4746
4832
  <mat-label>{{ tx('editor.general.animationDuration', 'Animation duration') }}</mat-label>
@@ -5134,32 +5220,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5134
5220
  <div class="pdx-grid">
5135
5221
  <mat-form-field appearance="outline">
5136
5222
  <mat-label>{{ tx('editor.navigation.variant', 'Button style') }}</mat-label>
5137
- <select matNativeControl [(ngModel)]="navigationCfg.variant" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
5138
- <option [ngValue]="undefined">{{ tx('editor.navigation.variant.default', 'Default (raised)') }}</option>
5139
- <option value="basic">{{ tx('editor.navigation.variant.basic', 'Text') }}</option>
5140
- <option value="flat">{{ tx('editor.navigation.variant.flat', 'Flat') }}</option>
5141
- <option value="stroked">{{ tx('editor.navigation.variant.stroked', 'Stroked') }}</option>
5142
- <option value="raised">{{ tx('editor.navigation.variant.raised', 'Raised') }}</option>
5143
- </select>
5223
+ <mat-select [(ngModel)]="navigationCfg.variant" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible" [placeholder]="tx('editor.navigation.variant.default', 'Default (raised)')">
5224
+ <mat-option [value]="undefined">{{ tx('editor.navigation.variant.default', 'Default (raised)') }}</mat-option>
5225
+ <mat-option value="basic">{{ tx('editor.navigation.variant.basic', 'Text') }}</mat-option>
5226
+ <mat-option value="flat">{{ tx('editor.navigation.variant.flat', 'Flat') }}</mat-option>
5227
+ <mat-option value="stroked">{{ tx('editor.navigation.variant.stroked', 'Stroked') }}</mat-option>
5228
+ <mat-option value="raised">{{ tx('editor.navigation.variant.raised', 'Raised') }}</mat-option>
5229
+ </mat-select>
5144
5230
  </mat-form-field>
5145
5231
  <mat-form-field appearance="outline">
5146
5232
  <mat-label>{{ tx('editor.navigation.color', 'Color') }}</mat-label>
5147
- <select matNativeControl [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
5148
- <option [ngValue]="undefined">{{ tx('editor.navigation.color.default', 'Default') }}</option>
5149
- <option value="primary">{{ tx('editor.navigation.color.primary', 'Primary') }}</option>
5150
- <option value="accent">{{ tx('editor.navigation.color.accent', 'Accent') }}</option>
5151
- <option value="warn">{{ tx('editor.navigation.color.warn', 'Warn') }}</option>
5152
- </select>
5233
+ <mat-select [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible" [placeholder]="tx('editor.navigation.color.default', 'Default')">
5234
+ <mat-option [value]="undefined">{{ tx('editor.navigation.color.default', 'Default') }}</mat-option>
5235
+ <mat-option value="primary">{{ tx('editor.navigation.color.primary', 'Primary') }}</mat-option>
5236
+ <mat-option value="accent">{{ tx('editor.navigation.color.accent', 'Accent') }}</mat-option>
5237
+ <mat-option value="warn">{{ tx('editor.navigation.color.warn', 'Warn') }}</mat-option>
5238
+ </mat-select>
5153
5239
  </mat-form-field>
5154
5240
  <mat-form-field appearance="outline">
5155
5241
  <mat-label>{{ tx('editor.navigation.align', 'Alignment') }}</mat-label>
5156
- <select matNativeControl [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
5157
- <option [ngValue]="undefined">{{ tx('editor.navigation.align.default', 'Right') }}</option>
5158
- <option value="start">{{ tx('editor.navigation.align.start', 'Left') }}</option>
5159
- <option value="center">{{ tx('editor.navigation.align.center', 'Center') }}</option>
5160
- <option value="space-between">{{ tx('editor.navigation.align.spaceBetween', 'Spaced') }}</option>
5161
- <option value="end">{{ tx('editor.navigation.align.end', 'Right') }}</option>
5162
- </select>
5242
+ <mat-select [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible" [placeholder]="tx('editor.navigation.align.default', 'Right')">
5243
+ <mat-option [value]="undefined">{{ tx('editor.navigation.align.default', 'Right') }}</mat-option>
5244
+ <mat-option value="start">{{ tx('editor.navigation.align.start', 'Left') }}</mat-option>
5245
+ <mat-option value="center">{{ tx('editor.navigation.align.center', 'Center') }}</mat-option>
5246
+ <mat-option value="space-between">{{ tx('editor.navigation.align.spaceBetween', 'Spaced') }}</mat-option>
5247
+ <mat-option value="end">{{ tx('editor.navigation.align.end', 'Right') }}</mat-option>
5248
+ </mat-select>
5163
5249
  </mat-form-field>
5164
5250
  </div>
5165
5251
  </div>
@@ -5231,13 +5317,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5231
5317
  </mat-form-field>
5232
5318
  <mat-form-field appearance="outline">
5233
5319
  <mat-label>{{ tx('editor.appearance.textWeight', 'Text weight') }}</mat-label>
5234
- <select matNativeControl [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)">
5235
- <option [ngValue]="undefined">{{ tx('editor.appearance.textWeight.default', 'Default') }}</option>
5236
- <option value="400">{{ tx('editor.appearance.textWeight.400', 'Normal') }}</option>
5237
- <option value="500">{{ tx('editor.appearance.textWeight.500', 'Medium') }}</option>
5238
- <option value="600">{{ tx('editor.appearance.textWeight.600', 'Semibold') }}</option>
5239
- <option value="700">{{ tx('editor.appearance.textWeight.700', 'Bold') }}</option>
5240
- </select>
5320
+ <mat-select [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)" [placeholder]="tx('editor.appearance.textWeight.default', 'Default')">
5321
+ <mat-option [value]="undefined">{{ tx('editor.appearance.textWeight.default', 'Default') }}</mat-option>
5322
+ <mat-option value="400">{{ tx('editor.appearance.textWeight.400', 'Normal') }}</mat-option>
5323
+ <mat-option value="500">{{ tx('editor.appearance.textWeight.500', 'Medium') }}</mat-option>
5324
+ <mat-option value="600">{{ tx('editor.appearance.textWeight.600', 'Semibold') }}</mat-option>
5325
+ <mat-option value="700">{{ tx('editor.appearance.textWeight.700', 'Bold') }}</mat-option>
5326
+ </mat-select>
5241
5327
  </mat-form-field>
5242
5328
  <mat-form-field appearance="outline" class="field-span-2">
5243
5329
  <mat-label>{{ tx('editor.appearance.themeClass', 'Theme class') }}</mat-label>
@@ -5245,12 +5331,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5245
5331
  </mat-form-field>
5246
5332
  <mat-form-field appearance="outline">
5247
5333
  <mat-label>{{ tx('editor.appearance.iconSet', 'Icon set') }}</mat-label>
5248
- <select matNativeControl [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()">
5249
- <option [ngValue]="undefined">{{ tx('editor.appearance.iconSet.default', 'Material Icons (default)') }}</option>
5250
- <option value="material-symbols-outlined">Material Symbols (Outlined)</option>
5251
- <option value="material-symbols-rounded">Material Symbols (Rounded)</option>
5252
- <option value="material-symbols-sharp">Material Symbols (Sharp)</option>
5253
- </select>
5334
+ <mat-select [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()" [placeholder]="tx('editor.appearance.iconSet.default', 'Material Icons (default)')">
5335
+ <mat-option [value]="undefined">{{ tx('editor.appearance.iconSet.default', 'Material Icons (default)') }}</mat-option>
5336
+ <mat-option value="material-symbols-outlined">Material Symbols (Outlined)</mat-option>
5337
+ <mat-option value="material-symbols-rounded">Material Symbols (Rounded)</mat-option>
5338
+ <mat-option value="material-symbols-sharp">Material Symbols (Sharp)</mat-option>
5339
+ </mat-select>
5254
5340
  </mat-form-field>
5255
5341
  </div>
5256
5342
  <div class="inline-actions-grid icon-picker-grid">
@@ -5336,7 +5422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5336
5422
  </mat-tab>
5337
5423
  </mat-tab-group>
5338
5424
  </div>
5339
- `, styles: [".pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:16px;display:grid;gap:16px;background:var(--md-sys-color-surface);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);border-radius:16px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.editor-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:4px 2px 2px}.editor-intro-copy{display:grid;gap:6px;max-width:760px}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant);font-weight:600}.editor-title{font-size:22px;line-height:1.15;font-weight:650;color:var(--md-sys-color-on-surface)}.editor-subtitle{max-width:72ch;color:var(--md-sys-color-on-surface-variant);line-height:1.45;font-size:14px}.editor-intro-meta{display:flex;gap:8px;align-items:flex-start}.meta-pill{display:grid;gap:2px;min-width:88px;padding:10px 12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container-low)}.meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.settings-group{display:grid;gap:14px;padding:2px 0 4px}.settings-group+.settings-group,.settings-group+.disclosure,.disclosure+.settings-group{padding-top:18px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 60%,transparent)}.group-head{display:grid;gap:4px;max-width:72ch}.inline-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.inline-action-item{display:grid;gap:8px;align-content:start;min-width:0}.pdx-steps{display:grid;gap:12px;padding:4px 0 2px}.steps-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.pdx-step-list{display:grid;gap:10px}.pdx-step-item{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent);border-radius:14px;background:var(--md-sys-color-surface);cursor:pointer;outline:none}.pdx-step-item.active{border-color:color-mix(in srgb,var(--md-sys-color-primary) 55%,var(--md-sys-color-outline-variant));background:color-mix(in srgb,var(--md-sys-color-primary-container) 26%,var(--md-sys-color-surface));box-shadow:none}.pdx-step-item:focus-visible{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.step-summary{display:grid;gap:8px;min-width:0}.step-summary-head{display:grid;gap:2px}.step-summary-index{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant);font-weight:600}.step-summary-title{font-size:15px;line-height:1.3;font-weight:600;color:var(--md-sys-color-on-surface)}.step-summary-sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-summary-flags{display:flex;gap:6px;flex-wrap:wrap}.summary-chip{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:600}.summary-chip-warn{background:color-mix(in srgb,var(--md-sys-color-error-container) 60%,transparent);color:var(--md-sys-color-on-error-container)}.pdx-active-step{display:grid;gap:18px;min-width:0}.pdx-active-step .hdr{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.active-step-head{display:grid;gap:4px}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:12px;padding:0;border:none;border-radius:0;background:transparent}.section-body{display:grid;gap:12px}.section-title{font-weight:600;font-size:15px;color:var(--md-sys-color-on-surface)}.section-subtitle{font-size:13px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field-span-2{grid-column:span 2}.toggle-group{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.disclosure{padding:0 0 12px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 62%,transparent)}.disclosure summary{list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:16px;cursor:pointer;padding:0;position:relative}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:after{content:\"expand_more\";font-family:Material Icons;font-size:18px;color:var(--md-sys-color-on-surface-variant);transition:transform .16s ease}.disclosure[open] summary:after{transform:rotate(180deg)}.disclosure summary:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:4px;border-radius:8px}.disclosure-body{padding-top:12px}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:12px;padding:10px 0;border:none;border-radius:0;background:transparent;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.widget-item .info .meta{margin-top:2px;font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:2px;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;opacity:.92}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-end}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:4px}.cta-row-item{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-column{display:grid;gap:10px;min-width:0}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-column+.zone-column{padding-left:16px;border-left:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.form-row-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.form-row-main{display:flex;align-items:center;gap:12px;min-width:0}.form-row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.editor-icon-action{color:var(--md-sys-color-on-surface-variant)}.editor-icon-action--danger{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}.cta-row-item .cta-head{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:10px}.cta-row-item .cta-title{font-weight:600;color:var(--md-sys-color-on-surface)}.cta-row-item .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45;margin-top:2px}.cta-row-item .cta-actions{display:flex;gap:8px;align-items:center}.widget-item:last-child,.cta-row-item:last-child,.form-row-card:last-child{border-bottom:none}@media(max-width:900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@media(max-width:640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}\n"] }]
5425
+ `, styles: [":host{display:block;container-type:inline-size;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:16px;display:grid;gap:16px;background:var(--pfx-settings-panel-surface, var(--md-sys-color-surface));border:1px solid color-mix(in srgb,var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant)) 78%,transparent);border-radius:16px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.editor-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:4px 2px 2px}.editor-intro-copy{display:grid;gap:6px;max-width:760px}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant);font-weight:600}.editor-title{font-size:22px;line-height:1.15;font-weight:650;color:var(--md-sys-color-on-surface)}.editor-subtitle{max-width:72ch;color:var(--md-sys-color-on-surface-variant);line-height:1.45;font-size:14px}.editor-intro-meta{display:flex;gap:8px;align-items:flex-start}.meta-pill{display:grid;gap:2px;min-width:88px;padding:10px 12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container-low)}.meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.settings-group{display:grid;gap:14px;padding:2px 0 4px}.settings-group+.settings-group,.settings-group+.disclosure,.disclosure+.settings-group{padding-top:18px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 60%,transparent)}.group-head{display:grid;gap:4px;max-width:72ch}.inline-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.inline-action-item{display:grid;gap:8px;align-content:start;min-width:0}.pdx-steps{display:grid;gap:12px;padding:4px 0 2px}.steps-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.pdx-step-list{display:grid;gap:10px}.pdx-step-item{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent);border-radius:14px;background:var(--md-sys-color-surface);cursor:pointer;outline:none}.pdx-step-item.active{border-color:color-mix(in srgb,var(--md-sys-color-primary) 55%,var(--md-sys-color-outline-variant));background:color-mix(in srgb,var(--md-sys-color-primary-container) 26%,var(--md-sys-color-surface));box-shadow:none}.pdx-step-item:focus-visible{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.step-summary{display:grid;gap:8px;min-width:0}.step-summary-head{display:grid;gap:2px}.step-summary-index{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant);font-weight:600}.step-summary-title{font-size:15px;line-height:1.3;font-weight:600;color:var(--md-sys-color-on-surface)}.step-summary-sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-summary-flags{display:flex;gap:6px;flex-wrap:wrap}.summary-chip{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:600}.summary-chip-warn{background:color-mix(in srgb,var(--md-sys-color-error-container) 60%,transparent);color:var(--md-sys-color-on-error-container)}.pdx-active-step{display:grid;gap:18px;min-width:0}.pdx-active-step .hdr{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.active-step-head{display:grid;gap:4px}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:12px;padding:0;border:none;border-radius:0;background:transparent}.section-body{display:grid;gap:12px}.section-title{font-weight:600;font-size:15px;color:var(--md-sys-color-on-surface)}.section-subtitle{font-size:13px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field-span-2{grid-column:span 2}.toggle-group{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.disclosure{padding:0 0 12px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 62%,transparent)}.disclosure summary{list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:16px;cursor:pointer;padding:0;position:relative}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:after{content:\"expand_more\";font-family:Material Icons;font-size:18px;color:var(--md-sys-color-on-surface-variant);transition:transform .16s ease}.disclosure[open] summary:after{transform:rotate(180deg)}.disclosure summary:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:4px;border-radius:8px}.disclosure-body{padding-top:12px}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:12px;padding:10px 0;border:none;border-radius:0;background:transparent;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.widget-item .info .meta{margin-top:2px;font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:2px;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;opacity:.92}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-end}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:4px}.cta-row-item{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-column{display:grid;gap:10px;min-width:0}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-column+.zone-column{padding-left:16px;border-left:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.form-row-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.form-row-main{display:flex;align-items:center;gap:12px;min-width:0}.form-row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.editor-icon-action{color:var(--md-sys-color-on-surface-variant)}.editor-icon-action--danger{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}.cta-row-item .cta-head{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:10px}.cta-row-item .cta-title{font-weight:600;color:var(--md-sys-color-on-surface)}.cta-row-item .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45;margin-top:2px}.cta-row-item .cta-actions{display:flex;gap:8px;align-items:center}.widget-item:last-child,.cta-row-item:last-child,.form-row-card:last-child{border-bottom:none}@container (max-width: 900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@container (max-width: 640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}@media(max-width:900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@media(max-width:640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}\n"] }]
5340
5426
  }], ctorParameters: () => [{ type: undefined, decorators: [{
5341
5427
  type: Inject,
5342
5428
  args: [SETTINGS_PANEL_DATA]
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@praxisui/stepper",
3
- "version": "10.0.0-rc.4",
3
+ "version": "10.0.0-rc.41",
4
4
  "description": "Stepper workflows for Praxis UI with integrated forms, lists, uploads and page builder support.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
8
  "@angular/material": "^21.0.0",
9
9
  "@angular/cdk": "^21.0.0",
10
- "@praxisui/core": "^10.0.0-rc.4",
11
- "@praxisui/dynamic-form": "^10.0.0-rc.4",
12
- "@praxisui/rich-content": "^10.0.0-rc.4",
13
- "@praxisui/settings-panel": "^10.0.0-rc.4",
14
- "@praxisui/list": "^10.0.0-rc.4",
15
- "@praxisui/files-upload": "^10.0.0-rc.4",
16
- "@praxisui/page-builder": "^10.0.0-rc.4",
10
+ "@praxisui/core": "^10.0.0-rc.41",
11
+ "@praxisui/dynamic-form": "^10.0.0-rc.41",
12
+ "@praxisui/rich-content": "^10.0.0-rc.41",
13
+ "@praxisui/settings-panel": "^10.0.0-rc.41",
14
+ "@praxisui/list": "^10.0.0-rc.41",
15
+ "@praxisui/files-upload": "^10.0.0-rc.41",
16
+ "@praxisui/page-builder": "^10.0.0-rc.41",
17
17
  "@angular/forms": "^21.0.0",
18
18
  "@angular/router": "^21.0.0",
19
- "@praxisui/ai": "^10.0.0-rc.4",
19
+ "@praxisui/ai": "^10.0.0-rc.41",
20
20
  "rxjs": "~7.8.0"
21
21
  },
22
22
  "dependencies": {
@@ -119,6 +119,8 @@ declare class PraxisStepper implements OnInit, AfterViewInit, OnDestroy {
119
119
  private _formComponents;
120
120
  private _formValidity;
121
121
  private _formPending;
122
+ private _stepFormValues;
123
+ private _formValueSubscriptions;
122
124
  private readonly hostElement;
123
125
  private readonly renderer;
124
126
  private appliedHeaderClasses;
@@ -139,8 +141,10 @@ declare class PraxisStepper implements OnInit, AfterViewInit, OnDestroy {
139
141
  set config(c: StepperMetadata | string | null);
140
142
  set selectedIndexInput(i: number | null);
141
143
  set selectedIndex(i: number | null);
144
+ private _enableCustomization;
142
145
  disableRippleInput: boolean;
143
- enableCustomization: boolean;
146
+ set enableCustomization(value: boolean);
147
+ get enableCustomization(): boolean;
144
148
  labelPosition?: 'bottom' | 'end';
145
149
  color?: ThemePalette;
146
150
  /**
@@ -247,6 +251,7 @@ declare class PraxisStepper implements OnInit, AfterViewInit, OnDestroy {
247
251
  previous(): void;
248
252
  onFormReady(stepIndex: number, ev: FormReadyEvent, component?: PraxisDynamicForm): void;
249
253
  onFormValueChange(stepIndex: number, ev: FormValueChangeEvent): void;
254
+ private syncStepFormValues;
250
255
  onReactiveDeterminationExecuted(stepIndex: number, event: ReactiveDeterminationExecutionEvent): void;
251
256
  onReactiveDeterminationPendingChange(stepIndex: number, pending: boolean): void;
252
257
  private emitReactiveDeterminationStability;