semiotic 3.7.5 → 3.8.1

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 (575) hide show
  1. package/CLAUDE.md +63 -18
  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 +1741 -163
  7. package/ai/examples.md +174 -0
  8. package/ai/schema.json +2733 -536
  9. package/ai/surface-manifest.json +201 -0
  10. package/ai/system-prompt.md +20 -4
  11. package/dist/__tests__/scenarios/mcpProtocolTypes.d.ts +20 -0
  12. package/dist/components/AccessibleNavTree.d.ts +7 -1
  13. package/dist/components/CategoryColors.d.ts +1 -1
  14. package/dist/components/ChartContainer.d.ts +91 -0
  15. package/dist/components/ChartGrid.d.ts +11 -1
  16. package/dist/components/CircularBrush.d.ts +61 -0
  17. package/dist/components/ContextLayout.d.ts +5 -1
  18. package/dist/components/DirectManipulationControl.d.ts +63 -0
  19. package/dist/components/LinkedCharts.d.ts +3 -1
  20. package/dist/components/MobileAnnotationCalloutList.d.ts +13 -0
  21. package/dist/components/MobileChartContainer.d.ts +51 -0
  22. package/dist/components/MobileStandardControls.d.ts +68 -0
  23. package/dist/components/SmallMultipleChart.d.ts +84 -0
  24. package/dist/components/Tooltip/FlippingTooltip.d.ts +21 -0
  25. package/dist/components/ai/ChartRecipe.d.ts +16 -0
  26. package/dist/components/ai/IntentMark.d.ts +15 -0
  27. package/dist/components/ai/chartCapabilities.d.ts +8 -1
  28. package/dist/components/ai/chartCapabilityTypes.d.ts +26 -1
  29. package/dist/components/ai/chartClinic.d.ts +91 -0
  30. package/dist/components/ai/chartClinicMetadata.generated.d.ts +15 -0
  31. package/dist/components/ai/chartRecipeRegistry.d.ts +14 -0
  32. package/dist/components/ai/chartRecipes.d.ts +278 -0
  33. package/dist/components/ai/dataPitfallsBridge.d.ts +102 -0
  34. package/dist/components/ai/describeChart.d.ts +7 -0
  35. package/dist/components/ai/describeRecipeChart.d.ts +16 -0
  36. package/dist/components/ai/generativeChart.d.ts +28 -3
  37. package/dist/components/ai/intentManifest.d.ts +62 -0
  38. package/dist/components/ai/navigationTree.d.ts +3 -0
  39. package/dist/components/ai/observedSceneAudit.d.ts +72 -0
  40. package/dist/components/ai/readerGrounding.d.ts +83 -0
  41. package/dist/components/ai/recipeCapability.d.ts +8 -0
  42. package/dist/components/ai/recipeNavigation.d.ts +13 -0
  43. package/dist/components/ai/recipeSemantics.d.ts +11 -0
  44. package/dist/components/ai/repairChartConfig.d.ts +9 -0
  45. package/dist/components/ai/suggestCharts.d.ts +11 -1
  46. package/dist/components/ai/useNavigationSync.d.ts +17 -2
  47. package/dist/components/chartContainerMobile.d.ts +9 -0
  48. package/dist/components/charts/custom/GeoCustomChart.d.ts +48 -0
  49. package/dist/components/charts/custom/NetworkCustomChart.d.ts +8 -2
  50. package/dist/components/charts/custom/OrdinalCustomChart.d.ts +8 -2
  51. package/dist/components/charts/custom/XYCustomChart.d.ts +11 -2
  52. package/dist/components/charts/geo/ChoroplethMap.d.ts +19 -2
  53. package/dist/components/charts/geo/DistanceCartogram.d.ts +15 -3
  54. package/dist/components/charts/geo/FlowMap.d.ts +11 -7
  55. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +15 -3
  56. package/dist/components/charts/geo/index.d.ts +2 -0
  57. package/dist/components/charts/index.d.ts +35 -1
  58. package/dist/components/charts/network/ChordDiagram.d.ts +10 -2
  59. package/dist/components/charts/network/CirclePack.d.ts +1 -1
  60. package/dist/components/charts/network/ForceDirectedGraph.d.ts +26 -5
  61. package/dist/components/charts/network/OrbitDiagram.d.ts +1 -1
  62. package/dist/components/charts/network/ProcessSankey.d.ts +1 -1
  63. package/dist/components/charts/network/SankeyDiagram.d.ts +10 -2
  64. package/dist/components/charts/network/TreeDiagram.d.ts +1 -1
  65. package/dist/components/charts/network/Treemap.d.ts +1 -1
  66. package/dist/components/charts/network/useForceLayout.d.ts +17 -0
  67. package/dist/components/charts/ordinal/BarChart.d.ts +22 -1
  68. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -1
  69. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -1
  70. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -1
  71. package/dist/components/charts/ordinal/FunnelChart.d.ts +1 -1
  72. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +12 -1
  73. package/dist/components/charts/ordinal/Histogram.d.ts +1 -1
  74. package/dist/components/charts/ordinal/PieChart.d.ts +1 -1
  75. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -1
  76. package/dist/components/charts/ordinal/StackedBarChart.d.ts +12 -1
  77. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -1
  78. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +1 -1
  79. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -1
  80. package/dist/components/charts/physics/ChainReactionChart.d.ts +9 -0
  81. package/dist/components/charts/physics/CollisionSwarmChart.capability.d.ts +2 -0
  82. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +54 -0
  83. package/dist/components/charts/physics/EventDropChart.capability.d.ts +2 -0
  84. package/dist/components/charts/physics/EventDropChart.d.ts +60 -0
  85. package/dist/components/charts/physics/GaltonBoardChart.capability.d.ts +2 -0
  86. package/dist/components/charts/physics/GaltonBoardChart.d.ts +74 -0
  87. package/dist/components/charts/physics/GauntletChart.capability.d.ts +2 -0
  88. package/dist/components/charts/physics/GauntletChart.d.ts +73 -0
  89. package/dist/components/charts/physics/PhysicalFlowChart.capability.d.ts +2 -0
  90. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +63 -0
  91. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +99 -0
  92. package/dist/components/charts/physics/PhysicsPileChart.capability.d.ts +2 -0
  93. package/dist/components/charts/physics/PhysicsPileChart.d.ts +60 -0
  94. package/dist/components/charts/physics/ProcessFlowChart.capability.d.ts +2 -0
  95. package/dist/components/charts/physics/ProcessFlowChart.d.ts +96 -0
  96. package/dist/components/charts/physics/chainReactionOverlay.d.ts +22 -0
  97. package/dist/components/charts/physics/chainReactionRuntime.d.ts +37 -0
  98. package/dist/components/charts/physics/chainReactionTypes.d.ts +97 -0
  99. package/dist/components/charts/physics/collisionSwarmPhysics.d.ts +27 -0
  100. package/dist/components/charts/physics/dependencyMachine.d.ts +188 -0
  101. package/dist/components/charts/physics/eventDropPhysics.d.ts +64 -0
  102. package/dist/components/charts/physics/galtonBoardPhysics.d.ts +28 -0
  103. package/dist/components/charts/physics/gauntletChartProps.d.ts +67 -0
  104. package/dist/components/charts/physics/gauntletChrome.d.ts +33 -0
  105. package/dist/components/charts/physics/gauntletController.d.ts +73 -0
  106. package/dist/components/charts/physics/gauntletEffects.d.ts +36 -0
  107. package/dist/components/charts/physics/gauntletPhysics.d.ts +71 -0
  108. package/dist/components/charts/physics/gauntletRuntime.d.ts +42 -0
  109. package/dist/components/charts/physics/gauntletTypes.d.ts +213 -0
  110. package/dist/components/charts/physics/physicalFlowPhysics.d.ts +57 -0
  111. package/dist/components/charts/physics/physicsChartShared.d.ts +57 -0
  112. package/dist/components/charts/physics/physicsChartUtils.d.ts +18 -0
  113. package/dist/components/charts/physics/physicsCustomLayout.d.ts +32 -0
  114. package/dist/components/charts/physics/physicsEncoding.d.ts +142 -0
  115. package/dist/components/charts/physics/physicsHocHandle.d.ts +53 -0
  116. package/dist/components/charts/physics/physicsHocUtils.d.ts +128 -0
  117. package/dist/components/charts/physics/physicsPilePhysics.d.ts +41 -0
  118. package/dist/components/charts/physics/physicsProcessPrimitives.d.ts +38 -0
  119. package/dist/components/charts/physics/processFlowPhysics.d.ts +97 -0
  120. package/dist/components/charts/realtime/RealtimeHeatmap.d.ts +9 -1
  121. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +9 -1
  122. package/dist/components/charts/realtime/RealtimeLineChart.d.ts +9 -1
  123. package/dist/components/charts/realtime/RealtimeSwarmChart.d.ts +16 -2
  124. package/dist/components/charts/realtime/RealtimeWaterfallChart.d.ts +9 -1
  125. package/dist/components/charts/shared/AnnotationLabel.d.ts +88 -0
  126. package/dist/components/charts/shared/annotationActivation.d.ts +35 -0
  127. package/dist/components/charts/shared/annotationLabelLayout.d.ts +5 -0
  128. package/dist/components/charts/shared/annotationRules.d.ts +2 -1
  129. package/dist/components/charts/shared/auditMobileVisualization.d.ts +91 -0
  130. package/dist/components/charts/shared/chartDefinitionPilot.d.ts +145 -0
  131. package/dist/components/charts/shared/chartFamilySets.d.ts +20 -0
  132. package/dist/components/charts/shared/chartSelectionUtils.d.ts +4 -0
  133. package/dist/components/charts/shared/chartSpecCore.d.ts +165 -0
  134. package/dist/components/charts/shared/chartSpecs.d.ts +8 -127
  135. package/dist/components/charts/shared/chartSpecsGeo.d.ts +2 -0
  136. package/dist/components/charts/shared/chartSpecsNetwork.d.ts +2 -0
  137. package/dist/components/charts/shared/chartSpecsOrdinal.d.ts +2 -0
  138. package/dist/components/charts/shared/chartSpecsPhysics.d.ts +2 -0
  139. package/dist/components/charts/shared/chartSpecsRealtime.d.ts +2 -0
  140. package/dist/components/charts/shared/chartSpecsValue.d.ts +2 -0
  141. package/dist/components/charts/shared/chartSpecsXY.d.ts +2 -0
  142. package/dist/components/charts/shared/colorContrast.d.ts +3 -0
  143. package/dist/components/charts/shared/colorUtils.d.ts +16 -1
  144. package/dist/components/charts/shared/datumTypes.d.ts +2 -0
  145. package/dist/components/charts/shared/diagnoseAnnotationChecks.d.ts +6 -0
  146. package/dist/components/charts/shared/diagnoseConfig.d.ts +9 -14
  147. package/dist/components/charts/shared/diagnoseMisleadingChecks.d.ts +9 -0
  148. package/dist/components/charts/shared/diagnosePhysicsChecks.d.ts +3 -0
  149. package/dist/components/charts/shared/diagnoseTypes.d.ts +10 -0
  150. package/dist/components/charts/shared/formatUtils.d.ts +3 -3
  151. package/dist/components/charts/shared/hatchFill.d.ts +87 -0
  152. package/dist/components/charts/shared/hooks.d.ts +34 -10
  153. package/dist/components/charts/shared/knownChartComponents.d.ts +9 -0
  154. package/dist/components/charts/shared/leastSquaresRegression.d.ts +16 -0
  155. package/dist/components/charts/shared/mergeShapeStyle.d.ts +3 -2
  156. package/dist/components/charts/shared/motionEncoding.d.ts +145 -0
  157. package/dist/components/charts/shared/responsiveRules.d.ts +56 -0
  158. package/dist/components/charts/shared/semanticInteractions.d.ts +42 -0
  159. package/dist/components/charts/shared/sparseArray.d.ts +1 -1
  160. package/dist/components/charts/shared/streamPropsHelpers.d.ts +17 -5
  161. package/dist/components/charts/shared/styleRules.d.ts +205 -0
  162. package/dist/components/charts/shared/temporalStrings.d.ts +7 -0
  163. package/dist/components/charts/shared/tooltipUtils.d.ts +22 -9
  164. package/dist/components/charts/shared/types.d.ts +58 -7
  165. package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +16 -2
  166. package/dist/components/charts/shared/useChartSetup.d.ts +11 -4
  167. package/dist/components/charts/shared/useCustomChartSetup.d.ts +17 -5
  168. package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -2
  169. package/dist/components/charts/shared/useLikertAggregation.d.ts +4 -4
  170. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +6 -2
  171. package/dist/components/charts/shared/useOrdinalBrush.d.ts +2 -1
  172. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +25 -2
  173. package/dist/components/charts/shared/useStreamingLegend.d.ts +2 -2
  174. package/dist/components/charts/shared/useSyncedPushData.d.ts +49 -0
  175. package/dist/components/charts/shared/useXYLineStyle.d.ts +10 -0
  176. package/dist/components/charts/shared/useXYPointStyle.d.ts +19 -1
  177. package/dist/components/charts/shared/validateChartData.d.ts +7 -5
  178. package/dist/components/charts/shared/validationMap.d.ts +7 -9
  179. package/dist/components/charts/shared/validationMap.generated.d.ts +6 -0
  180. package/dist/components/charts/shared/withChartWrapper.d.ts +4 -3
  181. package/dist/components/charts/value/targetPresentation.d.ts +22 -0
  182. package/dist/components/charts/value/types.d.ts +5 -6
  183. package/dist/components/charts/xy/AreaChart.d.ts +9 -1
  184. package/dist/components/charts/xy/BubbleChart.d.ts +10 -1
  185. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +7 -0
  186. package/dist/components/charts/xy/DifferenceChart.d.ts +1 -52
  187. package/dist/components/charts/xy/Heatmap.d.ts +2 -2
  188. package/dist/components/charts/xy/LineChart.d.ts +12 -1
  189. package/dist/components/charts/xy/MinimapChart.d.ts +1 -1
  190. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +2 -2
  191. package/dist/components/charts/xy/QuadrantChart.d.ts +8 -1
  192. package/dist/components/charts/xy/Scatterplot.d.ts +11 -1
  193. package/dist/components/charts/xy/ScatterplotMatrix.d.ts +11 -1
  194. package/dist/components/charts/xy/StackedAreaChart.d.ts +16 -4
  195. package/dist/components/charts/xy/differenceSegments.d.ts +49 -0
  196. package/dist/components/charts/xy/scatterplotMatrixInteractionTypes.d.ts +12 -0
  197. package/dist/components/controls/SentenceFilter.d.ts +97 -0
  198. package/dist/components/controls/controlAudit.d.ts +24 -0
  199. package/dist/components/controls/controlContract.d.ts +57 -0
  200. package/dist/components/data/fromFlintChart.d.ts +74 -0
  201. package/dist/components/data/fromVegaLite.d.ts +46 -9
  202. package/dist/components/data/portability/index.d.ts +6 -3
  203. package/dist/components/data/portability/result.d.ts +52 -0
  204. package/dist/components/data/portability/spec.d.ts +31 -0
  205. package/dist/components/data/portability/vegaLite.d.ts +24 -6
  206. package/dist/components/export/chartConfig.d.ts +11 -0
  207. package/dist/components/realtime/types.d.ts +11 -0
  208. package/dist/components/recipes/annotationLayout.d.ts +29 -0
  209. package/dist/components/recipes/axisFixedForce.d.ts +119 -0
  210. package/dist/components/recipes/{gofishBoba.d.ts → boba.d.ts} +2 -2
  211. package/dist/components/recipes/cyclical.d.ts +39 -0
  212. package/dist/components/recipes/edgeRouter.d.ts +103 -0
  213. package/dist/components/recipes/forceLayout.d.ts +48 -0
  214. package/dist/components/recipes/forceLayoutAsync.d.ts +17 -0
  215. package/dist/components/recipes/gofishBobaHandwritten.d.ts +3 -0
  216. package/dist/components/recipes/gofishDisplayListFixtures.generated.d.ts +37 -0
  217. package/dist/components/recipes/gofishIR.d.ts +178 -132
  218. package/dist/components/recipes/gofishIRExamples.d.ts +30 -81
  219. package/dist/components/recipes/intervalLanes.d.ts +87 -0
  220. package/dist/components/recipes/intervals.d.ts +80 -0
  221. package/dist/components/recipes/isometricLandmarks.d.ts +88 -0
  222. package/dist/components/recipes/isotypeGlyphs.d.ts +17 -0
  223. package/dist/components/recipes/mobileAnnotationStrategy.d.ts +48 -0
  224. package/dist/components/recipes/mobileChartFamilyRecipes.d.ts +59 -0
  225. package/dist/components/recipes/networkAnalysis.d.ts +102 -0
  226. package/dist/components/recipes/networkLayouts.d.ts +83 -0
  227. package/dist/components/recipes/physics.d.ts +122 -0
  228. package/dist/components/recipes/physicsReference.d.ts +102 -0
  229. package/dist/components/recipes/processAggregates.d.ts +32 -0
  230. package/dist/components/recipes/processChrome.d.ts +67 -0
  231. package/dist/components/recipes/processJourney.d.ts +54 -0
  232. package/dist/components/recipes/processPhysics.d.ts +300 -0
  233. package/dist/components/recipes/processVolumeGeometry.d.ts +28 -0
  234. package/dist/components/recipes/radialCoords.d.ts +69 -0
  235. package/dist/components/recipes/random.d.ts +2 -0
  236. package/dist/components/recipes/recipeChrome.d.ts +91 -0
  237. package/dist/components/recipes/recipeGlyph.d.ts +42 -0
  238. package/dist/components/recipes/recipeLegend.d.ts +53 -1
  239. package/dist/components/recipes/recipeUtils.d.ts +52 -0
  240. package/dist/components/recipes/runs.d.ts +59 -0
  241. package/dist/components/recipes/tokenEncoding.d.ts +157 -0
  242. package/dist/components/recipes/tokenLayer.d.ts +79 -0
  243. package/dist/components/recipes/unitize.d.ts +108 -0
  244. package/dist/components/recipes/vector.d.ts +28 -0
  245. package/dist/components/recipes/waffle.d.ts +43 -0
  246. package/dist/components/rough/createRoughRenderMode.d.ts +46 -0
  247. package/dist/components/semiotic-ai-core.d.ts +47 -0
  248. package/dist/components/semiotic-ai.d.ts +53 -9
  249. package/dist/components/semiotic-controls.d.ts +20 -0
  250. package/dist/components/semiotic-experimental.d.ts +38 -9
  251. package/dist/components/semiotic-geo.d.ts +15 -0
  252. package/dist/components/semiotic-network.d.ts +15 -0
  253. package/dist/components/semiotic-ordinal.d.ts +14 -0
  254. package/dist/components/semiotic-physics-matter.d.ts +10 -0
  255. package/dist/components/semiotic-physics-rapier.d.ts +9 -0
  256. package/dist/components/semiotic-physics.d.ts +60 -0
  257. package/dist/components/semiotic-realtime-core.d.ts +34 -0
  258. package/dist/components/semiotic-realtime-react.d.ts +10 -0
  259. package/dist/components/semiotic-realtime.d.ts +4 -30
  260. package/dist/components/semiotic-recipes-core.d.ts +92 -0
  261. package/dist/components/semiotic-recipes-react.d.ts +7 -0
  262. package/dist/components/semiotic-recipes.d.ts +4 -43
  263. package/dist/components/semiotic-rough.d.ts +4 -0
  264. package/dist/components/semiotic-server-edge.d.ts +8 -0
  265. package/dist/components/semiotic-server-node.d.ts +5 -0
  266. package/dist/components/semiotic-server.d.ts +2 -2
  267. package/dist/components/semiotic-themes-core.d.ts +53 -0
  268. package/dist/components/semiotic-themes-react.d.ts +4 -0
  269. package/dist/components/semiotic-themes.d.ts +6 -76
  270. package/dist/components/semiotic-utils-core.d.ts +50 -0
  271. package/dist/components/semiotic-utils-react.d.ts +5 -0
  272. package/dist/components/semiotic-utils.d.ts +3 -39
  273. package/dist/components/semiotic-xy.d.ts +12 -0
  274. package/dist/components/semiotic.d.ts +44 -8
  275. package/dist/components/server/animatedGif.d.ts +36 -0
  276. package/dist/components/server/optionalImageTypes.d.ts +37 -0
  277. package/dist/components/server/renderEvidence.d.ts +1 -1
  278. package/dist/components/server/renderToStaticSVG.d.ts +3 -35
  279. package/dist/components/server/serverChartConfigShared.d.ts +21 -0
  280. package/dist/components/server/serverChartConfigs.d.ts +22 -12
  281. package/dist/components/server/serverChartConfigsCustom.d.ts +5 -0
  282. package/dist/components/server/serverChartConfigsGeo.d.ts +9 -0
  283. package/dist/components/server/serverChartConfigsNetwork.d.ts +8 -0
  284. package/dist/components/server/serverChartConfigsOrdinal.d.ts +16 -0
  285. package/dist/components/server/serverChartConfigsPhysics.d.ts +9 -0
  286. package/dist/components/server/serverChartConfigsXY.d.ts +11 -0
  287. package/dist/components/server/staticAnnotations.d.ts +6 -3
  288. package/dist/components/server/staticGeo.d.ts +4 -0
  289. package/dist/components/server/staticLegend.d.ts +2 -2
  290. package/dist/components/server/staticNetwork.d.ts +8 -0
  291. package/dist/components/server/staticOrdinal.d.ts +11 -0
  292. package/dist/components/server/staticPhysics.d.ts +3 -0
  293. package/dist/components/server/staticSVGChrome.d.ts +110 -0
  294. package/dist/components/server/staticXY.d.ts +4 -0
  295. package/dist/components/store/ObservationStore.d.ts +23 -2
  296. package/dist/components/store/themeSerialization.d.ts +32 -0
  297. package/dist/components/store/useChartInterrogation.d.ts +9 -0
  298. package/dist/components/stream/AccessibleDataTable.d.ts +7 -23
  299. package/dist/components/stream/AriaLiveTooltip.d.ts +9 -0
  300. package/dist/components/stream/CanvasHitTester.d.ts +4 -4
  301. package/dist/components/stream/DataSourceAdapter.d.ts +1 -1
  302. package/dist/components/stream/FocusRing.d.ts +4 -2
  303. package/dist/components/stream/FrameRuntime.d.ts +57 -0
  304. package/dist/components/stream/GeoCanvasHitTester.d.ts +1 -1
  305. package/dist/components/stream/GeoParticlePool.d.ts +1 -1
  306. package/dist/components/stream/GeoPipelineStore.d.ts +62 -3
  307. package/dist/components/stream/GeoSVGOverlay.d.ts +64 -0
  308. package/dist/components/stream/NetworkCanvasHitTester.d.ts +2 -1
  309. package/dist/components/stream/NetworkPipelineStore.d.ts +44 -36
  310. package/dist/components/stream/NetworkSSRFrame.d.ts +17 -0
  311. package/dist/components/stream/NetworkSVGOverlay.d.ts +10 -1
  312. package/dist/components/stream/OrdinalCanvasHitTester.d.ts +2 -2
  313. package/dist/components/stream/OrdinalPipelineStore.d.ts +55 -11
  314. package/dist/components/stream/OrdinalSVGOverlay.d.ts +9 -1
  315. package/dist/components/stream/OrdinalStyleResolver.d.ts +12 -0
  316. package/dist/components/stream/ParticlePool.d.ts +1 -1
  317. package/dist/components/stream/PipelineStore.d.ts +81 -174
  318. package/dist/components/stream/SVGOverlay.d.ts +6 -0
  319. package/dist/components/stream/SceneGraph.d.ts +12 -4
  320. package/dist/components/stream/StreamGeoFrame.d.ts +1 -1
  321. package/dist/components/stream/StreamNetworkFrame.d.ts +1 -1
  322. package/dist/components/stream/StreamOrdinalFrame.d.ts +1 -1
  323. package/dist/components/stream/StreamXYFrame.d.ts +2 -18
  324. package/dist/components/stream/accessibleDataRows.d.ts +33 -0
  325. package/dist/components/stream/accessorUtils.d.ts +25 -12
  326. package/dist/components/stream/annotationAccessorResolver.d.ts +2 -2
  327. package/dist/components/stream/brushAccessibility.d.ts +25 -0
  328. package/dist/components/stream/canvasBackground.d.ts +24 -0
  329. package/dist/components/stream/canvasSetup.d.ts +4 -1
  330. package/dist/components/stream/customLayoutFailure.d.ts +33 -0
  331. package/dist/components/stream/customLayoutPalette.d.ts +19 -9
  332. package/dist/components/stream/frameGraphics.d.ts +4 -0
  333. package/dist/components/stream/frameKeyboardNavigation.d.ts +45 -0
  334. package/dist/components/stream/frameThemeColors.d.ts +24 -0
  335. package/dist/components/stream/geoAnnotationAnchors.d.ts +14 -0
  336. package/dist/components/stream/geoCartogram.d.ts +17 -0
  337. package/dist/components/stream/geoCustomLayout.d.ts +59 -0
  338. package/dist/components/stream/geoDefaultTooltip.d.ts +11 -0
  339. package/dist/components/stream/geoFrameHelpers.d.ts +34 -0
  340. package/dist/components/stream/geoPipelineHelpers.d.ts +46 -0
  341. package/dist/components/stream/geoPipelineUpdateResults.d.ts +34 -0
  342. package/dist/components/stream/geoSceneBuilder.d.ts +16 -0
  343. package/dist/components/stream/geoTypes.d.ts +97 -15
  344. package/dist/components/stream/glyphDef.d.ts +98 -0
  345. package/dist/components/stream/hitTarget.d.ts +170 -0
  346. package/dist/components/stream/hitTestUtils.d.ts +2 -2
  347. package/dist/components/stream/hoverUtils.d.ts +7 -2
  348. package/dist/components/stream/keyboardNav.d.ts +4 -1
  349. package/dist/components/stream/layouts/forceLayoutPlugin.d.ts +9 -1
  350. package/dist/components/stream/layouts/forceLayoutWorkerClient.d.ts +58 -0
  351. package/dist/components/stream/layouts/hierarchyUtils.d.ts +2 -2
  352. package/dist/components/stream/networkBezier.d.ts +10 -0
  353. package/dist/components/stream/networkColorAccessors.d.ts +49 -0
  354. package/dist/components/stream/networkCustomLayoutRunner.d.ts +23 -0
  355. package/dist/components/stream/networkCustomRestyle.d.ts +15 -0
  356. package/dist/components/stream/networkDefaultTooltip.d.ts +10 -0
  357. package/dist/components/stream/networkFrameAnimation.d.ts +7 -0
  358. package/dist/components/stream/networkFrameHandleTypes.d.ts +39 -0
  359. package/dist/components/stream/networkFrameInteraction.d.ts +37 -0
  360. package/dist/components/stream/networkFrameObservations.d.ts +15 -0
  361. package/dist/components/stream/networkFramePaint.d.ts +52 -0
  362. package/dist/components/stream/networkInteractionTypes.d.ts +26 -0
  363. package/dist/components/stream/networkPipelineConfig.d.ts +22 -0
  364. package/dist/components/stream/networkPipelineHelpers.d.ts +12 -0
  365. package/dist/components/stream/networkPipelineUpdateResults.d.ts +38 -0
  366. package/dist/components/stream/networkRealtimeEncoding.d.ts +41 -0
  367. package/dist/components/stream/networkTypes.d.ts +103 -51
  368. package/dist/components/stream/ordinalCanvasRenderers.d.ts +7 -0
  369. package/dist/components/stream/ordinalDataIndex.d.ts +5 -0
  370. package/dist/components/stream/ordinalDefaultTooltip.d.ts +10 -0
  371. package/dist/components/stream/ordinalDomain.d.ts +38 -0
  372. package/dist/components/stream/ordinalPipelineUpdateResults.d.ts +31 -0
  373. package/dist/components/stream/ordinalPulse.d.ts +10 -0
  374. package/dist/components/stream/ordinalPulseResources.d.ts +3 -0
  375. package/dist/components/stream/ordinalSceneBuilders/sceneBuilderMap.d.ts +5 -0
  376. package/dist/components/stream/ordinalSceneBuilders/types.d.ts +2 -2
  377. package/dist/components/stream/ordinalSpatialIndex.d.ts +9 -0
  378. package/dist/components/stream/ordinalTypes.d.ts +68 -9
  379. package/dist/components/stream/paintNeeds.d.ts +31 -0
  380. package/dist/components/stream/physics/CapacityQueueController.d.ts +5 -0
  381. package/dist/components/stream/physics/CapacityQueueTypes.d.ts +134 -0
  382. package/dist/components/stream/physics/MatterPhysicsEngineAdapter.d.ts +42 -0
  383. package/dist/components/stream/physics/PhysicsAccessibility.d.ts +48 -0
  384. package/dist/components/stream/physics/PhysicsAnnotations.d.ts +58 -0
  385. package/dist/components/stream/physics/PhysicsBodyBudget.d.ts +26 -0
  386. package/dist/components/stream/physics/PhysicsBodySpatialIndex.d.ts +10 -0
  387. package/dist/components/stream/physics/PhysicsCanvasTheme.d.ts +26 -0
  388. package/dist/components/stream/physics/PhysicsControllers.d.ts +75 -0
  389. package/dist/components/stream/physics/PhysicsEngineAdapter.d.ts +59 -0
  390. package/dist/components/stream/physics/PhysicsEngineConformance.d.ts +23 -0
  391. package/dist/components/stream/physics/PhysicsEvidence.d.ts +25 -0
  392. package/dist/components/stream/physics/PhysicsKernel.d.ts +207 -0
  393. package/dist/components/stream/physics/PhysicsOptionalEngineAdapters.d.ts +12 -0
  394. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +86 -0
  395. package/dist/components/stream/physics/PhysicsPipelineTypes.d.ts +181 -0
  396. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +78 -0
  397. package/dist/components/stream/physics/PhysicsSediment.d.ts +69 -0
  398. package/dist/components/stream/physics/PhysicsSettledSVG.d.ts +18 -0
  399. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +21 -0
  400. package/dist/components/stream/physics/PhysicsWorkerClient.d.ts +24 -0
  401. package/dist/components/stream/physics/PhysicsWorkerProtocol.d.ts +101 -0
  402. package/dist/components/stream/physics/PhysicsWorkerRuntime.d.ts +5 -0
  403. package/dist/components/stream/physics/RapierPhysicsEngineAdapter.d.ts +18 -0
  404. package/dist/components/stream/physics/ServiceOperationsControllers.d.ts +27 -0
  405. package/dist/components/stream/physics/ServiceOperationsTypes.d.ts +89 -0
  406. package/dist/components/stream/physics/StreamPhysicsFrame.d.ts +6 -0
  407. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +317 -0
  408. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +27 -0
  409. package/dist/components/stream/physics/physicsFrameObservations.d.ts +19 -0
  410. package/dist/components/stream/physics/physicsFrameSetup.d.ts +4 -0
  411. package/dist/components/stream/physics/physicsPipelineControls.d.ts +4 -0
  412. package/dist/components/stream/physics/physicsPipelineHelpers.d.ts +41 -0
  413. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +14 -0
  414. package/dist/components/stream/physics/physicsPipelineUpdateResults.d.ts +27 -0
  415. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +54 -0
  416. package/dist/components/stream/physics/physicsSemanticUI.d.ts +20 -0
  417. package/dist/components/stream/physics/usePhysicsFrameLifecyclePolicy.d.ts +18 -0
  418. package/dist/components/stream/pipelineBufferUtils.d.ts +26 -0
  419. package/dist/components/stream/pipelineConfig.d.ts +179 -0
  420. package/dist/components/stream/pipelineDecay.d.ts +21 -3
  421. package/dist/components/stream/pipelineDomainResolution.d.ts +62 -0
  422. package/dist/components/stream/pipelineIdentityOps.d.ts +26 -0
  423. package/dist/components/stream/pipelinePulse.d.ts +17 -3
  424. package/dist/components/stream/pipelineRibbons.d.ts +41 -0
  425. package/dist/components/stream/pipelineSpatialIndex.d.ts +12 -0
  426. package/dist/components/stream/pipelineStoreUpdateResults.d.ts +33 -0
  427. package/dist/components/stream/pipelineStyleResolvers.d.ts +46 -0
  428. package/dist/components/stream/pipelineTransitions.d.ts +3 -1
  429. package/dist/components/stream/pipelineUpdateContract.d.ts +69 -0
  430. package/dist/components/stream/pipelineUpdateStore.d.ts +21 -0
  431. package/dist/components/stream/pulseFrameRefresh.d.ts +22 -0
  432. package/dist/components/stream/renderBackend.d.ts +27 -0
  433. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +15 -1
  434. package/dist/components/stream/renderers/geoCanvasRenderer.d.ts +3 -2
  435. package/dist/components/stream/renderers/glyphCanvasRenderer.d.ts +6 -0
  436. package/dist/components/stream/renderers/networkParticleRenderer.d.ts +1 -1
  437. package/dist/components/stream/renderers/resolveCSSColor.d.ts +6 -0
  438. package/dist/components/stream/sceneRenderBackendTypes.d.ts +28 -0
  439. package/dist/components/stream/sceneRevisionDiagnostics.d.ts +45 -0
  440. package/dist/components/stream/streamSemanticTypes.d.ts +16 -0
  441. package/dist/components/stream/streamStoreSync.d.ts +37 -0
  442. package/dist/components/stream/streamThemeTypes.d.ts +14 -0
  443. package/dist/components/stream/svgOverlayUtils.d.ts +10 -0
  444. package/dist/components/stream/test-utils/frameScheduler.d.ts +12 -0
  445. package/dist/components/stream/test-utils/revisionConsumption.d.ts +13 -0
  446. package/dist/components/stream/titleLayout.d.ts +31 -0
  447. package/dist/components/stream/types.d.ts +165 -72
  448. package/dist/components/stream/useCanvasFrameHost.d.ts +71 -0
  449. package/dist/components/stream/useFrame.d.ts +44 -2
  450. package/dist/components/stream/useHydration.d.ts +6 -0
  451. package/dist/components/stream/useLegendCategoryEmission.d.ts +5 -0
  452. package/dist/components/stream/useSemanticFrameInteractions.d.ts +22 -0
  453. package/dist/components/stream/useUpdateResultSnapshot.d.ts +7 -0
  454. package/dist/components/stream/workerModuleUrl.d.ts +10 -0
  455. package/dist/components/stream/xyAnnotationAnchors.d.ts +13 -0
  456. package/dist/components/stream/xyCanvasRenderers.d.ts +7 -0
  457. package/dist/components/stream/xyCrosshair.d.ts +11 -0
  458. package/dist/components/stream/xyDateTicks.d.ts +9 -0
  459. package/dist/components/stream/xyDefaultTooltip.d.ts +10 -0
  460. package/dist/components/stream/xyFrameAxisTypes.d.ts +50 -0
  461. package/dist/components/stream/xySceneBuilders/types.d.ts +10 -9
  462. package/dist/controls.min.js +2 -0
  463. package/dist/controls.module.min.js +2 -0
  464. package/dist/forceLayoutWorker.js +1 -0
  465. package/dist/geo.min.js +1 -1
  466. package/dist/geo.module.min.js +1 -1
  467. package/dist/network.min.js +1 -1
  468. package/dist/network.module.min.js +1 -1
  469. package/dist/ordinal.min.js +1 -1
  470. package/dist/ordinal.module.min.js +1 -1
  471. package/dist/physics-matter.min.js +1 -0
  472. package/dist/physics-matter.module.min.js +1 -0
  473. package/dist/physics-rapier.min.js +1 -0
  474. package/dist/physics-rapier.module.min.js +1 -0
  475. package/dist/physics.min.js +2 -0
  476. package/dist/physics.module.min.js +2 -0
  477. package/dist/physicsWorker.js +1 -0
  478. package/dist/realtime.min.js +1 -1
  479. package/dist/realtime.module.min.js +1 -1
  480. package/dist/rough.min.js +1 -0
  481. package/dist/rough.module.min.js +1 -0
  482. package/dist/semiotic-ai-chunk-OG7BQUUW.module.min.js +2 -0
  483. package/dist/semiotic-ai-core.d.ts +47 -0
  484. package/dist/semiotic-ai-core.min.js +1 -0
  485. package/dist/semiotic-ai-core.module.min.js +1 -0
  486. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +2 -0
  487. package/dist/semiotic-ai.d.ts +53 -9
  488. package/dist/semiotic-ai.min.js +1 -1
  489. package/dist/semiotic-ai.module.min.js +1 -1
  490. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +2 -0
  491. package/dist/semiotic-controls.d.ts +20 -0
  492. package/dist/semiotic-data.min.js +1 -1
  493. package/dist/semiotic-data.module.min.js +1 -1
  494. package/dist/semiotic-experimental.d.ts +38 -9
  495. package/dist/semiotic-experimental.min.js +1 -1
  496. package/dist/semiotic-experimental.module.min.js +1 -1
  497. package/dist/semiotic-geo.d.ts +15 -0
  498. package/dist/semiotic-network.d.ts +15 -0
  499. package/dist/semiotic-ordinal.d.ts +14 -0
  500. package/dist/semiotic-physics-matter.d.ts +10 -0
  501. package/dist/semiotic-physics-rapier.d.ts +9 -0
  502. package/dist/semiotic-physics.d.ts +60 -0
  503. package/dist/semiotic-realtime-core.d.ts +34 -0
  504. package/dist/semiotic-realtime-core.min.js +1 -0
  505. package/dist/semiotic-realtime-core.module.min.js +1 -0
  506. package/dist/semiotic-realtime-react.d.ts +10 -0
  507. package/dist/semiotic-realtime-react.min.js +2 -0
  508. package/dist/semiotic-realtime-react.module.min.js +2 -0
  509. package/dist/semiotic-realtime.d.ts +4 -30
  510. package/dist/semiotic-recipes-core.d.ts +92 -0
  511. package/dist/semiotic-recipes-core.min.js +1 -0
  512. package/dist/semiotic-recipes-core.module.min.js +1 -0
  513. package/dist/semiotic-recipes-react.d.ts +7 -0
  514. package/dist/semiotic-recipes-react.min.js +2 -0
  515. package/dist/semiotic-recipes-react.module.min.js +2 -0
  516. package/dist/semiotic-recipes.d.ts +4 -43
  517. package/dist/semiotic-recipes.min.js +1 -1
  518. package/dist/semiotic-recipes.module.min.js +1 -1
  519. package/dist/semiotic-rough.d.ts +4 -0
  520. package/dist/semiotic-server-edge.d.ts +8 -0
  521. package/dist/semiotic-server-edge.min.js +1 -0
  522. package/dist/semiotic-server-edge.module.min.js +1 -0
  523. package/dist/semiotic-server-node.d.ts +5 -0
  524. package/dist/semiotic-server-node.min.js +1 -0
  525. package/dist/semiotic-server-node.module.min.js +1 -0
  526. package/dist/semiotic-server.d.ts +2 -2
  527. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +2 -0
  528. package/dist/semiotic-themes-core.d.ts +53 -0
  529. package/dist/semiotic-themes-core.min.js +1 -0
  530. package/dist/semiotic-themes-core.module.min.js +1 -0
  531. package/dist/semiotic-themes-react.d.ts +4 -0
  532. package/dist/semiotic-themes-react.min.js +2 -0
  533. package/dist/semiotic-themes-react.module.min.js +2 -0
  534. package/dist/semiotic-themes.d.ts +6 -76
  535. package/dist/semiotic-themes.min.js +1 -2
  536. package/dist/semiotic-themes.module.min.js +1 -2
  537. package/dist/semiotic-utils-core.d.ts +50 -0
  538. package/dist/semiotic-utils-core.min.js +1 -0
  539. package/dist/semiotic-utils-core.module.min.js +1 -0
  540. package/dist/semiotic-utils-react.d.ts +5 -0
  541. package/dist/semiotic-utils-react.min.js +2 -0
  542. package/dist/semiotic-utils-react.module.min.js +2 -0
  543. package/dist/semiotic-utils.d.ts +3 -39
  544. package/dist/semiotic-utils.min.js +1 -2
  545. package/dist/semiotic-utils.module.min.js +1 -2
  546. package/dist/semiotic-value.min.js +1 -1
  547. package/dist/semiotic-value.module.min.js +1 -1
  548. package/dist/semiotic-xy.d.ts +12 -0
  549. package/dist/semiotic.d.ts +44 -8
  550. package/dist/semiotic.min.js +1 -1
  551. package/dist/semiotic.module.min.js +1 -1
  552. package/dist/server.min.js +1 -1
  553. package/dist/server.module.min.js +1 -1
  554. package/dist/test-utils/capturedFrameProps.d.ts +67 -0
  555. package/dist/test-utils/frameMock.d.ts +12 -9
  556. package/dist/xy-chunk-IWD6IB6V.module.min.js +2 -0
  557. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +2 -0
  558. package/dist/xy.min.js +1 -1
  559. package/dist/xy.module.min.js +1 -1
  560. package/package.json +259 -88
  561. package/spec/README.md +152 -0
  562. package/spec/bindings/README.md +35 -0
  563. package/spec/bindings/vega-lite.mjs +112 -0
  564. package/spec/v0.1/annotation-provenance.schema.json +127 -0
  565. package/spec/v0.1/audience-profile.schema.json +67 -0
  566. package/spec/v0.1/chart-capability.schema.json +186 -0
  567. package/dist/components/recipes/gofish.d.ts +0 -207
  568. package/dist/components/recipes/gofishInterpreter.d.ts +0 -52
  569. package/dist/components/recipes/gofishLambdas.d.ts +0 -145
  570. package/dist/semiotic-ai-semiotic-ai-u954ylUn.js +0 -2
  571. package/dist/semiotic-ai-statisticalOverlays-CU7jW05Q.js +0 -1
  572. package/dist/semiotic-semiotic-BmrYbi99.js +0 -2
  573. package/dist/semiotic-statisticalOverlays-IjZw8Lsu.js +0 -1
  574. package/dist/xy-semiotic-xy-Dufu3D0-.js +0 -2
  575. package/dist/xy-statisticalOverlays-3Ni9bRph.js +0 -1
