semiotic 3.7.5 → 3.8.0

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 (481) hide show
  1. package/CLAUDE.md +54 -12
  2. package/README.md +121 -27
  3. package/agent-skill/semiotic-charts/SKILL.md +146 -0
  4. package/ai/cli.js +133 -45
  5. package/ai/componentMetadata.cjs +6 -1
  6. package/ai/dist/mcp-server.js +1651 -154
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +200 -0
  10. package/ai/system-prompt.md +18 -3
  11. package/dist/components/CategoryColors.d.ts +1 -1
  12. package/dist/components/ChartContainer.d.ts +91 -0
  13. package/dist/components/ChartGrid.d.ts +11 -1
  14. package/dist/components/CircularBrush.d.ts +61 -0
  15. package/dist/components/ContextLayout.d.ts +5 -1
  16. package/dist/components/DirectManipulationControl.d.ts +63 -0
  17. package/dist/components/LinkedCharts.d.ts +3 -1
  18. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  19. package/dist/components/MobileChartContainer.d.ts +51 -0
  20. package/dist/components/MobileStandardControls.d.ts +68 -0
  21. package/dist/components/SmallMultipleChart.d.ts +84 -0
  22. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  23. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  24. package/dist/components/ai/IntentMark.d.ts +15 -0
  25. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  26. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  27. package/dist/components/ai/chartClinic.d.ts +91 -0
  28. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  29. package/dist/components/ai/chartRecipes.d.ts +278 -0
  30. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  31. package/dist/components/ai/describeChart.d.ts +7 -0
  32. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  33. package/dist/components/ai/generativeChart.d.ts +28 -3
  34. package/dist/components/ai/intentManifest.d.ts +62 -0
  35. package/dist/components/ai/navigationTree.d.ts +3 -0
  36. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  37. package/dist/components/ai/readerGrounding.d.ts +83 -0
  38. package/dist/components/ai/recipeCapability.d.ts +8 -0
  39. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  40. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  41. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  42. package/dist/components/ai/suggestCharts.d.ts +11 -1
  43. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  44. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  45. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  46. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  47. package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
  48. package/dist/components/charts/geo/FlowMap.d.ts +1 -1
  49. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +1 -1
  50. package/dist/components/charts/geo/index.d.ts +2 -0
  51. package/dist/components/charts/index.d.ts +29 -1
  52. package/dist/components/charts/network/ChordDiagram.d.ts +1 -1
  53. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  54. package/dist/components/charts/network/ForceDirectedGraph.d.ts +15 -5
  55. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  56. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  57. package/dist/components/charts/network/SankeyDiagram.d.ts +1 -1
  58. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  59. package/dist/components/charts/network/Treemap.d.ts +1 -1
  60. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  61. package/dist/components/charts/ordinal/BarChart.d.ts +1 -1
  62. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  63. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  64. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  65. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  66. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -1
  67. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  68. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  69. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  70. package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -1
  71. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  72. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  73. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  74. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  75. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  76. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +47 -0
  77. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  78. package/dist/components/charts/physics/EventDropChart.d.ts +53 -0
  79. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  80. package/dist/components/charts/physics/GaltonBoardChart.d.ts +66 -0
  81. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  83. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  85. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +120 -0
  86. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  87. package/dist/components/charts/physics/PhysicsPileChart.d.ts +53 -0
  88. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  89. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  90. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  91. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  92. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  93. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  94. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  95. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  96. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  97. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  98. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  99. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  100. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  101. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  102. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  103. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  104. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  105. package/dist/components/charts/physics/physicsChartShared.d.ts +41 -0
  106. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  107. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  108. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  109. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  110. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  111. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  112. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  113. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  114. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  115. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  116. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  117. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  118. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  119. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  120. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  121. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  122. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  123. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  124. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  125. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  126. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  127. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  128. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  129. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  130. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  131. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  132. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +4 -0
  133. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  134. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  135. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  136. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  137. package/dist/components/charts/shared/hooks.d.ts +28 -5
  138. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  139. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  140. package/dist/components/charts/shared/streamPropsHelpers.d.ts +12 -2
  141. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  142. package/dist/components/charts/shared/types.d.ts +49 -1
  143. package/dist/components/charts/shared/useChartSetup.d.ts +9 -2
  144. package/dist/components/charts/shared/useCustomChartSetup.d.ts +14 -5
  145. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  146. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +1 -1
  147. package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
  148. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  149. package/dist/components/charts/shared/validationMap.d.ts +0 -11
  150. package/dist/components/charts/xy/AreaChart.d.ts +1 -1
  151. package/dist/components/charts/xy/BubbleChart.d.ts +1 -1
  152. package/dist/components/charts/xy/LineChart.d.ts +1 -1
  153. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  154. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  155. package/dist/components/charts/xy/QuadrantChart.d.ts +1 -1
  156. package/dist/components/charts/xy/Scatterplot.d.ts +1 -1
  157. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  158. package/dist/components/charts/xy/StackedAreaChart.d.ts +9 -4
  159. package/dist/components/controls/controlAudit.d.ts +24 -0
  160. package/dist/components/controls/controlContract.d.ts +57 -0
  161. package/dist/components/data/fromFlintChart.d.ts +74 -0
  162. package/dist/components/data/fromVegaLite.d.ts +27 -0
  163. package/dist/components/data/portability/index.d.ts +6 -3
  164. package/dist/components/data/portability/result.d.ts +52 -0
  165. package/dist/components/data/portability/spec.d.ts +31 -0
  166. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  167. package/dist/components/export/chartConfig.d.ts +11 -0
  168. package/dist/components/realtime/types.d.ts +11 -0
  169. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  170. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  171. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  172. package/dist/components/recipes/cyclical.d.ts +39 -0
  173. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  174. package/dist/components/recipes/forceLayout.d.ts +48 -0
  175. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  176. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  177. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  178. package/dist/components/recipes/gofishIR.d.ts +178 -132
  179. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  180. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  181. package/dist/components/recipes/intervals.d.ts +80 -0
  182. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  183. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  184. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  185. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  186. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  187. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  188. package/dist/components/recipes/physics.d.ts +122 -0
  189. package/dist/components/recipes/physicsReference.d.ts +102 -0
  190. package/dist/components/recipes/processAggregates.d.ts +32 -0
  191. package/dist/components/recipes/processChrome.d.ts +67 -0
  192. package/dist/components/recipes/processJourney.d.ts +54 -0
  193. package/dist/components/recipes/processPhysics.d.ts +300 -0
  194. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  195. package/dist/components/recipes/radialCoords.d.ts +69 -0
  196. package/dist/components/recipes/random.d.ts +2 -0
  197. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  198. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  199. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  200. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  201. package/dist/components/recipes/runs.d.ts +59 -0
  202. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  203. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  204. package/dist/components/recipes/unitize.d.ts +108 -0
  205. package/dist/components/recipes/vector.d.ts +28 -0
  206. package/dist/components/recipes/waffle.d.ts +43 -0
  207. package/dist/components/semiotic-ai-core.d.ts +47 -0
  208. package/dist/components/semiotic-ai.d.ts +50 -8
  209. package/dist/components/semiotic-controls.d.ts +18 -0
  210. package/dist/components/semiotic-experimental.d.ts +38 -9
  211. package/dist/components/semiotic-geo.d.ts +11 -0
  212. package/dist/components/semiotic-network.d.ts +11 -0
  213. package/dist/components/semiotic-ordinal.d.ts +8 -0
  214. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  215. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  216. package/dist/components/semiotic-physics.d.ts +56 -0
  217. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  218. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  219. package/dist/components/semiotic-realtime.d.ts +4 -30
  220. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  221. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  222. package/dist/components/semiotic-recipes.d.ts +4 -43
  223. package/dist/components/semiotic-server-edge.d.ts +8 -0
  224. package/dist/components/semiotic-server-node.d.ts +5 -0
  225. package/dist/components/semiotic-server.d.ts +2 -2
  226. package/dist/components/semiotic-themes-core.d.ts +53 -0
  227. package/dist/components/semiotic-themes-react.d.ts +4 -0
  228. package/dist/components/semiotic-themes.d.ts +6 -76
  229. package/dist/components/semiotic-utils-core.d.ts +46 -0
  230. package/dist/components/semiotic-utils-react.d.ts +5 -0
  231. package/dist/components/semiotic-utils.d.ts +3 -39
  232. package/dist/components/semiotic-xy.d.ts +8 -0
  233. package/dist/components/semiotic.d.ts +35 -7
  234. package/dist/components/server/animatedGif.d.ts +36 -0
  235. package/dist/components/server/renderEvidence.d.ts +1 -1
  236. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  237. package/dist/components/server/serverChartConfigShared.d.ts +17 -0
  238. package/dist/components/server/serverChartConfigs.d.ts +19 -9
  239. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  240. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  241. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  242. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  243. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  244. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  245. package/dist/components/server/staticGeo.d.ts +4 -0
  246. package/dist/components/server/staticLegend.d.ts +1 -1
  247. package/dist/components/server/staticNetwork.d.ts +8 -0
  248. package/dist/components/server/staticOrdinal.d.ts +11 -0
  249. package/dist/components/server/staticPhysics.d.ts +3 -0
  250. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  251. package/dist/components/server/staticXY.d.ts +4 -0
  252. package/dist/components/store/ObservationStore.d.ts +3 -2
  253. package/dist/components/store/themeSerialization.d.ts +32 -0
  254. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  255. package/dist/components/stream/AccessibleDataTable.d.ts +3 -13
  256. package/dist/components/stream/FocusRing.d.ts +4 -2
  257. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  258. package/dist/components/stream/GeoPipelineStore.d.ts +28 -0
  259. package/dist/components/stream/NetworkPipelineStore.d.ts +31 -26
  260. package/dist/components/stream/NetworkSVGOverlay.d.ts +4 -1
  261. package/dist/components/stream/OrdinalPipelineStore.d.ts +46 -2
  262. package/dist/components/stream/PipelineStore.d.ts +81 -170
  263. package/dist/components/stream/SceneGraph.d.ts +9 -1
  264. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  265. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  266. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  267. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  268. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  269. package/dist/components/stream/accessorUtils.d.ts +23 -10
  270. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  271. package/dist/components/stream/canvasBackground.d.ts +24 -0
  272. package/dist/components/stream/canvasSetup.d.ts +4 -1
  273. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  274. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  275. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  276. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  277. package/dist/components/stream/geoCartogram.d.ts +17 -0
  278. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  279. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  280. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  281. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  282. package/dist/components/stream/geoTypes.d.ts +56 -7
  283. package/dist/components/stream/glyphDef.d.ts +98 -0
  284. package/dist/components/stream/hitTarget.d.ts +170 -0
  285. package/dist/components/stream/hoverUtils.d.ts +3 -0
  286. package/dist/components/stream/keyboardNav.d.ts +4 -1
  287. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  288. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +57 -0
  289. package/dist/components/stream/networkBezier.d.ts +10 -0
  290. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  291. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  292. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  293. package/dist/components/stream/networkFramePaint.d.ts +43 -0
  294. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  295. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  296. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  297. package/dist/components/stream/networkTypes.d.ts +76 -5
  298. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  299. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  300. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  301. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  302. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +12 -0
  303. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  304. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  305. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  306. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  307. package/dist/components/stream/ordinalTypes.d.ts +40 -8
  308. package/dist/components/stream/paintNeeds.d.ts +31 -0
  309. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  310. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  311. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  312. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  313. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  314. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  315. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  316. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  317. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  318. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  319. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  320. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  321. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  322. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  323. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +84 -0
  324. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  325. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +72 -0
  326. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  327. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  328. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  329. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  330. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  331. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  332. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  333. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  334. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  335. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  336. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +302 -0
  337. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  338. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  339. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  340. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  341. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +9 -0
  342. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  343. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  344. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +16 -0
  345. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  346. package/dist/components/stream/pipelineConfig.d.ts +177 -0
  347. package/dist/components/stream/pipelineDecay.d.ts +20 -2
  348. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  349. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  350. package/dist/components/stream/pipelinePulse.d.ts +16 -2
  351. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  352. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  353. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +12 -0
  354. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  355. package/dist/components/stream/pipelineTransitions.d.ts +2 -0
  356. package/dist/components/stream/pipelineUpdateContract.d.ts +62 -0
  357. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  358. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  359. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  360. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +18 -0
  361. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  362. package/dist/components/stream/types.d.ts +135 -7
  363. package/dist/components/stream/useFrame.d.ts +21 -2
  364. package/dist/components/stream/useHydration.d.ts +6 -0
  365. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  366. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  367. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  368. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  370. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  371. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  372. package/dist/components/stream/xySceneBuilders/types.d.ts +4 -4
  373. package/dist/controls.min.js +2 -0
  374. package/dist/controls.module.min.js +2 -0
  375. package/dist/forceLayoutWorker.js +1 -0
  376. package/dist/geo.min.js +1 -1
  377. package/dist/geo.module.min.js +1 -1
  378. package/dist/network.min.js +1 -1
  379. package/dist/network.module.min.js +1 -1
  380. package/dist/ordinal.min.js +1 -1
  381. package/dist/ordinal.module.min.js +1 -1
  382. package/dist/physics-matter.min.js +1 -0
  383. package/dist/physics-matter.module.min.js +1 -0
  384. package/dist/physics-rapier.min.js +1 -0
  385. package/dist/physics-rapier.module.min.js +1 -0
  386. package/dist/physics.min.js +2 -0
  387. package/dist/physics.module.min.js +2 -0
  388. package/dist/physicsWorker.js +1 -0
  389. package/dist/realtime.min.js +1 -1
  390. package/dist/realtime.module.min.js +1 -1
  391. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  392. package/dist/semiotic-ai-core.d.ts +47 -0
  393. package/dist/semiotic-ai-core.min.js +1 -0
  394. package/dist/semiotic-ai-core.module.min.js +1 -0
  395. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  396. package/dist/semiotic-ai.d.ts +50 -8
  397. package/dist/semiotic-ai.min.js +1 -1
  398. package/dist/semiotic-ai.module.min.js +1 -1
  399. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  400. package/dist/semiotic-controls.d.ts +18 -0
  401. package/dist/semiotic-data.min.js +1 -1
  402. package/dist/semiotic-data.module.min.js +1 -1
  403. package/dist/semiotic-experimental.d.ts +38 -9
  404. package/dist/semiotic-experimental.min.js +1 -1
  405. package/dist/semiotic-experimental.module.min.js +1 -1
  406. package/dist/semiotic-geo.d.ts +11 -0
  407. package/dist/semiotic-network.d.ts +11 -0
  408. package/dist/semiotic-ordinal.d.ts +8 -0
  409. package/dist/semiotic-physics-matter.d.ts +10 -0
  410. package/dist/semiotic-physics-rapier.d.ts +9 -0
  411. package/dist/semiotic-physics.d.ts +56 -0
  412. package/dist/semiotic-realtime-core.d.ts +34 -0
  413. package/dist/semiotic-realtime-core.min.js +1 -0
  414. package/dist/semiotic-realtime-core.module.min.js +1 -0
  415. package/dist/semiotic-realtime-react.d.ts +10 -0
  416. package/dist/semiotic-realtime-react.min.js +2 -0
  417. package/dist/semiotic-realtime-react.module.min.js +2 -0
  418. package/dist/semiotic-realtime.d.ts +4 -30
  419. package/dist/semiotic-recipes-core.d.ts +92 -0
  420. package/dist/semiotic-recipes-core.min.js +1 -0
  421. package/dist/semiotic-recipes-core.module.min.js +1 -0
  422. package/dist/semiotic-recipes-react.d.ts +7 -0
  423. package/dist/semiotic-recipes-react.min.js +2 -0
  424. package/dist/semiotic-recipes-react.module.min.js +2 -0
  425. package/dist/semiotic-recipes.d.ts +4 -43
  426. package/dist/semiotic-recipes.min.js +1 -1
  427. package/dist/semiotic-recipes.module.min.js +1 -1
  428. package/dist/semiotic-server-edge.d.ts +8 -0
  429. package/dist/semiotic-server-edge.min.js +1 -0
  430. package/dist/semiotic-server-edge.module.min.js +1 -0
  431. package/dist/semiotic-server-node.d.ts +5 -0
  432. package/dist/semiotic-server-node.min.js +1 -0
  433. package/dist/semiotic-server-node.module.min.js +1 -0
  434. package/dist/semiotic-server.d.ts +2 -2
  435. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  436. package/dist/semiotic-themes-core.d.ts +53 -0
  437. package/dist/semiotic-themes-core.min.js +1 -0
  438. package/dist/semiotic-themes-core.module.min.js +1 -0
  439. package/dist/semiotic-themes-react.d.ts +4 -0
  440. package/dist/semiotic-themes-react.min.js +2 -0
  441. package/dist/semiotic-themes-react.module.min.js +2 -0
  442. package/dist/semiotic-themes.d.ts +6 -76
  443. package/dist/semiotic-themes.min.js +1 -2
  444. package/dist/semiotic-themes.module.min.js +1 -2
  445. package/dist/semiotic-utils-core.d.ts +46 -0
  446. package/dist/semiotic-utils-core.min.js +1 -0
  447. package/dist/semiotic-utils-core.module.min.js +1 -0
  448. package/dist/semiotic-utils-react.d.ts +5 -0
  449. package/dist/semiotic-utils-react.min.js +2 -0
  450. package/dist/semiotic-utils-react.module.min.js +2 -0
  451. package/dist/semiotic-utils.d.ts +3 -39
  452. package/dist/semiotic-utils.min.js +1 -2
  453. package/dist/semiotic-utils.module.min.js +1 -2
  454. package/dist/semiotic-value.min.js +1 -1
  455. package/dist/semiotic-value.module.min.js +1 -1
  456. package/dist/semiotic-xy.d.ts +8 -0
  457. package/dist/semiotic.d.ts +35 -7
  458. package/dist/semiotic.min.js +1 -1
  459. package/dist/semiotic.module.min.js +1 -1
  460. package/dist/server.min.js +1 -1
  461. package/dist/server.module.min.js +1 -1
  462. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  463. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  464. package/dist/xy.min.js +1 -1
  465. package/dist/xy.module.min.js +1 -1
  466. package/package.json +239 -87
  467. package/spec/README.md +152 -0
  468. package/spec/bindings/README.md +35 -0
  469. package/spec/bindings/vega-lite.mjs +112 -0
  470. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  471. package/spec/v0.1/audience-profile.schema.json +67 -0
  472. package/spec/v0.1/chart-capability.schema.json +186 -0
  473. package/dist/components/recipes/gofish.d.ts +0 -207
  474. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  475. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  476. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  477. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  478. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  479. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  480. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  481. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -1,16 +1,11 @@
