@praxisui/list 9.0.0-beta.76 → 9.0.0-beta.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +175 -15
- package/package.json +6 -6
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-19T03:55:15.480Z",
|
|
4
4
|
"packageName": "@praxisui/list",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.78",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -6675,49 +6675,209 @@
|
|
|
6675
6675
|
{
|
|
6676
6676
|
"chunkIndex": 1,
|
|
6677
6677
|
"chunkKind": "capabilities",
|
|
6678
|
-
"content": "Component Capabilities:\n - Path: id\n Category: meta\n Kind: string\n Description: List id (used by persistence and editor).\n - Path: dataSource\n Category: data\n Kind: object\n Description: Local or remote data source.\n - Path: dataSource.data\n Category: data\n Kind: array\n Description: Local data array.\n - Path: dataSource.resourcePath\n Category: data\n Kind: string\n Description: Remote resource path for GenericCrudService.\n - Path: dataSource.query\n Category: data\n Kind: object\n Description: Initial query sent to /filter.\n - Path: dataSource.sort\n Category: data\n Kind: array\n Description: Initial sort array (ex.: [\"name,asc\"]).\n - Path: dataSource.sort[]\n Category: data\n Kind: string\n Description: Single sort entry (field,dir).\n - Path: layout\n Category: layout\n Kind: object\n Description: Layout settings.\n - Path: layout.variant\n Category: layout\n Kind: enum\n Description: Layout variant.\n - Path: layout.density\n Category: layout\n Kind: enum\n Description: Layout density.\n - Path: layout.itemSpacing\n Category: layout\n Kind: enum\n Description: Spacing between rendered items.\n - Path: layout.lines\n Category: layout\n Kind: enum\n Description: Number of visible lines.\n - Path: layout.dividers\n Category: layout\n Kind: enum\n Description: Dividers between items.\n - Path: layout.model\n Category: layout\n Kind: enum\n Description: Visual model for items.\n - Path: layout.groupBy\n Category: layout\n Kind: string\n Description: Field name for grouping.\n - Path: layout.stickySectionHeader\n Category: layout\n Kind: boolean\n Description: Sticky section header.\n - Path: layout.virtualScroll\n Category: layout\n Kind: boolean\n Description: Enable virtual scroll (when supported).\n - Path: layout.pageSize\n Category: layout\n Kind: number\n Description: Remote page size.\n - Path: layout.rowLayout\n Category: layout\n Kind: object\n Description: Row layout grid/flex configuration for list variant.\n - Path: layout.rowLayout.type\n Category: layout\n Kind: enum\n Description: Row layout rendering type.\n - Path: layout.rowLayout.columns\n Category: layout\n Kind: array\n Description: Stable row layout columns.\n - Path: layout.rowLayout.columns[].slot\n Category: layout\n Kind: enum\n Description: Runtime-supported row layout slot.\n - Path: layout.rowLayout.columns[].width\n Category: layout\n Kind: string\n Description: CSS width for a row layout column.\n - Path: layout.rowLayout.columns[].minWidth\n Category: layout\n Kind: string\n Description: Minimum CSS width for a row layout column.\n - Path: layout.rowLayout.columns[].maxWidth\n Category: layout\n Kind: string\n Description: Maximum CSS width for a row layout column.\n - Path: layout.rowLayout.columns[].align\n Category: layout\n Kind: enum\n Description: Column content alignment.\n - Path: layout.rowLayout.columns[].justify\n Category: layout\n Kind: enum\n Description: Column grid justification.\n - Path: layout.rowLayout.columns[].class\n Category: layout\n Kind: string\n Description: CSS class for a row layout column.\n - Path: layout.rowLayout.columns[].style\n Category: layout\n Kind: string\n Description: Inline style for a row layout column.\n - Path: layout.rowLayout.gap\n Category: layout\n Kind: string\n Description: Gap between row layout columns.\n - Path: layout.rowLayout.align\n Category: layout\n Kind: enum\n Description: Vertical alignment for the row layout.\n - Path: layout.rowLayout.itemAlignY\n Category: layout\n Kind: enum\n Description: Alias for row vertical alignment.\n - Path: layout.rowLayout.class\n Category: layout\n Kind: string\n Description: CSS class for row layout content.\n - Path: layout.rowLayout.style\n Category: layout\n Kind: string\n Description: Inline style for row layout content.\n - Path: skin\n Category: skin\n Kind: object\n Description: Skin settings.\n - Path: skin.type\n Category: skin\n Kind: enum\n Description: Skin type.\n - Path: skin.gradient\n Category: skin\n Kind: object\n Description: Gradient options.\n - Path: skin.gradient.from\n Category: skin\n Kind: string\n Description: Gradient start color.\n - Path: skin.gradient.to\n Category: skin\n Kind: string\n Description: Gradient end color.\n - Path: skin.gradient.angle\n Category: skin\n Kind: number\n Description: Gradient angle in degrees.\n - Path: skin.radius\n Category: skin\n Kind: string\n Description: Border radius.\n - Path: skin.shadow\n Category: skin\n Kind: string\n Description: Box shadow.\n - Path: skin.border\n Category: skin\n Kind: string\n Description: Border style.\n - Path: skin.backdropBlur\n Category: skin\n Kind: string\n Description: Backdrop blur (glass).\n - Path: skin.class\n Category: skin\n Kind: string\n Description: Custom CSS class.\n - Path: skin.inlineStyle\n Category: skin\n Kind: string\n Description: Inline CSS (sanitized).\n - Path: selection\n Category: selection\n Kind: object\n Description: Selection settings.\n - Path: selection.mode\n Category: selection\n Kind: enum\n Description: Selection mode.\n - Path: selection.formControlName\n Category: selection\n Kind: string\n Description: FormControl name for binding.\n - Path: selection.formControlPath\n Category: selection\n Kind: string\n Description: FormControl path for binding.\n - Path: selection.compareBy\n Category: selection\n Kind: string\n Description: Field used to compare selections.\n - Path: selection.return\n Category: selection\n Kind: enum\n Description: Selection return payload.\n - Path: export\n Category: export\n Kind: object\n Description: Collection export configuration.\n - Path: export.enabled\n Category: export\n Kind: boolean\n Description: Show export actions for the list.\n - Path: export.formats\n Category: export\n Kind: array\n Description: Allowed export formats.\n - Path: export.formats[]\n Category: export\n Kind: enum\n Description: Single export format.\n - Path: export.general.scope\n Category: export\n Kind: enum\n Description: Collection export scope.\n - Path: export.general.includeHeaders\n Category: export\n Kind: boolean\n Description: Include header row for tabular exports.\n - Path: export.general.maxRows\n Category: export\n Kind: number\n Description: Maximum rows to include in local export.\n - Path: export.general.defaultFileName\n Category: export\n Kind: string\n Description: Default export file name.\n - Path: export.general.includeFields\n Category: export\n Kind: array\n Description: Field paths to include, or \"all\" for inferred object keys.\n - Path: export.general.applyFormatting\n Category: export\n Kind: boolean\n Description: Apply configured field formatting when available.\n - Path: interaction\n Category: interaction\n Kind: object\n Description: Expandable row interaction settings.\n - Path: interaction.expandable\n Category: interaction\n Kind: boolean\n Description: Enable inline row expansion.\n - Path: interaction.expandTrigger\n Category: interaction\n Kind: enum\n Description: How expansion is triggered.\n - Path: interaction.expandMode\n Category: interaction\n Kind: enum\n Description: Whether one or many rows may be expanded.\n - Path: interaction.expandPlacement\n Category: interaction\n Kind: enum\n Description: Where the expansion control is rendered.\n - Path: templating\n Category: templating\n Kind: object\n Description: Templating settings.\n - Path: templating.metaPlacement\n Category: templating\n Kind: enum\n Description: Meta placement in list variant.\n - Path: templating.metaPrefixIcon\n Category: templating\n Kind: string\n Description: Prefix icon for meta.\n - Path: templating.statusPosition\n Category: templating\n Kind: enum\n Description: Status position in cards/tiles.\n - Path: templating.chipColorMap\n Category: templating\n Kind: object\n Description: Map value -> chip color.\n - Path: templating.chipLabelMap\n Category: templating\n Kind: object\n Description: Map value -> label.\n - Path: templating.iconColorMap\n Category: templating\n Kind: object\n Description: Map value/icon -> color.\n - Path: templating.features\n Category: templating\n Kind: array\n Description: Extra feature line entries.\n - Path: templating.features[].icon\n Category: templating\n Kind: string\n Description: Feature icon.\n - Path: templating.features[].expr\n Category: templating\n Kind: expression\n Description: Templating expression for feature label; not Json Logic.\n - Path: templating.features[].class\n Category: templating\n Kind: string\n Description: Feature CSS class.\n - Path: templating.features[].style\n Category: templating\n Kind: string\n Description: Feature inline CSS.\n - Path: templating.featuresVisible\n Category: templating\n Kind: boolean\n Description: Show features line.\n - Path: templating.featuresMode\n Category: templating\n Kind: enum\n Description: Features render mode.\n - Path: templating.skeleton\n Category: templating\n Kind: object\n Description: Skeleton loading config.\n - Path: templating.skeleton.count\n Category: templating\n Kind: number\n Description: Skeleton items count.\n - Path: actions\n Category: actions\n Kind: array\n Description: Item actions array.\n - Path: actions[]\n Category: actions\n Kind: object\n Description: Single item action entry.\n - Path: actions[].id\n Category: actions\n Kind: string\n Description: Action id.\n - Path: actions[].icon\n Category: actions\n Kind: string\n Description: Action icon.\n - Path: actions[].label\n Category: actions\n Kind: string\n Description: Action label.\n - Path: actions[].color\n Category: actions\n Kind: string\n Description: Action color.\n - Path: actions[].kind\n Category: actions\n Kind: enum\n Description: Action render kind.\n - Path: actions[].buttonVariant\n Category: actions\n Kind: enum\n Description: Action button variant.\n - Path: actions[].showIf\n Category: actions\n Kind: expression\n Description: Json Logic visibility condition for the current row.\n - Path: actions[].globalAction.[actionId]\n Category: actions\n Kind: string\n Description: Canonical global app action id (ex.: \"toast.success\" ou \"navigation.openRoute\").\n - Path: actions[].globalAction.payload\n Category: actions\n Kind: object\n Description: Structured payload for the global app action (JSON/template), including internal route payloads resolved from item context.\n - Path: actions[].globalAction.payloadExpr\n Category: actions\n Kind: expression\n Description: Advanced payload expression for the global app action when structured payload is not authored.\n - Path: actions[].emitLocal\n Category: actions\n Kind: boolean\n Description: Emit local actionClick even when globalAction is set.\n - Path: actions[].showLoading\n Category: actions\n Kind: boolean\n Description: Show loading state while a global action executes.\n - Path: actions[].placement\n Category: actions\n Kind: enum\n Description: Action placement in row layout actions or trailing slot.\n - Path: actions[].confirmation\n Category: actions\n Kind: object\n Description: Confirmation prompt before executing the action.\n - Path: actions[].confirmation.title\n Category: actions\n Kind: string\n Description: Confirmation title.\n - Path: actions[].confirmation.message\n Category: actions\n Kind: string\n Description: Confirmation message.\n - Path: actions[].confirmation.type\n Category: actions\n Kind: enum\n Description: Confirmation severity.\n - Path: rules\n Category: rules\n Kind: object\n Description: Conditional list item styling and slot override rules.\n - Path: rules.itemStyles\n Category: rules\n Kind: array\n Description: Conditional item style rules.\n - Path: rules.itemStyles[].id\n Category: rules\n Kind: string\n Description: Stable item style rule id.\n - Path: rules.itemStyles[].condition\n Category: rules\n Kind: expression\n Description: Json Logic condition in row context.\n - Path: rules.itemStyles[].class\n Category: rules\n Kind: string\n Description: CSS class applied when the rule matches.\n - Path: rules.itemStyles[].style\n Category: rules\n Kind: string\n Description: Inline style applied when the rule matches.\n - Path: rules.itemStyles[].border\n Category: rules\n Kind: string\n Description: Border style override applied when the rule matches.\n - Path: rules.itemStyles[].background\n Category: rules\n Kind: string\n Description: Background style override applied when the rule matches.\n - Path: rules.itemStyles[].effects\n Category: rules\n Kind: array\n Description: Canonical conditional effect array aligned with PraxisRuntimeConditionalEffectRule<ListItemStyleEffect>.\n - Path: rules.itemStyles[].effects[].kind\n Category: rules\n Kind: enum\n Description: Discriminator for list item style effects.\n - Path: rules.slotOverrides\n Category: rules\n Kind: array\n Description: Conditional slot template override rules.\n - Path: rules.slotOverrides[].id\n Category: rules\n Kind: string\n Description: Stable slot override rule id.\n - Path: rules.slotOverrides[].slot\n Category: rules\n Kind: enum\n Description: Templating slot affected by the override.\n - Path: rules.slotOverrides[].condition\n Category: rules\n Kind: expression\n Description: Json Logic condition in row context.\n - Path: rules.slotOverrides[].template\n Category: rules\n Kind: object\n Description: Template override applied when the rule matches.\n - Path: rules.slotOverrides[].class\n Category: rules\n Kind: string\n Description: CSS class appended when the rule matches.\n - Path: rules.slotOverrides[].style\n Category: rules\n Kind: string\n Description: Inline style appended when the rule matches.\n - Path: rules.slotOverrides[].hide\n Category: rules\n Kind: boolean\n Description: Hide the slot when the rule matches.\n - Path: rules.slotOverrides[].effects\n Category: rules\n Kind: array\n Description: Canonical conditional effect array aligned with PraxisRuntimeConditionalEffectRule<ListSlotOverrideEffect>.\n - Path: rules.slotOverrides[].effects[].kind\n Category: rules\n Kind: enum\n Description: Discriminator for list slot override effects.\n - Path: expansion\n Category: expansion\n Kind: object\n Description: Inline expansion sections and remote detail contract.\n - Path: expansion.sections\n Category: expansion\n Kind: array\n Description: Expansion detail sections.\n - Path: expansion.sections[].id\n Category: expansion\n Kind: string\n Description: Stable expansion section id.\n - Path: expansion.sections[].title\n Category: expansion\n Kind: string\n Description: Expansion section title.\n - Path: expansion.sections[].type\n Category: expansion\n Kind: enum\n Description: Expansion section renderer type.\n - Path: expansion.sections[].itemsExpr\n Category: expansion\n Kind: expression\n Description: Expression used to resolve section items from the row.\n - Path: expansion.sections[].document\n Category: expansion\n Kind: object\n Description: Canonical RichContentDocument rendered when type=rich-content.\n - Path: expansion.sections[].documentExpr\n Category: expansion\n Kind: expression\n Description: Expression resolving to a RichContentDocument for type=rich-content.\n - Path: expansion.sections[].emptyLabel\n Category: expansion\n Kind: string\n Description: Empty label for an expansion section.\n - Path: expansion.sections[].metadata\n Category: expansion\n Kind: object\n Description: Metadata rendering options for metadata expansion sections.\n - Path: expansion.sections[].component\n Category: expansion\n Kind: object\n Description: Runtime component rendering options for component expansion sections.\n - Path: expansion.sections[].class\n Category: expansion\n Kind: string\n Description: CSS class for an expansion section.\n - Path: expansion.sections[].style\n Category: expansion\n Kind: string\n Description: Inline style for an expansion section.\n - Path: expansion.sections[].showIf\n Category: expansion\n Kind: expression\n Description: Json Logic visibility condition for an expansion section.\n - Path: expansion.dataSource\n Category: expansion\n Kind: object\n Description: Expansion detail data source.\n - Path: expansion.dataSource.mode\n Category: expansion\n Kind: enum\n Description: Expansion data source mode.\n - Path: expansion.dataSource.resource\n Category: expansion\n Kind: object\n Description: Canonical resource descriptor for expansion details.\n - Path: expansion.dataSource.resource.kind\n Category: expansion\n Kind: string\n Description: Canonical expansion resource kind.\n - Path: expansion.dataSource.resource.id\n Category: expansion\n Kind: string\n Description: Canonical expansion resource id.\n - Path: expansion.dataSource.resource.version\n Category: expansion\n Kind: string\n Description: Canonical expansion resource version.\n - Path: expansion.dataSource.resourcePath\n Category: expansion\n Kind: object\n Description: Dynamic resource path descriptor for expansion details.\n - Path: expansion.dataSource.resourcePath.path\n Category: expansion\n Kind: string\n Description: Expression-backed remote path for expansion details.\n - Path: expansion.dataSource.resourcePath.method\n Category: expansion\n Kind: enum\n Description: HTTP method for dynamic expansion resource path.\n - Path: expansion.dataSource.resourcePath.paramsMap\n Category: expansion\n Kind: object\n Description: Parameter map for dynamic expansion resource path.\n - Path: expansion.dataSource.resourceAllowList\n Category: expansion\n Kind: array\n Description: Allowlist for dynamic expansion resource paths.\n - Path: expansion.dataSource.fallbackMode\n Category: expansion\n Kind: enum\n Description: Fallback mode for expansion detail loading.\n - Path: expansion.dataSource.cache\n Category: expansion\n Kind: object\n Description: Expansion detail cache configuration.\n - Path: expansion.dataSource.cache.enabled\n Category: expansion\n Kind: boolean\n Description: Enable expansion detail cache.\n - Path: expansion.dataSource.cancelOnCollapse\n Category: expansion\n Kind: boolean\n Description: Cancel expansion detail loading when a row collapses.\n - Path: expansion.schemaContract\n Category: expansion\n Kind: object\n Description: Fail-closed schema contract for remote expansion details.\n - Path: expansion.schemaContract.kind\n Category: expansion\n Kind: string\n Description: Expansion schema contract kind.\n - Path: expansion.schemaContract.version\n Category: expansion\n Kind: string\n Description: Expansion schema contract version.\n - Path: expansion.schemaContract.allowedNodes\n Category: expansion\n Kind: array\n Description: Allowed remote expansion node types.\n - Path: expansion.schemaContract.maxSections\n Category: expansion\n Kind: number\n Description: Maximum number of remote expansion sections.\n - Path: expansion.schemaContract.maxItemsPerSection\n Category: expansion\n Kind: number\n Description: Maximum number of items per remote expansion section.\n - Path: expansion.schemaContract.requireSectionIds\n Category: expansion\n Kind: boolean\n Description: Require explicit ids for remote expansion sections.\n - Path: expansion.rendering\n Category: expansion\n Kind: object\n Description: Expansion shell rendering configuration.\n - Path: expansion.rendering.shell\n Category: expansion\n Kind: enum\n Description: Expansion shell attachment mode.\n - Path: expansion.rendering.columns\n Category: expansion\n Kind: enum\n Description: Expansion detail column count.\n - Path: expansion.rendering.gap\n Category: expansion\n Kind: string\n Description: Gap between expansion sections.\n - Path: expansion.rendering.padding\n Category: expansion\n Kind: string\n Description: Padding inside the expansion shell.\n - Path: expansion.rendering.class\n Category: expansion\n Kind: string\n Description: CSS class for the expansion shell.\n - Path: expansion.rendering.style\n Category: expansion\n Kind: string\n Description: Inline style for the expansion shell.\n - Path: expansion.rendering.loadingTemplate\n Category: expansion\n Kind: object\n Description: Template rendered while expansion detail loads.\n - Path: expansion.rendering.errorTemplate\n Category: expansion\n Kind: object\n Description: Template rendered when expansion detail loading fails.\n - Path: ui\n Category: ui\n Kind: object\n Description: Lightweight toolbar UI.\n - Path: ui.showSearch\n Category: ui\n Kind: boolean\n Description: Show search input.\n - Path: ui.searchField\n Category: ui\n Kind: string\n Description: Search field.\n - Path: ui.searchPlaceholder\n Category: ui\n Kind: string\n Description: Search placeholder.\n - Path: ui.showSort\n Category: ui\n Kind: boolean\n Description: Show sort selector.\n - Path: ui.sortOptions\n Category: ui\n Kind: array\n Description: Sort options (string or {label,value}).\n - Path: ui.sortOptions[].label\n Category: ui\n Kind: string\n Description: Sort option label.\n - Path: ui.sortOptions[].value\n Category: ui\n Kind: string\n Description: Sort option value.\n - Path: ui.showRange\n Category: ui\n Kind: boolean\n Description: Show range in footer.\n - Path: i18n\n Category: i18n\n Kind: object\n Description: i18n map.\n - Path: i18n.locale\n Category: i18n\n Kind: string\n Description: Locale (ex.: pt-BR).\n - Path: i18n.currency\n Category: i18n\n Kind: string\n Description: Currency code (ex.: BRL).\n - Path: i18n.localization\n Category: i18n\n Kind: object\n Description: Core localization defaults reused by list template pipes.\n - Path: a11y\n Category: a11y\n Kind: object\n Description: Accessibility settings.\n - Path: a11y.ariaLabel\n Category: a11y\n Kind: string\n Description: aria-label for container.\n - Path: a11y.ariaLabelledBy\n Category: a11y\n Kind: string\n Description: aria-labelledby for container.\n - Path: a11y.highContrast\n Category: a11y\n Kind: boolean\n Description: High contrast mode.\n - Path: a11y.reduceMotion\n Category: a11y\n Kind: boolean\n Description: Reduce motion.\n - Path: events\n Category: events\n Kind: object\n Description: Event mappings.\n - Path: events.itemClick\n Category: events\n Kind: string\n Description: Mapped itemClick event name.\n - Path: events.actionClick\n Category: events\n Kind: string\n Description: Mapped actionClick event name.\n - Path: events.selectionChange\n Category: events\n Kind: string\n Description: Mapped selectionChange event name.\n - Path: events.exportAction\n Category: events\n Kind: string\n Description: Mapped exportAction event name.\n - Path: events.loaded\n Category: events\n Kind: string\n Description: Mapped loaded event name.\nCapability Notes:\n - Template expressions support only ${item.path} and simple pipes: bool/date/map/number.\n - Taxonomia editorial: templating.*.expr continua no dominio de template; conditions booleanas de acoes, rules e expansion usam Json Logic canonico.\n - actions[].showIf uses Json Logic, for example {\"==\":[{\"var\":\"row.status\"},\"done\"]}.\n - Arrays should be merged by id/expr to avoid replacing existing items.\n - dataSource.data overrides resourcePath when provided.\n - layout.variant supports list, cards and tiles.\n - Colors accept theme tokens (primary/accent/warn), M3 tokens (var(--md-sys-color-*)), or custom CSS colors.\n",
|
|
6678
|
+
"content": "Component Capability:\n - Path: id\n Category: meta\n Kind: string\n Description: List id (used by persistence and editor).\n\nComponent Capability:\n - Path: dataSource\n Category: data\n Kind: object\n Description: Local or remote data source.\n\nComponent Capability:\n - Path: dataSource.data\n Category: data\n Kind: array\n Description: Local data array.\n\nComponent Capability:\n - Path: dataSource.resourcePath\n Category: data\n Kind: string\n Description: Remote resource path for GenericCrudService.\n\nComponent Capability:\n - Path: dataSource.query\n Category: data\n Kind: object\n Description: Initial query sent to /filter.\n\nComponent Capability:\n - Path: dataSource.sort\n Category: data\n Kind: array\n Description: Initial sort array (ex.: [\"name,asc\"]).\n\nComponent Capability:\n - Path: dataSource.sort[]\n Category: data\n Kind: string\n Description: Single sort entry (field,dir).\n\nComponent Capability:\n - Path: layout\n Category: layout\n Kind: object\n Description: Layout settings.\n\nComponent Capability:\n - Path: layout.variant\n Category: layout\n Kind: enum\n Description: Layout variant.\n\nComponent Capability:\n - Path: layout.density\n Category: layout\n Kind: enum\n Description: Layout density.\n\nComponent Capability:\n - Path: layout.itemSpacing\n Category: layout\n Kind: enum\n Description: Spacing between rendered items.\n\nComponent Capability:\n - Path: layout.lines\n Category: layout\n Kind: enum\n Description: Number of visible lines.\n\nComponent Capability:\n - Path: layout.dividers\n Category: layout\n Kind: enum\n Description: Dividers between items.\n\nComponent Capability:\n - Path: layout.model\n Category: layout\n Kind: enum\n Description: Visual model for items.\n\nComponent Capability:\n - Path: layout.groupBy\n Category: layout\n Kind: string\n Description: Field name for grouping.\n\nComponent Capability:\n - Path: layout.stickySectionHeader\n Category: layout\n Kind: boolean\n Description: Sticky section header.\n\nComponent Capability:\n - Path: layout.virtualScroll\n Category: layout\n Kind: boolean\n Description: Enable virtual scroll (when supported).\n\nComponent Capability:\n - Path: layout.pageSize\n Category: layout\n Kind: number\n Description: Remote page size.\n\nComponent Capability:\n - Path: layout.rowLayout\n Category: layout\n Kind: object\n Description: Row layout grid/flex configuration for list variant.\n\nComponent Capability:\n - Path: layout.rowLayout.type\n Category: layout\n Kind: enum\n Description: Row layout rendering type.\n\nComponent Capability:\n - Path: layout.rowLayout.columns\n Category: layout\n Kind: array\n Description: Stable row layout columns.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].slot\n Category: layout\n Kind: enum\n Description: Runtime-supported row layout slot.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].width\n Category: layout\n Kind: string\n Description: CSS width for a row layout column.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].minWidth\n Category: layout\n Kind: string\n Description: Minimum CSS width for a row layout column.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].maxWidth\n Category: layout\n Kind: string\n Description: Maximum CSS width for a row layout column.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].align\n Category: layout\n Kind: enum\n Description: Column content alignment.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].justify\n Category: layout\n Kind: enum\n Description: Column grid justification.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].class\n Category: layout\n Kind: string\n Description: CSS class for a row layout column.\n\nComponent Capability:\n - Path: layout.rowLayout.columns[].style\n Category: layout\n Kind: string\n Description: Inline style for a row layout column.\n\nComponent Capability:\n - Path: layout.rowLayout.gap\n Category: layout\n Kind: string\n Description: Gap between row layout columns.\n\nComponent Capability:\n - Path: layout.rowLayout.align\n Category: layout\n Kind: enum\n Description: Vertical alignment for the row layout.\n\nComponent Capability:\n - Path: layout.rowLayout.itemAlignY\n Category: layout\n Kind: enum\n Description: Alias for row vertical alignment.\n\nComponent Capability:\n - Path: layout.rowLayout.class\n Category: layout\n Kind: string\n Description: CSS class for row layout content.\n\nComponent Capability:\n - Path: layout.rowLayout.style\n Category: layout\n Kind: string\n Description: Inline style for row layout content.\n\nComponent Capability:\n - Path: skin\n Category: skin\n Kind: object\n Description: Skin settings.\n\nComponent Capability:\n - Path: skin.type\n Category: skin\n Kind: enum\n Description: Skin type.\n\nComponent Capability:\n - Path: skin.gradient\n Category: skin\n Kind: object\n Description: Gradient options.\n\nComponent Capability:\n - Path: skin.gradient.from\n Category: skin\n Kind: string\n Description: Gradient start color.\n\nComponent Capability:\n - Path: skin.gradient.to\n Category: skin\n Kind: string\n Description: Gradient end color.\n\nComponent Capability:\n - Path: skin.gradient.angle\n Category: skin\n Kind: number\n Description: Gradient angle in degrees.\n\nComponent Capability:\n - Path: skin.radius\n Category: skin\n Kind: string\n Description: Border radius.\n\nComponent Capability:\n - Path: skin.shadow\n Category: skin\n Kind: string\n Description: Box shadow.\n\nComponent Capability:\n - Path: skin.border\n Category: skin\n Kind: string\n Description: Border style.\n\nComponent Capability:\n - Path: skin.backdropBlur\n Category: skin\n Kind: string\n Description: Backdrop blur (glass).\n\nComponent Capability:\n - Path: skin.class\n Category: skin\n Kind: string\n Description: Custom CSS class.\n\nComponent Capability:\n - Path: skin.inlineStyle\n Category: skin\n Kind: string\n Description: Inline CSS (sanitized).\n\nComponent Capability:\n - Path: selection\n Category: selection\n Kind: object\n Description: Selection settings.\n\nComponent Capability:\n - Path: selection.mode\n Category: selection\n Kind: enum\n Description: Selection mode.\n\nComponent Capability:\n - Path: selection.formControlName\n Category: selection\n Kind: string\n Description: FormControl name for binding.\n\nComponent Capability:\n - Path: selection.formControlPath\n Category: selection\n Kind: string\n Description: FormControl path for binding.\n\nComponent Capability:\n - Path: selection.compareBy\n Category: selection\n Kind: string\n Description: Field used to compare selections.\n\nComponent Capability:\n - Path: selection.return\n Category: selection\n Kind: enum\n Description: Selection return payload.\n\nComponent Capability:\n - Path: export\n Category: export\n Kind: object\n Description: Collection export configuration.\n\nComponent Capability:\n - Path: export.enabled\n Category: export\n Kind: boolean\n Description: Show export actions for the list.\n\nComponent Capability:\n - Path: export.formats\n Category: export\n Kind: array\n Description: Allowed export formats.\n\nComponent Capability:\n - Path: export.formats[]\n Category: export\n Kind: enum\n Description: Single export format.\n\nComponent Capability:\n - Path: export.general.scope\n Category: export\n Kind: enum\n Description: Collection export scope.\n\nComponent Capability:\n - Path: export.general.includeHeaders\n Category: export\n Kind: boolean\n Description: Include header row for tabular exports.\n\nComponent Capability:\n - Path: export.general.maxRows\n Category: export\n Kind: number\n Description: Maximum rows to include in local export.",
|
|
6679
6679
|
"sourcePointer": "projects/praxis-list/src/lib/ai/list-ai-capabilities.ts",
|
|
6680
|
-
"contentHash": "
|
|
6680
|
+
"contentHash": "282aa9c1a7dcf19e115f89807cc0ad13b835fba018d672cc8e8d286b9b0ef708",
|
|
6681
6681
|
"sourceKind": "component_definition",
|
|
6682
6682
|
"sourceId": "praxis-list",
|
|
6683
6683
|
"corpusVersion": "1.0.0"
|
|
6684
6684
|
},
|
|
6685
6685
|
{
|
|
6686
6686
|
"chunkIndex": 2,
|
|
6687
|
+
"chunkKind": "capabilities",
|
|
6688
|
+
"content": "Component Capability:\n - Path: export.general.defaultFileName\n Category: export\n Kind: string\n Description: Default export file name.\n\nComponent Capability:\n - Path: export.general.includeFields\n Category: export\n Kind: array\n Description: Field paths to include, or \"all\" for inferred object keys.\n\nComponent Capability:\n - Path: export.general.applyFormatting\n Category: export\n Kind: boolean\n Description: Apply configured field formatting when available.\n\nComponent Capability:\n - Path: interaction\n Category: interaction\n Kind: object\n Description: Expandable row interaction settings.\n\nComponent Capability:\n - Path: interaction.expandable\n Category: interaction\n Kind: boolean\n Description: Enable inline row expansion.\n\nComponent Capability:\n - Path: interaction.expandTrigger\n Category: interaction\n Kind: enum\n Description: How expansion is triggered.\n\nComponent Capability:\n - Path: interaction.expandMode\n Category: interaction\n Kind: enum\n Description: Whether one or many rows may be expanded.\n\nComponent Capability:\n - Path: interaction.expandPlacement\n Category: interaction\n Kind: enum\n Description: Where the expansion control is rendered.\n\nComponent Capability:\n - Path: templating\n Category: templating\n Kind: object\n Description: Templating settings.\n\nComponent Capability:\n - Path: templating.metaPlacement\n Category: templating\n Kind: enum\n Description: Meta placement in list variant.\n\nComponent Capability:\n - Path: templating.metaPrefixIcon\n Category: templating\n Kind: string\n Description: Prefix icon for meta.\n\nComponent Capability:\n - Path: templating.statusPosition\n Category: templating\n Kind: enum\n Description: Status position in cards/tiles.\n\nComponent Capability:\n - Path: templating.chipColorMap\n Category: templating\n Kind: object\n Description: Map value -> chip color.\n\nComponent Capability:\n - Path: templating.chipLabelMap\n Category: templating\n Kind: object\n Description: Map value -> label.\n\nComponent Capability:\n - Path: templating.iconColorMap\n Category: templating\n Kind: object\n Description: Map value/icon -> color.\n\nComponent Capability:\n - Path: templating.features\n Category: templating\n Kind: array\n Description: Extra feature line entries.\n\nComponent Capability:\n - Path: templating.features[].icon\n Category: templating\n Kind: string\n Description: Feature icon.\n\nComponent Capability:\n - Path: templating.features[].expr\n Category: templating\n Kind: expression\n Description: Templating expression for feature label; not Json Logic.\n\nComponent Capability:\n - Path: templating.features[].class\n Category: templating\n Kind: string\n Description: Feature CSS class.\n\nComponent Capability:\n - Path: templating.features[].style\n Category: templating\n Kind: string\n Description: Feature inline CSS.\n\nComponent Capability:\n - Path: templating.featuresVisible\n Category: templating\n Kind: boolean\n Description: Show features line.\n\nComponent Capability:\n - Path: templating.featuresMode\n Category: templating\n Kind: enum\n Description: Features render mode.\n\nComponent Capability:\n - Path: templating.skeleton\n Category: templating\n Kind: object\n Description: Skeleton loading config.\n\nComponent Capability:\n - Path: templating.skeleton.count\n Category: templating\n Kind: number\n Description: Skeleton items count.\n\nComponent Capability:\n - Path: actions\n Category: actions\n Kind: array\n Description: Item actions array.\n\nComponent Capability:\n - Path: actions[]\n Category: actions\n Kind: object\n Description: Single item action entry.\n\nComponent Capability:\n - Path: actions[].id\n Category: actions\n Kind: string\n Description: Action id.\n\nComponent Capability:\n - Path: actions[].icon\n Category: actions\n Kind: string\n Description: Action icon.\n\nComponent Capability:\n - Path: actions[].label\n Category: actions\n Kind: string\n Description: Action label.\n\nComponent Capability:\n - Path: actions[].color\n Category: actions\n Kind: string\n Description: Action color.\n\nComponent Capability:\n - Path: actions[].kind\n Category: actions\n Kind: enum\n Description: Action render kind.\n\nComponent Capability:\n - Path: actions[].buttonVariant\n Category: actions\n Kind: enum\n Description: Action button variant.\n\nComponent Capability:\n - Path: actions[].showIf\n Category: actions\n Kind: expression\n Description: Json Logic visibility condition for the current row.\n\nComponent Capability:\n - Path: actions[].globalAction.[actionId]\n Category: actions\n Kind: string\n Description: Canonical global app action id (ex.: \"toast.success\" ou \"navigation.openRoute\").\n\nComponent Capability:\n - Path: actions[].globalAction.payload\n Category: actions\n Kind: object\n Description: Structured payload for the global app action (JSON/template), including internal route payloads resolved from item context.\n\nComponent Capability:\n - Path: actions[].globalAction.payloadExpr\n Category: actions\n Kind: expression\n Description: Advanced payload expression for the global app action when structured payload is not authored.\n\nComponent Capability:\n - Path: actions[].emitLocal\n Category: actions\n Kind: boolean\n Description: Emit local actionClick even when globalAction is set.\n\nComponent Capability:\n - Path: actions[].showLoading\n Category: actions\n Kind: boolean\n Description: Show loading state while a global action executes.\n\nComponent Capability:\n - Path: actions[].placement\n Category: actions\n Kind: enum\n Description: Action placement in row layout actions or trailing slot.\n\nComponent Capability:\n - Path: actions[].confirmation\n Category: actions\n Kind: object\n Description: Confirmation prompt before executing the action.\n\nComponent Capability:\n - Path: actions[].confirmation.title\n Category: actions\n Kind: string\n Description: Confirmation title.\n\nComponent Capability:\n - Path: actions[].confirmation.message\n Category: actions\n Kind: string\n Description: Confirmation message.\n\nComponent Capability:\n - Path: actions[].confirmation.type\n Category: actions\n Kind: enum\n Description: Confirmation severity.\n\nComponent Capability:\n - Path: rules\n Category: rules\n Kind: object\n Description: Conditional list item styling and slot override rules.\n\nComponent Capability:\n - Path: rules.itemStyles\n Category: rules\n Kind: array\n Description: Conditional item style rules.\n\nComponent Capability:\n - Path: rules.itemStyles[].id\n Category: rules\n Kind: string\n Description: Stable item style rule id.\n\nComponent Capability:\n - Path: rules.itemStyles[].condition\n Category: rules\n Kind: expression\n Description: Json Logic condition in row context.\n\nComponent Capability:\n - Path: rules.itemStyles[].class\n Category: rules\n Kind: string\n Description: CSS class applied when the rule matches.\n\nComponent Capability:\n - Path: rules.itemStyles[].style\n Category: rules\n Kind: string\n Description: Inline style applied when the rule matches.\n\nComponent Capability:\n - Path: rules.itemStyles[].border\n Category: rules\n Kind: string\n Description: Border style override applied when the rule matches.\n\nComponent Capability:\n - Path: rules.itemStyles[].background\n Category: rules\n Kind: string\n Description: Background style override applied when the rule matches.\n\nComponent Capability:\n - Path: rules.itemStyles[].effects\n Category: rules\n Kind: array\n Description: Canonical conditional effect array aligned with PraxisRuntimeConditionalEffectRule<ListItemStyleEffect>.\n\nComponent Capability:\n - Path: rules.itemStyles[].effects[].kind\n Category: rules\n Kind: enum\n Description: Discriminator for list item style effects.",
|
|
6689
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/list-ai-capabilities.ts",
|
|
6690
|
+
"contentHash": "555fb06f5ff19c7ac5c9251615e0d12d78a6531e00007d555561930ad952038d",
|
|
6691
|
+
"sourceKind": "component_definition",
|
|
6692
|
+
"sourceId": "praxis-list",
|
|
6693
|
+
"corpusVersion": "1.0.0"
|
|
6694
|
+
},
|
|
6695
|
+
{
|
|
6696
|
+
"chunkIndex": 3,
|
|
6697
|
+
"chunkKind": "capabilities",
|
|
6698
|
+
"content": "Component Capability:\n - Path: rules.slotOverrides\n Category: rules\n Kind: array\n Description: Conditional slot template override rules.\n\nComponent Capability:\n - Path: rules.slotOverrides[].id\n Category: rules\n Kind: string\n Description: Stable slot override rule id.\n\nComponent Capability:\n - Path: rules.slotOverrides[].slot\n Category: rules\n Kind: enum\n Description: Templating slot affected by the override.\n\nComponent Capability:\n - Path: rules.slotOverrides[].condition\n Category: rules\n Kind: expression\n Description: Json Logic condition in row context.\n\nComponent Capability:\n - Path: rules.slotOverrides[].template\n Category: rules\n Kind: object\n Description: Template override applied when the rule matches.\n\nComponent Capability:\n - Path: rules.slotOverrides[].class\n Category: rules\n Kind: string\n Description: CSS class appended when the rule matches.\n\nComponent Capability:\n - Path: rules.slotOverrides[].style\n Category: rules\n Kind: string\n Description: Inline style appended when the rule matches.\n\nComponent Capability:\n - Path: rules.slotOverrides[].hide\n Category: rules\n Kind: boolean\n Description: Hide the slot when the rule matches.\n\nComponent Capability:\n - Path: rules.slotOverrides[].effects\n Category: rules\n Kind: array\n Description: Canonical conditional effect array aligned with PraxisRuntimeConditionalEffectRule<ListSlotOverrideEffect>.\n\nComponent Capability:\n - Path: rules.slotOverrides[].effects[].kind\n Category: rules\n Kind: enum\n Description: Discriminator for list slot override effects.\n\nComponent Capability:\n - Path: expansion\n Category: expansion\n Kind: object\n Description: Inline expansion sections and remote detail contract.\n\nComponent Capability:\n - Path: expansion.sections\n Category: expansion\n Kind: array\n Description: Expansion detail sections.\n\nComponent Capability:\n - Path: expansion.sections[].id\n Category: expansion\n Kind: string\n Description: Stable expansion section id.\n\nComponent Capability:\n - Path: expansion.sections[].title\n Category: expansion\n Kind: string\n Description: Expansion section title.\n\nComponent Capability:\n - Path: expansion.sections[].type\n Category: expansion\n Kind: enum\n Description: Expansion section renderer type.\n\nComponent Capability:\n - Path: expansion.sections[].itemsExpr\n Category: expansion\n Kind: expression\n Description: Expression used to resolve section items from the row.\n\nComponent Capability:\n - Path: expansion.sections[].document\n Category: expansion\n Kind: object\n Description: Canonical RichContentDocument rendered when type=rich-content.\n\nComponent Capability:\n - Path: expansion.sections[].documentExpr\n Category: expansion\n Kind: expression\n Description: Expression resolving to a RichContentDocument for type=rich-content.\n\nComponent Capability:\n - Path: expansion.sections[].emptyLabel\n Category: expansion\n Kind: string\n Description: Empty label for an expansion section.\n\nComponent Capability:\n - Path: expansion.sections[].metadata\n Category: expansion\n Kind: object\n Description: Metadata rendering options for metadata expansion sections.\n\nComponent Capability:\n - Path: expansion.sections[].component\n Category: expansion\n Kind: object\n Description: Runtime component rendering options for component expansion sections.\n\nComponent Capability:\n - Path: expansion.sections[].class\n Category: expansion\n Kind: string\n Description: CSS class for an expansion section.\n\nComponent Capability:\n - Path: expansion.sections[].style\n Category: expansion\n Kind: string\n Description: Inline style for an expansion section.\n\nComponent Capability:\n - Path: expansion.sections[].showIf\n Category: expansion\n Kind: expression\n Description: Json Logic visibility condition for an expansion section.\n\nComponent Capability:\n - Path: expansion.dataSource\n Category: expansion\n Kind: object\n Description: Expansion detail data source.\n\nComponent Capability:\n - Path: expansion.dataSource.mode\n Category: expansion\n Kind: enum\n Description: Expansion data source mode.\n\nComponent Capability:\n - Path: expansion.dataSource.resource\n Category: expansion\n Kind: object\n Description: Canonical resource descriptor for expansion details.\n\nComponent Capability:\n - Path: expansion.dataSource.resource.kind\n Category: expansion\n Kind: string\n Description: Canonical expansion resource kind.\n\nComponent Capability:\n - Path: expansion.dataSource.resource.id\n Category: expansion\n Kind: string\n Description: Canonical expansion resource id.\n\nComponent Capability:\n - Path: expansion.dataSource.resource.version\n Category: expansion\n Kind: string\n Description: Canonical expansion resource version.\n\nComponent Capability:\n - Path: expansion.dataSource.resourcePath\n Category: expansion\n Kind: object\n Description: Dynamic resource path descriptor for expansion details.\n\nComponent Capability:\n - Path: expansion.dataSource.resourcePath.path\n Category: expansion\n Kind: string\n Description: Expression-backed remote path for expansion details.\n\nComponent Capability:\n - Path: expansion.dataSource.resourcePath.method\n Category: expansion\n Kind: enum\n Description: HTTP method for dynamic expansion resource path.\n\nComponent Capability:\n - Path: expansion.dataSource.resourcePath.paramsMap\n Category: expansion\n Kind: object\n Description: Parameter map for dynamic expansion resource path.\n\nComponent Capability:\n - Path: expansion.dataSource.resourceAllowList\n Category: expansion\n Kind: array\n Description: Allowlist for dynamic expansion resource paths.\n\nComponent Capability:\n - Path: expansion.dataSource.fallbackMode\n Category: expansion\n Kind: enum\n Description: Fallback mode for expansion detail loading.\n\nComponent Capability:\n - Path: expansion.dataSource.cache\n Category: expansion\n Kind: object\n Description: Expansion detail cache configuration.\n\nComponent Capability:\n - Path: expansion.dataSource.cache.enabled\n Category: expansion\n Kind: boolean\n Description: Enable expansion detail cache.\n\nComponent Capability:\n - Path: expansion.dataSource.cancelOnCollapse\n Category: expansion\n Kind: boolean\n Description: Cancel expansion detail loading when a row collapses.\n\nComponent Capability:\n - Path: expansion.schemaContract\n Category: expansion\n Kind: object\n Description: Fail-closed schema contract for remote expansion details.\n\nComponent Capability:\n - Path: expansion.schemaContract.kind\n Category: expansion\n Kind: string\n Description: Expansion schema contract kind.\n\nComponent Capability:\n - Path: expansion.schemaContract.version\n Category: expansion\n Kind: string\n Description: Expansion schema contract version.\n\nComponent Capability:\n - Path: expansion.schemaContract.allowedNodes\n Category: expansion\n Kind: array\n Description: Allowed remote expansion node types.\n\nComponent Capability:\n - Path: expansion.schemaContract.maxSections\n Category: expansion\n Kind: number\n Description: Maximum number of remote expansion sections.\n\nComponent Capability:\n - Path: expansion.schemaContract.maxItemsPerSection\n Category: expansion\n Kind: number\n Description: Maximum number of items per remote expansion section.\n\nComponent Capability:\n - Path: expansion.schemaContract.requireSectionIds\n Category: expansion\n Kind: boolean\n Description: Require explicit ids for remote expansion sections.\n\nComponent Capability:\n - Path: expansion.rendering\n Category: expansion\n Kind: object\n Description: Expansion shell rendering configuration.\n\nComponent Capability:\n - Path: expansion.rendering.shell\n Category: expansion\n Kind: enum\n Description: Expansion shell attachment mode.",
|
|
6699
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/list-ai-capabilities.ts",
|
|
6700
|
+
"contentHash": "ae24c04a1cfee608d4900ad3a7b4b0e43141d3fc73995b07b041d9752d5464b8",
|
|
6701
|
+
"sourceKind": "component_definition",
|
|
6702
|
+
"sourceId": "praxis-list",
|
|
6703
|
+
"corpusVersion": "1.0.0"
|
|
6704
|
+
},
|
|
6705
|
+
{
|
|
6706
|
+
"chunkIndex": 4,
|
|
6707
|
+
"chunkKind": "capabilities",
|
|
6708
|
+
"content": "Component Capability:\n - Path: expansion.rendering.columns\n Category: expansion\n Kind: enum\n Description: Expansion detail column count.\n\nComponent Capability:\n - Path: expansion.rendering.gap\n Category: expansion\n Kind: string\n Description: Gap between expansion sections.\n\nComponent Capability:\n - Path: expansion.rendering.padding\n Category: expansion\n Kind: string\n Description: Padding inside the expansion shell.\n\nComponent Capability:\n - Path: expansion.rendering.class\n Category: expansion\n Kind: string\n Description: CSS class for the expansion shell.\n\nComponent Capability:\n - Path: expansion.rendering.style\n Category: expansion\n Kind: string\n Description: Inline style for the expansion shell.\n\nComponent Capability:\n - Path: expansion.rendering.loadingTemplate\n Category: expansion\n Kind: object\n Description: Template rendered while expansion detail loads.\n\nComponent Capability:\n - Path: expansion.rendering.errorTemplate\n Category: expansion\n Kind: object\n Description: Template rendered when expansion detail loading fails.\n\nComponent Capability:\n - Path: ui\n Category: ui\n Kind: object\n Description: Lightweight toolbar UI.\n\nComponent Capability:\n - Path: ui.showSearch\n Category: ui\n Kind: boolean\n Description: Show search input.\n\nComponent Capability:\n - Path: ui.searchField\n Category: ui\n Kind: string\n Description: Search field.\n\nComponent Capability:\n - Path: ui.searchPlaceholder\n Category: ui\n Kind: string\n Description: Search placeholder.\n\nComponent Capability:\n - Path: ui.showSort\n Category: ui\n Kind: boolean\n Description: Show sort selector.\n\nComponent Capability:\n - Path: ui.sortOptions\n Category: ui\n Kind: array\n Description: Sort options (string or {label,value}).\n\nComponent Capability:\n - Path: ui.sortOptions[].label\n Category: ui\n Kind: string\n Description: Sort option label.\n\nComponent Capability:\n - Path: ui.sortOptions[].value\n Category: ui\n Kind: string\n Description: Sort option value.\n\nComponent Capability:\n - Path: ui.showRange\n Category: ui\n Kind: boolean\n Description: Show range in footer.\n\nComponent Capability:\n - Path: i18n\n Category: i18n\n Kind: object\n Description: i18n map.\n\nComponent Capability:\n - Path: i18n.locale\n Category: i18n\n Kind: string\n Description: Locale (ex.: pt-BR).\n\nComponent Capability:\n - Path: i18n.currency\n Category: i18n\n Kind: string\n Description: Currency code (ex.: BRL).\n\nComponent Capability:\n - Path: i18n.localization\n Category: i18n\n Kind: object\n Description: Core localization defaults reused by list template pipes.\n\nComponent Capability:\n - Path: a11y\n Category: a11y\n Kind: object\n Description: Accessibility settings.\n\nComponent Capability:\n - Path: a11y.ariaLabel\n Category: a11y\n Kind: string\n Description: aria-label for container.\n\nComponent Capability:\n - Path: a11y.ariaLabelledBy\n Category: a11y\n Kind: string\n Description: aria-labelledby for container.\n\nComponent Capability:\n - Path: a11y.highContrast\n Category: a11y\n Kind: boolean\n Description: High contrast mode.\n\nComponent Capability:\n - Path: a11y.reduceMotion\n Category: a11y\n Kind: boolean\n Description: Reduce motion.\n\nComponent Capability:\n - Path: events\n Category: events\n Kind: object\n Description: Event mappings.\n\nComponent Capability:\n - Path: events.itemClick\n Category: events\n Kind: string\n Description: Mapped itemClick event name.\n\nComponent Capability:\n - Path: events.actionClick\n Category: events\n Kind: string\n Description: Mapped actionClick event name.\n\nComponent Capability:\n - Path: events.selectionChange\n Category: events\n Kind: string\n Description: Mapped selectionChange event name.\n\nComponent Capability:\n - Path: events.exportAction\n Category: events\n Kind: string\n Description: Mapped exportAction event name.\n\nComponent Capability:\n - Path: events.loaded\n Category: events\n Kind: string\n Description: Mapped loaded event name.\n\nCapability Note:\n - Template expressions support only ${item.path} and simple pipes: bool/date/map/number.\n\nCapability Note:\n - Taxonomia editorial: templating.*.expr continua no dominio de template; conditions booleanas de acoes, rules e expansion usam Json Logic canonico.\n\nCapability Note:\n - actions[].showIf uses Json Logic, for example {\"==\":[{\"var\":\"row.status\"},\"done\"]}.\n\nCapability Note:\n - Arrays should be merged by id/expr to avoid replacing existing items.\n\nCapability Note:\n - dataSource.data overrides resourcePath when provided.\n\nCapability Note:\n - layout.variant supports list, cards and tiles.\n\nCapability Note:\n - Colors accept theme tokens (primary/accent/warn), M3 tokens (var(--md-sys-color-*)), or custom CSS colors.",
|
|
6709
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/list-ai-capabilities.ts",
|
|
6710
|
+
"contentHash": "a8b86aacb88ec7b3b7407a78cebd14f9c9dfa9c43323ce38c0657906ed0858ad",
|
|
6711
|
+
"sourceKind": "component_definition",
|
|
6712
|
+
"sourceId": "praxis-list",
|
|
6713
|
+
"corpusVersion": "1.0.0"
|
|
6714
|
+
},
|
|
6715
|
+
{
|
|
6716
|
+
"chunkIndex": 5,
|
|
6687
6717
|
"chunkKind": "authoring_manifest",
|
|
6688
|
-
"content": "{\n \"schemaVersion\": \"1.0.0\",\n \"componentId\": \"praxis-list\",\n \"ownerPackage\": \"@praxisui/list\",\n \"configSchemaId\": \"PraxisListConfig\",\n \"manifestVersion\": \"1.1.0\",\n \"runtimeInputs\": [\n {\n \"name\": \"config\",\n \"type\": \"PraxisListConfig\",\n \"description\": \"Canonical list configuration.\"\n },\n {\n \"name\": \"listId\",\n \"type\": \"string\",\n \"description\": \"Stable list id used by persistence.\"\n },\n {\n \"name\": \"enableCustomization\",\n \"type\": \"boolean\",\n \"description\": \"Enables runtime authoring surfaces.\"\n }\n ],\n \"editableTargets\": [\n {\n \"kind\": \"itemTemplate\",\n \"resolver\": \"list-template-slot\",\n \"description\": \"Template slot under templating.*.\"\n },\n {\n \"kind\": \"primaryText\",\n \"resolver\": \"templating-primary\",\n \"description\": \"Primary text template.\"\n },\n {\n \"kind\": \"secondaryText\",\n \"resolver\": \"templating-secondary\",\n \"description\": \"Secondary text template.\"\n },\n {\n \"kind\": \"avatar\",\n \"resolver\": \"templating-leading\",\n \"description\": \"Leading/avatar template.\"\n },\n {\n \"kind\": \"badge\",\n \"resolver\": \"templating-trailing-chip\",\n \"description\": \"Trailing badge/status template.\"\n },\n {\n \"kind\": \"itemAction\",\n \"resolver\": \"actions-by-id\",\n \"description\": \"Item action resolved by actions[].id.\"\n },\n {\n \"kind\": \"emptyState\",\n \"resolver\": \"templating-empty-state\",\n \"description\": \"Empty state template.\"\n },\n {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"description\": \"Selection configuration.\"\n },\n {\n \"kind\": \"layout\",\n \"resolver\": \"layout-config\",\n \"description\": \"Layout configuration.\"\n },\n {\n \"kind\": \"rowLayout\",\n \"resolver\": \"row-layout-config\",\n \"description\": \"Row layout grid/flex columns and placement slots.\"\n },\n {\n \"kind\": \"dataBinding\",\n \"resolver\": \"data-source-config\",\n \"description\": \"Local or remote data source binding.\"\n },\n {\n \"kind\": \"interaction\",\n \"resolver\": \"interaction-config\",\n \"description\": \"Expandable row interaction configuration.\"\n },\n {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"description\": \"Inline expansion sections, data source and rendering configuration.\"\n },\n {\n \"kind\": \"rules\",\n \"resolver\": \"rules-config\",\n \"description\": \"Item style rules and slot override rules.\"\n },\n {\n \"kind\": \"meta\",\n \"resolver\": \"list-root-config\",\n \"description\": \"Root list metadata such as id.\"\n },\n {\n \"kind\": \"skin\",\n \"resolver\": \"skin-config\",\n \"description\": \"Visual skin configuration.\"\n },\n {\n \"kind\": \"toolbarUi\",\n \"resolver\": \"ui-config\",\n \"description\": \"Search, sort and footer UI configuration.\"\n },\n {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"description\": \"Collection export configuration.\"\n },\n {\n \"kind\": \"localization\",\n \"resolver\": \"i18n-config\",\n \"description\": \"Locale and currency configuration.\"\n },\n {\n \"kind\": \"accessibility\",\n \"resolver\": \"a11y-config\",\n \"description\": \"Accessibility configuration.\"\n },\n {\n \"kind\": \"eventMapping\",\n \"resolver\": \"events-config\",\n \"description\": \"Declarative event name mappings.\"\n }\n ],\n \"operations\": [\n {\n \"operationId\": \"list.id.set\",\n \"title\": \"Set list id\",\n \"scope\": \"meta\",\n \"targetKind\": \"meta\",\n \"target\": {\n \"kind\": \"meta\",\n \"resolver\": \"list-root-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"id\"\n }\n ],\n \"validators\": [\n \"list-id-stable\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"id\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"item.primaryText.set\",\n \"title\": \"Set primary item text\",\n \"scope\": \"itemTemplate\",\n \"targetKind\": \"primaryText\",\n \"target\": {\n \"kind\": \"primaryText\",\n \"resolver\": \"templating-primary\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n \"expr\"\n ],\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"text\",\n \"icon\",\n \"image\",\n \"chip\",\n \"rating\",\n \"currency\",\n \"date\",\n \"html\",\n \"slot\",\n \"metric\",\n \"compose\",\n \"component\"\n ]\n },\n \"expr\": {\n \"type\": \"string\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\"\n ]\n },\n \"imageAlt\": {\n \"type\": \"string\"\n },\n \"props\": {\n \"type\": \"object\",\n \"properties\": {\n \"rating\": {\n \"type\": \"object\",\n \"properties\": {\n \"max\": {\n \"type\": \"number\"\n },\n \"size\": {\n \"type\": \"number\"\n },\n \"color\": {\n \"type\": \"string\"\n }\n }\n },\n \"metric\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"valueExpr\": {\n \"type\": \"string\"\n },\n \"caption\": {\n \"type\": \"string\"\n },\n \"subcaption\": {\n \"type\": \"string\"\n },\n \"captionPosition\": {\n \"enum\": [\n \"below-value\",\n \"below-progress\"\n ]\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"iconExpr\": {\n \"type\": \"string\"\n },\n \"tone\": {\n \"type\": \"string\"\n },\n \"toneExpr\": {\n \"type\": \"string\"\n },\n \"layout\": {\n \"enum\": [\n \"value-only\",\n \"value+caption\",\n \"icon+value+caption\",\n \"stacked-center\"\n ]\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"progress\": {\n \"type\": \"object\",\n \"properties\": {\n \"valueExpr\": {\n \"type\": \"string\"\n },\n \"max\": {\n \"type\": \"number\"\n },\n \"mode\": {\n \"enum\": [\n \"determinate\",\n \"indeterminate\"\n ]\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"colorExpr\": {\n \"type\": \"string\"\n },\n \"trackColor\": {\n \"type\": \"string\"\n }\n }\n },\n \"valueClass\": {\n \"type\": \"string\"\n },\n \"valueStyle\": {\n \"type\": \"string\"\n },\n \"showBar\": {\n \"type\": \"boolean\"\n },\n \"barValueExpr\": {\n \"type\": \"string\"\n },\n \"barColor\": {\n \"type\": \"string\"\n },\n \"barVariant\": {\n \"enum\": [\n \"determinate\",\n \"indeterminate\"\n ]\n },\n \"legendExpr\": {\n \"type\": \"string\"\n },\n \"iconPosition\": {\n \"enum\": [\n \"left\",\n \"right\",\n \"top\"\n ]\n },\n \"iconColorExpr\": {\n \"type\": \"string\"\n }\n }\n },\n \"compose\": {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"nodes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n }\n },\n \"direction\": {\n \"enum\": [\n \"row\",\n \"column\"\n ]\n },\n \"orientation\": {\n \"enum\": [\n \"horizontal\",\n \"vertical\"\n ]\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"gap\": {\n \"type\": \"string\"\n },\n \"wrap\": {\n \"type\": \"boolean\"\n },\n \"separator\": {\n \"type\": \"string\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n },\n \"component\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"inputs\": {\n \"type\": \"object\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"badge\": {\n \"type\": \"object\",\n \"properties\": {\n \"expr\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\"\n ]\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.primary\"\n }\n ],\n \"validators\": [\n \"bound-field-exists\",\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.primary\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"item.secondaryText.set\",\n \"title\": \"Set secondary item text\",\n \"scope\": \"itemTemplate\",\n \"targetKind\": \"secondaryText\",\n \"target\": {\n \"kind\": \"secondaryText\",\n \"resolver\": \"templating-secondary\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.secondary\"\n }\n ],\n \"validators\": [\n \"bound-field-exists\",\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.secondary\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"item.avatar.configure\",\n \"title\": \"Configure item avatar\",\n \"scope\": \"itemTemplate\",\n \"targetKind\": \"avatar\",\n \"target\": {\n \"kind\": \"avatar\",\n \"resolver\": \"templating-leading\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"required\": [\n \"type\"\n ]\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.leading\"\n }\n ],\n \"validators\": [\n \"bound-field-exists\",\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.leading\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"item.badge.configure\",\n \"title\": \"Configure item badge\",\n \"scope\": \"itemTemplate\",\n \"targetKind\": \"badge\",\n \"target\": {\n \"kind\": \"badge\",\n \"resolver\": \"templating-trailing-chip\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"expr\"\n ],\n \"properties\": {\n \"expr\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\"\n ]\n },\n \"statusPosition\": {\n \"enum\": [\n \"inline\",\n \"top-right\"\n ]\n },\n \"labelMap\": {\n \"type\": \"object\"\n },\n \"colorMap\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.trailing\"\n },\n {\n \"kind\": \"set-value\",\n \"path\": \"templating.statusPosition\"\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.chipLabelMap\"\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.chipColorMap\"\n }\n ],\n \"validators\": [\n \"bound-field-exists\",\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.trailing\",\n \"templating.statusPosition\",\n \"templating.chipLabelMap\",\n \"templating.chipColorMap\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"template.slot.set\",\n \"title\": \"Set any list template slot\",\n \"scope\": \"templating\",\n \"targetKind\": \"itemTemplate\",\n \"target\": {\n \"kind\": \"itemTemplate\",\n \"resolver\": \"list-template-slot\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"slot\",\n \"template\"\n ],\n \"properties\": {\n \"slot\": {\n \"enum\": [\n \"leading\",\n \"primary\",\n \"secondary\",\n \"meta\",\n \"trailing\",\n \"identity\",\n \"balance\",\n \"limit\",\n \"risk\",\n \"alerts\",\n \"owner\",\n \"sectionHeader\",\n \"emptyState\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"list-template-slot-set\",\n \"handlerContract\": {\n \"reads\": [\n \"templating\"\n ],\n \"writes\": [\n \"templating.leading\",\n \"templating.primary\",\n \"templating.secondary\",\n \"templating.meta\",\n \"templating.trailing\",\n \"templating.identity\",\n \"templating.balance\",\n \"templating.limit\",\n \"templating.risk\",\n \"templating.alerts\",\n \"templating.owner\",\n \"templating.sectionHeader\",\n \"templating.emptyState\"\n ],\n \"identityKeys\": [\n \"slot\"\n ],\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"slot\",\n \"template\"\n ],\n \"properties\": {\n \"slot\": {}\n }\n },\n \"failureModes\": [\n \"unsupported-template-slot\",\n \"invalid-template-expression\",\n \"ambiguous-template-slot\"\n ],\n \"description\": \"Writes the requested template into one supported templating slot; slot is the stable identity, not array position.\"\n }\n }\n ],\n \"validators\": [\n \"template-slot-supported\",\n \"bound-field-exists\",\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.leading\",\n \"templating.primary\",\n \"templating.secondary\",\n \"templating.meta\",\n \"templating.trailing\",\n \"templating.identity\",\n \"templating.balance\",\n \"templating.limit\",\n \"templating.risk\",\n \"templating.alerts\",\n \"templating.owner\",\n \"templating.sectionHeader\",\n \"templating.emptyState\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"item.action.add\",\n \"title\": \"Add item action\",\n \"scope\": \"itemAction\",\n \"targetKind\": \"itemAction\",\n \"target\": {\n \"kind\": \"itemAction\",\n \"resolver\": \"actions-by-id\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"enum\": [\n \"icon\",\n \"button\"\n ]\n },\n \"buttonVariant\": {\n \"enum\": [\n \"stroked\",\n \"raised\",\n \"flat\"\n ]\n },\n \"showIf\": {\n \"type\": \"object\"\n },\n \"globalAction\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"actionId\": {\n \"type\": \"string\"\n },\n \"payload\": {\n \"type\": \"object\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n },\n \"meta\": {\n \"type\": \"object\"\n }\n }\n },\n \"emitLocal\": {\n \"type\": \"boolean\"\n },\n \"showLoading\": {\n \"type\": \"boolean\"\n },\n \"placement\": {\n \"enum\": [\n \"actions\",\n \"trailing\"\n ]\n },\n \"confirmation\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\n \"danger\",\n \"warning\",\n \"info\"\n ]\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"action-id-stable\",\n \"json-logic-valid\",\n \"global-action-ref-valid\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"actions[]\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"item.action.update\",\n \"title\": \"Update item action\",\n \"scope\": \"itemAction\",\n \"targetKind\": \"itemAction\",\n \"target\": {\n \"kind\": \"itemAction\",\n \"resolver\": \"actions-by-id\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"required\": [\n \"id\"\n ]\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"action-exists\",\n \"action-id-stable\",\n \"json-logic-valid\",\n \"global-action-ref-valid\",\n \"declared-only-runtime-warning\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"actions\",\n \"actions[].id\",\n \"actions[].icon\",\n \"actions[].label\",\n \"actions[].color\",\n \"actions[].kind\",\n \"actions[].buttonVariant\",\n \"actions[].showIf\",\n \"actions[].globalAction.[actionId]\",\n \"actions[].globalAction.payload\",\n \"actions[].globalAction.payloadExpr\",\n \"actions[].emitLocal\",\n \"actions[].showLoading\",\n \"actions[].placement\",\n \"actions[].confirmation\",\n \"actions[].confirmation.title\",\n \"actions[].confirmation.message\",\n \"actions[].confirmation.type\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"item.action.remove\",\n \"title\": \"Remove item action\",\n \"scope\": \"itemAction\",\n \"targetKind\": \"itemAction\",\n \"target\": {\n \"kind\": \"itemAction\",\n \"resolver\": \"actions-by-id\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"remove-by-key\",\n \"path\": \"actions[]\",\n \"key\": \"id\"\n }\n ],\n \"destructive\": true,\n \"requiresConfirmation\": true,\n \"validators\": [\n \"action-exists\",\n \"destructive-removal-confirmation\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"actions[]\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"selection.mode.set\",\n \"title\": \"Set selection mode\",\n \"scope\": \"selection\",\n \"targetKind\": \"selection\",\n \"target\": {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"mode\"\n ],\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"none\",\n \"single\",\n \"multiple\"\n ]\n },\n \"compareBy\": {\n \"type\": \"string\"\n },\n \"return\": {\n \"enum\": [\n \"value\",\n \"item\",\n \"id\"\n ]\n },\n \"formControlName\": {\n \"type\": \"string\"\n },\n \"formControlPath\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"selection\"\n }\n ],\n \"validators\": [\n \"selection-mode-supported\",\n \"bound-field-exists\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"selection\",\n \"selection.mode\",\n \"selection.formControlName\",\n \"selection.formControlPath\",\n \"selection.compareBy\",\n \"selection.return\"\n ],\n \"submissionImpact\": \"affects-submission\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"interaction.expansion.configure\",\n \"title\": \"Configure expandable row interaction\",\n \"scope\": \"interaction\",\n \"targetKind\": \"interaction\",\n \"target\": {\n \"kind\": \"interaction\",\n \"resolver\": \"interaction-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"expandable\": {\n \"type\": \"boolean\"\n },\n \"expandTrigger\": {\n \"enum\": [\n \"row\",\n \"icon\",\n \"row+icon\"\n ]\n },\n \"expandMode\": {\n \"enum\": [\n \"single\",\n \"multiple\"\n ]\n },\n \"expandPlacement\": {\n \"enum\": [\n \"expand\",\n \"trailing\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"interaction\"\n }\n ],\n \"validators\": [\n \"interaction-value-supported\",\n \"row-layout-placement-reachable\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"interaction\",\n \"interaction.expandable\",\n \"interaction.expandTrigger\",\n \"interaction.expandMode\",\n \"interaction.expandPlacement\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"layout.density.set\",\n \"title\": \"Set list density\",\n \"scope\": \"layout\",\n \"targetKind\": \"layout\",\n \"target\": {\n \"kind\": \"layout\",\n \"resolver\": \"layout-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"density\": {\n \"enum\": [\n \"default\",\n \"comfortable\",\n \"compact\"\n ]\n },\n \"variant\": {\n \"enum\": [\n \"list\",\n \"cards\",\n \"tiles\"\n ]\n },\n \"itemSpacing\": {\n \"enum\": [\n \"none\",\n \"tight\",\n \"default\",\n \"relaxed\"\n ]\n },\n \"lines\": {\n \"enum\": [\n 1,\n 2,\n 3\n ]\n },\n \"dividers\": {\n \"enum\": [\n \"none\",\n \"between\",\n \"all\"\n ]\n },\n \"model\": {\n \"enum\": [\n \"standard\",\n \"media\",\n \"hotel\"\n ]\n },\n \"groupBy\": {\n \"type\": \"string\"\n },\n \"stickySectionHeader\": {\n \"type\": \"boolean\"\n },\n \"virtualScroll\": {\n \"type\": \"boolean\"\n },\n \"pageSize\": {\n \"type\": \"number\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"layout\"\n }\n ],\n \"validators\": [\n \"layout-value-supported\",\n \"bound-field-exists\",\n \"declared-only-runtime-warning\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"layout\",\n \"layout.variant\",\n \"layout.density\",\n \"layout.itemSpacing\",\n \"layout.lines\",\n \"layout.dividers\",\n \"layout.model\",\n \"layout.groupBy\",\n \"layout.stickySectionHeader\",\n \"layout.virtualScroll\",\n \"layout.pageSize\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"layout.rowLayout.configure\",\n \"title\": \"Configure list row layout\",\n \"scope\": \"rowLayout\",\n \"targetKind\": \"rowLayout\",\n \"target\": {\n \"kind\": \"rowLayout\",\n \"resolver\": \"row-layout-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"grid\",\n \"flex\"\n ]\n },\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"slot\"\n ],\n \"properties\": {\n \"slot\": {\n \"enum\": [\n null,\n \"actions\",\n \"expand\"\n ]\n },\n \"width\": {\n \"type\": \"string\"\n },\n \"minWidth\": {\n \"type\": \"string\"\n },\n \"maxWidth\": {\n \"type\": \"string\"\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"justify\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\",\n \"stretch\"\n ]\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"gap\": {\n \"type\": \"string\"\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\",\n \"stretch\"\n ]\n },\n \"itemAlignY\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\",\n \"stretch\"\n ]\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"layout.rowLayout\"\n }\n ],\n \"validators\": [\n \"row-layout-supported\",\n \"row-layout-placement-reachable\",\n \"style-value-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"layout.rowLayout\",\n \"layout.rowLayout.type\",\n \"layout.rowLayout.columns\",\n \"layout.rowLayout.columns[].slot\",\n \"layout.rowLayout.columns[].width\",\n \"layout.rowLayout.columns[].minWidth\",\n \"layout.rowLayout.columns[].maxWidth\",\n \"layout.rowLayout.columns[].align\",\n \"layout.rowLayout.columns[].justify\",\n \"layout.rowLayout.columns[].class\",\n \"layout.rowLayout.columns[].style\",\n \"layout.rowLayout.gap\",\n \"layout.rowLayout.align\",\n \"layout.rowLayout.itemAlignY\",\n \"layout.rowLayout.class\",\n \"layout.rowLayout.style\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"skin.configure\",\n \"title\": \"Configure list skin\",\n \"scope\": \"skin\",\n \"targetKind\": \"skin\",\n \"target\": {\n \"kind\": \"skin\",\n \"resolver\": \"skin-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"pill-soft\",\n \"gradient-tile\",\n \"glass\",\n \"elevated\",\n \"outline\",\n \"flat\",\n \"neumorphism\",\n \"custom\"\n ]\n },\n \"gradient\": {\n \"type\": \"object\",\n \"properties\": {\n \"from\": {\n \"type\": \"string\"\n },\n \"to\": {\n \"type\": \"string\"\n },\n \"angle\": {\n \"type\": \"number\"\n }\n }\n },\n \"radius\": {\n \"type\": \"string\"\n },\n \"shadow\": {\n \"type\": \"string\"\n },\n \"border\": {\n \"type\": \"string\"\n },\n \"backdropBlur\": {\n \"type\": \"string\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"inlineStyle\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"skin\"\n }\n ],\n \"validators\": [\n \"skin-value-supported\",\n \"style-value-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"skin\",\n \"skin.type\",\n \"skin.gradient\",\n \"skin.gradient.from\",\n \"skin.gradient.to\",\n \"skin.gradient.angle\",\n \"skin.radius\",\n \"skin.shadow\",\n \"skin.border\",\n \"skin.backdropBlur\",\n \"skin.class\",\n \"skin.inlineStyle\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"templating.display.configure\",\n \"title\": \"Configure list template display options\",\n \"scope\": \"templating\",\n \"targetKind\": \"itemTemplate\",\n \"target\": {\n \"kind\": \"itemTemplate\",\n \"resolver\": \"templating-display-options\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"metaPlacement\": {\n \"enum\": [\n \"side\",\n \"line\"\n ]\n },\n \"metaPrefixIcon\": {\n \"type\": \"string\"\n },\n \"statusPosition\": {\n \"enum\": [\n \"inline\",\n \"top-right\"\n ]\n },\n \"chipColorMap\": {\n \"type\": \"object\"\n },\n \"chipLabelMap\": {\n \"type\": \"object\"\n },\n \"iconColorMap\": {\n \"type\": \"object\"\n },\n \"featuresVisible\": {\n \"type\": \"boolean\"\n },\n \"featuresMode\": {\n \"enum\": [\n \"icons+labels\",\n \"icons-only\",\n \"labels-only\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating\"\n }\n ],\n \"validators\": [\n \"template-display-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating\",\n \"templating.metaPlacement\",\n \"templating.metaPrefixIcon\",\n \"templating.statusPosition\",\n \"templating.chipColorMap\",\n \"templating.chipLabelMap\",\n \"templating.iconColorMap\",\n \"templating.featuresVisible\",\n \"templating.featuresMode\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"templating.features.set\",\n \"title\": \"Set list feature line\",\n \"scope\": \"templating\",\n \"targetKind\": \"itemTemplate\",\n \"target\": {\n \"kind\": \"itemTemplate\",\n \"resolver\": \"templating-features\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"features\"\n ],\n \"properties\": {\n \"features\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"expr\"\n ],\n \"properties\": {\n \"icon\": {\n \"type\": \"string\"\n },\n \"expr\": {\n \"type\": \"string\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"templating.features\"\n }\n ],\n \"validators\": [\n \"bound-field-exists\",\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.features\",\n \"templating.features[].icon\",\n \"templating.features[].expr\",\n \"templating.features[].class\",\n \"templating.features[].style\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"templating.skeleton.configure\",\n \"title\": \"Configure list skeleton\",\n \"scope\": \"templating\",\n \"targetKind\": \"itemTemplate\",\n \"target\": {\n \"kind\": \"itemTemplate\",\n \"resolver\": \"templating-skeleton\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"count\"\n ],\n \"properties\": {\n \"count\": {\n \"type\": \"number\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.skeleton\"\n }\n ],\n \"validators\": [\n \"skeleton-value-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.skeleton\",\n \"templating.skeleton.count\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"rules.itemStyle.upsert\",\n \"title\": \"Upsert item style rule\",\n \"scope\": \"rules\",\n \"targetKind\": \"rules\",\n \"target\": {\n \"kind\": \"rules\",\n \"resolver\": \"rules-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"condition\": {\n \"type\": \"object\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"border\": {\n \"type\": \"string\"\n },\n \"background\": {\n \"type\": \"string\"\n },\n \"effects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"item-style\"\n ]\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"border\": {\n \"type\": \"string\"\n },\n \"background\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"rules.itemStyles[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"rule-id-stable\",\n \"json-logic-valid\",\n \"style-value-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"rules\",\n \"rules.itemStyles\",\n \"rules.itemStyles[].id\",\n \"rules.itemStyles[].condition\",\n \"rules.itemStyles[].class\",\n \"rules.itemStyles[].style\",\n \"rules.itemStyles[].border\",\n \"rules.itemStyles[].background\",\n \"rules.itemStyles[].effects\",\n \"rules.itemStyles[].effects[].kind\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"rules.slotOverride.upsert\",\n \"title\": \"Upsert slot override rule\",\n \"scope\": \"rules\",\n \"targetKind\": \"rules\",\n \"target\": {\n \"kind\": \"rules\",\n \"resolver\": \"rules-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"slot\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"slot\": {},\n \"condition\": {\n \"type\": \"object\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"hide\": {\n \"type\": \"boolean\"\n },\n \"effects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"slot-override\"\n ]\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"hide\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"rules.slotOverrides[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"rule-id-stable\",\n \"template-slot-supported\",\n \"json-logic-valid\",\n \"template-expression-safe\",\n \"style-value-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"rules\",\n \"rules.slotOverrides\",\n \"rules.slotOverrides[].id\",\n \"rules.slotOverrides[].slot\",\n \"rules.slotOverrides[].condition\",\n \"rules.slotOverrides[].template\",\n \"rules.slotOverrides[].class\",\n \"rules.slotOverrides[].style\",\n \"rules.slotOverrides[].hide\",\n \"rules.slotOverrides[].effects\",\n \"rules.slotOverrides[].effects[].kind\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"emptyState.set\",\n \"title\": \"Set empty state\",\n \"scope\": \"itemTemplate\",\n \"targetKind\": \"emptyState\",\n \"target\": {\n \"kind\": \"emptyState\",\n \"resolver\": \"templating-empty-state\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"templating.emptyState\"\n }\n ],\n \"validators\": [\n \"template-expression-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"templating.emptyState\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.configure\",\n \"title\": \"Configure list expansion\",\n \"scope\": \"expansion\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"sections\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\n \"info-list\",\n \"chip-list\",\n \"timeline\",\n \"key-value\",\n \"metadata\",\n \"component\",\n \"rich-content\"\n ]\n },\n \"itemsExpr\": {\n \"type\": \"string\"\n },\n \"document\": {\n \"type\": \"object\"\n },\n \"documentExpr\": {\n \"type\": \"string\"\n },\n \"emptyLabel\": {\n \"type\": \"string\"\n },\n \"metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"orientation\": {\n \"enum\": [\n \"horizontal\",\n \"vertical\"\n ]\n },\n \"columns\": {\n \"enum\": [\n 1,\n 2,\n 3\n ]\n },\n \"gap\": {\n \"type\": \"string\"\n },\n \"keyClass\": {\n \"type\": \"string\"\n },\n \"valueClass\": {\n \"type\": \"string\"\n },\n \"keyStyle\": {\n \"type\": \"string\"\n },\n \"valueStyle\": {\n \"type\": \"string\"\n }\n }\n },\n \"component\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"inputs\": {\n \"type\": \"object\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n },\n \"showIf\": {\n \"type\": \"object\"\n }\n }\n }\n },\n \"dataSource\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"inline\",\n \"resource\",\n \"resourcePath\"\n ]\n },\n \"resource\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\"\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n }\n },\n \"resourcePath\": {\n \"type\": \"object\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"method\": {\n \"enum\": [\n \"GET\",\n \"POST\"\n ]\n },\n \"paramsMap\": {\n \"type\": \"object\"\n }\n }\n },\n \"resourceAllowList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"fallbackMode\": {\n \"enum\": [\n \"none\",\n \"inline\",\n \"resource\"\n ]\n },\n \"cache\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"cancelOnCollapse\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"schemaContract\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"praxis.detail.schema\"\n ]\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"allowedNodes\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"info-list\",\n \"chip-list\",\n \"timeline\",\n \"key-value\",\n \"metadata\",\n \"component\",\n \"rich-content\"\n ]\n }\n },\n \"maxSections\": {\n \"type\": \"number\"\n },\n \"maxItemsPerSection\": {\n \"type\": \"number\"\n },\n \"requireSectionIds\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"rendering\": {\n \"type\": \"object\",\n \"properties\": {\n \"shell\": {\n \"enum\": [\n \"attached\",\n \"detached\",\n \"modal\"\n ]\n },\n \"columns\": {\n \"enum\": [\n 1,\n 2,\n 3\n ]\n },\n \"gap\": {\n \"type\": \"string\"\n },\n \"padding\": {\n \"type\": \"string\"\n },\n \"class\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"expansion\"\n }\n ],\n \"validators\": [\n \"expansion-section-id-stable\",\n \"expansion-value-supported\",\n \"json-logic-valid\",\n \"template-expression-safe\",\n \"remote-resource-binding-safe\",\n \"style-value-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"expansion\",\n \"expansion.sections\",\n \"expansion.sections[].id\",\n \"expansion.sections[].title\",\n \"expansion.sections[].type\",\n \"expansion.sections[].itemsExpr\",\n \"expansion.sections[].document\",\n \"expansion.sections[].documentExpr\",\n \"expansion.sections[].emptyLabel\",\n \"expansion.sections[].metadata\",\n \"expansion.sections[].component\",\n \"expansion.sections[].class\",\n \"expansion.sections[].style\",\n \"expansion.sections[].showIf\",\n \"expansion.dataSource\",\n \"expansion.dataSource.mode\",\n \"expansion.dataSource.resource\",\n \"expansion.dataSource.resource.kind\",\n \"expansion.dataSource.resource.id\",\n \"expansion.dataSource.resource.version\",\n \"expansion.dataSource.resourcePath\",\n \"expansion.dataSource.resourcePath.path\",\n \"expansion.dataSource.resourcePath.method\",\n \"expansion.dataSource.resourcePath.paramsMap\",\n \"expansion.dataSource.resourceAllowList\",\n \"expansion.dataSource.fallbackMode\",\n \"expansion.dataSource.cache\",\n \"expansion.dataSource.cache.enabled\",\n \"expansion.dataSource.cancelOnCollapse\",\n \"expansion.schemaContract\",\n \"expansion.schemaContract.kind\",\n \"expansion.schemaContract.version\",\n \"expansion.schemaContract.allowedNodes\",\n \"expansion.schemaContract.maxSections\",\n \"expansion.schemaContract.maxItemsPerSection\",\n \"expansion.schemaContract.requireSectionIds\",\n \"expansion.rendering\",\n \"expansion.rendering.shell\",\n \"expansion.rendering.columns\",\n \"expansion.rendering.gap\",\n \"expansion.rendering.padding\",\n \"expansion.rendering.class\",\n \"expansion.rendering.style\",\n \"expansion.rendering.loadingTemplate\",\n \"expansion.rendering.errorTemplate\"\n ],\n \"submissionImpact\": \"affects-remote-binding\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"data.resource.bind\",\n \"title\": \"Bind remote resource\",\n \"scope\": \"dataBinding\",\n \"targetKind\": \"dataBinding\",\n \"target\": {\n \"kind\": \"dataBinding\",\n \"resolver\": \"data-source-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"resourcePath\"\n ],\n \"properties\": {\n \"resourcePath\": {\n \"type\": \"string\"\n },\n \"query\": {\n \"type\": \"object\"\n },\n \"sort\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"clearLocalData\": {\n \"type\": \"boolean\",\n \"default\": true\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"dataSource\"\n }\n ],\n \"validators\": [\n \"remote-resource-binding-safe\",\n \"local-remote-precedence-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"dataSource.resourcePath\",\n \"dataSource.query\",\n \"dataSource.sort\",\n \"dataSource.data\"\n ],\n \"submissionImpact\": \"affects-remote-binding\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"data.local.set\",\n \"title\": \"Set local list data\",\n \"scope\": \"dataBinding\",\n \"targetKind\": \"dataBinding\",\n \"target\": {\n \"kind\": \"dataBinding\",\n \"resolver\": \"data-source-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"data\"\n ],\n \"properties\": {\n \"data\": {\n \"type\": \"array\"\n },\n \"clearResourcePath\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"dataSource\"\n }\n ],\n \"validators\": [\n \"local-data-array-safe\",\n \"local-remote-precedence-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"dataSource\",\n \"dataSource.data\",\n \"dataSource.resourcePath\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"data.query.set\",\n \"title\": \"Set remote list query\",\n \"scope\": \"dataBinding\",\n \"targetKind\": \"dataBinding\",\n \"target\": {\n \"kind\": \"dataBinding\",\n \"resolver\": \"data-source-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"query\"\n ],\n \"properties\": {\n \"query\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"dataSource.query\"\n }\n ],\n \"validators\": [\n \"query-value-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"dataSource.query\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"data.sort.set\",\n \"title\": \"Set remote list sort\",\n \"scope\": \"dataBinding\",\n \"targetKind\": \"dataBinding\",\n \"target\": {\n \"kind\": \"dataBinding\",\n \"resolver\": \"data-source-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sort\"\n ],\n \"properties\": {\n \"sort\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"dataSource.sort\"\n }\n ],\n \"validators\": [\n \"sort-entry-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"dataSource.sort\",\n \"dataSource.sort[]\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"export.configure\",\n \"title\": \"Configure list collection export\",\n \"scope\": \"export\",\n \"targetKind\": \"export\",\n \"target\": {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"formats\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"csv\",\n \"json\",\n \"excel\",\n \"pdf\",\n \"print\"\n ]\n }\n },\n \"general\": {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": {\n \"enum\": [\n \"auto\",\n \"selected\",\n \"filtered\",\n \"currentPage\",\n \"all\"\n ]\n },\n \"includeHeaders\": {\n \"type\": \"boolean\"\n },\n \"maxRows\": {\n \"type\": \"number\"\n },\n \"defaultFileName\": {\n \"type\": \"string\"\n },\n \"includeFields\": {\n \"oneOf\": [\n {\n \"enum\": [\n \"all\"\n ]\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n ]\n },\n \"applyFormatting\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"export\"\n }\n ],\n \"validators\": [\n \"export-value-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"export\",\n \"export.enabled\",\n \"export.formats\",\n \"export.formats[]\",\n \"export.general.scope\",\n \"export.general.includeHeaders\",\n \"export.general.maxRows\",\n \"export.general.defaultFileName\",\n \"export.general.includeFields\",\n \"export.general.applyFormatting\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"ui.toolbar.configure\",\n \"title\": \"Configure list toolbar UI\",\n \"scope\": \"toolbarUi\",\n \"targetKind\": \"toolbarUi\",\n \"target\": {\n \"kind\": \"toolbarUi\",\n \"resolver\": \"ui-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"showSearch\": {\n \"type\": \"boolean\"\n },\n \"searchField\": {\n \"type\": \"string\"\n },\n \"searchPlaceholder\": {\n \"type\": \"string\"\n },\n \"showSort\": {\n \"type\": \"boolean\"\n },\n \"sortOptions\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"label\",\n \"value\"\n ],\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n }\n }\n ]\n }\n },\n \"showRange\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"ui\"\n }\n ],\n \"validators\": [\n \"bound-field-exists\",\n \"sort-entry-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"ui\",\n \"ui.showSearch\",\n \"ui.searchField\",\n \"ui.searchPlaceholder\",\n \"ui.showSort\",\n \"ui.sortOptions\",\n \"ui.sortOptions[].label\",\n \"ui.sortOptions[].value\",\n \"ui.showRange\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"i18n.configure\",\n \"title\": \"Configure list localization\",\n \"scope\": \"localization\",\n \"targetKind\": \"localization\",\n \"target\": {\n \"kind\": \"localization\",\n \"resolver\": \"i18n-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"currency\": {\n \"type\": \"string\"\n },\n \"localization\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"i18n\"\n }\n ],\n \"validators\": [\n \"i18n-value-supported\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"i18n\",\n \"i18n.locale\",\n \"i18n.currency\",\n \"i18n.localization\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"a11y.configure\",\n \"title\": \"Configure list accessibility\",\n \"scope\": \"accessibility\",\n \"targetKind\": \"accessibility\",\n \"target\": {\n \"kind\": \"accessibility\",\n \"resolver\": \"a11y-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"ariaLabel\": {\n \"type\": \"string\"\n },\n \"ariaLabelledBy\": {\n \"type\": \"string\"\n },\n \"highContrast\": {\n \"type\": \"boolean\"\n },\n \"reduceMotion\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"a11y\"\n }\n ],\n \"validators\": [\n \"a11y-value-supported\",\n \"declared-only-runtime-warning\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"a11y\",\n \"a11y.ariaLabel\",\n \"a11y.ariaLabelledBy\",\n \"a11y.highContrast\",\n \"a11y.reduceMotion\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"events.map\",\n \"title\": \"Configure declarative event mappings\",\n \"scope\": \"eventMapping\",\n \"targetKind\": \"eventMapping\",\n \"target\": {\n \"kind\": \"eventMapping\",\n \"resolver\": \"events-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"itemClick\": {\n \"type\": \"string\"\n },\n \"actionClick\": {\n \"type\": \"string\"\n },\n \"selectionChange\": {\n \"type\": \"string\"\n },\n \"exportAction\": {\n \"type\": \"string\"\n },\n \"loaded\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"events\"\n }\n ],\n \"validators\": [\n \"event-name-supported\",\n \"declared-only-runtime-warning\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"events\",\n \"events.itemClick\",\n \"events.actionClick\",\n \"events.selectionChange\",\n \"events.exportAction\",\n \"events.loaded\"\n ],\n \"submissionImpact\": \"config-only\",\n \"destructive\": false,\n \"requiresConfirmation\": false,\n \"preconditions\": [\n \"config-initialized\"\n ]\n }\n ],\n \"validators\": [\n {\n \"validatorId\": \"list-id-stable\",\n \"level\": \"error\",\n \"code\": \"PL000\",\n \"description\": \"List id must remain stable for persistence and editor reopen flows.\"\n },\n {\n \"validatorId\": \"bound-field-exists\",\n \"level\": \"error\",\n \"code\": \"PL001\",\n \"description\": \"Bound template and selection fields must exist in local data or schema context when available.\"\n },\n {\n \"validatorId\": \"template-expression-safe\",\n \"level\": \"error\",\n \"code\": \"PL002\",\n \"description\": \"Template expressions must use supported ${item.path} syntax and allowed pipes.\"\n },\n {\n \"validatorId\": \"action-id-stable\",\n \"level\": \"error\",\n \"code\": \"PL003\",\n \"description\": \"Item actions must declare stable unique ids.\"\n },\n {\n \"validatorId\": \"action-exists\",\n \"level\": \"error\",\n \"code\": \"PL004\",\n \"description\": \"Target action id must exist before update or removal.\"\n },\n {\n \"validatorId\": \"destructive-removal-confirmation\",\n \"level\": \"error\",\n \"code\": \"PL005\",\n \"description\": \"Destructive action removal requires explicit confirmation.\"\n },\n {\n \"validatorId\": \"remote-resource-binding-safe\",\n \"level\": \"error\",\n \"code\": \"PL006\",\n \"description\": \"Remote resource binding must use canonical resource metadata and safe resourcePath values.\"\n },\n {\n \"validatorId\": \"local-remote-precedence-safe\",\n \"level\": \"warning\",\n \"code\": \"PL007\",\n \"description\": \"When binding resourcePath, tools must account for dataSource.data taking precedence over remote data.\"\n },\n {\n \"validatorId\": \"selection-mode-supported\",\n \"level\": \"error\",\n \"code\": \"PL008\",\n \"description\": \"Selection mode and return policy must match the runtime enum.\"\n },\n {\n \"validatorId\": \"layout-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL009\",\n \"description\": \"Layout density and related enum values must match PraxisListConfig.\"\n },\n {\n \"validatorId\": \"json-logic-valid\",\n \"level\": \"error\",\n \"code\": \"PL010\",\n \"description\": \"Action visibility conditions must be serializable Json Logic.\"\n },\n {\n \"validatorId\": \"global-action-ref-valid\",\n \"level\": \"warning\",\n \"code\": \"PL011\",\n \"description\": \"Structured globalAction refs must use a registered action id when registry context is available.\"\n },\n {\n \"validatorId\": \"editor-round-trip-preserve\",\n \"level\": \"error\",\n \"code\": \"PL012\",\n \"description\": \"The list config editor and JSON editor must preserve the saved shape without drift.\"\n },\n {\n \"validatorId\": \"template-slot-supported\",\n \"level\": \"error\",\n \"code\": \"PL013\",\n \"description\": \"Template slot names must be one of the runtime-supported catalog slots.\"\n },\n {\n \"validatorId\": \"skin-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL014\",\n \"description\": \"Skin values must match the runtime-supported skin contract.\"\n },\n {\n \"validatorId\": \"style-value-safe\",\n \"level\": \"warning\",\n \"code\": \"PL015\",\n \"description\": \"Inline styles and classes must be safe for the host sanitization policy.\"\n },\n {\n \"validatorId\": \"template-display-supported\",\n \"level\": \"error\",\n \"code\": \"PL016\",\n \"description\": \"Template display options must match the runtime enum contract.\"\n },\n {\n \"validatorId\": \"skeleton-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL017\",\n \"description\": \"Skeleton counts must be numeric and non-negative.\"\n },\n {\n \"validatorId\": \"local-data-array-safe\",\n \"level\": \"error\",\n \"code\": \"PL018\",\n \"description\": \"Local list data must be an array and must not hide an intended remote binding accidentally.\"\n },\n {\n \"validatorId\": \"sort-entry-supported\",\n \"level\": \"error\",\n \"code\": \"PL019\",\n \"description\": \"Sort entries must use the canonical field,direction format or labeled sort option shape.\"\n },\n {\n \"validatorId\": \"query-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL031\",\n \"description\": \"Remote list query must be a serializable object compatible with the resource filter contract.\"\n },\n {\n \"validatorId\": \"i18n-value-supported\",\n \"level\": \"warning\",\n \"code\": \"PL020\",\n \"description\": \"Locale and currency values should be valid BCP 47 / ISO currency values when host validation is available.\"\n },\n {\n \"validatorId\": \"a11y-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL021\",\n \"description\": \"Accessibility labels must be non-empty when provided.\"\n },\n {\n \"validatorId\": \"export-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL030\",\n \"description\": \"Export formats and scopes must match the shared collection export contract.\"\n },\n {\n \"validatorId\": \"event-name-supported\",\n \"level\": \"warning\",\n \"code\": \"PL022\",\n \"description\": \"Declarative event names must be stable host event identifiers.\"\n },\n {\n \"validatorId\": \"declared-only-runtime-warning\",\n \"level\": \"warning\",\n \"code\": \"PL023\",\n \"description\": \"Fields documented as declared-only may round-trip through config/editor without changing current runtime behavior.\"\n },\n {\n \"validatorId\": \"row-layout-supported\",\n \"level\": \"error\",\n \"code\": \"PL024\",\n \"description\": \"Row layout columns must use supported slots and enum values.\"\n },\n {\n \"validatorId\": \"row-layout-placement-reachable\",\n \"level\": \"warning\",\n \"code\": \"PL025\",\n \"description\": \"Action and expansion placements must be reachable from the active row layout.\"\n },\n {\n \"validatorId\": \"interaction-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL026\",\n \"description\": \"Interaction expansion values must match the runtime enum contract.\"\n },\n {\n \"validatorId\": \"rule-id-stable\",\n \"level\": \"error\",\n \"code\": \"PL027\",\n \"description\": \"List style and slot override rules must declare stable unique ids.\"\n },\n {\n \"validatorId\": \"expansion-section-id-stable\",\n \"level\": \"error\",\n \"code\": \"PL028\",\n \"description\": \"Expansion sections must declare stable unique ids.\"\n },\n {\n \"validatorId\": \"expansion-value-supported\",\n \"level\": \"error\",\n \"code\": \"PL029\",\n \"description\": \"Expansion section, data source, schema contract and rendering values must match the runtime contract.\"\n }\n ],\n \"roundTripRequirements\": [\n \"List editor must preserve templating.primary, templating.secondary, templating.leading, templating.trailing and templating.emptyState.\",\n \"Actions must round-trip by actions[].id rather than array index.\",\n \"Rules must round-trip by rules.itemStyles[].id and rules.slotOverrides[].id rather than array index.\",\n \"Expansion sections must round-trip by expansion.sections[].id rather than array index.\",\n \"Row layout must preserve executive slots identity, balance, limit, risk, alerts, owner, actions and expand.\",\n \"Export configuration must preserve the shared collection export scope and format contract.\",\n \"dataSource.data precedence over dataSource.resourcePath must remain explicit when binding remote resources.\"\n ],\n \"examples\": [\n {\n \"id\": \"set-list-id\",\n \"request\": \"Set the stable list id to employees-list.\",\n \"operationId\": \"list.id.set\",\n \"params\": {\n \"id\": \"employees-list\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"bind-title-subtitle-fields\",\n \"request\": \"Use name as title and department as subtitle.\",\n \"operationId\": \"item.primaryText.set\",\n \"params\": {\n \"type\": \"text\",\n \"expr\": \"${item.name}\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"bind-secondary-field\",\n \"request\": \"Show department below the title.\",\n \"operationId\": \"item.secondaryText.set\",\n \"params\": {\n \"type\": \"text\",\n \"expr\": \"${item.department}\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-avatar-image\",\n \"request\": \"Use photoUrl as the item avatar.\",\n \"operationId\": \"item.avatar.configure\",\n \"params\": {\n \"type\": \"image\",\n \"expr\": \"${item.photoUrl}\",\n \"imageAlt\": \"Employee photo\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-template-slot\",\n \"request\": \"Set the meta slot to show the employee score.\",\n \"operationId\": \"template.slot.set\",\n \"params\": {\n \"slot\": \"meta\",\n \"template\": {\n \"type\": \"metric\",\n \"expr\": \"${item.score}\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-item-action\",\n \"request\": \"Add an edit action to every item.\",\n \"operationId\": \"item.action.add\",\n \"params\": {\n \"id\": \"edit\",\n \"label\": \"Edit\",\n \"icon\": \"edit\",\n \"kind\": \"icon\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"update-item-action-placement\",\n \"request\": \"Move the edit action into the dedicated actions column and show loading.\",\n \"operationId\": \"item.action.update\",\n \"params\": {\n \"id\": \"edit\",\n \"placement\": \"actions\",\n \"showLoading\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-navigation-open-route-action\",\n \"request\": \"Add an item action that opens the guide route with the selected employee id.\",\n \"operationId\": \"item.action.add\",\n \"params\": {\n \"id\": \"open-guide-route\",\n \"label\": \"Abrir Guia\",\n \"icon\": \"travel_explore\",\n \"kind\": \"button\",\n \"buttonVariant\": \"stroked\",\n \"globalAction\": {\n \"actionId\": \"navigation.openRoute\",\n \"payload\": {\n \"path\": \"/components-showcase/surface-open-guide\",\n \"query\": {\n \"funcionarioId\": \"${item.id}\"\n },\n \"state\": {\n \"funcionarioId\": \"${item.id}\",\n \"source\": \"surface-open-list-demo\"\n }\n }\n },\n \"emitLocal\": false,\n \"showLoading\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"remove-item-action-with-confirmation\",\n \"request\": \"Remove the edit action after confirmation.\",\n \"operationId\": \"item.action.remove\",\n \"params\": {\n \"id\": \"edit\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-badge-from-status\",\n \"request\": \"Show a status badge in the item corner.\",\n \"operationId\": \"item.badge.configure\",\n \"params\": {\n \"expr\": \"${item.status}\",\n \"statusPosition\": \"top-right\",\n \"color\": \"primary\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"switch-selection-mode\",\n \"request\": \"Allow selecting multiple employees by id.\",\n \"operationId\": \"selection.mode.set\",\n \"params\": {\n \"mode\": \"multiple\",\n \"compareBy\": \"id\",\n \"return\": \"id\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-compact-density\",\n \"request\": \"Make the list compact.\",\n \"operationId\": \"layout.density.set\",\n \"params\": {\n \"density\": \"compact\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"reject-missing-field-binding\",\n \"request\": \"Use missingField as the list title.\",\n \"operationId\": \"item.primaryText.set\",\n \"params\": {\n \"type\": \"text\",\n \"expr\": \"${item.missingField}\"\n },\n \"isPositive\": false\n },\n {\n \"id\": \"configure-list-skin\",\n \"request\": \"Use an elevated card skin with rounded corners.\",\n \"operationId\": \"skin.configure\",\n \"params\": {\n \"type\": \"elevated\",\n \"radius\": \"8px\",\n \"shadow\": \"var(--mat-sys-level2)\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-list-toolbar\",\n \"request\": \"Show search by name and sort by created date.\",\n \"operationId\": \"ui.toolbar.configure\",\n \"params\": {\n \"showSearch\": true,\n \"searchField\": \"name\",\n \"showSort\": true,\n \"sortOptions\": [\n {\n \"label\": \"Newest\",\n \"value\": \"createdAt,desc\"\n }\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-accessibility-label\",\n \"request\": \"Set an accessible label for the customer list.\",\n \"operationId\": \"a11y.configure\",\n \"params\": {\n \"ariaLabel\": \"Customer list\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-list-export\",\n \"request\": \"Enable CSV export for selected list rows.\",\n \"operationId\": \"export.configure\",\n \"params\": {\n \"enabled\": true,\n \"formats\": [\n \"csv\"\n ],\n \"general\": {\n \"scope\": \"selected\",\n \"includeFields\": [\n \"id\",\n \"name\"\n ]\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"map-declarative-events\",\n \"request\": \"Map selection changes to the customerSelectionChanged event name.\",\n \"operationId\": \"events.map\",\n \"params\": {\n \"selectionChange\": \"customerSelectionChanged\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-template-display\",\n \"request\": \"Move status chips to the top right and hide feature labels.\",\n \"operationId\": \"templating.display.configure\",\n \"params\": {\n \"statusPosition\": \"top-right\",\n \"featuresMode\": \"icons-only\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-feature-line\",\n \"request\": \"Show the amenities feature line.\",\n \"operationId\": \"templating.features.set\",\n \"params\": {\n \"features\": [\n {\n \"icon\": \"wifi\",\n \"expr\": \"${item.hasWifi}\"\n }\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-skeleton-count\",\n \"request\": \"Render six skeleton rows while loading.\",\n \"operationId\": \"templating.skeleton.configure\",\n \"params\": {\n \"count\": 6\n },\n \"isPositive\": true\n },\n {\n \"id\": \"override-risk-slot\",\n \"request\": \"Show a warning icon in the risk slot for high-risk rows.\",\n \"operationId\": \"rules.slotOverride.upsert\",\n \"params\": {\n \"id\": \"high-risk-icon\",\n \"slot\": \"risk\",\n \"condition\": {\n \"==\": [\n {\n \"var\": \"row.risk\"\n },\n \"high\"\n ]\n },\n \"template\": {\n \"type\": \"icon\",\n \"expr\": \"warning\",\n \"color\": \"warn\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-empty-state\",\n \"request\": \"Show an empty employee message.\",\n \"operationId\": \"emptyState.set\",\n \"params\": {\n \"type\": \"text\",\n \"expr\": \"No employees found\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"bind-remote-resource\",\n \"request\": \"Bind the list to the employees resource.\",\n \"operationId\": \"data.resource.bind\",\n \"params\": {\n \"resourcePath\": \"employees\",\n \"sort\": [\n \"name,asc\"\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-local-data\",\n \"request\": \"Use a local employee array for the list.\",\n \"operationId\": \"data.local.set\",\n \"params\": {\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"Ana\"\n }\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-remote-query\",\n \"request\": \"Filter remote employees by active status.\",\n \"operationId\": \"data.query.set\",\n \"params\": {\n \"query\": {\n \"status\": \"active\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-remote-sort\",\n \"request\": \"Sort remote employees by name ascending.\",\n \"operationId\": \"data.sort.set\",\n \"params\": {\n \"sort\": [\n \"name,asc\"\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-list-i18n\",\n \"request\": \"Use Brazilian Portuguese and BRL defaults.\",\n \"operationId\": \"i18n.configure\",\n \"params\": {\n \"locale\": \"pt-BR\",\n \"currency\": \"BRL\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-row-layout-executive-slots\",\n \"request\": \"Use an executive row with identity, balance and actions columns.\",\n \"operationId\": \"layout.rowLayout.configure\",\n \"params\": {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"slot\": \"identity\",\n \"width\": \"280px\"\n },\n {\n \"slot\": \"balance\",\n \"width\": \"1fr\"\n },\n {\n \"slot\": \"actions\",\n \"width\": \"auto\"\n }\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-inline-expansion\",\n \"request\": \"Allow expanding one row at a time using the expand icon.\",\n \"operationId\": \"interaction.expansion.configure\",\n \"params\": {\n \"expandable\": true,\n \"expandTrigger\": \"icon\",\n \"expandMode\": \"single\",\n \"expandPlacement\": \"expand\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-expansion-section\",\n \"request\": \"Add a detail expansion section backed by item details.\",\n \"operationId\": \"expansion.configure\",\n \"params\": {\n \"sections\": [\n {\n \"id\": \"details\",\n \"type\": \"metadata\",\n \"title\": \"Details\",\n \"itemsExpr\": \"${item.details}\"\n }\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"style-high-risk-items\",\n \"request\": \"Highlight rows where risk is high.\",\n \"operationId\": \"rules.itemStyle.upsert\",\n \"params\": {\n \"id\": \"high-risk\",\n \"condition\": {\n \"==\": [\n {\n \"var\": \"row.risk\"\n },\n \"high\"\n ]\n },\n \"class\": \"risk-high\"\n },\n \"isPositive\": true\n }\n ]\n}",
|
|
6718
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"identity\"}",
|
|
6689
6719
|
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6690
|
-
"contentHash": "
|
|
6720
|
+
"contentHash": "c8646d00551d6b4cad1fe9182c92792defbf0afb0c2a11311244f0f527f01d84",
|
|
6691
6721
|
"sourceKind": "component_definition",
|
|
6692
6722
|
"sourceId": "praxis-list",
|
|
6693
6723
|
"corpusVersion": "1.0.0"
|
|
6694
6724
|
},
|
|
6695
6725
|
{
|
|
6696
|
-
"chunkIndex":
|
|
6726
|
+
"chunkIndex": 6,
|
|
6727
|
+
"chunkKind": "authoring_manifest",
|
|
6728
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"config\",\"type\":\"PraxisListConfig\",\"description\":\"Canonical list configuration.\"},{\"name\":\"listId\",\"type\":\"string\",\"description\":\"Stable list id used by persistence.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables runtime authoring surfaces.\"}]}",
|
|
6729
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6730
|
+
"contentHash": "dae18a7672ab9932c1a25bba04fb50d358240878679ea29ebca5e87799172024",
|
|
6731
|
+
"sourceKind": "component_definition",
|
|
6732
|
+
"sourceId": "praxis-list",
|
|
6733
|
+
"corpusVersion": "1.0.0"
|
|
6734
|
+
},
|
|
6735
|
+
{
|
|
6736
|
+
"chunkIndex": 7,
|
|
6737
|
+
"chunkKind": "authoring_manifest",
|
|
6738
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"itemTemplate\",\"resolver\":\"list-template-slot\",\"description\":\"Template slot under templating.*.\"},{\"kind\":\"primaryText\",\"resolver\":\"templating-primary\",\"description\":\"Primary text template.\"},{\"kind\":\"secondaryText\",\"resolver\":\"templating-secondary\",\"description\":\"Secondary text template.\"},{\"kind\":\"avatar\",\"resolver\":\"templating-leading\",\"description\":\"Leading/avatar template.\"},{\"kind\":\"badge\",\"resolver\":\"templating-trailing-chip\",\"description\":\"Trailing badge/status template.\"},{\"kind\":\"itemAction\",\"resolver\":\"actions-by-id\",\"description\":\"Item action resolved by actions[].id.\"},{\"kind\":\"emptyState\",\"resolver\":\"templating-empty-state\",\"description\":\"Empty state template.\"},{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"description\":\"Selection configuration.\"},{\"kind\":\"layout\",\"resolver\":\"layout-config\",\"description\":\"Layout configuration.\"},{\"kind\":\"rowLayout\",\"resolver\":\"row-layout-config\",\"description\":\"Row layout grid/flex columns and placement slots.\"},{\"kind\":\"dataBinding\",\"resolver\":\"data-source-config\",\"description\":\"Local or remote data source binding.\"},{\"kind\":\"interaction\",\"resolver\":\"interaction-config\",\"description\":\"Expandable row interaction configuration.\"},{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"description\":\"Inline expansion sections, data source and rendering configuration.\"},{\"kind\":\"rules\",\"resolver\":\"rules-config\",\"description\":\"Item style rules and slot override rules.\"},{\"kind\":\"meta\",\"resolver\":\"list-root-config\",\"description\":\"Root list metadata such as id.\"},{\"kind\":\"skin\",\"resolver\":\"skin-config\",\"description\":\"Visual skin configuration.\"},{\"kind\":\"toolbarUi\",\"resolver\":\"ui-config\",\"description\":\"Search, sort and footer UI configuration.\"},{\"kind\":\"export\",\"resolver\":\"export-config\",\"description\":\"Collection export configuration.\"},{\"kind\":\"localization\",\"resolver\":\"i18n-config\",\"description\":\"Locale and currency configuration.\"},{\"kind\":\"accessibility\",\"resolver\":\"a11y-config\",\"description\":\"Accessibility configuration.\"},{\"kind\":\"eventMapping\",\"resolver\":\"events-config\",\"description\":\"Declarative event name mappings.\"}]}",
|
|
6739
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6740
|
+
"contentHash": "fbdb230611a0e5e7e37b8b1a190e0ddda043a7d1421bae012b8082d07b6df5b2",
|
|
6741
|
+
"sourceKind": "component_definition",
|
|
6742
|
+
"sourceId": "praxis-list",
|
|
6743
|
+
"corpusVersion": "1.0.0"
|
|
6744
|
+
},
|
|
6745
|
+
{
|
|
6746
|
+
"chunkIndex": 8,
|
|
6747
|
+
"chunkKind": "authoring_manifest",
|
|
6748
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"list.id.set\",\"title\":\"Set list id\",\"scope\":\"meta\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"list-root-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"id\"}],\"validators\":[\"list-id-stable\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"id\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"item.primaryText.set\",\"title\":\"Set primary item text\",\"scope\":\"itemTemplate\",\"targetKind\":\"primaryText\",\"target\":{\"kind\":\"primaryText\",\"resolver\":\"templating-primary\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\",\"expr\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"chip\",\"rating\",\"currency\",\"date\",\"html\",\"slot\",\"metric\",\"compose\",\"component\"]},\"expr\":{\"type\":\"string\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"imageAlt\":{\"type\":\"string\"},\"props\":{\"type\":\"object\",\"properties\":{\"rating\":{\"type\":\"object\",\"properties\":{\"max\":{\"type\":\"number\"},\"size\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"}}},\"metric\":{\"type\":\"object\",\"properties\":{\"label\":{\"type\":\"string\"},\"valueExpr\":{\"type\":\"string\"},\"caption\":{\"type\":\"string\"},\"subcaption\":{\"type\":\"string\"},\"captionPosition\":{\"enum\":[\"below-value\",\"below-progress\"]},\"icon\":{\"type\":\"string\"},\"iconExpr\":{\"type\":\"string\"},\"tone\":{\"type\":\"string\"},\"toneExpr\":{\"type\":\"string\"},\"layout\":{\"enum\":[\"value-only\",\"value+caption\",\"icon+value+caption\",\"stacked-center\"]},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"progress\":{\"type\":\"object\",\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"},\"mode\":{\"enum\":[\"determinate\",\"indeterminate\"]},\"color\":{\"type\":\"string\"},\"colorExpr\":{\"type\":\"string\"},\"trackColor\":{\"type\":\"string\"}}},\"valueClass\":{\"type\":\"string\"},\"valueStyle\":{\"type\":\"string\"},\"showBar\":{\"type\":\"boolean\"},\"barValueExpr\":{\"type\":\"string\"},\"barColor\":{\"type\":\"string\"},\"barVariant\":{\"enum\":[\"determinate\",\"indeterminate\"]},\"legendExpr\":{\"type\":\"string\"},\"iconPosition\":{\"enum\":[\"left\",\"right\",\"top\"]},\"iconColorExpr\":{\"type\":\"string\"}}},\"compose\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"nodes\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"direction\":{\"enum\":[\"row\",\"column\"]},\"orientation\":{\"enum\":[\"horizontal\",\"vertical\"]},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"gap\":{\"type\":\"string\"},\"wrap\":{\"type\":\"boolean\"},\"separator\":{\"type\":\"string\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}},\"component\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"inputs\":{\"type\":\"object\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}}}},\"badge\":{\"type\":\"object\",\"properties\":{\"expr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"filled\",\"outlined\"]}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating.primary\"}],\"validators\":[\"bound-field-exists\",\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.primary\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"item.secondaryText.set\",\"title\":\"Set secondary item text\",\"scope\":\"itemTemplate\",\"targetKind\":\"secondaryText\",\"target\":{\"kind\":\"secondaryText\",\"resolver\":\"templating-secondary\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating.secondary\"}],\"validators\":[\"bound-field-exists\",\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.secondary\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"item.avatar.configure\",\"title\":\"Configure item avatar\",\"scope\":\"itemTemplate\",\"targetKind\":\"avatar\",\"target\":{\"kind\":\"avatar\",\"resolver\":\"templating-leading\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"required\":[\"type\"]},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating.leading\"}],\"validators\":[\"bound-field-exists\",\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.leading\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"item.badge.configure\",\"title\":\"Configure item badge\",\"scope\":\"itemTemplate\",\"targetKind\":\"badge\",\"target\":{\"kind\":\"badge\",\"resolver\":\"templating-trailing-chip\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"expr\"],\"properties\":{\"expr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"statusPosition\":{\"enum\":[\"inline\",\"top-right\"]},\"labelMap\":{\"type\":\"object\"},\"colorMap\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating.trailing\"},{\"kind\":\"set-value\",\"path\":\"templating.statusPosition\"},{\"kind\":\"merge-object\",\"path\":\"templating.chipLabelMap\"},{\"kind\":\"merge-object\",\"path\":\"templating.chipColorMap\"}],\"validators\":[\"bound-field-exists\",\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.trailing\",\"templating.statusPosition\",\"templating.chipLabelMap\",\"templating.chipColorMap\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"template.slot.set\",\"title\":\"Set any list template slot\",\"scope\":\"templating\",\"targetKind\":\"itemTemplate\",\"target\":{\"kind\":\"itemTemplate\",\"resolver\":\"list-template-slot\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"slot\",\"template\"],\"properties\":{\"slot\":{\"enum\":[\"leading\",\"primary\",\"secondary\",\"meta\",\"trailing\",\"identity\",\"balance\",\"limit\",\"risk\",\"alerts\",\"owner\",\"sectionHeader\",\"emptyState\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"list-template-slot-set\",\"handlerContract\":{\"reads\":[\"templating\"],\"writes\":[\"templating.leading\",\"templating.primary\",\"templating.secondary\",\"templating.meta\",\"templating.trailing\",\"templating.identity\",\"templating.balance\",\"templating.limit\",\"templating.risk\",\"templating.alerts\",\"templating.owner\",\"templating.sectionHeader\",\"templating.emptyState\"],\"identityKeys\":[\"slot\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"slot\",\"template\"],\"properties\":{\"slot\":{}}},\"failureModes\":[\"unsupported-template-slot\",\"invalid-template-expression\",\"ambiguous-template-slot\"],\"description\":\"Writes the requested template into one supported templating slot; slot is the stable identity, not array position.\"}}],\"validators\":[\"template-slot-supported\",\"bound-field-exists\",\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.leading\",\"templating.primary\",\"templating.secondary\",\"templating.meta\",\"templating.trailing\",\"templating.identity\",\"templating.balance\",\"templating.limit\",\"templating.risk\",\"templating.alerts\",\"templating.owner\",\"templating.sectionHeader\",\"templating.emptyState\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]}]}",
|
|
6749
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6750
|
+
"contentHash": "b94e7efc63f3b6dec4b2356ff8f945184701f4ecf634ab787371a682274c0f8f",
|
|
6751
|
+
"sourceKind": "component_definition",
|
|
6752
|
+
"sourceId": "praxis-list",
|
|
6753
|
+
"corpusVersion": "1.0.0"
|
|
6754
|
+
},
|
|
6755
|
+
{
|
|
6756
|
+
"chunkIndex": 9,
|
|
6757
|
+
"chunkKind": "authoring_manifest",
|
|
6758
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"item.action.add\",\"title\":\"Add item action\",\"scope\":\"itemAction\",\"targetKind\":\"itemAction\",\"target\":{\"kind\":\"itemAction\",\"resolver\":\"actions-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"kind\":{\"enum\":[\"icon\",\"button\"]},\"buttonVariant\":{\"enum\":[\"stroked\",\"raised\",\"flat\"]},\"showIf\":{\"type\":\"object\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\"},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"},\"meta\":{\"type\":\"object\"}}},\"emitLocal\":{\"type\":\"boolean\"},\"showLoading\":{\"type\":\"boolean\"},\"placement\":{\"enum\":[\"actions\",\"trailing\"]},\"confirmation\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"type\":{\"enum\":[\"danger\",\"warning\",\"info\"]}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions[]\",\"key\":\"id\"}],\"validators\":[\"action-id-stable\",\"json-logic-valid\",\"global-action-ref-valid\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"actions[]\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"item.action.update\",\"title\":\"Update item action\",\"scope\":\"itemAction\",\"targetKind\":\"itemAction\",\"target\":{\"kind\":\"itemAction\",\"resolver\":\"actions-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"required\":[\"id\"]},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"actions[]\",\"key\":\"id\"}],\"validators\":[\"action-exists\",\"action-id-stable\",\"json-logic-valid\",\"global-action-ref-valid\",\"declared-only-runtime-warning\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"actions\",\"actions[].id\",\"actions[].icon\",\"actions[].label\",\"actions[].color\",\"actions[].kind\",\"actions[].buttonVariant\",\"actions[].showIf\",\"actions[].globalAction.[actionId]\",\"actions[].globalAction.payload\",\"actions[].globalAction.payloadExpr\",\"actions[].emitLocal\",\"actions[].showLoading\",\"actions[].placement\",\"actions[].confirmation\",\"actions[].confirmation.title\",\"actions[].confirmation.message\",\"actions[].confirmation.type\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"item.action.remove\",\"title\":\"Remove item action\",\"scope\":\"itemAction\",\"targetKind\":\"itemAction\",\"target\":{\"kind\":\"itemAction\",\"resolver\":\"actions-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"actions[]\",\"key\":\"id\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"action-exists\",\"destructive-removal-confirmation\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"actions[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"selection.mode.set\",\"title\":\"Set selection mode\",\"scope\":\"selection\",\"targetKind\":\"selection\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"mode\"],\"properties\":{\"mode\":{\"enum\":[\"none\",\"single\",\"multiple\"]},\"compareBy\":{\"type\":\"string\"},\"return\":{\"enum\":[\"value\",\"item\",\"id\"]},\"formControlName\":{\"type\":\"string\"},\"formControlPath\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"selection\"}],\"validators\":[\"selection-mode-supported\",\"bound-field-exists\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"selection\",\"selection.mode\",\"selection.formControlName\",\"selection.formControlPath\",\"selection.compareBy\",\"selection.return\"],\"submissionImpact\":\"affects-submission\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"interaction.expansion.configure\",\"title\":\"Configure expandable row interaction\",\"scope\":\"interaction\",\"targetKind\":\"interaction\",\"target\":{\"kind\":\"interaction\",\"resolver\":\"interaction-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"expandable\":{\"type\":\"boolean\"},\"expandTrigger\":{\"enum\":[\"row\",\"icon\",\"row+icon\"]},\"expandMode\":{\"enum\":[\"single\",\"multiple\"]},\"expandPlacement\":{\"enum\":[\"expand\",\"trailing\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"interaction\"}],\"validators\":[\"interaction-value-supported\",\"row-layout-placement-reachable\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"interaction\",\"interaction.expandable\",\"interaction.expandTrigger\",\"interaction.expandMode\",\"interaction.expandPlacement\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"layout.density.set\",\"title\":\"Set list density\",\"scope\":\"layout\",\"targetKind\":\"layout\",\"target\":{\"kind\":\"layout\",\"resolver\":\"layout-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"density\":{\"enum\":[\"default\",\"comfortable\",\"compact\"]},\"variant\":{\"enum\":[\"list\",\"cards\",\"tiles\"]},\"itemSpacing\":{\"enum\":[\"none\",\"tight\",\"default\",\"relaxed\"]},\"lines\":{\"enum\":[1,2,3]},\"dividers\":{\"enum\":[\"none\",\"between\",\"all\"]},\"model\":{\"enum\":[\"standard\",\"media\",\"hotel\"]},\"groupBy\":{\"type\":\"string\"},\"stickySectionHeader\":{\"type\":\"boolean\"},\"virtualScroll\":{\"type\":\"boolean\"},\"pageSize\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"layout\"}],\"validators\":[\"layout-value-supported\",\"bound-field-exists\",\"declared-only-runtime-warning\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"layout\",\"layout.variant\",\"layout.density\",\"layout.itemSpacing\",\"layout.lines\",\"layout.dividers\",\"layout.model\",\"layout.groupBy\",\"layout.stickySectionHeader\",\"layout.virtualScroll\",\"layout.pageSize\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"layout.rowLayout.configure\",\"title\":\"Configure list row layout\",\"scope\":\"rowLayout\",\"targetKind\":\"rowLayout\",\"target\":{\"kind\":\"rowLayout\",\"resolver\":\"row-layout-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"type\":{\"enum\":[\"grid\",\"flex\"]},\"columns\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"slot\"],\"properties\":{\"slot\":{\"enum\":[null,\"actions\",\"expand\"]},\"width\":{\"type\":\"string\"},\"minWidth\":{\"type\":\"string\"},\"maxWidth\":{\"type\":\"string\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"justify\":{\"enum\":[\"start\",\"center\",\"end\",\"stretch\"]},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}}},\"gap\":{\"type\":\"string\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\",\"stretch\"]},\"itemAlignY\":{\"enum\":[\"start\",\"center\",\"end\",\"stretch\"]},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"layout.rowLayout\"}],\"validators\":[\"row-layout-supported\",\"row-layout-placement-reachable\",\"style-value-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"layout.rowLayout\",\"layout.rowLayout.type\",\"layout.rowLayout.columns\",\"layout.rowLayout.columns[].slot\",\"layout.rowLayout.columns[].width\",\"layout.rowLayout.columns[].minWidth\",\"layout.rowLayout.columns[].maxWidth\",\"layout.rowLayout.columns[].align\",\"layout.rowLayout.columns[].justify\",\"layout.rowLayout.columns[].class\",\"layout.rowLayout.columns[].style\",\"layout.rowLayout.gap\",\"layout.rowLayout.align\",\"layout.rowLayout.itemAlignY\",\"layout.rowLayout.class\",\"layout.rowLayout.style\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]}]}",
|
|
6759
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6760
|
+
"contentHash": "369061c4681b22a268c1b129f9d626e8aadfb098378e7271726999fa26c5b3d0",
|
|
6761
|
+
"sourceKind": "component_definition",
|
|
6762
|
+
"sourceId": "praxis-list",
|
|
6763
|
+
"corpusVersion": "1.0.0"
|
|
6764
|
+
},
|
|
6765
|
+
{
|
|
6766
|
+
"chunkIndex": 10,
|
|
6767
|
+
"chunkKind": "authoring_manifest",
|
|
6768
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"skin.configure\",\"title\":\"Configure list skin\",\"scope\":\"skin\",\"targetKind\":\"skin\",\"target\":{\"kind\":\"skin\",\"resolver\":\"skin-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"type\":{\"enum\":[\"pill-soft\",\"gradient-tile\",\"glass\",\"elevated\",\"outline\",\"flat\",\"neumorphism\",\"custom\"]},\"gradient\":{\"type\":\"object\",\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"type\":\"string\"},\"angle\":{\"type\":\"number\"}}},\"radius\":{\"type\":\"string\"},\"shadow\":{\"type\":\"string\"},\"border\":{\"type\":\"string\"},\"backdropBlur\":{\"type\":\"string\"},\"class\":{\"type\":\"string\"},\"inlineStyle\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"skin\"}],\"validators\":[\"skin-value-supported\",\"style-value-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"skin\",\"skin.type\",\"skin.gradient\",\"skin.gradient.from\",\"skin.gradient.to\",\"skin.gradient.angle\",\"skin.radius\",\"skin.shadow\",\"skin.border\",\"skin.backdropBlur\",\"skin.class\",\"skin.inlineStyle\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"templating.display.configure\",\"title\":\"Configure list template display options\",\"scope\":\"templating\",\"targetKind\":\"itemTemplate\",\"target\":{\"kind\":\"itemTemplate\",\"resolver\":\"templating-display-options\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"metaPlacement\":{\"enum\":[\"side\",\"line\"]},\"metaPrefixIcon\":{\"type\":\"string\"},\"statusPosition\":{\"enum\":[\"inline\",\"top-right\"]},\"chipColorMap\":{\"type\":\"object\"},\"chipLabelMap\":{\"type\":\"object\"},\"iconColorMap\":{\"type\":\"object\"},\"featuresVisible\":{\"type\":\"boolean\"},\"featuresMode\":{\"enum\":[\"icons+labels\",\"icons-only\",\"labels-only\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating\"}],\"validators\":[\"template-display-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating\",\"templating.metaPlacement\",\"templating.metaPrefixIcon\",\"templating.statusPosition\",\"templating.chipColorMap\",\"templating.chipLabelMap\",\"templating.iconColorMap\",\"templating.featuresVisible\",\"templating.featuresMode\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"templating.features.set\",\"title\":\"Set list feature line\",\"scope\":\"templating\",\"targetKind\":\"itemTemplate\",\"target\":{\"kind\":\"itemTemplate\",\"resolver\":\"templating-features\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"features\"],\"properties\":{\"features\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"expr\"],\"properties\":{\"icon\":{\"type\":\"string\"},\"expr\":{\"type\":\"string\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"templating.features\"}],\"validators\":[\"bound-field-exists\",\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.features\",\"templating.features[].icon\",\"templating.features[].expr\",\"templating.features[].class\",\"templating.features[].style\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"templating.skeleton.configure\",\"title\":\"Configure list skeleton\",\"scope\":\"templating\",\"targetKind\":\"itemTemplate\",\"target\":{\"kind\":\"itemTemplate\",\"resolver\":\"templating-skeleton\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"count\"],\"properties\":{\"count\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating.skeleton\"}],\"validators\":[\"skeleton-value-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.skeleton\",\"templating.skeleton.count\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rules.itemStyle.upsert\",\"title\":\"Upsert item style rule\",\"scope\":\"rules\",\"targetKind\":\"rules\",\"target\":{\"kind\":\"rules\",\"resolver\":\"rules-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"condition\":{\"type\":\"object\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"},\"border\":{\"type\":\"string\"},\"background\":{\"type\":\"string\"},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"item-style\"]},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"},\"border\":{\"type\":\"string\"},\"background\":{\"type\":\"string\"}}}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"rules.itemStyles[]\",\"key\":\"id\"}],\"validators\":[\"rule-id-stable\",\"json-logic-valid\",\"style-value-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"rules\",\"rules.itemStyles\",\"rules.itemStyles[].id\",\"rules.itemStyles[].condition\",\"rules.itemStyles[].class\",\"rules.itemStyles[].style\",\"rules.itemStyles[].border\",\"rules.itemStyles[].background\",\"rules.itemStyles[].effects\",\"rules.itemStyles[].effects[].kind\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rules.slotOverride.upsert\",\"title\":\"Upsert slot override rule\",\"scope\":\"rules\",\"targetKind\":\"rules\",\"target\":{\"kind\":\"rules\",\"resolver\":\"rules-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"slot\"],\"properties\":{\"id\":{\"type\":\"string\"},\"slot\":{},\"condition\":{\"type\":\"object\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"},\"hide\":{\"type\":\"boolean\"},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"slot-override\"]},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"},\"hide\":{\"type\":\"boolean\"}}}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"rules.slotOverrides[]\",\"key\":\"id\"}],\"validators\":[\"rule-id-stable\",\"template-slot-supported\",\"json-logic-valid\",\"template-expression-safe\",\"style-value-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"rules\",\"rules.slotOverrides\",\"rules.slotOverrides[].id\",\"rules.slotOverrides[].slot\",\"rules.slotOverrides[].condition\",\"rules.slotOverrides[].template\",\"rules.slotOverrides[].class\",\"rules.slotOverrides[].style\",\"rules.slotOverrides[].hide\",\"rules.slotOverrides[].effects\",\"rules.slotOverrides[].effects[].kind\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"emptyState.set\",\"title\":\"Set empty state\",\"scope\":\"itemTemplate\",\"targetKind\":\"emptyState\",\"target\":{\"kind\":\"emptyState\",\"resolver\":\"templating-empty-state\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"templating.emptyState\"}],\"validators\":[\"template-expression-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"templating.emptyState\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]}]}",
|
|
6769
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6770
|
+
"contentHash": "5e53f23d6c96df44cbcc27c4fedb969a417159978c9739b80499d8d4d9be8352",
|
|
6771
|
+
"sourceKind": "component_definition",
|
|
6772
|
+
"sourceId": "praxis-list",
|
|
6773
|
+
"corpusVersion": "1.0.0"
|
|
6774
|
+
},
|
|
6775
|
+
{
|
|
6776
|
+
"chunkIndex": 11,
|
|
6777
|
+
"chunkKind": "authoring_manifest",
|
|
6778
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"expansion.configure\",\"title\":\"Configure list expansion\",\"scope\":\"expansion\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"sections\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"type\"],\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"type\":{\"enum\":[\"info-list\",\"chip-list\",\"timeline\",\"key-value\",\"metadata\",\"component\",\"rich-content\"]},\"itemsExpr\":{\"type\":\"string\"},\"document\":{\"type\":\"object\"},\"documentExpr\":{\"type\":\"string\"},\"emptyLabel\":{\"type\":\"string\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"orientation\":{\"enum\":[\"horizontal\",\"vertical\"]},\"columns\":{\"enum\":[1,2,3]},\"gap\":{\"type\":\"string\"},\"keyClass\":{\"type\":\"string\"},\"valueClass\":{\"type\":\"string\"},\"keyStyle\":{\"type\":\"string\"},\"valueStyle\":{\"type\":\"string\"}}},\"component\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"inputs\":{\"type\":\"object\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"},\"showIf\":{\"type\":\"object\"}}}},\"dataSource\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"inline\",\"resource\",\"resourcePath\"]},\"resource\":{\"type\":\"object\",\"properties\":{\"kind\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"resourcePath\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"paramsMap\":{\"type\":\"object\"}}},\"resourceAllowList\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"fallbackMode\":{\"enum\":[\"none\",\"inline\",\"resource\"]},\"cache\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"}}},\"cancelOnCollapse\":{\"type\":\"boolean\"}}},\"schemaContract\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"praxis.detail.schema\"]},\"version\":{\"type\":\"string\"},\"allowedNodes\":{\"type\":\"array\",\"items\":{\"enum\":[\"info-list\",\"chip-list\",\"timeline\",\"key-value\",\"metadata\",\"component\",\"rich-content\"]}},\"maxSections\":{\"type\":\"number\"},\"maxItemsPerSection\":{\"type\":\"number\"},\"requireSectionIds\":{\"type\":\"boolean\"}}},\"rendering\":{\"type\":\"object\",\"properties\":{\"shell\":{\"enum\":[\"attached\",\"detached\",\"modal\"]},\"columns\":{\"enum\":[1,2,3]},\"gap\":{\"type\":\"string\"},\"padding\":{\"type\":\"string\"},\"class\":{\"type\":\"string\"},\"style\":{\"type\":\"string\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"expansion\"}],\"validators\":[\"expansion-section-id-stable\",\"expansion-value-supported\",\"json-logic-valid\",\"template-expression-safe\",\"remote-resource-binding-safe\",\"style-value-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"expansion\",\"expansion.sections\",\"expansion.sections[].id\",\"expansion.sections[].title\",\"expansion.sections[].type\",\"expansion.sections[].itemsExpr\",\"expansion.sections[].document\",\"expansion.sections[].documentExpr\",\"expansion.sections[].emptyLabel\",\"expansion.sections[].metadata\",\"expansion.sections[].component\",\"expansion.sections[].class\",\"expansion.sections[].style\",\"expansion.sections[].showIf\",\"expansion.dataSource\",\"expansion.dataSource.mode\",\"expansion.dataSource.resource\",\"expansion.dataSource.resource.kind\",\"expansion.dataSource.resource.id\",\"expansion.dataSource.resource.version\",\"expansion.dataSource.resourcePath\",\"expansion.dataSource.resourcePath.path\",\"expansion.dataSource.resourcePath.method\",\"expansion.dataSource.resourcePath.paramsMap\",\"expansion.dataSource.resourceAllowList\",\"expansion.dataSource.fallbackMode\",\"expansion.dataSource.cache\",\"expansion.dataSource.cache.enabled\",\"expansion.dataSource.cancelOnCollapse\",\"expansion.schemaContract\",\"expansion.schemaContract.kind\",\"expansion.schemaContract.version\",\"expansion.schemaContract.allowedNodes\",\"expansion.schemaContract.maxSections\",\"expansion.schemaContract.maxItemsPerSection\",\"expansion.schemaContract.requireSectionIds\",\"expansion.rendering\",\"expansion.rendering.shell\",\"expansion.rendering.columns\",\"expansion.rendering.gap\",\"expansion.rendering.padding\",\"expansion.rendering.class\",\"expansion.rendering.style\",\"expansion.rendering.loadingTemplate\",\"expansion.rendering.errorTemplate\"],\"submissionImpact\":\"affects-remote-binding\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"data.resource.bind\",\"title\":\"Bind remote resource\",\"scope\":\"dataBinding\",\"targetKind\":\"dataBinding\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"data-source-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourcePath\"],\"properties\":{\"resourcePath\":{\"type\":\"string\"},\"query\":{\"type\":\"object\"},\"sort\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"clearLocalData\":{\"type\":\"boolean\",\"default\":true}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"dataSource\"}],\"validators\":[\"remote-resource-binding-safe\",\"local-remote-precedence-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"dataSource.resourcePath\",\"dataSource.query\",\"dataSource.sort\",\"dataSource.data\"],\"submissionImpact\":\"affects-remote-binding\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"data.local.set\",\"title\":\"Set local list data\",\"scope\":\"dataBinding\",\"targetKind\":\"dataBinding\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"data-source-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"data\"],\"properties\":{\"data\":{\"type\":\"array\"},\"clearResourcePath\":{\"type\":\"boolean\",\"default\":false}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"dataSource\"}],\"validators\":[\"local-data-array-safe\",\"local-remote-precedence-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"dataSource\",\"dataSource.data\",\"dataSource.resourcePath\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"data.query.set\",\"title\":\"Set remote list query\",\"scope\":\"dataBinding\",\"targetKind\":\"dataBinding\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"data-source-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"query\"],\"properties\":{\"query\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"dataSource.query\"}],\"validators\":[\"query-value-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"dataSource.query\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"data.sort.set\",\"title\":\"Set remote list sort\",\"scope\":\"dataBinding\",\"targetKind\":\"dataBinding\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"data-source-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sort\"],\"properties\":{\"sort\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"dataSource.sort\"}],\"validators\":[\"sort-entry-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"dataSource.sort\",\"dataSource.sort[]\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]}]}",
|
|
6779
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6780
|
+
"contentHash": "954099a21bab26a14fb53e5e52f2d347f71066b4bff89eaeabe0f47a9b2b7e9d",
|
|
6781
|
+
"sourceKind": "component_definition",
|
|
6782
|
+
"sourceId": "praxis-list",
|
|
6783
|
+
"corpusVersion": "1.0.0"
|
|
6784
|
+
},
|
|
6785
|
+
{
|
|
6786
|
+
"chunkIndex": 12,
|
|
6787
|
+
"chunkKind": "authoring_manifest",
|
|
6788
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"export.configure\",\"title\":\"Configure list collection export\",\"scope\":\"export\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"csv\",\"json\",\"excel\",\"pdf\",\"print\"]}},\"general\":{\"type\":\"object\",\"properties\":{\"scope\":{\"enum\":[\"auto\",\"selected\",\"filtered\",\"currentPage\",\"all\"]},\"includeHeaders\":{\"type\":\"boolean\"},\"maxRows\":{\"type\":\"number\"},\"defaultFileName\":{\"type\":\"string\"},\"includeFields\":{\"oneOf\":[{\"enum\":[\"all\"]},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]},\"applyFormatting\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"validators\":[\"export-value-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"export\",\"export.enabled\",\"export.formats\",\"export.formats[]\",\"export.general.scope\",\"export.general.includeHeaders\",\"export.general.maxRows\",\"export.general.defaultFileName\",\"export.general.includeFields\",\"export.general.applyFormatting\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"ui.toolbar.configure\",\"title\":\"Configure list toolbar UI\",\"scope\":\"toolbarUi\",\"targetKind\":\"toolbarUi\",\"target\":{\"kind\":\"toolbarUi\",\"resolver\":\"ui-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"showSearch\":{\"type\":\"boolean\"},\"searchField\":{\"type\":\"string\"},\"searchPlaceholder\":{\"type\":\"string\"},\"showSort\":{\"type\":\"boolean\"},\"sortOptions\":{\"type\":\"array\",\"items\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"required\":[\"label\",\"value\"],\"properties\":{\"label\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"}}}]}},\"showRange\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"ui\"}],\"validators\":[\"bound-field-exists\",\"sort-entry-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"ui\",\"ui.showSearch\",\"ui.searchField\",\"ui.searchPlaceholder\",\"ui.showSort\",\"ui.sortOptions\",\"ui.sortOptions[].label\",\"ui.sortOptions[].value\",\"ui.showRange\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"i18n.configure\",\"title\":\"Configure list localization\",\"scope\":\"localization\",\"targetKind\":\"localization\",\"target\":{\"kind\":\"localization\",\"resolver\":\"i18n-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"locale\":{\"type\":\"string\"},\"currency\":{\"type\":\"string\"},\"localization\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"i18n\"}],\"validators\":[\"i18n-value-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"i18n\",\"i18n.locale\",\"i18n.currency\",\"i18n.localization\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"a11y.configure\",\"title\":\"Configure list accessibility\",\"scope\":\"accessibility\",\"targetKind\":\"accessibility\",\"target\":{\"kind\":\"accessibility\",\"resolver\":\"a11y-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelledBy\":{\"type\":\"string\"},\"highContrast\":{\"type\":\"boolean\"},\"reduceMotion\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"a11y\"}],\"validators\":[\"a11y-value-supported\",\"declared-only-runtime-warning\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"a11y\",\"a11y.ariaLabel\",\"a11y.ariaLabelledBy\",\"a11y.highContrast\",\"a11y.reduceMotion\"],\"submissionImpact\":\"visual-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"events.map\",\"title\":\"Configure declarative event mappings\",\"scope\":\"eventMapping\",\"targetKind\":\"eventMapping\",\"target\":{\"kind\":\"eventMapping\",\"resolver\":\"events-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"itemClick\":{\"type\":\"string\"},\"actionClick\":{\"type\":\"string\"},\"selectionChange\":{\"type\":\"string\"},\"exportAction\":{\"type\":\"string\"},\"loaded\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"events\"}],\"validators\":[\"event-name-supported\",\"declared-only-runtime-warning\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"events\",\"events.itemClick\",\"events.actionClick\",\"events.selectionChange\",\"events.exportAction\",\"events.loaded\"],\"submissionImpact\":\"config-only\",\"destructive\":false,\"requiresConfirmation\":false,\"preconditions\":[\"config-initialized\"]}]}",
|
|
6789
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6790
|
+
"contentHash": "8bac7efe7a9053824cd6081b6498dfcaa14f571f5cebe366a57732ab58234df3",
|
|
6791
|
+
"sourceKind": "component_definition",
|
|
6792
|
+
"sourceId": "praxis-list",
|
|
6793
|
+
"corpusVersion": "1.0.0"
|
|
6794
|
+
},
|
|
6795
|
+
{
|
|
6796
|
+
"chunkIndex": 13,
|
|
6797
|
+
"chunkKind": "authoring_manifest",
|
|
6798
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"list-id-stable\",\"level\":\"error\",\"code\":\"PL000\",\"description\":\"List id must remain stable for persistence and editor reopen flows.\"},{\"validatorId\":\"bound-field-exists\",\"level\":\"error\",\"code\":\"PL001\",\"description\":\"Bound template and selection fields must exist in local data or schema context when available.\"},{\"validatorId\":\"template-expression-safe\",\"level\":\"error\",\"code\":\"PL002\",\"description\":\"Template expressions must use supported ${item.path} syntax and allowed pipes.\"},{\"validatorId\":\"action-id-stable\",\"level\":\"error\",\"code\":\"PL003\",\"description\":\"Item actions must declare stable unique ids.\"},{\"validatorId\":\"action-exists\",\"level\":\"error\",\"code\":\"PL004\",\"description\":\"Target action id must exist before update or removal.\"},{\"validatorId\":\"destructive-removal-confirmation\",\"level\":\"error\",\"code\":\"PL005\",\"description\":\"Destructive action removal requires explicit confirmation.\"},{\"validatorId\":\"remote-resource-binding-safe\",\"level\":\"error\",\"code\":\"PL006\",\"description\":\"Remote resource binding must use canonical resource metadata and safe resourcePath values.\"},{\"validatorId\":\"local-remote-precedence-safe\",\"level\":\"warning\",\"code\":\"PL007\",\"description\":\"When binding resourcePath, tools must account for dataSource.data taking precedence over remote data.\"},{\"validatorId\":\"selection-mode-supported\",\"level\":\"error\",\"code\":\"PL008\",\"description\":\"Selection mode and return policy must match the runtime enum.\"},{\"validatorId\":\"layout-value-supported\",\"level\":\"error\",\"code\":\"PL009\",\"description\":\"Layout density and related enum values must match PraxisListConfig.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"PL010\",\"description\":\"Action visibility conditions must be serializable Json Logic.\"},{\"validatorId\":\"global-action-ref-valid\",\"level\":\"warning\",\"code\":\"PL011\",\"description\":\"Structured globalAction refs must use a registered action id when registry context is available.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"PL012\",\"description\":\"The list config editor and JSON editor must preserve the saved shape without drift.\"},{\"validatorId\":\"template-slot-supported\",\"level\":\"error\",\"code\":\"PL013\",\"description\":\"Template slot names must be one of the runtime-supported catalog slots.\"},{\"validatorId\":\"skin-value-supported\",\"level\":\"error\",\"code\":\"PL014\",\"description\":\"Skin values must match the runtime-supported skin contract.\"},{\"validatorId\":\"style-value-safe\",\"level\":\"warning\",\"code\":\"PL015\",\"description\":\"Inline styles and classes must be safe for the host sanitization policy.\"},{\"validatorId\":\"template-display-supported\",\"level\":\"error\",\"code\":\"PL016\",\"description\":\"Template display options must match the runtime enum contract.\"},{\"validatorId\":\"skeleton-value-supported\",\"level\":\"error\",\"code\":\"PL017\",\"description\":\"Skeleton counts must be numeric and non-negative.\"},{\"validatorId\":\"local-data-array-safe\",\"level\":\"error\",\"code\":\"PL018\",\"description\":\"Local list data must be an array and must not hide an intended remote binding accidentally.\"},{\"validatorId\":\"sort-entry-supported\",\"level\":\"error\",\"code\":\"PL019\",\"description\":\"Sort entries must use the canonical field,direction format or labeled sort option shape.\"},{\"validatorId\":\"query-value-supported\",\"level\":\"error\",\"code\":\"PL031\",\"description\":\"Remote list query must be a serializable object compatible with the resource filter contract.\"},{\"validatorId\":\"i18n-value-supported\",\"level\":\"warning\",\"code\":\"PL020\",\"description\":\"Locale and currency values should be valid BCP 47 / ISO currency values when host validation is available.\"},{\"validatorId\":\"a11y-value-supported\",\"level\":\"error\",\"code\":\"PL021\",\"description\":\"Accessibility labels must be non-empty when provided.\"},{\"validatorId\":\"export-value-supported\",\"level\":\"error\",\"code\":\"PL030\",\"description\":\"Export formats and scopes must match the shared collection export contract.\"},{\"validatorId\":\"event-name-supported\",\"level\":\"warning\",\"code\":\"PL022\",\"description\":\"Declarative event names must be stable host event identifiers.\"},{\"validatorId\":\"declared-only-runtime-warning\",\"level\":\"warning\",\"code\":\"PL023\",\"description\":\"Fields documented as declared-only may round-trip through config/editor without changing current runtime behavior.\"},{\"validatorId\":\"row-layout-supported\",\"level\":\"error\",\"code\":\"PL024\",\"description\":\"Row layout columns must use supported slots and enum values.\"},{\"validatorId\":\"row-layout-placement-reachable\",\"level\":\"warning\",\"code\":\"PL025\",\"description\":\"Action and expansion placements must be reachable from the active row layout.\"},{\"validatorId\":\"interaction-value-supported\",\"level\":\"error\",\"code\":\"PL026\",\"description\":\"Interaction expansion values must match the runtime enum contract.\"},{\"validatorId\":\"rule-id-stable\",\"level\":\"error\",\"code\":\"PL027\",\"description\":\"List style and slot override rules must declare stable unique ids.\"},{\"validatorId\":\"expansion-section-id-stable\",\"level\":\"error\",\"code\":\"PL028\",\"description\":\"Expansion sections must declare stable unique ids.\"},{\"validatorId\":\"expansion-value-supported\",\"level\":\"error\",\"code\":\"PL029\",\"description\":\"Expansion section, data source, schema contract and rendering values must match the runtime contract.\"}]}",
|
|
6799
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6800
|
+
"contentHash": "80897c186ca26d7dc6190d90d7eff5da8da644a68c48f88c121543a195bff252",
|
|
6801
|
+
"sourceKind": "component_definition",
|
|
6802
|
+
"sourceId": "praxis-list",
|
|
6803
|
+
"corpusVersion": "1.0.0"
|
|
6804
|
+
},
|
|
6805
|
+
{
|
|
6806
|
+
"chunkIndex": 14,
|
|
6807
|
+
"chunkKind": "authoring_manifest",
|
|
6808
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"List editor must preserve templating.primary, templating.secondary, templating.leading, templating.trailing and templating.emptyState.\",\"Actions must round-trip by actions[].id rather than array index.\",\"Rules must round-trip by rules.itemStyles[].id and rules.slotOverrides[].id rather than array index.\",\"Expansion sections must round-trip by expansion.sections[].id rather than array index.\",\"Row layout must preserve executive slots identity, balance, limit, risk, alerts, owner, actions and expand.\",\"Export configuration must preserve the shared collection export scope and format contract.\",\"dataSource.data precedence over dataSource.resourcePath must remain explicit when binding remote resources.\"]}",
|
|
6809
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6810
|
+
"contentHash": "65f9bf234e8cfa011581b8a7935745a0a32a18c90cae08c90285e31c05dee48a",
|
|
6811
|
+
"sourceKind": "component_definition",
|
|
6812
|
+
"sourceId": "praxis-list",
|
|
6813
|
+
"corpusVersion": "1.0.0"
|
|
6814
|
+
},
|
|
6815
|
+
{
|
|
6816
|
+
"chunkIndex": 15,
|
|
6817
|
+
"chunkKind": "authoring_manifest",
|
|
6818
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.1.0\",\"componentId\":\"praxis-list\",\"ownerPackage\":\"@praxisui/list\",\"configSchemaId\":\"PraxisListConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"set-list-id\",\"request\":\"Set the stable list id to employees-list.\",\"operationId\":\"list.id.set\",\"params\":{\"id\":\"employees-list\"},\"isPositive\":true},{\"id\":\"bind-title-subtitle-fields\",\"request\":\"Use name as title and department as subtitle.\",\"operationId\":\"item.primaryText.set\",\"params\":{\"type\":\"text\",\"expr\":\"${item.name}\"},\"isPositive\":true},{\"id\":\"bind-secondary-field\",\"request\":\"Show department below the title.\",\"operationId\":\"item.secondaryText.set\",\"params\":{\"type\":\"text\",\"expr\":\"${item.department}\"},\"isPositive\":true},{\"id\":\"configure-avatar-image\",\"request\":\"Use photoUrl as the item avatar.\",\"operationId\":\"item.avatar.configure\",\"params\":{\"type\":\"image\",\"expr\":\"${item.photoUrl}\",\"imageAlt\":\"Employee photo\"},\"isPositive\":true},{\"id\":\"set-template-slot\",\"request\":\"Set the meta slot to show the employee score.\",\"operationId\":\"template.slot.set\",\"params\":{\"slot\":\"meta\",\"template\":{\"type\":\"metric\",\"expr\":\"${item.score}\"}},\"isPositive\":true},{\"id\":\"add-item-action\",\"request\":\"Add an edit action to every item.\",\"operationId\":\"item.action.add\",\"params\":{\"id\":\"edit\",\"label\":\"Edit\",\"icon\":\"edit\",\"kind\":\"icon\"},\"isPositive\":true},{\"id\":\"update-item-action-placement\",\"request\":\"Move the edit action into the dedicated actions column and show loading.\",\"operationId\":\"item.action.update\",\"params\":{\"id\":\"edit\",\"placement\":\"actions\",\"showLoading\":true},\"isPositive\":true},{\"id\":\"add-navigation-open-route-action\",\"request\":\"Add an item action that opens the guide route with the selected employee id.\",\"operationId\":\"item.action.add\",\"params\":{\"id\":\"open-guide-route\",\"label\":\"Abrir Guia\",\"icon\":\"travel_explore\",\"kind\":\"button\",\"buttonVariant\":\"stroked\",\"globalAction\":{\"actionId\":\"navigation.openRoute\",\"payload\":{\"path\":\"/components-showcase/surface-open-guide\",\"query\":{\"funcionarioId\":\"${item.id}\"},\"state\":{\"funcionarioId\":\"${item.id}\",\"source\":\"surface-open-list-demo\"}}},\"emitLocal\":false,\"showLoading\":true},\"isPositive\":true},{\"id\":\"remove-item-action-with-confirmation\",\"request\":\"Remove the edit action after confirmation.\",\"operationId\":\"item.action.remove\",\"params\":{\"id\":\"edit\"},\"isPositive\":true},{\"id\":\"configure-badge-from-status\",\"request\":\"Show a status badge in the item corner.\",\"operationId\":\"item.badge.configure\",\"params\":{\"expr\":\"${item.status}\",\"statusPosition\":\"top-right\",\"color\":\"primary\"},\"isPositive\":true},{\"id\":\"switch-selection-mode\",\"request\":\"Allow selecting multiple employees by id.\",\"operationId\":\"selection.mode.set\",\"params\":{\"mode\":\"multiple\",\"compareBy\":\"id\",\"return\":\"id\"},\"isPositive\":true},{\"id\":\"set-compact-density\",\"request\":\"Make the list compact.\",\"operationId\":\"layout.density.set\",\"params\":{\"density\":\"compact\"},\"isPositive\":true},{\"id\":\"reject-missing-field-binding\",\"request\":\"Use missingField as the list title.\",\"operationId\":\"item.primaryText.set\",\"params\":{\"type\":\"text\",\"expr\":\"${item.missingField}\"},\"isPositive\":false},{\"id\":\"configure-list-skin\",\"request\":\"Use an elevated card skin with rounded corners.\",\"operationId\":\"skin.configure\",\"params\":{\"type\":\"elevated\",\"radius\":\"8px\",\"shadow\":\"var(--mat-sys-level2)\"},\"isPositive\":true},{\"id\":\"configure-list-toolbar\",\"request\":\"Show search by name and sort by created date.\",\"operationId\":\"ui.toolbar.configure\",\"params\":{\"showSearch\":true,\"searchField\":\"name\",\"showSort\":true,\"sortOptions\":[{\"label\":\"Newest\",\"value\":\"createdAt,desc\"}]},\"isPositive\":true},{\"id\":\"configure-accessibility-label\",\"request\":\"Set an accessible label for the customer list.\",\"operationId\":\"a11y.configure\",\"params\":{\"ariaLabel\":\"Customer list\"},\"isPositive\":true},{\"id\":\"configure-list-export\",\"request\":\"Enable CSV export for selected list rows.\",\"operationId\":\"export.configure\",\"params\":{\"enabled\":true,\"formats\":[\"csv\"],\"general\":{\"scope\":\"selected\",\"includeFields\":[\"id\",\"name\"]}},\"isPositive\":true},{\"id\":\"map-declarative-events\",\"request\":\"Map selection changes to the customerSelectionChanged event name.\",\"operationId\":\"events.map\",\"params\":{\"selectionChange\":\"customerSelectionChanged\"},\"isPositive\":true},{\"id\":\"configure-template-display\",\"request\":\"Move status chips to the top right and hide feature labels.\",\"operationId\":\"templating.display.configure\",\"params\":{\"statusPosition\":\"top-right\",\"featuresMode\":\"icons-only\"},\"isPositive\":true},{\"id\":\"set-feature-line\",\"request\":\"Show the amenities feature line.\",\"operationId\":\"templating.features.set\",\"params\":{\"features\":[{\"icon\":\"wifi\",\"expr\":\"${item.hasWifi}\"}]},\"isPositive\":true},{\"id\":\"configure-skeleton-count\",\"request\":\"Render six skeleton rows while loading.\",\"operationId\":\"templating.skeleton.configure\",\"params\":{\"count\":6},\"isPositive\":true},{\"id\":\"override-risk-slot\",\"request\":\"Show a warning icon in the risk slot for high-risk rows.\",\"operationId\":\"rules.slotOverride.upsert\",\"params\":{\"id\":\"high-risk-icon\",\"slot\":\"risk\",\"condition\":{\"==\":[{\"var\":\"row.risk\"},\"high\"]},\"template\":{\"type\":\"icon\",\"expr\":\"warning\",\"color\":\"warn\"}},\"isPositive\":true},{\"id\":\"set-empty-state\",\"request\":\"Show an empty employee message.\",\"operationId\":\"emptyState.set\",\"params\":{\"type\":\"text\",\"expr\":\"No employees found\"},\"isPositive\":true},{\"id\":\"bind-remote-resource\",\"request\":\"Bind the list to the employees resource.\",\"operationId\":\"data.resource.bind\",\"params\":{\"resourcePath\":\"employees\",\"sort\":[\"name,asc\"]},\"isPositive\":true},{\"id\":\"set-local-data\",\"request\":\"Use a local employee array for the list.\",\"operationId\":\"data.local.set\",\"params\":{\"data\":[{\"id\":1,\"name\":\"Ana\"}]},\"isPositive\":true},{\"id\":\"set-remote-query\",\"request\":\"Filter remote employees by active status.\",\"operationId\":\"data.query.set\",\"params\":{\"query\":{\"status\":\"active\"}},\"isPositive\":true},{\"id\":\"set-remote-sort\",\"request\":\"Sort remote employees by name ascending.\",\"operationId\":\"data.sort.set\",\"params\":{\"sort\":[\"name,asc\"]},\"isPositive\":true},{\"id\":\"configure-list-i18n\",\"request\":\"Use Brazilian Portuguese and BRL defaults.\",\"operationId\":\"i18n.configure\",\"params\":{\"locale\":\"pt-BR\",\"currency\":\"BRL\"},\"isPositive\":true},{\"id\":\"configure-row-layout-executive-slots\",\"request\":\"Use an executive row with identity, balance and actions columns.\",\"operationId\":\"layout.rowLayout.configure\",\"params\":{\"type\":\"grid\",\"columns\":[{\"slot\":\"identity\",\"width\":\"280px\"},{\"slot\":\"balance\",\"width\":\"1fr\"},{\"slot\":\"actions\",\"width\":\"auto\"}]},\"isPositive\":true},{\"id\":\"enable-inline-expansion\",\"request\":\"Allow expanding one row at a time using the expand icon.\",\"operationId\":\"interaction.expansion.configure\",\"params\":{\"expandable\":true,\"expandTrigger\":\"icon\",\"expandMode\":\"single\",\"expandPlacement\":\"expand\"},\"isPositive\":true},{\"id\":\"add-expansion-section\",\"request\":\"Add a detail expansion section backed by item details.\",\"operationId\":\"expansion.configure\",\"params\":{\"sections\":[{\"id\":\"details\",\"type\":\"metadata\",\"title\":\"Details\",\"itemsExpr\":\"${item.details}\"}]},\"isPositive\":true},{\"id\":\"style-high-risk-items\",\"request\":\"Highlight rows where risk is high.\",\"operationId\":\"rules.itemStyle.upsert\",\"params\":{\"id\":\"high-risk\",\"condition\":{\"==\":[{\"var\":\"row.risk\"},\"high\"]},\"class\":\"risk-high\"},\"isPositive\":true}]}",
|
|
6819
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/praxis-list-authoring-manifest.ts",
|
|
6820
|
+
"contentHash": "35a00f0a3972647d92b5992ebd19eda0574fdda4b4bf111187c6be63a650cd05",
|
|
6821
|
+
"sourceKind": "component_definition",
|
|
6822
|
+
"sourceId": "praxis-list",
|
|
6823
|
+
"corpusVersion": "1.0.0"
|
|
6824
|
+
},
|
|
6825
|
+
{
|
|
6826
|
+
"chunkIndex": 16,
|
|
6697
6827
|
"chunkKind": "context_pack",
|
|
6698
|
-
"content": "{\n \"componentContext\": {\n \"version\": \"v1\",\n \"hints\": [\n \"Use actions[].id and templating.features[].expr as merge keys; avoid array indexes.\",\n \"Template expressions support only ${item.path} with simple pipes (bool/date/map/number).\",\n \"dataSource.data overrides resourcePath; prefer one or the other for clarity.\",\n \"layout.lines expects numeric values (1, 2, 3).\",\n \"DOC: Widget purpose: list/cards with selection, grouping, and templating.\",\n \"DOC: Host inputs: config (required) and listId (required); form is optional; enableCustomization is the canonical customization input.\",\n \"DOC: Minimal data source: dataSource.data (inline) or dataSource.resourcePath (API).\",\n \"DOC: Minimal rendering: set templating.primary.expr (label) or templating.secondary.expr.\"\n ],\n \"optionsByPath\": {\n \"layout.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"list\",\n \"label\": \"List\"\n },\n {\n \"value\": \"cards\",\n \"label\": \"Cards\"\n },\n {\n \"value\": \"tiles\",\n \"label\": \"Tiles\"\n }\n ]\n },\n \"layout.density\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"default\",\n \"label\": \"Default\"\n },\n {\n \"value\": \"comfortable\",\n \"label\": \"Comfortable\"\n },\n {\n \"value\": \"compact\",\n \"label\": \"Compact\"\n }\n ]\n },\n \"layout.itemSpacing\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"none\",\n \"label\": \"None\"\n },\n {\n \"value\": \"tight\",\n \"label\": \"Tight\"\n },\n {\n \"value\": \"default\",\n \"label\": \"Default\"\n },\n {\n \"value\": \"relaxed\",\n \"label\": \"Relaxed\"\n }\n ]\n },\n \"layout.lines\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": 1,\n \"label\": \"1 line\"\n },\n {\n \"value\": 2,\n \"label\": \"2 lines\"\n },\n {\n \"value\": 3,\n \"label\": \"3 lines\"\n }\n ]\n },\n \"layout.dividers\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"none\",\n \"label\": \"None\"\n },\n {\n \"value\": \"between\",\n \"label\": \"Between\"\n },\n {\n \"value\": \"all\",\n \"label\": \"All\"\n }\n ]\n },\n \"layout.model\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"standard\",\n \"label\": \"Standard\"\n },\n {\n \"value\": \"media\",\n \"label\": \"Media\"\n },\n {\n \"value\": \"hotel\",\n \"label\": \"Hotel\"\n }\n ]\n },\n \"selection.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"none\",\n \"label\": \"None\"\n },\n {\n \"value\": \"single\",\n \"label\": \"Single\"\n },\n {\n \"value\": \"multiple\",\n \"label\": \"Multiple\"\n }\n ]\n },\n \"selection.return\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"value\",\n \"label\": \"Value\"\n },\n {\n \"value\": \"item\",\n \"label\": \"Item\"\n },\n {\n \"value\": \"id\",\n \"label\": \"Id\"\n }\n ]\n },\n \"skin.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"pill-soft\",\n \"label\": \"Pill soft\"\n },\n {\n \"value\": \"gradient-tile\",\n \"label\": \"Gradient tile\"\n },\n {\n \"value\": \"glass\",\n \"label\": \"Glass\"\n },\n {\n \"value\": \"elevated\",\n \"label\": \"Elevated\"\n },\n {\n \"value\": \"outline\",\n \"label\": \"Outline\"\n },\n {\n \"value\": \"flat\",\n \"label\": \"Flat\"\n },\n {\n \"value\": \"neumorphism\",\n \"label\": \"Neumorphism\"\n },\n {\n \"value\": \"custom\",\n \"label\": \"Custom\"\n }\n ]\n },\n \"templating.leading.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"slot\",\n \"label\": \"Slot\"\n }\n ]\n },\n \"templating.primary.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n }\n ]\n },\n \"templating.secondary.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n }\n ]\n },\n \"templating.meta.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"slot\",\n \"label\": \"Slot\"\n }\n ]\n },\n \"templating.trailing.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"slot\",\n \"label\": \"Slot\"\n }\n ]\n },\n \"templating.sectionHeader.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"slot\",\n \"label\": \"Slot\"\n }\n ]\n },\n \"templating.emptyState.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"slot\",\n \"label\": \"Slot\"\n }\n ]\n },\n \"templating.leading.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.primary.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.secondary.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.meta.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.trailing.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.sectionHeader.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.emptyState.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"templating.metaPlacement\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"side\",\n \"label\": \"Side\"\n },\n {\n \"value\": \"line\",\n \"label\": \"Line\"\n }\n ]\n },\n \"templating.statusPosition\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"inline\",\n \"label\": \"Inline\"\n },\n {\n \"value\": \"top-right\",\n \"label\": \"Top right\"\n }\n ]\n },\n \"templating.meta.props.rating.max\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": 5,\n \"label\": \"5 estrelas\"\n },\n {\n \"value\": 10,\n \"label\": \"10 pontos\"\n }\n ]\n },\n \"templating.meta.props.rating.size\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": 12,\n \"label\": \"Compacto\"\n },\n {\n \"value\": 16,\n \"label\": \"Padrão\"\n },\n {\n \"value\": 20,\n \"label\": \"Destaque\"\n }\n ]\n },\n \"templating.meta.props.rating.color\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n },\n {\n \"value\": \"var(--md-sys-color-tertiary)\",\n \"label\": \"M3 Tertiary\"\n }\n ]\n },\n \"templating.featuresMode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icons+labels\",\n \"label\": \"Icons + labels\"\n },\n {\n \"value\": \"icons-only\",\n \"label\": \"Icons only\"\n },\n {\n \"value\": \"labels-only\",\n \"label\": \"Labels only\"\n }\n ]\n },\n \"actions[].kind\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n }\n ]\n },\n \"actions[].buttonVariant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"stroked\",\n \"label\": \"Stroked\"\n },\n {\n \"value\": \"raised\",\n \"label\": \"Raised\"\n },\n {\n \"value\": \"flat\",\n \"label\": \"Flat\"\n }\n ]\n },\n \"actions[].globalAction.[actionId]\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"toast.success\",\n \"label\": \"Toast success\"\n },\n {\n \"value\": \"toast.error\",\n \"label\": \"Toast error\"\n },\n {\n \"value\": \"dialog.alert\",\n \"label\": \"Dialog alert\"\n },\n {\n \"value\": \"dialog.open\",\n \"label\": \"Dialog open\"\n },\n {\n \"value\": \"navigation.openExternal\",\n \"label\": \"Open external URL\"\n },\n {\n \"value\": \"navigation.openRoute\",\n \"label\": \"Open internal route\"\n },\n {\n \"value\": \"api.post\",\n \"label\": \"API POST\"\n },\n {\n \"value\": \"api.patch\",\n \"label\": \"API PATCH\"\n }\n ]\n },\n \"actions[].globalAction.payloadExpr\": {\n \"mode\": \"expression\"\n }\n },\n \"actionCatalog\": [\n {\n \"id\": \"dataSource.resourcePath.set\",\n \"intentExamples\": [\n \"resource\",\n \"endpoint\",\n \"api\",\n \"path\"\n ],\n \"patchTemplate\": {\n \"dataSource\": {\n \"resourcePath\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"dataSource.sort.set\",\n \"intentExamples\": [\n \"sort\",\n \"order\",\n \"ordenar\"\n ],\n \"patchTemplate\": {\n \"dataSource\": {\n \"sort\": [\n \"{{value}}\"\n ]\n }\n }\n },\n {\n \"id\": \"layout.variant.set\",\n \"intentExamples\": [\n \"layout\",\n \"variant\",\n \"list\",\n \"cards\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"variant\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"layout.variant.set.tiles\",\n \"intentExamples\": [\n \"tiles\",\n \"grid\",\n \"cards grid\",\n \"catalog\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"variant\": \"tiles\"\n }\n }\n },\n {\n \"id\": \"layout.variant.set.list\",\n \"intentExamples\": [\n \"list\",\n \"lista\",\n \"linha\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"variant\": \"list\"\n }\n }\n },\n {\n \"id\": \"layout.variant.set.cards\",\n \"intentExamples\": [\n \"cards\",\n \"card\",\n \"cartões\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"variant\": \"cards\"\n }\n }\n },\n {\n \"id\": \"layout.density.set\",\n \"intentExamples\": [\n \"density\",\n \"compact\",\n \"comfortable\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"density\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"layout.density.compact\",\n \"intentExamples\": [\n \"compact\",\n \"dense\",\n \"mais itens\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"density\": \"compact\"\n }\n }\n },\n {\n \"id\": \"layout.density.comfortable\",\n \"intentExamples\": [\n \"comfortable\",\n \"confortável\",\n \"mais espaço\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"density\": \"comfortable\"\n }\n }\n },\n {\n \"id\": \"layout.lines.set.1\",\n \"intentExamples\": [\n \"lines\",\n \"1 line\",\n \"one line\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"lines\": 1\n }\n }\n },\n {\n \"id\": \"layout.lines.set.2\",\n \"intentExamples\": [\n \"lines\",\n \"2 lines\",\n \"two lines\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"lines\": 2\n }\n }\n },\n {\n \"id\": \"layout.lines.set.3\",\n \"intentExamples\": [\n \"lines\",\n \"3 lines\",\n \"three lines\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"lines\": 3\n }\n }\n },\n {\n \"id\": \"layout.dividers.none\",\n \"intentExamples\": [\n \"no dividers\",\n \"sem divisores\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"dividers\": \"none\"\n }\n }\n },\n {\n \"id\": \"layout.dividers.between\",\n \"intentExamples\": [\n \"dividers\",\n \"separadores\",\n \"entre itens\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"dividers\": \"between\"\n }\n }\n },\n {\n \"id\": \"layout.dividers.set\",\n \"intentExamples\": [\n \"divider\",\n \"dividers\",\n \"separators\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"dividers\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"layout.model.set\",\n \"intentExamples\": [\n \"model\",\n \"card style\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"model\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"layout.groupBy.set\",\n \"intentExamples\": [\n \"group\",\n \"group by\",\n \"section\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"groupBy\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"layout.groupBy.department\",\n \"intentExamples\": [\n \"department\",\n \"setor\",\n \"área\",\n \"group by department\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"groupBy\": \"department\",\n \"stickySectionHeader\": true\n },\n \"templating\": {\n \"sectionHeader\": {\n \"type\": \"chip\",\n \"expr\": \"${item.key}\",\n \"color\": \"primary\"\n }\n }\n }\n },\n {\n \"id\": \"layout.groupBy.status\",\n \"intentExamples\": [\n \"status group\",\n \"group by status\",\n \"agrupado por status\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"groupBy\": \"status\",\n \"stickySectionHeader\": true\n },\n \"templating\": {\n \"sectionHeader\": {\n \"type\": \"text\",\n \"expr\": \"${item.key}\"\n }\n }\n }\n },\n {\n \"id\": \"layout.groupBy.category\",\n \"intentExamples\": [\n \"category\",\n \"categoria\",\n \"group by category\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"groupBy\": \"category\",\n \"stickySectionHeader\": true\n },\n \"templating\": {\n \"sectionHeader\": {\n \"type\": \"chip\",\n \"expr\": \"${item.key}\",\n \"color\": \"accent\"\n }\n }\n }\n },\n {\n \"id\": \"layout.groupBy.date\",\n \"intentExamples\": [\n \"date group\",\n \"group by date\",\n \"agrupado por data\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"groupBy\": \"date\",\n \"stickySectionHeader\": true\n },\n \"templating\": {\n \"sectionHeader\": {\n \"type\": \"text\",\n \"expr\": \"${item.key|date:pt-BR:short}\"\n }\n }\n }\n },\n {\n \"id\": \"layout.stickyHeader.enable\",\n \"intentExamples\": [\n \"sticky\",\n \"section header\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"stickySectionHeader\": true\n }\n }\n },\n {\n \"id\": \"layout.stickyHeader.disable\",\n \"intentExamples\": [\n \"sticky\",\n \"section header\",\n \"disable\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"stickySectionHeader\": false\n }\n }\n },\n {\n \"id\": \"layout.pageSize.set.10\",\n \"intentExamples\": [\n \"page size\",\n \"pagination\",\n \"10\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"pageSize\": 10\n }\n }\n },\n {\n \"id\": \"layout.pageSize.set.20\",\n \"intentExamples\": [\n \"page size\",\n \"pagination\",\n \"20\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"pageSize\": 20\n }\n }\n },\n {\n \"id\": \"layout.pageSize.set.50\",\n \"intentExamples\": [\n \"page size\",\n \"pagination\",\n \"50\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"pageSize\": 50\n }\n }\n },\n {\n \"id\": \"selection.mode.set\",\n \"intentExamples\": [\n \"selection\",\n \"select\",\n \"multi\",\n \"single\"\n ],\n \"patchTemplate\": {\n \"selection\": {\n \"mode\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"selection.mode.single\",\n \"intentExamples\": [\n \"single select\",\n \"seleção única\"\n ],\n \"patchTemplate\": {\n \"selection\": {\n \"mode\": \"single\",\n \"return\": \"value\"\n }\n }\n },\n {\n \"id\": \"selection.mode.multiple\",\n \"intentExamples\": [\n \"multi select\",\n \"seleção múltipla\"\n ],\n \"patchTemplate\": {\n \"selection\": {\n \"mode\": \"multiple\",\n \"return\": \"id\"\n }\n }\n },\n {\n \"id\": \"selection.compareBy.set\",\n \"intentExamples\": [\n \"compare\",\n \"key\",\n \"identity\"\n ],\n \"patchTemplate\": {\n \"selection\": {\n \"compareBy\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"selection.return.set\",\n \"intentExamples\": [\n \"return\",\n \"payload\",\n \"selection output\"\n ],\n \"patchTemplate\": {\n \"selection\": {\n \"return\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"skin.type.set\",\n \"intentExamples\": [\n \"skin\",\n \"theme\",\n \"style\"\n ],\n \"patchTemplate\": {\n \"skin\": {\n \"type\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"skin.glass\",\n \"intentExamples\": [\n \"glass\",\n \"vidro\",\n \"blur\"\n ],\n \"patchTemplate\": {\n \"skin\": {\n \"type\": \"glass\",\n \"backdropBlur\": \"12px\",\n \"border\": \"1px solid var(--md-sys-color-outline-variant)\"\n }\n }\n },\n {\n \"id\": \"skin.gradient.tile\",\n \"intentExamples\": [\n \"gradient\",\n \"tile\",\n \"degradê\"\n ],\n \"patchTemplate\": {\n \"skin\": {\n \"type\": \"gradient-tile\",\n \"gradient\": {\n \"from\": \"var(--md-sys-color-primary)\",\n \"to\": \"var(--md-sys-color-tertiary)\",\n \"angle\": 135\n }\n }\n }\n },\n {\n \"id\": \"templating.primary.set\",\n \"intentExamples\": [\n \"primary\",\n \"title\",\n \"main text\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"primary\": {\n \"type\": \"{{params.type}}\",\n \"expr\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"templating.secondary.set\",\n \"intentExamples\": [\n \"secondary\",\n \"subtitle\",\n \"detail text\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"secondary\": {\n \"type\": \"{{params.type}}\",\n \"expr\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"templating.meta.set\",\n \"intentExamples\": [\n \"meta\",\n \"side text\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"meta\": {\n \"type\": \"{{params.type}}\",\n \"expr\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"templating.meta.rating.set\",\n \"intentExamples\": [\n \"rating\",\n \"stars\",\n \"nota\",\n \"score\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"meta\": {\n \"type\": \"rating\",\n \"expr\": \"${item.rating}\",\n \"props\": {\n \"rating\": {\n \"max\": 5,\n \"size\": 16,\n \"color\": \"primary\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"templating.meta.currency.set\",\n \"intentExamples\": [\n \"price\",\n \"preço\",\n \"valor\",\n \"currency\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"meta\": {\n \"type\": \"currency\",\n \"expr\": \"${item.price}|BRL:pt-BR\"\n }\n }\n }\n },\n {\n \"id\": \"templating.trailing.status.chip\",\n \"intentExamples\": [\n \"status chip\",\n \"badge\",\n \"estado\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"trailing\": {\n \"type\": \"chip\",\n \"expr\": \"${item.status}\",\n \"color\": \"primary\"\n },\n \"statusPosition\": \"top-right\"\n }\n }\n },\n {\n \"id\": \"templating.trailing.status.icon\",\n \"intentExamples\": [\n \"status icon\",\n \"icone status\",\n \"state icon\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"trailing\": {\n \"type\": \"icon\",\n \"expr\": \"${item.status|map:OK=check_circle,ALERTA=warning,ERRO=error}\"\n },\n \"statusPosition\": \"top-right\"\n }\n }\n },\n {\n \"id\": \"templating.trailing.currency\",\n \"intentExamples\": [\n \"trailing price\",\n \"valor à direita\",\n \"preço à direita\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"trailing\": {\n \"type\": \"currency\",\n \"expr\": \"${item.price}|BRL:pt-BR\"\n }\n }\n }\n },\n {\n \"id\": \"templating.leading.avatar.image\",\n \"intentExamples\": [\n \"avatar\",\n \"foto\",\n \"imagem principal\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"leading\": {\n \"type\": \"image\",\n \"expr\": \"${item.imageUrl}\",\n \"imageAlt\": \"Imagem\"\n }\n }\n }\n },\n {\n \"id\": \"templating.leading.avatar.icon\",\n \"intentExamples\": [\n \"avatar icon\",\n \"icone pessoa\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"leading\": {\n \"type\": \"icon\",\n \"expr\": \"person\",\n \"color\": \"primary\"\n }\n }\n }\n },\n {\n \"id\": \"templating.features.add.wifi\",\n \"intentExamples\": [\n \"wifi\",\n \"amenities\",\n \"features\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"features\": [\n {\n \"icon\": \"wifi\",\n \"expr\": \"${item.hasWifi}\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"templating.features.mode.icons-only\",\n \"intentExamples\": [\n \"icons only\",\n \"somente ícones\",\n \"icons\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"featuresMode\": \"icons-only\"\n }\n }\n },\n {\n \"id\": \"templating.features.mode.labels-only\",\n \"intentExamples\": [\n \"labels only\",\n \"somente texto\",\n \"labels\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"featuresMode\": \"labels-only\"\n }\n }\n },\n {\n \"id\": \"templating.features.mode.icons-labels\",\n \"intentExamples\": [\n \"icons + labels\",\n \"ícones e texto\",\n \"icons labels\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"featuresMode\": \"icons+labels\"\n }\n }\n },\n {\n \"id\": \"templating.meta.placement.side\",\n \"intentExamples\": [\n \"meta side\",\n \"meta lateral\",\n \"meta direita\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"metaPlacement\": \"side\"\n }\n }\n },\n {\n \"id\": \"templating.meta.placement.line\",\n \"intentExamples\": [\n \"meta line\",\n \"meta abaixo\",\n \"meta na linha\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"metaPlacement\": \"line\"\n }\n }\n },\n {\n \"id\": \"layout.lines.compact\",\n \"intentExamples\": [\n \"1 line\",\n \"uma linha\",\n \"compact\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"lines\": 1\n }\n }\n },\n {\n \"id\": \"layout.lines.standard\",\n \"intentExamples\": [\n \"2 lines\",\n \"duas linhas\",\n \"standard\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"lines\": 2\n }\n }\n },\n {\n \"id\": \"layout.lines.rich\",\n \"intentExamples\": [\n \"3 lines\",\n \"três linhas\",\n \"rich\"\n ],\n \"patchTemplate\": {\n \"layout\": {\n \"lines\": 3\n }\n }\n },\n {\n \"id\": \"ui.search.enable\",\n \"intentExamples\": [\n \"search\",\n \"buscar\",\n \"pesquisa\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showSearch\": true,\n \"searchField\": \"name\",\n \"searchPlaceholder\": \"Buscar\"\n }\n }\n },\n {\n \"id\": \"ui.sort.enable\",\n \"intentExamples\": [\n \"sort\",\n \"ordenar\",\n \"order\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showSort\": true,\n \"sortOptions\": [\n \"name,asc\",\n \"name,desc\"\n ]\n }\n }\n },\n {\n \"id\": \"ui.range.enable\",\n \"intentExamples\": [\n \"range\",\n \"faixa\",\n \"x-y\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showRange\": true\n }\n }\n },\n {\n \"id\": \"actions.add.edit\",\n \"intentExamples\": [\n \"edit action\",\n \"editar\",\n \"ação editar\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"edit\",\n \"icon\": \"edit\",\n \"label\": \"Editar\"\n }\n ]\n }\n },\n {\n \"id\": \"actions.add.delete\",\n \"intentExamples\": [\n \"delete action\",\n \"remover\",\n \"excluir\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"delete\",\n \"icon\": \"delete\",\n \"label\": \"Excluir\",\n \"color\": \"warn\"\n }\n ]\n }\n },\n {\n \"id\": \"actions.add.details.button\",\n \"intentExamples\": [\n \"details button\",\n \"detalhes\",\n \"ver mais\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"details\",\n \"kind\": \"button\",\n \"buttonVariant\": \"stroked\",\n \"label\": \"Detalhes\"\n }\n ]\n }\n },\n {\n \"id\": \"templating.trailing.set\",\n \"intentExamples\": [\n \"trailing\",\n \"end\",\n \"right\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"trailing\": {\n \"type\": \"{{params.type}}\",\n \"expr\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"templating.features.add\",\n \"intentExamples\": [\n \"features\",\n \"amenities\",\n \"icons\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"features\": [\n {\n \"icon\": \"{{params.icon}}\",\n \"expr\": \"{{value}}\"\n }\n ]\n }\n }\n },\n {\n \"id\": \"templating.features.enable\",\n \"intentExamples\": [\n \"features\",\n \"show features\",\n \"enable features\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"featuresVisible\": true\n }\n }\n },\n {\n \"id\": \"templating.features.disable\",\n \"intentExamples\": [\n \"features\",\n \"hide features\",\n \"disable features\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"featuresVisible\": false\n }\n }\n },\n {\n \"id\": \"templating.metaPlacement.set\",\n \"intentExamples\": [\n \"meta placement\",\n \"meta position\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"metaPlacement\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"templating.statusPosition.set\",\n \"intentExamples\": [\n \"status position\",\n \"badge position\"\n ],\n \"patchTemplate\": {\n \"templating\": {\n \"statusPosition\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"action.add\",\n \"intentExamples\": [\n \"add action\",\n \"action\",\n \"button\",\n \"icon action\"\n ],\n \"safetyNotes\": \"showIf deve ser objeto Json Logic quando informado. O placeholder textual e apenas molde de prompt; nao gere DSL textual nem publique string como contrato.\",\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"icon\": \"{{params.icon}}\",\n \"label\": \"{{value}}\",\n \"kind\": \"{{params.kind}}\",\n \"buttonVariant\": \"{{params.buttonVariant}}\",\n \"showIf\": \"{{params.showIf}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.label.set\",\n \"intentExamples\": [\n \"action label\",\n \"rename action\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"label\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.icon.set\",\n \"intentExamples\": [\n \"action icon\",\n \"icon\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"icon\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.kind.set\",\n \"intentExamples\": [\n \"action kind\",\n \"button\",\n \"icon\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"kind\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.showIf.set\",\n \"intentExamples\": [\n \"visible when\",\n \"show if\",\n \"condition\"\n ],\n \"safetyNotes\": \"Forneca showIf como objeto Json Logic no contexto row, por exemplo {\\\"==\\\": [{\\\"var\\\": \\\"row.status\\\"}, \\\"done\\\"]}; nao use DSL textual.\",\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"showIf\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"ui.search.enable\",\n \"intentExamples\": [\n \"search\",\n \"enable search\",\n \"show search\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showSearch\": true\n }\n }\n },\n {\n \"id\": \"ui.search.disable\",\n \"intentExamples\": [\n \"search\",\n \"disable search\",\n \"hide search\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showSearch\": false\n }\n }\n },\n {\n \"id\": \"ui.searchField.set\",\n \"intentExamples\": [\n \"search field\",\n \"search by\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"searchField\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"ui.sort.enable\",\n \"intentExamples\": [\n \"sort\",\n \"enable sort\",\n \"show sort\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showSort\": true\n }\n }\n },\n {\n \"id\": \"ui.sort.disable\",\n \"intentExamples\": [\n \"sort\",\n \"disable sort\",\n \"hide sort\"\n ],\n \"patchTemplate\": {\n \"ui\": {\n \"showSort\": false\n }\n }\n }\n ],\n \"fieldResolvers\": {\n \"actions[]\": [\n \"id\",\n \"label\"\n ],\n \"dataSource.resourcePath\": [],\n \"layout.groupBy\": [],\n \"ui.searchField\": [],\n \"selection.compareBy\": []\n }\n }\n}",
|
|
6828
|
+
"content": "{\"componentId\":\"praxis-list\",\"chunkSection\":\"componentContext\",\"componentContext\":{\"version\":\"v1\",\"hints\":[\"Use actions[].id and templating.features[].expr as merge keys; avoid array indexes.\",\"Template expressions support only ${item.path} with simple pipes (bool/date/map/number).\",\"dataSource.data overrides resourcePath; prefer one or the other for clarity.\",\"layout.lines expects numeric values (1, 2, 3).\",\"DOC: Widget purpose: list/cards with selection, grouping, and templating.\",\"DOC: Host inputs: config (required) and listId (required); form is optional; enableCustomization is the canonical customization input.\",\"DOC: Minimal data source: dataSource.data (inline) or dataSource.resourcePath (API).\",\"DOC: Minimal rendering: set templating.primary.expr (label) or templating.secondary.expr.\"],\"optionsByPath\":{\"layout.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"list\",\"label\":\"List\"},{\"value\":\"cards\",\"label\":\"Cards\"},{\"value\":\"tiles\",\"label\":\"Tiles\"}]},\"layout.density\":{\"mode\":\"enum\",\"options\":[{\"value\":\"default\",\"label\":\"Default\"},{\"value\":\"comfortable\",\"label\":\"Comfortable\"},{\"value\":\"compact\",\"label\":\"Compact\"}]},\"layout.itemSpacing\":{\"mode\":\"enum\",\"options\":[{\"value\":\"none\",\"label\":\"None\"},{\"value\":\"tight\",\"label\":\"Tight\"},{\"value\":\"default\",\"label\":\"Default\"},{\"value\":\"relaxed\",\"label\":\"Relaxed\"}]},\"layout.lines\":{\"mode\":\"enum\",\"options\":[{\"value\":1,\"label\":\"1 line\"},{\"value\":2,\"label\":\"2 lines\"},{\"value\":3,\"label\":\"3 lines\"}]},\"layout.dividers\":{\"mode\":\"enum\",\"options\":[{\"value\":\"none\",\"label\":\"None\"},{\"value\":\"between\",\"label\":\"Between\"},{\"value\":\"all\",\"label\":\"All\"}]},\"layout.model\":{\"mode\":\"enum\",\"options\":[{\"value\":\"standard\",\"label\":\"Standard\"},{\"value\":\"media\",\"label\":\"Media\"},{\"value\":\"hotel\",\"label\":\"Hotel\"}]},\"selection.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"none\",\"label\":\"None\"},{\"value\":\"single\",\"label\":\"Single\"},{\"value\":\"multiple\",\"label\":\"Multiple\"}]},\"selection.return\":{\"mode\":\"enum\",\"options\":[{\"value\":\"value\",\"label\":\"Value\"},{\"value\":\"item\",\"label\":\"Item\"},{\"value\":\"id\",\"label\":\"Id\"}]},\"skin.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"pill-soft\",\"label\":\"Pill soft\"},{\"value\":\"gradient-tile\",\"label\":\"Gradient tile\"},{\"value\":\"glass\",\"label\":\"Glass\"},{\"value\":\"elevated\",\"label\":\"Elevated\"},{\"value\":\"outline\",\"label\":\"Outline\"},{\"value\":\"flat\",\"label\":\"Flat\"},{\"value\":\"neumorphism\",\"label\":\"Neumorphism\"},{\"value\":\"custom\",\"label\":\"Custom\"}]},\"templating.leading.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"slot\",\"label\":\"Slot\"}]},\"templating.primary.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"}]},\"templating.secondary.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"}]},\"templating.meta.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"slot\",\"label\":\"Slot\"}]},\"templating.trailing.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"slot\",\"label\":\"Slot\"}]},\"templating.sectionHeader.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"slot\",\"label\":\"Slot\"}]},\"templating.emptyState.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"slot\",\"label\":\"Slot\"}]},\"templating.leading.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.primary.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.secondary.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.meta.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.trailing.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.sectionHeader.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.emptyState.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"templating.metaPlacement\":{\"mode\":\"enum\",\"options\":[{\"value\":\"side\",\"label\":\"Side\"},{\"value\":\"line\",\"label\":\"Line\"}]},\"templating.statusPosition\":{\"mode\":\"enum\",\"options\":[{\"value\":\"inline\",\"label\":\"Inline\"},{\"value\":\"top-right\",\"label\":\"Top right\"}]},\"templating.meta.props.rating.max\":{\"mode\":\"suggested\",\"options\":[{\"value\":5,\"label\":\"5 estrelas\"},{\"value\":10,\"label\":\"10 pontos\"}]},\"templating.meta.props.rating.size\":{\"mode\":\"suggested\",\"options\":[{\"value\":12,\"label\":\"Compacto\"},{\"value\":16,\"label\":\"Padrão\"},{\"value\":20,\"label\":\"Destaque\"}]},\"templating.meta.props.rating.color\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"},{\"value\":\"var(--md-sys-color-tertiary)\",\"label\":\"M3 Tertiary\"}]},\"templating.featuresMode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"icons+labels\",\"label\":\"Icons + labels\"},{\"value\":\"icons-only\",\"label\":\"Icons only\"},{\"value\":\"labels-only\",\"label\":\"Labels only\"}]},\"actions[].kind\":{\"mode\":\"enum\",\"options\":[{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"button\",\"label\":\"Button\"}]},\"actions[].buttonVariant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"stroked\",\"label\":\"Stroked\"},{\"value\":\"raised\",\"label\":\"Raised\"},{\"value\":\"flat\",\"label\":\"Flat\"}]},\"actions[].globalAction.[actionId]\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"toast.success\",\"label\":\"Toast success\"},{\"value\":\"toast.error\",\"label\":\"Toast error\"},{\"value\":\"dialog.alert\",\"label\":\"Dialog alert\"},{\"value\":\"dialog.open\",\"label\":\"Dialog open\"},{\"value\":\"navigation.openExternal\",\"label\":\"Open external URL\"},{\"value\":\"navigation.openRoute\",\"label\":\"Open internal route\"},{\"value\":\"api.post\",\"label\":\"API POST\"},{\"value\":\"api.patch\",\"label\":\"API PATCH\"}]},\"actions[].globalAction.payloadExpr\":{\"mode\":\"expression\"}}}}",
|
|
6699
6829
|
"sourcePointer": "projects/praxis-list/src/lib/ai/list-context-pack.ts",
|
|
6700
|
-
"contentHash": "
|
|
6830
|
+
"contentHash": "da1c6ff0af750d48234c1da0510c91c17e58d658c0dfa734f3b321275a39fe46",
|
|
6701
6831
|
"sourceKind": "component_definition",
|
|
6702
6832
|
"sourceId": "praxis-list",
|
|
6703
6833
|
"corpusVersion": "1.0.0"
|
|
6704
6834
|
},
|
|
6705
6835
|
{
|
|
6706
|
-
"chunkIndex":
|
|
6836
|
+
"chunkIndex": 17,
|
|
6837
|
+
"chunkKind": "context_pack",
|
|
6838
|
+
"content": "{\"componentId\":\"praxis-list\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"dataSource.resourcePath.set\",\"intentExamples\":[\"resource\",\"endpoint\",\"api\",\"path\"],\"patchTemplate\":{\"dataSource\":{\"resourcePath\":\"{{value}}\"}}},{\"id\":\"dataSource.sort.set\",\"intentExamples\":[\"sort\",\"order\",\"ordenar\"],\"patchTemplate\":{\"dataSource\":{\"sort\":[\"{{value}}\"]}}},{\"id\":\"layout.variant.set\",\"intentExamples\":[\"layout\",\"variant\",\"list\",\"cards\"],\"patchTemplate\":{\"layout\":{\"variant\":\"{{value}}\"}}},{\"id\":\"layout.variant.set.tiles\",\"intentExamples\":[\"tiles\",\"grid\",\"cards grid\",\"catalog\"],\"patchTemplate\":{\"layout\":{\"variant\":\"tiles\"}}},{\"id\":\"layout.variant.set.list\",\"intentExamples\":[\"list\",\"lista\",\"linha\"],\"patchTemplate\":{\"layout\":{\"variant\":\"list\"}}},{\"id\":\"layout.variant.set.cards\",\"intentExamples\":[\"cards\",\"card\",\"cartões\"],\"patchTemplate\":{\"layout\":{\"variant\":\"cards\"}}},{\"id\":\"layout.density.set\",\"intentExamples\":[\"density\",\"compact\",\"comfortable\"],\"patchTemplate\":{\"layout\":{\"density\":\"{{value}}\"}}},{\"id\":\"layout.density.compact\",\"intentExamples\":[\"compact\",\"dense\",\"mais itens\"],\"patchTemplate\":{\"layout\":{\"density\":\"compact\"}}},{\"id\":\"layout.density.comfortable\",\"intentExamples\":[\"comfortable\",\"confortável\",\"mais espaço\"],\"patchTemplate\":{\"layout\":{\"density\":\"comfortable\"}}},{\"id\":\"layout.lines.set.1\",\"intentExamples\":[\"lines\",\"1 line\",\"one line\"],\"patchTemplate\":{\"layout\":{\"lines\":1}}},{\"id\":\"layout.lines.set.2\",\"intentExamples\":[\"lines\",\"2 lines\",\"two lines\"],\"patchTemplate\":{\"layout\":{\"lines\":2}}},{\"id\":\"layout.lines.set.3\",\"intentExamples\":[\"lines\",\"3 lines\",\"three lines\"],\"patchTemplate\":{\"layout\":{\"lines\":3}}},{\"id\":\"layout.dividers.none\",\"intentExamples\":[\"no dividers\",\"sem divisores\"],\"patchTemplate\":{\"layout\":{\"dividers\":\"none\"}}},{\"id\":\"layout.dividers.between\",\"intentExamples\":[\"dividers\",\"separadores\",\"entre itens\"],\"patchTemplate\":{\"layout\":{\"dividers\":\"between\"}}},{\"id\":\"layout.dividers.set\",\"intentExamples\":[\"divider\",\"dividers\",\"separators\"],\"patchTemplate\":{\"layout\":{\"dividers\":\"{{value}}\"}}},{\"id\":\"layout.model.set\",\"intentExamples\":[\"model\",\"card style\"],\"patchTemplate\":{\"layout\":{\"model\":\"{{value}}\"}}},{\"id\":\"layout.groupBy.set\",\"intentExamples\":[\"group\",\"group by\",\"section\"],\"patchTemplate\":{\"layout\":{\"groupBy\":\"{{value}}\"}}},{\"id\":\"layout.groupBy.department\",\"intentExamples\":[\"department\",\"setor\",\"área\",\"group by department\"],\"patchTemplate\":{\"layout\":{\"groupBy\":\"department\",\"stickySectionHeader\":true},\"templating\":{\"sectionHeader\":{\"type\":\"chip\",\"expr\":\"${item.key}\",\"color\":\"primary\"}}}},{\"id\":\"layout.groupBy.status\",\"intentExamples\":[\"status group\",\"group by status\",\"agrupado por status\"],\"patchTemplate\":{\"layout\":{\"groupBy\":\"status\",\"stickySectionHeader\":true},\"templating\":{\"sectionHeader\":{\"type\":\"text\",\"expr\":\"${item.key}\"}}}},{\"id\":\"layout.groupBy.category\",\"intentExamples\":[\"category\",\"categoria\",\"group by category\"],\"patchTemplate\":{\"layout\":{\"groupBy\":\"category\",\"stickySectionHeader\":true},\"templating\":{\"sectionHeader\":{\"type\":\"chip\",\"expr\":\"${item.key}\",\"color\":\"accent\"}}}},{\"id\":\"layout.groupBy.date\",\"intentExamples\":[\"date group\",\"group by date\",\"agrupado por data\"],\"patchTemplate\":{\"layout\":{\"groupBy\":\"date\",\"stickySectionHeader\":true},\"templating\":{\"sectionHeader\":{\"type\":\"text\",\"expr\":\"${item.key|date:pt-BR:short}\"}}}},{\"id\":\"layout.stickyHeader.enable\",\"intentExamples\":[\"sticky\",\"section header\"],\"patchTemplate\":{\"layout\":{\"stickySectionHeader\":true}}},{\"id\":\"layout.stickyHeader.disable\",\"intentExamples\":[\"sticky\",\"section header\",\"disable\"],\"patchTemplate\":{\"layout\":{\"stickySectionHeader\":false}}},{\"id\":\"layout.pageSize.set.10\",\"intentExamples\":[\"page size\",\"pagination\",\"10\"],\"patchTemplate\":{\"layout\":{\"pageSize\":10}}},{\"id\":\"layout.pageSize.set.20\",\"intentExamples\":[\"page size\",\"pagination\",\"20\"],\"patchTemplate\":{\"layout\":{\"pageSize\":20}}},{\"id\":\"layout.pageSize.set.50\",\"intentExamples\":[\"page size\",\"pagination\",\"50\"],\"patchTemplate\":{\"layout\":{\"pageSize\":50}}},{\"id\":\"selection.mode.set\",\"intentExamples\":[\"selection\",\"select\",\"multi\",\"single\"],\"patchTemplate\":{\"selection\":{\"mode\":\"{{value}}\"}}},{\"id\":\"selection.mode.single\",\"intentExamples\":[\"single select\",\"seleção única\"],\"patchTemplate\":{\"selection\":{\"mode\":\"single\",\"return\":\"value\"}}},{\"id\":\"selection.mode.multiple\",\"intentExamples\":[\"multi select\",\"seleção múltipla\"],\"patchTemplate\":{\"selection\":{\"mode\":\"multiple\",\"return\":\"id\"}}},{\"id\":\"selection.compareBy.set\",\"intentExamples\":[\"compare\",\"key\",\"identity\"],\"patchTemplate\":{\"selection\":{\"compareBy\":\"{{value}}\"}}},{\"id\":\"selection.return.set\",\"intentExamples\":[\"return\",\"payload\",\"selection output\"],\"patchTemplate\":{\"selection\":{\"return\":\"{{value}}\"}}},{\"id\":\"skin.type.set\",\"intentExamples\":[\"skin\",\"theme\",\"style\"],\"patchTemplate\":{\"skin\":{\"type\":\"{{value}}\"}}},{\"id\":\"skin.glass\",\"intentExamples\":[\"glass\",\"vidro\",\"blur\"],\"patchTemplate\":{\"skin\":{\"type\":\"glass\",\"backdropBlur\":\"12px\",\"border\":\"1px solid var(--md-sys-color-outline-variant)\"}}},{\"id\":\"skin.gradient.tile\",\"intentExamples\":[\"gradient\",\"tile\",\"degradê\"],\"patchTemplate\":{\"skin\":{\"type\":\"gradient-tile\",\"gradient\":{\"from\":\"var(--md-sys-color-primary)\",\"to\":\"var(--md-sys-color-tertiary)\",\"angle\":135}}}},{\"id\":\"templating.primary.set\",\"intentExamples\":[\"primary\",\"title\",\"main text\"],\"patchTemplate\":{\"templating\":{\"primary\":{\"type\":\"{{params.type}}\",\"expr\":\"{{value}}\"}}}},{\"id\":\"templating.secondary.set\",\"intentExamples\":[\"secondary\",\"subtitle\",\"detail text\"],\"patchTemplate\":{\"templating\":{\"secondary\":{\"type\":\"{{params.type}}\",\"expr\":\"{{value}}\"}}}},{\"id\":\"templating.meta.set\",\"intentExamples\":[\"meta\",\"side text\"],\"patchTemplate\":{\"templating\":{\"meta\":{\"type\":\"{{params.type}}\",\"expr\":\"{{value}}\"}}}},{\"id\":\"templating.meta.rating.set\",\"intentExamples\":[\"rating\",\"stars\",\"nota\",\"score\"],\"patchTemplate\":{\"templating\":{\"meta\":{\"type\":\"rating\",\"expr\":\"${item.rating}\",\"props\":{\"rating\":{\"max\":5,\"size\":16,\"color\":\"primary\"}}}}}},{\"id\":\"templating.meta.currency.set\",\"intentExamples\":[\"price\",\"preço\",\"valor\",\"currency\"],\"patchTemplate\":{\"templating\":{\"meta\":{\"type\":\"currency\",\"expr\":\"${item.price}|BRL:pt-BR\"}}}},{\"id\":\"templating.trailing.status.chip\",\"intentExamples\":[\"status chip\",\"badge\",\"estado\"],\"patchTemplate\":{\"templating\":{\"trailing\":{\"type\":\"chip\",\"expr\":\"${item.status}\",\"color\":\"primary\"},\"statusPosition\":\"top-right\"}}},{\"id\":\"templating.trailing.status.icon\",\"intentExamples\":[\"status icon\",\"icone status\",\"state icon\"],\"patchTemplate\":{\"templating\":{\"trailing\":{\"type\":\"icon\",\"expr\":\"${item.status|map:OK=check_circle,ALERTA=warning,ERRO=error}\"},\"statusPosition\":\"top-right\"}}},{\"id\":\"templating.trailing.currency\",\"intentExamples\":[\"trailing price\",\"valor à direita\",\"preço à direita\"],\"patchTemplate\":{\"templating\":{\"trailing\":{\"type\":\"currency\",\"expr\":\"${item.price}|BRL:pt-BR\"}}}},{\"id\":\"templating.leading.avatar.image\",\"intentExamples\":[\"avatar\",\"foto\",\"imagem principal\"],\"patchTemplate\":{\"templating\":{\"leading\":{\"type\":\"image\",\"expr\":\"${item.imageUrl}\",\"imageAlt\":\"Imagem\"}}}},{\"id\":\"templating.leading.avatar.icon\",\"intentExamples\":[\"avatar icon\",\"icone pessoa\"],\"patchTemplate\":{\"templating\":{\"leading\":{\"type\":\"icon\",\"expr\":\"person\",\"color\":\"primary\"}}}},{\"id\":\"templating.features.add.wifi\",\"intentExamples\":[\"wifi\",\"amenities\",\"features\"],\"patchTemplate\":{\"templating\":{\"features\":[{\"icon\":\"wifi\",\"expr\":\"${item.hasWifi}\"}]}}},{\"id\":\"templating.features.mode.icons-only\",\"intentExamples\":[\"icons only\",\"somente ícones\",\"icons\"],\"patchTemplate\":{\"templating\":{\"featuresMode\":\"icons-only\"}}},{\"id\":\"templating.features.mode.labels-only\",\"intentExamples\":[\"labels only\",\"somente texto\",\"labels\"],\"patchTemplate\":{\"templating\":{\"featuresMode\":\"labels-only\"}}},{\"id\":\"templating.features.mode.icons-labels\",\"intentExamples\":[\"icons + labels\",\"ícones e texto\",\"icons labels\"],\"patchTemplate\":{\"templating\":{\"featuresMode\":\"icons+labels\"}}}]}}",
|
|
6839
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/list-context-pack.ts",
|
|
6840
|
+
"contentHash": "d6197eafb8f9015f5d21a071cb2164c46b2589c27f496c863889428ad8e0eab6",
|
|
6841
|
+
"sourceKind": "component_definition",
|
|
6842
|
+
"sourceId": "praxis-list",
|
|
6843
|
+
"corpusVersion": "1.0.0"
|
|
6844
|
+
},
|
|
6845
|
+
{
|
|
6846
|
+
"chunkIndex": 18,
|
|
6847
|
+
"chunkKind": "context_pack",
|
|
6848
|
+
"content": "{\"componentId\":\"praxis-list\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"templating.meta.placement.side\",\"intentExamples\":[\"meta side\",\"meta lateral\",\"meta direita\"],\"patchTemplate\":{\"templating\":{\"metaPlacement\":\"side\"}}},{\"id\":\"templating.meta.placement.line\",\"intentExamples\":[\"meta line\",\"meta abaixo\",\"meta na linha\"],\"patchTemplate\":{\"templating\":{\"metaPlacement\":\"line\"}}},{\"id\":\"layout.lines.compact\",\"intentExamples\":[\"1 line\",\"uma linha\",\"compact\"],\"patchTemplate\":{\"layout\":{\"lines\":1}}},{\"id\":\"layout.lines.standard\",\"intentExamples\":[\"2 lines\",\"duas linhas\",\"standard\"],\"patchTemplate\":{\"layout\":{\"lines\":2}}},{\"id\":\"layout.lines.rich\",\"intentExamples\":[\"3 lines\",\"três linhas\",\"rich\"],\"patchTemplate\":{\"layout\":{\"lines\":3}}},{\"id\":\"ui.search.enable\",\"intentExamples\":[\"search\",\"buscar\",\"pesquisa\"],\"patchTemplate\":{\"ui\":{\"showSearch\":true,\"searchField\":\"name\",\"searchPlaceholder\":\"Buscar\"}}},{\"id\":\"ui.sort.enable\",\"intentExamples\":[\"sort\",\"ordenar\",\"order\"],\"patchTemplate\":{\"ui\":{\"showSort\":true,\"sortOptions\":[\"name,asc\",\"name,desc\"]}}},{\"id\":\"ui.range.enable\",\"intentExamples\":[\"range\",\"faixa\",\"x-y\"],\"patchTemplate\":{\"ui\":{\"showRange\":true}}},{\"id\":\"actions.add.edit\",\"intentExamples\":[\"edit action\",\"editar\",\"ação editar\"],\"patchTemplate\":{\"actions\":[{\"id\":\"edit\",\"icon\":\"edit\",\"label\":\"Editar\"}]}},{\"id\":\"actions.add.delete\",\"intentExamples\":[\"delete action\",\"remover\",\"excluir\"],\"patchTemplate\":{\"actions\":[{\"id\":\"delete\",\"icon\":\"delete\",\"label\":\"Excluir\",\"color\":\"warn\"}]}},{\"id\":\"actions.add.details.button\",\"intentExamples\":[\"details button\",\"detalhes\",\"ver mais\"],\"patchTemplate\":{\"actions\":[{\"id\":\"details\",\"kind\":\"button\",\"buttonVariant\":\"stroked\",\"label\":\"Detalhes\"}]}},{\"id\":\"templating.trailing.set\",\"intentExamples\":[\"trailing\",\"end\",\"right\"],\"patchTemplate\":{\"templating\":{\"trailing\":{\"type\":\"{{params.type}}\",\"expr\":\"{{value}}\"}}}},{\"id\":\"templating.features.add\",\"intentExamples\":[\"features\",\"amenities\",\"icons\"],\"patchTemplate\":{\"templating\":{\"features\":[{\"icon\":\"{{params.icon}}\",\"expr\":\"{{value}}\"}]}}},{\"id\":\"templating.features.enable\",\"intentExamples\":[\"features\",\"show features\",\"enable features\"],\"patchTemplate\":{\"templating\":{\"featuresVisible\":true}}},{\"id\":\"templating.features.disable\",\"intentExamples\":[\"features\",\"hide features\",\"disable features\"],\"patchTemplate\":{\"templating\":{\"featuresVisible\":false}}},{\"id\":\"templating.metaPlacement.set\",\"intentExamples\":[\"meta placement\",\"meta position\"],\"patchTemplate\":{\"templating\":{\"metaPlacement\":\"{{value}}\"}}},{\"id\":\"templating.statusPosition.set\",\"intentExamples\":[\"status position\",\"badge position\"],\"patchTemplate\":{\"templating\":{\"statusPosition\":\"{{value}}\"}}},{\"id\":\"action.add\",\"intentExamples\":[\"add action\",\"action\",\"button\",\"icon action\"],\"safetyNotes\":\"showIf deve ser objeto Json Logic quando informado. O placeholder textual e apenas molde de prompt; nao gere DSL textual nem publique string como contrato.\",\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"icon\":\"{{params.icon}}\",\"label\":\"{{value}}\",\"kind\":\"{{params.kind}}\",\"buttonVariant\":\"{{params.buttonVariant}}\",\"showIf\":\"{{params.showIf}}\"}]}},{\"id\":\"action.label.set\",\"intentExamples\":[\"action label\",\"rename action\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"action.icon.set\",\"intentExamples\":[\"action icon\",\"icon\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"icon\":\"{{value}}\"}]}},{\"id\":\"action.kind.set\",\"intentExamples\":[\"action kind\",\"button\",\"icon\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"kind\":\"{{value}}\"}]}},{\"id\":\"action.showIf.set\",\"intentExamples\":[\"visible when\",\"show if\",\"condition\"],\"safetyNotes\":\"Forneca showIf como objeto Json Logic no contexto row, por exemplo {\\\"==\\\": [{\\\"var\\\": \\\"row.status\\\"}, \\\"done\\\"]}; nao use DSL textual.\",\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"showIf\":\"{{value}}\"}]}},{\"id\":\"ui.search.enable\",\"intentExamples\":[\"search\",\"enable search\",\"show search\"],\"patchTemplate\":{\"ui\":{\"showSearch\":true}}},{\"id\":\"ui.search.disable\",\"intentExamples\":[\"search\",\"disable search\",\"hide search\"],\"patchTemplate\":{\"ui\":{\"showSearch\":false}}},{\"id\":\"ui.searchField.set\",\"intentExamples\":[\"search field\",\"search by\"],\"patchTemplate\":{\"ui\":{\"searchField\":\"{{value}}\"}}},{\"id\":\"ui.sort.enable\",\"intentExamples\":[\"sort\",\"enable sort\",\"show sort\"],\"patchTemplate\":{\"ui\":{\"showSort\":true}}},{\"id\":\"ui.sort.disable\",\"intentExamples\":[\"sort\",\"disable sort\",\"hide sort\"],\"patchTemplate\":{\"ui\":{\"showSort\":false}}}]}}",
|
|
6849
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/list-context-pack.ts",
|
|
6850
|
+
"contentHash": "33b9aba5435c804237f32202777dbc75018bbb5001472cb8f12c0ecb50eec9a0",
|
|
6851
|
+
"sourceKind": "component_definition",
|
|
6852
|
+
"sourceId": "praxis-list",
|
|
6853
|
+
"corpusVersion": "1.0.0"
|
|
6854
|
+
},
|
|
6855
|
+
{
|
|
6856
|
+
"chunkIndex": 19,
|
|
6857
|
+
"chunkKind": "context_pack",
|
|
6858
|
+
"content": "{\"componentId\":\"praxis-list\",\"chunkSection\":\"componentContext\",\"componentContext\":{\"fieldResolvers\":{\"actions[]\":[\"id\",\"label\"],\"dataSource.resourcePath\":[],\"layout.groupBy\":[],\"ui.searchField\":[],\"selection.compareBy\":[]}}}",
|
|
6859
|
+
"sourcePointer": "projects/praxis-list/src/lib/ai/list-context-pack.ts",
|
|
6860
|
+
"contentHash": "8f3e261e35bcf4378b20523781739c22141b53173e20f5ad91706f1997fc1988",
|
|
6861
|
+
"sourceKind": "component_definition",
|
|
6862
|
+
"sourceId": "praxis-list",
|
|
6863
|
+
"corpusVersion": "1.0.0"
|
|
6864
|
+
},
|
|
6865
|
+
{
|
|
6866
|
+
"chunkIndex": 20,
|
|
6707
6867
|
"chunkKind": "recipe",
|
|
6708
|
-
"content": "{\
|
|
6868
|
+
"content": "{\"_comment\":\"Variacao cards + skin para o Praxis List (PraxisListConfig).\",\"templateMeta\":{\"registryKey\":\"praxis-list\",\"variantId\":\"cards\",\"useWhen\":\"List layout in cards mode with visual skin.\",\"examplePrompts\":[\"create a card list layout\",\"use cards view for the list\"]},\"config\":{\"dataSource\":{\"resourcePath\":\"api/products\",\"query\":{\"status\":\"active\"},\"sort\":[\"updatedAt,desc\"]},\"layout\":{\"variant\":\"cards\",\"density\":\"compact\",\"lines\":2,\"model\":\"media\",\"pageSize\":12},\"skin\":{\"type\":\"glass\",\"radius\":\"16px\",\"backdropBlur\":\"10px\"},\"templating\":{\"leading\":{\"type\":\"image\",\"expr\":\"${item.coverUrl}\",\"imageAlt\":\"Capa\"},\"primary\":{\"type\":\"text\",\"expr\":\"${item.name}\"},\"secondary\":{\"type\":\"text\",\"expr\":\"${item.category}\"},\"meta\":{\"type\":\"date\",\"expr\":\"${item.updatedAt}|pt-BR:short\"},\"metaPlacement\":\"line\",\"metaPrefixIcon\":\"schedule\",\"trailing\":{\"type\":\"icon\",\"expr\":\"${item.status|map:active=check_circle,inactive=cancel,pending=hourglass_top}\"},\"statusPosition\":\"top-right\",\"iconColorMap\":{\"active\":\"primary\",\"inactive\":\"warn\",\"pending\":\"accent\"},\"features\":[{\"icon\":\"star\",\"expr\":\"Nota: ${item.rating|number:pt-BR}\"},{\"icon\":\"sell\",\"expr\":\"Preco: ${item.price|number:pt-BR}\"}],\"featuresMode\":\"icons+labels\",\"emptyState\":{\"type\":\"text\",\"expr\":\"Nenhum produto encontrado\"},\"skeleton\":{\"count\":6}},\"actions\":[{\"id\":\"open\",\"label\":\"Abrir\",\"icon\":\"open_in_new\",\"kind\":\"button\",\"buttonVariant\":\"stroked\"},{\"id\":\"favorite\",\"label\":\"Favoritar\",\"icon\":\"favorite\",\"color\":\"accent\",\"kind\":\"icon\"}],\"ui\":{\"showSearch\":true,\"searchField\":\"name\",\"searchPlaceholder\":\"Buscar produto\",\"showSort\":true,\"sortOptions\":[{\"label\":\"Recentes\",\"value\":\"updatedAt,desc\"},{\"label\":\"Preco (maior)\",\"value\":\"price,desc\"},{\"label\":\"Preco (menor)\",\"value\":\"price,asc\"}],\"showRange\":true},\"i18n\":{\"locale\":\"pt-BR\",\"currency\":\"BRL\"},\"a11y\":{\"ariaLabel\":\"Lista de produtos em cards\"}}}",
|
|
6709
6869
|
"sourcePointer": "examples/ai-recipes/praxis-list-cards.json",
|
|
6710
|
-
"contentHash": "
|
|
6870
|
+
"contentHash": "db4517347e482a8aaca928f433cd0cb60300bd28dcefda79dbbaf3590673fbcb",
|
|
6711
6871
|
"sourceKind": "component_definition",
|
|
6712
6872
|
"sourceId": "praxis-list",
|
|
6713
6873
|
"corpusVersion": "1.0.0"
|
|
6714
6874
|
},
|
|
6715
6875
|
{
|
|
6716
|
-
"chunkIndex":
|
|
6876
|
+
"chunkIndex": 21,
|
|
6717
6877
|
"chunkKind": "recipe",
|
|
6718
|
-
"content": "{\
|
|
6878
|
+
"content": "{\"_comment\":\"Receita completa de configuração para o Praxis List baseada no PraxisListConfig real, com features + metaPlacement.\",\"templateMeta\":{\"registryKey\":\"praxis-list\",\"variantId\":\"base\",\"useWhen\":\"Base list configuration.\",\"examplePrompts\":[\"create a list with selection\",\"configure list layout and item templates\"]},\"config\":{\"dataSource\":{\"resourcePath\":\"api/products\",\"sort\":[\"name,asc\"]},\"selection\":{\"mode\":\"multiple\",\"compareBy\":\"id\",\"return\":\"id\"},\"layout\":{\"variant\":\"list\",\"density\":\"comfortable\",\"lines\":3,\"dividers\":\"between\",\"pageSize\":20},\"templating\":{\"leading\":{\"type\":\"icon\",\"expr\":\"inventory_2\"},\"primary\":{\"type\":\"text\",\"expr\":\"${item.name}\"},\"secondary\":{\"type\":\"text\",\"expr\":\"${item.category}\"},\"meta\":{\"type\":\"date\",\"expr\":\"${item.updatedAt}|pt-BR:short\"},\"metaPlacement\":\"line\",\"metaPrefixIcon\":\"schedule\",\"trailing\":{\"type\":\"chip\",\"expr\":\"${item.status}\"},\"chipColorMap\":{\"active\":\"primary\",\"inactive\":\"warn\"},\"chipLabelMap\":{\"active\":\"Ativo\",\"inactive\":\"Inativo\"},\"features\":[{\"icon\":\"inventory_2\",\"expr\":\"Estoque: ${item.stock|number:pt-BR}\"},{\"icon\":\"local_shipping\",\"expr\":\"${item.shipping|map:free=Frete grátis,paid=Frete pago}\"}],\"featuresVisible\":true,\"featuresMode\":\"icons+labels\",\"emptyState\":{\"type\":\"text\",\"expr\":\"Nenhum produto encontrado\"}},\"actions\":[{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"color\":\"warn\"}],\"ui\":{\"showSearch\":true,\"searchField\":\"name\",\"searchPlaceholder\":\"Buscar produto\",\"showSort\":true,\"sortOptions\":[{\"label\":\"Nome (A-Z)\",\"value\":\"name,asc\"},{\"label\":\"Nome (Z-A)\",\"value\":\"name,desc\"},{\"label\":\"Mais caros\",\"value\":\"price,desc\"}],\"showRange\":true},\"i18n\":{\"locale\":\"pt-BR\",\"currency\":\"BRL\"},\"a11y\":{\"ariaLabel\":\"Lista de produtos\"}}}",
|
|
6719
6879
|
"sourcePointer": "examples/ai-recipes/praxis-list.json",
|
|
6720
|
-
"contentHash": "
|
|
6880
|
+
"contentHash": "93141c5c000c5a03b4ceaca5b1e33755df6fe15774b4534ca1e654ee0b6eb67d",
|
|
6721
6881
|
"sourceKind": "component_definition",
|
|
6722
6882
|
"sourceId": "praxis-list",
|
|
6723
6883
|
"corpusVersion": "1.0.0"
|
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/list",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.78",
|
|
4
4
|
"description": "List components and helpers for Praxis UI.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/material": "^21.0.0",
|
|
9
|
-
"@praxisui/dynamic-fields": "^9.0.0-beta.
|
|
9
|
+
"@praxisui/dynamic-fields": "^9.0.0-beta.78",
|
|
10
10
|
"rxjs": ">=7 <9",
|
|
11
11
|
"@angular/forms": "^21.0.0",
|
|
12
12
|
"@angular/router": "^21.0.0",
|
|
13
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
14
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/rich-content": "^9.0.0-beta.
|
|
16
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
13
|
+
"@praxisui/ai": "^9.0.0-beta.78",
|
|
14
|
+
"@praxisui/core": "^9.0.0-beta.78",
|
|
15
|
+
"@praxisui/rich-content": "^9.0.0-beta.78",
|
|
16
|
+
"@praxisui/settings-panel": "^9.0.0-beta.78"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"tslib": "^2.3.0",
|