@praxisui/expansion 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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-07-21T15:34:49.320Z",
3
+ "generatedAt": "2026-07-23T02:50:28.389Z",
4
4
  "packageName": "@praxisui/expansion",
5
- "packageVersion": "9.0.0-beta.85",
5
+ "packageVersion": "9.0.0-beta.88",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -1719,6 +1719,106 @@
1719
1719
  {
1720
1720
  "chunkIndex": 2,
1721
1721
  "chunkKind": "authoring_manifest",
1722
+ "content": "{\"operationId\":\"panel.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add panel Effects: append-unique. Add a summary panel before the audit panel. Add another panel with id summary.\",\"scope\":\"global\",\"target\":{\"kind\":\"panel\",\"resolver\":\"panels-array\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"title\"],\"properties\":[\"id\",\"title\",\"description\",\"icon\",\"disabled\",\"expanded\",\"hideToggle\",\"collapsedHeight\",\"expandedHeight\",\"content\",\"widgets\",\"actionButtons\"],\"semanticTerms\":[\"id\",\"title\",\"description\",\"icon\",\"disabled\",\"expanded\",\"hideToggle\",\"collapsedHeight\",\"expandedHeight\",\"content\",\"widgets\",\"actionButtons\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"panels[]\"],\"validators\":[{\"validatorId\":\"panel-id-unique\",\"level\":\"error\",\"code\":\"PEXP001\",\"description\":\"Panel ids must be unique and stable within config.panels[].\"},{\"validatorId\":\"panel-order-deterministic\",\"level\":\"error\",\"code\":\"PEXP003\",\"description\":\"Panel ordering must use stable ids, not transient array index as identity.\"},{\"validatorId\":\"panel-content-valid\",\"level\":\"error\",\"code\":\"PEXP007\",\"description\":\"Panel content must remain valid FieldMetadata[], WidgetDefinition[] or action button metadata.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-summary-panel\",\"request\":\"Add a summary panel before the audit panel.\",\"operationId\":\"panel.add\",\"params\":{\"id\":\"summary\",\"title\":\"Summary\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-duplicate-panel-id\",\"request\":\"Add another panel with id summary.\",\"operationId\":\"panel.add\",\"params\":{\"id\":\"summary\",\"title\":\"Duplicate summary\"},\"isPositive\":false}]}",
1723
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1724
+ "contentHash": "73fd6392cb70afba5b1fff3b00f8bec17c4ecbff236aa672f9e314edd43fd434",
1725
+ "sourceKind": "component_definition",
1726
+ "sourceId": "praxis-expansion",
1727
+ "corpusVersion": "1.0.0"
1728
+ },
1729
+ {
1730
+ "chunkIndex": 3,
1731
+ "chunkKind": "authoring_manifest",
1732
+ "content": "{\"operationId\":\"panel.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove panel Effects: compile-domain-patch. Remove the details panel that contains widgets.\",\"scope\":\"layout\",\"target\":{\"kind\":\"panel\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"replacementExpandedPanelId\"],\"semanticTerms\":[\"replacementExpandedPanelId\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"panels[]\",\"panels[].expanded\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"default-expanded-removal-safe\",\"level\":\"error\",\"code\":\"PEXP010\",\"description\":\"Removing an expanded panel requires deterministic replacement state or explicit confirmation.\"},{\"validatorId\":\"panel-content-removal-confirmed\",\"level\":\"error\",\"code\":\"PEXP008\",\"description\":\"Removing a panel with fields, widgets or action buttons is destructive and requires confirmation.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"confirm-remove-content-panel\",\"request\":\"Remove the details panel that contains widgets.\",\"operationId\":\"panel.remove\",\"target\":\"details\",\"params\":{\"replacementExpandedPanelId\":\"summary\"},\"isPositive\":true}],\"negativeExamples\":[]}",
1733
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1734
+ "contentHash": "689c307a764b5dbed4ff24e1a041aed660f645e09cf75c12f953dd43de5fb498",
1735
+ "sourceKind": "component_definition",
1736
+ "sourceId": "praxis-expansion",
1737
+ "corpusVersion": "1.0.0"
1738
+ },
1739
+ {
1740
+ "chunkIndex": 4,
1741
+ "chunkKind": "authoring_manifest",
1742
+ "content": "{\"operationId\":\"panel.title.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set panel title Effects: merge-by-key. Rename details to Account details.\",\"scope\":\"layout\",\"target\":{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"title\"],\"properties\":[\"title\"],\"semanticTerms\":[\"title\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"panels[].title\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"panel-title-valid\",\"level\":\"error\",\"code\":\"PEXP004\",\"description\":\"Panel title must be a non-empty text value after localization/domain projection.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"rename-details-panel\",\"request\":\"Rename details to Account details.\",\"operationId\":\"panel.title.set\",\"target\":\"details\",\"params\":{\"title\":\"Account details\"},\"isPositive\":true}],\"negativeExamples\":[]}",
1743
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1744
+ "contentHash": "e24314ba997eb176c69692034cded6aeb4a7173ff3a7cb594cd955c46c13de9a",
1745
+ "sourceKind": "component_definition",
1746
+ "sourceId": "praxis-expansion",
1747
+ "corpusVersion": "1.0.0"
1748
+ },
1749
+ {
1750
+ "chunkIndex": 5,
1751
+ "chunkKind": "authoring_manifest",
1752
+ "content": "{\"operationId\":\"panel.description.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set panel description Effects: merge-by-key. Set audit panel description to Recent changes.\",\"scope\":\"layout\",\"target\":{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"description\"],\"properties\":[\"description\"],\"semanticTerms\":[\"description\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"panels[].description\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"panel-description-valid\",\"level\":\"warning\",\"code\":\"PEXP005\",\"description\":\"Panel description should remain plain header-support text and not replace panel content.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"describe-audit-panel\",\"request\":\"Set audit panel description to Recent changes.\",\"operationId\":\"panel.description.set\",\"target\":\"audit\",\"params\":{\"description\":\"Recent changes\"},\"isPositive\":true}],\"negativeExamples\":[]}",
1753
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1754
+ "contentHash": "2bf1bfac1267f918cdbea6bafc72236bad7b98e7f2d566495b743d4e80f9fe84",
1755
+ "sourceKind": "component_definition",
1756
+ "sourceId": "praxis-expansion",
1757
+ "corpusVersion": "1.0.0"
1758
+ },
1759
+ {
1760
+ "chunkIndex": 6,
1761
+ "chunkKind": "authoring_manifest",
1762
+ "content": "{\"operationId\":\"panel.icon.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set panel icon Effects: merge-by-key. Use the info icon on the summary panel.\",\"scope\":\"layout\",\"target\":{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"icon\"],\"properties\":[\"icon\"],\"semanticTerms\":[\"icon\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"panels[].icon\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"panel-icon-valid\",\"level\":\"warning\",\"code\":\"PEXP006\",\"description\":\"Panel icon metadata must remain compatible with PraxisIconDirective and editor round-trip.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PEXP017\",\"description\":\"Settings Panel editor, runtime persistence and registry projection must preserve panel ids, order, icons and expanded state.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-panel-icon\",\"request\":\"Use the info icon on the summary panel.\",\"operationId\":\"panel.icon.set\",\"target\":\"summary\",\"params\":{\"icon\":\"info\"},\"isPositive\":true}],\"negativeExamples\":[]}",
1763
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1764
+ "contentHash": "a4df412bb1a3a05597863f5d466b541efc3176a81f3348ad1cb3932765a01021",
1765
+ "sourceKind": "component_definition",
1766
+ "sourceId": "praxis-expansion",
1767
+ "corpusVersion": "1.0.0"
1768
+ },
1769
+ {
1770
+ "chunkIndex": 7,
1771
+ "chunkKind": "authoring_manifest",
1772
+ "content": "{\"operationId\":\"panel.order.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Reorder panels Effects: reorder-by-key.\",\"scope\":\"layout\",\"target\":{\"kind\":\"panel\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"beforePanelId\"],\"properties\":[\"beforePanelId\"],\"semanticTerms\":[\"beforePanelId\"]},\"effects\":[\"reorder-by-key\"],\"affectedPaths\":[\"panels[]\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"panel-order-deterministic\",\"level\":\"error\",\"code\":\"PEXP003\",\"description\":\"Panel ordering must use stable ids, not transient array index as identity.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
1773
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1774
+ "contentHash": "7149c19f4377823c95d170dfb4c60d7f0b18b8da3177f0f08c22768601e4be0f",
1775
+ "sourceKind": "component_definition",
1776
+ "sourceId": "praxis-expansion",
1777
+ "corpusVersion": "1.0.0"
1778
+ },
1779
+ {
1780
+ "chunkIndex": 8,
1781
+ "chunkKind": "authoring_manifest",
1782
+ "content": "{\"operationId\":\"panel.disabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set disabled state Effects: merge-by-key. Disable the archive panel.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"disabledState\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"disabled\"],\"properties\":[\"disabled\"],\"semanticTerms\":[\"disabled\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"panels[].disabled\",\"panels[].expanded\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"disabled-expanded-compatible\",\"level\":\"warning\",\"code\":\"PEXP012\",\"description\":\"A disabled panel should not be the only expanded/default focus target without explicit intent.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"disable-archive-panel\",\"request\":\"Disable the archive panel.\",\"operationId\":\"panel.disabled.set\",\"target\":\"archive\",\"params\":{\"disabled\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
1783
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1784
+ "contentHash": "702af7cb24268840ecbeb252e0023f9878524370c2baff2d2832091b4a328d21",
1785
+ "sourceKind": "component_definition",
1786
+ "sourceId": "praxis-expansion",
1787
+ "corpusVersion": "1.0.0"
1788
+ },
1789
+ {
1790
+ "chunkIndex": 9,
1791
+ "chunkKind": "authoring_manifest",
1792
+ "content": "{\"operationId\":\"behavior.multiExpand.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set multi-expand behavior Effects: compile-domain-patch. Allow multiple panels to stay open.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"behavior\",\"resolver\":\"expansion-behavior-config\",\"required\":true},\"inputContract\":{\"required\":[\"multi\"],\"properties\":[\"multi\"],\"semanticTerms\":[\"multi\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"accordion.multi\",\"panels[].expanded\"],\"validators\":[{\"validatorId\":\"multi-expand-default-compatible\",\"level\":\"error\",\"code\":\"PEXP011\",\"description\":\"When accordion.multi is false, at most one panel may be marked expanded by default.\"},{\"validatorId\":\"accordion-values-valid\",\"level\":\"error\",\"code\":\"PEXP013\",\"description\":\"Accordion behavior values must match ExpansionMetadata and Angular Material expansion bindings.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PEXP017\",\"description\":\"Settings Panel editor, runtime persistence and registry projection must preserve panel ids, order, icons and expanded state.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-multi-expand\",\"request\":\"Allow multiple panels to stay open.\",\"operationId\":\"behavior.multiExpand.set\",\"params\":{\"multi\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
1793
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1794
+ "contentHash": "50e11f0fb76ca38e031dbbc50467212729884c363473b48c2e6474a73a2b7b6f",
1795
+ "sourceKind": "component_definition",
1796
+ "sourceId": "praxis-expansion",
1797
+ "corpusVersion": "1.0.0"
1798
+ },
1799
+ {
1800
+ "chunkIndex": 10,
1801
+ "chunkKind": "authoring_manifest",
1802
+ "content": "{\"operationId\":\"behavior.defaultExpanded.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set default expanded panel Effects: compile-domain-patch. Open the summary panel by default. Open the missing panel by default.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"expandedState\",\"resolver\":\"panel-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"expanded\"],\"properties\":[\"expanded\",\"collapseOthers\"],\"semanticTerms\":[\"expanded\",\"collapseOthers\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"panels[].expanded\",\"accordion.multi\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"default-expanded-panel-exists\",\"level\":\"error\",\"code\":\"PEXP009\",\"description\":\"Default expanded state must reference an existing panel id.\"},{\"validatorId\":\"multi-expand-default-compatible\",\"level\":\"error\",\"code\":\"PEXP011\",\"description\":\"When accordion.multi is false, at most one panel may be marked expanded by default.\"},{\"validatorId\":\"disabled-expanded-compatible\",\"level\":\"warning\",\"code\":\"PEXP012\",\"description\":\"A disabled panel should not be the only expanded/default focus target without explicit intent.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-default-expanded-panel\",\"request\":\"Open the summary panel by default.\",\"operationId\":\"behavior.defaultExpanded.set\",\"target\":\"summary\",\"params\":{\"expanded\":true,\"collapseOthers\":true},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-missing-default-expanded\",\"request\":\"Open the missing panel by default.\",\"operationId\":\"behavior.defaultExpanded.set\",\"target\":\"missing\",\"params\":{\"expanded\":true},\"isPositive\":false}]}",
1803
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1804
+ "contentHash": "c89df6f9faac8b4998432b35ac288fc06cb6636d60cc81b230d6fd2826a97722",
1805
+ "sourceKind": "component_definition",
1806
+ "sourceId": "praxis-expansion",
1807
+ "corpusVersion": "1.0.0"
1808
+ },
1809
+ {
1810
+ "chunkIndex": 11,
1811
+ "chunkKind": "authoring_manifest",
1812
+ "content": "{\"operationId\":\"panel.content.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set panel content Effects: merge-by-key.\",\"scope\":\"layout\",\"target\":{\"kind\":\"panelContent\",\"resolver\":\"panel-content-by-id\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"id\",\"title\",\"description\",\"icon\",\"disabled\",\"expanded\",\"hideToggle\",\"collapsedHeight\",\"expandedHeight\",\"content\",\"widgets\",\"actionButtons\"],\"semanticTerms\":[\"id\",\"title\",\"description\",\"icon\",\"disabled\",\"expanded\",\"hideToggle\",\"collapsedHeight\",\"expandedHeight\",\"content\",\"widgets\",\"actionButtons\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"panels[].content\",\"panels[].widgets\",\"panels[].actionButtons\"],\"validators\":[{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"panel-content-valid\",\"level\":\"error\",\"code\":\"PEXP007\",\"description\":\"Panel content must remain valid FieldMetadata[], WidgetDefinition[] or action button metadata.\"},{\"validatorId\":\"lazy-content-compatible\",\"level\":\"info\",\"code\":\"PEXP015\",\"description\":\"Panel content remains lazy through matExpansionPanelContent and should not require eager child runtime state.\"},{\"validatorId\":\"nested-widget-contract-delegated\",\"level\":\"info\",\"code\":\"PEXP016\",\"description\":\"Nested widget content remains governed by child component contracts and component-port nestedPath semantics.\"}],\"preconditions\":[\"config-initialized\",\"target-panel-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
1813
+ "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1814
+ "contentHash": "4c7447cfc7ce40e2a173793afe29eb1214d6b70e50c084f96a417db403b96bb5",
1815
+ "sourceKind": "component_definition",
1816
+ "sourceId": "praxis-expansion",
1817
+ "corpusVersion": "1.0.0"
1818
+ },
1819
+ {
1820
+ "chunkIndex": 12,
1821
+ "chunkKind": "authoring_manifest",
1722
1822
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"identity\"}",
1723
1823
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
1724
1824
  "contentHash": "95f8606354a71b9e4d77d13556d18180d62cbf5555e0bdce6a7d56a5e5605735",
@@ -1727,7 +1827,7 @@
1727
1827
  "corpusVersion": "1.0.0"
1728
1828
  },
