@praxisui/rich-content 9.0.0-beta.5 → 9.0.0-beta.50
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 +6 -2
- package/ai/component-registry.json +6559 -0
- package/fesm2022/praxisui-rich-content.mjs +2681 -297
- package/package.json +7 -3
- package/types/praxisui-rich-content.d.ts +61 -5
|
@@ -13,15 +13,35 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
13
13
|
'praxis.richContent.editor.subtitle': 'Edit the canonical document consumed by the renderer. The saved payload preserves the remaining widget inputs.',
|
|
14
14
|
'praxis.richContent.editor.valid': 'Valid document',
|
|
15
15
|
'praxis.richContent.editor.invalid': 'Invalid JSON',
|
|
16
|
+
'praxis.richContent.editor.invalidBadge': 'Invalid',
|
|
16
17
|
'praxis.richContent.editor.layout': 'Layout',
|
|
17
18
|
'praxis.richContent.editor.layout.block': 'Block',
|
|
18
19
|
'praxis.richContent.editor.layout.inline': 'Inline',
|
|
19
20
|
'praxis.richContent.editor.rootClass': 'Root class',
|
|
20
21
|
'praxis.richContent.editor.rootClassPlaceholder': 'Example: employee-expansion-rich',
|
|
22
|
+
'praxis.richContent.editor.documentContext': 'Document context',
|
|
23
|
+
'praxis.richContent.editor.documentContextHelp': 'Canonical data scopes and aliases available to rich-content bindings.',
|
|
24
|
+
'praxis.richContent.editor.documentContextFields': 'Context contract',
|
|
25
|
+
'praxis.richContent.editor.workbenchTabs': 'Editor sections',
|
|
26
|
+
'praxis.richContent.editor.guidedEditing': 'Guided editing',
|
|
21
27
|
'praxis.richContent.editor.document': 'Advanced JSON',
|
|
28
|
+
'praxis.richContent.editor.documentJson': 'Canonical document JSON',
|
|
22
29
|
'praxis.richContent.editor.documentHelp': 'Edit the canonical RichContentDocument. The inspector validates the shape and renders a preview before apply or save.',
|
|
30
|
+
'praxis.richContent.editor.documentAdvancedHelp': 'Use JSON for diagnostics, migration and advanced fields that are not yet surfaced by guided controls.',
|
|
23
31
|
'praxis.richContent.editor.blocks': 'Blocks',
|
|
24
32
|
'praxis.richContent.editor.blocksHelp': 'Create and edit common top-level rich-content blocks. Use JSON for advanced nested structures.',
|
|
33
|
+
'praxis.richContent.editor.structure': 'Document structure',
|
|
34
|
+
'praxis.richContent.editor.structureHelp': 'Select a block to edit its properties.',
|
|
35
|
+
'praxis.richContent.editor.properties': 'Properties',
|
|
36
|
+
'praxis.richContent.editor.propertiesHelp': 'Edit the selected block without leaving the document structure.',
|
|
37
|
+
'praxis.richContent.editor.intentNavigation': 'Property sections',
|
|
38
|
+
'praxis.richContent.editor.intent.content': 'Content',
|
|
39
|
+
'praxis.richContent.editor.intent.contentHelp': 'Primary block fields',
|
|
40
|
+
'praxis.richContent.editor.intent.presentation': 'Presentation',
|
|
41
|
+
'praxis.richContent.editor.intent.presentationHelp': 'Visual affordances',
|
|
42
|
+
'praxis.richContent.editor.intent.dataRules': 'Data and rules',
|
|
43
|
+
'praxis.richContent.editor.intent.dataRulesHelp': 'Metadata and gates',
|
|
44
|
+
'praxis.richContent.editor.hasIssues': 'Needs attention',
|
|
25
45
|
'praxis.richContent.editor.block': 'Block',
|
|
26
46
|
'praxis.richContent.editor.blockType': 'Block type',
|
|
27
47
|
'praxis.richContent.editor.addBlock': 'Add block',
|
|
@@ -43,11 +63,18 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
43
63
|
'praxis.richContent.editor.cardContentHelp': 'Card content is preserved in JSON. Use advanced JSON for nested card nodes.',
|
|
44
64
|
'praxis.richContent.editor.nodeId': 'Stable id',
|
|
45
65
|
'praxis.richContent.editor.nodeIdPlaceholder': 'Example: hero-title',
|
|
66
|
+
'praxis.richContent.editor.advancedDataRules': 'Advanced data and rules',
|
|
67
|
+
'praxis.richContent.editor.advancedDataRulesHelp': 'Metadata, capability gates, visibility and safe style.',
|
|
68
|
+
'praxis.richContent.editor.advancedJsonFields': 'Advanced JSON fields present',
|
|
69
|
+
'praxis.richContent.editor.advancedJsonFieldsHelp': 'These canonical fields are preserved by guided edits and remain editable in the Advanced JSON tab.',
|
|
70
|
+
'praxis.richContent.editor.advancedJsonEditor': 'Advanced JSON editor',
|
|
71
|
+
'praxis.richContent.editor.advancedJsonEditorHelp': 'Edit canonical data bindings and JsonLogic rule fields without leaving guided editing.',
|
|
46
72
|
'praxis.richContent.editor.visibilityRule': 'Visibility rule',
|
|
47
73
|
'praxis.richContent.editor.safeStyle': 'Safe style',
|
|
48
74
|
'praxis.richContent.editor.nodeType.text': 'Text',
|
|
49
75
|
'praxis.richContent.editor.nodeType.badge': 'Badge',
|
|
50
76
|
'praxis.richContent.editor.nodeType.icon': 'Icon',
|
|
77
|
+
'praxis.richContent.editor.nodeType.avatar': 'Avatar',
|
|
51
78
|
'praxis.richContent.editor.nodeType.image': 'Image',
|
|
52
79
|
'praxis.richContent.editor.nodeType.link': 'Link',
|
|
53
80
|
'praxis.richContent.editor.nodeType.metric': 'Metric',
|
|
@@ -85,27 +112,45 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
85
112
|
'praxis.richContent.editor.field.icon': 'Icon',
|
|
86
113
|
'praxis.richContent.editor.field.ariaLabel': 'Accessible label',
|
|
87
114
|
'praxis.richContent.editor.field.src': 'Image URL',
|
|
115
|
+
'praxis.richContent.editor.field.srcExpr': 'Image URL binding',
|
|
88
116
|
'praxis.richContent.editor.field.href': 'Link URL',
|
|
89
117
|
'praxis.richContent.editor.field.target': 'Target',
|
|
118
|
+
'praxis.richContent.editor.field.rel': 'Rel',
|
|
90
119
|
'praxis.richContent.editor.field.alt': 'Alternative text',
|
|
120
|
+
'praxis.richContent.editor.field.altExpr': 'Alt text binding',
|
|
91
121
|
'praxis.richContent.editor.field.testId': 'Test id',
|
|
92
122
|
'praxis.richContent.editor.field.className': 'CSS class',
|
|
93
123
|
'praxis.richContent.editor.field.visibleWhenPath': 'Context path',
|
|
94
124
|
'praxis.richContent.editor.field.visibleWhenValue': 'Expected value',
|
|
95
125
|
'praxis.richContent.editor.field.styleName': 'CSS property',
|
|
96
126
|
'praxis.richContent.editor.field.styleValue': 'CSS value',
|
|
127
|
+
'praxis.richContent.editor.field.bindings': 'Data bindings',
|
|
128
|
+
'praxis.richContent.editor.field.disabledWhen': 'Disabled rule',
|
|
129
|
+
'praxis.richContent.editor.field.loadWhen': 'Load rule',
|
|
130
|
+
'praxis.richContent.editor.field.classWhen': 'Conditional classes',
|
|
131
|
+
'praxis.richContent.editor.field.styleWhen': 'Conditional styles',
|
|
132
|
+
'praxis.richContent.editor.field.contextScopes': 'Context scopes',
|
|
133
|
+
'praxis.richContent.editor.field.contextAliases': 'Context aliases',
|
|
134
|
+
'praxis.richContent.editor.placeholder.contextScopes': 'row, user, tenant',
|
|
97
135
|
'praxis.richContent.editor.field.valueExpr': 'Value binding',
|
|
98
136
|
'praxis.richContent.editor.field.captionExpr': 'Caption binding',
|
|
99
137
|
'praxis.richContent.editor.field.max': 'Maximum',
|
|
138
|
+
'praxis.richContent.editor.field.showPercent': 'Show percent',
|
|
100
139
|
'praxis.richContent.editor.field.direction': 'Direction',
|
|
101
140
|
'praxis.richContent.editor.field.gap': 'Gap',
|
|
141
|
+
'praxis.richContent.editor.field.wrap': 'Wrap items',
|
|
102
142
|
'praxis.richContent.editor.field.avatarName': 'Avatar name',
|
|
103
143
|
'praxis.richContent.editor.field.avatarImage': 'Avatar image',
|
|
144
|
+
'praxis.richContent.editor.field.nameExpr': 'Name binding',
|
|
145
|
+
'praxis.richContent.editor.field.imageSrcExpr': 'Image binding',
|
|
146
|
+
'praxis.richContent.editor.field.initials': 'Initials',
|
|
147
|
+
'praxis.richContent.editor.field.initialsExpr': 'Initials binding',
|
|
104
148
|
'praxis.richContent.editor.field.emptyText': 'Empty text',
|
|
105
149
|
'praxis.richContent.editor.field.errorText': 'Error text',
|
|
106
150
|
'praxis.richContent.editor.field.meta': 'Meta',
|
|
107
151
|
'praxis.richContent.editor.field.opposite': 'Opposite content',
|
|
108
152
|
'praxis.richContent.editor.field.badge': 'Badge',
|
|
153
|
+
'praxis.richContent.editor.field.badgeExpr': 'Badge binding',
|
|
109
154
|
'praxis.richContent.editor.field.preset': 'Preset',
|
|
110
155
|
'praxis.richContent.editor.field.title': 'Title',
|
|
111
156
|
'praxis.richContent.editor.field.subtitle': 'Subtitle',
|
|
@@ -162,15 +207,37 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
162
207
|
'praxis.richContent.editor.field.ctaLabel': 'CTA label',
|
|
163
208
|
'praxis.richContent.editor.field.ctaIcon': 'CTA icon',
|
|
164
209
|
'praxis.richContent.editor.field.size': 'Size',
|
|
210
|
+
'praxis.richContent.editor.field.density': 'Density',
|
|
211
|
+
'praxis.richContent.editor.field.loading': 'Loading',
|
|
212
|
+
'praxis.richContent.editor.field.loadingExpr': 'Loading binding',
|
|
213
|
+
'praxis.richContent.editor.field.active': 'Active',
|
|
214
|
+
'praxis.richContent.editor.field.activeExpr': 'Active binding',
|
|
165
215
|
'praxis.richContent.editor.field.mediaKind': 'Media',
|
|
166
216
|
'praxis.richContent.editor.field.mediaSrc': 'Media source',
|
|
217
|
+
'praxis.richContent.editor.field.mediaSrcExpr': 'Media source binding',
|
|
167
218
|
'praxis.richContent.editor.field.mediaAlt': 'Media alt text',
|
|
219
|
+
'praxis.richContent.editor.field.mediaAltExpr': 'Media alt binding',
|
|
168
220
|
'praxis.richContent.editor.field.mediaIcon': 'Media icon',
|
|
221
|
+
'praxis.richContent.editor.field.mediaLabel': 'Media label',
|
|
222
|
+
'praxis.richContent.editor.field.mediaLabelExpr': 'Media label binding',
|
|
223
|
+
'praxis.richContent.editor.field.aspectRatio': 'Aspect ratio',
|
|
169
224
|
'praxis.richContent.editor.field.mediaPlacement': 'Media placement',
|
|
225
|
+
'praxis.richContent.editor.field.interactionMode': 'Interaction mode',
|
|
226
|
+
'praxis.richContent.editor.field.selected': 'Selected',
|
|
227
|
+
'praxis.richContent.editor.field.selectedExpr': 'Selected binding',
|
|
228
|
+
'praxis.richContent.editor.field.interactionActionId': 'Interaction action ID',
|
|
229
|
+
'praxis.richContent.editor.field.accessibilityRole': 'Accessibility role',
|
|
230
|
+
'praxis.richContent.editor.field.ariaLabelExpr': 'Accessible label binding',
|
|
231
|
+
'praxis.richContent.editor.field.requiresCapabilities': 'Capabilities',
|
|
232
|
+
'praxis.richContent.editor.field.capabilityMode': 'Capability mode',
|
|
170
233
|
'praxis.richContent.editor.decisionGovernance': 'Decision governance',
|
|
171
234
|
'praxis.richContent.editor.decisionEvidence': 'Evidence',
|
|
172
235
|
'praxis.richContent.editor.decisionPrimaryAction': 'Primary action',
|
|
173
236
|
'praxis.richContent.editor.decisionSecondaryActions': 'Secondary actions',
|
|
237
|
+
'praxis.richContent.editor.addPrimaryAction': 'Add primary action',
|
|
238
|
+
'praxis.richContent.editor.addSecondaryAction': 'Add secondary action',
|
|
239
|
+
'praxis.richContent.editor.addAction': 'Add action',
|
|
240
|
+
'praxis.richContent.editor.action': 'Action',
|
|
174
241
|
'praxis.richContent.editor.addEvidence': 'Add evidence',
|
|
175
242
|
'praxis.richContent.editor.evidence': 'Evidence',
|
|
176
243
|
'praxis.richContent.editor.defaultEvidenceLabel': 'Evidence',
|
|
@@ -200,6 +267,20 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
200
267
|
'praxis.richContent.editor.placeholder.supersedesExpr': '${decision.supersedes}',
|
|
201
268
|
'praxis.richContent.editor.placeholder.evidenceLabelExpr': '${evidence.label}',
|
|
202
269
|
'praxis.richContent.editor.placeholder.evidenceSourceExpr': '${evidence.source}',
|
|
270
|
+
'praxis.richContent.editor.placeholder.tabLabelExpr': 'row.tabLabel',
|
|
271
|
+
'praxis.richContent.editor.placeholder.badgeExpr': 'row.badge',
|
|
272
|
+
'praxis.richContent.editor.placeholder.requiresCapabilities': 'form.mode.edit, employee.open',
|
|
273
|
+
'praxis.richContent.editor.placeholder.srcExpr': 'row.imageUrl',
|
|
274
|
+
'praxis.richContent.editor.placeholder.altExpr': 'row.imageAlt',
|
|
275
|
+
'praxis.richContent.editor.placeholder.loadingExpr': 'row.loading',
|
|
276
|
+
'praxis.richContent.editor.placeholder.activeExpr': 'row.active',
|
|
277
|
+
'praxis.richContent.editor.placeholder.mediaSrcExpr': 'row.mediaUrl',
|
|
278
|
+
'praxis.richContent.editor.placeholder.mediaAltExpr': 'row.mediaAlt',
|
|
279
|
+
'praxis.richContent.editor.placeholder.mediaLabelExpr': 'row.mediaLabel',
|
|
280
|
+
'praxis.richContent.editor.placeholder.aspectRatio': '16 / 9',
|
|
281
|
+
'praxis.richContent.editor.placeholder.selectedExpr': 'row.selected',
|
|
282
|
+
'praxis.richContent.editor.placeholder.actionId': 'host.action.open',
|
|
283
|
+
'praxis.richContent.editor.placeholder.ariaLabelExpr': 'row.ariaLabel',
|
|
203
284
|
'praxis.richContent.editor.cardVariant.outlined': 'Outlined',
|
|
204
285
|
'praxis.richContent.editor.cardVariant.elevated': 'Elevated',
|
|
205
286
|
'praxis.richContent.editor.cardVariant.filled': 'Filled',
|
|
@@ -208,8 +289,18 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
208
289
|
'praxis.richContent.editor.size.sm': 'Small',
|
|
209
290
|
'praxis.richContent.editor.size.md': 'Medium',
|
|
210
291
|
'praxis.richContent.editor.size.lg': 'Large',
|
|
292
|
+
'praxis.richContent.editor.density.compact': 'Compact',
|
|
293
|
+
'praxis.richContent.editor.density.comfortable': 'Comfortable',
|
|
211
294
|
'praxis.richContent.editor.orientation.vertical': 'Vertical',
|
|
212
295
|
'praxis.richContent.editor.orientation.horizontal': 'Horizontal',
|
|
296
|
+
'praxis.richContent.editor.interaction.none': 'None',
|
|
297
|
+
'praxis.richContent.editor.interaction.action': 'Action',
|
|
298
|
+
'praxis.richContent.editor.interaction.selectable': 'Selectable',
|
|
299
|
+
'praxis.richContent.editor.accessibilityRole.article': 'Article',
|
|
300
|
+
'praxis.richContent.editor.accessibilityRole.group': 'Group',
|
|
301
|
+
'praxis.richContent.editor.accessibilityRole.button': 'Button',
|
|
302
|
+
'praxis.richContent.editor.capabilityMode.all': 'All',
|
|
303
|
+
'praxis.richContent.editor.capabilityMode.any': 'Any',
|
|
213
304
|
'praxis.richContent.editor.mediaKind.image': 'Image',
|
|
214
305
|
'praxis.richContent.editor.mediaKind.video': 'Video',
|
|
215
306
|
'praxis.richContent.editor.mediaKind.icon': 'Icon',
|
|
@@ -287,6 +378,12 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
287
378
|
'praxis.richContent.editor.placeholder.valueExpr': 'row.total',
|
|
288
379
|
'praxis.richContent.editor.placeholder.captionExpr': 'row.caption',
|
|
289
380
|
'praxis.richContent.editor.placeholder.progressExpr': 'row.progress',
|
|
381
|
+
'praxis.richContent.editor.placeholder.nameExpr': 'row.name',
|
|
382
|
+
'praxis.richContent.editor.placeholder.imageSrcExpr': 'row.avatarUrl',
|
|
383
|
+
'praxis.richContent.editor.placeholder.initialsExpr': 'row.initials',
|
|
384
|
+
'praxis.richContent.editor.placeholder.rel': 'noopener noreferrer',
|
|
385
|
+
'praxis.richContent.editor.target.self': 'Same tab',
|
|
386
|
+
'praxis.richContent.editor.target.blank': 'New tab',
|
|
290
387
|
'praxis.richContent.editor.defaultText': 'Text',
|
|
291
388
|
'praxis.richContent.editor.defaultBadge': 'Badge',
|
|
292
389
|
'praxis.richContent.editor.defaultLink': 'Link',
|
|
@@ -327,13 +424,18 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
327
424
|
'praxis.richContent.editor.defaultActionCardAction': 'Run action',
|
|
328
425
|
'praxis.richContent.editor.defaultCollapsibleCardTitle': 'Advanced details',
|
|
329
426
|
'praxis.richContent.editor.defaultCollapsibleCardText': 'Collapsible card content',
|
|
427
|
+
'praxis.richContent.editor.cardActions': 'Card actions',
|
|
428
|
+
'praxis.richContent.editor.calloutActions': 'Callout actions',
|
|
330
429
|
'praxis.richContent.editor.ctaGroupActions': 'CTA actions',
|
|
430
|
+
'praxis.richContent.editor.emptyStateActions': 'Empty state actions',
|
|
431
|
+
'praxis.richContent.editor.recordSummaryActions': 'Summary actions',
|
|
331
432
|
'praxis.richContent.editor.tabsItems': 'Tab items',
|
|
332
433
|
'praxis.richContent.editor.lookupResultActions': 'Lookup actions',
|
|
333
434
|
'praxis.richContent.editor.lookupCardSecondaryActions': 'Secondary actions',
|
|
334
435
|
'praxis.richContent.editor.relatedRecordSecondaryActions': 'Secondary actions',
|
|
335
436
|
'praxis.richContent.editor.actionCardSecondaryActions': 'Secondary actions',
|
|
336
437
|
'praxis.richContent.editor.collapsibleCardActions': 'Card actions',
|
|
438
|
+
'praxis.richContent.editor.accordionItemActions': 'Item actions',
|
|
337
439
|
'praxis.richContent.editor.status.idle': 'Idle',
|
|
338
440
|
'praxis.richContent.editor.status.resolved': 'Resolved',
|
|
339
441
|
'praxis.richContent.editor.status.empty': 'Empty',
|
|
@@ -345,6 +447,8 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
345
447
|
'praxis.richContent.editor.nodeTypes': 'Types',
|
|
346
448
|
'praxis.richContent.editor.none': 'None',
|
|
347
449
|
'praxis.richContent.editor.preview': 'Preview',
|
|
450
|
+
'praxis.richContent.editor.previewHelp': 'Inspect the materialized document without mixing preview with authoring fields.',
|
|
451
|
+
'praxis.richContent.editor.previewUnavailable': 'Preview is unavailable until the document is valid.',
|
|
348
452
|
'praxis.richContent.editor.restore': 'Restore',
|
|
349
453
|
'praxis.richContent.editor.emptyDocument': 'Empty document',
|
|
350
454
|
'praxis.richContent.editor.validation.documentShape': 'The document must be a valid RichContentDocument.',
|
|
@@ -379,6 +483,12 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
379
483
|
'praxis.richContent.editor.validation.numberField': 'This field must be a number.',
|
|
380
484
|
'praxis.richContent.editor.validation.booleanField': 'This field must be a boolean.',
|
|
381
485
|
'praxis.richContent.editor.validation.enumField': 'This field must use one of the supported values.',
|
|
486
|
+
'praxis.richContent.editor.validation.invalidFieldJson': 'Enter valid JSON.',
|
|
487
|
+
'praxis.richContent.editor.validation.invalidCanonicalField': 'The JSON is valid but does not match the rich-content contract.',
|
|
488
|
+
'praxis.richContent.editor.validation.advancedArrayField': 'This field must be a JSON array.',
|
|
489
|
+
'praxis.richContent.editor.validation.advancedObjectField': 'This field must be a JSON object.',
|
|
490
|
+
'praxis.richContent.editor.validation.contextScopes': 'Use supported context scopes only: row, computed, detail, meta, user, tenant.',
|
|
491
|
+
'praxis.richContent.editor.validation.contextAliases': 'Context aliases must be a JSON object with string values.',
|
|
382
492
|
};
|
|
383
493
|
|
|
384
494
|
const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
@@ -387,15 +497,35 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
387
497
|
'praxis.richContent.editor.subtitle': 'Edite o documento canônico consumido pelo renderer. O payload salvo preserva os demais inputs do widget.',
|
|
388
498
|
'praxis.richContent.editor.valid': 'Documento válido',
|
|
389
499
|
'praxis.richContent.editor.invalid': 'JSON inválido',
|
|
500
|
+
'praxis.richContent.editor.invalidBadge': 'Inválido',
|
|
390
501
|
'praxis.richContent.editor.layout': 'Layout',
|
|
391
502
|
'praxis.richContent.editor.layout.block': 'Bloco',
|
|
392
503
|
'praxis.richContent.editor.layout.inline': 'Inline',
|
|
393
504
|
'praxis.richContent.editor.rootClass': 'Classe raiz',
|
|
394
505
|
'praxis.richContent.editor.rootClassPlaceholder': 'Exemplo: employee-expansion-rich',
|
|
506
|
+
'praxis.richContent.editor.documentContext': 'Contexto do documento',
|
|
507
|
+
'praxis.richContent.editor.documentContextHelp': 'Escopos e aliases de dados canônicos disponíveis para os bindings de rich-content.',
|
|
508
|
+
'praxis.richContent.editor.documentContextFields': 'Contrato de contexto',
|
|
509
|
+
'praxis.richContent.editor.workbenchTabs': 'Seções do editor',
|
|
510
|
+
'praxis.richContent.editor.guidedEditing': 'Edição guiada',
|
|
395
511
|
'praxis.richContent.editor.document': 'JSON avançado',
|
|
512
|
+
'praxis.richContent.editor.documentJson': 'JSON do documento canônico',
|
|
396
513
|
'praxis.richContent.editor.documentHelp': 'Edite o RichContentDocument canônico. O inspetor valida o formato e renderiza uma prévia antes de aplicar ou salvar.',
|
|
514
|
+
'praxis.richContent.editor.documentAdvancedHelp': 'Use JSON para diagnóstico, migração e campos avançados que ainda não estão materializados nos controles guiados.',
|
|
397
515
|
'praxis.richContent.editor.blocks': 'Blocos',
|
|
398
516
|
'praxis.richContent.editor.blocksHelp': 'Crie e edite blocos comuns de nível superior de rich-content. Use JSON para estruturas aninhadas avançadas.',
|
|
517
|
+
'praxis.richContent.editor.structure': 'Estrutura do documento',
|
|
518
|
+
'praxis.richContent.editor.structureHelp': 'Selecione um bloco para editar suas propriedades.',
|
|
519
|
+
'praxis.richContent.editor.properties': 'Propriedades',
|
|
520
|
+
'praxis.richContent.editor.propertiesHelp': 'Edite o bloco selecionado sem sair da estrutura do documento.',
|
|
521
|
+
'praxis.richContent.editor.intentNavigation': 'Seções de propriedades',
|
|
522
|
+
'praxis.richContent.editor.intent.content': 'Conteúdo',
|
|
523
|
+
'praxis.richContent.editor.intent.contentHelp': 'Campos principais do bloco',
|
|
524
|
+
'praxis.richContent.editor.intent.presentation': 'Apresentação',
|
|
525
|
+
'praxis.richContent.editor.intent.presentationHelp': 'Affordances visuais',
|
|
526
|
+
'praxis.richContent.editor.intent.dataRules': 'Dados e regras',
|
|
527
|
+
'praxis.richContent.editor.intent.dataRulesHelp': 'Metadados e gates',
|
|
528
|
+
'praxis.richContent.editor.hasIssues': 'Requer atenção',
|
|
399
529
|
'praxis.richContent.editor.block': 'Bloco',
|
|
400
530
|
'praxis.richContent.editor.blockType': 'Tipo de bloco',
|
|
401
531
|
'praxis.richContent.editor.addBlock': 'Adicionar bloco',
|
|
@@ -417,11 +547,18 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
417
547
|
'praxis.richContent.editor.cardContentHelp': 'O conteúdo do card é preservado no JSON. Use o JSON avançado para nodes aninhados do card.',
|
|
418
548
|
'praxis.richContent.editor.nodeId': 'Id estável',
|
|
419
549
|
'praxis.richContent.editor.nodeIdPlaceholder': 'Exemplo: hero-title',
|
|
550
|
+
'praxis.richContent.editor.advancedDataRules': 'Dados e regras avançados',
|
|
551
|
+
'praxis.richContent.editor.advancedDataRulesHelp': 'Metadados, capability gates, visibilidade e estilo seguro.',
|
|
552
|
+
'praxis.richContent.editor.advancedJsonFields': 'Campos avançados presentes no JSON',
|
|
553
|
+
'praxis.richContent.editor.advancedJsonFieldsHelp': 'Estes campos canônicos são preservados pelas edições guiadas e continuam editáveis na aba JSON avançado.',
|
|
554
|
+
'praxis.richContent.editor.advancedJsonEditor': 'Editor JSON avançado',
|
|
555
|
+
'praxis.richContent.editor.advancedJsonEditorHelp': 'Edite bindings de dados e campos de regra JsonLogic canônicos sem sair da edição guiada.',
|
|
420
556
|
'praxis.richContent.editor.visibilityRule': 'Regra de visibilidade',
|
|
421
557
|
'praxis.richContent.editor.safeStyle': 'Estilo seguro',
|
|
422
558
|
'praxis.richContent.editor.nodeType.text': 'Texto',
|
|
423
559
|
'praxis.richContent.editor.nodeType.badge': 'Badge',
|
|
424
560
|
'praxis.richContent.editor.nodeType.icon': 'Ícone',
|
|
561
|
+
'praxis.richContent.editor.nodeType.avatar': 'Avatar',
|
|
425
562
|
'praxis.richContent.editor.nodeType.image': 'Imagem',
|
|
426
563
|
'praxis.richContent.editor.nodeType.link': 'Link',
|
|
427
564
|
'praxis.richContent.editor.nodeType.metric': 'Métrica',
|
|
@@ -438,37 +575,73 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
438
575
|
'praxis.richContent.editor.field.icon': 'Ícone',
|
|
439
576
|
'praxis.richContent.editor.field.ariaLabel': 'Label acessível',
|
|
440
577
|
'praxis.richContent.editor.field.src': 'URL da imagem',
|
|
578
|
+
'praxis.richContent.editor.field.srcExpr': 'Vínculo da URL da imagem',
|
|
441
579
|
'praxis.richContent.editor.field.href': 'URL do link',
|
|
442
580
|
'praxis.richContent.editor.field.target': 'Destino',
|
|
581
|
+
'praxis.richContent.editor.field.rel': 'Rel',
|
|
443
582
|
'praxis.richContent.editor.field.alt': 'Texto alternativo',
|
|
583
|
+
'praxis.richContent.editor.field.altExpr': 'Vínculo do texto alternativo',
|
|
444
584
|
'praxis.richContent.editor.field.testId': 'Id de teste',
|
|
445
585
|
'praxis.richContent.editor.field.className': 'Classe CSS',
|
|
446
586
|
'praxis.richContent.editor.field.visibleWhenPath': 'Path de contexto',
|
|
447
587
|
'praxis.richContent.editor.field.visibleWhenValue': 'Valor esperado',
|
|
448
588
|
'praxis.richContent.editor.field.styleName': 'Propriedade CSS',
|
|
449
589
|
'praxis.richContent.editor.field.styleValue': 'Valor CSS',
|
|
590
|
+
'praxis.richContent.editor.field.bindings': 'Bindings de dados',
|
|
591
|
+
'praxis.richContent.editor.field.disabledWhen': 'Regra de desabilitação',
|
|
592
|
+
'praxis.richContent.editor.field.loadWhen': 'Regra de carregamento',
|
|
593
|
+
'praxis.richContent.editor.field.classWhen': 'Classes condicionais',
|
|
594
|
+
'praxis.richContent.editor.field.styleWhen': 'Estilos condicionais',
|
|
595
|
+
'praxis.richContent.editor.field.contextScopes': 'Escopos de contexto',
|
|
596
|
+
'praxis.richContent.editor.field.contextAliases': 'Aliases de contexto',
|
|
597
|
+
'praxis.richContent.editor.placeholder.contextScopes': 'row, user, tenant',
|
|
450
598
|
'praxis.richContent.editor.field.valueExpr': 'Binding do valor',
|
|
451
599
|
'praxis.richContent.editor.field.captionExpr': 'Binding da legenda',
|
|
452
600
|
'praxis.richContent.editor.field.max': 'Máximo',
|
|
601
|
+
'praxis.richContent.editor.field.showPercent': 'Mostrar percentual',
|
|
453
602
|
'praxis.richContent.editor.field.direction': 'Direção',
|
|
454
603
|
'praxis.richContent.editor.field.gap': 'Espaçamento',
|
|
604
|
+
'praxis.richContent.editor.field.wrap': 'Quebrar itens',
|
|
455
605
|
'praxis.richContent.editor.field.avatarName': 'Nome do avatar',
|
|
456
606
|
'praxis.richContent.editor.field.avatarImage': 'Imagem do avatar',
|
|
607
|
+
'praxis.richContent.editor.field.nameExpr': 'Vínculo do nome',
|
|
608
|
+
'praxis.richContent.editor.field.imageSrcExpr': 'Vínculo da imagem',
|
|
609
|
+
'praxis.richContent.editor.field.initials': 'Iniciais',
|
|
610
|
+
'praxis.richContent.editor.field.initialsExpr': 'Vínculo das iniciais',
|
|
457
611
|
'praxis.richContent.editor.field.emptyText': 'Texto vazio',
|
|
458
612
|
'praxis.richContent.editor.field.errorText': 'Texto de erro',
|
|
459
613
|
'praxis.richContent.editor.field.meta': 'Meta',
|
|
460
614
|
'praxis.richContent.editor.field.opposite': 'Conteúdo oposto',
|
|
461
615
|
'praxis.richContent.editor.field.badge': 'Badge',
|
|
616
|
+
'praxis.richContent.editor.field.badgeExpr': 'Vínculo do badge',
|
|
462
617
|
'praxis.richContent.editor.field.preset': 'Preset',
|
|
463
618
|
'praxis.richContent.editor.field.title': 'Título',
|
|
464
619
|
'praxis.richContent.editor.field.subtitle': 'Subtítulo',
|
|
465
620
|
'praxis.richContent.editor.field.size': 'Tamanho',
|
|
621
|
+
'praxis.richContent.editor.field.density': 'Densidade',
|
|
622
|
+
'praxis.richContent.editor.field.loading': 'Carregando',
|
|
623
|
+
'praxis.richContent.editor.field.loadingExpr': 'Vínculo de carregamento',
|
|
624
|
+
'praxis.richContent.editor.field.active': 'Ativo',
|
|
625
|
+
'praxis.richContent.editor.field.activeExpr': 'Vínculo de ativo',
|
|
466
626
|
'praxis.richContent.editor.field.orientation': 'Orientação',
|
|
467
627
|
'praxis.richContent.editor.field.mediaKind': 'Mídia',
|
|
468
628
|
'praxis.richContent.editor.field.mediaSrc': 'Origem da mídia',
|
|
629
|
+
'praxis.richContent.editor.field.mediaSrcExpr': 'Vínculo da origem da mídia',
|
|
469
630
|
'praxis.richContent.editor.field.mediaAlt': 'Texto alternativo da mídia',
|
|
631
|
+
'praxis.richContent.editor.field.mediaAltExpr': 'Vínculo do texto alternativo da mídia',
|
|
470
632
|
'praxis.richContent.editor.field.mediaIcon': 'Ícone da mídia',
|
|
633
|
+
'praxis.richContent.editor.field.mediaLabel': 'Label da mídia',
|
|
634
|
+
'praxis.richContent.editor.field.mediaLabelExpr': 'Vínculo do label da mídia',
|
|
635
|
+
'praxis.richContent.editor.field.aspectRatio': 'Proporção',
|
|
471
636
|
'praxis.richContent.editor.field.mediaPlacement': 'Posição da mídia',
|
|
637
|
+
'praxis.richContent.editor.field.interactionMode': 'Modo de interação',
|
|
638
|
+
'praxis.richContent.editor.field.selected': 'Selecionado',
|
|
639
|
+
'praxis.richContent.editor.field.selectedExpr': 'Vínculo de seleção',
|
|
640
|
+
'praxis.richContent.editor.field.interactionActionId': 'Action ID da interação',
|
|
641
|
+
'praxis.richContent.editor.field.accessibilityRole': 'Papel de acessibilidade',
|
|
642
|
+
'praxis.richContent.editor.field.ariaLabelExpr': 'Vínculo do label acessível',
|
|
643
|
+
'praxis.richContent.editor.field.requiresCapabilities': 'Capabilities',
|
|
644
|
+
'praxis.richContent.editor.field.capabilityMode': 'Modo de capability',
|
|
472
645
|
'praxis.richContent.editor.cardVariant.outlined': 'Com contorno',
|
|
473
646
|
'praxis.richContent.editor.cardVariant.elevated': 'Elevado',
|
|
474
647
|
'praxis.richContent.editor.cardVariant.filled': 'Preenchido',
|
|
@@ -477,8 +650,18 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
477
650
|
'praxis.richContent.editor.size.sm': 'Pequeno',
|
|
478
651
|
'praxis.richContent.editor.size.md': 'Médio',
|
|
479
652
|
'praxis.richContent.editor.size.lg': 'Grande',
|
|
653
|
+
'praxis.richContent.editor.density.compact': 'Compacta',
|
|
654
|
+
'praxis.richContent.editor.density.comfortable': 'Confortável',
|
|
480
655
|
'praxis.richContent.editor.orientation.vertical': 'Vertical',
|
|
481
656
|
'praxis.richContent.editor.orientation.horizontal': 'Horizontal',
|
|
657
|
+
'praxis.richContent.editor.interaction.none': 'Nenhuma',
|
|
658
|
+
'praxis.richContent.editor.interaction.action': 'Ação',
|
|
659
|
+
'praxis.richContent.editor.interaction.selectable': 'Selecionável',
|
|
660
|
+
'praxis.richContent.editor.accessibilityRole.article': 'Artigo',
|
|
661
|
+
'praxis.richContent.editor.accessibilityRole.group': 'Grupo',
|
|
662
|
+
'praxis.richContent.editor.accessibilityRole.button': 'Botão',
|
|
663
|
+
'praxis.richContent.editor.capabilityMode.all': 'Todas',
|
|
664
|
+
'praxis.richContent.editor.capabilityMode.any': 'Qualquer',
|
|
482
665
|
'praxis.richContent.editor.mediaKind.image': 'Imagem',
|
|
483
666
|
'praxis.richContent.editor.mediaKind.video': 'Vídeo',
|
|
484
667
|
'praxis.richContent.editor.mediaKind.icon': 'Ícone',
|
|
@@ -501,6 +684,26 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
501
684
|
'praxis.richContent.editor.placeholder.valueExpr': 'row.total',
|
|
502
685
|
'praxis.richContent.editor.placeholder.captionExpr': 'row.caption',
|
|
503
686
|
'praxis.richContent.editor.placeholder.progressExpr': 'row.progress',
|
|
687
|
+
'praxis.richContent.editor.placeholder.tabLabelExpr': 'row.tabLabel',
|
|
688
|
+
'praxis.richContent.editor.placeholder.badgeExpr': 'row.badge',
|
|
689
|
+
'praxis.richContent.editor.placeholder.requiresCapabilities': 'form.mode.edit, employee.open',
|
|
690
|
+
'praxis.richContent.editor.placeholder.srcExpr': 'row.imageUrl',
|
|
691
|
+
'praxis.richContent.editor.placeholder.altExpr': 'row.imageAlt',
|
|
692
|
+
'praxis.richContent.editor.placeholder.loadingExpr': 'row.loading',
|
|
693
|
+
'praxis.richContent.editor.placeholder.activeExpr': 'row.active',
|
|
694
|
+
'praxis.richContent.editor.placeholder.mediaSrcExpr': 'row.mediaUrl',
|
|
695
|
+
'praxis.richContent.editor.placeholder.mediaAltExpr': 'row.mediaAlt',
|
|
696
|
+
'praxis.richContent.editor.placeholder.mediaLabelExpr': 'row.mediaLabel',
|
|
697
|
+
'praxis.richContent.editor.placeholder.aspectRatio': '16 / 9',
|
|
698
|
+
'praxis.richContent.editor.placeholder.selectedExpr': 'row.selected',
|
|
699
|
+
'praxis.richContent.editor.placeholder.actionId': 'host.action.open',
|
|
700
|
+
'praxis.richContent.editor.placeholder.ariaLabelExpr': 'row.ariaLabel',
|
|
701
|
+
'praxis.richContent.editor.placeholder.nameExpr': 'row.name',
|
|
702
|
+
'praxis.richContent.editor.placeholder.imageSrcExpr': 'row.avatarUrl',
|
|
703
|
+
'praxis.richContent.editor.placeholder.initialsExpr': 'row.initials',
|
|
704
|
+
'praxis.richContent.editor.placeholder.rel': 'noopener noreferrer',
|
|
705
|
+
'praxis.richContent.editor.target.self': 'Mesma aba',
|
|
706
|
+
'praxis.richContent.editor.target.blank': 'Nova aba',
|
|
504
707
|
'praxis.richContent.editor.defaultText': 'Texto',
|
|
505
708
|
'praxis.richContent.editor.defaultBadge': 'Badge',
|
|
506
709
|
'praxis.richContent.editor.defaultLink': 'Link',
|
|
@@ -521,6 +724,8 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
521
724
|
'praxis.richContent.editor.nodeTypes': 'Tipos',
|
|
522
725
|
'praxis.richContent.editor.none': 'Nenhum',
|
|
523
726
|
'praxis.richContent.editor.preview': 'Prévia',
|
|
727
|
+
'praxis.richContent.editor.previewHelp': 'Inspecione o documento materializado sem misturar prévia com campos de autoria.',
|
|
728
|
+
'praxis.richContent.editor.previewUnavailable': 'A prévia fica indisponível até que o documento seja válido.',
|
|
524
729
|
'praxis.richContent.editor.restore': 'Restaurar',
|
|
525
730
|
'praxis.richContent.editor.emptyDocument': 'Documento vazio',
|
|
526
731
|
'praxis.richContent.editor.validation.documentShape': 'O documento deve ser um RichContentDocument válido.',
|
|
@@ -572,9 +777,9 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
572
777
|
'praxis.richContent.editor.nodeType.collapsibleCard': 'Card colapsável',
|
|
573
778
|
'praxis.richContent.editor.nodeType.disclosure': 'Disclosure',
|
|
574
779
|
'praxis.richContent.editor.nodeType.accordion': 'Accordion',
|
|
575
|
-
'praxis.richContent.editor.nodeType.formLauncher': '
|
|
780
|
+
'praxis.richContent.editor.nodeType.formLauncher': 'Lançador de formulário',
|
|
576
781
|
'praxis.richContent.editor.field.message': 'Mensagem',
|
|
577
|
-
'praxis.richContent.editor.field.description': '
|
|
782
|
+
'praxis.richContent.editor.field.description': 'Descrição',
|
|
578
783
|
'praxis.richContent.editor.field.status': 'Status',
|
|
579
784
|
'praxis.richContent.editor.field.titleExpr': 'Vínculo do título',
|
|
580
785
|
'praxis.richContent.editor.field.subtitleExpr': 'Vínculo do subtítulo',
|
|
@@ -617,11 +822,15 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
617
822
|
'praxis.richContent.editor.field.actionId': 'Action ID',
|
|
618
823
|
'praxis.richContent.editor.field.payloadExpr': 'Binding do payload',
|
|
619
824
|
'praxis.richContent.editor.field.availabilityExpr': 'Binding de disponibilidade',
|
|
620
|
-
'praxis.richContent.editor.field.confirmMessage': 'Mensagem de
|
|
825
|
+
'praxis.richContent.editor.field.confirmMessage': 'Mensagem de confirmação',
|
|
621
826
|
'praxis.richContent.editor.decisionGovernance': 'Governança da decisão',
|
|
622
827
|
'praxis.richContent.editor.decisionEvidence': 'Evidências',
|
|
623
828
|
'praxis.richContent.editor.decisionPrimaryAction': 'Ação primária',
|
|
624
829
|
'praxis.richContent.editor.decisionSecondaryActions': 'Ações secundárias',
|
|
830
|
+
'praxis.richContent.editor.addPrimaryAction': 'Adicionar ação primária',
|
|
831
|
+
'praxis.richContent.editor.addSecondaryAction': 'Adicionar ação secundária',
|
|
832
|
+
'praxis.richContent.editor.addAction': 'Adicionar ação',
|
|
833
|
+
'praxis.richContent.editor.action': 'Ação',
|
|
625
834
|
'praxis.richContent.editor.addEvidence': 'Adicionar evidência',
|
|
626
835
|
'praxis.richContent.editor.evidence': 'Evidência',
|
|
627
836
|
'praxis.richContent.editor.defaultEvidenceLabel': 'Evidência',
|
|
@@ -653,7 +862,7 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
653
862
|
'praxis.richContent.editor.placeholder.evidenceSourceExpr': '${evidence.source}',
|
|
654
863
|
'praxis.richContent.editor.field.formId': 'Form ID',
|
|
655
864
|
'praxis.richContent.editor.field.ctaLabel': 'Label do CTA',
|
|
656
|
-
'praxis.richContent.editor.field.ctaIcon': '
|
|
865
|
+
'praxis.richContent.editor.field.ctaIcon': 'Ícone do CTA',
|
|
657
866
|
'praxis.richContent.editor.layout.stacked': 'Empilhado',
|
|
658
867
|
'praxis.richContent.editor.layout.inlineShort': 'Inline',
|
|
659
868
|
'praxis.richContent.editor.layout.split': 'Dividido',
|
|
@@ -695,25 +904,31 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
695
904
|
'praxis.richContent.editor.timeline.textAppearance.label': 'Rótulo',
|
|
696
905
|
'praxis.richContent.editor.appearance.underline': 'Sublinhado',
|
|
697
906
|
'praxis.richContent.editor.appearance.pills': 'Pílulas',
|
|
698
|
-
'praxis.richContent.editor.variant.basic': '
|
|
907
|
+
'praxis.richContent.editor.variant.basic': 'Básico',
|
|
699
908
|
'praxis.richContent.editor.variant.raised': 'Elevado',
|
|
700
909
|
'praxis.richContent.editor.variant.stroked': 'Contornado',
|
|
701
910
|
'praxis.richContent.editor.variant.flat': 'Flat',
|
|
702
|
-
'praxis.richContent.editor.color.basic': '
|
|
703
|
-
'praxis.richContent.editor.color.primary': '
|
|
911
|
+
'praxis.richContent.editor.color.basic': 'Básica',
|
|
912
|
+
'praxis.richContent.editor.color.primary': 'Primária',
|
|
704
913
|
'praxis.richContent.editor.color.accent': 'Accent',
|
|
705
914
|
'praxis.richContent.editor.color.warn': 'Warn',
|
|
706
|
-
'praxis.richContent.editor.
|
|
915
|
+
'praxis.richContent.editor.cardActions': 'Ações do card',
|
|
916
|
+
'praxis.richContent.editor.calloutActions': 'Ações do callout',
|
|
917
|
+
'praxis.richContent.editor.ctaGroupActions': 'Ações do CTA',
|
|
918
|
+
'praxis.richContent.editor.emptyStateActions': 'Ações do estado vazio',
|
|
919
|
+
'praxis.richContent.editor.recordSummaryActions': 'Ações do resumo',
|
|
707
920
|
'praxis.richContent.editor.tabsItems': 'Itens de aba',
|
|
708
|
-
'praxis.richContent.editor.lookupResultActions': '
|
|
709
|
-
'praxis.richContent.editor.lookupCardSecondaryActions': '
|
|
921
|
+
'praxis.richContent.editor.lookupResultActions': 'Ações da consulta',
|
|
922
|
+
'praxis.richContent.editor.lookupCardSecondaryActions': 'Ações secundárias',
|
|
923
|
+
'praxis.richContent.editor.relatedRecordSecondaryActions': 'Ações secundárias',
|
|
710
924
|
'praxis.richContent.editor.actionCardSecondaryActions': 'Ações secundárias',
|
|
711
|
-
'praxis.richContent.editor.collapsibleCardActions': '
|
|
925
|
+
'praxis.richContent.editor.collapsibleCardActions': 'Ações do card',
|
|
926
|
+
'praxis.richContent.editor.accordionItemActions': 'Ações do item',
|
|
712
927
|
'praxis.richContent.editor.status.idle': 'Aguardando',
|
|
713
928
|
'praxis.richContent.editor.status.resolved': 'Resolvido',
|
|
714
929
|
'praxis.richContent.editor.status.empty': 'Vazio',
|
|
715
930
|
'praxis.richContent.editor.status.error': 'Erro',
|
|
716
|
-
'praxis.richContent.editor.formLauncherSecondaryActions': '
|
|
931
|
+
'praxis.richContent.editor.formLauncherSecondaryActions': 'Ações secundárias',
|
|
717
932
|
'praxis.richContent.editor.defaultLookupResultTitle': 'Resultado de consulta',
|
|
718
933
|
'praxis.richContent.editor.defaultLookupResultField': 'Departamento',
|
|
719
934
|
'praxis.richContent.editor.defaultLookupResultHint': 'Resolvido a partir do registro selecionado',
|
|
@@ -745,6 +960,12 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
745
960
|
'praxis.richContent.editor.defaultTabsSubtitle': 'Agrupe visões portáveis sem inventar markup de abas no host.',
|
|
746
961
|
'praxis.richContent.editor.defaultTabLabel': 'Visão geral',
|
|
747
962
|
'praxis.richContent.editor.defaultTabText': 'Conteúdo da aba',
|
|
963
|
+
'praxis.richContent.editor.validation.invalidFieldJson': 'Informe um JSON válido.',
|
|
964
|
+
'praxis.richContent.editor.validation.invalidCanonicalField': 'O JSON é válido, mas não corresponde ao contrato rich-content.',
|
|
965
|
+
'praxis.richContent.editor.validation.advancedArrayField': 'Este campo deve ser um array JSON.',
|
|
966
|
+
'praxis.richContent.editor.validation.advancedObjectField': 'Este campo deve ser um objeto JSON.',
|
|
967
|
+
'praxis.richContent.editor.validation.contextScopes': 'Use apenas escopos de contexto suportados: row, computed, detail, meta, user, tenant.',
|
|
968
|
+
'praxis.richContent.editor.validation.contextAliases': 'Aliases de contexto devem ser um objeto JSON com valores string.',
|
|
748
969
|
};
|
|
749
970
|
|
|
750
971
|
function createPraxisRichContentI18nConfig(options = {}) {
|
|
@@ -989,6 +1210,15 @@ class PraxisRichContent {
|
|
|
989
1210
|
const value = this.resolveValue(node.valueExpr);
|
|
990
1211
|
return typeof value === 'number' ? value : Number(value ?? 0);
|
|
991
1212
|
}
|
|
1213
|
+
resolveProgressPercent(node) {
|
|
1214
|
+
const max = Number(node.max ?? 100);
|
|
1215
|
+
const value = this.resolveProgressValue(node);
|
|
1216
|
+
if (!Number.isFinite(value) || !Number.isFinite(max) || max <= 0) {
|
|
1217
|
+
return '0%';
|
|
1218
|
+
}
|
|
1219
|
+
const percent = Math.round(Math.min(Math.max((value / max) * 100, 0), 100));
|
|
1220
|
+
return `${percent}%`;
|
|
1221
|
+
}
|
|
992
1222
|
resolveProgressLabel(node) {
|
|
993
1223
|
return this.resolveValue(node.labelExpr) ?? node.label ?? null;
|
|
994
1224
|
}
|
|
@@ -1964,18 +2194,32 @@ class PraxisRichContent {
|
|
|
1964
2194
|
</div>
|
|
1965
2195
|
}
|
|
1966
2196
|
@case ('metric') {
|
|
1967
|
-
<div class="prx-rich-metric">
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
2197
|
+
<div class="prx-rich-metric" [class.prx-rich-metric--with-icon]="node.icon">
|
|
2198
|
+
@if (node.icon) {
|
|
2199
|
+
<span class="material-symbols-outlined prx-rich-metric-icon" aria-hidden="true">
|
|
2200
|
+
{{ node.icon }}
|
|
2201
|
+
</span>
|
|
1972
2202
|
}
|
|
2203
|
+
<div class="prx-rich-metric-content">
|
|
2204
|
+
<div class="prx-rich-metric-label">{{ node.label }}</div>
|
|
2205
|
+
<div class="prx-rich-metric-value">{{ resolveMetricValue(node) }}</div>
|
|
2206
|
+
@if (resolveMetricCaption(node); as caption) {
|
|
2207
|
+
<div class="prx-rich-metric-caption">{{ caption }}</div>
|
|
2208
|
+
}
|
|
2209
|
+
</div>
|
|
1973
2210
|
</div>
|
|
1974
2211
|
}
|
|
1975
2212
|
@case ('progress') {
|
|
1976
2213
|
<div class="prx-rich-progress">
|
|
1977
|
-
@if (resolveProgressLabel(node)
|
|
1978
|
-
<div class="prx-rich-progress-
|
|
2214
|
+
@if (resolveProgressLabel(node) || node.showPercent) {
|
|
2215
|
+
<div class="prx-rich-progress-header">
|
|
2216
|
+
@if (resolveProgressLabel(node); as progressLabel) {
|
|
2217
|
+
<div class="prx-rich-progress-label">{{ progressLabel }}</div>
|
|
2218
|
+
}
|
|
2219
|
+
@if (node.showPercent) {
|
|
2220
|
+
<div class="prx-rich-progress-percent">{{ resolveProgressPercent(node) }}</div>
|
|
2221
|
+
}
|
|
2222
|
+
</div>
|
|
1979
2223
|
}
|
|
1980
2224
|
<progress
|
|
1981
2225
|
class="prx-rich-progress-bar"
|
|
@@ -3045,7 +3289,7 @@ class PraxisRichContent {
|
|
|
3045
3289
|
</span>
|
|
3046
3290
|
}
|
|
3047
3291
|
</ng-template>
|
|
3048
|
-
`, isInline: true, styles: [".prx-rich-content-root{display:block;min-width:0;max-width:100%}.prx-rich-content-root:not(.prx-rich-content-root--inline){display:grid;gap:var(--prx-rich-content-block-gap, 12px)}.prx-rich-content-root--inline{display:inline-flex;align-items:var(--prx-rich-content-inline-align-items, center);flex-wrap:var(--prx-rich-content-inline-flex-wrap, nowrap);gap:var(--prx-rich-content-inline-gap, 6px);min-width:0;max-width:100%;vertical-align:middle}.prx-rich-node{min-width:0;max-width:100%}.prx-rich-node--inline{display:inline-flex;align-items:center;min-width:0;max-width:100%}.prx-rich-compose{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%}.prx-rich-compose.direction-column{flex-direction:column;align-items:stretch}.prx-rich-compose.wrap{flex-wrap:wrap}.prx-rich-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;background:var(--md-sys-color-primary-container, #e8def8);color:var(--md-sys-color-on-primary-container, #21005d);font-size:12px;line-height:20px}.prx-rich-link{color:var(--md-sys-color-primary, #6750a4);text-decoration:underline;text-underline-offset:2px}.prx-rich-text,.prx-rich-link,.prx-rich-badge,.prx-rich-card-title,.prx-rich-card-subtitle,.prx-rich-card-body,.prx-rich-card-footer,.prx-rich-cta-group__title,.prx-rich-cta-group__subtitle,.prx-rich-cta-group__message,.prx-rich-key-value-list__title,.prx-rich-key-value-list__label,.prx-rich-key-value-list__value,.prx-rich-stat-group__title,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__label,.prx-rich-stat-group__value,.prx-rich-stat-group__caption,.prx-rich-tabs__title,.prx-rich-tabs__subtitle,.prx-rich-record-summary__title,.prx-rich-record-summary__subtitle,.prx-rich-record-summary__meta,.prx-rich-record-summary__field-label,.prx-rich-record-summary__field-value,.prx-rich-lookup-result__title,.prx-rich-lookup-result__subtitle,.prx-rich-lookup-result__meta,.prx-rich-lookup-result__message,.prx-rich-lookup-card__title,.prx-rich-lookup-card__subtitle,.prx-rich-lookup-card__meta,.prx-rich-lookup-card__message,.prx-rich-related-record__title,.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__relation,.prx-rich-timeline__title,.prx-rich-timeline__subtitle,.prx-rich-timeline__item-title,.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta{min-width:0;max-width:100%;overflow-wrap:anywhere}.prx-rich-text,.prx-rich-link{display:inline-block}.prx-rich-node[data-rich-node-type=avatar]{display:inline-flex;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-surface-container-high, #ece6f0);color:var(--md-sys-color-on-surface, #1d1b20)}.prx-rich-avatar{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:inherit;background:inherit;color:inherit;overflow:hidden}.prx-rich-avatar-image{width:100%;height:100%;object-fit:cover}.prx-rich-avatar-fallback{font-weight:600}.prx-rich-card{--prx-rich-card-tone-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-card-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-card-tone-on-bg: var(--md-sys-color-on-surface, #1d1b20);display:flex;flex-direction:column;position:relative;gap:12px;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;background:var(--prx-rich-card-tone-bg);color:var(--prx-rich-card-tone-on-bg);overflow:hidden;min-width:0;max-width:100%}.prx-rich-card[data-size=sm],.prx-rich-card[data-density=compact]{gap:8px;padding:12px;border-radius:12px}.prx-rich-content-root.prx-rich-content-root--widget-card{--prx-rich-content-block-gap: 8px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card{gap:8px;padding:12px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 82%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=elevated],.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=filled]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 88%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-heading,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-body,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-actions,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-footer{gap:6px}.prx-rich-card[data-size=lg]{gap:16px;padding:20px}.prx-rich-card[data-orientation=horizontal]{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(120px,.38fr) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-avatar{grid-template-columns:minmax(72px,148px) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(0,1fr) minmax(120px,.38fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-avatar{grid-template-columns:minmax(0,1fr) minmax(72px,148px)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>:not(.prx-rich-card-media){grid-column:2}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>.prx-rich-card-media[data-placement=leading]{grid-column:1;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>.prx-rich-card-media[data-placement=trailing]{grid-column:2;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-top>.prx-rich-card-media[data-placement=top],.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-background>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-variant=plain]{border-color:transparent;background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 64%,transparent)}.prx-rich-card[data-variant=elevated]{border-color:transparent;box-shadow:0 4px 18px color-mix(in srgb,var(--md-sys-color-shadow, #000) 16%,transparent)}.prx-rich-card[data-variant=filled]{background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,var(--md-sys-color-surface-container, #f3edf7))}.prx-rich-card[data-variant=transparent]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 64%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,transparent)}.prx-rich-card[data-tone=info]{--prx-rich-card-tone-color: var(--praxis-info, #0b5cad);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 42%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=success]{--prx-rich-card-tone-color: var(--praxis-success, #2e7d32);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 48%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=warning]{--prx-rich-card-tone-color: var(--praxis-warning, #ed6c02);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-card-tone-color) 14%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 56%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=danger]{--prx-rich-card-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-card-tone-color) 16%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 62%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card--interactive{cursor:pointer}.prx-rich-card--interactive:focus-visible{outline:3px solid color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 72%,transparent);outline-offset:2px}.prx-rich-card--selected,.prx-rich-card--active{border-color:var(--md-sys-color-primary, #6750a4);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary, #6750a4)}.prx-rich-card--disabled:not(.prx-rich-card--loading){opacity:.62;cursor:default}.prx-rich-card--loading{cursor:progress}.prx-rich-card-media{display:flex;align-items:center;justify-content:center;min-width:0;border-radius:12px;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 18%,var(--md-sys-color-surface-container-high, #ece6f0));overflow:hidden;aspect-ratio:16 / 9}.prx-rich-card-media[data-kind=icon],.prx-rich-card-media[data-kind=avatar]{aspect-ratio:auto;min-height:64px;padding:12px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar]{min-height:48px;padding:8px}.prx-rich-card-media[data-placement=leading],.prx-rich-card-media[data-placement=trailing]{aspect-ratio:auto;min-height:100%}.prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card-media[data-kind=avatar][data-placement=trailing]{align-self:start;min-height:64px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=trailing]{min-height:48px}.prx-rich-card-media--background{position:absolute;inset:0;z-index:0;border-radius:inherit;opacity:.18}.prx-rich-card-media--background~*{position:relative;z-index:1}.prx-rich-card-media__asset{width:100%;height:100%;object-fit:cover}.prx-rich-card-media__icon{font-size:40px;color:var(--prx-rich-card-tone-color)}.prx-rich-card-media__avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 22%,var(--md-sys-color-primary-container, #e8def8));color:var(--prx-rich-card-tone-on-bg);font-weight:700}.prx-rich-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.prx-rich-card-header__content{min-width:0}.prx-rich-card-header__action{flex:0 0 auto}.prx-rich-card-heading{display:grid;gap:4px;min-width:0}.prx-rich-card-title{font-weight:600}.prx-rich-card-subtitle,.prx-rich-metric-caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-metric{display:flex;flex-direction:column;gap:4px}.prx-rich-metric-value{font-size:20px;font-weight:700}.prx-rich-progress{display:flex;flex-direction:column;gap:4px}.prx-rich-progress-bar{width:100%}.prx-rich-action-button,.prx-rich-card-actions,.prx-rich-callout__actions,.prx-rich-empty-state__actions,.prx-rich-record-summary__actions,.prx-rich-disclosure__actions,.prx-rich-accordion__actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-action-button{appearance:none;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:999px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-on-surface, #1d1b20);padding:8px 12px;cursor:pointer}.prx-rich-action-button:disabled{opacity:.56;cursor:default}.prx-rich-action-button--raised,.prx-rich-action-button--primary{background:var(--md-sys-color-primary, #6750a4);color:var(--md-sys-color-on-primary, #fff)}.prx-rich-callout,.prx-rich-empty-state,.prx-rich-record-summary,.prx-rich-decision-package,.prx-rich-disclosure,.prx-rich-accordion{border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;padding:16px;background:var(--md-sys-color-surface, #fff)}.prx-rich-callout[data-tone=warning]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#ffb300 12%)}.prx-rich-callout[data-tone=danger]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#d32f2f 12%)}.prx-rich-callout__title,.prx-rich-empty-state__title,.prx-rich-record-summary__title,.prx-rich-decision-package__title,.prx-rich-stat-group__title,.prx-rich-accordion__title,.prx-rich-key-value-list__title{font-weight:700;margin-bottom:4px}.prx-rich-decision-package{--prx-rich-decision-package-accent: var(--md-sys-color-primary, #6750a4);display:grid;grid-template-columns:minmax(0,1fr) minmax(136px,auto);gap:16px;border-color:color-mix(in srgb,var(--prx-rich-decision-package-accent) 42%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,var(--prx-rich-decision-package-accent) 12%)}.prx-rich-decision-package[data-status=approved],.prx-rich-decision-package[data-status=published]{--prx-rich-decision-package-accent: var(--praxis-success, #2e7d32)}.prx-rich-decision-package[data-status=draft],.prx-rich-decision-package[data-status=simulated],.prx-rich-decision-package[data-risk=medium],.prx-rich-decision-package[data-risk=high]{--prx-rich-decision-package-accent: var(--praxis-warning, #ed6c02)}.prx-rich-decision-package[data-status=reverted],.prx-rich-decision-package[data-risk=critical]{--prx-rich-decision-package-accent: var(--md-sys-color-error, #d32f2f)}.prx-rich-decision-package__main{display:grid;gap:8px;min-width:0}.prx-rich-decision-package__eyebrow,.prx-rich-decision-package__evidence,.prx-rich-decision-package__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.prx-rich-decision-package__title{font-size:20px;line-height:1.15}.prx-rich-decision-package__subtitle,.prx-rich-decision-package__summary,.prx-rich-decision-package__meta,.prx-rich-decision-package__property dt,.prx-rich-decision-package__evidence-item small{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-decision-package__properties{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:0}.prx-rich-decision-package__property{min-width:0}.prx-rich-decision-package__property dt,.prx-rich-decision-package__property dd{margin:0;overflow-wrap:anywhere}.prx-rich-decision-package__property dd{font-weight:700}.prx-rich-decision-package__evidence-item{display:inline-flex;flex-direction:column;gap:1px;border:1px solid color-mix(in srgb,var(--prx-rich-decision-package-accent) 24%,var(--md-sys-color-outline-variant, #cac4d0));border-radius:12px;padding:6px 8px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 76%,transparent);font-size:12px}.prx-rich-decision-package__aside{display:grid;align-content:start;justify-items:end;gap:10px;min-width:0}.prx-rich-decision-package__confidence{display:grid;justify-items:center;min-width:96px;border-radius:16px;padding:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 72%,transparent)}.prx-rich-decision-package__confidence span{font-size:28px;font-weight:800;line-height:1}.prx-rich-decision-package__confidence small{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:11px;font-weight:700;text-transform:uppercase}@media(max-width:640px){.prx-rich-decision-package{grid-template-columns:minmax(0,1fr)}.prx-rich-decision-package__aside{justify-items:start}}.prx-rich-empty-state{align-items:center;text-align:center}.prx-rich-key-value-list__items,.prx-rich-stat-group__items,.prx-rich-record-summary__fields{display:grid;gap:8px;margin:0}.prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr))}.prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr))}.prx-rich-stat-group__item{--prx-rich-stat-tone-color: var(--md-sys-color-outline, #79747e);--prx-rich-stat-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-stat-tone-border: var(--md-sys-color-outline-variant, #cac4d0);display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:start;min-width:0;padding:12px;border:1px solid var(--prx-rich-stat-tone-border);border-radius:12px;background:var(--prx-rich-stat-tone-bg)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__items{gap:6px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(148px,100%),1fr))}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__item{column-gap:8px;padding:8px 10px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-stat-tone-bg) 78%,transparent)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__icon,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__value{font-size:20px}.prx-rich-stat-group__item[data-tone=info]{--prx-rich-stat-tone-color: var(--praxis-info, #0b5cad);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 34%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=success]{--prx-rich-stat-tone-color: var(--praxis-success, #2e7d32);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 38%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=warning]{--prx-rich-stat-tone-color: var(--praxis-warning, #b26a00);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-stat-tone-color) 14%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 46%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=danger]{--prx-rich-stat-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-stat-tone-color) 16%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 54%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item-header{display:flex;gap:8px;align-items:center;min-width:0}.prx-rich-stat-group__item-content{display:grid;gap:4px;min-width:0}.prx-rich-stat-group__icon{color:var(--prx-rich-stat-tone-color);font-size:24px;line-height:1;margin-top:1px}.prx-rich-stat-group__item:not(.prx-rich-stat-group__item--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-stat-group__label,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-stat-group__value{color:var(--md-sys-color-on-surface, #1d1b20);font-size:24px;font-weight:700;line-height:1.2}.prx-rich-tabs{display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-tabs__title,.prx-rich-tabs__tab--active{font-weight:700}.prx-rich-tabs__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px;margin-top:-8px}.prx-rich-tabs__tablist{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--md-sys-color-outline-variant, #cac4d0);padding-bottom:8px}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tablist{border-bottom:0;padding-bottom:0}.prx-rich-tabs__tab{display:inline-flex;align-items:center;gap:8px;min-width:0;padding:8px 12px;border:0;border-radius:999px;background:transparent;color:var(--md-sys-color-on-surface, #1d1b20);cursor:pointer}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab{border-radius:0;border-bottom:2px solid transparent;padding-inline:0;padding-top:0;padding-bottom:8px}.prx-rich-tabs__tab--active{color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab--active{border-bottom-color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tab--active{background:color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 14%,#fff)}.prx-rich-tabs__tab:disabled{cursor:not-allowed;opacity:.55}.prx-rich-tabs__panel{display:block;min-width:0}.prx-rich-key-value-list__item,.prx-rich-record-summary__field{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr);gap:12px;margin:0}.prx-rich-key-value-list[data-layout=stacked] .prx-rich-key-value-list__item{grid-template-columns:minmax(0,1fr);gap:4px}.prx-rich-key-value-list__item dt,.prx-rich-record-summary__field dt{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-key-value-list__item dd,.prx-rich-record-summary__field dd{margin:0;display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-related-record{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 94%,transparent)}.prx-rich-related-record__copy{display:grid;gap:10px;min-width:0}.prx-rich-related-record__relation{color:var(--md-sys-color-primary, #6750a4);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0}.prx-rich-related-record__title-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;min-width:0}.prx-rich-related-record__title-row:not(.prx-rich-related-record__title-row--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-related-record__icon{color:var(--md-sys-color-primary, #6750a4);font-size:24px;line-height:1}.prx-rich-related-record__title{font-size:18px;font-weight:700;line-height:1.25;min-width:0}.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__hint{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px;line-height:1.45}.prx-rich-related-record__fields{display:grid;gap:8px;margin:0;padding:0}.prx-rich-related-record__field{display:grid;grid-template-columns:minmax(0,140px) minmax(0,1fr);gap:8px 12px;align-items:start;min-width:0;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 52%,transparent)}.prx-rich-related-record__field dt{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-related-record__field dd{margin:0;font-weight:600;min-width:0}.prx-rich-related-record__hint{grid-column:2}.prx-rich-related-record__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.prx-rich-disclosure__summary,.prx-rich-accordion__summary{cursor:pointer;display:flex;gap:8px;align-items:center;list-style:none}.prx-rich-disclosure__content,.prx-rich-accordion__content{margin-top:12px}.prx-rich-media-block{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;min-width:0}.prx-rich-media-block__avatar,.prx-rich-media-block__body,.prx-rich-media-block__trailing{min-width:0}.prx-rich-media-block__body{display:flex;flex-direction:column;gap:6px}.prx-rich-media-block__title{font-weight:700}.prx-rich-media-block__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-media-block__meta{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-media-block__trailing{display:flex;align-items:center;justify-content:flex-end}.prx-rich-timeline{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff);--prx-rich-timeline-connector-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-timeline-item-gap: 16px;--prx-rich-timeline-title-color: currentColor;--prx-rich-timeline-title-font-size: inherit;--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: currentColor;--prx-rich-timeline-item-title-font-size: inherit;--prx-rich-timeline-item-title-font-weight: 600;--prx-rich-timeline-item-subtitle-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-subtitle-font-size: 12px;--prx-rich-timeline-item-meta-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-meta-font-size: 12px;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 400;--prx-rich-timeline-item-body-background: transparent;--prx-rich-timeline-item-body-border: 0;--prx-rich-timeline-item-body-border-radius: 6px;--prx-rich-timeline-item-body-padding: 12px;display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-timeline__title{color:var(--prx-rich-timeline-title-color);font-size:var(--prx-rich-timeline-title-font-size);font-weight:var(--prx-rich-timeline-title-font-weight)}.prx-rich-timeline__items{display:flex;flex-direction:column;gap:0;list-style:none;margin:0;padding:0}.prx-rich-timeline__item{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);grid-template-areas:\". marker body\";column-gap:16px;align-items:flex-start;min-height:64px;min-width:0;position:relative}.prx-rich-timeline--vertical .prx-rich-timeline__item{padding-block-end:var(--prx-rich-timeline-item-gap)}.prx-rich-timeline--vertical .prx-rich-timeline__item:last-child{padding-block-end:0}.prx-rich-timeline--marker-color-primary,.prx-rich-timeline__item--marker-color-primary{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff)}.prx-rich-timeline--marker-color-secondary,.prx-rich-timeline__item--marker-color-secondary{--prx-rich-timeline-marker-color: var(--md-sys-color-secondary, #625b71);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-secondary, #fff)}.prx-rich-timeline--marker-color-tertiary,.prx-rich-timeline__item--marker-color-tertiary{--prx-rich-timeline-marker-color: var(--md-sys-color-tertiary, #7d5260);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-tertiary, #fff)}.prx-rich-timeline--marker-color-success,.prx-rich-timeline__item--marker-color-success{--prx-rich-timeline-marker-color: var(--praxis-success, #146c43);--prx-rich-timeline-on-marker-color: var(--praxis-on-success, #fff)}.prx-rich-timeline--marker-color-warning,.prx-rich-timeline__item--marker-color-warning{--prx-rich-timeline-marker-color: var(--praxis-warning, #b26a00);--prx-rich-timeline-on-marker-color: var(--praxis-on-warning, #1d1b20)}.prx-rich-timeline--marker-color-error,.prx-rich-timeline__item--marker-color-error{--prx-rich-timeline-marker-color: var(--md-sys-color-error, #ba1a1a);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-error, #fff)}.prx-rich-timeline--marker-color-info,.prx-rich-timeline__item--marker-color-info{--prx-rich-timeline-marker-color: var(--praxis-info, #0b5cad);--prx-rich-timeline-on-marker-color: var(--praxis-on-info, #fff)}.prx-rich-timeline--marker-color-neutral,.prx-rich-timeline__item--marker-color-neutral{--prx-rich-timeline-marker-color: var(--md-sys-color-outline, #79747e);--prx-rich-timeline-on-marker-color: var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline--connector-color-primary,.prx-rich-timeline__item--connector-color-primary{--prx-rich-timeline-connector-color: var(--md-sys-color-primary, #6750a4)}.prx-rich-timeline--connector-color-secondary,.prx-rich-timeline__item--connector-color-secondary{--prx-rich-timeline-connector-color: var(--md-sys-color-secondary, #625b71)}.prx-rich-timeline--connector-color-tertiary,.prx-rich-timeline__item--connector-color-tertiary{--prx-rich-timeline-connector-color: var(--md-sys-color-tertiary, #7d5260)}.prx-rich-timeline--connector-color-success,.prx-rich-timeline__item--connector-color-success{--prx-rich-timeline-connector-color: var(--praxis-success, #146c43)}.prx-rich-timeline--connector-color-warning,.prx-rich-timeline__item--connector-color-warning{--prx-rich-timeline-connector-color: var(--praxis-warning, #b26a00)}.prx-rich-timeline--connector-color-error,.prx-rich-timeline__item--connector-color-error{--prx-rich-timeline-connector-color: var(--md-sys-color-error, #ba1a1a)}.prx-rich-timeline--connector-color-info,.prx-rich-timeline__item--connector-color-info{--prx-rich-timeline-connector-color: var(--praxis-info, #0b5cad)}.prx-rich-timeline--connector-color-neutral,.prx-rich-timeline__item--connector-color-neutral{--prx-rich-timeline-connector-color: var(--md-sys-color-outline, #79747e)}.prx-rich-timeline__item--has-opposite{grid-template-areas:\"opposite marker body\"}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker opposite\"}.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker .\"}.prx-rich-timeline__item-opposite{grid-area:opposite;color:var(--prx-rich-timeline-opposite-color);font-size:var(--prx-rich-timeline-opposite-font-size);font-weight:var(--prx-rich-timeline-opposite-font-weight);line-height:1.35;min-width:0;overflow-wrap:anywhere;padding-top:1px;text-align:end}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite{text-align:start}.prx-rich-timeline__item-body{background:var(--prx-rich-timeline-item-body-background);border:var(--prx-rich-timeline-item-body-border);border-radius:var(--prx-rich-timeline-item-body-border-radius);padding:var(--prx-rich-timeline-item-body-padding)}.prx-rich-timeline__item-subtitle{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 20px;display:inline-flex;align-items:flex-start;align-self:stretch;grid-area:marker;justify-content:center;justify-self:center;min-height:64px;position:relative;width:32px}.prx-rich-timeline--marker-dot .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 10px}.prx-rich-timeline--marker-icon .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 18px}.prx-rich-timeline__item-marker>*{position:relative;z-index:1}.prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);bottom:0;content:\"\";left:50%;position:absolute;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline__item:last-child .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed}.prx-rich-timeline--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:row;gap:0;overflow-x:auto;padding-bottom:2px;scroll-snap-type:x proximity}.prx-rich-timeline__items:focus-visible{border-radius:4px;outline:2px solid var(--md-sys-color-primary, #6750a4);outline-offset:2px}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{grid-template-columns:minmax(176px,1fr);grid-template-areas:\"opposite\" \"marker\" \"body\";grid-template-rows:auto 32px 1fr;min-height:0;min-width:min(240px,80vw);padding-inline-end:calc(var(--prx-rich-timeline-item-gap) * .75);scroll-snap-align:start}.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite){grid-template-areas:\"marker\" \"body\";grid-template-rows:32px 1fr}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:center;align-self:center;justify-content:flex-start;justify-self:stretch;min-height:32px;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:0;border-top:1px solid var(--prx-rich-timeline-connector-color);bottom:auto;left:var(--prx-rich-timeline-marker-size);right:0;top:50%;transform:translateY(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}.prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:dashed}.prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:solid}.prx-rich-timeline__item--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline__item-icon{align-items:center;border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-marker-color);display:inline-flex;font-size:18px;height:20px;justify-content:center;line-height:18px;width:20px}.prx-rich-timeline__item-dot{width:10px;height:10px;border-radius:50%;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;box-sizing:border-box;display:inline-block}.prx-rich-timeline__item-number{align-items:center;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-on-marker-color);display:inline-flex;font-size:11px;font-weight:700;height:20px;justify-content:center;line-height:20px;min-width:20px;padding:0 5px}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-marker>*,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-marker>*{background:transparent;border-color:var(--prx-rich-timeline-marker-color);color:var(--prx-rich-timeline-marker-color)}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-dot{background:var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-number,.prx-rich-timeline--marker-style-filled .prx-rich-timeline__item-icon,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-icon{background:var(--prx-rich-timeline-marker-color);border-color:transparent;color:var(--prx-rich-timeline-on-marker-color)}.prx-rich-timeline__item-body{display:flex;flex-direction:column;gap:4px;grid-area:body;min-width:0}.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-end;text-align:end}.prx-rich-timeline__item-title{color:var(--prx-rich-timeline-item-title-color);font-size:var(--prx-rich-timeline-item-title-font-size);font-weight:var(--prx-rich-timeline-item-title-font-weight)}.prx-rich-timeline--emphasis-subtle{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-font-weight: 500;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-timeline--density-compact{--prx-rich-timeline-item-gap: 10px;--prx-rich-timeline-item-body-padding: 10px}.prx-rich-timeline--density-spacious{--prx-rich-timeline-item-gap: 24px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--emphasis-strong{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-weight: 700;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-opposite-font-weight: 700}.prx-rich-timeline--emphasis-hero{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-size: 20px;--prx-rich-timeline-title-font-weight: 800;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-size: 17px;--prx-rich-timeline-item-title-font-weight: 800;--prx-rich-timeline-opposite-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 800;--prx-rich-timeline-item-body-background: color-mix( in srgb, var(--md-sys-color-primary, #6750a4) 8%, transparent );--prx-rich-timeline-item-body-border-radius: 8px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--text-prominent{--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 15px;--prx-rich-timeline-item-title-font-weight: 700}.prx-rich-timeline--text-eyebrow{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 800}.prx-rich-timeline--text-eyebrow .prx-rich-timeline__item-opposite{letter-spacing:0;text-transform:uppercase}.prx-rich-timeline--text-label{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 14px;--prx-rich-timeline-item-title-font-weight: 600}.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta,.prx-rich-timeline__empty{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-meta{color:var(--prx-rich-timeline-item-meta-color);font-size:var(--prx-rich-timeline-item-meta-font-size)}.prx-rich-timeline__item-badge{display:inline-flex;align-items:flex-start;margin-top:2px}@media(max-width:640px){.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:column;overflow-x:visible;padding-bottom:0;scroll-snap-type:none}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{min-width:0;padding-inline-end:0;scroll-snap-align:none;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:flex-start;align-self:stretch;justify-content:center;justify-self:center;min-height:64px;width:32px}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);border-top:0;bottom:0;left:50%;right:auto;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after,.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline__item--has-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker opposite\" \"marker body\";grid-template-rows:auto 1fr;column-gap:12px}.prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker body\";grid-template-rows:1fr;column-gap:12px}.prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3292
|
+
`, isInline: true, styles: [".prx-rich-content-root{display:block;min-width:0;max-width:100%}.prx-rich-content-root:not(.prx-rich-content-root--inline){display:grid;gap:var(--prx-rich-content-block-gap, 12px)}.prx-rich-content-root--inline{display:inline-flex;align-items:var(--prx-rich-content-inline-align-items, center);flex-wrap:var(--prx-rich-content-inline-flex-wrap, nowrap);gap:var(--prx-rich-content-inline-gap, 6px);min-width:0;max-width:100%;vertical-align:middle}.prx-rich-node{min-width:0;max-width:100%}.prx-rich-node--inline{display:inline-flex;align-items:center;min-width:0;max-width:100%}.prx-rich-compose{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%}.prx-rich-compose.direction-column{flex-direction:column;align-items:stretch}.prx-rich-compose.wrap{flex-wrap:wrap}.prx-rich-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;background:var(--md-sys-color-primary-container, #e8def8);color:var(--md-sys-color-on-primary-container, #21005d);font-size:12px;line-height:20px}.prx-rich-link{color:var(--md-sys-color-primary, #6750a4);text-decoration:underline;text-underline-offset:2px}.prx-rich-text,.prx-rich-link,.prx-rich-badge,.prx-rich-card-title,.prx-rich-card-subtitle,.prx-rich-card-body,.prx-rich-card-footer,.prx-rich-cta-group__title,.prx-rich-cta-group__subtitle,.prx-rich-cta-group__message,.prx-rich-key-value-list__title,.prx-rich-key-value-list__label,.prx-rich-key-value-list__value,.prx-rich-stat-group__title,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__label,.prx-rich-stat-group__value,.prx-rich-stat-group__caption,.prx-rich-tabs__title,.prx-rich-tabs__subtitle,.prx-rich-record-summary__title,.prx-rich-record-summary__subtitle,.prx-rich-record-summary__meta,.prx-rich-record-summary__field-label,.prx-rich-record-summary__field-value,.prx-rich-lookup-result__title,.prx-rich-lookup-result__subtitle,.prx-rich-lookup-result__meta,.prx-rich-lookup-result__message,.prx-rich-lookup-card__title,.prx-rich-lookup-card__subtitle,.prx-rich-lookup-card__meta,.prx-rich-lookup-card__message,.prx-rich-related-record__title,.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__relation,.prx-rich-timeline__title,.prx-rich-timeline__subtitle,.prx-rich-timeline__item-title,.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta{min-width:0;max-width:100%;overflow-wrap:anywhere}.prx-rich-text,.prx-rich-link{display:inline-block}.prx-rich-node[data-rich-node-type=avatar]{display:inline-flex;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-surface-container-high, #ece6f0);color:var(--md-sys-color-on-surface, #1d1b20)}.prx-rich-avatar{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:inherit;background:inherit;color:inherit;overflow:hidden}.prx-rich-avatar-image{width:100%;height:100%;object-fit:cover}.prx-rich-avatar-fallback{font-weight:600}.prx-rich-card{--prx-rich-card-tone-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-card-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-card-tone-on-bg: var(--md-sys-color-on-surface, #1d1b20);display:flex;flex-direction:column;position:relative;gap:12px;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;background:var(--prx-rich-card-tone-bg);color:var(--prx-rich-card-tone-on-bg);overflow:hidden;min-width:0;max-width:100%}.prx-rich-card[data-size=sm],.prx-rich-card[data-density=compact]{gap:8px;padding:12px;border-radius:12px}.prx-rich-content-root.prx-rich-content-root--widget-card{--prx-rich-content-block-gap: 8px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card{gap:8px;padding:12px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 82%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=elevated],.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=filled]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 88%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-heading,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-body,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-actions,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-footer{gap:6px}.prx-rich-card[data-size=lg]{gap:16px;padding:20px}.prx-rich-card[data-orientation=horizontal]{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(120px,.38fr) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-avatar{grid-template-columns:minmax(72px,148px) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(0,1fr) minmax(120px,.38fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-avatar{grid-template-columns:minmax(0,1fr) minmax(72px,148px)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>:not(.prx-rich-card-media){grid-column:2}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>.prx-rich-card-media[data-placement=leading]{grid-column:1;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>.prx-rich-card-media[data-placement=trailing]{grid-column:2;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-top>.prx-rich-card-media[data-placement=top],.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-background>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-variant=plain]{border-color:transparent;background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 64%,transparent)}.prx-rich-card[data-variant=elevated]{border-color:transparent;box-shadow:0 4px 18px color-mix(in srgb,var(--md-sys-color-shadow, #000) 16%,transparent)}.prx-rich-card[data-variant=filled]{background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,var(--md-sys-color-surface-container, #f3edf7))}.prx-rich-card[data-variant=transparent]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 64%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,transparent)}.prx-rich-card[data-tone=info]{--prx-rich-card-tone-color: var(--praxis-info, #0b5cad);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 42%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=success]{--prx-rich-card-tone-color: var(--praxis-success, #2e7d32);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 48%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=warning]{--prx-rich-card-tone-color: var(--praxis-warning, #ed6c02);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-card-tone-color) 14%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 56%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=danger]{--prx-rich-card-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-card-tone-color) 16%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 62%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card--interactive{cursor:pointer}.prx-rich-card--interactive:focus-visible{outline:3px solid color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 72%,transparent);outline-offset:2px}.prx-rich-card--selected,.prx-rich-card--active{border-color:var(--md-sys-color-primary, #6750a4);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary, #6750a4)}.prx-rich-card--disabled:not(.prx-rich-card--loading){opacity:.62;cursor:default}.prx-rich-card--loading{cursor:progress}.prx-rich-card-media{display:flex;align-items:center;justify-content:center;min-width:0;border-radius:12px;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 18%,var(--md-sys-color-surface-container-high, #ece6f0));overflow:hidden;aspect-ratio:16 / 9}.prx-rich-card-media[data-kind=icon],.prx-rich-card-media[data-kind=avatar]{aspect-ratio:auto;min-height:64px;padding:12px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar]{min-height:48px;padding:8px}.prx-rich-card-media[data-placement=leading],.prx-rich-card-media[data-placement=trailing]{aspect-ratio:auto;min-height:100%}.prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card-media[data-kind=avatar][data-placement=trailing]{align-self:start;min-height:64px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=trailing]{min-height:48px}.prx-rich-card-media--background{position:absolute;inset:0;z-index:0;border-radius:inherit;opacity:.18}.prx-rich-card-media--background~*{position:relative;z-index:1}.prx-rich-card-media__asset{width:100%;height:100%;object-fit:cover}.prx-rich-card-media__icon{font-size:40px;color:var(--prx-rich-card-tone-color)}.prx-rich-card-media__avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 22%,var(--md-sys-color-primary-container, #e8def8));color:var(--prx-rich-card-tone-on-bg);font-weight:700}.prx-rich-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.prx-rich-card-header__content{min-width:0}.prx-rich-card-header__action{flex:0 0 auto}.prx-rich-card-heading{display:grid;gap:4px;min-width:0}.prx-rich-card-title{font-weight:600}.prx-rich-card-subtitle,.prx-rich-metric-caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-metric{display:grid;gap:4px;min-width:0}.prx-rich-metric--with-icon{grid-template-columns:auto minmax(0,1fr);column-gap:8px;align-items:start}.prx-rich-metric-icon{color:var(--md-sys-color-primary, #6750a4);font-size:20px;line-height:1.2;margin-top:2px}.prx-rich-metric-content{display:grid;gap:4px;min-width:0}.prx-rich-metric-value{font-size:20px;font-weight:700}.prx-rich-progress{display:flex;flex-direction:column;gap:4px}.prx-rich-progress-header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.prx-rich-progress-label,.prx-rich-progress-percent{min-width:0;color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px;font-weight:600}.prx-rich-progress-percent{flex:0 0 auto;color:var(--md-sys-color-on-surface, #1d1b20)}.prx-rich-progress-bar{width:100%}.prx-rich-action-button,.prx-rich-card-actions,.prx-rich-callout__actions,.prx-rich-empty-state__actions,.prx-rich-record-summary__actions,.prx-rich-disclosure__actions,.prx-rich-accordion__actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-action-button{appearance:none;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:999px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-on-surface, #1d1b20);padding:8px 12px;cursor:pointer}.prx-rich-action-button:disabled{opacity:.56;cursor:default}.prx-rich-action-button--raised,.prx-rich-action-button--primary{background:var(--md-sys-color-primary, #6750a4);color:var(--md-sys-color-on-primary, #fff)}.prx-rich-callout,.prx-rich-empty-state,.prx-rich-record-summary,.prx-rich-decision-package,.prx-rich-disclosure,.prx-rich-accordion{border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;padding:16px;background:var(--md-sys-color-surface, #fff)}.prx-rich-callout[data-tone=warning]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#ffb300 12%)}.prx-rich-callout[data-tone=danger]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#d32f2f 12%)}.prx-rich-callout__title,.prx-rich-empty-state__title,.prx-rich-record-summary__title,.prx-rich-decision-package__title,.prx-rich-stat-group__title,.prx-rich-accordion__title,.prx-rich-key-value-list__title{font-weight:700;margin-bottom:4px}.prx-rich-decision-package{--prx-rich-decision-package-accent: var(--md-sys-color-primary, #6750a4);display:grid;grid-template-columns:minmax(0,1fr) minmax(136px,auto);gap:16px;border-color:color-mix(in srgb,var(--prx-rich-decision-package-accent) 42%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,var(--prx-rich-decision-package-accent) 12%)}.prx-rich-decision-package[data-status=approved],.prx-rich-decision-package[data-status=published]{--prx-rich-decision-package-accent: var(--praxis-success, #2e7d32)}.prx-rich-decision-package[data-status=draft],.prx-rich-decision-package[data-status=simulated],.prx-rich-decision-package[data-risk=medium],.prx-rich-decision-package[data-risk=high]{--prx-rich-decision-package-accent: var(--praxis-warning, #ed6c02)}.prx-rich-decision-package[data-status=reverted],.prx-rich-decision-package[data-risk=critical]{--prx-rich-decision-package-accent: var(--md-sys-color-error, #d32f2f)}.prx-rich-decision-package__main{display:grid;gap:8px;min-width:0}.prx-rich-decision-package__eyebrow,.prx-rich-decision-package__evidence,.prx-rich-decision-package__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.prx-rich-decision-package__title{font-size:20px;line-height:1.15}.prx-rich-decision-package__subtitle,.prx-rich-decision-package__summary,.prx-rich-decision-package__meta,.prx-rich-decision-package__property dt,.prx-rich-decision-package__evidence-item small{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-decision-package__properties{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:0}.prx-rich-decision-package__property{min-width:0}.prx-rich-decision-package__property dt,.prx-rich-decision-package__property dd{margin:0;overflow-wrap:anywhere}.prx-rich-decision-package__property dd{font-weight:700}.prx-rich-decision-package__evidence-item{display:inline-flex;flex-direction:column;gap:1px;border:1px solid color-mix(in srgb,var(--prx-rich-decision-package-accent) 24%,var(--md-sys-color-outline-variant, #cac4d0));border-radius:12px;padding:6px 8px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 76%,transparent);font-size:12px}.prx-rich-decision-package__aside{display:grid;align-content:start;justify-items:end;gap:10px;min-width:0}.prx-rich-decision-package__confidence{display:grid;justify-items:center;min-width:96px;border-radius:16px;padding:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 72%,transparent)}.prx-rich-decision-package__confidence span{font-size:28px;font-weight:800;line-height:1}.prx-rich-decision-package__confidence small{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:11px;font-weight:700;text-transform:uppercase}@media(max-width:640px){.prx-rich-decision-package{grid-template-columns:minmax(0,1fr)}.prx-rich-decision-package__aside{justify-items:start}}.prx-rich-empty-state{align-items:center;text-align:center}.prx-rich-key-value-list__items,.prx-rich-stat-group__items,.prx-rich-record-summary__fields{display:grid;gap:8px;margin:0}.prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr))}.prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr))}.prx-rich-stat-group__item{--prx-rich-stat-tone-color: var(--md-sys-color-outline, #79747e);--prx-rich-stat-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-stat-tone-border: var(--md-sys-color-outline-variant, #cac4d0);display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:start;min-width:0;padding:12px;border:1px solid var(--prx-rich-stat-tone-border);border-radius:12px;background:var(--prx-rich-stat-tone-bg)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__items{gap:6px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(148px,100%),1fr))}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__item{column-gap:8px;padding:8px 10px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-stat-tone-bg) 78%,transparent)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__icon,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__value{font-size:20px}.prx-rich-stat-group__item[data-tone=info]{--prx-rich-stat-tone-color: var(--praxis-info, #0b5cad);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 34%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=success]{--prx-rich-stat-tone-color: var(--praxis-success, #2e7d32);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 38%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=warning]{--prx-rich-stat-tone-color: var(--praxis-warning, #b26a00);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-stat-tone-color) 14%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 46%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=danger]{--prx-rich-stat-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-stat-tone-color) 16%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 54%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item-header{display:flex;gap:8px;align-items:center;min-width:0}.prx-rich-stat-group__item-content{display:grid;gap:4px;min-width:0}.prx-rich-stat-group__icon{color:var(--prx-rich-stat-tone-color);font-size:24px;line-height:1;margin-top:1px}.prx-rich-stat-group__item:not(.prx-rich-stat-group__item--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-stat-group__label,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-stat-group__value{color:var(--md-sys-color-on-surface, #1d1b20);font-size:24px;font-weight:700;line-height:1.2}.prx-rich-tabs{display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-tabs__title,.prx-rich-tabs__tab--active{font-weight:700}.prx-rich-tabs__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px;margin-top:-8px}.prx-rich-tabs__tablist{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--md-sys-color-outline-variant, #cac4d0);padding-bottom:8px}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tablist{border-bottom:0;padding-bottom:0}.prx-rich-tabs__tab{display:inline-flex;align-items:center;gap:8px;min-width:0;padding:8px 12px;border:0;border-radius:999px;background:transparent;color:var(--md-sys-color-on-surface, #1d1b20);cursor:pointer}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab{border-radius:0;border-bottom:2px solid transparent;padding-inline:0;padding-top:0;padding-bottom:8px}.prx-rich-tabs__tab--active{color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab--active{border-bottom-color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tab--active{background:color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 14%,#fff)}.prx-rich-tabs__tab:disabled{cursor:not-allowed;opacity:.55}.prx-rich-tabs__panel{display:block;min-width:0}.prx-rich-key-value-list__item,.prx-rich-record-summary__field{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr);gap:12px;margin:0}.prx-rich-key-value-list[data-layout=stacked] .prx-rich-key-value-list__item{grid-template-columns:minmax(0,1fr);gap:4px}.prx-rich-key-value-list__item dt,.prx-rich-record-summary__field dt{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-key-value-list__item dd,.prx-rich-record-summary__field dd{margin:0;display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-related-record{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 94%,transparent)}.prx-rich-related-record__copy{display:grid;gap:10px;min-width:0}.prx-rich-related-record__relation{color:var(--md-sys-color-primary, #6750a4);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0}.prx-rich-related-record__title-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;min-width:0}.prx-rich-related-record__title-row:not(.prx-rich-related-record__title-row--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-related-record__icon{color:var(--md-sys-color-primary, #6750a4);font-size:24px;line-height:1}.prx-rich-related-record__title{font-size:18px;font-weight:700;line-height:1.25;min-width:0}.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__hint{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px;line-height:1.45}.prx-rich-related-record__fields{display:grid;gap:8px;margin:0;padding:0}.prx-rich-related-record__field{display:grid;grid-template-columns:minmax(0,140px) minmax(0,1fr);gap:8px 12px;align-items:start;min-width:0;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 52%,transparent)}.prx-rich-related-record__field dt{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-related-record__field dd{margin:0;font-weight:600;min-width:0}.prx-rich-related-record__hint{grid-column:2}.prx-rich-related-record__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.prx-rich-disclosure__summary,.prx-rich-accordion__summary{cursor:pointer;display:flex;gap:8px;align-items:center;list-style:none}.prx-rich-disclosure__content,.prx-rich-accordion__content{margin-top:12px}.prx-rich-media-block{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;min-width:0}.prx-rich-media-block__avatar,.prx-rich-media-block__body,.prx-rich-media-block__trailing{min-width:0}.prx-rich-media-block__body{display:flex;flex-direction:column;gap:6px}.prx-rich-media-block__title{font-weight:700}.prx-rich-media-block__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-media-block__meta{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-media-block__trailing{display:flex;align-items:center;justify-content:flex-end}.prx-rich-timeline{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff);--prx-rich-timeline-connector-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-timeline-item-gap: 16px;--prx-rich-timeline-title-color: currentColor;--prx-rich-timeline-title-font-size: inherit;--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: currentColor;--prx-rich-timeline-item-title-font-size: inherit;--prx-rich-timeline-item-title-font-weight: 600;--prx-rich-timeline-item-subtitle-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-subtitle-font-size: 12px;--prx-rich-timeline-item-meta-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-meta-font-size: 12px;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 400;--prx-rich-timeline-item-body-background: transparent;--prx-rich-timeline-item-body-border: 0;--prx-rich-timeline-item-body-border-radius: 6px;--prx-rich-timeline-item-body-padding: 12px;display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-timeline__title{color:var(--prx-rich-timeline-title-color);font-size:var(--prx-rich-timeline-title-font-size);font-weight:var(--prx-rich-timeline-title-font-weight)}.prx-rich-timeline__items{display:flex;flex-direction:column;gap:0;list-style:none;margin:0;padding:0}.prx-rich-timeline__item{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);grid-template-areas:\". marker body\";column-gap:16px;align-items:flex-start;min-height:64px;min-width:0;position:relative}.prx-rich-timeline--vertical .prx-rich-timeline__item{padding-block-end:var(--prx-rich-timeline-item-gap)}.prx-rich-timeline--vertical .prx-rich-timeline__item:last-child{padding-block-end:0}.prx-rich-timeline--marker-color-primary,.prx-rich-timeline__item--marker-color-primary{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff)}.prx-rich-timeline--marker-color-secondary,.prx-rich-timeline__item--marker-color-secondary{--prx-rich-timeline-marker-color: var(--md-sys-color-secondary, #625b71);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-secondary, #fff)}.prx-rich-timeline--marker-color-tertiary,.prx-rich-timeline__item--marker-color-tertiary{--prx-rich-timeline-marker-color: var(--md-sys-color-tertiary, #7d5260);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-tertiary, #fff)}.prx-rich-timeline--marker-color-success,.prx-rich-timeline__item--marker-color-success{--prx-rich-timeline-marker-color: var(--praxis-success, #146c43);--prx-rich-timeline-on-marker-color: var(--praxis-on-success, #fff)}.prx-rich-timeline--marker-color-warning,.prx-rich-timeline__item--marker-color-warning{--prx-rich-timeline-marker-color: var(--praxis-warning, #b26a00);--prx-rich-timeline-on-marker-color: var(--praxis-on-warning, #1d1b20)}.prx-rich-timeline--marker-color-error,.prx-rich-timeline__item--marker-color-error{--prx-rich-timeline-marker-color: var(--md-sys-color-error, #ba1a1a);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-error, #fff)}.prx-rich-timeline--marker-color-info,.prx-rich-timeline__item--marker-color-info{--prx-rich-timeline-marker-color: var(--praxis-info, #0b5cad);--prx-rich-timeline-on-marker-color: var(--praxis-on-info, #fff)}.prx-rich-timeline--marker-color-neutral,.prx-rich-timeline__item--marker-color-neutral{--prx-rich-timeline-marker-color: var(--md-sys-color-outline, #79747e);--prx-rich-timeline-on-marker-color: var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline--connector-color-primary,.prx-rich-timeline__item--connector-color-primary{--prx-rich-timeline-connector-color: var(--md-sys-color-primary, #6750a4)}.prx-rich-timeline--connector-color-secondary,.prx-rich-timeline__item--connector-color-secondary{--prx-rich-timeline-connector-color: var(--md-sys-color-secondary, #625b71)}.prx-rich-timeline--connector-color-tertiary,.prx-rich-timeline__item--connector-color-tertiary{--prx-rich-timeline-connector-color: var(--md-sys-color-tertiary, #7d5260)}.prx-rich-timeline--connector-color-success,.prx-rich-timeline__item--connector-color-success{--prx-rich-timeline-connector-color: var(--praxis-success, #146c43)}.prx-rich-timeline--connector-color-warning,.prx-rich-timeline__item--connector-color-warning{--prx-rich-timeline-connector-color: var(--praxis-warning, #b26a00)}.prx-rich-timeline--connector-color-error,.prx-rich-timeline__item--connector-color-error{--prx-rich-timeline-connector-color: var(--md-sys-color-error, #ba1a1a)}.prx-rich-timeline--connector-color-info,.prx-rich-timeline__item--connector-color-info{--prx-rich-timeline-connector-color: var(--praxis-info, #0b5cad)}.prx-rich-timeline--connector-color-neutral,.prx-rich-timeline__item--connector-color-neutral{--prx-rich-timeline-connector-color: var(--md-sys-color-outline, #79747e)}.prx-rich-timeline__item--has-opposite{grid-template-areas:\"opposite marker body\"}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker opposite\"}.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker .\"}.prx-rich-timeline__item-opposite{grid-area:opposite;color:var(--prx-rich-timeline-opposite-color);font-size:var(--prx-rich-timeline-opposite-font-size);font-weight:var(--prx-rich-timeline-opposite-font-weight);line-height:1.35;min-width:0;overflow-wrap:anywhere;padding-top:1px;text-align:end}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite{text-align:start}.prx-rich-timeline__item-body{background:var(--prx-rich-timeline-item-body-background);border:var(--prx-rich-timeline-item-body-border);border-radius:var(--prx-rich-timeline-item-body-border-radius);padding:var(--prx-rich-timeline-item-body-padding)}.prx-rich-timeline__item-subtitle{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 22px;display:inline-flex;align-items:flex-start;align-self:stretch;grid-area:marker;justify-content:center;justify-self:center;min-height:64px;position:relative;width:max(32px,var(--prx-rich-timeline-marker-size))}.prx-rich-timeline--marker-dot .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 10px}.prx-rich-timeline--marker-icon .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 24px}.prx-rich-timeline__item-marker>*{position:relative;z-index:1}.prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);bottom:0;content:\"\";left:50%;position:absolute;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline__item:last-child .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed}.prx-rich-timeline--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:row;gap:0;overflow-x:auto;padding-bottom:2px;scroll-snap-type:x proximity}.prx-rich-timeline__items:focus-visible{border-radius:4px;outline:2px solid var(--md-sys-color-primary, #6750a4);outline-offset:2px}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{grid-template-columns:minmax(176px,1fr);grid-template-areas:\"opposite\" \"marker\" \"body\";grid-template-rows:auto 32px 1fr;min-height:0;min-width:min(240px,80vw);padding-inline-end:calc(var(--prx-rich-timeline-item-gap) * .75);scroll-snap-align:start}.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite){grid-template-areas:\"marker\" \"body\";grid-template-rows:32px 1fr}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:center;align-self:center;justify-content:flex-start;justify-self:stretch;min-height:32px;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:0;border-top:1px solid var(--prx-rich-timeline-connector-color);bottom:auto;left:var(--prx-rich-timeline-marker-size);right:0;top:50%;transform:translateY(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}.prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:dashed}.prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:solid}.prx-rich-timeline__item--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline__item-icon{align-items:center;border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-marker-color);display:inline-flex;font-size:calc(var(--prx-rich-timeline-marker-size) - 8px);height:var(--prx-rich-timeline-marker-size);justify-content:center;line-height:1;width:var(--prx-rich-timeline-marker-size)}.prx-rich-timeline__item-dot{width:10px;height:10px;border-radius:50%;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;box-sizing:border-box;display:inline-block}.prx-rich-timeline__item-number{align-items:center;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-on-marker-color);display:inline-flex;font-size:11px;font-weight:700;height:var(--prx-rich-timeline-marker-size);justify-content:center;line-height:1;min-width:var(--prx-rich-timeline-marker-size);padding:0 5px}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-marker>*,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-marker>*{background:transparent;border-color:var(--prx-rich-timeline-marker-color);color:var(--prx-rich-timeline-marker-color)}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-dot{background:var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-number,.prx-rich-timeline--marker-style-filled .prx-rich-timeline__item-icon,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-icon{background:var(--prx-rich-timeline-marker-color);border-color:transparent;color:var(--prx-rich-timeline-on-marker-color)}.prx-rich-timeline__item-body{display:flex;flex-direction:column;gap:4px;grid-area:body;min-width:0}.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-end;text-align:end}.prx-rich-timeline__item-title{color:var(--prx-rich-timeline-item-title-color);font-size:var(--prx-rich-timeline-item-title-font-size);font-weight:var(--prx-rich-timeline-item-title-font-weight)}.prx-rich-timeline--emphasis-subtle{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-font-weight: 500;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-timeline--density-compact{--prx-rich-timeline-item-gap: 10px;--prx-rich-timeline-item-body-padding: 10px}.prx-rich-timeline--density-spacious{--prx-rich-timeline-item-gap: 24px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--emphasis-strong{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-weight: 700;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-opposite-font-weight: 700}.prx-rich-timeline--emphasis-hero{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-size: 20px;--prx-rich-timeline-title-font-weight: 800;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-size: 17px;--prx-rich-timeline-item-title-font-weight: 800;--prx-rich-timeline-opposite-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 800;--prx-rich-timeline-item-body-background: color-mix( in srgb, var(--md-sys-color-primary, #6750a4) 8%, transparent );--prx-rich-timeline-item-body-border-radius: 8px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--text-prominent{--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 15px;--prx-rich-timeline-item-title-font-weight: 700}.prx-rich-timeline--text-eyebrow{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 800}.prx-rich-timeline--text-eyebrow .prx-rich-timeline__item-opposite{letter-spacing:0;text-transform:uppercase}.prx-rich-timeline--text-label{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 14px;--prx-rich-timeline-item-title-font-weight: 600}.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta,.prx-rich-timeline__empty{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-meta{color:var(--prx-rich-timeline-item-meta-color);font-size:var(--prx-rich-timeline-item-meta-font-size)}.prx-rich-timeline__item-badge{display:inline-flex;align-items:flex-start;margin-top:2px}@media(max-width:640px){.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:column;overflow-x:visible;padding-bottom:0;scroll-snap-type:none}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{min-width:0;padding-inline-end:0;scroll-snap-align:none;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:flex-start;align-self:stretch;justify-content:center;justify-self:center;min-height:64px;width:32px}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);border-top:0;bottom:0;left:50%;right:auto;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after,.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline__item--has-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker opposite\" \"marker body\";grid-template-rows:auto 1fr;column-gap:12px}.prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker body\";grid-template-rows:1fr;column-gap:12px}.prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3049
3293
|
}
|
|
3050
3294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisRichContent, decorators: [{
|
|
3051
3295
|
type: Component,
|
|
@@ -3116,18 +3360,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
3116
3360
|
</div>
|
|
3117
3361
|
}
|
|
3118
3362
|
@case ('metric') {
|
|
3119
|
-
<div class="prx-rich-metric">
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3363
|
+
<div class="prx-rich-metric" [class.prx-rich-metric--with-icon]="node.icon">
|
|
3364
|
+
@if (node.icon) {
|
|
3365
|
+
<span class="material-symbols-outlined prx-rich-metric-icon" aria-hidden="true">
|
|
3366
|
+
{{ node.icon }}
|
|
3367
|
+
</span>
|
|
3124
3368
|
}
|
|
3369
|
+
<div class="prx-rich-metric-content">
|
|
3370
|
+
<div class="prx-rich-metric-label">{{ node.label }}</div>
|
|
3371
|
+
<div class="prx-rich-metric-value">{{ resolveMetricValue(node) }}</div>
|
|
3372
|
+
@if (resolveMetricCaption(node); as caption) {
|
|
3373
|
+
<div class="prx-rich-metric-caption">{{ caption }}</div>
|
|
3374
|
+
}
|
|
3375
|
+
</div>
|
|
3125
3376
|
</div>
|
|
3126
3377
|
}
|
|
3127
3378
|
@case ('progress') {
|
|
3128
3379
|
<div class="prx-rich-progress">
|
|
3129
|
-
@if (resolveProgressLabel(node)
|
|
3130
|
-
<div class="prx-rich-progress-
|
|
3380
|
+
@if (resolveProgressLabel(node) || node.showPercent) {
|
|
3381
|
+
<div class="prx-rich-progress-header">
|
|
3382
|
+
@if (resolveProgressLabel(node); as progressLabel) {
|
|
3383
|
+
<div class="prx-rich-progress-label">{{ progressLabel }}</div>
|
|
3384
|
+
}
|
|
3385
|
+
@if (node.showPercent) {
|
|
3386
|
+
<div class="prx-rich-progress-percent">{{ resolveProgressPercent(node) }}</div>
|
|
3387
|
+
}
|
|
3388
|
+
</div>
|
|
3131
3389
|
}
|
|
3132
3390
|
<progress
|
|
3133
3391
|
class="prx-rich-progress-bar"
|
|
@@ -4197,7 +4455,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4197
4455
|
</span>
|
|
4198
4456
|
}
|
|
4199
4457
|
</ng-template>
|
|
4200
|
-
`, styles: [".prx-rich-content-root{display:block;min-width:0;max-width:100%}.prx-rich-content-root:not(.prx-rich-content-root--inline){display:grid;gap:var(--prx-rich-content-block-gap, 12px)}.prx-rich-content-root--inline{display:inline-flex;align-items:var(--prx-rich-content-inline-align-items, center);flex-wrap:var(--prx-rich-content-inline-flex-wrap, nowrap);gap:var(--prx-rich-content-inline-gap, 6px);min-width:0;max-width:100%;vertical-align:middle}.prx-rich-node{min-width:0;max-width:100%}.prx-rich-node--inline{display:inline-flex;align-items:center;min-width:0;max-width:100%}.prx-rich-compose{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%}.prx-rich-compose.direction-column{flex-direction:column;align-items:stretch}.prx-rich-compose.wrap{flex-wrap:wrap}.prx-rich-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;background:var(--md-sys-color-primary-container, #e8def8);color:var(--md-sys-color-on-primary-container, #21005d);font-size:12px;line-height:20px}.prx-rich-link{color:var(--md-sys-color-primary, #6750a4);text-decoration:underline;text-underline-offset:2px}.prx-rich-text,.prx-rich-link,.prx-rich-badge,.prx-rich-card-title,.prx-rich-card-subtitle,.prx-rich-card-body,.prx-rich-card-footer,.prx-rich-cta-group__title,.prx-rich-cta-group__subtitle,.prx-rich-cta-group__message,.prx-rich-key-value-list__title,.prx-rich-key-value-list__label,.prx-rich-key-value-list__value,.prx-rich-stat-group__title,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__label,.prx-rich-stat-group__value,.prx-rich-stat-group__caption,.prx-rich-tabs__title,.prx-rich-tabs__subtitle,.prx-rich-record-summary__title,.prx-rich-record-summary__subtitle,.prx-rich-record-summary__meta,.prx-rich-record-summary__field-label,.prx-rich-record-summary__field-value,.prx-rich-lookup-result__title,.prx-rich-lookup-result__subtitle,.prx-rich-lookup-result__meta,.prx-rich-lookup-result__message,.prx-rich-lookup-card__title,.prx-rich-lookup-card__subtitle,.prx-rich-lookup-card__meta,.prx-rich-lookup-card__message,.prx-rich-related-record__title,.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__relation,.prx-rich-timeline__title,.prx-rich-timeline__subtitle,.prx-rich-timeline__item-title,.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta{min-width:0;max-width:100%;overflow-wrap:anywhere}.prx-rich-text,.prx-rich-link{display:inline-block}.prx-rich-node[data-rich-node-type=avatar]{display:inline-flex;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-surface-container-high, #ece6f0);color:var(--md-sys-color-on-surface, #1d1b20)}.prx-rich-avatar{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:inherit;background:inherit;color:inherit;overflow:hidden}.prx-rich-avatar-image{width:100%;height:100%;object-fit:cover}.prx-rich-avatar-fallback{font-weight:600}.prx-rich-card{--prx-rich-card-tone-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-card-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-card-tone-on-bg: var(--md-sys-color-on-surface, #1d1b20);display:flex;flex-direction:column;position:relative;gap:12px;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;background:var(--prx-rich-card-tone-bg);color:var(--prx-rich-card-tone-on-bg);overflow:hidden;min-width:0;max-width:100%}.prx-rich-card[data-size=sm],.prx-rich-card[data-density=compact]{gap:8px;padding:12px;border-radius:12px}.prx-rich-content-root.prx-rich-content-root--widget-card{--prx-rich-content-block-gap: 8px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card{gap:8px;padding:12px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 82%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=elevated],.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=filled]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 88%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-heading,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-body,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-actions,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-footer{gap:6px}.prx-rich-card[data-size=lg]{gap:16px;padding:20px}.prx-rich-card[data-orientation=horizontal]{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(120px,.38fr) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-avatar{grid-template-columns:minmax(72px,148px) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(0,1fr) minmax(120px,.38fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-avatar{grid-template-columns:minmax(0,1fr) minmax(72px,148px)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>:not(.prx-rich-card-media){grid-column:2}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>.prx-rich-card-media[data-placement=leading]{grid-column:1;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>.prx-rich-card-media[data-placement=trailing]{grid-column:2;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-top>.prx-rich-card-media[data-placement=top],.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-background>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-variant=plain]{border-color:transparent;background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 64%,transparent)}.prx-rich-card[data-variant=elevated]{border-color:transparent;box-shadow:0 4px 18px color-mix(in srgb,var(--md-sys-color-shadow, #000) 16%,transparent)}.prx-rich-card[data-variant=filled]{background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,var(--md-sys-color-surface-container, #f3edf7))}.prx-rich-card[data-variant=transparent]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 64%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,transparent)}.prx-rich-card[data-tone=info]{--prx-rich-card-tone-color: var(--praxis-info, #0b5cad);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 42%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=success]{--prx-rich-card-tone-color: var(--praxis-success, #2e7d32);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 48%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=warning]{--prx-rich-card-tone-color: var(--praxis-warning, #ed6c02);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-card-tone-color) 14%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 56%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=danger]{--prx-rich-card-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-card-tone-color) 16%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 62%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card--interactive{cursor:pointer}.prx-rich-card--interactive:focus-visible{outline:3px solid color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 72%,transparent);outline-offset:2px}.prx-rich-card--selected,.prx-rich-card--active{border-color:var(--md-sys-color-primary, #6750a4);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary, #6750a4)}.prx-rich-card--disabled:not(.prx-rich-card--loading){opacity:.62;cursor:default}.prx-rich-card--loading{cursor:progress}.prx-rich-card-media{display:flex;align-items:center;justify-content:center;min-width:0;border-radius:12px;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 18%,var(--md-sys-color-surface-container-high, #ece6f0));overflow:hidden;aspect-ratio:16 / 9}.prx-rich-card-media[data-kind=icon],.prx-rich-card-media[data-kind=avatar]{aspect-ratio:auto;min-height:64px;padding:12px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar]{min-height:48px;padding:8px}.prx-rich-card-media[data-placement=leading],.prx-rich-card-media[data-placement=trailing]{aspect-ratio:auto;min-height:100%}.prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card-media[data-kind=avatar][data-placement=trailing]{align-self:start;min-height:64px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=trailing]{min-height:48px}.prx-rich-card-media--background{position:absolute;inset:0;z-index:0;border-radius:inherit;opacity:.18}.prx-rich-card-media--background~*{position:relative;z-index:1}.prx-rich-card-media__asset{width:100%;height:100%;object-fit:cover}.prx-rich-card-media__icon{font-size:40px;color:var(--prx-rich-card-tone-color)}.prx-rich-card-media__avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 22%,var(--md-sys-color-primary-container, #e8def8));color:var(--prx-rich-card-tone-on-bg);font-weight:700}.prx-rich-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.prx-rich-card-header__content{min-width:0}.prx-rich-card-header__action{flex:0 0 auto}.prx-rich-card-heading{display:grid;gap:4px;min-width:0}.prx-rich-card-title{font-weight:600}.prx-rich-card-subtitle,.prx-rich-metric-caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-metric{display:flex;flex-direction:column;gap:4px}.prx-rich-metric-value{font-size:20px;font-weight:700}.prx-rich-progress{display:flex;flex-direction:column;gap:4px}.prx-rich-progress-bar{width:100%}.prx-rich-action-button,.prx-rich-card-actions,.prx-rich-callout__actions,.prx-rich-empty-state__actions,.prx-rich-record-summary__actions,.prx-rich-disclosure__actions,.prx-rich-accordion__actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-action-button{appearance:none;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:999px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-on-surface, #1d1b20);padding:8px 12px;cursor:pointer}.prx-rich-action-button:disabled{opacity:.56;cursor:default}.prx-rich-action-button--raised,.prx-rich-action-button--primary{background:var(--md-sys-color-primary, #6750a4);color:var(--md-sys-color-on-primary, #fff)}.prx-rich-callout,.prx-rich-empty-state,.prx-rich-record-summary,.prx-rich-decision-package,.prx-rich-disclosure,.prx-rich-accordion{border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;padding:16px;background:var(--md-sys-color-surface, #fff)}.prx-rich-callout[data-tone=warning]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#ffb300 12%)}.prx-rich-callout[data-tone=danger]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#d32f2f 12%)}.prx-rich-callout__title,.prx-rich-empty-state__title,.prx-rich-record-summary__title,.prx-rich-decision-package__title,.prx-rich-stat-group__title,.prx-rich-accordion__title,.prx-rich-key-value-list__title{font-weight:700;margin-bottom:4px}.prx-rich-decision-package{--prx-rich-decision-package-accent: var(--md-sys-color-primary, #6750a4);display:grid;grid-template-columns:minmax(0,1fr) minmax(136px,auto);gap:16px;border-color:color-mix(in srgb,var(--prx-rich-decision-package-accent) 42%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,var(--prx-rich-decision-package-accent) 12%)}.prx-rich-decision-package[data-status=approved],.prx-rich-decision-package[data-status=published]{--prx-rich-decision-package-accent: var(--praxis-success, #2e7d32)}.prx-rich-decision-package[data-status=draft],.prx-rich-decision-package[data-status=simulated],.prx-rich-decision-package[data-risk=medium],.prx-rich-decision-package[data-risk=high]{--prx-rich-decision-package-accent: var(--praxis-warning, #ed6c02)}.prx-rich-decision-package[data-status=reverted],.prx-rich-decision-package[data-risk=critical]{--prx-rich-decision-package-accent: var(--md-sys-color-error, #d32f2f)}.prx-rich-decision-package__main{display:grid;gap:8px;min-width:0}.prx-rich-decision-package__eyebrow,.prx-rich-decision-package__evidence,.prx-rich-decision-package__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.prx-rich-decision-package__title{font-size:20px;line-height:1.15}.prx-rich-decision-package__subtitle,.prx-rich-decision-package__summary,.prx-rich-decision-package__meta,.prx-rich-decision-package__property dt,.prx-rich-decision-package__evidence-item small{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-decision-package__properties{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:0}.prx-rich-decision-package__property{min-width:0}.prx-rich-decision-package__property dt,.prx-rich-decision-package__property dd{margin:0;overflow-wrap:anywhere}.prx-rich-decision-package__property dd{font-weight:700}.prx-rich-decision-package__evidence-item{display:inline-flex;flex-direction:column;gap:1px;border:1px solid color-mix(in srgb,var(--prx-rich-decision-package-accent) 24%,var(--md-sys-color-outline-variant, #cac4d0));border-radius:12px;padding:6px 8px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 76%,transparent);font-size:12px}.prx-rich-decision-package__aside{display:grid;align-content:start;justify-items:end;gap:10px;min-width:0}.prx-rich-decision-package__confidence{display:grid;justify-items:center;min-width:96px;border-radius:16px;padding:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 72%,transparent)}.prx-rich-decision-package__confidence span{font-size:28px;font-weight:800;line-height:1}.prx-rich-decision-package__confidence small{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:11px;font-weight:700;text-transform:uppercase}@media(max-width:640px){.prx-rich-decision-package{grid-template-columns:minmax(0,1fr)}.prx-rich-decision-package__aside{justify-items:start}}.prx-rich-empty-state{align-items:center;text-align:center}.prx-rich-key-value-list__items,.prx-rich-stat-group__items,.prx-rich-record-summary__fields{display:grid;gap:8px;margin:0}.prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr))}.prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr))}.prx-rich-stat-group__item{--prx-rich-stat-tone-color: var(--md-sys-color-outline, #79747e);--prx-rich-stat-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-stat-tone-border: var(--md-sys-color-outline-variant, #cac4d0);display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:start;min-width:0;padding:12px;border:1px solid var(--prx-rich-stat-tone-border);border-radius:12px;background:var(--prx-rich-stat-tone-bg)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__items{gap:6px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(148px,100%),1fr))}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__item{column-gap:8px;padding:8px 10px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-stat-tone-bg) 78%,transparent)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__icon,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__value{font-size:20px}.prx-rich-stat-group__item[data-tone=info]{--prx-rich-stat-tone-color: var(--praxis-info, #0b5cad);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 34%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=success]{--prx-rich-stat-tone-color: var(--praxis-success, #2e7d32);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 38%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=warning]{--prx-rich-stat-tone-color: var(--praxis-warning, #b26a00);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-stat-tone-color) 14%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 46%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=danger]{--prx-rich-stat-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-stat-tone-color) 16%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 54%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item-header{display:flex;gap:8px;align-items:center;min-width:0}.prx-rich-stat-group__item-content{display:grid;gap:4px;min-width:0}.prx-rich-stat-group__icon{color:var(--prx-rich-stat-tone-color);font-size:24px;line-height:1;margin-top:1px}.prx-rich-stat-group__item:not(.prx-rich-stat-group__item--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-stat-group__label,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-stat-group__value{color:var(--md-sys-color-on-surface, #1d1b20);font-size:24px;font-weight:700;line-height:1.2}.prx-rich-tabs{display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-tabs__title,.prx-rich-tabs__tab--active{font-weight:700}.prx-rich-tabs__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px;margin-top:-8px}.prx-rich-tabs__tablist{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--md-sys-color-outline-variant, #cac4d0);padding-bottom:8px}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tablist{border-bottom:0;padding-bottom:0}.prx-rich-tabs__tab{display:inline-flex;align-items:center;gap:8px;min-width:0;padding:8px 12px;border:0;border-radius:999px;background:transparent;color:var(--md-sys-color-on-surface, #1d1b20);cursor:pointer}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab{border-radius:0;border-bottom:2px solid transparent;padding-inline:0;padding-top:0;padding-bottom:8px}.prx-rich-tabs__tab--active{color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab--active{border-bottom-color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tab--active{background:color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 14%,#fff)}.prx-rich-tabs__tab:disabled{cursor:not-allowed;opacity:.55}.prx-rich-tabs__panel{display:block;min-width:0}.prx-rich-key-value-list__item,.prx-rich-record-summary__field{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr);gap:12px;margin:0}.prx-rich-key-value-list[data-layout=stacked] .prx-rich-key-value-list__item{grid-template-columns:minmax(0,1fr);gap:4px}.prx-rich-key-value-list__item dt,.prx-rich-record-summary__field dt{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-key-value-list__item dd,.prx-rich-record-summary__field dd{margin:0;display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-related-record{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 94%,transparent)}.prx-rich-related-record__copy{display:grid;gap:10px;min-width:0}.prx-rich-related-record__relation{color:var(--md-sys-color-primary, #6750a4);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0}.prx-rich-related-record__title-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;min-width:0}.prx-rich-related-record__title-row:not(.prx-rich-related-record__title-row--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-related-record__icon{color:var(--md-sys-color-primary, #6750a4);font-size:24px;line-height:1}.prx-rich-related-record__title{font-size:18px;font-weight:700;line-height:1.25;min-width:0}.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__hint{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px;line-height:1.45}.prx-rich-related-record__fields{display:grid;gap:8px;margin:0;padding:0}.prx-rich-related-record__field{display:grid;grid-template-columns:minmax(0,140px) minmax(0,1fr);gap:8px 12px;align-items:start;min-width:0;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 52%,transparent)}.prx-rich-related-record__field dt{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-related-record__field dd{margin:0;font-weight:600;min-width:0}.prx-rich-related-record__hint{grid-column:2}.prx-rich-related-record__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.prx-rich-disclosure__summary,.prx-rich-accordion__summary{cursor:pointer;display:flex;gap:8px;align-items:center;list-style:none}.prx-rich-disclosure__content,.prx-rich-accordion__content{margin-top:12px}.prx-rich-media-block{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;min-width:0}.prx-rich-media-block__avatar,.prx-rich-media-block__body,.prx-rich-media-block__trailing{min-width:0}.prx-rich-media-block__body{display:flex;flex-direction:column;gap:6px}.prx-rich-media-block__title{font-weight:700}.prx-rich-media-block__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-media-block__meta{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-media-block__trailing{display:flex;align-items:center;justify-content:flex-end}.prx-rich-timeline{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff);--prx-rich-timeline-connector-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-timeline-item-gap: 16px;--prx-rich-timeline-title-color: currentColor;--prx-rich-timeline-title-font-size: inherit;--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: currentColor;--prx-rich-timeline-item-title-font-size: inherit;--prx-rich-timeline-item-title-font-weight: 600;--prx-rich-timeline-item-subtitle-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-subtitle-font-size: 12px;--prx-rich-timeline-item-meta-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-meta-font-size: 12px;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 400;--prx-rich-timeline-item-body-background: transparent;--prx-rich-timeline-item-body-border: 0;--prx-rich-timeline-item-body-border-radius: 6px;--prx-rich-timeline-item-body-padding: 12px;display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-timeline__title{color:var(--prx-rich-timeline-title-color);font-size:var(--prx-rich-timeline-title-font-size);font-weight:var(--prx-rich-timeline-title-font-weight)}.prx-rich-timeline__items{display:flex;flex-direction:column;gap:0;list-style:none;margin:0;padding:0}.prx-rich-timeline__item{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);grid-template-areas:\". marker body\";column-gap:16px;align-items:flex-start;min-height:64px;min-width:0;position:relative}.prx-rich-timeline--vertical .prx-rich-timeline__item{padding-block-end:var(--prx-rich-timeline-item-gap)}.prx-rich-timeline--vertical .prx-rich-timeline__item:last-child{padding-block-end:0}.prx-rich-timeline--marker-color-primary,.prx-rich-timeline__item--marker-color-primary{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff)}.prx-rich-timeline--marker-color-secondary,.prx-rich-timeline__item--marker-color-secondary{--prx-rich-timeline-marker-color: var(--md-sys-color-secondary, #625b71);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-secondary, #fff)}.prx-rich-timeline--marker-color-tertiary,.prx-rich-timeline__item--marker-color-tertiary{--prx-rich-timeline-marker-color: var(--md-sys-color-tertiary, #7d5260);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-tertiary, #fff)}.prx-rich-timeline--marker-color-success,.prx-rich-timeline__item--marker-color-success{--prx-rich-timeline-marker-color: var(--praxis-success, #146c43);--prx-rich-timeline-on-marker-color: var(--praxis-on-success, #fff)}.prx-rich-timeline--marker-color-warning,.prx-rich-timeline__item--marker-color-warning{--prx-rich-timeline-marker-color: var(--praxis-warning, #b26a00);--prx-rich-timeline-on-marker-color: var(--praxis-on-warning, #1d1b20)}.prx-rich-timeline--marker-color-error,.prx-rich-timeline__item--marker-color-error{--prx-rich-timeline-marker-color: var(--md-sys-color-error, #ba1a1a);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-error, #fff)}.prx-rich-timeline--marker-color-info,.prx-rich-timeline__item--marker-color-info{--prx-rich-timeline-marker-color: var(--praxis-info, #0b5cad);--prx-rich-timeline-on-marker-color: var(--praxis-on-info, #fff)}.prx-rich-timeline--marker-color-neutral,.prx-rich-timeline__item--marker-color-neutral{--prx-rich-timeline-marker-color: var(--md-sys-color-outline, #79747e);--prx-rich-timeline-on-marker-color: var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline--connector-color-primary,.prx-rich-timeline__item--connector-color-primary{--prx-rich-timeline-connector-color: var(--md-sys-color-primary, #6750a4)}.prx-rich-timeline--connector-color-secondary,.prx-rich-timeline__item--connector-color-secondary{--prx-rich-timeline-connector-color: var(--md-sys-color-secondary, #625b71)}.prx-rich-timeline--connector-color-tertiary,.prx-rich-timeline__item--connector-color-tertiary{--prx-rich-timeline-connector-color: var(--md-sys-color-tertiary, #7d5260)}.prx-rich-timeline--connector-color-success,.prx-rich-timeline__item--connector-color-success{--prx-rich-timeline-connector-color: var(--praxis-success, #146c43)}.prx-rich-timeline--connector-color-warning,.prx-rich-timeline__item--connector-color-warning{--prx-rich-timeline-connector-color: var(--praxis-warning, #b26a00)}.prx-rich-timeline--connector-color-error,.prx-rich-timeline__item--connector-color-error{--prx-rich-timeline-connector-color: var(--md-sys-color-error, #ba1a1a)}.prx-rich-timeline--connector-color-info,.prx-rich-timeline__item--connector-color-info{--prx-rich-timeline-connector-color: var(--praxis-info, #0b5cad)}.prx-rich-timeline--connector-color-neutral,.prx-rich-timeline__item--connector-color-neutral{--prx-rich-timeline-connector-color: var(--md-sys-color-outline, #79747e)}.prx-rich-timeline__item--has-opposite{grid-template-areas:\"opposite marker body\"}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker opposite\"}.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker .\"}.prx-rich-timeline__item-opposite{grid-area:opposite;color:var(--prx-rich-timeline-opposite-color);font-size:var(--prx-rich-timeline-opposite-font-size);font-weight:var(--prx-rich-timeline-opposite-font-weight);line-height:1.35;min-width:0;overflow-wrap:anywhere;padding-top:1px;text-align:end}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite{text-align:start}.prx-rich-timeline__item-body{background:var(--prx-rich-timeline-item-body-background);border:var(--prx-rich-timeline-item-body-border);border-radius:var(--prx-rich-timeline-item-body-border-radius);padding:var(--prx-rich-timeline-item-body-padding)}.prx-rich-timeline__item-subtitle{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 20px;display:inline-flex;align-items:flex-start;align-self:stretch;grid-area:marker;justify-content:center;justify-self:center;min-height:64px;position:relative;width:32px}.prx-rich-timeline--marker-dot .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 10px}.prx-rich-timeline--marker-icon .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 18px}.prx-rich-timeline__item-marker>*{position:relative;z-index:1}.prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);bottom:0;content:\"\";left:50%;position:absolute;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline__item:last-child .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed}.prx-rich-timeline--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:row;gap:0;overflow-x:auto;padding-bottom:2px;scroll-snap-type:x proximity}.prx-rich-timeline__items:focus-visible{border-radius:4px;outline:2px solid var(--md-sys-color-primary, #6750a4);outline-offset:2px}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{grid-template-columns:minmax(176px,1fr);grid-template-areas:\"opposite\" \"marker\" \"body\";grid-template-rows:auto 32px 1fr;min-height:0;min-width:min(240px,80vw);padding-inline-end:calc(var(--prx-rich-timeline-item-gap) * .75);scroll-snap-align:start}.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite){grid-template-areas:\"marker\" \"body\";grid-template-rows:32px 1fr}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:center;align-self:center;justify-content:flex-start;justify-self:stretch;min-height:32px;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:0;border-top:1px solid var(--prx-rich-timeline-connector-color);bottom:auto;left:var(--prx-rich-timeline-marker-size);right:0;top:50%;transform:translateY(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}.prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:dashed}.prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:solid}.prx-rich-timeline__item--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline__item-icon{align-items:center;border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-marker-color);display:inline-flex;font-size:18px;height:20px;justify-content:center;line-height:18px;width:20px}.prx-rich-timeline__item-dot{width:10px;height:10px;border-radius:50%;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;box-sizing:border-box;display:inline-block}.prx-rich-timeline__item-number{align-items:center;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-on-marker-color);display:inline-flex;font-size:11px;font-weight:700;height:20px;justify-content:center;line-height:20px;min-width:20px;padding:0 5px}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-marker>*,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-marker>*{background:transparent;border-color:var(--prx-rich-timeline-marker-color);color:var(--prx-rich-timeline-marker-color)}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-dot{background:var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-number,.prx-rich-timeline--marker-style-filled .prx-rich-timeline__item-icon,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-icon{background:var(--prx-rich-timeline-marker-color);border-color:transparent;color:var(--prx-rich-timeline-on-marker-color)}.prx-rich-timeline__item-body{display:flex;flex-direction:column;gap:4px;grid-area:body;min-width:0}.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-end;text-align:end}.prx-rich-timeline__item-title{color:var(--prx-rich-timeline-item-title-color);font-size:var(--prx-rich-timeline-item-title-font-size);font-weight:var(--prx-rich-timeline-item-title-font-weight)}.prx-rich-timeline--emphasis-subtle{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-font-weight: 500;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-timeline--density-compact{--prx-rich-timeline-item-gap: 10px;--prx-rich-timeline-item-body-padding: 10px}.prx-rich-timeline--density-spacious{--prx-rich-timeline-item-gap: 24px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--emphasis-strong{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-weight: 700;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-opposite-font-weight: 700}.prx-rich-timeline--emphasis-hero{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-size: 20px;--prx-rich-timeline-title-font-weight: 800;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-size: 17px;--prx-rich-timeline-item-title-font-weight: 800;--prx-rich-timeline-opposite-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 800;--prx-rich-timeline-item-body-background: color-mix( in srgb, var(--md-sys-color-primary, #6750a4) 8%, transparent );--prx-rich-timeline-item-body-border-radius: 8px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--text-prominent{--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 15px;--prx-rich-timeline-item-title-font-weight: 700}.prx-rich-timeline--text-eyebrow{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 800}.prx-rich-timeline--text-eyebrow .prx-rich-timeline__item-opposite{letter-spacing:0;text-transform:uppercase}.prx-rich-timeline--text-label{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 14px;--prx-rich-timeline-item-title-font-weight: 600}.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta,.prx-rich-timeline__empty{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-meta{color:var(--prx-rich-timeline-item-meta-color);font-size:var(--prx-rich-timeline-item-meta-font-size)}.prx-rich-timeline__item-badge{display:inline-flex;align-items:flex-start;margin-top:2px}@media(max-width:640px){.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:column;overflow-x:visible;padding-bottom:0;scroll-snap-type:none}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{min-width:0;padding-inline-end:0;scroll-snap-align:none;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:flex-start;align-self:stretch;justify-content:center;justify-self:center;min-height:64px;width:32px}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);border-top:0;bottom:0;left:50%;right:auto;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after,.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline__item--has-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker opposite\" \"marker body\";grid-template-rows:auto 1fr;column-gap:12px}.prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker body\";grid-template-rows:1fr;column-gap:12px}.prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}}\n"] }]
|
|
4458
|
+
`, styles: [".prx-rich-content-root{display:block;min-width:0;max-width:100%}.prx-rich-content-root:not(.prx-rich-content-root--inline){display:grid;gap:var(--prx-rich-content-block-gap, 12px)}.prx-rich-content-root--inline{display:inline-flex;align-items:var(--prx-rich-content-inline-align-items, center);flex-wrap:var(--prx-rich-content-inline-flex-wrap, nowrap);gap:var(--prx-rich-content-inline-gap, 6px);min-width:0;max-width:100%;vertical-align:middle}.prx-rich-node{min-width:0;max-width:100%}.prx-rich-node--inline{display:inline-flex;align-items:center;min-width:0;max-width:100%}.prx-rich-compose{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%}.prx-rich-compose.direction-column{flex-direction:column;align-items:stretch}.prx-rich-compose.wrap{flex-wrap:wrap}.prx-rich-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;background:var(--md-sys-color-primary-container, #e8def8);color:var(--md-sys-color-on-primary-container, #21005d);font-size:12px;line-height:20px}.prx-rich-link{color:var(--md-sys-color-primary, #6750a4);text-decoration:underline;text-underline-offset:2px}.prx-rich-text,.prx-rich-link,.prx-rich-badge,.prx-rich-card-title,.prx-rich-card-subtitle,.prx-rich-card-body,.prx-rich-card-footer,.prx-rich-cta-group__title,.prx-rich-cta-group__subtitle,.prx-rich-cta-group__message,.prx-rich-key-value-list__title,.prx-rich-key-value-list__label,.prx-rich-key-value-list__value,.prx-rich-stat-group__title,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__label,.prx-rich-stat-group__value,.prx-rich-stat-group__caption,.prx-rich-tabs__title,.prx-rich-tabs__subtitle,.prx-rich-record-summary__title,.prx-rich-record-summary__subtitle,.prx-rich-record-summary__meta,.prx-rich-record-summary__field-label,.prx-rich-record-summary__field-value,.prx-rich-lookup-result__title,.prx-rich-lookup-result__subtitle,.prx-rich-lookup-result__meta,.prx-rich-lookup-result__message,.prx-rich-lookup-card__title,.prx-rich-lookup-card__subtitle,.prx-rich-lookup-card__meta,.prx-rich-lookup-card__message,.prx-rich-related-record__title,.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__relation,.prx-rich-timeline__title,.prx-rich-timeline__subtitle,.prx-rich-timeline__item-title,.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta{min-width:0;max-width:100%;overflow-wrap:anywhere}.prx-rich-text,.prx-rich-link{display:inline-block}.prx-rich-node[data-rich-node-type=avatar]{display:inline-flex;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-surface-container-high, #ece6f0);color:var(--md-sys-color-on-surface, #1d1b20)}.prx-rich-avatar{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:inherit;background:inherit;color:inherit;overflow:hidden}.prx-rich-avatar-image{width:100%;height:100%;object-fit:cover}.prx-rich-avatar-fallback{font-weight:600}.prx-rich-card{--prx-rich-card-tone-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-card-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-card-tone-on-bg: var(--md-sys-color-on-surface, #1d1b20);display:flex;flex-direction:column;position:relative;gap:12px;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;background:var(--prx-rich-card-tone-bg);color:var(--prx-rich-card-tone-on-bg);overflow:hidden;min-width:0;max-width:100%}.prx-rich-card[data-size=sm],.prx-rich-card[data-density=compact]{gap:8px;padding:12px;border-radius:12px}.prx-rich-content-root.prx-rich-content-root--widget-card{--prx-rich-content-block-gap: 8px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card{gap:8px;padding:12px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 82%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=elevated],.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card[data-variant=filled]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 88%,transparent);box-shadow:none}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-heading,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-body,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-actions,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-card-footer{gap:6px}.prx-rich-card[data-size=lg]{gap:16px;padding:20px}.prx-rich-card[data-orientation=horizontal]{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(120px,.38fr) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-avatar{grid-template-columns:minmax(72px,148px) minmax(0,1fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing{grid-template-columns:minmax(0,1fr) minmax(120px,.38fr)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-icon,.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing.prx-rich-card--media-avatar{grid-template-columns:minmax(0,1fr) minmax(72px,148px)}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>:not(.prx-rich-card-media){grid-column:2}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-leading>.prx-rich-card-media[data-placement=leading]{grid-column:1;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-trailing>.prx-rich-card-media[data-placement=trailing]{grid-column:2;grid-row:1 / -1}.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-top>.prx-rich-card-media[data-placement=top],.prx-rich-card[data-orientation=horizontal].prx-rich-card--media-background>:not(.prx-rich-card-media){grid-column:1}.prx-rich-card[data-variant=plain]{border-color:transparent;background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 64%,transparent)}.prx-rich-card[data-variant=elevated]{border-color:transparent;box-shadow:0 4px 18px color-mix(in srgb,var(--md-sys-color-shadow, #000) 16%,transparent)}.prx-rich-card[data-variant=filled]{background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,var(--md-sys-color-surface-container, #f3edf7))}.prx-rich-card[data-variant=transparent]{border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 64%,transparent);background:color-mix(in srgb,var(--prx-rich-card-tone-bg) 72%,transparent)}.prx-rich-card[data-tone=info]{--prx-rich-card-tone-color: var(--praxis-info, #0b5cad);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 42%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=success]{--prx-rich-card-tone-color: var(--praxis-success, #2e7d32);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-card-tone-color) 12%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 48%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=warning]{--prx-rich-card-tone-color: var(--praxis-warning, #ed6c02);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-card-tone-color) 14%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 56%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card[data-tone=danger]{--prx-rich-card-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-card-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-card-tone-color) 16%);border-color:color-mix(in srgb,var(--prx-rich-card-tone-color) 62%,var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-card--interactive{cursor:pointer}.prx-rich-card--interactive:focus-visible{outline:3px solid color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 72%,transparent);outline-offset:2px}.prx-rich-card--selected,.prx-rich-card--active{border-color:var(--md-sys-color-primary, #6750a4);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary, #6750a4)}.prx-rich-card--disabled:not(.prx-rich-card--loading){opacity:.62;cursor:default}.prx-rich-card--loading{cursor:progress}.prx-rich-card-media{display:flex;align-items:center;justify-content:center;min-width:0;border-radius:12px;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 18%,var(--md-sys-color-surface-container-high, #ece6f0));overflow:hidden;aspect-ratio:16 / 9}.prx-rich-card-media[data-kind=icon],.prx-rich-card-media[data-kind=avatar]{aspect-ratio:auto;min-height:64px;padding:12px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar]{min-height:48px;padding:8px}.prx-rich-card-media[data-placement=leading],.prx-rich-card-media[data-placement=trailing]{aspect-ratio:auto;min-height:100%}.prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card-media[data-kind=avatar][data-placement=trailing]{align-self:start;min-height:64px}.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-size=sm] .prx-rich-card-media[data-kind=avatar][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=icon][data-placement=trailing],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=leading],.prx-rich-card[data-density=compact] .prx-rich-card-media[data-kind=avatar][data-placement=trailing]{min-height:48px}.prx-rich-card-media--background{position:absolute;inset:0;z-index:0;border-radius:inherit;opacity:.18}.prx-rich-card-media--background~*{position:relative;z-index:1}.prx-rich-card-media__asset{width:100%;height:100%;object-fit:cover}.prx-rich-card-media__icon{font-size:40px;color:var(--prx-rich-card-tone-color)}.prx-rich-card-media__avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--prx-rich-card-tone-color) 22%,var(--md-sys-color-primary-container, #e8def8));color:var(--prx-rich-card-tone-on-bg);font-weight:700}.prx-rich-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.prx-rich-card-header__content{min-width:0}.prx-rich-card-header__action{flex:0 0 auto}.prx-rich-card-heading{display:grid;gap:4px;min-width:0}.prx-rich-card-title{font-weight:600}.prx-rich-card-subtitle,.prx-rich-metric-caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-metric{display:grid;gap:4px;min-width:0}.prx-rich-metric--with-icon{grid-template-columns:auto minmax(0,1fr);column-gap:8px;align-items:start}.prx-rich-metric-icon{color:var(--md-sys-color-primary, #6750a4);font-size:20px;line-height:1.2;margin-top:2px}.prx-rich-metric-content{display:grid;gap:4px;min-width:0}.prx-rich-metric-value{font-size:20px;font-weight:700}.prx-rich-progress{display:flex;flex-direction:column;gap:4px}.prx-rich-progress-header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.prx-rich-progress-label,.prx-rich-progress-percent{min-width:0;color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px;font-weight:600}.prx-rich-progress-percent{flex:0 0 auto;color:var(--md-sys-color-on-surface, #1d1b20)}.prx-rich-progress-bar{width:100%}.prx-rich-action-button,.prx-rich-card-actions,.prx-rich-callout__actions,.prx-rich-empty-state__actions,.prx-rich-record-summary__actions,.prx-rich-disclosure__actions,.prx-rich-accordion__actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-action-button{appearance:none;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:999px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-on-surface, #1d1b20);padding:8px 12px;cursor:pointer}.prx-rich-action-button:disabled{opacity:.56;cursor:default}.prx-rich-action-button--raised,.prx-rich-action-button--primary{background:var(--md-sys-color-primary, #6750a4);color:var(--md-sys-color-on-primary, #fff)}.prx-rich-callout,.prx-rich-empty-state,.prx-rich-record-summary,.prx-rich-decision-package,.prx-rich-disclosure,.prx-rich-accordion{border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:16px;padding:16px;background:var(--md-sys-color-surface, #fff)}.prx-rich-callout[data-tone=warning]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#ffb300 12%)}.prx-rich-callout[data-tone=danger]{background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,#d32f2f 12%)}.prx-rich-callout__title,.prx-rich-empty-state__title,.prx-rich-record-summary__title,.prx-rich-decision-package__title,.prx-rich-stat-group__title,.prx-rich-accordion__title,.prx-rich-key-value-list__title{font-weight:700;margin-bottom:4px}.prx-rich-decision-package{--prx-rich-decision-package-accent: var(--md-sys-color-primary, #6750a4);display:grid;grid-template-columns:minmax(0,1fr) minmax(136px,auto);gap:16px;border-color:color-mix(in srgb,var(--prx-rich-decision-package-accent) 42%,var(--md-sys-color-outline-variant, #cac4d0));background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 88%,var(--prx-rich-decision-package-accent) 12%)}.prx-rich-decision-package[data-status=approved],.prx-rich-decision-package[data-status=published]{--prx-rich-decision-package-accent: var(--praxis-success, #2e7d32)}.prx-rich-decision-package[data-status=draft],.prx-rich-decision-package[data-status=simulated],.prx-rich-decision-package[data-risk=medium],.prx-rich-decision-package[data-risk=high]{--prx-rich-decision-package-accent: var(--praxis-warning, #ed6c02)}.prx-rich-decision-package[data-status=reverted],.prx-rich-decision-package[data-risk=critical]{--prx-rich-decision-package-accent: var(--md-sys-color-error, #d32f2f)}.prx-rich-decision-package__main{display:grid;gap:8px;min-width:0}.prx-rich-decision-package__eyebrow,.prx-rich-decision-package__evidence,.prx-rich-decision-package__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.prx-rich-decision-package__title{font-size:20px;line-height:1.15}.prx-rich-decision-package__subtitle,.prx-rich-decision-package__summary,.prx-rich-decision-package__meta,.prx-rich-decision-package__property dt,.prx-rich-decision-package__evidence-item small{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-decision-package__properties{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:0}.prx-rich-decision-package__property{min-width:0}.prx-rich-decision-package__property dt,.prx-rich-decision-package__property dd{margin:0;overflow-wrap:anywhere}.prx-rich-decision-package__property dd{font-weight:700}.prx-rich-decision-package__evidence-item{display:inline-flex;flex-direction:column;gap:1px;border:1px solid color-mix(in srgb,var(--prx-rich-decision-package-accent) 24%,var(--md-sys-color-outline-variant, #cac4d0));border-radius:12px;padding:6px 8px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 76%,transparent);font-size:12px}.prx-rich-decision-package__aside{display:grid;align-content:start;justify-items:end;gap:10px;min-width:0}.prx-rich-decision-package__confidence{display:grid;justify-items:center;min-width:96px;border-radius:16px;padding:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 72%,transparent)}.prx-rich-decision-package__confidence span{font-size:28px;font-weight:800;line-height:1}.prx-rich-decision-package__confidence small{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:11px;font-weight:700;text-transform:uppercase}@media(max-width:640px){.prx-rich-decision-package{grid-template-columns:minmax(0,1fr)}.prx-rich-decision-package__aside{justify-items:start}}.prx-rich-empty-state{align-items:center;text-align:center}.prx-rich-key-value-list__items,.prx-rich-stat-group__items,.prx-rich-record-summary__fields{display:grid;gap:8px;margin:0}.prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr))}.prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr))}.prx-rich-stat-group__item{--prx-rich-stat-tone-color: var(--md-sys-color-outline, #79747e);--prx-rich-stat-tone-bg: var(--md-sys-color-surface, #fff);--prx-rich-stat-tone-border: var(--md-sys-color-outline-variant, #cac4d0);display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:start;min-width:0;padding:12px;border:1px solid var(--prx-rich-stat-tone-border);border-radius:12px;background:var(--prx-rich-stat-tone-bg)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__items{gap:6px}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=inline] .prx-rich-stat-group__items,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group[data-layout=grid] .prx-rich-stat-group__items{grid-template-columns:repeat(auto-fit,minmax(min(148px,100%),1fr))}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__item{column-gap:8px;padding:8px 10px;border-radius:var(--pdx-page-card-radius, 10px);background:color-mix(in srgb,var(--prx-rich-stat-tone-bg) 78%,transparent)}.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__icon,.prx-rich-content-root.prx-rich-content-root--widget-card .prx-rich-stat-group__value{font-size:20px}.prx-rich-stat-group__item[data-tone=info]{--prx-rich-stat-tone-color: var(--praxis-info, #0b5cad);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 34%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=success]{--prx-rich-stat-tone-color: var(--praxis-success, #2e7d32);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, var(--prx-rich-stat-tone-color) 12%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 38%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=warning]{--prx-rich-stat-tone-color: var(--praxis-warning, #b26a00);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 86%, var(--prx-rich-stat-tone-color) 14%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 46%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item[data-tone=danger]{--prx-rich-stat-tone-color: var(--md-sys-color-error, #d32f2f);--prx-rich-stat-tone-bg: color-mix(in srgb, var(--md-sys-color-surface, #fff) 84%, var(--prx-rich-stat-tone-color) 16%);--prx-rich-stat-tone-border: color-mix(in srgb, var(--prx-rich-stat-tone-color) 54%, var(--md-sys-color-outline-variant, #cac4d0))}.prx-rich-stat-group__item-header{display:flex;gap:8px;align-items:center;min-width:0}.prx-rich-stat-group__item-content{display:grid;gap:4px;min-width:0}.prx-rich-stat-group__icon{color:var(--prx-rich-stat-tone-color);font-size:24px;line-height:1;margin-top:1px}.prx-rich-stat-group__item:not(.prx-rich-stat-group__item--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-stat-group__label,.prx-rich-stat-group__subtitle,.prx-rich-stat-group__caption{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-stat-group__value{color:var(--md-sys-color-on-surface, #1d1b20);font-size:24px;font-weight:700;line-height:1.2}.prx-rich-tabs{display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-tabs__title,.prx-rich-tabs__tab--active{font-weight:700}.prx-rich-tabs__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px;margin-top:-8px}.prx-rich-tabs__tablist{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--md-sys-color-outline-variant, #cac4d0);padding-bottom:8px}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tablist{border-bottom:0;padding-bottom:0}.prx-rich-tabs__tab{display:inline-flex;align-items:center;gap:8px;min-width:0;padding:8px 12px;border:0;border-radius:999px;background:transparent;color:var(--md-sys-color-on-surface, #1d1b20);cursor:pointer}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab{border-radius:0;border-bottom:2px solid transparent;padding-inline:0;padding-top:0;padding-bottom:8px}.prx-rich-tabs__tab--active{color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=underline] .prx-rich-tabs__tab--active{border-bottom-color:var(--md-sys-color-primary, #6750a4)}.prx-rich-tabs[data-appearance=pills] .prx-rich-tabs__tab--active{background:color-mix(in srgb,var(--md-sys-color-primary, #6750a4) 14%,#fff)}.prx-rich-tabs__tab:disabled{cursor:not-allowed;opacity:.55}.prx-rich-tabs__panel{display:block;min-width:0}.prx-rich-key-value-list__item,.prx-rich-record-summary__field{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr);gap:12px;margin:0}.prx-rich-key-value-list[data-layout=stacked] .prx-rich-key-value-list__item{grid-template-columns:minmax(0,1fr);gap:4px}.prx-rich-key-value-list__item dt,.prx-rich-record-summary__field dt{color:var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-key-value-list__item dd,.prx-rich-record-summary__field dd{margin:0;display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center}.prx-rich-related-record{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid var(--md-sys-color-outline-variant, #cac4d0);border-radius:12px;background:color-mix(in srgb,var(--md-sys-color-surface, #fff) 94%,transparent)}.prx-rich-related-record__copy{display:grid;gap:10px;min-width:0}.prx-rich-related-record__relation{color:var(--md-sys-color-primary, #6750a4);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0}.prx-rich-related-record__title-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;min-width:0}.prx-rich-related-record__title-row:not(.prx-rich-related-record__title-row--with-icon){grid-template-columns:minmax(0,1fr)}.prx-rich-related-record__icon{color:var(--md-sys-color-primary, #6750a4);font-size:24px;line-height:1}.prx-rich-related-record__title{font-size:18px;font-weight:700;line-height:1.25;min-width:0}.prx-rich-related-record__subtitle,.prx-rich-related-record__meta,.prx-rich-related-record__hint{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px;line-height:1.45}.prx-rich-related-record__fields{display:grid;gap:8px;margin:0;padding:0}.prx-rich-related-record__field{display:grid;grid-template-columns:minmax(0,140px) minmax(0,1fr);gap:8px 12px;align-items:start;min-width:0;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant, #cac4d0) 52%,transparent)}.prx-rich-related-record__field dt{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-related-record__field dd{margin:0;font-weight:600;min-width:0}.prx-rich-related-record__hint{grid-column:2}.prx-rich-related-record__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.prx-rich-disclosure__summary,.prx-rich-accordion__summary{cursor:pointer;display:flex;gap:8px;align-items:center;list-style:none}.prx-rich-disclosure__content,.prx-rich-accordion__content{margin-top:12px}.prx-rich-media-block{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;min-width:0}.prx-rich-media-block__avatar,.prx-rich-media-block__body,.prx-rich-media-block__trailing{min-width:0}.prx-rich-media-block__body{display:flex;flex-direction:column;gap:6px}.prx-rich-media-block__title{font-weight:700}.prx-rich-media-block__subtitle{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:13px}.prx-rich-media-block__meta{color:var(--md-sys-color-on-surface-variant, #49454f);font-size:12px}.prx-rich-media-block__trailing{display:flex;align-items:center;justify-content:flex-end}.prx-rich-timeline{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff);--prx-rich-timeline-connector-color: var(--md-sys-color-outline-variant, #cac4d0);--prx-rich-timeline-item-gap: 16px;--prx-rich-timeline-title-color: currentColor;--prx-rich-timeline-title-font-size: inherit;--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: currentColor;--prx-rich-timeline-item-title-font-size: inherit;--prx-rich-timeline-item-title-font-weight: 600;--prx-rich-timeline-item-subtitle-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-subtitle-font-size: 12px;--prx-rich-timeline-item-meta-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-meta-font-size: 12px;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 400;--prx-rich-timeline-item-body-background: transparent;--prx-rich-timeline-item-body-border: 0;--prx-rich-timeline-item-body-border-radius: 6px;--prx-rich-timeline-item-body-padding: 12px;display:flex;flex-direction:column;gap:12px;min-width:0}.prx-rich-timeline__title{color:var(--prx-rich-timeline-title-color);font-size:var(--prx-rich-timeline-title-font-size);font-weight:var(--prx-rich-timeline-title-font-weight)}.prx-rich-timeline__items{display:flex;flex-direction:column;gap:0;list-style:none;margin:0;padding:0}.prx-rich-timeline__item{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);grid-template-areas:\". marker body\";column-gap:16px;align-items:flex-start;min-height:64px;min-width:0;position:relative}.prx-rich-timeline--vertical .prx-rich-timeline__item{padding-block-end:var(--prx-rich-timeline-item-gap)}.prx-rich-timeline--vertical .prx-rich-timeline__item:last-child{padding-block-end:0}.prx-rich-timeline--marker-color-primary,.prx-rich-timeline__item--marker-color-primary{--prx-rich-timeline-marker-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-primary, #fff)}.prx-rich-timeline--marker-color-secondary,.prx-rich-timeline__item--marker-color-secondary{--prx-rich-timeline-marker-color: var(--md-sys-color-secondary, #625b71);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-secondary, #fff)}.prx-rich-timeline--marker-color-tertiary,.prx-rich-timeline__item--marker-color-tertiary{--prx-rich-timeline-marker-color: var(--md-sys-color-tertiary, #7d5260);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-tertiary, #fff)}.prx-rich-timeline--marker-color-success,.prx-rich-timeline__item--marker-color-success{--prx-rich-timeline-marker-color: var(--praxis-success, #146c43);--prx-rich-timeline-on-marker-color: var(--praxis-on-success, #fff)}.prx-rich-timeline--marker-color-warning,.prx-rich-timeline__item--marker-color-warning{--prx-rich-timeline-marker-color: var(--praxis-warning, #b26a00);--prx-rich-timeline-on-marker-color: var(--praxis-on-warning, #1d1b20)}.prx-rich-timeline--marker-color-error,.prx-rich-timeline__item--marker-color-error{--prx-rich-timeline-marker-color: var(--md-sys-color-error, #ba1a1a);--prx-rich-timeline-on-marker-color: var(--md-sys-color-on-error, #fff)}.prx-rich-timeline--marker-color-info,.prx-rich-timeline__item--marker-color-info{--prx-rich-timeline-marker-color: var(--praxis-info, #0b5cad);--prx-rich-timeline-on-marker-color: var(--praxis-on-info, #fff)}.prx-rich-timeline--marker-color-neutral,.prx-rich-timeline__item--marker-color-neutral{--prx-rich-timeline-marker-color: var(--md-sys-color-outline, #79747e);--prx-rich-timeline-on-marker-color: var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline--connector-color-primary,.prx-rich-timeline__item--connector-color-primary{--prx-rich-timeline-connector-color: var(--md-sys-color-primary, #6750a4)}.prx-rich-timeline--connector-color-secondary,.prx-rich-timeline__item--connector-color-secondary{--prx-rich-timeline-connector-color: var(--md-sys-color-secondary, #625b71)}.prx-rich-timeline--connector-color-tertiary,.prx-rich-timeline__item--connector-color-tertiary{--prx-rich-timeline-connector-color: var(--md-sys-color-tertiary, #7d5260)}.prx-rich-timeline--connector-color-success,.prx-rich-timeline__item--connector-color-success{--prx-rich-timeline-connector-color: var(--praxis-success, #146c43)}.prx-rich-timeline--connector-color-warning,.prx-rich-timeline__item--connector-color-warning{--prx-rich-timeline-connector-color: var(--praxis-warning, #b26a00)}.prx-rich-timeline--connector-color-error,.prx-rich-timeline__item--connector-color-error{--prx-rich-timeline-connector-color: var(--md-sys-color-error, #ba1a1a)}.prx-rich-timeline--connector-color-info,.prx-rich-timeline__item--connector-color-info{--prx-rich-timeline-connector-color: var(--praxis-info, #0b5cad)}.prx-rich-timeline--connector-color-neutral,.prx-rich-timeline__item--connector-color-neutral{--prx-rich-timeline-connector-color: var(--md-sys-color-outline, #79747e)}.prx-rich-timeline__item--has-opposite{grid-template-areas:\"opposite marker body\"}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker opposite\"}.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-areas:\"body marker .\"}.prx-rich-timeline__item-opposite{grid-area:opposite;color:var(--prx-rich-timeline-opposite-color);font-size:var(--prx-rich-timeline-opposite-font-size);font-weight:var(--prx-rich-timeline-opposite-font-weight);line-height:1.35;min-width:0;overflow-wrap:anywhere;padding-top:1px;text-align:end}.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite{text-align:start}.prx-rich-timeline__item-body{background:var(--prx-rich-timeline-item-body-background);border:var(--prx-rich-timeline-item-body-border);border-radius:var(--prx-rich-timeline-item-body-border-radius);padding:var(--prx-rich-timeline-item-body-padding)}.prx-rich-timeline__item-subtitle{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 22px;display:inline-flex;align-items:flex-start;align-self:stretch;grid-area:marker;justify-content:center;justify-self:center;min-height:64px;position:relative;width:max(32px,var(--prx-rich-timeline-marker-size))}.prx-rich-timeline--marker-dot .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 10px}.prx-rich-timeline--marker-icon .prx-rich-timeline__item-marker{--prx-rich-timeline-marker-size: 24px}.prx-rich-timeline__item-marker>*{position:relative;z-index:1}.prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);bottom:0;content:\"\";left:50%;position:absolute;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline__item:last-child .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed}.prx-rich-timeline--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:row;gap:0;overflow-x:auto;padding-bottom:2px;scroll-snap-type:x proximity}.prx-rich-timeline__items:focus-visible{border-radius:4px;outline:2px solid var(--md-sys-color-primary, #6750a4);outline-offset:2px}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{grid-template-columns:minmax(176px,1fr);grid-template-areas:\"opposite\" \"marker\" \"body\";grid-template-rows:auto 32px 1fr;min-height:0;min-width:min(240px,80vw);padding-inline-end:calc(var(--prx-rich-timeline-item-gap) * .75);scroll-snap-align:start}.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite){grid-template-areas:\"marker\" \"body\";grid-template-rows:32px 1fr}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:center;align-self:center;justify-content:flex-start;justify-self:stretch;min-height:32px;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:0;border-top:1px solid var(--prx-rich-timeline-connector-color);bottom:auto;left:var(--prx-rich-timeline-marker-size);right:0;top:50%;transform:translateY(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:dashed}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}.prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:dashed}.prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{content:\"\";border-left-style:solid}.prx-rich-timeline__item--connector-none .prx-rich-timeline__item-marker:after{content:none}.prx-rich-timeline__item-icon{align-items:center;border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-marker-color);display:inline-flex;font-size:calc(var(--prx-rich-timeline-marker-size) - 8px);height:var(--prx-rich-timeline-marker-size);justify-content:center;line-height:1;width:var(--prx-rich-timeline-marker-size)}.prx-rich-timeline__item-dot{width:10px;height:10px;border-radius:50%;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;box-sizing:border-box;display:inline-block}.prx-rich-timeline__item-number{align-items:center;background:var(--prx-rich-timeline-marker-color);border:2px solid transparent;border-radius:50%;box-sizing:border-box;color:var(--prx-rich-timeline-on-marker-color);display:inline-flex;font-size:11px;font-weight:700;height:var(--prx-rich-timeline-marker-size);justify-content:center;line-height:1;min-width:var(--prx-rich-timeline-marker-size);padding:0 5px}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-marker>*,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-marker>*{background:transparent;border-color:var(--prx-rich-timeline-marker-color);color:var(--prx-rich-timeline-marker-color)}.prx-rich-timeline--marker-style-outlined .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-outlined .prx-rich-timeline__item-dot{background:var(--md-sys-color-surface, #fffbfe)}.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-dot,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-number,.prx-rich-timeline--marker-style-filled .prx-rich-timeline__item-icon,.prx-rich-timeline__item--marker-style-filled .prx-rich-timeline__item-icon{background:var(--prx-rich-timeline-marker-color);border-color:transparent;color:var(--prx-rich-timeline-on-marker-color)}.prx-rich-timeline__item-body{display:flex;flex-direction:column;gap:4px;grid-area:body;min-width:0}.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-end;text-align:end}.prx-rich-timeline__item-title{color:var(--prx-rich-timeline-item-title-color);font-size:var(--prx-rich-timeline-item-title-font-size);font-weight:var(--prx-rich-timeline-item-title-font-weight)}.prx-rich-timeline--emphasis-subtle{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface-variant, #49454f);--prx-rich-timeline-item-title-font-weight: 500;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface-variant, #49454f)}.prx-rich-timeline--density-compact{--prx-rich-timeline-item-gap: 10px;--prx-rich-timeline-item-body-padding: 10px}.prx-rich-timeline--density-spacious{--prx-rich-timeline-item-gap: 24px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--emphasis-strong{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-weight: 700;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-weight: 700;--prx-rich-timeline-opposite-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-opposite-font-weight: 700}.prx-rich-timeline--emphasis-hero{--prx-rich-timeline-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-title-font-size: 20px;--prx-rich-timeline-title-font-weight: 800;--prx-rich-timeline-item-title-color: var(--md-sys-color-on-surface, #1d1b20);--prx-rich-timeline-item-title-font-size: 17px;--prx-rich-timeline-item-title-font-weight: 800;--prx-rich-timeline-opposite-color: var(--md-sys-color-primary, #6750a4);--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 800;--prx-rich-timeline-item-body-background: color-mix( in srgb, var(--md-sys-color-primary, #6750a4) 8%, transparent );--prx-rich-timeline-item-body-border-radius: 8px;--prx-rich-timeline-item-body-padding: 14px}.prx-rich-timeline--text-prominent{--prx-rich-timeline-opposite-font-size: 14px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 15px;--prx-rich-timeline-item-title-font-weight: 700}.prx-rich-timeline--text-eyebrow{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 800}.prx-rich-timeline--text-eyebrow .prx-rich-timeline__item-opposite{letter-spacing:0;text-transform:uppercase}.prx-rich-timeline--text-label{--prx-rich-timeline-opposite-font-size: 12px;--prx-rich-timeline-opposite-font-weight: 700;--prx-rich-timeline-item-title-font-size: 14px;--prx-rich-timeline-item-title-font-weight: 600}.prx-rich-timeline__item-subtitle,.prx-rich-timeline__item-meta,.prx-rich-timeline__empty{color:var(--prx-rich-timeline-item-subtitle-color);font-size:var(--prx-rich-timeline-item-subtitle-font-size)}.prx-rich-timeline__item-meta{color:var(--prx-rich-timeline-item-meta-color);font-size:var(--prx-rich-timeline-item-meta-font-size)}.prx-rich-timeline__item-badge{display:inline-flex;align-items:flex-start;margin-top:2px}@media(max-width:640px){.prx-rich-timeline--horizontal .prx-rich-timeline__items{flex-direction:column;overflow-x:visible;padding-bottom:0;scroll-snap-type:none}.prx-rich-timeline--horizontal .prx-rich-timeline__item,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item{min-width:0;padding-inline-end:0;scroll-snap-align:none;width:100%}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker{align-items:flex-start;align-self:stretch;justify-content:center;justify-self:center;min-height:64px;width:32px}.prx-rich-timeline--horizontal .prx-rich-timeline__item-marker:after{border-left:1px solid var(--prx-rich-timeline-connector-color);border-top:0;bottom:0;left:50%;right:auto;top:var(--prx-rich-timeline-marker-size);transform:translate(-50%)}.prx-rich-timeline--horizontal.prx-rich-timeline--connector-dashed .prx-rich-timeline__item-marker:after,.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-dashed .prx-rich-timeline__item-marker:after{border-left-style:dashed;border-top-style:solid}.prx-rich-timeline--horizontal .prx-rich-timeline__item--connector-solid .prx-rich-timeline__item-marker:after{border-left-style:solid;border-top-style:solid}.prx-rich-timeline__item--has-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker opposite\" \"marker body\";grid-template-rows:auto 1fr;column-gap:12px}.prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--horizontal.prx-rich-timeline--left .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite),.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd),.prx-rich-timeline--horizontal.prx-rich-timeline--alternate .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite).prx-rich-timeline__item--odd,.prx-rich-timeline--horizontal.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--has-opposite):not(.prx-rich-timeline__item--odd){grid-template-columns:32px minmax(0,1fr);grid-template-areas:\"marker body\";grid-template-rows:1fr;column-gap:12px}.prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item--has-opposite .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate .prx-rich-timeline__item--has-opposite.prx-rich-timeline__item--odd .prx-rich-timeline__item-opposite,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item--has-opposite:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-opposite,.prx-rich-timeline--left .prx-rich-timeline__item-body,.prx-rich-timeline--alternate .prx-rich-timeline__item--odd .prx-rich-timeline__item-body,.prx-rich-timeline--alternate-reverse .prx-rich-timeline__item:not(.prx-rich-timeline__item--odd) .prx-rich-timeline__item-body{align-items:flex-start;text-align:start}}\n"] }]
|
|
4201
4459
|
}], propDecorators: { document: [{ type: i0.Input, args: [{ isSignal: true, alias: "document", required: false }] }], nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }], hostCapabilities: [{ type: i0.Input, args: [{ isSignal: true, alias: "hostCapabilities", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], rootClassName: [{
|
|
4202
4460
|
type: Input
|
|
4203
4461
|
}] } });
|
|
@@ -4239,6 +4497,14 @@ const SUPPORTED_NODE_TYPES = new Set([
|
|
|
4239
4497
|
'timeline',
|
|
4240
4498
|
'preset',
|
|
4241
4499
|
]);
|
|
4500
|
+
const SUPPORTED_CONTEXT_SCOPES = new Set([
|
|
4501
|
+
'row',
|
|
4502
|
+
'computed',
|
|
4503
|
+
'detail',
|
|
4504
|
+
'meta',
|
|
4505
|
+
'user',
|
|
4506
|
+
'tenant',
|
|
4507
|
+
]);
|
|
4242
4508
|
const STYLE_NAME_PATTERN = /^--[a-zA-Z0-9-_]+$|^[a-z][a-zA-Z0-9-]*$/;
|
|
4243
4509
|
const CLASS_NAME_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_-]*(\s+[a-zA-Z_][a-zA-Z0-9_-]*)*$/;
|
|
4244
4510
|
const UNSAFE_STYLE_VALUE_PATTERN = /(?:javascript\s*:|vbscript\s*:|data\s*:|expression\s*\(|@import|-moz-binding|behavior\s*:)/i;
|
|
@@ -4255,6 +4521,7 @@ function validateRichContentDocument(value) {
|
|
|
4255
4521
|
if (value['version'] !== SUPPORTED_DOCUMENT_VERSION) {
|
|
4256
4522
|
addIssue(issues, '$.version', 'editor.validation.documentVersion', 'The document version must be "1.0.0".');
|
|
4257
4523
|
}
|
|
4524
|
+
validateContextConfig(value['context'], '$.context', issues);
|
|
4258
4525
|
if (!Array.isArray(value['nodes'])) {
|
|
4259
4526
|
addIssue(issues, '$.nodes', 'editor.validation.documentNodes', 'The document must include a nodes array.');
|
|
4260
4527
|
}
|
|
@@ -4632,6 +4899,7 @@ function validateBaseNode(node, path, issues) {
|
|
|
4632
4899
|
validateOptionalClassName(node, 'className', path, issues);
|
|
4633
4900
|
validateOptionalStringArray(node, 'requiresCapabilities', path, issues);
|
|
4634
4901
|
validateEnum(node, 'capabilityMode', ['all', 'any'], path, issues, false);
|
|
4902
|
+
validateContextConfig(node['bindings'], `${path}.bindings`, issues);
|
|
4635
4903
|
validateStyleObject(node['style'], `${path}.style`, issues);
|
|
4636
4904
|
validateRuleExpression(node['visibleWhen'], `${path}.visibleWhen`, issues);
|
|
4637
4905
|
validateRuleExpression(node['disabledWhen'], `${path}.disabledWhen`, issues);
|
|
@@ -4639,6 +4907,39 @@ function validateBaseNode(node, path, issues) {
|
|
|
4639
4907
|
validateClassWhen(node['classWhen'], `${path}.classWhen`, issues);
|
|
4640
4908
|
validateStyleWhen(node['styleWhen'], `${path}.styleWhen`, issues);
|
|
4641
4909
|
}
|
|
4910
|
+
function validateContextConfig(value, path, issues) {
|
|
4911
|
+
if (value === undefined)
|
|
4912
|
+
return;
|
|
4913
|
+
if (!isRecord(value)) {
|
|
4914
|
+
addIssue(issues, path, 'editor.validation.objectField', 'Context configuration must be an object.');
|
|
4915
|
+
return;
|
|
4916
|
+
}
|
|
4917
|
+
if (value['scopes'] !== undefined) {
|
|
4918
|
+
if (!Array.isArray(value['scopes'])) {
|
|
4919
|
+
addIssue(issues, `${path}.scopes`, 'editor.validation.contextScopes', 'Context scopes must be an array of supported scope names.');
|
|
4920
|
+
}
|
|
4921
|
+
else {
|
|
4922
|
+
value['scopes'].forEach((scope, index) => {
|
|
4923
|
+
if (typeof scope !== 'string' ||
|
|
4924
|
+
!SUPPORTED_CONTEXT_SCOPES.has(scope)) {
|
|
4925
|
+
addIssue(issues, `${path}.scopes[${index}]`, 'editor.validation.contextScopes', 'Context scopes must use supported scope names.');
|
|
4926
|
+
}
|
|
4927
|
+
});
|
|
4928
|
+
}
|
|
4929
|
+
}
|
|
4930
|
+
if (value['aliases'] !== undefined) {
|
|
4931
|
+
if (!isRecord(value['aliases'])) {
|
|
4932
|
+
addIssue(issues, `${path}.aliases`, 'editor.validation.contextAliases', 'Context aliases must be an object with string values.');
|
|
4933
|
+
}
|
|
4934
|
+
else {
|
|
4935
|
+
Object.entries(value['aliases']).forEach(([alias, target]) => {
|
|
4936
|
+
if (typeof target !== 'string') {
|
|
4937
|
+
addIssue(issues, `${path}.aliases.${alias}`, 'editor.validation.contextAliases', 'Context aliases must be an object with string values.');
|
|
4938
|
+
}
|
|
4939
|
+
});
|
|
4940
|
+
}
|
|
4941
|
+
}
|
|
4942
|
+
}
|
|
4642
4943
|
function validateActionRef(value, path, issues) {
|
|
4643
4944
|
if (!isRecord(value)) {
|
|
4644
4945
|
addIssue(issues, path, 'editor.validation.objectField', 'Action configuration must be an object.');
|
|
@@ -5136,6 +5437,7 @@ const EDITABLE_TOP_LEVEL_NODE_TYPES = [
|
|
|
5136
5437
|
'text',
|
|
5137
5438
|
'badge',
|
|
5138
5439
|
'icon',
|
|
5440
|
+
'avatar',
|
|
5139
5441
|
'image',
|
|
5140
5442
|
'link',
|
|
5141
5443
|
'metric',
|
|
@@ -5168,6 +5470,7 @@ const EDITABLE_PRESENTER_NODE_TYPES = [
|
|
|
5168
5470
|
'text',
|
|
5169
5471
|
'badge',
|
|
5170
5472
|
'icon',
|
|
5473
|
+
'avatar',
|
|
5171
5474
|
'image',
|
|
5172
5475
|
'link',
|
|
5173
5476
|
'metric',
|
|
@@ -5184,6 +5487,12 @@ function createDefaultRichContentNode(type, tx, presetRef) {
|
|
|
5184
5487
|
return { type: 'badge', label: tx('editor.defaultBadge', 'Badge') };
|
|
5185
5488
|
case 'icon':
|
|
5186
5489
|
return { type: 'icon', icon: 'check_circle' };
|
|
5490
|
+
case 'avatar':
|
|
5491
|
+
return {
|
|
5492
|
+
type: 'avatar',
|
|
5493
|
+
name: tx('editor.defaultAvatarName', 'Person'),
|
|
5494
|
+
initials: 'P',
|
|
5495
|
+
};
|
|
5187
5496
|
case 'image':
|
|
5188
5497
|
return { type: 'image', src: '/assets/placeholder.png', alt: '' };
|
|
5189
5498
|
case 'link':
|
|
@@ -5539,6 +5848,12 @@ function createDefaultPresenterNode(type, tx) {
|
|
|
5539
5848
|
return { type: 'badge', label: tx('editor.defaultBadge', 'Badge') };
|
|
5540
5849
|
case 'icon':
|
|
5541
5850
|
return { type: 'icon', icon: 'check_circle' };
|
|
5851
|
+
case 'avatar':
|
|
5852
|
+
return {
|
|
5853
|
+
type: 'avatar',
|
|
5854
|
+
name: tx('editor.defaultAvatarName', 'Person'),
|
|
5855
|
+
initials: 'P',
|
|
5856
|
+
};
|
|
5542
5857
|
case 'image':
|
|
5543
5858
|
return { type: 'image', src: '/assets/placeholder.png', alt: '' };
|
|
5544
5859
|
case 'link':
|
|
@@ -5676,6 +5991,21 @@ function stringifyScalar(value) {
|
|
|
5676
5991
|
return '';
|
|
5677
5992
|
}
|
|
5678
5993
|
|
|
5994
|
+
const ADVANCED_JSON_ONLY_NODE_FIELDS = [
|
|
5995
|
+
'bindings',
|
|
5996
|
+
'disabledWhen',
|
|
5997
|
+
'loadWhen',
|
|
5998
|
+
'classWhen',
|
|
5999
|
+
'styleWhen',
|
|
6000
|
+
];
|
|
6001
|
+
const RICH_BLOCK_CONTEXT_SCOPES = [
|
|
6002
|
+
'row',
|
|
6003
|
+
'computed',
|
|
6004
|
+
'detail',
|
|
6005
|
+
'meta',
|
|
6006
|
+
'user',
|
|
6007
|
+
'tenant',
|
|
6008
|
+
];
|
|
5679
6009
|
const EMPTY_DOCUMENT = {
|
|
5680
6010
|
kind: 'praxis.rich-content',
|
|
5681
6011
|
version: '1.0.0',
|
|
@@ -5695,6 +6025,7 @@ class PraxisRichContentConfigEditor {
|
|
|
5695
6025
|
editableNodeTypes = EDITABLE_TOP_LEVEL_NODE_TYPES;
|
|
5696
6026
|
presenterNodeTypes = EDITABLE_PRESENTER_NODE_TYPES;
|
|
5697
6027
|
cardContentNodeTypes = EDITABLE_CARD_CONTENT_NODE_TYPES;
|
|
6028
|
+
advancedJsonOnlyNodeFields = ADVANCED_JSON_ONLY_NODE_FIELDS;
|
|
5698
6029
|
presetOptions = this.presetRegistry.list();
|
|
5699
6030
|
documentJson = '';
|
|
5700
6031
|
layout = 'block';
|
|
@@ -5706,8 +6037,13 @@ class PraxisRichContentConfigEditor {
|
|
|
5706
6037
|
validationIssues = [];
|
|
5707
6038
|
nodeCount = 0;
|
|
5708
6039
|
nodeTypeSummary = '';
|
|
6040
|
+
selectedNodeIndex = 0;
|
|
6041
|
+
activeEditorPanel = 'guided';
|
|
6042
|
+
advancedRulesOpen = false;
|
|
6043
|
+
advancedJsonFieldErrors = {};
|
|
5709
6044
|
initialInputs = this.normalizeInputs(this.inputs);
|
|
5710
6045
|
pendingRemoval = null;
|
|
6046
|
+
advancedJsonFieldDrafts = {};
|
|
5711
6047
|
ngOnChanges(changes) {
|
|
5712
6048
|
if (changes['inputs']) {
|
|
5713
6049
|
this.load(this.normalizeInputs(this.inputs), false);
|
|
@@ -5720,7 +6056,7 @@ class PraxisRichContentConfigEditor {
|
|
|
5720
6056
|
}
|
|
5721
6057
|
getSettingsValue() {
|
|
5722
6058
|
const document = this.parseDocument();
|
|
5723
|
-
if (!document)
|
|
6059
|
+
if (!document || this.hasAdvancedJsonFieldErrors())
|
|
5724
6060
|
return null;
|
|
5725
6061
|
return {
|
|
5726
6062
|
inputs: {
|
|
@@ -5747,6 +6083,7 @@ class PraxisRichContentConfigEditor {
|
|
|
5747
6083
|
this.isDirty$.next(!this.matchesInitialState());
|
|
5748
6084
|
}
|
|
5749
6085
|
onDocumentJsonChange() {
|
|
6086
|
+
this.clearAdvancedJsonFieldState();
|
|
5750
6087
|
this.parseDocument();
|
|
5751
6088
|
this.markDirty();
|
|
5752
6089
|
}
|
|
@@ -5758,14 +6095,32 @@ class PraxisRichContentConfigEditor {
|
|
|
5758
6095
|
this.parseDocument();
|
|
5759
6096
|
this.markDirty();
|
|
5760
6097
|
}
|
|
6098
|
+
selectTopLevelNode(index) {
|
|
6099
|
+
this.selectedNodeIndex = index;
|
|
6100
|
+
this.advancedRulesOpen = false;
|
|
6101
|
+
}
|
|
6102
|
+
selectEditorPanel(panel) {
|
|
6103
|
+
this.activeEditorPanel = panel;
|
|
6104
|
+
this.cdr.markForCheck();
|
|
6105
|
+
}
|
|
6106
|
+
openAdvancedRules() {
|
|
6107
|
+
this.advancedRulesOpen = true;
|
|
6108
|
+
this.cdr.markForCheck();
|
|
6109
|
+
}
|
|
6110
|
+
onAdvancedRulesToggle(event) {
|
|
6111
|
+
const target = event.target;
|
|
6112
|
+
this.advancedRulesOpen = target?.open === true;
|
|
6113
|
+
}
|
|
5761
6114
|
addTopLevelNode() {
|
|
5762
6115
|
const document = this.ensureEditableDocument();
|
|
5763
6116
|
document.nodes.push(this.createDefaultNode(this.newNodeType));
|
|
6117
|
+
this.selectedNodeIndex = document.nodes.length - 1;
|
|
5764
6118
|
this.syncStructuredDocumentChange();
|
|
5765
6119
|
}
|
|
5766
6120
|
removeTopLevelNode(index) {
|
|
5767
6121
|
const document = this.ensureEditableDocument();
|
|
5768
6122
|
document.nodes.splice(index, 1);
|
|
6123
|
+
this.reconcileSelectedNodeIndex(document);
|
|
5769
6124
|
this.syncStructuredDocumentChange();
|
|
5770
6125
|
}
|
|
5771
6126
|
moveTopLevelNode(index, delta) {
|
|
@@ -5776,6 +6131,17 @@ class PraxisRichContentConfigEditor {
|
|
|
5776
6131
|
}
|
|
5777
6132
|
const [node] = document.nodes.splice(index, 1);
|
|
5778
6133
|
document.nodes.splice(nextIndex, 0, node);
|
|
6134
|
+
if (this.selectedNodeIndex === index) {
|
|
6135
|
+
this.selectedNodeIndex = nextIndex;
|
|
6136
|
+
}
|
|
6137
|
+
else if (delta < 0 &&
|
|
6138
|
+
this.selectedNodeIndex === nextIndex) {
|
|
6139
|
+
this.selectedNodeIndex = index;
|
|
6140
|
+
}
|
|
6141
|
+
else if (delta > 0 &&
|
|
6142
|
+
this.selectedNodeIndex === nextIndex) {
|
|
6143
|
+
this.selectedNodeIndex = index;
|
|
6144
|
+
}
|
|
5779
6145
|
this.syncStructuredDocumentChange();
|
|
5780
6146
|
}
|
|
5781
6147
|
changeTopLevelNodeType(index, nextType) {
|
|
@@ -5888,6 +6254,93 @@ class PraxisRichContentConfigEditor {
|
|
|
5888
6254
|
}
|
|
5889
6255
|
this.syncStructuredDocumentChange();
|
|
5890
6256
|
}
|
|
6257
|
+
getCardInteractionField(index, field) {
|
|
6258
|
+
const interaction = this.ensureCardNode(index).interaction;
|
|
6259
|
+
const value = interaction?.[field];
|
|
6260
|
+
return typeof value === 'string' ? value : '';
|
|
6261
|
+
}
|
|
6262
|
+
setCardInteractionField(index, field, value) {
|
|
6263
|
+
const card = this.ensureCardNode(index);
|
|
6264
|
+
const normalized = value.trim();
|
|
6265
|
+
if (field === 'mode' && (!normalized || normalized === 'none')) {
|
|
6266
|
+
if (card.interaction) {
|
|
6267
|
+
card.interaction.mode = 'none';
|
|
6268
|
+
}
|
|
6269
|
+
this.pruneEmptyCardInteraction(index);
|
|
6270
|
+
this.syncStructuredDocumentChange();
|
|
6271
|
+
return;
|
|
6272
|
+
}
|
|
6273
|
+
card.interaction ??= { mode: 'none' };
|
|
6274
|
+
const interaction = card.interaction;
|
|
6275
|
+
if (normalized) {
|
|
6276
|
+
interaction[field] = normalized;
|
|
6277
|
+
}
|
|
6278
|
+
else {
|
|
6279
|
+
delete interaction[field];
|
|
6280
|
+
}
|
|
6281
|
+
this.pruneEmptyCardInteraction(index);
|
|
6282
|
+
this.syncStructuredDocumentChange();
|
|
6283
|
+
}
|
|
6284
|
+
getCardInteractionBooleanField(index, field) {
|
|
6285
|
+
const interaction = this.ensureCardNode(index).interaction;
|
|
6286
|
+
return interaction?.[field] === true;
|
|
6287
|
+
}
|
|
6288
|
+
setCardInteractionBooleanField(index, field, value) {
|
|
6289
|
+
const card = this.ensureCardNode(index);
|
|
6290
|
+
card.interaction ??= { mode: 'none' };
|
|
6291
|
+
const interaction = card.interaction;
|
|
6292
|
+
if (value) {
|
|
6293
|
+
interaction[field] = true;
|
|
6294
|
+
}
|
|
6295
|
+
else {
|
|
6296
|
+
delete interaction[field];
|
|
6297
|
+
}
|
|
6298
|
+
this.pruneEmptyCardInteraction(index);
|
|
6299
|
+
this.syncStructuredDocumentChange();
|
|
6300
|
+
}
|
|
6301
|
+
getCardInteractionActionField(index, field) {
|
|
6302
|
+
const action = this.ensureCardNode(index).interaction?.action;
|
|
6303
|
+
return typeof action?.[field] === 'string' ? action[field] : '';
|
|
6304
|
+
}
|
|
6305
|
+
setCardInteractionActionField(index, field, value) {
|
|
6306
|
+
const card = this.ensureCardNode(index);
|
|
6307
|
+
card.interaction ??= { mode: 'action' };
|
|
6308
|
+
card.interaction.action ??= { actionId: '' };
|
|
6309
|
+
const action = card.interaction.action;
|
|
6310
|
+
const normalized = value.trim();
|
|
6311
|
+
if (normalized) {
|
|
6312
|
+
action[field] = value;
|
|
6313
|
+
}
|
|
6314
|
+
else {
|
|
6315
|
+
delete action[field];
|
|
6316
|
+
}
|
|
6317
|
+
if (!card.interaction.action.actionId) {
|
|
6318
|
+
delete card.interaction.action;
|
|
6319
|
+
}
|
|
6320
|
+
this.pruneEmptyCardInteraction(index);
|
|
6321
|
+
this.syncStructuredDocumentChange();
|
|
6322
|
+
}
|
|
6323
|
+
getCardAccessibilityField(index, field) {
|
|
6324
|
+
const accessibility = this.ensureCardNode(index).accessibility;
|
|
6325
|
+
const value = accessibility?.[field];
|
|
6326
|
+
return typeof value === 'string' ? value : '';
|
|
6327
|
+
}
|
|
6328
|
+
setCardAccessibilityField(index, field, value) {
|
|
6329
|
+
const card = this.ensureCardNode(index);
|
|
6330
|
+
const normalized = value.trim();
|
|
6331
|
+
card.accessibility ??= {};
|
|
6332
|
+
const accessibility = card.accessibility;
|
|
6333
|
+
if (normalized) {
|
|
6334
|
+
accessibility[field] = value;
|
|
6335
|
+
}
|
|
6336
|
+
else {
|
|
6337
|
+
delete accessibility[field];
|
|
6338
|
+
}
|
|
6339
|
+
if (!Object.keys(accessibility).length) {
|
|
6340
|
+
delete card.accessibility;
|
|
6341
|
+
}
|
|
6342
|
+
this.syncStructuredDocumentChange();
|
|
6343
|
+
}
|
|
5891
6344
|
addCardSlotNode(index, slot) {
|
|
5892
6345
|
this.ensureCardSlotNodes(index, slot).push(createDefaultPresenterNode('text', this.tx.bind(this)));
|
|
5893
6346
|
this.syncStructuredDocumentChange();
|
|
@@ -6187,6 +6640,65 @@ class PraxisRichContentConfigEditor {
|
|
|
6187
6640
|
};
|
|
6188
6641
|
this.syncStructuredDocumentChange();
|
|
6189
6642
|
}
|
|
6643
|
+
getTabsItemCapabilityList(index, itemIndex) {
|
|
6644
|
+
const item = this.ensureTabsNode(index).items[itemIndex];
|
|
6645
|
+
return Array.isArray(item?.requiresCapabilities)
|
|
6646
|
+
? item.requiresCapabilities.join(', ')
|
|
6647
|
+
: '';
|
|
6648
|
+
}
|
|
6649
|
+
setTabsItemCapabilityList(index, itemIndex, value) {
|
|
6650
|
+
const node = this.ensureTabsNode(index);
|
|
6651
|
+
const current = node.items[itemIndex] ?? { content: [] };
|
|
6652
|
+
const capabilities = value
|
|
6653
|
+
.split(',')
|
|
6654
|
+
.map((item) => item.trim())
|
|
6655
|
+
.filter(Boolean);
|
|
6656
|
+
node.items[itemIndex] = {
|
|
6657
|
+
...current,
|
|
6658
|
+
requiresCapabilities: capabilities.length ? capabilities : undefined,
|
|
6659
|
+
content: Array.isArray(current.content) && current.content.length
|
|
6660
|
+
? current.content
|
|
6661
|
+
: [
|
|
6662
|
+
{
|
|
6663
|
+
type: 'text',
|
|
6664
|
+
text: this.tx('editor.defaultTabText', 'Tab content'),
|
|
6665
|
+
},
|
|
6666
|
+
],
|
|
6667
|
+
};
|
|
6668
|
+
this.syncStructuredDocumentChange();
|
|
6669
|
+
}
|
|
6670
|
+
getTabsItemVisibleWhenPath(index, itemIndex) {
|
|
6671
|
+
const item = this.ensureTabsNode(index).items[itemIndex];
|
|
6672
|
+
return parseSimpleVisibleWhen(item?.visibleWhen)?.path ?? '';
|
|
6673
|
+
}
|
|
6674
|
+
getTabsItemVisibleWhenValue(index, itemIndex) {
|
|
6675
|
+
const item = this.ensureTabsNode(index).items[itemIndex];
|
|
6676
|
+
return parseSimpleVisibleWhen(item?.visibleWhen)?.value ?? '';
|
|
6677
|
+
}
|
|
6678
|
+
setTabsItemVisibleWhenPath(index, itemIndex, path) {
|
|
6679
|
+
const item = this.ensureTabsNode(index).items[itemIndex];
|
|
6680
|
+
if (!item)
|
|
6681
|
+
return;
|
|
6682
|
+
this.setTabsItemSimpleVisibleWhen(item, path, this.getTabsItemVisibleWhenValue(index, itemIndex));
|
|
6683
|
+
this.syncStructuredDocumentChange();
|
|
6684
|
+
}
|
|
6685
|
+
setTabsItemVisibleWhenValue(index, itemIndex, value) {
|
|
6686
|
+
const item = this.ensureTabsNode(index).items[itemIndex];
|
|
6687
|
+
if (!item)
|
|
6688
|
+
return;
|
|
6689
|
+
this.setTabsItemSimpleVisibleWhen(item, this.getTabsItemVisibleWhenPath(index, itemIndex), value);
|
|
6690
|
+
this.syncStructuredDocumentChange();
|
|
6691
|
+
}
|
|
6692
|
+
setTabsItemSimpleVisibleWhen(item, path, value) {
|
|
6693
|
+
const trimmedPath = path.trim();
|
|
6694
|
+
if (!trimmedPath) {
|
|
6695
|
+
delete item.visibleWhen;
|
|
6696
|
+
return;
|
|
6697
|
+
}
|
|
6698
|
+
item.visibleWhen = {
|
|
6699
|
+
'===': [{ var: trimmedPath }, parseScalar(value)],
|
|
6700
|
+
};
|
|
6701
|
+
}
|
|
6190
6702
|
getActionCardSecondaryActions(index) {
|
|
6191
6703
|
return this.ensureActionCardSecondaryActions(index);
|
|
6192
6704
|
}
|
|
@@ -6406,6 +6918,203 @@ class PraxisRichContentConfigEditor {
|
|
|
6406
6918
|
setStyleEntry(node, this.getFirstStyleName(node), propertyValue);
|
|
6407
6919
|
this.syncStructuredDocumentChange();
|
|
6408
6920
|
}
|
|
6921
|
+
hasDocumentContext() {
|
|
6922
|
+
return (!!this.parsedDocument?.context ||
|
|
6923
|
+
!!this.getDocumentContextFieldError('scopes') ||
|
|
6924
|
+
!!this.getDocumentContextFieldError('aliases'));
|
|
6925
|
+
}
|
|
6926
|
+
getDocumentContextScopes() {
|
|
6927
|
+
const key = this.getDocumentContextFieldKey('scopes');
|
|
6928
|
+
if (Object.prototype.hasOwnProperty.call(this.advancedJsonFieldDrafts, key)) {
|
|
6929
|
+
return this.advancedJsonFieldDrafts[key] ?? '';
|
|
6930
|
+
}
|
|
6931
|
+
return this.parsedDocument?.context?.scopes?.join(', ') ?? '';
|
|
6932
|
+
}
|
|
6933
|
+
setDocumentContextScopes(value) {
|
|
6934
|
+
const key = this.getDocumentContextFieldKey('scopes');
|
|
6935
|
+
this.advancedJsonFieldDrafts[key] = value;
|
|
6936
|
+
const scopes = value
|
|
6937
|
+
.split(',')
|
|
6938
|
+
.map((item) => item.trim())
|
|
6939
|
+
.filter(Boolean);
|
|
6940
|
+
const invalidScopes = scopes.filter((scope) => !RICH_BLOCK_CONTEXT_SCOPES.includes(scope));
|
|
6941
|
+
if (invalidScopes.length) {
|
|
6942
|
+
this.setAdvancedJsonFieldInvalid(key, this.tx('editor.validation.contextScopes', 'Use supported context scopes only.'));
|
|
6943
|
+
return;
|
|
6944
|
+
}
|
|
6945
|
+
delete this.advancedJsonFieldDrafts[key];
|
|
6946
|
+
delete this.advancedJsonFieldErrors[key];
|
|
6947
|
+
this.updateDocumentContext((context) => {
|
|
6948
|
+
if (scopes.length) {
|
|
6949
|
+
context.scopes = scopes;
|
|
6950
|
+
}
|
|
6951
|
+
else {
|
|
6952
|
+
delete context.scopes;
|
|
6953
|
+
}
|
|
6954
|
+
});
|
|
6955
|
+
}
|
|
6956
|
+
getDocumentContextAliasesValue() {
|
|
6957
|
+
const key = this.getDocumentContextFieldKey('aliases');
|
|
6958
|
+
if (Object.prototype.hasOwnProperty.call(this.advancedJsonFieldDrafts, key)) {
|
|
6959
|
+
return this.advancedJsonFieldDrafts[key] ?? '';
|
|
6960
|
+
}
|
|
6961
|
+
const aliases = this.parsedDocument?.context?.aliases;
|
|
6962
|
+
return aliases ? this.stringify(aliases) : '';
|
|
6963
|
+
}
|
|
6964
|
+
setDocumentContextAliases(value) {
|
|
6965
|
+
const key = this.getDocumentContextFieldKey('aliases');
|
|
6966
|
+
const trimmed = value.trim();
|
|
6967
|
+
this.advancedJsonFieldDrafts[key] = value;
|
|
6968
|
+
if (!trimmed) {
|
|
6969
|
+
delete this.advancedJsonFieldDrafts[key];
|
|
6970
|
+
delete this.advancedJsonFieldErrors[key];
|
|
6971
|
+
this.updateDocumentContext((context) => {
|
|
6972
|
+
delete context.aliases;
|
|
6973
|
+
});
|
|
6974
|
+
return;
|
|
6975
|
+
}
|
|
6976
|
+
let aliases;
|
|
6977
|
+
try {
|
|
6978
|
+
aliases = JSON.parse(trimmed);
|
|
6979
|
+
}
|
|
6980
|
+
catch {
|
|
6981
|
+
this.setAdvancedJsonFieldInvalid(key, this.tx('editor.validation.invalidFieldJson', 'Enter valid JSON.'));
|
|
6982
|
+
return;
|
|
6983
|
+
}
|
|
6984
|
+
if (!isPlainRecord(aliases) ||
|
|
6985
|
+
Object.values(aliases).some((alias) => typeof alias !== 'string')) {
|
|
6986
|
+
this.setAdvancedJsonFieldInvalid(key, this.tx('editor.validation.contextAliases', 'Context aliases must be a JSON object with string values.'));
|
|
6987
|
+
return;
|
|
6988
|
+
}
|
|
6989
|
+
delete this.advancedJsonFieldDrafts[key];
|
|
6990
|
+
delete this.advancedJsonFieldErrors[key];
|
|
6991
|
+
this.updateDocumentContext((context) => {
|
|
6992
|
+
context.aliases = aliases;
|
|
6993
|
+
});
|
|
6994
|
+
}
|
|
6995
|
+
getDocumentContextFieldError(field) {
|
|
6996
|
+
return this.advancedJsonFieldErrors[this.getDocumentContextFieldKey(field)] ?? '';
|
|
6997
|
+
}
|
|
6998
|
+
getDocumentContextAliasesPlaceholder() {
|
|
6999
|
+
return '{\n "owner": "decision.owner",\n "risk": "decision.risk"\n}';
|
|
7000
|
+
}
|
|
7001
|
+
getAdvancedJsonOnlyFields(node) {
|
|
7002
|
+
const source = node;
|
|
7003
|
+
return ADVANCED_JSON_ONLY_NODE_FIELDS.filter((field) => source[field] !== undefined);
|
|
7004
|
+
}
|
|
7005
|
+
getAdvancedJsonFieldValue(index, node, field) {
|
|
7006
|
+
const key = this.getAdvancedJsonFieldKey(index, field);
|
|
7007
|
+
if (Object.prototype.hasOwnProperty.call(this.advancedJsonFieldDrafts, key)) {
|
|
7008
|
+
return this.advancedJsonFieldDrafts[key] ?? '';
|
|
7009
|
+
}
|
|
7010
|
+
const value = node[field];
|
|
7011
|
+
return value === undefined ? '' : this.stringify(value);
|
|
7012
|
+
}
|
|
7013
|
+
setAdvancedJsonField(index, field, value) {
|
|
7014
|
+
const key = this.getAdvancedJsonFieldKey(index, field);
|
|
7015
|
+
const trimmed = value.trim();
|
|
7016
|
+
this.advancedJsonFieldDrafts[key] = value;
|
|
7017
|
+
if (!trimmed) {
|
|
7018
|
+
const node = this.ensureEditableDocument().nodes[index];
|
|
7019
|
+
delete node[field];
|
|
7020
|
+
delete this.advancedJsonFieldDrafts[key];
|
|
7021
|
+
delete this.advancedJsonFieldErrors[key];
|
|
7022
|
+
this.syncStructuredDocumentChange();
|
|
7023
|
+
return;
|
|
7024
|
+
}
|
|
7025
|
+
let parsed;
|
|
7026
|
+
try {
|
|
7027
|
+
parsed = JSON.parse(trimmed);
|
|
7028
|
+
}
|
|
7029
|
+
catch {
|
|
7030
|
+
this.setAdvancedJsonFieldInvalid(key, this.tx('editor.validation.invalidFieldJson', 'Enter valid JSON.'));
|
|
7031
|
+
return;
|
|
7032
|
+
}
|
|
7033
|
+
if (!this.isAdvancedJsonFieldShapeValid(field, parsed)) {
|
|
7034
|
+
this.setAdvancedJsonFieldInvalid(key, this.getAdvancedJsonFieldShapeError(field));
|
|
7035
|
+
return;
|
|
7036
|
+
}
|
|
7037
|
+
const nextDocument = this.cloneValue(this.ensureEditableDocument());
|
|
7038
|
+
const node = nextDocument.nodes[index];
|
|
7039
|
+
node[field] = parsed;
|
|
7040
|
+
const nextJson = this.stringify(nextDocument);
|
|
7041
|
+
const validation = validateRichContentDocument(nextDocument);
|
|
7042
|
+
if (!validation.valid) {
|
|
7043
|
+
this.setAdvancedJsonFieldInvalid(key, this.tx('editor.validation.invalidCanonicalField', 'The JSON is valid but does not match the rich-content contract.'));
|
|
7044
|
+
return;
|
|
7045
|
+
}
|
|
7046
|
+
this.parsedDocument = nextDocument;
|
|
7047
|
+
this.documentJson = nextJson;
|
|
7048
|
+
delete this.advancedJsonFieldDrafts[key];
|
|
7049
|
+
delete this.advancedJsonFieldErrors[key];
|
|
7050
|
+
this.parseDocument();
|
|
7051
|
+
this.markDirty();
|
|
7052
|
+
}
|
|
7053
|
+
getAdvancedJsonFieldError(index, field) {
|
|
7054
|
+
return this.advancedJsonFieldErrors[this.getAdvancedJsonFieldKey(index, field)] ?? '';
|
|
7055
|
+
}
|
|
7056
|
+
getAdvancedJsonFieldPlaceholder(field) {
|
|
7057
|
+
switch (field) {
|
|
7058
|
+
case 'bindings':
|
|
7059
|
+
return '{\n "scopes": ["row"],\n "aliases": {\n "risk": "decision.risk"\n }\n}';
|
|
7060
|
+
case 'classWhen':
|
|
7061
|
+
return '[\n {\n "className": "is-active",\n "expr": { "var": "row.active" }\n }\n]';
|
|
7062
|
+
case 'styleWhen':
|
|
7063
|
+
return '[\n {\n "style": { "color": "var(--md-sys-color-primary)" },\n "expr": { "var": "row.active" }\n }\n]';
|
|
7064
|
+
default:
|
|
7065
|
+
return '{\n "var": "row.active"\n}';
|
|
7066
|
+
}
|
|
7067
|
+
}
|
|
7068
|
+
getAdvancedJsonFieldKey(index, field) {
|
|
7069
|
+
return `${index}:${field}`;
|
|
7070
|
+
}
|
|
7071
|
+
getDocumentContextFieldKey(field) {
|
|
7072
|
+
return `document:context:${field}`;
|
|
7073
|
+
}
|
|
7074
|
+
updateDocumentContext(update) {
|
|
7075
|
+
const document = this.ensureEditableDocument();
|
|
7076
|
+
const context = {
|
|
7077
|
+
...(document.context ?? {}),
|
|
7078
|
+
};
|
|
7079
|
+
update(context);
|
|
7080
|
+
if (context.scopes?.length || Object.keys(context.aliases ?? {}).length) {
|
|
7081
|
+
document.context = context;
|
|
7082
|
+
}
|
|
7083
|
+
else {
|
|
7084
|
+
delete document.context;
|
|
7085
|
+
}
|
|
7086
|
+
this.syncStructuredDocumentChange();
|
|
7087
|
+
}
|
|
7088
|
+
setAdvancedJsonFieldInvalid(key, message) {
|
|
7089
|
+
this.advancedJsonFieldErrors[key] = message;
|
|
7090
|
+
this.valid = false;
|
|
7091
|
+
this.errorMessage = message;
|
|
7092
|
+
this.isValid$.next(false);
|
|
7093
|
+
this.markDirty();
|
|
7094
|
+
this.cdr.markForCheck();
|
|
7095
|
+
}
|
|
7096
|
+
clearAdvancedJsonFieldState() {
|
|
7097
|
+
this.advancedJsonFieldDrafts = {};
|
|
7098
|
+
this.advancedJsonFieldErrors = {};
|
|
7099
|
+
}
|
|
7100
|
+
hasAdvancedJsonFieldErrors() {
|
|
7101
|
+
return Object.keys(this.advancedJsonFieldErrors).length > 0;
|
|
7102
|
+
}
|
|
7103
|
+
isAdvancedJsonFieldShapeValid(field, value) {
|
|
7104
|
+
if (field === 'classWhen' || field === 'styleWhen') {
|
|
7105
|
+
return Array.isArray(value);
|
|
7106
|
+
}
|
|
7107
|
+
if (field === 'bindings') {
|
|
7108
|
+
return isPlainRecord(value);
|
|
7109
|
+
}
|
|
7110
|
+
return value === null || isPlainRecord(value);
|
|
7111
|
+
}
|
|
7112
|
+
getAdvancedJsonFieldShapeError(field) {
|
|
7113
|
+
if (field === 'classWhen' || field === 'styleWhen') {
|
|
7114
|
+
return this.tx('editor.validation.advancedArrayField', 'This field must be a JSON array.');
|
|
7115
|
+
}
|
|
7116
|
+
return this.tx('editor.validation.advancedObjectField', 'This field must be a JSON object.');
|
|
7117
|
+
}
|
|
6409
7118
|
requestTopLevelNodeRemoval(index) {
|
|
6410
7119
|
this.pendingRemoval = { scope: 'nodes', index };
|
|
6411
7120
|
}
|
|
@@ -6553,6 +7262,12 @@ class PraxisRichContentConfigEditor {
|
|
|
6553
7262
|
.filter((issue) => issue.path === path || issue.path.startsWith(`${path}.`))
|
|
6554
7263
|
.map((issue) => this.tx(issue.messageKey, issue.fallback));
|
|
6555
7264
|
}
|
|
7265
|
+
getIssueCount(path) {
|
|
7266
|
+
return this.validationIssues.filter((issue) => issue.path === path || issue.path.startsWith(`${path}.`)).length;
|
|
7267
|
+
}
|
|
7268
|
+
getSelectedNodeIssueCount() {
|
|
7269
|
+
return this.getIssueCount(`$.nodes[${this.selectedNodeIndex}]`);
|
|
7270
|
+
}
|
|
6556
7271
|
isEditableNodeType(type) {
|
|
6557
7272
|
return EDITABLE_TOP_LEVEL_NODE_TYPES.includes(type);
|
|
6558
7273
|
}
|
|
@@ -6560,6 +7275,7 @@ class PraxisRichContentConfigEditor {
|
|
|
6560
7275
|
return EDITABLE_PRESENTER_NODE_TYPES.includes(type);
|
|
6561
7276
|
}
|
|
6562
7277
|
load(inputs, dirty) {
|
|
7278
|
+
this.clearAdvancedJsonFieldState();
|
|
6563
7279
|
const document = inputs.document ?? EMPTY_DOCUMENT;
|
|
6564
7280
|
const layout = inputs.layout === 'inline' ? 'inline' : 'block';
|
|
6565
7281
|
const rootClassName = typeof inputs.rootClassName === 'string' ? inputs.rootClassName : '';
|
|
@@ -6610,6 +7326,16 @@ class PraxisRichContentConfigEditor {
|
|
|
6610
7326
|
}
|
|
6611
7327
|
return node;
|
|
6612
7328
|
}
|
|
7329
|
+
pruneEmptyCardInteraction(index) {
|
|
7330
|
+
const card = this.ensureCardNode(index);
|
|
7331
|
+
const interaction = card.interaction;
|
|
7332
|
+
if (!interaction)
|
|
7333
|
+
return;
|
|
7334
|
+
const hasOnlyNoneMode = Object.keys(interaction).length === 1 && interaction['mode'] === 'none';
|
|
7335
|
+
if (!Object.keys(interaction).length || hasOnlyNoneMode) {
|
|
7336
|
+
delete card.interaction;
|
|
7337
|
+
}
|
|
7338
|
+
}
|
|
6613
7339
|
ensureCardSlotNodes(index, slot) {
|
|
6614
7340
|
const card = this.ensureCardNode(index);
|
|
6615
7341
|
if (!Array.isArray(card[slot])) {
|
|
@@ -6911,11 +7637,18 @@ class PraxisRichContentConfigEditor {
|
|
|
6911
7637
|
return null;
|
|
6912
7638
|
}
|
|
6913
7639
|
const document = parsed;
|
|
7640
|
+
this.parsedDocument = document;
|
|
7641
|
+
this.reconcileSelectedNodeIndex(document);
|
|
7642
|
+
this.updateDocumentOverview(document);
|
|
7643
|
+
if (this.hasAdvancedJsonFieldErrors()) {
|
|
7644
|
+
this.valid = false;
|
|
7645
|
+
this.errorMessage = this.tx('editor.validation.invalidFieldJson', 'Enter valid JSON.');
|
|
7646
|
+
this.isValid$.next(false);
|
|
7647
|
+
return document;
|
|
7648
|
+
}
|
|
6914
7649
|
this.valid = true;
|
|
6915
7650
|
this.errorMessage = '';
|
|
6916
7651
|
this.isValid$.next(true);
|
|
6917
|
-
this.parsedDocument = document;
|
|
6918
|
-
this.updateDocumentOverview(document);
|
|
6919
7652
|
return document;
|
|
6920
7653
|
}
|
|
6921
7654
|
catch (error) {
|
|
@@ -6934,6 +7667,20 @@ class PraxisRichContentConfigEditor {
|
|
|
6934
7667
|
this.nodeCount = 0;
|
|
6935
7668
|
this.nodeTypeSummary = '';
|
|
6936
7669
|
}
|
|
7670
|
+
reconcileSelectedNodeIndex(document) {
|
|
7671
|
+
const nodeTotal = document.nodes.length;
|
|
7672
|
+
if (!nodeTotal) {
|
|
7673
|
+
this.selectedNodeIndex = 0;
|
|
7674
|
+
return;
|
|
7675
|
+
}
|
|
7676
|
+
if (this.selectedNodeIndex < 0) {
|
|
7677
|
+
this.selectedNodeIndex = 0;
|
|
7678
|
+
return;
|
|
7679
|
+
}
|
|
7680
|
+
if (this.selectedNodeIndex >= nodeTotal) {
|
|
7681
|
+
this.selectedNodeIndex = nodeTotal - 1;
|
|
7682
|
+
}
|
|
7683
|
+
}
|
|
6937
7684
|
updateDocumentOverview(document) {
|
|
6938
7685
|
const typeCounts = new Map();
|
|
6939
7686
|
let count = 0;
|
|
@@ -7074,6 +7821,54 @@ class PraxisRichContentConfigEditor {
|
|
|
7074
7821
|
</label>
|
|
7075
7822
|
</div>
|
|
7076
7823
|
|
|
7824
|
+
<details
|
|
7825
|
+
class="prx-rich-editor__document-context"
|
|
7826
|
+
[open]="hasDocumentContext()"
|
|
7827
|
+
>
|
|
7828
|
+
<summary>
|
|
7829
|
+
<span>{{ tx('editor.documentContext', 'Document context') }}</span>
|
|
7830
|
+
<small>
|
|
7831
|
+
{{
|
|
7832
|
+
tx(
|
|
7833
|
+
'editor.documentContextHelp',
|
|
7834
|
+
'Canonical data scopes and aliases available to rich-content bindings.'
|
|
7835
|
+
)
|
|
7836
|
+
}}
|
|
7837
|
+
</small>
|
|
7838
|
+
</summary>
|
|
7839
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
7840
|
+
<legend>{{ tx('editor.documentContextFields', 'Context contract') }}</legend>
|
|
7841
|
+
<label class="prx-rich-editor__wide-field">
|
|
7842
|
+
<span>{{ tx('editor.field.contextScopes', 'Context scopes') }}</span>
|
|
7843
|
+
<input
|
|
7844
|
+
[ngModel]="getDocumentContextScopes()"
|
|
7845
|
+
(ngModelChange)="setDocumentContextScopes($event)"
|
|
7846
|
+
[placeholder]="tx('editor.placeholder.contextScopes', 'row, user, tenant')"
|
|
7847
|
+
[class.invalid]="getDocumentContextFieldError('scopes')"
|
|
7848
|
+
/>
|
|
7849
|
+
@if (getDocumentContextFieldError('scopes')) {
|
|
7850
|
+
<small class="prx-rich-editor__field-error">
|
|
7851
|
+
{{ getDocumentContextFieldError('scopes') }}
|
|
7852
|
+
</small>
|
|
7853
|
+
}
|
|
7854
|
+
</label>
|
|
7855
|
+
<label class="prx-rich-editor__wide-field prx-rich-editor__json-field">
|
|
7856
|
+
<span>{{ tx('editor.field.contextAliases', 'Context aliases') }}</span>
|
|
7857
|
+
<textarea
|
|
7858
|
+
[ngModel]="getDocumentContextAliasesValue()"
|
|
7859
|
+
(ngModelChange)="setDocumentContextAliases($event)"
|
|
7860
|
+
[placeholder]="getDocumentContextAliasesPlaceholder()"
|
|
7861
|
+
[class.invalid]="getDocumentContextFieldError('aliases')"
|
|
7862
|
+
></textarea>
|
|
7863
|
+
@if (getDocumentContextFieldError('aliases')) {
|
|
7864
|
+
<small class="prx-rich-editor__field-error">
|
|
7865
|
+
{{ getDocumentContextFieldError('aliases') }}
|
|
7866
|
+
</small>
|
|
7867
|
+
}
|
|
7868
|
+
</label>
|
|
7869
|
+
</fieldset>
|
|
7870
|
+
</details>
|
|
7871
|
+
|
|
7077
7872
|
<ng-template
|
|
7078
7873
|
#presenterFields
|
|
7079
7874
|
let-node="node"
|
|
@@ -7109,55 +7904,137 @@ class PraxisRichContentConfigEditor {
|
|
|
7109
7904
|
/>
|
|
7110
7905
|
</label>
|
|
7111
7906
|
}
|
|
7112
|
-
@case ('
|
|
7907
|
+
@case ('avatar') {
|
|
7113
7908
|
<label>
|
|
7114
|
-
<span>{{ tx('editor.field.
|
|
7909
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
7115
7910
|
<input
|
|
7116
|
-
[ngModel]="getStringField(node, '
|
|
7117
|
-
(ngModelChange)="setString('
|
|
7911
|
+
[ngModel]="getStringField(node, 'name')"
|
|
7912
|
+
(ngModelChange)="setString('name', $event)"
|
|
7118
7913
|
/>
|
|
7119
7914
|
</label>
|
|
7120
7915
|
<label>
|
|
7121
|
-
<span>{{ tx('editor.field.
|
|
7916
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
7122
7917
|
<input
|
|
7123
|
-
[ngModel]="getStringField(node, '
|
|
7124
|
-
(ngModelChange)="setString('
|
|
7918
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
7919
|
+
(ngModelChange)="setString('nameExpr', $event)"
|
|
7125
7920
|
/>
|
|
7126
7921
|
</label>
|
|
7127
|
-
}
|
|
7128
|
-
@case ('link') {
|
|
7129
7922
|
<label>
|
|
7130
|
-
<span>{{ tx('editor.field.
|
|
7923
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
7131
7924
|
<input
|
|
7132
|
-
[ngModel]="getStringField(node, '
|
|
7133
|
-
(ngModelChange)="setString('
|
|
7925
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
7926
|
+
(ngModelChange)="setString('imageSrc', $event)"
|
|
7134
7927
|
/>
|
|
7135
7928
|
</label>
|
|
7136
7929
|
<label>
|
|
7137
|
-
<span>{{ tx('editor.field.
|
|
7930
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
7138
7931
|
<input
|
|
7139
|
-
[ngModel]="getStringField(node, '
|
|
7140
|
-
(ngModelChange)="setString('
|
|
7932
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
7933
|
+
(ngModelChange)="setString('imageSrcExpr', $event)"
|
|
7141
7934
|
/>
|
|
7142
7935
|
</label>
|
|
7143
|
-
}
|
|
7144
|
-
@case ('metric') {
|
|
7145
7936
|
<label>
|
|
7146
|
-
<span>{{ tx('editor.field.
|
|
7937
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
7147
7938
|
<input
|
|
7148
|
-
[ngModel]="getStringField(node, '
|
|
7149
|
-
(ngModelChange)="setString('
|
|
7939
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
7940
|
+
(ngModelChange)="setString('initials', $event)"
|
|
7150
7941
|
/>
|
|
7151
7942
|
</label>
|
|
7152
7943
|
<label>
|
|
7153
|
-
<span>{{ tx('editor.field.
|
|
7944
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
7154
7945
|
<input
|
|
7155
|
-
[ngModel]="getStringField(node, '
|
|
7156
|
-
(ngModelChange)="setString('
|
|
7946
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
7947
|
+
(ngModelChange)="setString('initialsExpr', $event)"
|
|
7157
7948
|
/>
|
|
7158
7949
|
</label>
|
|
7159
7950
|
}
|
|
7160
|
-
@case ('
|
|
7951
|
+
@case ('image') {
|
|
7952
|
+
<label>
|
|
7953
|
+
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
7954
|
+
<input
|
|
7955
|
+
[ngModel]="getStringField(node, 'src')"
|
|
7956
|
+
(ngModelChange)="setString('src', $event)"
|
|
7957
|
+
/>
|
|
7958
|
+
</label>
|
|
7959
|
+
<label>
|
|
7960
|
+
<span>{{ tx('editor.field.srcExpr', 'Image URL binding') }}</span>
|
|
7961
|
+
<input
|
|
7962
|
+
[ngModel]="getStringField(node, 'srcExpr')"
|
|
7963
|
+
(ngModelChange)="setString('srcExpr', $event)"
|
|
7964
|
+
/>
|
|
7965
|
+
</label>
|
|
7966
|
+
<label>
|
|
7967
|
+
<span>{{ tx('editor.field.alt', 'Alternative text') }}</span>
|
|
7968
|
+
<input
|
|
7969
|
+
[ngModel]="getStringField(node, 'alt')"
|
|
7970
|
+
(ngModelChange)="setString('alt', $event)"
|
|
7971
|
+
/>
|
|
7972
|
+
</label>
|
|
7973
|
+
<label>
|
|
7974
|
+
<span>{{ tx('editor.field.altExpr', 'Alt text binding') }}</span>
|
|
7975
|
+
<input
|
|
7976
|
+
[ngModel]="getStringField(node, 'altExpr')"
|
|
7977
|
+
(ngModelChange)="setString('altExpr', $event)"
|
|
7978
|
+
/>
|
|
7979
|
+
</label>
|
|
7980
|
+
}
|
|
7981
|
+
@case ('link') {
|
|
7982
|
+
<label>
|
|
7983
|
+
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
7984
|
+
<input
|
|
7985
|
+
[ngModel]="getStringField(node, 'label')"
|
|
7986
|
+
(ngModelChange)="setString('label', $event)"
|
|
7987
|
+
/>
|
|
7988
|
+
</label>
|
|
7989
|
+
<label>
|
|
7990
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
7991
|
+
<input
|
|
7992
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
7993
|
+
(ngModelChange)="setString('labelExpr', $event)"
|
|
7994
|
+
/>
|
|
7995
|
+
</label>
|
|
7996
|
+
<label>
|
|
7997
|
+
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
7998
|
+
<input
|
|
7999
|
+
[ngModel]="getStringField(node, 'href')"
|
|
8000
|
+
(ngModelChange)="setString('href', $event)"
|
|
8001
|
+
/>
|
|
8002
|
+
</label>
|
|
8003
|
+
<label>
|
|
8004
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
8005
|
+
<select
|
|
8006
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
8007
|
+
(ngModelChange)="setString('target', $event)"
|
|
8008
|
+
>
|
|
8009
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
8010
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
8011
|
+
</select>
|
|
8012
|
+
</label>
|
|
8013
|
+
<label>
|
|
8014
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
8015
|
+
<input
|
|
8016
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
8017
|
+
(ngModelChange)="setString('rel', $event)"
|
|
8018
|
+
/>
|
|
8019
|
+
</label>
|
|
8020
|
+
}
|
|
8021
|
+
@case ('metric') {
|
|
8022
|
+
<label>
|
|
8023
|
+
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
8024
|
+
<input
|
|
8025
|
+
[ngModel]="getStringField(node, 'label')"
|
|
8026
|
+
(ngModelChange)="setString('label', $event)"
|
|
8027
|
+
/>
|
|
8028
|
+
</label>
|
|
8029
|
+
<label>
|
|
8030
|
+
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
8031
|
+
<input
|
|
8032
|
+
[ngModel]="getStringField(node, 'valueExpr')"
|
|
8033
|
+
(ngModelChange)="setString('valueExpr', $event)"
|
|
8034
|
+
/>
|
|
8035
|
+
</label>
|
|
8036
|
+
}
|
|
8037
|
+
@case ('progress') {
|
|
7161
8038
|
<label>
|
|
7162
8039
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
7163
8040
|
<input
|
|
@@ -7165,6 +8042,20 @@ class PraxisRichContentConfigEditor {
|
|
|
7165
8042
|
(ngModelChange)="setString('label', $event)"
|
|
7166
8043
|
/>
|
|
7167
8044
|
</label>
|
|
8045
|
+
<label>
|
|
8046
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
8047
|
+
<input
|
|
8048
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
8049
|
+
(ngModelChange)="setString('labelExpr', $event)"
|
|
8050
|
+
/>
|
|
8051
|
+
</label>
|
|
8052
|
+
<label>
|
|
8053
|
+
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
8054
|
+
<input
|
|
8055
|
+
[ngModel]="getStringField(node, 'valueExpr')"
|
|
8056
|
+
(ngModelChange)="setString('valueExpr', $event)"
|
|
8057
|
+
/>
|
|
8058
|
+
</label>
|
|
7168
8059
|
<label>
|
|
7169
8060
|
<span>{{ tx('editor.field.max', 'Maximum') }}</span>
|
|
7170
8061
|
<input
|
|
@@ -7418,7 +8309,59 @@ class PraxisRichContentConfigEditor {
|
|
|
7418
8309
|
</div>
|
|
7419
8310
|
</ng-template>
|
|
7420
8311
|
|
|
7421
|
-
<
|
|
8312
|
+
<nav
|
|
8313
|
+
class="prx-rich-editor__tabs"
|
|
8314
|
+
[attr.aria-label]="tx('editor.workbenchTabs', 'Editor sections')"
|
|
8315
|
+
role="tablist"
|
|
8316
|
+
>
|
|
8317
|
+
<button
|
|
8318
|
+
type="button"
|
|
8319
|
+
role="tab"
|
|
8320
|
+
class="prx-rich-editor__tab"
|
|
8321
|
+
[class.prx-rich-editor__tab--active]="activeEditorPanel === 'guided'"
|
|
8322
|
+
[attr.aria-selected]="activeEditorPanel === 'guided'"
|
|
8323
|
+
(click)="selectEditorPanel('guided')"
|
|
8324
|
+
data-testid="rich-content-guided-tab"
|
|
8325
|
+
>
|
|
8326
|
+
{{ tx('editor.guidedEditing', 'Guided editing') }}
|
|
8327
|
+
</button>
|
|
8328
|
+
<button
|
|
8329
|
+
type="button"
|
|
8330
|
+
role="tab"
|
|
8331
|
+
class="prx-rich-editor__tab"
|
|
8332
|
+
[class.prx-rich-editor__tab--active]="activeEditorPanel === 'preview'"
|
|
8333
|
+
[attr.aria-selected]="activeEditorPanel === 'preview'"
|
|
8334
|
+
(click)="selectEditorPanel('preview')"
|
|
8335
|
+
data-testid="rich-content-preview-tab"
|
|
8336
|
+
>
|
|
8337
|
+
{{ tx('editor.preview', 'Preview') }}
|
|
8338
|
+
</button>
|
|
8339
|
+
<button
|
|
8340
|
+
type="button"
|
|
8341
|
+
role="tab"
|
|
8342
|
+
class="prx-rich-editor__tab"
|
|
8343
|
+
[class.prx-rich-editor__tab--active]="activeEditorPanel === 'json'"
|
|
8344
|
+
[attr.aria-selected]="activeEditorPanel === 'json'"
|
|
8345
|
+
(click)="selectEditorPanel('json')"
|
|
8346
|
+
data-testid="rich-content-json-tab"
|
|
8347
|
+
>
|
|
8348
|
+
{{ tx('editor.document', 'Advanced JSON') }}
|
|
8349
|
+
@if (!valid || validationIssues.length) {
|
|
8350
|
+
<span class="prx-rich-editor__tab-badge">
|
|
8351
|
+
{{
|
|
8352
|
+
validationIssues.length || tx('editor.invalidBadge', 'Invalid')
|
|
8353
|
+
}}
|
|
8354
|
+
</span>
|
|
8355
|
+
}
|
|
8356
|
+
</button>
|
|
8357
|
+
</nav>
|
|
8358
|
+
|
|
8359
|
+
@if (activeEditorPanel === 'guided') {
|
|
8360
|
+
<section
|
|
8361
|
+
class="prx-rich-editor__blocks"
|
|
8362
|
+
role="tabpanel"
|
|
8363
|
+
[attr.aria-label]="tx('editor.guidedEditing', 'Guided editing')"
|
|
8364
|
+
>
|
|
7422
8365
|
<header class="prx-rich-editor__section-header">
|
|
7423
8366
|
<div>
|
|
7424
8367
|
<h3>{{ tx('editor.blocks', 'Blocks') }}</h3>
|
|
@@ -7455,8 +8398,83 @@ class PraxisRichContentConfigEditor {
|
|
|
7455
8398
|
</header>
|
|
7456
8399
|
|
|
7457
8400
|
@if (parsedDocument?.nodes?.length) {
|
|
8401
|
+
<div class="prx-rich-editor__authoring-shell">
|
|
8402
|
+
<aside
|
|
8403
|
+
class="prx-rich-editor__structure"
|
|
8404
|
+
[attr.aria-label]="tx('editor.structure', 'Document structure')"
|
|
8405
|
+
>
|
|
8406
|
+
<div class="prx-rich-editor__structure-summary">
|
|
8407
|
+
<strong>{{ tx('editor.structure', 'Document structure') }}</strong>
|
|
8408
|
+
<span>
|
|
8409
|
+
{{
|
|
8410
|
+
tx('editor.structureHelp', 'Select a block to edit its properties.')
|
|
8411
|
+
}}
|
|
8412
|
+
</span>
|
|
8413
|
+
</div>
|
|
8414
|
+
<div class="prx-rich-editor__structure-list">
|
|
8415
|
+
@for (node of parsedDocument?.nodes ?? []; track node.id ?? $index; let nodeIndex = $index) {
|
|
8416
|
+
<button
|
|
8417
|
+
type="button"
|
|
8418
|
+
class="prx-rich-editor__structure-item"
|
|
8419
|
+
[class.prx-rich-editor__structure-item--selected]="selectedNodeIndex === nodeIndex"
|
|
8420
|
+
[attr.aria-current]="selectedNodeIndex === nodeIndex ? 'true' : null"
|
|
8421
|
+
(click)="selectTopLevelNode(nodeIndex)"
|
|
8422
|
+
[attr.data-testid]="'rich-content-node-selector-' + nodeIndex"
|
|
8423
|
+
>
|
|
8424
|
+
<span class="prx-rich-editor__node-eyebrow">
|
|
8425
|
+
{{ tx('editor.block', 'Block') }} {{ nodeIndex + 1 }}
|
|
8426
|
+
</span>
|
|
8427
|
+
<strong>{{ tx('editor.nodeType.' + node.type, node.type) }}</strong>
|
|
8428
|
+
@if (getIssueCount('$.nodes[' + nodeIndex + ']'); as issueCount) {
|
|
8429
|
+
<small>
|
|
8430
|
+
{{ tx('editor.hasIssues', 'Needs attention') }}
|
|
8431
|
+
<span class="prx-rich-editor__issue-count">{{ issueCount }}</span>
|
|
8432
|
+
</small>
|
|
8433
|
+
}
|
|
8434
|
+
</button>
|
|
8435
|
+
}
|
|
8436
|
+
</div>
|
|
8437
|
+
</aside>
|
|
8438
|
+
|
|
8439
|
+
<div class="prx-rich-editor__properties">
|
|
8440
|
+
<header class="prx-rich-editor__section-header">
|
|
8441
|
+
<div>
|
|
8442
|
+
<h3>{{ tx('editor.properties', 'Properties') }}</h3>
|
|
8443
|
+
<p>
|
|
8444
|
+
{{
|
|
8445
|
+
tx(
|
|
8446
|
+
'editor.propertiesHelp',
|
|
8447
|
+
'Edit the selected block without leaving the document structure.'
|
|
8448
|
+
)
|
|
8449
|
+
}}
|
|
8450
|
+
</p>
|
|
8451
|
+
</div>
|
|
8452
|
+
</header>
|
|
8453
|
+
<div
|
|
8454
|
+
class="prx-rich-editor__intent-strip"
|
|
8455
|
+
[attr.aria-label]="tx('editor.intentNavigation', 'Property sections')"
|
|
8456
|
+
>
|
|
8457
|
+
<span>
|
|
8458
|
+
<strong>{{ tx('editor.intent.content', 'Content') }}</strong>
|
|
8459
|
+
<small>{{ tx('editor.intent.contentHelp', 'Primary block fields') }}</small>
|
|
8460
|
+
</span>
|
|
8461
|
+
<span>
|
|
8462
|
+
<strong>{{ tx('editor.intent.presentation', 'Presentation') }}</strong>
|
|
8463
|
+
<small>{{ tx('editor.intent.presentationHelp', 'Visual affordances') }}</small>
|
|
8464
|
+
</span>
|
|
8465
|
+
<button type="button" (click)="openAdvancedRules()">
|
|
8466
|
+
<strong>{{ tx('editor.intent.dataRules', 'Data and rules') }}</strong>
|
|
8467
|
+
<small>{{ tx('editor.intent.dataRulesHelp', 'Metadata and gates') }}</small>
|
|
8468
|
+
@if (getSelectedNodeIssueCount(); as selectedIssueCount) {
|
|
8469
|
+
<span class="prx-rich-editor__issue-count">
|
|
8470
|
+
{{ selectedIssueCount }}
|
|
8471
|
+
</span>
|
|
8472
|
+
}
|
|
8473
|
+
</button>
|
|
8474
|
+
</div>
|
|
7458
8475
|
<div class="prx-rich-editor__node-list">
|
|
7459
8476
|
@for (node of parsedDocument?.nodes ?? []; track node.id ?? $index; let nodeIndex = $index) {
|
|
8477
|
+
@if (selectedNodeIndex === nodeIndex) {
|
|
7460
8478
|
<article
|
|
7461
8479
|
class="prx-rich-editor__node-card"
|
|
7462
8480
|
[attr.data-rich-editor-node-type]="node.type"
|
|
@@ -7595,19 +8613,124 @@ class PraxisRichContentConfigEditor {
|
|
|
7595
8613
|
/>
|
|
7596
8614
|
</label>
|
|
7597
8615
|
}
|
|
7598
|
-
@case ('
|
|
8616
|
+
@case ('avatar') {
|
|
8617
|
+
<label>
|
|
8618
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
8619
|
+
<input
|
|
8620
|
+
[ngModel]="getStringField(node, 'name')"
|
|
8621
|
+
(ngModelChange)="setStringField($index, 'name', $event)"
|
|
8622
|
+
/>
|
|
8623
|
+
</label>
|
|
8624
|
+
<label>
|
|
8625
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
8626
|
+
<input
|
|
8627
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
8628
|
+
(ngModelChange)="setStringField($index, 'nameExpr', $event)"
|
|
8629
|
+
[placeholder]="tx('editor.placeholder.nameExpr', 'row.name')"
|
|
8630
|
+
/>
|
|
8631
|
+
</label>
|
|
8632
|
+
<label>
|
|
8633
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
8634
|
+
<input
|
|
8635
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
8636
|
+
(ngModelChange)="setStringField($index, 'imageSrc', $event)"
|
|
8637
|
+
/>
|
|
8638
|
+
</label>
|
|
8639
|
+
<label>
|
|
8640
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
8641
|
+
<input
|
|
8642
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
8643
|
+
(ngModelChange)="setStringField($index, 'imageSrcExpr', $event)"
|
|
8644
|
+
[placeholder]="tx('editor.placeholder.imageSrcExpr', 'row.avatarUrl')"
|
|
8645
|
+
/>
|
|
8646
|
+
</label>
|
|
7599
8647
|
<label>
|
|
7600
|
-
<span>{{ tx('editor.field.
|
|
8648
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
7601
8649
|
<input
|
|
7602
|
-
[ngModel]="getStringField(node, '
|
|
7603
|
-
(ngModelChange)="setStringField($index, '
|
|
8650
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
8651
|
+
(ngModelChange)="setStringField($index, 'initials', $event)"
|
|
7604
8652
|
/>
|
|
7605
8653
|
</label>
|
|
7606
8654
|
<label>
|
|
7607
|
-
<span>{{ tx('editor.field.
|
|
8655
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
7608
8656
|
<input
|
|
7609
|
-
[ngModel]="getStringField(node, '
|
|
7610
|
-
(ngModelChange)="setStringField($index, '
|
|
8657
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
8658
|
+
(ngModelChange)="setStringField($index, 'initialsExpr', $event)"
|
|
8659
|
+
[placeholder]="tx('editor.placeholder.initialsExpr', 'row.initials')"
|
|
8660
|
+
/>
|
|
8661
|
+
</label>
|
|
8662
|
+
}
|
|
8663
|
+
@case ('image') {
|
|
8664
|
+
<label>
|
|
8665
|
+
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
8666
|
+
<input
|
|
8667
|
+
[ngModel]="getStringField(node, 'src')"
|
|
8668
|
+
(ngModelChange)="setStringField($index, 'src', $event)"
|
|
8669
|
+
/>
|
|
8670
|
+
</label>
|
|
8671
|
+
<label>
|
|
8672
|
+
<span>{{ tx('editor.field.srcExpr', 'Image URL binding') }}</span>
|
|
8673
|
+
<input
|
|
8674
|
+
[ngModel]="getStringField(node, 'srcExpr')"
|
|
8675
|
+
(ngModelChange)="setStringField($index, 'srcExpr', $event)"
|
|
8676
|
+
[placeholder]="tx('editor.placeholder.srcExpr', 'row.imageUrl')"
|
|
8677
|
+
/>
|
|
8678
|
+
</label>
|
|
8679
|
+
<label>
|
|
8680
|
+
<span>{{ tx('editor.field.alt', 'Alternative text') }}</span>
|
|
8681
|
+
<input
|
|
8682
|
+
[ngModel]="getStringField(node, 'alt')"
|
|
8683
|
+
(ngModelChange)="setStringField($index, 'alt', $event)"
|
|
8684
|
+
/>
|
|
8685
|
+
</label>
|
|
8686
|
+
<label>
|
|
8687
|
+
<span>{{ tx('editor.field.altExpr', 'Alt text binding') }}</span>
|
|
8688
|
+
<input
|
|
8689
|
+
[ngModel]="getStringField(node, 'altExpr')"
|
|
8690
|
+
(ngModelChange)="setStringField($index, 'altExpr', $event)"
|
|
8691
|
+
[placeholder]="tx('editor.placeholder.altExpr', 'row.imageAlt')"
|
|
8692
|
+
/>
|
|
8693
|
+
</label>
|
|
8694
|
+
}
|
|
8695
|
+
@case ('link') {
|
|
8696
|
+
<label>
|
|
8697
|
+
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
8698
|
+
<input
|
|
8699
|
+
[ngModel]="getStringField(node, 'label')"
|
|
8700
|
+
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
8701
|
+
/>
|
|
8702
|
+
</label>
|
|
8703
|
+
<label>
|
|
8704
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
8705
|
+
<input
|
|
8706
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
8707
|
+
(ngModelChange)="setStringField($index, 'labelExpr', $event)"
|
|
8708
|
+
[placeholder]="tx('editor.placeholder.labelExpr', 'row.linkLabel')"
|
|
8709
|
+
/>
|
|
8710
|
+
</label>
|
|
8711
|
+
<label class="prx-rich-editor__wide-field">
|
|
8712
|
+
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
8713
|
+
<input
|
|
8714
|
+
[ngModel]="getStringField(node, 'href')"
|
|
8715
|
+
(ngModelChange)="setStringField($index, 'href', $event)"
|
|
8716
|
+
/>
|
|
8717
|
+
</label>
|
|
8718
|
+
<label>
|
|
8719
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
8720
|
+
<select
|
|
8721
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
8722
|
+
(ngModelChange)="setStringField($index, 'target', $event)"
|
|
8723
|
+
>
|
|
8724
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
8725
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
8726
|
+
</select>
|
|
8727
|
+
</label>
|
|
8728
|
+
<label>
|
|
8729
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
8730
|
+
<input
|
|
8731
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
8732
|
+
(ngModelChange)="setStringField($index, 'rel', $event)"
|
|
8733
|
+
[placeholder]="tx('editor.placeholder.rel', 'noopener noreferrer')"
|
|
7611
8734
|
/>
|
|
7612
8735
|
</label>
|
|
7613
8736
|
}
|
|
@@ -7619,6 +8742,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7619
8742
|
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
7620
8743
|
/>
|
|
7621
8744
|
</label>
|
|
8745
|
+
<label>
|
|
8746
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
8747
|
+
<input
|
|
8748
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
8749
|
+
(ngModelChange)="setStringField($index, 'labelExpr', $event)"
|
|
8750
|
+
[placeholder]="tx('editor.placeholder.labelExpr', 'row.status')"
|
|
8751
|
+
/>
|
|
8752
|
+
</label>
|
|
7622
8753
|
<label>
|
|
7623
8754
|
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
7624
8755
|
<input
|
|
@@ -7660,6 +8791,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7660
8791
|
(ngModelChange)="setNumberField($index, 'max', $event)"
|
|
7661
8792
|
/>
|
|
7662
8793
|
</label>
|
|
8794
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
8795
|
+
<input
|
|
8796
|
+
type="checkbox"
|
|
8797
|
+
[ngModel]="getBooleanField(node, 'showPercent')"
|
|
8798
|
+
(ngModelChange)="setBooleanField($index, 'showPercent', $event)"
|
|
8799
|
+
/>
|
|
8800
|
+
<span>{{ tx('editor.field.showPercent', 'Show percent') }}</span>
|
|
8801
|
+
</label>
|
|
7663
8802
|
}
|
|
7664
8803
|
@case ('actionButton') {
|
|
7665
8804
|
<label>
|
|
@@ -7755,6 +8894,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7755
8894
|
<option value="xl">xl</option>
|
|
7756
8895
|
</select>
|
|
7757
8896
|
</label>
|
|
8897
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
8898
|
+
<input
|
|
8899
|
+
type="checkbox"
|
|
8900
|
+
[ngModel]="getBooleanField(node, 'wrap')"
|
|
8901
|
+
(ngModelChange)="setBooleanField($index, 'wrap', $event)"
|
|
8902
|
+
/>
|
|
8903
|
+
<span>{{ tx('editor.field.wrap', 'Wrap items') }}</span>
|
|
8904
|
+
</label>
|
|
7758
8905
|
<div class="prx-rich-editor__nested-editor">
|
|
7759
8906
|
<header class="prx-rich-editor__nested-header">
|
|
7760
8907
|
<h5>{{ tx('editor.composeItems', 'Compose items') }}</h5>
|
|
@@ -7812,6 +8959,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7812
8959
|
(ngModelChange)="setStringField($index, 'title', $event)"
|
|
7813
8960
|
/>
|
|
7814
8961
|
</label>
|
|
8962
|
+
<label>
|
|
8963
|
+
<span>{{ tx('editor.field.titleExpr', 'Title binding') }}</span>
|
|
8964
|
+
<input
|
|
8965
|
+
[ngModel]="getStringField(node, 'titleExpr')"
|
|
8966
|
+
(ngModelChange)="setStringField($index, 'titleExpr', $event)"
|
|
8967
|
+
[placeholder]="tx('editor.placeholder.titleExpr', '\${decision.title}')"
|
|
8968
|
+
/>
|
|
8969
|
+
</label>
|
|
7815
8970
|
<label>
|
|
7816
8971
|
<span>{{ tx('editor.field.subtitle', 'Subtitle') }}</span>
|
|
7817
8972
|
<input
|
|
@@ -7819,6 +8974,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7819
8974
|
(ngModelChange)="setStringField($index, 'subtitle', $event)"
|
|
7820
8975
|
/>
|
|
7821
8976
|
</label>
|
|
8977
|
+
<label>
|
|
8978
|
+
<span>{{ tx('editor.field.subtitleExpr', 'Subtitle binding') }}</span>
|
|
8979
|
+
<input
|
|
8980
|
+
[ngModel]="getStringField(node, 'subtitleExpr')"
|
|
8981
|
+
(ngModelChange)="setStringField($index, 'subtitleExpr', $event)"
|
|
8982
|
+
[placeholder]="tx('editor.placeholder.subtitleExpr', '\${decision.policySource}')"
|
|
8983
|
+
/>
|
|
8984
|
+
</label>
|
|
7822
8985
|
<label>
|
|
7823
8986
|
<span>{{ tx('editor.field.variant', 'Variant') }}</span>
|
|
7824
8987
|
<select
|
|
@@ -7856,6 +9019,16 @@ class PraxisRichContentConfigEditor {
|
|
|
7856
9019
|
<option value="lg">{{ tx('editor.size.lg', 'Large') }}</option>
|
|
7857
9020
|
</select>
|
|
7858
9021
|
</label>
|
|
9022
|
+
<label>
|
|
9023
|
+
<span>{{ tx('editor.field.density', 'Density') }}</span>
|
|
9024
|
+
<select
|
|
9025
|
+
[ngModel]="getStringField(node, 'density') || 'comfortable'"
|
|
9026
|
+
(ngModelChange)="setStringField($index, 'density', $event)"
|
|
9027
|
+
>
|
|
9028
|
+
<option value="comfortable">{{ tx('editor.density.comfortable', 'Comfortable') }}</option>
|
|
9029
|
+
<option value="compact">{{ tx('editor.density.compact', 'Compact') }}</option>
|
|
9030
|
+
</select>
|
|
9031
|
+
</label>
|
|
7859
9032
|
<label>
|
|
7860
9033
|
<span>{{ tx('editor.field.orientation', 'Orientation') }}</span>
|
|
7861
9034
|
<select
|
|
@@ -7866,6 +9039,38 @@ class PraxisRichContentConfigEditor {
|
|
|
7866
9039
|
<option value="horizontal">{{ tx('editor.orientation.horizontal', 'Horizontal') }}</option>
|
|
7867
9040
|
</select>
|
|
7868
9041
|
</label>
|
|
9042
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
9043
|
+
<input
|
|
9044
|
+
type="checkbox"
|
|
9045
|
+
[ngModel]="getBooleanField(node, 'loading')"
|
|
9046
|
+
(ngModelChange)="setBooleanField($index, 'loading', $event)"
|
|
9047
|
+
/>
|
|
9048
|
+
<span>{{ tx('editor.field.loading', 'Loading') }}</span>
|
|
9049
|
+
</label>
|
|
9050
|
+
<label>
|
|
9051
|
+
<span>{{ tx('editor.field.loadingExpr', 'Loading binding') }}</span>
|
|
9052
|
+
<input
|
|
9053
|
+
[ngModel]="getStringField(node, 'loadingExpr')"
|
|
9054
|
+
(ngModelChange)="setStringField($index, 'loadingExpr', $event)"
|
|
9055
|
+
[placeholder]="tx('editor.placeholder.loadingExpr', 'row.loading')"
|
|
9056
|
+
/>
|
|
9057
|
+
</label>
|
|
9058
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
9059
|
+
<input
|
|
9060
|
+
type="checkbox"
|
|
9061
|
+
[ngModel]="getBooleanField(node, 'active')"
|
|
9062
|
+
(ngModelChange)="setBooleanField($index, 'active', $event)"
|
|
9063
|
+
/>
|
|
9064
|
+
<span>{{ tx('editor.field.active', 'Active') }}</span>
|
|
9065
|
+
</label>
|
|
9066
|
+
<label>
|
|
9067
|
+
<span>{{ tx('editor.field.activeExpr', 'Active binding') }}</span>
|
|
9068
|
+
<input
|
|
9069
|
+
[ngModel]="getStringField(node, 'activeExpr')"
|
|
9070
|
+
(ngModelChange)="setStringField($index, 'activeExpr', $event)"
|
|
9071
|
+
[placeholder]="tx('editor.placeholder.activeExpr', 'row.active')"
|
|
9072
|
+
/>
|
|
9073
|
+
</label>
|
|
7869
9074
|
<label>
|
|
7870
9075
|
<span>{{ tx('editor.field.mediaKind', 'Media') }}</span>
|
|
7871
9076
|
<select
|
|
@@ -7887,6 +9092,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7887
9092
|
(ngModelChange)="setCardMediaField(nodeIndex, 'src', $event)"
|
|
7888
9093
|
/>
|
|
7889
9094
|
</label>
|
|
9095
|
+
<label>
|
|
9096
|
+
<span>{{ tx('editor.field.mediaSrcExpr', 'Media source binding') }}</span>
|
|
9097
|
+
<input
|
|
9098
|
+
[ngModel]="getCardMediaField(nodeIndex, 'srcExpr')"
|
|
9099
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'srcExpr', $event)"
|
|
9100
|
+
[placeholder]="tx('editor.placeholder.mediaSrcExpr', 'row.mediaUrl')"
|
|
9101
|
+
/>
|
|
9102
|
+
</label>
|
|
7890
9103
|
<label>
|
|
7891
9104
|
<span>{{ tx('editor.field.mediaAlt', 'Media alt text') }}</span>
|
|
7892
9105
|
<input
|
|
@@ -7894,6 +9107,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7894
9107
|
(ngModelChange)="setCardMediaField(nodeIndex, 'alt', $event)"
|
|
7895
9108
|
/>
|
|
7896
9109
|
</label>
|
|
9110
|
+
<label>
|
|
9111
|
+
<span>{{ tx('editor.field.mediaAltExpr', 'Media alt binding') }}</span>
|
|
9112
|
+
<input
|
|
9113
|
+
[ngModel]="getCardMediaField(nodeIndex, 'altExpr')"
|
|
9114
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'altExpr', $event)"
|
|
9115
|
+
[placeholder]="tx('editor.placeholder.mediaAltExpr', 'row.mediaAlt')"
|
|
9116
|
+
/>
|
|
9117
|
+
</label>
|
|
7897
9118
|
<label>
|
|
7898
9119
|
<span>{{ tx('editor.field.mediaIcon', 'Media icon') }}</span>
|
|
7899
9120
|
<input
|
|
@@ -7901,6 +9122,29 @@ class PraxisRichContentConfigEditor {
|
|
|
7901
9122
|
(ngModelChange)="setCardMediaField(nodeIndex, 'icon', $event)"
|
|
7902
9123
|
/>
|
|
7903
9124
|
</label>
|
|
9125
|
+
<label>
|
|
9126
|
+
<span>{{ tx('editor.field.mediaLabel', 'Media label') }}</span>
|
|
9127
|
+
<input
|
|
9128
|
+
[ngModel]="getCardMediaField(nodeIndex, 'label')"
|
|
9129
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'label', $event)"
|
|
9130
|
+
/>
|
|
9131
|
+
</label>
|
|
9132
|
+
<label>
|
|
9133
|
+
<span>{{ tx('editor.field.mediaLabelExpr', 'Media label binding') }}</span>
|
|
9134
|
+
<input
|
|
9135
|
+
[ngModel]="getCardMediaField(nodeIndex, 'labelExpr')"
|
|
9136
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'labelExpr', $event)"
|
|
9137
|
+
[placeholder]="tx('editor.placeholder.mediaLabelExpr', 'row.mediaLabel')"
|
|
9138
|
+
/>
|
|
9139
|
+
</label>
|
|
9140
|
+
<label>
|
|
9141
|
+
<span>{{ tx('editor.field.aspectRatio', 'Aspect ratio') }}</span>
|
|
9142
|
+
<input
|
|
9143
|
+
[ngModel]="getCardMediaField(nodeIndex, 'aspectRatio')"
|
|
9144
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'aspectRatio', $event)"
|
|
9145
|
+
[placeholder]="tx('editor.placeholder.aspectRatio', '16 / 9')"
|
|
9146
|
+
/>
|
|
9147
|
+
</label>
|
|
7904
9148
|
<label>
|
|
7905
9149
|
<span>{{ tx('editor.field.mediaPlacement', 'Media placement') }}</span>
|
|
7906
9150
|
<select
|
|
@@ -7914,6 +9158,76 @@ class PraxisRichContentConfigEditor {
|
|
|
7914
9158
|
</select>
|
|
7915
9159
|
</label>
|
|
7916
9160
|
}
|
|
9161
|
+
<label>
|
|
9162
|
+
<span>{{ tx('editor.field.interactionMode', 'Interaction mode') }}</span>
|
|
9163
|
+
<select
|
|
9164
|
+
[ngModel]="getCardInteractionField(nodeIndex, 'mode') || 'none'"
|
|
9165
|
+
(ngModelChange)="setCardInteractionField(nodeIndex, 'mode', $event)"
|
|
9166
|
+
>
|
|
9167
|
+
<option value="none">{{ tx('editor.interaction.none', 'None') }}</option>
|
|
9168
|
+
<option value="action">{{ tx('editor.interaction.action', 'Action') }}</option>
|
|
9169
|
+
<option value="selectable">{{ tx('editor.interaction.selectable', 'Selectable') }}</option>
|
|
9170
|
+
</select>
|
|
9171
|
+
</label>
|
|
9172
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
9173
|
+
<input
|
|
9174
|
+
type="checkbox"
|
|
9175
|
+
[ngModel]="getCardInteractionBooleanField(nodeIndex, 'selected')"
|
|
9176
|
+
(ngModelChange)="setCardInteractionBooleanField(nodeIndex, 'selected', $event)"
|
|
9177
|
+
/>
|
|
9178
|
+
<span>{{ tx('editor.field.selected', 'Selected') }}</span>
|
|
9179
|
+
</label>
|
|
9180
|
+
<label>
|
|
9181
|
+
<span>{{ tx('editor.field.selectedExpr', 'Selected binding') }}</span>
|
|
9182
|
+
<input
|
|
9183
|
+
[ngModel]="getCardInteractionField(nodeIndex, 'selectedExpr')"
|
|
9184
|
+
(ngModelChange)="setCardInteractionField(nodeIndex, 'selectedExpr', $event)"
|
|
9185
|
+
[placeholder]="tx('editor.placeholder.selectedExpr', 'row.selected')"
|
|
9186
|
+
/>
|
|
9187
|
+
</label>
|
|
9188
|
+
<label>
|
|
9189
|
+
<span>{{ tx('editor.field.interactionActionId', 'Interaction action ID') }}</span>
|
|
9190
|
+
<input
|
|
9191
|
+
[ngModel]="getCardInteractionActionField(nodeIndex, 'actionId')"
|
|
9192
|
+
(ngModelChange)="setCardInteractionActionField(nodeIndex, 'actionId', $event)"
|
|
9193
|
+
[placeholder]="tx('editor.placeholder.actionId', 'host.action.open')"
|
|
9194
|
+
/>
|
|
9195
|
+
</label>
|
|
9196
|
+
<label>
|
|
9197
|
+
<span>{{ tx('editor.field.payloadExpr', 'Payload binding') }}</span>
|
|
9198
|
+
<input
|
|
9199
|
+
[ngModel]="getCardInteractionActionField(nodeIndex, 'payloadExpr')"
|
|
9200
|
+
(ngModelChange)="setCardInteractionActionField(nodeIndex, 'payloadExpr', $event)"
|
|
9201
|
+
[placeholder]="tx('editor.placeholder.payloadExpr', 'row')"
|
|
9202
|
+
/>
|
|
9203
|
+
</label>
|
|
9204
|
+
<label>
|
|
9205
|
+
<span>{{ tx('editor.field.accessibilityRole', 'Accessibility role') }}</span>
|
|
9206
|
+
<select
|
|
9207
|
+
[ngModel]="getCardAccessibilityField(nodeIndex, 'role')"
|
|
9208
|
+
(ngModelChange)="setCardAccessibilityField(nodeIndex, 'role', $event)"
|
|
9209
|
+
>
|
|
9210
|
+
<option value="">{{ tx('editor.none', 'None') }}</option>
|
|
9211
|
+
<option value="article">{{ tx('editor.accessibilityRole.article', 'Article') }}</option>
|
|
9212
|
+
<option value="group">{{ tx('editor.accessibilityRole.group', 'Group') }}</option>
|
|
9213
|
+
<option value="button">{{ tx('editor.accessibilityRole.button', 'Button') }}</option>
|
|
9214
|
+
</select>
|
|
9215
|
+
</label>
|
|
9216
|
+
<label>
|
|
9217
|
+
<span>{{ tx('editor.field.ariaLabel', 'Accessible label') }}</span>
|
|
9218
|
+
<input
|
|
9219
|
+
[ngModel]="getCardAccessibilityField(nodeIndex, 'ariaLabel')"
|
|
9220
|
+
(ngModelChange)="setCardAccessibilityField(nodeIndex, 'ariaLabel', $event)"
|
|
9221
|
+
/>
|
|
9222
|
+
</label>
|
|
9223
|
+
<label>
|
|
9224
|
+
<span>{{ tx('editor.field.ariaLabelExpr', 'Accessible label binding') }}</span>
|
|
9225
|
+
<input
|
|
9226
|
+
[ngModel]="getCardAccessibilityField(nodeIndex, 'ariaLabelExpr')"
|
|
9227
|
+
(ngModelChange)="setCardAccessibilityField(nodeIndex, 'ariaLabelExpr', $event)"
|
|
9228
|
+
[placeholder]="tx('editor.placeholder.ariaLabelExpr', 'row.ariaLabel')"
|
|
9229
|
+
/>
|
|
9230
|
+
</label>
|
|
7917
9231
|
<div class="prx-rich-editor__nested-editor">
|
|
7918
9232
|
<header class="prx-rich-editor__nested-header">
|
|
7919
9233
|
<h5>{{ tx('editor.cardContent', 'Card body') }}</h5>
|
|
@@ -8359,6 +9673,14 @@ class PraxisRichContentConfigEditor {
|
|
|
8359
9673
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'label', $event)"
|
|
8360
9674
|
/>
|
|
8361
9675
|
</label>
|
|
9676
|
+
<label>
|
|
9677
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
9678
|
+
<input
|
|
9679
|
+
[ngModel]="getTabsItemField(nodeIndex, $index, 'labelExpr')"
|
|
9680
|
+
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'labelExpr', $event)"
|
|
9681
|
+
[placeholder]="tx('editor.placeholder.tabLabelExpr', 'row.tabLabel')"
|
|
9682
|
+
/>
|
|
9683
|
+
</label>
|
|
8362
9684
|
<label>
|
|
8363
9685
|
<span>{{ tx('editor.field.icon', 'Icon') }}</span>
|
|
8364
9686
|
<input
|
|
@@ -8373,6 +9695,48 @@ class PraxisRichContentConfigEditor {
|
|
|
8373
9695
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'badge', $event)"
|
|
8374
9696
|
/>
|
|
8375
9697
|
</label>
|
|
9698
|
+
<label>
|
|
9699
|
+
<span>{{ tx('editor.field.badgeExpr', 'Badge binding') }}</span>
|
|
9700
|
+
<input
|
|
9701
|
+
[ngModel]="getTabsItemField(nodeIndex, $index, 'badgeExpr')"
|
|
9702
|
+
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'badgeExpr', $event)"
|
|
9703
|
+
[placeholder]="tx('editor.placeholder.badgeExpr', 'row.badge')"
|
|
9704
|
+
/>
|
|
9705
|
+
</label>
|
|
9706
|
+
<label>
|
|
9707
|
+
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
9708
|
+
<input
|
|
9709
|
+
[ngModel]="getTabsItemCapabilityList(nodeIndex, $index)"
|
|
9710
|
+
(ngModelChange)="setTabsItemCapabilityList(nodeIndex, $index, $event)"
|
|
9711
|
+
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
9712
|
+
/>
|
|
9713
|
+
</label>
|
|
9714
|
+
<label>
|
|
9715
|
+
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
9716
|
+
<select
|
|
9717
|
+
[ngModel]="getTabsItemField(nodeIndex, $index, 'capabilityMode') || 'all'"
|
|
9718
|
+
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'capabilityMode', $event)"
|
|
9719
|
+
>
|
|
9720
|
+
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
9721
|
+
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
9722
|
+
</select>
|
|
9723
|
+
</label>
|
|
9724
|
+
<label>
|
|
9725
|
+
<span>{{ tx('editor.field.visibleWhenPath', 'Context path') }}</span>
|
|
9726
|
+
<input
|
|
9727
|
+
[ngModel]="getTabsItemVisibleWhenPath(nodeIndex, $index)"
|
|
9728
|
+
(ngModelChange)="setTabsItemVisibleWhenPath(nodeIndex, $index, $event)"
|
|
9729
|
+
[placeholder]="tx('editor.placeholder.visibleWhenPath', 'row.active')"
|
|
9730
|
+
/>
|
|
9731
|
+
</label>
|
|
9732
|
+
<label>
|
|
9733
|
+
<span>{{ tx('editor.field.visibleWhenValue', 'Expected value') }}</span>
|
|
9734
|
+
<input
|
|
9735
|
+
[ngModel]="getTabsItemVisibleWhenValue(nodeIndex, $index)"
|
|
9736
|
+
(ngModelChange)="setTabsItemVisibleWhenValue(nodeIndex, $index, $event)"
|
|
9737
|
+
[placeholder]="tx('editor.placeholder.visibleWhenValue', 'true')"
|
|
9738
|
+
/>
|
|
9739
|
+
</label>
|
|
8376
9740
|
</div>
|
|
8377
9741
|
}
|
|
8378
9742
|
</div>
|
|
@@ -9035,24 +10399,24 @@ class PraxisRichContentConfigEditor {
|
|
|
9035
10399
|
<header class="prx-rich-editor__nested-header">
|
|
9036
10400
|
<h5>{{ tx('editor.decisionEvidence', 'Evidence') }}</h5>
|
|
9037
10401
|
<div class="prx-rich-editor__quick-actions">
|
|
9038
|
-
<button type="button" (click)="addDecisionPackageEvidence(
|
|
10402
|
+
<button type="button" (click)="addDecisionPackageEvidence(nodeIndex)">
|
|
9039
10403
|
{{ tx('editor.addEvidence', 'Add evidence') }}
|
|
9040
10404
|
</button>
|
|
9041
10405
|
</div>
|
|
9042
10406
|
</header>
|
|
9043
|
-
@for (evidence of getDecisionPackageEvidence(
|
|
10407
|
+
@for (evidence of getDecisionPackageEvidence(nodeIndex); track evidence.id ?? $index; let evidenceIndex = $index) {
|
|
9044
10408
|
<div class="prx-rich-editor__nested-node">
|
|
9045
10409
|
<div class="prx-rich-editor__nested-actions">
|
|
9046
10410
|
<strong>{{ tx('editor.evidence', 'Evidence') }} {{ evidenceIndex + 1 }}</strong>
|
|
9047
|
-
@if (isRemovalPending('nodes.' +
|
|
9048
|
-
<button type="button" (click)="removeDecisionPackageEvidence(
|
|
10411
|
+
@if (isRemovalPending('nodes.' + nodeIndex + '.evidence', evidenceIndex)) {
|
|
10412
|
+
<button type="button" (click)="removeDecisionPackageEvidence(nodeIndex, evidenceIndex)">
|
|
9049
10413
|
{{ tx('editor.confirmRemove', 'Confirm remove') }}
|
|
9050
10414
|
</button>
|
|
9051
10415
|
<button type="button" (click)="cancelRemoval()">
|
|
9052
10416
|
{{ tx('editor.cancelRemove', 'Cancel') }}
|
|
9053
10417
|
</button>
|
|
9054
10418
|
} @else {
|
|
9055
|
-
<button type="button" (click)="requestNestedRemoval('nodes.' +
|
|
10419
|
+
<button type="button" (click)="requestNestedRemoval('nodes.' + nodeIndex + '.evidence', evidenceIndex)">
|
|
9056
10420
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
9057
10421
|
</button>
|
|
9058
10422
|
}
|
|
@@ -9061,37 +10425,37 @@ class PraxisRichContentConfigEditor {
|
|
|
9061
10425
|
<label>
|
|
9062
10426
|
<span>{{ tx('editor.field.itemId', 'Item ID') }}</span>
|
|
9063
10427
|
<input
|
|
9064
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9065
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
10428
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id')"
|
|
10429
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id', $event)"
|
|
9066
10430
|
/>
|
|
9067
10431
|
</label>
|
|
9068
10432
|
<label>
|
|
9069
10433
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
9070
10434
|
<input
|
|
9071
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9072
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
10435
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label')"
|
|
10436
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label', $event)"
|
|
9073
10437
|
/>
|
|
9074
10438
|
</label>
|
|
9075
10439
|
<label>
|
|
9076
10440
|
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
9077
10441
|
<input
|
|
9078
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9079
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
10442
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr')"
|
|
10443
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr', $event)"
|
|
9080
10444
|
[placeholder]="tx('editor.placeholder.evidenceLabelExpr', '\${evidence.label}')"
|
|
9081
10445
|
/>
|
|
9082
10446
|
</label>
|
|
9083
10447
|
<label>
|
|
9084
10448
|
<span>{{ tx('editor.field.source', 'Source') }}</span>
|
|
9085
10449
|
<input
|
|
9086
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9087
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
10450
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source')"
|
|
10451
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source', $event)"
|
|
9088
10452
|
/>
|
|
9089
10453
|
</label>
|
|
9090
10454
|
<label>
|
|
9091
10455
|
<span>{{ tx('editor.field.sourceExpr', 'Source binding') }}</span>
|
|
9092
10456
|
<input
|
|
9093
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
9094
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
10457
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr')"
|
|
10458
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr', $event)"
|
|
9095
10459
|
[placeholder]="tx('editor.placeholder.evidenceSourceExpr', '\${evidence.source}')"
|
|
9096
10460
|
/>
|
|
9097
10461
|
</label>
|
|
@@ -9104,27 +10468,27 @@ class PraxisRichContentConfigEditor {
|
|
|
9104
10468
|
<header class="prx-rich-editor__nested-header">
|
|
9105
10469
|
<h5>{{ tx('editor.decisionPrimaryAction', 'Primary action') }}</h5>
|
|
9106
10470
|
<div class="prx-rich-editor__quick-actions">
|
|
9107
|
-
@if (getDecisionPackagePrimaryAction(
|
|
9108
|
-
<button type="button" (click)="removeDecisionPackagePrimaryAction(
|
|
10471
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex)) {
|
|
10472
|
+
<button type="button" (click)="removeDecisionPackagePrimaryAction(nodeIndex)">
|
|
9109
10473
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
9110
10474
|
</button>
|
|
9111
10475
|
} @else {
|
|
9112
|
-
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(
|
|
10476
|
+
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(nodeIndex, 'primary')">
|
|
9113
10477
|
{{ tx('editor.addPrimaryAction', 'Add primary action') }}
|
|
9114
10478
|
</button>
|
|
9115
|
-
<button type="button" (click)="addDecisionPackagePrimaryAction(
|
|
10479
|
+
<button type="button" (click)="addDecisionPackagePrimaryAction(nodeIndex)">
|
|
9116
10480
|
{{ tx('editor.addAction', 'Add action') }}
|
|
9117
10481
|
</button>
|
|
9118
10482
|
}
|
|
9119
10483
|
</div>
|
|
9120
10484
|
</header>
|
|
9121
|
-
@if (getDecisionPackagePrimaryAction(
|
|
10485
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex); as primaryAction) {
|
|
9122
10486
|
<div class="prx-rich-editor__node-grid">
|
|
9123
10487
|
<ng-container
|
|
9124
10488
|
*ngTemplateOutlet="actionFields; context: {
|
|
9125
10489
|
action: primaryAction,
|
|
9126
|
-
path: '$.nodes[' +
|
|
9127
|
-
setField: setDecisionPackagePrimaryActionField.bind(this,
|
|
10490
|
+
path: '$.nodes[' + nodeIndex + '].primaryAction',
|
|
10491
|
+
setField: setDecisionPackagePrimaryActionField.bind(this, nodeIndex)
|
|
9128
10492
|
}"
|
|
9129
10493
|
></ng-container>
|
|
9130
10494
|
</div>
|
|
@@ -9763,97 +11127,216 @@ class PraxisRichContentConfigEditor {
|
|
|
9763
11127
|
</p>
|
|
9764
11128
|
}
|
|
9765
11129
|
}
|
|
9766
|
-
<
|
|
9767
|
-
|
|
9768
|
-
|
|
9769
|
-
|
|
9770
|
-
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
/>
|
|
9783
|
-
</label>
|
|
9784
|
-
<label>
|
|
9785
|
-
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
9786
|
-
<input
|
|
9787
|
-
[ngModel]="getCapabilityList(node)"
|
|
9788
|
-
(ngModelChange)="setCapabilityList($index, $event)"
|
|
9789
|
-
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
9790
|
-
/>
|
|
9791
|
-
</label>
|
|
9792
|
-
<label>
|
|
9793
|
-
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
9794
|
-
<select
|
|
9795
|
-
[ngModel]="getStringField(node, 'capabilityMode') || 'all'"
|
|
9796
|
-
(ngModelChange)="setStringField($index, 'capabilityMode', $event)"
|
|
9797
|
-
>
|
|
9798
|
-
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
9799
|
-
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
9800
|
-
</select>
|
|
9801
|
-
</label>
|
|
9802
|
-
</fieldset>
|
|
11130
|
+
<details
|
|
11131
|
+
class="prx-rich-editor__advanced-group"
|
|
11132
|
+
[open]="advancedRulesOpen"
|
|
11133
|
+
(toggle)="onAdvancedRulesToggle($event)"
|
|
11134
|
+
>
|
|
11135
|
+
<summary>
|
|
11136
|
+
<span>{{ tx('editor.advancedDataRules', 'Advanced data and rules') }}</span>
|
|
11137
|
+
<small>
|
|
11138
|
+
{{
|
|
11139
|
+
tx(
|
|
11140
|
+
'editor.advancedDataRulesHelp',
|
|
11141
|
+
'Metadata, capability gates, visibility and safe style.'
|
|
11142
|
+
)
|
|
11143
|
+
}}
|
|
11144
|
+
</small>
|
|
11145
|
+
</summary>
|
|
9803
11146
|
|
|
9804
|
-
|
|
9805
|
-
|
|
9806
|
-
|
|
9807
|
-
|
|
9808
|
-
|
|
9809
|
-
|
|
9810
|
-
|
|
9811
|
-
|
|
9812
|
-
|
|
9813
|
-
|
|
9814
|
-
|
|
9815
|
-
|
|
9816
|
-
|
|
9817
|
-
|
|
9818
|
-
|
|
9819
|
-
|
|
9820
|
-
|
|
9821
|
-
|
|
9822
|
-
|
|
11147
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
11148
|
+
<legend>{{ tx('editor.commonMetadata', 'Common metadata') }}</legend>
|
|
11149
|
+
<label>
|
|
11150
|
+
<span>{{ tx('editor.field.testId', 'Test id') }}</span>
|
|
11151
|
+
<input
|
|
11152
|
+
[ngModel]="getStringField(node, 'testId')"
|
|
11153
|
+
(ngModelChange)="setStringField($index, 'testId', $event)"
|
|
11154
|
+
[placeholder]="tx('editor.placeholder.testId', 'rich-hero-title')"
|
|
11155
|
+
/>
|
|
11156
|
+
</label>
|
|
11157
|
+
<label>
|
|
11158
|
+
<span>{{ tx('editor.field.className', 'CSS class') }}</span>
|
|
11159
|
+
<input
|
|
11160
|
+
[ngModel]="getStringField(node, 'className')"
|
|
11161
|
+
(ngModelChange)="setStringField($index, 'className', $event)"
|
|
11162
|
+
[placeholder]="tx('editor.placeholder.className', 'hero-title')"
|
|
11163
|
+
/>
|
|
11164
|
+
</label>
|
|
11165
|
+
<label>
|
|
11166
|
+
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
11167
|
+
<input
|
|
11168
|
+
[ngModel]="getCapabilityList(node)"
|
|
11169
|
+
(ngModelChange)="setCapabilityList($index, $event)"
|
|
11170
|
+
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
11171
|
+
/>
|
|
11172
|
+
</label>
|
|
11173
|
+
<label>
|
|
11174
|
+
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
11175
|
+
<select
|
|
11176
|
+
[ngModel]="getStringField(node, 'capabilityMode') || 'all'"
|
|
11177
|
+
(ngModelChange)="setStringField($index, 'capabilityMode', $event)"
|
|
11178
|
+
>
|
|
11179
|
+
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
11180
|
+
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
11181
|
+
</select>
|
|
11182
|
+
</label>
|
|
11183
|
+
</fieldset>
|
|
9823
11184
|
|
|
9824
|
-
|
|
9825
|
-
|
|
9826
|
-
|
|
9827
|
-
|
|
9828
|
-
|
|
9829
|
-
|
|
9830
|
-
|
|
9831
|
-
|
|
9832
|
-
|
|
9833
|
-
|
|
9834
|
-
|
|
9835
|
-
|
|
9836
|
-
|
|
9837
|
-
|
|
9838
|
-
|
|
9839
|
-
|
|
9840
|
-
|
|
9841
|
-
|
|
9842
|
-
|
|
11185
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
11186
|
+
<legend>{{ tx('editor.visibilityRule', 'Visibility rule') }}</legend>
|
|
11187
|
+
<label>
|
|
11188
|
+
<span>{{ tx('editor.field.visibleWhenPath', 'Context path') }}</span>
|
|
11189
|
+
<input
|
|
11190
|
+
[ngModel]="getVisibleWhenPath(node)"
|
|
11191
|
+
(ngModelChange)="setVisibleWhenPath($index, $event)"
|
|
11192
|
+
[placeholder]="tx('editor.placeholder.visibleWhenPath', 'row.active')"
|
|
11193
|
+
/>
|
|
11194
|
+
</label>
|
|
11195
|
+
<label>
|
|
11196
|
+
<span>{{ tx('editor.field.visibleWhenValue', 'Expected value') }}</span>
|
|
11197
|
+
<input
|
|
11198
|
+
[ngModel]="getVisibleWhenValue(node)"
|
|
11199
|
+
(ngModelChange)="setVisibleWhenValue($index, $event)"
|
|
11200
|
+
[placeholder]="tx('editor.placeholder.visibleWhenValue', 'true')"
|
|
11201
|
+
/>
|
|
11202
|
+
</label>
|
|
11203
|
+
</fieldset>
|
|
11204
|
+
|
|
11205
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
11206
|
+
<legend>{{ tx('editor.safeStyle', 'Safe style') }}</legend>
|
|
11207
|
+
<label>
|
|
11208
|
+
<span>{{ tx('editor.field.styleName', 'CSS property') }}</span>
|
|
11209
|
+
<input
|
|
11210
|
+
[ngModel]="getFirstStyleName(node)"
|
|
11211
|
+
(ngModelChange)="setFirstStyleName($index, $event)"
|
|
11212
|
+
[placeholder]="tx('editor.placeholder.styleName', 'color')"
|
|
11213
|
+
/>
|
|
11214
|
+
</label>
|
|
11215
|
+
<label>
|
|
11216
|
+
<span>{{ tx('editor.field.styleValue', 'CSS value') }}</span>
|
|
11217
|
+
<input
|
|
11218
|
+
[ngModel]="getFirstStyleValue(node)"
|
|
11219
|
+
(ngModelChange)="setFirstStyleValue($index, $event)"
|
|
11220
|
+
[placeholder]="tx('editor.placeholder.styleValue', 'var(--md-sys-color-primary)')"
|
|
11221
|
+
/>
|
|
11222
|
+
</label>
|
|
11223
|
+
</fieldset>
|
|
11224
|
+
|
|
11225
|
+
@if (getAdvancedJsonOnlyFields(node).length) {
|
|
11226
|
+
<aside class="prx-rich-editor__advanced-json-map">
|
|
11227
|
+
<strong>{{ tx('editor.advancedJsonFields', 'Advanced JSON fields present') }}</strong>
|
|
11228
|
+
<p>
|
|
11229
|
+
{{
|
|
11230
|
+
tx(
|
|
11231
|
+
'editor.advancedJsonFieldsHelp',
|
|
11232
|
+
'These canonical fields are preserved by guided edits and remain editable in the Advanced JSON tab.'
|
|
11233
|
+
)
|
|
11234
|
+
}}
|
|
11235
|
+
</p>
|
|
11236
|
+
<div class="prx-rich-editor__advanced-json-chips">
|
|
11237
|
+
@for (field of getAdvancedJsonOnlyFields(node); track field) {
|
|
11238
|
+
<code>{{ field }}</code>
|
|
11239
|
+
}
|
|
11240
|
+
</div>
|
|
11241
|
+
</aside>
|
|
11242
|
+
}
|
|
11243
|
+
|
|
11244
|
+
<fieldset class="prx-rich-editor__field-group prx-rich-editor__json-fieldset">
|
|
11245
|
+
<legend>{{ tx('editor.advancedJsonEditor', 'Advanced JSON editor') }}</legend>
|
|
11246
|
+
<p class="prx-rich-editor__field-help">
|
|
11247
|
+
{{
|
|
11248
|
+
tx(
|
|
11249
|
+
'editor.advancedJsonEditorHelp',
|
|
11250
|
+
'Edit canonical data bindings and JsonLogic rule fields without leaving guided editing.'
|
|
11251
|
+
)
|
|
11252
|
+
}}
|
|
11253
|
+
</p>
|
|
11254
|
+
@for (field of advancedJsonOnlyNodeFields; track field) {
|
|
11255
|
+
<label class="prx-rich-editor__wide-field prx-rich-editor__json-field">
|
|
11256
|
+
<span>{{ tx('editor.field.' + field, field) }}</span>
|
|
11257
|
+
<textarea
|
|
11258
|
+
[ngModel]="getAdvancedJsonFieldValue(nodeIndex, node, field)"
|
|
11259
|
+
(ngModelChange)="setAdvancedJsonField(nodeIndex, field, $event)"
|
|
11260
|
+
[placeholder]="getAdvancedJsonFieldPlaceholder(field)"
|
|
11261
|
+
[class.invalid]="getAdvancedJsonFieldError(nodeIndex, field)"
|
|
11262
|
+
></textarea>
|
|
11263
|
+
@if (getAdvancedJsonFieldError(nodeIndex, field)) {
|
|
11264
|
+
<small class="prx-rich-editor__field-error">
|
|
11265
|
+
{{ getAdvancedJsonFieldError(nodeIndex, field) }}
|
|
11266
|
+
</small>
|
|
11267
|
+
}
|
|
11268
|
+
</label>
|
|
11269
|
+
}
|
|
11270
|
+
</fieldset>
|
|
11271
|
+
</details>
|
|
9843
11272
|
</div>
|
|
9844
11273
|
</article>
|
|
11274
|
+
}
|
|
9845
11275
|
}
|
|
9846
11276
|
</div>
|
|
11277
|
+
</div>
|
|
11278
|
+
</div>
|
|
9847
11279
|
} @else {
|
|
9848
11280
|
<p class="prx-rich-editor__empty">
|
|
9849
11281
|
{{ tx('editor.noBlocks', 'No blocks yet. Add a block to start authoring this document.') }}
|
|
9850
11282
|
</p>
|
|
9851
11283
|
}
|
|
9852
11284
|
</section>
|
|
11285
|
+
}
|
|
9853
11286
|
|
|
9854
|
-
|
|
9855
|
-
|
|
11287
|
+
@if (activeEditorPanel === 'preview') {
|
|
11288
|
+
<section
|
|
11289
|
+
class="prx-rich-editor__preview-panel"
|
|
11290
|
+
role="tabpanel"
|
|
11291
|
+
[attr.aria-label]="tx('editor.preview', 'Preview')"
|
|
11292
|
+
>
|
|
11293
|
+
<header class="prx-rich-editor__section-header">
|
|
11294
|
+
<div>
|
|
11295
|
+
<h3>{{ tx('editor.preview', 'Preview') }}</h3>
|
|
11296
|
+
<p>
|
|
11297
|
+
{{
|
|
11298
|
+
tx(
|
|
11299
|
+
'editor.previewHelp',
|
|
11300
|
+
'Inspect the materialized document without mixing preview with authoring fields.'
|
|
11301
|
+
)
|
|
11302
|
+
}}
|
|
11303
|
+
</p>
|
|
11304
|
+
</div>
|
|
11305
|
+
</header>
|
|
11306
|
+
@if (parsedDocument) {
|
|
11307
|
+
<div class="prx-rich-editor__preview prx-rich-editor__preview--large">
|
|
11308
|
+
<praxis-rich-content
|
|
11309
|
+
[document]="parsedDocument"
|
|
11310
|
+
[layout]="layout"
|
|
11311
|
+
[rootClassName]="rootClassName"
|
|
11312
|
+
></praxis-rich-content>
|
|
11313
|
+
</div>
|
|
11314
|
+
} @else {
|
|
11315
|
+
<p class="prx-rich-editor__empty">
|
|
11316
|
+
{{ tx('editor.previewUnavailable', 'Preview is unavailable until the document is valid.') }}
|
|
11317
|
+
</p>
|
|
11318
|
+
}
|
|
11319
|
+
</section>
|
|
11320
|
+
}
|
|
11321
|
+
|
|
11322
|
+
@if (activeEditorPanel === 'json') {
|
|
11323
|
+
<section class="prx-rich-editor__document-panel">
|
|
11324
|
+
<header class="prx-rich-editor__section-header">
|
|
11325
|
+
<div>
|
|
11326
|
+
<h3>{{ tx('editor.document', 'Advanced JSON') }}</h3>
|
|
11327
|
+
<p>
|
|
11328
|
+
{{
|
|
11329
|
+
tx(
|
|
11330
|
+
'editor.documentAdvancedHelp',
|
|
11331
|
+
'Use JSON for diagnostics, migration and advanced fields that are not yet surfaced by guided controls.'
|
|
11332
|
+
)
|
|
11333
|
+
}}
|
|
11334
|
+
</p>
|
|
11335
|
+
</div>
|
|
11336
|
+
</header>
|
|
9856
11337
|
<div class="prx-rich-editor__workbench">
|
|
11338
|
+
<label class="prx-rich-editor__document">
|
|
11339
|
+
<span>{{ tx('editor.documentJson', 'Canonical document JSON') }}</span>
|
|
9857
11340
|
<textarea
|
|
9858
11341
|
name="rich-content-document"
|
|
9859
11342
|
[(ngModel)]="documentJson"
|
|
@@ -9867,6 +11350,7 @@ class PraxisRichContentConfigEditor {
|
|
|
9867
11350
|
spellcheck="false"
|
|
9868
11351
|
data-testid="rich-content-document-input"
|
|
9869
11352
|
></textarea>
|
|
11353
|
+
</label>
|
|
9870
11354
|
|
|
9871
11355
|
<aside
|
|
9872
11356
|
class="prx-rich-editor__inspector"
|
|
@@ -9886,21 +11370,9 @@ class PraxisRichContentConfigEditor {
|
|
|
9886
11370
|
</dl>
|
|
9887
11371
|
</section>
|
|
9888
11372
|
|
|
9889
|
-
@if (parsedDocument) {
|
|
9890
|
-
<section>
|
|
9891
|
-
<h3>{{ tx('editor.preview', 'Preview') }}</h3>
|
|
9892
|
-
<div class="prx-rich-editor__preview">
|
|
9893
|
-
<praxis-rich-content
|
|
9894
|
-
[document]="parsedDocument"
|
|
9895
|
-
[layout]="layout"
|
|
9896
|
-
[rootClassName]="rootClassName"
|
|
9897
|
-
></praxis-rich-content>
|
|
9898
|
-
</div>
|
|
9899
|
-
</section>
|
|
9900
|
-
}
|
|
9901
11373
|
</aside>
|
|
9902
11374
|
</div>
|
|
9903
|
-
</
|
|
11375
|
+
</section>
|
|
9904
11376
|
|
|
9905
11377
|
@if (errorMessage) {
|
|
9906
11378
|
<div
|
|
@@ -9930,6 +11402,7 @@ class PraxisRichContentConfigEditor {
|
|
|
9930
11402
|
}}
|
|
9931
11403
|
</p>
|
|
9932
11404
|
}
|
|
11405
|
+
}
|
|
9933
11406
|
|
|
9934
11407
|
<div class="prx-rich-editor__actions">
|
|
9935
11408
|
<button type="button" (click)="reset()">
|
|
@@ -9940,7 +11413,7 @@ class PraxisRichContentConfigEditor {
|
|
|
9940
11413
|
</button>
|
|
9941
11414
|
</div>
|
|
9942
11415
|
</section>
|
|
9943
|
-
`, isInline: true, styles: [":host{display:block;min-width:0}.prx-rich-editor{display:grid;gap:18px;color:var(--md-sys-color-on-surface, #1f2937)}.prx-rich-editor__header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__header h2{margin:0;font-size:1.25rem}.prx-rich-editor__header p{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673)}.prx-rich-editor__eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;color:var(--md-sys-color-primary, #3154e7)}.prx-rich-editor__status{flex:0 0 auto;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,#16a34a 12%,transparent);color:#166534;font-size:.78rem;font-weight:700}.prx-rich-editor__status.invalid{background:color-mix(in srgb,#dc2626 12%,transparent);color:#991b1b}.prx-rich-editor__grid{display:grid;gap:14px;grid-template-columns:minmax(0,180px) minmax(0,1fr)}.prx-rich-editor__blocks{display:grid;gap:14px}.prx-rich-editor__section-header,.prx-rich-editor__node-header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__section-header h3,.prx-rich-editor__node-header h4{margin:0}.prx-rich-editor__section-header p,.prx-rich-editor__node-note,.prx-rich-editor__empty{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.88rem}.prx-rich-editor__add-block,.prx-rich-editor__node-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.prx-rich-editor__add-block label{min-width:180px}.prx-rich-editor__node-list{display:grid;gap:12px}.prx-rich-editor__node-card{display:grid;gap:14px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:14px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__node-eyebrow{margin:0 0 4px;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.75rem;font-weight:700;text-transform:uppercase}.prx-rich-editor__node-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__wide-field,.prx-rich-editor__node-note{grid-column:1 / -1}.prx-rich-editor__field-group,.prx-rich-editor__nested-editor,.prx-rich-editor__nested-node{grid-column:1 / -1;display:grid;gap:12px}.prx-rich-editor__field-group,.prx-rich-editor__nested-node{margin:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px}.prx-rich-editor__field-group{grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__field-group legend{padding:0 4px;font-weight:700}.prx-rich-editor__nested-header,.prx-rich-editor__nested-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.prx-rich-editor__quick-actions{display:flex;flex-wrap:wrap;gap:8px}.prx-rich-editor__node-grid textarea{min-height:96px;font-family:inherit}label,.prx-rich-editor__document{display:grid;gap:7px;font-weight:700}.prx-rich-editor__checkbox-field{display:flex;gap:10px;align-items:center;align-self:end}.prx-rich-editor__checkbox-field input[type=checkbox]{width:auto}input,select,textarea{box-sizing:border-box;width:100%;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:12px;padding:10px 12px;font:inherit;color:inherit;background:var(--md-sys-color-surface, #fff)}textarea{min-height:360px;resize:vertical;font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.86rem;line-height:1.45}.prx-rich-editor__workbench{display:grid;gap:14px;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr)}.prx-rich-editor__inspector{display:grid;align-content:start;gap:14px;min-width:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__inspector h3{margin:0 0 8px;font-size:.95rem}.prx-rich-editor__inspector dl{display:grid;gap:8px;margin:0}.prx-rich-editor__inspector dl div{display:grid;gap:2px}.prx-rich-editor__inspector dt{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:700}.prx-rich-editor__inspector dd{margin:0;overflow-wrap:anywhere;font-weight:600}.prx-rich-editor__preview{max-height:260px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__help{margin:-8px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.85rem}.prx-rich-editor__error{margin:0;padding:10px 12px;border-radius:8px;color:#991b1b;background:color-mix(in srgb,#dc2626 9%,transparent)}.prx-rich-editor__error p{margin:0}.prx-rich-editor__error ul{display:grid;gap:6px;margin:8px 0 0;padding-inline-start:18px}.prx-rich-editor__error code{margin-right:4px;font-family:Cascadia Code,Fira Code,Consolas,monospace}.prx-rich-editor__actions{display:flex;flex-wrap:wrap;gap:10px}button{border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:8px 14px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-primary, #3154e7);font-weight:700;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}@media(max-width:760px){.prx-rich-editor__header,.prx-rich-editor__section-header,.prx-rich-editor__node-header,.prx-rich-editor__grid,.prx-rich-editor__field-group,.prx-rich-editor__node-grid,.prx-rich-editor__workbench{grid-template-columns:1fr;display:grid}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PraxisRichContent, selector: "praxis-rich-content", inputs: ["document", "nodes", "context", "hostCapabilities", "layout", "rootClassName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11416
|
+
`, isInline: true, styles: [":host{display:block;min-width:0;width:100%;max-width:100%;box-sizing:border-box}.prx-rich-editor{display:grid;gap:18px;min-width:0;color:var(--md-sys-color-on-surface, #1f2937)}.prx-rich-editor__header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__header h2{margin:0;font-size:1.25rem}.prx-rich-editor__header p{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673)}.prx-rich-editor__eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;color:var(--md-sys-color-primary, #3154e7)}.prx-rich-editor__status{flex:0 0 auto;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,#16a34a 12%,transparent);color:#166534;font-size:.78rem;font-weight:700}.prx-rich-editor__status.invalid{background:color-mix(in srgb,#dc2626 12%,transparent);color:#991b1b}.prx-rich-editor__grid{display:grid;gap:14px;grid-template-columns:minmax(0,180px) minmax(0,1fr)}.prx-rich-editor__tabs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-bottom:1px solid var(--md-sys-color-outline-variant, #d7dce5)}.prx-rich-editor__tab{margin-block-end:-1px;border-radius:8px 8px 0 0;border-bottom-color:transparent;color:var(--md-sys-color-on-surface-variant, #5f6673);background:transparent}.prx-rich-editor__tab--active{border-color:var(--md-sys-color-outline-variant, #d7dce5);border-bottom-color:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-primary, #3154e7);background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__tab-badge,.prx-rich-editor__issue-count{display:inline-flex;min-width:1.35em;min-height:1.35em;padding:0 .38em;border-radius:999px;align-items:center;justify-content:center;background:color-mix(in srgb,#dc2626 14%,transparent);color:#991b1b;font-size:.72rem;font-weight:800;line-height:1}.prx-rich-editor__tab-badge{margin-inline-start:6px}.prx-rich-editor__blocks{display:grid;gap:14px}.prx-rich-editor__authoring-shell{display:grid;gap:14px;grid-template-columns:minmax(220px,.34fr) minmax(0,1fr);align-items:start}.prx-rich-editor__structure,.prx-rich-editor__properties,.prx-rich-editor__document-panel,.prx-rich-editor__preview-panel{min-width:0;display:grid;gap:12px}.prx-rich-editor__structure{position:sticky;top:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__structure-summary{display:grid;gap:4px}.prx-rich-editor__structure-summary span{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.82rem;font-weight:500}.prx-rich-editor__structure-list{display:grid;gap:8px}.prx-rich-editor__structure-item{display:grid;gap:3px;width:100%;padding:10px;text-align:left;color:var(--md-sys-color-on-surface, #1f2937);background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__structure-item--selected{border-color:var(--md-sys-color-primary, #3154e7);background:color-mix(in srgb,var(--md-sys-color-primary, #3154e7) 8%,var(--md-sys-color-surface, #fff))}.prx-rich-editor__structure-item small{color:#991b1b;font-weight:700}.prx-rich-editor__intent-strip{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.prx-rich-editor__intent-strip span,.prx-rich-editor__intent-strip button{min-width:0;display:grid;gap:3px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:10px 12px;text-align:left;color:var(--md-sys-color-on-surface, #1f2937);background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__intent-strip button{position:relative}.prx-rich-editor__intent-strip small{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:600}.prx-rich-editor__intent-strip .prx-rich-editor__issue-count{position:absolute;inset-block-start:8px;inset-inline-end:8px}.prx-rich-editor__section-header,.prx-rich-editor__node-header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__section-header h3,.prx-rich-editor__node-header h4{margin:0}.prx-rich-editor__section-header p,.prx-rich-editor__node-note,.prx-rich-editor__empty{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.88rem}.prx-rich-editor__add-block,.prx-rich-editor__node-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.prx-rich-editor__add-block label{min-width:180px}.prx-rich-editor__node-list{display:grid;gap:12px}.prx-rich-editor__node-card{display:grid;gap:14px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:14px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__node-eyebrow{margin:0 0 4px;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.75rem;font-weight:700;text-transform:uppercase}.prx-rich-editor__node-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__wide-field,.prx-rich-editor__node-note{grid-column:1 / -1}.prx-rich-editor__field-group,.prx-rich-editor__nested-editor,.prx-rich-editor__nested-node{grid-column:1 / -1;display:grid;gap:12px}.prx-rich-editor__field-group,.prx-rich-editor__nested-node{margin:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px}.prx-rich-editor__document-context{display:grid;gap:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__document-context summary{display:flex;gap:10px;align-items:center;justify-content:space-between;cursor:pointer;font-weight:800}.prx-rich-editor__document-context summary small{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:600}.prx-rich-editor__document-context[open] summary{margin-block-end:12px}.prx-rich-editor__field-group{grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__field-group legend{padding:0 4px;font-weight:700}.prx-rich-editor__field-help{grid-column:1 / -1;margin:0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.84rem}.prx-rich-editor__json-fieldset{margin-block-start:12px}.prx-rich-editor__json-field{display:grid;gap:6px}.prx-rich-editor__json-field textarea{min-height:96px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.8rem;line-height:1.45}.prx-rich-editor__field-error{color:var(--md-sys-color-error, #ba1a1a);font-size:.78rem;font-weight:700}.prx-rich-editor__advanced-group{grid-column:1 / -1;display:grid;gap:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:color-mix(in srgb,var(--md-sys-color-surface-container-lowest, #fff) 88%,var(--md-sys-color-primary, #3154e7) 4%)}.prx-rich-editor__advanced-group summary{display:flex;gap:10px;align-items:center;justify-content:space-between;cursor:pointer;font-weight:800}.prx-rich-editor__advanced-group summary small{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:600}.prx-rich-editor__advanced-group[open]{padding-block-end:14px}.prx-rich-editor__advanced-group[open] summary{margin-block-end:12px}.prx-rich-editor__advanced-group .prx-rich-editor__field-group+.prx-rich-editor__field-group{margin-block-start:12px}.prx-rich-editor__advanced-json-map{display:grid;gap:8px;margin-block-start:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__advanced-json-map p{margin:0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.84rem}.prx-rich-editor__advanced-json-chips{display:flex;flex-wrap:wrap;gap:6px}.prx-rich-editor__advanced-json-chips code{border-radius:999px;padding:4px 8px;background:color-mix(in srgb,var(--md-sys-color-primary, #3154e7) 12%,transparent);color:var(--md-sys-color-primary, #3154e7);font-size:.76rem;font-weight:700}.prx-rich-editor__nested-header,.prx-rich-editor__nested-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.prx-rich-editor__quick-actions{display:flex;flex-wrap:wrap;gap:8px}.prx-rich-editor__node-grid textarea{min-height:96px;font-family:inherit}label,.prx-rich-editor__document{display:grid;gap:7px;font-weight:700}.prx-rich-editor__checkbox-field{display:flex;gap:10px;align-items:center;align-self:end}.prx-rich-editor__checkbox-field input[type=checkbox]{width:auto}input,select,textarea{box-sizing:border-box;width:100%;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:12px;padding:10px 12px;font:inherit;color:inherit;background:var(--md-sys-color-surface, #fff)}textarea{min-height:360px;resize:vertical;font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.86rem;line-height:1.45}.prx-rich-editor__workbench{display:grid;gap:14px;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr)}.prx-rich-editor__inspector{display:grid;align-content:start;gap:14px;min-width:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__inspector h3{margin:0 0 8px;font-size:.95rem}.prx-rich-editor__inspector dl{display:grid;gap:8px;margin:0}.prx-rich-editor__inspector dl div{display:grid;gap:2px}.prx-rich-editor__inspector dt{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:700}.prx-rich-editor__inspector dd{margin:0;overflow-wrap:anywhere;font-weight:600}.prx-rich-editor__preview{max-height:260px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__preview--large{max-height:min(68vh,760px)}.prx-rich-editor__help{margin:-8px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.85rem}.prx-rich-editor__error{margin:0;padding:10px 12px;border-radius:8px;color:#991b1b;background:color-mix(in srgb,#dc2626 9%,transparent)}.prx-rich-editor__error p{margin:0}.prx-rich-editor__error ul{display:grid;gap:6px;margin:8px 0 0;padding-inline-start:18px}.prx-rich-editor__error code{margin-right:4px;font-family:Cascadia Code,Fira Code,Consolas,monospace}.prx-rich-editor__actions{display:flex;flex-wrap:wrap;gap:10px}button{border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:8px 14px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-primary, #3154e7);font-weight:700;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}@media(max-width:760px){.prx-rich-editor__header,.prx-rich-editor__section-header,.prx-rich-editor__node-header,.prx-rich-editor__authoring-shell,.prx-rich-editor__intent-strip,.prx-rich-editor__grid,.prx-rich-editor__document-context summary,.prx-rich-editor__field-group,.prx-rich-editor__node-grid,.prx-rich-editor__workbench{grid-template-columns:1fr;display:grid}.prx-rich-editor__structure{position:static}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PraxisRichContent, selector: "praxis-rich-content", inputs: ["document", "nodes", "context", "hostCapabilities", "layout", "rootClassName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9944
11417
|
}
|
|
9945
11418
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisRichContentConfigEditor, decorators: [{
|
|
9946
11419
|
type: Component,
|
|
@@ -10006,6 +11479,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10006
11479
|
</label>
|
|
10007
11480
|
</div>
|
|
10008
11481
|
|
|
11482
|
+
<details
|
|
11483
|
+
class="prx-rich-editor__document-context"
|
|
11484
|
+
[open]="hasDocumentContext()"
|
|
11485
|
+
>
|
|
11486
|
+
<summary>
|
|
11487
|
+
<span>{{ tx('editor.documentContext', 'Document context') }}</span>
|
|
11488
|
+
<small>
|
|
11489
|
+
{{
|
|
11490
|
+
tx(
|
|
11491
|
+
'editor.documentContextHelp',
|
|
11492
|
+
'Canonical data scopes and aliases available to rich-content bindings.'
|
|
11493
|
+
)
|
|
11494
|
+
}}
|
|
11495
|
+
</small>
|
|
11496
|
+
</summary>
|
|
11497
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
11498
|
+
<legend>{{ tx('editor.documentContextFields', 'Context contract') }}</legend>
|
|
11499
|
+
<label class="prx-rich-editor__wide-field">
|
|
11500
|
+
<span>{{ tx('editor.field.contextScopes', 'Context scopes') }}</span>
|
|
11501
|
+
<input
|
|
11502
|
+
[ngModel]="getDocumentContextScopes()"
|
|
11503
|
+
(ngModelChange)="setDocumentContextScopes($event)"
|
|
11504
|
+
[placeholder]="tx('editor.placeholder.contextScopes', 'row, user, tenant')"
|
|
11505
|
+
[class.invalid]="getDocumentContextFieldError('scopes')"
|
|
11506
|
+
/>
|
|
11507
|
+
@if (getDocumentContextFieldError('scopes')) {
|
|
11508
|
+
<small class="prx-rich-editor__field-error">
|
|
11509
|
+
{{ getDocumentContextFieldError('scopes') }}
|
|
11510
|
+
</small>
|
|
11511
|
+
}
|
|
11512
|
+
</label>
|
|
11513
|
+
<label class="prx-rich-editor__wide-field prx-rich-editor__json-field">
|
|
11514
|
+
<span>{{ tx('editor.field.contextAliases', 'Context aliases') }}</span>
|
|
11515
|
+
<textarea
|
|
11516
|
+
[ngModel]="getDocumentContextAliasesValue()"
|
|
11517
|
+
(ngModelChange)="setDocumentContextAliases($event)"
|
|
11518
|
+
[placeholder]="getDocumentContextAliasesPlaceholder()"
|
|
11519
|
+
[class.invalid]="getDocumentContextFieldError('aliases')"
|
|
11520
|
+
></textarea>
|
|
11521
|
+
@if (getDocumentContextFieldError('aliases')) {
|
|
11522
|
+
<small class="prx-rich-editor__field-error">
|
|
11523
|
+
{{ getDocumentContextFieldError('aliases') }}
|
|
11524
|
+
</small>
|
|
11525
|
+
}
|
|
11526
|
+
</label>
|
|
11527
|
+
</fieldset>
|
|
11528
|
+
</details>
|
|
11529
|
+
|
|
10009
11530
|
<ng-template
|
|
10010
11531
|
#presenterFields
|
|
10011
11532
|
let-node="node"
|
|
@@ -10041,6 +11562,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10041
11562
|
/>
|
|
10042
11563
|
</label>
|
|
10043
11564
|
}
|
|
11565
|
+
@case ('avatar') {
|
|
11566
|
+
<label>
|
|
11567
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
11568
|
+
<input
|
|
11569
|
+
[ngModel]="getStringField(node, 'name')"
|
|
11570
|
+
(ngModelChange)="setString('name', $event)"
|
|
11571
|
+
/>
|
|
11572
|
+
</label>
|
|
11573
|
+
<label>
|
|
11574
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
11575
|
+
<input
|
|
11576
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
11577
|
+
(ngModelChange)="setString('nameExpr', $event)"
|
|
11578
|
+
/>
|
|
11579
|
+
</label>
|
|
11580
|
+
<label>
|
|
11581
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
11582
|
+
<input
|
|
11583
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
11584
|
+
(ngModelChange)="setString('imageSrc', $event)"
|
|
11585
|
+
/>
|
|
11586
|
+
</label>
|
|
11587
|
+
<label>
|
|
11588
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
11589
|
+
<input
|
|
11590
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
11591
|
+
(ngModelChange)="setString('imageSrcExpr', $event)"
|
|
11592
|
+
/>
|
|
11593
|
+
</label>
|
|
11594
|
+
<label>
|
|
11595
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
11596
|
+
<input
|
|
11597
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
11598
|
+
(ngModelChange)="setString('initials', $event)"
|
|
11599
|
+
/>
|
|
11600
|
+
</label>
|
|
11601
|
+
<label>
|
|
11602
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
11603
|
+
<input
|
|
11604
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
11605
|
+
(ngModelChange)="setString('initialsExpr', $event)"
|
|
11606
|
+
/>
|
|
11607
|
+
</label>
|
|
11608
|
+
}
|
|
10044
11609
|
@case ('image') {
|
|
10045
11610
|
<label>
|
|
10046
11611
|
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
@@ -10049,6 +11614,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10049
11614
|
(ngModelChange)="setString('src', $event)"
|
|
10050
11615
|
/>
|
|
10051
11616
|
</label>
|
|
11617
|
+
<label>
|
|
11618
|
+
<span>{{ tx('editor.field.srcExpr', 'Image URL binding') }}</span>
|
|
11619
|
+
<input
|
|
11620
|
+
[ngModel]="getStringField(node, 'srcExpr')"
|
|
11621
|
+
(ngModelChange)="setString('srcExpr', $event)"
|
|
11622
|
+
/>
|
|
11623
|
+
</label>
|
|
10052
11624
|
<label>
|
|
10053
11625
|
<span>{{ tx('editor.field.alt', 'Alternative text') }}</span>
|
|
10054
11626
|
<input
|
|
@@ -10056,6 +11628,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10056
11628
|
(ngModelChange)="setString('alt', $event)"
|
|
10057
11629
|
/>
|
|
10058
11630
|
</label>
|
|
11631
|
+
<label>
|
|
11632
|
+
<span>{{ tx('editor.field.altExpr', 'Alt text binding') }}</span>
|
|
11633
|
+
<input
|
|
11634
|
+
[ngModel]="getStringField(node, 'altExpr')"
|
|
11635
|
+
(ngModelChange)="setString('altExpr', $event)"
|
|
11636
|
+
/>
|
|
11637
|
+
</label>
|
|
10059
11638
|
}
|
|
10060
11639
|
@case ('link') {
|
|
10061
11640
|
<label>
|
|
@@ -10065,6 +11644,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10065
11644
|
(ngModelChange)="setString('label', $event)"
|
|
10066
11645
|
/>
|
|
10067
11646
|
</label>
|
|
11647
|
+
<label>
|
|
11648
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
11649
|
+
<input
|
|
11650
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
11651
|
+
(ngModelChange)="setString('labelExpr', $event)"
|
|
11652
|
+
/>
|
|
11653
|
+
</label>
|
|
10068
11654
|
<label>
|
|
10069
11655
|
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
10070
11656
|
<input
|
|
@@ -10072,6 +11658,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10072
11658
|
(ngModelChange)="setString('href', $event)"
|
|
10073
11659
|
/>
|
|
10074
11660
|
</label>
|
|
11661
|
+
<label>
|
|
11662
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
11663
|
+
<select
|
|
11664
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
11665
|
+
(ngModelChange)="setString('target', $event)"
|
|
11666
|
+
>
|
|
11667
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
11668
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
11669
|
+
</select>
|
|
11670
|
+
</label>
|
|
11671
|
+
<label>
|
|
11672
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
11673
|
+
<input
|
|
11674
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
11675
|
+
(ngModelChange)="setString('rel', $event)"
|
|
11676
|
+
/>
|
|
11677
|
+
</label>
|
|
10075
11678
|
}
|
|
10076
11679
|
@case ('metric') {
|
|
10077
11680
|
<label>
|
|
@@ -10097,6 +11700,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10097
11700
|
(ngModelChange)="setString('label', $event)"
|
|
10098
11701
|
/>
|
|
10099
11702
|
</label>
|
|
11703
|
+
<label>
|
|
11704
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
11705
|
+
<input
|
|
11706
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
11707
|
+
(ngModelChange)="setString('labelExpr', $event)"
|
|
11708
|
+
/>
|
|
11709
|
+
</label>
|
|
11710
|
+
<label>
|
|
11711
|
+
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
11712
|
+
<input
|
|
11713
|
+
[ngModel]="getStringField(node, 'valueExpr')"
|
|
11714
|
+
(ngModelChange)="setString('valueExpr', $event)"
|
|
11715
|
+
/>
|
|
11716
|
+
</label>
|
|
10100
11717
|
<label>
|
|
10101
11718
|
<span>{{ tx('editor.field.max', 'Maximum') }}</span>
|
|
10102
11719
|
<input
|
|
@@ -10350,7 +11967,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10350
11967
|
</div>
|
|
10351
11968
|
</ng-template>
|
|
10352
11969
|
|
|
10353
|
-
<
|
|
11970
|
+
<nav
|
|
11971
|
+
class="prx-rich-editor__tabs"
|
|
11972
|
+
[attr.aria-label]="tx('editor.workbenchTabs', 'Editor sections')"
|
|
11973
|
+
role="tablist"
|
|
11974
|
+
>
|
|
11975
|
+
<button
|
|
11976
|
+
type="button"
|
|
11977
|
+
role="tab"
|
|
11978
|
+
class="prx-rich-editor__tab"
|
|
11979
|
+
[class.prx-rich-editor__tab--active]="activeEditorPanel === 'guided'"
|
|
11980
|
+
[attr.aria-selected]="activeEditorPanel === 'guided'"
|
|
11981
|
+
(click)="selectEditorPanel('guided')"
|
|
11982
|
+
data-testid="rich-content-guided-tab"
|
|
11983
|
+
>
|
|
11984
|
+
{{ tx('editor.guidedEditing', 'Guided editing') }}
|
|
11985
|
+
</button>
|
|
11986
|
+
<button
|
|
11987
|
+
type="button"
|
|
11988
|
+
role="tab"
|
|
11989
|
+
class="prx-rich-editor__tab"
|
|
11990
|
+
[class.prx-rich-editor__tab--active]="activeEditorPanel === 'preview'"
|
|
11991
|
+
[attr.aria-selected]="activeEditorPanel === 'preview'"
|
|
11992
|
+
(click)="selectEditorPanel('preview')"
|
|
11993
|
+
data-testid="rich-content-preview-tab"
|
|
11994
|
+
>
|
|
11995
|
+
{{ tx('editor.preview', 'Preview') }}
|
|
11996
|
+
</button>
|
|
11997
|
+
<button
|
|
11998
|
+
type="button"
|
|
11999
|
+
role="tab"
|
|
12000
|
+
class="prx-rich-editor__tab"
|
|
12001
|
+
[class.prx-rich-editor__tab--active]="activeEditorPanel === 'json'"
|
|
12002
|
+
[attr.aria-selected]="activeEditorPanel === 'json'"
|
|
12003
|
+
(click)="selectEditorPanel('json')"
|
|
12004
|
+
data-testid="rich-content-json-tab"
|
|
12005
|
+
>
|
|
12006
|
+
{{ tx('editor.document', 'Advanced JSON') }}
|
|
12007
|
+
@if (!valid || validationIssues.length) {
|
|
12008
|
+
<span class="prx-rich-editor__tab-badge">
|
|
12009
|
+
{{
|
|
12010
|
+
validationIssues.length || tx('editor.invalidBadge', 'Invalid')
|
|
12011
|
+
}}
|
|
12012
|
+
</span>
|
|
12013
|
+
}
|
|
12014
|
+
</button>
|
|
12015
|
+
</nav>
|
|
12016
|
+
|
|
12017
|
+
@if (activeEditorPanel === 'guided') {
|
|
12018
|
+
<section
|
|
12019
|
+
class="prx-rich-editor__blocks"
|
|
12020
|
+
role="tabpanel"
|
|
12021
|
+
[attr.aria-label]="tx('editor.guidedEditing', 'Guided editing')"
|
|
12022
|
+
>
|
|
10354
12023
|
<header class="prx-rich-editor__section-header">
|
|
10355
12024
|
<div>
|
|
10356
12025
|
<h3>{{ tx('editor.blocks', 'Blocks') }}</h3>
|
|
@@ -10387,8 +12056,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10387
12056
|
</header>
|
|
10388
12057
|
|
|
10389
12058
|
@if (parsedDocument?.nodes?.length) {
|
|
12059
|
+
<div class="prx-rich-editor__authoring-shell">
|
|
12060
|
+
<aside
|
|
12061
|
+
class="prx-rich-editor__structure"
|
|
12062
|
+
[attr.aria-label]="tx('editor.structure', 'Document structure')"
|
|
12063
|
+
>
|
|
12064
|
+
<div class="prx-rich-editor__structure-summary">
|
|
12065
|
+
<strong>{{ tx('editor.structure', 'Document structure') }}</strong>
|
|
12066
|
+
<span>
|
|
12067
|
+
{{
|
|
12068
|
+
tx('editor.structureHelp', 'Select a block to edit its properties.')
|
|
12069
|
+
}}
|
|
12070
|
+
</span>
|
|
12071
|
+
</div>
|
|
12072
|
+
<div class="prx-rich-editor__structure-list">
|
|
12073
|
+
@for (node of parsedDocument?.nodes ?? []; track node.id ?? $index; let nodeIndex = $index) {
|
|
12074
|
+
<button
|
|
12075
|
+
type="button"
|
|
12076
|
+
class="prx-rich-editor__structure-item"
|
|
12077
|
+
[class.prx-rich-editor__structure-item--selected]="selectedNodeIndex === nodeIndex"
|
|
12078
|
+
[attr.aria-current]="selectedNodeIndex === nodeIndex ? 'true' : null"
|
|
12079
|
+
(click)="selectTopLevelNode(nodeIndex)"
|
|
12080
|
+
[attr.data-testid]="'rich-content-node-selector-' + nodeIndex"
|
|
12081
|
+
>
|
|
12082
|
+
<span class="prx-rich-editor__node-eyebrow">
|
|
12083
|
+
{{ tx('editor.block', 'Block') }} {{ nodeIndex + 1 }}
|
|
12084
|
+
</span>
|
|
12085
|
+
<strong>{{ tx('editor.nodeType.' + node.type, node.type) }}</strong>
|
|
12086
|
+
@if (getIssueCount('$.nodes[' + nodeIndex + ']'); as issueCount) {
|
|
12087
|
+
<small>
|
|
12088
|
+
{{ tx('editor.hasIssues', 'Needs attention') }}
|
|
12089
|
+
<span class="prx-rich-editor__issue-count">{{ issueCount }}</span>
|
|
12090
|
+
</small>
|
|
12091
|
+
}
|
|
12092
|
+
</button>
|
|
12093
|
+
}
|
|
12094
|
+
</div>
|
|
12095
|
+
</aside>
|
|
12096
|
+
|
|
12097
|
+
<div class="prx-rich-editor__properties">
|
|
12098
|
+
<header class="prx-rich-editor__section-header">
|
|
12099
|
+
<div>
|
|
12100
|
+
<h3>{{ tx('editor.properties', 'Properties') }}</h3>
|
|
12101
|
+
<p>
|
|
12102
|
+
{{
|
|
12103
|
+
tx(
|
|
12104
|
+
'editor.propertiesHelp',
|
|
12105
|
+
'Edit the selected block without leaving the document structure.'
|
|
12106
|
+
)
|
|
12107
|
+
}}
|
|
12108
|
+
</p>
|
|
12109
|
+
</div>
|
|
12110
|
+
</header>
|
|
12111
|
+
<div
|
|
12112
|
+
class="prx-rich-editor__intent-strip"
|
|
12113
|
+
[attr.aria-label]="tx('editor.intentNavigation', 'Property sections')"
|
|
12114
|
+
>
|
|
12115
|
+
<span>
|
|
12116
|
+
<strong>{{ tx('editor.intent.content', 'Content') }}</strong>
|
|
12117
|
+
<small>{{ tx('editor.intent.contentHelp', 'Primary block fields') }}</small>
|
|
12118
|
+
</span>
|
|
12119
|
+
<span>
|
|
12120
|
+
<strong>{{ tx('editor.intent.presentation', 'Presentation') }}</strong>
|
|
12121
|
+
<small>{{ tx('editor.intent.presentationHelp', 'Visual affordances') }}</small>
|
|
12122
|
+
</span>
|
|
12123
|
+
<button type="button" (click)="openAdvancedRules()">
|
|
12124
|
+
<strong>{{ tx('editor.intent.dataRules', 'Data and rules') }}</strong>
|
|
12125
|
+
<small>{{ tx('editor.intent.dataRulesHelp', 'Metadata and gates') }}</small>
|
|
12126
|
+
@if (getSelectedNodeIssueCount(); as selectedIssueCount) {
|
|
12127
|
+
<span class="prx-rich-editor__issue-count">
|
|
12128
|
+
{{ selectedIssueCount }}
|
|
12129
|
+
</span>
|
|
12130
|
+
}
|
|
12131
|
+
</button>
|
|
12132
|
+
</div>
|
|
10390
12133
|
<div class="prx-rich-editor__node-list">
|
|
10391
12134
|
@for (node of parsedDocument?.nodes ?? []; track node.id ?? $index; let nodeIndex = $index) {
|
|
12135
|
+
@if (selectedNodeIndex === nodeIndex) {
|
|
10392
12136
|
<article
|
|
10393
12137
|
class="prx-rich-editor__node-card"
|
|
10394
12138
|
[attr.data-rich-editor-node-type]="node.type"
|
|
@@ -10527,19 +12271,124 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10527
12271
|
/>
|
|
10528
12272
|
</label>
|
|
10529
12273
|
}
|
|
10530
|
-
@case ('
|
|
12274
|
+
@case ('avatar') {
|
|
12275
|
+
<label>
|
|
12276
|
+
<span>{{ tx('editor.field.avatarName', 'Avatar name') }}</span>
|
|
12277
|
+
<input
|
|
12278
|
+
[ngModel]="getStringField(node, 'name')"
|
|
12279
|
+
(ngModelChange)="setStringField($index, 'name', $event)"
|
|
12280
|
+
/>
|
|
12281
|
+
</label>
|
|
12282
|
+
<label>
|
|
12283
|
+
<span>{{ tx('editor.field.nameExpr', 'Name binding') }}</span>
|
|
12284
|
+
<input
|
|
12285
|
+
[ngModel]="getStringField(node, 'nameExpr')"
|
|
12286
|
+
(ngModelChange)="setStringField($index, 'nameExpr', $event)"
|
|
12287
|
+
[placeholder]="tx('editor.placeholder.nameExpr', 'row.name')"
|
|
12288
|
+
/>
|
|
12289
|
+
</label>
|
|
12290
|
+
<label>
|
|
12291
|
+
<span>{{ tx('editor.field.avatarImage', 'Avatar image') }}</span>
|
|
12292
|
+
<input
|
|
12293
|
+
[ngModel]="getStringField(node, 'imageSrc')"
|
|
12294
|
+
(ngModelChange)="setStringField($index, 'imageSrc', $event)"
|
|
12295
|
+
/>
|
|
12296
|
+
</label>
|
|
12297
|
+
<label>
|
|
12298
|
+
<span>{{ tx('editor.field.imageSrcExpr', 'Image binding') }}</span>
|
|
12299
|
+
<input
|
|
12300
|
+
[ngModel]="getStringField(node, 'imageSrcExpr')"
|
|
12301
|
+
(ngModelChange)="setStringField($index, 'imageSrcExpr', $event)"
|
|
12302
|
+
[placeholder]="tx('editor.placeholder.imageSrcExpr', 'row.avatarUrl')"
|
|
12303
|
+
/>
|
|
12304
|
+
</label>
|
|
12305
|
+
<label>
|
|
12306
|
+
<span>{{ tx('editor.field.initials', 'Initials') }}</span>
|
|
12307
|
+
<input
|
|
12308
|
+
[ngModel]="getStringField(node, 'initials')"
|
|
12309
|
+
(ngModelChange)="setStringField($index, 'initials', $event)"
|
|
12310
|
+
/>
|
|
12311
|
+
</label>
|
|
12312
|
+
<label>
|
|
12313
|
+
<span>{{ tx('editor.field.initialsExpr', 'Initials binding') }}</span>
|
|
12314
|
+
<input
|
|
12315
|
+
[ngModel]="getStringField(node, 'initialsExpr')"
|
|
12316
|
+
(ngModelChange)="setStringField($index, 'initialsExpr', $event)"
|
|
12317
|
+
[placeholder]="tx('editor.placeholder.initialsExpr', 'row.initials')"
|
|
12318
|
+
/>
|
|
12319
|
+
</label>
|
|
12320
|
+
}
|
|
12321
|
+
@case ('image') {
|
|
12322
|
+
<label>
|
|
12323
|
+
<span>{{ tx('editor.field.src', 'Image URL') }}</span>
|
|
12324
|
+
<input
|
|
12325
|
+
[ngModel]="getStringField(node, 'src')"
|
|
12326
|
+
(ngModelChange)="setStringField($index, 'src', $event)"
|
|
12327
|
+
/>
|
|
12328
|
+
</label>
|
|
12329
|
+
<label>
|
|
12330
|
+
<span>{{ tx('editor.field.srcExpr', 'Image URL binding') }}</span>
|
|
12331
|
+
<input
|
|
12332
|
+
[ngModel]="getStringField(node, 'srcExpr')"
|
|
12333
|
+
(ngModelChange)="setStringField($index, 'srcExpr', $event)"
|
|
12334
|
+
[placeholder]="tx('editor.placeholder.srcExpr', 'row.imageUrl')"
|
|
12335
|
+
/>
|
|
12336
|
+
</label>
|
|
12337
|
+
<label>
|
|
12338
|
+
<span>{{ tx('editor.field.alt', 'Alternative text') }}</span>
|
|
12339
|
+
<input
|
|
12340
|
+
[ngModel]="getStringField(node, 'alt')"
|
|
12341
|
+
(ngModelChange)="setStringField($index, 'alt', $event)"
|
|
12342
|
+
/>
|
|
12343
|
+
</label>
|
|
12344
|
+
<label>
|
|
12345
|
+
<span>{{ tx('editor.field.altExpr', 'Alt text binding') }}</span>
|
|
12346
|
+
<input
|
|
12347
|
+
[ngModel]="getStringField(node, 'altExpr')"
|
|
12348
|
+
(ngModelChange)="setStringField($index, 'altExpr', $event)"
|
|
12349
|
+
[placeholder]="tx('editor.placeholder.altExpr', 'row.imageAlt')"
|
|
12350
|
+
/>
|
|
12351
|
+
</label>
|
|
12352
|
+
}
|
|
12353
|
+
@case ('link') {
|
|
12354
|
+
<label>
|
|
12355
|
+
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
12356
|
+
<input
|
|
12357
|
+
[ngModel]="getStringField(node, 'label')"
|
|
12358
|
+
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
12359
|
+
/>
|
|
12360
|
+
</label>
|
|
10531
12361
|
<label>
|
|
10532
|
-
<span>{{ tx('editor.field.
|
|
12362
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
12363
|
+
<input
|
|
12364
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
12365
|
+
(ngModelChange)="setStringField($index, 'labelExpr', $event)"
|
|
12366
|
+
[placeholder]="tx('editor.placeholder.labelExpr', 'row.linkLabel')"
|
|
12367
|
+
/>
|
|
12368
|
+
</label>
|
|
12369
|
+
<label class="prx-rich-editor__wide-field">
|
|
12370
|
+
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
10533
12371
|
<input
|
|
10534
|
-
[ngModel]="getStringField(node, '
|
|
10535
|
-
(ngModelChange)="setStringField($index, '
|
|
12372
|
+
[ngModel]="getStringField(node, 'href')"
|
|
12373
|
+
(ngModelChange)="setStringField($index, 'href', $event)"
|
|
10536
12374
|
/>
|
|
10537
12375
|
</label>
|
|
10538
12376
|
<label>
|
|
10539
|
-
<span>{{ tx('editor.field.
|
|
12377
|
+
<span>{{ tx('editor.field.target', 'Target') }}</span>
|
|
12378
|
+
<select
|
|
12379
|
+
[ngModel]="getStringField(node, 'target') || '_self'"
|
|
12380
|
+
(ngModelChange)="setStringField($index, 'target', $event)"
|
|
12381
|
+
>
|
|
12382
|
+
<option value="_self">{{ tx('editor.target.self', 'Same tab') }}</option>
|
|
12383
|
+
<option value="_blank">{{ tx('editor.target.blank', 'New tab') }}</option>
|
|
12384
|
+
</select>
|
|
12385
|
+
</label>
|
|
12386
|
+
<label>
|
|
12387
|
+
<span>{{ tx('editor.field.rel', 'Rel') }}</span>
|
|
10540
12388
|
<input
|
|
10541
|
-
[ngModel]="getStringField(node, '
|
|
10542
|
-
(ngModelChange)="setStringField($index, '
|
|
12389
|
+
[ngModel]="getStringField(node, 'rel')"
|
|
12390
|
+
(ngModelChange)="setStringField($index, 'rel', $event)"
|
|
12391
|
+
[placeholder]="tx('editor.placeholder.rel', 'noopener noreferrer')"
|
|
10543
12392
|
/>
|
|
10544
12393
|
</label>
|
|
10545
12394
|
}
|
|
@@ -10551,6 +12400,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10551
12400
|
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
10552
12401
|
/>
|
|
10553
12402
|
</label>
|
|
12403
|
+
<label>
|
|
12404
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
12405
|
+
<input
|
|
12406
|
+
[ngModel]="getStringField(node, 'labelExpr')"
|
|
12407
|
+
(ngModelChange)="setStringField($index, 'labelExpr', $event)"
|
|
12408
|
+
[placeholder]="tx('editor.placeholder.labelExpr', 'row.status')"
|
|
12409
|
+
/>
|
|
12410
|
+
</label>
|
|
10554
12411
|
<label>
|
|
10555
12412
|
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
10556
12413
|
<input
|
|
@@ -10592,6 +12449,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10592
12449
|
(ngModelChange)="setNumberField($index, 'max', $event)"
|
|
10593
12450
|
/>
|
|
10594
12451
|
</label>
|
|
12452
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
12453
|
+
<input
|
|
12454
|
+
type="checkbox"
|
|
12455
|
+
[ngModel]="getBooleanField(node, 'showPercent')"
|
|
12456
|
+
(ngModelChange)="setBooleanField($index, 'showPercent', $event)"
|
|
12457
|
+
/>
|
|
12458
|
+
<span>{{ tx('editor.field.showPercent', 'Show percent') }}</span>
|
|
12459
|
+
</label>
|
|
10595
12460
|
}
|
|
10596
12461
|
@case ('actionButton') {
|
|
10597
12462
|
<label>
|
|
@@ -10687,6 +12552,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10687
12552
|
<option value="xl">xl</option>
|
|
10688
12553
|
</select>
|
|
10689
12554
|
</label>
|
|
12555
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
12556
|
+
<input
|
|
12557
|
+
type="checkbox"
|
|
12558
|
+
[ngModel]="getBooleanField(node, 'wrap')"
|
|
12559
|
+
(ngModelChange)="setBooleanField($index, 'wrap', $event)"
|
|
12560
|
+
/>
|
|
12561
|
+
<span>{{ tx('editor.field.wrap', 'Wrap items') }}</span>
|
|
12562
|
+
</label>
|
|
10690
12563
|
<div class="prx-rich-editor__nested-editor">
|
|
10691
12564
|
<header class="prx-rich-editor__nested-header">
|
|
10692
12565
|
<h5>{{ tx('editor.composeItems', 'Compose items') }}</h5>
|
|
@@ -10744,6 +12617,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10744
12617
|
(ngModelChange)="setStringField($index, 'title', $event)"
|
|
10745
12618
|
/>
|
|
10746
12619
|
</label>
|
|
12620
|
+
<label>
|
|
12621
|
+
<span>{{ tx('editor.field.titleExpr', 'Title binding') }}</span>
|
|
12622
|
+
<input
|
|
12623
|
+
[ngModel]="getStringField(node, 'titleExpr')"
|
|
12624
|
+
(ngModelChange)="setStringField($index, 'titleExpr', $event)"
|
|
12625
|
+
[placeholder]="tx('editor.placeholder.titleExpr', '\${decision.title}')"
|
|
12626
|
+
/>
|
|
12627
|
+
</label>
|
|
10747
12628
|
<label>
|
|
10748
12629
|
<span>{{ tx('editor.field.subtitle', 'Subtitle') }}</span>
|
|
10749
12630
|
<input
|
|
@@ -10751,6 +12632,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10751
12632
|
(ngModelChange)="setStringField($index, 'subtitle', $event)"
|
|
10752
12633
|
/>
|
|
10753
12634
|
</label>
|
|
12635
|
+
<label>
|
|
12636
|
+
<span>{{ tx('editor.field.subtitleExpr', 'Subtitle binding') }}</span>
|
|
12637
|
+
<input
|
|
12638
|
+
[ngModel]="getStringField(node, 'subtitleExpr')"
|
|
12639
|
+
(ngModelChange)="setStringField($index, 'subtitleExpr', $event)"
|
|
12640
|
+
[placeholder]="tx('editor.placeholder.subtitleExpr', '\${decision.policySource}')"
|
|
12641
|
+
/>
|
|
12642
|
+
</label>
|
|
10754
12643
|
<label>
|
|
10755
12644
|
<span>{{ tx('editor.field.variant', 'Variant') }}</span>
|
|
10756
12645
|
<select
|
|
@@ -10788,6 +12677,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10788
12677
|
<option value="lg">{{ tx('editor.size.lg', 'Large') }}</option>
|
|
10789
12678
|
</select>
|
|
10790
12679
|
</label>
|
|
12680
|
+
<label>
|
|
12681
|
+
<span>{{ tx('editor.field.density', 'Density') }}</span>
|
|
12682
|
+
<select
|
|
12683
|
+
[ngModel]="getStringField(node, 'density') || 'comfortable'"
|
|
12684
|
+
(ngModelChange)="setStringField($index, 'density', $event)"
|
|
12685
|
+
>
|
|
12686
|
+
<option value="comfortable">{{ tx('editor.density.comfortable', 'Comfortable') }}</option>
|
|
12687
|
+
<option value="compact">{{ tx('editor.density.compact', 'Compact') }}</option>
|
|
12688
|
+
</select>
|
|
12689
|
+
</label>
|
|
10791
12690
|
<label>
|
|
10792
12691
|
<span>{{ tx('editor.field.orientation', 'Orientation') }}</span>
|
|
10793
12692
|
<select
|
|
@@ -10798,6 +12697,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10798
12697
|
<option value="horizontal">{{ tx('editor.orientation.horizontal', 'Horizontal') }}</option>
|
|
10799
12698
|
</select>
|
|
10800
12699
|
</label>
|
|
12700
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
12701
|
+
<input
|
|
12702
|
+
type="checkbox"
|
|
12703
|
+
[ngModel]="getBooleanField(node, 'loading')"
|
|
12704
|
+
(ngModelChange)="setBooleanField($index, 'loading', $event)"
|
|
12705
|
+
/>
|
|
12706
|
+
<span>{{ tx('editor.field.loading', 'Loading') }}</span>
|
|
12707
|
+
</label>
|
|
12708
|
+
<label>
|
|
12709
|
+
<span>{{ tx('editor.field.loadingExpr', 'Loading binding') }}</span>
|
|
12710
|
+
<input
|
|
12711
|
+
[ngModel]="getStringField(node, 'loadingExpr')"
|
|
12712
|
+
(ngModelChange)="setStringField($index, 'loadingExpr', $event)"
|
|
12713
|
+
[placeholder]="tx('editor.placeholder.loadingExpr', 'row.loading')"
|
|
12714
|
+
/>
|
|
12715
|
+
</label>
|
|
12716
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
12717
|
+
<input
|
|
12718
|
+
type="checkbox"
|
|
12719
|
+
[ngModel]="getBooleanField(node, 'active')"
|
|
12720
|
+
(ngModelChange)="setBooleanField($index, 'active', $event)"
|
|
12721
|
+
/>
|
|
12722
|
+
<span>{{ tx('editor.field.active', 'Active') }}</span>
|
|
12723
|
+
</label>
|
|
12724
|
+
<label>
|
|
12725
|
+
<span>{{ tx('editor.field.activeExpr', 'Active binding') }}</span>
|
|
12726
|
+
<input
|
|
12727
|
+
[ngModel]="getStringField(node, 'activeExpr')"
|
|
12728
|
+
(ngModelChange)="setStringField($index, 'activeExpr', $event)"
|
|
12729
|
+
[placeholder]="tx('editor.placeholder.activeExpr', 'row.active')"
|
|
12730
|
+
/>
|
|
12731
|
+
</label>
|
|
10801
12732
|
<label>
|
|
10802
12733
|
<span>{{ tx('editor.field.mediaKind', 'Media') }}</span>
|
|
10803
12734
|
<select
|
|
@@ -10819,6 +12750,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10819
12750
|
(ngModelChange)="setCardMediaField(nodeIndex, 'src', $event)"
|
|
10820
12751
|
/>
|
|
10821
12752
|
</label>
|
|
12753
|
+
<label>
|
|
12754
|
+
<span>{{ tx('editor.field.mediaSrcExpr', 'Media source binding') }}</span>
|
|
12755
|
+
<input
|
|
12756
|
+
[ngModel]="getCardMediaField(nodeIndex, 'srcExpr')"
|
|
12757
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'srcExpr', $event)"
|
|
12758
|
+
[placeholder]="tx('editor.placeholder.mediaSrcExpr', 'row.mediaUrl')"
|
|
12759
|
+
/>
|
|
12760
|
+
</label>
|
|
10822
12761
|
<label>
|
|
10823
12762
|
<span>{{ tx('editor.field.mediaAlt', 'Media alt text') }}</span>
|
|
10824
12763
|
<input
|
|
@@ -10826,6 +12765,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10826
12765
|
(ngModelChange)="setCardMediaField(nodeIndex, 'alt', $event)"
|
|
10827
12766
|
/>
|
|
10828
12767
|
</label>
|
|
12768
|
+
<label>
|
|
12769
|
+
<span>{{ tx('editor.field.mediaAltExpr', 'Media alt binding') }}</span>
|
|
12770
|
+
<input
|
|
12771
|
+
[ngModel]="getCardMediaField(nodeIndex, 'altExpr')"
|
|
12772
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'altExpr', $event)"
|
|
12773
|
+
[placeholder]="tx('editor.placeholder.mediaAltExpr', 'row.mediaAlt')"
|
|
12774
|
+
/>
|
|
12775
|
+
</label>
|
|
10829
12776
|
<label>
|
|
10830
12777
|
<span>{{ tx('editor.field.mediaIcon', 'Media icon') }}</span>
|
|
10831
12778
|
<input
|
|
@@ -10833,6 +12780,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10833
12780
|
(ngModelChange)="setCardMediaField(nodeIndex, 'icon', $event)"
|
|
10834
12781
|
/>
|
|
10835
12782
|
</label>
|
|
12783
|
+
<label>
|
|
12784
|
+
<span>{{ tx('editor.field.mediaLabel', 'Media label') }}</span>
|
|
12785
|
+
<input
|
|
12786
|
+
[ngModel]="getCardMediaField(nodeIndex, 'label')"
|
|
12787
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'label', $event)"
|
|
12788
|
+
/>
|
|
12789
|
+
</label>
|
|
12790
|
+
<label>
|
|
12791
|
+
<span>{{ tx('editor.field.mediaLabelExpr', 'Media label binding') }}</span>
|
|
12792
|
+
<input
|
|
12793
|
+
[ngModel]="getCardMediaField(nodeIndex, 'labelExpr')"
|
|
12794
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'labelExpr', $event)"
|
|
12795
|
+
[placeholder]="tx('editor.placeholder.mediaLabelExpr', 'row.mediaLabel')"
|
|
12796
|
+
/>
|
|
12797
|
+
</label>
|
|
12798
|
+
<label>
|
|
12799
|
+
<span>{{ tx('editor.field.aspectRatio', 'Aspect ratio') }}</span>
|
|
12800
|
+
<input
|
|
12801
|
+
[ngModel]="getCardMediaField(nodeIndex, 'aspectRatio')"
|
|
12802
|
+
(ngModelChange)="setCardMediaField(nodeIndex, 'aspectRatio', $event)"
|
|
12803
|
+
[placeholder]="tx('editor.placeholder.aspectRatio', '16 / 9')"
|
|
12804
|
+
/>
|
|
12805
|
+
</label>
|
|
10836
12806
|
<label>
|
|
10837
12807
|
<span>{{ tx('editor.field.mediaPlacement', 'Media placement') }}</span>
|
|
10838
12808
|
<select
|
|
@@ -10846,6 +12816,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10846
12816
|
</select>
|
|
10847
12817
|
</label>
|
|
10848
12818
|
}
|
|
12819
|
+
<label>
|
|
12820
|
+
<span>{{ tx('editor.field.interactionMode', 'Interaction mode') }}</span>
|
|
12821
|
+
<select
|
|
12822
|
+
[ngModel]="getCardInteractionField(nodeIndex, 'mode') || 'none'"
|
|
12823
|
+
(ngModelChange)="setCardInteractionField(nodeIndex, 'mode', $event)"
|
|
12824
|
+
>
|
|
12825
|
+
<option value="none">{{ tx('editor.interaction.none', 'None') }}</option>
|
|
12826
|
+
<option value="action">{{ tx('editor.interaction.action', 'Action') }}</option>
|
|
12827
|
+
<option value="selectable">{{ tx('editor.interaction.selectable', 'Selectable') }}</option>
|
|
12828
|
+
</select>
|
|
12829
|
+
</label>
|
|
12830
|
+
<label class="prx-rich-editor__checkbox-field">
|
|
12831
|
+
<input
|
|
12832
|
+
type="checkbox"
|
|
12833
|
+
[ngModel]="getCardInteractionBooleanField(nodeIndex, 'selected')"
|
|
12834
|
+
(ngModelChange)="setCardInteractionBooleanField(nodeIndex, 'selected', $event)"
|
|
12835
|
+
/>
|
|
12836
|
+
<span>{{ tx('editor.field.selected', 'Selected') }}</span>
|
|
12837
|
+
</label>
|
|
12838
|
+
<label>
|
|
12839
|
+
<span>{{ tx('editor.field.selectedExpr', 'Selected binding') }}</span>
|
|
12840
|
+
<input
|
|
12841
|
+
[ngModel]="getCardInteractionField(nodeIndex, 'selectedExpr')"
|
|
12842
|
+
(ngModelChange)="setCardInteractionField(nodeIndex, 'selectedExpr', $event)"
|
|
12843
|
+
[placeholder]="tx('editor.placeholder.selectedExpr', 'row.selected')"
|
|
12844
|
+
/>
|
|
12845
|
+
</label>
|
|
12846
|
+
<label>
|
|
12847
|
+
<span>{{ tx('editor.field.interactionActionId', 'Interaction action ID') }}</span>
|
|
12848
|
+
<input
|
|
12849
|
+
[ngModel]="getCardInteractionActionField(nodeIndex, 'actionId')"
|
|
12850
|
+
(ngModelChange)="setCardInteractionActionField(nodeIndex, 'actionId', $event)"
|
|
12851
|
+
[placeholder]="tx('editor.placeholder.actionId', 'host.action.open')"
|
|
12852
|
+
/>
|
|
12853
|
+
</label>
|
|
12854
|
+
<label>
|
|
12855
|
+
<span>{{ tx('editor.field.payloadExpr', 'Payload binding') }}</span>
|
|
12856
|
+
<input
|
|
12857
|
+
[ngModel]="getCardInteractionActionField(nodeIndex, 'payloadExpr')"
|
|
12858
|
+
(ngModelChange)="setCardInteractionActionField(nodeIndex, 'payloadExpr', $event)"
|
|
12859
|
+
[placeholder]="tx('editor.placeholder.payloadExpr', 'row')"
|
|
12860
|
+
/>
|
|
12861
|
+
</label>
|
|
12862
|
+
<label>
|
|
12863
|
+
<span>{{ tx('editor.field.accessibilityRole', 'Accessibility role') }}</span>
|
|
12864
|
+
<select
|
|
12865
|
+
[ngModel]="getCardAccessibilityField(nodeIndex, 'role')"
|
|
12866
|
+
(ngModelChange)="setCardAccessibilityField(nodeIndex, 'role', $event)"
|
|
12867
|
+
>
|
|
12868
|
+
<option value="">{{ tx('editor.none', 'None') }}</option>
|
|
12869
|
+
<option value="article">{{ tx('editor.accessibilityRole.article', 'Article') }}</option>
|
|
12870
|
+
<option value="group">{{ tx('editor.accessibilityRole.group', 'Group') }}</option>
|
|
12871
|
+
<option value="button">{{ tx('editor.accessibilityRole.button', 'Button') }}</option>
|
|
12872
|
+
</select>
|
|
12873
|
+
</label>
|
|
12874
|
+
<label>
|
|
12875
|
+
<span>{{ tx('editor.field.ariaLabel', 'Accessible label') }}</span>
|
|
12876
|
+
<input
|
|
12877
|
+
[ngModel]="getCardAccessibilityField(nodeIndex, 'ariaLabel')"
|
|
12878
|
+
(ngModelChange)="setCardAccessibilityField(nodeIndex, 'ariaLabel', $event)"
|
|
12879
|
+
/>
|
|
12880
|
+
</label>
|
|
12881
|
+
<label>
|
|
12882
|
+
<span>{{ tx('editor.field.ariaLabelExpr', 'Accessible label binding') }}</span>
|
|
12883
|
+
<input
|
|
12884
|
+
[ngModel]="getCardAccessibilityField(nodeIndex, 'ariaLabelExpr')"
|
|
12885
|
+
(ngModelChange)="setCardAccessibilityField(nodeIndex, 'ariaLabelExpr', $event)"
|
|
12886
|
+
[placeholder]="tx('editor.placeholder.ariaLabelExpr', 'row.ariaLabel')"
|
|
12887
|
+
/>
|
|
12888
|
+
</label>
|
|
10849
12889
|
<div class="prx-rich-editor__nested-editor">
|
|
10850
12890
|
<header class="prx-rich-editor__nested-header">
|
|
10851
12891
|
<h5>{{ tx('editor.cardContent', 'Card body') }}</h5>
|
|
@@ -11291,6 +13331,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11291
13331
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'label', $event)"
|
|
11292
13332
|
/>
|
|
11293
13333
|
</label>
|
|
13334
|
+
<label>
|
|
13335
|
+
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
13336
|
+
<input
|
|
13337
|
+
[ngModel]="getTabsItemField(nodeIndex, $index, 'labelExpr')"
|
|
13338
|
+
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'labelExpr', $event)"
|
|
13339
|
+
[placeholder]="tx('editor.placeholder.tabLabelExpr', 'row.tabLabel')"
|
|
13340
|
+
/>
|
|
13341
|
+
</label>
|
|
11294
13342
|
<label>
|
|
11295
13343
|
<span>{{ tx('editor.field.icon', 'Icon') }}</span>
|
|
11296
13344
|
<input
|
|
@@ -11305,6 +13353,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11305
13353
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'badge', $event)"
|
|
11306
13354
|
/>
|
|
11307
13355
|
</label>
|
|
13356
|
+
<label>
|
|
13357
|
+
<span>{{ tx('editor.field.badgeExpr', 'Badge binding') }}</span>
|
|
13358
|
+
<input
|
|
13359
|
+
[ngModel]="getTabsItemField(nodeIndex, $index, 'badgeExpr')"
|
|
13360
|
+
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'badgeExpr', $event)"
|
|
13361
|
+
[placeholder]="tx('editor.placeholder.badgeExpr', 'row.badge')"
|
|
13362
|
+
/>
|
|
13363
|
+
</label>
|
|
13364
|
+
<label>
|
|
13365
|
+
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
13366
|
+
<input
|
|
13367
|
+
[ngModel]="getTabsItemCapabilityList(nodeIndex, $index)"
|
|
13368
|
+
(ngModelChange)="setTabsItemCapabilityList(nodeIndex, $index, $event)"
|
|
13369
|
+
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
13370
|
+
/>
|
|
13371
|
+
</label>
|
|
13372
|
+
<label>
|
|
13373
|
+
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
13374
|
+
<select
|
|
13375
|
+
[ngModel]="getTabsItemField(nodeIndex, $index, 'capabilityMode') || 'all'"
|
|
13376
|
+
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'capabilityMode', $event)"
|
|
13377
|
+
>
|
|
13378
|
+
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
13379
|
+
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
13380
|
+
</select>
|
|
13381
|
+
</label>
|
|
13382
|
+
<label>
|
|
13383
|
+
<span>{{ tx('editor.field.visibleWhenPath', 'Context path') }}</span>
|
|
13384
|
+
<input
|
|
13385
|
+
[ngModel]="getTabsItemVisibleWhenPath(nodeIndex, $index)"
|
|
13386
|
+
(ngModelChange)="setTabsItemVisibleWhenPath(nodeIndex, $index, $event)"
|
|
13387
|
+
[placeholder]="tx('editor.placeholder.visibleWhenPath', 'row.active')"
|
|
13388
|
+
/>
|
|
13389
|
+
</label>
|
|
13390
|
+
<label>
|
|
13391
|
+
<span>{{ tx('editor.field.visibleWhenValue', 'Expected value') }}</span>
|
|
13392
|
+
<input
|
|
13393
|
+
[ngModel]="getTabsItemVisibleWhenValue(nodeIndex, $index)"
|
|
13394
|
+
(ngModelChange)="setTabsItemVisibleWhenValue(nodeIndex, $index, $event)"
|
|
13395
|
+
[placeholder]="tx('editor.placeholder.visibleWhenValue', 'true')"
|
|
13396
|
+
/>
|
|
13397
|
+
</label>
|
|
11308
13398
|
</div>
|
|
11309
13399
|
}
|
|
11310
13400
|
</div>
|
|
@@ -11967,24 +14057,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11967
14057
|
<header class="prx-rich-editor__nested-header">
|
|
11968
14058
|
<h5>{{ tx('editor.decisionEvidence', 'Evidence') }}</h5>
|
|
11969
14059
|
<div class="prx-rich-editor__quick-actions">
|
|
11970
|
-
<button type="button" (click)="addDecisionPackageEvidence(
|
|
14060
|
+
<button type="button" (click)="addDecisionPackageEvidence(nodeIndex)">
|
|
11971
14061
|
{{ tx('editor.addEvidence', 'Add evidence') }}
|
|
11972
14062
|
</button>
|
|
11973
14063
|
</div>
|
|
11974
14064
|
</header>
|
|
11975
|
-
@for (evidence of getDecisionPackageEvidence(
|
|
14065
|
+
@for (evidence of getDecisionPackageEvidence(nodeIndex); track evidence.id ?? $index; let evidenceIndex = $index) {
|
|
11976
14066
|
<div class="prx-rich-editor__nested-node">
|
|
11977
14067
|
<div class="prx-rich-editor__nested-actions">
|
|
11978
14068
|
<strong>{{ tx('editor.evidence', 'Evidence') }} {{ evidenceIndex + 1 }}</strong>
|
|
11979
|
-
@if (isRemovalPending('nodes.' +
|
|
11980
|
-
<button type="button" (click)="removeDecisionPackageEvidence(
|
|
14069
|
+
@if (isRemovalPending('nodes.' + nodeIndex + '.evidence', evidenceIndex)) {
|
|
14070
|
+
<button type="button" (click)="removeDecisionPackageEvidence(nodeIndex, evidenceIndex)">
|
|
11981
14071
|
{{ tx('editor.confirmRemove', 'Confirm remove') }}
|
|
11982
14072
|
</button>
|
|
11983
14073
|
<button type="button" (click)="cancelRemoval()">
|
|
11984
14074
|
{{ tx('editor.cancelRemove', 'Cancel') }}
|
|
11985
14075
|
</button>
|
|
11986
14076
|
} @else {
|
|
11987
|
-
<button type="button" (click)="requestNestedRemoval('nodes.' +
|
|
14077
|
+
<button type="button" (click)="requestNestedRemoval('nodes.' + nodeIndex + '.evidence', evidenceIndex)">
|
|
11988
14078
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
11989
14079
|
</button>
|
|
11990
14080
|
}
|
|
@@ -11993,37 +14083,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11993
14083
|
<label>
|
|
11994
14084
|
<span>{{ tx('editor.field.itemId', 'Item ID') }}</span>
|
|
11995
14085
|
<input
|
|
11996
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
11997
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
14086
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id')"
|
|
14087
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'id', $event)"
|
|
11998
14088
|
/>
|
|
11999
14089
|
</label>
|
|
12000
14090
|
<label>
|
|
12001
14091
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
12002
14092
|
<input
|
|
12003
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12004
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
14093
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label')"
|
|
14094
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'label', $event)"
|
|
12005
14095
|
/>
|
|
12006
14096
|
</label>
|
|
12007
14097
|
<label>
|
|
12008
14098
|
<span>{{ tx('editor.field.labelExpr', 'Label binding') }}</span>
|
|
12009
14099
|
<input
|
|
12010
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12011
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
14100
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr')"
|
|
14101
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'labelExpr', $event)"
|
|
12012
14102
|
[placeholder]="tx('editor.placeholder.evidenceLabelExpr', '\${evidence.label}')"
|
|
12013
14103
|
/>
|
|
12014
14104
|
</label>
|
|
12015
14105
|
<label>
|
|
12016
14106
|
<span>{{ tx('editor.field.source', 'Source') }}</span>
|
|
12017
14107
|
<input
|
|
12018
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12019
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
14108
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source')"
|
|
14109
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'source', $event)"
|
|
12020
14110
|
/>
|
|
12021
14111
|
</label>
|
|
12022
14112
|
<label>
|
|
12023
14113
|
<span>{{ tx('editor.field.sourceExpr', 'Source binding') }}</span>
|
|
12024
14114
|
<input
|
|
12025
|
-
[ngModel]="getDecisionPackageEvidenceField(
|
|
12026
|
-
(ngModelChange)="setDecisionPackageEvidenceField(
|
|
14115
|
+
[ngModel]="getDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr')"
|
|
14116
|
+
(ngModelChange)="setDecisionPackageEvidenceField(nodeIndex, evidenceIndex, 'sourceExpr', $event)"
|
|
12027
14117
|
[placeholder]="tx('editor.placeholder.evidenceSourceExpr', '\${evidence.source}')"
|
|
12028
14118
|
/>
|
|
12029
14119
|
</label>
|
|
@@ -12036,27 +14126,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12036
14126
|
<header class="prx-rich-editor__nested-header">
|
|
12037
14127
|
<h5>{{ tx('editor.decisionPrimaryAction', 'Primary action') }}</h5>
|
|
12038
14128
|
<div class="prx-rich-editor__quick-actions">
|
|
12039
|
-
@if (getDecisionPackagePrimaryAction(
|
|
12040
|
-
<button type="button" (click)="removeDecisionPackagePrimaryAction(
|
|
14129
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex)) {
|
|
14130
|
+
<button type="button" (click)="removeDecisionPackagePrimaryAction(nodeIndex)">
|
|
12041
14131
|
{{ tx('editor.removeBlock', 'Remove') }}
|
|
12042
14132
|
</button>
|
|
12043
14133
|
} @else {
|
|
12044
|
-
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(
|
|
14134
|
+
<button type="button" (click)="addDecisionPackagePrimaryActionPreset(nodeIndex, 'primary')">
|
|
12045
14135
|
{{ tx('editor.addPrimaryAction', 'Add primary action') }}
|
|
12046
14136
|
</button>
|
|
12047
|
-
<button type="button" (click)="addDecisionPackagePrimaryAction(
|
|
14137
|
+
<button type="button" (click)="addDecisionPackagePrimaryAction(nodeIndex)">
|
|
12048
14138
|
{{ tx('editor.addAction', 'Add action') }}
|
|
12049
14139
|
</button>
|
|
12050
14140
|
}
|
|
12051
14141
|
</div>
|
|
12052
14142
|
</header>
|
|
12053
|
-
@if (getDecisionPackagePrimaryAction(
|
|
14143
|
+
@if (getDecisionPackagePrimaryAction(nodeIndex); as primaryAction) {
|
|
12054
14144
|
<div class="prx-rich-editor__node-grid">
|
|
12055
14145
|
<ng-container
|
|
12056
14146
|
*ngTemplateOutlet="actionFields; context: {
|
|
12057
14147
|
action: primaryAction,
|
|
12058
|
-
path: '$.nodes[' +
|
|
12059
|
-
setField: setDecisionPackagePrimaryActionField.bind(this,
|
|
14148
|
+
path: '$.nodes[' + nodeIndex + '].primaryAction',
|
|
14149
|
+
setField: setDecisionPackagePrimaryActionField.bind(this, nodeIndex)
|
|
12060
14150
|
}"
|
|
12061
14151
|
></ng-container>
|
|
12062
14152
|
</div>
|
|
@@ -12695,97 +14785,216 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12695
14785
|
</p>
|
|
12696
14786
|
}
|
|
12697
14787
|
}
|
|
12698
|
-
<
|
|
12699
|
-
|
|
12700
|
-
|
|
12701
|
-
|
|
12702
|
-
|
|
12703
|
-
|
|
12704
|
-
|
|
12705
|
-
|
|
12706
|
-
|
|
12707
|
-
|
|
12708
|
-
|
|
12709
|
-
|
|
12710
|
-
|
|
12711
|
-
|
|
12712
|
-
|
|
12713
|
-
|
|
12714
|
-
/>
|
|
12715
|
-
</label>
|
|
12716
|
-
<label>
|
|
12717
|
-
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
12718
|
-
<input
|
|
12719
|
-
[ngModel]="getCapabilityList(node)"
|
|
12720
|
-
(ngModelChange)="setCapabilityList($index, $event)"
|
|
12721
|
-
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
12722
|
-
/>
|
|
12723
|
-
</label>
|
|
12724
|
-
<label>
|
|
12725
|
-
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
12726
|
-
<select
|
|
12727
|
-
[ngModel]="getStringField(node, 'capabilityMode') || 'all'"
|
|
12728
|
-
(ngModelChange)="setStringField($index, 'capabilityMode', $event)"
|
|
12729
|
-
>
|
|
12730
|
-
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
12731
|
-
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
12732
|
-
</select>
|
|
12733
|
-
</label>
|
|
12734
|
-
</fieldset>
|
|
14788
|
+
<details
|
|
14789
|
+
class="prx-rich-editor__advanced-group"
|
|
14790
|
+
[open]="advancedRulesOpen"
|
|
14791
|
+
(toggle)="onAdvancedRulesToggle($event)"
|
|
14792
|
+
>
|
|
14793
|
+
<summary>
|
|
14794
|
+
<span>{{ tx('editor.advancedDataRules', 'Advanced data and rules') }}</span>
|
|
14795
|
+
<small>
|
|
14796
|
+
{{
|
|
14797
|
+
tx(
|
|
14798
|
+
'editor.advancedDataRulesHelp',
|
|
14799
|
+
'Metadata, capability gates, visibility and safe style.'
|
|
14800
|
+
)
|
|
14801
|
+
}}
|
|
14802
|
+
</small>
|
|
14803
|
+
</summary>
|
|
12735
14804
|
|
|
12736
|
-
|
|
12737
|
-
|
|
12738
|
-
|
|
12739
|
-
|
|
12740
|
-
|
|
12741
|
-
|
|
12742
|
-
|
|
12743
|
-
|
|
12744
|
-
|
|
12745
|
-
|
|
12746
|
-
|
|
12747
|
-
|
|
12748
|
-
|
|
12749
|
-
|
|
12750
|
-
|
|
12751
|
-
|
|
12752
|
-
|
|
12753
|
-
|
|
12754
|
-
|
|
14805
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
14806
|
+
<legend>{{ tx('editor.commonMetadata', 'Common metadata') }}</legend>
|
|
14807
|
+
<label>
|
|
14808
|
+
<span>{{ tx('editor.field.testId', 'Test id') }}</span>
|
|
14809
|
+
<input
|
|
14810
|
+
[ngModel]="getStringField(node, 'testId')"
|
|
14811
|
+
(ngModelChange)="setStringField($index, 'testId', $event)"
|
|
14812
|
+
[placeholder]="tx('editor.placeholder.testId', 'rich-hero-title')"
|
|
14813
|
+
/>
|
|
14814
|
+
</label>
|
|
14815
|
+
<label>
|
|
14816
|
+
<span>{{ tx('editor.field.className', 'CSS class') }}</span>
|
|
14817
|
+
<input
|
|
14818
|
+
[ngModel]="getStringField(node, 'className')"
|
|
14819
|
+
(ngModelChange)="setStringField($index, 'className', $event)"
|
|
14820
|
+
[placeholder]="tx('editor.placeholder.className', 'hero-title')"
|
|
14821
|
+
/>
|
|
14822
|
+
</label>
|
|
14823
|
+
<label>
|
|
14824
|
+
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
14825
|
+
<input
|
|
14826
|
+
[ngModel]="getCapabilityList(node)"
|
|
14827
|
+
(ngModelChange)="setCapabilityList($index, $event)"
|
|
14828
|
+
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
14829
|
+
/>
|
|
14830
|
+
</label>
|
|
14831
|
+
<label>
|
|
14832
|
+
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
14833
|
+
<select
|
|
14834
|
+
[ngModel]="getStringField(node, 'capabilityMode') || 'all'"
|
|
14835
|
+
(ngModelChange)="setStringField($index, 'capabilityMode', $event)"
|
|
14836
|
+
>
|
|
14837
|
+
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
14838
|
+
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
14839
|
+
</select>
|
|
14840
|
+
</label>
|
|
14841
|
+
</fieldset>
|
|
12755
14842
|
|
|
12756
|
-
|
|
12757
|
-
|
|
12758
|
-
|
|
12759
|
-
|
|
12760
|
-
|
|
12761
|
-
|
|
12762
|
-
|
|
12763
|
-
|
|
12764
|
-
|
|
12765
|
-
|
|
12766
|
-
|
|
12767
|
-
|
|
12768
|
-
|
|
12769
|
-
|
|
12770
|
-
|
|
12771
|
-
|
|
12772
|
-
|
|
12773
|
-
|
|
12774
|
-
|
|
14843
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
14844
|
+
<legend>{{ tx('editor.visibilityRule', 'Visibility rule') }}</legend>
|
|
14845
|
+
<label>
|
|
14846
|
+
<span>{{ tx('editor.field.visibleWhenPath', 'Context path') }}</span>
|
|
14847
|
+
<input
|
|
14848
|
+
[ngModel]="getVisibleWhenPath(node)"
|
|
14849
|
+
(ngModelChange)="setVisibleWhenPath($index, $event)"
|
|
14850
|
+
[placeholder]="tx('editor.placeholder.visibleWhenPath', 'row.active')"
|
|
14851
|
+
/>
|
|
14852
|
+
</label>
|
|
14853
|
+
<label>
|
|
14854
|
+
<span>{{ tx('editor.field.visibleWhenValue', 'Expected value') }}</span>
|
|
14855
|
+
<input
|
|
14856
|
+
[ngModel]="getVisibleWhenValue(node)"
|
|
14857
|
+
(ngModelChange)="setVisibleWhenValue($index, $event)"
|
|
14858
|
+
[placeholder]="tx('editor.placeholder.visibleWhenValue', 'true')"
|
|
14859
|
+
/>
|
|
14860
|
+
</label>
|
|
14861
|
+
</fieldset>
|
|
14862
|
+
|
|
14863
|
+
<fieldset class="prx-rich-editor__field-group">
|
|
14864
|
+
<legend>{{ tx('editor.safeStyle', 'Safe style') }}</legend>
|
|
14865
|
+
<label>
|
|
14866
|
+
<span>{{ tx('editor.field.styleName', 'CSS property') }}</span>
|
|
14867
|
+
<input
|
|
14868
|
+
[ngModel]="getFirstStyleName(node)"
|
|
14869
|
+
(ngModelChange)="setFirstStyleName($index, $event)"
|
|
14870
|
+
[placeholder]="tx('editor.placeholder.styleName', 'color')"
|
|
14871
|
+
/>
|
|
14872
|
+
</label>
|
|
14873
|
+
<label>
|
|
14874
|
+
<span>{{ tx('editor.field.styleValue', 'CSS value') }}</span>
|
|
14875
|
+
<input
|
|
14876
|
+
[ngModel]="getFirstStyleValue(node)"
|
|
14877
|
+
(ngModelChange)="setFirstStyleValue($index, $event)"
|
|
14878
|
+
[placeholder]="tx('editor.placeholder.styleValue', 'var(--md-sys-color-primary)')"
|
|
14879
|
+
/>
|
|
14880
|
+
</label>
|
|
14881
|
+
</fieldset>
|
|
14882
|
+
|
|
14883
|
+
@if (getAdvancedJsonOnlyFields(node).length) {
|
|
14884
|
+
<aside class="prx-rich-editor__advanced-json-map">
|
|
14885
|
+
<strong>{{ tx('editor.advancedJsonFields', 'Advanced JSON fields present') }}</strong>
|
|
14886
|
+
<p>
|
|
14887
|
+
{{
|
|
14888
|
+
tx(
|
|
14889
|
+
'editor.advancedJsonFieldsHelp',
|
|
14890
|
+
'These canonical fields are preserved by guided edits and remain editable in the Advanced JSON tab.'
|
|
14891
|
+
)
|
|
14892
|
+
}}
|
|
14893
|
+
</p>
|
|
14894
|
+
<div class="prx-rich-editor__advanced-json-chips">
|
|
14895
|
+
@for (field of getAdvancedJsonOnlyFields(node); track field) {
|
|
14896
|
+
<code>{{ field }}</code>
|
|
14897
|
+
}
|
|
14898
|
+
</div>
|
|
14899
|
+
</aside>
|
|
14900
|
+
}
|
|
14901
|
+
|
|
14902
|
+
<fieldset class="prx-rich-editor__field-group prx-rich-editor__json-fieldset">
|
|
14903
|
+
<legend>{{ tx('editor.advancedJsonEditor', 'Advanced JSON editor') }}</legend>
|
|
14904
|
+
<p class="prx-rich-editor__field-help">
|
|
14905
|
+
{{
|
|
14906
|
+
tx(
|
|
14907
|
+
'editor.advancedJsonEditorHelp',
|
|
14908
|
+
'Edit canonical data bindings and JsonLogic rule fields without leaving guided editing.'
|
|
14909
|
+
)
|
|
14910
|
+
}}
|
|
14911
|
+
</p>
|
|
14912
|
+
@for (field of advancedJsonOnlyNodeFields; track field) {
|
|
14913
|
+
<label class="prx-rich-editor__wide-field prx-rich-editor__json-field">
|
|
14914
|
+
<span>{{ tx('editor.field.' + field, field) }}</span>
|
|
14915
|
+
<textarea
|
|
14916
|
+
[ngModel]="getAdvancedJsonFieldValue(nodeIndex, node, field)"
|
|
14917
|
+
(ngModelChange)="setAdvancedJsonField(nodeIndex, field, $event)"
|
|
14918
|
+
[placeholder]="getAdvancedJsonFieldPlaceholder(field)"
|
|
14919
|
+
[class.invalid]="getAdvancedJsonFieldError(nodeIndex, field)"
|
|
14920
|
+
></textarea>
|
|
14921
|
+
@if (getAdvancedJsonFieldError(nodeIndex, field)) {
|
|
14922
|
+
<small class="prx-rich-editor__field-error">
|
|
14923
|
+
{{ getAdvancedJsonFieldError(nodeIndex, field) }}
|
|
14924
|
+
</small>
|
|
14925
|
+
}
|
|
14926
|
+
</label>
|
|
14927
|
+
}
|
|
14928
|
+
</fieldset>
|
|
14929
|
+
</details>
|
|
12775
14930
|
</div>
|
|
12776
14931
|
</article>
|
|
14932
|
+
}
|
|
12777
14933
|
}
|
|
12778
14934
|
</div>
|
|
14935
|
+
</div>
|
|
14936
|
+
</div>
|
|
12779
14937
|
} @else {
|
|
12780
14938
|
<p class="prx-rich-editor__empty">
|
|
12781
14939
|
{{ tx('editor.noBlocks', 'No blocks yet. Add a block to start authoring this document.') }}
|
|
12782
14940
|
</p>
|
|
12783
14941
|
}
|
|
12784
14942
|
</section>
|
|
14943
|
+
}
|
|
14944
|
+
|
|
14945
|
+
@if (activeEditorPanel === 'preview') {
|
|
14946
|
+
<section
|
|
14947
|
+
class="prx-rich-editor__preview-panel"
|
|
14948
|
+
role="tabpanel"
|
|
14949
|
+
[attr.aria-label]="tx('editor.preview', 'Preview')"
|
|
14950
|
+
>
|
|
14951
|
+
<header class="prx-rich-editor__section-header">
|
|
14952
|
+
<div>
|
|
14953
|
+
<h3>{{ tx('editor.preview', 'Preview') }}</h3>
|
|
14954
|
+
<p>
|
|
14955
|
+
{{
|
|
14956
|
+
tx(
|
|
14957
|
+
'editor.previewHelp',
|
|
14958
|
+
'Inspect the materialized document without mixing preview with authoring fields.'
|
|
14959
|
+
)
|
|
14960
|
+
}}
|
|
14961
|
+
</p>
|
|
14962
|
+
</div>
|
|
14963
|
+
</header>
|
|
14964
|
+
@if (parsedDocument) {
|
|
14965
|
+
<div class="prx-rich-editor__preview prx-rich-editor__preview--large">
|
|
14966
|
+
<praxis-rich-content
|
|
14967
|
+
[document]="parsedDocument"
|
|
14968
|
+
[layout]="layout"
|
|
14969
|
+
[rootClassName]="rootClassName"
|
|
14970
|
+
></praxis-rich-content>
|
|
14971
|
+
</div>
|
|
14972
|
+
} @else {
|
|
14973
|
+
<p class="prx-rich-editor__empty">
|
|
14974
|
+
{{ tx('editor.previewUnavailable', 'Preview is unavailable until the document is valid.') }}
|
|
14975
|
+
</p>
|
|
14976
|
+
}
|
|
14977
|
+
</section>
|
|
14978
|
+
}
|
|
12785
14979
|
|
|
12786
|
-
|
|
12787
|
-
|
|
14980
|
+
@if (activeEditorPanel === 'json') {
|
|
14981
|
+
<section class="prx-rich-editor__document-panel">
|
|
14982
|
+
<header class="prx-rich-editor__section-header">
|
|
14983
|
+
<div>
|
|
14984
|
+
<h3>{{ tx('editor.document', 'Advanced JSON') }}</h3>
|
|
14985
|
+
<p>
|
|
14986
|
+
{{
|
|
14987
|
+
tx(
|
|
14988
|
+
'editor.documentAdvancedHelp',
|
|
14989
|
+
'Use JSON for diagnostics, migration and advanced fields that are not yet surfaced by guided controls.'
|
|
14990
|
+
)
|
|
14991
|
+
}}
|
|
14992
|
+
</p>
|
|
14993
|
+
</div>
|
|
14994
|
+
</header>
|
|
12788
14995
|
<div class="prx-rich-editor__workbench">
|
|
14996
|
+
<label class="prx-rich-editor__document">
|
|
14997
|
+
<span>{{ tx('editor.documentJson', 'Canonical document JSON') }}</span>
|
|
12789
14998
|
<textarea
|
|
12790
14999
|
name="rich-content-document"
|
|
12791
15000
|
[(ngModel)]="documentJson"
|
|
@@ -12799,6 +15008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12799
15008
|
spellcheck="false"
|
|
12800
15009
|
data-testid="rich-content-document-input"
|
|
12801
15010
|
></textarea>
|
|
15011
|
+
</label>
|
|
12802
15012
|
|
|
12803
15013
|
<aside
|
|
12804
15014
|
class="prx-rich-editor__inspector"
|
|
@@ -12818,21 +15028,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12818
15028
|
</dl>
|
|
12819
15029
|
</section>
|
|
12820
15030
|
|
|
12821
|
-
@if (parsedDocument) {
|
|
12822
|
-
<section>
|
|
12823
|
-
<h3>{{ tx('editor.preview', 'Preview') }}</h3>
|
|
12824
|
-
<div class="prx-rich-editor__preview">
|
|
12825
|
-
<praxis-rich-content
|
|
12826
|
-
[document]="parsedDocument"
|
|
12827
|
-
[layout]="layout"
|
|
12828
|
-
[rootClassName]="rootClassName"
|
|
12829
|
-
></praxis-rich-content>
|
|
12830
|
-
</div>
|
|
12831
|
-
</section>
|
|
12832
|
-
}
|
|
12833
15031
|
</aside>
|
|
12834
15032
|
</div>
|
|
12835
|
-
</
|
|
15033
|
+
</section>
|
|
12836
15034
|
|
|
12837
15035
|
@if (errorMessage) {
|
|
12838
15036
|
<div
|
|
@@ -12862,6 +15060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12862
15060
|
}}
|
|
12863
15061
|
</p>
|
|
12864
15062
|
}
|
|
15063
|
+
}
|
|
12865
15064
|
|
|
12866
15065
|
<div class="prx-rich-editor__actions">
|
|
12867
15066
|
<button type="button" (click)="reset()">
|
|
@@ -12872,10 +15071,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
12872
15071
|
</button>
|
|
12873
15072
|
</div>
|
|
12874
15073
|
</section>
|
|
12875
|
-
`, styles: [":host{display:block;min-width:0}.prx-rich-editor{display:grid;gap:18px;color:var(--md-sys-color-on-surface, #1f2937)}.prx-rich-editor__header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__header h2{margin:0;font-size:1.25rem}.prx-rich-editor__header p{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673)}.prx-rich-editor__eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;color:var(--md-sys-color-primary, #3154e7)}.prx-rich-editor__status{flex:0 0 auto;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,#16a34a 12%,transparent);color:#166534;font-size:.78rem;font-weight:700}.prx-rich-editor__status.invalid{background:color-mix(in srgb,#dc2626 12%,transparent);color:#991b1b}.prx-rich-editor__grid{display:grid;gap:14px;grid-template-columns:minmax(0,180px) minmax(0,1fr)}.prx-rich-editor__blocks{display:grid;gap:14px}.prx-rich-editor__section-header,.prx-rich-editor__node-header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__section-header h3,.prx-rich-editor__node-header h4{margin:0}.prx-rich-editor__section-header p,.prx-rich-editor__node-note,.prx-rich-editor__empty{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.88rem}.prx-rich-editor__add-block,.prx-rich-editor__node-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.prx-rich-editor__add-block label{min-width:180px}.prx-rich-editor__node-list{display:grid;gap:12px}.prx-rich-editor__node-card{display:grid;gap:14px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:14px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__node-eyebrow{margin:0 0 4px;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.75rem;font-weight:700;text-transform:uppercase}.prx-rich-editor__node-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__wide-field,.prx-rich-editor__node-note{grid-column:1 / -1}.prx-rich-editor__field-group,.prx-rich-editor__nested-editor,.prx-rich-editor__nested-node{grid-column:1 / -1;display:grid;gap:12px}.prx-rich-editor__field-group,.prx-rich-editor__nested-node{margin:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px}.prx-rich-editor__field-group{grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__field-group legend{padding:0 4px;font-weight:700}.prx-rich-editor__nested-header,.prx-rich-editor__nested-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.prx-rich-editor__quick-actions{display:flex;flex-wrap:wrap;gap:8px}.prx-rich-editor__node-grid textarea{min-height:96px;font-family:inherit}label,.prx-rich-editor__document{display:grid;gap:7px;font-weight:700}.prx-rich-editor__checkbox-field{display:flex;gap:10px;align-items:center;align-self:end}.prx-rich-editor__checkbox-field input[type=checkbox]{width:auto}input,select,textarea{box-sizing:border-box;width:100%;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:12px;padding:10px 12px;font:inherit;color:inherit;background:var(--md-sys-color-surface, #fff)}textarea{min-height:360px;resize:vertical;font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.86rem;line-height:1.45}.prx-rich-editor__workbench{display:grid;gap:14px;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr)}.prx-rich-editor__inspector{display:grid;align-content:start;gap:14px;min-width:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__inspector h3{margin:0 0 8px;font-size:.95rem}.prx-rich-editor__inspector dl{display:grid;gap:8px;margin:0}.prx-rich-editor__inspector dl div{display:grid;gap:2px}.prx-rich-editor__inspector dt{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:700}.prx-rich-editor__inspector dd{margin:0;overflow-wrap:anywhere;font-weight:600}.prx-rich-editor__preview{max-height:260px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__help{margin:-8px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.85rem}.prx-rich-editor__error{margin:0;padding:10px 12px;border-radius:8px;color:#991b1b;background:color-mix(in srgb,#dc2626 9%,transparent)}.prx-rich-editor__error p{margin:0}.prx-rich-editor__error ul{display:grid;gap:6px;margin:8px 0 0;padding-inline-start:18px}.prx-rich-editor__error code{margin-right:4px;font-family:Cascadia Code,Fira Code,Consolas,monospace}.prx-rich-editor__actions{display:flex;flex-wrap:wrap;gap:10px}button{border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:8px 14px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-primary, #3154e7);font-weight:700;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}@media(max-width:760px){.prx-rich-editor__header,.prx-rich-editor__section-header,.prx-rich-editor__node-header,.prx-rich-editor__grid,.prx-rich-editor__field-group,.prx-rich-editor__node-grid,.prx-rich-editor__workbench{grid-template-columns:1fr;display:grid}}\n"] }]
|
|
15074
|
+
`, styles: [":host{display:block;min-width:0;width:100%;max-width:100%;box-sizing:border-box}.prx-rich-editor{display:grid;gap:18px;min-width:0;color:var(--md-sys-color-on-surface, #1f2937)}.prx-rich-editor__header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__header h2{margin:0;font-size:1.25rem}.prx-rich-editor__header p{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673)}.prx-rich-editor__eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;color:var(--md-sys-color-primary, #3154e7)}.prx-rich-editor__status{flex:0 0 auto;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,#16a34a 12%,transparent);color:#166534;font-size:.78rem;font-weight:700}.prx-rich-editor__status.invalid{background:color-mix(in srgb,#dc2626 12%,transparent);color:#991b1b}.prx-rich-editor__grid{display:grid;gap:14px;grid-template-columns:minmax(0,180px) minmax(0,1fr)}.prx-rich-editor__tabs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-bottom:1px solid var(--md-sys-color-outline-variant, #d7dce5)}.prx-rich-editor__tab{margin-block-end:-1px;border-radius:8px 8px 0 0;border-bottom-color:transparent;color:var(--md-sys-color-on-surface-variant, #5f6673);background:transparent}.prx-rich-editor__tab--active{border-color:var(--md-sys-color-outline-variant, #d7dce5);border-bottom-color:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-primary, #3154e7);background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__tab-badge,.prx-rich-editor__issue-count{display:inline-flex;min-width:1.35em;min-height:1.35em;padding:0 .38em;border-radius:999px;align-items:center;justify-content:center;background:color-mix(in srgb,#dc2626 14%,transparent);color:#991b1b;font-size:.72rem;font-weight:800;line-height:1}.prx-rich-editor__tab-badge{margin-inline-start:6px}.prx-rich-editor__blocks{display:grid;gap:14px}.prx-rich-editor__authoring-shell{display:grid;gap:14px;grid-template-columns:minmax(220px,.34fr) minmax(0,1fr);align-items:start}.prx-rich-editor__structure,.prx-rich-editor__properties,.prx-rich-editor__document-panel,.prx-rich-editor__preview-panel{min-width:0;display:grid;gap:12px}.prx-rich-editor__structure{position:sticky;top:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__structure-summary{display:grid;gap:4px}.prx-rich-editor__structure-summary span{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.82rem;font-weight:500}.prx-rich-editor__structure-list{display:grid;gap:8px}.prx-rich-editor__structure-item{display:grid;gap:3px;width:100%;padding:10px;text-align:left;color:var(--md-sys-color-on-surface, #1f2937);background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__structure-item--selected{border-color:var(--md-sys-color-primary, #3154e7);background:color-mix(in srgb,var(--md-sys-color-primary, #3154e7) 8%,var(--md-sys-color-surface, #fff))}.prx-rich-editor__structure-item small{color:#991b1b;font-weight:700}.prx-rich-editor__intent-strip{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.prx-rich-editor__intent-strip span,.prx-rich-editor__intent-strip button{min-width:0;display:grid;gap:3px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:10px 12px;text-align:left;color:var(--md-sys-color-on-surface, #1f2937);background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__intent-strip button{position:relative}.prx-rich-editor__intent-strip small{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:600}.prx-rich-editor__intent-strip .prx-rich-editor__issue-count{position:absolute;inset-block-start:8px;inset-inline-end:8px}.prx-rich-editor__section-header,.prx-rich-editor__node-header{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.prx-rich-editor__section-header h3,.prx-rich-editor__node-header h4{margin:0}.prx-rich-editor__section-header p,.prx-rich-editor__node-note,.prx-rich-editor__empty{margin:6px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.88rem}.prx-rich-editor__add-block,.prx-rich-editor__node-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.prx-rich-editor__add-block label{min-width:180px}.prx-rich-editor__node-list{display:grid;gap:12px}.prx-rich-editor__node-card{display:grid;gap:14px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:14px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__node-eyebrow{margin:0 0 4px;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.75rem;font-weight:700;text-transform:uppercase}.prx-rich-editor__node-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__wide-field,.prx-rich-editor__node-note{grid-column:1 / -1}.prx-rich-editor__field-group,.prx-rich-editor__nested-editor,.prx-rich-editor__nested-node{grid-column:1 / -1;display:grid;gap:12px}.prx-rich-editor__field-group,.prx-rich-editor__nested-node{margin:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px}.prx-rich-editor__document-context{display:grid;gap:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__document-context summary{display:flex;gap:10px;align-items:center;justify-content:space-between;cursor:pointer;font-weight:800}.prx-rich-editor__document-context summary small{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:600}.prx-rich-editor__document-context[open] summary{margin-block-end:12px}.prx-rich-editor__field-group{grid-template-columns:repeat(2,minmax(0,1fr))}.prx-rich-editor__field-group legend{padding:0 4px;font-weight:700}.prx-rich-editor__field-help{grid-column:1 / -1;margin:0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.84rem}.prx-rich-editor__json-fieldset{margin-block-start:12px}.prx-rich-editor__json-field{display:grid;gap:6px}.prx-rich-editor__json-field textarea{min-height:96px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.8rem;line-height:1.45}.prx-rich-editor__field-error{color:var(--md-sys-color-error, #ba1a1a);font-size:.78rem;font-weight:700}.prx-rich-editor__advanced-group{grid-column:1 / -1;display:grid;gap:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:color-mix(in srgb,var(--md-sys-color-surface-container-lowest, #fff) 88%,var(--md-sys-color-primary, #3154e7) 4%)}.prx-rich-editor__advanced-group summary{display:flex;gap:10px;align-items:center;justify-content:space-between;cursor:pointer;font-weight:800}.prx-rich-editor__advanced-group summary small{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:600}.prx-rich-editor__advanced-group[open]{padding-block-end:14px}.prx-rich-editor__advanced-group[open] summary{margin-block-end:12px}.prx-rich-editor__advanced-group .prx-rich-editor__field-group+.prx-rich-editor__field-group{margin-block-start:12px}.prx-rich-editor__advanced-json-map{display:grid;gap:8px;margin-block-start:12px;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__advanced-json-map p{margin:0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.84rem}.prx-rich-editor__advanced-json-chips{display:flex;flex-wrap:wrap;gap:6px}.prx-rich-editor__advanced-json-chips code{border-radius:999px;padding:4px 8px;background:color-mix(in srgb,var(--md-sys-color-primary, #3154e7) 12%,transparent);color:var(--md-sys-color-primary, #3154e7);font-size:.76rem;font-weight:700}.prx-rich-editor__nested-header,.prx-rich-editor__nested-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.prx-rich-editor__quick-actions{display:flex;flex-wrap:wrap;gap:8px}.prx-rich-editor__node-grid textarea{min-height:96px;font-family:inherit}label,.prx-rich-editor__document{display:grid;gap:7px;font-weight:700}.prx-rich-editor__checkbox-field{display:flex;gap:10px;align-items:center;align-self:end}.prx-rich-editor__checkbox-field input[type=checkbox]{width:auto}input,select,textarea{box-sizing:border-box;width:100%;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:12px;padding:10px 12px;font:inherit;color:inherit;background:var(--md-sys-color-surface, #fff)}textarea{min-height:360px;resize:vertical;font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:.86rem;line-height:1.45}.prx-rich-editor__workbench{display:grid;gap:14px;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr)}.prx-rich-editor__inspector{display:grid;align-content:start;gap:14px;min-width:0;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-container-lowest, #fff)}.prx-rich-editor__inspector h3{margin:0 0 8px;font-size:.95rem}.prx-rich-editor__inspector dl{display:grid;gap:8px;margin:0}.prx-rich-editor__inspector dl div{display:grid;gap:2px}.prx-rich-editor__inspector dt{color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.78rem;font-weight:700}.prx-rich-editor__inspector dd{margin:0;overflow-wrap:anywhere;font-weight:600}.prx-rich-editor__preview{max-height:260px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:12px;background:var(--md-sys-color-surface, #fff)}.prx-rich-editor__preview--large{max-height:min(68vh,760px)}.prx-rich-editor__help{margin:-8px 0 0;color:var(--md-sys-color-on-surface-variant, #5f6673);font-size:.85rem}.prx-rich-editor__error{margin:0;padding:10px 12px;border-radius:8px;color:#991b1b;background:color-mix(in srgb,#dc2626 9%,transparent)}.prx-rich-editor__error p{margin:0}.prx-rich-editor__error ul{display:grid;gap:6px;margin:8px 0 0;padding-inline-start:18px}.prx-rich-editor__error code{margin-right:4px;font-family:Cascadia Code,Fira Code,Consolas,monospace}.prx-rich-editor__actions{display:flex;flex-wrap:wrap;gap:10px}button{border:1px solid var(--md-sys-color-outline-variant, #d7dce5);border-radius:8px;padding:8px 14px;background:var(--md-sys-color-surface, #fff);color:var(--md-sys-color-primary, #3154e7);font-weight:700;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}@media(max-width:760px){.prx-rich-editor__header,.prx-rich-editor__section-header,.prx-rich-editor__node-header,.prx-rich-editor__authoring-shell,.prx-rich-editor__intent-strip,.prx-rich-editor__grid,.prx-rich-editor__document-context summary,.prx-rich-editor__field-group,.prx-rich-editor__node-grid,.prx-rich-editor__workbench{grid-template-columns:1fr;display:grid}.prx-rich-editor__structure{position:static}}\n"] }]
|
|
12876
15075
|
}], propDecorators: { inputs: [{
|
|
12877
15076
|
type: Input
|
|
12878
15077
|
}] } });
|
|
15078
|
+
function isPlainRecord(value) {
|
|
15079
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
15080
|
+
}
|
|
12879
15081
|
|
|
12880
15082
|
const DEFAULT_RICH_CONTENT_DOCUMENT = {
|
|
12881
15083
|
kind: 'praxis.rich-content',
|
|
@@ -16016,6 +18218,188 @@ const RICH_CONTENT_INSERTION_PRESETS = [
|
|
|
16016
18218
|
},
|
|
16017
18219
|
},
|
|
16018
18220
|
},
|
|
18221
|
+
{
|
|
18222
|
+
id: 'corporate-information-surface',
|
|
18223
|
+
label: 'Corporate information surface',
|
|
18224
|
+
description: 'Enterprise starter for SAP-like record details with KPIs, dates, currency, notes, progress, timeline and governed decision context.',
|
|
18225
|
+
icon: 'business_center',
|
|
18226
|
+
inputs: {
|
|
18227
|
+
document: {
|
|
18228
|
+
kind: 'praxis.rich-content',
|
|
18229
|
+
version: '1.0.0',
|
|
18230
|
+
nodes: [
|
|
18231
|
+
{
|
|
18232
|
+
type: 'recordSummary',
|
|
18233
|
+
title: 'Purchase order OC-4500128391',
|
|
18234
|
+
subtitle: 'Companhia Global de Servicos S.A.',
|
|
18235
|
+
meta: 'Aguardando aprovacao fiscal',
|
|
18236
|
+
fields: [
|
|
18237
|
+
{ label: 'CNPJ fornecedor', value: '12.345.678/0001-99' },
|
|
18238
|
+
{ label: 'CPF solicitante', value: '990.000.000-47' },
|
|
18239
|
+
{ label: 'Prioridade', value: 'Alta' },
|
|
18240
|
+
],
|
|
18241
|
+
},
|
|
18242
|
+
{
|
|
18243
|
+
type: 'statGroup',
|
|
18244
|
+
title: 'Operational signals',
|
|
18245
|
+
subtitle: 'Dense indicators for enterprise work queues.',
|
|
18246
|
+
layout: 'grid',
|
|
18247
|
+
items: [
|
|
18248
|
+
{
|
|
18249
|
+
label: 'Valor liquido',
|
|
18250
|
+
value: 'R$ 1.268.114,52',
|
|
18251
|
+
caption: 'Apos impostos e estorno',
|
|
18252
|
+
icon: 'payments',
|
|
18253
|
+
tone: 'success',
|
|
18254
|
+
},
|
|
18255
|
+
{
|
|
18256
|
+
label: 'SLA restante',
|
|
18257
|
+
value: '18,5h',
|
|
18258
|
+
caption: 'Sem atraso',
|
|
18259
|
+
icon: 'schedule',
|
|
18260
|
+
tone: 'info',
|
|
18261
|
+
},
|
|
18262
|
+
{
|
|
18263
|
+
label: 'Risco',
|
|
18264
|
+
value: 'Medio',
|
|
18265
|
+
caption: 'Retencao fiscal pendente',
|
|
18266
|
+
icon: 'gpp_maybe',
|
|
18267
|
+
tone: 'warning',
|
|
18268
|
+
},
|
|
18269
|
+
],
|
|
18270
|
+
},
|
|
18271
|
+
{
|
|
18272
|
+
type: 'propertySheet',
|
|
18273
|
+
title: 'Calendario e valores',
|
|
18274
|
+
columns: 2,
|
|
18275
|
+
items: [
|
|
18276
|
+
{ label: 'Competencia', value: '04/2026' },
|
|
18277
|
+
{ label: 'Emissao', value: '28/04/2026' },
|
|
18278
|
+
{ label: 'Vencimento', value: '30 de maio de 2026' },
|
|
18279
|
+
{ label: 'Ultima atualizacao', value: '02/05/2026 16:45' },
|
|
18280
|
+
{ label: 'Valor bruto', value: 'R$ 1.389.420,75' },
|
|
18281
|
+
{ label: 'Imposto retido', value: 'R$ 121.306,23' },
|
|
18282
|
+
],
|
|
18283
|
+
},
|
|
18284
|
+
{
|
|
18285
|
+
type: 'keyValueList',
|
|
18286
|
+
title: 'Notas e listas corporativas',
|
|
18287
|
+
layout: 'stacked',
|
|
18288
|
+
items: [
|
|
18289
|
+
{
|
|
18290
|
+
label: 'Centros de custo',
|
|
18291
|
+
value: '1100 - Operacoes Brasil, 2200 - TI Corporativa, 3300 - Facilities',
|
|
18292
|
+
badge: 'rateio',
|
|
18293
|
+
},
|
|
18294
|
+
{
|
|
18295
|
+
label: 'Aprovadores',
|
|
18296
|
+
value: 'Gerencia financeira, Controladoria, Juridico tributario',
|
|
18297
|
+
badge: '3 niveis',
|
|
18298
|
+
},
|
|
18299
|
+
{
|
|
18300
|
+
label: 'Observacao',
|
|
18301
|
+
value: 'Contrato com retencao fiscal e aprovacao em multiplos niveis.',
|
|
18302
|
+
badge: 'nota',
|
|
18303
|
+
},
|
|
18304
|
+
],
|
|
18305
|
+
},
|
|
18306
|
+
{
|
|
18307
|
+
type: 'progress',
|
|
18308
|
+
label: 'Completude de aprovacao',
|
|
18309
|
+
valueExpr: '${row.approvalProgress}',
|
|
18310
|
+
max: 100,
|
|
18311
|
+
showPercent: true,
|
|
18312
|
+
},
|
|
18313
|
+
{
|
|
18314
|
+
type: 'timeline',
|
|
18315
|
+
title: 'Historico operacional',
|
|
18316
|
+
orientation: 'horizontal',
|
|
18317
|
+
order: 'normal',
|
|
18318
|
+
position: 'alternate',
|
|
18319
|
+
connectorVariant: 'dashed',
|
|
18320
|
+
connectorColor: 'neutral',
|
|
18321
|
+
markerVariant: 'number',
|
|
18322
|
+
markerColor: 'primary',
|
|
18323
|
+
markerStyle: 'filled',
|
|
18324
|
+
emphasis: 'strong',
|
|
18325
|
+
density: 'comfortable',
|
|
18326
|
+
textAppearance: 'prominent',
|
|
18327
|
+
items: [
|
|
18328
|
+
{
|
|
18329
|
+
id: 'created',
|
|
18330
|
+
title: 'Documento criado',
|
|
18331
|
+
subtitle: 'Importado da NF-e e associado ao contrato.',
|
|
18332
|
+
opposite: '28/04/2026',
|
|
18333
|
+
badge: 'origem',
|
|
18334
|
+
markerColor: 'info',
|
|
18335
|
+
},
|
|
18336
|
+
{
|
|
18337
|
+
id: 'tax-review',
|
|
18338
|
+
title: 'Analise fiscal',
|
|
18339
|
+
subtitle: 'Retencao e rateio em validacao.',
|
|
18340
|
+
opposite: '02/05/2026',
|
|
18341
|
+
badge: 'pendente',
|
|
18342
|
+
markerColor: 'warning',
|
|
18343
|
+
},
|
|
18344
|
+
{
|
|
18345
|
+
id: 'approval',
|
|
18346
|
+
title: 'Aprovacao final',
|
|
18347
|
+
subtitle: 'Pronto para decisao governada.',
|
|
18348
|
+
opposite: 'SLA 18,5h',
|
|
18349
|
+
badge: 'proximo',
|
|
18350
|
+
markerColor: 'success',
|
|
18351
|
+
markerStyle: 'outlined',
|
|
18352
|
+
},
|
|
18353
|
+
],
|
|
18354
|
+
},
|
|
18355
|
+
{
|
|
18356
|
+
type: 'decisionPackage',
|
|
18357
|
+
title: 'Decision package',
|
|
18358
|
+
subtitle: 'Fiscal approval',
|
|
18359
|
+
summary: 'Approve, request evidence or escalate from a governed host action.',
|
|
18360
|
+
status: 'simulated',
|
|
18361
|
+
owner: 'Controladoria',
|
|
18362
|
+
policySource: 'Fiscal retention policy',
|
|
18363
|
+
version: '2026.05',
|
|
18364
|
+
confidence: 82,
|
|
18365
|
+
risk: 'medium',
|
|
18366
|
+
lastReviewed: '2026-05-02',
|
|
18367
|
+
primaryAction: {
|
|
18368
|
+
type: 'actionButton',
|
|
18369
|
+
label: 'Approve package',
|
|
18370
|
+
variant: 'raised',
|
|
18371
|
+
color: 'primary',
|
|
18372
|
+
action: { actionId: 'purchaseOrder.approval.approve' },
|
|
18373
|
+
},
|
|
18374
|
+
secondaryActions: [
|
|
18375
|
+
{
|
|
18376
|
+
type: 'actionButton',
|
|
18377
|
+
label: 'Request evidence',
|
|
18378
|
+
variant: 'stroked',
|
|
18379
|
+
action: { actionId: 'purchaseOrder.approval.requestEvidence' },
|
|
18380
|
+
},
|
|
18381
|
+
],
|
|
18382
|
+
},
|
|
18383
|
+
{
|
|
18384
|
+
type: 'actionCard',
|
|
18385
|
+
title: 'Open governed workflow',
|
|
18386
|
+
subtitle: 'Host-mediated operation',
|
|
18387
|
+
message: 'Use actionCard for SAP-like enterprise flows that need audit, permission checks and contextual dispatch.',
|
|
18388
|
+
meta: 'surface.open',
|
|
18389
|
+
ctaLabel: 'Open detail',
|
|
18390
|
+
variant: 'raised',
|
|
18391
|
+
color: 'primary',
|
|
18392
|
+
action: { actionId: 'purchaseOrder.detail.open' },
|
|
18393
|
+
},
|
|
18394
|
+
],
|
|
18395
|
+
},
|
|
18396
|
+
context: {
|
|
18397
|
+
row: {
|
|
18398
|
+
approvalProgress: 58,
|
|
18399
|
+
},
|
|
18400
|
+
},
|
|
18401
|
+
},
|
|
18402
|
+
},
|
|
16019
18403
|
{
|
|
16020
18404
|
id: 'stat-group',
|
|
16021
18405
|
label: 'Stat group',
|