@exegia/corpora-ui 2.0.0 → 3.0.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 (55) hide show
  1. package/dist-lib/components/composed/chat/chart/chart-atom.d.ts +30 -0
  2. package/dist-lib/components/composed/chat/chart/chart-context.d.ts +2 -0
  3. package/dist-lib/components/composed/chat/chart/chart-legend.d.ts +4 -0
  4. package/dist-lib/components/composed/chat/chart/chart-plot.d.ts +3 -0
  5. package/dist-lib/components/composed/chat/chart/chart-root.d.ts +3 -0
  6. package/dist-lib/components/composed/chat/chart/chart-tooltip.d.ts +4 -0
  7. package/dist-lib/components/composed/chat/chart/constants.d.ts +3 -0
  8. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-area-chart.d.ts +93 -0
  9. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-bar-chart.d.ts +86 -0
  10. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-brush.d.ts +65 -0
  11. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-chart.d.ts +44 -0
  12. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-dot.d.ts +16 -0
  13. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-legend.d.ts +24 -0
  14. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-line-chart.d.ts +90 -0
  15. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-pie-chart.d.ts +73 -0
  16. package/dist-lib/components/composed/chat/chart/evilcharts/echarts-tooltip.d.ts +29 -0
  17. package/dist-lib/components/composed/chat/chart/index.d.ts +6 -0
  18. package/dist-lib/components/composed/chat/chart/type.d.ts +80 -0
  19. package/dist-lib/components/composed/chat/chart/use-chart-state.d.ts +3 -0
  20. package/dist-lib/components/composed/chat/chart/use-chart.d.ts +6 -0
  21. package/dist-lib/components/composed/chat/chart/utils.d.ts +5 -0
  22. package/dist-lib/components/composed/chat/chart.d.ts +1 -44
  23. package/dist-lib/components/composed/chat/index.d.ts +1 -1
  24. package/dist-lib/components/stories/chart.story.d.ts +39 -2
  25. package/dist-lib/components/stories/insight-cards.story.d.ts +30 -1
  26. package/dist-lib/index.js +10020 -5549
  27. package/dist-lib/index.js.map +1 -1
  28. package/package.json +2 -1
  29. package/src/components/composed/chat/__tests__/chart.test.tsx +255 -1
  30. package/src/components/composed/chat/chart/chart-atom.ts +55 -0
  31. package/src/components/composed/chat/chart/chart-context.ts +9 -0
  32. package/src/components/composed/chat/chart/chart-legend.tsx +75 -0
  33. package/src/components/composed/chat/chart/chart-plot.tsx +233 -0
  34. package/src/components/composed/chat/chart/chart-root.tsx +229 -0
  35. package/src/components/composed/chat/chart/chart-tooltip.tsx +74 -0
  36. package/src/components/composed/chat/chart/constants.ts +8 -0
  37. package/src/components/composed/chat/chart/evilcharts/LICENSE +21 -0
  38. package/src/components/composed/chat/chart/evilcharts/README.md +8 -0
  39. package/src/components/composed/chat/chart/evilcharts/echarts-area-chart.tsx +2358 -0
  40. package/src/components/composed/chat/chart/evilcharts/echarts-bar-chart.tsx +2261 -0
  41. package/src/components/composed/chat/chart/evilcharts/echarts-brush.tsx +233 -0
  42. package/src/components/composed/chat/chart/evilcharts/echarts-chart.tsx +214 -0
  43. package/src/components/composed/chat/chart/evilcharts/echarts-dot.tsx +111 -0
  44. package/src/components/composed/chat/chart/evilcharts/echarts-legend.tsx +131 -0
  45. package/src/components/composed/chat/chart/evilcharts/echarts-line-chart.tsx +2112 -0
  46. package/src/components/composed/chat/chart/evilcharts/echarts-pie-chart.tsx +1235 -0
  47. package/src/components/composed/chat/chart/evilcharts/echarts-tooltip.tsx +125 -0
  48. package/src/components/composed/chat/chart/index.ts +13 -0
  49. package/src/components/composed/chat/chart/type.ts +88 -0
  50. package/src/components/composed/chat/chart/use-chart-state.ts +22 -0
  51. package/src/components/composed/chat/chart/use-chart.ts +70 -0
  52. package/src/components/composed/chat/chart/utils.ts +47 -0
  53. package/src/components/composed/chat/chart.tsx +2 -400
  54. package/src/components/composed/chat/index.ts +1 -7
  55. package/src/components/stories/chart.story.tsx +16 -1
