@aquera/nile-visualization 0.3.0 → 0.5.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 (50) hide show
  1. package/dist/src/index.d.ts +8 -2
  2. package/dist/src/index.js +3 -0
  3. package/dist/src/internal/chart-adapters.js +86 -0
  4. package/dist/src/internal/highcharts-provider.js +27 -0
  5. package/dist/src/internal/types/all-chart-config.type.d.ts +2 -4
  6. package/dist/src/internal/types/chart-config.type.d.ts +3 -2
  7. package/dist/src/internal/types/chart-donut-config.type.d.ts +2 -0
  8. package/dist/src/internal/types/chart-heatmap-config.type.d.ts +19 -0
  9. package/dist/src/internal/types/chart-heatmap-config.type.js +2 -0
  10. package/dist/src/internal/types/chart-kpi-config.type.d.ts +5 -21
  11. package/dist/src/internal/types/chart-line-column-config.type.d.ts +14 -0
  12. package/dist/src/internal/types/chart-line-column-config.type.js +2 -0
  13. package/dist/src/internal/types/chart-organization-config.type.d.ts +13 -0
  14. package/dist/src/internal/types/chart-organization-config.type.js +2 -0
  15. package/dist/src/internal/types/index.d.ts +4 -1
  16. package/dist/src/internal/types/primitive-chart-config.type.d.ts +5 -1
  17. package/dist/src/nile-ai-panel/nile-ai-panel.css.js +8 -0
  18. package/dist/src/nile-ai-panel/nile-ai-panel.d.ts +2 -0
  19. package/dist/src/nile-ai-panel/nile-ai-panel.js +8 -0
  20. package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.js +3 -1
  21. package/dist/src/nile-chart/index.d.ts +2 -2
  22. package/dist/src/nile-chart/nile-chart-config.d.ts +39 -96
  23. package/dist/src/nile-chart/nile-chart.css.js +31 -6
  24. package/dist/src/nile-chart/nile-chart.d.ts +48 -7
  25. package/dist/src/nile-chart/nile-chart.js +527 -54
  26. package/dist/src/nile-donut-chart/nile-donut-chart.d.ts +2 -0
  27. package/dist/src/nile-donut-chart/nile-donut-chart.js +16 -1
  28. package/dist/src/nile-heatmap-chart/index.d.ts +2 -0
  29. package/dist/src/nile-heatmap-chart/index.js +2 -0
  30. package/dist/src/nile-heatmap-chart/nile-heatmap-chart.css.d.ts +1 -0
  31. package/dist/src/nile-heatmap-chart/nile-heatmap-chart.css.js +28 -0
  32. package/dist/src/nile-heatmap-chart/nile-heatmap-chart.d.ts +49 -0
  33. package/dist/src/nile-heatmap-chart/nile-heatmap-chart.js +259 -0
  34. package/dist/src/nile-histogram-chart/nile-histogram-chart.js +3 -1
  35. package/dist/src/nile-kpi-chart/nile-kpi-chart.css.js +4 -4
  36. package/dist/src/nile-kpi-chart/nile-kpi-chart.d.ts +2 -0
  37. package/dist/src/nile-kpi-chart/nile-kpi-chart.js +6 -0
  38. package/dist/src/nile-line-column-chart/index.d.ts +2 -0
  39. package/dist/src/nile-line-column-chart/index.js +2 -0
  40. package/dist/src/nile-line-column-chart/nile-line-column-chart.css.d.ts +1 -0
  41. package/dist/src/nile-line-column-chart/nile-line-column-chart.css.js +28 -0
  42. package/dist/src/nile-line-column-chart/nile-line-column-chart.d.ts +42 -0
  43. package/dist/src/nile-line-column-chart/nile-line-column-chart.js +205 -0
  44. package/dist/src/nile-organization-chart/index.d.ts +2 -0
  45. package/dist/src/nile-organization-chart/index.js +2 -0
  46. package/dist/src/nile-organization-chart/nile-organization-chart.css.d.ts +1 -0
  47. package/dist/src/nile-organization-chart/nile-organization-chart.css.js +28 -0
  48. package/dist/src/nile-organization-chart/nile-organization-chart.d.ts +57 -0
  49. package/dist/src/nile-organization-chart/nile-organization-chart.js +206 -0
  50. package/package.json +4 -1
@@ -7,10 +7,10 @@ export type { TrendlineSeriesData, ForecastConfig } from './nile-trendline-chart
7
7
  export { NileAnomalyChart } from './nile-anomaly-chart/index.js';
8
8
  export type { AnomalySeriesData, AnomalyConfig } from './nile-anomaly-chart/index.js';
9
9
  export { NileChart } from './nile-chart/index.js';
10
- export type { NileChartConfig, NileBarChartConfig, NilePieChartConfig, NileTrendlineChartConfig, NileAnomalyChartConfig, NileLineChartConfig, NileAreaChartConfig, NileColumnChartConfig, NileDonutChartConfig, NileScatterChartConfig, NileBubbleChartConfig, NileSplineChartConfig, NileRadarChartConfig, NileGaugeChartConfig, NileWaterfallChartConfig, ChartType, SwitchAggregation, NileAiConfig, } from './nile-chart/index.js';
10
+ export type { NileChartConfig, NileBarChartConfig, NilePieChartConfig, NileTrendlineChartConfig, NileAnomalyChartConfig, NileLineChartConfig, NileAreaChartConfig, NileColumnChartConfig, NileDonutChartConfig, NileScatterChartConfig, NileBubbleChartConfig, NileSplineChartConfig, NileRadarChartConfig, NileGaugeChartConfig, NileWaterfallChartConfig, NileKpiChartConfig, ChartType, SwitchAggregation, NileAiConfig, } from './nile-chart/index.js';
11
11
  export { convertConfig, registerAdapter } from './nile-chart/index.js';
