semiotic 3.8.5 → 3.8.7

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.
Files changed (277) hide show
  1. package/CLAUDE.md +37 -10
  2. package/README.md +83 -56
  3. package/ai/behaviorContracts.cjs +88 -3
  4. package/ai/componentMetadata.cjs +5 -10
  5. package/ai/dist/mcp-server.js +99 -10
  6. package/ai/examples.md +198 -9
  7. package/ai/schema.json +2002 -165
  8. package/ai/surface-manifest.json +14 -10
  9. package/ai/system-prompt.md +9 -3
  10. package/dist/{chunk-chartContainerDataAudit-74TLKIP6.module.min.js → chunk-chartContainerDataAudit-JDSVSKGM.module.min.js} +1 -1
  11. package/dist/chunk-chunk-2JGJ5GUG.module.min.js +1 -0
  12. package/dist/chunk-chunk-2YAZHXL4.module.min.js +2 -0
  13. package/dist/chunk-chunk-3NGIKFD6.module.min.js +1 -0
  14. package/dist/{chunk-chunk-G7WFWHAD.module.min.js → chunk-chunk-4ITOQRXM.module.min.js} +1 -1
  15. package/dist/chunk-chunk-5SD6BHVW.module.min.js +2 -0
  16. package/dist/chunk-chunk-6V5VQVCT.module.min.js +2 -0
  17. package/dist/chunk-chunk-7TTBHSAG.module.min.js +2 -0
  18. package/dist/chunk-chunk-7ZDJSYKI.module.min.js +2 -0
  19. package/dist/chunk-chunk-BGHPD3RA.module.min.js +1 -0
  20. package/dist/chunk-chunk-BMRZ2SPU.module.min.js +2 -0
  21. package/dist/chunk-chunk-BNGBEY7N.module.min.js +2 -0
  22. package/dist/chunk-chunk-C7APLVQD.module.min.js +2 -0
  23. package/dist/chunk-chunk-DGWFBOGB.module.min.js +1 -0
  24. package/dist/chunk-chunk-DIVE2DRA.module.min.js +2 -0
  25. package/dist/chunk-chunk-FBUNUIPV.module.min.js +2 -0
  26. package/dist/chunk-chunk-FQPKOAIH.module.min.js +2 -0
  27. package/dist/chunk-chunk-FRO4TRXK.module.min.js +2 -0
  28. package/dist/chunk-chunk-G7QVPZUD.module.min.js +2 -0
  29. package/dist/chunk-chunk-GBPYV4FP.module.min.js +2 -0
  30. package/dist/chunk-chunk-GU2EJIDJ.module.min.js +2 -0
  31. package/dist/chunk-chunk-J5QD4RAM.module.min.js +2 -0
  32. package/dist/{chunk-chunk-LJLS6DY7.module.min.js → chunk-chunk-JWXLNZSM.module.min.js} +1 -1
  33. package/dist/chunk-chunk-KXAFCCDB.module.min.js +2 -0
  34. package/dist/chunk-chunk-LG7YKJAK.module.min.js +2 -0
  35. package/dist/{chunk-chunk-I36PJ4OC.module.min.js → chunk-chunk-LVHDZAT3.module.min.js} +1 -1
  36. package/dist/chunk-chunk-LWITSR2O.module.min.js +2 -0
  37. package/dist/chunk-chunk-MX35T6RX.module.min.js +2 -0
  38. package/dist/chunk-chunk-NH4MEAKP.module.min.js +2 -0
  39. package/dist/chunk-chunk-NJETWX42.module.min.js +2 -0
  40. package/dist/chunk-chunk-NW25WGLS.module.min.js +2 -0
  41. package/dist/{chunk-chunk-TMWIZL3K.module.min.js → chunk-chunk-OI7R7EJB.module.min.js} +1 -1
  42. package/dist/chunk-chunk-ONMLEXHR.module.min.js +2 -0
  43. package/dist/chunk-chunk-OY66GCE6.module.min.js +1 -0
  44. package/dist/chunk-chunk-PZFT457G.module.min.js +1 -0
  45. package/dist/chunk-chunk-Q3WW6JGR.module.min.js +1 -0
  46. package/dist/chunk-chunk-Q6XKQTOQ.module.min.js +1 -0
  47. package/dist/chunk-chunk-RJRM2E6P.module.min.js +1 -0
  48. package/dist/chunk-chunk-RPL7WYXI.module.min.js +1 -0
  49. package/dist/chunk-chunk-SV4XAZ3Q.module.min.js +1 -0
  50. package/dist/chunk-chunk-TSCFL235.module.min.js +1 -0
  51. package/dist/chunk-chunk-UOQRPGPK.module.min.js +2 -0
  52. package/dist/chunk-chunk-V3OAKG32.module.min.js +1 -0
  53. package/dist/chunk-chunk-WLOIUMWG.module.min.js +2 -0
  54. package/dist/chunk-chunk-XEGXX4F7.module.min.js +1 -0
  55. package/dist/chunk-chunk-XFRBLXYM.module.min.js +1 -0
  56. package/dist/chunk-chunk-Z2AJERX5.module.min.js +2 -0
  57. package/dist/chunk-chunk-ZXYDYAB7.module.min.js +2 -0
  58. package/dist/components/ai/SemioticVACPBridge.d.ts +22 -0
  59. package/dist/components/ai/chartCapabilities.d.ts +5 -3
  60. package/dist/components/ai/conversationArc.d.ts +2 -176
  61. package/dist/components/ai/conversationArcTypes.d.ts +202 -0
  62. package/dist/components/ai/readerGrounding.d.ts +12 -0
  63. package/dist/components/ai/vacpAdapter.d.ts +13 -0
  64. package/dist/components/ai/vacpAdapterActions.d.ts +2 -0
  65. package/dist/components/ai/vacpAdapterModel.d.ts +7 -0
  66. package/dist/components/ai/vacpAdapterRuntime.d.ts +26 -0
  67. package/dist/components/ai/vacpAdapterState.d.ts +3 -0
  68. package/dist/components/ai/vacpAdapterTypes.d.ts +169 -0
  69. package/dist/components/ai/vacpTypes.d.ts +160 -0
  70. package/dist/components/charts/custom/XYCustomChart.d.ts +3 -0
  71. package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
  72. package/dist/components/charts/index.d.ts +7 -4
  73. package/dist/components/charts/ordinal/BarChart.d.ts +7 -14
  74. package/dist/components/charts/ordinal/GaugeChart.d.ts +3 -0
  75. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +3 -0
  76. package/dist/components/charts/ordinal/StackedBarChart.d.ts +3 -0
  77. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +4 -14
  78. package/dist/components/charts/physics/ChainReactionChart.capability.d.ts +9 -0
  79. package/dist/components/charts/physics/ChainReactionChart.d.ts +29 -0
  80. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +1 -1
  81. package/dist/components/charts/physics/EventDropChart.d.ts +7 -2
  82. package/dist/components/charts/physics/GaltonBoardChart.d.ts +1 -1
  83. package/dist/components/charts/physics/{PhysicsPileChart.capability.d.ts → PacketFlowChart.capability.d.ts} +1 -1
  84. package/dist/components/charts/physics/{PhysicalFlowChart.d.ts → PacketFlowChart.d.ts} +22 -6
  85. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +1 -1
  86. package/dist/components/charts/physics/ProcessFlowChart.d.ts +7 -4
  87. package/dist/components/charts/physics/{PhysicalFlowChart.capability.d.ts → UnitPileChart.capability.d.ts} +1 -1
  88. package/dist/components/charts/physics/{PhysicsPileChart.d.ts → UnitPileChart.d.ts} +19 -6
  89. package/dist/components/charts/physics/crucibleChartProps.d.ts +1 -1
  90. package/dist/components/charts/physics/crucibleChartUtils.d.ts +9 -0
  91. package/dist/components/charts/physics/gauntletChartProps.d.ts +6 -1
  92. package/dist/components/charts/physics/gauntletTerminal.d.ts +61 -0
  93. package/dist/components/charts/physics/packetFlowSemantics.d.ts +6 -0
  94. package/dist/components/charts/physics/physicsHocUtils.d.ts +45 -2
  95. package/dist/components/charts/shared/auditAccessibilityStyles.d.ts +9 -0
  96. package/dist/components/charts/shared/chartSpecCore.d.ts +2 -4
  97. package/dist/components/charts/shared/gaugeGradient.d.ts +4 -8
  98. package/dist/components/charts/shared/gradient.d.ts +35 -0
  99. package/dist/components/charts/shared/hatchFill.d.ts +3 -10
  100. package/dist/components/charts/shared/hooks.d.ts +2 -50
  101. package/dist/components/charts/shared/knownChartComponents.d.ts +1 -1
  102. package/dist/components/charts/shared/streamPropsHelpers.d.ts +1 -2
  103. package/dist/components/charts/shared/useChartLegend.d.ts +65 -0
  104. package/dist/components/charts/shared/useChartSetup.d.ts +12 -0
  105. package/dist/components/charts/shared/useCustomChartSetup.d.ts +6 -1
  106. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +1 -0
  107. package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
  108. package/dist/components/charts/xy/AreaChart.d.ts +25 -42
  109. package/dist/components/charts/xy/BumpChart.capability.d.ts +11 -0
  110. package/dist/components/charts/xy/BumpChart.d.ts +161 -0
  111. package/dist/components/charts/xy/DifferenceChart.d.ts +3 -10
  112. package/dist/components/charts/xy/Heatmap.d.ts +3 -0
  113. package/dist/components/charts/xy/LineChart.d.ts +6 -8
  114. package/dist/components/data/portability/capabilityBinding.d.ts +41 -0
  115. package/dist/components/data/portability/index.d.ts +2 -0
  116. package/dist/components/geometry/bumpRibbonGeometry.d.ts +36 -0
  117. package/dist/components/legendLayout.d.ts +75 -1
  118. package/dist/components/recipes/geographicDotGrid.d.ts +82 -0
  119. package/dist/components/recipes/geographicGrid.d.ts +100 -0
  120. package/dist/components/recipes/physics.d.ts +2 -0
  121. package/dist/components/recipes/physicsStageGeography.d.ts +137 -0
  122. package/dist/components/semiotic-ai.d.ts +6 -4
  123. package/dist/components/semiotic-experimental-vacp.d.ts +11 -0
  124. package/dist/components/semiotic-experimental.d.ts +6 -3
  125. package/dist/components/semiotic-geo.d.ts +5 -0
  126. package/dist/components/semiotic-network.d.ts +1 -0
  127. package/dist/components/semiotic-ordinal.d.ts +2 -0
  128. package/dist/components/semiotic-physics.d.ts +10 -6
  129. package/dist/components/semiotic-realtime-core.d.ts +1 -0
  130. package/dist/components/semiotic-recipes-core.d.ts +6 -1
  131. package/dist/components/semiotic-server-edge.d.ts +1 -1
  132. package/dist/components/semiotic-server.d.ts +1 -1
  133. package/dist/components/semiotic-xy.d.ts +4 -0
  134. package/dist/components/semiotic.d.ts +4 -4
  135. package/dist/components/server/renderEvidence.d.ts +1 -1
  136. package/dist/components/server/renderToStaticSVG.d.ts +2 -1
  137. package/dist/components/server/serverChartConfigHeatmap.d.ts +6 -0
  138. package/dist/components/server/serverChartConfigNetworkStyles.d.ts +12 -0
  139. package/dist/components/server/serverChartConfigShared.d.ts +16 -0
  140. package/dist/components/server/serverChartConfigs.d.ts +3 -2
  141. package/dist/components/server/serverChartConfigsPhysics.d.ts +2 -2
  142. package/dist/components/server/serverChartConfigsXY.d.ts +1 -1
  143. package/dist/components/server/staticLegend.d.ts +10 -2
  144. package/dist/components/server/staticSVGChrome.d.ts +14 -6
  145. package/dist/components/server/staticValue.d.ts +8 -0
  146. package/dist/components/stream/GeoSVGOverlay.d.ts +4 -10
  147. package/dist/components/stream/NetworkSVGOverlay.d.ts +2 -6
  148. package/dist/components/stream/OrdinalSVGOverlay.d.ts +2 -6
  149. package/dist/components/stream/SVGOverlay.d.ts +2 -6
  150. package/dist/components/stream/StalenessBadge.d.ts +2 -6
  151. package/dist/components/stream/geoPipelineConfig.d.ts +10 -0
  152. package/dist/components/stream/geoTypes.d.ts +3 -6
  153. package/dist/components/stream/legendRenderer.d.ts +10 -6
  154. package/dist/components/stream/ordinalTypes.d.ts +7 -31
  155. package/dist/components/stream/physics/PhysicsEvidence.d.ts +37 -0
  156. package/dist/components/stream/physics/PhysicsKernel.d.ts +1 -0
  157. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +9 -0
  158. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +2 -6
  159. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +5 -0
  160. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +2 -6
  161. package/dist/components/stream/physics/physicsFramePipelineConfig.d.ts +19 -0
  162. package/dist/components/stream/physics/physicsPipelineSettle.d.ts +52 -0
  163. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +23 -0
  164. package/dist/components/stream/pipelineConfig.d.ts +7 -15
  165. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +9 -69
  166. package/dist/components/stream/renderers/cornerRadii.d.ts +2 -9
  167. package/dist/components/stream/renderers/thresholdLineSegments.d.ts +12 -0
  168. package/dist/components/stream/sceneToSVGShared.d.ts +3 -5
  169. package/dist/components/stream/types.d.ts +34 -56
  170. package/dist/components/stream/xySceneBuilders/areaGradient.d.ts +4 -20
  171. package/dist/components/stream/xySceneBuilders/types.d.ts +6 -6
  172. package/dist/components/types/legendTypes.d.ts +31 -6
  173. package/dist/controls.min.js +1 -1
  174. package/dist/controls.module.min.js +1 -1
  175. package/dist/geo.min.js +1 -1
  176. package/dist/geo.module.min.js +1 -1
  177. package/dist/network.min.js +1 -1
  178. package/dist/network.module.min.js +1 -1
  179. package/dist/ordinal.min.js +1 -1
  180. package/dist/ordinal.module.min.js +1 -1
  181. package/dist/physics.min.js +1 -1
  182. package/dist/physics.module.min.js +1 -1
  183. package/dist/physicsWorker.js +1 -1
  184. package/dist/realtime.min.js +1 -1
  185. package/dist/realtime.module.min.js +1 -1
  186. package/dist/semiotic-ai-core.min.js +1 -1
  187. package/dist/semiotic-ai-core.module.min.js +1 -1
  188. package/dist/semiotic-ai.d.ts +6 -4
  189. package/dist/semiotic-ai.min.js +1 -1
  190. package/dist/semiotic-ai.module.min.js +1 -1
  191. package/dist/semiotic-data.module.min.js +1 -1
  192. package/dist/semiotic-experimental-vacp.d.ts +11 -0
  193. package/dist/semiotic-experimental-vacp.min.js +1 -0
  194. package/dist/semiotic-experimental-vacp.module.min.js +1 -0
  195. package/dist/semiotic-experimental.d.ts +6 -3
  196. package/dist/semiotic-experimental.min.js +2 -1
  197. package/dist/semiotic-experimental.module.min.js +2 -1
  198. package/dist/semiotic-geo.d.ts +5 -0
  199. package/dist/semiotic-network.d.ts +1 -0
  200. package/dist/semiotic-ordinal.d.ts +2 -0
  201. package/dist/semiotic-physics.d.ts +10 -6
  202. package/dist/semiotic-realtime-core.d.ts +1 -0
  203. package/dist/semiotic-realtime-core.min.js +1 -1
  204. package/dist/semiotic-realtime-core.module.min.js +1 -1
  205. package/dist/semiotic-recipes-core.d.ts +6 -1
  206. package/dist/semiotic-recipes-core.min.js +1 -1
  207. package/dist/semiotic-recipes-core.module.min.js +1 -1
  208. package/dist/semiotic-recipes.min.js +1 -1
  209. package/dist/semiotic-recipes.module.min.js +1 -1
  210. package/dist/semiotic-server-edge.d.ts +1 -1
  211. package/dist/semiotic-server-edge.min.js +1 -1
  212. package/dist/semiotic-server-edge.module.min.js +1 -1
  213. package/dist/semiotic-server-node.min.js +1 -1
  214. package/dist/semiotic-server-node.module.min.js +1 -1
  215. package/dist/semiotic-server.d.ts +1 -1
  216. package/dist/semiotic-utils-core.min.js +1 -1
  217. package/dist/semiotic-utils-core.module.min.js +1 -1
  218. package/dist/semiotic-utils.min.js +1 -1
  219. package/dist/semiotic-utils.module.min.js +1 -1
  220. package/dist/semiotic-xy.d.ts +4 -0
  221. package/dist/semiotic.d.ts +4 -4
  222. package/dist/semiotic.min.js +1 -1
  223. package/dist/semiotic.module.min.js +1 -1
  224. package/dist/server.min.js +1 -1
  225. package/dist/server.module.min.js +1 -1
  226. package/dist/xy.min.js +1 -1
  227. package/dist/xy.module.min.js +1 -1
  228. package/package.json +18 -2
  229. package/spec/README.md +94 -2
  230. package/spec/bindings/README.md +14 -3
  231. package/spec/v0.1/examples/annotation-provenance-reviewed-revision.json +27 -0
  232. package/spec/v0.1/examples/annotation-provenance-watcher-threshold.json +21 -0
  233. package/spec/v0.1/examples/audience-profile-executive-review.json +24 -0
  234. package/spec/v0.1/examples/audience-profile-incident-operators.json +42 -0
  235. package/spec/v0.1/examples/chart-capability-bar-comparison.json +48 -0
  236. package/spec/v0.1/examples/chart-capability-service-flow.json +54 -0
  237. package/dist/chunk-chunk-4AANPFOX.module.min.js +0 -2
  238. package/dist/chunk-chunk-5I3UZV4Q.module.min.js +0 -2
  239. package/dist/chunk-chunk-5RKXZQ2P.module.min.js +0 -1
  240. package/dist/chunk-chunk-74CCPVXB.module.min.js +0 -1
  241. package/dist/chunk-chunk-7ALTGHK6.module.min.js +0 -1
  242. package/dist/chunk-chunk-ANYDWOZF.module.min.js +0 -1
  243. package/dist/chunk-chunk-AVBI6GDT.module.min.js +0 -1
  244. package/dist/chunk-chunk-BANTPINB.module.min.js +0 -2
  245. package/dist/chunk-chunk-C4YA6TDR.module.min.js +0 -1
  246. package/dist/chunk-chunk-C57LR3YG.module.min.js +0 -1
  247. package/dist/chunk-chunk-CKMD5NV3.module.min.js +0 -2
  248. package/dist/chunk-chunk-CO5KQMGH.module.min.js +0 -1
  249. package/dist/chunk-chunk-CWQ5YIHX.module.min.js +0 -2
  250. package/dist/chunk-chunk-E6TXX6MI.module.min.js +0 -1
  251. package/dist/chunk-chunk-GMQ5AYTD.module.min.js +0 -1
  252. package/dist/chunk-chunk-JCG72SGW.module.min.js +0 -2
  253. package/dist/chunk-chunk-K3DMEW22.module.min.js +0 -1
  254. package/dist/chunk-chunk-KT2VAZMZ.module.min.js +0 -1
  255. package/dist/chunk-chunk-L6EA5V3G.module.min.js +0 -2
  256. package/dist/chunk-chunk-LJPCLYSC.module.min.js +0 -2
  257. package/dist/chunk-chunk-LRIFN2HK.module.min.js +0 -1
  258. package/dist/chunk-chunk-N5DDKCCF.module.min.js +0 -1
  259. package/dist/chunk-chunk-NEVE562N.module.min.js +0 -1
  260. package/dist/chunk-chunk-NLO44TOS.module.min.js +0 -2
  261. package/dist/chunk-chunk-PZJ2SBLL.module.min.js +0 -2
  262. package/dist/chunk-chunk-QSQVBIJA.module.min.js +0 -1
  263. package/dist/chunk-chunk-QUJ6TTLY.module.min.js +0 -1
  264. package/dist/chunk-chunk-RBIDBUT4.module.min.js +0 -2
  265. package/dist/chunk-chunk-RCF52Z42.module.min.js +0 -2
  266. package/dist/chunk-chunk-RFLAG356.module.min.js +0 -1
  267. package/dist/chunk-chunk-RPU4IZAV.module.min.js +0 -2
  268. package/dist/chunk-chunk-SKMBCFIL.module.min.js +0 -2
  269. package/dist/chunk-chunk-TAE7W424.module.min.js +0 -2
  270. package/dist/chunk-chunk-TUBMTZMU.module.min.js +0 -2
  271. package/dist/chunk-chunk-UFFEXJQY.module.min.js +0 -1
  272. package/dist/chunk-chunk-XSCHTS4D.module.min.js +0 -2
  273. package/dist/chunk-chunk-XXWSHGPL.module.min.js +0 -2
  274. package/dist/chunk-chunk-ZOAQDIJO.module.min.js +0 -1
  275. package/dist/chunk-chunk-ZXIXAPRE.module.min.js +0 -2
  276. package/dist/chunk-statisticalOverlays-QGDLRUHX.module.min.js +0 -1
  277. package/dist/chunk-statisticalOverlays-T77OKLDY.module.min.js +0 -1
