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
@@ -5,6 +5,7 @@
5
5
  import StreamXYFrame from "./stream/StreamXYFrame";
6
6
  export { StreamXYFrame };
7
7
  export { LineChart } from "./charts/xy/LineChart";
8
+ export { BumpChart, rankBumpData } from "./charts/xy/BumpChart";
8
9
  export { AreaChart } from "./charts/xy/AreaChart";
9
10
  export { DifferenceChart } from "./charts/xy/DifferenceChart";
10
11
  export { StackedAreaChart } from "./charts/xy/StackedAreaChart";
@@ -28,10 +29,13 @@ export type { HitTargetPointProps, HitTargetRectProps } from "./stream/hitTarget
28
29
  export { glyphPlacement, glyphExtent } from "./stream/glyphDef";
29
30
  export type { GlyphDef, GlyphPart } from "./stream/glyphDef";
30
31
  export type { GlyphSceneNode, SceneAccessibilityMetadata } from "./stream/types";
32
+ export type { CategoricalLegendConfig, GradientLegendConfig, GradientLegendValue, LegendGroup, LegendItem, LegendLayout, LegendValue, } from "./types/legendTypes";
31
33
  export type { StreamXYFrameProps, StreamXYFrameHandle } from "./stream/types";
32
34
  export type { CustomLayout, LayoutContext, LayoutResult } from "./stream/customLayout";
33
35
  export type { LineChartProps } from "./charts/xy/LineChart";
36
+ export type { BumpChartProps, RankedBumpData, RankedBumpDatum, RankBumpDataOptions, } from "./charts/xy/BumpChart";
34
37
  export type { AreaChartProps, SemanticGradientStop } from "./charts/xy/AreaChart";
38
+ export type { GradientConfig, GradientStop, SemanticGradientInput, } from "./charts/shared/gradient";
35
39
  export type { DifferenceChartProps } from "./charts/xy/DifferenceChart";
36
40
  export type { StackedAreaChartProps } from "./charts/xy/StackedAreaChart";
37
41
  export type { ScatterplotProps } from "./charts/xy/Scatterplot";
@@ -1,7 +1,7 @@
1
1
  import StreamXYFrame from "./stream/StreamXYFrame";
2
2
  import StreamOrdinalFrame from "./stream/StreamOrdinalFrame";
3
3
  import StreamNetworkFrame from "./stream/StreamNetworkFrame";
4
- import { Scatterplot, ConnectedScatterplot, LineChart, AreaChart, DifferenceChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, PieChart, DonutChart, GaugeChart, GroupedBarChart, FunnelChart, SwimlaneChart, ForceDirectedGraph, ChordDiagram, SankeyDiagram, ProcessSankey, TreeDiagram, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart, responsiveRuleMatches, resolveResponsiveRules } from "./charts";
4
+ import { Scatterplot, ConnectedScatterplot, LineChart, BumpChart, rankBumpData, AreaChart, DifferenceChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, PieChart, DonutChart, GaugeChart, GroupedBarChart, FunnelChart, SwimlaneChart, ForceDirectedGraph, ChordDiagram, SankeyDiagram, ProcessSankey, TreeDiagram, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart, responsiveRuleMatches, resolveResponsiveRules } from "./charts";
5
5
  import { LinkedCharts } from "./LinkedCharts";
6
6
  import { ThemeProvider, useTheme } from "./ThemeProvider";
7
7
  import { exportChart } from "./export/exportChart";
@@ -28,14 +28,14 @@ import { RealtimeTemporalHistogram, RealtimeHistogram, TemporalHistogram } from
28
28
  import { RealtimeSwarmChart } from "./charts/realtime/RealtimeSwarmChart";
29
29
  import { RealtimeWaterfallChart } from "./charts/realtime/RealtimeWaterfallChart";
30
30
  import { RealtimeHeatmap } from "./charts/realtime/RealtimeHeatmap";