12
12
  export { nileChartConfig } from './nile-chart/index.js';
13
- export type { AiConfigType, SwitchableConfigType, AqConfigType, ChartBarConfigType, ChartPieConfigType, ChartTrendlineConfigType, ChartAnomalyConfigType, ChartLineConfigType, ChartAreaConfigType, ChartInvertedAreaConfigType, ChartColumnConfigType, ChartDonutConfigType, ChartScatterConfigType, ChartBubbleConfigType, ChartSplineConfigType, ChartRadarConfigType, ChartGaugeConfigType, ChartWaterfallConfigType, ChartClusterConfigType, ChartStackedConfigType, ChartHistogramConfigType, ChartBellcurveConfigType, ChartBoxplotConfigType, ChartTimelineConfigType, ChartDumbbellConfigType, ChartDumbbellLowerConfigType, ChartDumbbellUpperConfigType, ChartColumnPyramidConfigType, ChartLollipopConfigType, ChartAreaSplineConfigType, ChartAreaNegativeConfigType, ChartAreaRangeConfigType, ChartColumnRangeConfigType, ChartColumnDrilldownConfigType, ChartRadialBarConfigType, ChartVariablePieConfigType, ChartEulerConfigType, ChartPolygonConfigType, ChartVectorConfigType, ChartXrangeConfigType, ChartFanConfigType, ChartFunnelConfigType, ChartFlameConfigType, ChartSpiderwebConfigType, ChartKpiPropsType, PrimitiveChartConfigType, SeparatedChartConfigInputType, AllChartConfigType, ChartConfigType, NileChartConfigInputType, ChartAiPanelPayload, ChartAiSenderPayload, NileAiPanelConfigInputType, NileAiSenderConfigInputType, } from './nile-chart/index.js';
13
+ export type { AiConfigType, SwitchableConfigType, AqConfigType, ChartBarConfigType, ChartPieConfigType, ChartTrendlineConfigType, ChartAnomalyConfigType, ChartLineConfigType, ChartAreaConfigType, ChartInvertedAreaConfigType, ChartColumnConfigType, ChartDonutConfigType, ChartScatterConfigType, ChartBubbleConfigType, ChartSplineConfigType, ChartRadarConfigType, ChartGaugeConfigType, ChartWaterfallConfigType, ChartClusterConfigType, ChartStackedConfigType, ChartHistogramConfigType, ChartBellcurveConfigType, ChartBoxplotConfigType, ChartTimelineConfigType, ChartDumbbellConfigType, ChartDumbbellLowerConfigType, ChartDumbbellUpperConfigType, ChartColumnPyramidConfigType, ChartLollipopConfigType, ChartAreaSplineConfigType, ChartAreaNegativeConfigType, ChartAreaRangeConfigType, ChartColumnRangeConfigType, ChartColumnDrilldownConfigType, ChartRadialBarConfigType, ChartVariablePieConfigType, ChartEulerConfigType, ChartPolygonConfigType, ChartVectorConfigType, ChartXrangeConfigType, ChartFanConfigType, ChartFunnelConfigType, ChartOrganizationConfigType, ChartLineColumnConfigType, ChartHeatmapConfigType, ChartFlameConfigType, ChartSpiderwebConfigType, ChartKpiConfigType, ChartKpiPropsType, PrimitiveChartConfigType, SeparatedChartConfigInputType, AllChartConfigType, ChartConfigType, NileChartConfigInputType, ChartAiPanelPayload, ChartAiSenderPayload, NileAiPanelConfigInputType, NileAiSenderConfigInputType, } from './nile-chart/index.js';
14
14
  export type { SeparatedChartDemoConfig } from './internal/separated-chart-config.js';
15
15
  export { NileLineChart } from './nile-line-chart/index.js';
16
16
  export type { LineChartSeriesData } from './nile-line-chart/index.js';
@@ -80,6 +80,12 @@ export { NileWaterfallChart } from './nile-waterfall-chart/index.js';
80
80
  export type { WaterfallDataPoint } from './nile-waterfall-chart/index.js';
81
81
  export { NileFunnelChart } from './nile-funnel-chart/index.js';
82
82
  export type { FunnelDataPoint } from './nile-funnel-chart/index.js';
83
+ export { NileOrganizationChart } from './nile-organization-chart/index.js';
84
+ export type { OrgChartLink, OrgChartNode } from './nile-organization-chart/index.js';
85
+ export { NileLineColumnChart } from './nile-line-column-chart/index.js';
86
+ export type { LineColumnSeriesPart } from './nile-line-column-chart/index.js';
87
+ export { NileHeatmapChart } from './nile-heatmap-chart/index.js';
88
+ export type { HeatmapCell } from './nile-heatmap-chart/index.js';
83
89
  export { NileFlameChart } from './nile-flame-chart/index.js';
84
90
  export type { FlameChartPoint, FlameSunburstPoint, FlameChartLayout, } from './nile-flame-chart/index.js';
85
91
  export { NileSpiderwebChart } from './nile-spiderweb-chart/index.js';
package/dist/src/index.js CHANGED
@@ -43,6 +43,9 @@ export { NileRadarChart } from './nile-radar-chart/index.js';
43
43
  export { NileGaugeChart } from './nile-gauge-chart/index.js';
44
44
  export { NileWaterfallChart } from './nile-waterfall-chart/index.js';
45
45
  export { NileFunnelChart } from './nile-funnel-chart/index.js';
46
+ export { NileOrganizationChart } from './nile-organization-chart/index.js';
47
+ export { NileLineColumnChart } from './nile-line-column-chart/index.js';
48
+ export { NileHeatmapChart } from './nile-heatmap-chart/index.js';
46
49
  export { NileFlameChart } from './nile-flame-chart/index.js';