package/ai/schema.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "name": "semiotic",
4
- "version": "3.8.5",
4
+ "version": "3.8.7",
5
5
  "description": "React data visualization library for charts, networks, and beyond",
6
6
  "tools": [
7
7
  {
@@ -62,6 +62,27 @@
62
62
  "showLegend": {
63
63
  "type": "boolean"
64
64
  },
65
+ "legendInteraction": {
66
+ "type": "string",
67
+ "enum": [
68
+ "highlight",
69
+ "isolate",
70
+ "none"
71
+ ],
72
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
73
+ "default": "none"
74
+ },
75
+ "legendPosition": {
76
+ "type": "string",
77
+ "enum": [
78
+ "right",
79
+ "left",
80
+ "top",
81
+ "bottom"
82
+ ],
83
+ "description": "Position the legend beside or above/below the plot.",
84
+ "default": "right"
85
+ },
65
86
  "showGrid": {
66
87
  "type": "boolean",
67
88
  "default": false
@@ -234,7 +255,7 @@
234
255
  },
235
256
  "xAccessor": {
236
257
  "type": "string",
237
- "description": "Key or accessor function for x-axis values",
258
+ "description": "Key or accessor function for x-axis values. Functions can derive a value, e.g. `d => d.timestamp`.",
238
259
  "default": "x",
239
260
  "x-semiotic-runtime-types": [
240
261
  "string",
@@ -243,7 +264,7 @@
243
264
  },
244
265
  "yAccessor": {
245
266
  "type": "string",
246
- "description": "Key or accessor function for y-axis values",
267
+ "description": "Key or accessor function for y-axis values. Functions support dynamic lookups, e.g. `d => d[d.metricLabel]`.",
247
268
  "default": "y",
248
269
  "x-semiotic-runtime-types": [
249
270
  "string",
@@ -294,6 +315,14 @@
294
315
  "description": "Radius of point markers when showPoints is true",
295
316
  "default": 3
296
317
  },
318
+ "pointIdAccessor": {
319
+ "type": "string",
320
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
321
+ "x-semiotic-runtime-types": [
322
+ "string",
323
+ "function"
324
+ ]
325
+ },
297
326
  "fillArea": {
298
327
  "type": "boolean",
299
328
  "description": "Fill the area under the line",
@@ -304,6 +333,27 @@
304
333
  "description": "Opacity of the filled area (0-1)",
305
334
  "default": 0.3
306
335
  },
336
+ "lineGradient": {
337
+ "type": "object",
338
+ "description": "Left-to-right stroke gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
339
+ },
340
+ "directLabel": {
341
+ "type": [
342
+ "boolean",
343
+ "object"
344
+ ],
345
+ "description": "Place series labels at their start or end points instead of relying only on a legend."
346
+ },
347
+ "gapStrategy": {
348
+ "type": "string",
349
+ "enum": [
350
+ "break",
351
+ "interpolate",
352
+ "zero"
353
+ ],
354
+ "description": "How missing y values are rendered: break the line, interpolate across them, or drop to zero.",
355
+ "default": "break"
356
+ },
307
357
  "forecast": {
308
358
  "type": "object",
309
359
  "description": "Forecast overlay config — tagged training/observed/forecast region with optional envelope. See ForecastConfig."
@@ -318,6 +368,14 @@
318
368
  "array"
319
369
  ],
320
370
  "description": "Asymmetric min/max envelope drawn under the line. `{ y0Accessor, y1Accessor, style?, perSeries?, interactive? }` or an array of those for percentile fans. Distinct from `forecast`/`anomaly` (computed) — band is pure data passthrough. Hovered datum is enriched with `band: { y0, y1 }` and `bands: [...]`."
371
+ },
372
+ "xExtent": {
373
+ "type": "array",
374
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
375
+ },
376
+ "yExtent": {
377
+ "type": "array",
378
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
321
379
  }
322
380
  },
323
381
  "required": [
@@ -384,6 +442,27 @@
384
442
  "showLegend": {
385
443
  "type": "boolean"
386
444
  },
445
+ "legendInteraction": {
446
+ "type": "string",
447
+ "enum": [
448
+ "highlight",
449
+ "isolate",
450
+ "none"
451
+ ],
452
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
453
+ "default": "none"
454
+ },
455
+ "legendPosition": {
456
+ "type": "string",
457
+ "enum": [
458
+ "right",
459
+ "left",
460
+ "top",
461
+ "bottom"
462
+ ],
463
+ "description": "Position the legend beside or above/below the plot.",
464
+ "default": "right"
465
+ },
387
466
  "showGrid": {
388
467
  "type": "boolean",
389
468
  "default": false
@@ -600,16 +679,30 @@
600
679
  ],
601
680
  "default": "monotoneX"
602
681
  },
682
+ "y0Accessor": {
683
+ "type": "string",
684
+ "description": "Lower bound accessor for a ribbon/interval area instead of the chart baseline.",
685
+ "x-semiotic-runtime-types": [
686
+ "string",
687
+ "function"
688
+ ]
689
+ },
603
690
  "gradientFill": {
604
- "type": [
605
- "boolean",
606
- "object"
607
- ],
608
- "description": "Renderer-space area gradient. true uses default opacity; object supports opacity or colorStops."
691
+ "type": "object",
692
+ "description": "Line-to-baseline gradient: { stops: [{ offset: 0-1, color?, opacity? }] }. Offset 0 is the line/top and offset 1 is the baseline."
609
693
  },
610
694
  "semanticGradient": {
611
- "type": "array",
612
- "description": "User-facing gradient stops: [{ at: 0-100, color, opacity? }], where 0 is baseline and 100 is line/top. Takes precedence over gradientFill."
695
+ "type": "object",
696
+ "description": "Value-anchored gradient: { stops: [{ offset: 0-1, color?, opacity? }] }. Offset 0 is the y-domain minimum and offset 1 is the maximum. Takes precedence over gradientFill."
697
+ },
698
+ "semanticLine": {
699
+ "type": "boolean",
700
+ "description": "Mirror semanticGradient on the area's top-edge stroke as solid, hard-edged value bands. Set false to keep the normal stroke or lineGradient.",
701
+ "default": true
702
+ },
703
+ "lineGradient": {
704
+ "type": "object",
705
+ "description": "Left-to-right stroke gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
613
706
  },
614
707
  "areaOpacity": {
615
708
  "type": "number",
@@ -625,6 +718,23 @@
625
718
  "type": "number",
626
719
  "default": 2
627
720
  },
721
+ "showPoints": {
722
+ "type": "boolean",
723
+ "description": "Show point markers along area lines.",
724
+ "default": false
725
+ },
726
+ "pointRadius": {
727
+ "type": "number",
728
+ "default": 3
729
+ },
730
+ "pointIdAccessor": {
731
+ "type": "string",
732
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
733
+ "x-semiotic-runtime-types": [
734
+ "string",
735
+ "function"
736
+ ]
737
+ },
628
738
  "forecast": {
629
739
  "type": "object",
630
740
  "description": "Forecast overlay config — tagged training/observed/forecast region with optional envelope. See ForecastConfig."
@@ -639,6 +749,14 @@
639
749
  "array"
640
750
  ],
641
751
  "description": "Asymmetric min/max envelope drawn under the area. See LineChart.band — same shape, same enrichment."
752
+ },
753
+ "xExtent": {
754
+ "type": "array",
755
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
756
+ },
757
+ "yExtent": {
758
+ "type": "array",
759
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
642
760
  }
643
761
  },
