semiotic 2.0.3 → 3.0.0-beta.2

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 (508) hide show
  1. package/CLAUDE.md +828 -0
  2. package/README.md +215 -37
  3. package/ai/cli.js +48 -0
  4. package/ai/dist/ai/componentRegistry.js +45 -0
  5. package/ai/dist/ai/mcp-server.js +99 -0
  6. package/ai/dist/ai/renderHOCToSVG.js +77 -0
  7. package/ai/dist/src/components/Annotation.js +358 -0
  8. package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
  9. package/ai/dist/src/components/Axis/Axis.js +374 -0
  10. package/ai/dist/src/components/Axis/axisTitle.js +14 -0
  11. package/ai/dist/src/components/Axis/index.js +7 -0
  12. package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
  13. package/ai/dist/src/components/Brush.js +84 -0
  14. package/ai/dist/src/components/ChartErrorBoundary.js +91 -0
  15. package/ai/dist/src/components/DividedLine.js +65 -0
  16. package/ai/dist/src/components/Legend.js +140 -0
  17. package/ai/dist/src/components/LinkedCharts.js +95 -0
  18. package/ai/dist/src/components/ThemeProvider.js +79 -0
  19. package/ai/dist/src/components/Tooltip/Tooltip.js +309 -0
  20. package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
  21. package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
  22. package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
  23. package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
  24. package/ai/dist/src/components/annotationRules/networkframeRules.js +196 -0
  25. package/ai/dist/src/components/annotationRules/xyframeRules.js +297 -0
  26. package/ai/dist/src/components/batchWork.js +35 -0
  27. package/ai/dist/src/components/charts/index.js +109 -0
  28. package/ai/dist/src/components/charts/network/ChordDiagram.js +142 -0
  29. package/ai/dist/src/components/charts/network/CirclePack.js +108 -0
  30. package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +121 -0
  31. package/ai/dist/src/components/charts/network/SankeyDiagram.js +155 -0
  32. package/ai/dist/src/components/charts/network/TreeDiagram.js +110 -0
  33. package/ai/dist/src/components/charts/network/Treemap.js +106 -0
  34. package/ai/dist/src/components/charts/ordinal/BarChart.js +156 -0
  35. package/ai/dist/src/components/charts/ordinal/BoxPlot.js +139 -0
  36. package/ai/dist/src/components/charts/ordinal/DonutChart.js +130 -0
  37. package/ai/dist/src/components/charts/ordinal/DotPlot.js +126 -0
  38. package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +129 -0
  39. package/ai/dist/src/components/charts/ordinal/Histogram.js +132 -0
  40. package/ai/dist/src/components/charts/ordinal/PieChart.js +128 -0
  41. package/ai/dist/src/components/charts/ordinal/RidgelinePlot.js +130 -0
  42. package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +130 -0
  43. package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +147 -0
  44. package/ai/dist/src/components/charts/ordinal/ViolinPlot.js +138 -0
  45. package/ai/dist/src/components/charts/realtime/RealtimeHeatmap.js +79 -0
  46. package/ai/dist/src/components/charts/realtime/RealtimeHistogram.js +114 -0
  47. package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +93 -0
  48. package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +105 -0
  49. package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +106 -0
  50. package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
  51. package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
  52. package/ai/dist/src/components/charts/shared/formatUtils.js +213 -0
  53. package/ai/dist/src/components/charts/shared/hooks.js +49 -0
  54. package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
  55. package/ai/dist/src/components/charts/shared/selectionUtils.js +67 -0
  56. package/ai/dist/src/components/charts/shared/tooltipUtils.js +79 -0
  57. package/ai/dist/src/components/charts/shared/types.js +2 -0
  58. package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
  59. package/ai/dist/src/components/charts/shared/validateProps.js +736 -0
  60. package/ai/dist/src/components/charts/xy/AreaChart.js +230 -0
  61. package/ai/dist/src/components/charts/xy/BubbleChart.js +251 -0
  62. package/ai/dist/src/components/charts/xy/Heatmap.js +235 -0
  63. package/ai/dist/src/components/charts/xy/LineChart.js +307 -0
  64. package/ai/dist/src/components/charts/xy/MinimapChart.js +298 -0
  65. package/ai/dist/src/components/charts/xy/Scatterplot.js +172 -0
  66. package/ai/dist/src/components/charts/xy/ScatterplotMatrix.js +426 -0
  67. package/ai/dist/src/components/charts/xy/StackedAreaChart.js +231 -0
  68. package/ai/dist/src/components/constants/coordinateNames.js +11 -0
  69. package/ai/dist/src/components/constants/frame_props.js +251 -0
  70. package/ai/dist/src/components/data/dataFunctions.js +487 -0
  71. package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
  72. package/ai/dist/src/components/data/transforms.js +143 -0
  73. package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
  74. package/ai/dist/src/components/export/exportChart.js +121 -0
  75. package/ai/dist/src/components/generic_utilities/functions.js +5 -0
  76. package/ai/dist/src/components/geometry/areaDrawing.js +312 -0
  77. package/ai/dist/src/components/geometry/contourLayout.js +73 -0
  78. package/ai/dist/src/components/geometry/hexbinLayout.js +163 -0
  79. package/ai/dist/src/components/geometry/lineDrawing.js +356 -0
  80. package/ai/dist/src/components/geometry/sankeyLinks.js +331 -0
  81. package/ai/dist/src/components/geometry/summaryLayouts.js +136 -0
  82. package/ai/dist/src/components/index.js +18 -0
  83. package/ai/dist/src/components/processing/InteractionItems.js +223 -0
  84. package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
  85. package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
  86. package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
  87. package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
  88. package/ai/dist/src/components/processing/layouts/index.js +32 -0
  89. package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
  90. package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
  91. package/ai/dist/src/components/processing/layouts/types.js +2 -0
  92. package/ai/dist/src/components/processing/networkDefaults.js +39 -0
  93. package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
  94. package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
  95. package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
  96. package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
  97. package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
  98. package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
  99. package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
  100. package/ai/dist/src/components/realtime/renderers/types.js +2 -0
  101. package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
  102. package/ai/dist/src/components/realtime/types.js +2 -0
  103. package/ai/dist/src/components/semiotic-ai.js +89 -0
  104. package/ai/dist/src/components/semiotic-data.js +12 -0
  105. package/ai/dist/src/components/semiotic-network.js +38 -0
  106. package/ai/dist/src/components/semiotic-ordinal.js +28 -0
  107. package/ai/dist/src/components/semiotic-realtime.js +30 -0
  108. package/ai/dist/src/components/semiotic-server.js +8 -0
  109. package/ai/dist/src/components/semiotic-xy.js +35 -0
  110. package/ai/dist/src/components/semiotic.js +109 -0
  111. package/ai/dist/src/components/server/renderToStaticSVG.js +594 -0
  112. package/ai/dist/src/components/store/SelectionStore.js +91 -0
  113. package/ai/dist/src/components/store/ThemeStore.js +78 -0
  114. package/ai/dist/src/components/store/TooltipStore.js +13 -0
  115. package/ai/dist/src/components/store/createStore.js +81 -0
  116. package/ai/dist/src/components/store/useSelection.js +133 -0
  117. package/ai/dist/src/components/stream/CanvasHitTester.js +164 -0
  118. package/ai/dist/src/components/stream/DataSourceAdapter.js +99 -0
  119. package/ai/dist/src/components/stream/MarginalGraphics.js +266 -0
  120. package/ai/dist/src/components/stream/NetworkCanvasHitTester.js +228 -0
  121. package/ai/dist/src/components/stream/NetworkPipelineStore.js +498 -0
  122. package/ai/dist/src/components/stream/NetworkSVGOverlay.js +70 -0
  123. package/ai/dist/src/components/stream/NetworkSceneGraph.js +38 -0
  124. package/ai/dist/src/components/stream/OrdinalCanvasHitTester.js +146 -0
  125. package/ai/dist/src/components/stream/OrdinalPipelineStore.js +786 -0
  126. package/ai/dist/src/components/stream/OrdinalSVGOverlay.js +130 -0
  127. package/ai/dist/src/components/stream/ParticlePool.js +174 -0
  128. package/ai/dist/src/components/stream/PipelineStore.js +1243 -0
  129. package/ai/dist/src/components/stream/SVGOverlay.js +129 -0
  130. package/ai/dist/src/components/stream/SceneGraph.js +132 -0
  131. package/ai/dist/src/components/stream/StreamNetworkFrame.js +561 -0
  132. package/ai/dist/src/components/stream/StreamOrdinalFrame.js +492 -0
  133. package/ai/dist/src/components/stream/StreamXYFrame.js +590 -0
  134. package/ai/dist/src/components/stream/accessorUtils.js +20 -0
  135. package/ai/dist/src/components/stream/index.js +32 -0
  136. package/ai/dist/src/components/stream/layouts/chordLayoutPlugin.js +352 -0
  137. package/ai/dist/src/components/stream/layouts/forceLayoutPlugin.js +230 -0
  138. package/ai/dist/src/components/stream/layouts/hierarchyLayoutPlugin.js +568 -0
  139. package/ai/dist/src/components/stream/layouts/index.js +28 -0
  140. package/ai/dist/src/components/stream/layouts/sankeyLayoutPlugin.js +245 -0
  141. package/ai/dist/src/components/stream/networkTypes.js +17 -0
  142. package/ai/dist/src/components/stream/ordinalSceneBuilders/barScene.js +126 -0
  143. package/ai/dist/src/components/stream/ordinalSceneBuilders/connectorScene.js +62 -0
  144. package/ai/dist/src/components/stream/ordinalSceneBuilders/pieScene.js +33 -0
  145. package/ai/dist/src/components/stream/ordinalSceneBuilders/pointScene.js +63 -0
  146. package/ai/dist/src/components/stream/ordinalSceneBuilders/statisticalScene.js +278 -0
  147. package/ai/dist/src/components/stream/ordinalSceneBuilders/timelineScene.js +30 -0
  148. package/ai/dist/src/components/stream/ordinalSceneBuilders/types.js +2 -0
  149. package/ai/dist/src/components/stream/ordinalTypes.js +2 -0
  150. package/ai/dist/src/components/stream/renderers/areaCanvasRenderer.js +48 -0
  151. package/ai/dist/src/components/stream/renderers/barCanvasRenderer.js +70 -0
  152. package/ai/dist/src/components/stream/renderers/boxplotCanvasRenderer.js +75 -0
  153. package/ai/dist/src/components/stream/renderers/candlestickCanvasRenderer.js +28 -0
  154. package/ai/dist/src/components/stream/renderers/connectorCanvasRenderer.js +47 -0
  155. package/ai/dist/src/components/stream/renderers/heatmapCanvasRenderer.js +31 -0
  156. package/ai/dist/src/components/stream/renderers/lineCanvasRenderer.js +140 -0
  157. package/ai/dist/src/components/stream/renderers/networkArcRenderer.js +38 -0
  158. package/ai/dist/src/components/stream/renderers/networkCircleRenderer.js +37 -0
  159. package/ai/dist/src/components/stream/renderers/networkEdgeRenderer.js +102 -0
  160. package/ai/dist/src/components/stream/renderers/networkParticleRenderer.js +63 -0
  161. package/ai/dist/src/components/stream/renderers/networkRectRenderer.js +35 -0
  162. package/ai/dist/src/components/stream/renderers/pointCanvasRenderer.js +38 -0
  163. package/ai/dist/src/components/stream/renderers/swarmCanvasRenderer.js +10 -0
  164. package/ai/dist/src/components/stream/renderers/types.js +2 -0
  165. package/ai/dist/src/components/stream/renderers/violinCanvasRenderer.js +47 -0
  166. package/ai/dist/src/components/stream/renderers/waterfallCanvasRenderer.js +38 -0
  167. package/ai/dist/src/components/stream/renderers/wedgeCanvasRenderer.js +33 -0
  168. package/ai/dist/src/components/stream/types.js +2 -0
  169. package/ai/dist/src/components/types/annotationTypes.js +2 -0
  170. package/ai/dist/src/components/types/canvasTypes.js +2 -0
  171. package/ai/dist/src/components/types/generalTypes.js +2 -0
  172. package/ai/dist/src/components/types/interactionTypes.js +2 -0
  173. package/ai/dist/src/components/types/legendTypes.js +2 -0
  174. package/ai/dist/src/components/types/networkTypes.js +2 -0
  175. package/ai/dist/src/components/types/ordinalTypes.js +2 -0
  176. package/ai/dist/src/components/types/xyTypes.js +2 -0
  177. package/ai/dist/src/components/useBoundingRect.js +24 -0
  178. package/ai/dist/src/components/visualizationLayerBehavior/axis.js +301 -0
  179. package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
  180. package/ai/dist/src/setupTests.js +4 -0
  181. package/ai/examples.md +489 -0
  182. package/ai/schema.json +1338 -0
  183. package/ai/system-prompt.md +41 -0
  184. package/dist/AnnotationLayer/AnnotationLayer.d.ts +0 -1
  185. package/dist/Axis/axisTitle.d.ts +3 -3
  186. package/dist/Axis/summaryGraphic.d.ts +1 -1
  187. package/dist/ChartErrorBoundary.d.ts +39 -0
  188. package/dist/LinkedCharts.d.ts +42 -0
  189. package/dist/ThemeProvider.d.ts +12 -0
  190. package/dist/Tooltip/Tooltip.d.ts +141 -0
  191. package/dist/TooltipPositioner/index.d.ts +1 -1
  192. package/dist/annotationLayerBehavior/annotationHandling.d.ts +2 -2
  193. package/dist/annotationRules/networkframeRules.d.ts +2 -2
  194. package/dist/annotationRules/xyframeRules.d.ts +2 -2
  195. package/dist/batchWork.d.ts +1 -1
  196. package/dist/charts/index.d.ts +74 -0
  197. package/dist/charts/network/ChordDiagram.d.ts +36 -0
  198. package/dist/charts/network/CirclePack.d.ts +32 -0
  199. package/dist/charts/network/ForceDirectedGraph.d.ts +38 -0
  200. package/dist/charts/network/SankeyDiagram.d.ts +38 -0
  201. package/dist/charts/network/TreeDiagram.d.ts +34 -0
  202. package/dist/charts/network/Treemap.d.ts +33 -0
  203. package/dist/charts/ordinal/BarChart.d.ts +32 -0
  204. package/dist/charts/ordinal/BoxPlot.d.ts +27 -0
  205. package/dist/charts/ordinal/DonutChart.d.ts +23 -0
  206. package/dist/charts/ordinal/DotPlot.d.ts +27 -0
  207. package/dist/charts/ordinal/GroupedBarChart.d.ts +26 -0
  208. package/dist/charts/ordinal/Histogram.d.ts +26 -0
  209. package/dist/charts/ordinal/PieChart.d.ts +21 -0
  210. package/dist/charts/ordinal/RidgelinePlot.d.ts +34 -0
  211. package/dist/charts/ordinal/StackedBarChart.d.ts +27 -0
  212. package/dist/charts/ordinal/SwarmPlot.d.ts +29 -0
  213. package/dist/charts/ordinal/ViolinPlot.d.ts +28 -0
  214. package/dist/charts/realtime/RealtimeHeatmap.d.ts +95 -0
  215. package/dist/charts/realtime/RealtimeHistogram.d.ts +119 -0
  216. package/dist/charts/realtime/RealtimeLineChart.d.ts +98 -0
  217. package/dist/charts/realtime/RealtimeSwarmChart.d.ts +100 -0
  218. package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +97 -0
  219. package/dist/charts/shared/ChartError.d.ts +19 -0
  220. package/dist/charts/shared/colorUtils.d.ts +62 -0
  221. package/dist/charts/shared/formatUtils.d.ts +94 -0
  222. package/dist/charts/shared/hooks.d.ts +20 -0
  223. package/dist/charts/shared/legendUtils.d.ts +32 -0
  224. package/dist/charts/shared/selectionUtils.d.ts +51 -0
  225. package/dist/charts/shared/tooltipUtils.d.ts +18 -0
  226. package/dist/charts/shared/types.d.ts +97 -0
  227. package/dist/charts/shared/validateChartData.d.ts +41 -0
  228. package/dist/charts/shared/validateProps.d.ts +18 -0
  229. package/dist/charts/xy/AreaChart.d.ts +130 -0
  230. package/dist/charts/xy/BubbleChart.d.ts +164 -0
  231. package/dist/charts/xy/Heatmap.d.ts +156 -0
  232. package/dist/charts/xy/LineChart.d.ts +196 -0
  233. package/dist/charts/xy/MinimapChart.d.ts +73 -0
  234. package/dist/charts/xy/Scatterplot.d.ts +55 -0
  235. package/dist/charts/xy/ScatterplotMatrix.d.ts +71 -0
  236. package/dist/charts/xy/StackedAreaChart.d.ts +134 -0
  237. package/dist/constants/frame_props.d.ts +9 -0
  238. package/dist/data/dataFunctions.d.ts +10 -11
  239. package/dist/data/transforms.d.ts +45 -0
  240. package/dist/export/exportChart.d.ts +16 -0
  241. package/dist/{svg → geometry}/areaDrawing.d.ts +3 -13
  242. package/dist/geometry/contourLayout.d.ts +6 -0
  243. package/dist/geometry/hexbinLayout.d.ts +7 -0
  244. package/dist/{svg → geometry}/lineDrawing.d.ts +7 -35
  245. package/dist/geometry/sankeyLinks.d.ts +2 -0
  246. package/dist/geometry/summaryLayouts.d.ts +45 -0
  247. package/dist/index.d.ts +1 -125
  248. package/dist/network.js +7495 -0
  249. package/dist/network.js.map +1 -0
  250. package/dist/network.min.js +1 -0
  251. package/dist/network.module.js +7458 -0
  252. package/dist/network.module.js.map +1 -0
  253. package/dist/network.module.min.js +1 -0
  254. package/dist/ordinal.js +6497 -0
  255. package/dist/ordinal.js.map +1 -0
  256. package/dist/ordinal.min.js +1 -0
  257. package/dist/ordinal.module.js +6465 -0
  258. package/dist/ordinal.module.js.map +1 -0
  259. package/dist/ordinal.module.min.js +1 -0
  260. package/dist/processing/InteractionItems.d.ts +5 -4
  261. package/dist/processing/hierarchyUtils.d.ts +16 -0
  262. package/dist/processing/layouts/chordLayout.d.ts +2 -0
  263. package/dist/processing/layouts/forceLayout.d.ts +3 -0
  264. package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
  265. package/dist/processing/layouts/index.d.ts +8 -0
  266. package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
  267. package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
  268. package/dist/processing/layouts/types.d.ts +17 -0
  269. package/dist/processing/networkDefaults.d.ts +36 -0
  270. package/dist/realtime/BinAccumulator.d.ts +8 -0
  271. package/dist/realtime/IncrementalExtent.d.ts +13 -0
  272. package/dist/realtime/RingBuffer.d.ts +19 -0
  273. package/dist/realtime/renderers/barRenderer.d.ts +2 -0
  274. package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
  275. package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
  276. package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
  277. package/dist/realtime/renderers/types.d.ts +9 -0
  278. package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
  279. package/dist/realtime/types.d.ts +113 -0
  280. package/dist/realtime.js +7072 -0
  281. package/dist/realtime.js.map +1 -0
  282. package/dist/realtime.min.js +1 -0
  283. package/dist/realtime.module.js +7043 -0
  284. package/dist/realtime.module.js.map +1 -0
  285. package/dist/realtime.module.min.js +1 -0
  286. package/dist/semiotic-ai.d.ts +36 -0
  287. package/dist/semiotic-ai.js +13323 -0
  288. package/dist/semiotic-ai.js.map +1 -0
  289. package/dist/semiotic-ai.min.js +1 -0
  290. package/dist/semiotic-ai.module.js +13264 -0
  291. package/dist/semiotic-ai.module.js.map +1 -0
  292. package/dist/semiotic-ai.module.min.js +1 -0
  293. package/dist/semiotic-data.d.ts +5 -0
  294. package/dist/semiotic-data.js +141 -0
  295. package/dist/semiotic-data.js.map +1 -0
  296. package/dist/semiotic-data.min.js +1 -0
  297. package/dist/semiotic-data.module.js +136 -0
  298. package/dist/semiotic-data.module.js.map +1 -0
  299. package/dist/semiotic-data.module.min.js +1 -0
  300. package/dist/semiotic-network.d.ts +23 -0
  301. package/dist/semiotic-ordinal.d.ts +19 -0
  302. package/dist/semiotic-realtime.d.ts +22 -0
  303. package/dist/semiotic-server.d.ts +1 -0
  304. package/dist/semiotic-xy.d.ts +21 -0
  305. package/dist/semiotic.d.ts +41 -28
  306. package/dist/semiotic.js +16257 -13130
  307. package/dist/semiotic.js.map +1 -0
  308. package/dist/semiotic.min.js +1 -0
  309. package/dist/semiotic.module.js +16198 -13100
  310. package/dist/semiotic.module.js.map +1 -0
  311. package/dist/semiotic.module.min.js +1 -0
  312. package/dist/server/renderToStaticSVG.d.ts +9 -0
  313. package/dist/server.js +5191 -0
  314. package/dist/server.js.map +1 -0
  315. package/dist/server.min.js +1 -0
  316. package/dist/server.module.js +5166 -0
  317. package/dist/server.module.js.map +1 -0
  318. package/dist/server.module.min.js +1 -0
  319. package/dist/store/SelectionStore.d.ts +29 -0
  320. package/dist/store/ThemeStore.d.ts +26 -0
  321. package/dist/store/useSelection.d.ts +66 -0
  322. package/dist/stream/CanvasHitTester.d.ts +18 -0
  323. package/dist/stream/DataSourceAdapter.d.ts +32 -0
  324. package/dist/stream/MarginalGraphics.d.ts +19 -0
  325. package/dist/stream/NetworkCanvasHitTester.d.ts +14 -0
  326. package/dist/stream/NetworkPipelineStore.d.ts +74 -0
  327. package/dist/stream/NetworkSVGOverlay.d.ts +40 -0
  328. package/dist/stream/NetworkSceneGraph.d.ts +14 -0
  329. package/dist/stream/OrdinalCanvasHitTester.d.ts +9 -0
  330. package/dist/stream/OrdinalPipelineStore.d.ts +65 -0
  331. package/dist/stream/OrdinalSVGOverlay.d.ts +34 -0
  332. package/dist/stream/ParticlePool.d.ts +28 -0
  333. package/dist/stream/PipelineStore.d.ts +161 -0
  334. package/dist/stream/SVGOverlay.d.ts +37 -0
  335. package/dist/stream/SceneGraph.d.ts +16 -0
  336. package/dist/stream/StreamNetworkFrame.d.ts +4 -0
  337. package/dist/stream/StreamOrdinalFrame.d.ts +4 -0
  338. package/dist/stream/StreamXYFrame.d.ts +4 -0
  339. package/dist/stream/accessorUtils.d.ts +2 -0
  340. package/dist/stream/index.d.ts +16 -0
  341. package/dist/stream/layouts/chordLayoutPlugin.d.ts +8 -0
  342. package/dist/stream/layouts/forceLayoutPlugin.d.ts +9 -0
  343. package/dist/stream/layouts/hierarchyLayoutPlugin.d.ts +17 -0
  344. package/dist/stream/layouts/index.d.ts +11 -0
  345. package/dist/stream/layouts/sankeyLayoutPlugin.d.ts +8 -0
  346. package/dist/stream/networkTypes.d.ts +346 -0
  347. package/dist/stream/ordinalSceneBuilders/barScene.d.ts +4 -0
  348. package/dist/stream/ordinalSceneBuilders/connectorScene.d.ts +3 -0
  349. package/dist/stream/ordinalSceneBuilders/pieScene.d.ts +3 -0
  350. package/dist/stream/ordinalSceneBuilders/pointScene.d.ts +4 -0
  351. package/dist/stream/ordinalSceneBuilders/statisticalScene.d.ts +6 -0
  352. package/dist/stream/ordinalSceneBuilders/timelineScene.d.ts +3 -0
  353. package/dist/stream/ordinalSceneBuilders/types.d.ts +21 -0
  354. package/dist/stream/ordinalTypes.d.ts +225 -0
  355. package/dist/stream/renderers/areaCanvasRenderer.d.ts +7 -0
  356. package/dist/stream/renderers/barCanvasRenderer.d.ts +7 -0
  357. package/dist/stream/renderers/boxplotCanvasRenderer.d.ts +2 -0
  358. package/dist/stream/renderers/candlestickCanvasRenderer.d.ts +2 -0
  359. package/dist/stream/renderers/connectorCanvasRenderer.d.ts +2 -0
  360. package/dist/stream/renderers/heatmapCanvasRenderer.d.ts +6 -0
  361. package/dist/stream/renderers/lineCanvasRenderer.d.ts +8 -0
  362. package/dist/stream/renderers/networkArcRenderer.d.ts +5 -0
  363. package/dist/stream/renderers/networkCircleRenderer.d.ts +5 -0
  364. package/dist/stream/renderers/networkEdgeRenderer.d.ts +10 -0
  365. package/dist/stream/renderers/networkParticleRenderer.d.ts +11 -0
  366. package/dist/stream/renderers/networkRectRenderer.d.ts +5 -0
  367. package/dist/stream/renderers/pointCanvasRenderer.d.ts +7 -0
  368. package/dist/stream/renderers/swarmCanvasRenderer.d.ts +7 -0
  369. package/dist/stream/renderers/types.d.ts +7 -0
  370. package/dist/stream/renderers/violinCanvasRenderer.d.ts +2 -0
  371. package/dist/stream/renderers/waterfallCanvasRenderer.d.ts +8 -0
  372. package/dist/stream/renderers/wedgeCanvasRenderer.d.ts +2 -0
  373. package/dist/stream/types.d.ts +307 -0
  374. package/dist/types/annotationTypes.d.ts +13 -18
  375. package/dist/types/canvasTypes.d.ts +1 -1
  376. package/dist/types/generalTypes.d.ts +41 -36
  377. package/dist/types/interactionTypes.d.ts +7 -9
  378. package/dist/types/legendTypes.d.ts +2 -2
  379. package/dist/types/networkTypes.d.ts +40 -30
  380. package/dist/types/ordinalTypes.d.ts +27 -18
  381. package/dist/types/xyTypes.d.ts +1 -95
  382. package/dist/visualizationLayerBehavior/axis.d.ts +3 -5
  383. package/dist/visualizationLayerBehavior/general.d.ts +8 -12
  384. package/dist/xy.js +6993 -0
  385. package/dist/xy.js.map +1 -0
  386. package/dist/xy.min.js +1 -0
  387. package/dist/xy.module.js +6957 -0
  388. package/dist/xy.module.js.map +1 -0
  389. package/dist/xy.module.min.js +1 -0
  390. package/package.json +123 -67
  391. package/dist/AnnotationLayer/helpers.d.ts +0 -6
  392. package/dist/AnnotationLayer/index.d.ts +0 -2
  393. package/dist/FacetController.d.ts +0 -12
  394. package/dist/Frame.d.ts +0 -2
  395. package/dist/InteractionLayer.d.ts +0 -3
  396. package/dist/Mark/Mark.d.ts +0 -3
  397. package/dist/Mark/Mark.types.d.ts +0 -10
  398. package/dist/Mark/constants/markTransition.d.ts +0 -10
  399. package/dist/Mark/markBehavior/drawing.d.ts +0 -13
  400. package/dist/MiniMap.d.ts +0 -14
  401. package/dist/MinimapXYFrame.d.ts +0 -10
  402. package/dist/NetworkFrame.d.ts +0 -4
  403. package/dist/OrdinalFrame.d.ts +0 -4
  404. package/dist/ResponsiveFrame.d.ts +0 -22
  405. package/dist/ResponsiveMinimapXYFrame.d.ts +0 -6
  406. package/dist/ResponsiveNetworkFrame.d.ts +0 -6
  407. package/dist/ResponsiveOrdinalFrame.d.ts +0 -6
  408. package/dist/ResponsiveXYFrame.d.ts +0 -6
  409. package/dist/SpanOrDiv.d.ts +0 -10
  410. package/dist/SparkFrame.d.ts +0 -14
  411. package/dist/SparkNetworkFrame.d.ts +0 -5
  412. package/dist/SparkOrdinalFrame.d.ts +0 -5
  413. package/dist/SparkXYFrame.d.ts +0 -5
  414. package/dist/VisualizationLayer.d.ts +0 -33
  415. package/dist/XYFrame.d.ts +0 -4
  416. package/dist/annotationRules/orframeRules.d.ts +0 -105
  417. package/dist/components/Annotation.d.ts +0 -3
  418. package/dist/components/AnnotationLayer/AnnotationLayer.d.ts +0 -26
  419. package/dist/components/Axis/Axis.d.ts +0 -7
  420. package/dist/components/Axis/axisTitle.d.ts +0 -10
  421. package/dist/components/Axis/index.d.ts +0 -2
  422. package/dist/components/Axis/summaryGraphic.d.ts +0 -17
  423. package/dist/components/Brush.d.ts +0 -12
  424. package/dist/components/DividedLine.d.ts +0 -16
  425. package/dist/components/FacetController.d.ts +0 -12
  426. package/dist/components/Frame.d.ts +0 -2
  427. package/dist/components/InteractionLayer.d.ts +0 -3
  428. package/dist/components/Legend.d.ts +0 -3
  429. package/dist/components/Mark/Mark.d.ts +0 -3
  430. package/dist/components/Mark/Mark.types.d.ts +0 -10
  431. package/dist/components/Mark/markBehavior/drawing.d.ts +0 -13
  432. package/dist/components/MiniMap.d.ts +0 -14
  433. package/dist/components/MinimapXYFrame.d.ts +0 -10
  434. package/dist/components/NetworkFrame.d.ts +0 -4
  435. package/dist/components/OrdinalFrame.d.ts +0 -4
  436. package/dist/components/ResponsiveFrame.d.ts +0 -22
  437. package/dist/components/ResponsiveMinimapXYFrame.d.ts +0 -6
  438. package/dist/components/ResponsiveNetworkFrame.d.ts +0 -6
  439. package/dist/components/ResponsiveOrdinalFrame.d.ts +0 -6
  440. package/dist/components/ResponsiveXYFrame.d.ts +0 -6
  441. package/dist/components/SpanOrDiv.d.ts +0 -10
  442. package/dist/components/SparkFrame.d.ts +0 -14
  443. package/dist/components/SparkNetworkFrame.d.ts +0 -5
  444. package/dist/components/SparkOrdinalFrame.d.ts +0 -5
  445. package/dist/components/SparkXYFrame.d.ts +0 -5
  446. package/dist/components/TooltipPositioner/index.d.ts +0 -7
  447. package/dist/components/VisualizationLayer.d.ts +0 -33
  448. package/dist/components/XYFrame.d.ts +0 -4
  449. package/dist/components/annotationLayerBehavior/annotationHandling.d.ts +0 -19
  450. package/dist/components/annotationLayerBehavior/d3labeler.d.ts +0 -9
  451. package/dist/components/annotationRules/baseRules.d.ts +0 -25
  452. package/dist/components/annotationRules/networkframeRules.d.ts +0 -48
  453. package/dist/components/annotationRules/orframeRules.d.ts +0 -105
  454. package/dist/components/annotationRules/xyframeRules.d.ts +0 -117
  455. package/dist/components/batchWork.d.ts +0 -6
  456. package/dist/components/constants/coordinateNames.d.ts +0 -8
  457. package/dist/components/constants/frame_props.d.ts +0 -4
  458. package/dist/components/constants/jsx.d.ts +0 -19
  459. package/dist/components/data/dataFunctions.d.ts +0 -46
  460. package/dist/components/data/multiAccessorUtils.d.ts +0 -1
  461. package/dist/components/data/unflowedFunctions.d.ts +0 -1
  462. package/dist/components/generic_utilities/functions.d.ts +0 -1
  463. package/dist/components/index.d.ts +0 -125
  464. package/dist/components/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  465. package/dist/components/processing/InteractionItems.d.ts +0 -12
  466. package/dist/components/processing/network.d.ts +0 -114
  467. package/dist/components/processing/ordinal.d.ts +0 -102
  468. package/dist/components/processing/xyDrawing.d.ts +0 -135
  469. package/dist/components/semiotic.d.ts +0 -35
  470. package/dist/components/store/TooltipStore.d.ts +0 -2
  471. package/dist/components/store/createStore.d.ts +0 -1
  472. package/dist/components/svg/SvgHelper.d.ts +0 -37
  473. package/dist/components/svg/areaDrawing.d.ts +0 -31
  474. package/dist/components/svg/ckmeans.d.ts +0 -69
  475. package/dist/components/svg/frameFunctions.d.ts +0 -119
  476. package/dist/components/svg/lineDrawing.d.ts +0 -99
  477. package/dist/components/svg/networkDrawing.d.ts +0 -134
  478. package/dist/components/svg/pieceDrawing.d.ts +0 -13
  479. package/dist/components/svg/pieceLayouts.d.ts +0 -71
  480. package/dist/components/svg/summaryLayouts.d.ts +0 -74
  481. package/dist/components/types/annotationTypes.d.ts +0 -140
  482. package/dist/components/types/canvasTypes.d.ts +0 -9
  483. package/dist/components/types/generalTypes.d.ts +0 -236
  484. package/dist/components/types/interactionTypes.d.ts +0 -74
  485. package/dist/components/types/legendTypes.d.ts +0 -20
  486. package/dist/components/types/networkTypes.d.ts +0 -165
  487. package/dist/components/types/ordinalTypes.d.ts +0 -103
  488. package/dist/components/types/xyTypes.d.ts +0 -118
  489. package/dist/components/useBoundingRect.d.ts +0 -2
  490. package/dist/components/useDerivedStateFromProps.d.ts +0 -1
  491. package/dist/components/useLegacyUnmountCallback.d.ts +0 -1
  492. package/dist/components/visualizationLayerBehavior/axis.d.ts +0 -38
  493. package/dist/components/visualizationLayerBehavior/general.d.ts +0 -84
  494. package/dist/constants/jsx.d.ts +0 -19
  495. package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +0 -20
  496. package/dist/processing/network.d.ts +0 -114
  497. package/dist/processing/ordinal.d.ts +0 -102
  498. package/dist/processing/xyDrawing.d.ts +0 -135
  499. package/dist/setupTests.d.ts +0 -1
  500. package/dist/svg/SvgHelper.d.ts +0 -37
  501. package/dist/svg/ckmeans.d.ts +0 -69
  502. package/dist/svg/frameFunctions.d.ts +0 -119
  503. package/dist/svg/networkDrawing.d.ts +0 -134
  504. package/dist/svg/pieceDrawing.d.ts +0 -13
  505. package/dist/svg/pieceLayouts.d.ts +0 -71
  506. package/dist/svg/summaryLayouts.d.ts +0 -74
  507. package/dist/useDerivedStateFromProps.d.ts +0 -1
  508. package/dist/useLegacyUnmountCallback.d.ts +0 -1