47
50
  export { NileSpiderwebChart } from './nile-spiderweb-chart/index.js';
48
51
  export { NileKpiChart } from './nile-kpi-chart/index.js';
@@ -136,6 +136,92 @@ const adapters = {
136
136
  throw new Error('Expected anomaly config');
137
137
  return { ...config, type: 'trendline', data: config.data, categories: config.categories };
138
138
  },
139
+ // ── Bar-like (bar, column, stacked) ↔ each other ──
140
+ 'bar->stacked': (config) => {
141
+ if (config.type !== 'bar')
142
+ throw new Error('Expected bar config');
143
+ return { ...config, type: 'stacked', stackMode: 'normal' };
144
+ },
145
+ 'stacked->bar': (config) => {
146
+ if (config.type !== 'stacked')
147
+ throw new Error('Expected stacked config');
148
+ return { ...config, type: 'bar' };
149
+ },
150
+ 'column->stacked': (config) => {
151
+ if (config.type !== 'column')
152
+ throw new Error('Expected column config');
153
+ return { ...config, type: 'stacked', stackMode: 'normal' };
154
+ },
155
+ 'stacked->column': (config) => {
156
+ if (config.type !== 'stacked')
157
+ throw new Error('Expected stacked config');
158
+ return { ...config, type: 'column' };
159
+ },
160
+ 'bar->column': (config) => {
161
+ if (config.type !== 'bar')
162
+ throw new Error('Expected bar config');
163
+ return { ...config, type: 'column' };
164
+ },
165
+ 'column->bar': (config) => {
166
+ if (config.type !== 'column')
167
+ throw new Error('Expected column config');
168
+ return { ...config, type: 'bar' };
169
+ },
170
+ // ── Stacked ↔ pie / trendline / anomaly (same as bar) ──
171
+ 'stacked->pie': (config) => {
172
+ if (config.type !== 'stacked')
173
+ throw new Error('Expected stacked config');
174
+ const agg = config.switchAggregation ?? 'by-category';
175
+ return {
176
+ ...config,
177
+ type: 'pie',
178
+ data: barLikeToPie(config.data, config.categories ?? [], agg),
179
+ seriesName: config.chartTitle || 'Series',
180
+ };
181
+ },
182
+ 'pie->stacked': (config) => {
183
+ if (config.type !== 'pie')
184
+ throw new Error('Expected pie config');
185
+ const { data, categories } = pieToBarLike(config.data, config.seriesName);
186
+ return { ...config, type: 'stacked', data, categories, stackMode: 'normal' };
187
+ },
188
+ 'stacked->trendline': (config) => {
189
+ if (config.type !== 'stacked')
190
+ throw new Error('Expected stacked config');
191
+ return { ...config, type: 'trendline', data: config.data, categories: config.categories };
192
+ },
193
+ 'trendline->stacked': (config) => {
194
+ if (config.type !== 'trendline')
195
+ throw new Error('Expected trendline config');
196
+ return { ...config, type: 'stacked', stackMode: 'normal', data: config.data, categories: config.categories };
197
+ },
198
+ 'stacked->anomaly': (config) => {
199
+ if (config.type !== 'stacked')
200
+ throw new Error('Expected stacked config');
201
+ return { ...config, type: 'anomaly', data: config.data, categories: config.categories };
202
+ },
203
+ 'anomaly->stacked': (config) => {
204
+ if (config.type !== 'anomaly')
205
+ throw new Error('Expected anomaly config');
206
+ return { ...config, type: 'stacked', stackMode: 'normal', data: config.data, categories: config.categories };
207
+ },
208
+ 'column->pie': (config) => {
209
+ if (config.type !== 'column')
210
+ throw new Error('Expected column config');
211
+ const agg = config.switchAggregation ?? 'by-category';
212
+ return {
213
+ ...config,
214
+ type: 'pie',
215
+ data: barLikeToPie(config.data, config.categories ?? [], agg),
216
+ seriesName: config.chartTitle || 'Series',
217
+ };
218
+ },
219
+ 'pie->column': (config) => {
220
+ if (config.type !== 'pie')
221
+ throw new Error('Expected pie config');
222
+ const { data, categories } = pieToBarLike(config.data, config.seriesName);
223
+ return { ...config, type: 'column', data, categories };
224
+ },
139
225
  };
140
226
  /**
141
227
  * Register a custom adapter for converting between chart types.
@@ -122,6 +122,33 @@ async function init() {
122
122
  catch {
123
123
  // xrange not available — consumer may have loaded it globally
124
124
  }
125
+ try {
126
+ const sankey = await import('highcharts/modules/sankey.js');
127
+ if (typeof sankey.default === 'function') {
128
+ sankey.default(_Highcharts);
129
+ }
130
+ }
131
+ catch {
132
+ // sankey not available — required base for organization; consumer may have loaded globally
133
+ }
134
+ try {
135
+ const organization = await import('highcharts/modules/organization.js');
136
+ if (typeof organization.default === 'function') {
137
+ organization.default(_Highcharts);
138
+ }
139
+ }
140
+ catch {
141
+ // organization not available — consumer may have loaded it globally
142
+ }
143
+ try {
144
+ const heatmap = await import('highcharts/modules/heatmap.js');
145
+ if (typeof heatmap.default === 'function') {
146
+ heatmap.default(_Highcharts);
147
+ }
148
+ }
149
+ catch {
150
+ // heatmap not available — consumer may have loaded it globally
151
+ }
125
152
  }
126
153
  catch {
127
154
  // Fallback to global (works in CDN/browser context)
@@ -1,8 +1,6 @@
1
1
  import type { ChartConfigType } from './chart-config.type.js';
2
- import type { PrimitiveChartConfigType } from './primitive-chart-config.type.js';
3
2
  /**
4
3
  * Union of chart payload shapes (by `type`) across the package.
5
- * - {@link ChartConfigType}: `<nile-chart>` / `NileChartConfigInputType.chart`
6
- * - {@link PrimitiveChartConfigType}: `<nile-*-chart>` tags with `el.config = { chart, aq }`
4
+ * Same as {@link ChartConfigType}: primitives are included for `<nile-chart>` and `<nile-*-chart>`.
7
5
  */