1729
1829
  {
1730
- "chunkIndex": 3,
1830
+ "chunkIndex": 13,
1731
1831
  "chunkKind": "authoring_manifest",
1732
1832
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"config\",\"type\":\"ExpansionMetadata\",\"description\":\"Canonical accordion and panel configuration.\"},{\"name\":\"expansionId\",\"type\":\"string\",\"description\":\"Stable id used to derive expansion config persistence scope.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Optional instance discriminator for persistence scope.\"},{\"name\":\"context\",\"type\":\"Record<string, any>\",\"description\":\"Context passed to nested widgets.\"},{\"name\":\"strictValidation\",\"type\":\"boolean\",\"description\":\"Controls nested widget validation strictness.\"},{\"name\":\"defaultOptions\",\"type\":\"MatExpansionPanelDefaultOptions\",\"description\":\"Instance-level Material expansion defaults.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables Settings Panel authoring surfaces.\"}]}",
1733
1833
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1737,7 +1837,7 @@
1737
1837
  "corpusVersion": "1.0.0"
1738
1838
  },
1739
1839
  {
1740
- "chunkIndex": 4,
1840
+ "chunkIndex": 14,
1741
1841
  "chunkKind": "authoring_manifest",
1742
1842
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"panel\",\"resolver\":\"panel-by-id-or-title\",\"description\":\"A panel in config.panels[].\"},{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"description\":\"Header title, description, icon and heights for a panel.\"},{\"kind\":\"panelContent\",\"resolver\":\"panel-content-by-id\",\"description\":\"Lazy panel content hosted through fields, widgets or action buttons.\"},{\"kind\":\"expandedState\",\"resolver\":\"panel-by-id-or-title\",\"description\":\"Panel expanded state and default expanded selection.\"},{\"kind\":\"disabledState\",\"resolver\":\"panel-by-id-or-title\",\"description\":\"Panel disabled state.\"},{\"kind\":\"layout\",\"resolver\":\"expansion-layout-config\",\"description\":\"Accordion display mode, toggle position, density and visual layout.\"},{\"kind\":\"behavior\",\"resolver\":\"expansion-behavior-config\",\"description\":\"Accordion multi-expand and hide-toggle behavior.\"}]}",
1743
1843
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1747,7 +1847,7 @@
1747
1847
  "corpusVersion": "1.0.0"
1748
1848
  },
