semiotic 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CLAUDE.md +134 -216
  2. package/LICENSE +197 -10
  3. package/README.md +1 -0
  4. package/ai/dist/componentRegistry.js +6 -0
  5. package/ai/dist/mcp-server.js +232 -65
  6. package/ai/dist/renderHOCToSVG.js +5 -3
  7. package/ai/examples.md +93 -0
  8. package/ai/schema.json +3916 -878
  9. package/ai/system-prompt.md +27 -0
  10. package/dist/components/ThemeProvider.d.ts +5 -3
  11. package/dist/components/charts/geo/ChoroplethMap.d.ts +1 -1
  12. package/dist/components/charts/index.d.ts +8 -1
  13. package/dist/components/charts/ordinal/BarChart.d.ts +1 -0
  14. package/dist/components/charts/ordinal/BoxPlot.d.ts +1 -0
  15. package/dist/components/charts/ordinal/DonutChart.d.ts +1 -0
  16. package/dist/components/charts/ordinal/DotPlot.d.ts +1 -0
  17. package/dist/components/charts/ordinal/FunnelChart.d.ts +55 -0
  18. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +1 -0
  19. package/dist/components/charts/ordinal/Histogram.d.ts +1 -0
  20. package/dist/components/charts/ordinal/PieChart.d.ts +1 -0
  21. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +1 -0
  22. package/dist/components/charts/ordinal/StackedBarChart.d.ts +1 -0
  23. package/dist/components/charts/ordinal/SwarmPlot.d.ts +1 -0
  24. package/dist/components/charts/ordinal/ViolinPlot.d.ts +1 -0
  25. package/dist/components/charts/shared/colorManipulation.d.ts +15 -0
  26. package/dist/components/charts/shared/formatUtils.d.ts +28 -0
  27. package/dist/components/charts/shared/hatchPattern.d.ts +35 -0
  28. package/dist/components/charts/shared/hooks.d.ts +16 -1
  29. package/dist/components/charts/shared/legendUtils.d.ts +2 -1
  30. package/dist/components/charts/shared/selectionUtils.d.ts +11 -0
  31. package/dist/components/charts/shared/statisticalOverlays.d.ts +49 -5
  32. package/dist/components/charts/shared/types.d.ts +4 -1
  33. package/dist/components/charts/xy/Heatmap.d.ts +1 -1
  34. package/dist/components/charts/xy/MultiAxisLineChart.d.ts +71 -0
  35. package/dist/components/realtime/types.d.ts +2 -0
  36. package/dist/components/semiotic-ai.d.ts +3 -0
  37. package/dist/components/semiotic-ordinal.d.ts +3 -0
  38. package/dist/components/semiotic-themes.d.ts +64 -0
  39. package/dist/components/semiotic-xy.d.ts +1 -0
  40. package/dist/components/semiotic.d.ts +11 -5
  41. package/dist/components/store/ThemeStore.d.ts +22 -2
  42. package/dist/components/stream/OrdinalSVGOverlay.d.ts +1 -0
  43. package/dist/components/stream/PipelineStore.d.ts +2 -0
  44. package/dist/components/stream/SVGOverlay.d.ts +5 -3
  45. package/dist/components/stream/accessorUtils.d.ts +14 -0
  46. package/dist/components/stream/networkTypes.d.ts +2 -0
  47. package/dist/components/stream/ordinalSceneBuilders/barFunnelScene.d.ts +27 -0
  48. package/dist/components/stream/ordinalSceneBuilders/funnelScene.d.ts +26 -0
  49. package/dist/components/stream/ordinalTypes.d.ts +16 -2
  50. package/dist/components/stream/renderers/barFunnelCanvasRenderer.d.ts +12 -0
  51. package/dist/components/stream/renderers/trapezoidCanvasRenderer.d.ts +15 -0
  52. package/dist/components/stream/sceneUtils.d.ts +10 -0
  53. package/dist/components/stream/types.d.ts +10 -3
  54. package/dist/geo.min.js +1 -1
  55. package/dist/geo.module.min.js +1 -1
  56. package/dist/network.min.js +1 -1
  57. package/dist/network.module.min.js +1 -1
  58. package/dist/ordinal.min.js +1 -1
  59. package/dist/ordinal.module.min.js +1 -1
  60. package/dist/realtime.min.js +1 -1
  61. package/dist/realtime.module.min.js +1 -1
  62. package/dist/semiotic-ai-statisticalOverlays-C2PPlmXv.js +1 -0
  63. package/dist/semiotic-ai.d.ts +3 -0
  64. package/dist/semiotic-ai.min.js +1 -1
  65. package/dist/semiotic-ai.module.min.js +1 -1
  66. package/dist/semiotic-ordinal.d.ts +3 -0
  67. package/dist/semiotic-statisticalOverlays-D8LhSbQt.js +1 -0
  68. package/dist/semiotic-themes.d.ts +64 -0
  69. package/dist/semiotic-themes.min.js +1 -0
  70. package/dist/semiotic-themes.module.min.js +1 -0
  71. package/dist/semiotic-xy.d.ts +1 -0
  72. package/dist/semiotic.d.ts +11 -5
  73. package/dist/semiotic.min.js +1 -1
  74. package/dist/semiotic.module.min.js +1 -1
  75. package/dist/server.min.js +1 -1
  76. package/dist/server.module.min.js +1 -1
  77. package/dist/xy-statisticalOverlays-C2PPlmXv.js +1 -0
  78. package/dist/xy.min.js +1 -1
  79. package/dist/xy.module.min.js +1 -1
  80. package/package.json +24 -5
  81. package/dist/semiotic-ai-statisticalOverlays-C1f7TYyD.js +0 -1
  82. package/dist/semiotic-statisticalOverlays-C1f7TYyD.js +0 -1
  83. package/dist/xy-statisticalOverlays-C1f7TYyD.js +0 -1
@@ -15,4 +15,7 @@ export { DotPlot } from "./charts/ordinal/DotPlot";
15
15
  export { PieChart } from "./charts/ordinal/PieChart";
16
16
  export { DonutChart } from "./charts/ordinal/DonutChart";
17
17
  export { RidgelinePlot } from "./charts/ordinal/RidgelinePlot";
18
+ export { FunnelChart } from "./charts/ordinal/FunnelChart";
19
+ export { createHatchPattern } from "./charts/shared/hatchPattern";
20
+ export type { HatchPatternOptions } from "./charts/shared/hatchPattern";
18
21
  export type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle, OrdinalChartType, OrdinalScales, OrdinalSceneNode } from "./stream/ordinalTypes";