31
- export { StreamXYFrame, StreamOrdinalFrame, StreamNetworkFrame, Scatterplot, ConnectedScatterplot, LineChart, AreaChart, DifferenceChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, ForceDirectedGraph, ChordDiagram, SankeyDiagram, ProcessSankey, TreeDiagram, PieChart, DonutChart, GaugeChart, FunnelChart, GroupedBarChart, SwimlaneChart, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart, LinkedCharts, ThemeProvider, useTheme, exportChart, toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX, serializeSelections, deserializeSelections, fromVegaLite, ChartErrorBoundary, ChartContainer, MobileChartContainer, SmallMultipleChart, MobileStandardControls, clampMobileRange, useMobileRangeControls, zoomMobileRange, ChartGrid, CategoryColorProvider, useCategoryColors, ContextLayout, CircularBrush, DirectManipulationControl, VISUALIZATION_CONTROL_TYPES, DetailsPanel, Tooltip, MultiLineTooltip, normalizeTooltip, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeTemporalHistogram, RealtimeHistogram, TemporalHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap, createHatchPattern, responsiveRuleMatches, resolveResponsiveRules };
32
- export type { LegendLayout } from "./types/legendTypes";
31
+ export { StreamXYFrame, StreamOrdinalFrame, StreamNetworkFrame, Scatterplot, ConnectedScatterplot, LineChart, BumpChart, rankBumpData, AreaChart, DifferenceChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, LikertChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, ForceDirectedGraph, ChordDiagram, SankeyDiagram, ProcessSankey, TreeDiagram, PieChart, DonutChart, GaugeChart, FunnelChart, GroupedBarChart, SwimlaneChart, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, CandlestickChart, XYCustomChart, NetworkCustomChart, OrdinalCustomChart, LinkedCharts, ThemeProvider, useTheme, exportChart, toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX, serializeSelections, deserializeSelections, fromVegaLite, ChartErrorBoundary, ChartContainer, MobileChartContainer, SmallMultipleChart, MobileStandardControls, clampMobileRange, useMobileRangeControls, zoomMobileRange, ChartGrid, CategoryColorProvider, useCategoryColors, ContextLayout, CircularBrush, DirectManipulationControl, VISUALIZATION_CONTROL_TYPES, DetailsPanel, Tooltip, MultiLineTooltip, normalizeTooltip, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeTemporalHistogram, RealtimeHistogram, TemporalHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap, createHatchPattern, responsiveRuleMatches, resolveResponsiveRules };
32
+ export type { CategoricalLegendConfig, GradientLegendConfig, GradientLegendValue, LegendGroup, LegendItem, LegendLayout, LegendValue, } from "./types/legendTypes";
33
33
  export type { DirectManipulationControlProps, VisualizationControlType } from "./DirectManipulationControl";
34
34
  export { createControlObservationAdapter, } from "./controls/controlContract";
35
35
  export { auditVisualizationControls } from "./controls/controlAudit";
36
36
  export type { ControlInputSource, ControlObservation, ControlObservationAdapterOptions, ControlObservationCallback, ControlObservationPhase, VisualizationControlDefinition, VisualizationControlValue, } from "./controls/controlContract";
37
37
  export type { AuditVisualizationControlsOptions, ControlAuditFinding, ControlAuditResult, ControlAuditStatus, } from "./controls/controlAudit";
38
- export type { ScatterplotProps, ConnectedScatterplotProps, LineChartProps, AreaChartProps, SemanticGradientStop, DifferenceChartProps, StackedAreaChartProps, HeatmapProps, BubbleChartProps, BarChartProps, StackedBarChartProps, LikertChartProps, SwarmPlotProps, BoxPlotProps, HistogramProps, ViolinPlotProps, DotPlotProps, PieChartProps, DonutChartProps, GaugeChartProps, GaugeThreshold, FunnelChartProps, GroupedBarChartProps, SwimlaneChartProps, RidgelinePlotProps, OrbitDiagramProps, OrbitNode, ForceDirectedGraphProps, ChordDiagramProps, SankeyDiagramProps, ProcessSankeyProps, ProcessSankeyTick, TreeDiagramProps, TreemapProps, CirclePackProps, ScatterplotMatrixProps, MinimapChartProps, MinimapConfig, QuadrantChartProps, MultiAxisLineChartProps, MultiAxisSeriesConfig, CandlestickChartProps, QuadrantsConfig, QuadrantsConfigOverride, QuadrantConfig, CenterlineStyle, BaseChartProps, AxisConfig, Accessor, ChartAccessor, ChartMode, MobileClearSelectionBehavior, MobileSnapBehavior, MobileInteractionConfig, MobileInteractionProp, ResolvedMobileInteractionConfig, ResponsiveOrientation, ResponsiveRuleCondition, ResponsiveRuleContext, ResponsiveRule, ResponsiveRuleMatch, ResponsiveRuleResult } from "./charts";
38
+ export type { ScatterplotProps, ConnectedScatterplotProps, LineChartProps, BumpChartProps, RankedBumpData, RankedBumpDatum, RankBumpDataOptions, AreaChartProps, SemanticGradientStop, GradientConfig, GradientStop, SemanticGradientInput, DifferenceChartProps, StackedAreaChartProps, HeatmapProps, BubbleChartProps, BarChartProps, StackedBarChartProps, LikertChartProps, SwarmPlotProps, BoxPlotProps, HistogramProps, ViolinPlotProps, DotPlotProps, PieChartProps, DonutChartProps, GaugeChartProps, GaugeThreshold, FunnelChartProps, GroupedBarChartProps, SwimlaneChartProps, RidgelinePlotProps, OrbitDiagramProps, OrbitNode, ForceDirectedGraphProps, ChordDiagramProps, SankeyDiagramProps, ProcessSankeyProps, ProcessSankeyTick, TreeDiagramProps, TreemapProps, CirclePackProps, ScatterplotMatrixProps, MinimapChartProps, MinimapConfig, QuadrantChartProps, MultiAxisLineChartProps, MultiAxisSeriesConfig, CandlestickChartProps, QuadrantsConfig, QuadrantsConfigOverride, QuadrantConfig, CenterlineStyle, BaseChartProps, AxisConfig, Accessor, ChartAccessor, ChartMode, MobileClearSelectionBehavior, MobileSnapBehavior, MobileInteractionConfig, MobileInteractionProp, ResolvedMobileInteractionConfig, ResponsiveOrientation, ResponsiveRuleCondition, ResponsiveRuleContext, ResponsiveRule, ResponsiveRuleMatch, ResponsiveRuleResult } from "./charts";
39
39
  export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType, RuntimeMode, SceneNode, SceneAccessibilityMetadata, Changeset, StreamScales, StreamLayout, CurveType, CanvasRendererFn, XYFrameAxisConfig, BandConfig } from "./stream/types";