1749
1849
  {
1750
- "chunkIndex": 5,
1850
+ "chunkIndex": 15,
1751
1851
  "chunkKind": "authoring_manifest",
1752
1852
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"panel.add\",\"title\":\"Add panel\",\"scope\":\"global\",\"targetKind\":\"panel\",\"target\":{\"kind\":\"panel\",\"resolver\":\"panels-array\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"title\"],\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"disabled\":{\"type\":\"boolean\"},\"expanded\":{\"type\":\"boolean\"},\"hideToggle\":{\"type\":\"boolean\"},\"collapsedHeight\":{\"type\":\"string\"},\"expandedHeight\":{\"type\":\"string\"},\"content\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"widgets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"actionButtons\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-id-unique\",\"panel-order-deterministic\",\"panel-content-valid\"],\"affectedPaths\":[\"panels[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"panel.remove\",\"title\":\"Remove panel\",\"scope\":\"layout\",\"targetKind\":\"panel\",\"target\":{\"kind\":\"panel\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"replacementExpandedPanelId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"expansion-panel-remove\",\"handlerContract\":{\"reads\":[\"accordion.multi\",\"panels[]\",\"panels[].id\",\"panels[].expanded\"],\"writes\":[\"panels[]\",\"panels[].expanded\"],\"identityKeys\":[\"panels[].id\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"replacementExpandedPanelId\":{\"type\":\"string\"}}},\"failureModes\":[\"panel-not-found\",\"replacement-panel-not-found\",\"content-removal-not-confirmed\",\"single-expand-conflict\"],\"description\":\"Removes the target panel by stable id and applies replacement expanded state when the removed panel was expanded.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"panel-exists\",\"default-expanded-removal-safe\",\"panel-content-removal-confirmed\"],\"affectedPaths\":[\"panels[]\",\"panels[].expanded\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\",\"confirmation-collected\"]},{\"operationId\":\"panel.title.set\",\"title\":\"Set panel title\",\"scope\":\"layout\",\"targetKind\":\"panelHeader\",\"target\":{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"title\"],\"properties\":{\"title\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-exists\",\"panel-title-valid\"],\"affectedPaths\":[\"panels[].title\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]},{\"operationId\":\"panel.description.set\",\"title\":\"Set panel description\",\"scope\":\"layout\",\"targetKind\":\"panelHeader\",\"target\":{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"description\"],\"properties\":{\"description\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-exists\",\"panel-description-valid\"],\"affectedPaths\":[\"panels[].description\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]},{\"operationId\":\"panel.icon.set\",\"title\":\"Set panel icon\",\"scope\":\"layout\",\"targetKind\":\"panelHeader\",\"target\":{\"kind\":\"panelHeader\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"icon\"],\"properties\":{\"icon\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-exists\",\"panel-icon-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"panels[].icon\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]},{\"operationId\":\"panel.order.set\",\"title\":\"Reorder panels\",\"scope\":\"layout\",\"targetKind\":\"panel\",\"target\":{\"kind\":\"panel\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"beforePanelId\"],\"properties\":{\"beforePanelId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"reorder-by-key\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-exists\",\"panel-order-deterministic\"],\"affectedPaths\":[\"panels[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]},{\"operationId\":\"panel.disabled.set\",\"title\":\"Set disabled state\",\"scope\":\"interaction\",\"targetKind\":\"disabledState\",\"target\":{\"kind\":\"disabledState\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"disabled\"],\"properties\":{\"disabled\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-exists\",\"disabled-expanded-compatible\"],\"affectedPaths\":[\"panels[].disabled\",\"panels[].expanded\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]},{\"operationId\":\"behavior.multiExpand.set\",\"title\":\"Set multi-expand behavior\",\"scope\":\"interaction\",\"targetKind\":\"behavior\",\"target\":{\"kind\":\"behavior\",\"resolver\":\"expansion-behavior-config\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"multi\"],\"properties\":{\"multi\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"expansion-multi-expand-set\",\"handlerContract\":{\"reads\":[\"accordion.multi\",\"panels[]\",\"panels[].id\",\"panels[].expanded\"],\"writes\":[\"accordion.multi\",\"panels[].expanded\"],\"identityKeys\":[\"panels[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"multi\"],\"properties\":{\"multi\":{\"type\":\"boolean\"}}},\"failureModes\":[\"multiple-expanded-panels-conflict\",\"panel-id-missing\"],\"description\":\"Sets accordion.multi and collapses competing expanded panels when switching to single-expand behavior.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"multi-expand-default-compatible\",\"accordion-values-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"accordion.multi\",\"panels[].expanded\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.defaultExpanded.set\",\"title\":\"Set default expanded panel\",\"scope\":\"interaction\",\"targetKind\":\"expandedState\",\"target\":{\"kind\":\"expandedState\",\"resolver\":\"panel-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"expanded\"],\"properties\":{\"expanded\":{\"type\":\"boolean\"},\"collapseOthers\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"expansion-default-expanded-upsert\",\"handlerContract\":{\"reads\":[\"accordion.multi\",\"panels[]\",\"panels[].id\",\"panels[].expanded\",\"panels[].disabled\"],\"writes\":[\"panels[].expanded\"],\"identityKeys\":[\"panels[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"panelId\",\"expanded\"],\"properties\":{\"panelId\":{\"type\":\"string\"},\"expanded\":{\"type\":\"boolean\"},\"collapseOthers\":{\"type\":\"boolean\"}}},\"failureModes\":[\"panel-not-found\",\"panel-disabled\",\"single-expand-conflict\"],\"description\":\"Sets a panel expanded state and collapses competing panels when accordion.multi is false.\"}}],\"validators\":[\"panel-exists\",\"default-expanded-panel-exists\",\"multi-expand-default-compatible\",\"disabled-expanded-compatible\"],\"destructive\":false,\"requiresConfirmation\":false,\"affectedPaths\":[\"panels[].expanded\",\"accordion.multi\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]}]}",
1753
1853
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1757,7 +1857,7 @@
1757
1857
  "corpusVersion": "1.0.0"
1758
1858
  },
