@praxisui/stepper 8.0.0-beta.1 → 8.0.0-beta.11

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
@@ -195,9 +195,30 @@ validateStep = async ({ step, formGroup, formData }) => {
195
195
 
196
196
  - Componentes: `PraxisStepper`, `PraxisStepperConfigEditor`
197
197
  - Tipos: `StepperMetadata`, `StepConfig`, `StepOrientation`, `StepHeaderPosition`
198
+ - Authoring AI: `PRAXIS_STEPPER_AUTHORING_MANIFEST`
198
199
  - Eventos: `selectedIndexChange`, `selectionChange`, `widgetEvent`, `animationDone`, `stepFormReady`, `stepFormValueChange`
199
200
  - Veja: `projects/praxis-stepper/src/public-api.ts`
200
201
 
202
+ ## Agentic Authoring
203
+
204
+ O contrato executavel de authoring fica em `PRAXIS_STEPPER_AUTHORING_MANIFEST`.
205
+ Ele modela edicoes em `StepperMetadata` por operacoes atomicas sobre etapas,
206
+ navegacao, orientacao, estados de conclusao e validacao.
207
+
208
+ Cobertura principal:
209
+
210
+ - `step.add`, `step.remove`, `step.label.set`, `step.order.set`
211
+ - `step.optional.set`, `step.completed.set`
212
+ - `navigation.mode.set`
213
+ - `orientation.set`
214
+ - `validation.rule.add`
215
+ - `step.content.set`
216
+
217
+ As operacoes preservam `steps[].id` como identidade canonica. Remover uma
218
+ etapa com formulario, rich content ou widgets exige confirmacao explicita. Regras
219
+ de validacao devem ser projetadas em `steps[].form.config` ou delegadas ao
220
+ `serverValidate` do host; o stepper nao define uma DSL paralela de validacao.
221
+
201
222
  ## Conteudo Editorial por Etapa
202
223
 
203
224
  O conteudo editorial do stepper usa a mesma base de rich content da plataforma:
@@ -4644,6 +4644,312 @@ function applyPreferenceDefaults(cfg, values) {
4644
4644
  return { ...cfg, steps };
4645
4645
  }
4646
4646
 
4647
+ const stepItemSchema = {
4648
+ type: 'object',
4649
+ required: ['id', 'label'],
4650
+ properties: {
4651
+ id: { type: 'string' },
4652
+ label: { type: 'string' },
4653
+ description: { type: 'string' },
4654
+ optional: { type: 'boolean' },
4655
+ editable: { type: 'boolean' },
4656
+ completed: { type: 'boolean' },
4657
+ hasError: { type: 'boolean' },
4658
+ state: { type: 'string' },
4659
+ stateIcon: { type: 'string' },
4660
+ errorMessage: { type: 'string' },
4661
+ ariaLabel: { type: 'string' },
4662
+ ariaLabelledby: { type: 'string' },
4663
+ form: { type: 'object' },
4664
+ stepBlocksBeforeForm: { type: 'object' },
4665
+ stepBlocksAfterForm: { type: 'object' },
4666
+ widgets: { type: 'array', items: { type: 'object' } },
4667
+ },
4668
+ };
4669
+ const stepPatchSchema = {
4670
+ type: 'object',
4671
+ minProperties: 1,
4672
+ properties: {
4673
+ id: { type: 'string' },
4674
+ label: { type: 'string' },
4675
+ description: { type: 'string' },
4676
+ optional: { type: 'boolean' },
4677
+ editable: { type: 'boolean' },
4678
+ completed: { type: 'boolean' },
4679
+ hasError: { type: 'boolean' },
4680
+ state: { type: 'string' },
4681
+ stateIcon: { type: 'string' },
4682
+ errorMessage: { type: 'string' },
4683
+ form: { type: 'object' },
4684
+ stepBlocksBeforeForm: { type: 'object' },
4685
+ stepBlocksAfterForm: { type: 'object' },
4686
+ widgets: { type: 'array', items: { type: 'object' } },
4687
+ },
4688
+ };
4689
+ const PRAXIS_STEPPER_AUTHORING_MANIFEST = {
4690
+ schemaVersion: '1.0.0',
4691
+ componentId: 'praxis-stepper',
4692
+ ownerPackage: '@praxisui/stepper',
4693
+ configSchemaId: 'StepperMetadata',
4694
+ manifestVersion: '1.0.0',
4695
+ runtimeInputs: [
4696
+ { name: 'config', type: 'StepperMetadata', description: 'Canonical multi-step flow configuration.' },
4697
+ { name: 'stepperId', type: 'string', description: 'Stable id used to derive stepper config persistence scope.' },
4698
+ { name: 'componentInstanceId', type: 'string', description: 'Optional instance discriminator for persistence scope.' },
4699
+ { name: 'selectedIndex', type: 'number', description: 'Selected step index, compatible with two-way binding.' },
4700
+ { name: 'serverValidate', type: 'function', description: 'Optional host-owned async validation gate for step progression.' },
4701
+ { name: 'stepperContext', type: 'Record<string, any>', description: 'Context passed to nested widgets and rich content.' },
4702
+ { name: 'enableCustomization', type: 'boolean', description: 'Enables Settings Panel authoring surfaces.' },
4703
+ ],
4704
+ editableTargets: [
4705
+ { kind: 'step', resolver: 'step-by-id-or-label', description: 'A step in config.steps[].' },
4706
+ { kind: 'stepLabel', resolver: 'step-by-id-or-label', description: 'The visible label of a step.' },
4707
+ { kind: 'stepContent', resolver: 'step-content-by-id', description: 'Dynamic form, rich content or advanced widgets hosted inside a step.' },
4708
+ { kind: 'navigation', resolver: 'stepper-navigation-config', description: 'Footer navigation labels, icons, variant, alignment and visibility.' },
4709
+ { kind: 'completionRule', resolver: 'step-by-id-or-label', description: 'Optional/completed/error state metadata for a step.' },
4710
+ { kind: 'validationGate', resolver: 'step-validation-by-id', description: 'Validation gate that controls linear navigation and remote validation delegation.' },
4711
+ { kind: 'orientation', resolver: 'stepper-layout-config', description: 'Stepper orientation, header position and label position.' },
4712
+ ],
4713
+ operations: [
4714
+ {
4715
+ operationId: 'step.add',
4716
+ title: 'Add step',
4717
+ scope: 'global',
4718
+ targetKind: 'step',
4719
+ target: { kind: 'step', resolver: 'steps-array', ambiguityPolicy: 'fail', required: false },
4720
+ inputSchema: stepItemSchema,
4721
+ effects: [{ kind: 'append-unique', path: 'steps[]', key: 'id' }],
4722
+ validators: ['step-id-unique', 'step-order-deterministic', 'step-content-valid'],
4723
+ affectedPaths: ['steps[]', 'selectedIndex'],
4724
+ submissionImpact: false,
4725
+ preconditions: ['config-initialized'],
4726
+ },
4727
+ {
4728
+ operationId: 'step.remove',
4729
+ title: 'Remove step',
4730
+ scope: 'layout',
4731
+ targetKind: 'step',
4732
+ target: { kind: 'step', resolver: 'step-by-id-or-label', ambiguityPolicy: 'fail', required: true },
4733
+ inputSchema: {
4734
+ type: 'object',
4735
+ properties: {
4736
+ replacementStepId: { type: 'string' },
4737
+ },
4738
+ },
4739
+ effects: [{ kind: 'remove-by-key', path: 'steps[]', key: 'id' }],
4740
+ destructive: true,
4741
+ requiresConfirmation: true,
4742
+ validators: ['step-exists', 'selected-step-removal-safe', 'step-content-removal-confirmed'],
4743
+ affectedPaths: ['steps[]', 'selectedIndex'],
4744
+ submissionImpact: false,
4745
+ preconditions: ['config-initialized', 'target-step-exists', 'confirmation-collected'],
4746
+ },
4747
+ {
4748
+ operationId: 'step.label.set',
4749
+ title: 'Set step label',
4750
+ scope: 'layout',
4751
+ targetKind: 'stepLabel',
4752
+ target: { kind: 'stepLabel', resolver: 'step-by-id-or-label', ambiguityPolicy: 'fail', required: true },
4753
+ inputSchema: { type: 'object', required: ['label'], properties: { label: { type: 'string' } } },
4754
+ effects: [{ kind: 'merge-by-key', path: 'steps[]', key: 'id' }],
4755
+ validators: ['step-exists', 'step-label-valid'],
4756
+ affectedPaths: ['steps[].label'],
4757
+ submissionImpact: false,
4758
+ preconditions: ['config-initialized', 'target-step-exists'],
4759
+ },
4760
+ {
4761
+ operationId: 'step.order.set',
4762
+ title: 'Reorder steps',
4763
+ scope: 'layout',
4764
+ targetKind: 'step',
4765
+ target: { kind: 'step', resolver: 'step-by-id-or-label', ambiguityPolicy: 'fail', required: true },
4766
+ inputSchema: { type: 'object', required: ['beforeStepId'], properties: { beforeStepId: { type: 'string' } } },
4767
+ effects: [{ kind: 'reorder-by-key', path: 'steps[]', key: 'id' }],
4768
+ validators: ['step-exists', 'step-order-deterministic', 'selected-index-preserved'],
4769
+ affectedPaths: ['steps[]', 'selectedIndex'],
4770
+ submissionImpact: false,
4771
+ preconditions: ['config-initialized', 'target-step-exists'],
4772
+ },
4773
+ {
4774
+ operationId: 'step.optional.set',
4775
+ title: 'Set optional state',
4776
+ scope: 'interaction',
4777
+ targetKind: 'completionRule',
4778
+ target: { kind: 'completionRule', resolver: 'step-by-id-or-label', ambiguityPolicy: 'fail', required: true },
4779
+ inputSchema: { type: 'object', required: ['optional'], properties: { optional: { type: 'boolean' } } },
4780
+ effects: [{ kind: 'merge-by-key', path: 'steps[]', key: 'id' }],
4781
+ validators: ['step-exists', 'completion-rule-compatible'],
4782
+ affectedPaths: ['steps[].optional'],
4783
+ submissionImpact: false,
4784
+ preconditions: ['config-initialized', 'target-step-exists'],
4785
+ },
4786
+ {
4787
+ operationId: 'step.completed.set',
4788
+ title: 'Set completed state',
4789
+ scope: 'interaction',
4790
+ targetKind: 'completionRule',
4791
+ target: { kind: 'completionRule', resolver: 'step-by-id-or-label', ambiguityPolicy: 'fail', required: true },
4792
+ inputSchema: { type: 'object', required: ['completed'], properties: { completed: { type: 'boolean' }, hasError: { type: 'boolean' }, errorMessage: { type: 'string' } } },
4793
+ effects: [{ kind: 'merge-by-key', path: 'steps[]', key: 'id' }],
4794
+ validators: ['step-exists', 'completion-rule-compatible', 'linear-completion-safe'],
4795
+ affectedPaths: ['steps[].completed', 'steps[].hasError', 'steps[].errorMessage'],
4796
+ submissionImpact: false,
4797
+ preconditions: ['config-initialized', 'target-step-exists'],
4798
+ },
4799
+ {
4800
+ operationId: 'navigation.mode.set',
4801
+ title: 'Set navigation mode',
4802
+ scope: 'interaction',
4803
+ targetKind: 'navigation',
4804
+ target: { kind: 'navigation', resolver: 'stepper-navigation-config', ambiguityPolicy: 'fail', required: true },
4805
+ inputSchema: {
4806
+ type: 'object',
4807
+ properties: {
4808
+ linear: { type: 'boolean' },
4809
+ visible: { type: 'boolean' },
4810
+ prevLabel: { type: 'string' },
4811
+ nextLabel: { type: 'string' },
4812
+ prevIcon: { type: 'string' },
4813
+ nextIcon: { type: 'string' },
4814
+ variant: { enum: ['basic', 'flat', 'stroked', 'raised'] },
4815
+ color: { enum: ['primary', 'accent', 'warn'] },
4816
+ align: { enum: ['start', 'center', 'end', 'space-between'] },
4817
+ },
4818
+ },
4819
+ effects: [{ kind: 'merge-object', path: 'navigation' }, { kind: 'set-value', path: 'linear' }],
4820
+ validators: ['navigation-values-valid', 'linear-navigation-valid', 'editor-runtime-round-trip'],
4821
+ affectedPaths: ['navigation.visible', 'navigation.prevLabel', 'navigation.nextLabel', 'navigation.prevIcon', 'navigation.nextIcon', 'navigation.variant', 'navigation.color', 'navigation.align', 'linear'],
4822
+ submissionImpact: false,
4823
+ preconditions: ['config-initialized'],
4824
+ },
4825
+ {
4826
+ operationId: 'orientation.set',
4827
+ title: 'Set orientation',
4828
+ scope: 'layout',
4829
+ targetKind: 'orientation',
4830
+ target: { kind: 'orientation', resolver: 'stepper-layout-config', ambiguityPolicy: 'fail', required: true },
4831
+ inputSchema: {
4832
+ type: 'object',
4833
+ required: ['orientation'],
4834
+ properties: {
4835
+ orientation: { enum: ['horizontal', 'vertical'] },
4836
+ headerPosition: { enum: ['top', 'bottom'] },
4837
+ labelPosition: { enum: ['bottom', 'end'] },
4838
+ density: { enum: ['default', 'comfortable', 'compact'] },
4839
+ },
4840
+ },
4841
+ effects: [{ kind: 'set-value', path: 'orientation' }, { kind: 'set-value', path: 'headerPosition' }, { kind: 'set-value', path: 'labelPosition' }, { kind: 'set-value', path: 'density' }],
4842
+ validators: ['orientation-values-valid', 'label-position-compatible', 'editor-runtime-round-trip'],
4843
+ affectedPaths: ['orientation', 'headerPosition', 'labelPosition', 'density'],
4844
+ submissionImpact: false,
4845
+ preconditions: ['config-initialized'],
4846
+ },
4847
+ {
4848
+ operationId: 'validation.rule.add',
4849
+ title: 'Add validation rule',
4850
+ scope: 'rule',
4851
+ targetKind: 'validationGate',
4852
+ target: { kind: 'validationGate', resolver: 'step-validation-by-id', ambiguityPolicy: 'fail', required: true },
4853
+ inputSchema: {
4854
+ type: 'object',
4855
+ required: ['stepId', 'rule'],
4856
+ properties: {
4857
+ stepId: { type: 'string' },
4858
+ fieldName: { type: 'string' },
4859
+ childComponentId: { type: 'string' },
4860
+ rule: { type: 'object' },
4861
+ message: { type: 'string' },
4862
+ remote: { type: 'boolean' },
4863
+ },
4864
+ },
4865
+ effects: [{
4866
+ kind: 'compile-domain-patch',
4867
+ handler: 'stepper-validation-rule-upsert',
4868
+ handlerContract: {
4869
+ reads: ['steps[]', 'steps[].form', 'steps[].form.config', 'steps[].widgets', 'linear'],
4870
+ writes: ['steps[].form.config', 'steps[].form.config.sections', 'steps[].form.config.fieldMetadata', 'steps[].hasError', 'steps[].errorMessage'],
4871
+ identityKeys: ['steps[].id', 'steps[].form.formId', 'steps[].widgets[].id'],
4872
+ inputSchema: {
4873
+ type: 'object',
4874
+ required: ['stepId', 'rule'],
4875
+ properties: {
4876
+ stepId: { type: 'string' },
4877
+ fieldName: { type: 'string' },
4878
+ childComponentId: { type: 'string' },
4879
+ rule: { type: 'object' },
4880
+ message: { type: 'string' },
4881
+ remote: { type: 'boolean' },
4882
+ },
4883
+ },
4884
+ failureModes: [
4885
+ 'step-not-found',
4886
+ 'validation-target-not-found',
4887
+ 'dynamic-form-config-missing',
4888
+ 'remote-validation-requires-host-serverValidate',
4889
+ ],
4890
+ description: 'Projects a validation rule into the step dynamic-form config or delegates it to the host serverValidate gate without redefining child component contracts.',
4891
+ },
4892
+ }],
4893
+ validators: ['step-exists', 'validation-rule-target-exists', 'validation-rule-compatible', 'server-validation-delegated'],
4894
+ affectedPaths: ['steps[].form.config', 'steps[].hasError', 'steps[].errorMessage', 'linear'],
4895
+ submissionImpact: true,
4896
+ preconditions: ['config-initialized', 'target-step-exists'],
4897
+ },
4898
+ {
4899
+ operationId: 'step.content.set',
4900
+ title: 'Set step content',
4901
+ scope: 'layout',
4902
+ targetKind: 'stepContent',
4903
+ target: { kind: 'stepContent', resolver: 'step-content-by-id', ambiguityPolicy: 'fail', required: true },
4904
+ inputSchema: stepPatchSchema,
4905
+ effects: [{ kind: 'merge-by-key', path: 'steps[]', key: 'id' }],
4906
+ validators: ['step-exists', 'step-content-valid', 'nested-widget-contract-delegated'],
4907
+ affectedPaths: ['steps[].form', 'steps[].stepBlocksBeforeForm', 'steps[].stepBlocksAfterForm', 'steps[].widgets'],
4908
+ submissionImpact: false,
4909
+ preconditions: ['config-initialized', 'target-step-exists'],
4910
+ },
4911
+ ],
4912
+ validators: [
4913
+ { validatorId: 'step-id-unique', level: 'error', code: 'PSTEP001', description: 'Step ids must be unique and stable within config.steps[].' },
4914
+ { validatorId: 'step-exists', level: 'error', code: 'PSTEP002', description: 'Target step must exist before applying the operation.' },
4915
+ { validatorId: 'step-order-deterministic', level: 'error', code: 'PSTEP003', description: 'Step ordering must use stable ids, not transient array index as identity.' },
4916
+ { validatorId: 'step-content-valid', level: 'error', code: 'PSTEP004', description: 'Step content must remain valid Dynamic Form config, RichContentDocument or WidgetDefinition[] metadata.' },
4917
+ { validatorId: 'step-content-removal-confirmed', level: 'error', code: 'PSTEP005', description: 'Removing a step with form, rich content or widgets is destructive and requires confirmation.' },
4918
+ { validatorId: 'selected-step-removal-safe', level: 'error', code: 'PSTEP006', description: 'Removing the selected step requires a deterministic replacement selected index or explicit confirmation.' },
4919
+ { validatorId: 'selected-index-preserved', level: 'warning', code: 'PSTEP007', description: 'Reordering steps must preserve selected step identity and only recompute selectedIndex after resolution.' },
4920
+ { validatorId: 'step-label-valid', level: 'error', code: 'PSTEP008', description: 'Step labels must be non-empty text values after localization/domain projection.' },
4921
+ { validatorId: 'completion-rule-compatible', level: 'error', code: 'PSTEP009', description: 'Optional, completed, hasError and errorMessage flags must remain compatible with Material stepper semantics.' },
4922
+ { validatorId: 'linear-completion-safe', level: 'warning', code: 'PSTEP010', description: 'Forcing completion in linear mode should not bypass invalid Dynamic Form or server validation gates.' },
4923
+ { validatorId: 'navigation-values-valid', level: 'error', code: 'PSTEP011', description: 'Navigation labels, icons, variant, color and alignment must match StepperMetadata enums and runtime bindings.' },
4924
+ { validatorId: 'linear-navigation-valid', level: 'error', code: 'PSTEP012', description: 'Linear navigation depends on form validity and must not be replaced by host-local navigation rules.' },
4925
+ { validatorId: 'orientation-values-valid', level: 'error', code: 'PSTEP013', description: 'Orientation, headerPosition, labelPosition and density values must match StepperMetadata enums.' },
4926
+ { validatorId: 'label-position-compatible', level: 'warning', code: 'PSTEP014', description: 'labelPosition only affects horizontal steppers and must round-trip without corrupting vertical layout.' },
4927
+ { validatorId: 'validation-rule-target-exists', level: 'error', code: 'PSTEP015', description: 'Validation rules must reference an existing field inside the step form or an existing child widget/component.' },
4928
+ { validatorId: 'validation-rule-compatible', level: 'error', code: 'PSTEP016', description: 'Validation rules must compile into Dynamic Form metadata or host serverValidate delegation without inventing a parallel stepper rule DSL.' },
4929
+ { validatorId: 'server-validation-delegated', level: 'info', code: 'PSTEP017', description: 'Remote validation remains delegated to the serverValidate input and is not implemented as hidden stepper metadata.' },
4930
+ { validatorId: 'nested-widget-contract-delegated', level: 'info', code: 'PSTEP018', description: 'Nested widget content remains governed by the child component contract and widgetEvent path delegation.' },
4931
+ { validatorId: 'editor-runtime-round-trip', level: 'error', code: 'PSTEP019', description: 'Settings Panel editor, runtime and registry projection must preserve step ids, order, navigation and validation intent.' },
4932
+ ],
4933
+ roundTripRequirements: [
4934
+ 'Operations must preserve stable step ids; array index may be used only as a resolver fallback, never as canonical identity.',
4935
+ 'Settings Panel editor, runtime persistence and registry projection must round-trip StepperMetadata without losing step ids, order or selectedIndex.',
4936
+ 'Validation authoring must target Dynamic Form metadata or the host-owned serverValidate gate; the stepper manifest must not define a parallel validation DSL.',
4937
+ 'Nested widgets remain delegated through WidgetDefinition and widgetEvent path enrichment instead of being redefined by the stepper contract.',
4938
+ 'Removing a step with form, rich content or widgets requires explicit confirmation because it can delete nested authoring content.',
4939
+ ],
4940
+ examples: [
4941
+ { id: 'add-review-step', request: 'Add a review step after the documents step.', operationId: 'step.add', params: { id: 'review', label: 'Review' }, isPositive: true },
4942
+ { id: 'rename-profile-step', request: 'Rename the profile step to Customer profile.', operationId: 'step.label.set', target: 'profile', params: { label: 'Customer profile' }, isPositive: true },
4943
+ { id: 'move-confirm-before-submit', request: 'Move confirm before submit.', operationId: 'step.order.set', target: 'confirm', params: { beforeStepId: 'submit' }, isPositive: true },
4944
+ { id: 'make-upload-optional', request: 'Make the upload step optional.', operationId: 'step.optional.set', target: 'upload', params: { optional: true }, isPositive: true },
4945
+ { id: 'set-linear-navigation', request: 'Use linear navigation with Back and Continue labels.', operationId: 'navigation.mode.set', params: { linear: true, prevLabel: 'Back', nextLabel: 'Continue' }, isPositive: true },
4946
+ { id: 'switch-vertical-layout', request: 'Make the stepper vertical.', operationId: 'orientation.set', params: { orientation: 'vertical', headerPosition: 'top' }, isPositive: true },
4947
+ { id: 'require-email-on-profile', request: 'Require email before continuing from profile.', operationId: 'validation.rule.add', target: 'profile', params: { stepId: 'profile', fieldName: 'email', rule: { required: true }, message: 'Email is required' }, isPositive: true },
4948
+ { id: 'reject-duplicate-step-id', request: 'Add another step with id review.', operationId: 'step.add', params: { id: 'review', label: 'Duplicate review' }, isPositive: false },
4949
+ { id: 'confirm-remove-content-step', request: 'Remove the documents step that contains an upload widget.', operationId: 'step.remove', target: 'documents', params: { replacementStepId: 'review' }, isPositive: true },
4950
+ ],
4951
+ };
4952
+
4647
4953
  /*
4648
4954
  * Public API Surface of praxis-stepper
4649
4955
  */
@@ -4652,4 +4958,4 @@ function applyPreferenceDefaults(cfg, values) {
4652
4958
  * Generated bundle index. Do not edit.
4653
4959
  */
4654
4960
 
4655
- export { FT_WIZARD_CONFIG, FT_WIZARD_JSON, PRAXIS_STEPPER_COMPONENT_METADATA, PRAXIS_WIZARD_BENEFITS_METADATA, PRAXIS_WIZARD_CONTENT_METADATA, PRAXIS_WIZARD_DIVIDER_METADATA, PRAXIS_WIZARD_NOTICE_METADATA, PraxisStepper, PraxisStepperConfigEditor, PraxisWizardFormComponent, STEPPER_AI_CAPABILITIES, providePraxisStepperMetadata };
4961
+ export { FT_WIZARD_CONFIG, FT_WIZARD_JSON, PRAXIS_STEPPER_AUTHORING_MANIFEST, PRAXIS_STEPPER_COMPONENT_METADATA, PRAXIS_WIZARD_BENEFITS_METADATA, PRAXIS_WIZARD_CONTENT_METADATA, PRAXIS_WIZARD_DIVIDER_METADATA, PRAXIS_WIZARD_NOTICE_METADATA, PraxisStepper, PraxisStepperConfigEditor, PraxisWizardFormComponent, STEPPER_AI_CAPABILITIES, providePraxisStepperMetadata };
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnInit, AfterViewInit, TemplateRef, EventEmitter, Provider } from '@angular/core';
3
- import { AiCapability, FormConfig, RichContentDocument, WidgetDefinition, WidgetEventEnvelope, FormReadyEvent, FormValueChangeEvent, JsonLogicRecord, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
3
+ import { AiCapability, FormConfig, RichContentDocument, WidgetDefinition, WidgetEventEnvelope, FormReadyEvent, FormValueChangeEvent, JsonLogicRecord, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog, ComponentAuthoringManifest } from '@praxisui/core';
4
4
  import { FormGroup } from '@angular/forms';
5
5
  import { ThemePalette } from '@angular/material/core';
6
6
  import { BaseAiAdapter, PatchResult } from '@praxisui/ai';
@@ -505,5 +505,7 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
505
505
  }
506
506
  declare const STEPPER_AI_CAPABILITIES: CapabilityCatalog;
507
507
 
508
- export { FT_WIZARD_CONFIG, FT_WIZARD_JSON, PRAXIS_STEPPER_COMPONENT_METADATA, PRAXIS_WIZARD_BENEFITS_METADATA, PRAXIS_WIZARD_CONTENT_METADATA, PRAXIS_WIZARD_DIVIDER_METADATA, PRAXIS_WIZARD_NOTICE_METADATA, PraxisStepper, PraxisStepperConfigEditor, PraxisWizardFormComponent, STEPPER_AI_CAPABILITIES, providePraxisStepperMetadata };
508
+ declare const PRAXIS_STEPPER_AUTHORING_MANIFEST: ComponentAuthoringManifest;
509
+
510
+ export { FT_WIZARD_CONFIG, FT_WIZARD_JSON, PRAXIS_STEPPER_AUTHORING_MANIFEST, PRAXIS_STEPPER_COMPONENT_METADATA, PRAXIS_WIZARD_BENEFITS_METADATA, PRAXIS_WIZARD_CONTENT_METADATA, PRAXIS_WIZARD_DIVIDER_METADATA, PRAXIS_WIZARD_NOTICE_METADATA, PraxisStepper, PraxisStepperConfigEditor, PraxisWizardFormComponent, STEPPER_AI_CAPABILITIES, providePraxisStepperMetadata };
509
511
  export type { Capability, CapabilityCatalog, CapabilityCategory, StepConfig, StepHeaderPosition, StepOrientation, StepperMetadata, ValueKind, WizardBenefitItem, WizardBenefitsBlock, WizardBlock, WizardBlockBase, WizardBlockPlacement, WizardCard, WizardContentBlock, WizardCtaAction, WizardCtaConfig, WizardDividerBlock, WizardFormConfig, WizardInlineNoticeBlock, WizardPreferencesConfig, WizardProgressConfig, WizardSecondaryAction, WizardStepConfig, WizardStepFormConfig, WizardStepZones };
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/stepper",
3
- "version": "8.0.0-beta.1",
3
+ "version": "8.0.0-beta.11",
4
4
  "description": "Stepper workflows for Praxis UI with integrated forms, lists, uploads and page builder support.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
7
7
  "@angular/core": "^20.0.0",
8
8
  "@angular/material": "^20.0.0",
9
9
  "@angular/cdk": "^20.0.0",
10
- "@praxisui/core": "^8.0.0-beta.1",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.1",
12
- "@praxisui/rich-content": "^8.0.0-beta.1",
13
- "@praxisui/settings-panel": "^8.0.0-beta.1",
14
- "@praxisui/list": "^8.0.0-beta.1",
15
- "@praxisui/files-upload": "^8.0.0-beta.1",
16
- "@praxisui/page-builder": "^8.0.0-beta.1"
10
+ "@praxisui/core": "^8.0.0-beta.11",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.11",
12
+ "@praxisui/rich-content": "^8.0.0-beta.11",
13
+ "@praxisui/settings-panel": "^8.0.0-beta.11",
14
+ "@praxisui/list": "^8.0.0-beta.11",
15
+ "@praxisui/files-upload": "^8.0.0-beta.11",
16
+ "@praxisui/page-builder": "^8.0.0-beta.11"
17
17
  },
18
18
  "dependencies": {
19
19
  "tslib": "^2.3.0"