@praxisui/charts 10.0.0-rc.31 → 10.0.0-rc.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -277,6 +277,19 @@ existing popover roles, with card/foreground and Material fallbacks. Tooltip
277
277
  formatting, triggers and disabled state keep their authored semantics; these
278
278
  computed appearance values are transient and never saved into the chart document.
279
279
 
280
+ ### Governed Motion and Data Transitions
281
+
282
+ `PraxisChartConfig.motion` and `PraxisXUiChartContract.motion` govern both initial entrance animations and data/filter transition animations without exposing raw engine timing properties:
283
+
284
+ - `enabled: false`: disables initial and update animations (`animationThreshold: 0`).
285
+ - `preset: 'subtle'`: fast, understated corporate cadence (`240ms` entrance, `200ms` update, `cubicOut`, `animationThreshold: 1000`).
286
+ - `preset: 'standard'` (default when motion is enabled): balanced analytical transition (`420ms` entrance, `320ms` update, `cubicOut` / `cubicInOut`, `animationThreshold: 1500`).
287
+ - `preset: 'expressive'`: emphasized storytelling cadence (`680ms` entrance, `520ms` update, `quinticOut` / `cubicInOut`, `animationThreshold: 2000`).
288
+
289
+ When `queryContext`, `filterCriteria`, or `data` changes for the same governed chart structure and remote resource identity, the default ECharts adapter updates the existing instance with `{ notMerge: false, replaceMerge: ['series'] }` so bars, lines, slices, and gauges interpolate smoothly between filter states. Structural or chrome mutations (chart kind, axis bounds, legend/tooltip visibility, titles, or switching to a different remote `resourcePath`/`resourceKey`) force a clean state reset (`setOption(option, true)` or canvas teardown) so stale options never leak across resources.
290
+
291
+ `PraxisChartComponent` also respects `@media (prefers-reduced-motion: reduce)` at the host level, disabling visual transitions automatically when the operating system requests reduced motion. In `PraxisChartConfigEditor`, the Motion tab provides a **Simulate transition** action (`simulateMotionTransition()`) and automatically previews preset changes on the live chart.
292
+
280
293
  ## Micro Visualizations
281
294
 
282
295
  Transparent charts inside `WidgetShell` inherit the shell foreground, including fixed dark finishes in a light application theme. The chart's opaque accessible-data panel pairs its own background with the corresponding foreground. Explicit chart text colors keep precedence.