644
762
  "required": [
@@ -705,6 +823,27 @@
705
823
  "showLegend": {
706
824
  "type": "boolean"
707
825
  },
826
+ "legendInteraction": {
827
+ "type": "string",
828
+ "enum": [
829
+ "highlight",
830
+ "isolate",
831
+ "none"
832
+ ],
833
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
834
+ "default": "none"
835
+ },
836
+ "legendPosition": {
837
+ "type": "string",
838
+ "enum": [
839
+ "right",
840
+ "left",
841
+ "top",
842
+ "bottom"
843
+ ],
844
+ "description": "Position the legend beside or above/below the plot.",
845
+ "default": "right"
846
+ },
708
847
  "showGrid": {
709
848
  "type": "boolean",
710
849
  "default": false
@@ -930,10 +1069,58 @@
930
1069
  "type": "number",
931
1070
  "default": 2
932
1071
  },
1072
+ "showPoints": {
1073
+ "type": "boolean",
1074
+ "description": "Show point markers along stacked area lines.",
1075
+ "default": false
1076
+ },
1077
+ "pointRadius": {
1078
+ "type": "number",
1079
+ "default": 3
1080
+ },
933
1081
  "normalize": {
934
1082
  "type": "boolean",
935
1083
  "description": "Normalize stacks to 100%",
936
1084
  "default": false
1085
+ },
1086
+ "baseline": {
1087
+ "type": "string",
1088
+ "enum": [
1089
+ "zero",
1090
+ "wiggle",
1091
+ "silhouette",
1092
+ "diverging"
1093
+ ],
1094
+ "description": "Stack baseline; use wiggle or silhouette for a streamgraph.",
1095
+ "default": "zero"
1096
+ },
1097
+ "stackOrder": {
1098
+ "type": "string",
1099
+ "enum": [
1100
+ "key",
1101
+ "input",
1102
+ "insideOut",
1103
+ "asc",
1104
+ "desc"
1105
+ ],
1106
+ "description": "Series ordering within the stack.",
1107
+ "default": "key"
1108
+ },
1109
+ "pointIdAccessor": {
1110
+ "type": "string",
1111
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
1112
+ "x-semiotic-runtime-types": [
1113
+ "string",
1114
+ "function"
1115
+ ]
1116
+ },
1117
+ "xExtent": {
1118
+ "type": "array",
1119
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
1120
+ },
1121
+ "yExtent": {
1122
+ "type": "array",
1123
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
937
1124
  }
938
1125
  },