1
1
  import type { Datum } from "./datumTypes";
2
- export interface Diagnosis {
3
- severity: "error" | "warning";
4
- code: string;
5
- message: string;
6
- fix: string;
7
- }
8
- export interface DiagnosisResult {
9
- ok: boolean;
10
- diagnoses: Diagnosis[];
11
- }
12
- /** WCAG contrast ratio between two hex colors. Exported for reuse by the
13
- * accessibility audit (auditAccessibility.ts) — single source of truth for the
14
- * contrast math. Returns null if either color isn't a parseable hex. */
15
- export declare function contrastRatio(hex1: string, hex2: string): number | null;
2
+ import type { DiagnosisResult } from "./diagnoseTypes";
3
+ export { contrastRatio } from "./colorContrast";
4
+ export type { Diagnosis, DiagnosisResult } from "./diagnoseTypes";
5
+ /**
6
+ * Run anti-pattern diagnostics on a Semiotic chart configuration.
7
+ *
8
+ * Returns actionable diagnoses with severity, code, message, and fix instruction.
9
+ * Runs validateProps internally — validation errors are included as diagnoses.
10
+ */
16
11
  export declare function diagnoseConfig(componentName: string, props: Datum): DiagnosisResult;
@@ -0,0 +1,9 @@
1
+ import type { Datum } from "./datumTypes";
2
+ import type { Diagnosis } from "./diagnoseTypes";
3
+ export declare function checkInvertedAxis(_component: string, props: Datum, out: Diagnosis[]): void;
4
+ export declare function checkDualAxisUnlabeled(component: string, props: Datum, out: Diagnosis[]): void;
5
+ export declare function checkCherryPickedWindow(component: string, props: Datum, out: Diagnosis[]): void;
6
+ export declare function checkPartToWholeNegative(component: string, props: Datum, out: Diagnosis[]): void;
7
+ export declare function checkNonPassingCurve(component: string, props: Datum, out: Diagnosis[]): void;
8
+ export declare function checkExtremeAspectRatio(component: string, props: Datum, out: Diagnosis[]): void;
9
+ export declare function checkPieTooManySlices(component: string, props: Datum, out: Diagnosis[]): void;
@@ -0,0 +1,3 @@
1
+ import type { Datum } from "./datumTypes";
2
+ import type { Diagnosis } from "./diagnoseTypes";
3
+ export declare function checkPhysicsConfig(component: string, props: Datum, out: Diagnosis[]): void;
@@ -0,0 +1,10 @@
1
+ export interface Diagnosis {
2
+ severity: "error" | "warning";
3
+ code: string;
4
+ message: string;
5
+ fix: string;
6
+ }
7
+ export interface DiagnosisResult {
8
+ ok: boolean;
9
+ diagnoses: Diagnosis[];
10
+ }
@@ -1,14 +1,25 @@
1
1
  import { createLegend } from "./legendUtils";