8
- export type AllChartConfigType = ChartConfigType | PrimitiveChartConfigType;
6
+ export type AllChartConfigType = ChartConfigType;
@@ -12,5 +12,6 @@ import type { ChartSplineConfigType } from './chart-spline-config.type.js';
12
12
  import type { ChartRadarConfigType } from './chart-radar-config.type.js';
13
13
  import type { ChartGaugeConfigType } from './chart-gauge-config.type.js';
14
14
  import type { ChartWaterfallConfigType } from './chart-waterfall-config.type.js';
15
- /** Union of all HighCharts chart configs. */
16
- export type ChartConfigType = ChartBarConfigType | ChartPieConfigType | ChartTrendlineConfigType | ChartAnomalyConfigType | ChartLineConfigType | ChartAreaConfigType | ChartColumnConfigType | ChartDonutConfigType | ChartScatterConfigType | ChartBubbleConfigType | ChartSplineConfigType | ChartRadarConfigType | ChartGaugeConfigType | ChartWaterfallConfigType;
15
+ import type { PrimitiveChartConfigType } from './primitive-chart-config.type.js';
16
+ /** Core chart configs (bar, pie, …) plus all primitive series types use with `<nile-chart>` via `chart.type`. */
17
+ export type ChartConfigType = ChartBarConfigType | ChartPieConfigType | ChartTrendlineConfigType | ChartAnomalyConfigType | ChartLineConfigType | ChartAreaConfigType | ChartColumnConfigType | ChartDonutConfigType | ChartScatterConfigType | ChartBubbleConfigType | ChartSplineConfigType | ChartRadarConfigType | ChartGaugeConfigType | ChartWaterfallConfigType | PrimitiveChartConfigType;
@@ -6,6 +6,8 @@ export interface ChartDonutConfigType {
6
6
  data: DonutChartSeriesData[];
7
7
  seriesName?: string;
8
8
  innerSize?: string;
9
+ /** Half-donut (180°) with arc on top; adjusts center and angles. */
10
+ semiCircle?: boolean;
9
11
  showDataLabels?: boolean;
10
12
  showLegend?: boolean;
11
13
  height?: string;
@@ -0,0 +1,19 @@
1
+ import type { Options } from 'highcharts';
2
+ import type { HeatmapCell } from '../../nile-heatmap-chart/nile-heatmap-chart.js';
3
+ /** Heatmap (`<nile-heatmap-chart>`): cells use category indices on x and y. */
4
+ export interface ChartHeatmapConfigType {
5
+ type: 'heatmap';
6
+ xCategories: string[];
7
+ yCategories: string[];
8
+ data: HeatmapCell[];
9
+ seriesName?: string;
10
+ colorMin?: number;
11
+ colorMax?: number;
12
+ minColor?: string;
13
+ maxColor?: string;
14
+ colorAxisTitle?: string;
15
+ showDataLabels?: boolean;
16
+ height?: string;
17
+ loading?: boolean;
18
+ options?: Options;
19
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chart-heatmap-config.type.js.map
@@ -1,21 +1,5 @@
1
- import type { KpiVariant, TrendDirection } from '../../nile-kpi-chart/nile-kpi-chart.js';
2
- /**
3
- * KPI tile / sparkline / gauge props (`<nile-kpi-chart>`).
4
- * This is not a `config` object; properties map to Lit `@property` fields.
5
- */
6
- export interface ChartKpiPropsType {
7
- variant?: KpiVariant;
8
- label?: string;
9
- value?: string | number;
10
- prefix?: string;
11
- suffix?: string;
12
- trendValue?: number | null;
13
- trendDirection?: TrendDirection;
14
- trendLabel?: string;
15
- description?: string;
16
- sparkline?: number[];
17
- sparklineColor?: string;
18
- gaugeValue?: number;
19
- gaugeMin?: number;
20
- gaugeMax?: number;
21
- }
1
+ import type { ChartKpiSeparatedPayload } from '../../nile-kpi-chart/nile-kpi-chart.js';
2
+ /** `chart` slice for `type: 'kpi'` — use with `<nile-chart>` or `{ chart, aq }` on `<nile-kpi-chart>`. */
3
+ export type ChartKpiConfigType = ChartKpiSeparatedPayload;
4
+ /** KPI fields without the `type` discriminator (partial props / documentation). */
5
+ export type ChartKpiPropsType = Omit<ChartKpiSeparatedPayload, 'type'>;
@@ -0,0 +1,14 @@
1
+ import type { Options } from 'highcharts';
2
+ import type { LineColumnSeriesPart } from '../../nile-line-column-chart/nile-line-column-chart.js';
3
+ /** Dual-axis combo: columns on the left axis, line on the right (`<nile-line-column-chart>`). */
4
+ export interface ChartLineColumnConfigType {
5
+ type: 'line-column';
6
+ categories: string[];
7
+ columnSeries: LineColumnSeriesPart;
8
+ lineSeries: LineColumnSeriesPart;
9
+ columnAxisTitle?: string;
10
+ lineAxisTitle?: string;
11
+ height?: string;
12
+ loading?: boolean;
13
+ options?: Options;
14
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chart-line-column-config.type.js.map
@@ -0,0 +1,13 @@
1
+ import type { Options } from 'highcharts';
2
+ import type { OrgChartLink, OrgChartNode } from '../../nile-organization-chart/nile-organization-chart.js';
3
+ /** Organization chart config (`<nile-organization-chart>` / `config.chart`). */
4
+ export interface ChartOrganizationConfigType {
5
+ type: 'organization';
6
+ nodes: OrgChartNode[];
7
+ links: OrgChartLink[];
8
+ seriesName?: string;
9
+ inverted?: boolean;
10
+ height?: string;
11
+ loading?: boolean;
12
+ options?: Options;
13
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chart-organization-config.type.js.map
@@ -39,9 +39,12 @@ export type { ChartVectorConfigType } from './chart-vector-config.type.js';
39
39
  export type { ChartXrangeConfigType } from './chart-xrange-config.type.js';
40
40
  export type { ChartFanConfigType } from './chart-fan-config.type.js';
41
41
  export type { ChartFunnelConfigType } from './chart-funnel-config.type.js';
42
+ export type { ChartOrganizationConfigType } from './chart-organization-config.type.js';
43
+ export type { ChartLineColumnConfigType } from './chart-line-column-config.type.js';
44
+ export type { ChartHeatmapConfigType } from './chart-heatmap-config.type.js';
42
45
  export type { ChartFlameConfigType } from './chart-flame-config.type.js';
43
46
  export type { ChartSpiderwebConfigType } from './chart-spiderweb-config.type.js';
44
- export type { ChartKpiPropsType } from './chart-kpi-config.type.js';
47
+ export type { ChartKpiConfigType, ChartKpiPropsType } from './chart-kpi-config.type.js';
45
48
  export type { PrimitiveChartConfigType } from './primitive-chart-config.type.js';
46
49
  export type { SeparatedChartConfigInputType } from './separated-chart-config-input.type.js';
47
50
  export type { AllChartConfigType } from './all-chart-config.type.js';
@@ -7,8 +7,12 @@ import type { ChartTimelineConfigType } from './chart-timeline-config.type.js';
7
7
  import type { ChartDumbbellConfigType } from './chart-dumbbell-config.type.js';
8
8
  import type { ChartFanConfigType } from './chart-fan-config.type.js';
9
9
  import type { ChartFunnelConfigType } from './chart-funnel-config.type.js';
10
+ import type { ChartOrganizationConfigType } from './chart-organization-config.type.js';
11
+ import type { ChartLineColumnConfigType } from './chart-line-column-config.type.js';
12
+ import type { ChartHeatmapConfigType } from './chart-heatmap-config.type.js';
10
13
  import type { ChartFlameConfigType } from './chart-flame-config.type.js';
11
14
  import type { ChartSpiderwebConfigType } from './chart-spiderweb-config.type.js';
15
+ import type { ChartKpiConfigType } from './chart-kpi-config.type.js';
12
16
  import type { ChartInvertedAreaConfigType } from './chart-area-config.type.js';
13
17
  import type { ChartColumnPyramidConfigType } from './chart-column-pyramid-config.type.js';
14
18
  import type { ChartLollipopConfigType } from './chart-lollipop-config.type.js';
@@ -29,4 +33,4 @@ import type { ChartXrangeConfigType } from './chart-xrange-config.type.js';
29
33
  * Chart configs for primitive `<nile-*-chart>` elements (`el.config = { chart, aq }`).
30
34
  * Discriminated on `chart.type`.
31
35
  */
32
- export type PrimitiveChartConfigType = ChartInvertedAreaConfigType | ChartColumnPyramidConfigType | ChartLollipopConfigType | ChartAreaSplineConfigType | ChartAreaNegativeConfigType | ChartAreaRangeConfigType | ChartColumnRangeConfigType | ChartColumnDrilldownConfigType | ChartRadialBarConfigType | ChartVariablePieConfigType | ChartDumbbellLowerConfigType | ChartDumbbellUpperConfigType | ChartEulerConfigType | ChartPolygonConfigType | ChartVectorConfigType | ChartXrangeConfigType | ChartClusterConfigType | ChartStackedConfigType | ChartHistogramConfigType | ChartBellcurveConfigType | ChartBoxplotConfigType | ChartTimelineConfigType | ChartDumbbellConfigType | ChartFanConfigType | ChartFunnelConfigType | ChartFlameConfigType | ChartSpiderwebConfigType;
36
+ export type PrimitiveChartConfigType = ChartInvertedAreaConfigType | ChartColumnPyramidConfigType | ChartLollipopConfigType | ChartAreaSplineConfigType | ChartAreaNegativeConfigType | ChartAreaRangeConfigType | ChartColumnRangeConfigType | ChartColumnDrilldownConfigType | ChartRadialBarConfigType | ChartVariablePieConfigType | ChartDumbbellLowerConfigType | ChartDumbbellUpperConfigType | ChartEulerConfigType | ChartPolygonConfigType | ChartVectorConfigType | ChartXrangeConfigType | ChartClusterConfigType | ChartStackedConfigType | ChartHistogramConfigType | ChartBellcurveConfigType | ChartBoxplotConfigType | ChartTimelineConfigType | ChartDumbbellConfigType | ChartFanConfigType | ChartFunnelConfigType | ChartOrganizationConfigType | ChartLineColumnConfigType | ChartHeatmapConfigType | ChartFlameConfigType | ChartSpiderwebConfigType | ChartKpiConfigType;
@@ -40,6 +40,14 @@ export const styles = css `
40
40
  border-bottom-left-radius: var(--nile-radius-radius-sm, var(--ng-radius-xs));
41
41
  }
42
42
 
43
+ .message--summary {
44
+ align-self: flex-start;
45
+ background: var(--nile-colors-primary-50, #eff6ff);
46
+ color: var(--nile-colors-primary-800, #1e40af);
47
+ border: var(--nile-border-width-1, 1px) solid var(--nile-colors-primary-200, #bfdbfe);
48
+ border-bottom-left-radius: var(--nile-radius-radius-sm, var(--ng-radius-xs));
49
+ }
50
+
43
51
  .typing {
44
52
  align-self: flex-start;
45
53
  padding: var(--nile-spacing-md, var(--ng-spacing-md)) var(--nile-spacing-14px, var(--ng-spacing-3-5));
@@ -10,6 +10,8 @@ export declare class NileAiPanel extends NileElement {
10
10
  placeholder: string;
11
11
  /** Welcome message shown when the panel opens. */
12
12
  welcomeMessage: string;
13
+ /** Summary / insight shown as a second assistant bubble after the welcome message. */
14
+ summaryMessage: string;
13
15
  private messages;
14
16
  private loading;
15
17
  private messagesEl;
@@ -13,6 +13,8 @@ let NileAiPanel = class NileAiPanel extends NileElement {
13
13
  this.placeholder = 'Ask about this chart...';
14
14
  /** Welcome message shown when the panel opens. */
15
15
  this.welcomeMessage = '';
16
+ /** Summary / insight shown as a second assistant bubble after the welcome message. */
17
+ this.summaryMessage = '';
16
18
  this.messages = [];
17
19
  this.loading = false;
18
20
  }
@@ -87,6 +89,9 @@ let NileAiPanel = class NileAiPanel extends NileElement {
87
89
  ${this.welcomeMessage
88
90
  ? html `<div class="message message--assistant">${this.welcomeMessage}</div>`
89
91
  : nothing}
92
+ ${this.summaryMessage
93
+ ? html `<div class="message message--summary">${this.summaryMessage}</div>`
94
+ : nothing}
90
95
  ${this.messages.map(m => html `<div class="message message--${m.role}">${m.text}</div>`)}
91
96
  ${this.loading
92
97
  ? html `<div class="typing">
@@ -116,6 +121,9 @@ __decorate([
116
121
  __decorate([
117
122
  property({ type: String, attribute: 'welcome-message' })
118
123
  ], NileAiPanel.prototype, "welcomeMessage", void 0);
124
+ __decorate([
125
+ property({ type: String, attribute: 'summary-message' })
126
+ ], NileAiPanel.prototype, "summaryMessage", void 0);
119
127
  __decorate([
120
128
  state()
121
129
  ], NileAiPanel.prototype, "messages", void 0);
@@ -100,7 +100,9 @@ let NileBellcurveChart = class NileBellcurveChart extends NileElement {
100
100
  const self = this;
101
101
  // Bell curve derives mean & σ from the **y** values of the base series (see Highcharts docs).
102
102
  // Do not use [x, 0] — that makes every y zero and collapses the curve.
103
- const scatterData = this.data.map(v => [v, v]);
103
+ // Highcharts #15: scatter x must be ascending; raw samples are often unsorted.
104
+ const sorted = [...this.data].sort((a, b) => a - b);
105
+ const scatterData = sorted.map(v => [v, v]);
104
106
  const pts = this.pointsInInterval > 0 ? this.pointsInInterval : 40;
105
107
  const iv = this.intervals > 0 ? this.intervals : 3;
106
108
  return deepMerge({
@@ -1,5 +1,5 @@
1
1
  export { NileChart } from './nile-chart.js';
2
- export type { NileChartConfig, NileBarChartConfig, NilePieChartConfig, NileTrendlineChartConfig, NileAnomalyChartConfig, NileLineChartConfig, NileAreaChartConfig, NileColumnChartConfig, NileDonutChartConfig, NileScatterChartConfig, NileBubbleChartConfig, NileSplineChartConfig, NileRadarChartConfig, NileGaugeChartConfig, NileWaterfallChartConfig, ChartType, SwitchAggregation, NileAiConfig, } from './nile-chart-config.js';
2
+ export type { NileChartConfig, NileBarChartConfig, NilePieChartConfig, NileTrendlineChartConfig, NileAnomalyChartConfig, NileLineChartConfig, NileAreaChartConfig, NileColumnChartConfig, NileDonutChartConfig, NileScatterChartConfig, NileBubbleChartConfig, NileSplineChartConfig, NileRadarChartConfig, NileGaugeChartConfig, NileWaterfallChartConfig, NileKpiChartConfig, ChartType, SwitchAggregation, NileAiConfig, } from './nile-chart-config.js';
3
3
  export { convertConfig, registerAdapter } from '../internal/chart-adapters.js';
4
4
  export { nileChartConfig } from './nile-chart-config-builder.js';
5
- export type { AiConfigType, SwitchableConfigType, AqConfigType, ChartBarConfigType, ChartPieConfigType, ChartTrendlineConfigType, ChartAnomalyConfigType, ChartLineConfigType, ChartAreaConfigType, ChartInvertedAreaConfigType, ChartColumnConfigType, ChartDonutConfigType, ChartScatterConfigType, ChartBubbleConfigType, ChartSplineConfigType, ChartRadarConfigType, ChartGaugeConfigType, ChartWaterfallConfigType, ChartClusterConfigType, ChartStackedConfigType, ChartHistogramConfigType, ChartBellcurveConfigType, ChartBoxplotConfigType, ChartTimelineConfigType, ChartDumbbellConfigType, ChartDumbbellLowerConfigType, ChartDumbbellUpperConfigType, ChartColumnPyramidConfigType, ChartLollipopConfigType, ChartAreaSplineConfigType, ChartAreaNegativeConfigType, ChartAreaRangeConfigType, ChartColumnRangeConfigType, ChartColumnDrilldownConfigType, ChartRadialBarConfigType, ChartVariablePieConfigType, ChartEulerConfigType, ChartPolygonConfigType, ChartVectorConfigType, ChartXrangeConfigType, ChartFanConfigType, ChartFunnelConfigType, ChartFlameConfigType, ChartSpiderwebConfigType, ChartKpiPropsType, PrimitiveChartConfigType, SeparatedChartConfigInputType, AllChartConfigType, ChartConfigType, NileChartConfigInputType, ChartAiPanelPayload, ChartAiSenderPayload, NileAiPanelConfigInputType, NileAiSenderConfigInputType, } from '../internal/types/index.js';
5
+ export type { AiConfigType, SwitchableConfigType, AqConfigType, ChartBarConfigType, ChartPieConfigType, ChartTrendlineConfigType, ChartAnomalyConfigType, ChartLineConfigType, ChartAreaConfigType, ChartInvertedAreaConfigType, ChartColumnConfigType, ChartDonutConfigType, ChartScatterConfigType, ChartBubbleConfigType, ChartSplineConfigType, ChartRadarConfigType, ChartGaugeConfigType, ChartWaterfallConfigType, ChartClusterConfigType, ChartStackedConfigType, ChartHistogramConfigType, ChartBellcurveConfigType, ChartBoxplotConfigType, ChartTimelineConfigType, ChartDumbbellConfigType, ChartDumbbellLowerConfigType, ChartDumbbellUpperConfigType, ChartColumnPyramidConfigType, ChartLollipopConfigType, ChartAreaSplineConfigType, ChartAreaNegativeConfigType, ChartAreaRangeConfigType, ChartColumnRangeConfigType, ChartColumnDrilldownConfigType, ChartRadialBarConfigType, ChartVariablePieConfigType, ChartEulerConfigType, ChartPolygonConfigType, ChartVectorConfigType, ChartXrangeConfigType, ChartFanConfigType, ChartFunnelConfigType, ChartOrganizationConfigType, ChartLineColumnConfigType, ChartHeatmapConfigType, ChartFlameConfigType, ChartSpiderwebConfigType, ChartKpiConfigType, ChartKpiPropsType, PrimitiveChartConfigType, SeparatedChartConfigInputType, AllChartConfigType, ChartConfigType, NileChartConfigInputType, ChartAiPanelPayload, ChartAiSenderPayload, NileAiPanelConfigInputType, NileAiSenderConfigInputType, } from '../internal/types/index.js';
@@ -1,19 +1,6 @@
1
- import type { Options } from 'highcharts';
2
- import type { BarChartSeriesData } from '../nile-bar-chart/nile-bar-chart.js';
3
- import type { PieChartSeriesData } from '../nile-pie-chart/nile-pie-chart.js';
4
- import type { TrendlineSeriesData, ForecastConfig } from '../nile-trendline-chart/nile-trendline-chart.js';
5
- import type { AnomalySeriesData, AnomalyConfig } from '../nile-anomaly-chart/nile-anomaly-chart.js';
6
- import type { LineChartSeriesData } from '../nile-line-chart/nile-line-chart.js';
7
- import type { AreaChartSeriesData } from '../nile-area-chart/nile-area-chart.js';
8
- import type { ColumnChartSeriesData } from '../nile-column-chart/nile-column-chart.js';
9
- import type { DonutChartSeriesData } from '../nile-donut-chart/nile-donut-chart.js';
10
- import type { ScatterChartSeriesData } from '../nile-scatter-chart/nile-scatter-chart.js';
11
- import type { BubbleChartSeriesData } from '../nile-bubble-chart/nile-bubble-chart.js';
12
- import type { SplineChartSeriesData } from '../nile-spline-chart/nile-spline-chart.js';
13
- import type { RadarChartSeriesData } from '../nile-radar-chart/nile-radar-chart.js';
14
- import type { GaugeBand } from '../nile-gauge-chart/nile-gauge-chart.js';
15
- import type { WaterfallDataPoint } from '../nile-waterfall-chart/nile-waterfall-chart.js';
16
- export type ChartType = 'bar' | 'pie' | 'trendline' | 'anomaly' | 'line' | 'area' | 'column' | 'donut' | 'scatter' | 'bubble' | 'spline' | 'radar' | 'gauge' | 'waterfall';
1
+ import type { ChartConfigType } from '../internal/types/chart-config.type.js';
2
+ /** Every supported `chart.type` value for `<nile-chart>`. */
3
+ export type ChartType = ChartConfigType['type'];
17
4
  export type SwitchAggregation = 'by-category' | 'by-series' | 'flatten';
18
5
  export interface NileAiConfig {
19
6
  /** Show the AI chat icon on the chart. Default: false. */
@@ -23,110 +10,66 @@ export interface NileAiConfig {
23
10
  /** Initial assistant message shown when the chat panel opens. */
24
11
  welcomeMessage?: string;
25
12
  }
13
+ /** Fields merged from `aq` (and shared card chrome) onto `chart` for `<nile-chart>`. */
26
14
  export interface NileChartConfigBase {
27
15
  chartTitle?: string;
28
16
  chartSubtitle?: string;
29
17
  height?: string;
30
18
  loading?: boolean;
31
- options?: Options;
19
+ options?: import('highcharts').Options;
32
20
  summary?: string;
33
21
  toggleLabel?: string;
34
22
  /** Chart types the user can switch to. Shows type-switch UI when set. */
35
23
  switchableTypes?: ChartType[];
36
- /** How to aggregate bar data when converting to pie. Default: 'by-category'. */
24
+ /** How to aggregate bar-like data when converting to pie. Default: 'by-category'. */
37
25
  switchAggregation?: SwitchAggregation;
38
26
  /** AI chat configuration. When ai.enabled is true, shows the allsearch icon. */
39
27
  ai?: NileAiConfig;
40
28
  }
41
- export interface NileBarChartConfig extends NileChartConfigBase {
29
+ /** Flat config for `<nile-chart>` after merging `chart` + `aq`. */
30
+ export type NileChartConfig = ChartConfigType & NileChartConfigBase;
31
+ export type NileBarChartConfig = Extract<NileChartConfig, {
42
32
  type: 'bar';
43
- data: BarChartSeriesData[];
44
- categories?: string[];
45
- yAxisTitle?: string;
46
- }
47
- export interface NilePieChartConfig extends NileChartConfigBase {
33
+ }>;
34
+ export type NilePieChartConfig = Extract<NileChartConfig, {
48
35
  type: 'pie';
49
- data: PieChartSeriesData[];
50
- seriesName?: string;
51
- showDataLabels?: boolean;
52
- showLegend?: boolean;
53
- }
54
- export interface NileTrendlineChartConfig extends NileChartConfigBase {
36
+ }>;
37
+ export type NileTrendlineChartConfig = Extract<NileChartConfig, {
55
38
  type: 'trendline';
56
- data: TrendlineSeriesData[];
57
- categories?: string[];
58
- yAxisTitle?: string;
59
- forecast?: ForecastConfig;
60
- }
61
- export interface NileAnomalyChartConfig extends NileChartConfigBase {
39
+ }>;
40
+ export type NileAnomalyChartConfig = Extract<NileChartConfig, {
62
41
  type: 'anomaly';
63
- data: AnomalySeriesData[];
64
- categories?: string[];
65
- yAxisTitle?: string;
66
- anomaly?: AnomalyConfig;
67
- }
68
- export interface NileLineChartConfig extends NileChartConfigBase {
42
+ }>;
43
+ export type NileLineChartConfig = Extract<NileChartConfig, {
69
44
  type: 'line';
70
- data: LineChartSeriesData[];
71
- categories?: string[];
72
- yAxisTitle?: string;
73
- }
74
- export interface NileAreaChartConfig extends NileChartConfigBase {
45
+ }>;
46
+ export type NileAreaChartConfig = Extract<NileChartConfig, {
75
47
  type: 'area';
76
- data: AreaChartSeriesData[];
77
- categories?: string[];
78
- yAxisTitle?: string;
79
- stacked?: boolean;
80
- }
81
- export interface NileColumnChartConfig extends NileChartConfigBase {
48
+ }>;
49
+ export type NileColumnChartConfig = Extract<NileChartConfig, {
82
50
  type: 'column';
83
- data: ColumnChartSeriesData[];
84
- categories?: string[];
85
- yAxisTitle?: string;
86
- }
87
- export interface NileDonutChartConfig extends NileChartConfigBase {
51
+ }>;
52
+ export type NileDonutChartConfig = Extract<NileChartConfig, {
88
53
  type: 'donut';
89
- data: DonutChartSeriesData[];
90
- seriesName?: string;
91
- innerSize?: string;
92
- showDataLabels?: boolean;
93
- showLegend?: boolean;
94
- }
95
- export interface NileScatterChartConfig extends NileChartConfigBase {
54
+ }>;
55
+ export type NileScatterChartConfig = Extract<NileChartConfig, {
96
56
  type: 'scatter';
97
- data: ScatterChartSeriesData[];
98
- xAxisTitle?: string;
99
- yAxisTitle?: string;
100
- }
101
- export interface NileBubbleChartConfig extends NileChartConfigBase {
57
+ }>;
58
+ export type NileBubbleChartConfig = Extract<NileChartConfig, {
102
59
  type: 'bubble';
103
- data: BubbleChartSeriesData[];
104
- xAxisTitle?: string;
105
- yAxisTitle?: string;
106
- }
107
- export interface NileSplineChartConfig extends NileChartConfigBase {
60
+ }>;
61
+ export type NileSplineChartConfig = Extract<NileChartConfig, {
108
62
  type: 'spline';
109
- data: SplineChartSeriesData[];
110
- categories?: string[];
111
- yAxisTitle?: string;
112
- }
113
- export interface NileRadarChartConfig extends NileChartConfigBase {
63
+ }>;
64
+ export type NileRadarChartConfig = Extract<NileChartConfig, {
114
65
  type: 'radar';
115
- data: RadarChartSeriesData[];
116
- categories?: string[];
117
- showArea?: boolean;
118
- }
119
- export interface NileGaugeChartConfig extends NileChartConfigBase {
66
+ }>;
67
+ export type NileGaugeChartConfig = Extract<NileChartConfig, {
120
68
  type: 'gauge';
121
- value: number;
122
- min?: number;
123
- max?: number;
124
- suffix?: string;
125
- bands?: GaugeBand[];
126
- }
127
- export interface NileWaterfallChartConfig extends NileChartConfigBase {
69
+ }>;
70
+ export type NileWaterfallChartConfig = Extract<NileChartConfig, {
128
71
  type: 'waterfall';
129
- data: WaterfallDataPoint[];
130
- yAxisTitle?: string;
131
- }
132
- export type NileChartConfig = NileBarChartConfig | NilePieChartConfig | NileTrendlineChartConfig | NileAnomalyChartConfig | NileLineChartConfig | NileAreaChartConfig | NileColumnChartConfig | NileDonutChartConfig | NileScatterChartConfig | NileBubbleChartConfig | NileSplineChartConfig | NileRadarChartConfig | NileGaugeChartConfig | NileWaterfallChartConfig;
72
+ }>;
73
+ export type NileKpiChartConfig = Extract<NileChartConfig, {
74
+ type: 'kpi';
75
+ }>;