@praxisui/rich-content 9.0.66 → 9.0.68-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/ai/component-registry.json +87 -14
- package/fesm2022/praxisui-rich-content.mjs +1306 -75
- package/package.json +3 -2
- package/types/praxisui-rich-content.d.ts +21 -3
package/README.md
CHANGED
|
@@ -49,6 +49,8 @@ export class RichContentPreviewComponent {
|
|
|
49
49
|
|
|
50
50
|
Use `layout="inline"` for compact compositions such as icon + text, badges, links or value/caption pairs. The default `layout="block"` preserves document-style rendering.
|
|
51
51
|
|
|
52
|
+
Image presenters fit within their node's available width and preserve the source aspect ratio. A width authored through the existing node `style` constrains the image as well as its wrapper; an oversized source image does not overflow a narrow list slot or widget.
|
|
53
|
+
|
|
52
54
|
```html
|
|
53
55
|
<praxis-rich-content
|
|
54
56
|
layout="inline"
|
|
@@ -60,6 +62,32 @@ Use `layout="inline"` for compact compositions such as icon + text, badges, link
|
|
|
60
62
|
/>
|
|
61
63
|
```
|
|
62
64
|
|
|
65
|
+
## Page header
|
|
66
|
+
|
|
67
|
+
Use the `pageHeader` semantic node for a functionality opening rather than styling a `card` title. The guided editor exposes identity, location, actions and related pages without CSS or JSON. The Page Builder catalog also offers the **Cabeçalho da funcionalidade** insertion preset. Its canonical insertion shell is frameless, hides the shell heading and window controls, and supplies 12px body padding. Page Builder clones this shell per widget; it is not a RichContent input.
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"kind": "praxis.rich-content",
|
|
72
|
+
"version": "1.0.0",
|
|
73
|
+
"nodes": [{
|
|
74
|
+
"type": "pageHeader",
|
|
75
|
+
"title": "Funcionários",
|
|
76
|
+
"subtitle": "Consulte a equipe por nome, cargo e departamento.",
|
|
77
|
+
"headingLevel": 1,
|
|
78
|
+
"size": "md"
|
|
79
|
+
}]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- `headingLevel` (1–6, default 1) controls document semantics; `size` (`sm`, `md`, `lg`, default `md`) controls visual emphasis. Use only one main H1 per page.
|
|
84
|
+
- `identity` reuses an `icon`, `avatar` or `image` presenter. `titleExpr` and `subtitleExpr` bind to governed host context.
|
|
85
|
+
- `breadcrumbs` contains ancestor `link` nodes in hierarchy order. The resolved title becomes the current non-link item. The navigation region is absent when no ancestors are visible or the title cannot be resolved.
|
|
86
|
+
- `primaryAction`, `secondaryActions` and `overflowActions` reuse `actionButton` nodes and host confirmation/dispatch. Local rules cannot override an unavailable host action. Overflow uses menu items, so its editor exposes only neutral/attention tone, not button variants. Attention preserves the action name with an accessible tone annotation and does not imply a destructive operation. Legacy button styling is preserved in the document when editing other fields. Hidden or capability-limited actions do not create empty action regions.
|
|
87
|
+
- `relatedLinks` contains ordinary `link` nodes, never fabricated action IDs. Author real destinations and required context in the URL. The editor currently accepts registered action IDs and URLs; it does not provide a routing catalog or invent application routes.
|
|
88
|
+
|
|
89
|
+
The opening owns page-wide identity and actions. Keep filters and table-specific commands in the table, and avoid duplicate actions. Blank optional regions are omitted. Existing cards remain cards; migration to a page header is explicit.
|
|
90
|
+
|
|
63
91
|
## Page Builder Integration
|
|
64
92
|
|
|
65
93
|
Register the metadata provider so `@praxisui/page-builder` and dynamic widget loaders can discover the component and its canonical settings editor.
|
|
@@ -149,3 +177,5 @@ Main exports include `PraxisRichContent`, `PraxisRichContentConfigEditor`, `Rich
|
|
|
149
177
|
- Documentation: https://praxisui.dev/docs/components
|
|
150
178
|
- Live demo: https://praxis-ui-4e602.web.app
|
|
151
179
|
- Quickstart app: https://github.com/codexrodrigues/praxis-ui-quickstart
|
|
180
|
+
|
|
181
|
+
Guided validation keeps an empty required title as a repairable draft, marks the title field with its semantic error, and blocks saving/unsafe preview. The title keeps a stable accessible name; errors are associated descriptions. “Invalid document” identifies schema errors, while “Invalid JSON” is reserved for JSON syntax errors.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"generatedAt": "2026-09-09T10:03:24.330Z",
|
|
4
4
|
"packageName": "@praxisui/rich-content",
|
|
5
|
-
"packageVersion": "9.0.
|
|
5
|
+
"packageVersion": "9.0.68-rc.0",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -146,6 +146,41 @@
|
|
|
146
146
|
"title": "Configurar rich content"
|
|
147
147
|
},
|
|
148
148
|
"insertionPresets": [
|
|
149
|
+
{
|
|
150
|
+
"id": "page-header",
|
|
151
|
+
"label": "Cabeçalho da funcionalidade",
|
|
152
|
+
"description": "Título semântico e descrição, sem destinos ou ações fictícias.",
|
|
153
|
+
"icon": "title",
|
|
154
|
+
"inputs": {
|
|
155
|
+
"layout": "block",
|
|
156
|
+
"document": {
|
|
157
|
+
"kind": "praxis.rich-content",
|
|
158
|
+
"version": "1.0.0",
|
|
159
|
+
"nodes": [
|
|
160
|
+
{
|
|
161
|
+
"type": "pageHeader",
|
|
162
|
+
"title": "Título da página",
|
|
163
|
+
"headingLevel": 1,
|
|
164
|
+
"size": "md"
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"shell": {
|
|
170
|
+
"kind": "dashboard-card",
|
|
171
|
+
"preset": "frameless",
|
|
172
|
+
"showHeader": false,
|
|
173
|
+
"windowActions": {
|
|
174
|
+
"collapsible": false,
|
|
175
|
+
"fullscreen": false
|
|
176
|
+
},
|
|
177
|
+
"appearance": {
|
|
178
|
+
"body": {
|
|
179
|
+
"padding": "12px"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
},
|
|
149
184
|
{
|
|
150
185
|
"id": "editorial-card",
|
|
151
186
|
"label": "Editorial card",
|
|
@@ -4123,6 +4158,7 @@
|
|
|
4123
4158
|
"actionButton",
|
|
4124
4159
|
"compose",
|
|
4125
4160
|
"card",
|
|
4161
|
+
"pageHeader",
|
|
4126
4162
|
"callout",
|
|
4127
4163
|
"ctaGroup",
|
|
4128
4164
|
"keyValueList",
|
|
@@ -4189,6 +4225,7 @@
|
|
|
4189
4225
|
"actionButton",
|
|
4190
4226
|
"compose",
|
|
4191
4227
|
"card",
|
|
4228
|
+
"pageHeader",
|
|
4192
4229
|
"callout",
|
|
4193
4230
|
"ctaGroup",
|
|
4194
4231
|
"keyValueList",
|
|
@@ -4664,6 +4701,37 @@
|
|
|
4664
4701
|
"headerAction": {
|
|
4665
4702
|
"type": "object"
|
|
4666
4703
|
},
|
|
4704
|
+
"headingLevel": {
|
|
4705
|
+
"enum": [
|
|
4706
|
+
1,
|
|
4707
|
+
2,
|
|
4708
|
+
3,
|
|
4709
|
+
4,
|
|
4710
|
+
5,
|
|
4711
|
+
6
|
|
4712
|
+
]
|
|
4713
|
+
},
|
|
4714
|
+
"identity": {
|
|
4715
|
+
"type": "object"
|
|
4716
|
+
},
|
|
4717
|
+
"breadcrumbs": {
|
|
4718
|
+
"type": "array",
|
|
4719
|
+
"items": {
|
|
4720
|
+
"type": "object"
|
|
4721
|
+
}
|
|
4722
|
+
},
|
|
4723
|
+
"overflowActions": {
|
|
4724
|
+
"type": "array",
|
|
4725
|
+
"items": {
|
|
4726
|
+
"type": "object"
|
|
4727
|
+
}
|
|
4728
|
+
},
|
|
4729
|
+
"relatedLinks": {
|
|
4730
|
+
"type": "array",
|
|
4731
|
+
"items": {
|
|
4732
|
+
"type": "object"
|
|
4733
|
+
}
|
|
4734
|
+
},
|
|
4667
4735
|
"interaction": {
|
|
4668
4736
|
"type": "object",
|
|
4669
4737
|
"properties": {
|
|
@@ -4844,6 +4912,11 @@
|
|
|
4844
4912
|
"document.nodes[].secondaryActions",
|
|
4845
4913
|
"document.nodes[].media",
|
|
4846
4914
|
"document.nodes[].headerAction",
|
|
4915
|
+
"document.nodes[].headingLevel",
|
|
4916
|
+
"document.nodes[].identity",
|
|
4917
|
+
"document.nodes[].breadcrumbs",
|
|
4918
|
+
"document.nodes[].overflowActions",
|
|
4919
|
+
"document.nodes[].relatedLinks",
|
|
4847
4920
|
"document.nodes[].interaction",
|
|
4848
4921
|
"document.nodes[].accessibility",
|
|
4849
4922
|
"document.nodes[].fields",
|
|
@@ -7103,9 +7176,9 @@
|
|
|
7103
7176
|
{
|
|
7104
7177
|
"chunkIndex": 0,
|
|
7105
7178
|
"chunkKind": "summary",
|
|
7106
|
-
"content": "Component ID: praxis-rich-content\nSelector: praxis-rich-content\nFriendly Name: Praxis Rich Content\nDescription: Renderer canonico de RichContentDocument para blocos editoriais, cards, grupos de metricas, media blocks, timelines e primitives de apresentacao.\nLib/Package: @praxisui/rich-content\nTags: widget, rich-content, editorial, presentation, cards, timeline\nInputs:\n - document (RichContentDocument | null)\n - nodes (RichBlockNode[] | null)\n - context (JsonLogicDataRecord | null)\n - hostCapabilities (RichBlockHostCapabilities | null)\n - layout ('block' | 'inline')\n - rootClassName (string)\nInsertion Presets:\n - editorial-card: Editorial card - Starter card with title, text and badge.\n - callout-guidance: Guidance callout - Starter callout for instructions and attention states.\n - cta-group: CTA group - Governed call-to-action cluster for next steps and host-mediated flows.\n - knowledge-surface: Knowledge surface - Starter composition with record summary and disclosure.\n - lookup-card: Lookup card - Governed lookup summary with primary host-mediated action.\n - related-record: Related record - Semantic related-record summary with optional governed primary action.\n - action-card: Action card - Governed editorial card with a primary host-mediated CTA.\n - approval-decision-surface: Approval decision surface - Domain starter for approval workbenches with KPIs, related approver context and governed decisions.\n - approval-review-surface: Approval review surface - Domain starter for approval review workbenches with queue metrics, selected request context and governed escalation actions.\n - approval-audit-surface: Approval audit surface - Domain starter for approval audit workbenches with compliance signals, evidence context and governed remediation actions.\n - approval-sla-triage-surface: Approval SLA triage surface - Domain starter for approval SLA triage workbenches with breach signals, queue ownership and governed triage actions.\n - approval-delegation-exception-surface: Approval delegation exception surface - Domain starter for approval delegation and exception workbenches with substitute coverage, policy context and governed exception actions.\n - employee-insight-surface: Employee insight surface - Domain starter for HR workbenches with employee KPIs, reporting context and governed follow-up actions.\n - hr-performance-review-surface: HR performance review surface - Domain starter for HR performance review workbenches with review signals, calibrated context and governed review actions.\n - hr-compensation-review-surface: HR compensation review surface - Domain starter for HR compensation review workbenches with budget signals, reward partner context and governed compensation actions.\n - hr-promotion-review-surface: HR promotion review surface - Domain starter for HR promotion review workbenches with readiness signals, sponsor context and governed promotion actions.\n - hr-offboarding-surface: HR offboarding surface - Domain starter for HR offboarding workbenches with exit signals, transition ownership and governed departure actions.\n - hr-succession-planning-surface: HR succession planning surface - Domain starter for HR succession planning workbenches with readiness signals, successor sponsorship and governed succession actions.\n - hr-leave-absence-surface: HR leave and absence surface - Domain starter for HR leave and absence workbenches with coverage signals, partner context and governed leave actions.\n - hr-internal-mobility-surface: HR internal mobility surface - Domain starter for HR internal mobility workbenches with readiness signals, target role context and governed mobility actions.\n - onboarding-journey-surface: Onboarding journey surface - Domain starter for onboarding workbenches with journey signals, assigned owner context and governed next-step actions.\n - onboarding-readiness-surface: Onboarding readiness surface - Domain starter for onboarding readiness workbenches with first-week signals, equipment context and governed readiness actions.\n - onboarding-manager-follow-up-surface: Onboarding manager follow-up surface - Domain starter for onboarding manager follow-up workbenches with follow-up signals, manager context and governed follow-up actions.\n - onboarding-equipment-access-recovery-surface: Onboarding equipment and access recovery surface - Domain starter for onboarding equipment and access recovery workbenches with recovery signals, access owner context and governed remediation actions.\n - onboarding-day-30-coaching-surface: Onboarding day-30 coaching surface - Domain starter for onboarding day-30 coaching workbenches with coaching signals, manager context and governed development actions.\n - corporate-information-surface: Corporate information surface - Enterprise starter for SAP-like record details with KPIs, dates, currency, notes, progress, timeline and governed decision context.\n - stat-group: Stat group - Semantic metric group for dashboards, summaries and compact knowledge surfaces.\n - timeline-surface: Timeline surface - Portable lifecycle surface with horizontal timeline defaults and governed milestone metadata.\n - tabs-surface: Tabs surface - Semantic tabbed surface for portable multi-panel editorial content.\n",
|
|
7179
|
+
"content": "Component ID: praxis-rich-content\nSelector: praxis-rich-content\nFriendly Name: Praxis Rich Content\nDescription: Renderer canonico de RichContentDocument para blocos editoriais, cards, grupos de metricas, media blocks, timelines e primitives de apresentacao.\nLib/Package: @praxisui/rich-content\nTags: widget, rich-content, editorial, presentation, cards, timeline\nInputs:\n - document (RichContentDocument | null)\n - nodes (RichBlockNode[] | null)\n - context (JsonLogicDataRecord | null)\n - hostCapabilities (RichBlockHostCapabilities | null)\n - layout ('block' | 'inline')\n - rootClassName (string)\nInsertion Presets:\n - page-header: Cabeçalho da funcionalidade - Título semântico e descrição, sem destinos ou ações fictícias.\n - editorial-card: Editorial card - Starter card with title, text and badge.\n - callout-guidance: Guidance callout - Starter callout for instructions and attention states.\n - cta-group: CTA group - Governed call-to-action cluster for next steps and host-mediated flows.\n - knowledge-surface: Knowledge surface - Starter composition with record summary and disclosure.\n - lookup-card: Lookup card - Governed lookup summary with primary host-mediated action.\n - related-record: Related record - Semantic related-record summary with optional governed primary action.\n - action-card: Action card - Governed editorial card with a primary host-mediated CTA.\n - approval-decision-surface: Approval decision surface - Domain starter for approval workbenches with KPIs, related approver context and governed decisions.\n - approval-review-surface: Approval review surface - Domain starter for approval review workbenches with queue metrics, selected request context and governed escalation actions.\n - approval-audit-surface: Approval audit surface - Domain starter for approval audit workbenches with compliance signals, evidence context and governed remediation actions.\n - approval-sla-triage-surface: Approval SLA triage surface - Domain starter for approval SLA triage workbenches with breach signals, queue ownership and governed triage actions.\n - approval-delegation-exception-surface: Approval delegation exception surface - Domain starter for approval delegation and exception workbenches with substitute coverage, policy context and governed exception actions.\n - employee-insight-surface: Employee insight surface - Domain starter for HR workbenches with employee KPIs, reporting context and governed follow-up actions.\n - hr-performance-review-surface: HR performance review surface - Domain starter for HR performance review workbenches with review signals, calibrated context and governed review actions.\n - hr-compensation-review-surface: HR compensation review surface - Domain starter for HR compensation review workbenches with budget signals, reward partner context and governed compensation actions.\n - hr-promotion-review-surface: HR promotion review surface - Domain starter for HR promotion review workbenches with readiness signals, sponsor context and governed promotion actions.\n - hr-offboarding-surface: HR offboarding surface - Domain starter for HR offboarding workbenches with exit signals, transition ownership and governed departure actions.\n - hr-succession-planning-surface: HR succession planning surface - Domain starter for HR succession planning workbenches with readiness signals, successor sponsorship and governed succession actions.\n - hr-leave-absence-surface: HR leave and absence surface - Domain starter for HR leave and absence workbenches with coverage signals, partner context and governed leave actions.\n - hr-internal-mobility-surface: HR internal mobility surface - Domain starter for HR internal mobility workbenches with readiness signals, target role context and governed mobility actions.\n - onboarding-journey-surface: Onboarding journey surface - Domain starter for onboarding workbenches with journey signals, assigned owner context and governed next-step actions.\n - onboarding-readiness-surface: Onboarding readiness surface - Domain starter for onboarding readiness workbenches with first-week signals, equipment context and governed readiness actions.\n - onboarding-manager-follow-up-surface: Onboarding manager follow-up surface - Domain starter for onboarding manager follow-up workbenches with follow-up signals, manager context and governed follow-up actions.\n - onboarding-equipment-access-recovery-surface: Onboarding equipment and access recovery surface - Domain starter for onboarding equipment and access recovery workbenches with recovery signals, access owner context and governed remediation actions.\n - onboarding-day-30-coaching-surface: Onboarding day-30 coaching surface - Domain starter for onboarding day-30 coaching workbenches with coaching signals, manager context and governed development actions.\n - corporate-information-surface: Corporate information surface - Enterprise starter for SAP-like record details with KPIs, dates, currency, notes, progress, timeline and governed decision context.\n - stat-group: Stat group - Semantic metric group for dashboards, summaries and compact knowledge surfaces.\n - timeline-surface: Timeline surface - Portable lifecycle surface with horizontal timeline defaults and governed milestone metadata.\n - tabs-surface: Tabs surface - Semantic tabbed surface for portable multi-panel editorial content.\n",
|
|
7107
7180
|
"sourcePointer": "projects/praxis-rich-content/src/lib/praxis-rich-content.metadata.ts",
|
|
7108
|
-
"contentHash": "
|
|
7181
|
+
"contentHash": "1cce951a20574470dfae6e98ed9b93a0e8559d9200a5cee16bf00f7587ad1d7f",
|
|
7109
7182
|
"sourceKind": "component_definition",
|
|
7110
7183
|
"sourceId": "praxis-rich-content",
|
|
7111
7184
|
"corpusVersion": "1.0.0"
|
|
@@ -7123,9 +7196,9 @@
|
|
|
7123
7196
|
{
|
|
7124
7197
|
"chunkIndex": 2,
|
|
7125
7198
|
"chunkKind": "authoring_manifest",
|
|
7126
|
-
"content": "{\"operationId\":\"block.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add rich content block Effects: compile-domain-patch. Add a text block saying Welcome.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"document-nodes-array\",\"required\":false},\"inputContract\":{\"required\":[\"type\"],\"properties\":[\"type\",\"node\",\"afterBlockId\",\"beforeBlockId\"],\"semanticTerms\":[\"type\",\"node\",\"afterBlockId\",\"beforeBlockId\",\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[]\"],\"validators\":[{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"block-id-unique\",\"level\":\"warning\",\"code\":\"PRC004\",\"description\":\"Stable block ids should be unique when present; operations should prefer ids over array indexes.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-text-block\",\"request\":\"Add a text block saying Welcome.\",\"operationId\":\"block.add\",\"params\":{\"type\":\"text\",\"node\":{\"id\":\"welcome\",\"type\":\"text\",\"text\":\"Welcome\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7199
|
+
"content": "{\"operationId\":\"block.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add rich content block Effects: compile-domain-patch. Add a text block saying Welcome.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"document-nodes-array\",\"required\":false},\"inputContract\":{\"required\":[\"type\"],\"properties\":[\"type\",\"node\",\"afterBlockId\",\"beforeBlockId\"],\"semanticTerms\":[\"type\",\"node\",\"afterBlockId\",\"beforeBlockId\",\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"pageHeader\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[]\"],\"validators\":[{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"block-id-unique\",\"level\":\"warning\",\"code\":\"PRC004\",\"description\":\"Stable block ids should be unique when present; operations should prefer ids over array indexes.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-text-block\",\"request\":\"Add a text block saying Welcome.\",\"operationId\":\"block.add\",\"params\":{\"type\":\"text\",\"node\":{\"id\":\"welcome\",\"type\":\"text\",\"text\":\"Welcome\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7127
7200
|
"sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
|
|
7128
|
-
"contentHash": "
|
|
7201
|
+
"contentHash": "a1515bc44d0cc570198a57e303226061a679c0a0f9b1d0e00a7113ff3abd48dd",
|
|
7129
7202
|
"sourceKind": "component_definition",
|
|
7130
7203
|
"sourceId": "praxis-rich-content",
|
|
7131
7204
|
"corpusVersion": "1.0.0"
|
|
@@ -7133,9 +7206,9 @@
|
|
|
7133
7206
|
{
|
|
7134
7207
|
"chunkIndex": 3,
|
|
7135
7208
|
"chunkKind": "authoring_manifest",
|
|
7136
|
-
"content": "{\"operationId\":\"block.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update rich content block fields Effects: merge-by-key.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"id\",\"testId\",\"className\",\"style\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"requiresCapabilities\",\"capabilityMode\",\"text\",\"textExpr\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"relationLabel\",\"message\",\"summary\",\"summaryExpr\",\"description\",\"ctaLabel\",\"caption\",\"emptyText\",\"errorText\",\"status\",\"statusExpr\",\"owner\",\"ownerExpr\",\"policySource\",\"policySourceExpr\",\"version\",\"versionExpr\",\"confidence\",\"confidenceExpr\",\"risk\",\"riskExpr\",\"lastReviewed\",\"lastReviewedExpr\",\"supersedes\",\"supersedesExpr\",\"evidence\",\"appearance\",\"variant\",\"tone\",\"size\",\"density\",\"orientation\",\"loading\",\"loadingExpr\",\"active\",\"activeExpr\",\"defaultTabId\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"textAppearance\",\"icon\",\"formId\",\"columns\",\"layout\",\"action\",\"actions\",\"primaryAction\",\"secondaryActions\",\"media\",\"headerAction\",\"interaction\",\"accessibility\",\"fields\",\"items\",\"header\",\"body\",\"footer\",\"aside\"],\"semanticTerms\":[\"id\",\"testId\",\"className\",\"style\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"requiresCapabilities\",\"capabilityMode\",\"text\",\"textExpr\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"relationLabel\",\"message\",\"summary\",\"summaryExpr\",\"description\",\"ctaLabel\",\"caption\",\"emptyText\",\"errorText\",\"status\",\"statusExpr\",\"owner\",\"ownerExpr\",\"policySource\",\"policySourceExpr\",\"version\",\"versionExpr\",\"confidence\",\"confidenceExpr\",\"risk\",\"riskExpr\",\"lastReviewed\",\"lastReviewedExpr\",\"supersedes\",\"supersedesExpr\",\"evidence\",\"appearance\",\"variant\",\"tone\",\"size\",\"density\",\"orientation\",\"loading\",\"loadingExpr\",\"active\",\"activeExpr\",\"defaultTabId\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"textAppearance\",\"icon\",\"formId\",\"columns\",\"layout\",\"action\",\"actions\",\"primaryAction\",\"secondaryActions\",\"media\",\"headerAction\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].style\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\",\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\",\"document.nodes[].src\",\"document.nodes[].alt\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].subtitle\",\"document.nodes[].subtitleExpr\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].summaryExpr\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].caption\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\",\"document.nodes[].status\",\"document.nodes[].statusExpr\",\"document.nodes[].owner\",\"document.nodes[].ownerExpr\",\"document.nodes[].policySource\",\"document.nodes[].policySourceExpr\",\"document.nodes[].version\",\"document.nodes[].versionExpr\",\"document.nodes[].confidence\",\"document.nodes[].confidenceExpr\",\"document.nodes[].risk\",\"document.nodes[].riskExpr\",\"document.nodes[].lastReviewed\",\"document.nodes[].lastReviewedExpr\",\"document.nodes[].supersedes\",\"document.nodes[].supersedesExpr\",\"document.nodes[].evidence\",\"document.nodes[].appearance\",\"document.nodes[].variant\",\"document.nodes[].tone\",\"document.nodes[].size\",\"document.nodes[].density\",\"document.nodes[].orientation\",\"document.nodes[].loading\",\"document.nodes[].loadingExpr\",\"document.nodes[].active\",\"document.nodes[].activeExpr\",\"document.nodes[].defaultTabId\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].icon\",\"document.nodes[].formId\",\"document.nodes[].columns\",\"document.nodes[].layout\",\"document.nodes[].action\",\"document.nodes[].actions\",\"document.nodes[].primaryAction\",\"document.nodes[].secondaryActions\",\"document.nodes[].media\",\"document.nodes[].headerAction\",\"document.nodes[].interaction\",\"document.nodes[].accessibility\",\"document.nodes[].fields\",\"document.nodes[].items[]\",\"document.nodes[].header\",\"document.nodes[].body\",\"document.nodes[].footer\",\"document.nodes[].aside\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"expression-path-safe\",\"level\":\"warning\",\"code\":\"PRC010\",\"description\":\"Expression paths must remain simple context paths or Json Logic expressions, not string DSL code.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
7209
|
+
"content": "{\"operationId\":\"block.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update rich content block fields Effects: merge-by-key.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"id\",\"testId\",\"className\",\"style\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"requiresCapabilities\",\"capabilityMode\",\"text\",\"textExpr\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"relationLabel\",\"message\",\"summary\",\"summaryExpr\",\"description\",\"ctaLabel\",\"caption\",\"emptyText\",\"errorText\",\"status\",\"statusExpr\",\"owner\",\"ownerExpr\",\"policySource\",\"policySourceExpr\",\"version\",\"versionExpr\",\"confidence\",\"confidenceExpr\",\"risk\",\"riskExpr\",\"lastReviewed\",\"lastReviewedExpr\",\"supersedes\",\"supersedesExpr\",\"evidence\",\"appearance\",\"variant\",\"tone\",\"size\",\"density\",\"orientation\",\"loading\",\"loadingExpr\",\"active\",\"activeExpr\",\"defaultTabId\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"textAppearance\",\"icon\",\"formId\",\"columns\",\"layout\",\"action\",\"actions\",\"primaryAction\",\"secondaryActions\",\"media\",\"headerAction\",\"headingLevel\",\"identity\",\"breadcrumbs\",\"overflowActions\",\"relatedLinks\",\"interaction\",\"accessibility\",\"fields\",\"items\",\"header\",\"body\",\"footer\",\"aside\"],\"semanticTerms\":[\"id\",\"testId\",\"className\",\"style\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"requiresCapabilities\",\"capabilityMode\",\"text\",\"textExpr\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"relationLabel\",\"message\",\"summary\",\"summaryExpr\",\"description\",\"ctaLabel\",\"caption\",\"emptyText\",\"errorText\",\"status\",\"statusExpr\",\"owner\",\"ownerExpr\",\"policySource\",\"policySourceExpr\",\"version\",\"versionExpr\",\"confidence\",\"confidenceExpr\",\"risk\",\"riskExpr\",\"lastReviewed\",\"lastReviewedExpr\",\"supersedes\",\"supersedesExpr\",\"evidence\",\"appearance\",\"variant\",\"tone\",\"size\",\"density\",\"orientation\",\"loading\",\"loadingExpr\",\"active\",\"activeExpr\",\"defaultTabId\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"textAppearance\",\"icon\",\"formId\",\"columns\",\"layout\",\"action\",\"actions\",\"primaryAction\",\"secondaryActions\",\"media\",\"headerAction\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].style\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\",\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\",\"document.nodes[].src\",\"document.nodes[].alt\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].subtitle\",\"document.nodes[].subtitleExpr\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].summaryExpr\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].caption\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\",\"document.nodes[].status\",\"document.nodes[].statusExpr\",\"document.nodes[].owner\",\"document.nodes[].ownerExpr\",\"document.nodes[].policySource\",\"document.nodes[].policySourceExpr\",\"document.nodes[].version\",\"document.nodes[].versionExpr\",\"document.nodes[].confidence\",\"document.nodes[].confidenceExpr\",\"document.nodes[].risk\",\"document.nodes[].riskExpr\",\"document.nodes[].lastReviewed\",\"document.nodes[].lastReviewedExpr\",\"document.nodes[].supersedes\",\"document.nodes[].supersedesExpr\",\"document.nodes[].evidence\",\"document.nodes[].appearance\",\"document.nodes[].variant\",\"document.nodes[].tone\",\"document.nodes[].size\",\"document.nodes[].density\",\"document.nodes[].orientation\",\"document.nodes[].loading\",\"document.nodes[].loadingExpr\",\"document.nodes[].active\",\"document.nodes[].activeExpr\",\"document.nodes[].defaultTabId\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].icon\",\"document.nodes[].formId\",\"document.nodes[].columns\",\"document.nodes[].layout\",\"document.nodes[].action\",\"document.nodes[].actions\",\"document.nodes[].primaryAction\",\"document.nodes[].secondaryActions\",\"document.nodes[].media\",\"document.nodes[].headerAction\",\"document.nodes[].headingLevel\",\"document.nodes[].identity\",\"document.nodes[].breadcrumbs\",\"document.nodes[].overflowActions\",\"document.nodes[].relatedLinks\",\"document.nodes[].interaction\",\"document.nodes[].accessibility\",\"document.nodes[].fields\",\"document.nodes[].items[]\",\"document.nodes[].header\",\"document.nodes[].body\",\"document.nodes[].footer\",\"document.nodes[].aside\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"expression-path-safe\",\"level\":\"warning\",\"code\":\"PRC010\",\"description\":\"Expression paths must remain simple context paths or Json Logic expressions, not string DSL code.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
7137
7210
|
"sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
|
|
7138
|
-
"contentHash": "
|
|
7211
|
+
"contentHash": "a027577b7b0e3aa2f282d2023b505ff9e73b47ba05b5c4b86bee541ad2fbc9b0",
|
|
7139
7212
|
"sourceKind": "component_definition",
|
|
7140
7213
|
"sourceId": "praxis-rich-content",
|
|
7141
7214
|
"corpusVersion": "1.0.0"
|
|
@@ -7313,9 +7386,9 @@
|
|
|
7313
7386
|
{
|
|
7314
7387
|
"chunkIndex": 21,
|
|
7315
7388
|
"chunkKind": "authoring_manifest",
|
|
7316
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"document.set\",\"title\":\"Set rich content document\",\"scope\":\"global\",\"targetKind\":\"document\",\"target\":{\"kind\":\"document\",\"resolver\":\"rich-content-document-root\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\",\"version\",\"nodes\"],\"properties\":{\"kind\":{\"const\":\"praxis.rich-content\"},\"version\":{\"const\":\"1.0.0\"},\"context\":{\"type\":\"object\"},\"nodes\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"document\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"document-shape-canonical\",\"document-version-supported\",\"node-types-supported\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"block.add\",\"title\":\"Add rich content block\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"document-nodes-array\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"node\":{\"type\":\"object\"},\"afterBlockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-block-add\",\"handlerContract\":{\"reads\":[\"document.nodes[]\"],\"writes\":[\"document.nodes[]\"],\"identityKeys\":[\"document.nodes[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"node\":{\"type\":\"object\"},\"afterBlockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"}}},\"failureModes\":[\"unsupported-node-type\",\"duplicate-node-id\",\"invalid-node-shape\",\"unsafe-url\",\"unsafe-style\"],\"description\":\"Creates a supported RichBlockNode, validates it with validateRichContentDocument semantics and inserts it by stable neighbor id when provided.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"node-types-supported\",\"block-id-unique\",\"document-shape-canonical\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
7389
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"document.set\",\"title\":\"Set rich content document\",\"scope\":\"global\",\"targetKind\":\"document\",\"target\":{\"kind\":\"document\",\"resolver\":\"rich-content-document-root\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\",\"version\",\"nodes\"],\"properties\":{\"kind\":{\"const\":\"praxis.rich-content\"},\"version\":{\"const\":\"1.0.0\"},\"context\":{\"type\":\"object\"},\"nodes\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"document\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"document-shape-canonical\",\"document-version-supported\",\"node-types-supported\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"block.add\",\"title\":\"Add rich content block\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"document-nodes-array\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"pageHeader\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"node\":{\"type\":\"object\"},\"afterBlockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-block-add\",\"handlerContract\":{\"reads\":[\"document.nodes[]\"],\"writes\":[\"document.nodes[]\"],\"identityKeys\":[\"document.nodes[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"pageHeader\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"node\":{\"type\":\"object\"},\"afterBlockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"}}},\"failureModes\":[\"unsupported-node-type\",\"duplicate-node-id\",\"invalid-node-shape\",\"unsafe-url\",\"unsafe-style\"],\"description\":\"Creates a supported RichBlockNode, validates it with validateRichContentDocument semantics and inserts it by stable neighbor id when provided.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"node-types-supported\",\"block-id-unique\",\"document-shape-canonical\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
7317
7390
|
"sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
|
|
7318
|
-
"contentHash": "
|
|
7391
|
+
"contentHash": "63568b21eadb7f1f22a1d8c3dd9533b19796e6e36dedacfb643ada76ea309be7",
|
|
7319
7392
|
"sourceKind": "component_definition",
|
|
7320
7393
|
"sourceId": "praxis-rich-content",
|
|
7321
7394
|
"corpusVersion": "1.0.0"
|
|
@@ -7323,9 +7396,9 @@
|
|
|
7323
7396
|
{
|
|
7324
7397
|
"chunkIndex": 22,
|
|
7325
7398
|
"chunkKind": "authoring_manifest",
|
|
7326
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"block.update\",\"title\":\"Update rich content block fields\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"testId\":{\"type\":\"string\"},\"className\":{\"type\":\"string\"},\"style\":{\"type\":\"object\"},\"visibleWhen\":{\"type\":\"object\"},\"disabledWhen\":{\"type\":\"object\"},\"loadWhen\":{\"type\":\"object\"},\"classWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"styleWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"requiresCapabilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"capabilityMode\":{\"enum\":[\"all\",\"any\"]},\"text\":{\"type\":\"string\"},\"textExpr\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_self\",\"_blank\"]},\"rel\":{\"type\":\"string\"},\"src\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"},\"relationLabel\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"summaryExpr\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"ctaLabel\":{\"type\":\"string\"},\"caption\":{\"type\":\"string\"},\"emptyText\":{\"type\":\"string\"},\"errorText\":{\"type\":\"string\"},\"status\":{\"enum\":[\"idle\",\"resolved\",\"empty\",\"error\",\"draft\",\"simulated\",\"approved\",\"published\",\"superseded\",\"reverted\"]},\"statusExpr\":{\"type\":\"string\"},\"owner\":{\"type\":\"string\"},\"ownerExpr\":{\"type\":\"string\"},\"policySource\":{\"type\":\"string\"},\"policySourceExpr\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"versionExpr\":{\"type\":\"string\"},\"confidence\":{\"type\":\"number\"},\"confidenceExpr\":{\"type\":\"string\"},\"risk\":{\"enum\":[\"low\",\"medium\",\"high\",\"critical\"]},\"riskExpr\":{\"type\":\"string\"},\"lastReviewed\":{\"type\":\"string\"},\"lastReviewedExpr\":{\"type\":\"string\"},\"supersedes\":{\"type\":\"string\"},\"supersedesExpr\":{\"type\":\"string\"},\"evidence\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"appearance\":{\"enum\":[\"plain\",\"card\",\"underline\",\"pills\"]},\"variant\":{\"enum\":[\"basic\",\"raised\",\"stroked\",\"flat\",\"plain\",\"outlined\",\"elevated\",\"filled\",\"transparent\"]},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"density\":{},\"orientation\":{},\"loading\":{\"type\":\"boolean\"},\"loadingExpr\":{\"type\":\"string\"},\"active\":{\"type\":\"boolean\"},\"activeExpr\":{\"type\":\"string\"},\"defaultTabId\":{\"type\":\"string\"},\"order\":{\"enum\":[\"normal\",\"reverse\"]},\"position\":{\"enum\":[\"left\",\"right\",\"alternate\",\"alternate-reverse\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerVariant\":{\"enum\":[\"dot\",\"icon\",\"number\"]},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"emphasis\":{\"enum\":[\"subtle\",\"standard\",\"strong\",\"hero\"]},\"textAppearance\":{\"enum\":[\"default\",\"prominent\",\"eyebrow\",\"label\"]},\"icon\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"columns\":{\"enum\":[1,2]},\"layout\":{\"enum\":[\"stacked\",\"inline\",\"split\",\"grid\"]},\"action\":{\"type\":\"object\"},\"actions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"primaryAction\":{\"type\":\"object\"},\"secondaryActions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"media\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"image\",\"video\",\"icon\",\"avatar\"]},\"src\":{\"type\":\"string\"},\"srcExpr\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altExpr\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"placement\":{\"enum\":[\"top\",\"leading\",\"trailing\",\"background\"]},\"aspectRatio\":{\"type\":\"string\"}}},\"headerAction\":{\"type\":\"object\"},\"interaction\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"none\",\"action\",\"selectable\"]},\"action\":{\"type\":\"object\"},\"selected\":{\"type\":\"boolean\"},\"selectedExpr\":{\"type\":\"string\"}}},\"accessibility\":{\"type\":\"object\",\"properties\":{\"role\":{\"enum\":[\"article\",\"group\",\"button\"]},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"ariaLabelledBy\":{\"type\":\"string\"},\"ariaDescribedBy\":{\"type\":\"string\"}}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"header\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"body\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"footer\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"aside\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"node-types-supported\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"expression-path-safe\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].style\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\",\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\",\"document.nodes[].src\",\"document.nodes[].alt\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].subtitle\",\"document.nodes[].subtitleExpr\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].summaryExpr\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].caption\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\",\"document.nodes[].status\",\"document.nodes[].statusExpr\",\"document.nodes[].owner\",\"document.nodes[].ownerExpr\",\"document.nodes[].policySource\",\"document.nodes[].policySourceExpr\",\"document.nodes[].version\",\"document.nodes[].versionExpr\",\"document.nodes[].confidence\",\"document.nodes[].confidenceExpr\",\"document.nodes[].risk\",\"document.nodes[].riskExpr\",\"document.nodes[].lastReviewed\",\"document.nodes[].lastReviewedExpr\",\"document.nodes[].supersedes\",\"document.nodes[].supersedesExpr\",\"document.nodes[].evidence\",\"document.nodes[].appearance\",\"document.nodes[].variant\",\"document.nodes[].tone\",\"document.nodes[].size\",\"document.nodes[].density\",\"document.nodes[].orientation\",\"document.nodes[].loading\",\"document.nodes[].loadingExpr\",\"document.nodes[].active\",\"document.nodes[].activeExpr\",\"document.nodes[].defaultTabId\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].icon\",\"document.nodes[].formId\",\"document.nodes[].columns\",\"document.nodes[].layout\",\"document.nodes[].action\",\"document.nodes[].actions\",\"document.nodes[].primaryAction\",\"document.nodes[].secondaryActions\",\"document.nodes[].media\",\"document.nodes[].headerAction\",\"document.nodes[].interaction\",\"document.nodes[].accessibility\",\"document.nodes[].fields\",\"document.nodes[].items[]\",\"document.nodes[].header\",\"document.nodes[].body\",\"document.nodes[].footer\",\"document.nodes[].aside\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]}]}",
|
|
7399
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"block.update\",\"title\":\"Update rich content block fields\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"testId\":{\"type\":\"string\"},\"className\":{\"type\":\"string\"},\"style\":{\"type\":\"object\"},\"visibleWhen\":{\"type\":\"object\"},\"disabledWhen\":{\"type\":\"object\"},\"loadWhen\":{\"type\":\"object\"},\"classWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"styleWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"requiresCapabilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"capabilityMode\":{\"enum\":[\"all\",\"any\"]},\"text\":{\"type\":\"string\"},\"textExpr\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_self\",\"_blank\"]},\"rel\":{\"type\":\"string\"},\"src\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"},\"relationLabel\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"summaryExpr\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"ctaLabel\":{\"type\":\"string\"},\"caption\":{\"type\":\"string\"},\"emptyText\":{\"type\":\"string\"},\"errorText\":{\"type\":\"string\"},\"status\":{\"enum\":[\"idle\",\"resolved\",\"empty\",\"error\",\"draft\",\"simulated\",\"approved\",\"published\",\"superseded\",\"reverted\"]},\"statusExpr\":{\"type\":\"string\"},\"owner\":{\"type\":\"string\"},\"ownerExpr\":{\"type\":\"string\"},\"policySource\":{\"type\":\"string\"},\"policySourceExpr\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"versionExpr\":{\"type\":\"string\"},\"confidence\":{\"type\":\"number\"},\"confidenceExpr\":{\"type\":\"string\"},\"risk\":{\"enum\":[\"low\",\"medium\",\"high\",\"critical\"]},\"riskExpr\":{\"type\":\"string\"},\"lastReviewed\":{\"type\":\"string\"},\"lastReviewedExpr\":{\"type\":\"string\"},\"supersedes\":{\"type\":\"string\"},\"supersedesExpr\":{\"type\":\"string\"},\"evidence\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"appearance\":{\"enum\":[\"plain\",\"card\",\"underline\",\"pills\"]},\"variant\":{\"enum\":[\"basic\",\"raised\",\"stroked\",\"flat\",\"plain\",\"outlined\",\"elevated\",\"filled\",\"transparent\"]},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"density\":{},\"orientation\":{},\"loading\":{\"type\":\"boolean\"},\"loadingExpr\":{\"type\":\"string\"},\"active\":{\"type\":\"boolean\"},\"activeExpr\":{\"type\":\"string\"},\"defaultTabId\":{\"type\":\"string\"},\"order\":{\"enum\":[\"normal\",\"reverse\"]},\"position\":{\"enum\":[\"left\",\"right\",\"alternate\",\"alternate-reverse\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerVariant\":{\"enum\":[\"dot\",\"icon\",\"number\"]},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"emphasis\":{\"enum\":[\"subtle\",\"standard\",\"strong\",\"hero\"]},\"textAppearance\":{\"enum\":[\"default\",\"prominent\",\"eyebrow\",\"label\"]},\"icon\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"columns\":{\"enum\":[1,2]},\"layout\":{\"enum\":[\"stacked\",\"inline\",\"split\",\"grid\"]},\"action\":{\"type\":\"object\"},\"actions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"primaryAction\":{\"type\":\"object\"},\"secondaryActions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"media\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"image\",\"video\",\"icon\",\"avatar\"]},\"src\":{\"type\":\"string\"},\"srcExpr\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altExpr\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"placement\":{\"enum\":[\"top\",\"leading\",\"trailing\",\"background\"]},\"aspectRatio\":{\"type\":\"string\"}}},\"headerAction\":{\"type\":\"object\"},\"headingLevel\":{\"enum\":[1,2,3,4,5,6]},\"identity\":{\"type\":\"object\"},\"breadcrumbs\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"overflowActions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"relatedLinks\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"interaction\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"none\",\"action\",\"selectable\"]},\"action\":{\"type\":\"object\"},\"selected\":{\"type\":\"boolean\"},\"selectedExpr\":{\"type\":\"string\"}}},\"accessibility\":{\"type\":\"object\",\"properties\":{\"role\":{\"enum\":[\"article\",\"group\",\"button\"]},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"ariaLabelledBy\":{\"type\":\"string\"},\"ariaDescribedBy\":{\"type\":\"string\"}}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"header\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"body\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"footer\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"aside\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"node-types-supported\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"expression-path-safe\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].style\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\",\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\",\"document.nodes[].src\",\"document.nodes[].alt\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].subtitle\",\"document.nodes[].subtitleExpr\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].summaryExpr\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].caption\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\",\"document.nodes[].status\",\"document.nodes[].statusExpr\",\"document.nodes[].owner\",\"document.nodes[].ownerExpr\",\"document.nodes[].policySource\",\"document.nodes[].policySourceExpr\",\"document.nodes[].version\",\"document.nodes[].versionExpr\",\"document.nodes[].confidence\",\"document.nodes[].confidenceExpr\",\"document.nodes[].risk\",\"document.nodes[].riskExpr\",\"document.nodes[].lastReviewed\",\"document.nodes[].lastReviewedExpr\",\"document.nodes[].supersedes\",\"document.nodes[].supersedesExpr\",\"document.nodes[].evidence\",\"document.nodes[].appearance\",\"document.nodes[].variant\",\"document.nodes[].tone\",\"document.nodes[].size\",\"document.nodes[].density\",\"document.nodes[].orientation\",\"document.nodes[].loading\",\"document.nodes[].loadingExpr\",\"document.nodes[].active\",\"document.nodes[].activeExpr\",\"document.nodes[].defaultTabId\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].icon\",\"document.nodes[].formId\",\"document.nodes[].columns\",\"document.nodes[].layout\",\"document.nodes[].action\",\"document.nodes[].actions\",\"document.nodes[].primaryAction\",\"document.nodes[].secondaryActions\",\"document.nodes[].media\",\"document.nodes[].headerAction\",\"document.nodes[].headingLevel\",\"document.nodes[].identity\",\"document.nodes[].breadcrumbs\",\"document.nodes[].overflowActions\",\"document.nodes[].relatedLinks\",\"document.nodes[].interaction\",\"document.nodes[].accessibility\",\"document.nodes[].fields\",\"document.nodes[].items[]\",\"document.nodes[].header\",\"document.nodes[].body\",\"document.nodes[].footer\",\"document.nodes[].aside\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]}]}",
|
|
7327
7400
|
"sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
|
|
7328
|
-
"contentHash": "
|
|
7401
|
+
"contentHash": "52565266fc433f6bcef356b8abb3853ebe420eab736627c6bad5b64325e5e775",
|
|
7329
7402
|
"sourceKind": "component_definition",
|
|
7330
7403
|
"sourceId": "praxis-rich-content",
|
|
7331
7404
|
"corpusVersion": "1.0.0"
|
|
@@ -7403,9 +7476,9 @@
|
|
|
7403
7476
|
{
|
|
7404
7477
|
"chunkIndex": 30,
|
|
7405
7478
|
"chunkKind": "recipe",
|
|
7406
|
-
"content": "{\"_comment\":\"Recipe for @praxisui/rich-content. Use RichContentDocument for governed presentation, policy notes, operational summaries, host-mediated action cards, timelines and AI-readable explanations.\",\"templateMeta\":{\"registryKey\":\"praxis-rich-content\",\"variantId\":\"knowledge-surface\",\"description\":\"Cria superfícies editoriais portáveis com RichContentDocument, incluindo blocos governados como actionCard, lookupCard e formLauncher.\",\"useWhen\":\"Create reusable rich presentation surfaces and governed editorial action surfaces that can be embedded in Dynamic Page, Tabs, Dialog, Stepper, List expansion or Page Builder.\",\"examplePrompts\":[\"create a rich content policy card\",\"show operational notes with metrics and timeline\",\"generate a reusable knowledge surface for agents\",\"create a governed action card for a host-mediated workflow\",\"show a related record summary with governed action\"]},\"authoringGuidance\":[\"Use document.kind \\\"praxis.rich-content\\\" and version \\\"1.0.0\\\".\",\"Use document.nodes for block layout surfaces and nodes for inline compact status surfaces.\",\"Use context plus *Expr properties when text, badges, metrics or progress should resolve from host state.\",\"Use actionButton, lookupCard, relatedRecord, formLauncher or actionCard when the host must mediate an action instead of embedding handlers in the document.\",\"Use action.confirmMessage when the workflow requires confirmation; the host must provide hostCapabilities.confirmAction and the runtime fails closed without dispatch if confirmation is rejected or unavailable.\",\"Use card variant/tone/size/orientation/media/interaction when the authoring intent is a semantic surface, not a host-authored wrapper.\",\"Use rich-content for presentation and explanation only; use table, list or dynamic-form for editable business data.\",\"Prefer portable nodes such as card, callout, recordSummary, relatedRecord, actionCard, compose, text, icon, badge, metric, progress, mediaBlock, avatar and timeline.\"],\"inputs\":{\"layout\":\"block\",\"rootClassName\":\"mission-knowledge-surface\",\"context\":{\"mission\":{\"name\":\"Operation Dawn Gate\",\"owner\":\"Ariadne Ops\",\"readiness\":82,\"risk\":\"Elevated\",\"region\":\"South Atlantic\"},\"policy\":{\"owner\":\"Platform Governance\",\"version\":\"2026.04\",\"source\":\"Quickstart reference contract\"}},\"document\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[{\"type\":\"card\",\"titleExpr\":\"${mission.name}\",\"subtitleExpr\":\"${policy.source}\",\"variant\":\"elevated\",\"tone\":\"info\",\"size\":\"lg\",\"orientation\":\"horizontal\",\"media\":{\"kind\":\"icon\",\"icon\":\"psychology\",\"label\":\"AI-authored semantic decision surface\",\"placement\":\"leading\"},\"accessibility\":{\"role\":\"article\",\"ariaLabel\":\"Mission knowledge surface\"},\"content\":[{\"type\":\"compose\",\"wrap\":true,\"gap\":\"sm\",\"items\":[{\"type\":\"badge\",\"labelExpr\":\"${mission.region}\"},{\"type\":\"badge\",\"labelExpr\":\"${mission.risk}\"},{\"type\":\"badge\",\"labelExpr\":\"${policy.version}\"}]},{\"type\":\"text\",\"text\":\"Use rich content when the page needs governed explanation, operational notes or agent-readable context without inventing a one-off Angular template.\"},{\"type\":\"compose\",\"wrap\":true,\"gap\":\"lg\",\"items\":[{\"type\":\"metric\",\"label\":\"Readiness\",\"valueExpr\":\"${mission.readiness}\",\"captionExpr\":\"${mission.owner}\"},{\"type\":\"progress\",\"label\":\"Execution confidence\",\"valueExpr\":\"${mission.readiness}\",\"max\":100}]}]},{\"type\":\"mediaBlock\",\"avatar\":{\"type\":\"avatar\",\"initials\":\"AI\",\"name\":\"AI recipe\"},\"title\":{\"type\":\"text\",\"text\":\"Agent authoring note\"},\"subtitle\":{\"type\":\"text\",\"text\":\"Rich content is presentation metadata. Use it for policy, summaries, timelines and explanations; use forms and tables for editable business data.\"},\"meta\":{\"type\":\"badge\",\"label\":\"copyable JSON\"},\"trailing\":[{\"type\":\"icon\",\"icon\":\"psychology\",\"ariaLabel\":\"AI ready\"}]},{\"type\":\"relatedRecord\",\"title\":\"Related approval owner\",\"subtitleExpr\":\"${policy.owner}\",\"relationLabel\":\"Policy owner\",\"metaExpr\":\"${policy.version}\",\"ctaLabel\":\"Open related owner\",\"variant\":\"raised\",\"color\":\"primary\",\"action\":{\"actionId\":\"briefing.inspect\",\"confirmMessage\":\"Confirm opening the governed briefing package?\"},\"fields\":[{\"label\":\"Source\",\"valueExpr\":\"${policy.source}\",\"hint\":\"Resolved from the same portable document context.\"}],\"secondaryActions\":[{\"type\":\"actionButton\",\"label\":\"Escalate owner review\",\"variant\":\"stroked\",\"action\":{\"actionId\":\"briefing.escalate\"}}]},{\"type\":\"actionCard\",\"title\":\"Open governed briefing\",\"subtitleExpr\":\"${policy.owner}\",\"message\":\"Use actionCard when the host must run a governed workflow from a portable editorial document.\",\"metaExpr\":\"${policy.version}\",\"ctaLabel\":\"Inspect briefing\",\"variant\":\"raised\",\"color\":\"primary\",\"action\":{\"actionId\":\"briefing.inspect\",\"confirmMessage\":\"Confirm opening the governed briefing package?\"},\"secondaryActions\":[{\"type\":\"actionButton\",\"label\":\"Escalate review\",\"variant\":\"stroked\",\"action\":{\"actionId\":\"briefing.escalate\"}}]},{\"type\":\"timeline\",\"title\":\"Knowledge lifecycle\",\"orientation\":\"horizontal\",\"order\":\"reverse\",\"position\":\"alternate\",\"connectorVariant\":\"dashed\",\"markerVariant\":\"number\",\"items\":[{\"icon\":\"schema\",\"title\":\"Contract discovered\",\"subtitle\":\"Read source metadata and decide whether the surface is data, action or explanation.\",\"meta\":\"schemas.filtered + recipes\",\"opposite\":\"1. Discover\",\"badge\":\"source\"},{\"icon\":\"article\",\"title\":\"Briefing authored\",\"subtitle\":\"Render cards, metrics, progress and guidance with one RichContentDocument.\",\"meta\":\"praxis-rich-content\",\"opposite\":\"2. Author\",\"badge\":\"runtime\"},{\"icon\":\"open_in_new\",\"title\":\"Surface reused\",\"subtitle\":\"Embed the same document in a tab, dialog, stepper, list expansion or dashboard cell.\",\"meta\":\"Dynamic Page composition\",\"opposite\":\"3. Reuse\",\"badge\":\"portable\"}]}]}},\"inlineExample\":{\"layout\":\"inline\",\"context\":{\"status\":{\"label\":\"Governed knowledge surface\",\"phase\":\"Reusable\"}},\"nodes\":[{\"type\":\"icon\",\"icon\":\"verified\",\"ariaLabel\":\"Verified\"},{\"type\":\"text\",\"textExpr\":\"${status.label}\"},{\"type\":\"badge\",\"labelExpr\":\"${status.phase}\"}]}}",
|
|
7479
|
+
"content": "{\"_comment\":\"Recipe for @praxisui/rich-content. Use RichContentDocument for governed presentation, policy notes, operational summaries, host-mediated action cards, timelines and AI-readable explanations.\",\"templateMeta\":{\"registryKey\":\"praxis-rich-content\",\"variantId\":\"knowledge-surface\",\"description\":\"Cria superfícies editoriais portáveis com RichContentDocument, incluindo blocos governados como actionCard, lookupCard e formLauncher.\",\"useWhen\":\"Create reusable rich presentation surfaces and governed editorial action surfaces that can be embedded in Dynamic Page, Tabs, Dialog, Stepper, List expansion or Page Builder.\",\"examplePrompts\":[\"create a rich content policy card\",\"show operational notes with metrics and timeline\",\"generate a reusable knowledge surface for agents\",\"create a governed action card for a host-mediated workflow\",\"show a related record summary with governed action\"]},\"authoringGuidance\":[\"Use document.kind \\\"praxis.rich-content\\\" and version \\\"1.0.0\\\".\",\"Use document.nodes for block layout surfaces and nodes for inline compact status surfaces.\",\"Use context plus *Expr properties when text, badges, metrics or progress should resolve from host state.\",\"Use actionButton, lookupCard, relatedRecord, formLauncher or actionCard when the host must mediate an action instead of embedding handlers in the document.\",\"Use action.confirmMessage when the workflow requires confirmation; the host must provide hostCapabilities.confirmAction and the runtime fails closed without dispatch if confirmation is rejected or unavailable.\",\"Use card variant/tone/size/orientation/media/interaction when the authoring intent is a semantic surface, not a host-authored wrapper.\",\"Use rich-content for presentation and explanation only; use table, list or dynamic-form for editable business data.\",\"Prefer portable nodes such as card, callout, recordSummary, relatedRecord, actionCard, compose, text, icon, badge, metric, progress, mediaBlock, avatar and timeline.\",\"Use pageHeader for a semantic functionality opening: headingLevel independent of size, optional identity, ancestor breadcrumbs, host-mediated primaryAction/secondaryActions/overflowActions, and relatedLinks with real destinations. Omit empty regions and do not duplicate table actions.\"],\"inputs\":{\"layout\":\"block\",\"rootClassName\":\"mission-knowledge-surface\",\"context\":{\"mission\":{\"name\":\"Operation Dawn Gate\",\"owner\":\"Ariadne Ops\",\"readiness\":82,\"risk\":\"Elevated\",\"region\":\"South Atlantic\"},\"policy\":{\"owner\":\"Platform Governance\",\"version\":\"2026.04\",\"source\":\"Quickstart reference contract\"}},\"document\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[{\"type\":\"card\",\"titleExpr\":\"${mission.name}\",\"subtitleExpr\":\"${policy.source}\",\"variant\":\"elevated\",\"tone\":\"info\",\"size\":\"lg\",\"orientation\":\"horizontal\",\"media\":{\"kind\":\"icon\",\"icon\":\"psychology\",\"label\":\"AI-authored semantic decision surface\",\"placement\":\"leading\"},\"accessibility\":{\"role\":\"article\",\"ariaLabel\":\"Mission knowledge surface\"},\"content\":[{\"type\":\"compose\",\"wrap\":true,\"gap\":\"sm\",\"items\":[{\"type\":\"badge\",\"labelExpr\":\"${mission.region}\"},{\"type\":\"badge\",\"labelExpr\":\"${mission.risk}\"},{\"type\":\"badge\",\"labelExpr\":\"${policy.version}\"}]},{\"type\":\"text\",\"text\":\"Use rich content when the page needs governed explanation, operational notes or agent-readable context without inventing a one-off Angular template.\"},{\"type\":\"compose\",\"wrap\":true,\"gap\":\"lg\",\"items\":[{\"type\":\"metric\",\"label\":\"Readiness\",\"valueExpr\":\"${mission.readiness}\",\"captionExpr\":\"${mission.owner}\"},{\"type\":\"progress\",\"label\":\"Execution confidence\",\"valueExpr\":\"${mission.readiness}\",\"max\":100}]}]},{\"type\":\"mediaBlock\",\"avatar\":{\"type\":\"avatar\",\"initials\":\"AI\",\"name\":\"AI recipe\"},\"title\":{\"type\":\"text\",\"text\":\"Agent authoring note\"},\"subtitle\":{\"type\":\"text\",\"text\":\"Rich content is presentation metadata. Use it for policy, summaries, timelines and explanations; use forms and tables for editable business data.\"},\"meta\":{\"type\":\"badge\",\"label\":\"copyable JSON\"},\"trailing\":[{\"type\":\"icon\",\"icon\":\"psychology\",\"ariaLabel\":\"AI ready\"}]},{\"type\":\"relatedRecord\",\"title\":\"Related approval owner\",\"subtitleExpr\":\"${policy.owner}\",\"relationLabel\":\"Policy owner\",\"metaExpr\":\"${policy.version}\",\"ctaLabel\":\"Open related owner\",\"variant\":\"raised\",\"color\":\"primary\",\"action\":{\"actionId\":\"briefing.inspect\",\"confirmMessage\":\"Confirm opening the governed briefing package?\"},\"fields\":[{\"label\":\"Source\",\"valueExpr\":\"${policy.source}\",\"hint\":\"Resolved from the same portable document context.\"}],\"secondaryActions\":[{\"type\":\"actionButton\",\"label\":\"Escalate owner review\",\"variant\":\"stroked\",\"action\":{\"actionId\":\"briefing.escalate\"}}]},{\"type\":\"actionCard\",\"title\":\"Open governed briefing\",\"subtitleExpr\":\"${policy.owner}\",\"message\":\"Use actionCard when the host must run a governed workflow from a portable editorial document.\",\"metaExpr\":\"${policy.version}\",\"ctaLabel\":\"Inspect briefing\",\"variant\":\"raised\",\"color\":\"primary\",\"action\":{\"actionId\":\"briefing.inspect\",\"confirmMessage\":\"Confirm opening the governed briefing package?\"},\"secondaryActions\":[{\"type\":\"actionButton\",\"label\":\"Escalate review\",\"variant\":\"stroked\",\"action\":{\"actionId\":\"briefing.escalate\"}}]},{\"type\":\"timeline\",\"title\":\"Knowledge lifecycle\",\"orientation\":\"horizontal\",\"order\":\"reverse\",\"position\":\"alternate\",\"connectorVariant\":\"dashed\",\"markerVariant\":\"number\",\"items\":[{\"icon\":\"schema\",\"title\":\"Contract discovered\",\"subtitle\":\"Read source metadata and decide whether the surface is data, action or explanation.\",\"meta\":\"schemas.filtered + recipes\",\"opposite\":\"1. Discover\",\"badge\":\"source\"},{\"icon\":\"article\",\"title\":\"Briefing authored\",\"subtitle\":\"Render cards, metrics, progress and guidance with one RichContentDocument.\",\"meta\":\"praxis-rich-content\",\"opposite\":\"2. Author\",\"badge\":\"runtime\"},{\"icon\":\"open_in_new\",\"title\":\"Surface reused\",\"subtitle\":\"Embed the same document in a tab, dialog, stepper, list expansion or dashboard cell.\",\"meta\":\"Dynamic Page composition\",\"opposite\":\"3. Reuse\",\"badge\":\"portable\"}]}]}},\"inlineExample\":{\"layout\":\"inline\",\"context\":{\"status\":{\"label\":\"Governed knowledge surface\",\"phase\":\"Reusable\"}},\"nodes\":[{\"type\":\"icon\",\"icon\":\"verified\",\"ariaLabel\":\"Verified\"},{\"type\":\"text\",\"textExpr\":\"${status.label}\"},{\"type\":\"badge\",\"labelExpr\":\"${status.phase}\"}]}}",
|
|
7407
7480
|
"sourcePointer": "examples/ai-recipes/praxis-rich-content.json",
|
|
7408
|
-
"contentHash": "
|
|
7481
|
+
"contentHash": "96145951be7ff515757347dc879097c30f5e00d0b36c6ede287f1a7666e5fb4c",
|
|
7409
7482
|
"sourceKind": "component_definition",
|
|
7410
7483
|
"sourceId": "praxis-rich-content",
|
|
7411
7484
|
"corpusVersion": "1.0.0"
|