1759
1859
  {
1760
- "chunkIndex": 6,
1860
+ "chunkIndex": 16,
1761
1861
  "chunkKind": "authoring_manifest",
1762
1862
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"panel.content.set\",\"title\":\"Set panel content\",\"scope\":\"layout\",\"targetKind\":\"panelContent\",\"target\":{\"kind\":\"panelContent\",\"resolver\":\"panel-content-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"disabled\":{\"type\":\"boolean\"},\"expanded\":{\"type\":\"boolean\"},\"hideToggle\":{\"type\":\"boolean\"},\"collapsedHeight\":{\"type\":\"string\"},\"expandedHeight\":{\"type\":\"string\"},\"content\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"widgets\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"actionButtons\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"panels[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"panel-exists\",\"panel-content-valid\",\"lazy-content-compatible\",\"nested-widget-contract-delegated\"],\"affectedPaths\":[\"panels[].content\",\"panels[].widgets\",\"panels[].actionButtons\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-panel-exists\"]}]}",
1763
1863
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1767,7 +1867,7 @@
1767
1867
  "corpusVersion": "1.0.0"
1768
1868
  },
1769
1869
  {
1770
- "chunkIndex": 7,
1870
+ "chunkIndex": 17,
1771
1871
  "chunkKind": "authoring_manifest",
1772
1872
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"panel-id-unique\",\"level\":\"error\",\"code\":\"PEXP001\",\"description\":\"Panel ids must be unique and stable within config.panels[].\"},{\"validatorId\":\"panel-exists\",\"level\":\"error\",\"code\":\"PEXP002\",\"description\":\"Target panel must exist before applying the operation.\"},{\"validatorId\":\"panel-order-deterministic\",\"level\":\"error\",\"code\":\"PEXP003\",\"description\":\"Panel ordering must use stable ids, not transient array index as identity.\"},{\"validatorId\":\"panel-title-valid\",\"level\":\"error\",\"code\":\"PEXP004\",\"description\":\"Panel title must be a non-empty text value after localization/domain projection.\"},{\"validatorId\":\"panel-description-valid\",\"level\":\"warning\",\"code\":\"PEXP005\",\"description\":\"Panel description should remain plain header-support text and not replace panel content.\"},{\"validatorId\":\"panel-icon-valid\",\"level\":\"warning\",\"code\":\"PEXP006\",\"description\":\"Panel icon metadata must remain compatible with PraxisIconDirective and editor round-trip.\"},{\"validatorId\":\"panel-content-valid\",\"level\":\"error\",\"code\":\"PEXP007\",\"description\":\"Panel content must remain valid FieldMetadata[], WidgetDefinition[] or action button metadata.\"},{\"validatorId\":\"panel-content-removal-confirmed\",\"level\":\"error\",\"code\":\"PEXP008\",\"description\":\"Removing a panel with fields, widgets or action buttons is destructive and requires confirmation.\"},{\"validatorId\":\"default-expanded-panel-exists\",\"level\":\"error\",\"code\":\"PEXP009\",\"description\":\"Default expanded state must reference an existing panel id.\"},{\"validatorId\":\"default-expanded-removal-safe\",\"level\":\"error\",\"code\":\"PEXP010\",\"description\":\"Removing an expanded panel requires deterministic replacement state or explicit confirmation.\"},{\"validatorId\":\"multi-expand-default-compatible\",\"level\":\"error\",\"code\":\"PEXP011\",\"description\":\"When accordion.multi is false, at most one panel may be marked expanded by default.\"},{\"validatorId\":\"disabled-expanded-compatible\",\"level\":\"warning\",\"code\":\"PEXP012\",\"description\":\"A disabled panel should not be the only expanded/default focus target without explicit intent.\"},{\"validatorId\":\"accordion-values-valid\",\"level\":\"error\",\"code\":\"PEXP013\",\"description\":\"Accordion behavior values must match ExpansionMetadata and Angular Material expansion bindings.\"},{\"validatorId\":\"lazy-content-compatible\",\"level\":\"info\",\"code\":\"PEXP015\",\"description\":\"Panel content remains lazy through matExpansionPanelContent and should not require eager child runtime state.\"},{\"validatorId\":\"nested-widget-contract-delegated\",\"level\":\"info\",\"code\":\"PEXP016\",\"description\":\"Nested widget content remains governed by child component contracts and component-port nestedPath semantics.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PEXP017\",\"description\":\"Settings Panel editor, runtime persistence and registry projection must preserve panel ids, order, icons and expanded state.\"}]}",
1773
1873
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1777,7 +1877,7 @@
1777
1877
  "corpusVersion": "1.0.0"
1778
1878
  },
1779
1879
  {
1780
- "chunkIndex": 8,
1880
+ "chunkIndex": 18,
1781
1881
  "chunkKind": "authoring_manifest",
1782
1882
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"Operations must preserve stable panel 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 ExpansionMetadata without losing panel ids, order, icons or expanded state.\",\"When accordion.multi is false, authoring must collapse competing panels or fail validation instead of producing multiple default-expanded panels.\",\"Lazy panel content remains represented by panels[].content, panels[].widgets and panels[].actionButtons; authoring cannot require eager child component instances.\",\"Nested widgets remain delegated through WidgetDefinition and component-port nestedPath semantics instead of being redefined by the expansion contract.\"]}",
1783
1883
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1787,7 +1887,7 @@
1787
1887
  "corpusVersion": "1.0.0"
1788
1888
  },
1789
1889
  {
1790
- "chunkIndex": 9,
1890
+ "chunkIndex": 19,
1791
1891
  "chunkKind": "authoring_manifest",
1792
1892
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-expansion\",\"ownerPackage\":\"@praxisui/expansion\",\"configSchemaId\":\"ExpansionMetadata\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-summary-panel\",\"request\":\"Add a summary panel before the audit panel.\",\"operationId\":\"panel.add\",\"params\":{\"id\":\"summary\",\"title\":\"Summary\"},\"isPositive\":true},{\"id\":\"rename-details-panel\",\"request\":\"Rename details to Account details.\",\"operationId\":\"panel.title.set\",\"target\":\"details\",\"params\":{\"title\":\"Account details\"},\"isPositive\":true},{\"id\":\"describe-audit-panel\",\"request\":\"Set audit panel description to Recent changes.\",\"operationId\":\"panel.description.set\",\"target\":\"audit\",\"params\":{\"description\":\"Recent changes\"},\"isPositive\":true},{\"id\":\"set-panel-icon\",\"request\":\"Use the info icon on the summary panel.\",\"operationId\":\"panel.icon.set\",\"target\":\"summary\",\"params\":{\"icon\":\"info\"},\"isPositive\":true},{\"id\":\"set-default-expanded-panel\",\"request\":\"Open the summary panel by default.\",\"operationId\":\"behavior.defaultExpanded.set\",\"target\":\"summary\",\"params\":{\"expanded\":true,\"collapseOthers\":true},\"isPositive\":true},{\"id\":\"enable-multi-expand\",\"request\":\"Allow multiple panels to stay open.\",\"operationId\":\"behavior.multiExpand.set\",\"params\":{\"multi\":true},\"isPositive\":true},{\"id\":\"disable-archive-panel\",\"request\":\"Disable the archive panel.\",\"operationId\":\"panel.disabled.set\",\"target\":\"archive\",\"params\":{\"disabled\":true},\"isPositive\":true},{\"id\":\"reject-missing-default-expanded\",\"request\":\"Open the missing panel by default.\",\"operationId\":\"behavior.defaultExpanded.set\",\"target\":\"missing\",\"params\":{\"expanded\":true},\"isPositive\":false},{\"id\":\"reject-duplicate-panel-id\",\"request\":\"Add another panel with id summary.\",\"operationId\":\"panel.add\",\"params\":{\"id\":\"summary\",\"title\":\"Duplicate summary\"},\"isPositive\":false},{\"id\":\"confirm-remove-content-panel\",\"request\":\"Remove the details panel that contains widgets.\",\"operationId\":\"panel.remove\",\"target\":\"details\",\"params\":{\"replacementExpandedPanelId\":\"summary\"},\"isPositive\":true}]}",
1793
1893
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/praxis-expansion-authoring-manifest.ts",
@@ -1797,7 +1897,7 @@
1797
1897
  "corpusVersion": "1.0.0"
1798
1898
  },
1799
1899
  {
1800
- "chunkIndex": 10,
1900
+ "chunkIndex": 20,
1801
1901
  "chunkKind": "context_pack",
1802
1902
  "content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{\"appearance.density\":{\"mode\":\"enum\",\"options\":[{\"value\":\"compact\",\"label\":\"Compact\"},{\"value\":\"comfortable\",\"label\":\"Comfortable\"},{\"value\":\"spacious\",\"label\":\"Spacious\"}]},\"accordion.displayMode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"default\",\"label\":\"Default\"},{\"value\":\"flat\",\"label\":\"Flat\"}]},\"accordion.togglePosition\":{\"mode\":\"enum\",\"options\":[{\"value\":\"before\",\"label\":\"Before\"},{\"value\":\"after\",\"label\":\"After\"}]}},\"actionCatalog\":[{\"id\":\"appearance.density.set\",\"intentExamples\":[\"density\",\"compact\",\"spacious\"],\"patchTemplate\":{\"appearance\":{\"density\":\"{{value}}\"}}},{\"id\":\"accordion.multi.enable\",\"intentExamples\":[\"multiple panels\",\"multi expand\",\"allow multiple\"],\"patchTemplate\":{\"accordion\":{\"multi\":true}}},{\"id\":\"accordion.multi.disable\",\"intentExamples\":[\"single panel\",\"only one open\"],\"patchTemplate\":{\"accordion\":{\"multi\":false}}},{\"id\":\"accordion.hideToggle.enable\",\"intentExamples\":[\"hide toggle\",\"no caret\"],\"patchTemplate\":{\"accordion\":{\"hideToggle\":true}}},{\"id\":\"accordion.hideToggle.disable\",\"intentExamples\":[\"show toggle\",\"show caret\"],\"patchTemplate\":{\"accordion\":{\"hideToggle\":false}}},{\"id\":\"panel.add\",\"intentExamples\":[\"add panel\",\"new panel\",\"create panel\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"title\":\"{{value}}\"}]}},{\"id\":\"panel.title.set\",\"intentExamples\":[\"rename panel\",\"panel title\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"title\":\"{{value}}\"}]}},{\"id\":\"panel.description.set\",\"intentExamples\":[\"panel description\",\"subtitle\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"description\":\"{{value}}\"}]}},{\"id\":\"panel.expand\",\"intentExamples\":[\"expand panel\",\"open panel\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"expanded\":true}]}},{\"id\":\"panel.collapse\",\"intentExamples\":[\"collapse panel\",\"close panel\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"expanded\":false}]}},{\"id\":\"panel.disable\",\"intentExamples\":[\"disable panel\",\"lock panel\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"disabled\":true}]}},{\"id\":\"panel.enable\",\"intentExamples\":[\"enable panel\",\"unlock panel\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"disabled\":false}]}},{\"id\":\"panel.hideToggle.enable\",\"intentExamples\":[\"hide panel toggle\",\"no panel toggle\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"hideToggle\":true}]}},{\"id\":\"panel.hideToggle.disable\",\"intentExamples\":[\"show panel toggle\",\"panel caret\"],\"patchTemplate\":{\"panels\":[{\"id\":\"{{target}}\",\"hideToggle\":false}]}}],\"fieldResolvers\":{\"panels[]\":[\"id\",\"title\"]},\"hints\":[\"Use panels[].id or panels[].title as merge keys; avoid array indexes.\",\"Panels merge by id/title; prefer patching a single panel at a time.\",\"DOC: Widget purpose: accordion/expansion panels with optional fields or widgets.\",\"DOC: Host inputs: expansionId (required) and config (optional).\",\"DOC: Minimal config: panels[] with title for each panel.\",\"DOC: Panel content can be fields (content) or widgets (widgets).\"]}}",
1803
1903
  "sourcePointer": "projects/praxis-expansion/src/lib/ai/expansion-context-pack.ts",
@@ -1807,7 +1907,7 @@
1807
1907
  "corpusVersion": "1.0.0"
1808
1908
  },
1809
1909
  {
1810
- "chunkIndex": 11,
1910
+ "chunkIndex": 21,
1811
1911
  "chunkKind": "recipe",
1812
1912
  "content": "{\"_comment\":\"Recipe for Praxis Expansion configuration with panels and form content.\",\"templateMeta\":{\"registryKey\":\"praxis-expansion\",\"variantId\":\"base\",\"useWhen\":\"Base expansion panel configuration.\",\"examplePrompts\":[\"create an expansion panel group\",\"add panels with icons and descriptions\"]},\"config\":{\"appearance\":{\"density\":\"comfortable\",\"themeClass\":\"expansion-theme\",\"tokens\":{\"header-background-color\":\"#f5f7fb\"}},\"accordion\":{\"multi\":true,\"displayMode\":\"default\",\"togglePosition\":\"after\",\"hideToggle\":false,\"id\":\"profile-expansion\"},\"panels\":[{\"id\":\"panel-profile\",\"title\":\"Profile\",\"description\":\"Basic information\",\"expanded\":true,\"content\":[{\"name\":\"fullName\",\"label\":\"Full name\",\"controlType\":\"input\",\"inputType\":\"text\",\"required\":true},{\"name\":\"email\",\"label\":\"Email\",\"controlType\":\"input\",\"inputType\":\"email\"},{\"name\":\"status\",\"label\":\"Status\",\"controlType\":\"select\",\"options\":[{\"label\":\"Active\",\"value\":\"active\"},{\"label\":\"Inactive\",\"value\":\"inactive\"}]}],\"actionButtons\":[{\"label\":\"Save\",\"icon\":\"save\",\"action\":\"save-profile\"}]},{\"id\":\"panel-preferences\",\"title\":\"Preferences\",\"description\":\"Notifications and defaults\",\"content\":[{\"name\":\"notifyEmail\",\"label\":\"Email notifications\",\"controlType\":\"checkbox\"},{\"name\":\"timezone\",\"label\":\"Timezone\",\"controlType\":\"select\",\"options\":[{\"label\":\"UTC-03\",\"value\":\"America/Sao_Paulo\"},{\"label\":\"UTC\",\"value\":\"UTC\"}]}]}]}}",
1813
1913
  "sourcePointer": "examples/ai-recipes/praxis-expansion.json",
@@ -19,7 +19,7 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
19
19
  import * as i8 from '@angular/material/tooltip';
20
20
  import { MatTooltipModule } from '@angular/material/tooltip';
21
21
  import { DynamicFieldLoaderDirective } from '@praxisui/dynamic-fields';
22
- import { deepMerge, ASYNC_CONFIG_STORAGE, DynamicFormService, ComponentKeyService, DynamicWidgetLoaderDirective, PraxisIconDirective, ComponentMetadataRegistry } from '@praxisui/core';
22
+ import { deepMerge, ASYNC_CONFIG_STORAGE, DynamicFormService, ComponentKeyService, DynamicWidgetLoaderDirective, PraxisIconDirective, PraxisIconButtonComponent, ComponentMetadataRegistry } from '@praxisui/core';
23
23
  import { SettingsPanelService, SETTINGS_PANEL_DATA } from '@praxisui/settings-panel';
24
24
  import { firstValueFrom, BehaviorSubject, Subscription } from 'rxjs';
25
25
  import { take } from 'rxjs/operators';
@@ -2038,15 +2038,14 @@ class PraxisExpansionConfigEditor {
2038
2038
  <mat-label>Tokens (JSON)</mat-label>
2039
2039
  <textarea matInput rows="4" [value]="stringifyTokens(config?.appearance?.tokens)" (input)="setTokens($any($event.target).value)" placeholder='{"header-background-color":"var(--md-sys-color-surface-container)"}'></textarea>
2040
2040
  <button
2041
- mat-icon-button
2041
+ praxisIconButton="help_outline"
2042
+ size="dense"
2042
2043
  matSuffix
2043
- class="help-icon-button"
2044
2044
  type="button"
2045
2045
  [matTooltip]="'Use tokens M3, por exemplo: var(--md-sys-color-primary)'"
2046
+ aria-label="Ajuda sobre tokens M3"
2046
2047
  matTooltipPosition="above"
2047
- >
2048
- <mat-icon [praxisIcon]="'help_outline'"></mat-icon>
2049
- </button>
2048
+ ></button>
2050
2049
  </mat-form-field>
2051
2050
  @if (tokensError) {
2052
2051
  <div class="error">{{ tokensError }}</div>
@@ -2121,7 +2120,7 @@ class PraxisExpansionConfigEditor {
2121
2120
  </section>
2122
2121
  }
2123
2122
  </div>
2124
- `, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.pdx-expansion-editor{display:grid;gap:16px}.sec{border:1px solid var(--md-sys-color-outline-variant);padding:12px;border-radius:10px;background:var(--md-sys-color-surface-container-lowest);display:grid;gap:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.wrap{flex-wrap:wrap}.panel-row{display:flex;gap:8px;align-items:center;width:100%}.grow{flex:1 1 auto}.grid{display:grid;gap:10px;align-items:center}.grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.full{width:100%}.error{color:var(--md-sys-color-error);font-size:12px}.pdx-expansion-editor .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.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}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2123
+ `, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.pdx-expansion-editor{display:grid;gap:16px}.sec{border:1px solid var(--md-sys-color-outline-variant);padding:12px;border-radius:10px;background:var(--md-sys-color-surface-container-lowest);display:grid;gap:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.wrap{flex-wrap:wrap}.panel-row{display:flex;gap:8px;align-items:center;width:100%}.grow{flex:1 1 auto}.grid{display:grid;gap:10px;align-items:center}.grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.full{width:100%}.error{color:var(--md-sys-color-error);font-size:12px}.pdx-expansion-editor .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2125
2124
  }
2126
2125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisExpansionConfigEditor, decorators: [{
2127
2126
  type: Component,
@@ -2133,6 +2132,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2133
2132
  MatInputModule,
2134
2133
  MatSlideToggleModule,
2135
2134
  MatTooltipModule,
2135
+ PraxisIconButtonComponent,
2136
2136
  PraxisIconDirective,
2137
2137
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
2138
2138
  <div class="pdx-expansion-editor" data-testid="expansion-config-editor">
@@ -2295,15 +2295,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2295
2295
  <mat-label>Tokens (JSON)</mat-label>
2296
2296
  <textarea matInput rows="4" [value]="stringifyTokens(config?.appearance?.tokens)" (input)="setTokens($any($event.target).value)" placeholder='{"header-background-color":"var(--md-sys-color-surface-container)"}'></textarea>
2297
2297
  <button
2298
- mat-icon-button
2298
+ praxisIconButton="help_outline"
2299
+ size="dense"
2299
2300
  matSuffix
2300
- class="help-icon-button"
2301
2301
  type="button"
2302
2302
  [matTooltip]="'Use tokens M3, por exemplo: var(--md-sys-color-primary)'"
2303
+ aria-label="Ajuda sobre tokens M3"
2303
2304
  matTooltipPosition="above"
2304
- >
2305
- <mat-icon [praxisIcon]="'help_outline'"></mat-icon>
2306
- </button>
2305
+ ></button>
2307
2306
  </mat-form-field>
2308
2307
  @if (tokensError) {
2309
2308
  <div class="error">{{ tokensError }}</div>
@@ -2378,7 +2377,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2378
2377
  </section>
2379
2378
  }
2380
2379
  </div>
2381
- `, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.pdx-expansion-editor{display:grid;gap:16px}.sec{border:1px solid var(--md-sys-color-outline-variant);padding:12px;border-radius:10px;background:var(--md-sys-color-surface-container-lowest);display:grid;gap:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.wrap{flex-wrap:wrap}.panel-row{display:flex;gap:8px;align-items:center;width:100%}.grow{flex:1 1 auto}.grid{display:grid;gap:10px;align-items:center}.grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.full{width:100%}.error{color:var(--md-sys-color-error);font-size:12px}.pdx-expansion-editor .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.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}\n"] }]
2380
+ `, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.pdx-expansion-editor{display:grid;gap:16px}.sec{border:1px solid var(--md-sys-color-outline-variant);padding:12px;border-radius:10px;background:var(--md-sys-color-surface-container-lowest);display:grid;gap:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.wrap{flex-wrap:wrap}.panel-row{display:flex;gap:8px;align-items:center;width:100%}.grow{flex:1 1 auto}.grid{display:grid;gap:10px;align-items:center}.grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.full{width:100%}.error{color:var(--md-sys-color-error);font-size:12px}.pdx-expansion-editor .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}\n"] }]
2382
2381
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2383
2382
  type: Inject,
2384
2383
  args: [SETTINGS_PANEL_DATA]
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@praxisui/expansion",
3
- "version": "9.0.0-beta.85",
3
+ "version": "9.0.0-beta.88",
4
4
  "description": "Expansion panel (accordion) components for Praxis UI with metadata configuration and editor integration.",
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.85",
11
- "@praxisui/dynamic-fields": "^9.0.0-beta.85",
12
- "@praxisui/settings-panel": "^9.0.0-beta.85",
10
+ "@praxisui/core": "^9.0.0-beta.88",
11
+ "@praxisui/dynamic-fields": "^9.0.0-beta.88",
12
+ "@praxisui/settings-panel": "^9.0.0-beta.88",
13
13
  "@angular/forms": "^21.0.0",
14
14
  "@angular/router": "^21.0.0",
15
- "@praxisui/ai": "^9.0.0-beta.85",
15
+ "@praxisui/ai": "^9.0.0-beta.88",
16
16
  "rxjs": "~7.8.0"
17
17
  },
18
18
  "dependencies": {