@@ -0,0 +1 @@
1
+ import{darkenColor as t,lightenColor as o}from"./semiotic.module.min.js";import"react";import"d3-brush";import"d3-selection";import"d3-scale";import"d3-scale-chromatic";import"d3-quadtree";import"d3-array";import"d3-hierarchy";import"d3-shape";import"regression";import"d3-interpolate";import"d3-force";import"d3-chord";const e="__forecastSegment";function n(t,o){return"function"==typeof o?o(t):!!t[o]}function s(t){var o,e,n;return[{type:"anomaly-band",threshold:null!==(o=t.threshold)&&void 0!==o?o:2,showBand:!1!==t.showBand,fill:t.bandColor||"#6366f1",fillOpacity:null!==(e=t.bandOpacity)&&void 0!==e?e:.1,anomalyColor:t.anomalyColor||"#ef4444",anomalyRadius:null!==(n=t.anomalyRadius)&&void 0!==n?n:6,label:t.label}]}function a(t,o,s,a,r){return(i=a).isTraining||i.isForecast||i.isAnomaly||i.upperBounds||i.lowerBounds?function(t,o,s,a,r){var i,l,c,p;const{isTraining:f,isForecast:u,isAnomaly:h,upperBounds:d,lowerBounds:y,color:b="#6366f1",bandOpacity:g=.15,anomalyColor:m="#ef4444",anomalyRadius:O=6,label:j}=a,v=t.map(t=>{let o="observed";return u&&n(t,u)?o="forecast":f&&n(t,f)&&(o="training"),Object.assign(Object.assign({},t),{[e]:o})}),k=a._groupBy,_=[];if(k){const t=new Map;for(const o of v){const e=null!==(i=o[k])&&void 0!==i?i:"__default";t.has(e)||t.set(e,[]),t.get(e).push(o)}const o=[];for(const[,n]of t)for(let t=0;n.length-1>t;t++)n[t][e]!==n[t+1][e]&&(o.push(Object.assign(Object.assign({},n[t+1]),{[e]:n[t][e]})),o.push(Object.assign(Object.assign({},n[t]),{[e]:n[t+1][e]})));_.push(...v,...o)}else for(let t=0;v.length>t;t++)_.push(v[t]),v.length-1>t&&v[t][e]!==v[t+1][e]&&(_.push(Object.assign(Object.assign({},v[t+1]),{[e]:v[t][e]})),_.push(Object.assign(Object.assign({},v[t]),{[e]:v[t+1][e]})));if(a.trainUnderline){const t=[];for(const o of _)"training"===o[e]&&t.push(Object.assign(Object.assign({},o),{[e]:"training-base"}));_.unshift(...t)}const w=[];if(d&&y){const t="string"==typeof d?d:"__envUpper",o="string"==typeof y?y:"__envLower";if("function"==typeof d||"function"==typeof y)for(const e of _)"function"==typeof d&&(e[t]=d(e)),"function"==typeof y&&(e[o]=y(e));w.push({type:"envelope",upperAccessor:t,lowerAccessor:o,fill:b,fillOpacity:g,label:j})}if(h){const t=a.anomalyStyle,o={type:"highlight",filter:t=>n(t,h)};t?(o.style=t,o.r=O):"function"==typeof m?(o.style=t=>{const o=m(t);return{stroke:o,strokeWidth:1.5,fill:o,fillOpacity:.7}},o.r=O):(o.color=m,o.r=O,o.style={stroke:m,strokeWidth:1.5,fill:m,fillOpacity:.7}),w.push(o)}return r&&w.push({type:"anomaly-band",threshold:null!==(l=r.threshold)&&void 0!==l?l:2,showBand:!1!==r.showBand,fill:r.bandColor||"#6366f1",fillOpacity:null!==(c=r.bandOpacity)&&void 0!==c?c:.1,anomalyColor:r.anomalyColor||"#ef4444",anomalyRadius:null!==(p=r.anomalyRadius)&&void 0!==p?p:6,label:r.label}),{processedData:_,annotations:w}}(t,0,0,a,r):function(t,o,n,s,a){var r,i,l;const{trainEnd:c,steps:p=10,confidence:f=.95,color:u="#6366f1",bandOpacity:h=.15,label:d}=s;if(null==c)return{processedData:t,annotations:[]};const y=[],b=[];for(const n of t)n[o]>c?b.push(Object.assign(Object.assign({},n),{[e]:"observed"})):y.push(Object.assign(Object.assign({},n),{[e]:"training"}));const g=y.map(t=>[t[o],t[n]]).filter(t=>null!=t[0]&&null!=t[1]&&isFinite(t[0])&&isFinite(t[1])).sort((t,o)=>t[0]-o[0]),m=[],O=[];if(g.length>=3){const s=g.length;let a=0,r=0,i=0,l=0;for(const[t,o]of g)a+=t,r+=o,i+=t*t,l+=t*o;const c=s*i-a*a;if(Math.abs(c)>1e-12){const i=(s*l-a*r)/c,y=(r-i*a)/s,b=t=>y+i*t,j=g.map(([t,o])=>o-b(t)).reduce((t,o)=>t+o*o,0),v=Math.sqrt(j/Math.max(s-2,1)),k=g.reduce((t,o)=>t+o[0],0)/s,_=g.reduce((t,o)=>t+Math.pow(o[0]-k,2),0),w=.99>f?.95>f?.9>f?1:1.645:1.96:2.576,B=t.map(t=>t[o]).filter(t=>null!=t&&isFinite(t)),C=Math.max(...B),D=g.length>1?(g[s-1][0]-g[0][0])/(s-1):1;for(let t=1;p>=t;t++){const a=C+t*D,r=b(a),i=v*Math.sqrt(1+1/s+(_>0?Math.pow(a-k,2)/_:0))*w;O.push({[o]:a,[n]:r,[e]:"forecast",__forecastUpper:r+i,__forecastLower:r-i})}m.push({type:"envelope",upperAccessor:"__forecastUpper",lowerAccessor:"__forecastLower",fill:u,fillOpacity:h,label:d})}}m.push({type:"x-threshold",x:c,color:"#94a3b8",strokeWidth:1,strokeDasharray:"4,2",label:"Train / Forecast"}),a&&m.push({type:"anomaly-band",threshold:null!==(r=a.threshold)&&void 0!==r?r:2,showBand:!1!==a.showBand,fill:a.bandColor||"#6366f1",fillOpacity:null!==(i=a.bandOpacity)&&void 0!==i?i:.1,anomalyColor:a.anomalyColor||"#ef4444",anomalyRadius:null!==(l=a.anomalyRadius)&&void 0!==l?l:6,label:a.label});const j=[];if(j.push(...y),y.length>0&&b.length>0&&j.push(Object.assign(Object.assign({},y[y.length-1]),{[e]:"observed"})),j.push(...b),O.length>0){const t=b.length>0?b[b.length-1]:y[y.length-1];t&&j.push(Object.assign(Object.assign({},t),{[e]:"forecast"})),j.push(...O)}return{processedData:j,annotations:m}}(t,o,s,a,r);var i}function r(n,s){var a,r;const i=null!==(a=s.trainDasharray)&&void 0!==a?a:"8,4",l=null!==(r=s.forecastDasharray)&&void 0!==r?r:"4,4",c=s.color||"#6366f1",p=s.trainOpacity,f=s.forecastOpacity,u=s.trainStroke,h=s.trainLinecap,d=s.trainUnderline;return s=>{const a=n(s),r=s[e];if("training"===r){let o=a.stroke;return"darken"===u?o=t(a.stroke||"#666",.5):u&&(o=u),Object.assign(Object.assign(Object.assign(Object.assign({},a),{stroke:o,strokeDasharray:i}),h&&{strokeLinecap:h}),null!=p&&{strokeOpacity:p})}if("training-base"===r){let t=a.stroke||"#666";return"lighten"===d&&(t=o(t,.4)),Object.assign(Object.assign({},a),{stroke:t,strokeDasharray:void 0})}return"forecast"===r?Object.assign(Object.assign(Object.assign({},a),{stroke:c,strokeDasharray:l}),null!=f&&{strokeOpacity:f}):a}}export{e as SEGMENT_FIELD,s as buildAnomalyAnnotations,a as buildForecast,r as createSegmentLineStyle,t as darkenColor,o as lightenColor};
@@ -0,0 +1,64 @@
1
+ /**
2
+ * semiotic/themes — Named theme presets for Semiotic charts.
3
+ *
4
+ * Each theme provides light and dark mode variants as full SemioticTheme objects.
5
+ * Use with ThemeProvider: `<ThemeProvider theme={TUFTE_LIGHT} />` or by name:
6
+ * `<ThemeProvider theme="tufte" />` / `<ThemeProvider theme="tufte-dark" />`.
7
+ *
8
+ * Also exports `themeToCSS()` and `themeToTokens()` for serialization.
9
+ */
10
+ import type { SemioticTheme } from "./store/ThemeStore";
11
+ import { LIGHT_THEME, DARK_THEME, HIGH_CONTRAST_THEME, COLOR_BLIND_SAFE_CATEGORICAL } from "./store/ThemeStore";
12
+ export { LIGHT_THEME, DARK_THEME, HIGH_CONTRAST_THEME, COLOR_BLIND_SAFE_CATEGORICAL };
13
+ export type { SemioticTheme };
14
+ export declare const PASTELS_LIGHT: SemioticTheme;
15
+ export declare const PASTELS_DARK: SemioticTheme;
16
+ export declare const BI_TOOL_LIGHT: SemioticTheme;
17
+ export declare const BI_TOOL_DARK: SemioticTheme;
18
+ export declare const ITALIAN_LIGHT: SemioticTheme;
19
+ export declare const ITALIAN_DARK: SemioticTheme;
20
+ export declare const TUFTE_LIGHT: SemioticTheme;
21
+ export declare const TUFTE_DARK: SemioticTheme;
22
+ export declare const JOURNALIST_LIGHT: SemioticTheme;
23
+ export declare const JOURNALIST_DARK: SemioticTheme;
24
+ export declare const PLAYFUL_LIGHT: SemioticTheme;
25
+ export declare const PLAYFUL_DARK: SemioticTheme;
26
+ /** All named theme presets, keyed by slug. */
27
+ export declare const THEME_PRESETS: Record<string, SemioticTheme>;
28
+ /** All valid named theme strings for ThemeProvider. */
29
+ export type ThemePresetName = keyof typeof THEME_PRESETS;
30
+ /**
31
+ * Resolve a theme preset name to a SemioticTheme object.
32
+ * Returns undefined if the name is not recognized.
33
+ */
34
+ export declare function resolveThemePreset(name: string): SemioticTheme | undefined;
35
+ /**
36
+ * Convert a SemioticTheme to a CSS custom properties string.
37
+ * Useful for SSR or generating stylesheet content.
38
+ *
39
+ * @param theme - A SemioticTheme object
40
+ * @param selector - CSS selector to scope the variables (default: `:root`)
41
+ * @returns CSS string with custom properties
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const css = themeToCSS(TUFTE_LIGHT, ".my-charts")
46
+ * // .my-charts {
47
+ * // --semiotic-bg: #fffff8;
48
+ * // --semiotic-text: #111111;
49
+ * // ...
50
+ * // }
51
+ * ```
52
+ */
53
+ export declare function themeToCSS(theme: SemioticTheme, selector?: string): string;
54
+ /**
55
+ * Convert a SemioticTheme to a design tokens JSON object.
56
+ * Compatible with Style Dictionary / Design Token Community Group format.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const tokens = themeToTokens(TUFTE_LIGHT)
61
+ * // { semiotic: { bg: { $value: "#fffff8", $type: "color" }, ... } }
62
+ * ```
63
+ */
64
+ export declare function themeToTokens(theme: SemioticTheme): Record<string, any>;
@@ -0,0 +1 @@
1
+ "use strict";const e=require("react");const o=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],t={mode:"light",colors:{primary:"#00a2ce",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",background:"transparent",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},a={mode:"dark",colors:{primary:"#4fc3f7",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",background:"#1a1a2e",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},r={mode:"light",colors:{primary:"#0000cc",categorical:o,sequential:"blues",diverging:"RdBu",background:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1},typography:{fontFamily:"system-ui, sans-serif",titleSize:18,labelSize:14,tickSize:12},tooltip:{background:"#000000",text:"#ffffff",borderRadius:"4px",fontSize:"14px",shadow:"0 2px 8px rgba(0, 0, 0, 0.3)"},borderRadius:"4px"};e.createContext(null),function(e){const o=new EventTarget;let t=e(function(e){t=Object.assign(Object.assign({},t),e(t)),o.dispatchEvent(new CustomEvent("update"))})}(e=>({theme:t,setTheme(o){e(e=>{if("light"===o)return{theme:t};if("dark"===o)return{theme:a};if("high-contrast"===o)return{theme:r};if(o.mode&&"auto"!==o.mode){const e="dark"===o.mode?a:t;return{theme:Object.assign(Object.assign(Object.assign({},e),o),{colors:Object.assign(Object.assign({},e.colors),o.colors||{}),typography:Object.assign(Object.assign({},e.typography),o.typography||{})})}}return{theme:Object.assign(Object.assign(Object.assign({},e.theme),o),{colors:Object.assign(Object.assign({},e.theme.colors),o.colors||{}),typography:Object.assign(Object.assign({},e.theme.typography),o.typography||{})})}})}}));const i={mode:"light",colors:{primary:"#c9a0dc",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#fdf6f0",text:"#4a3728",textSecondary:"#8b7355",grid:"#e8d5c4",border:"#e8d5c4",focus:"#c9a0dc"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#fff5ee",text:"#4a3728",borderRadius:"8px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"10px"},s={mode:"dark",colors:{primary:"#c9a0dc",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#1a1525",text:"#e8ddf0",textSecondary:"#a899c0",grid:"#3d3455",border:"#3d3455",focus:"#c9a0dc"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#251e35",text:"#e8ddf0",borderRadius:"8px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"10px"},c={mode:"light",colors:{primary:"#2563eb",categorical:["#2563eb","#0d9488","#ea580c","#6b7280"],sequential:"blues",background:"#f5f6f8",text:"#2c3e50",textSecondary:"#7f8c9b",grid:"#d8dce3",border:"#d8dce3",focus:"#2563eb"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2c3e50",borderRadius:"6px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"8px"},d={mode:"dark",colors:{primary:"#3b82f6",categorical:["#3b82f6","#14b8a6","#f97316","#9ca3af"],sequential:"blues",background:"#111827",text:"#f3f4f6",textSecondary:"#9ca3af",grid:"#374151",border:"#374151",focus:"#3b82f6"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f2937",text:"#f3f4f6",borderRadius:"6px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"8px"},l={mode:"light",colors:{primary:"#cc0000",categorical:["#cc0000","#333333","#c8a415","#4682b4"],sequential:"reds",background:"#fafafa",text:"#1a1a1a",textSecondary:"#666666",grid:"#e0e0e0",border:"#e0e0e0",focus:"#cc0000"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#1a1a1a",borderRadius:"2px",shadow:"0 2px 4px rgba(0, 0, 0, 0.15)"},borderRadius:"2px"},p={mode:"dark",colors:{primary:"#ff3333",categorical:["#ff3333","#aaaaaa","#d4a843","#6aa4d4"],sequential:"reds",background:"#0a0a0a",text:"#f5f5f5",textSecondary:"#aaaaaa",grid:"#333333",border:"#333333",focus:"#ff3333"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1a1a1a",text:"#f5f5f5",borderRadius:"2px",shadow:"0 2px 8px rgba(0, 0, 0, 0.5)"},borderRadius:"2px"},n={mode:"light",colors:{primary:"#8b0000",categorical:["#8b4513","#556b2f","#4a5568","#800020"],sequential:"oranges",background:"#fffff8",text:"#111111",textSecondary:"#555555",grid:"#e0ddd0",border:"#e0ddd0",focus:"#8b0000"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#fffff8",text:"#111111",borderRadius:"2px",shadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},borderRadius:"0px"},f={mode:"dark",colors:{primary:"#c05050",categorical:["#c08050","#7a8b5a","#8090a0","#a05060"],sequential:"oranges",background:"#1c1b18",text:"#e8e4d8",textSecondary:"#a09880",grid:"#3d3c35",border:"#3d3c35",focus:"#c05050"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#262520",text:"#e8e4d8",borderRadius:"2px",shadow:"0 2px 6px rgba(0, 0, 0, 0.4)"},borderRadius:"0px"},u={mode:"light",colors:{primary:"#e45050",categorical:["#3a86c8","#e45050","#d4a843","#888888"],sequential:"blues",background:"#ffffff",text:"#222222",textSecondary:"#666666",grid:"#d4d4d4",border:"#d4d4d4",focus:"#e45050"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#f8f8f8",text:"#222222",borderRadius:"4px",shadow:"0 2px 6px rgba(0, 0, 0, 0.12)"},borderRadius:"4px"},b={mode:"dark",colors:{primary:"#ff6b6b",categorical:["#5a9fd8","#ff6b6b","#e0c060","#aaaaaa"],sequential:"blues",background:"#141414",text:"#ededed",textSecondary:"#a0a0a0",grid:"#383838",border:"#383838",focus:"#ff6b6b"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1e1e1e",text:"#ededed",borderRadius:"4px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"4px"},g={mode:"light",colors:{primary:"#8b5cf6",categorical:["#8b5cf6","#ec4899","#06b6d4","#84cc16"],sequential:"viridis",background:"#fdf8ff",text:"#2d1b4e",textSecondary:"#7c5a9e",grid:"#e8d0f8",border:"#e8d0f8",focus:"#8b5cf6"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2d1b4e",borderRadius:"12px",shadow:"0 4px 12px rgba(139, 92, 246, 0.15)"},borderRadius:"12px"},y={mode:"dark",colors:{primary:"#a78bfa",categorical:["#a78bfa","#f472b6","#22d3ee","#a3e635"],sequential:"viridis",background:"#150a28",text:"#f0e8ff",textSecondary:"#b8a0d8",grid:"#3a2560",border:"#3a2560",focus:"#a78bfa"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f1138",text:"#f0e8ff",borderRadius:"12px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"12px"},x={light:t,dark:a,"high-contrast":r,pastels:i,"pastels-dark":s,"bi-tool":c,"bi-tool-dark":d,italian:l,"italian-dark":p,tufte:n,"tufte-dark":f,journalist:u,"journalist-dark":b,playful:g,"playful-dark":y};exports.BI_TOOL_DARK=d,exports.BI_TOOL_LIGHT=c,exports.COLOR_BLIND_SAFE_CATEGORICAL=o,exports.DARK_THEME=a,exports.HIGH_CONTRAST_THEME=r,exports.ITALIAN_DARK=p,exports.ITALIAN_LIGHT=l,exports.JOURNALIST_DARK=b,exports.JOURNALIST_LIGHT=u,exports.LIGHT_THEME=t,exports.PASTELS_DARK=s,exports.PASTELS_LIGHT=i,exports.PLAYFUL_DARK=y,exports.PLAYFUL_LIGHT=g,exports.THEME_PRESETS=x,exports.TUFTE_DARK=f,exports.TUFTE_LIGHT=n,exports.resolveThemePreset=function(e){return x[e]},exports.themeToCSS=function(e,o=":root"){var t,a,r,i,s;const c=[];return c.push(` --semiotic-bg: ${e.colors.background};`),c.push(` --semiotic-text: ${e.colors.text};`),c.push(` --semiotic-text-secondary: ${e.colors.textSecondary};`),c.push(` --semiotic-grid: ${e.colors.grid};`),c.push(` --semiotic-border: ${e.colors.border};`),c.push(` --semiotic-primary: ${e.colors.primary};`),c.push(` --semiotic-font-family: ${e.typography.fontFamily};`),e.colors.focus&&c.push(` --semiotic-focus: ${e.colors.focus};`),e.colors.selection&&c.push(` --semiotic-selection-color: ${e.colors.selection};`),null!=e.colors.selectionOpacity&&c.push(` --semiotic-selection-opacity: ${e.colors.selectionOpacity};`),e.colors.diverging&&c.push(` --semiotic-diverging: ${e.colors.diverging};`),(null===(t=e.tooltip)||void 0===t?void 0:t.background)&&c.push(` --semiotic-tooltip-bg: ${e.tooltip.background};`),(null===(a=e.tooltip)||void 0===a?void 0:a.text)&&c.push(` --semiotic-tooltip-text: ${e.tooltip.text};`),(null===(r=e.tooltip)||void 0===r?void 0:r.borderRadius)&&c.push(` --semiotic-tooltip-radius: ${e.tooltip.borderRadius};`),(null===(i=e.tooltip)||void 0===i?void 0:i.fontSize)&&c.push(` --semiotic-tooltip-font-size: ${e.tooltip.fontSize};`),(null===(s=e.tooltip)||void 0===s?void 0:s.shadow)&&c.push(` --semiotic-tooltip-shadow: ${e.tooltip.shadow};`),e.borderRadius&&c.push(` --semiotic-border-radius: ${e.borderRadius};`),`${o} {\n${c.join("\n")}\n}`},exports.themeToTokens=function(e){var o,t,a,r,i,s;return{semiotic:Object.assign({bg:{$value:e.colors.background,$type:"color"},text:{$value:e.colors.text,$type:"color"},"text-secondary":{$value:e.colors.textSecondary,$type:"color"},grid:{$value:e.colors.grid,$type:"color"},border:{$value:e.colors.border,$type:"color"},primary:{$value:e.colors.primary,$type:"color"},focus:{$value:e.colors.focus||e.colors.primary,$type:"color"},"font-family":{$value:e.typography.fontFamily,$type:"fontFamily"},"border-radius":{$value:e.borderRadius||"8px",$type:"dimension"},tooltip:{bg:{$value:(null===(o=e.tooltip)||void 0===o?void 0:o.background)||e.colors.background,$type:"color"},text:{$value:(null===(t=e.tooltip)||void 0===t?void 0:t.text)||e.colors.text,$type:"color"},radius:{$value:(null===(a=e.tooltip)||void 0===a?void 0:a.borderRadius)||"6px",$type:"dimension"},"font-size":{$value:(null===(r=e.tooltip)||void 0===r?void 0:r.fontSize)||"14px",$type:"dimension"},shadow:{$value:(null===(i=e.tooltip)||void 0===i?void 0:i.shadow)||"0 2px 8px rgba(0,0,0,0.15)",$type:"shadow"}},selection:{color:{$value:e.colors.selection||e.colors.primary,$type:"color"},opacity:{$value:null!==(s=e.colors.selectionOpacity)&&void 0!==s?s:.2,$type:"number"}},categorical:{$value:e.colors.categorical,$type:"color",$description:"Categorical color palette"},sequential:{$value:e.colors.sequential,$type:"string",$description:"d3-scale-chromatic sequential scheme name"}},e.colors.diverging?{diverging:{$value:e.colors.diverging,$type:"string",$description:"d3-scale-chromatic diverging scheme name"}}:{})}};
@@ -0,0 +1 @@
1
+ import*as e from"react";import{createContext as o,useMemo as t,useContext as a,useRef as i,useCallback as r,useSyncExternalStore as c}from"react";const s=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],d={mode:"light",colors:{primary:"#00a2ce",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",background:"transparent",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},l={mode:"dark",colors:{primary:"#4fc3f7",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",background:"#1a1a2e",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:10}},n={mode:"light",colors:{primary:"#0000cc",categorical:s,sequential:"blues",diverging:"RdBu",background:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1},typography:{fontFamily:"system-ui, sans-serif",titleSize:18,labelSize:14,tickSize:12},tooltip:{background:"#000000",text:"#ffffff",borderRadius:"4px",fontSize:"14px",shadow:"0 2px 8px rgba(0, 0, 0, 0.3)"},borderRadius:"4px"};o(null),function(e){const o=new EventTarget;let t=e(function(e){t=Object.assign(Object.assign({},t),e(t)),o.dispatchEvent(new CustomEvent("update"))})}(e=>({theme:d,setTheme(o){e(e=>{if("light"===o)return{theme:d};if("dark"===o)return{theme:l};if("high-contrast"===o)return{theme:n};if(o.mode&&"auto"!==o.mode){const e="dark"===o.mode?l:d;return{theme:Object.assign(Object.assign(Object.assign({},e),o),{colors:Object.assign(Object.assign({},e.colors),o.colors||{}),typography:Object.assign(Object.assign({},e.typography),o.typography||{})})}}return{theme:Object.assign(Object.assign(Object.assign({},e.theme),o),{colors:Object.assign(Object.assign({},e.theme.colors),o.colors||{}),typography:Object.assign(Object.assign({},e.theme.typography),o.typography||{})})}})}}));const p={mode:"light",colors:{primary:"#c9a0dc",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#fdf6f0",text:"#4a3728",textSecondary:"#8b7355",grid:"#e8d5c4",border:"#e8d5c4",focus:"#c9a0dc"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#fff5ee",text:"#4a3728",borderRadius:"8px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"10px"},f={mode:"dark",colors:{primary:"#c9a0dc",categorical:["#f0a0c0","#88d4ab","#b0a0e8","#f0c888"],sequential:"purples",background:"#1a1525",text:"#e8ddf0",textSecondary:"#a899c0",grid:"#3d3455",border:"#3d3455",focus:"#c9a0dc"},typography:{fontFamily:"Inter, system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#251e35",text:"#e8ddf0",borderRadius:"8px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"10px"},u={mode:"light",colors:{primary:"#2563eb",categorical:["#2563eb","#0d9488","#ea580c","#6b7280"],sequential:"blues",background:"#f5f6f8",text:"#2c3e50",textSecondary:"#7f8c9b",grid:"#d8dce3",border:"#d8dce3",focus:"#2563eb"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2c3e50",borderRadius:"6px",shadow:"0 2px 8px rgba(0, 0, 0, 0.12)"},borderRadius:"8px"},b={mode:"dark",colors:{primary:"#3b82f6",categorical:["#3b82f6","#14b8a6","#f97316","#9ca3af"],sequential:"blues",background:"#111827",text:"#f3f4f6",textSecondary:"#9ca3af",grid:"#374151",border:"#374151",focus:"#3b82f6"},typography:{fontFamily:"'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f2937",text:"#f3f4f6",borderRadius:"6px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"8px"},g={mode:"light",colors:{primary:"#cc0000",categorical:["#cc0000","#333333","#c8a415","#4682b4"],sequential:"reds",background:"#fafafa",text:"#1a1a1a",textSecondary:"#666666",grid:"#e0e0e0",border:"#e0e0e0",focus:"#cc0000"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#1a1a1a",borderRadius:"2px",shadow:"0 2px 4px rgba(0, 0, 0, 0.15)"},borderRadius:"2px"},y={mode:"dark",colors:{primary:"#ff3333",categorical:["#ff3333","#aaaaaa","#d4a843","#6aa4d4"],sequential:"reds",background:"#0a0a0a",text:"#f5f5f5",textSecondary:"#aaaaaa",grid:"#333333",border:"#333333",focus:"#ff3333"},typography:{fontFamily:"'Helvetica Neue', Helvetica, Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1a1a1a",text:"#f5f5f5",borderRadius:"2px",shadow:"0 2px 8px rgba(0, 0, 0, 0.5)"},borderRadius:"2px"},m={mode:"light",colors:{primary:"#8b0000",categorical:["#8b4513","#556b2f","#4a5568","#800020"],sequential:"oranges",background:"#fffff8",text:"#111111",textSecondary:"#555555",grid:"#e0ddd0",border:"#e0ddd0",focus:"#8b0000"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#fffff8",text:"#111111",borderRadius:"2px",shadow:"0 1px 3px rgba(0, 0, 0, 0.1)"},borderRadius:"0px"},x={mode:"dark",colors:{primary:"#c05050",categorical:["#c08050","#7a8b5a","#8090a0","#a05060"],sequential:"oranges",background:"#1c1b18",text:"#e8e4d8",textSecondary:"#a09880",grid:"#3d3c35",border:"#3d3c35",focus:"#c05050"},typography:{fontFamily:"Georgia, 'Times New Roman', serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#262520",text:"#e8e4d8",borderRadius:"2px",shadow:"0 2px 6px rgba(0, 0, 0, 0.4)"},borderRadius:"0px"},h={mode:"light",colors:{primary:"#e45050",categorical:["#3a86c8","#e45050","#d4a843","#888888"],sequential:"blues",background:"#ffffff",text:"#222222",textSecondary:"#666666",grid:"#d4d4d4",border:"#d4d4d4",focus:"#e45050"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#f8f8f8",text:"#222222",borderRadius:"4px",shadow:"0 2px 6px rgba(0, 0, 0, 0.12)"},borderRadius:"4px"},k={mode:"dark",colors:{primary:"#ff6b6b",categorical:["#5a9fd8","#ff6b6b","#e0c060","#aaaaaa"],sequential:"blues",background:"#141414",text:"#ededed",textSecondary:"#a0a0a0",grid:"#383838",border:"#383838",focus:"#ff6b6b"},typography:{fontFamily:"'Franklin Gothic Medium', 'Libre Franklin', Arial, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1e1e1e",text:"#ededed",borderRadius:"4px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"4px"},S={mode:"light",colors:{primary:"#8b5cf6",categorical:["#8b5cf6","#ec4899","#06b6d4","#84cc16"],sequential:"viridis",background:"#fdf8ff",text:"#2d1b4e",textSecondary:"#7c5a9e",grid:"#e8d0f8",border:"#e8d0f8",focus:"#8b5cf6"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#ffffff",text:"#2d1b4e",borderRadius:"12px",shadow:"0 4px 12px rgba(139, 92, 246, 0.15)"},borderRadius:"12px"},$={mode:"dark",colors:{primary:"#a78bfa",categorical:["#a78bfa","#f472b6","#22d3ee","#a3e635"],sequential:"viridis",background:"#150a28",text:"#f0e8ff",textSecondary:"#b8a0d8",grid:"#3a2560",border:"#3a2560",focus:"#a78bfa"},typography:{fontFamily:"'Nunito', 'Poppins', system-ui, sans-serif",titleSize:16,labelSize:12,tickSize:10},tooltip:{background:"#1f1138",text:"#f0e8ff",borderRadius:"12px",shadow:"0 4px 12px rgba(0, 0, 0, 0.4)"},borderRadius:"12px"},v={light:d,dark:l,"high-contrast":n,pastels:p,"pastels-dark":f,"bi-tool":u,"bi-tool-dark":b,italian:g,"italian-dark":y,tufte:m,"tufte-dark":x,journalist:h,"journalist-dark":k,playful:S,"playful-dark":$};function z(e){return v[e]}function R(e,o=":root"){var t,a,i,r,c;const s=[];return s.push(` --semiotic-bg: ${e.colors.background};`),s.push(` --semiotic-text: ${e.colors.text};`),s.push(` --semiotic-text-secondary: ${e.colors.textSecondary};`),s.push(` --semiotic-grid: ${e.colors.grid};`),s.push(` --semiotic-border: ${e.colors.border};`),s.push(` --semiotic-primary: ${e.colors.primary};`),s.push(` --semiotic-font-family: ${e.typography.fontFamily};`),e.colors.focus&&s.push(` --semiotic-focus: ${e.colors.focus};`),e.colors.selection&&s.push(` --semiotic-selection-color: ${e.colors.selection};`),null!=e.colors.selectionOpacity&&s.push(` --semiotic-selection-opacity: ${e.colors.selectionOpacity};`),e.colors.diverging&&s.push(` --semiotic-diverging: ${e.colors.diverging};`),(null===(t=e.tooltip)||void 0===t?void 0:t.background)&&s.push(` --semiotic-tooltip-bg: ${e.tooltip.background};`),(null===(a=e.tooltip)||void 0===a?void 0:a.text)&&s.push(` --semiotic-tooltip-text: ${e.tooltip.text};`),(null===(i=e.tooltip)||void 0===i?void 0:i.borderRadius)&&s.push(` --semiotic-tooltip-radius: ${e.tooltip.borderRadius};`),(null===(r=e.tooltip)||void 0===r?void 0:r.fontSize)&&s.push(` --semiotic-tooltip-font-size: ${e.tooltip.fontSize};`),(null===(c=e.tooltip)||void 0===c?void 0:c.shadow)&&s.push(` --semiotic-tooltip-shadow: ${e.tooltip.shadow};`),e.borderRadius&&s.push(` --semiotic-border-radius: ${e.borderRadius};`),`${o} {\n${s.join("\n")}\n}`}function F(e){var o,t,a,i,r,c;return{semiotic:Object.assign({bg:{$value:e.colors.background,$type:"color"},text:{$value:e.colors.text,$type:"color"},"text-secondary":{$value:e.colors.textSecondary,$type:"color"},grid:{$value:e.colors.grid,$type:"color"},border:{$value:e.colors.border,$type:"color"},primary:{$value:e.colors.primary,$type:"color"},focus:{$value:e.colors.focus||e.colors.primary,$type:"color"},"font-family":{$value:e.typography.fontFamily,$type:"fontFamily"},"border-radius":{$value:e.borderRadius||"8px",$type:"dimension"},tooltip:{bg:{$value:(null===(o=e.tooltip)||void 0===o?void 0:o.background)||e.colors.background,$type:"color"},text:{$value:(null===(t=e.tooltip)||void 0===t?void 0:t.text)||e.colors.text,$type:"color"},radius:{$value:(null===(a=e.tooltip)||void 0===a?void 0:a.borderRadius)||"6px",$type:"dimension"},"font-size":{$value:(null===(i=e.tooltip)||void 0===i?void 0:i.fontSize)||"14px",$type:"dimension"},shadow:{$value:(null===(r=e.tooltip)||void 0===r?void 0:r.shadow)||"0 2px 8px rgba(0,0,0,0.15)",$type:"shadow"}},selection:{color:{$value:e.colors.selection||e.colors.primary,$type:"color"},opacity:{$value:null!==(c=e.colors.selectionOpacity)&&void 0!==c?c:.2,$type:"number"}},categorical:{$value:e.colors.categorical,$type:"color",$description:"Categorical color palette"},sequential:{$value:e.colors.sequential,$type:"string",$description:"d3-scale-chromatic sequential scheme name"}},e.colors.diverging?{diverging:{$value:e.colors.diverging,$type:"string",$description:"d3-scale-chromatic diverging scheme name"}}:{})}}export{b as BI_TOOL_DARK,u as BI_TOOL_LIGHT,s as COLOR_BLIND_SAFE_CATEGORICAL,l as DARK_THEME,n as HIGH_CONTRAST_THEME,y as ITALIAN_DARK,g as ITALIAN_LIGHT,k as JOURNALIST_DARK,h as JOURNALIST_LIGHT,d as LIGHT_THEME,f as PASTELS_DARK,p as PASTELS_LIGHT,$ as PLAYFUL_DARK,S as PLAYFUL_LIGHT,v as THEME_PRESETS,x as TUFTE_DARK,m as TUFTE_LIGHT,z as resolveThemePreset,R as themeToCSS,F as themeToTokens};
@@ -14,4 +14,5 @@ export { Heatmap } from "./charts/xy/Heatmap";
14
14
  export { ScatterplotMatrix } from "./charts/xy/ScatterplotMatrix";
15
15
  export { MinimapChart } from "./charts/xy/MinimapChart";
16
16
  export { QuadrantChart } from "./charts/xy/QuadrantChart";
17
+ export { MultiAxisLineChart } from "./charts/xy/MultiAxisLineChart";
17
18
  export type { StreamXYFrameProps, StreamXYFrameHandle } from "./stream/types";
@@ -1,10 +1,11 @@
1
1
  import StreamXYFrame from "./stream/StreamXYFrame";
2
2
  import StreamOrdinalFrame from "./stream/StreamOrdinalFrame";
3
3
  import StreamNetworkFrame from "./stream/StreamNetworkFrame";
4
- import { Scatterplot, ConnectedScatterplot, LineChart, AreaChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, PieChart, DonutChart, GroupedBarChart, ForceDirectedGraph, ChordDiagram, SankeyDiagram, TreeDiagram, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart } from "./charts";
4
+ import { Scatterplot, ConnectedScatterplot, LineChart, AreaChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, PieChart, DonutChart, GroupedBarChart, FunnelChart, ForceDirectedGraph, ChordDiagram, SankeyDiagram, TreeDiagram, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart } from "./charts";
5
5
  import { LinkedCharts } from "./LinkedCharts";
6
6
  import { ThemeProvider, useTheme } from "./ThemeProvider";
7
7
  import { exportChart } from "./export/exportChart";
8
+ import { createHatchPattern } from "./charts/shared/hatchPattern";
8
9
  import { toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX } from "./export/chartConfig";
9
10
  import { serializeSelections, deserializeSelections } from "./export/selectionSerializer";
10
11
  import { fromVegaLite } from "./data/fromVegaLite";
@@ -22,8 +23,8 @@ import { RealtimeTemporalHistogram, RealtimeHistogram } from "./charts/realtime/
22
23
  import { RealtimeSwarmChart } from "./charts/realtime/RealtimeSwarmChart";
23
24
  import { RealtimeWaterfallChart } from "./charts/realtime/RealtimeWaterfallChart";
24
25
  import { RealtimeHeatmap } from "./charts/realtime/RealtimeHeatmap";
25
- export { StreamXYFrame, StreamOrdinalFrame, StreamNetworkFrame, Scatterplot, ConnectedScatterplot, LineChart, AreaChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, ForceDirectedGraph, ChordDiagram, SankeyDiagram, TreeDiagram, PieChart, DonutChart, GroupedBarChart, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, LinkedCharts, ThemeProvider, useTheme, exportChart, toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX, serializeSelections, deserializeSelections, fromVegaLite, ChartErrorBoundary, ChartContainer, ChartGrid, CategoryColorProvider, useCategoryColors, ContextLayout, DetailsPanel, Tooltip, MultiLineTooltip, normalizeTooltip, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeTemporalHistogram, RealtimeHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap };
26
- export { ScatterplotProps, ConnectedScatterplotProps, LineChartProps, AreaChartProps, StackedAreaChartProps, HeatmapProps, BubbleChartProps, BarChartProps, StackedBarChartProps, SwarmPlotProps, BoxPlotProps, HistogramProps, ViolinPlotProps, DotPlotProps, PieChartProps, DonutChartProps, GroupedBarChartProps, RidgelinePlotProps, OrbitDiagramProps, OrbitNode, ForceDirectedGraphProps, ChordDiagramProps, SankeyDiagramProps, TreeDiagramProps, TreemapProps, CirclePackProps, ScatterplotMatrixProps, MinimapChartProps, MinimapConfig, QuadrantChartProps, QuadrantsConfig, QuadrantConfig, CenterlineStyle, BaseChartProps, AxisConfig, Accessor, ChartAccessor, ChartMode } from "./charts";
26
+ export { StreamXYFrame, StreamOrdinalFrame, StreamNetworkFrame, Scatterplot, ConnectedScatterplot, LineChart, AreaChart, StackedAreaChart, Heatmap, BubbleChart, BarChart, StackedBarChart, SwarmPlot, BoxPlot, Histogram, ViolinPlot, RidgelinePlot, DotPlot, ForceDirectedGraph, ChordDiagram, SankeyDiagram, TreeDiagram, PieChart, DonutChart, FunnelChart, GroupedBarChart, Treemap, CirclePack, OrbitDiagram, ScatterplotMatrix, MinimapChart, QuadrantChart, MultiAxisLineChart, LinkedCharts, ThemeProvider, useTheme, exportChart, toConfig, fromConfig, toURL, fromURL, copyConfig, configToJSX, serializeSelections, deserializeSelections, fromVegaLite, ChartErrorBoundary, ChartContainer, ChartGrid, CategoryColorProvider, useCategoryColors, ContextLayout, DetailsPanel, Tooltip, MultiLineTooltip, normalizeTooltip, RingBuffer, IncrementalExtent, RealtimeLineChart, RealtimeTemporalHistogram, RealtimeHistogram, RealtimeSwarmChart, RealtimeWaterfallChart, RealtimeHeatmap, createHatchPattern };
27
+ export { ScatterplotProps, ConnectedScatterplotProps, LineChartProps, AreaChartProps, StackedAreaChartProps, HeatmapProps, BubbleChartProps, BarChartProps, StackedBarChartProps, SwarmPlotProps, BoxPlotProps, HistogramProps, ViolinPlotProps, DotPlotProps, PieChartProps, DonutChartProps, FunnelChartProps, GroupedBarChartProps, RidgelinePlotProps, OrbitDiagramProps, OrbitNode, ForceDirectedGraphProps, ChordDiagramProps, SankeyDiagramProps, TreeDiagramProps, TreemapProps, CirclePackProps, ScatterplotMatrixProps, MinimapChartProps, MinimapConfig, QuadrantChartProps, MultiAxisLineChartProps, MultiAxisSeriesConfig, QuadrantsConfig, QuadrantConfig, CenterlineStyle, BaseChartProps, AxisConfig, Accessor, ChartAccessor, ChartMode } from "./charts";
27
28
  export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType, RuntimeMode, SceneNode, Changeset, StreamScales, StreamLayout, CurveType, CanvasRendererFn } from "./stream/types";
28
29
  export type { StreamRendererFn } from "./stream/renderers/types";
29
30
  export type { StreamOrdinalFrameProps, StreamOrdinalFrameHandle, OrdinalChartType, OrdinalScales, OrdinalSceneNode } from "./stream/ordinalTypes";
@@ -37,7 +38,10 @@ export type { UseChartObserverOptions, UseChartObserverResult } from "./LinkedCh
37
38
  export type { ChartObservation, OnObservationCallback } from "./store/ObservationStore";
38
39
  export type { ResolutionMode, SelectionClause, Selection } from "./store/SelectionStore";
39
40
  export type { SemioticTheme } from "./ThemeProvider";
40
- export { LIGHT_THEME, DARK_THEME } from "./ThemeProvider";
41
+ export { LIGHT_THEME, DARK_THEME, HIGH_CONTRAST_THEME } from "./ThemeProvider";
42
+ export { COLOR_BLIND_SAFE_CATEGORICAL } from "./store/ThemeStore";
43
+ export { themeToCSS, themeToTokens, resolveThemePreset, THEME_PRESETS } from "./semiotic-themes";
44
+ export type { ThemePresetName } from "./semiotic-themes";
41
45
  export type { ChartErrorBoundaryProps } from "./ChartErrorBoundary";
42
46
  export type { ChartContainerProps, ChartContainerHandle } from "./ChartContainer";
43
47
  export type { ChartGridProps } from "./ChartGrid";
@@ -47,7 +51,9 @@ export type { DetailsPanelProps } from "./DetailsPanel";
47
51
  export type { ChartConfig, ToConfigOptions, CopyFormat } from "./export/chartConfig";
48
52
  export type { VegaLiteSpec, VegaLiteEncoding } from "./data/fromVegaLite";
49
53
  export type { SerializedSelections, SerializedSelection, SerializedFieldSelection } from "./export/selectionSerializer";
50
- export { smartTickFormat } from "./charts/shared/formatUtils";
54
+ export type { HatchPatternOptions } from "./charts/shared/hatchPattern";
55
+ export { smartTickFormat, adaptiveTimeTicks } from "./charts/shared/formatUtils";
56
+ export { darkenColor, lightenColor } from "./charts/shared/colorManipulation";
51
57
  export type { TooltipProp, TooltipConfig, TooltipField, MultiLineTooltipConfig } from "./Tooltip/Tooltip";
52
58
  export type { ArrowOfTime, WindowMode, ThresholdType, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, AnnotationContext, AnnotationAnchorMode, CrosshairStyle, HoverAnnotationConfig, HoverData } from "./realtime/types";
53
59
  export type { RealtimeLineChartProps } from "./charts/realtime/RealtimeLineChart";