2
2
  import type { SelectionHookResult } from "./selectionUtils";
3
3
  import type { OnObservationCallback } from "../../store/ObservationStore";
4
- import type { Accessor, SelectionConfig, LinkedHoverProp, ChartMode, HoverHighlightMode } from "./types";
4
+ import type { Accessor, SelectionConfig, LinkedHoverProp, ChartMode, HoverHighlightMode, MobileInteractionProp, ResolvedMobileInteractionConfig } from "./types";
5
5
  import type { MarginType, PartialMargin } from "../../types/marginType";
6
6
  import type { TransitionConfig } from "../../stream/types";
7
7
  import type { Datum } from "./datumTypes";
8
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
9
+ import type { ResponsiveRule } from "./responsiveRules";
8
10
  /**
9
11
  * Default fill color used when no colorBy is specified
10
12
  */
11
13
  export declare const DEFAULT_COLOR = "#007bff";
14
+ export declare const MOBILE_INTERACTION_TARGET_SIZE = 44;
15
+ export declare const MOBILE_INTERACTION_MIN_HIT_RADIUS = 24;
16
+ export declare const MOBILE_INTERACTION_DEFAULTS: ResolvedMobileInteractionConfig;
17
+ export declare const DISABLED_MOBILE_INTERACTION: ResolvedMobileInteractionConfig;
18
+ export declare function resolveMobileInteraction(input: MobileInteractionProp | undefined, context?: {
19
+ mode?: ChartMode;
20
+ width?: number;
21
+ mobileSemantics?: MobileVisualizationContract;
22
+ }): ResolvedMobileInteractionConfig;
12
23
  /**
13
24
  * Returns the theme's categorical palette, or undefined if no ThemeProvider or
14
25
  * the palette is empty. Safe to call outside a ThemeProvider (returns undefined).
@@ -30,7 +41,7 @@ export declare function useThemeDiverging(): string | undefined;
30
41
  * Priority: color prop > theme categorical > colorScheme > DEFAULT_COLOR.
31
42
  * When a palette is available, cycles through colors by category name.
32
43
  */