939
1126
  "required": [
@@ -1001,6 +1188,27 @@
1001
1188
  "showLegend": {
1002
1189
  "type": "boolean"
1003
1190
  },
1191
+ "legendInteraction": {
1192
+ "type": "string",
1193
+ "enum": [
1194
+ "highlight",
1195
+ "isolate",
1196
+ "none"
1197
+ ],
1198
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
1199
+ "default": "none"
1200
+ },
1201
+ "legendPosition": {
1202
+ "type": "string",
1203
+ "enum": [
1204
+ "right",
1205
+ "left",
1206
+ "top",
1207
+ "bottom"
1208
+ ],
1209
+ "description": "Position the legend beside or above/below the plot.",
1210
+ "default": "right"
1211
+ },
1004
1212
  "showGrid": {
1005
1213
  "type": "boolean",
1006
1214
  "default": false
@@ -1224,6 +1432,22 @@
1224
1432
  "type": "number",
1225
1433
  "default": 0.8
1226
1434
  },
1435
+ "pointIdAccessor": {
1436
+ "type": "string",
1437
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
1438
+ "x-semiotic-runtime-types": [
1439
+ "string",
1440
+ "function"
1441
+ ]
1442
+ },
1443
+ "xExtent": {
1444
+ "type": "array",
1445
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
1446
+ },
1447
+ "yExtent": {
1448
+ "type": "array",
1449
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
1450
+ },
1227
1451
  "regression": {
1228
1452
  "type": [
1229
1453
  "boolean",
@@ -1305,6 +1529,27 @@
1305
1529
  "showLegend": {
1306
1530
  "type": "boolean"
1307
1531
  },
1532
+ "legendInteraction": {
1533
+ "type": "string",
1534
+ "enum": [
1535
+ "highlight",
1536
+ "isolate",
1537
+ "none"
1538
+ ],
1539
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
1540
+ "default": "none"
1541
+ },
1542
+ "legendPosition": {
1543
+ "type": "string",
1544
+ "enum": [
1545
+ "right",
1546
+ "left",
1547
+ "top",
1548
+ "bottom"
1549
+ ],
1550
+ "description": "Position the legend beside or above/below the plot.",
1551
+ "default": "right"
1552
+ },
1308
1553
  "showGrid": {
1309
1554
  "type": "boolean",
1310
1555
  "default": false
@@ -1555,6 +1800,14 @@
1555
1800
  "pointOpacity": {
1556
1801
  "type": "number",
1557
1802
  "default": 0.8
1803
+ },
1804
+ "pointIdAccessor": {
1805
+ "type": "string",
1806
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
1807
+ "x-semiotic-runtime-types": [
1808
+ "string",
1809
+ "function"
1810
+ ]
1558
1811
  }
1559
1812
  },
1560
1813
  "required": []
@@ -1619,6 +1872,27 @@
1619
1872
  "showLegend": {
1620
1873
  "type": "boolean"
1621
1874
  },
1875
+ "legendInteraction": {
1876
+ "type": "string",
1877
+ "enum": [
1878
+ "highlight",
1879
+ "isolate",
1880
+ "none"
1881
+ ],
1882
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
1883
+ "default": "none"
1884
+ },
1885
+ "legendPosition": {
1886
+ "type": "string",
1887
+ "enum": [
1888
+ "right",
1889
+ "left",
1890
+ "top",
1891
+ "bottom"
1892
+ ],
1893
+ "description": "Position the legend beside or above/below the plot.",
1894
+ "default": "right"
1895
+ },
1622
1896
  "showGrid": {
1623
1897
  "type": "boolean",
1624
1898
  "default": false
@@ -1871,6 +2145,27 @@
1871
2145
  "showLegend": {
1872
2146
  "type": "boolean"
1873
2147
  },
2148
+ "legendInteraction": {
2149
+ "type": "string",
2150
+ "enum": [
2151
+ "highlight",
2152
+ "isolate",
2153
+ "none"
2154
+ ],
2155
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
2156
+ "default": "none"
2157
+ },
2158
+ "legendPosition": {
2159
+ "type": "string",
2160
+ "enum": [
2161
+ "right",
2162
+ "left",
2163
+ "top",
2164
+ "bottom"
2165
+ ],
2166
+ "description": "Position the legend beside or above/below the plot.",
2167
+ "default": "right"
2168
+ },
1874
2169
  "showGrid": {
1875
2170
  "type": "boolean",
1876
2171
  "default": false
@@ -2085,6 +2380,22 @@
2085
2380
  "candlestickStyle": {
2086
2381
  "type": "object",
2087
2382
  "description": "Style overrides."
2383
+ },
2384
+ "pointIdAccessor": {
2385
+ "type": "string",
2386
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
2387
+ "x-semiotic-runtime-types": [
2388
+ "string",
2389
+ "function"
2390
+ ]
2391
+ },
2392
+ "xExtent": {
2393
+ "type": "array",
2394
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
2395
+ },
2396
+ "yExtent": {
2397
+ "type": "array",
2398
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
2088
2399
  }
2089
2400
  },
2090
2401
  "required": [
@@ -2152,6 +2463,27 @@
2152
2463
  "showLegend": {
2153
2464
  "type": "boolean"
2154
2465
  },
2466
+ "legendInteraction": {
2467
+ "type": "string",
2468
+ "enum": [
2469
+ "highlight",
2470
+ "isolate",
2471
+ "none"
2472
+ ],
2473
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
2474
+ "default": "none"
2475
+ },
2476
+ "legendPosition": {
2477
+ "type": "string",
2478
+ "enum": [
2479
+ "right",
2480
+ "left",
2481
+ "top",
2482
+ "bottom"
2483
+ ],
2484
+ "description": "Position the legend beside or above/below the plot.",
2485
+ "default": "right"
2486
+ },
2155
2487
  "showGrid": {
2156
2488
  "type": "boolean",
2157
2489
  "default": false
@@ -2365,15 +2697,31 @@
2365
2697
  "type": "string",
2366
2698
  "default": "white"
2367
2699
  },
2368
- "regression": {
2369
- "type": [
2370
- "boolean",
2700
+ "pointIdAccessor": {
2701
+ "type": "string",
2702
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
2703
+ "x-semiotic-runtime-types": [
2371
2704
  "string",
2372
- "object"
2373
- ],
2374
- "description": "Overlay a regression line on the bubbles. Same shape as Scatterplot's regression prop."
2375
- }
2376
- },
2705
+ "function"
2706
+ ]
2707
+ },
2708
+ "xExtent": {
2709
+ "type": "array",
2710
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
2711
+ },
2712
+ "yExtent": {
2713
+ "type": "array",
2714
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
2715
+ },
2716
+ "regression": {
2717
+ "type": [
2718
+ "boolean",
2719
+ "string",
2720
+ "object"
2721
+ ],
2722
+ "description": "Overlay a regression line on the bubbles. Same shape as Scatterplot's regression prop."
2723
+ }
2724
+ },
2377
2725
  "required": [
2378
2726
  "data",
2379
2727
  "sizeBy"
@@ -2439,6 +2787,27 @@
2439
2787
  "showLegend": {
2440
2788
  "type": "boolean"
2441
2789
  },
2790
+ "legendInteraction": {
2791
+ "type": "string",
2792
+ "enum": [
2793
+ "highlight",
2794
+ "isolate",
2795
+ "none"
2796
+ ],
2797
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
2798
+ "default": "none"
2799
+ },
2800
+ "legendPosition": {
2801
+ "type": "string",
2802
+ "enum": [
2803
+ "right",
2804
+ "left",
2805
+ "top",
2806
+ "bottom"
2807
+ ],
2808
+ "description": "Position of the gradient legend",
2809
+ "default": "right"
2810
+ },
2442
2811
  "showGrid": {
2443
2812
  "type": "boolean",
2444
2813
  "default": false
@@ -2641,11 +3010,6 @@
2641
3010
  "description": "Display numeric values in cells",
2642
3011
  "default": false
2643
3012
  },
2644
- "valueFormat": {
2645
- "x-semiotic-runtime-types": [
2646
- "function"
2647
- ]
2648
- },
2649
3013
  "cellBorderColor": {
2650
3014
  "type": "string",
2651
3015
  "default": "#fff"
@@ -2654,16 +3018,21 @@
2654
3018
  "type": "number",
2655
3019
  "default": 1
2656
3020
  },
2657
- "legendPosition": {
3021
+ "pointIdAccessor": {
2658
3022
  "type": "string",
2659
- "enum": [
2660
- "right",
2661
- "left",
2662
- "top",
2663
- "bottom"
2664
- ],
2665
- "description": "Position of the gradient legend",
2666
- "default": "right"
3023
+ "description": "Stable ID for point annotations and push-mode remove()/update().",
3024
+ "x-semiotic-runtime-types": [
3025
+ "string",
3026
+ "function"
3027
+ ]
3028
+ },
3029
+ "xExtent": {
3030
+ "type": "array",
3031
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
3032
+ },
3033
+ "yExtent": {
3034
+ "type": "array",
3035
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
2667
3036
  }
2668
3037
  },
2669
3038
  "required": [
@@ -2730,6 +3099,27 @@
2730
3099
  "showLegend": {
2731
3100
  "type": "boolean"
2732
3101
  },
3102
+ "legendInteraction": {
3103
+ "type": "string",
3104
+ "enum": [
3105
+ "highlight",
3106
+ "isolate",
3107
+ "none"
3108
+ ],
3109
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
3110
+ "default": "none"
3111
+ },
3112
+ "legendPosition": {
3113
+ "type": "string",
3114
+ "enum": [
3115
+ "right",
3116
+ "left",
3117
+ "top",
3118
+ "bottom"
3119
+ ],
3120
+ "description": "Position the legend beside or above/below the plot.",
3121
+ "default": "right"
3122
+ },
2733
3123
  "showGrid": {
2734
3124
  "type": "boolean",
2735
3125
  "default": false
@@ -2943,6 +3333,14 @@
2943
3333
  "function"
2944
3334
  ]
2945
3335
  },
3336
+ "xExtent": {
3337
+ "type": "array",
3338
+ "description": "Fixed x domain `[min, max]`; either bound may be omitted."
3339
+ },
3340
+ "yExtent": {
3341
+ "type": "array",
3342
+ "description": "Fixed y domain `[min, max]`; either bound may be omitted."
3343
+ },
2946
3344
  "regression": {
2947
3345
  "type": [
2948
3346
  "boolean",
@@ -3024,6 +3422,27 @@
3024
3422
  "showLegend": {
3025
3423
  "type": "boolean"
3026
3424
  },
3425
+ "legendInteraction": {
3426
+ "type": "string",
3427
+ "enum": [
3428
+ "highlight",
3429
+ "isolate",
3430
+ "none"
3431
+ ],
3432
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
3433
+ "default": "none"
3434
+ },
3435
+ "legendPosition": {
3436
+ "type": "string",
3437
+ "enum": [
3438
+ "right",
3439
+ "left",
3440
+ "top",
3441
+ "bottom"
3442
+ ],
3443
+ "description": "Position the legend beside or above/below the plot.",
3444
+ "default": "right"
3445
+ },
3027
3446
  "showGrid": {
3028
3447
  "type": "boolean",
3029
3448
  "default": false
@@ -3172,10 +3591,9 @@
3172
3591
  "valueLabel": {
3173
3592
  "type": "string"
3174
3593
  },
3175
- "valueFormat": {
3176
- "x-semiotic-runtime-types": [
3177
- "function"
3178
- ]
3594
+ "showCategoryTicks": {
3595
+ "type": "boolean",
3596
+ "description": "Show category labels on the ordinal axis."
3179
3597
  },
3180
3598
  "data": {
3181
3599
  "type": "array",
@@ -3224,6 +3642,10 @@
3224
3642
  "type": "number",
3225
3643
  "default": 40
3226
3644
  },
3645
+ "gradientFill": {
3646
+ "type": "object",
3647
+ "description": "Tip-to-base gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
3648
+ },
3227
3649
  "regression": {
3228
3650
  "type": [
3229
3651
  "boolean",
@@ -3298,6 +3720,27 @@
3298
3720
  "type": "boolean",
3299
3721
  "default": true
3300
3722
  },
3723
+ "legendInteraction": {
3724
+ "type": "string",
3725
+ "enum": [
3726
+ "highlight",
3727
+ "isolate",
3728
+ "none"
3729
+ ],
3730
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
3731
+ "default": "none"
3732
+ },
3733
+ "legendPosition": {
3734
+ "type": "string",
3735
+ "enum": [
3736
+ "right",
3737
+ "left",
3738
+ "top",
3739
+ "bottom"
3740
+ ],
3741
+ "description": "Position the legend beside or above/below the plot.",
3742
+ "default": "right"
3743
+ },
3301
3744
  "showGrid": {
3302
3745
  "type": "boolean",
3303
3746
  "default": false
@@ -3446,10 +3889,9 @@
3446
3889
  "valueLabel": {
3447
3890
  "type": "string"
3448
3891
  },
3449
- "valueFormat": {
3450
- "x-semiotic-runtime-types": [
3451
- "function"
3452
- ]
3892
+ "showCategoryTicks": {
3893
+ "type": "boolean",
3894
+ "description": "Show category labels on the ordinal axis."
3453
3895
  },
3454
3896
  "data": {
3455
3897
  "type": "array",
@@ -3495,6 +3937,10 @@
3495
3937
  "barPadding": {
3496
3938
  "type": "number",
3497
3939
  "default": 40
3940
+ },
3941
+ "gradientFill": {
3942
+ "type": "object",
3943
+ "description": "Tip-to-base gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
3498
3944
  }
3499
3945
  },
3500
3946
  "required": [
@@ -3562,6 +4008,27 @@
3562
4008
  "showLegend": {
3563
4009
  "type": "boolean"
3564
4010
  },
4011
+ "legendInteraction": {
4012
+ "type": "string",
4013
+ "enum": [
4014
+ "highlight",
4015
+ "isolate",
4016
+ "none"
4017
+ ],
4018
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
4019
+ "default": "none"
4020
+ },
4021
+ "legendPosition": {
4022
+ "type": "string",
4023
+ "enum": [
4024
+ "right",
4025
+ "left",
4026
+ "top",
4027
+ "bottom"
4028
+ ],
4029
+ "description": "Position the legend beside or above/below the plot.",
4030
+ "default": "right"
4031
+ },
3565
4032
  "showGrid": {
3566
4033
  "type": "boolean",
3567
4034
  "default": false
@@ -3710,10 +4177,9 @@
3710
4177
  "valueLabel": {
3711
4178
  "type": "string"
3712
4179
  },
3713
- "valueFormat": {
3714
- "x-semiotic-runtime-types": [
3715
- "function"
3716
- ]
4180
+ "showCategoryTicks": {
4181
+ "type": "boolean",
4182
+ "description": "Show category labels on the ordinal axis."
3717
4183
  },
3718
4184
  "data": {
3719
4185
  "type": "array",
@@ -3841,6 +4307,27 @@
3841
4307
  "type": "boolean",
3842
4308
  "default": true
3843
4309
  },
4310
+ "legendInteraction": {
4311
+ "type": "string",
4312
+ "enum": [
4313
+ "highlight",
4314
+ "isolate",
4315
+ "none"
4316
+ ],
4317
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
4318
+ "default": "none"
4319
+ },
4320
+ "legendPosition": {
4321
+ "type": "string",
4322
+ "enum": [
4323
+ "right",
4324
+ "left",
4325
+ "top",
4326
+ "bottom"
4327
+ ],
4328
+ "description": "Position the legend beside or above/below the plot.",
4329
+ "default": "right"
4330
+ },
3844
4331
  "showGrid": {
3845
4332
  "type": "boolean",
3846
4333
  "default": false
@@ -3989,10 +4476,9 @@
3989
4476
  "valueLabel": {
3990
4477
  "type": "string"
3991
4478
  },
3992
- "valueFormat": {
3993
- "x-semiotic-runtime-types": [
3994
- "function"
3995
- ]
4479
+ "showCategoryTicks": {
4480
+ "type": "boolean",
4481
+ "description": "Show category labels on the ordinal axis."
3996
4482
  },
3997
4483
  "data": {
3998
4484
  "type": "array",
@@ -4033,6 +4519,10 @@
4033
4519
  "barPadding": {
4034
4520
  "type": "number",
4035
4521
  "default": 60
4522
+ },
4523
+ "gradientFill": {
4524
+ "type": "object",
4525
+ "description": "Tip-to-base gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
4036
4526
  }
4037
4527
  },
4038
4528
  "required": [
@@ -4100,6 +4590,27 @@
4100
4590
  "showLegend": {
4101
4591
  "type": "boolean"
4102
4592
  },
4593
+ "legendInteraction": {
4594
+ "type": "string",
4595
+ "enum": [
4596
+ "highlight",
4597
+ "isolate",
4598
+ "none"
4599
+ ],
4600
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
4601
+ "default": "none"
4602
+ },
4603
+ "legendPosition": {
4604
+ "type": "string",
4605
+ "enum": [
4606
+ "right",
4607
+ "left",
4608
+ "top",
4609
+ "bottom"
4610
+ ],
4611
+ "description": "Position the legend beside or above/below the plot.",
4612
+ "default": "right"
4613
+ },
4103
4614
  "showGrid": {
4104
4615
  "type": "boolean",
4105
4616
  "default": false
@@ -4248,10 +4759,9 @@
4248
4759
  "valueLabel": {
4249
4760
  "type": "string"
4250
4761
  },
4251
- "valueFormat": {
4252
- "x-semiotic-runtime-types": [
4253
- "function"
4254
- ]
4762
+ "showCategoryTicks": {
4763
+ "type": "boolean",
4764
+ "description": "Show category labels on the ordinal axis."
4255
4765
  },
4256
4766
  "data": {
4257
4767
  "type": "array",
@@ -4385,6 +4895,27 @@
4385
4895
  "showLegend": {
4386
4896
  "type": "boolean"
4387
4897
  },
4898
+ "legendInteraction": {
4899
+ "type": "string",
4900
+ "enum": [
4901
+ "highlight",
4902
+ "isolate",
4903
+ "none"
4904
+ ],
4905
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
4906
+ "default": "none"
4907
+ },
4908
+ "legendPosition": {
4909
+ "type": "string",
4910
+ "enum": [
4911
+ "right",
4912
+ "left",
4913
+ "top",
4914
+ "bottom"
4915
+ ],
4916
+ "description": "Position the legend beside or above/below the plot.",
4917
+ "default": "right"
4918
+ },
4388
4919
  "showGrid": {
4389
4920
  "type": "boolean",
4390
4921
  "default": false
@@ -4533,10 +5064,9 @@
4533
5064
  "valueLabel": {
4534
5065
  "type": "string"
4535
5066
  },
4536
- "valueFormat": {
4537
- "x-semiotic-runtime-types": [
4538
- "function"
4539
- ]
5067
+ "showCategoryTicks": {
5068
+ "type": "boolean",
5069
+ "description": "Show category labels on the ordinal axis."
4540
5070
  },
4541
5071
  "data": {
4542
5072
  "type": "array",
@@ -4644,6 +5174,27 @@
4644
5174
  "showLegend": {
4645
5175
  "type": "boolean"
4646
5176
  },
5177
+ "legendInteraction": {
5178
+ "type": "string",
5179
+ "enum": [
5180
+ "highlight",
5181
+ "isolate",
5182
+ "none"
5183
+ ],
5184
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
5185
+ "default": "none"
5186
+ },
5187
+ "legendPosition": {
5188
+ "type": "string",
5189
+ "enum": [
5190
+ "right",
5191
+ "left",
5192
+ "top",
5193
+ "bottom"
5194
+ ],
5195
+ "description": "Position the legend beside or above/below the plot.",
5196
+ "default": "right"
5197
+ },
4647
5198
  "showGrid": {
4648
5199
  "type": "boolean",
4649
5200
  "default": false
@@ -4792,10 +5343,9 @@
4792
5343
  "valueLabel": {
4793
5344
  "type": "string"
4794
5345
  },
4795
- "valueFormat": {
4796
- "x-semiotic-runtime-types": [
4797
- "function"
4798
- ]
5346
+ "showCategoryTicks": {
5347
+ "type": "boolean",
5348
+ "description": "Show category labels on the ordinal axis."
4799
5349
  },
4800
5350
  "data": {
4801
5351
  "type": "array",
@@ -4896,6 +5446,27 @@
4896
5446
  "showLegend": {
4897
5447
  "type": "boolean"
4898
5448
  },
5449
+ "legendInteraction": {
5450
+ "type": "string",
5451
+ "enum": [
5452
+ "highlight",
5453
+ "isolate",
5454
+ "none"
5455
+ ],
5456
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
5457
+ "default": "none"
5458
+ },
5459
+ "legendPosition": {
5460
+ "type": "string",
5461
+ "enum": [
5462
+ "right",
5463
+ "left",
5464
+ "top",
5465
+ "bottom"
5466
+ ],
5467
+ "description": "Position the legend beside or above/below the plot.",
5468
+ "default": "right"
5469
+ },
4899
5470
  "showGrid": {
4900
5471
  "type": "boolean",
4901
5472
  "default": false
@@ -5044,10 +5615,9 @@
5044
5615
  "valueLabel": {
5045
5616
  "type": "string"
5046
5617
  },
5047
- "valueFormat": {
5048
- "x-semiotic-runtime-types": [
5049
- "function"
5050
- ]
5618
+ "showCategoryTicks": {
5619
+ "type": "boolean",
5620
+ "description": "Show category labels on the ordinal axis."
5051
5621
  },
5052
5622
  "data": {
5053
5623
  "type": "array",
@@ -5161,15 +5731,36 @@
5161
5731
  "showLegend": {
5162
5732
  "type": "boolean"
5163
5733
  },
5164
- "showGrid": {
5165
- "type": "boolean",
5166
- "default": false
5167
- },
5168
- "colorBy": {
5734
+ "legendInteraction": {
5169
5735
  "type": "string",
5170
- "x-semiotic-runtime-types": [
5171
- "string",
5172
- "function"
5736
+ "enum": [
5737
+ "highlight",
5738
+ "isolate",
5739
+ "none"
5740
+ ],
5741
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
5742
+ "default": "none"
5743
+ },
5744
+ "legendPosition": {
5745
+ "type": "string",
5746
+ "enum": [
5747
+ "right",
5748
+ "left",
5749
+ "top",
5750
+ "bottom"
5751
+ ],
5752
+ "description": "Position the legend beside or above/below the plot.",
5753
+ "default": "right"
5754
+ },
5755
+ "showGrid": {
5756
+ "type": "boolean",
5757
+ "default": false
5758
+ },
5759
+ "colorBy": {
5760
+ "type": "string",
5761
+ "x-semiotic-runtime-types": [
5762
+ "string",
5763
+ "function"
5173
5764
  ]
5174
5765
  },
5175
5766
  "colorScheme": {
@@ -5309,10 +5900,9 @@
5309
5900
  "valueLabel": {
5310
5901
  "type": "string"
5311
5902
  },
5312
- "valueFormat": {
5313
- "x-semiotic-runtime-types": [
5314
- "function"
5315
- ]
5903
+ "showCategoryTicks": {
5904
+ "type": "boolean",
5905
+ "description": "Show category labels on the ordinal axis."
5316
5906
  },
5317
5907
  "data": {
5318
5908
  "type": "array",
@@ -5408,6 +5998,27 @@
5408
5998
  "showLegend": {
5409
5999
  "type": "boolean"
5410
6000
  },
6001
+ "legendInteraction": {
6002
+ "type": "string",
6003
+ "enum": [
6004
+ "highlight",
6005
+ "isolate",
6006
+ "none"
6007
+ ],
6008
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
6009
+ "default": "none"
6010
+ },
6011
+ "legendPosition": {
6012
+ "type": "string",
6013
+ "enum": [
6014
+ "right",
6015
+ "left",
6016
+ "top",
6017
+ "bottom"
6018
+ ],
6019
+ "description": "Position the legend beside or above/below the plot.",
6020
+ "default": "right"
6021
+ },
5411
6022
  "showGrid": {
5412
6023
  "type": "boolean",
5413
6024
  "default": true
@@ -5556,10 +6167,9 @@
5556
6167
  "valueLabel": {
5557
6168
  "type": "string"
5558
6169
  },
5559
- "valueFormat": {
5560
- "x-semiotic-runtime-types": [
5561
- "function"
5562
- ]
6170
+ "showCategoryTicks": {
6171
+ "type": "boolean",
6172
+ "description": "Show category labels on the ordinal axis."
5563
6173
  },
5564
6174
  "data": {
5565
6175
  "type": "array",
@@ -5683,6 +6293,27 @@
5683
6293
  "showLegend": {
5684
6294
  "type": "boolean"
5685
6295
  },
6296
+ "legendInteraction": {
6297
+ "type": "string",
6298
+ "enum": [
6299
+ "highlight",
6300
+ "isolate",
6301
+ "none"
6302
+ ],
6303
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
6304
+ "default": "none"
6305
+ },
6306
+ "legendPosition": {
6307
+ "type": "string",
6308
+ "enum": [
6309
+ "right",
6310
+ "left",
6311
+ "top",
6312
+ "bottom"
6313
+ ],
6314
+ "description": "Position the legend beside or above/below the plot.",
6315
+ "default": "right"
6316
+ },
5686
6317
  "showGrid": {
5687
6318
  "type": "boolean",
5688
6319
  "default": false
@@ -5915,6 +6546,27 @@
5915
6546
  "showLegend": {
5916
6547
  "type": "boolean"
5917
6548
  },
6549
+ "legendInteraction": {
6550
+ "type": "string",
6551
+ "enum": [
6552
+ "highlight",
6553
+ "isolate",
6554
+ "none"
6555
+ ],
6556
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
6557
+ "default": "none"
6558
+ },
6559
+ "legendPosition": {
6560
+ "type": "string",
6561
+ "enum": [
6562
+ "right",
6563
+ "left",
6564
+ "top",
6565
+ "bottom"
6566
+ ],
6567
+ "description": "Position the legend beside or above/below the plot.",
6568
+ "default": "right"
6569
+ },
5918
6570
  "showGrid": {
5919
6571
  "type": "boolean",
5920
6572
  "default": false
@@ -6159,6 +6811,27 @@
6159
6811
  "showLegend": {
6160
6812
  "type": "boolean"
6161
6813
  },
6814
+ "legendInteraction": {
6815
+ "type": "string",
6816
+ "enum": [
6817
+ "highlight",
6818
+ "isolate",
6819
+ "none"
6820
+ ],
6821
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
6822
+ "default": "none"
6823
+ },
6824
+ "legendPosition": {
6825
+ "type": "string",
6826
+ "enum": [
6827
+ "right",
6828
+ "left",
6829
+ "top",
6830
+ "bottom"
6831
+ ],
6832
+ "description": "Position the legend beside or above/below the plot.",
6833
+ "default": "right"
6834
+ },
6162
6835
  "showGrid": {
6163
6836
  "type": "boolean",
6164
6837
  "default": false
@@ -6315,11 +6988,31 @@
6315
6988
  },
6316
6989
  "thresholds": {
6317
6990
  "type": "array",
6318
- "description": "Array of { value, color, label? } defining threshold zones. Last value should equal max."
6991
+ "description": "Array of { value, color, label? } defining threshold zones. This is GaugeChart's wire format; BigNumber instead uses { at, level, color?, label? }. Last value should equal max.",
6992
+ "minItems": 1,
6993
+ "items": {
6994
+ "type": "object",
6995
+ "additionalProperties": false,
6996
+ "required": [
6997
+ "value",
6998
+ "color"
6999
+ ],
7000
+ "properties": {
7001
+ "value": {
7002
+ "type": "number"
7003
+ },
7004
+ "color": {
7005
+ "type": "string"
7006
+ },
7007
+ "label": {
7008
+ "type": "string"
7009
+ }
7010
+ }
7011
+ }
6319
7012
  },
6320
7013
  "gradientFill": {
6321
7014
  "type": "object",
6322
- "description": "Arc-length gradient for the gauge band. Color stops are sampled along the sweep from start to end."
7015
+ "description": "Sweep gradient: { stops: [{ offset: 0-1, color?, opacity? }] }. Offset 0 is the sweep start and offset 1 is the sweep end."
6323
7016
  },
6324
7017
  "arcWidth": {
6325
7018
  "type": "number",
@@ -6347,11 +7040,6 @@
6347
7040
  "needleColor": {
6348
7041
  "type": "string"
6349
7042
  },
6350
- "valueFormat": {
6351
- "x-semiotic-runtime-types": [
6352
- "function"
6353
- ]
6354
- },
6355
7043
  "showScaleLabels": {
6356
7044
  "type": "boolean",
6357
7045
  "default": true
@@ -6421,6 +7109,27 @@
6421
7109
  "showLegend": {
6422
7110
  "type": "boolean"
6423
7111
  },
7112
+ "legendInteraction": {
7113
+ "type": "string",
7114
+ "enum": [
7115
+ "highlight",
7116
+ "isolate",
7117
+ "none"
7118
+ ],
7119
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
7120
+ "default": "none"
7121
+ },
7122
+ "legendPosition": {
7123
+ "type": "string",
7124
+ "enum": [
7125
+ "right",
7126
+ "left",
7127
+ "top",
7128
+ "bottom"
7129
+ ],
7130
+ "description": "Position the legend beside or above/below the plot.",
7131
+ "default": "right"
7132
+ },
6424
7133
  "showGrid": {
6425
7134
  "type": "boolean",
6426
7135
  "default": false
@@ -6571,7 +7280,7 @@
6571
7280
  "type": "array",
6572
7281
  "description": "Array of edge objects with source and target"
6573
7282
  },
6574
- "nodeIDAccessor": {
7283
+ "nodeIdAccessor": {
6575
7284
  "type": "string",
6576
7285
  "description": "Key for node unique identifier",
6577
7286
  "default": "id",
@@ -6647,6 +7356,14 @@
6647
7356
  "type": "number",
6648
7357
  "default": 0.6
6649
7358
  },
7359
+ "nodeStroke": {
7360
+ "type": "string",
7361
+ "description": "Node-only outline color; overrides the generic stroke for nodes."
7362
+ },
7363
+ "nodeStrokeWidth": {
7364
+ "type": "number",
7365
+ "description": "Node-only outline width; overrides generic strokeWidth for nodes."
7366
+ },
6650
7367
  "iterations": {
6651
7368
  "type": "number",
6652
7369
  "description": "Force simulation iterations",
@@ -6736,6 +7453,27 @@
6736
7453
  "showLegend": {
6737
7454
  "type": "boolean"
6738
7455
  },
7456
+ "legendInteraction": {
7457
+ "type": "string",
7458
+ "enum": [
7459
+ "highlight",
7460
+ "isolate",
7461
+ "none"
7462
+ ],
7463
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
7464
+ "default": "none"
7465
+ },
7466
+ "legendPosition": {
7467
+ "type": "string",
7468
+ "enum": [
7469
+ "right",
7470
+ "left",
7471
+ "top",
7472
+ "bottom"
7473
+ ],
7474
+ "description": "Position the legend beside or above/below the plot.",
7475
+ "default": "right"
7476
+ },
6739
7477
  "showGrid": {
6740
7478
  "type": "boolean",
6741
7479
  "default": false
@@ -7040,6 +7778,27 @@
7040
7778
  "showLegend": {
7041
7779
  "type": "boolean"
7042
7780
  },
7781
+ "legendInteraction": {
7782
+ "type": "string",
7783
+ "enum": [
7784
+ "highlight",
7785
+ "isolate",
7786
+ "none"
7787
+ ],
7788
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
7789
+ "default": "none"
7790
+ },
7791
+ "legendPosition": {
7792
+ "type": "string",
7793
+ "enum": [
7794
+ "right",
7795
+ "left",
7796
+ "top",
7797
+ "bottom"
7798
+ ],
7799
+ "description": "Position the legend beside or above/below the plot.",
7800
+ "default": "right"
7801
+ },
7043
7802
  "showGrid": {
7044
7803
  "type": "boolean",
7045
7804
  "default": false
@@ -7322,6 +8081,27 @@
7322
8081
  "showLegend": {
7323
8082
  "type": "boolean"
7324
8083
  },
8084
+ "legendInteraction": {
8085
+ "type": "string",
8086
+ "enum": [
8087
+ "highlight",
8088
+ "isolate",
8089
+ "none"
8090
+ ],
8091
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
8092
+ "default": "none"
8093
+ },
8094
+ "legendPosition": {
8095
+ "type": "string",
8096
+ "enum": [
8097
+ "right",
8098
+ "left",
8099
+ "top",
8100
+ "bottom"
8101
+ ],
8102
+ "description": "Position the legend beside or above/below the plot.",
8103
+ "default": "right"
8104
+ },
7325
8105
  "showGrid": {
7326
8106
  "type": "boolean",
7327
8107
  "default": false
@@ -7606,6 +8386,27 @@
7606
8386
  "showLegend": {
7607
8387
  "type": "boolean"
7608
8388
  },
8389
+ "legendInteraction": {
8390
+ "type": "string",
8391
+ "enum": [
8392
+ "highlight",
8393
+ "isolate",
8394
+ "none"
8395
+ ],
8396
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
8397
+ "default": "none"
8398
+ },
8399
+ "legendPosition": {
8400
+ "type": "string",
8401
+ "enum": [
8402
+ "right",
8403
+ "left",
8404
+ "top",
8405
+ "bottom"
8406
+ ],
8407
+ "description": "Position the legend beside or above/below the plot.",
8408
+ "default": "right"
8409
+ },
7609
8410
  "showGrid": {
7610
8411
  "type": "boolean",
7611
8412
  "default": false
@@ -7856,6 +8657,27 @@
7856
8657
  "showLegend": {
7857
8658
  "type": "boolean"
7858
8659
  },
8660
+ "legendInteraction": {
8661
+ "type": "string",
8662
+ "enum": [
8663
+ "highlight",
8664
+ "isolate",
8665
+ "none"
8666
+ ],
8667
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
8668
+ "default": "none"
8669
+ },
8670
+ "legendPosition": {
8671
+ "type": "string",
8672
+ "enum": [
8673
+ "right",
8674
+ "left",
8675
+ "top",
8676
+ "bottom"
8677
+ ],
8678
+ "description": "Position the legend beside or above/below the plot.",
8679
+ "default": "right"
8680
+ },
7859
8681
  "showGrid": {
7860
8682
  "type": "boolean",
7861
8683
  "default": false
@@ -8110,6 +8932,27 @@
8110
8932
  "showLegend": {
8111
8933
  "type": "boolean"
8112
8934
  },
8935
+ "legendInteraction": {
8936
+ "type": "string",
8937
+ "enum": [
8938
+ "highlight",
8939
+ "isolate",
8940
+ "none"
8941
+ ],
8942
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
8943
+ "default": "none"
8944
+ },
8945
+ "legendPosition": {
8946
+ "type": "string",
8947
+ "enum": [
8948
+ "right",
8949
+ "left",
8950
+ "top",
8951
+ "bottom"
8952
+ ],
8953
+ "description": "Position the legend beside or above/below the plot.",
8954
+ "default": "right"
8955
+ },
8113
8956
  "showGrid": {
8114
8957
  "type": "boolean",
8115
8958
  "default": false
@@ -9358,6 +10201,25 @@
9358
10201
  "showLegend": {
9359
10202
  "type": "boolean"
9360
10203
  },
10204
+ "legendInteraction": {
10205
+ "type": "string",
10206
+ "enum": [
10207
+ "highlight",
10208
+ "isolate",
10209
+ "none"
10210
+ ],
10211
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
10212
+ "default": "none"
10213
+ },
10214
+ "legendPosition": {
10215
+ "type": "string",
10216
+ "enum": [
10217
+ "right",
10218
+ "left",
10219
+ "top",
10220
+ "bottom"
10221
+ ]
10222
+ },
9361
10223
  "showGrid": {
9362
10224
  "type": "boolean",
9363
10225
  "default": false
@@ -9506,10 +10368,10 @@
9506
10368
  "valueLabel": {
9507
10369
  "type": "string"
9508
10370
  },
9509
- "valueFormat": {
9510
- "x-semiotic-runtime-types": [
9511
- "function"
9512
- ]
10371
+ "showCategoryTicks": {
10372
+ "type": "boolean",
10373
+ "description": "Show category tick labels on ordinal axis",
10374
+ "default": false
9513
10375
  },
9514
10376
  "data": {
9515
10377
  "type": "array",
@@ -9554,20 +10416,6 @@
9554
10416
  "type": "number",
9555
10417
  "description": "Opacity of trapezoid connectors between steps (0-1). Horizontal orientation only.",
9556
10418
  "default": 0.3
9557
- },
9558
- "showCategoryTicks": {
9559
- "type": "boolean",
9560
- "description": "Show category tick labels on ordinal axis",
9561
- "default": false
9562
- },
9563
- "legendPosition": {
9564
- "type": "string",
9565
- "enum": [
9566
- "right",
9567
- "left",
9568
- "top",
9569
- "bottom"
9570
- ]
9571
10419
  }
9572
10420
  },
9573
10421
  "required": [
@@ -9634,6 +10482,25 @@
9634
10482
  "showLegend": {
9635
10483
  "type": "boolean"
9636
10484
  },
10485
+ "legendInteraction": {
10486
+ "type": "string",
10487
+ "enum": [
10488
+ "highlight",
10489
+ "isolate",
10490
+ "none"
10491
+ ],
10492
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
10493
+ "default": "none"
10494
+ },
10495
+ "legendPosition": {
10496
+ "type": "string",
10497
+ "enum": [
10498
+ "right",
10499
+ "left",
10500
+ "top",
10501
+ "bottom"
10502
+ ]
10503
+ },
9637
10504
  "showGrid": {
9638
10505
  "type": "boolean",
9639
10506
  "default": false
@@ -9782,10 +10649,9 @@
9782
10649
  "valueLabel": {
9783
10650
  "type": "string"
9784
10651
  },
9785
- "valueFormat": {
9786
- "x-semiotic-runtime-types": [
9787
- "function"
9788
- ]
10652
+ "showCategoryTicks": {
10653
+ "type": "boolean",
10654
+ "description": "Show lane labels on the category axis"
9789
10655
  },
9790
10656
  "data": {
9791
10657
  "type": "array",
@@ -9835,6 +10701,10 @@
9835
10701
  "type": "number",
9836
10702
  "description": "Rounded corner radius (px) applied to the outermost ends of each lane — left+right for horizontal, top+bottom for vertical. Middle segments stay square; single-segment lanes round all four corners."
9837
10703
  },
10704
+ "gradientFill": {
10705
+ "type": "object",
10706
+ "description": "Tip-to-base gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
10707
+ },
9838
10708
  "brush": {
9839
10709
  "type": "boolean",
9840
10710
  "description": "Enable value-axis brush selection"
@@ -9851,19 +10721,6 @@
9851
10721
  "object"
9852
10722
  ],
9853
10723
  "description": "LinkedCharts brush integration name"
9854
- },
9855
- "showCategoryTicks": {
9856
- "type": "boolean",
9857
- "description": "Show lane labels on the category axis"
9858
- },
9859
- "legendPosition": {
9860
- "type": "string",
9861
- "enum": [
9862
- "right",
9863
- "left",
9864
- "top",
9865
- "bottom"
9866
- ]
9867
10724
  }
9868
10725
  },
9869
10726
  "required": [
@@ -9930,6 +10787,27 @@
9930
10787
  "showLegend": {
9931
10788
  "type": "boolean"
9932
10789
  },
10790
+ "legendInteraction": {
10791
+ "type": "string",
10792
+ "enum": [
10793
+ "highlight",
10794
+ "isolate",
10795
+ "none"
10796
+ ],
10797
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
10798
+ "default": "none"
10799
+ },
10800
+ "legendPosition": {
10801
+ "type": "string",
10802
+ "enum": [
10803
+ "right",
10804
+ "left",
10805
+ "top",
10806
+ "bottom"
10807
+ ],
10808
+ "description": "Position the legend beside or above/below the plot.",
10809
+ "default": "right"
10810
+ },
9933
10811
  "showGrid": {
9934
10812
  "type": "boolean",
9935
10813
  "default": false
@@ -10144,6 +11022,27 @@
10144
11022
  "showLegend": {
10145
11023
  "type": "boolean"
10146
11024
  },
11025
+ "legendInteraction": {
11026
+ "type": "string",
11027
+ "enum": [
11028
+ "highlight",
11029
+ "isolate",
11030
+ "none"
11031
+ ],
11032
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
11033
+ "default": "none"
11034
+ },
11035
+ "legendPosition": {
11036
+ "type": "string",
11037
+ "enum": [
11038
+ "right",
11039
+ "left",
11040
+ "top",
11041
+ "bottom"
11042
+ ],
11043
+ "description": "Position the legend beside or above/below the plot.",
11044
+ "default": "right"
11045
+ },
10147
11046
  "showGrid": {
10148
11047
  "type": "boolean",
10149
11048
  "default": false
@@ -10354,6 +11253,27 @@
10354
11253
  "showLegend": {
10355
11254
  "type": "boolean"
10356
11255
  },
11256
+ "legendInteraction": {
11257
+ "type": "string",
11258
+ "enum": [
11259
+ "highlight",
11260
+ "isolate",
11261
+ "none"
11262
+ ],
11263
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
11264
+ "default": "none"
11265
+ },
11266
+ "legendPosition": {
11267
+ "type": "string",
11268
+ "enum": [
11269
+ "right",
11270
+ "left",
11271
+ "top",
11272
+ "bottom"
11273
+ ],
11274
+ "description": "Position the legend beside or above/below the plot.",
11275
+ "default": "right"
11276
+ },
10357
11277
  "showGrid": {
10358
11278
  "type": "boolean",
10359
11279
  "default": false
@@ -10577,6 +11497,27 @@
10577
11497
  "showLegend": {
10578
11498
  "type": "boolean"
10579
11499
  },
11500
+ "legendInteraction": {
11501
+ "type": "string",
11502
+ "enum": [
11503
+ "highlight",
11504
+ "isolate",
11505
+ "none"
11506
+ ],
11507
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
11508
+ "default": "none"
11509
+ },
11510
+ "legendPosition": {
11511
+ "type": "string",
11512
+ "enum": [
11513
+ "right",
11514
+ "left",
11515
+ "top",
11516
+ "bottom"
11517
+ ],
11518
+ "description": "Position the legend beside or above/below the plot.",
11519
+ "default": "right"
11520
+ },
10580
11521
  "showGrid": {
10581
11522
  "type": "boolean",
10582
11523
  "default": false
@@ -10745,6 +11686,19 @@
10745
11686
  "function"
10746
11687
  ]
10747
11688
  },
11689
+ "sizeRange": {
11690
+ "type": "array",
11691
+ "description": "Minimum and maximum symbol radius in pixels.",
11692
+ "default": [
11693
+ 3,
11694
+ 30
11695
+ ],
11696
+ "minItems": 2,
11697
+ "maxItems": 2,
11698
+ "items": {
11699
+ "type": "number"
11700
+ }
11701
+ },
10748
11702
  "areas": {
10749
11703
  "type": [
10750
11704
  "array",
@@ -10816,6 +11770,27 @@
10816
11770
  "showLegend": {
10817
11771
  "type": "boolean"
10818
11772
  },
11773
+ "legendInteraction": {
11774
+ "type": "string",
11775
+ "enum": [
11776
+ "highlight",
11777
+ "isolate",
11778
+ "none"
11779
+ ],
11780
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
11781
+ "default": "none"
11782
+ },
11783
+ "legendPosition": {
11784
+ "type": "string",
11785
+ "enum": [
11786
+ "right",
11787
+ "left",
11788
+ "top",
11789
+ "bottom"
11790
+ ],
11791
+ "description": "Position the legend beside or above/below the plot.",
11792
+ "default": "right"
11793
+ },
10819
11794
  "showGrid": {
10820
11795
  "type": "boolean",
10821
11796
  "default": false
@@ -11048,6 +12023,27 @@
11048
12023
  "showLegend": {
11049
12024
  "type": "boolean"
11050
12025
  },
12026
+ "legendInteraction": {
12027
+ "type": "string",
12028
+ "enum": [
12029
+ "highlight",
12030
+ "isolate",
12031
+ "none"
12032
+ ],
12033
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
12034
+ "default": "none"
12035
+ },
12036
+ "legendPosition": {
12037
+ "type": "string",
12038
+ "enum": [
12039
+ "right",
12040
+ "left",
12041
+ "top",
12042
+ "bottom"
12043
+ ],
12044
+ "description": "Position the legend beside or above/below the plot.",
12045
+ "default": "right"
12046
+ },
11051
12047
  "showGrid": {
11052
12048
  "type": "boolean",
11053
12049
  "default": false
@@ -11280,6 +12276,26 @@
11280
12276
  "showLegend": {
11281
12277
  "type": "boolean"
11282
12278
  },
12279
+ "legendInteraction": {
12280
+ "type": "string",
12281
+ "enum": [
12282
+ "highlight",
12283
+ "isolate",
12284
+ "none"
12285
+ ],
12286
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
12287
+ "default": "none"
12288
+ },
12289
+ "legendPosition": {
12290
+ "type": "string",
12291
+ "enum": [
12292
+ "right",
12293
+ "left",
12294
+ "top",
12295
+ "bottom"
12296
+ ],
12297
+ "default": "right"
12298
+ },
11283
12299
  "showGrid": {
11284
12300
  "type": "boolean",
11285
12301
  "default": false
@@ -11502,16 +12518,6 @@
11502
12518
  "function"
11503
12519
  ]
11504
12520
  },
11505
- "legendPosition": {
11506
- "type": "string",
11507
- "enum": [
11508
- "right",
11509
- "left",
11510
- "top",
11511
- "bottom"
11512
- ],
11513
- "default": "right"
11514
- },
11515
12521
  "pairing": {
11516
12522
  "type": "string",
11517
12523
  "enum": [
@@ -11642,6 +12648,27 @@
11642
12648
  "showLegend": {
11643
12649
  "type": "boolean"
11644
12650
  },
12651
+ "legendInteraction": {
12652
+ "type": "string",
12653
+ "enum": [
12654
+ "highlight",
12655
+ "isolate",
12656
+ "none"
12657
+ ],
12658
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
12659
+ "default": "none"
12660
+ },
12661
+ "legendPosition": {
12662
+ "type": "string",
12663
+ "enum": [
12664
+ "right",
12665
+ "left",
12666
+ "top",
12667
+ "bottom"
12668
+ ],
12669
+ "description": "Position the legend beside or above/below the plot.",
12670
+ "default": "right"
12671
+ },
11645
12672
  "showGrid": {
11646
12673
  "type": "boolean",
11647
12674
  "default": false
@@ -11896,11 +12923,8 @@
11896
12923
  "default": 0.6
11897
12924
  },
11898
12925
  "gradientFill": {
11899
- "type": [
11900
- "boolean",
11901
- "object"
11902
- ],
11903
- "description": "Tip→base gradient across each segment; same shape as AreaChart.gradientFill"
12926
+ "type": "object",
12927
+ "description": "Tip-to-base gradient: { stops: [{ offset: 0-1, color?, opacity? }] }."
11904
12928
  },
11905
12929
  "xExtent": {
11906
12930
  "type": "array",
@@ -12153,6 +13177,22 @@
12153
13177
  "type": "string",
12154
13178
  "description": "Composed with the BEM root class on the outer container."
12155
13179
  },
13180
+ "chartId": {
13181
+ "type": "string",
13182
+ "description": "Stable identifier surfaced on observation events."
13183
+ },
13184
+ "description": {
13185
+ "type": "string",
13186
+ "description": "Override the auto-generated accessible label sentence."
13187
+ },
13188
+ "summary": {
13189
+ "type": "string",
13190
+ "description": "Screen-reader-only supplement appended after the accessible label."
13191
+ },
13192
+ "loading": {
13193
+ "type": "boolean",
13194
+ "description": "Show the loading skeleton overlay."
13195
+ },
12156
13196
  "value": {
12157
13197
  "type": "number",
12158
13198
  "description": "The focal number this card exists to display"
@@ -12174,7 +13214,7 @@
12174
13214
  "compact",
12175
13215
  "duration"
12176
13216
  ],
12177
- "description": "Number-format shortcut or custom (value) => string",
13217
+ "description": "Number-format shortcut or React-only custom formatter. Percent treats the value as a ratio and multiplies by 100.",
12178
13218
  "default": "number",
12179
13219
  "x-semiotic-runtime-types": [
12180
13220
  "string",
@@ -12375,6 +13415,32 @@
12375
13415
  "title": {
12376
13416
  "type": "string"
12377
13417
  },
13418
+ "description": {
13419
+ "type": "string",
13420
+ "description": "Concise accessible description that overrides the generated aria-label."
13421
+ },
13422
+ "summary": {
13423
+ "type": "string",
13424
+ "description": "Screen-reader-only takeaway and interaction guidance."
13425
+ },
13426
+ "accessibleTable": {
13427
+ "type": [
13428
+ "boolean",
13429
+ "object"
13430
+ ],
13431
+ "description": "Expose source data through Semiotic's screen-reader data table."
13432
+ },
13433
+ "chartId": {
13434
+ "type": "string",
13435
+ "description": "Stable chart identity for linked observation and navigation."
13436
+ },
13437
+ "emphasis": {
13438
+ "type": "string",
13439
+ "enum": [
13440
+ "primary",
13441
+ "secondary"
13442
+ ]
13443
+ },
12378
13444
  "responsiveWidth": {
12379
13445
  "type": "boolean"
12380
13446
  },
@@ -12511,6 +13577,32 @@
12511
13577
  "title": {
12512
13578
  "type": "string"
12513
13579
  },
13580
+ "description": {
13581
+ "type": "string",
13582
+ "description": "Concise accessible description that overrides the generated aria-label."
13583
+ },
13584
+ "summary": {
13585
+ "type": "string",
13586
+ "description": "Screen-reader-only takeaway and interaction guidance."
13587
+ },
13588
+ "accessibleTable": {
13589
+ "type": [
13590
+ "boolean",
13591
+ "object"
13592
+ ],
13593
+ "description": "Expose source data through Semiotic's screen-reader data table."
13594
+ },
13595
+ "chartId": {
13596
+ "type": "string",
13597
+ "description": "Stable chart identity for linked observation and navigation."
13598
+ },
13599
+ "emphasis": {
13600
+ "type": "string",
13601
+ "enum": [
13602
+ "primary",
13603
+ "secondary"
13604
+ ]
13605
+ },
12514
13606
  "responsiveWidth": {
12515
13607
  "type": "boolean"
12516
13608
  },
@@ -12603,7 +13695,7 @@
12603
13695
  {
12604
13696
  "type": "function",
12605
13697
  "function": {
12606
- "name": "PhysicsPileChart",
13698
+ "name": "UnitPileChart",
12607
13699
  "description": "Physics-backed unit pile chart. Numeric values are unitized into repeated bodies that settle into category piles.",
12608
13700
  "parameters": {
12609
13701
  "type": "object",
@@ -12630,24 +13722,50 @@
12630
13722
  "title": {
12631
13723
  "type": "string"
12632
13724
  },
12633
- "responsiveWidth": {
12634
- "type": "boolean"
12635
- },
12636
- "responsiveHeight": {
12637
- "type": "boolean"
12638
- },
12639
- "colorBy": {
13725
+ "description": {
12640
13726
  "type": "string",
12641
- "description": "Categorical field or accessor used to color simulated bodies.",
12642
- "x-semiotic-runtime-types": [
12643
- "string",
12644
- "function"
12645
- ]
13727
+ "description": "Concise accessible description that overrides the generated aria-label."
12646
13728
  },
12647
- "seed": {
12648
- "type": "number",
12649
- "description": "Deterministic simulation seed.",
12650
- "default": 1
13729
+ "summary": {
13730
+ "type": "string",
13731
+ "description": "Screen-reader-only takeaway and interaction guidance."
13732
+ },
13733
+ "accessibleTable": {
13734
+ "type": [
13735
+ "boolean",
13736
+ "object"
13737
+ ],
13738
+ "description": "Expose source data through Semiotic's screen-reader data table."
13739
+ },
13740
+ "chartId": {
13741
+ "type": "string",
13742
+ "description": "Stable chart identity for linked observation and navigation."
13743
+ },
13744
+ "emphasis": {
13745
+ "type": "string",
13746
+ "enum": [
13747
+ "primary",
13748
+ "secondary"
13749
+ ]
13750
+ },
13751
+ "responsiveWidth": {
13752
+ "type": "boolean"
13753
+ },
13754
+ "responsiveHeight": {
13755
+ "type": "boolean"
13756
+ },
13757
+ "colorBy": {
13758
+ "type": "string",
13759
+ "description": "Categorical field or accessor used to color simulated bodies.",
13760
+ "x-semiotic-runtime-types": [
13761
+ "string",
13762
+ "function"
13763
+ ]
13764
+ },
13765
+ "seed": {
13766
+ "type": "number",
13767
+ "description": "Deterministic simulation seed.",
13768
+ "default": 1
12651
13769
  },
12652
13770
  "ballRadius": {
12653
13771
  "type": "number",
@@ -12757,6 +13875,32 @@
12757
13875
  "title": {
12758
13876
  "type": "string"
12759
13877
  },
13878
+ "description": {
13879
+ "type": "string",
13880
+ "description": "Concise accessible description that overrides the generated aria-label."
13881
+ },
13882
+ "summary": {
13883
+ "type": "string",
13884
+ "description": "Screen-reader-only takeaway and interaction guidance."
13885
+ },
13886
+ "accessibleTable": {
13887
+ "type": [
13888
+ "boolean",
13889
+ "object"
13890
+ ],
13891
+ "description": "Expose source data through Semiotic's screen-reader data table."
13892
+ },
13893
+ "chartId": {
13894
+ "type": "string",
13895
+ "description": "Stable chart identity for linked observation and navigation."
13896
+ },
13897
+ "emphasis": {
13898
+ "type": "string",
13899
+ "enum": [
13900
+ "primary",
13901
+ "secondary"
13902
+ ]
13903
+ },
12760
13904
  "responsiveWidth": {
12761
13905
  "type": "boolean"
12762
13906
  },
@@ -12863,7 +14007,7 @@
12863
14007
  {
12864
14008
  "type": "function",
12865
14009
  "function": {
12866
- "name": "PhysicalFlowChart",
14010
+ "name": "PacketFlowChart",
12867
14011
  "description": "Experimental physics-backed flow chart. Packets move along authored node coordinates or link paths while a static throughput layer keeps the route quantities readable.",
12868
14012
  "parameters": {
12869
14013
  "type": "object",
@@ -12918,6 +14062,27 @@
12918
14062
  "showLegend": {
12919
14063
  "type": "boolean"
12920
14064
  },
14065
+ "legendInteraction": {
14066
+ "type": "string",
14067
+ "enum": [
14068
+ "highlight",
14069
+ "isolate",
14070
+ "none"
14071
+ ],
14072
+ "description": "Legend interaction mode: highlight on hover, isolate on click, or none.",
14073
+ "default": "none"
14074
+ },
14075
+ "legendPosition": {
14076
+ "type": "string",
14077
+ "enum": [
14078
+ "right",
14079
+ "left",
14080
+ "top",
14081
+ "bottom"
14082
+ ],
14083
+ "description": "Position the legend beside or above/below the plot.",
14084
+ "default": "right"
14085
+ },
12921
14086
  "showGrid": {
12922
14087
  "type": "boolean",
12923
14088
  "default": false
@@ -13246,6 +14411,32 @@
13246
14411
  "title": {
13247
14412
  "type": "string"
13248
14413
  },
14414
+ "description": {
14415
+ "type": "string",
14416
+ "description": "Concise accessible description that overrides the generated aria-label."
14417
+ },
14418
+ "summary": {
14419
+ "type": "string",
14420
+ "description": "Screen-reader-only takeaway and interaction guidance."
14421
+ },
14422
+ "accessibleTable": {
14423
+ "type": [
14424
+ "boolean",
14425
+ "object"
14426
+ ],
14427
+ "description": "Expose source data through Semiotic's screen-reader data table."
14428
+ },
14429
+ "chartId": {
14430
+ "type": "string",
14431
+ "description": "Stable chart identity for linked observation and navigation."
14432
+ },
14433
+ "emphasis": {
14434
+ "type": "string",
14435
+ "enum": [
14436
+ "primary",
14437
+ "secondary"
14438
+ ]
14439
+ },
13249
14440
  "responsiveWidth": {
13250
14441
  "type": "boolean"
13251
14442
  },
@@ -13405,6 +14596,32 @@
13405
14596
  "title": {
13406
14597
  "type": "string"
13407
14598
  },
14599
+ "description": {
14600
+ "type": "string",
14601
+ "description": "Concise accessible description that overrides the generated aria-label."
14602
+ },
14603
+ "summary": {
14604
+ "type": "string",
14605
+ "description": "Screen-reader-only takeaway and interaction guidance."
14606
+ },
14607
+ "accessibleTable": {
14608
+ "type": [
14609
+ "boolean",
14610
+ "object"
14611
+ ],
14612
+ "description": "Expose source data through Semiotic's screen-reader data table."
14613
+ },
14614
+ "chartId": {
14615
+ "type": "string",
14616
+ "description": "Stable chart identity for linked observation and navigation."
14617
+ },
14618
+ "emphasis": {
14619
+ "type": "string",
14620
+ "enum": [
14621
+ "primary",
14622
+ "secondary"
14623
+ ]
14624
+ },
13408
14625
  "responsiveWidth": {
13409
14626
  "type": "boolean"
13410
14627
  },
@@ -13566,6 +14783,32 @@
13566
14783
  "title": {
13567
14784
  "type": "string"
13568
14785
  },
14786
+ "description": {
14787
+ "type": "string",
14788
+ "description": "Accessible description of the authored charge, treatment, and terminal accounting."
14789
+ },
14790
+ "summary": {
14791
+ "type": "string",
14792
+ "description": "Screen-reader summary of the final products, outlets, and any conservation result."
14793
+ },
14794
+ "accessibleTable": {
14795
+ "type": [
14796
+ "boolean",
14797
+ "object"
14798
+ ],
14799
+ "description": "Expose source data through Semiotic's screen-reader data table."
14800
+ },
14801
+ "chartId": {
14802
+ "type": "string",
14803
+ "description": "Stable chart identity for linked observation and navigation."
14804
+ },
14805
+ "emphasis": {
14806
+ "type": "string",
14807
+ "enum": [
14808
+ "primary",
14809
+ "secondary"
14810
+ ]
14811
+ },
13569
14812
  "responsiveWidth": {
13570
14813
  "type": "boolean"
13571
14814
  },
@@ -13614,14 +14857,6 @@
13614
14857
  "object"
13615
14858
  ]
13616
14859
  },
13617
- "description": {
13618
- "type": "string",
13619
- "description": "Accessible description of the authored charge, treatment, and terminal accounting."
13620
- },
13621
- "summary": {
13622
- "type": "string",
13623
- "description": "Screen-reader summary of the final products, outlets, and any conservation result."
13624
- },
13625
14860
  "phases": {
13626
14861
  "type": "array",
13627
14862
  "description": "Required ordered furnace program. Supply unique phase ids, positive durations, labels, and optional authored motion/intensity; phases are never inferred from data.",
@@ -14530,6 +15765,608 @@
14530
15765
  ]
14531
15766
  }
14532
15767
  }
15768
+ },
15769
+ {
15770
+ "type": "function",
15771
+ "function": {
15772
+ "name": "BumpChart",
15773
+ "description": "Ranked series trajectories across ordered or time-based columns, with optional magnitude-encoded ribbons.",
15774
+ "parameters": {
15775
+ "type": "object",
15776
+ "properties": {
15777
+ "mode": {
15778
+ "type": "string",
15779
+ "enum": [
15780
+ "primary",
15781
+ "context",
15782
+ "sparkline",
15783
+ "mobile"
15784
+ ],
15785
+ "description": "Display mode controlling default size, decoration, margins, labels, and interaction.",
15786
+ "default": "primary"
15787
+ },
15788
+ "width": {
15789
+ "type": "number",
15790
+ "default": 600
15791
+ },
15792
+ "height": {
15793
+ "type": "number",
15794
+ "default": 400
15795
+ },
15796
+ "margin": {
15797
+ "type": "object",
15798
+ "description": "Object margin. A side value of \"auto\" or null leaves that side available for auto-reservation."
15799
+ },
15800
+ "className": {
15801
+ "type": "string"
15802
+ },
15803
+ "title": {
15804
+ "type": "string",
15805
+ "description": "Visible chart title and the chart's accessible name."
15806
+ },
15807
+ "description": {
15808
+ "type": "string",
15809
+ "description": "Concise accessible description that overrides the chart's generated aria-label."
15810
+ },
15811
+ "summary": {
15812
+ "type": "string",
15813
+ "description": "Screen-reader-only summary of the chart's key takeaway; include keyboard interaction guidance when relevant."
15814
+ },
15815
+ "accessibleTable": {
15816
+ "type": "boolean",
15817
+ "description": "Expose the chart data through Semiotic's screen-reader data table.",
15818
+ "default": true
15819
+ },
15820
+ "enableHover": {
15821
+ "type": "boolean",
15822
+ "default": true
15823
+ },
15824
+ "showLegend": {
15825
+ "type": "boolean"
15826
+ },
15827
+ "legendInteraction": {
15828
+ "type": "string",
15829
+ "enum": [
15830
+ "highlight",
15831
+ "isolate",
15832
+ "none"
15833
+ ],
15834
+ "default": "none"
15835
+ },
15836
+ "legendPosition": {
15837
+ "type": "string",
15838
+ "enum": [
15839
+ "right",
15840
+ "left",
15841
+ "top",
15842
+ "bottom"
15843
+ ],
15844
+ "default": "right"
15845
+ },
15846
+ "showGrid": {
15847
+ "type": "boolean",
15848
+ "default": false
15849
+ },
15850
+ "colorBy": {
15851
+ "type": "string",
15852
+ "x-semiotic-runtime-types": [
15853
+ "string",
15854
+ "function"
15855
+ ]
15856
+ },
15857
+ "colorScheme": {
15858
+ "type": [
15859
+ "string",
15860
+ "array",
15861
+ "object"
15862
+ ],
15863
+ "default": "category10"
15864
+ },
15865
+ "tooltip": {
15866
+ "type": [
15867
+ "boolean",
15868
+ "object",
15869
+ "string"
15870
+ ],
15871
+ "x-semiotic-runtime-types": [
15872
+ "boolean",
15873
+ "function",
15874
+ "object",
15875
+ "string"
15876
+ ]
15877
+ },
15878
+ "annotations": {
15879
+ "type": "array",
15880
+ "description": "Annotation objects to render on the chart. Each must have a `type` field. Position using your data field names (e.g. { type: \"widget\", month: \"Jan\", revenue: 500 }). Supported types: \"widget\" (arbitrary HTML/React content via foreignObject — v3 replacement for htmlAnnotationRules), \"label\" (callout with connector), \"callout\" (circle + label), \"text\" (plain label), \"y-threshold\" (horizontal reference line), \"x-threshold\" (vertical reference line), \"band\" (shaded y-region), \"enclose\" (circle around points), \"rect-enclose\" (rect around points), \"highlight\" (colored dots on filtered points), \"trend\" (regression line), \"envelope\" (upper/lower bounds), \"anomaly-band\" (mean ± stddev), \"forecast\" (extrapolated trend). Widget annotations accept: content (ReactNode), dx, dy, width, height, anchor (\"fixed\"|\"latest\"|\"sticky\"). Threshold annotations accept: value, label, color, strokeWidth, strokeDasharray. Enclose annotations accept: coordinates (array of data objects), label, color, padding.",
15881
+ "items": {
15882
+ "type": "object",
15883
+ "properties": {
15884
+ "type": {
15885
+ "type": "string",
15886
+ "enum": [
15887
+ "widget",
15888
+ "label",
15889
+ "callout",
15890
+ "text",
15891
+ "bracket",
15892
+ "y-threshold",
15893
+ "x-threshold",
15894
+ "band",
15895
+ "enclose",
15896
+ "rect-enclose",
15897
+ "highlight",
15898
+ "trend",
15899
+ "envelope",
15900
+ "anomaly-band",
15901
+ "forecast"
15902
+ ],
15903
+ "description": "Annotation type"
15904
+ }
15905
+ },
15906
+ "required": [
15907
+ "type"
15908
+ ]
15909
+ }
15910
+ },
15911
+ "autoPlaceAnnotations": {
15912
+ "type": [
15913
+ "boolean",
15914
+ "object"
15915
+ ],
15916
+ "description": "Opt-in annotation placement pass. Chooses dx/dy for note-like annotations without manual offsets and avoids note/mark/edge overlaps where possible.",
15917
+ "default": false
15918
+ },
15919
+ "responsiveRules": {
15920
+ "type": "array",
15921
+ "description": "Semantic responsive transforms applied before chart-mode defaults."
15922
+ },
15923
+ "mobileSemantics": {
15924
+ "type": "object",
15925
+ "description": "Phone/mobile contract consumed by audits, recipes, adapters, and agents."
15926
+ },
15927
+ "mobileInteraction": {
15928
+ "type": [
15929
+ "boolean",
15930
+ "object"
15931
+ ],
15932
+ "description": "Touch-first interaction policy for phone-sized chart slots."
15933
+ },
15934
+ "axisExtent": {
15935
+ "type": "string",
15936
+ "enum": [
15937
+ "nice",
15938
+ "exact"
15939
+ ],
15940
+ "description": "Tick endpoint mode. \"nice\" rounds endpoints to readable values; \"exact\" pins the first and last tick to the actual data min and max with equidistant intermediates. Affects XY x/y axes and ordinal value axis only.",
15941
+ "default": "nice"
15942
+ },
15943
+ "animate": {
15944
+ "type": [
15945
+ "boolean",
15946
+ "object"
15947
+ ],
15948
+ "description": "Enable mark transitions (boolean or {duration?, easing?, intro?})."
15949
+ },
15950
+ "loading": {
15951
+ "type": "boolean",
15952
+ "description": "Show loading skeleton / loadingContent."
15953
+ },
15954
+ "hoverHighlight": {
15955
+ "type": [
15956
+ "boolean",
15957
+ "string"
15958
+ ],
15959
+ "enum": [
15960
+ "series"
15961
+ ],
15962
+ "default": true
15963
+ },
15964
+ "chartId": {
15965
+ "type": "string",
15966
+ "description": "Stable id for linked selection / observation / nav sync."
15967
+ },
15968
+ "emphasis": {
15969
+ "type": "string",
15970
+ "enum": [
15971
+ "primary",
15972
+ "secondary"
15973
+ ]
15974
+ },
15975
+ "responsiveWidth": {
15976
+ "type": "boolean"
15977
+ },
15978
+ "responsiveHeight": {
15979
+ "type": "boolean"
15980
+ },
15981
+ "color": {
15982
+ "type": "string",
15983
+ "description": "Uniform mark fill (primitive styling)."
15984
+ },
15985
+ "stroke": {
15986
+ "type": "string"
15987
+ },
15988
+ "strokeWidth": {
15989
+ "type": "number"
15990
+ },
15991
+ "opacity": {
15992
+ "type": "number"
15993
+ },
15994
+ "data": {
15995
+ "type": "array",
15996
+ "description": "Flat observations containing one magnitude per series and ranking column."
15997
+ },
15998
+ "xAccessor": {
15999
+ "type": "string",
16000
+ "description": "Ordered or temporal ranking-column accessor.",
16001
+ "default": "x",
16002
+ "x-semiotic-runtime-types": [
16003
+ "string",
16004
+ "function"
16005
+ ]
16006
+ },
16007
+ "yAccessor": {
16008
+ "type": "string",
16009
+ "description": "Numeric magnitude used to calculate rank and ribbon width.",
16010
+ "default": "y",
16011
+ "x-semiotic-runtime-types": [
16012
+ "string",
16013
+ "function"
16014
+ ]
16015
+ },
16016
+ "xLabel": {
16017
+ "type": "string"
16018
+ },
16019
+ "yLabel": {
16020
+ "type": "string",
16021
+ "default": "Rank"
16022
+ },
16023
+ "lineBy": {
16024
+ "type": "string",
16025
+ "description": "Series identity accessor.",
16026
+ "default": "series",
16027
+ "x-semiotic-runtime-types": [
16028
+ "string",
16029
+ "function"
16030
+ ]
16031
+ },
16032
+ "rankDirection": {
16033
+ "type": "string",
16034
+ "enum": [
16035
+ "descending",
16036
+ "ascending"
16037
+ ],
16038
+ "default": "descending"
16039
+ },
16040
+ "ribbon": {
16041
+ "type": "boolean",
16042
+ "description": "Encode the original magnitude as trajectory width.",
16043
+ "default": false
16044
+ },
16045
+ "curve": {
16046
+ "type": "string",
16047
+ "enum": [
16048
+ "smooth",
16049
+ "linear"
16050
+ ],
16051
+ "default": "smooth"
16052
+ },
16053
+ "ribbonSizeRange": {
16054
+ "type": "array",
16055
+ "description": "Minimum and maximum full ribbon width in pixels.",
16056
+ "default": [
16057
+ 4,
16058
+ 28
16059
+ ]
16060
+ },
16061
+ "samplesPerSegment": {
16062
+ "type": "number",
16063
+ "default": 12
16064
+ },
16065
+ "lineWidth": {
16066
+ "type": "number",
16067
+ "description": "Fixed trajectory width when ribbon is false.",
16068
+ "default": 3
16069
+ },
16070
+ "highlightTop": {
16071
+ "type": "number",
16072
+ "description": "Use categorical colors for the N series with the best overall mean rank."
16073
+ },
16074
+ "neutralColor": {
16075
+ "type": "string",
16076
+ "description": "Color for trajectories outside highlightTop. Defaults to the theme's secondary text color."
16077
+ },
16078
+ "ribbonOpacity": {
16079
+ "type": "number",
16080
+ "default": 0.82
16081
+ },
16082
+ "lineOpacity": {
16083
+ "type": "number",
16084
+ "default": 0.9
16085
+ },
16086
+ "showPoints": {
16087
+ "type": "boolean",
16088
+ "default": false
16089
+ },
16090
+ "pointRadius": {
16091
+ "type": "number",
16092
+ "default": 3
16093
+ },
16094
+ "showLabels": {
16095
+ "type": [
16096
+ "boolean",
16097
+ "string"
16098
+ ],
16099
+ "enum": [
16100
+ "start",
16101
+ "end",
16102
+ "both"
16103
+ ],
16104
+ "default": true
16105
+ },
16106
+ "showAxes": {
16107
+ "type": "boolean",
16108
+ "default": true
16109
+ }
16110
+ },
16111
+ "required": [
16112
+ "data"
16113
+ ]
16114
+ }
16115
+ }
16116
+ },
16117
+ {
16118
+ "type": "function",
16119
+ "function": {
16120
+ "name": "ChainReactionChart",
16121
+ "description": "Physics-backed dependency chain reaction. Tasks are placed by workstream lane and dependency depth; a completed task releases one delivery ball per outgoing dependency, and a downstream task arms only once every prerequisite ball has arrived. The settled reading is task state plus each blocker's downstream reach.",
16122
+ "parameters": {
16123
+ "type": "object",
16124
+ "properties": {
16125
+ "data": {
16126
+ "type": "array",
16127
+ "description": "Array of source records. Each record becomes one or more simulated bodies."
16128
+ },
16129
+ "size": {
16130
+ "type": "array",
16131
+ "description": "[width, height] in pixels"
16132
+ },
16133
+ "width": {
16134
+ "type": "number",
16135
+ "description": "Alias for size[0]"
16136
+ },
16137
+ "height": {
16138
+ "type": "number",
16139
+ "description": "Alias for size[1]"
16140
+ },
16141
+ "className": {
16142
+ "type": "string"
16143
+ },
16144
+ "title": {
16145
+ "type": "string"
16146
+ },
16147
+ "description": {
16148
+ "type": "string",
16149
+ "description": "Concise accessible description that overrides the generated aria-label."
16150
+ },
16151
+ "summary": {
16152
+ "type": "string",
16153
+ "description": "Screen-reader-only takeaway and interaction guidance."
16154
+ },
16155
+ "accessibleTable": {
16156
+ "type": [
16157
+ "boolean",
16158
+ "object"
16159
+ ],
16160
+ "description": "Expose source data through Semiotic's screen-reader data table."
16161
+ },
16162
+ "chartId": {
16163
+ "type": "string",
16164
+ "description": "Stable chart identity for linked observation and navigation."
16165
+ },
16166
+ "emphasis": {
16167
+ "type": "string",
16168
+ "enum": [
16169
+ "primary",
16170
+ "secondary"
16171
+ ]
16172
+ },
16173
+ "responsiveWidth": {
16174
+ "type": "boolean"
16175
+ },
16176
+ "responsiveHeight": {
16177
+ "type": "boolean"
16178
+ },
16179
+ "colorBy": {
16180
+ "type": "string",
16181
+ "description": "Categorical field or accessor used to color simulated bodies.",
16182
+ "x-semiotic-runtime-types": [
16183
+ "string",
16184
+ "function"
16185
+ ]
16186
+ },
16187
+ "seed": {
16188
+ "type": "number",
16189
+ "description": "Deterministic seed for delivery-ball motion.",
16190
+ "default": 31
16191
+ },
16192
+ "ballRadius": {
16193
+ "type": "number",
16194
+ "description": "Radius of each simulated circular body in pixels."
16195
+ },
16196
+ "hoverRadius": {
16197
+ "type": "number",
16198
+ "description": "Pixel hit radius for body hover tooltips."
16199
+ },
16200
+ "paused": {
16201
+ "type": "boolean",
16202
+ "description": "Pause the simulation at mount or on prop update."
16203
+ },
16204
+ "tooltip": {
16205
+ "type": [
16206
+ "boolean",
16207
+ "object"
16208
+ ],
16209
+ "description": "Tooltip content function/config, true for the default body tooltip, or false to disable hover tooltips.",
16210
+ "x-semiotic-runtime-types": [
16211
+ "boolean",
16212
+ "function",
16213
+ "object"
16214
+ ]
16215
+ },
16216
+ "taskIDAccessor": {
16217
+ "type": "string",
16218
+ "description": "Stable task id. Dependency arrays reference these resolved ids.",
16219
+ "x-semiotic-runtime-types": [
16220
+ "string",
16221
+ "function"
16222
+ ]
16223
+ },
16224
+ "labelAccessor": {
16225
+ "type": "string",
16226
+ "description": "Human-readable task name used in labels and the data table.",
16227
+ "x-semiotic-runtime-types": [
16228
+ "string",
16229
+ "function"
16230
+ ]
16231
+ },
16232
+ "laneAccessor": {
16233
+ "type": "string",
16234
+ "description": "Workstream the task belongs to. Lanes become the chart's columns.",
16235
+ "x-semiotic-runtime-types": [
16236
+ "string",
16237
+ "function"
16238
+ ]
16239
+ },
16240
+ "dependencyAccessor": {
16241
+ "type": "string",
16242
+ "description": "Array of prerequisite task ids. Edges are never inferred; a task with the wrong prerequisites reads as a different claim.",
16243
+ "x-semiotic-runtime-types": [
16244
+ "string",
16245
+ "function"
16246
+ ]
16247
+ },
16248
+ "startAccessor": {
16249
+ "type": "string",
16250
+ "description": "Planned start time (number or Date).",
16251
+ "x-semiotic-runtime-types": [
16252
+ "string",
16253
+ "function"
16254
+ ]
16255
+ },
16256
+ "endAccessor": {
16257
+ "type": "string",
16258
+ "description": "Planned end time (number or Date).",
16259
+ "x-semiotic-runtime-types": [
16260
+ "string",
16261
+ "function"
16262
+ ]
16263
+ },
16264
+ "progressAccessor": {
16265
+ "type": "string",
16266
+ "description": "Fractional completion 0–1, shown on the task body.",
16267
+ "x-semiotic-runtime-types": [
16268
+ "string",
16269
+ "function"
16270
+ ]
16271
+ },
16272
+ "statusAccessor": {
16273
+ "type": "string",
16274
+ "description": "Authored task status (done / blocked / waiting / active). Completion is an explicit data event, never something the simulation discovers.",
16275
+ "x-semiotic-runtime-types": [
16276
+ "string",
16277
+ "function"
16278
+ ]
16279
+ },
16280
+ "completionTimeAccessor": {
16281
+ "type": "string",
16282
+ "description": "When the task actually completed. Drives replay ordering against currentTime.",
16283
+ "x-semiotic-runtime-types": [
16284
+ "string",
16285
+ "function"
16286
+ ]
16287
+ },
16288
+ "blockerAccessor": {
16289
+ "type": "string",
16290
+ "description": "Reason this task is blocked. A blocked task never arms its downstream dependents.",
16291
+ "x-semiotic-runtime-types": [
16292
+ "string",
16293
+ "function"
16294
+ ]
16295
+ },
16296
+ "milestoneAccessor": {
16297
+ "type": "string",
16298
+ "description": "Marks a task as a milestone for emphasis.",
16299
+ "x-semiotic-runtime-types": [
16300
+ "string",
16301
+ "function"
16302
+ ]
16303
+ },
16304
+ "mode": {
16305
+ "type": "string",
16306
+ "enum": [
16307
+ "snapshot",
16308
+ "replay",
16309
+ "mechanical"
16310
+ ],
16311
+ "description": "snapshot derives the settled state at currentTime without animating; replay animates deliveries forward from the earliest recorded completion; mechanical demonstrates the apparatus.",
16312
+ "default": "snapshot"
16313
+ },
16314
+ "insight": {
16315
+ "type": "string",
16316
+ "enum": [
16317
+ "none",
16318
+ "blocker-amplification"
16319
+ ],
16320
+ "description": "Which derived reading to surface. blocker-amplification reports how many unfinished tasks and lanes each blocker reaches.",
16321
+ "default": "blocker-amplification"
16322
+ },
16323
+ "currentTime": {
16324
+ "type": [
16325
+ "number",
16326
+ "object"
16327
+ ],
16328
+ "description": "Clock position used to derive the settled state (number or Date)."
16329
+ },
16330
+ "controls": {
16331
+ "type": [
16332
+ "boolean",
16333
+ "array"
16334
+ ],
16335
+ "description": "Replay control buttons: true for all, or a subset of play / pause / step / reset / settle."
16336
+ },
16337
+ "mechanism": {
16338
+ "type": "string",
16339
+ "enum": [
16340
+ "domino-ball"
16341
+ ],
16342
+ "description": "Delivery mechanism used to represent a satisfied prerequisite.",
16343
+ "default": "domino-ball"
16344
+ },
16345
+ "orientation": {
16346
+ "type": "string",
16347
+ "enum": [
16348
+ "vertical"
16349
+ ],
16350
+ "description": "Lane orientation. Lanes run as vertical columns.",
16351
+ "default": "vertical"
16352
+ },
16353
+ "reducedMotion": {
16354
+ "type": "string",
16355
+ "enum": [
16356
+ "settle"
16357
+ ],
16358
+ "description": "Force the settled reading instead of a replay. The frame also honors prefers-reduced-motion automatically."
16359
+ }
16360
+ },
16361
+ "required": [
16362
+ "data",
16363
+ "taskIDAccessor",
16364
+ "labelAccessor",
16365
+ "laneAccessor",
16366
+ "dependencyAccessor"
16367
+ ]
16368
+ }
16369
+ }
14533
16370
  }
14534
16371
  ]
14535
16372
  }