package/README.md CHANGED
@@ -1,70 +1,248 @@
1
1
  [![Semiotic](semiotic_logo_horizontal.png "semiotic")](https://semiotic.nteract.io)
2
2
 
3
- [![Semiotic](https://github.com/nteract/semiotic/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/nteract/semiotic/actions/workflows/node.js.yml)
3
+ [![CI](https://github.com/nteract/semiotic/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/nteract/semiotic/actions/workflows/node.js.yml)
4
+ [![npm version](https://img.shields.io/npm/v/semiotic.svg)](https://www.npmjs.com/package/semiotic)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-built--in-blue.svg)](https://www.typescriptlang.org/)
4
6
 
5
- Semiotic is a data visualization framework combining React & D3.
7
+ A React data visualization library for charts, networks, and beyond.
6
8
 
7
- ## Documentation
9
+ Simple charts in 5 lines. Force-directed graphs, Sankey diagrams, treemaps,
10
+ and chord diagrams when you need them. Full D3-level control when you want it.
11
+
12
+ ```jsx
13
+ import { LineChart } from "semiotic"
14
+
15
+ <LineChart
16
+ data={salesData}
17
+ xAccessor="month"
18
+ yAccessor="revenue"
19
+ />
20
+ ```
21
+
22
+ ## Why Semiotic
23
+
24
+ Most React charting libraries give you bar charts, line charts, and pie charts.
25
+ Semiotic gives you those too — but it's built for the projects where those
26
+ aren't enough.
27
+
28
+ ### When you need more than standard charts
29
+
30
+ **Network visualization.** Show how things connect — org charts,
31
+ dependency graphs, budget flows, taxonomies. Semiotic has force-directed
32
+ graphs, Sankey diagrams, chord diagrams, tree layouts, treemaps, and circle
33
+ packing as React components with the same prop API as LineChart.
34
+
35
+ **Streaming data.** Monitor live systems — server metrics, sensor feeds,
36
+ financial tickers. Semiotic's realtime charts render on canvas at 60fps with
37
+ a ref-based push API. Old data fades out (decay), new data flashes in
38
+ (pulse), and stale feeds are flagged automatically.
39
+
40
+ **Coordinated dashboards.** Hover one chart, highlight matching data in
41
+ others. Brush a scatterplot, filter a bar chart. Semiotic's `LinkedCharts`
42
+ and `ScatterplotMatrix` provide crossfilter coordination that other libraries
43
+ leave you to build from scratch.
44
+
45
+ **Statistical summaries.** Box plots, violin plots, swarm plots, ridgeline
46
+ plots, histograms — the distribution charts that data scientists need and
47
+ most charting libraries skip. Add marginal distribution graphics (histogram,
48
+ violin, ridgeline, boxplot) to scatterplot margins with a single prop.
49
+
50
+ ### Start simple, go deep
51
+
52
+ | Layer | For | Example |
53
+ |---|---|---|
54
+ | **Charts** | Common visualizations with sensible defaults | `<LineChart data={d} xAccessor="x" yAccessor="y" />` |
55
+ | **Frames** | Full control over rendering, interaction, and layout | `<StreamXYFrame chartType="line" lineStyle={...} />` |
8
56
 
9
- [Interactive Documentation v1.x](https://semioticv1.nteract.io/)
57
+ Every Chart component accepts a `frameProps` prop to access the underlying
58
+ Frame API without leaving the simpler interface.
10
59
 
11
- [API Docs v1.x](https://semioticv1.nteract.io/api)
60
+ ### When to use something else
12
61
 
13
- [Interactive Examples v1.x](https://semioticv1.nteract.io/examples)
62
+ Need a standard bar or line chart for a dashboard you'll never need to
63
+ customize beyond colors and labels? [Recharts](https://recharts.org) has a
64
+ larger ecosystem and more community examples. Need GPU-accelerated rendering
65
+ for millions of data points? [Apache ECharts](https://echarts.apache.org)
66
+ handles that scale.
14
67
 
15
- [Preview of Interactive Documentation for v2.x](https://semiotic.nteract.io)
68
+ Semiotic is for projects that outgrow those libraries — when you need
69
+ network graphs alongside time series, streaming data alongside static
70
+ snapshots, or coordinated views across chart types.
16
71
 
17
- ## Installation
72
+ **AI-ready.** Semiotic ships with structured schemas (`ai/schema.json`), an
73
+ `import from "semiotic/ai"` entry point, and an MCP server — all designed for
74
+ LLM code generation. AI coding assistants can generate correct Semiotic code on
75
+ the first try. Run `npx semiotic-ai --help` for CLI options or add `semiotic-mcp`
76
+ to your MCP client config for tool-based chart rendering.
77
+
78
+ ## Install
18
79
 
19
80
  ```bash
20
- yarn install semiotic
81
+ npm install semiotic
21
82
  ```
22
83
 
23
- ## Usage Example
84
+ Requires React 18.1 or later.
24
85
 
25
- As a library:
26
- ```js
27
- import { XYFrame } from "semiotic"
86
+ ## Quick Examples
87
+
88
+ ### Coordinated Dashboard
89
+
90
+ Hover one chart, highlight the same data in another — zero wiring:
91
+
92
+ ```jsx
93
+ import { LinkedCharts, Scatterplot, BarChart } from "semiotic"
94
+
95
+ <LinkedCharts>
96
+ <Scatterplot
97
+ data={data} xAccessor="age" yAccessor="income" colorBy="region"
98
+ linkedHover={{ name: "hl", fields: ["region"] }}
99
+ selection={{ name: "hl" }}
100
+ />
101
+ <BarChart
102
+ data={summary} categoryAccessor="region" valueAccessor="total"
103
+ selection={{ name: "hl" }}
104
+ />
105
+ </LinkedCharts>
28
106
  ```
29
107
 
30
- You can also use the static distribution (via https://unpkg.com or https://esm.sh):
108
+ ### Streaming Metrics with Decay
109
+
110
+ Live data fades old points, flashes new ones, flags stale feeds:
31
111
 
32
- ```html
33
- <script type="module">
34
- import { XYFrame } from "https://unpkg.com/semiotic?module"
35
- </script>
112
+ ```jsx
113
+ import { RealtimeLineChart } from "semiotic"
114
+
115
+ const chartRef = useRef()
116
+ chartRef.current.push({ time: Date.now(), value: cpuLoad })
117
+
118
+ <RealtimeLineChart
119
+ ref={chartRef}
120
+ timeAccessor="time"
121
+ valueAccessor="value"
122
+ decay={{ type: "exponential", halfLife: 100 }}
123
+ staleness={{ threshold: 5000, showBadge: true }}
124
+ />
36
125
  ```
37
126
 
38
- [These Codepen examples](https://codepen.io/emeeks/) use the static distribution.
127
+ ### Network Graphs
128
+
129
+ Force-directed graphs and Sankey diagrams — same API as LineChart:
39
130
 
40
- ## Project recognition
131
+ ```jsx
132
+ import { ForceDirectedGraph, SankeyDiagram } from "semiotic"
41
133
 
42
- _Semiotic icon based on an icon by André Schauer_
134
+ <ForceDirectedGraph
135
+ nodes={people} edges={friendships}
136
+ colorBy="team" nodeSize={8} showLabels
137
+ />
43
138
 
44
- It may not be apparent in the commit logs but development of this library owes a lot to:
139
+ <SankeyDiagram
140
+ edges={budgetFlows}
141
+ sourceAccessor="from" targetAccessor="to" valueAccessor="amount"
142
+ />
143
+ ```
45
144
 
46
- * Susie Lu
47
- * Jason Reid
48
- * James Womack
49
- * Matt Herman
50
- * Shelby Sturgis
51
- * Tristan Reid
145
+ ### Standard Charts
52
146
 
53
- ## Testing
147
+ Line, bar, scatter, area — all the basics, with sensible defaults:
54
148
 
55
- Using BrowserStack for browser compatibility testing
56
- [![BrowserStack](browserstack_logo.png "browserstack")](http://browserstack.com/)
149
+ ```jsx
150
+ import { LineChart, BarChart } from "semiotic"
57
151
 
58
- ## Changelog
152
+ <LineChart
153
+ data={salesData}
154
+ xAccessor="month" yAccessor="revenue"
155
+ curve="monotoneX" showPoints
156
+ />
59
157
 
60
- [Changelog](./CHANGELOG.md)
158
+ <BarChart
159
+ data={categoryData}
160
+ categoryAccessor="department" valueAccessor="sales"
161
+ orientation="horizontal" colorBy="region"
162
+ />
163
+ ```
61
164
 
62
- ## License
165
+ ## All Chart Components
63
166
 
64
- [License](./LICENSE)
167
+ | Category | Components |
168
+ |---|---|
169
+ | **XY** | `LineChart` `AreaChart` `StackedAreaChart` `Scatterplot` `BubbleChart` `Heatmap` |
170
+ | **Categorical** | `BarChart` `StackedBarChart` `GroupedBarChart` `SwarmPlot` `BoxPlot` `Histogram` `ViolinPlot` `DotPlot` `PieChart` `DonutChart` |
171
+ | **Network** | `ForceDirectedGraph` `ChordDiagram` `SankeyDiagram` `TreeDiagram` `Treemap` `CirclePack` |
172
+ | **Realtime** | `RealtimeLineChart` `RealtimeHistogram` `RealtimeSwarmChart` `RealtimeWaterfallChart` `RealtimeHeatmap` |
173
+ | **Coordination** | `LinkedCharts` `ScatterplotMatrix` |
174
+ | **Frames** | `StreamXYFrame` `StreamOrdinalFrame` `StreamNetworkFrame` |
175
+
176
+ ## Smaller Bundles
177
+
178
+ Import only what you need:
179
+
180
+ ```jsx
181
+ import { LineChart } from "semiotic/xy" // 125 KB (vs 218 KB full)
182
+ import { BarChart } from "semiotic/ordinal" // 140 KB
183
+ import { ForceDirectedGraph } from "semiotic/network" // 133 KB
184
+ import { LineChart } from "semiotic/ai" // HOC-only surface for AI generation
185
+ ```
186
+
187
+ ## TypeScript
188
+
189
+ Full type definitions ship with the package. Generics for type-safe accessors:
190
+
191
+ ```tsx
192
+ interface Sale { month: number; revenue: number }
193
+
194
+ <LineChart<Sale>
195
+ data={sales}
196
+ xAccessor="month" // TS validates this is keyof Sale
197
+ yAccessor="revenue"
198
+ />
199
+ ```
200
+
201
+ ## Server-Side Rendering
202
+
203
+ Static SVG generation for Node.js (email, OG images, PDF):
204
+
205
+ ```js
206
+ import { renderToStaticSVG } from "semiotic/server"
207
+
208
+ const svg = renderToStaticSVG("xy", {
209
+ lines: [{ coordinates: data }],
210
+ xAccessor: "date",
211
+ yAccessor: "value",
212
+ size: [600, 400],
213
+ })
214
+ ```
215
+
216
+ Works with Next.js App Router, Remix, and Astro via `"use client"` directives.
217
+
218
+ ## Documentation
219
+
220
+ [Interactive docs and examples](https://semiotic.nteract.io)
221
+
222
+ - [Getting Started](https://semiotic.nteract.io/getting-started)
223
+ - [Charts](https://semiotic.nteract.io/charts) — all 27 chart types with live examples
224
+ - [Frames](https://semiotic.nteract.io/frames) — full Frame API reference
225
+ - [Features](https://semiotic.nteract.io/features) — axes, annotations, tooltips, styling
226
+ - [Cookbook](https://semiotic.nteract.io/cookbook) — advanced patterns and recipes
227
+ - [Playground](https://semiotic.nteract.io/playground) — interactive prop exploration
228
+
229
+ ## Upgrading
230
+
231
+ - [Migration Guide](./MIGRATION.md) — upgrading from v1.x or v2.x
232
+ - [Changelog](./CHANGELOG.md) — full release history
65
233
 
66
234
  ## Contributing
67
235
 
68
- Our community follows the nteract [Contributor Code of Conduct](https://github.com/nteract/nteract/blob/main/CODE_OF_CONDUCT.md).
236
+ See [CONTRIBUTING.md](CONTRIBUTING.md). Our community follows the nteract
237
+ [Code of Conduct](https://github.com/nteract/nteract/blob/main/CODE_OF_CONDUCT.md).
238
+
239
+ ## Acknowledgments
240
+
241
+ Development of this library owes a lot to Susie Lu, Jason Reid, James Womack,
242
+ Matt Herman, Shelby Sturgis, and Tristan Reid.
243
+
244
+ _Semiotic icon based on an icon by Andre Schauer._
245
+
246
+ ## License
69
247
 
70
- If you are interested in contributing to the project, please read our [CONTRIBUTING.md](CONTRIBUTING.md) file.
248
+ [Apache 2.0](./LICENSE)
package/ai/cli.js ADDED
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env node
2
+ "use strict"
3
+
4
+ const fs = require("fs")
5
+ const path = require("path")
6
+
7
+ const pkgRoot = path.resolve(__dirname, "..")
8
+
9
+ const FILES = {
10
+ default: path.join(pkgRoot, "CLAUDE.md"),
11
+ "--schema": path.join(__dirname, "schema.json"),
12
+ "--compact": path.join(__dirname, "system-prompt.md"),
13
+ "--examples": path.join(__dirname, "examples.md"),
14
+ }
15
+
16
+ const HELP = `
17
+ semiotic-ai — Dump Semiotic AI context to stdout
18
+
19
+ Usage:
20
+ npx semiotic-ai Print CLAUDE.md (full reference)
21
+ npx semiotic-ai --schema Print ai/schema.json (tool definitions)
22
+ npx semiotic-ai --compact Print ai/system-prompt.md (compact prompt)
23
+ npx semiotic-ai --examples Print ai/examples.md (copy-paste examples)
24
+ npx semiotic-ai --help Show this help message
25
+ `.trim()
26
+
27
+ const flag = process.argv[2]
28
+
29
+ if (flag === "--help" || flag === "-h") {
30
+ console.log(HELP)
31
+ process.exit(0)
32
+ }
33
+
34
+ const filePath = flag ? FILES[flag] : FILES.default
35
+
36
+ if (!filePath) {
37
+ console.error(`Unknown flag: ${flag}\n`)
38
+ console.error(HELP)
39
+ process.exit(1)
40
+ }
41
+
42
+ try {
43
+ const content = fs.readFileSync(filePath, "utf-8")
44
+ process.stdout.write(content)
45
+ } catch (err) {
46
+ console.error(`Error reading ${filePath}: ${err.message}`)
47
+ process.exit(1)
48
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMPONENT_REGISTRY = void 0;
4
+ const LineChart_1 = require("../src/components/charts/xy/LineChart");
5
+ const AreaChart_1 = require("../src/components/charts/xy/AreaChart");
6
+ const StackedAreaChart_1 = require("../src/components/charts/xy/StackedAreaChart");
7
+ const Scatterplot_1 = require("../src/components/charts/xy/Scatterplot");
8
+ const BubbleChart_1 = require("../src/components/charts/xy/BubbleChart");
9
+ const Heatmap_1 = require("../src/components/charts/xy/Heatmap");
10
+ const BarChart_1 = require("../src/components/charts/ordinal/BarChart");
11
+ const StackedBarChart_1 = require("../src/components/charts/ordinal/StackedBarChart");
12
+ const GroupedBarChart_1 = require("../src/components/charts/ordinal/GroupedBarChart");
13
+ const SwarmPlot_1 = require("../src/components/charts/ordinal/SwarmPlot");
14
+ const BoxPlot_1 = require("../src/components/charts/ordinal/BoxPlot");
15
+ const DotPlot_1 = require("../src/components/charts/ordinal/DotPlot");
16
+ const PieChart_1 = require("../src/components/charts/ordinal/PieChart");
17
+ const DonutChart_1 = require("../src/components/charts/ordinal/DonutChart");
18
+ const ForceDirectedGraph_1 = require("../src/components/charts/network/ForceDirectedGraph");
19
+ const ChordDiagram_1 = require("../src/components/charts/network/ChordDiagram");
20
+ const SankeyDiagram_1 = require("../src/components/charts/network/SankeyDiagram");
21
+ const TreeDiagram_1 = require("../src/components/charts/network/TreeDiagram");
22
+ const Treemap_1 = require("../src/components/charts/network/Treemap");
23
+ const CirclePack_1 = require("../src/components/charts/network/CirclePack");
24
+ exports.COMPONENT_REGISTRY = {
25
+ LineChart: { component: LineChart_1.LineChart, category: "xy" },
26
+ AreaChart: { component: AreaChart_1.AreaChart, category: "xy" },
27
+ StackedAreaChart: { component: StackedAreaChart_1.StackedAreaChart, category: "xy" },
28
+ Scatterplot: { component: Scatterplot_1.Scatterplot, category: "xy" },
29
+ BubbleChart: { component: BubbleChart_1.BubbleChart, category: "xy" },
30
+ Heatmap: { component: Heatmap_1.Heatmap, category: "xy" },
31
+ BarChart: { component: BarChart_1.BarChart, category: "ordinal" },
32
+ StackedBarChart: { component: StackedBarChart_1.StackedBarChart, category: "ordinal" },
33
+ GroupedBarChart: { component: GroupedBarChart_1.GroupedBarChart, category: "ordinal" },
34
+ SwarmPlot: { component: SwarmPlot_1.SwarmPlot, category: "ordinal" },
35
+ BoxPlot: { component: BoxPlot_1.BoxPlot, category: "ordinal" },
36
+ DotPlot: { component: DotPlot_1.DotPlot, category: "ordinal" },
37
+ PieChart: { component: PieChart_1.PieChart, category: "ordinal" },
38
+ DonutChart: { component: DonutChart_1.DonutChart, category: "ordinal" },
39
+ ForceDirectedGraph: { component: ForceDirectedGraph_1.ForceDirectedGraph, category: "network" },
40
+ ChordDiagram: { component: ChordDiagram_1.ChordDiagram, category: "network" },
41
+ SankeyDiagram: { component: SankeyDiagram_1.SankeyDiagram, category: "network" },
42
+ TreeDiagram: { component: TreeDiagram_1.TreeDiagram, category: "network" },
43
+ Treemap: { component: Treemap_1.Treemap, category: "network" },
44
+ CirclePack: { component: CirclePack_1.CirclePack, category: "network" },
45
+ };
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Semiotic MCP Server
5
+ *
6
+ * Exposes every HOC chart component as an MCP tool.
7
+ * Accepts component props as tool arguments, renders to static SVG,
8
+ * and returns the SVG string.
9
+ *
10
+ * Usage (Claude Desktop / claude_desktop_config.json):
11
+ * {
12
+ * "mcpServers": {
13
+ * "semiotic": {
14
+ * "command": "npx",
15
+ * "args": ["semiotic-mcp"]
16
+ * }
17
+ * }
18
+ * }
19
+ */
20
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ var desc = Object.getOwnPropertyDescriptor(m, k);
23
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
24
+ desc = { enumerable: true, get: function() { return m[k]; } };
25
+ }
26
+ Object.defineProperty(o, k2, desc);
27
+ }) : (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ }));
31
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
32
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
33
+ }) : function(o, v) {
34
+ o["default"] = v;
35
+ });
36
+ var __importStar = (this && this.__importStar) || (function () {
37
+ var ownKeys = function(o) {
38
+ ownKeys = Object.getOwnPropertyNames || function (o) {
39
+ var ar = [];
40
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
41
+ return ar;
42
+ };
43
+ return ownKeys(o);
44
+ };
45
+ return function (mod) {
46
+ if (mod && mod.__esModule) return mod;
47
+ var result = {};
48
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ })();
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
55
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
56
+ const fs = __importStar(require("fs"));
57
+ const path = __importStar(require("path"));
58
+ const renderHOCToSVG_1 = require("./renderHOCToSVG");
59
+ const componentRegistry_1 = require("./componentRegistry");
60
+ // Load schema.json for tool definitions
61
+ const schemaPath = path.resolve(__dirname, "schema.json");
62
+ const schema = JSON.parse(fs.readFileSync(schemaPath, "utf-8"));
63
+ // Build MCP server
64
+ const server = new mcp_js_1.McpServer({
65
+ name: "semiotic",
66
+ version: schema.version || "3.0.0",
67
+ });
68
+ // Register each chart component as a tool
69
+ for (const toolDef of schema.tools) {
70
+ const { name, description, parameters } = toolDef.function;
71
+ // Skip realtime charts (ref-based, can't render to static SVG)
72
+ if (name.startsWith("Realtime"))
73
+ continue;
74
+ // Skip components not in registry
75
+ if (!componentRegistry_1.COMPONENT_REGISTRY[name])
76
+ continue;
77
+ // Register the tool — use raw z.any() style since we have our own validation
78
+ server.tool(name, description, {}, async (args) => {
79
+ const result = (0, renderHOCToSVG_1.renderHOCToSVG)(name, args);
80
+ if (result.error) {
81
+ return {
82
+ content: [{ type: "text", text: result.error }],
83
+ isError: true,
84
+ };
85
+ }
86
+ return {
87
+ content: [{ type: "text", text: result.svg }],
88
+ };
89
+ });
90
+ }
91
+ // Start the server
92
+ async function main() {
93
+ const transport = new stdio_js_1.StdioServerTransport();
94
+ await server.connect(transport);
95
+ }
96
+ main().catch((err) => {
97
+ console.error("MCP server error:", err);
98
+ process.exit(1);
99
+ });
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.renderHOCToSVG = renderHOCToSVG;
37
+ /**
38
+ * Render a Semiotic HOC chart component to static SVG markup.
39
+ *
40
+ * Uses ReactDOMServer.renderToStaticMarkup which supports hooks
41
+ * (useMemo, custom hooks) used by the HOC components.
42
+ */
43
+ const React = __importStar(require("react"));
44
+ const ReactDOMServer = __importStar(require("react-dom/server"));
45
+ const componentRegistry_1 = require("./componentRegistry");
46
+ const validateProps_1 = require("../src/components/charts/shared/validateProps");
47
+ function renderHOCToSVG(componentName, props) {
48
+ // Look up component
49
+ const entry = componentRegistry_1.COMPONENT_REGISTRY[componentName];
50
+ if (!entry) {
51
+ return {
52
+ svg: null,
53
+ error: `Unknown component "${componentName}". Available: ${Object.keys(componentRegistry_1.COMPONENT_REGISTRY).join(", ")}`,
54
+ };
55
+ }
56
+ // Validate props
57
+ const validation = (0, validateProps_1.validateProps)(componentName, props);
58
+ if (!validation.valid) {
59
+ return {
60
+ svg: null,
61
+ error: `Validation errors:\n${validation.errors.join("\n")}`,
62
+ };
63
+ }
64
+ // Disable hover (not useful in static SVG)
65
+ const renderProps = { ...props, enableHover: false };
66
+ try {
67
+ const element = React.createElement(entry.component, renderProps);
68
+ const svg = ReactDOMServer.renderToStaticMarkup(element);
69
+ return { svg, error: null };
70
+ }
71
+ catch (err) {
72
+ return {
73
+ svg: null,
74
+ error: `Render error: ${err.message || String(err)}`,
75
+ };
76
+ }
77
+ }