@@ -1,6 +1,15 @@
1
1
  import type { Datum } from "./datumTypes";
2
2
  import type { Accessor, ChartAccessor } from "./types";
3
3
  import type { SelectionHookResult } from "./selectionUtils";
4
+ import { type StyleRule } from "./styleRules";
5
+ import type { HatchFill } from "./hatchFill";
6
+ /**
7
+ * Values a resolved piece style may carry. Wider than the axis-style
8
+ * `string | number` because `fill` can be a declarative {@link HatchFill}
9
+ * descriptor or a raw `CanvasPattern`.
10
+ */
11
+ type PieceStyleValue = string | number | HatchFill | CanvasPattern | undefined;
12
+ type PieceStyleObject = Record<string, PieceStyleValue>;
4
13
  export interface OrdinalPieceStyleOptions {
5
14
  /** colorBy accessor — string field name or function */
6
15
  colorBy?: Accessor<string> | ChartAccessor<Datum, string>;
@@ -12,7 +21,7 @@ export interface OrdinalPieceStyleOptions {
12
21
  /** Theme categorical palette (from useThemeCategorical). */
13
22
  themeCategorical: string[] | undefined;
14
23
  /** colorScheme prop — array or string scheme name. */
15
- colorScheme?: string | string[];
24
+ colorScheme?: string | string[] | Record<string, string>;
16
25
  /** Stable category-index map for default-fill cycling. */
17
26
  categoryIndexMap: Map<string, number>;
18
27
  /** User-supplied `frameProps.pieceStyle`. Accepts the looser
@@ -65,6 +74,19 @@ export interface OrdinalPieceStyleOptions {
65
74
  effectiveSelectionHook: SelectionHookResult | null | undefined;
66
75
  /** Resolved selection config (typically `setup.resolvedSelection`). */
67
76
  resolvedSelection: import("./types").SelectionConfig | undefined;
77
+ /**
78
+ * Declarative, threshold-aware style rules. Evaluated per piece and merged
79
+ * on top of the resolved base fill (last-applicable rule wins per property).
80
+ * The user's `frameProps.pieceStyle` still overrides these, and top-level
81
+ * primitive props (`stroke`/`strokeWidth`/`opacity`) override everything.
82
+ */
83
+ styleRules?: ReadonlyArray<StyleRule>;
84
+ /**
85
+ * Resolve the numeric value a threshold rule compares against for a datum
86
+ * (typically the chart's `valueAccessor` output). Lets `{ when: { gt: 10 } }`
87
+ * work with no `field` on the threshold.
88
+ */
89
+ resolveRuleValue?: (d: Datum) => number | undefined;
68
90
  }
69
91
  /**
70
92
  * Build a memoized `pieceStyle` function that the chart can pass
@@ -84,4 +106,5 @@ export interface OrdinalPieceStyleOptions {
84
106
  * })
85
107
  * ```
86
108
  */
87
- export declare function useOrdinalPieceStyle(options: OrdinalPieceStyleOptions): (d: Datum, category?: string) => Record<string, string | number | undefined>;
109
+ export declare function useOrdinalPieceStyle(options: OrdinalPieceStyleOptions): (d: Datum, category?: string) => PieceStyleObject;
110
+ export {};
@@ -30,14 +30,14 @@ 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 */
37
37
  legendPosition?: LegendPosition;
38
38
  }): {
39
39
  wrapPush: (originalPush: (d: Datum) => void) => (datum: Datum) => void;
40
- wrapPushMany: (originalPushMany: (d: any[]) => void) => (data: any[]) => void;
40
+ wrapPushMany: (originalPushMany: (data: Datum[]) => void) => (data: Datum[]) => void;
41
41
  resetCategories: () => void;
42
42
  categories: string[];
43
43
  categoryDomainProps: {
@@ -0,0 +1,49 @@
1
+ import type { Datum } from "./datumTypes";
2
+ /**
3
+ * The slice of a chart's imperative handle this hook drives. Every Semiotic
4
+ * push-API handle (realtime + non-realtime HOCs) satisfies it structurally;
5
+ * each method is optional so the hook degrades gracefully on handles that
6
+ * only support a subset (e.g. append-only).
7
+ */
8
+ export interface SyncedPushHandle<T = Datum> {
9
+ push?: (datum: T) => unknown;
10
+ pushMany?: (data: T[]) => unknown;
11
+ update?: (id: string, updater: (datum: T) => T) => unknown;
12
+ remove?: (id: string | string[]) => unknown;
13
+ clear?: () => unknown;
14
+ }
15
+ /** An id accessor: a field name, or a function of the row (and its index). */
16
+ export type PushIdAccessor<T> = keyof T | ((datum: T, index: number) => string | number | null | undefined);
17
+ export interface SyncedPushDataOptions<T = Datum> {
18
+ /**
19
+ * Identifies a row so it can be updated/removed in place. A field name
20
+ * (`"id"`) or a function. Omit it and rows are keyed by index — fine for
21
+ * append-mostly streams, but reorders/removals then read positionally.
22
+ */
23
+ id?: PushIdAccessor<T>;
24
+ /**
25
+ * Clear the buffer and re-sync from scratch whenever this value changes.
26
+ * Use it for things that invalidate the whole series — a theme remount, a
27
+ * mode switch, a new data source. The handle identity changing (chart
28
+ * remount) always forces a reset too.
29
+ */
30
+ resetKey?: unknown;
31
+ }
32
+ /**
33
+ * Pure reconciliation: bring `handle`'s buffer from `previousById` to `rows`,
34
+ * issuing the minimal push/update/remove calls, and return the new id→row map.
35
+ *
36
+ * Exported for direct use and unit testing. The hook is a thin
37
+ * effect wrapper around this. Rows are matched by `getId`; a row whose
38
+ * reference changed is `update`d in place (or removed + re-pushed when the
39
+ * handle has no `update`).
40
+ */
41
+ export declare function syncPushBuffer<T = Datum>(handle: SyncedPushHandle<T>, previousById: Map<string, T>, rows: ReadonlyArray<T>, getId: ((datum: T, index: number) => string) | null): Map<string, T>;
42
+ /**
43
+ * Mirror a controlled React array into a push-API chart's buffer.
44
+ *
45
+ * @param ref The same ref you pass to the chart's `ref` prop.
46
+ * @param data The rows the chart should currently show.
47
+ * @param options `id` accessor and optional `resetKey`.
48
+ */
49
+ export declare function useSyncedPushData<T = Datum>(ref: React.RefObject<SyncedPushHandle<T> | null>, data: ReadonlyArray<T>, options?: SyncedPushDataOptions<T>): void;
@@ -1,6 +1,7 @@
1
1
  import type { Datum } from "./datumTypes";
2
2
  import type { Accessor, ChartAccessor } from "./types";
3
3
  import type { SelectionHookResult, SelectionStyleConfig } from "./selectionUtils";
4
+ import { type StyleRule, type StyleRuleContext } from "./styleRules";
4
5
  export interface XYLineStyleOptions {
5
6
  /**
6
7
  * Base stroke width. The top-level `strokeWidth` override below
@@ -33,6 +34,15 @@ export interface XYLineStyleOptions {
33
34
  effectiveSelectionHook?: SelectionHookResult | null;
34
35
  /** Resolved selection style config (matched/unmatched style overrides). */
35
36
  resolvedSelection?: SelectionStyleConfig;
37
+ /**
38
+ * Declarative style rules, merged on top of the resolved base stroke/fill
39
+ * (last-applicable rule wins). NOTE: line styles resolve per-SERIES against
40
+ * a representative sample datum (the series' first point), so a rule's
41
+ * `ctx.x`/`ctx.y` reflect that sample point, not every vertex.
42
+ */
43
+ styleRules?: ReadonlyArray<StyleRule>;
44
+ /** Build the `StyleRuleContext` for a series' sample datum + group key. */
45
+ ruleContext?: (d: Datum, group?: string) => StyleRuleContext;
36
46
  }
37
47
  /**
38
48
  * Returns a memoized `lineStyle` callback that the XY frame's
@@ -1,6 +1,11 @@
1
1
  import type { Datum } from "./datumTypes";
2
2
  import type { Accessor, ChartAccessor } from "./types";
3
3
  import type { SelectionHookResult } from "./selectionUtils";
4
+ import { type StyleRule, type StyleRuleContext } from "./styleRules";
5
+ import type { HatchFill } from "./hatchFill";
6
+ /** Values a resolved point style may carry (`fill` can be a HatchFill). */
7
+ type PointStyleValue = string | number | HatchFill | CanvasPattern | undefined;
8
+ type PointStyleObject = Record<string, PointStyleValue>;
4
9
  export interface XYPointStyleOptions {
5
10
  /** colorBy accessor — string field name or function. */
6
11
  colorBy?: Accessor<string> | ChartAccessor<Datum, string>;
@@ -46,6 +51,18 @@ export interface XYPointStyleOptions {
46
51
  effectiveSelectionHook: SelectionHookResult | null | undefined;
47
52
  /** Resolved selection config (typically `setup.resolvedSelection`). */
48
53
  resolvedSelection: import("./types").SelectionConfig | undefined;
54
+ /**
55
+ * Declarative style rules, evaluated per point and merged on top of the
56
+ * resolved base fill (last-applicable rule wins). Same engine and precedence
57
+ * as the ordinal bar `styleRules`.
58
+ */
59
+ styleRules?: ReadonlyArray<StyleRule>;
60
+ /**
61
+ * Build the `StyleRuleContext` for a point — populate `value`/`x`/`y` from
62
+ * the chart's accessors so thresholds can target either axis
63
+ * (`{ axis: "x", gt: 5 }`). Called only when `styleRules` is set.
64
+ */
65
+ ruleContext?: (d: Datum) => StyleRuleContext;
49
66
  /**
50
67
  * For ConnectedScatterplot-style charts whose color depends on the
51
68
  * point's position in an ordered sequence, the resolver may need
@@ -84,4 +101,5 @@ export interface XYPointStyleOptions {
84
101
  * })
85
102
  * ```
86
103
  */
87
- export declare function useXYPointStyle(options: XYPointStyleOptions): (d: Datum) => Record<string, string | number | undefined>;
104
+ export declare function useXYPointStyle(options: XYPointStyleOptions): (d: Datum) => PointStyleObject;
105
+ export {};
@@ -9,22 +9,24 @@ import type { Datum } from "./datumTypes";
9
9
  * Samples first, last, and a middle element to catch common mistakes
10
10
  * (wrong field names, missing data) without iterating the entire dataset.
11
11
  */
12
- type AccessorLike = string | ((...args: any[]) => any);
12
+ type AccessorResult = string | number | boolean | Date | Datum | null | undefined;
13
+ type AccessorLike = string | ((datum: Datum, index?: number) => AccessorResult);
14
+ type ChartDataInput = ReadonlyArray<Datum> | Datum | string | number | boolean | null | undefined;
13
15
  interface ArrayDataValidation {
14
16
  componentName: string;
15
- data: any;
17
+ data: ChartDataInput;
16
18
  accessors?: Record<string, AccessorLike | undefined>;
17
19
  requiredProps?: Datum;
18
20
  }
19
21
  interface ObjectDataValidation {
20
22
  componentName: string;
21
- data: any | undefined | null;
23
+ data: ChartDataInput;
22
24
  dataLabel?: string;
23
25
  }
24
26
  interface NetworkDataValidation {
25
27
  componentName: string;
26
- nodes?: any[] | undefined | null;
27
- edges?: any[] | undefined | null;
28
+ nodes?: ReadonlyArray<Datum> | null;
29
+ edges?: ReadonlyArray<Datum> | null;
28
30
  nodesRequired?: boolean;
29
31
  edgesRequired?: boolean;
30
32
  accessors?: Record<string, AccessorLike | undefined>;
@@ -1,13 +1,11 @@
1
1
  /**
2
- * Per-component prop specifications for validation.
2
+ * Runtime validation map derived from the Chart Spec Registry.
3
3
  *
4
- * Pure data one ComponentSpec entry per Semiotic HOC chart.
5
- * Shared prop fragments (commonProps, xyAxisProps, etc.) are composed
6
- * via spread to keep individual entries concise.
4
+ * The generated module contains only the fields consumed by `validateProps`.
5
+ * Keeping the docs/schema-rich registry out of this runtime import path saves
6
+ * it from every AI and utility bundle while preserving VALIDATION_MAP's public
7
+ * object shape. Regenerate after chart-spec edits with:
7
8
  *
8
- * Consumed by: validateProps.ts (validation engine), diagnoseConfig.ts,
9
- * chartConfig.ts. Schema/validation parity is locked by the
10
- * Chart Spec Registry (`check:chart-specs`).
9
+ * npm run docs:chart-specs:schema
11
10
  */
12
- import type { ComponentSpec } from "./validateProps";
13
- export declare const VALIDATION_MAP: Record<string, ComponentSpec>;
11
+ export { VALIDATION_MAP } from "./validationMap.generated";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * AUTO-GENERATED from chartSpecs.ts by scripts/regenerate-schema.ts.
3
+ * Do not edit by hand; run `npm run docs:chart-specs:schema`.
4
+ */
5
+ import type { ComponentSpec } from "./validateProps";
6
+ export declare const VALIDATION_MAP: Record<string, ComponentSpec>;
@@ -1,4 +1,5 @@
1
1
  import * as React from "react";
2
+ import type { Datum, DatumValue } from "./datumTypes";
2
3
  interface SafeRenderProps {
3
4
  componentName: string;
4
5
  width: number;
@@ -25,7 +26,7 @@ export declare function SafeRender({ componentName, width, height, children }: S
25
26
  * Renders a "No data available" placeholder when data is empty.
26
27
  * Returns null when data is present or emptyContent is `false`.
27
28
  */
28
- export declare function renderEmptyState(data: any[] | undefined | null, width: number, height: number, emptyContent?: React.ReactNode | false): React.ReactElement | null;
29
+ export declare function renderEmptyState(data: Datum[] | undefined | null, width: number, height: number, emptyContent?: React.ReactNode | false): React.ReactElement | null;
29
30
  /**
30
31
  * Renders a loading placeholder while `loading` is true.
31
32
  *
@@ -39,7 +40,7 @@ export declare function renderEmptyState(data: any[] | undefined | null, width:
39
40
  */
40
41
  export declare function renderLoadingState(loading: boolean | undefined, width: number, height: number, loadingContent?: React.ReactNode | false): React.ReactElement | null;
41
42
  /** Warn if a string accessor isn't found in the first data element */
42
- export declare function warnMissingField(componentName: string, data: any[] | undefined, accessorName: string, accessorValue: any): void;
43
+ export declare function warnMissingField(componentName: string, data: Datum[] | undefined, accessorName: string, accessorValue: DatumValue): void;
43
44
  /** Warn if data looks like the wrong shape for this chart type */
44
- export declare function warnDataShape(componentName: string, data: any[] | undefined, expectedKeys: string[], hint: string): void;
45
+ export declare function warnDataShape(componentName: string, data: Array<Datum | string | number | boolean | null | undefined> | undefined, expectedKeys: string[], hint: string): void;
45
46
  export {};
@@ -0,0 +1,22 @@
1
+ import type { BigNumberFormat, BigNumberTarget } from "./types";
2
+ export interface TargetPresentation {
3
+ label: string | undefined;
4
+ percent: string | null;
5
+ formattedValue: string;
6
+ text: string;
7
+ }
8
+ interface UseTargetPresentationOptions {
9
+ target: BigNumberTarget | undefined;
10
+ value: number | null | undefined;
11
+ format: BigNumberFormat | undefined;
12
+ locale: string | undefined;
13
+ currency: string | undefined;
14
+ precision: number | undefined;
15
+ }
16
+ /**
17
+ * Format a finite target once for both visible chrome and the accessible
18
+ * sentence. Invalid target values are omitted rather than announcing NaN or
19
+ * infinity.
20
+ */
21
+ export declare function useTargetPresentation({ target, value, format, locale, currency, precision }: UseTargetPresentationOptions): TargetPresentation | null;
22
+ export {};
@@ -70,7 +70,7 @@ export interface BigNumberThreshold {
70
70
  level: BigNumberLevel;
71
71
  /** Explicit colour override; otherwise `var(--semiotic-{level})`. */
72
72
  color?: string;
73
- /** Optional label surfaced in tooltips, the ARIA sentence, and capability output. */
73
+ /** Optional label appended to the generated ARIA sentence. */
74
74
  label?: string;
75
75
  }
76
76
  /**
@@ -252,11 +252,10 @@ export interface BigNumberProps<_TDatum extends Datum = Datum> {
252
252
  * full-width and stacks the chart at full card width under the delta
253
253
  * row. */
254
254
  trendSlot?: BigNumberSlot;
255
- /** **Square** chart embedded beside the value — e.g. a `DonutChart` /
256
- * `PieChart` / `Scatterplot` / `Treemap`. When set, the card splits
257
- * into a left column (header + value + delta) and a right column
258
- * (the square chart). Compose with `trendSlot` to get both
259
- * (square chart on the right, wide trend along the bottom). */
255
+ /** **Square** chart anchored as a top-right card decoration — e.g. a
256
+ * `DonutChart` / `PieChart` / `Scatterplot` / `Treemap`. The header
257
+ * reserves its corner; choose `chartSize` to leave room for large values
258
+ * or compose with `trendSlot` for a wide chart along the bottom. */
260
259
  chartSlot?: BigNumberSlot;
261
260
  /** Reserved pixel size (square) for `chartSlot`. Defaults are
262
261
  * mode-keyed for sparkline scale — 44 px for `tile`, 80 px for
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
6
6
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
7
7
  import { type TooltipProp } from "../../Tooltip/Tooltip";
8
+ import { type StyleRule } from "../shared/styleRules";
8
9
  import type { ForecastConfig, AnomalyConfig } from "../shared/statisticalOverlays";
9
10
  export interface SemanticGradientStop {
10
11
  /** Percent from baseline to line/top. 0 = baseline, 100 = line/top. */
@@ -64,7 +65,14 @@ export interface AreaChartProps<TDatum extends Datum = Datum> extends BaseChartP
64
65
  * Color scheme for categorical data or custom colors array
65
66
  * @default "category10"
66
67
  */
67
- colorScheme?: string | string[];
68
+ colorScheme?: string | string[] | Record<string, string>;
69
+ /**
70
+ * Declarative, threshold-aware area styling. Ordered `{ when, style }`
71
+ * rules; last applicable rule wins. Per-SERIES (resolves against the series'
72
+ * sample datum). A rule `fill` may be a color or a HatchFill — hatch an
73
+ * "uncertain"/"projected" series. Layers over the resolved series color.
74
+ */
75
+ styleRules?: StyleRule[];
68
76
  /**
69
77
  * Curve interpolation type
70
78
  * @default "monotoneX"
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
6
6
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
7
7
  import { type TooltipProp } from "../../Tooltip/Tooltip";
8
+ import { type StyleRule } from "../shared/styleRules";
8
9
  import { type RegressionProp } from "../shared/regressionUtils";
9
10
  /**
10
11
  * BubbleChart component props
@@ -55,7 +56,15 @@ export interface BubbleChartProps<TDatum extends Datum = Datum> extends BaseChar
55
56
  * Color scheme for categorical data or custom colors array
56
57
  * @default "category10"
57
58
  */
58
- colorScheme?: string | string[];
59
+ colorScheme?: string | string[] | Record<string, string>;
60
+ /**
61
+ * Declarative, threshold-aware bubble styling. Ordered `{ when, style }`
62
+ * rules; last applicable rule wins per property. `when` accepts a predicate
63
+ * (`ctx` = `{ value, x, y, size, category }`), a declarative threshold
64
+ * (`{ axis: "x"|"y", gt, … }`), or `true`. A rule's `fill` may be a color or
65
+ * a HatchFill. Layers over the resolved base color.
66
+ */
67
+ styleRules?: StyleRule[];
59
68
  /**
60
69
  * Bubble opacity
61
70
  * @default 0.6
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
6
6
  import { type TooltipProp } from "../../Tooltip/Tooltip";
7
7
  import type { LegendInteractionMode } from "../shared/hooks";
8
+ import { type StyleRule } from "../shared/styleRules";
8
9
  import { type RegressionProp } from "../shared/regressionUtils";
9
10
  import type { ForecastConfig, AnomalyConfig } from "../shared/statisticalOverlays";
10
11
  /**
@@ -25,6 +26,12 @@ export interface ConnectedScatterplotProps<TDatum extends Datum = Datum> extends
25
26
  orderAccessor?: string | ((d: TDatum) => number | Date);
26
27
  /** Label for the ordering metric in tooltips @default "Order" or the accessor field name */
27
28
  orderLabel?: string;
29
+ /**
30
+ * Declarative, threshold-aware point styling (see Scatterplot). Ordered
31
+ * `{ when, style }` rules; last applicable rule wins. Layers over the
32
+ * order-derived base fill.
33
+ */
34
+ styleRules?: StyleRule[];
28
35
  /** Point radius @default 4 */
29
36
  pointRadius?: number;
30
37
  /** Enable hover annotations @default true */
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
6
6
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
7
7
  import { type TooltipProp } from "../../Tooltip/Tooltip";
8
+ export { computeDifferenceSegments } from "./differenceSegments";
8
9
  /**
9
10
  * DifferenceChart props
10
11
  */
@@ -75,57 +76,6 @@ export interface DifferenceChartProps<TDatum extends Datum = Datum> extends Base
75
76
  /** Pass-through StreamXYFrame props. */
76
77
  frameProps?: Partial<Omit<StreamXYFrameProps, "chartType" | "data" | "size">>;
77
78
  }
78
- /**
79
- * Crossover-segmented record used by the area pipeline. One row per
80
- * vertex along either the upper or lower boundary; `__diffSegment` is a
81
- * group key per segment so the area scene builder produces one polygon
82
- * per id with the correct fill color.
83
- */
84
- interface SegmentRow {
85
- __x: number;
86
- /** Upper boundary y value (max of A, B). The area pipeline reads this. */
87
- __y: number;
88
- /** Lower boundary y value (min of A, B) — picked up as per-datum y0. */
89
- __y0: number;
90
- /** Segment id. Format: `"seg-<index>-<winner>"`. */
91
- __diffSegment: string;
92
- /** Which series is on top in this segment ("A" or "B"). Drives fill. */
93
- __diffWinner: "A" | "B";
94
- /** Original A value at this x (or interpolated at crossovers). */
95
- __valA: number;
96
- /** Original B value at this x (or interpolated at crossovers). */
97
- __valB: number;
98
- /** Original datum (for tooltip lookup at non-crossover vertices). */
99
- __sourceDatum?: Datum;
100
- }
101
- /**
102
- * Walk sorted data, splitting at each A↔B crossover. Inserts an
103
- * interpolated vertex on BOTH sides of every crossover so adjacent
104
- * segments meet at a zero-width point (no jagged edges).
105
- *
106
- * Non-finite rows are skipped; the algorithm tracks the most recent
107
- * VALID non-tie row (not the index neighbor) for crossover detection,
108
- * so a non-finite gap doesn't drop a crossover that straddles it.
109
- *
110
- * Tie rows (a === b) are handled distinctly from non-tie rows:
111
- *
112
- * - When a tie row sits BETWEEN two non-tie rows with the SAME
113
- * winner, the tie is emitted in that winner's segment as a
114
- * zero-width vertex.
115
- * - When a tie row sits between non-tie rows with DIFFERENT winners,
116
- * the FIRST tie of the run becomes the crossover vertex. The old
117
- * segment closes at the tie's x, the new segment opens at the same
118
- * point, and any subsequent tie rows (multi-tie runs) carry into
119
- * the new segment as zero-width vertices.
120
- *
121
- * This preserves the data's actual zero-difference point: if the user
122
- * supplied a tie row explicitly, the fill switches color exactly at
123
- * that x rather than at a linear-interpolated x that ignored the tie.
124
- *
125
- * Exported for direct unit-testing — the area pipeline depends on the
126
- * exact crossover-vertex shape produced here.
127
- */
128
- export declare function computeDifferenceSegments<TDatum extends Datum>(raw: TDatum[], getX: (d: TDatum) => number, getA: (d: TDatum) => number, getB: (d: TDatum) => number): SegmentRow[];
129
79
  /**
130
80
  * DifferenceChart — fills the area between two series with a color
131
81
  * that switches based on which series is higher at each x. Crossover
@@ -169,4 +119,3 @@ export declare const DifferenceChart: {
169
119
  <TDatum extends Datum = Datum>(props: DifferenceChartProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
170
120
  displayName?: string;
171
121
  };
172
- export {};
@@ -43,7 +43,7 @@ export interface HeatmapProps<TDatum extends Datum = Datum> extends BaseChartPro
43
43
  /**
44
44
  * Format function for x-axis tick labels
45
45
  */
46
- xFormat?: (d: any, index?: number, allTicks?: number[]) => string;
46
+ xFormat?: (d: string | number | Date, index?: number, allTicks?: number[]) => string;
47
47
  /**
48
48
  * Format function for y-axis tick labels
49
49
  */
@@ -64,7 +64,7 @@ export interface HeatmapProps<TDatum extends Datum = Datum> extends BaseChartPro
64
64
  * customColorScale={scaleSequential(interpolatePlasma).domain([0, 100])}
65
65
  * ```
66
66
  */
67
- customColorScale?: any;
67
+ customColorScale?: (value: number) => string;
68
68
  /**
69
69
  * Show values in cells
70
70
  * @default false
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { LegendInteractionMode } from "../shared/hooks";
6
6
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
7
7
  import { type TooltipProp } from "../../Tooltip/Tooltip";
8
+ import { type StyleRule } from "../shared/styleRules";
8
9
  import type { AnomalyConfig, ForecastConfig } from "../shared/statisticalOverlays";
9
10
  /**
10
11
  * LineChart component props
@@ -73,7 +74,17 @@ export interface LineChartProps<TDatum extends Datum = Datum> extends BaseChartP
73
74
  * Color scheme for categorical data or custom colors array
74
75
  * @default "category10"
75
76
  */
76
- colorScheme?: string | string[];
77
+ colorScheme?: string | string[] | Record<string, string>;
78
+ /**
79
+ * Declarative, threshold-aware line styling. Ordered `{ when, style }`
80
+ * rules; last applicable rule wins per property. NOTE: line styles resolve
81
+ * per-SERIES against the series' first data point, so a rule's `ctx.x`/`ctx.y`
82
+ * reflect that sample, not every vertex (use it to recolor a whole series by
83
+ * a representative value). `when` accepts a predicate, a threshold
84
+ * (`{ axis: "x"|"y", … }`), or `true`. A rule `stroke`/`fill` may be a color
85
+ * or a HatchFill. Layers over the resolved series color.
86
+ */
87
+ styleRules?: StyleRule[];
77
88
  /**
78
89
  * Curve interpolation type
79
90
  * @default "linear"
@@ -37,7 +37,7 @@ export interface MinimapChartProps<TDatum extends Datum = Datum> extends Omit<Ba
37
37
  /** Color-by field or function */
38
38
  colorBy?: ChartAccessor<TDatum, string>;
39
39
  /** Color scheme (default: "category10") */
40
- colorScheme?: string | string[];
40
+ colorScheme?: string | string[] | Record<string, string>;
41
41
  /** Curve type (default: "linear") */
42
42
  curve?: "linear" | "monotoneX" | "monotoneY" | "step" | "stepAfter" | "stepBefore" | "basis" | "cardinal" | "catmullRom";
43
43
  /** Line stroke width (default: 2) */
@@ -28,12 +28,12 @@ export interface MultiAxisLineChartProps<TDatum extends Datum = Datum> extends B
28
28
  /** Array of data points shared by both series */
29
29
  data?: TDatum[];
30
30
  /** Field name or function to access x values @default "x" */
31
- xAccessor?: ChartAccessor<TDatum, number>;
31
+ xAccessor?: ChartAccessor<TDatum, number | Date | string>;
32
32
  /** Series configuration — exactly 2 for dual-axis mode.
33
33
  * If not exactly 2, renders as a normal line chart with a console warning. */
34
34
  series: MultiAxisSeriesConfig<TDatum>[];
35
35
  /** Color scheme or custom colors array @default "category10" */
36
- colorScheme?: string | string[];
36
+ colorScheme?: string | string[] | Record<string, string>;
37
37
  /** Enable hover annotations @default true */
38
38
  enableHover?: boolean;
39
39
  /** Curve interpolation @default "monotoneX" */
@@ -5,6 +5,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
5
5
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
6
6
  import { type TooltipProp } from "../../Tooltip/Tooltip";
7
7
  import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
8
+ import { type StyleRule } from "../shared/styleRules";
8
9
  /**
9
10
  * Quadrant label and color configuration
10
11
  */
@@ -69,7 +70,13 @@ export interface QuadrantChartProps<TDatum extends Datum = Datum> extends BaseCh
69
70
  /** Field name or function to determine point color */
70
71
  colorBy?: ChartAccessor<TDatum, string>;
71
72
  /** Color scheme for categorical data @default "category10" */
72
- colorScheme?: string | string[];
73
+ colorScheme?: string | string[] | Record<string, string>;
74
+ /**
75
+ * Declarative, threshold-aware point styling (see Scatterplot). Ordered
76
+ * `{ when, style }` rules; last applicable rule wins. Layers over the
77
+ * quadrant-derived base fill; `frameProps.pointStyle` still overrides.
78
+ */
79
+ styleRules?: StyleRule[];
73
80
  /** Field name or function to determine point size */
74
81
  sizeBy?: ChartAccessor<TDatum, number>;
75
82
  /** Min and max radius for points @default [3, 15] */
@@ -6,6 +6,7 @@ import type { RealtimeFrameHandle } from "../../realtime/types";
6
6
  import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
7
7
  import { type TooltipProp } from "../../Tooltip/Tooltip";
8
8
  import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
9
+ import { type StyleRule } from "../shared/styleRules";
9
10
  import { type RegressionProp } from "../shared/regressionUtils";
10
11
  import type { ForecastConfig, AnomalyConfig } from "../shared/statisticalOverlays";
11
12
  /**
@@ -25,7 +26,16 @@ export interface ScatterplotProps<TDatum extends Datum = Datum> extends BaseChar
25
26
  /** Field name or function to determine point color */
26
27
  colorBy?: ChartAccessor<TDatum, string>;
27
28
  /** Color scheme for categorical data or custom colors array @default "category10" */
28
- colorScheme?: string | string[];
29
+ colorScheme?: string | string[] | Record<string, string>;
30
+ /**
31
+ * Declarative, threshold-aware point styling. Ordered `{ when, style }`
32
+ * rules; the last applicable rule wins per property. `when` accepts a
33
+ * predicate `(datum, ctx) => boolean` (`ctx` = `{ value, x, y, category }`),
34
+ * a declarative threshold (`{ axis: "x"|"y", gt, lte, within, in, … }` —
35
+ * target either axis regardless of accessor field name), or `true`. A rule's
36
+ * `fill` may be a color or a HatchFill. Layers over the resolved base color.
37
+ */
38
+ styleRules?: StyleRule[];
29
39
  /** Field name or function to determine point size */
30
40
  sizeBy?: ChartAccessor<TDatum, number>;
31
41
  /** Min and max radius for points @default [3, 15] */
@@ -12,7 +12,7 @@ export interface ScatterplotMatrixProps<TDatum extends Datum = Datum> extends Ba
12
12
  /** Field or function to determine point color */
13
13
  colorBy?: ChartAccessor<TDatum, string>;
14
14
  /** Color scheme @default "category10" */
15
- colorScheme?: string | string[];
15
+ colorScheme?: string | string[] | Record<string, string>;
16
16
  /** Size of each cell in pixels @default 150 */
17
17
  cellSize?: number;
18
18
  /** Gap between cells in pixels @default 4 */
@@ -39,6 +39,16 @@ export interface ScatterplotMatrixProps<TDatum extends Datum = Datum> extends Ba
39
39
  showLegend?: boolean;
40
40
  /** Field or function to identify each data point in tooltips. Defaults to "Row {index}" */
41
41
  idAccessor?: string | ((d: TDatum) => string);
42
+ /**
43
+ * Called when a point in any cell is clicked. Receives the clicked row datum
44
+ * and its grid-relative pixel position `{ x, y }` — the same coordinate space
45
+ * as `onObservation`. Fires in hover mode (the default); in brush mode the
46
+ * drag-select overlay captures pointer events, so clicks are not delivered.
47
+ */
48
+ onClick?: (datum: TDatum, event: {
49
+ x: number;
50
+ y: number;
51
+ }) => void;
42
52
  }
43
53
  /**
44
54
  * ScatterplotMatrix (SPLOM) — multi-dimensional scatter visualization