@praxisui/stepper 9.0.0-beta.85 → 9.0.0-beta.88
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/ai/component-registry.json +112 -12
- package/fesm2022/praxisui-stepper.mjs +71 -33
- package/package.json +9 -9
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-23T02:50:28.389Z",
|
|
4
4
|
"packageName": "@praxisui/stepper",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.88",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -2158,6 +2158,106 @@
|
|
|
2158
2158
|
{
|
|
2159
2159
|
"chunkIndex": 3,
|
|
2160
2160
|
"chunkKind": "authoring_manifest",
|
|
2161
|
+
"content": "{\"operationId\":\"step.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add step Effects: append-unique. Add a review step after the documents step. Add another step with id review.\",\"scope\":\"global\",\"target\":{\"kind\":\"step\",\"resolver\":\"steps-array\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"label\"],\"properties\":[\"id\",\"label\",\"description\",\"optional\",\"editable\",\"completed\",\"hasError\",\"state\",\"stateIcon\",\"errorMessage\",\"ariaLabel\",\"ariaLabelledby\",\"form\",\"stepBlocksBeforeForm\",\"stepBlocksAfterForm\",\"widgets\"],\"semanticTerms\":[\"id\",\"label\",\"description\",\"optional\",\"editable\",\"completed\",\"hasError\",\"state\",\"stateIcon\",\"errorMessage\",\"ariaLabel\",\"ariaLabelledby\",\"form\",\"stepBlocksBeforeForm\",\"stepBlocksAfterForm\",\"widgets\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"steps[]\"],\"validators\":[{\"validatorId\":\"step-id-unique\",\"level\":\"error\",\"code\":\"PSTEP001\",\"description\":\"Step ids must be unique and stable within config.steps[].\"},{\"validatorId\":\"step-order-deterministic\",\"level\":\"error\",\"code\":\"PSTEP003\",\"description\":\"Step ordering must use stable ids, not transient array index as identity.\"},{\"validatorId\":\"step-content-valid\",\"level\":\"error\",\"code\":\"PSTEP004\",\"description\":\"Step content must remain valid Dynamic Form config, RichContentDocument or WidgetDefinition[] metadata.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-review-step\",\"request\":\"Add a review step after the documents step.\",\"operationId\":\"step.add\",\"params\":{\"id\":\"review\",\"label\":\"Review\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-duplicate-step-id\",\"request\":\"Add another step with id review.\",\"operationId\":\"step.add\",\"params\":{\"id\":\"review\",\"label\":\"Duplicate review\"},\"isPositive\":false}]}",
|
|
2162
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2163
|
+
"contentHash": "a0461a9dc6dc4223f36b00eb007df8e575d1616316754e895d5645165b42946a",
|
|
2164
|
+
"sourceKind": "component_definition",
|
|
2165
|
+
"sourceId": "praxis-stepper",
|
|
2166
|
+
"corpusVersion": "1.0.0"
|
|
2167
|
+
},
|
|
2168
|
+
{
|
|
2169
|
+
"chunkIndex": 4,
|
|
2170
|
+
"chunkKind": "authoring_manifest",
|
|
2171
|
+
"content": "{\"operationId\":\"step.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove step Effects: compile-domain-patch. Remove the documents step that contains an upload widget.\",\"scope\":\"layout\",\"target\":{\"kind\":\"step\",\"resolver\":\"step-by-id-or-label\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"replacementStepId\"],\"semanticTerms\":[\"replacementStepId\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"steps[]\",\"selectedIndex\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"selected-step-removal-safe\",\"level\":\"error\",\"code\":\"PSTEP006\",\"description\":\"Removing the selected step requires a deterministic replacement selected index or explicit confirmation.\"},{\"validatorId\":\"step-content-removal-confirmed\",\"level\":\"error\",\"code\":\"PSTEP005\",\"description\":\"Removing a step with form, rich content or widgets is destructive and requires confirmation.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"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}],\"negativeExamples\":[]}",
|
|
2172
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2173
|
+
"contentHash": "1b1947cc902319a707453375d0fc5d7f30f85b449fc5208d9b36922dc721f19d",
|
|
2174
|
+
"sourceKind": "component_definition",
|
|
2175
|
+
"sourceId": "praxis-stepper",
|
|
2176
|
+
"corpusVersion": "1.0.0"
|
|
2177
|
+
},
|
|
2178
|
+
{
|
|
2179
|
+
"chunkIndex": 5,
|
|
2180
|
+
"chunkKind": "authoring_manifest",
|
|
2181
|
+
"content": "{\"operationId\":\"step.label.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set step label Effects: merge-by-key. Rename the profile step to Customer profile.\",\"scope\":\"layout\",\"target\":{\"kind\":\"stepLabel\",\"resolver\":\"step-by-id-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"label\"],\"properties\":[\"label\"],\"semanticTerms\":[\"label\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"steps[].label\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"step-label-valid\",\"level\":\"error\",\"code\":\"PSTEP008\",\"description\":\"Step labels must be non-empty text values after localization/domain projection.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"rename-profile-step\",\"request\":\"Rename the profile step to Customer profile.\",\"operationId\":\"step.label.set\",\"target\":\"profile\",\"params\":{\"label\":\"Customer profile\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
2182
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2183
|
+
"contentHash": "3e805388ff10749affb796b3a0c2fd829502d42f6d4e424caa16e11c5b320ec9",
|
|
2184
|
+
"sourceKind": "component_definition",
|
|
2185
|
+
"sourceId": "praxis-stepper",
|
|
2186
|
+
"corpusVersion": "1.0.0"
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
"chunkIndex": 6,
|
|
2190
|
+
"chunkKind": "authoring_manifest",
|
|
2191
|
+
"content": "{\"operationId\":\"step.order.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Reorder steps Effects: compile-domain-patch. Move confirm before submit.\",\"scope\":\"layout\",\"target\":{\"kind\":\"step\",\"resolver\":\"step-by-id-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"beforeStepId\"],\"properties\":[\"beforeStepId\"],\"semanticTerms\":[\"beforeStepId\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"steps[]\",\"selectedIndex\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"step-order-deterministic\",\"level\":\"error\",\"code\":\"PSTEP003\",\"description\":\"Step ordering must use stable ids, not transient array index as identity.\"},{\"validatorId\":\"selected-index-preserved\",\"level\":\"warning\",\"code\":\"PSTEP007\",\"description\":\"Reordering steps must preserve selected step identity and only recompute selectedIndex after resolution.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"move-confirm-before-submit\",\"request\":\"Move confirm before submit.\",\"operationId\":\"step.order.set\",\"target\":\"confirm\",\"params\":{\"beforeStepId\":\"submit\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
2192
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2193
|
+
"contentHash": "5426e521ddad0c40bd015c97707cd778ed0c0122426470db41258cf136906dd6",
|
|
2194
|
+
"sourceKind": "component_definition",
|
|
2195
|
+
"sourceId": "praxis-stepper",
|
|
2196
|
+
"corpusVersion": "1.0.0"
|
|
2197
|
+
},
|
|
2198
|
+
{
|
|
2199
|
+
"chunkIndex": 7,
|
|
2200
|
+
"chunkKind": "authoring_manifest",
|
|
2201
|
+
"content": "{\"operationId\":\"step.optional.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set optional state Effects: merge-by-key. Make the upload step optional.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"completionRule\",\"resolver\":\"step-by-id-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"optional\"],\"properties\":[\"optional\"],\"semanticTerms\":[\"optional\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"steps[].optional\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"completion-rule-compatible\",\"level\":\"error\",\"code\":\"PSTEP009\",\"description\":\"Optional, completed, hasError and errorMessage flags must remain compatible with Material stepper semantics.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"make-upload-optional\",\"request\":\"Make the upload step optional.\",\"operationId\":\"step.optional.set\",\"target\":\"upload\",\"params\":{\"optional\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
2202
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2203
|
+
"contentHash": "0a45c1f8c2788e5e806c2318622b5f578d2331d32cc3ddad69952f83b96de95c",
|
|
2204
|
+
"sourceKind": "component_definition",
|
|
2205
|
+
"sourceId": "praxis-stepper",
|
|
2206
|
+
"corpusVersion": "1.0.0"
|
|
2207
|
+
},
|
|
2208
|
+
{
|
|
2209
|
+
"chunkIndex": 8,
|
|
2210
|
+
"chunkKind": "authoring_manifest",
|
|
2211
|
+
"content": "{\"operationId\":\"step.completed.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set completed state Effects: merge-by-key.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"completionRule\",\"resolver\":\"step-by-id-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"completed\"],\"properties\":[\"completed\",\"hasError\",\"errorMessage\"],\"semanticTerms\":[\"completed\",\"hasError\",\"errorMessage\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"steps[].completed\",\"steps[].hasError\",\"steps[].errorMessage\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"completion-rule-compatible\",\"level\":\"error\",\"code\":\"PSTEP009\",\"description\":\"Optional, completed, hasError and errorMessage flags must remain compatible with Material stepper semantics.\"},{\"validatorId\":\"linear-completion-safe\",\"level\":\"warning\",\"code\":\"PSTEP010\",\"description\":\"Forcing completion in linear mode should not bypass invalid Dynamic Form or server validation gates.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
2212
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2213
|
+
"contentHash": "db914bdabd8b6e1e7c6f0755f9d2609881191d3c432d9153521265543a18b1fa",
|
|
2214
|
+
"sourceKind": "component_definition",
|
|
2215
|
+
"sourceId": "praxis-stepper",
|
|
2216
|
+
"corpusVersion": "1.0.0"
|
|
2217
|
+
},
|
|
2218
|
+
{
|
|
2219
|
+
"chunkIndex": 9,
|
|
2220
|
+
"chunkKind": "authoring_manifest",
|
|
2221
|
+
"content": "{\"operationId\":\"navigation.mode.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set navigation mode Effects: merge-object, set-value. Use linear navigation with Back and Continue labels.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"navigation\",\"resolver\":\"stepper-navigation-config\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"linear\",\"visible\",\"prevLabel\",\"nextLabel\",\"prevIcon\",\"nextIcon\",\"variant\",\"color\",\"align\"],\"semanticTerms\":[\"linear\",\"visible\",\"prevLabel\",\"nextLabel\",\"prevIcon\",\"nextIcon\",\"variant\",\"color\",\"align\",\"basic\",\"flat\",\"stroked\",\"raised\",\"primary\",\"accent\",\"warn\",\"start\",\"center\",\"end\",\"space-between\"]},\"effects\":[\"merge-object\",\"set-value\"],\"affectedPaths\":[\"navigation.visible\",\"navigation.prevLabel\",\"navigation.nextLabel\",\"navigation.prevIcon\",\"navigation.nextIcon\",\"navigation.variant\",\"navigation.color\",\"navigation.align\",\"linear\"],\"validators\":[{\"validatorId\":\"navigation-values-valid\",\"level\":\"error\",\"code\":\"PSTEP011\",\"description\":\"Navigation labels, icons, variant, color and alignment must match StepperMetadata enums and runtime bindings.\"},{\"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.\"},{\"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.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"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}],\"negativeExamples\":[]}",
|
|
2222
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2223
|
+
"contentHash": "d6439dec5404befb9637c48d800aa968a74bdc1d452c1ecec4e47c275b81ada0",
|
|
2224
|
+
"sourceKind": "component_definition",
|
|
2225
|
+
"sourceId": "praxis-stepper",
|
|
2226
|
+
"corpusVersion": "1.0.0"
|
|
2227
|
+
},
|
|
2228
|
+
{
|
|
2229
|
+
"chunkIndex": 10,
|
|
2230
|
+
"chunkKind": "authoring_manifest",
|
|
2231
|
+
"content": "{\"operationId\":\"orientation.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set orientation Effects: set-value, set-value, set-value, set-value. Make the stepper vertical.\",\"scope\":\"layout\",\"target\":{\"kind\":\"orientation\",\"resolver\":\"stepper-layout-config\",\"required\":true},\"inputContract\":{\"required\":[\"orientation\"],\"properties\":[\"orientation\",\"headerPosition\",\"labelPosition\",\"density\"],\"semanticTerms\":[\"orientation\",\"headerPosition\",\"labelPosition\",\"density\",\"horizontal\",\"vertical\",\"top\",\"bottom\",\"end\",\"default\",\"comfortable\",\"compact\"]},\"effects\":[\"set-value\",\"set-value\",\"set-value\",\"set-value\"],\"affectedPaths\":[\"orientation\",\"headerPosition\",\"labelPosition\",\"density\"],\"validators\":[{\"validatorId\":\"orientation-values-valid\",\"level\":\"error\",\"code\":\"PSTEP013\",\"description\":\"Orientation, headerPosition, labelPosition and density values must match StepperMetadata enums.\"},{\"validatorId\":\"label-position-compatible\",\"level\":\"warning\",\"code\":\"PSTEP014\",\"description\":\"labelPosition only affects horizontal steppers and must round-trip without corrupting vertical layout.\"},{\"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.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"switch-vertical-layout\",\"request\":\"Make the stepper vertical.\",\"operationId\":\"orientation.set\",\"params\":{\"orientation\":\"vertical\",\"headerPosition\":\"top\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
2232
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2233
|
+
"contentHash": "84f52b816909749fd735d0e5d5edae1628e5f37927831b7c10f801cfe033fd50",
|
|
2234
|
+
"sourceKind": "component_definition",
|
|
2235
|
+
"sourceId": "praxis-stepper",
|
|
2236
|
+
"corpusVersion": "1.0.0"
|
|
2237
|
+
},
|
|
2238
|
+
{
|
|
2239
|
+
"chunkIndex": 11,
|
|
2240
|
+
"chunkKind": "authoring_manifest",
|
|
2241
|
+
"content": "{\"operationId\":\"validation.rule.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add validation rule Effects: compile-domain-patch. Require email before continuing from profile.\",\"scope\":\"rule\",\"target\":{\"kind\":\"validationGate\",\"resolver\":\"step-validation-by-id\",\"required\":true},\"inputContract\":{\"required\":[\"stepId\",\"rule\"],\"properties\":[\"stepId\",\"fieldName\",\"childComponentId\",\"rule\",\"message\",\"remote\"],\"semanticTerms\":[\"stepId\",\"fieldName\",\"childComponentId\",\"rule\",\"message\",\"remote\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"steps[].form.config\",\"steps[].form.config.sections\",\"steps[].form.config.fieldMetadata\",\"steps[].hasError\",\"steps[].errorMessage\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"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.\"},{\"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.\"},{\"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.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"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}],\"negativeExamples\":[]}",
|
|
2242
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2243
|
+
"contentHash": "54425e934ed6f82cfce7e21ff95a0a87586c76ec5bf89c49055144a0241dc4fe",
|
|
2244
|
+
"sourceKind": "component_definition",
|
|
2245
|
+
"sourceId": "praxis-stepper",
|
|
2246
|
+
"corpusVersion": "1.0.0"
|
|
2247
|
+
},
|
|
2248
|
+
{
|
|
2249
|
+
"chunkIndex": 12,
|
|
2250
|
+
"chunkKind": "authoring_manifest",
|
|
2251
|
+
"content": "{\"operationId\":\"step.content.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set step content Effects: merge-by-key.\",\"scope\":\"layout\",\"target\":{\"kind\":\"stepContent\",\"resolver\":\"step-content-by-id\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"id\",\"label\",\"description\",\"optional\",\"editable\",\"completed\",\"hasError\",\"state\",\"stateIcon\",\"errorMessage\",\"form\",\"stepBlocksBeforeForm\",\"stepBlocksAfterForm\",\"widgets\"],\"semanticTerms\":[\"id\",\"label\",\"description\",\"optional\",\"editable\",\"completed\",\"hasError\",\"state\",\"stateIcon\",\"errorMessage\",\"form\",\"stepBlocksBeforeForm\",\"stepBlocksAfterForm\",\"widgets\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"steps[].form\",\"steps[].stepBlocksBeforeForm\",\"steps[].stepBlocksAfterForm\",\"steps[].widgets\"],\"validators\":[{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"step-content-valid\",\"level\":\"error\",\"code\":\"PSTEP004\",\"description\":\"Step content must remain valid Dynamic Form config, RichContentDocument or WidgetDefinition[] metadata.\"},{\"validatorId\":\"nested-widget-contract-delegated\",\"level\":\"info\",\"code\":\"PSTEP018\",\"description\":\"Nested widget content remains governed by the child component contract and widgetEvent path delegation.\"}],\"preconditions\":[\"config-initialized\",\"target-step-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
2252
|
+
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2253
|
+
"contentHash": "991d5e0bf7aa6d1404b6d1db958b941dd6f1ce586fc31afb534a146727cb0f12",
|
|
2254
|
+
"sourceKind": "component_definition",
|
|
2255
|
+
"sourceId": "praxis-stepper",
|
|
2256
|
+
"corpusVersion": "1.0.0"
|
|
2257
|
+
},
|
|
2258
|
+
{
|
|
2259
|
+
"chunkIndex": 13,
|
|
2260
|
+
"chunkKind": "authoring_manifest",
|
|
2161
2261
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"identity\"}",
|
|
2162
2262
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
2163
2263
|
"contentHash": "cb9550199c31c1585501df60abcaa660e61095cd0fcd3ae059c97a1a83cdf754",
|
|
@@ -2166,7 +2266,7 @@
|
|
|
2166
2266
|
"corpusVersion": "1.0.0"
|
|
2167
2267
|
},
|
|
2168
2268
|
{
|
|
2169
|
-
"chunkIndex":
|
|
2269
|
+
"chunkIndex": 14,
|
|
2170
2270
|
"chunkKind": "authoring_manifest",
|
|
2171
2271
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"config\",\"type\":\"StepperMetadata\",\"description\":\"Canonical multi-step flow configuration.\"},{\"name\":\"stepperId\",\"type\":\"string\",\"description\":\"Stable id used to derive stepper config persistence scope.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Optional instance discriminator for persistence scope.\"},{\"name\":\"selectedIndex\",\"type\":\"number\",\"description\":\"Selected step index, compatible with two-way binding.\"},{\"name\":\"serverValidate\",\"type\":\"function\",\"description\":\"Optional host-owned async validation gate for step progression.\"},{\"name\":\"stepperContext\",\"type\":\"Record<string, any>\",\"description\":\"Context passed to nested widgets and rich content.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables Settings Panel authoring surfaces.\"}]}",
|
|
2172
2272
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2176,7 +2276,7 @@
|
|
|
2176
2276
|
"corpusVersion": "1.0.0"
|
|
2177
2277
|
},
|
|
2178
2278
|
{
|
|
2179
|
-
"chunkIndex":
|
|
2279
|
+
"chunkIndex": 15,
|
|
2180
2280
|
"chunkKind": "authoring_manifest",
|
|
2181
2281
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"step\",\"resolver\":\"step-by-id-or-label\",\"description\":\"A step in config.steps[].\"},{\"kind\":\"stepLabel\",\"resolver\":\"step-by-id-or-label\",\"description\":\"The visible label of a step.\"},{\"kind\":\"stepContent\",\"resolver\":\"step-content-by-id\",\"description\":\"Dynamic form, rich content or advanced widgets hosted inside a step.\"},{\"kind\":\"navigation\",\"resolver\":\"stepper-navigation-config\",\"description\":\"Footer navigation labels, icons, variant, alignment and visibility.\"},{\"kind\":\"completionRule\",\"resolver\":\"step-by-id-or-label\",\"description\":\"Optional/completed/error state metadata for a step.\"},{\"kind\":\"validationGate\",\"resolver\":\"step-validation-by-id\",\"description\":\"Validation gate that controls linear navigation and remote validation delegation.\"},{\"kind\":\"orientation\",\"resolver\":\"stepper-layout-config\",\"description\":\"Stepper orientation, header position and label position.\"}]}",
|
|
2182
2282
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2186,7 +2286,7 @@
|
|
|
2186
2286
|
"corpusVersion": "1.0.0"
|
|
2187
2287
|
},
|
|
2188
2288
|
{
|
|
2189
|
-
"chunkIndex":
|
|
2289
|
+
"chunkIndex": 16,
|
|
2190
2290
|
"chunkKind": "authoring_manifest",
|
|
2191
2291
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"step.add\",\"title\":\"Add step\",\"scope\":\"global\",\"targetKind\":\"step\",\"target\":{\"kind\":\"step\",\"resolver\":\"steps-array\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"optional\":{\"type\":\"boolean\"},\"editable\":{\"type\":\"boolean\"},\"completed\":{\"type\":\"boolean\"},\"hasError\":{\"type\":\"boolean\"},\"state\":{\"type\":\"string\"},\"stateIcon\":{\"type\":\"string\"},\"errorMessage\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelledby\":{\"type\":\"string\"},\"form\":{\"type\":\"object\"},\"stepBlocksBeforeForm\":{\"type\":\"object\"},\"stepBlocksAfterForm\":{\"type\":\"object\"},\"widgets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"steps[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"step-id-unique\",\"step-order-deterministic\",\"step-content-valid\"],\"affectedPaths\":[\"steps[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"step.remove\",\"title\":\"Remove step\",\"scope\":\"layout\",\"targetKind\":\"step\",\"target\":{\"kind\":\"step\",\"resolver\":\"step-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"replacementStepId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"stepper-step-remove\",\"handlerContract\":{\"reads\":[\"steps[]\",\"selectedIndex\"],\"writes\":[\"steps[]\",\"selectedIndex\"],\"identityKeys\":[\"steps[].id\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"replacementStepId\":{\"type\":\"string\"}}},\"failureModes\":[\"step-not-found\",\"replacement-step-not-found\",\"content-removal-not-confirmed\"],\"description\":\"Removes the target step by stable id and recomputes selectedIndex to preserve deterministic navigation state.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"step-exists\",\"selected-step-removal-safe\",\"step-content-removal-confirmed\"],\"affectedPaths\":[\"steps[]\",\"selectedIndex\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-step-exists\",\"confirmation-collected\"]},{\"operationId\":\"step.label.set\",\"title\":\"Set step label\",\"scope\":\"layout\",\"targetKind\":\"stepLabel\",\"target\":{\"kind\":\"stepLabel\",\"resolver\":\"step-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"label\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"steps[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"step-exists\",\"step-label-valid\"],\"affectedPaths\":[\"steps[].label\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-step-exists\"]},{\"operationId\":\"step.order.set\",\"title\":\"Reorder steps\",\"scope\":\"layout\",\"targetKind\":\"step\",\"target\":{\"kind\":\"step\",\"resolver\":\"step-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"beforeStepId\"],\"properties\":{\"beforeStepId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"stepper-step-reorder\",\"handlerContract\":{\"reads\":[\"steps[]\",\"selectedIndex\"],\"writes\":[\"steps[]\",\"selectedIndex\"],\"identityKeys\":[\"steps[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"beforeStepId\"],\"properties\":{\"beforeStepId\":{\"type\":\"string\"}}},\"failureModes\":[\"step-not-found\",\"before-step-not-found\",\"ambiguous-step-target\"],\"description\":\"Moves the target step before another stable step id and recomputes selectedIndex by preserving selected step identity.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"step-exists\",\"step-order-deterministic\",\"selected-index-preserved\"],\"affectedPaths\":[\"steps[]\",\"selectedIndex\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-step-exists\"]},{\"operationId\":\"step.optional.set\",\"title\":\"Set optional state\",\"scope\":\"interaction\",\"targetKind\":\"completionRule\",\"target\":{\"kind\":\"completionRule\",\"resolver\":\"step-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"optional\"],\"properties\":{\"optional\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"steps[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"step-exists\",\"completion-rule-compatible\"],\"affectedPaths\":[\"steps[].optional\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-step-exists\"]},{\"operationId\":\"step.completed.set\",\"title\":\"Set completed state\",\"scope\":\"interaction\",\"targetKind\":\"completionRule\",\"target\":{\"kind\":\"completionRule\",\"resolver\":\"step-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"completed\"],\"properties\":{\"completed\":{\"type\":\"boolean\"},\"hasError\":{\"type\":\"boolean\"},\"errorMessage\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"steps[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"step-exists\",\"completion-rule-compatible\",\"linear-completion-safe\"],\"affectedPaths\":[\"steps[].completed\",\"steps[].hasError\",\"steps[].errorMessage\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-step-exists\"]},{\"operationId\":\"navigation.mode.set\",\"title\":\"Set navigation mode\",\"scope\":\"interaction\",\"targetKind\":\"navigation\",\"target\":{\"kind\":\"navigation\",\"resolver\":\"stepper-navigation-config\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"linear\":{\"type\":\"boolean\"},\"visible\":{\"type\":\"boolean\"},\"prevLabel\":{\"type\":\"string\"},\"nextLabel\":{\"type\":\"string\"},\"prevIcon\":{\"type\":\"string\"},\"nextIcon\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"basic\",\"flat\",\"stroked\",\"raised\"]},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\"]},\"align\":{\"enum\":[\"start\",\"center\",\"end\",\"space-between\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"navigation\"},{\"kind\":\"set-value\",\"path\":\"linear\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"navigation-values-valid\",\"linear-navigation-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"navigation.visible\",\"navigation.prevLabel\",\"navigation.nextLabel\",\"navigation.prevIcon\",\"navigation.nextIcon\",\"navigation.variant\",\"navigation.color\",\"navigation.align\",\"linear\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"orientation.set\",\"title\":\"Set orientation\",\"scope\":\"layout\",\"targetKind\":\"orientation\",\"target\":{\"kind\":\"orientation\",\"resolver\":\"stepper-layout-config\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"orientation\"],\"properties\":{\"orientation\":{\"enum\":[\"horizontal\",\"vertical\"]},\"headerPosition\":{\"enum\":[\"top\",\"bottom\"]},\"labelPosition\":{\"enum\":[\"bottom\",\"end\"]},\"density\":{\"enum\":[\"default\",\"comfortable\",\"compact\"]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"orientation\"},{\"kind\":\"set-value\",\"path\":\"headerPosition\"},{\"kind\":\"set-value\",\"path\":\"labelPosition\"},{\"kind\":\"set-value\",\"path\":\"density\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"orientation-values-valid\",\"label-position-compatible\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"orientation\",\"headerPosition\",\"labelPosition\",\"density\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
2192
2292
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2196,7 +2296,7 @@
|
|
|
2196
2296
|
"corpusVersion": "1.0.0"
|
|
2197
2297
|
},
|
|
2198
2298
|
{
|
|
2199
|
-
"chunkIndex":
|
|
2299
|
+
"chunkIndex": 17,
|
|
2200
2300
|
"chunkKind": "authoring_manifest",
|
|
2201
2301
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"validation.rule.add\",\"title\":\"Add validation rule\",\"scope\":\"rule\",\"targetKind\":\"validationGate\",\"target\":{\"kind\":\"validationGate\",\"resolver\":\"step-validation-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"stepId\",\"rule\"],\"properties\":{\"stepId\":{\"type\":\"string\"},\"fieldName\":{\"type\":\"string\"},\"childComponentId\":{\"type\":\"string\"},\"rule\":{\"type\":\"object\"},\"message\":{\"type\":\"string\"},\"remote\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"stepper-validation-rule-upsert\",\"handlerContract\":{\"reads\":[\"steps[]\",\"steps[].form\",\"steps[].form.config\",\"steps[].widgets\",\"linear\"],\"writes\":[\"steps[].form.config\",\"steps[].form.config.sections\",\"steps[].form.config.fieldMetadata\",\"steps[].hasError\",\"steps[].errorMessage\"],\"identityKeys\":[\"steps[].id\",\"steps[].form.formId\",\"steps[].widgets[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"stepId\",\"rule\"],\"properties\":{\"stepId\":{\"type\":\"string\"},\"fieldName\":{\"type\":\"string\"},\"childComponentId\":{\"type\":\"string\"},\"rule\":{\"type\":\"object\"},\"message\":{\"type\":\"string\"},\"remote\":{\"type\":\"boolean\"}}},\"failureModes\":[\"step-not-found\",\"validation-target-not-found\",\"dynamic-form-config-missing\",\"remote-validation-requires-host-serverValidate\"],\"description\":\"Projects a validation rule into the step dynamic-form config or delegates it to the host serverValidate gate without redefining child component contracts.\"}}],\"validators\":[\"step-exists\",\"validation-rule-target-exists\",\"validation-rule-compatible\",\"server-validation-delegated\"],\"destructive\":false,\"requiresConfirmation\":false,\"affectedPaths\":[\"steps[].form.config\",\"steps[].form.config.sections\",\"steps[].form.config.fieldMetadata\",\"steps[].hasError\",\"steps[].errorMessage\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-step-exists\"]},{\"operationId\":\"step.content.set\",\"title\":\"Set step content\",\"scope\":\"layout\",\"targetKind\":\"stepContent\",\"target\":{\"kind\":\"stepContent\",\"resolver\":\"step-content-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"optional\":{\"type\":\"boolean\"},\"editable\":{\"type\":\"boolean\"},\"completed\":{\"type\":\"boolean\"},\"hasError\":{\"type\":\"boolean\"},\"state\":{\"type\":\"string\"},\"stateIcon\":{\"type\":\"string\"},\"errorMessage\":{\"type\":\"string\"},\"form\":{\"type\":\"object\"},\"stepBlocksBeforeForm\":{\"type\":\"object\"},\"stepBlocksAfterForm\":{\"type\":\"object\"},\"widgets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"steps[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"step-exists\",\"step-content-valid\",\"nested-widget-contract-delegated\"],\"affectedPaths\":[\"steps[].form\",\"steps[].stepBlocksBeforeForm\",\"steps[].stepBlocksAfterForm\",\"steps[].widgets\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-step-exists\"]}]}",
|
|
2202
2302
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2206,7 +2306,7 @@
|
|
|
2206
2306
|
"corpusVersion": "1.0.0"
|
|
2207
2307
|
},
|
|
2208
2308
|
{
|
|
2209
|
-
"chunkIndex":
|
|
2309
|
+
"chunkIndex": 18,
|
|
2210
2310
|
"chunkKind": "authoring_manifest",
|
|
2211
2311
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"step-id-unique\",\"level\":\"error\",\"code\":\"PSTEP001\",\"description\":\"Step ids must be unique and stable within config.steps[].\"},{\"validatorId\":\"step-exists\",\"level\":\"error\",\"code\":\"PSTEP002\",\"description\":\"Target step must exist before applying the operation.\"},{\"validatorId\":\"step-order-deterministic\",\"level\":\"error\",\"code\":\"PSTEP003\",\"description\":\"Step ordering must use stable ids, not transient array index as identity.\"},{\"validatorId\":\"step-content-valid\",\"level\":\"error\",\"code\":\"PSTEP004\",\"description\":\"Step content must remain valid Dynamic Form config, RichContentDocument or WidgetDefinition[] metadata.\"},{\"validatorId\":\"step-content-removal-confirmed\",\"level\":\"error\",\"code\":\"PSTEP005\",\"description\":\"Removing a step with form, rich content or widgets is destructive and requires confirmation.\"},{\"validatorId\":\"selected-step-removal-safe\",\"level\":\"error\",\"code\":\"PSTEP006\",\"description\":\"Removing the selected step requires a deterministic replacement selected index or explicit confirmation.\"},{\"validatorId\":\"selected-index-preserved\",\"level\":\"warning\",\"code\":\"PSTEP007\",\"description\":\"Reordering steps must preserve selected step identity and only recompute selectedIndex after resolution.\"},{\"validatorId\":\"step-label-valid\",\"level\":\"error\",\"code\":\"PSTEP008\",\"description\":\"Step labels must be non-empty text values after localization/domain projection.\"},{\"validatorId\":\"completion-rule-compatible\",\"level\":\"error\",\"code\":\"PSTEP009\",\"description\":\"Optional, completed, hasError and errorMessage flags must remain compatible with Material stepper semantics.\"},{\"validatorId\":\"linear-completion-safe\",\"level\":\"warning\",\"code\":\"PSTEP010\",\"description\":\"Forcing completion in linear mode should not bypass invalid Dynamic Form or server validation gates.\"},{\"validatorId\":\"navigation-values-valid\",\"level\":\"error\",\"code\":\"PSTEP011\",\"description\":\"Navigation labels, icons, variant, color and alignment must match StepperMetadata enums and runtime bindings.\"},{\"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.\"},{\"validatorId\":\"orientation-values-valid\",\"level\":\"error\",\"code\":\"PSTEP013\",\"description\":\"Orientation, headerPosition, labelPosition and density values must match StepperMetadata enums.\"},{\"validatorId\":\"label-position-compatible\",\"level\":\"warning\",\"code\":\"PSTEP014\",\"description\":\"labelPosition only affects horizontal steppers and must round-trip without corrupting vertical layout.\"},{\"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.\"},{\"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.\"},{\"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.\"},{\"validatorId\":\"nested-widget-contract-delegated\",\"level\":\"info\",\"code\":\"PSTEP018\",\"description\":\"Nested widget content remains governed by the child component contract and widgetEvent path delegation.\"},{\"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.\"}]}",
|
|
2212
2312
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2216,7 +2316,7 @@
|
|
|
2216
2316
|
"corpusVersion": "1.0.0"
|
|
2217
2317
|
},
|
|
2218
2318
|
{
|
|
2219
|
-
"chunkIndex":
|
|
2319
|
+
"chunkIndex": 19,
|
|
2220
2320
|
"chunkKind": "authoring_manifest",
|
|
2221
2321
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"Operations must preserve stable step ids; array index may be used only as a resolver fallback, never as canonical identity.\",\"Settings Panel editor, runtime persistence and registry projection must round-trip StepperMetadata without losing step ids, order or selectedIndex.\",\"Validation authoring must target Dynamic Form metadata or the host-owned serverValidate gate; the stepper manifest must not define a parallel validation DSL.\",\"Nested widgets remain delegated through WidgetDefinition and widgetEvent path enrichment instead of being redefined by the stepper contract.\",\"Removing a step with form, rich content or widgets requires explicit confirmation because it can delete nested authoring content.\"]}",
|
|
2222
2322
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2226,7 +2326,7 @@
|
|
|
2226
2326
|
"corpusVersion": "1.0.0"
|
|
2227
2327
|
},
|
|
2228
2328
|
{
|
|
2229
|
-
"chunkIndex":
|
|
2329
|
+
"chunkIndex": 20,
|
|
2230
2330
|
"chunkKind": "authoring_manifest",
|
|
2231
2331
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-stepper\",\"ownerPackage\":\"@praxisui/stepper\",\"configSchemaId\":\"StepperMetadata\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-review-step\",\"request\":\"Add a review step after the documents step.\",\"operationId\":\"step.add\",\"params\":{\"id\":\"review\",\"label\":\"Review\"},\"isPositive\":true},{\"id\":\"rename-profile-step\",\"request\":\"Rename the profile step to Customer profile.\",\"operationId\":\"step.label.set\",\"target\":\"profile\",\"params\":{\"label\":\"Customer profile\"},\"isPositive\":true},{\"id\":\"move-confirm-before-submit\",\"request\":\"Move confirm before submit.\",\"operationId\":\"step.order.set\",\"target\":\"confirm\",\"params\":{\"beforeStepId\":\"submit\"},\"isPositive\":true},{\"id\":\"make-upload-optional\",\"request\":\"Make the upload step optional.\",\"operationId\":\"step.optional.set\",\"target\":\"upload\",\"params\":{\"optional\":true},\"isPositive\":true},{\"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},{\"id\":\"switch-vertical-layout\",\"request\":\"Make the stepper vertical.\",\"operationId\":\"orientation.set\",\"params\":{\"orientation\":\"vertical\",\"headerPosition\":\"top\"},\"isPositive\":true},{\"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},{\"id\":\"reject-duplicate-step-id\",\"request\":\"Add another step with id review.\",\"operationId\":\"step.add\",\"params\":{\"id\":\"review\",\"label\":\"Duplicate review\"},\"isPositive\":false},{\"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}]}",
|
|
2232
2332
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/praxis-stepper-authoring-manifest.ts",
|
|
@@ -2236,7 +2336,7 @@
|
|
|
2236
2336
|
"corpusVersion": "1.0.0"
|
|
2237
2337
|
},
|
|
2238
2338
|
{
|
|
2239
|
-
"chunkIndex":
|
|
2339
|
+
"chunkIndex": 21,
|
|
2240
2340
|
"chunkKind": "context_pack",
|
|
2241
2341
|
"content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{\"orientation\":{\"mode\":\"enum\",\"options\":[{\"value\":\"horizontal\",\"label\":\"Horizontal\"},{\"value\":\"vertical\",\"label\":\"Vertical\"}]},\"headerPosition\":{\"mode\":\"enum\",\"options\":[{\"value\":\"top\",\"label\":\"Top\"},{\"value\":\"bottom\",\"label\":\"Bottom\"}]},\"labelPosition\":{\"mode\":\"enum\",\"options\":[{\"value\":\"bottom\",\"label\":\"Bottom\"},{\"value\":\"end\",\"label\":\"End\"}]},\"density\":{\"mode\":\"enum\",\"options\":[{\"value\":\"default\",\"label\":\"Default\"},{\"value\":\"comfortable\",\"label\":\"Comfortable\"},{\"value\":\"compact\",\"label\":\"Compact\"}]},\"color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"}]},\"navigation.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"basic\",\"label\":\"Basic\"},{\"value\":\"flat\",\"label\":\"Flat\"},{\"value\":\"stroked\",\"label\":\"Stroked\"},{\"value\":\"raised\",\"label\":\"Raised\"}]},\"navigation.align\":{\"mode\":\"enum\",\"options\":[{\"value\":\"start\",\"label\":\"Start\"},{\"value\":\"center\",\"label\":\"Center\"},{\"value\":\"end\",\"label\":\"End\"},{\"value\":\"space-between\",\"label\":\"Space between\"}]},\"navigation.color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"}]},\"steps[].form.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"create\",\"label\":\"Create\"},{\"value\":\"edit\",\"label\":\"Edit\"},{\"value\":\"view\",\"label\":\"View\"}]},\"steps[].form.schemaSource\":{\"mode\":\"enum\",\"options\":[{\"value\":\"resource\",\"label\":\"Resource\"},{\"value\":\"filter\",\"label\":\"Filter\"}]},\"appearance.iconsSet\":{\"mode\":\"enum\",\"options\":[{\"value\":\"material-symbols-outlined\",\"label\":\"Outlined\"},{\"value\":\"material-symbols-rounded\",\"label\":\"Rounded\"},{\"value\":\"material-symbols-sharp\",\"label\":\"Sharp\"}]}},\"actionCatalog\":[{\"id\":\"orientation.set\",\"intentExamples\":[\"orientation\",\"horizontal\",\"vertical\"],\"patchTemplate\":{\"orientation\":\"{{value}}\"}},{\"id\":\"headerPosition.set\",\"intentExamples\":[\"header position\",\"header\"],\"patchTemplate\":{\"headerPosition\":\"{{value}}\"}},{\"id\":\"labelPosition.set\",\"intentExamples\":[\"label position\",\"label align\"],\"patchTemplate\":{\"labelPosition\":\"{{value}}\"}},{\"id\":\"density.set\",\"intentExamples\":[\"density\",\"compact\",\"comfortable\"],\"patchTemplate\":{\"density\":\"{{value}}\"}},{\"id\":\"color.set\",\"intentExamples\":[\"color\",\"theme color\"],\"patchTemplate\":{\"color\":\"{{value}}\"}},{\"id\":\"linear.enable\",\"intentExamples\":[\"linear\",\"sequential\",\"require order\"],\"patchTemplate\":{\"linear\":true}},{\"id\":\"linear.disable\",\"intentExamples\":[\"non linear\",\"free navigation\"],\"patchTemplate\":{\"linear\":false}},{\"id\":\"selectedIndex.set\",\"intentExamples\":[\"select step\",\"active step\",\"selected index\"],\"patchTemplate\":{\"selectedIndex\":\"{{value}}\"}},{\"id\":\"navigation.visible.enable\",\"intentExamples\":[\"show navigation\",\"show buttons\"],\"patchTemplate\":{\"navigation\":{\"visible\":true}}},{\"id\":\"navigation.visible.disable\",\"intentExamples\":[\"hide navigation\",\"hide buttons\"],\"patchTemplate\":{\"navigation\":{\"visible\":false}}},{\"id\":\"navigation.labels.set\",\"intentExamples\":[\"next label\",\"previous label\",\"navigation labels\"],\"patchTemplate\":{\"navigation\":{\"prevLabel\":\"{{params.prev}}\",\"nextLabel\":\"{{params.next}}\"}}},{\"id\":\"step.add\",\"intentExamples\":[\"add step\",\"new step\",\"create step\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"step.label.set\",\"intentExamples\":[\"rename step\",\"step label\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"step.description.set\",\"intentExamples\":[\"step description\",\"description\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"description\":\"{{value}}\"}]}},{\"id\":\"step.optional.enable\",\"intentExamples\":[\"optional step\",\"not required\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"optional\":true}]}},{\"id\":\"step.optional.disable\",\"intentExamples\":[\"required step\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"optional\":false}]}},{\"id\":\"step.completed.set\",\"intentExamples\":[\"mark completed\",\"completed step\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"completed\":\"{{value}}\"}]}},{\"id\":\"step.error.set\",\"intentExamples\":[\"mark error\",\"step error\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"hasError\":\"{{value}}\"}]}},{\"id\":\"step.form.resourcePath.set\",\"intentExamples\":[\"form resource\",\"resource path\",\"step form\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"form\":{\"resourcePath\":\"{{value}}\"}}]}},{\"id\":\"step.form.mode.set\",\"intentExamples\":[\"form mode\",\"create mode\",\"edit mode\",\"view mode\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"form\":{\"mode\":\"{{value}}\"}}]}},{\"id\":\"step.form.formId.set\",\"intentExamples\":[\"form id\",\"form reference\"],\"patchTemplate\":{\"steps\":[{\"id\":\"{{target}}\",\"form\":{\"formId\":\"{{value}}\"}}]}}],\"fieldResolvers\":{\"steps[]\":[\"id\",\"label\"]},\"hints\":[\"Use steps[].id or steps[].label as merge keys; avoid array indexes.\",\"Step form config merges by id; avoid replacing entire steps array.\",\"Selected index expects a zero-based number.\",\"DOC: Widget purpose: stepper with ordered steps and optional per-step forms.\",\"DOC: Host inputs: stepperId (required) and config (optional).\",\"DOC: When config is provided, steps[] should be present; each step requires label.\",\"DOC: Optional step.form embeds a dynamic form; use form.resourcePath + form.config as needed.\"]}}",
|
|
2242
2342
|
"sourcePointer": "projects/praxis-stepper/src/lib/ai/stepper-context-pack.ts",
|
|
@@ -2246,7 +2346,7 @@
|
|
|
2246
2346
|
"corpusVersion": "1.0.0"
|
|
2247
2347
|
},
|
|
2248
2348
|
{
|
|
2249
|
-
"chunkIndex":
|
|
2349
|
+
"chunkIndex": 22,
|
|
2250
2350
|
"chunkKind": "recipe",
|
|
2251
2351
|
"content": "{\"_comment\":\"Wizard avançado com stepper e formulários dinâmicos (Acesso > Conta > Preferências).\",\"templateMeta\":{\"registryKey\":\"praxis-stepper\",\"variantId\":\"advanced-wizard\",\"useWhen\":\"Criar um wizard avançado de onboarding com conteúdo editorial e CTA sticky.\",\"examplePrompts\":[\"wizard avançado em três passos\",\"cadastro guiado com preferências\"]},\"id\":\"advanced-onboarding-wizard\",\"brand\":\"PRAXIS UI\",\"progress\":{\"variant\":\"line\",\"showLabels\":true,\"labelPosition\":\"bottom\"},\"cta\":{\"label\":\"Continuar\",\"action\":\"next\",\"secondaryLabel\":\"Voltar\",\"secondaryAction\":\"prev\",\"sticky\":true},\"preferences\":{\"stepId\":\"preferences\",\"storageKey\":\"praxis:advanced-wizard\",\"persistFields\":[\"novidadesProduto\",\"eventosConteudo\",\"recomendacoes\"]},\"theme\":{\"praxis-wizard-card-bg\":\"#fff7ef\",\"md-sys-color-surface\":\"#fff7ef\",\"md-sys-color-on-surface\":\"#33302e\",\"praxis-wizard-accent\":\"#0d7680\",\"praxis-wizard-border\":\"#cfcfcf\",\"md-sys-color-outline-variant\":\"#cfcfcf\",\"ft-font-head\":\"Georgia, \\\"Times New Roman\\\", serif\",\"ft-font-body\":\"\\\"Source Sans 3\\\", \\\"Segoe UI\\\", Arial, sans-serif\",\"ft-radius\":\"0\",\"ft-shadow\":\"none\",\"ft-header-border\":\"1px solid #cfcfcf\"},\"steps\":[{\"id\":\"access\",\"label\":\"Acesso\",\"title\":\"Crie sua conta\",\"subtitle\":\"Ative seu acesso em poucos passos e personalize a experiência desde o início.\",\"zones\":{\"intro\":[{\"type\":\"benefitsGrid\",\"title\":\"Por que se cadastrar?\",\"columns\":4,\"boxed\":true,\"items\":[{\"icon\":\"format_quote\",\"title\":\"Conteúdo relevante\",\"text\":\"Receba atualizações, novidades e materiais selecionados para o seu perfil.\"},{\"icon\":\"edit_note\",\"title\":\"Fluxo guiado\",\"text\":\"Conclua o cadastro com uma jornada simples, clara e orientada por etapas.\"},{\"icon\":\"bookmarks\",\"title\":\"Preferências salvas\",\"text\":\"Defina suas escolhas iniciais e retome o processo sem perder o progresso.\"},{\"icon\":\"mail\",\"title\":\"Comunicação sob controle\",\"text\":\"Escolha como deseja receber novidades, alertas e recomendações.\"}]}],\"footer\":[{\"type\":\"inlineNotice\",\"text\":\"Ao continuar, você concorda com os termos de uso e com a política de privacidade da plataforma.\"}]},\"cta\":{\"label\":\"Começar cadastro\",\"action\":\"next\"},\"form\":{\"config\":{\"sections\":[{\"id\":\"access-section\",\"rows\":[{\"columns\":[{\"fields\":[\"confirmAge\",\"receberNovidades\"]}]}]}],\"fieldMetadata\":[{\"name\":\"confirmAge\",\"label\":\"\",\"controlType\":\"checkbox\",\"required\":true,\"layout\":\"horizontal\",\"options\":[{\"label\":\"Confirmo que li e aceito os termos de uso e a política de privacidade.\",\"value\":true}]},{\"name\":\"receberNovidades\",\"label\":\"Receber novidades por e-mail\",\"controlType\":\"toggle\",\"defaultValue\":true,\"hint\":\"Você pode alterar essa preferência a qualquer momento nas configurações da conta.\"}],\"actions\":{\"submit\":{\"visible\":false,\"label\":\"Salvar\"},\"cancel\":{\"visible\":false,\"label\":\"Cancelar\"},\"reset\":{\"visible\":false,\"label\":\"Limpar\"}}}}},{\"id\":\"account\",\"label\":\"Conta\",\"title\":\"Configure seu acesso\",\"subtitle\":\"Esses dados serão usados para criar e proteger sua conta.\",\"zones\":{\"intro\":[{\"type\":\"inlineNotice\",\"text\":\"Use um e-mail válido para confirmar o cadastro e recuperar o acesso quando necessário.\",\"tone\":\"info\"}],\"footer\":[{\"type\":\"inlineNotice\",\"text\":\"Mensagens de segurança e comunicações operacionais continuam ativas mesmo se você desativar novidades.\"}]},\"form\":{\"config\":{\"sections\":[{\"id\":\"account-section\",\"rows\":[{\"columns\":[{\"fields\":[\"email\",\"password\"]},{\"fields\":[\"aceitaComunicacoes\"]}]}]}],\"fieldMetadata\":[{\"name\":\"email\",\"label\":\"E-mail\",\"controlType\":\"email\",\"required\":true,\"placeholder\":\"Digite seu e-mail\"},{\"name\":\"password\",\"label\":\"Senha\",\"controlType\":\"password\",\"required\":true,\"placeholder\":\"Crie uma senha\",\"hint\":\"Use 8 ou mais caracteres, combinando letras, números e símbolos.\",\"validators\":{\"minLength\":8},\"revealToggle\":{\"enabled\":true,\"style\":\"icon\",\"showLabel\":\"Mostrar senha\",\"hideLabel\":\"Ocultar senha\",\"ariaLabel\":\"Alternar visibilidade da senha\",\"iconShow\":\"visibility\",\"iconHide\":\"visibility_off\"}},{\"name\":\"aceitaComunicacoes\",\"label\":\"Receber comunicações da plataforma\",\"controlType\":\"toggle\",\"defaultValue\":true,\"hint\":\"Inclui novidades de produto, convites para eventos e conteúdos de apoio.\"}],\"actions\":{\"submit\":{\"visible\":false,\"label\":\"Salvar\"},\"cancel\":{\"visible\":false,\"label\":\"Cancelar\"},\"reset\":{\"visible\":false,\"label\":\"Limpar\"}}}}},{\"id\":\"preferences\",\"label\":\"Preferências\",\"title\":\"Personalize sua experiência\",\"subtitle\":\"Você pode alterar essas configurações a qualquer momento no painel da conta.\",\"description\":\"Escolha quais comunicações e recomendações fazem sentido para o seu contexto.\",\"zones\":{\"footer\":[{\"type\":\"divider\"},{\"type\":\"inlineNotice\",\"text\":\"Alertas de segurança e mensagens essenciais sobre a conta permanecem ativos para garantir a operação.\"}]},\"cta\":{\"label\":\"Concluir cadastro\",\"action\":\"submit\",\"secondaryLabel\":\"Voltar\",\"secondaryAction\":\"prev\"},\"form\":{\"config\":{\"sections\":[{\"id\":\"prefs-section\",\"rows\":[{\"columns\":[{\"fields\":[\"novidadesProduto\"]},{\"fields\":[\"eventosConteudo\"]},{\"fields\":[\"recomendacoes\"]}]}]}],\"fieldMetadata\":[{\"name\":\"novidadesProduto\",\"label\":\"Novidades de produto\",\"controlType\":\"toggle\",\"defaultValue\":true,\"hint\":\"Receba lançamentos, melhorias e comunicados importantes sobre a plataforma.\"},{\"name\":\"eventosConteudo\",\"label\":\"Eventos e conteúdos especiais\",\"controlType\":\"toggle\",\"defaultValue\":true,\"hint\":\"Seja avisado sobre webinars, materiais técnicos e convites para trilhas de capacitação.\"},{\"name\":\"recomendacoes\",\"label\":\"Recomendações personalizadas\",\"controlType\":\"toggle\",\"defaultValue\":false,\"hint\":\"Receba sugestões de recursos e exemplos com base nas suas preferências de uso.\"}],\"actions\":{\"submit\":{\"visible\":false,\"label\":\"Salvar\"},\"cancel\":{\"visible\":false,\"label\":\"Cancelar\"},\"reset\":{\"visible\":false,\"label\":\"Limpar\"}}}}}]}",
|
|
2252
2352
|
"sourcePointer": "examples/ai-recipes/praxis-ft-wizard.json",
|
|
@@ -2256,7 +2356,7 @@
|
|
|
2256
2356
|
"corpusVersion": "1.0.0"
|
|
2257
2357
|
},
|
|
2258
2358
|
{
|
|
2259
|
-
"chunkIndex":
|
|
2359
|
+
"chunkIndex": 23,
|
|
2260
2360
|
"chunkKind": "recipe",
|
|
2261
2361
|
"content": "{\"_comment\":\"Recipe for the current @praxisui/stepper contract. Use steps[].form for Dynamic Form steps, stepBlocksBeforeForm/stepBlocksAfterForm for editorial rich content, and steps[].widgets only for real nested runtime widgets.\",\"templateMeta\":{\"registryKey\":\"praxis-stepper\",\"variantId\":\"onboarding-workflow\",\"useWhen\":\"Create a guided multi-step workflow with forms, rich content, nested widgets and event bubbling.\",\"examplePrompts\":[\"create an employee onboarding stepper\",\"show a stepper with a form step, upload step and approval checklist\",\"configure praxis-stepper with nested widgets\"]},\"authoringGuidance\":[\"Use a stable stepperId for persistence and configuration editing.\",\"Use steps[].form.config for step-local Dynamic Form sections, fieldMetadata, validators and formRules.\",\"Use stepBlocksBeforeForm and stepBlocksAfterForm for copy, badges, notices and other editorial content.\",\"Use steps[].widgets only for runtime components such as praxis-files-upload or praxis-list.\",\"Do not use legacy steps[].content or icon-only fields as the source of runtime content.\"],\"config\":{\"orientation\":\"horizontal\",\"linear\":true,\"labelPosition\":\"bottom\",\"selectedIndex\":0,\"density\":\"comfortable\",\"appearance\":{\"preset\":\"ft-light\",\"icons\":{\"number\":\"radio_button_unchecked\",\"done\":\"check_circle\",\"edit\":\"edit_note\",\"error\":\"error\"}},\"navigation\":{\"visible\":true,\"prevLabel\":\"Back\",\"nextLabel\":\"Continue\",\"prevIcon\":\"arrow_back\",\"nextIcon\":\"arrow_forward\",\"variant\":\"stroked\",\"color\":\"primary\",\"align\":\"space-between\"},\"steps\":[{\"id\":\"employee-intake\",\"label\":\"Employee\",\"description\":\"Capture identity, assignment and workflow-only risk fields.\",\"editable\":true,\"stepBlocksBeforeForm\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[{\"type\":\"text\",\"text\":\"The step owns its local Dynamic Form config. Backend metadata can replace this config later without changing the Stepper host template.\"},{\"type\":\"badge\",\"label\":\"form rules\"},{\"type\":\"badge\",\"label\":\"validators\"}]},\"form\":{\"mode\":\"create\",\"formId\":\"employee-onboarding-intake-form\",\"schemaSource\":\"resource\",\"config\":{\"metadata\":{\"name\":\"Employee onboarding intake\",\"version\":\"1.0.0\"},\"behavior\":{\"reactiveValidation\":true,\"reactiveValidationDebounceMs\":200},\"sections\":[{\"id\":\"identity\",\"title\":\"Identity\",\"description\":\"Candidate identity and contact data.\",\"appearance\":\"outlined\",\"rows\":[{\"id\":\"identity-row\",\"columns\":[{\"id\":\"identity-main\",\"span\":{\"md\":6,\"lg\":6},\"fields\":[\"nomeCompleto\",\"email\"]},{\"id\":\"identity-contact\",\"span\":{\"md\":6,\"lg\":6},\"fields\":[\"telefone\",\"dataNascimento\"]}]}]},{\"id\":\"assignment\",\"title\":\"Assignment\",\"description\":\"Initial role and payroll policy.\",\"appearance\":\"outlined\",\"rows\":[{\"id\":\"assignment-row\",\"columns\":[{\"id\":\"assignment-main\",\"span\":{\"md\":6,\"lg\":6},\"fields\":[\"cargoId\",\"departamentoId\"]},{\"id\":\"assignment-payroll\",\"span\":{\"md\":6,\"lg\":6},\"fields\":[\"salario\",\"requiresSecurityReview\"]}]}]}],\"fieldMetadata\":[{\"name\":\"nomeCompleto\",\"label\":\"Nome Completo\",\"controlType\":\"input\",\"validators\":{\"required\":true,\"minLength\":3,\"maxLength\":160}},{\"name\":\"email\",\"label\":\"Email\",\"controlType\":\"email\",\"validators\":{\"required\":true,\"email\":true}},{\"name\":\"telefone\",\"label\":\"Telefone\",\"controlType\":\"phone\",\"validators\":{\"required\":true}},{\"name\":\"dataNascimento\",\"label\":\"Data de Nascimento\",\"controlType\":\"date\",\"validators\":{\"required\":true}},{\"name\":\"cargoId\",\"label\":\"Cargo\",\"controlType\":\"select\",\"validators\":{\"required\":true},\"options\":[{\"label\":\"Analista de Operacoes\",\"value\":\"analyst\"},{\"label\":\"Agente de Campo\",\"value\":\"field-agent\"},{\"label\":\"Diretor de P&D\",\"value\":\"director-rd\"}]},{\"name\":\"departamentoId\",\"label\":\"Departamento\",\"controlType\":\"select\",\"validators\":{\"required\":true},\"options\":[{\"label\":\"Operacoes\",\"value\":\"operations\"},{\"label\":\"Pesquisa\",\"value\":\"research\"},{\"label\":\"Seguranca\",\"value\":\"security\"}]},{\"name\":\"salario\",\"label\":\"Salario inicial\",\"controlType\":\"currency\",\"currencyCode\":\"BRL\",\"locale\":\"pt-BR\",\"validators\":{\"required\":true,\"min\":1800}},{\"name\":\"requiresSecurityReview\",\"label\":\"Requires security review\",\"controlType\":\"toggle\"}]}}},{\"id\":\"evidence\",\"label\":\"Evidence\",\"description\":\"Collect supporting files through a nested Files Upload widget.\",\"optional\":true,\"widgets\":[{\"id\":\"praxis-files-upload\",\"inputs\":{\"filesUploadId\":\"employee-onboarding-evidence\",\"baseUrl\":\"/api/files\",\"displayMode\":\"compact\",\"config\":{\"strategy\":\"direct\",\"ui\":{\"showDropzone\":true,\"showConflictPolicySelector\":true,\"showMetadataForm\":true,\"showProgress\":true,\"manualUpload\":true},\"limits\":{\"maxFileSizeBytes\":10485760,\"maxFilesPerBulk\":4,\"maxBulkSizeBytes\":31457280}}}}]},{\"id\":\"approval\",\"label\":\"Approval\",\"description\":\"Review completion criteria before sending the workflow to the host.\",\"widgets\":[{\"id\":\"praxis-list\",\"inputs\":{\"listId\":\"employee-onboarding-approval-checklist\",\"config\":{\"dataSource\":{\"data\":[{\"id\":1,\"title\":\"Identity fields validated\",\"owner\":\"People Ops\",\"status\":\"Required\",\"priority\":\"P0\"},{\"id\":2,\"title\":\"Evidence attached or waived\",\"owner\":\"Hiring Manager\",\"status\":\"Required\",\"priority\":\"P0\"},{\"id\":3,\"title\":\"Security review completed\",\"owner\":\"Security\",\"status\":\"Conditional\",\"priority\":\"P1\"}]},\"selection\":{\"mode\":\"multiple\",\"compareBy\":\"id\",\"return\":\"id\"},\"templating\":{\"leading\":{\"type\":\"icon\",\"expr\":\"task_alt\"},\"primary\":{\"type\":\"text\",\"expr\":\"${item.title}\"},\"secondary\":{\"type\":\"text\",\"expr\":\"${item.owner}\"},\"meta\":{\"type\":\"chip\",\"expr\":\"${item.priority}\",\"variant\":\"filled\"},\"trailing\":{\"type\":\"chip\",\"expr\":\"${item.status}\",\"variant\":\"outlined\"}}}}}]}]},\"outputs\":{\"selectionChange\":\"emit\",\"selectedIndexChange\":\"emit\",\"stepFormReady\":\"emit\",\"stepFormValueChange\":\"emit\"}}",
|
|
2262
2362
|
"sourcePointer": "examples/ai-recipes/praxis-stepper.json",
|
|
@@ -9,7 +9,7 @@ import * as i3$1 from '@angular/material/button';
|
|
|
9
9
|
import { MatButtonModule } from '@angular/material/button';
|
|
10
10
|
import * as i4$1 from '@angular/material/icon';
|
|
11
11
|
import { MatIconModule } from '@angular/material/icon';
|
|
12
|
-
import {
|
|
12
|
+
import { PraxisIconButtonComponent, providePraxisI18n, PraxisI18nService, IconPickerService, createEmptyRichContentDocument, PraxisIconDirective, deepMerge, ASYNC_CONFIG_STORAGE, ComponentKeyService, LoggerService, DynamicWidgetLoaderDirective, EmptyStateCardComponent, EDITORIAL_WIDGET_TAG, ComponentMetadataRegistry, createCorporateLoggerConfig, ConsoleLoggerSink, CONFIG_STORAGE } from '@praxisui/core';
|
|
13
13
|
import * as i1$1 from '@angular/forms';
|
|
14
14
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
15
15
|
import { PraxisDynamicFormConfigEditor, PraxisDynamicForm } from '@praxisui/dynamic-form';
|
|
@@ -34,7 +34,7 @@ import { PraxisFilesUploadConfigEditor } from '@praxisui/files-upload';
|
|
|
34
34
|
import { ComponentPaletteDialogComponent } from '@praxisui/page-builder';
|
|
35
35
|
import * as i5 from '@angular/material/checkbox';
|
|
36
36
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
37
|
-
import * as
|
|
37
|
+
import * as i3$2 from '@angular/material/progress-spinner';
|
|
38
38
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
39
39
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
40
40
|
import { BaseAiAdapter, shouldRoutePromptToGovernedDecision, AiBackendApiService, PraxisAssistantSessionRegistryService, PraxisAssistantTurnOrchestratorService, createPraxisAssistantViewportLayout, PraxisAiAssistantShellComponent } from '@praxisui/ai';
|
|
@@ -279,13 +279,13 @@ class StepperNestedSettingsDialogComponent {
|
|
|
279
279
|
<h2>{{ data.title }}</h2>
|
|
280
280
|
</div>
|
|
281
281
|
<button
|
|
282
|
-
|
|
282
|
+
praxisIconButton="close"
|
|
283
|
+
size="compact"
|
|
283
284
|
type="button"
|
|
284
285
|
data-testid="stepper-nested-settings-cancel"
|
|
285
286
|
aria-label="Close nested editor"
|
|
286
|
-
(click)="onCancel()"
|
|
287
|
-
|
|
288
|
-
</button>
|
|
287
|
+
(click)="onCancel()"
|
|
288
|
+
></button>
|
|
289
289
|
</header>
|
|
290
290
|
|
|
291
291
|
<div class="pdx-stepper-nested-dialog__status" [class.invalid]="!isValid">
|
|
@@ -342,16 +342,15 @@ class StepperNestedSettingsDialogComponent {
|
|
|
342
342
|
</button>
|
|
343
343
|
</footer>
|
|
344
344
|
</section>
|
|
345
|
-
`, isInline: true, styles: [":host{display:block}.pdx-stepper-nested-dialog{--pdx-nested-surface: color-mix(in srgb, var(--md-sys-color-surface-container, #1f2630) 92%, black);background:var(--pdx-nested-surface);color:var(--md-sys-color-on-surface, #eef2ff);min-width:min(760px,88vw);max-width:92vw;max-height:86vh;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden}.pdx-stepper-nested-dialog__header,.pdx-stepper-nested-dialog__footer{display:flex;align-items:center;gap:12px;padding:16px 20px;border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #4b5563) 48%,transparent)}.pdx-stepper-nested-dialog__header{justify-content:space-between;border-bottom:1px solid}.pdx-stepper-nested-dialog__header h2{margin:0;font-size:18px;font-weight:800;letter-spacing:-.01em}.pdx-stepper-nested-dialog__eyebrow{margin:0 0 4px;color:var(--md-sys-color-primary, #8ab4ff);font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.pdx-stepper-nested-dialog__status{min-height:34px;display:flex;align-items:center;gap:8px;padding:8px 20px;color:var(--md-sys-color-on-surface-variant, #c7d2fe);background:color-mix(in srgb,var(--md-sys-color-primary-container, #1d3a5f) 18%,transparent);font-size:12px}.pdx-stepper-nested-dialog__status.invalid{color:var(--md-sys-color-error, #ffb4ab);background:color-mix(in srgb,var(--md-sys-color-error-container, #5f1b1b) 18%,transparent)}.pdx-stepper-nested-dialog__body{min-height:0;overflow:auto;padding:16px 20px 22px}.pdx-stepper-nested-dialog__footer{border-top:1px solid}.pdx-stepper-nested-dialog__spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.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: "
|
|
345
|
+
`, isInline: true, styles: [":host{display:block}.pdx-stepper-nested-dialog{--pdx-nested-surface: color-mix(in srgb, var(--md-sys-color-surface-container, #1f2630) 92%, black);background:var(--pdx-nested-surface);color:var(--md-sys-color-on-surface, #eef2ff);min-width:min(760px,88vw);max-width:92vw;max-height:86vh;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden}.pdx-stepper-nested-dialog__header,.pdx-stepper-nested-dialog__footer{display:flex;align-items:center;gap:12px;padding:16px 20px;border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #4b5563) 48%,transparent)}.pdx-stepper-nested-dialog__header{justify-content:space-between;border-bottom:1px solid}.pdx-stepper-nested-dialog__header h2{margin:0;font-size:18px;font-weight:800;letter-spacing:-.01em}.pdx-stepper-nested-dialog__eyebrow{margin:0 0 4px;color:var(--md-sys-color-primary, #8ab4ff);font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.pdx-stepper-nested-dialog__status{min-height:34px;display:flex;align-items:center;gap:8px;padding:8px 20px;color:var(--md-sys-color-on-surface-variant, #c7d2fe);background:color-mix(in srgb,var(--md-sys-color-primary-container, #1d3a5f) 18%,transparent);font-size:12px}.pdx-stepper-nested-dialog__status.invalid{color:var(--md-sys-color-error, #ffb4ab);background:color-mix(in srgb,var(--md-sys-color-error-container, #5f1b1b) 18%,transparent)}.pdx-stepper-nested-dialog__body{min-height:0;overflow:auto;padding:16px 20px 22px}.pdx-stepper-nested-dialog__footer{border-top:1px solid}.pdx-stepper-nested-dialog__spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.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: MatDialogModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
346
346
|
}
|
|
347
347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: StepperNestedSettingsDialogComponent, decorators: [{
|
|
348
348
|
type: Component,
|
|
349
349
|
args: [{ selector: 'praxis-stepper-nested-settings-dialog', standalone: true, imports: [
|
|
350
350
|
MatButtonModule,
|
|
351
351
|
MatDialogModule,
|
|
352
|
-
MatIconModule,
|
|
353
352
|
MatProgressSpinnerModule,
|
|
354
|
-
|
|
353
|
+
PraxisIconButtonComponent
|
|
355
354
|
], template: `
|
|
356
355
|
<section class="pdx-stepper-nested-dialog" data-testid="stepper-nested-settings-dialog">
|
|
357
356
|
<header class="pdx-stepper-nested-dialog__header">
|
|
@@ -360,13 +359,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
360
359
|
<h2>{{ data.title }}</h2>
|
|
361
360
|
</div>
|
|
362
361
|
<button
|
|
363
|
-
|
|
362
|
+
praxisIconButton="close"
|
|
363
|
+
size="compact"
|
|
364
364
|
type="button"
|
|
365
365
|
data-testid="stepper-nested-settings-cancel"
|
|
366
366
|
aria-label="Close nested editor"
|
|
367
|
-
(click)="onCancel()"
|
|
368
|
-
|
|
369
|
-
</button>
|
|
367
|
+
(click)="onCancel()"
|
|
368
|
+
></button>
|
|
370
369
|
</header>
|
|
371
370
|
|
|
372
371
|
<div class="pdx-stepper-nested-dialog__status" [class.invalid]="!isValid">
|
|
@@ -1717,9 +1716,15 @@ class PraxisStepperConfigEditor {
|
|
|
1717
1716
|
</div>
|
|
1718
1717
|
</div>
|
|
1719
1718
|
<div class="pdx-actions">
|
|
1720
|
-
<button
|
|
1721
|
-
|
|
1722
|
-
|
|
1719
|
+
<button
|
|
1720
|
+
type="button"
|
|
1721
|
+
[praxisIconButton]="'delete'"
|
|
1722
|
+
size="dense"
|
|
1723
|
+
class="editor-icon-action editor-icon-action--danger"
|
|
1724
|
+
(click)="removeStep(i); $event.stopPropagation()"
|
|
1725
|
+
[matTooltip]="tx('editor.steps.remove', 'Remove')"
|
|
1726
|
+
[attr.aria-label]="stepRemoveAria(s, i)"
|
|
1727
|
+
></button>
|
|
1723
1728
|
</div>
|
|
1724
1729
|
</div>
|
|
1725
1730
|
}
|
|
@@ -1941,12 +1946,25 @@ class PraxisStepperConfigEditor {
|
|
|
1941
1946
|
<div class="sub">{{ w.id }}</div>
|
|
1942
1947
|
</div>
|
|
1943
1948
|
<div class="actions">
|
|
1944
|
-
<button
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1949
|
+
<button
|
|
1950
|
+
type="button"
|
|
1951
|
+
[praxisIconButton]="'tune'"
|
|
1952
|
+
size="dense"
|
|
1953
|
+
class="editor-icon-action"
|
|
1954
|
+
(click)="editWidget(w)"
|
|
1955
|
+
[disabled]="!canEditWidget(w)"
|
|
1956
|
+
[matTooltip]="tx('editor.steps.editComponent', 'Edit component')"
|
|
1957
|
+
[attr.aria-label]="tx('editor.steps.editComponent', 'Edit component')"
|
|
1958
|
+
></button>
|
|
1959
|
+
<button
|
|
1960
|
+
type="button"
|
|
1961
|
+
[praxisIconButton]="'delete'"
|
|
1962
|
+
size="dense"
|
|
1963
|
+
class="editor-icon-action editor-icon-action--danger"
|
|
1964
|
+
(click)="removeAdvancedWidget(w)"
|
|
1965
|
+
[matTooltip]="tx('editor.steps.removeComponent', 'Remove component')"
|
|
1966
|
+
[attr.aria-label]="tx('editor.steps.removeComponent', 'Remove component')"
|
|
1967
|
+
></button>
|
|
1950
1968
|
</div>
|
|
1951
1969
|
</div>
|
|
1952
1970
|
}
|
|
@@ -2188,7 +2206,7 @@ class PraxisStepperConfigEditor {
|
|
|
2188
2206
|
</mat-tab>
|
|
2189
2207
|
</mat-tab-group>
|
|
2190
2208
|
</div>
|
|
2191
|
-
`, 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}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.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$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.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$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.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$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", 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"] }] });
|
|
2209
|
+
`, 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$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.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$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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$1.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$1.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"] }] });
|
|
2192
2210
|
}
|
|
2193
2211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisStepperConfigEditor, decorators: [{
|
|
2194
2212
|
type: Component,
|
|
@@ -2197,6 +2215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2197
2215
|
MatFormFieldModule,
|
|
2198
2216
|
MatInputModule,
|
|
2199
2217
|
MatIconModule,
|
|
2218
|
+
PraxisIconButtonComponent,
|
|
2200
2219
|
PraxisIconDirective,
|
|
2201
2220
|
MatButtonModule,
|
|
2202
2221
|
MatSlideToggleModule,
|
|
@@ -2355,9 +2374,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2355
2374
|
</div>
|
|
2356
2375
|
</div>
|
|
2357
2376
|
<div class="pdx-actions">
|
|
2358
|
-
<button
|
|
2359
|
-
|
|
2360
|
-
|
|
2377
|
+
<button
|
|
2378
|
+
type="button"
|
|
2379
|
+
[praxisIconButton]="'delete'"
|
|
2380
|
+
size="dense"
|
|
2381
|
+
class="editor-icon-action editor-icon-action--danger"
|
|
2382
|
+
(click)="removeStep(i); $event.stopPropagation()"
|
|
2383
|
+
[matTooltip]="tx('editor.steps.remove', 'Remove')"
|
|
2384
|
+
[attr.aria-label]="stepRemoveAria(s, i)"
|
|
2385
|
+
></button>
|
|
2361
2386
|
</div>
|
|
2362
2387
|
</div>
|
|
2363
2388
|
}
|
|
@@ -2579,12 +2604,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2579
2604
|
<div class="sub">{{ w.id }}</div>
|
|
2580
2605
|
</div>
|
|
2581
2606
|
<div class="actions">
|
|
2582
|
-
<button
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2607
|
+
<button
|
|
2608
|
+
type="button"
|
|
2609
|
+
[praxisIconButton]="'tune'"
|
|
2610
|
+
size="dense"
|
|
2611
|
+
class="editor-icon-action"
|
|
2612
|
+
(click)="editWidget(w)"
|
|
2613
|
+
[disabled]="!canEditWidget(w)"
|
|
2614
|
+
[matTooltip]="tx('editor.steps.editComponent', 'Edit component')"
|
|
2615
|
+
[attr.aria-label]="tx('editor.steps.editComponent', 'Edit component')"
|
|
2616
|
+
></button>
|
|
2617
|
+
<button
|
|
2618
|
+
type="button"
|
|
2619
|
+
[praxisIconButton]="'delete'"
|
|
2620
|
+
size="dense"
|
|
2621
|
+
class="editor-icon-action editor-icon-action--danger"
|
|
2622
|
+
(click)="removeAdvancedWidget(w)"
|
|
2623
|
+
[matTooltip]="tx('editor.steps.removeComponent', 'Remove component')"
|
|
2624
|
+
[attr.aria-label]="tx('editor.steps.removeComponent', 'Remove component')"
|
|
2625
|
+
></button>
|
|
2588
2626
|
</div>
|
|
2589
2627
|
</div>
|
|
2590
2628
|
}
|
|
@@ -2826,7 +2864,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2826
2864
|
</mat-tab>
|
|
2827
2865
|
</mat-tab-group>
|
|
2828
2866
|
</div>
|
|
2829
|
-
`, 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}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.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"] }]
|
|
2867
|
+
`, 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"] }]
|
|
2830
2868
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2831
2869
|
type: Inject,
|
|
2832
2870
|
args: [SETTINGS_PANEL_DATA]
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/stepper",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.88",
|
|
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": "^9.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-form": "^9.0.0-beta.
|
|
12
|
-
"@praxisui/rich-content": "^9.0.0-beta.
|
|
13
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
14
|
-
"@praxisui/list": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/files-upload": "^9.0.0-beta.
|
|
16
|
-
"@praxisui/page-builder": "^9.0.0-beta.
|
|
10
|
+
"@praxisui/core": "^9.0.0-beta.88",
|
|
11
|
+
"@praxisui/dynamic-form": "^9.0.0-beta.88",
|
|
12
|
+
"@praxisui/rich-content": "^9.0.0-beta.88",
|
|
13
|
+
"@praxisui/settings-panel": "^9.0.0-beta.88",
|
|
14
|
+
"@praxisui/list": "^9.0.0-beta.88",
|
|
15
|
+
"@praxisui/files-upload": "^9.0.0-beta.88",
|
|
16
|
+
"@praxisui/page-builder": "^9.0.0-beta.88",
|
|
17
17
|
"@angular/forms": "^21.0.0",
|
|
18
18
|
"@angular/router": "^21.0.0",
|
|
19
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
19
|
+
"@praxisui/ai": "^9.0.0-beta.88",
|
|
20
20
|
"rxjs": "~7.8.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|