@praxisui/rich-content 9.0.0-beta.6 → 9.0.0-beta.60
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 +2271 -244
- package/package.json +7 -3
- package/types/praxisui-rich-content.d.ts +58 -2
|
@@ -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,6 +63,12 @@ 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',
|
|
@@ -86,21 +112,33 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
86
112
|
'praxis.richContent.editor.field.icon': 'Icon',
|
|
87
113
|
'praxis.richContent.editor.field.ariaLabel': 'Accessible label',
|
|
88
114
|
'praxis.richContent.editor.field.src': 'Image URL',
|
|
115
|
+
'praxis.richContent.editor.field.srcExpr': 'Image URL binding',
|
|
89
116
|
'praxis.richContent.editor.field.href': 'Link URL',
|
|
90
117
|
'praxis.richContent.editor.field.target': 'Target',
|
|
91
118
|
'praxis.richContent.editor.field.rel': 'Rel',
|
|
92
119
|
'praxis.richContent.editor.field.alt': 'Alternative text',
|
|
120
|
+
'praxis.richContent.editor.field.altExpr': 'Alt text binding',
|
|
93
121
|
'praxis.richContent.editor.field.testId': 'Test id',
|
|
94
122
|
'praxis.richContent.editor.field.className': 'CSS class',
|
|
95
123
|
'praxis.richContent.editor.field.visibleWhenPath': 'Context path',
|
|
96
124
|
'praxis.richContent.editor.field.visibleWhenValue': 'Expected value',
|
|
97
125
|
'praxis.richContent.editor.field.styleName': 'CSS property',
|
|
98
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',
|
|
99
135
|
'praxis.richContent.editor.field.valueExpr': 'Value binding',
|
|
100
136
|
'praxis.richContent.editor.field.captionExpr': 'Caption binding',
|
|
101
137
|
'praxis.richContent.editor.field.max': 'Maximum',
|
|
138
|
+
'praxis.richContent.editor.field.showPercent': 'Show percent',
|
|
102
139
|
'praxis.richContent.editor.field.direction': 'Direction',
|
|
103
140
|
'praxis.richContent.editor.field.gap': 'Gap',
|
|
141
|
+
'praxis.richContent.editor.field.wrap': 'Wrap items',
|
|
104
142
|
'praxis.richContent.editor.field.avatarName': 'Avatar name',
|
|
105
143
|
'praxis.richContent.editor.field.avatarImage': 'Avatar image',
|
|
106
144
|
'praxis.richContent.editor.field.nameExpr': 'Name binding',
|
|
@@ -112,6 +150,7 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
112
150
|
'praxis.richContent.editor.field.meta': 'Meta',
|
|
113
151
|
'praxis.richContent.editor.field.opposite': 'Opposite content',
|
|
114
152
|
'praxis.richContent.editor.field.badge': 'Badge',
|
|
153
|
+
'praxis.richContent.editor.field.badgeExpr': 'Badge binding',
|
|
115
154
|
'praxis.richContent.editor.field.preset': 'Preset',
|
|
116
155
|
'praxis.richContent.editor.field.title': 'Title',
|
|
117
156
|
'praxis.richContent.editor.field.subtitle': 'Subtitle',
|
|
@@ -168,11 +207,29 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
168
207
|
'praxis.richContent.editor.field.ctaLabel': 'CTA label',
|
|
169
208
|
'praxis.richContent.editor.field.ctaIcon': 'CTA icon',
|
|
170
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',
|
|
171
215
|
'praxis.richContent.editor.field.mediaKind': 'Media',
|
|
172
216
|
'praxis.richContent.editor.field.mediaSrc': 'Media source',
|
|
217
|
+
'praxis.richContent.editor.field.mediaSrcExpr': 'Media source binding',
|
|
173
218
|
'praxis.richContent.editor.field.mediaAlt': 'Media alt text',
|
|
219
|
+
'praxis.richContent.editor.field.mediaAltExpr': 'Media alt binding',
|
|
174
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',
|
|
175
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',
|
|
176
233
|
'praxis.richContent.editor.decisionGovernance': 'Decision governance',
|
|
177
234
|
'praxis.richContent.editor.decisionEvidence': 'Evidence',
|
|
178
235
|
'praxis.richContent.editor.decisionPrimaryAction': 'Primary action',
|
|
@@ -210,6 +267,20 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
210
267
|
'praxis.richContent.editor.placeholder.supersedesExpr': '${decision.supersedes}',
|
|
211
268
|
'praxis.richContent.editor.placeholder.evidenceLabelExpr': '${evidence.label}',
|
|
212
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',
|
|
213
284
|
'praxis.richContent.editor.cardVariant.outlined': 'Outlined',
|
|
214
285
|
'praxis.richContent.editor.cardVariant.elevated': 'Elevated',
|
|
215
286
|
'praxis.richContent.editor.cardVariant.filled': 'Filled',
|
|
@@ -218,8 +289,18 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
218
289
|
'praxis.richContent.editor.size.sm': 'Small',
|
|
219
290
|
'praxis.richContent.editor.size.md': 'Medium',
|
|
220
291
|
'praxis.richContent.editor.size.lg': 'Large',
|
|
292
|
+
'praxis.richContent.editor.density.compact': 'Compact',
|
|
293
|
+
'praxis.richContent.editor.density.comfortable': 'Comfortable',
|
|
221
294
|
'praxis.richContent.editor.orientation.vertical': 'Vertical',
|
|
222
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',
|
|
223
304
|
'praxis.richContent.editor.mediaKind.image': 'Image',
|
|
224
305
|
'praxis.richContent.editor.mediaKind.video': 'Video',
|
|
225
306
|
'praxis.richContent.editor.mediaKind.icon': 'Icon',
|
|
@@ -366,6 +447,8 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
366
447
|
'praxis.richContent.editor.nodeTypes': 'Types',
|
|
367
448
|
'praxis.richContent.editor.none': 'None',
|
|
368
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.',
|
|
369
452
|
'praxis.richContent.editor.restore': 'Restore',
|
|
370
453
|
'praxis.richContent.editor.emptyDocument': 'Empty document',
|
|
371
454
|
'praxis.richContent.editor.validation.documentShape': 'The document must be a valid RichContentDocument.',
|
|
@@ -400,6 +483,12 @@ const PRAXIS_RICH_CONTENT_EN_US = {
|
|
|
400
483
|
'praxis.richContent.editor.validation.numberField': 'This field must be a number.',
|
|
401
484
|
'praxis.richContent.editor.validation.booleanField': 'This field must be a boolean.',
|
|
402
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.',
|
|
403
492
|
};
|
|
404
493
|
|
|
405
494
|
const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
@@ -408,15 +497,35 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
408
497
|
'praxis.richContent.editor.subtitle': 'Edite o documento canônico consumido pelo renderer. O payload salvo preserva os demais inputs do widget.',
|
|
409
498
|
'praxis.richContent.editor.valid': 'Documento válido',
|
|
410
499
|
'praxis.richContent.editor.invalid': 'JSON inválido',
|
|
500
|
+
'praxis.richContent.editor.invalidBadge': 'Inválido',
|
|
411
501
|
'praxis.richContent.editor.layout': 'Layout',
|
|
412
502
|
'praxis.richContent.editor.layout.block': 'Bloco',
|
|
413
503
|
'praxis.richContent.editor.layout.inline': 'Inline',
|
|
414
504
|
'praxis.richContent.editor.rootClass': 'Classe raiz',
|
|
415
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',
|
|
416
511
|
'praxis.richContent.editor.document': 'JSON avançado',
|
|
512
|
+
'praxis.richContent.editor.documentJson': 'JSON do documento canônico',
|
|
417
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.',
|
|
418
515
|
'praxis.richContent.editor.blocks': 'Blocos',
|
|
419
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',
|
|
420
529
|
'praxis.richContent.editor.block': 'Bloco',
|
|
421
530
|
'praxis.richContent.editor.blockType': 'Tipo de bloco',
|
|
422
531
|
'praxis.richContent.editor.addBlock': 'Adicionar bloco',
|
|
@@ -438,6 +547,12 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
438
547
|
'praxis.richContent.editor.cardContentHelp': 'O conteúdo do card é preservado no JSON. Use o JSON avançado para nodes aninhados do card.',
|
|
439
548
|
'praxis.richContent.editor.nodeId': 'Id estável',
|
|
440
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.',
|
|
441
556
|
'praxis.richContent.editor.visibilityRule': 'Regra de visibilidade',
|
|
442
557
|
'praxis.richContent.editor.safeStyle': 'Estilo seguro',
|
|
443
558
|
'praxis.richContent.editor.nodeType.text': 'Texto',
|
|
@@ -460,21 +575,33 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
460
575
|
'praxis.richContent.editor.field.icon': 'Ícone',
|
|
461
576
|
'praxis.richContent.editor.field.ariaLabel': 'Label acessível',
|
|
462
577
|
'praxis.richContent.editor.field.src': 'URL da imagem',
|
|
578
|
+
'praxis.richContent.editor.field.srcExpr': 'Vínculo da URL da imagem',
|
|
463
579
|
'praxis.richContent.editor.field.href': 'URL do link',
|
|
464
580
|
'praxis.richContent.editor.field.target': 'Destino',
|
|
465
581
|
'praxis.richContent.editor.field.rel': 'Rel',
|
|
466
582
|
'praxis.richContent.editor.field.alt': 'Texto alternativo',
|
|
583
|
+
'praxis.richContent.editor.field.altExpr': 'Vínculo do texto alternativo',
|
|
467
584
|
'praxis.richContent.editor.field.testId': 'Id de teste',
|
|
468
585
|
'praxis.richContent.editor.field.className': 'Classe CSS',
|
|
469
586
|
'praxis.richContent.editor.field.visibleWhenPath': 'Path de contexto',
|
|
470
587
|
'praxis.richContent.editor.field.visibleWhenValue': 'Valor esperado',
|
|
471
588
|
'praxis.richContent.editor.field.styleName': 'Propriedade CSS',
|
|
472
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',
|
|
473
598
|
'praxis.richContent.editor.field.valueExpr': 'Binding do valor',
|
|
474
599
|
'praxis.richContent.editor.field.captionExpr': 'Binding da legenda',
|
|
475
600
|
'praxis.richContent.editor.field.max': 'Máximo',
|
|
601
|
+
'praxis.richContent.editor.field.showPercent': 'Mostrar percentual',
|
|
476
602
|
'praxis.richContent.editor.field.direction': 'Direção',
|
|
477
603
|
'praxis.richContent.editor.field.gap': 'Espaçamento',
|
|
604
|
+
'praxis.richContent.editor.field.wrap': 'Quebrar itens',
|
|
478
605
|
'praxis.richContent.editor.field.avatarName': 'Nome do avatar',
|
|
479
606
|
'praxis.richContent.editor.field.avatarImage': 'Imagem do avatar',
|
|
480
607
|
'praxis.richContent.editor.field.nameExpr': 'Vínculo do nome',
|
|
@@ -486,16 +613,35 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
486
613
|
'praxis.richContent.editor.field.meta': 'Meta',
|
|
487
614
|
'praxis.richContent.editor.field.opposite': 'Conteúdo oposto',
|
|
488
615
|
'praxis.richContent.editor.field.badge': 'Badge',
|
|
616
|
+
'praxis.richContent.editor.field.badgeExpr': 'Vínculo do badge',
|
|
489
617
|
'praxis.richContent.editor.field.preset': 'Preset',
|
|
490
618
|
'praxis.richContent.editor.field.title': 'Título',
|
|
491
619
|
'praxis.richContent.editor.field.subtitle': 'Subtítulo',
|
|
492
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',
|
|
493
626
|
'praxis.richContent.editor.field.orientation': 'Orientação',
|
|
494
627
|
'praxis.richContent.editor.field.mediaKind': 'Mídia',
|
|
495
628
|
'praxis.richContent.editor.field.mediaSrc': 'Origem da mídia',
|
|
629
|
+
'praxis.richContent.editor.field.mediaSrcExpr': 'Vínculo da origem da mídia',
|
|
496
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',
|
|
497
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',
|
|
498
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',
|
|
499
645
|
'praxis.richContent.editor.cardVariant.outlined': 'Com contorno',
|
|
500
646
|
'praxis.richContent.editor.cardVariant.elevated': 'Elevado',
|
|
501
647
|
'praxis.richContent.editor.cardVariant.filled': 'Preenchido',
|
|
@@ -504,8 +650,18 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
504
650
|
'praxis.richContent.editor.size.sm': 'Pequeno',
|
|
505
651
|
'praxis.richContent.editor.size.md': 'Médio',
|
|
506
652
|
'praxis.richContent.editor.size.lg': 'Grande',
|
|
653
|
+
'praxis.richContent.editor.density.compact': 'Compacta',
|
|
654
|
+
'praxis.richContent.editor.density.comfortable': 'Confortável',
|
|
507
655
|
'praxis.richContent.editor.orientation.vertical': 'Vertical',
|
|
508
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',
|
|
509
665
|
'praxis.richContent.editor.mediaKind.image': 'Imagem',
|
|
510
666
|
'praxis.richContent.editor.mediaKind.video': 'Vídeo',
|
|
511
667
|
'praxis.richContent.editor.mediaKind.icon': 'Ícone',
|
|
@@ -528,6 +684,20 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
528
684
|
'praxis.richContent.editor.placeholder.valueExpr': 'row.total',
|
|
529
685
|
'praxis.richContent.editor.placeholder.captionExpr': 'row.caption',
|
|
530
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',
|
|
531
701
|
'praxis.richContent.editor.placeholder.nameExpr': 'row.name',
|
|
532
702
|
'praxis.richContent.editor.placeholder.imageSrcExpr': 'row.avatarUrl',
|
|
533
703
|
'praxis.richContent.editor.placeholder.initialsExpr': 'row.initials',
|
|
@@ -554,6 +724,8 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
554
724
|
'praxis.richContent.editor.nodeTypes': 'Tipos',
|
|
555
725
|
'praxis.richContent.editor.none': 'Nenhum',
|
|
556
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.',
|
|
557
729
|
'praxis.richContent.editor.restore': 'Restaurar',
|
|
558
730
|
'praxis.richContent.editor.emptyDocument': 'Documento vazio',
|
|
559
731
|
'praxis.richContent.editor.validation.documentShape': 'O documento deve ser um RichContentDocument válido.',
|
|
@@ -788,6 +960,12 @@ const PRAXIS_RICH_CONTENT_PT_BR = {
|
|
|
788
960
|
'praxis.richContent.editor.defaultTabsSubtitle': 'Agrupe visões portáveis sem inventar markup de abas no host.',
|
|
789
961
|
'praxis.richContent.editor.defaultTabLabel': 'Visão geral',
|
|
790
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.',
|
|
791
969
|
};
|
|
792
970
|
|
|
793
971
|
function createPraxisRichContentI18nConfig(options = {}) {
|
|
@@ -1032,6 +1210,15 @@ class PraxisRichContent {
|
|
|
1032
1210
|
const value = this.resolveValue(node.valueExpr);
|
|
1033
1211
|
return typeof value === 'number' ? value : Number(value ?? 0);
|
|
1034
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
|
+
}
|
|
1035
1222
|
resolveProgressLabel(node) {
|
|
1036
1223
|
return this.resolveValue(node.labelExpr) ?? node.label ?? null;
|
|
1037
1224
|
}
|
|
@@ -2007,18 +2194,32 @@ class PraxisRichContent {
|
|
|
2007
2194
|
</div>
|
|
2008
2195
|
}
|
|
2009
2196
|
@case ('metric') {
|
|
2010
|
-
<div class="prx-rich-metric">
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
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>
|
|
2015
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>
|
|
2016
2210
|
</div>
|
|
2017
2211
|
}
|
|
2018
2212
|
@case ('progress') {
|
|
2019
2213
|
<div class="prx-rich-progress">
|
|
2020
|
-
@if (resolveProgressLabel(node)
|
|
2021
|
-
<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>
|
|
2022
2223
|
}
|
|
2023
2224
|
<progress
|
|
2024
2225
|
class="prx-rich-progress-bar"
|
|
@@ -3088,7 +3289,7 @@ class PraxisRichContent {
|
|
|
3088
3289
|
</span>
|
|
3089
3290
|
}
|
|
3090
3291
|
</ng-template>
|
|
3091
|
-
`, 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 });
|
|
3092
3293
|
}
|
|
3093
3294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisRichContent, decorators: [{
|
|
3094
3295
|
type: Component,
|
|
@@ -3159,18 +3360,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
3159
3360
|
</div>
|
|
3160
3361
|
}
|
|
3161
3362
|
@case ('metric') {
|
|
3162
|
-
<div class="prx-rich-metric">
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
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>
|
|
3167
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>
|
|
3168
3376
|
</div>
|
|
3169
3377
|
}
|
|
3170
3378
|
@case ('progress') {
|
|
3171
3379
|
<div class="prx-rich-progress">
|
|
3172
|
-
@if (resolveProgressLabel(node)
|
|
3173
|
-
<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>
|
|
3174
3389
|
}
|
|
3175
3390
|
<progress
|
|
3176
3391
|
class="prx-rich-progress-bar"
|
|
@@ -4240,7 +4455,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4240
4455
|
</span>
|
|
4241
4456
|
}
|
|
4242
4457
|
</ng-template>
|
|
4243
|
-
`, 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"] }]
|
|
4244
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: [{
|
|
4245
4460
|
type: Input
|
|
4246
4461
|
}] } });
|
|
@@ -4282,6 +4497,14 @@ const SUPPORTED_NODE_TYPES = new Set([
|
|
|
4282
4497
|
'timeline',
|
|
4283
4498
|
'preset',
|
|
4284
4499
|
]);
|
|
4500
|
+
const SUPPORTED_CONTEXT_SCOPES = new Set([
|
|
4501
|
+
'row',
|
|
4502
|
+
'computed',
|
|
4503
|
+
'detail',
|
|
4504
|
+
'meta',
|
|
4505
|
+
'user',
|
|
4506
|
+
'tenant',
|
|
4507
|
+
]);
|
|
4285
4508
|
const STYLE_NAME_PATTERN = /^--[a-zA-Z0-9-_]+$|^[a-z][a-zA-Z0-9-]*$/;
|
|
4286
4509
|
const CLASS_NAME_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_-]*(\s+[a-zA-Z_][a-zA-Z0-9_-]*)*$/;
|
|
4287
4510
|
const UNSAFE_STYLE_VALUE_PATTERN = /(?:javascript\s*:|vbscript\s*:|data\s*:|expression\s*\(|@import|-moz-binding|behavior\s*:)/i;
|
|
@@ -4298,6 +4521,7 @@ function validateRichContentDocument(value) {
|
|
|
4298
4521
|
if (value['version'] !== SUPPORTED_DOCUMENT_VERSION) {
|
|
4299
4522
|
addIssue(issues, '$.version', 'editor.validation.documentVersion', 'The document version must be "1.0.0".');
|
|
4300
4523
|
}
|
|
4524
|
+
validateContextConfig(value['context'], '$.context', issues);
|
|
4301
4525
|
if (!Array.isArray(value['nodes'])) {
|
|
4302
4526
|
addIssue(issues, '$.nodes', 'editor.validation.documentNodes', 'The document must include a nodes array.');
|
|
4303
4527
|
}
|
|
@@ -4675,6 +4899,7 @@ function validateBaseNode(node, path, issues) {
|
|
|
4675
4899
|
validateOptionalClassName(node, 'className', path, issues);
|
|
4676
4900
|
validateOptionalStringArray(node, 'requiresCapabilities', path, issues);
|
|
4677
4901
|
validateEnum(node, 'capabilityMode', ['all', 'any'], path, issues, false);
|
|
4902
|
+
validateContextConfig(node['bindings'], `${path}.bindings`, issues);
|
|
4678
4903
|
validateStyleObject(node['style'], `${path}.style`, issues);
|
|
4679
4904
|
validateRuleExpression(node['visibleWhen'], `${path}.visibleWhen`, issues);
|
|
4680
4905
|
validateRuleExpression(node['disabledWhen'], `${path}.disabledWhen`, issues);
|
|
@@ -4682,6 +4907,39 @@ function validateBaseNode(node, path, issues) {
|
|
|
4682
4907
|
validateClassWhen(node['classWhen'], `${path}.classWhen`, issues);
|
|
4683
4908
|
validateStyleWhen(node['styleWhen'], `${path}.styleWhen`, issues);
|
|
4684
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
|
+
}
|
|
4685
4943
|
function validateActionRef(value, path, issues) {
|
|
4686
4944
|
if (!isRecord(value)) {
|
|
4687
4945
|
addIssue(issues, path, 'editor.validation.objectField', 'Action configuration must be an object.');
|
|
@@ -5733,6 +5991,21 @@ function stringifyScalar(value) {
|
|
|
5733
5991
|
return '';
|
|
5734
5992
|
}
|
|
5735
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
|
+
];
|
|
5736
6009
|
const EMPTY_DOCUMENT = {
|
|
5737
6010
|
kind: 'praxis.rich-content',
|
|
5738
6011
|
version: '1.0.0',
|
|
@@ -5752,6 +6025,7 @@ class PraxisRichContentConfigEditor {
|
|
|
5752
6025
|
editableNodeTypes = EDITABLE_TOP_LEVEL_NODE_TYPES;
|
|
5753
6026
|
presenterNodeTypes = EDITABLE_PRESENTER_NODE_TYPES;
|
|
5754
6027
|
cardContentNodeTypes = EDITABLE_CARD_CONTENT_NODE_TYPES;
|
|
6028
|
+
advancedJsonOnlyNodeFields = ADVANCED_JSON_ONLY_NODE_FIELDS;
|
|
5755
6029
|
presetOptions = this.presetRegistry.list();
|
|
5756
6030
|
documentJson = '';
|
|
5757
6031
|
layout = 'block';
|
|
@@ -5763,8 +6037,13 @@ class PraxisRichContentConfigEditor {
|
|
|
5763
6037
|
validationIssues = [];
|
|
5764
6038
|
nodeCount = 0;
|
|
5765
6039
|
nodeTypeSummary = '';
|
|
6040
|
+
selectedNodeIndex = 0;
|
|
6041
|
+
activeEditorPanel = 'guided';
|
|
6042
|
+
advancedRulesOpen = false;
|
|
6043
|
+
advancedJsonFieldErrors = {};
|
|
5766
6044
|
initialInputs = this.normalizeInputs(this.inputs);
|
|
5767
6045
|
pendingRemoval = null;
|
|
6046
|
+
advancedJsonFieldDrafts = {};
|
|
5768
6047
|
ngOnChanges(changes) {
|
|
5769
6048
|
if (changes['inputs']) {
|
|
5770
6049
|
this.load(this.normalizeInputs(this.inputs), false);
|
|
@@ -5777,7 +6056,7 @@ class PraxisRichContentConfigEditor {
|
|
|
5777
6056
|
}
|
|
5778
6057
|
getSettingsValue() {
|
|
5779
6058
|
const document = this.parseDocument();
|
|
5780
|
-
if (!document)
|
|
6059
|
+
if (!document || this.hasAdvancedJsonFieldErrors())
|
|
5781
6060
|
return null;
|
|
5782
6061
|
return {
|
|
5783
6062
|
inputs: {
|
|
@@ -5804,6 +6083,7 @@ class PraxisRichContentConfigEditor {
|
|
|
5804
6083
|
this.isDirty$.next(!this.matchesInitialState());
|
|
5805
6084
|
}
|
|
5806
6085
|
onDocumentJsonChange() {
|
|
6086
|
+
this.clearAdvancedJsonFieldState();
|
|
5807
6087
|
this.parseDocument();
|
|
5808
6088
|
this.markDirty();
|
|
5809
6089
|
}
|
|
@@ -5815,14 +6095,32 @@ class PraxisRichContentConfigEditor {
|
|
|
5815
6095
|
this.parseDocument();
|
|
5816
6096
|
this.markDirty();
|
|
5817
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
|
+
}
|
|
5818
6114
|
addTopLevelNode() {
|
|
5819
6115
|
const document = this.ensureEditableDocument();
|
|
5820
6116
|
document.nodes.push(this.createDefaultNode(this.newNodeType));
|
|
6117
|
+
this.selectedNodeIndex = document.nodes.length - 1;
|
|
5821
6118
|
this.syncStructuredDocumentChange();
|
|
5822
6119
|
}
|
|
5823
6120
|
removeTopLevelNode(index) {
|
|
5824
6121
|
const document = this.ensureEditableDocument();
|
|
5825
6122
|
document.nodes.splice(index, 1);
|
|
6123
|
+
this.reconcileSelectedNodeIndex(document);
|
|
5826
6124
|
this.syncStructuredDocumentChange();
|
|
5827
6125
|
}
|
|
5828
6126
|
moveTopLevelNode(index, delta) {
|
|
@@ -5833,6 +6131,17 @@ class PraxisRichContentConfigEditor {
|
|
|
5833
6131
|
}
|
|
5834
6132
|
const [node] = document.nodes.splice(index, 1);
|
|
5835
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
|
+
}
|
|
5836
6145
|
this.syncStructuredDocumentChange();
|
|
5837
6146
|
}
|
|
5838
6147
|
changeTopLevelNodeType(index, nextType) {
|
|
@@ -5945,6 +6254,93 @@ class PraxisRichContentConfigEditor {
|
|
|
5945
6254
|
}
|
|
5946
6255
|
this.syncStructuredDocumentChange();
|
|
5947
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
|
+
}
|
|
5948
6344
|
addCardSlotNode(index, slot) {
|
|
5949
6345
|
this.ensureCardSlotNodes(index, slot).push(createDefaultPresenterNode('text', this.tx.bind(this)));
|
|
5950
6346
|
this.syncStructuredDocumentChange();
|
|
@@ -6244,6 +6640,65 @@ class PraxisRichContentConfigEditor {
|
|
|
6244
6640
|
};
|
|
6245
6641
|
this.syncStructuredDocumentChange();
|
|
6246
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
|
+
}
|
|
6247
6702
|
getActionCardSecondaryActions(index) {
|
|
6248
6703
|
return this.ensureActionCardSecondaryActions(index);
|
|
6249
6704
|
}
|
|
@@ -6463,6 +6918,203 @@ class PraxisRichContentConfigEditor {
|
|
|
6463
6918
|
setStyleEntry(node, this.getFirstStyleName(node), propertyValue);
|
|
6464
6919
|
this.syncStructuredDocumentChange();
|
|
6465
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
|
+
}
|
|
6466
7118
|
requestTopLevelNodeRemoval(index) {
|
|
6467
7119
|
this.pendingRemoval = { scope: 'nodes', index };
|
|
6468
7120
|
}
|
|
@@ -6610,6 +7262,12 @@ class PraxisRichContentConfigEditor {
|
|
|
6610
7262
|
.filter((issue) => issue.path === path || issue.path.startsWith(`${path}.`))
|
|
6611
7263
|
.map((issue) => this.tx(issue.messageKey, issue.fallback));
|
|
6612
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
|
+
}
|
|
6613
7271
|
isEditableNodeType(type) {
|
|
6614
7272
|
return EDITABLE_TOP_LEVEL_NODE_TYPES.includes(type);
|
|
6615
7273
|
}
|
|
@@ -6617,6 +7275,7 @@ class PraxisRichContentConfigEditor {
|
|
|
6617
7275
|
return EDITABLE_PRESENTER_NODE_TYPES.includes(type);
|
|
6618
7276
|
}
|
|
6619
7277
|
load(inputs, dirty) {
|
|
7278
|
+
this.clearAdvancedJsonFieldState();
|
|
6620
7279
|
const document = inputs.document ?? EMPTY_DOCUMENT;
|
|
6621
7280
|
const layout = inputs.layout === 'inline' ? 'inline' : 'block';
|
|
6622
7281
|
const rootClassName = typeof inputs.rootClassName === 'string' ? inputs.rootClassName : '';
|
|
@@ -6667,6 +7326,16 @@ class PraxisRichContentConfigEditor {
|
|
|
6667
7326
|
}
|
|
6668
7327
|
return node;
|
|
6669
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
|
+
}
|
|
6670
7339
|
ensureCardSlotNodes(index, slot) {
|
|
6671
7340
|
const card = this.ensureCardNode(index);
|
|
6672
7341
|
if (!Array.isArray(card[slot])) {
|
|
@@ -6968,11 +7637,18 @@ class PraxisRichContentConfigEditor {
|
|
|
6968
7637
|
return null;
|
|
6969
7638
|
}
|
|
6970
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
|
+
}
|
|
6971
7649
|
this.valid = true;
|
|
6972
7650
|
this.errorMessage = '';
|
|
6973
7651
|
this.isValid$.next(true);
|
|
6974
|
-
this.parsedDocument = document;
|
|
6975
|
-
this.updateDocumentOverview(document);
|
|
6976
7652
|
return document;
|
|
6977
7653
|
}
|
|
6978
7654
|
catch (error) {
|
|
@@ -6991,6 +7667,20 @@ class PraxisRichContentConfigEditor {
|
|
|
6991
7667
|
this.nodeCount = 0;
|
|
6992
7668
|
this.nodeTypeSummary = '';
|
|
6993
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
|
+
}
|
|
6994
7684
|
updateDocumentOverview(document) {
|
|
6995
7685
|
const typeCounts = new Map();
|
|
6996
7686
|
let count = 0;
|
|
@@ -7131,6 +7821,54 @@ class PraxisRichContentConfigEditor {
|
|
|
7131
7821
|
</label>
|
|
7132
7822
|
</div>
|
|
7133
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
|
+
|
|
7134
7872
|
<ng-template
|
|
7135
7873
|
#presenterFields
|
|
7136
7874
|
let-node="node"
|
|
@@ -7218,6 +7956,13 @@ class PraxisRichContentConfigEditor {
|
|
|
7218
7956
|
(ngModelChange)="setString('src', $event)"
|
|
7219
7957
|
/>
|
|
7220
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>
|
|
7221
7966
|
<label>
|
|
7222
7967
|
<span>{{ tx('editor.field.alt', 'Alternative text') }}</span>
|
|
7223
7968
|
<input
|
|
@@ -7225,6 +7970,13 @@ class PraxisRichContentConfigEditor {
|
|
|
7225
7970
|
(ngModelChange)="setString('alt', $event)"
|
|
7226
7971
|
/>
|
|
7227
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>
|
|
7228
7980
|
}
|
|
7229
7981
|
@case ('link') {
|
|
7230
7982
|
<label>
|
|
@@ -7234,6 +7986,13 @@ class PraxisRichContentConfigEditor {
|
|
|
7234
7986
|
(ngModelChange)="setString('label', $event)"
|
|
7235
7987
|
/>
|
|
7236
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>
|
|
7237
7996
|
<label>
|
|
7238
7997
|
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
7239
7998
|
<input
|
|
@@ -7283,6 +8042,20 @@ class PraxisRichContentConfigEditor {
|
|
|
7283
8042
|
(ngModelChange)="setString('label', $event)"
|
|
7284
8043
|
/>
|
|
7285
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>
|
|
7286
8059
|
<label>
|
|
7287
8060
|
<span>{{ tx('editor.field.max', 'Maximum') }}</span>
|
|
7288
8061
|
<input
|
|
@@ -7536,16 +8309,68 @@ class PraxisRichContentConfigEditor {
|
|
|
7536
8309
|
</div>
|
|
7537
8310
|
</ng-template>
|
|
7538
8311
|
|
|
7539
|
-
<
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
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
|
+
>
|
|
8365
|
+
<header class="prx-rich-editor__section-header">
|
|
8366
|
+
<div>
|
|
8367
|
+
<h3>{{ tx('editor.blocks', 'Blocks') }}</h3>
|
|
8368
|
+
<p>
|
|
8369
|
+
{{
|
|
8370
|
+
tx(
|
|
8371
|
+
'editor.blocksHelp',
|
|
8372
|
+
'Create and edit common top-level rich-content blocks. Use JSON for advanced nested structures.'
|
|
8373
|
+
)
|
|
7549
8374
|
}}
|
|
7550
8375
|
</p>
|
|
7551
8376
|
</div>
|
|
@@ -7573,8 +8398,83 @@ class PraxisRichContentConfigEditor {
|
|
|
7573
8398
|
</header>
|
|
7574
8399
|
|
|
7575
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>
|
|
7576
8475
|
<div class="prx-rich-editor__node-list">
|
|
7577
8476
|
@for (node of parsedDocument?.nodes ?? []; track node.id ?? $index; let nodeIndex = $index) {
|
|
8477
|
+
@if (selectedNodeIndex === nodeIndex) {
|
|
7578
8478
|
<article
|
|
7579
8479
|
class="prx-rich-editor__node-card"
|
|
7580
8480
|
[attr.data-rich-editor-node-type]="node.type"
|
|
@@ -7760,22 +8660,38 @@ class PraxisRichContentConfigEditor {
|
|
|
7760
8660
|
/>
|
|
7761
8661
|
</label>
|
|
7762
8662
|
}
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7775
|
-
|
|
7776
|
-
|
|
7777
|
-
|
|
7778
|
-
|
|
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
|
+
}
|
|
7779
8695
|
@case ('link') {
|
|
7780
8696
|
<label>
|
|
7781
8697
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
@@ -7826,6 +8742,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7826
8742
|
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
7827
8743
|
/>
|
|
7828
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>
|
|
7829
8753
|
<label>
|
|
7830
8754
|
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
7831
8755
|
<input
|
|
@@ -7867,6 +8791,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7867
8791
|
(ngModelChange)="setNumberField($index, 'max', $event)"
|
|
7868
8792
|
/>
|
|
7869
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>
|
|
7870
8802
|
}
|
|
7871
8803
|
@case ('actionButton') {
|
|
7872
8804
|
<label>
|
|
@@ -7962,6 +8894,14 @@ class PraxisRichContentConfigEditor {
|
|
|
7962
8894
|
<option value="xl">xl</option>
|
|
7963
8895
|
</select>
|
|
7964
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>
|
|
7965
8905
|
<div class="prx-rich-editor__nested-editor">
|
|
7966
8906
|
<header class="prx-rich-editor__nested-header">
|
|
7967
8907
|
<h5>{{ tx('editor.composeItems', 'Compose items') }}</h5>
|
|
@@ -8019,6 +8959,14 @@ class PraxisRichContentConfigEditor {
|
|
|
8019
8959
|
(ngModelChange)="setStringField($index, 'title', $event)"
|
|
8020
8960
|
/>
|
|
8021
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>
|
|
8022
8970
|
<label>
|
|
8023
8971
|
<span>{{ tx('editor.field.subtitle', 'Subtitle') }}</span>
|
|
8024
8972
|
<input
|
|
@@ -8026,6 +8974,14 @@ class PraxisRichContentConfigEditor {
|
|
|
8026
8974
|
(ngModelChange)="setStringField($index, 'subtitle', $event)"
|
|
8027
8975
|
/>
|
|
8028
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>
|
|
8029
8985
|
<label>
|
|
8030
8986
|
<span>{{ tx('editor.field.variant', 'Variant') }}</span>
|
|
8031
8987
|
<select
|
|
@@ -8063,6 +9019,16 @@ class PraxisRichContentConfigEditor {
|
|
|
8063
9019
|
<option value="lg">{{ tx('editor.size.lg', 'Large') }}</option>
|
|
8064
9020
|
</select>
|
|
8065
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>
|
|
8066
9032
|
<label>
|
|
8067
9033
|
<span>{{ tx('editor.field.orientation', 'Orientation') }}</span>
|
|
8068
9034
|
<select
|
|
@@ -8073,6 +9039,38 @@ class PraxisRichContentConfigEditor {
|
|
|
8073
9039
|
<option value="horizontal">{{ tx('editor.orientation.horizontal', 'Horizontal') }}</option>
|
|
8074
9040
|
</select>
|
|
8075
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>
|
|
8076
9074
|
<label>
|
|
8077
9075
|
<span>{{ tx('editor.field.mediaKind', 'Media') }}</span>
|
|
8078
9076
|
<select
|
|
@@ -8094,6 +9092,14 @@ class PraxisRichContentConfigEditor {
|
|
|
8094
9092
|
(ngModelChange)="setCardMediaField(nodeIndex, 'src', $event)"
|
|
8095
9093
|
/>
|
|
8096
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>
|
|
8097
9103
|
<label>
|
|
8098
9104
|
<span>{{ tx('editor.field.mediaAlt', 'Media alt text') }}</span>
|
|
8099
9105
|
<input
|
|
@@ -8101,6 +9107,14 @@ class PraxisRichContentConfigEditor {
|
|
|
8101
9107
|
(ngModelChange)="setCardMediaField(nodeIndex, 'alt', $event)"
|
|
8102
9108
|
/>
|
|
8103
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>
|
|
8104
9118
|
<label>
|
|
8105
9119
|
<span>{{ tx('editor.field.mediaIcon', 'Media icon') }}</span>
|
|
8106
9120
|
<input
|
|
@@ -8108,6 +9122,29 @@ class PraxisRichContentConfigEditor {
|
|
|
8108
9122
|
(ngModelChange)="setCardMediaField(nodeIndex, 'icon', $event)"
|
|
8109
9123
|
/>
|
|
8110
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>
|
|
8111
9148
|
<label>
|
|
8112
9149
|
<span>{{ tx('editor.field.mediaPlacement', 'Media placement') }}</span>
|
|
8113
9150
|
<select
|
|
@@ -8121,6 +9158,76 @@ class PraxisRichContentConfigEditor {
|
|
|
8121
9158
|
</select>
|
|
8122
9159
|
</label>
|
|
8123
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>
|
|
8124
9231
|
<div class="prx-rich-editor__nested-editor">
|
|
8125
9232
|
<header class="prx-rich-editor__nested-header">
|
|
8126
9233
|
<h5>{{ tx('editor.cardContent', 'Card body') }}</h5>
|
|
@@ -8566,6 +9673,14 @@ class PraxisRichContentConfigEditor {
|
|
|
8566
9673
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'label', $event)"
|
|
8567
9674
|
/>
|
|
8568
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>
|
|
8569
9684
|
<label>
|
|
8570
9685
|
<span>{{ tx('editor.field.icon', 'Icon') }}</span>
|
|
8571
9686
|
<input
|
|
@@ -8580,6 +9695,48 @@ class PraxisRichContentConfigEditor {
|
|
|
8580
9695
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'badge', $event)"
|
|
8581
9696
|
/>
|
|
8582
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>
|
|
8583
9740
|
</div>
|
|
8584
9741
|
}
|
|
8585
9742
|
</div>
|
|
@@ -9970,97 +11127,216 @@ class PraxisRichContentConfigEditor {
|
|
|
9970
11127
|
</p>
|
|
9971
11128
|
}
|
|
9972
11129
|
}
|
|
9973
|
-
<
|
|
9974
|
-
|
|
9975
|
-
|
|
9976
|
-
|
|
9977
|
-
|
|
9978
|
-
|
|
9979
|
-
|
|
9980
|
-
|
|
9981
|
-
|
|
9982
|
-
|
|
9983
|
-
|
|
9984
|
-
|
|
9985
|
-
|
|
9986
|
-
|
|
9987
|
-
|
|
9988
|
-
|
|
9989
|
-
/>
|
|
9990
|
-
</label>
|
|
9991
|
-
<label>
|
|
9992
|
-
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
9993
|
-
<input
|
|
9994
|
-
[ngModel]="getCapabilityList(node)"
|
|
9995
|
-
(ngModelChange)="setCapabilityList($index, $event)"
|
|
9996
|
-
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
9997
|
-
/>
|
|
9998
|
-
</label>
|
|
9999
|
-
<label>
|
|
10000
|
-
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
10001
|
-
<select
|
|
10002
|
-
[ngModel]="getStringField(node, 'capabilityMode') || 'all'"
|
|
10003
|
-
(ngModelChange)="setStringField($index, 'capabilityMode', $event)"
|
|
10004
|
-
>
|
|
10005
|
-
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
10006
|
-
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
10007
|
-
</select>
|
|
10008
|
-
</label>
|
|
10009
|
-
</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>
|
|
10010
11146
|
|
|
10011
|
-
|
|
10012
|
-
|
|
10013
|
-
|
|
10014
|
-
|
|
10015
|
-
|
|
10016
|
-
|
|
10017
|
-
|
|
10018
|
-
|
|
10019
|
-
|
|
10020
|
-
|
|
10021
|
-
|
|
10022
|
-
|
|
10023
|
-
|
|
10024
|
-
|
|
10025
|
-
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
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>
|
|
10030
11184
|
|
|
10031
|
-
|
|
10032
|
-
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10040
|
-
|
|
10041
|
-
|
|
10042
|
-
|
|
10043
|
-
|
|
10044
|
-
|
|
10045
|
-
|
|
10046
|
-
|
|
10047
|
-
|
|
10048
|
-
|
|
10049
|
-
|
|
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>
|
|
10050
11272
|
</div>
|
|
10051
11273
|
</article>
|
|
11274
|
+
}
|
|
10052
11275
|
}
|
|
10053
11276
|
</div>
|
|
11277
|
+
</div>
|
|
11278
|
+
</div>
|
|
10054
11279
|
} @else {
|
|
10055
11280
|
<p class="prx-rich-editor__empty">
|
|
10056
11281
|
{{ tx('editor.noBlocks', 'No blocks yet. Add a block to start authoring this document.') }}
|
|
10057
11282
|
</p>
|
|
10058
11283
|
}
|
|
10059
11284
|
</section>
|
|
11285
|
+
}
|
|
10060
11286
|
|
|
10061
|
-
|
|
10062
|
-
|
|
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>
|
|
10063
11337
|
<div class="prx-rich-editor__workbench">
|
|
11338
|
+
<label class="prx-rich-editor__document">
|
|
11339
|
+
<span>{{ tx('editor.documentJson', 'Canonical document JSON') }}</span>
|
|
10064
11340
|
<textarea
|
|
10065
11341
|
name="rich-content-document"
|
|
10066
11342
|
[(ngModel)]="documentJson"
|
|
@@ -10074,6 +11350,7 @@ class PraxisRichContentConfigEditor {
|
|
|
10074
11350
|
spellcheck="false"
|
|
10075
11351
|
data-testid="rich-content-document-input"
|
|
10076
11352
|
></textarea>
|
|
11353
|
+
</label>
|
|
10077
11354
|
|
|
10078
11355
|
<aside
|
|
10079
11356
|
class="prx-rich-editor__inspector"
|
|
@@ -10093,21 +11370,9 @@ class PraxisRichContentConfigEditor {
|
|
|
10093
11370
|
</dl>
|
|
10094
11371
|
</section>
|
|
10095
11372
|
|
|
10096
|
-
@if (parsedDocument) {
|
|
10097
|
-
<section>
|
|
10098
|
-
<h3>{{ tx('editor.preview', 'Preview') }}</h3>
|
|
10099
|
-
<div class="prx-rich-editor__preview">
|
|
10100
|
-
<praxis-rich-content
|
|
10101
|
-
[document]="parsedDocument"
|
|
10102
|
-
[layout]="layout"
|
|
10103
|
-
[rootClassName]="rootClassName"
|
|
10104
|
-
></praxis-rich-content>
|
|
10105
|
-
</div>
|
|
10106
|
-
</section>
|
|
10107
|
-
}
|
|
10108
11373
|
</aside>
|
|
10109
11374
|
</div>
|
|
10110
|
-
</
|
|
11375
|
+
</section>
|
|
10111
11376
|
|
|
10112
11377
|
@if (errorMessage) {
|
|
10113
11378
|
<div
|
|
@@ -10137,6 +11402,7 @@ class PraxisRichContentConfigEditor {
|
|
|
10137
11402
|
}}
|
|
10138
11403
|
</p>
|
|
10139
11404
|
}
|
|
11405
|
+
}
|
|
10140
11406
|
|
|
10141
11407
|
<div class="prx-rich-editor__actions">
|
|
10142
11408
|
<button type="button" (click)="reset()">
|
|
@@ -10147,7 +11413,7 @@ class PraxisRichContentConfigEditor {
|
|
|
10147
11413
|
</button>
|
|
10148
11414
|
</div>
|
|
10149
11415
|
</section>
|
|
10150
|
-
`, 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 });
|
|
10151
11417
|
}
|
|
10152
11418
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisRichContentConfigEditor, decorators: [{
|
|
10153
11419
|
type: Component,
|
|
@@ -10213,6 +11479,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10213
11479
|
</label>
|
|
10214
11480
|
</div>
|
|
10215
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
|
+
|
|
10216
11530
|
<ng-template
|
|
10217
11531
|
#presenterFields
|
|
10218
11532
|
let-node="node"
|
|
@@ -10300,6 +11614,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10300
11614
|
(ngModelChange)="setString('src', $event)"
|
|
10301
11615
|
/>
|
|
10302
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>
|
|
10303
11624
|
<label>
|
|
10304
11625
|
<span>{{ tx('editor.field.alt', 'Alternative text') }}</span>
|
|
10305
11626
|
<input
|
|
@@ -10307,6 +11628,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10307
11628
|
(ngModelChange)="setString('alt', $event)"
|
|
10308
11629
|
/>
|
|
10309
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>
|
|
10310
11638
|
}
|
|
10311
11639
|
@case ('link') {
|
|
10312
11640
|
<label>
|
|
@@ -10316,6 +11644,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10316
11644
|
(ngModelChange)="setString('label', $event)"
|
|
10317
11645
|
/>
|
|
10318
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>
|
|
10319
11654
|
<label>
|
|
10320
11655
|
<span>{{ tx('editor.field.href', 'Link URL') }}</span>
|
|
10321
11656
|
<input
|
|
@@ -10365,6 +11700,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10365
11700
|
(ngModelChange)="setString('label', $event)"
|
|
10366
11701
|
/>
|
|
10367
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>
|
|
10368
11717
|
<label>
|
|
10369
11718
|
<span>{{ tx('editor.field.max', 'Maximum') }}</span>
|
|
10370
11719
|
<input
|
|
@@ -10618,7 +11967,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10618
11967
|
</div>
|
|
10619
11968
|
</ng-template>
|
|
10620
11969
|
|
|
10621
|
-
<
|
|
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
|
+
>
|
|
10622
12023
|
<header class="prx-rich-editor__section-header">
|
|
10623
12024
|
<div>
|
|
10624
12025
|
<h3>{{ tx('editor.blocks', 'Blocks') }}</h3>
|
|
@@ -10655,8 +12056,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10655
12056
|
</header>
|
|
10656
12057
|
|
|
10657
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>
|
|
10658
12133
|
<div class="prx-rich-editor__node-list">
|
|
10659
12134
|
@for (node of parsedDocument?.nodes ?? []; track node.id ?? $index; let nodeIndex = $index) {
|
|
12135
|
+
@if (selectedNodeIndex === nodeIndex) {
|
|
10660
12136
|
<article
|
|
10661
12137
|
class="prx-rich-editor__node-card"
|
|
10662
12138
|
[attr.data-rich-editor-node-type]="node.type"
|
|
@@ -10842,22 +12318,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10842
12318
|
/>
|
|
10843
12319
|
</label>
|
|
10844
12320
|
}
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
|
|
10849
|
-
|
|
10850
|
-
|
|
10851
|
-
|
|
10852
|
-
|
|
10853
|
-
|
|
10854
|
-
|
|
10855
|
-
|
|
10856
|
-
|
|
10857
|
-
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
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
|
+
}
|
|
10861
12353
|
@case ('link') {
|
|
10862
12354
|
<label>
|
|
10863
12355
|
<span>{{ tx('editor.field.label', 'Label') }}</span>
|
|
@@ -10908,6 +12400,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10908
12400
|
(ngModelChange)="setStringField($index, 'label', $event)"
|
|
10909
12401
|
/>
|
|
10910
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>
|
|
10911
12411
|
<label>
|
|
10912
12412
|
<span>{{ tx('editor.field.valueExpr', 'Value binding') }}</span>
|
|
10913
12413
|
<input
|
|
@@ -10949,6 +12449,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
10949
12449
|
(ngModelChange)="setNumberField($index, 'max', $event)"
|
|
10950
12450
|
/>
|
|
10951
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>
|
|
10952
12460
|
}
|
|
10953
12461
|
@case ('actionButton') {
|
|
10954
12462
|
<label>
|
|
@@ -11044,6 +12552,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11044
12552
|
<option value="xl">xl</option>
|
|
11045
12553
|
</select>
|
|
11046
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>
|
|
11047
12563
|
<div class="prx-rich-editor__nested-editor">
|
|
11048
12564
|
<header class="prx-rich-editor__nested-header">
|
|
11049
12565
|
<h5>{{ tx('editor.composeItems', 'Compose items') }}</h5>
|
|
@@ -11101,6 +12617,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11101
12617
|
(ngModelChange)="setStringField($index, 'title', $event)"
|
|
11102
12618
|
/>
|
|
11103
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>
|
|
11104
12628
|
<label>
|
|
11105
12629
|
<span>{{ tx('editor.field.subtitle', 'Subtitle') }}</span>
|
|
11106
12630
|
<input
|
|
@@ -11108,6 +12632,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11108
12632
|
(ngModelChange)="setStringField($index, 'subtitle', $event)"
|
|
11109
12633
|
/>
|
|
11110
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>
|
|
11111
12643
|
<label>
|
|
11112
12644
|
<span>{{ tx('editor.field.variant', 'Variant') }}</span>
|
|
11113
12645
|
<select
|
|
@@ -11145,6 +12677,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11145
12677
|
<option value="lg">{{ tx('editor.size.lg', 'Large') }}</option>
|
|
11146
12678
|
</select>
|
|
11147
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>
|
|
11148
12690
|
<label>
|
|
11149
12691
|
<span>{{ tx('editor.field.orientation', 'Orientation') }}</span>
|
|
11150
12692
|
<select
|
|
@@ -11155,6 +12697,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11155
12697
|
<option value="horizontal">{{ tx('editor.orientation.horizontal', 'Horizontal') }}</option>
|
|
11156
12698
|
</select>
|
|
11157
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>
|
|
11158
12732
|
<label>
|
|
11159
12733
|
<span>{{ tx('editor.field.mediaKind', 'Media') }}</span>
|
|
11160
12734
|
<select
|
|
@@ -11176,6 +12750,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11176
12750
|
(ngModelChange)="setCardMediaField(nodeIndex, 'src', $event)"
|
|
11177
12751
|
/>
|
|
11178
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>
|
|
11179
12761
|
<label>
|
|
11180
12762
|
<span>{{ tx('editor.field.mediaAlt', 'Media alt text') }}</span>
|
|
11181
12763
|
<input
|
|
@@ -11183,6 +12765,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11183
12765
|
(ngModelChange)="setCardMediaField(nodeIndex, 'alt', $event)"
|
|
11184
12766
|
/>
|
|
11185
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>
|
|
11186
12776
|
<label>
|
|
11187
12777
|
<span>{{ tx('editor.field.mediaIcon', 'Media icon') }}</span>
|
|
11188
12778
|
<input
|
|
@@ -11190,6 +12780,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11190
12780
|
(ngModelChange)="setCardMediaField(nodeIndex, 'icon', $event)"
|
|
11191
12781
|
/>
|
|
11192
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>
|
|
11193
12806
|
<label>
|
|
11194
12807
|
<span>{{ tx('editor.field.mediaPlacement', 'Media placement') }}</span>
|
|
11195
12808
|
<select
|
|
@@ -11203,6 +12816,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11203
12816
|
</select>
|
|
11204
12817
|
</label>
|
|
11205
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>
|
|
11206
12889
|
<div class="prx-rich-editor__nested-editor">
|
|
11207
12890
|
<header class="prx-rich-editor__nested-header">
|
|
11208
12891
|
<h5>{{ tx('editor.cardContent', 'Card body') }}</h5>
|
|
@@ -11648,6 +13331,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11648
13331
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'label', $event)"
|
|
11649
13332
|
/>
|
|
11650
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>
|
|
11651
13342
|
<label>
|
|
11652
13343
|
<span>{{ tx('editor.field.icon', 'Icon') }}</span>
|
|
11653
13344
|
<input
|
|
@@ -11662,6 +13353,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
11662
13353
|
(ngModelChange)="setTabsItemField(nodeIndex, $index, 'badge', $event)"
|
|
11663
13354
|
/>
|
|
11664
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>
|
|
11665
13398
|
</div>
|
|
11666
13399
|
}
|
|
11667
13400
|
</div>
|
|
@@ -13052,97 +14785,216 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13052
14785
|
</p>
|
|
13053
14786
|
}
|
|
13054
14787
|
}
|
|
13055
|
-
<
|
|
13056
|
-
|
|
13057
|
-
|
|
13058
|
-
|
|
13059
|
-
|
|
13060
|
-
|
|
13061
|
-
|
|
13062
|
-
|
|
13063
|
-
|
|
13064
|
-
|
|
13065
|
-
|
|
13066
|
-
|
|
13067
|
-
|
|
13068
|
-
|
|
13069
|
-
|
|
13070
|
-
|
|
13071
|
-
/>
|
|
13072
|
-
</label>
|
|
13073
|
-
<label>
|
|
13074
|
-
<span>{{ tx('editor.field.requiresCapabilities', 'Capabilities') }}</span>
|
|
13075
|
-
<input
|
|
13076
|
-
[ngModel]="getCapabilityList(node)"
|
|
13077
|
-
(ngModelChange)="setCapabilityList($index, $event)"
|
|
13078
|
-
[placeholder]="tx('editor.placeholder.requiresCapabilities', 'form.mode.edit, employee.open')"
|
|
13079
|
-
/>
|
|
13080
|
-
</label>
|
|
13081
|
-
<label>
|
|
13082
|
-
<span>{{ tx('editor.field.capabilityMode', 'Capability mode') }}</span>
|
|
13083
|
-
<select
|
|
13084
|
-
[ngModel]="getStringField(node, 'capabilityMode') || 'all'"
|
|
13085
|
-
(ngModelChange)="setStringField($index, 'capabilityMode', $event)"
|
|
13086
|
-
>
|
|
13087
|
-
<option value="all">{{ tx('editor.capabilityMode.all', 'All') }}</option>
|
|
13088
|
-
<option value="any">{{ tx('editor.capabilityMode.any', 'Any') }}</option>
|
|
13089
|
-
</select>
|
|
13090
|
-
</label>
|
|
13091
|
-
</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>
|
|
13092
14804
|
|
|
13093
|
-
|
|
13094
|
-
|
|
13095
|
-
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13102
|
-
|
|
13103
|
-
|
|
13104
|
-
|
|
13105
|
-
|
|
13106
|
-
|
|
13107
|
-
|
|
13108
|
-
|
|
13109
|
-
|
|
13110
|
-
|
|
13111
|
-
|
|
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>
|
|
13112
14842
|
|
|
13113
|
-
|
|
13114
|
-
|
|
13115
|
-
|
|
13116
|
-
|
|
13117
|
-
|
|
13118
|
-
|
|
13119
|
-
|
|
13120
|
-
|
|
13121
|
-
|
|
13122
|
-
|
|
13123
|
-
|
|
13124
|
-
|
|
13125
|
-
|
|
13126
|
-
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
|
|
13130
|
-
|
|
13131
|
-
|
|
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>
|
|
13132
14930
|
</div>
|
|
13133
14931
|
</article>
|
|
14932
|
+
}
|
|
13134
14933
|
}
|
|
13135
14934
|
</div>
|
|
14935
|
+
</div>
|
|
14936
|
+
</div>
|
|
13136
14937
|
} @else {
|
|
13137
14938
|
<p class="prx-rich-editor__empty">
|
|
13138
14939
|
{{ tx('editor.noBlocks', 'No blocks yet. Add a block to start authoring this document.') }}
|
|
13139
14940
|
</p>
|
|
13140
14941
|
}
|
|
13141
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
|
+
}
|
|
13142
14979
|
|
|
13143
|
-
|
|
13144
|
-
|
|
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>
|
|
13145
14995
|
<div class="prx-rich-editor__workbench">
|
|
14996
|
+
<label class="prx-rich-editor__document">
|
|
14997
|
+
<span>{{ tx('editor.documentJson', 'Canonical document JSON') }}</span>
|
|
13146
14998
|
<textarea
|
|
13147
14999
|
name="rich-content-document"
|
|
13148
15000
|
[(ngModel)]="documentJson"
|
|
@@ -13156,6 +15008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13156
15008
|
spellcheck="false"
|
|
13157
15009
|
data-testid="rich-content-document-input"
|
|
13158
15010
|
></textarea>
|
|
15011
|
+
</label>
|
|
13159
15012
|
|
|
13160
15013
|
<aside
|
|
13161
15014
|
class="prx-rich-editor__inspector"
|
|
@@ -13175,21 +15028,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13175
15028
|
</dl>
|
|
13176
15029
|
</section>
|
|
13177
15030
|
|
|
13178
|
-
@if (parsedDocument) {
|
|
13179
|
-
<section>
|
|
13180
|
-
<h3>{{ tx('editor.preview', 'Preview') }}</h3>
|
|
13181
|
-
<div class="prx-rich-editor__preview">
|
|
13182
|
-
<praxis-rich-content
|
|
13183
|
-
[document]="parsedDocument"
|
|
13184
|
-
[layout]="layout"
|
|
13185
|
-
[rootClassName]="rootClassName"
|
|
13186
|
-
></praxis-rich-content>
|
|
13187
|
-
</div>
|
|
13188
|
-
</section>
|
|
13189
|
-
}
|
|
13190
15031
|
</aside>
|
|
13191
15032
|
</div>
|
|
13192
|
-
</
|
|
15033
|
+
</section>
|
|
13193
15034
|
|
|
13194
15035
|
@if (errorMessage) {
|
|
13195
15036
|
<div
|
|
@@ -13219,6 +15060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13219
15060
|
}}
|
|
13220
15061
|
</p>
|
|
13221
15062
|
}
|
|
15063
|
+
}
|
|
13222
15064
|
|
|
13223
15065
|
<div class="prx-rich-editor__actions">
|
|
13224
15066
|
<button type="button" (click)="reset()">
|
|
@@ -13229,10 +15071,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13229
15071
|
</button>
|
|
13230
15072
|
</div>
|
|
13231
15073
|
</section>
|
|
13232
|
-
`, 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"] }]
|
|
13233
15075
|
}], propDecorators: { inputs: [{
|
|
13234
15076
|
type: Input
|
|
13235
15077
|
}] } });
|
|
15078
|
+
function isPlainRecord(value) {
|
|
15079
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
15080
|
+
}
|
|
13236
15081
|
|
|
13237
15082
|
const DEFAULT_RICH_CONTENT_DOCUMENT = {
|
|
13238
15083
|
kind: 'praxis.rich-content',
|
|
@@ -16373,6 +18218,188 @@ const RICH_CONTENT_INSERTION_PRESETS = [
|
|
|
16373
18218
|
},
|
|
16374
18219
|
},
|
|
16375
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
|
+
},
|
|
16376
18403
|
{
|
|
16377
18404
|
id: 'stat-group',
|
|
16378
18405
|
label: 'Stat group',
|