@@ -0,0 +1,30 @@
1
+ import { IChartState, TChartInstanceId } from './type';
2
+ export declare const chartSelectedKeyAtom: (id: TChartInstanceId) => import('jotai').PrimitiveAtom<string | null> & {
3
+ init: string | null;
4
+ };
5
+ export declare const chartStateAtom: (id: TChartInstanceId) => import('jotai').Atom<IChartState>;
6
+ export declare const selectChartKeyAtom: (id: TChartInstanceId) => import('jotai').WritableAtom<null, [key: string | null], void> & {
7
+ init: null;
8
+ };
9
+ export declare const toggleChartKeyAtom: (id: TChartInstanceId) => import('jotai').WritableAtom<null, [key: string], void> & {
10
+ init: null;
11
+ };
12
+ export declare const resetChartAtom: (id: TChartInstanceId) => import('jotai').WritableAtom<null, [], void> & {
13
+ init: null;
14
+ };
15
+ /** @internal Mounted root projects configuration and controlled props. */
16
+ export declare const chartConfigAtom: (id: TChartInstanceId) => import('jotai').PrimitiveAtom<{
17
+ controlled: boolean;
18
+ initial: string | null;
19
+ keys: readonly string[];
20
+ onChange?: (key: string | null) => void;
21
+ }> & {
22
+ init: {
23
+ controlled: boolean;
24
+ initial: string | null;
25
+ keys: readonly string[];
26
+ onChange?: (key: string | null) => void;
27
+ };
28
+ };
29
+ /** Call only after all consumers of a named instance have unmounted. */
30
+ export declare function removeChartInstance(id: TChartInstanceId): void;
@@ -0,0 +1,2 @@
1
+ export declare const ChartContext: import('react').Context<string | null>;
2
+ export declare function useChartContext(): string;
@@ -0,0 +1,4 @@
1
+ import { IChartProps } from './type';
2
+ export declare function ChartLegend({ type, data, series, selectedKey, interactive, onSelect, }: Pick<IChartProps, "type" | "data" | "series" | "selectedKey" | "interactive"> & {
3
+ onSelect: (key: string) => void;
4
+ }): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { IChartProps } from './type';
2
+ /** Wait for layout before initializing ECharts (also supports hidden tabs and SSR). */
3
+ export declare function ChartPlot(props: IChartProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { IChartProps } from './type';
2
+ import type * as React from "react";
3
+ export declare function ChartRoot({ ref, ...allProps }: IChartProps): React.ReactElement;
@@ -0,0 +1,4 @@
1
+ import { TooltipProps } from './evilcharts/echarts-area-chart';
2
+ import { IChartSeries, TChartDatum, TChartType } from './type';
3
+ /** React escapes labels and formatted nodes before they enter ECharts' HTML tooltip. */
4
+ export declare function createChartTooltip(type: TChartType, data: TChartDatum[], series: IChartSeries[], options?: TooltipProps): (params: unknown) => string;
@@ -0,0 +1,3 @@
1
+ import { TChartType } from './type';
2
+ export declare const CHART_TYPE_LABEL: Record<TChartType, string>;
3
+ export declare const CHART_DEFAULT_HEIGHT = 150;
@@ -0,0 +1,93 @@
1
+ import { ChartConfig, EChartsRenderer } from './echarts-chart';
2
+ import { TooltipPosition, TooltipRoundness, TooltipVariant } from './echarts-tooltip';
3
+ import { BrushProps } from './echarts-brush';
4
+ import { FC, ReactNode } from 'react';
5
+ import { DotVariant } from './echarts-dot';
6
+ import { LegendVariant } from './echarts-legend';
7
+ export type { ChartConfig, DotVariant, EChartsRenderer, LegendVariant, TooltipPosition, TooltipRoundness, TooltipVariant, };
8
+ export type AreaVariant = "gradient" | "gradient-reverse" | "solid" | "dotted" | "lines" | "hatched" | "none";
9
+ export type StrokeVariant = "solid" | "dashed" | "animated-dashed";
10
+ export type StackType = "default" | "stacked" | "expanded";
11
+ export type AreaAnimationType = "none" | "left-to-right" | "right-to-left" | "center-out" | "edges-in";
12
+ export type CurveType = "linear" | "smooth" | "bump" | "monotone" | "monotoneX" | "monotoneY" | "natural" | "step";
13
+ export interface EChartsAreaChartProps<TData extends Record<string, unknown>> {
14
+ data: TData[];
15
+ config: ChartConfig;
16
+ renderer?: EChartsRenderer;
17
+ xDataKey?: keyof TData & string;
18
+ className?: string;
19
+ curveType?: CurveType;
20
+ stackType?: StackType;
21
+ animation?: boolean;
22
+ animationType?: AreaAnimationType;
23
+ enableHoverHighlight?: boolean;
24
+ enableHoverReveal?: boolean;
25
+ defaultSelectedDataKey?: string | null;
26
+ selectedDataKey?: string | null;
27
+ onSelectionChange?: (key: string | null) => void;
28
+ isLoading?: boolean;
29
+ loadingPoints?: number;
30
+ chartOptions?: Record<string, unknown>;
31
+ children?: ReactNode;
32
+ }
33
+ export interface AreaProps {
34
+ dataKey: string;
35
+ variant?: AreaVariant;
36
+ strokeVariant?: StrokeVariant;
37
+ strokeWidth?: number;
38
+ curveType?: CurveType;
39
+ animationType?: AreaAnimationType;
40
+ connectNulls?: boolean;
41
+ isClickable?: boolean;
42
+ enableBufferLine?: boolean;
43
+ children?: ReactNode;
44
+ }
45
+ export interface DotProps {
46
+ variant?: DotVariant;
47
+ }
48
+ export interface XAxisProps {
49
+ dataKey?: string;
50
+ tickFormatter?: (value: string, index: number) => string;
51
+ label?: string;
52
+ hideDots?: boolean;
53
+ }
54
+ export interface YAxisProps {
55
+ dataKey?: string;
56
+ tickFormatter?: (value: number, index: number) => string;
57
+ label?: string;
58
+ hideDots?: boolean;
59
+ }
60
+ export interface TooltipProps {
61
+ variant?: TooltipVariant;
62
+ roundness?: TooltipRoundness;
63
+ cursor?: boolean;
64
+ position?: TooltipPosition;
65
+ }
66
+ export interface LegendProps {
67
+ variant?: LegendVariant;
68
+ align?: "left" | "center" | "right";
69
+ verticalAlign?: "top" | "middle" | "bottom";
70
+ isClickable?: boolean;
71
+ }
72
+ /**
73
+ * Apache ECharts port of the EvilCharts area chart, exposing a compound-as-config
74
+ * API so its JSX reads identically to the Recharts twin. The root owns the data,
75
+ * config, selection state, loading skeleton, intro reveal, and optional zoom
76
+ * brush; every visual part — `<Area>`, `<XAxis>`, `<YAxis>`, `<Grid>`,
77
+ * `<Tooltip>`, `<Legend>` — is composed as a declarative child that renders
78
+ * nothing. The root walks those children by reference and drives a single
79
+ * imperative ECharts instance. Fully self-contained: its only dependencies are
80
+ * `react` and `echarts`.
81
+ */
82
+ export declare function EChartsAreaChart<TData extends Record<string, unknown>>({ data, config, renderer, xDataKey, className, curveType, stackType, animation, animationType, enableHoverHighlight, enableHoverReveal, defaultSelectedDataKey, selectedDataKey: selectedDataKeyProp, onSelectionChange, isLoading, loadingPoints, chartOptions, children, }: EChartsAreaChartProps<TData>): import("react").JSX.Element;
83
+ export declare namespace EChartsAreaChart {
84
+ var Area: FC<AreaProps>;
85
+ var Dot: FC<DotProps>;
86
+ var ActiveDot: FC<DotProps>;
87
+ var XAxis: FC<XAxisProps>;
88
+ var YAxis: FC<YAxisProps>;
89
+ var Grid: FC;
90
+ var Tooltip: FC<TooltipProps>;
91
+ var Legend: FC<LegendProps>;
92
+ var Brush: FC<BrushProps>;
93
+ }
@@ -0,0 +1,86 @@
1
+ import { ChartConfig, EChartsRenderer } from './echarts-chart';
2
+ import { TooltipPosition, TooltipRoundness, TooltipVariant } from './echarts-tooltip';
3
+ import { BrushProps } from './echarts-brush';
4
+ import { FC, ReactNode } from 'react';
5
+ import { LegendVariant } from './echarts-legend';
6
+ export type { ChartConfig, EChartsRenderer, LegendVariant, TooltipPosition, TooltipRoundness, TooltipVariant, };
7
+ export type BarVariant = "default" | "hatched" | "duotone" | "duotone-reverse" | "gradient" | "stripped" | "blocks" | "expandable";
8
+ export type StackType = "default" | "stacked" | "percent";
9
+ export type BarLayout = "vertical" | "horizontal";
10
+ export type BarAnimationType = "none" | "left-to-right" | "right-to-left" | "center-out" | "edges-in";
11
+ export interface EChartsBarChartProps<TData extends Record<string, unknown>> {
12
+ data: TData[];
13
+ config: ChartConfig;
14
+ renderer?: EChartsRenderer;
15
+ xDataKey?: keyof TData & string;
16
+ className?: string;
17
+ stackType?: StackType;
18
+ layout?: BarLayout;
19
+ barRadius?: number;
20
+ animation?: boolean;
21
+ animationType?: BarAnimationType;
22
+ barGap?: number;
23
+ barCategoryGap?: number;
24
+ selectedDataKey?: string | null;
25
+ defaultSelectedDataKey?: string | null;
26
+ onSelectionChange?: (key: string | null) => void;
27
+ enableMaxValueHighlight?: boolean;
28
+ isLoading?: boolean;
29
+ loadingBars?: number;
30
+ chartOptions?: Record<string, unknown>;
31
+ children?: ReactNode;
32
+ }
33
+ export interface BarProps {
34
+ dataKey: string;
35
+ variant?: BarVariant;
36
+ radius?: number;
37
+ animationType?: BarAnimationType;
38
+ isClickable?: boolean;
39
+ enableHoverHighlight?: boolean;
40
+ glowing?: boolean;
41
+ bufferBar?: boolean;
42
+ }
43
+ export interface XAxisProps {
44
+ dataKey?: string;
45
+ tickFormatter?: (value: string, index: number) => string;
46
+ label?: string;
47
+ hideDots?: boolean;
48
+ }
49
+ export interface YAxisProps {
50
+ dataKey?: string;
51
+ tickFormatter?: (value: string, index: number) => string;
52
+ label?: string;
53
+ hideDots?: boolean;
54
+ }
55
+ export interface TooltipProps {
56
+ variant?: TooltipVariant;
57
+ roundness?: TooltipRoundness;
58
+ defaultIndex?: number;
59
+ position?: TooltipPosition;
60
+ }
61
+ export interface LegendProps {
62
+ variant?: LegendVariant;
63
+ align?: "left" | "center" | "right";
64
+ verticalAlign?: "top" | "middle" | "bottom";
65
+ isClickable?: boolean;
66
+ }
67
+ /**
68
+ * Apache ECharts port of the EvilCharts bar chart, exposing a compound-as-config
69
+ * API so its JSX reads identically to the Recharts twin. The root owns the data,
70
+ * config, selection state, loading skeleton, intro grow-in, and optional zoom
71
+ * brush; every visual part — `<Bar>`, `<XAxis>`, `<YAxis>`, `<Grid>`,
72
+ * `<Tooltip>`, `<Legend>` — is composed as a declarative child that renders
73
+ * nothing. The root walks those children by reference and drives a single
74
+ * imperative ECharts instance. Fully self-contained: its only dependencies are
75
+ * `react`, `echarts`, and `motion`.
76
+ */
77
+ export declare function EChartsBarChart<TData extends Record<string, unknown>>({ data, config, renderer, xDataKey, className, stackType, layout, barRadius, animation, animationType, barGap, barCategoryGap, selectedDataKey: selectedDataKeyProp, defaultSelectedDataKey, onSelectionChange, enableMaxValueHighlight, isLoading, loadingBars, chartOptions, children, }: EChartsBarChartProps<TData>): import("react").JSX.Element;
78
+ export declare namespace EChartsBarChart {
79
+ var Bar: FC<BarProps>;
80
+ var XAxis: FC<XAxisProps>;
81
+ var YAxis: FC<YAxisProps>;
82
+ var Grid: FC;
83
+ var Tooltip: FC<TooltipProps>;
84
+ var Legend: FC<LegendProps>;
85
+ var Brush: FC<BrushProps>;
86
+ }
@@ -0,0 +1,65 @@
1
+ import { ResolvedColors } from './echarts-chart';
2
+ import { DataZoomComponentOption } from 'echarts/components';
3
+ import { FC } from 'react';
4
+ import * as echarts from "echarts/core";
5
+ type EChartsInstance = ReturnType<typeof echarts.init>;
6
+ declare const BRUSH_BORDER_OPACITY = 1;
7
+ export { BRUSH_BORDER_OPACITY };
8
+ export interface BrushProps {
9
+ height?: number;
10
+ formatLabel?: (value: string, index: number) => string;
11
+ onChange?: (range: {
12
+ startIndex: number;
13
+ endIndex: number;
14
+ }) => void;
15
+ }
16
+ /** Declares the zoom brush below the chart. Presence renders it; renders nothing itself. */
17
+ export declare const Brush: FC<BrushProps>;
18
+ export type BrushRange = {
19
+ start: number;
20
+ end: number;
21
+ };
22
+ export type BrushGeometry = {
23
+ bottom: number;
24
+ height: number;
25
+ };
26
+ export type BrushOverlayParams = {
27
+ range: BrushRange;
28
+ geom: BrushGeometry;
29
+ size: {
30
+ width: number;
31
+ height: number;
32
+ };
33
+ tokens: ResolvedColors["tokens"];
34
+ labels: {
35
+ start: string;
36
+ end: string;
37
+ } | null;
38
+ showLabels: boolean;
39
+ hover: {
40
+ left: boolean;
41
+ right: boolean;
42
+ };
43
+ };
44
+ type ZrRect = InstanceType<typeof echarts.graphic.Rect>;
45
+ type ZrCircle = InstanceType<typeof echarts.graphic.Circle>;
46
+ type ZrText = InstanceType<typeof echarts.graphic.Text>;
47
+ export type BrushOverlayElements = {
48
+ dimLeft: ZrRect;
49
+ dimRight: ZrRect;
50
+ frame: ZrRect;
51
+ pillLeft: ZrRect;
52
+ pillRight: ZrRect;
53
+ grips: ZrCircle[];
54
+ labelStart: ZrText;
55
+ labelEnd: ZrText;
56
+ };
57
+ export declare function syncBrushOverlay(chart: EChartsInstance, store: {
58
+ brushOverlay: BrushOverlayElements | null;
59
+ }, params: BrushOverlayParams | null): void;
60
+ export declare function buildBrushDataZoom(params: {
61
+ brushBottom: number;
62
+ brushHeight: number;
63
+ brushRange: BrushRange;
64
+ fillerColor: string;
65
+ }): DataZoomComponentOption[];
@@ -0,0 +1,44 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ import * as echarts from "echarts/core";
3
+ export declare const ECHARTS_RENDERERS: {
4
+ readonly canvas: "canvas";
5
+ readonly svg: "svg";
6
+ };
7
+ export type EChartsRenderer = (typeof ECHARTS_RENDERERS)[keyof typeof ECHARTS_RENDERERS];
8
+ export declare const DEFAULT_ECHARTS_RENDERER: "canvas";
9
+ export declare const THEMES: {
10
+ readonly light: "";
11
+ readonly dark: ".dark";
12
+ };
13
+ export type ThemeKey = keyof typeof THEMES;
14
+ export declare const THEME_KEYS: ThemeKey[];
15
+ export type AtLeastOneThemeColor = {
16
+ light: string[];
17
+ dark?: string[];
18
+ } | {
19
+ light?: string[];
20
+ dark: string[];
21
+ };
22
+ export type ChartConfig = Record<string, {
23
+ label?: ReactNode;
24
+ icon?: ComponentType;
25
+ colors?: AtLeastOneThemeColor;
26
+ }>;
27
+ export declare function getColorsCount(item: ChartConfig[string]): number;
28
+ export declare function distributeColors(colors: string[], maxCount: number): string[];
29
+ export declare function buildChartCss(id: string, config: ChartConfig): string;
30
+ export declare function normalizeColor(value: string): string;
31
+ export declare function withAlpha(color: string, alpha: number): string;
32
+ export type ResolvedColors = {
33
+ series: Record<string, string[]>;
34
+ tokens: {
35
+ mutedForeground: string;
36
+ border: string;
37
+ foreground: string;
38
+ background: string;
39
+ };
40
+ };
41
+ export declare function resolveColors(container: HTMLElement, config: ChartConfig, seriesKeys: string[]): ResolvedColors;
42
+ export declare function seriesPaint(slots: string[]): string | echarts.graphic.LinearGradient;
43
+ export declare function indicatorBackground(key: string, colorsCount: number): string;
44
+ export declare function flattenColor(color: string, base: string): string;
@@ -0,0 +1,16 @@
1
+ import type * as echarts from "echarts/core";
2
+ export type DotVariant = "none" | "default" | "border" | "colored-border" | "ping";
3
+ export type DotItemStyleOption = {
4
+ color?: string | echarts.graphic.LinearGradient;
5
+ borderColor?: string | echarts.graphic.LinearGradient;
6
+ borderWidth?: number;
7
+ opacity?: number;
8
+ };
9
+ export type DotStyle = {
10
+ size: number;
11
+ itemStyle: DotItemStyleOption;
12
+ };
13
+ export declare function dotItemStyle(variant: DotVariant, paint: string | echarts.graphic.LinearGradient, background: string): DotItemStyleOption;
14
+ export declare const DOT_SIZES: Record<DotVariant, number>;
15
+ export declare function dotStyle(variant: DotVariant, paint: string | echarts.graphic.LinearGradient, background: string): DotStyle;
16
+ export declare function sampleGradient(slots: string[], t: number): string;
@@ -0,0 +1,24 @@
1
+ import { ChartConfig } from './echarts-chart';
2
+ import { CSSProperties } from 'react';
3
+ export type LegendVariant = "square" | "circle" | "circle-outline" | "rounded-square" | "rounded-square-outline" | "vertical-bar" | "horizontal-bar";
4
+ export declare function legendFillStyle(key: string, colorsCount: number): CSSProperties;
5
+ export declare function legendOutlineStyle(key: string, colorsCount: number): CSSProperties;
6
+ export declare function LegendIndicator({ variant, dataKey, colorsCount, }: {
7
+ variant: LegendVariant;
8
+ dataKey: string;
9
+ colorsCount: number;
10
+ }): import("react").JSX.Element;
11
+ type LegendOverlayProps = {
12
+ seriesKeys: string[];
13
+ config: ChartConfig;
14
+ variant: LegendVariant;
15
+ align: "left" | "center" | "right";
16
+ verticalAlign: "top" | "middle" | "bottom";
17
+ selectedKey: string | null;
18
+ hoveredKey: string | null;
19
+ isClickable: boolean;
20
+ onToggle: (key: string) => void;
21
+ style: CSSProperties;
22
+ };
23
+ export declare function LegendOverlay({ seriesKeys, config, variant, align, selectedKey, hoveredKey, isClickable, onToggle, style, }: LegendOverlayProps): import("react").JSX.Element;
24
+ export {};
@@ -0,0 +1,90 @@
1
+ import { ChartConfig, EChartsRenderer } from './echarts-chart';
2
+ import { TooltipPosition, TooltipRoundness, TooltipVariant } from './echarts-tooltip';
3
+ import { BrushProps } from './echarts-brush';
4
+ import { FC, ReactNode } from 'react';
5
+ import { DotVariant } from './echarts-dot';
6
+ import { LegendVariant } from './echarts-legend';
7
+ export type { ChartConfig, DotVariant, EChartsRenderer, LegendVariant, TooltipPosition, TooltipRoundness, TooltipVariant, };
8
+ export type StrokeVariant = "solid" | "dashed" | "animated-dashed";
9
+ export type LineAnimationType = "none" | "left-to-right" | "right-to-left" | "center-out" | "edges-in";
10
+ export type CurveType = "linear" | "smooth" | "bump" | "monotone" | "monotoneX" | "monotoneY" | "natural" | "step";
11
+ export interface EChartsLineChartProps<TData extends Record<string, unknown>> {
12
+ data: TData[];
13
+ config: ChartConfig;
14
+ renderer?: EChartsRenderer;
15
+ xDataKey?: keyof TData & string;
16
+ className?: string;
17
+ curveType?: CurveType;
18
+ animation?: boolean;
19
+ animationType?: LineAnimationType;
20
+ enableHoverHighlight?: boolean;
21
+ enableHoverReveal?: boolean;
22
+ selectedDataKey?: string | null;
23
+ defaultSelectedDataKey?: string | null;
24
+ onSelectionChange?: (key: string | null) => void;
25
+ isLoading?: boolean;
26
+ loadingPoints?: number;
27
+ chartOptions?: Record<string, unknown>;
28
+ children?: ReactNode;
29
+ }
30
+ export interface LineProps {
31
+ dataKey: string;
32
+ strokeVariant?: StrokeVariant;
33
+ strokeWidth?: number;
34
+ curveType?: CurveType;
35
+ animationType?: LineAnimationType;
36
+ connectNulls?: boolean;
37
+ isClickable?: boolean;
38
+ glowing?: boolean;
39
+ enableBufferLine?: boolean;
40
+ children?: ReactNode;
41
+ }
42
+ export interface DotProps {
43
+ variant?: DotVariant;
44
+ }
45
+ export interface XAxisProps {
46
+ dataKey?: string;
47
+ tickFormatter?: (value: string, index: number) => string;
48
+ label?: string;
49
+ hideDots?: boolean;
50
+ }
51
+ export interface YAxisProps {
52
+ dataKey?: string;
53
+ tickFormatter?: (value: number, index: number) => string;
54
+ label?: string;
55
+ hideDots?: boolean;
56
+ }
57
+ export interface TooltipProps {
58
+ variant?: TooltipVariant;
59
+ roundness?: TooltipRoundness;
60
+ cursor?: boolean;
61
+ position?: TooltipPosition;
62
+ }
63
+ export interface LegendProps {
64
+ variant?: LegendVariant;
65
+ align?: "left" | "center" | "right";
66
+ verticalAlign?: "top" | "middle" | "bottom";
67
+ isClickable?: boolean;
68
+ }
69
+ /**
70
+ * Apache ECharts port of the EvilCharts line chart, exposing a compound-as-config
71
+ * API so its JSX reads identically to the Recharts twin. The root owns the data,
72
+ * config, selection state, loading skeleton, intro reveal, and optional zoom
73
+ * brush; every visual part — `<Line>`, `<XAxis>`, `<YAxis>`, `<Grid>`,
74
+ * `<Tooltip>`, `<Legend>` — is composed as a declarative child that renders
75
+ * nothing. The root walks those children by reference and drives a single
76
+ * imperative ECharts instance. Fully self-contained: its only dependencies are
77
+ * `react`, `echarts`, and `motion`.
78
+ */
79
+ export declare function EChartsLineChart<TData extends Record<string, unknown>>({ data, config, renderer, xDataKey, className, curveType, animation, animationType, enableHoverHighlight, enableHoverReveal, selectedDataKey: selectedDataKeyProp, defaultSelectedDataKey, onSelectionChange, isLoading, loadingPoints, chartOptions, children, }: EChartsLineChartProps<TData>): import("react").JSX.Element;
80
+ export declare namespace EChartsLineChart {
81
+ var Line: FC<LineProps>;
82
+ var Dot: FC<DotProps>;
83
+ var ActiveDot: FC<DotProps>;
84
+ var XAxis: FC<XAxisProps>;
85
+ var YAxis: FC<YAxisProps>;
86
+ var Grid: FC;
87
+ var Tooltip: FC<TooltipProps>;
88
+ var Legend: FC<LegendProps>;
89
+ var Brush: FC<BrushProps>;
90
+ }
@@ -0,0 +1,73 @@
1
+ import { TooltipPosition, TooltipRoundness, TooltipVariant } from './echarts-tooltip';
2
+ import { ChartConfig, EChartsRenderer } from './echarts-chart';
3
+ import { FC, ReactNode } from 'react';
4
+ import { LegendVariant } from './echarts-legend';
5
+ export type { ChartConfig, EChartsRenderer, LegendVariant, TooltipPosition, TooltipRoundness, TooltipVariant, };
6
+ export type PieVariant = "gradient";
7
+ export type LabelPosition = "inside" | "outside";
8
+ export type BackgroundVariant = "dots" | "grid" | "cross-hatch" | "diagonal-lines" | "plus" | "falling-triangles" | "4-pointed-star" | "tiny-checkers" | "overlapping-circles" | "wiggle-lines" | "bubbles";
9
+ export interface EChartsPieChartProps<TData extends Record<string, unknown>> {
10
+ data: TData[];
11
+ config: ChartConfig;
12
+ dataKey: keyof TData & string;
13
+ nameKey: keyof TData & string;
14
+ className?: string;
15
+ renderer?: EChartsRenderer;
16
+ animation?: boolean;
17
+ defaultSelectedSector?: string | null;
18
+ selectedSector?: string | null;
19
+ onSelectionChange?: (selection: {
20
+ dataKey: string;
21
+ value: number;
22
+ } | null) => void;
23
+ isLoading?: boolean;
24
+ chartOptions?: Record<string, unknown>;
25
+ children?: ReactNode;
26
+ }
27
+ export interface PieProps {
28
+ variant?: PieVariant;
29
+ innerRadius?: number | string;
30
+ outerRadius?: number | string;
31
+ cornerRadius?: number;
32
+ paddingAngle?: number;
33
+ startAngle?: number;
34
+ endAngle?: number;
35
+ isClickable?: boolean;
36
+ children?: ReactNode;
37
+ }
38
+ export interface LabelProps {
39
+ dataKey?: string;
40
+ position?: LabelPosition;
41
+ }
42
+ export interface TooltipProps {
43
+ variant?: TooltipVariant;
44
+ roundness?: TooltipRoundness;
45
+ defaultIndex?: number;
46
+ position?: TooltipPosition;
47
+ }
48
+ export interface LegendProps {
49
+ variant?: LegendVariant;
50
+ align?: "left" | "center" | "right";
51
+ verticalAlign?: "top" | "middle" | "bottom";
52
+ isClickable?: boolean;
53
+ }
54
+ export interface BackgroundProps {
55
+ variant?: BackgroundVariant;
56
+ }
57
+ /**
58
+ * Apache ECharts port of the EvilCharts pie chart, exposing a compound-as-config
59
+ * API so its JSX reads identically to the Recharts twin. The root owns the data,
60
+ * config, selection state, loading skeleton, and intro reveal; every visual part —
61
+ * `<Pie>`, `<Tooltip>`, `<Legend>`, `<Background>` — is composed as a declarative
62
+ * child that renders nothing. The root walks those children by reference and
63
+ * drives a single imperative ECharts instance. Fully self-contained: its only
64
+ * dependencies are `react`, `echarts`, and `motion`.
65
+ */
66
+ export declare function EChartsPieChart<TData extends Record<string, unknown>>({ data, config, dataKey, nameKey, className, renderer, animation, defaultSelectedSector, selectedSector: selectedSectorProp, onSelectionChange, isLoading, chartOptions, children, }: EChartsPieChartProps<TData>): import("react").JSX.Element;
67
+ export declare namespace EChartsPieChart {
68
+ var Pie: FC<PieProps>;
69
+ var Label: FC<LabelProps>;
70
+ var Tooltip: FC<TooltipProps>;
71
+ var Legend: FC<LegendProps>;
72
+ var Background: FC<BackgroundProps>;
73
+ }
@@ -0,0 +1,29 @@
1
+ import { ResolvedColors } from './echarts-chart';
2
+ import { TooltipComponentOption } from 'echarts/components';
3
+ export type TooltipVariant = "default" | "frosted-glass";
4
+ export type TooltipRoundness = "sm" | "md" | "lg" | "xl";
5
+ export type TooltipPosition = "fixed" | "variable";
6
+ export declare const roundnessClass: Record<TooltipRoundness, string>;
7
+ export declare const tooltipVariantClass: Record<TooltipVariant, string>;
8
+ export declare function tooltipIndicatorHtml(key: string, colorsCount: number): string;
9
+ export declare function tooltipRow({ indicatorHtml, labelText, valueText, dimmed, }: {
10
+ indicatorHtml: string;
11
+ labelText: string;
12
+ valueText: string;
13
+ dimmed: string;
14
+ }): string;
15
+ export declare function tooltipShell({ label, body, roundness, variant, }: {
16
+ label: string;
17
+ body: string;
18
+ roundness: TooltipRoundness;
19
+ variant: TooltipVariant;
20
+ }): string;
21
+ export declare function resolveTooltipPosition(position: TooltipPosition): TooltipComponentOption["position"];
22
+ export declare function tooltipBaseOption(params: {
23
+ present: boolean;
24
+ cursor: boolean;
25
+ tokens: ResolvedColors["tokens"];
26
+ position: TooltipPosition;
27
+ axisPointerColor: string;
28
+ strokeWidth: number;
29
+ }): TooltipComponentOption;
@@ -0,0 +1,6 @@
1
+ export { ChartRoot as Chart, ChartRoot } from './chart-root';
2
+ export { useChartContext } from './chart-context';
3
+ export { useChartActions, useChartState } from './use-chart-state';
4
+ export { chartSelectedKeyAtom, chartStateAtom, selectChartKeyAtom, toggleChartKeyAtom, resetChartAtom, removeChartInstance, } from './chart-atom';
5
+ export { CHART_TYPE_LABEL, CHART_DEFAULT_HEIGHT } from './constants';
6
+ export type * from './type';