33
- export declare function resolveDefaultFill(color: string | undefined, themeCategorical: string[] | undefined, colorScheme: string | string[] | undefined, category: string | undefined, categoryIndexMap: Map<string, number>): string;
44
+ export declare function resolveDefaultFill(color: string | undefined, themeCategorical: string[] | undefined, colorScheme: string | string[] | Record<string, string> | undefined, category: string | undefined, categoryIndexMap: Map<string, number>): string;
34
45
  /**
35
46
  * Resolve an accessor (string key or function) into a function.
36
47
  * Used across chart components to normalize `valueAccessor`, `categoryAccessor`, etc.
@@ -41,7 +52,7 @@ export declare function resolveAccessor<T = any>(accessor: string | ((d: Datum,
41
52
  * Returns undefined when colorBy is absent or data is empty (push API mode).
42
53
  * Supports both string and function accessors for colorBy.
43
54
  */
44
- export declare function useColorScale(data: Array<Datum>, colorBy: string | ((d: any, i?: number) => any) | undefined, colorScheme?: string | string[]): ((v: string) => string) | undefined;
55
+ export declare function useColorScale(data: Array<Datum>, colorBy: string | ((d: any, i?: number) => any) | undefined, colorScheme?: string | string[] | Record<string, string>): ((v: string) => string) | undefined;
45
56
  /**
46
57
  * Hook to sort data by a value accessor.
47
58
  * Used by BarChart and DotPlot.
@@ -64,7 +75,7 @@ export declare function useSortedData(data: Array<Datum>, sort: boolean | "asc"
64
75
  * @param unwrapData - Deprecated / no-op. Hover data is always unwrapped
65
76
  * (stream frames wrap the raw datum in { data, time, value, x, y }).
66
77
  */