40
40
  export type { StreamRendererFn } from "./stream/renderers/types";
41
41
  export type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle, OrdinalChartType, OrdinalScales, OrdinalSceneNode } from "./stream/ordinalTypes";
@@ -18,7 +18,7 @@
18
18
  export interface RenderEvidence {
19
19
  /** HOC component name as passed to renderChart. */
20
20
  component: string;
21
- frameType: "xy" | "ordinal" | "network" | "geo" | "physics";
21
+ frameType: "xy" | "ordinal" | "network" | "geo" | "physics" | "value";
22
22
  /** "ok" when the scene produced data marks; "empty" when it did not. */
23
23
  status: "ok" | "empty";
24
24
  /** True when zero data marks rendered. */
@@ -7,6 +7,7 @@ import { CHART_CONFIGS } from "./serverChartConfigs";
7
7
  import { type ThemeInput } from "./themeResolver";
8
8
  import { type RenderEvidence } from "./renderEvidence";
9
9
  import { type ThemeAwareProps, type StaticFrameProps, type FrameType } from "./staticSVGChrome";
10
+ import { type ValueChartName } from "./staticValue";
10
11
  export declare function renderToStaticSVG(frameType: FrameType, props: StaticFrameProps): string;
11
12
  export declare function renderXYToStaticSVG(props: StreamXYFrameProps & ThemeAwareProps): string;
12
13
  export declare function renderOrdinalToStaticSVG(props: StreamOrdinalFrameProps & ThemeAwareProps): string;
@@ -18,7 +19,7 @@ export declare function renderGeoToStaticSVG(props: StreamGeoFrameProps & ThemeA
18
19
  * union — no second edit required, no silent drift like the CandlestickChart
19
20
  * gap that motivated this refactor.
20
21
  */
21
- type ChartName = keyof typeof CHART_CONFIGS;
22
+ type ChartName = keyof typeof CHART_CONFIGS | ValueChartName;
22
23
  interface RenderChartOptions {
23
24
  /** Output format — currently only "svg" is synchronous */
24
25
  format?: "svg";
@@ -0,0 +1,6 @@
1
+ import type { ChartConfig } from "./serverChartConfigShared";
2
+ /**
3
+ * Heatmap keeps cell border props separate from the generic primitive
4
+ * vocabulary. Convert them to the areaStyle consumed by both SVG paths.
5
+ */
6
+ export declare const heatmap: ChartConfig;
@@ -0,0 +1,12 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
+ import { type PrimitiveStyleOverrides } from "../charts/shared/mergeShapeStyle";
3
+ /**
4
+ * Compose user/frame node styling over a hierarchy HOC's built-in encoding,
5
+ * then apply chart-level primitives with their documented final precedence.
6
+ */
7
+ export declare function composeHierarchyNodeStyle(baseNodeStyle: (d: Datum) => Record<string, unknown>, userNodeStyle: ((d: Datum) => Record<string, unknown> | undefined | null) | Record<string, unknown> | undefined | null, primitives?: PrimitiveStyleOverrides): (d: Datum) => Record<string, unknown>;
8
+ /**
9
+ * Mirror ForceDirectedGraph's edge primitive resolution on the static path.
10
+ * An explicit edgeStyle remains the final escape hatch.
11
+ */
12
+ export declare function resolveForceEdgeStyle(rest: Datum): any;
@@ -3,6 +3,7 @@ import type { ChartMode } from "../charts/shared/types";
3
3
  import type { ChartModeInput, ChartModeResult } from "../charts/shared/chartMode";
4
4
  import type { SemioticTheme } from "../store/ThemeStore";
5
5
  import type { ReactNode } from "react";
6
+ import type { PrimitiveStyleOverrides } from "../charts/shared/mergeShapeStyle";
6
7
  export type FrameType = "xy" | "ordinal" | "network" | "geo" | "physics";
7
8
  export type ServerAccessorValue = string | number | boolean | Date | null | undefined;
8
9
  export type ServerAccessor = string | ((datum: Datum) => ServerAccessorValue);
@@ -41,6 +42,21 @@ export interface ChartConfig {
41
42
  export declare function accessorValue(accessor: ServerAccessor | undefined, fallback: string, d: Datum): ServerAccessorValue;
42
43
  export declare function numericValue(value: ServerAccessorValue): number;
43
44
  export declare function viridisColor(i: number, n: number): string;
45
+ /**
46
+ * Pull the top-level primitive styling props out of a chart's raw props so a
47
+ * server config can overlay them with `mergeShapeStyle`, exactly as the HOC
48
+ * does before handing style functions to its frame.
49
+ *
50
+ * Every shape-drawing HOC applies `stroke`/`strokeWidth`/`opacity` last, so
51
+ * they win over `frameProps.*Style` returns and the HOC's own base style. A
52
+ * server config that builds its style function without this overlay silently
53
+ * drops the whole channel — the static SVG comes back byte-identical to an
54
+ * unstyled render while the canvas honors it.
55
+ *
56
+ * Keys are omitted when unset so `mergeShapeStyle` can return its input
57
+ * unchanged and callers keep the no-override fast path.
58
+ */
59
+ export declare function primitiveStyleOverrides(rest: Datum): PrimitiveStyleOverrides;
44
60
  export declare function prepareConnectedScatterplotData(data: ServerChartData, rest: Datum): {
45
61
  data: ServerChartData;
46
62
  orderMap: WeakMap<Datum, {
@@ -6,6 +6,7 @@
6
6
  import type { ChartConfig } from "./serverChartConfigShared";
7
7
  export declare const CHART_CONFIGS: {
8
8
  Sparkline: ChartConfig;
9
+ BumpChart: ChartConfig;
9
10
  LineChart: ChartConfig;
10
11
  AreaChart: ChartConfig;
11
12
  DifferenceChart: ChartConfig;
@@ -48,11 +49,11 @@ export declare const CHART_CONFIGS: {
48
49
  GeoCustomChart: ChartConfig;
49
50
  GaltonBoardChart: ChartConfig;
50
51
  EventDropChart: ChartConfig;
51
- PhysicsPileChart: ChartConfig;
52
+ UnitPileChart: ChartConfig;
52
53
  CollisionSwarmChart: ChartConfig;
53
54
  ProcessFlowChart: ChartConfig;
54
55
  GauntletChart: ChartConfig;
55
56
  CrucibleChart: ChartConfig;
56
- PhysicalFlowChart: ChartConfig;
57
+ PacketFlowChart: ChartConfig;
57
58
  PhysicsCustomChart: ChartConfig;
58
59
  };
@@ -1,7 +1,7 @@
1
1
  import { type ChartConfig } from "./serverChartConfigShared";
2
2
  export declare const galtonBoardChart: ChartConfig;
3
3
  export declare const eventDropChart: ChartConfig;
4
- export declare const physicsPileChart: ChartConfig;
4
+ export declare const unitPileChart: ChartConfig;
5
5
  export declare const collisionSwarmChart: ChartConfig;
6
6
  export declare const processFlowChart: ChartConfig;
7
7
  export declare const gauntletChart: ChartConfig;
@@ -14,5 +14,5 @@ export declare const gauntletChart: ChartConfig;
14
14
  * therefore cannot alter this static semantic state.
15
15
  */
16
16
  export declare const crucibleChart: ChartConfig;
17
- export declare const physicalFlowChart: ChartConfig;
17
+ export declare const packetFlowChart: ChartConfig;
18
18
  export declare const physicsCustomChart: ChartConfig;
@@ -1,6 +1,7 @@
1
1
  import { type ChartConfig } from "./serverChartConfigShared";
2
2
  export declare const bubbleChart: ChartConfig;
3
3
  export declare const sparkline: ChartConfig;
4
+ export declare const bumpChart: ChartConfig;
4
5
  export declare const lineChart: ChartConfig;
5
6
  /** Static-data TemporalHistogram mapped onto the shared time-binned XY pipeline. */
6
7
  export declare const temporalHistogram: ChartConfig;
@@ -11,4 +12,3 @@ export declare const candlestickChart: ChartConfig;
11
12
  export declare const scatterplot: ChartConfig;
12
13
  export declare const quadrantChart: ChartConfig;
13
14
  export declare const connectedScatterplot: ChartConfig;
14
- export declare const heatmap: ChartConfig;
@@ -8,6 +8,7 @@ import * as React from "react";
8
8
  import type { SemioticTheme } from "../store/ThemeStore";
9
9
  import type { Datum } from "../charts/shared/datumTypes";
10
10
  import type { CategoricalLegendConfig, GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
11
+ import { type AxisChromeInput } from "../legendLayout";
11
12
  interface LegendItemLayout {
12
13
  category: string;
13
14
  width: number;
@@ -45,14 +46,21 @@ export interface StaticLegendConfig {
45
46
  hasTitle?: boolean;
46
47
  /** SSR legend layout controls */
47
48
  legendLayout?: LegendLayout;
48
- /** Client <Legend> uses a stable 100px vertical placement box. */
49
+ /** Gap in pixels between the legend and the plot/side gutter. Default: 10. */
50
+ legendDistance?: number;
51
+ /** Optional vertical placement-box override. Defaults to measured content. */
49
52
  reservedWidth?: number;
50
53
  /** Optional id namespace used for generated SVG ids */
51
54
  idPrefix?: string;
55
+ /**
56
+ * Axis chrome on the legend's side, so a top/bottom legend clears the tick
57
+ * labels instead of drawing on them. Mirrors `renderLegendFromConfig`.
58
+ */
59
+ axisChrome?: AxisChromeInput;
52
60
  }
53
61
  export interface StaticLegendGroupsConfig extends Omit<StaticLegendConfig, "categories" | "colorScheme"> {
54
62
  legendGroups: LegendGroup[];
55
- /** Client <Legend> uses a stable 100px vertical placement box. */
63
+ /** Optional vertical placement-box override. Defaults to measured content. */
56
64
  reservedWidth?: number;
57
65
  }
58
66
  export interface StaticGradientLegendConfig extends Omit<StaticLegendConfig, "categories" | "colorScheme"> {
@@ -7,12 +7,12 @@ import type { StreamGeoFrameProps } from "../stream/geoTypes";
7
7
  import type { PhysicsSettledSVGOptions } from "../stream/physics/PhysicsSettledSVG";
8
8
  import type { PhysicsPipelineStore, PhysicsQueuedSpawn } from "../stream/physics/PhysicsPipelineStore";
9
9
  import type { OrdinalPipelineStore } from "../stream/OrdinalPipelineStore";
10
- import type { RenderEvidence } from "./renderEvidence";
11
10
  import { resolveTheme, type ThemeInput } from "./themeResolver";
12
11
  import type { SemioticTheme } from "../store/ThemeStore";
13
12
  import * as React from "react";
14
13
  import { type AxisExtentMode } from "../charts/shared/axisExtent";
15
- export type FrameType = RenderEvidence["frameType"];
14
+ import { type AxisChromeInput } from "../legendLayout";
15
+ export type FrameType = "xy" | "ordinal" | "network" | "geo" | "physics";
16
16
  export type StaticPhysicsFrameProps = PhysicsSettledSVGOptions & {
17
17
  config?: ConstructorParameters<typeof PhysicsPipelineStore>[0];
18
18
  initialSpawns?: PhysicsQueuedSpawn[];
@@ -55,12 +55,17 @@ type LegendPosition = "right" | "left" | "top" | "bottom";
55
55
  type StaticLegendHostProps = ThemeAwareProps & {
56
56
  legend?: unknown;
57
57
  colorScheme?: string | string[] | Record<string, string>;
58
+ /**
59
+ * Bottom-axis chrome, so a bottom legend is placed and reserved outside the
60
+ * tick labels. Frames without a horizontal axis omit it and keep a 0 gutter.
61
+ */
62
+ axisChrome?: AxisChromeInput;
58
63
  };
59
64
  /**
60
- * The client HOCs reserve a stable legend gutter before layout. The static
61
- * frame API still uses content measurement by default, but renderChart()
62
- * marks HOC requests so both paths share that contract. An explicitly set
63
- * side remains fully caller-controlled.
65
+ * The client HOCs reserve a minimum legend gutter before layout. The static
66
+ * frame API uses the same content measurement, while renderChart() marks HOC
67
+ * requests so both paths retain their compatibility floor. An explicitly set
68
+ * numeric side remains fully caller-controlled.
64
69
  */
65
70
  export declare function hocLegendMarginMinimum(props: ThemeAwareProps, position: LegendPosition): number | undefined;
66
71
  /** Whether the caller, rather than the HOC default, owns a legend side. */
@@ -80,6 +85,7 @@ export declare function reserveStaticLegendMargin(margin: {
80
85
  legendLayout?: LegendLayout;
81
86
  minimumMargin?: number;
82
87
  preserveExplicitMargin?: boolean;
88
+ axisChrome?: AxisChromeInput;
83
89
  }): void;
84
90
  export declare function reserveLegendConfigMargin(margin: {
85
91
  top: number;
@@ -95,6 +101,7 @@ export declare function reserveLegendConfigMargin(margin: {
95
101
  legendLayout?: LegendLayout;
96
102
  minimumMargin?: number;
97
103
  preserveExplicitMargin?: boolean;
104
+ axisChrome?: AxisChromeInput;
98
105
  }): void;
99
106
  export declare function renderLegendConfig(legend: unknown, options: {
100
107
  theme: ReturnType<typeof resolveTheme>;
@@ -110,6 +117,7 @@ export declare function renderLegendConfig(legend: unknown, options: {
110
117
  legendLayout?: LegendLayout;
111
118
  idPrefix?: string;
112
119
  reservedWidth?: number;
120
+ axisChrome?: AxisChromeInput;
113
121
  }): React.ReactNode;
114
122
  /** Reserve the plot gutter for either a supplied legend config or categories. */
115
123
  export declare function reserveFrameLegendMargin(margin: {
@@ -0,0 +1,8 @@
1
+ import type { Datum } from "../charts/shared/datumTypes";
2
+ import { type EvidenceSink } from "./renderEvidence";
3
+ export declare function renderBigNumberToStaticSVG(props: Datum, sink?: EvidenceSink): string;
4
+ export declare const VALUE_RENDERERS: {
5
+ readonly BigNumber: typeof renderBigNumberToStaticSVG;
6
+ };
7
+ export type ValueChartName = keyof typeof VALUE_RENDERERS;
8
+ export declare function renderValueChart(component: ValueChartName, props: Datum, sink?: EvidenceSink): string;
@@ -4,7 +4,7 @@ import { type OnAnnotationActivateCallback } from "../charts/shared/annotationAc
4
4
  import * as React from "react";
5
5
  import type { ReactNode } from "react";
6
6
  import type { AnnotationContext } from "../realtime/types";
7
- import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
7
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
8
8
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
9
9
  interface GeoSVGOverlayProps {
10
10
  width: number;
@@ -24,11 +24,7 @@ interface GeoSVGOverlayProps {
24
24
  */
25
25
  showAxes?: boolean;
26
26
  title?: string | ReactNode;
27
- legend?: ReactNode | {
28
- legendGroups: LegendGroup[];
29
- } | {
30
- gradient: GradientLegendConfig;
31
- };
27
+ legend?: LegendValue;
32
28
  legendHoverBehavior?: (item: {
33
29
  label: string;
34
30
  } | null) => void;
@@ -64,10 +60,8 @@ interface GeoSVGOverlayProps {
64
60
  /**
65
61
  * The SVG chrome used by StreamGeoFrame.
66
62
  *
67
- * Geo previously imported the Cartesian SVGOverlay even though it never
68
- * supplies scales, marginal graphics, grids, or linked-crosshair state. Keep
69
- * the subset Geo actually exercises here so those XY-only dependencies do not
70
- * enter the Geo bundle.
63
+ * Contains the subset Geo exercises so XY-only scale, marginal-graphics, grid,
64
+ * and linked-crosshair dependencies do not enter the Geo bundle.
71
65
  */
72
66
  export declare function GeoSVGOverlay(props: GeoSVGOverlayProps): React.JSX.Element | null;
73
67
  export {};
@@ -2,7 +2,7 @@ import type { Datum } from "../charts/shared/datumTypes";
2
2
  import * as React from "react";
3
3
  import type { ReactNode } from "react";
4
4
  import type { NetworkLabel } from "./networkTypes";
5
- import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
5
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
6
6
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
7
7
  import type { AnnotationContext } from "../realtime/types";
8
8
  import { type GlyphDef } from "./glyphDef";
@@ -56,11 +56,7 @@ export interface NetworkSVGOverlayProps {
56
56
  /** Chart title */
57
57
  title?: string | ReactNode;
58
58
  /** Legend configuration */
59
- legend?: ReactNode | {
60
- legendGroups: LegendGroup[];
61
- } | {
62
- gradient: GradientLegendConfig;
63
- };
59
+ legend?: LegendValue;
64
60
  legendHoverBehavior?: (item: {
65
61
  label: string;
66
62
  } | null) => void;
@@ -3,7 +3,7 @@ import * as React from "react";
3
3
  import type { OrdinalScales } from "./ordinalTypes";
4
4
  import type { AnnotationContext } from "../realtime/types";
5
5
  import type { ReactNode } from "react";
6
- import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
6
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
7
7
  import type { OnObservationCallback } from "../store/ObservationStore";
8
8
  import { type OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
9
9
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
@@ -38,11 +38,7 @@ interface OrdinalSVGOverlayProps {
38
38
  axisExtent?: AxisExtentMode;
39
39
  showGrid?: boolean;
40
40
  title?: string | ReactNode;
41
- legend?: ReactNode | {
42
- legendGroups: LegendGroup[];
43
- } | {
44
- gradient: GradientLegendConfig;
45
- };
41
+ legend?: LegendValue;
46
42
  legendHoverBehavior?: (item: {
47
43
  label: string;
48
44
  } | null) => void;
@@ -3,7 +3,7 @@ import * as React from "react";
3
3
  import type { StreamScales, MarginalGraphicsConfig, XYFrameAxisConfig } from "./types";
4
4
  import type { AnnotationContext } from "../realtime/types";
5
5
  import type { ReactNode } from "react";
6
- import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
6
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
7
7
  import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
8
8
  import type { OnObservationCallback } from "../store/ObservationStore";
9
9
  import { type OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
@@ -36,11 +36,7 @@ interface SVGOverlayProps {
36
36
  axisExtent?: import("../charts/shared/axisExtent").AxisExtentMode;
37
37
  showGrid?: boolean;
38
38
  title?: string | ReactNode;
39
- legend?: ReactNode | {
40
- legendGroups: LegendGroup[];
41
- } | {
42
- gradient: GradientLegendConfig;
43
- };
39
+ legend?: LegendValue;
44
40
  /** Callback when hovering a legend item */
45
41
  legendHoverBehavior?: (item: {
46
42
  label: string;
@@ -8,12 +8,8 @@ interface StalenessBadgeProps {
8
8
  * `staleness.showBadge` is set.
9
9
  *
10
10
  * Shared by all four Stream Frames (XY / ordinal / network / geo) so the badge
11
- * is pixel-identical across families. Previously each frame inlined its own
12
- * copy and they had drifted — the network frame used a smaller, heavier variant
13
- * (10px/700, tighter padding, letterSpacing). This is the canonical style: the
14
- * more legible 11px/600 the other three shared, plus `zIndex`/`pointerEvents`
15
- * hardening so the badge always sits above the canvas and never intercepts
16
- * pointer events.
11
+ * is pixel-identical across families. The badge sits above the canvas and does
12
+ * not intercept pointer events.
17
13
  */
18
14
  export declare function StalenessBadge({ isStale, position }: StalenessBadgeProps): import("react").JSX.Element;
19
15
  export {};
@@ -0,0 +1,10 @@
1
+ import type { GeoPipelineConfig } from "./geoTypes";
2
+ /**
3
+ * `fitPadding` is applied to both sides of the plot, so 0.5 would leave a
4
+ * zero-sized extent (and a clipped globe with radius zero). Normalize nullish
5
+ * values at the public config boundary, and reject invalid values before they
6
+ * can reach d3 with a negative or non-finite projection extent.
7
+ */
8
+ export declare function normalizeFitPadding(value: unknown): number;
9
+ export declare function normalizeInitialGeoPipelineConfig(config: GeoPipelineConfig): GeoPipelineConfig;
10
+ export declare function normalizeGeoPipelineConfigUpdate(config: Partial<GeoPipelineConfig>): Partial<GeoPipelineConfig>;
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from "react";
2
2
  import type { GeoProjection, GeoPath, GeoPermissibleObjects } from "d3-geo";
3
- import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
3
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
4
4
  import type { Style, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, SceneDatum, PointSceneNode, GlyphSceneNode, ThemeSemanticColors, SceneAccessibilityMetadata, SceneRenderMode } from "./types";
5
5
  import type { AnimateProp } from "./pipelineTransitionUtils";
6
6
  import type { AnnotationContext, HoverAnnotationConfig, HoverData } from "../realtime/types";
@@ -33,6 +33,7 @@ export interface DistanceCartogramConfig {
33
33
  center: string;
34
34
  centerAccessor?: string | ((d: Datum) => string);
35
35
  costAccessor: string | ((d: Datum) => number);
36
+ /** Interpolation from fitted geography (0) to the cost layout (1). Values are clamped to [0, 1]. */
36
37
  strength?: number;
37
38
  lineMode?: "straight" | "fractional";
38
39
  /**
@@ -276,11 +277,7 @@ export interface StreamGeoFrameProps<T = Datum> {
276
277
  backgroundGraphics?: ReactNode;
277
278
  foregroundGraphics?: ReactNode;
278
279
  title?: string | ReactNode;
279
- legend?: ReactNode | {
280
- legendGroups: LegendGroup[];
281
- } | {
282
- gradient: GradientLegendConfig;
283
- };
280
+ legend?: LegendValue;
284
281
  legendPosition?: "right" | "left" | "top" | "bottom";
285
282
  legendLayout?: LegendLayout;
286
283
  legendHoverBehavior?: (item: {
@@ -1,11 +1,8 @@
1
1
  import type { ReactNode } from "react";
2
- import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
2
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
3
+ import { type AxisChromeInput } from "../legendLayout";
3
4
  export interface LegendRenderConfig {
4
- legend: ReactNode | {
5
- legendGroups: LegendGroup[];
6
- } | {
7
- gradient: GradientLegendConfig;
8
- };
5
+ legend: LegendValue;
9
6
  totalWidth: number;
10
7
  totalHeight: number;
11
8
  margin: {
@@ -26,6 +23,13 @@ export interface LegendRenderConfig {
26
23
  legendHighlightedCategory?: string | null;
27
24
  legendIsolatedCategories?: Set<string>;
28
25
  legendInteraction?: string;
26
+ /**
27
+ * Chrome drawn by the **bottom** axis, so a bottom legend can be placed
28
+ * outside it instead of on top of the tick labels. Omit for frames with no
29
+ * horizontal axis (network, geo) — the gutter resolves to 0. Top legends do
30
+ * not auto-measure; see `LegendLayout.axisGutter`.
31
+ */
32
+ axisChrome?: AxisChromeInput;
29
33
  }
30
34
  /**
31
35
  * Renders a legend (categorical, gradient, or custom ReactNode) inside an SVG overlay.
@@ -5,11 +5,12 @@ import type { AutoPlaceAnnotations } from "../recipes/annotationLayout";
5
5
  import type { SymbolName } from "./symbolPath";
6
6
  import type { Style, SceneDatum, DecayConfig, PulseConfig, TransitionConfig, StalenessConfig, ThemeSemanticColors, FrameGraphicsProp, SceneAccessibilityMetadata, SceneRenderMode } from "./types";
7
7
  import type { AnimateProp } from "./pipelineTransitionUtils";
8
- import type { GradientLegendConfig, LegendGroup, LegendLayout } from "../types/legendTypes";
8
+ import type { LegendLayout, LegendValue } from "../types/legendTypes";
9
9
  import type { Datum } from "../charts/shared/datumTypes";
10
10
  import type { OnObservationCallback } from "../store/ObservationStore";
11
11
  import type { SemanticClickBehavior, SemanticHoverBehavior } from "../charts/shared/semanticInteractions";
12
12
  import type { OnAnnotationActivateCallback } from "../charts/shared/annotationActivation";
13
+ import type { GradientConfig, GradientInput } from "../charts/shared/gradient";
13
14
  export type OrdinalChartType = "bar" | "clusterbar" | "point" | "swarm" | "pie" | "donut" | "boxplot" | "violin" | "histogram" | "ridgeline" | "timeline" | "funnel" | "bar-funnel" | "swimlane" | "custom";
14
15
  export interface OrdinalScales {
15
16
  o: ScaleBand<string>;
@@ -223,20 +224,8 @@ export interface OrdinalPipelineConfig {
223
224
  barPadding?: number;
224
225
  /** Rounded top corner radius for bar charts. Only the end away from the baseline is rounded. For stacked bars, only the topmost segment gets rounded. */
225
226
  roundedTop?: number;
226
- /** Gradient fill for bar rects. `{ topOpacity, bottomOpacity }` fades the
227
- * resolved fill color from tip (opposite the baseline) to base; `{ colorStops }`
228
- * renders a multi-color gradient along the same axis. Direction follows the
229
- * bar's orientation (tip → base). Same shape as AreaChart.gradientFill
230
- * sans the `boolean` case — the HOC resolves `true` to default opacities. */
231
- gradientFill?: {
232
- topOpacity: number;
233
- bottomOpacity: number;
234
- } | {
235
- colorStops: Array<{
236
- offset: number;
237
- color: string;
238
- }>;
239
- };
227
+ /** Gradient fill for bar rects. Offset 0 is the tip; offset 1 is the base. */
228
+ gradientFill?: GradientConfig;
240
229
  /** Swimlane "track" fill — a rect drawn behind each lane spanning the
241
230
  * full value-axis range, sized to the lane's bandwidth. Used to make
242
231
  * budget/progress lanes read as filled vs. empty. Pass a color (CSS
@@ -339,17 +328,8 @@ export interface StreamOrdinalFrameProps<T = Datum> {
339
328
  };
340
329
  barPadding?: number;
341
330
  roundedTop?: number;
342
- /** Gradient fill for bar rects. Same shape as AreaChart.gradientFill sans
343
- * the boolean case — resolve booleans at the HOC layer. */
344
- gradientFill?: {
345
- topOpacity: number;
346
- bottomOpacity: number;
347
- } | {
348
- colorStops: Array<{
349
- offset: number;
350
- color: string;
351
- }>;
352
- };
331
+ /** Gradient fill for bar rects. Offset 0 is the tip; offset 1 is the base. */
332
+ gradientFill?: GradientInput;
353
333
  /** Swimlane "track" fill — see OrdinalPipelineConfig.trackFill */
354
334
  trackFill?: string | {
355
335
  color: string;
@@ -430,11 +410,7 @@ export interface StreamOrdinalFrameProps<T = Datum> {
430
410
  autoPlaceAnnotations?: AutoPlaceAnnotations;
431
411
  svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
432
412
  showGrid?: boolean;
433
- legend?: ReactNode | {
434
- legendGroups: LegendGroup[];
435
- } | {
436
- gradient: GradientLegendConfig;
437
- };
413
+ legend?: LegendValue;
438
414
  legendHoverBehavior?: (item: {
439
415
  label: string;
440
416
  } | null) => void;
@@ -9,6 +9,31 @@ export interface PhysicsEvidenceBinCount {
9
9
  secondaryLabel?: string;
10
10
  observed?: number;
11
11
  }
12
+ /**
13
+ * Where every charged body ended up.
14
+ *
15
+ * Physics charts all share one deep structure — a charge enters, an apparatus
16
+ * routes it, and it comes to rest in destinations — so they all owe the same
17
+ * invariant: every body that entered is accounted for in exactly one place.
18
+ * That invariant is this family's "bars start at zero": it is what makes a
19
+ * settled projection an auditable reading rather than a claim about a movie.
20
+ *
21
+ * Supply `charge` (the total the chart says entered) and the evidence reports
22
+ * whether the world can still account for it.
23
+ */
24
+ export interface PhysicsSettledLedger {
25
+ /** Total the chart claims entered the apparatus. */
26
+ charge: number;
27
+ /** Bodies live in the world when it came to rest. */
28
+ live: number;
29
+ /** Bodies the queue still owes and never admitted. */
30
+ queued: number;
31
+ /** Bodies retired into sediment by the body budget. */
32
+ sedimented: number;
33
+ /** `charge - (live + queued + sedimented)`. Non-zero means bodies vanished. */
34
+ unaccounted: number;
35
+ balanced: boolean;
36
+ }
12
37
  export interface PhysicsSettledEvidence {
13
38
  bodyCount: number;
14
39
  sleepingCount: number;
@@ -16,10 +41,22 @@ export interface PhysicsSettledEvidence {
16
41
  stepsRun: number;
17
42
  seed: number;
18
43
  binCounts: PhysicsEvidenceBinCount[];
44
+ /** Spawns still owed by the queue. Non-zero in a settled scene is a defect. */
45
+ queuedCount: number;
46
+ /** Bodies the body budget retired into sediment. */
47
+ sedimentedCount: number;
48
+ ledger?: PhysicsSettledLedger;
49
+ warnings: string[];
19
50
  }
20
51
  export interface PhysicsSettledEvidenceOptions {
21
52
  bodies?: PhysicsBodyState[];
22
53
  projectionRows?: PhysicsSettledProjectionRow[];
23
54
  stepsRun?: number;
55
+ /**
56
+ * Total bodies the chart claims entered the apparatus. Pass it when the chart
57
+ * knows its own charge (a unitized total, a row count) to enable the ledger
58
+ * check. Omit it and the ledger is simply absent — never guessed.
59
+ */
60
+ charge?: number;
24
61
  }
25
62
  export declare function buildPhysicsSettledEvidence(snapshot: PhysicsPipelineSnapshot, options?: PhysicsSettledEvidenceOptions): PhysicsSettledEvidence;
@@ -201,6 +201,7 @@ export declare class PhysicsKernelWorld {
201
201
  private resolveStaticCollision;
202
202
  private updateSensors;
203
203
  private updateSleeping;
204
+ private contactOpposesGravity;
204
205
  private wake;
205
206
  /** Uses the deterministic PRNG for future jittered spawn helpers. */
206
207
  nextRandom(): number;