@@ -297,10 +310,12 @@ The table-safe kinds currently aligned with `PraxisPresentationVisualizationKind
297
310
  - `delta`
298
311
  - `processFlow`
299
312
 
300
- The component does not instantiate ECharts. It renders lightweight HTML/CSS from `PraxisPresentationVisualizationConfig`
313
+ The component does not instantiate ECharts. It renders lightweight HTML/CSS/SVG from `PraxisPresentationVisualizationConfig`
301
314
  and falls back to `fallbackText` when the visualization kind cannot be rendered for the current compact surface.
302
- Use `points` as the canonical numeric series for `line`, `area`, `column`, and `comparison`;
315
+ Use `points` as the canonical numeric series for `line`, `area`, `column`, and `comparison` (accepting raw numbers or `{ value, label }` points);
303
316
  use `segments` for `stackedBar`, `thresholds` for `bullet`, and `items` for item/step-oriented visualizations such as `processFlow`.
317
+ For `line`, `area`, and `column`, optional `min`/`max` bounds control the vertical domain, `target` and `baseline` render dashed horizontal reference lines inside the SVG plot, and `valueSuffix` appends a unit suffix to the interactive HUD pill and last-value badge.
318
+ On non-`table-cell` surfaces (`list-item`, `object-header`, `card-summary`, `form-presentation`), `line`, `area`, and `column` expose a single keyboard stop (`tabindex="0"`) on the figure container supporting `ArrowLeft`/`ArrowRight`/`Home`/`End`/`Escape` point scrubbing with polite `aria-live` announcements, while `surface: 'table-cell'` keeps zero internal `tabindex` stops so table grid navigation remains unobstructed.
304
319
  Rich charts still use the canonical `x-ui.chart` document flow above; micro visualizations are the lightweight presentation contract for dense cells, list items, object headers, card summaries and form presentation surfaces.
305
320
 
306
321
  Neutral micro visualizations inherit foreground from their container unless the existing `--prx-micro-text-color` token overrides it. Radial indicators with `surface: 'card-summary'` and `size: 'md'` or `'responsive'` render at 6rem; table-cell indicators retain their compact 24px geometry. This materializes existing surface/size semantics without changing the configuration shape.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-10-16T17:45:27.774Z",
3
+ "generatedAt": "2026-10-18T21:58:32.782Z",
4
4
  "packageName": "@praxisui/charts",
5
- "packageVersion": "10.0.0-rc.31",
5
+ "packageVersion": "10.0.0-rc.33",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 4,
@@ -1740,6 +1740,21 @@
1740
1740
  },
1741
1741
  "events": {
1742
1742
  "type": "object"
1743
+ },
1744
+ "motion": {
1745
+ "type": "object",
1746
+ "properties": {
1747
+ "enabled": {
1748
+ "type": "boolean"
1749
+ },
1750
+ "preset": {
1751
+ "enum": [
1752
+ "subtle",
1753
+ "standard",
1754
+ "expressive"
1755
+ ]
1756
+ }
1757
+ }
1743
1758
  }
1744
1759
  }
1745
1760
  },
@@ -3579,9 +3594,9 @@
3579
3594
  {
3580
3595
  "chunkIndex": 1,
3581
3596
  "chunkKind": "authoring_manifest",
3582
- "content": "{\"operationId\":\"chart.document.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.4.0\",\"componentId\":\"praxis-chart\",\"ownerPackage\":\"@praxisui/charts\",\"configSchemaId\":\"PraxisXUiChartContract\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set chart document Effects: set-value. Save this chart in the editor and reopen it without changing the runtime chart document.\",\"scope\":\"global\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"x-ui-chart-document-root\",\"required\":false},\"inputContract\":{\"required\":[\"version\",\"kind\",\"source\"],\"properties\":[\"version\",\"kind\",\"chartId\",\"title\",\"subtitle\",\"source\",\"dimensions\",\"metrics\",\"gauge\",\"events\"],\"semanticTerms\":[\"version\",\"kind\",\"chartId\",\"title\",\"subtitle\",\"source\",\"dimensions\",\"metrics\",\"gauge\",\"events\",\"0.1.0\",\"bar\",\"combo\",\"horizontal-bar\",\"line\",\"pie\",\"donut\",\"area\",\"stacked-bar\",\"stacked-area\",\"scatter\",\"funnel\",\"pyramid\",\"treemap\",\"source.kind\",\"source.resource\",\"source.operation\",\"source.options\",\"gauge.scale\",\"praxis.stats\",\"derived\",\"group-by\",\"timeseries\",\"distribution\",\"comparison\",\"source.options.comparisonPeriod\",\"gauge.scale.min\",\"gauge.scale.max\",\"source.options.comparisonPeriod.field\",\"source.options.comparisonPeriod.timezone\",\"source.options.comparisonPeriod.preset\",\"source.options.comparisonPeriod.mode\",\"TODAY\",\"YESTERDAY\",\"LAST_7_DAYS\",\"LAST_30_DAYS\",\"THIS_MONTH\",\"LAST_MONTH\",\"THIS_QUARTER\",\"THIS_YEAR\",\"PREVIOUS_ALIGNED\",\"PREVIOUS_CALENDAR_PERIOD\",\"source.options.limit\",\"1\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"chartDocument\"],\"validators\":[{\"validatorId\":\"chart-document-shape\",\"level\":\"error\",\"code\":\"CHART_DOCUMENT_SHAPE\",\"description\":\"Document must conform to PraxisXUiChartContract.\"},{\"validatorId\":\"chart-version-supported\",\"level\":\"error\",\"code\":\"CHART_VERSION_SUPPORTED\"},{\"validatorId\":\"chart-type-series-axis-compatible\",\"level\":\"error\",\"code\":\"CHART_TYPE_SERIES_AXIS_COMPATIBLE\",\"description\":\"Chart kind, dimensions, metrics and axes must be compatible.\"},{\"validatorId\":\"gauge-scalar-contract\",\"level\":\"error\",\"code\":\"GAUGE_SCALAR_CONTRACT\",\"description\":\"Gauge charts require one dimension, exactly one metric and, for praxis.stats, one group-by bucket selected with source.options.limit=1.\"},{\"validatorId\":\"gauge-scale-valid\",\"level\":\"error\",\"code\":\"GAUGE_SCALE_VALID\",\"description\":\"Gauge scale requires finite min and max values with max greater than min; runtime rejects values outside the declared scale without clamping.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"EDITOR_RUNTIME_ROUND_TRIP\",\"description\":\"PraxisChartConfigEditor must save/reopen the same canonical document that runtime consumes.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"round-trip-editor-runtime\",\"request\":\"Save this chart in the editor and reopen it without changing the runtime chart document.\",\"operationId\":\"chart.document.set\",\"params\":{\"version\":\"0.1.0\",\"kind\":\"bar\",\"source\":{\"kind\":\"derived\"},\"dimensions\":[{\"field\":\"department\"}],\"metrics\":[{\"field\":\"total\",\"aggregation\":\"count\"}]},\"isPositive\":true}],\"negativeExamples\":[]}",
3597
+ "content": "{\"operationId\":\"chart.document.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.4.0\",\"componentId\":\"praxis-chart\",\"ownerPackage\":\"@praxisui/charts\",\"configSchemaId\":\"PraxisXUiChartContract\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set chart document Effects: set-value. Save this chart in the editor and reopen it without changing the runtime chart document.\",\"scope\":\"global\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"x-ui-chart-document-root\",\"required\":false},\"inputContract\":{\"required\":[\"version\",\"kind\",\"source\"],\"properties\":[\"version\",\"kind\",\"chartId\",\"title\",\"subtitle\",\"source\",\"dimensions\",\"metrics\",\"gauge\",\"events\",\"motion\"],\"semanticTerms\":[\"version\",\"kind\",\"chartId\",\"title\",\"subtitle\",\"source\",\"dimensions\",\"metrics\",\"gauge\",\"events\",\"motion\",\"0.1.0\",\"bar\",\"combo\",\"horizontal-bar\",\"line\",\"pie\",\"donut\",\"area\",\"stacked-bar\",\"stacked-area\",\"scatter\",\"funnel\",\"pyramid\",\"treemap\",\"source.kind\",\"source.resource\",\"source.operation\",\"source.options\",\"gauge.scale\",\"motion.enabled\",\"motion.preset\",\"praxis.stats\",\"derived\",\"group-by\",\"timeseries\",\"distribution\",\"comparison\",\"source.options.comparisonPeriod\",\"gauge.scale.min\",\"gauge.scale.max\",\"subtle\",\"standard\",\"expressive\",\"source.options.comparisonPeriod.field\",\"source.options.comparisonPeriod.timezone\",\"source.options.comparisonPeriod.preset\",\"source.options.comparisonPeriod.mode\",\"TODAY\",\"YESTERDAY\",\"LAST_7_DAYS\",\"LAST_30_DAYS\",\"THIS_MONTH\",\"LAST_MONTH\",\"THIS_QUARTER\",\"THIS_YEAR\",\"PREVIOUS_ALIGNED\",\"PREVIOUS_CALENDAR_PERIOD\",\"source.options.limit\",\"1\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"chartDocument\"],\"validators\":[{\"validatorId\":\"chart-document-shape\",\"level\":\"error\",\"code\":\"CHART_DOCUMENT_SHAPE\",\"description\":\"Document must conform to PraxisXUiChartContract.\"},{\"validatorId\":\"chart-version-supported\",\"level\":\"error\",\"code\":\"CHART_VERSION_SUPPORTED\"},{\"validatorId\":\"chart-type-series-axis-compatible\",\"level\":\"error\",\"code\":\"CHART_TYPE_SERIES_AXIS_COMPATIBLE\",\"description\":\"Chart kind, dimensions, metrics and axes must be compatible.\"},{\"validatorId\":\"gauge-scalar-contract\",\"level\":\"error\",\"code\":\"GAUGE_SCALAR_CONTRACT\",\"description\":\"Gauge charts require one dimension, exactly one metric and, for praxis.stats, one group-by bucket selected with source.options.limit=1.\"},{\"validatorId\":\"gauge-scale-valid\",\"level\":\"error\",\"code\":\"GAUGE_SCALE_VALID\",\"description\":\"Gauge scale requires finite min and max values with max greater than min; runtime rejects values outside the declared scale without clamping.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"EDITOR_RUNTIME_ROUND_TRIP\",\"description\":\"PraxisChartConfigEditor must save/reopen the same canonical document that runtime consumes.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"round-trip-editor-runtime\",\"request\":\"Save this chart in the editor and reopen it without changing the runtime chart document.\",\"operationId\":\"chart.document.set\",\"params\":{\"version\":\"0.1.0\",\"kind\":\"bar\",\"source\":{\"kind\":\"derived\"},\"dimensions\":[{\"field\":\"department\"}],\"metrics\":[{\"field\":\"total\",\"aggregation\":\"count\"}]},\"isPositive\":true}],\"negativeExamples\":[]}",
3583
3598
  "sourcePointer": "projects/praxis-charts/src/lib/ai/praxis-charts-authoring-manifest.ts",
3584
- "contentHash": "effda98284e7645f53c2b0185b52459adfc18615f590ad19866d62225acb7ef0",
3599
+ "contentHash": "2e9f04cb09eb75daf83f527cb4a5080fdff64d531bc91094078450450f44538a",
3585
3600
  "sourceKind": "component_definition",
3586
3601
  "sourceId": "praxis-chart",
3587
3602
  "corpusVersion": "1.0.0"
@@ -3749,9 +3764,9 @@
3749
3764
  {
3750
3765
  "chunkIndex": 18,
3751
3766
  "chunkKind": "authoring_manifest",
3752
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.4.0\",\"componentId\":\"praxis-chart\",\"ownerPackage\":\"@praxisui/charts\",\"configSchemaId\":\"PraxisXUiChartContract\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"chart.document.set\",\"title\":\"Set chart document\",\"scope\":\"global\",\"targetKind\":\"dataBinding\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"x-ui-chart-document-root\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"version\",\"kind\",\"source\"],\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"const\":\"scatter\"}},\"required\":[\"kind\"]},\"then\":{\"required\":[\"dimensions\",\"metrics\"],\"properties\":{\"dimensions\":{\"type\":\"array\",\"minItems\":1},\"metrics\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":2}}}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"gauge\"}},\"required\":[\"kind\"]},\"then\":{\"required\":[\"dimensions\",\"metrics\",\"gauge\"],\"properties\":{\"dimensions\":{\"type\":\"array\",\"minItems\":1},\"metrics\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":1},\"gauge\":{\"type\":\"object\",\"required\":[\"scale\"],\"properties\":{\"scale\":{\"type\":\"object\",\"required\":[\"min\",\"max\"],\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}}}}}}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"gauge\"},\"source\":{\"properties\":{\"kind\":{\"const\":\"praxis.stats\"}},\"required\":[\"kind\"]}},\"required\":[\"kind\",\"source\"]},\"then\":{\"properties\":{\"source\":{\"required\":[\"operation\",\"options\"],\"properties\":{\"operation\":{\"const\":\"group-by\"},\"options\":{\"type\":\"object\",\"required\":[\"limit\"],\"properties\":{\"limit\":{\"const\":1}}}}}}}}],\"properties\":{\"version\":{\"const\":\"0.1.0\"},\"kind\":{\"enum\":[\"bar\",\"combo\",\"horizontal-bar\",\"line\",\"pie\",\"donut\",\"area\",\"stacked-bar\",\"stacked-area\",\"scatter\",\"funnel\",\"pyramid\",\"treemap\",\"gauge\"]},\"chartId\":{\"type\":\"string\"},\"title\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"subtitle\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"source\":{\"type\":\"object\",\"required\":[\"kind\"],\"properties\":{\"kind\":{\"enum\":[\"praxis.stats\",\"derived\"]},\"resource\":{\"type\":\"string\"},\"operation\":{\"enum\":[\"group-by\",\"timeseries\",\"distribution\",\"comparison\"]},\"options\":{\"type\":\"object\",\"properties\":{\"comparisonPeriod\":{\"type\":\"object\",\"required\":[\"field\",\"timezone\",\"preset\",\"mode\"],\"properties\":{\"field\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"},\"preset\":{\"enum\":[\"TODAY\",\"YESTERDAY\",\"LAST_7_DAYS\",\"LAST_30_DAYS\",\"THIS_MONTH\",\"LAST_MONTH\",\"THIS_QUARTER\",\"THIS_YEAR\"]},\"mode\":{\"enum\":[\"PREVIOUS_ALIGNED\",\"PREVIOUS_CALENDAR_PERIOD\"]}}}}}}},\"dimensions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"metrics\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"gauge\":{\"type\":\"object\",\"required\":[\"scale\"],\"properties\":{\"scale\":{\"type\":\"object\",\"required\":[\"min\",\"max\"],\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}}}},\"events\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"chartDocument\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"chart-document-shape\",\"chart-version-supported\",\"chart-type-series-axis-compatible\",\"gauge-scalar-contract\",\"gauge-scale-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"chart.type.set\",\"title\":\"Set chart type\",\"scope\":\"global\",\"targetKind\":\"chartType\",\"target\":{\"kind\":\"chartType\",\"resolver\":\"x-ui-chart-kind\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\"],\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"const\":\"gauge\"}},\"required\":[\"kind\"]},\"then\":{\"required\":[\"gauge\"]}}],\"properties\":{\"kind\":{\"enum\":[\"bar\",\"combo\",\"horizontal-bar\",\"line\",\"pie\",\"donut\",\"area\",\"stacked-bar\",\"stacked-area\",\"scatter\",\"funnel\",\"pyramid\",\"treemap\",\"gauge\"]},\"orientation\":{\"enum\":[\"vertical\",\"horizontal\"]},\"gauge\":{\"type\":\"object\",\"required\":[\"scale\"],\"properties\":{\"scale\":{\"type\":\"object\",\"required\":[\"min\",\"max\"],\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"chartDocument\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"chart-type-supported\",\"chart-type-series-axis-compatible\",\"category-slice-single-metric\",\"combo-minimum-series\",\"gauge-scalar-contract\",\"gauge-scale-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument.kind\",\"chartDocument.orientation\",\"chartDocument.metrics[]\",\"chartDocument.dimensions[]\",\"chartDocument.gauge.scale\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"series.add\",\"title\":\"Add chart series\",\"scope\":\"dataBinding\",\"targetKind\":\"series\",\"target\":{\"kind\":\"series\",\"resolver\":\"x-ui-chart-metric-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\"},\"label\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"aggregation\":{\"enum\":[\"sum\",\"avg\",\"min\",\"max\",\"count\",\"distinct-count\"]},\"seriesKind\":{\"enum\":[\"bar\",\"line\",\"area\"]},\"axis\":{\"enum\":[\"primary\",\"secondary\"]},\"color\":{\"type\":\"string\"},\"format\":{\"type\":\"string\"},\"afterField\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"chart-series-add\",\"handlerContract\":{\"reads\":[\"chartDocument.kind\",\"chartDocument.metrics[]\",\"availableFields[]\"],\"writes\":[\"chartDocument.metrics[]\"],\"identityKeys\":[\"chartDocument.metrics[].field\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\"},\"label\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"aggregation\":{\"enum\":[\"sum\",\"avg\",\"min\",\"max\",\"count\",\"distinct-count\"]},\"seriesKind\":{\"enum\":[\"bar\",\"line\",\"area\"]},\"axis\":{\"enum\":[\"primary\",\"secondary\"]},\"color\":{\"type\":\"string\"},\"format\":{\"type\":\"string\"},\"afterField\":{\"type\":\"string\"}}},\"failureModes\":[\"field-not-in-catalog\",\"duplicate-series-field\",\"aggregation-not-supported\",\"chart-type-series-incompatible\"],\"description\":\"Adds a metric-backed series by semantic field, validating it against availableFields and chart kind compatibility before patching metrics[]. Scatter accepts at most two ordered metrics, mapped to X and Y in the dual-measure mode.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"series-field-exists\",\"series-field-aggregable\",\"series-id-unique\",\"chart-type-series-axis-compatible\",\"gauge-scalar-contract\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument.metrics[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"series.remove\",\"title\":\"Remove chart series\",\"scope\":\"dataBinding\",\"targetKind\":\"series\",\"target\":{\"kind\":\"series\",\"resolver\":\"x-ui-chart-metric-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\"},\"replacementField\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"chartDocument.metrics[]\",\"key\":\"field\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"series-exists\",\"destructive-series-removal-confirmed\",\"chart-keeps-required-metric\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument.metrics[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-series-exists\",\"confirmation-collected\"]}]}",
3767
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.4.0\",\"componentId\":\"praxis-chart\",\"ownerPackage\":\"@praxisui/charts\",\"configSchemaId\":\"PraxisXUiChartContract\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"chart.document.set\",\"title\":\"Set chart document\",\"scope\":\"global\",\"targetKind\":\"dataBinding\",\"target\":{\"kind\":\"dataBinding\",\"resolver\":\"x-ui-chart-document-root\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"version\",\"kind\",\"source\"],\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"const\":\"scatter\"}},\"required\":[\"kind\"]},\"then\":{\"required\":[\"dimensions\",\"metrics\"],\"properties\":{\"dimensions\":{\"type\":\"array\",\"minItems\":1},\"metrics\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":2}}}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"gauge\"}},\"required\":[\"kind\"]},\"then\":{\"required\":[\"dimensions\",\"metrics\",\"gauge\"],\"properties\":{\"dimensions\":{\"type\":\"array\",\"minItems\":1},\"metrics\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":1},\"gauge\":{\"type\":\"object\",\"required\":[\"scale\"],\"properties\":{\"scale\":{\"type\":\"object\",\"required\":[\"min\",\"max\"],\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}}}}}}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"gauge\"},\"source\":{\"properties\":{\"kind\":{\"const\":\"praxis.stats\"}},\"required\":[\"kind\"]}},\"required\":[\"kind\",\"source\"]},\"then\":{\"properties\":{\"source\":{\"required\":[\"operation\",\"options\"],\"properties\":{\"operation\":{\"const\":\"group-by\"},\"options\":{\"type\":\"object\",\"required\":[\"limit\"],\"properties\":{\"limit\":{\"const\":1}}}}}}}}],\"properties\":{\"version\":{\"const\":\"0.1.0\"},\"kind\":{\"enum\":[\"bar\",\"combo\",\"horizontal-bar\",\"line\",\"pie\",\"donut\",\"area\",\"stacked-bar\",\"stacked-area\",\"scatter\",\"funnel\",\"pyramid\",\"treemap\",\"gauge\"]},\"chartId\":{\"type\":\"string\"},\"title\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"subtitle\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"source\":{\"type\":\"object\",\"required\":[\"kind\"],\"properties\":{\"kind\":{\"enum\":[\"praxis.stats\",\"derived\"]},\"resource\":{\"type\":\"string\"},\"operation\":{\"enum\":[\"group-by\",\"timeseries\",\"distribution\",\"comparison\"]},\"options\":{\"type\":\"object\",\"properties\":{\"comparisonPeriod\":{\"type\":\"object\",\"required\":[\"field\",\"timezone\",\"preset\",\"mode\"],\"properties\":{\"field\":{\"type\":\"string\"},\"timezone\":{\"type\":\"string\"},\"preset\":{\"enum\":[\"TODAY\",\"YESTERDAY\",\"LAST_7_DAYS\",\"LAST_30_DAYS\",\"THIS_MONTH\",\"LAST_MONTH\",\"THIS_QUARTER\",\"THIS_YEAR\"]},\"mode\":{\"enum\":[\"PREVIOUS_ALIGNED\",\"PREVIOUS_CALENDAR_PERIOD\"]}}}}}}},\"dimensions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"metrics\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"gauge\":{\"type\":\"object\",\"required\":[\"scale\"],\"properties\":{\"scale\":{\"type\":\"object\",\"required\":[\"min\",\"max\"],\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}}}},\"events\":{\"type\":\"object\"},\"motion\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"preset\":{\"enum\":[\"subtle\",\"standard\",\"expressive\"]}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"chartDocument\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"chart-document-shape\",\"chart-version-supported\",\"chart-type-series-axis-compatible\",\"gauge-scalar-contract\",\"gauge-scale-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"chart.type.set\",\"title\":\"Set chart type\",\"scope\":\"global\",\"targetKind\":\"chartType\",\"target\":{\"kind\":\"chartType\",\"resolver\":\"x-ui-chart-kind\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\"],\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"const\":\"gauge\"}},\"required\":[\"kind\"]},\"then\":{\"required\":[\"gauge\"]}}],\"properties\":{\"kind\":{\"enum\":[\"bar\",\"combo\",\"horizontal-bar\",\"line\",\"pie\",\"donut\",\"area\",\"stacked-bar\",\"stacked-area\",\"scatter\",\"funnel\",\"pyramid\",\"treemap\",\"gauge\"]},\"orientation\":{\"enum\":[\"vertical\",\"horizontal\"]},\"gauge\":{\"type\":\"object\",\"required\":[\"scale\"],\"properties\":{\"scale\":{\"type\":\"object\",\"required\":[\"min\",\"max\"],\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"chartDocument\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"chart-type-supported\",\"chart-type-series-axis-compatible\",\"category-slice-single-metric\",\"combo-minimum-series\",\"gauge-scalar-contract\",\"gauge-scale-valid\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument.kind\",\"chartDocument.orientation\",\"chartDocument.metrics[]\",\"chartDocument.dimensions[]\",\"chartDocument.gauge.scale\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"series.add\",\"title\":\"Add chart series\",\"scope\":\"dataBinding\",\"targetKind\":\"series\",\"target\":{\"kind\":\"series\",\"resolver\":\"x-ui-chart-metric-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\"},\"label\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"aggregation\":{\"enum\":[\"sum\",\"avg\",\"min\",\"max\",\"count\",\"distinct-count\"]},\"seriesKind\":{\"enum\":[\"bar\",\"line\",\"area\"]},\"axis\":{\"enum\":[\"primary\",\"secondary\"]},\"color\":{\"type\":\"string\"},\"format\":{\"type\":\"string\"},\"afterField\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"chart-series-add\",\"handlerContract\":{\"reads\":[\"chartDocument.kind\",\"chartDocument.metrics[]\",\"availableFields[]\"],\"writes\":[\"chartDocument.metrics[]\"],\"identityKeys\":[\"chartDocument.metrics[].field\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\"},\"label\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"aggregation\":{\"enum\":[\"sum\",\"avg\",\"min\",\"max\",\"count\",\"distinct-count\"]},\"seriesKind\":{\"enum\":[\"bar\",\"line\",\"area\"]},\"axis\":{\"enum\":[\"primary\",\"secondary\"]},\"color\":{\"type\":\"string\"},\"format\":{\"type\":\"string\"},\"afterField\":{\"type\":\"string\"}}},\"failureModes\":[\"field-not-in-catalog\",\"duplicate-series-field\",\"aggregation-not-supported\",\"chart-type-series-incompatible\"],\"description\":\"Adds a metric-backed series by semantic field, validating it against availableFields and chart kind compatibility before patching metrics[]. Scatter accepts at most two ordered metrics, mapped to X and Y in the dual-measure mode.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"series-field-exists\",\"series-field-aggregable\",\"series-id-unique\",\"chart-type-series-axis-compatible\",\"gauge-scalar-contract\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument.metrics[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"series.remove\",\"title\":\"Remove chart series\",\"scope\":\"dataBinding\",\"targetKind\":\"series\",\"target\":{\"kind\":\"series\",\"resolver\":\"x-ui-chart-metric-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\"},\"replacementField\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"chartDocument.metrics[]\",\"key\":\"field\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"series-exists\",\"destructive-series-removal-confirmed\",\"chart-keeps-required-metric\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"chartDocument.metrics[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-series-exists\",\"confirmation-collected\"]}]}",
3753
3768
  "sourcePointer": "projects/praxis-charts/src/lib/ai/praxis-charts-authoring-manifest.ts",
3754
- "contentHash": "6e5bac49df69a4a4c878b10f2dc2ae184dfecd36d2aa2850febbf1339fdbcd60",
3769
+ "contentHash": "592f5da7d0cba24aa486b6530c95f7150de2e95e7f9888190586184f97012194",
3755
3770
  "sourceKind": "component_definition",
3756
3771
  "sourceId": "praxis-chart",
3757
3772
  "corpusVersion": "1.0.0"
@@ -3955,12 +3970,15 @@
3955
3970
  {
3956
3971
  "id": "sparkline-area",
3957
3972
  "label": "Sparkline de Tendência (Área)",
3958
- "description": "Minigráfico contínuo de área para visualização de tendência temporal.",
3973
+ "description": "Minigráfico contínuo de área com meta, baseline e sufixo contextual para tendência temporal.",
3959
3974
  "icon": "show_chart",
3960
3975
  "inputs": {
3961
3976
  "visualization": {
3962
3977
  "kind": "area",
3963
3978
  "tone": "info",
3979
+ "target": 30,
3980
+ "baseline": 15,
3981
+ "valueSuffix": "%",
3964
3982
  "points": [
3965
3983
  {
3966
3984
  "value": 12,
@@ -4028,9 +4046,9 @@
4028
4046
  {
4029
4047
  "chunkIndex": 0,
4030
4048
  "chunkKind": "summary",
4031
- "content": "Component ID: praxis-micro-visualization\nSelector: praxis-micro-visualization\nFriendly Name: Micro-visualização Analítica\nDescription: Renderiza micro-visualizações ultraleves e autônomas (bullet, radial, sparkline, processFlow, comparison, etc.) como widget independente no canvas ou célula.\nLib/Package: @praxisui/charts\nTags: chart, analytics, widget, microchart, visualization, sparkline, bullet, radial\nInputs:\n - visualization (PraxisPresentationVisualizationConfig)\n - fallbackText (string)\nInsertion Presets:\n - bullet-kpi: Bullet Graph KPI - Microchart do tipo bullet com faixas de tolerância e valor meta.\n - radial-score: Radial Score - Medidor circular compacto de pontuação ou progresso percentual.\n - sparkline-area: Sparkline de Tendência (Área) - Minigráfico contínuo de área para visualização de tendência temporal.\n - process-flow: Fluxo de Etapas (Process Flow) - Indicador visual compacto de etapas sequenciais ou esteira de estados.\n",
4049
+ "content": "Component ID: praxis-micro-visualization\nSelector: praxis-micro-visualization\nFriendly Name: Micro-visualização Analítica\nDescription: Renderiza micro-visualizações ultraleves e autônomas (bullet, radial, sparkline, processFlow, comparison, etc.) como widget independente no canvas ou célula.\nLib/Package: @praxisui/charts\nTags: chart, analytics, widget, microchart, visualization, sparkline, bullet, radial\nInputs:\n - visualization (PraxisPresentationVisualizationConfig)\n - fallbackText (string)\nInsertion Presets:\n - bullet-kpi: Bullet Graph KPI - Microchart do tipo bullet com faixas de tolerância e valor meta.\n - radial-score: Radial Score - Medidor circular compacto de pontuação ou progresso percentual.\n - sparkline-area: Sparkline de Tendência (Área) - Minigráfico contínuo de área com meta, baseline e sufixo contextual para tendência temporal.\n - process-flow: Fluxo de Etapas (Process Flow) - Indicador visual compacto de etapas sequenciais ou esteira de estados.\n",
4032
4050
  "sourcePointer": "projects/praxis-charts/src/lib/praxis-micro-visualization.metadata.ts",
4033
- "contentHash": "455a9d78d9176e7b267f6cb9f0a511dffd981c889b810b09ea1b45952512d060",
4051
+ "contentHash": "817a9c2f34ef665209e7c7bc1f0bf23b055abe9be5fe653d738deaa40a28a589",
4034
4052
  "sourceKind": "component_definition",
4035
4053
  "sourceId": "praxis-micro-visualization",
4036
4054
  "corpusVersion": "1.0.0"