67
- export declare function useChartSelection({ selection, linkedHover, fallbackFields, unwrapData: _unwrapData, onObservation, chartType, chartId, onClick, hoverHighlight, colorByField, }: {
78
+ export declare function useChartSelection({ selection, linkedHover, fallbackFields, unwrapData: _unwrapData, onObservation, chartType, chartId, onClick, hoverHighlight, colorByField, mobileInteraction, }: {
68
79
  selection?: SelectionConfig;
69
80
  linkedHover?: LinkedHoverProp;
70
81
  fallbackFields?: string[];
@@ -78,6 +89,7 @@ export declare function useChartSelection({ selection, linkedHover, fallbackFiel
78
89
  }) => void;
79
90
  hoverHighlight?: HoverHighlightMode;
80
91
  colorByField?: string;
92
+ mobileInteraction?: ResolvedMobileInteractionConfig;
81
93
  }): {
82
94
  activeSelectionHook: SelectionHookResult | null;
83
95
  hoverSelectionHook: SelectionHookResult | null;
@@ -161,8 +173,15 @@ interface ChartModeInput {
161
173
  valueLabel?: string;
162
174
  /** When truthy, enableHover is forced true regardless of mode (LinkedCharts needs hover) */
163
175
  linkedHover?: any;
176
+ /** Optional mobile interaction policy surfaced through useChartMode for custom wrappers. */
177
+ mobileInteraction?: MobileInteractionProp;
178
+ /** Optional mobile semantic contract surfaced through useChartMode for custom wrappers. */
179
+ mobileSemantics?: MobileVisualizationContract;
180
+ /** Semantic responsive transformations resolved before mode defaults. */
181
+ responsiveRules?: ResponsiveRule[];
164
182
  }
165
- interface ChartModeResult {
183
+ /** Result of {@link useChartMode} — exported so declaration emit can name it. */
184
+ export interface ChartModeResult {
166
185
  width: number;
167
186
  height: number;
168
187
  showAxes: boolean;
@@ -186,6 +205,10 @@ interface ChartModeResult {
186
205
  };
187
206
  /** True when mode is context or sparkline — the "hide interactive chrome" union. */
188
207
  compactMode: boolean;
208
+ /** Resolved touch-first behavior for mobile-capable wrappers. */
209
+ mobileInteraction: ResolvedMobileInteractionConfig;
210
+ /** Mobile semantic contract after matching responsive rules are applied. */
211
+ mobileSemantics: MobileVisualizationContract | undefined;
189
212
  }
190
213
  /**
191
214
  * Resolve chart display mode into concrete prop defaults.
@@ -0,0 +1,145 @@
1
+ import type { Datum } from "./datumTypes";
2
+ import { type LifecycleBand, type LifecycleBandThresholds } from "../../realtime/lifecycleBands";
3
+ /** Explicit literal wrapper for channels whose values could be field names. */
4
+ export interface MotionEncodingConstant<TValue> {
5
+ constant: TValue;
6
+ }
7
+ /** A motion channel can read a field, calculate a value, or use a constant. */
8
+ export type MotionEncodingAccessor<TDatum, TValue> = keyof TDatum | ((datum: TDatum, index: number) => TValue) | MotionEncodingConstant<TValue>;
9
+ /** The clock that gives an arrival or age value meaning. */
10
+ export type MotionTimeBasis = "event" | "ingest" | "simulation" | "presentation" | "buffer-index";
11
+ /** Motion helpers do not convert units; related values must use the same unit. */
12
+ export type MotionTimeUnit = "milliseconds" | "seconds" | "frames" | "index";
13
+ /** Coordinate system in which placement or velocity values are expressed. */
14
+ export type MotionCoordinateSpace = "data" | "world" | "screen";
15
+ export interface MotionTimeEncoding<TDatum> {
16
+ /** Time at which the datum enters the represented system. */
17
+ arrival?: MotionEncodingAccessor<TDatum, number>;
18
+ basis?: MotionTimeBasis;
19
+ unit?: MotionTimeUnit;
20
+ }
21
+ export interface MotionPlacementEncoding<TDatum> {
22
+ x?: MotionEncodingAccessor<TDatum, number>;
23
+ y?: MotionEncodingAccessor<TDatum, number>;
24
+ lane?: MotionEncodingAccessor<TDatum, string | number>;
25
+ space?: MotionCoordinateSpace;
26
+ }
27
+ export interface MotionKinematicsEncoding<TDatum> {
28
+ velocityX?: MotionEncodingAccessor<TDatum, number>;
29
+ velocityY?: MotionEncodingAccessor<TDatum, number>;
30
+ space?: MotionCoordinateSpace;
31
+ }
32
+ export interface MotionProcessEncoding<TDatum> {
33
+ group?: MotionEncodingAccessor<TDatum, string | number>;
34
+ stage?: MotionEncodingAccessor<TDatum, string | number>;
35
+ target?: MotionEncodingAccessor<TDatum, string | number>;
36
+ work?: MotionEncodingAccessor<TDatum, number>;
37
+ }
38
+ export interface MotionAccessibleEncoding<TDatum> {
39
+ description?: MotionEncodingAccessor<TDatum, string>;
40
+ group?: MotionEncodingAccessor<TDatum, string>;
41
+ label?: MotionEncodingAccessor<TDatum, string>;
42
+ }
43
+ /** Runtime-neutral motion channels shared by streaming and physics adapters. */
44
+ export interface MotionEncoding<TDatum extends Datum = Datum> {
45
+ id: MotionEncodingAccessor<TDatum, string | number>;
46
+ time?: MotionTimeEncoding<TDatum>;
47
+ placement?: MotionPlacementEncoding<TDatum>;
48
+ kinematics?: MotionKinematicsEncoding<TDatum>;
49
+ process?: MotionProcessEncoding<TDatum>;
50
+ evidence?: Record<string, MotionEncodingAccessor<TDatum, unknown>>;
51
+ accessible?: MotionAccessibleEncoding<TDatum>;
52
+ }
53
+ export interface ResolvedMotionEncodingRow<TDatum extends Datum = Datum> {
54
+ id: string;
55
+ datum: TDatum;
56
+ time: {
57
+ arrival?: number;
58
+ basis?: MotionTimeBasis;
59
+ unit?: MotionTimeUnit;
60
+ };
61
+ placement: {
62
+ x?: number;
63
+ y?: number;
64
+ lane?: string | number;
65
+ space?: MotionCoordinateSpace;
66
+ };
67
+ kinematics: {
68
+ velocityX?: number;
69
+ velocityY?: number;
70
+ space?: MotionCoordinateSpace;
71
+ };
72
+ process: {
73
+ group?: string | number;
74
+ stage?: string | number;
75
+ target?: string | number;
76
+ work?: number;
77
+ };
78
+ evidence: Record<string, unknown>;
79
+ accessible: {
80
+ description?: string;
81
+ group?: string;
82
+ label: string;
83
+ };
84
+ }
85
+ export interface MotionEncodingCompilation<TDatum extends Datum = Datum> {
86
+ rows: ResolvedMotionEncodingRow<TDatum>[];
87
+ byId: Map<string, ResolvedMotionEncodingRow<TDatum>>;
88
+ }
89
+ export interface CompileMotionEncodingOptions<TDatum extends Datum = Datum> {
90
+ data: readonly TDatum[];
91
+ encoding: MotionEncoding<TDatum>;
92
+ }
93
+ /** Resolve one encoding accessor without attaching it to a specific runtime. */
94
+ export declare function resolveMotionAccessor<TDatum, TValue>(accessor: MotionEncodingAccessor<TDatum, TValue> | undefined, datum: TDatum, index: number): TValue | undefined;
95
+ /** Resolve runtime-neutral motion channels once while preserving source data. */
96
+ export declare function compileMotionEncoding<TDatum extends Datum = Datum>(options: CompileMotionEncodingOptions<TDatum>): MotionEncodingCompilation<TDatum>;
97
+ export interface ResolveMotionAgeOptions {
98
+ now: number;
99
+ arrival: number;
100
+ /** Uses the same unit as now and arrival. */
101
+ ttl: number;
102
+ thresholds?: LifecycleBandThresholds;
103
+ }
104
+ export interface ResolvedMotionAge {
105
+ age: number;
106
+ /** Unbounded age / ttl ratio. Negative and invalid ages resolve to zero. */
107
+ progress: number;
108
+ lifecycle: LifecycleBand;
109
+ }
110
+ /**
111
+ * Derive age, its unbounded ttl progress, and its named lifecycle band from
112
+ * values on a common clock — the one-call helper for authoring custom
113
+ * age-based encodings (see the Motion Encodings guide, which drives an "age +
114
+ * lifecycle" table from it). For band-only or ramp-only needs, reach for
115
+ * `bandFromAge` / `opacityFromAge` directly.
116
+ */
117
+ export declare function resolveMotionAge(options: ResolveMotionAgeOptions): ResolvedMotionAge;
118
+ export type MotionAgeOpacityType = "linear" | "exponential" | "step";
119
+ export interface MotionAgeOpacityOptions {
120
+ /** Age where zero is newest. */
121
+ age: number;
122
+ /** Oldest meaningful age in the same unit. */
123
+ extent: number;
124
+ type: MotionAgeOpacityType;
125
+ halfLife?: number;
126
+ threshold?: number;
127
+ minOpacity?: number;
128
+ }
129
+ /** Map an age to opacity without assuming wall, simulation, or index time. */
130
+ export declare function opacityFromAge(options: MotionAgeOpacityOptions): number;
131
+ export interface MotionPoint {
132
+ x: number;
133
+ y: number;
134
+ }
135
+ export interface ResolvedMotionVector {
136
+ velocityX: number;
137
+ velocityY: number;
138
+ speed: number;
139
+ /** atan2 angle in radians in the supplied coordinate space. */
140
+ direction: number;
141
+ }
142
+ /** Resolve cartesian velocity into speed and direction. */
143
+ export declare function resolveMotionVector(velocityX: number, velocityY: number): ResolvedMotionVector;
144
+ /** Derive velocity per elapsed unit between two positions. */
145
+ export declare function deriveMotionVector(previous: MotionPoint, current: MotionPoint, elapsed: number): ResolvedMotionVector;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Responsive visualization rule grammar.
3
+ *
4
+ * This is deliberately chart-semantic, not CSS. A rule says "when this chart
5
+ * slot is narrow, transform the chart props this way" so agents, recipes,
6
+ * audits, and future HOC runtime wiring can reason about the mobile variant
7
+ * without executing a renderer.
8
+ */
9
+ export type ResponsiveOrientation = "portrait" | "landscape";
10
+ export interface ResponsiveRuleCondition {
11
+ minWidth?: number;
12
+ maxWidth?: number;
13
+ minHeight?: number;
14
+ maxHeight?: number;
15
+ minAspectRatio?: number;
16
+ maxAspectRatio?: number;
17
+ orientation?: ResponsiveOrientation;
18
+ }
19
+ export interface ResponsiveRuleContext {
20
+ width: number;
21
+ height?: number;
22
+ }
23
+ export interface ResponsiveRule<TProps extends Record<string, unknown> = Record<string, unknown>> {
24
+ id?: string;
25
+ description?: string;
26
+ /**
27
+ * Viewport/container condition. All supplied predicates must match.
28
+ */
29
+ when: ResponsiveRuleCondition;
30
+ /**
31
+ * Shallow prop transform to apply when the condition matches. Nested
32
+ * `margin`, `frameProps`, `mobileSemantics`, `style`, and `className` are
33
+ * merged by `resolveResponsiveRules`; other keys replace the base value.
34
+ */
35
+ transform: Partial<TProps> & Record<string, unknown>;
36
+ /**
37
+ * Higher priority applies later and wins on conflicts. Defaults to source
38
+ * order when omitted.
39
+ */
40
+ priority?: number;
41
+ }
42
+ export interface ResponsiveRuleMatch<TProps extends Record<string, unknown> = Record<string, unknown>> {
43
+ rule: ResponsiveRule<TProps>;
44
+ index: number;
45
+ }
46
+ export interface ResponsiveRuleResult<TProps extends Record<string, unknown> = Record<string, unknown>> {
47
+ props: TProps;
48
+ matches: ResponsiveRuleMatch<TProps>[];
49
+ }
50
+ export declare function responsiveRuleMatches(rule: ResponsiveRule, context: ResponsiveRuleContext): boolean;
51
+ /**
52
+ * Resolve matching responsive rules into a transformed prop object. Pure and
53
+ * SSR-safe. Runtime HOCs can call this with measured container dimensions;
54
+ * agents and audits can call it with target phone widths.
55
+ */
56
+ export declare function resolveResponsiveRules<TProps extends Record<string, unknown>>(props: TProps, context: ResponsiveRuleContext, rules?: ReadonlyArray<ResponsiveRule<TProps>> | undefined): ResponsiveRuleResult<TProps>;
@@ -2,7 +2,7 @@ import type { ReactNode } from "react";
2
2
  import type { Datum } from "./datumTypes";
3
3
  import { type TooltipProp } from "../../Tooltip/Tooltip";
4
4
  import type { HoverData } from "../../realtime/types";
5
- import type { HoverHighlightMode, LinkedHoverProp, SelectionConfig } from "./types";
5
+ import type { HoverHighlightMode, LinkedHoverProp, SelectionConfig, ResolvedMobileInteractionConfig } from "./types";
6
6
  import type { OnObservationCallback } from "../../store/ObservationStore";
7
7
  import type { AnimateProp } from "../../stream/pipelineTransitionUtils";
8
8
  import type { AutoPlaceAnnotations } from "../../recipes/annotationLayout";
@@ -65,20 +65,29 @@ export declare function buildBaseMetadataProps(input: BaseMetadataProps): BaseMe
65
65
  * - `customClickBehavior` mirrors the click-driving subset
66
66
  * (`onObservation`, `onClick`, `linkedHover` for cross-chart
67
67
  * selection lock).
68
+ * - `forceHoverBehavior` / `forceClickBehavior` let composed or
69
+ * adapter charts (realtime, matrix cells, custom payload mappers)
70
+ * keep their chart-specific callback shape while sharing the same
71
+ * mobile predicates and touch-radius plumbing.
68
72
  *
69
73
  * Returning the props as a spreadable object means HOCs that don't
70
74
  * need either get an empty merge that adds nothing.
71
75
  */
72
76
  export declare function buildCustomBehaviorProps(input: {
73
77
  linkedHover?: LinkedHoverProp;
78
+ selection?: SelectionConfig;
74
79
  onObservation?: OnObservationCallback;
75
80
  onClick?: ((datum: Datum, position: {
76
81
  x: number;
77
82
  y: number;
78
83
  }) => void) | undefined;
84
+ hoverRadius?: number;
79
85
  hoverHighlight?: HoverHighlightMode;
86
+ forceHoverBehavior?: boolean;
87
+ forceClickBehavior?: boolean;
88
+ mobileInteraction?: ResolvedMobileInteractionConfig;
80
89
  customHoverBehavior: (d: Datum | null) => void;
81
- customClickBehavior: (d: Datum | null) => void;
90
+ customClickBehavior?: (d: Datum | null) => void;
82
91
  /**
83
92
  * Whether `linkedHover` participates in the click predicate. Most
84
93
  * XY / ordinal HOCs say yes — `linkedHover` cross-chart selection
@@ -91,6 +100,7 @@ export declare function buildCustomBehaviorProps(input: {
91
100
  }): {
92
101
  customHoverBehavior?: (d: Datum | null) => void;
93
102
  customClickBehavior?: (d: Datum | null) => void;
103
+ hoverRadius?: number;
94
104
  };
95
105
  /**
96
106
  * Resolve the `tooltipContent` prop for the frame.
@@ -0,0 +1,7 @@
1
+ import type { Datum } from "./datumTypes";
2
+ export declare function parseDateLikeString(value: string): number;
3
+ export declare function coerceDateLikeValue(value: unknown): number;
4
+ export declare function coerceTemporalStringRows(data: Datum[] | undefined, fieldName: string | undefined): {
5
+ data: Datum[] | undefined;
6
+ failed: boolean;
7
+ };
@@ -4,6 +4,8 @@ import type { OnObservationCallback } from "../../store/ObservationStore";
4
4
  import type { AnimateProp } from "../../stream/pipelineTransitionUtils";
5
5
  import type { Datum } from "./datumTypes";
6
6
  import type { AutoPlaceAnnotations } from "../../recipes/annotationLayout";
7
+ import type { ResponsiveRule } from "./responsiveRules";
8
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
7
9
  /**
8
10
  * Selection consumption config — makes this chart react to a named selection
9
11
  */
@@ -44,7 +46,7 @@ export type LinkedBrushProp = string | {
44
46
  * Chart display mode — controls default chrome, size, and interaction.
45
47
  * User-provided props always override mode defaults.
46
48
  */
47
- export type ChartMode = "primary" | "context" | "sparkline";
49
+ export type ChartMode = "primary" | "context" | "sparkline" | "mobile";
48
50
  /**
49
51
  * Hover highlighting mode.
50
52
  * `true` and `"series"` both dim non-hovered series/categories; the string
@@ -52,6 +54,46 @@ export type ChartMode = "primary" | "context" | "sparkline";
52
54
  * more explicit per-series mode.
53
55
  */
54
56
  export type HoverHighlightMode = boolean | "series";
57
+ export type MobileClearSelectionBehavior = "backgroundTap" | "none";
58
+ export type MobileSnapBehavior = "nearestDatum" | "none";
59
+ export type MobileStandardControlKind = "brush" | "zoom" | "legend";
60
+ export type MobileStandardControlsMode = boolean | "all" | MobileStandardControlKind | MobileStandardControlKind[];
61
+ /**
62
+ * Touch-first interaction policy for phone-sized chart slots.
63
+ *
64
+ * This is intentionally shared by built-in charts, custom charts, audits, and
65
+ * generated/interoperable chart manifests so mobile behavior is not a
66
+ * second-class per-component escape hatch.
67
+ */
68
+ export interface MobileInteractionConfig {
69
+ /** Explicitly enable or disable mobile interaction for an object config. */
70
+ enabled?: boolean;
71
+ /** Convert tap/click on a datum into a persistent selection when possible. */
72
+ tapToSelect?: boolean;
73
+ /** Convert hover-linked detail into a tap-lockable state on touch devices. */
74
+ tapToLockTooltip?: boolean;
75
+ /** Clear the mobile interaction state when the frame reports a background tap. */
76
+ clearSelection?: MobileClearSelectionBehavior;
77
+ /** Comfortable touch target in CSS pixels. Defaults to 44 when mobile is active. */
78
+ targetSize?: number;
79
+ /** Hit-testing strategy for imprecise touch input. */
80
+ snap?: MobileSnapBehavior;
81
+ /** Preferred brush handle size in CSS pixels for mobile brush affordances. */
82
+ brushHandleSize?: number;
83
+ /** Signals that a brush/zoom/legend gesture has a standard-control alternative. */
84
+ standardControls?: MobileStandardControlsMode;
85
+ }
86
+ export type MobileInteractionProp = boolean | MobileInteractionConfig;
87
+ export interface ResolvedMobileInteractionConfig {
88
+ enabled: boolean;
89
+ tapToSelect: boolean;
90
+ tapToLockTooltip: boolean;
91
+ clearSelection: MobileClearSelectionBehavior;
92
+ targetSize: number;
93
+ snap: MobileSnapBehavior;
94
+ brushHandleSize: number;
95
+ standardControls: MobileStandardControlsMode;
96
+ }
55
97
  /**
56
98
  * Base props shared across all chart components
57
99
  */
@@ -72,6 +114,12 @@ export interface BaseChartProps {
72
114
  responsiveWidth?: boolean;
73
115
  /** Auto-match height to parent container (requires parent with explicit height). Default: false */
74
116
  responsiveHeight?: boolean;
117
+ /** Semantic responsive transformations keyed by measured chart slot, not CSS alone. */
118
+ responsiveRules?: ResponsiveRule[];
119
+ /** Phone/mobile contract consumed by audits, recipes, adapters, and agents. */
120
+ mobileSemantics?: MobileVisualizationContract;
121
+ /** Touch-first interaction policy for phone-sized chart slots. */
122
+ mobileInteraction?: MobileInteractionProp;
75
123
  /** CSS class name for the chart container */
76
124
  className?: string;
77
125
  /** Chart title displayed at the top */
@@ -1,7 +1,8 @@
1
1
  import type { Datum } from "./datumTypes";
2
2
  import { useChartLegendAndMargin, useLegendInteraction, DEFAULT_COLOR } from "./hooks";
3
3
  import type { LegendInteractionMode, LegendPosition } from "./hooks";
4
- import type { Accessor, SelectionConfig, LinkedHoverProp, HoverHighlightMode } from "./types";
4
+ import type { Accessor, SelectionConfig, LinkedHoverProp, HoverHighlightMode, MobileInteractionProp, ResolvedMobileInteractionConfig } from "./types";
5
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
5
6
  import type { OnObservationCallback } from "../../store/ObservationStore";
6
7
  import type { PartialMargin } from "../../types/marginType";
7
8
  import type { SelectionHookResult } from "./selectionUtils";
@@ -21,7 +22,7 @@ export interface ChartSetupInput {
21
22
  /** The color-by accessor (may be an "actual" colorBy derived from stackBy/groupBy/categoryAccessor) */
22
23
  colorBy: Accessor<string> | undefined;
23
24
  /** Color scheme name or custom array — undefined lets useColorScale consult the theme */
24
- colorScheme: string | string[] | undefined;
25
+ colorScheme: string | string[] | Record<string, string> | undefined;
25
26
  /** Legend interaction mode */
26
27
  legendInteraction: LegendInteractionMode | undefined;
27
28
  /** Legend position override */
@@ -58,6 +59,10 @@ export interface ChartSetupInput {
58
59
  }) => void;
59
60
  /** Dim non-hovered series on data mark hover */
60
61
  hoverHighlight?: HoverHighlightMode;
62
+ /** Touch-first interaction policy for phone-sized chart slots */
63
+ mobileInteraction?: MobileInteractionProp;
64
+ /** Mobile semantic contract for generated/audited/mobile-aware chart behavior */
65
+ mobileSemantics?: MobileVisualizationContract;
61
66
  /** Loading state */
62
67
  loading: boolean | undefined;
63
68
  /** Custom content rendered in place of the default skeleton while `loading` is true. */
@@ -95,6 +100,8 @@ export interface ChartSetupResult {
95
100
  customHoverBehavior: (d: Datum | null) => void;
96
101
  /** Custom click behavior callback for the frame */
97
102
  customClickBehavior: (d: Datum | null) => void;
103
+ /** Resolved touch-first policy for chart wrappers and stream-prop helpers */
104
+ mobileInteraction: ResolvedMobileInteractionConfig;
98
105
  /** Legend config (or undefined if no legend) */
99
106
  legend: ReturnType<typeof useChartLegendAndMargin>["legend"];
100
107
  /** Computed margin with legend-aware adjustments */
@@ -1,7 +1,9 @@
1
1
  import type { Ref, RefObject, ReactElement, ReactNode } from "react";
2
2
  import { useChartMode } from "./hooks";
3
3
  import { type ChartSetupResult } from "./useChartSetup";
4
- import type { ChartMode, SelectionConfig, LinkedHoverProp } from "./types";
4
+ import type { Accessor, ChartMode, SelectionConfig, LinkedHoverProp, MobileInteractionProp } from "./types";
5
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
6
+ import type { ResponsiveRule } from "./responsiveRules";
5
7
  import type { OnObservationCallback } from "../../store/ObservationStore";
6
8
  import { type PartialMargin, type MarginType } from "../../types/marginType";
7
9
  import type { Datum } from "./datumTypes";
@@ -17,7 +19,7 @@ interface ScaffoldOptions {
17
19
  /** Ref forwarded by the HOC. The hook binds the imperative handle internally. */
18
20
  imperativeRef: Ref<RealtimeFrameHandle> | undefined;
19
21
  /** Which `useFrameImperativeHandle` variant to bind. XY/ordinal frames share "xy". */
20
- imperativeVariant: "xy" | "network";
22
+ imperativeVariant: "xy" | "network" | "geo-points";
21
23
  /** Margin shorthand or sided form from the HOC's `margin` prop. */
22
24
  margin: PartialMargin | undefined;
23
25
  width?: number;
@@ -26,6 +28,9 @@ interface ScaffoldOptions {
26
28
  enableHover?: boolean;
27
29
  showLegend?: boolean;
28
30
  title?: string;
31
+ mobileInteraction?: MobileInteractionProp;
32
+ mobileSemantics?: MobileVisualizationContract;
33
+ responsiveRules?: ResponsiveRule[];
29
34
  mode?: ChartMode;
30
35
  xLabel?: string;
31
36
  yLabel?: string;
@@ -39,7 +44,7 @@ interface ScaffoldResult<TFrameHandle> {
39
44
  normalizedMargin: Partial<MarginType> | undefined;
40
45
  }
41
46
  /**
42
- * Scaffold shared by all three custom-layout HOCs: imperative-handle
47
+ * Scaffold shared by all four custom-layout HOCs: imperative-handle
43
48
  * binding, chart-mode resolution, margin normalization. Network HOCs
44
49
  * stop here; data-shaped HOCs layer `useChartSetup` on top via
45
50
  * `useCustomChartSetup`.
@@ -53,15 +58,19 @@ interface DataSetupOptions extends ScaffoldOptions {
53
58
  /** Whether the hover callback should unwrap the datum (ordinal/network = true, XY = false). */
54
59
  unwrapData: boolean;
55
60
  /** Color scheme threaded into useChartSetup's color resolution. */
56
- colorScheme?: string | string[];
61
+ colorScheme?: string | string[] | Record<string, string>;
62
+ /** Semantic color accessor for legend, linked-hover series mode, and frame color config. */
63
+ colorBy?: Accessor<string>;
57
64
  /** Pass-through chart-setup inputs. */
58
65
  selection?: SelectionConfig;
59
66
  linkedHover?: LinkedHoverProp;
60
67
  onObservation?: OnObservationCallback;
61
- onClick?: (datum: any, ev: {
68
+ onClick?: (datum: Datum, ev: {
62
69
  x: number;
63
70
  y: number;
64
71
  }) => void;
72
+ mobileInteraction?: MobileInteractionProp;
73
+ mobileSemantics?: MobileVisualizationContract;
65
74
  chartId?: string;
66
75
  loading?: boolean;
67
76
  loadingContent?: ReactNode | false;
@@ -1,6 +1,7 @@
1
1
  import type { ReactNode, ReactElement } from "react";
2
2
  import type { Datum } from "./datumTypes";
3
- import type { Accessor, ChartAccessor, SelectionConfig, LinkedHoverProp } from "./types";
3
+ import type { Accessor, ChartAccessor, SelectionConfig, LinkedHoverProp, MobileInteractionProp, ResolvedMobileInteractionConfig } from "./types";
4
+ import type { MobileVisualizationContract } from "./auditMobileVisualization";
4
5
  import type { OnObservationCallback } from "../../store/ObservationStore";
5
6
  import type { PartialMargin, MarginType } from "../../types/marginType";
6
7
  import { useChartSelection, useChartLegendAndMargin } from "./hooks";
@@ -23,7 +24,7 @@ export interface NetworkChartSetupInput<TNode extends Datum = Datum, TEdge exten
23
24
  /** Edge target accessor (used by `inferNodesFromEdges`). */
24
25
  targetAccessor?: ChartAccessor<TEdge, string>;
25
26
  colorBy?: Accessor<string>;
26
- colorScheme?: string | string[];
27
+ colorScheme?: string | string[] | Record<string, string>;
27
28
  /** `undefined` defaults to "auto" (on when colorBy is set). */
28
29
  showLegend?: boolean;
29
30
  legendPosition?: LegendPosition;
@@ -35,6 +36,8 @@ export interface NetworkChartSetupInput<TNode extends Datum = Datum, TEdge exten
35
36
  x: number;
36
37
  y: number;
37
38
  }) => void;
39
+ mobileInteraction?: MobileInteractionProp;
40
+ mobileSemantics?: MobileVisualizationContract;
38
41
  /** Used by useChartSelection for chart-type-stamped observation events. */
39
42
  chartType: string;
40
43
  chartId?: string;
@@ -94,6 +97,7 @@ export interface NetworkChartSetupResult {
94
97
  legend: ReturnType<typeof useChartLegendAndMargin>["legend"];
95
98
  margin: MarginType;
96
99
  legendPosition: LegendPosition;
100
+ mobileInteraction: ResolvedMobileInteractionConfig;
97
101
  customHoverBehavior: ReturnType<typeof useChartSelection>["customHoverBehavior"];
98
102
  customClickBehavior: ReturnType<typeof useChartSelection>["customClickBehavior"];
99
103
  /**
@@ -12,7 +12,7 @@ export interface OrdinalPieceStyleOptions {
12
12
  /** Theme categorical palette (from useThemeCategorical). */
13
13
  themeCategorical: string[] | undefined;
14
14
  /** colorScheme prop — array or string scheme name. */
15
- colorScheme?: string | string[];
15
+ colorScheme?: string | string[] | Record<string, string>;
16
16
  /** Stable category-index map for default-fill cycling. */
17
17
  categoryIndexMap: Map<string, number>;
18
18
  /** User-supplied `frameProps.pieceStyle`. Accepts the looser
@@ -30,7 +30,7 @@ export declare function useStreamingLegend({ isPushMode, colorBy, colorScheme, s
30
30
  /** The color-by accessor (may be derived from stackBy/groupBy/categoryAccessor) */
31
31
  colorBy: Accessor<string> | undefined;
32
32
  /** Color scheme name or custom array — undefined lets useColorScale consult the theme */
33
- colorScheme: string | string[] | undefined;
33
+ colorScheme: string | string[] | Record<string, string> | undefined;
34
34
  /** Whether legend is requested */
35
35
  showLegend: boolean | undefined;
36
36
  /** Legend position */