@ojiepermana/angular 0.1.0 → 21.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 (91) hide show
  1. package/README.md +41 -246
  2. package/chart/README.md +0 -0
  3. package/fesm2022/ojiepermana-angular-chart.mjs +3714 -0
  4. package/fesm2022/ojiepermana-angular-chart.mjs.map +1 -0
  5. package/fesm2022/ojiepermana-angular-component.mjs +3463 -0
  6. package/fesm2022/ojiepermana-angular-component.mjs.map +1 -0
  7. package/fesm2022/ojiepermana-angular-layout.mjs +272 -401
  8. package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
  9. package/fesm2022/ojiepermana-angular-navigation.mjs +2225 -135
  10. package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -1
  11. package/fesm2022/ojiepermana-angular-theme.mjs +381 -1
  12. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
  13. package/fesm2022/ojiepermana-angular.mjs +15 -1
  14. package/fesm2022/ojiepermana-angular.mjs.map +1 -1
  15. package/package.json +49 -36
  16. package/theme/styles/etos.css +38 -0
  17. package/theme/styles/index.css +32 -8
  18. package/theme/styles/themes/brand/etos/color.css +21 -0
  19. package/theme/styles/themes/brand/etos/style.css +50 -0
  20. package/theme/styles/themes/library/_components.css +63 -0
  21. package/theme/styles/themes/library/_layers.css +15 -0
  22. package/theme/styles/themes/library/_material-overrides.css +254 -0
  23. package/theme/styles/themes/library/_tokens.css +54 -0
  24. package/theme/styles/themes/library/color/amber.css +18 -0
  25. package/theme/styles/themes/library/color/blue.css +23 -0
  26. package/theme/styles/themes/library/color/green.css +18 -0
  27. package/theme/styles/themes/library/color/index.css +9 -0
  28. package/theme/styles/themes/library/color/purple.css +18 -0
  29. package/theme/styles/themes/library/color/red.css +18 -0
  30. package/theme/styles/themes/library/style/brutal.css +47 -0
  31. package/theme/styles/themes/library/style/default.css +51 -0
  32. package/theme/styles/themes/library/style/index.css +8 -0
  33. package/theme/styles/themes/library/style/sharp.css +47 -0
  34. package/theme/styles/themes/library/style/soft.css +47 -0
  35. package/theme/styles/themes/mode/dark.css +20 -0
  36. package/theme/styles/themes/mode/index.css +6 -0
  37. package/theme/styles/themes/mode/light.css +24 -0
  38. package/theme/styles/themes/taildwind.css +109 -0
  39. package/types/ojiepermana-angular-chart.d.ts +1094 -0
  40. package/types/ojiepermana-angular-component.d.ts +1174 -0
  41. package/types/ojiepermana-angular-layout.d.ts +123 -76
  42. package/types/ojiepermana-angular-navigation.d.ts +257 -71
  43. package/types/ojiepermana-angular-theme.d.ts +170 -1
  44. package/types/ojiepermana-angular.d.ts +2 -1
  45. package/fesm2022/ojiepermana-angular-internal.mjs +0 -473
  46. package/fesm2022/ojiepermana-angular-internal.mjs.map +0 -1
  47. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs +0 -785
  48. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs.map +0 -1
  49. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs +0 -1568
  50. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs.map +0 -1
  51. package/fesm2022/ojiepermana-angular-shell.mjs +0 -14
  52. package/fesm2022/ojiepermana-angular-shell.mjs.map +0 -1
  53. package/fesm2022/ojiepermana-angular-theme-component.mjs +0 -235
  54. package/fesm2022/ojiepermana-angular-theme-component.mjs.map +0 -1
  55. package/fesm2022/ojiepermana-angular-theme-directive.mjs +0 -29
  56. package/fesm2022/ojiepermana-angular-theme-directive.mjs.map +0 -1
  57. package/fesm2022/ojiepermana-angular-theme-service.mjs +0 -241
  58. package/fesm2022/ojiepermana-angular-theme-service.mjs.map +0 -1
  59. package/layout/README.md +0 -144
  60. package/navigation/README.md +0 -215
  61. package/shell/README.md +0 -37
  62. package/styles/index.css +0 -2
  63. package/styles/resets.css +0 -22
  64. package/theme/README.md +0 -379
  65. package/theme/styles/adapters/material-ui/index.css +0 -205
  66. package/theme/styles/layout/horizontal.css +0 -109
  67. package/theme/styles/layout/index.css +0 -19
  68. package/theme/styles/layout/vertical.css +0 -75
  69. package/theme/styles/modes/dark.css +0 -84
  70. package/theme/styles/presets/colors/blue.css +0 -45
  71. package/theme/styles/presets/colors/brand.css +0 -52
  72. package/theme/styles/presets/colors/cyan.css +0 -45
  73. package/theme/styles/presets/colors/green.css +0 -45
  74. package/theme/styles/presets/colors/index.css +0 -7
  75. package/theme/styles/presets/colors/orange.css +0 -45
  76. package/theme/styles/presets/colors/purple.css +0 -45
  77. package/theme/styles/presets/colors/red.css +0 -45
  78. package/theme/styles/presets/styles/flat.css +0 -61
  79. package/theme/styles/presets/styles/glass.css +0 -28
  80. package/theme/styles/presets/styles/index.css +0 -2
  81. package/theme/styles/roles/index.css +0 -67
  82. package/theme/styles/tokens/foundation.css +0 -136
  83. package/theme/styles/tokens/semantic.css +0 -87
  84. package/theme/styles/utilities/index.css +0 -88
  85. package/types/ojiepermana-angular-internal.d.ts +0 -89
  86. package/types/ojiepermana-angular-navigation-horizontal.d.ts +0 -77
  87. package/types/ojiepermana-angular-navigation-vertical.d.ts +0 -260
  88. package/types/ojiepermana-angular-shell.d.ts +0 -12
  89. package/types/ojiepermana-angular-theme-component.d.ts +0 -46
  90. package/types/ojiepermana-angular-theme-directive.d.ts +0 -10
  91. package/types/ojiepermana-angular-theme-service.d.ts +0 -68
@@ -0,0 +1,1094 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Type, Signal, TemplateRef } from '@angular/core';
3
+ import * as _ojiepermana_angular_chart from '@ojiepermana/angular/chart';
4
+ import { ScaleBand, ScaleLinear, scaleBand, scaleLinear, scalePoint, ScalePoint } from 'd3-scale';
5
+
6
+ /**
7
+ * Theme-aware color definition for a chart series.
8
+ *
9
+ * Either:
10
+ * - a single `color` string (raw CSS color — hex, hsl, oklch, CSS var ref), or
11
+ * - a `theme` map whose keys match the document color scheme (`light` / `dark`).
12
+ *
13
+ * Values are injected verbatim into a scoped `<style>` block as
14
+ * `--color-<key>: <value>;`, so any valid CSS color works.
15
+ *
16
+ * Defaults reference the theme tokens from `@ojiepermana/angular/theme`
17
+ * (e.g. `'hsl(var(--chart-1))'`).
18
+ */
19
+ interface ChartSeriesConfig {
20
+ /** Human-readable label (shown in legend, tooltip). */
21
+ readonly label?: string;
22
+ /** Optional icon component rendered next to the label. */
23
+ readonly icon?: Type<unknown>;
24
+ /** Raw color. Mutually exclusive with `theme`. */
25
+ readonly color?: string;
26
+ /** Theme-aware colors — keyed by color scheme. */
27
+ readonly theme?: Readonly<Record<ChartThemeKey, string>>;
28
+ }
29
+ /** Supported color scheme keys. */
30
+ type ChartThemeKey = 'light' | 'dark';
31
+ /** Map of series-key → config. */
32
+ type ChartConfig = Readonly<Record<string, ChartSeriesConfig>>;
33
+ /** CSS selector under which a chart instance is scoped. */
34
+ declare const CHART_DATA_ATTRIBUTE = "data-chart";
35
+ /** Default color schemes supported by the generated `<style>` block. */
36
+ declare const CHART_THEMES: ReadonlyArray<{
37
+ readonly key: ChartThemeKey;
38
+ readonly selector: string;
39
+ }>;
40
+ /**
41
+ * Generate the CSS rule-set for a chart instance: one `--color-<key>` per
42
+ * series, scoped to the owning `[data-chart]` element, with optional dark
43
+ * variant via `[data-mode="dark"] [data-chart="…"]`.
44
+ *
45
+ * Series without any color are skipped (consumer can fall back to a default).
46
+ *
47
+ * @param chartId Unique chart id (used as attribute value).
48
+ * @param config Series configuration map.
49
+ */
50
+ declare function buildChartCss(chartId: string, config: ChartConfig): string;
51
+ /** Resolve the `var(--color-<key>)` reference for a given series. */
52
+ declare function seriesColorVar(seriesKey: string): string;
53
+
54
+ /** Pixel dimensions of the chart render area. */
55
+ interface ChartDimensions {
56
+ readonly width: number;
57
+ readonly height: number;
58
+ }
59
+ /** Active data point (for tooltip / crosshair) shared across primitives. */
60
+ interface ChartActivePoint {
61
+ readonly index: number;
62
+ readonly datumIndex?: number;
63
+ readonly seriesKey?: string;
64
+ readonly clientX?: number;
65
+ readonly clientY?: number;
66
+ }
67
+ /**
68
+ * Shared chart state provided by `ChartContainer` to all nested chart
69
+ * components (axes, grid, tooltip, legend, chart types).
70
+ *
71
+ * All state is exposed as signals so consumers can derive computed state
72
+ * (scales, visible series, tooltip position) without manual subscriptions.
73
+ */
74
+ declare class ChartContext {
75
+ /** Stable instance id — used in the `data-chart` attribute and CSS scope. */
76
+ readonly id: _angular_core.WritableSignal<string>;
77
+ /** User-provided series config. */
78
+ readonly config: _angular_core.WritableSignal<Readonly<Record<string, _ojiepermana_angular_chart.ChartSeriesConfig>>>;
79
+ /** Measured render-area dimensions (ResizeObserver-driven). */
80
+ readonly dimensions: _angular_core.WritableSignal<ChartDimensions>;
81
+ /** Currently highlighted data point (tooltip / crosshair). */
82
+ readonly activePoint: _angular_core.WritableSignal<ChartActivePoint | null>;
83
+ /** Series keys the user has toggled off via legend. */
84
+ readonly hiddenSeries: _angular_core.WritableSignal<ReadonlySet<string>>;
85
+ /** Ordered list of series keys (from `config`). */
86
+ readonly seriesKeys: Signal<readonly string[]>;
87
+ /** Series keys currently visible (config order minus `hiddenSeries`). */
88
+ readonly visibleSeriesKeys: Signal<readonly string[]>;
89
+ /** Toggle visibility of a series. */
90
+ toggleSeries(key: string): void;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartContext, never>;
92
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartContext>;
93
+ }
94
+
95
+ /**
96
+ * Emits a scoped `<style>` block mapping every series key in the current
97
+ * `ChartConfig` to a `--color-<key>` CSS custom property, scoped to
98
+ * `[data-chart="<id>"]`. Dark-mode values are scoped under `[data-mode="dark"]`.
99
+ *
100
+ * Implemented as an empty component that injects a real `<style>` element
101
+ * into its host via `Renderer2`. We avoid rendering `<style>` directly in a
102
+ * template — Angular hoists those into component CSS and strips
103
+ * interpolations from them.
104
+ *
105
+ * Consumers never instantiate this directly — `ChartContainer` renders it.
106
+ */
107
+ declare class ChartStyle {
108
+ private readonly ctx;
109
+ private readonly host;
110
+ private readonly renderer;
111
+ private styleEl;
112
+ protected readonly css: _angular_core.Signal<string>;
113
+ constructor();
114
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartStyle, never>;
115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartStyle, "ui-chart-style", never, {}, {}, never, never, true, never>;
116
+ }
117
+
118
+ /**
119
+ * Root of every chart. Provides `ChartContext` to descendants, reflects the
120
+ * chart id via `data-chart`, injects the per-instance CSS-variable
121
+ * `<style>` block, and tracks its render-area dimensions via
122
+ * `ResizeObserver`.
123
+ *
124
+ * Usage:
125
+ * ```html
126
+ * <ui-chart-container [config]="cfg">
127
+ * <ui-bar-chart [data]="data" />
128
+ * </ui-chart-container>
129
+ * ```
130
+ */
131
+ declare class ChartContainer {
132
+ protected readonly ctx: ChartContext;
133
+ private readonly host;
134
+ private readonly zone;
135
+ private readonly platformId;
136
+ private readonly destroyRef;
137
+ /** Series configuration. Required for color / label resolution. */
138
+ readonly config: _angular_core.InputSignal<Readonly<Record<string, _ojiepermana_angular_chart.ChartSeriesConfig>>>;
139
+ /**
140
+ * Tailwind aspect-ratio utility for the container. Defaults to `aspect-video`
141
+ * for cartesian charts; override with `aspect-square` for radial / pie layouts.
142
+ */
143
+ readonly aspect: _angular_core.InputSignal<string>;
144
+ protected readonly hostClass: _angular_core.Signal<string>;
145
+ /**
146
+ * Optional explicit id override. When omitted, a stable auto-id is
147
+ * generated (`chart-<n>`), unique across the document.
148
+ */
149
+ readonly chartId: _angular_core.InputSignal<string | null>;
150
+ constructor();
151
+ private observeSize;
152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartContainer, never>;
153
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartContainer, "ui-chart-container", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "aspect": { "alias": "aspect"; "required": false; "isSignal": true; }; "chartId": { "alias": "chartId"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
154
+ }
155
+
156
+ /** A single row of chart data — one categorical key + N numeric series. */
157
+ type ChartDatum = Readonly<Record<string, unknown>>;
158
+ /** Render-area margins inside the chart's SVG (px). */
159
+ interface ChartMargin {
160
+ readonly top: number;
161
+ readonly right: number;
162
+ readonly bottom: number;
163
+ readonly left: number;
164
+ }
165
+ /** Axis orientation for cartesian charts. */
166
+ type ChartOrientation = 'vertical' | 'horizontal';
167
+ /** Primary axis scale — band for categorical, linear for numeric. */
168
+ type CategoryScale = ScaleBand<string>;
169
+ type ValueScale = ScaleLinear<number, number>;
170
+ /**
171
+ * Cartesian plotting frame shared between a chart type (Bar, Line, Area…)
172
+ * and its axis / grid primitives.
173
+ *
174
+ * The owning chart component provides an instance and publishes its scales;
175
+ * descendants read them via signals and re-render when dimensions or data
176
+ * change.
177
+ */
178
+ declare class CartesianContext {
179
+ /** Inner width (outer width − margin.left − margin.right). */
180
+ readonly innerWidth: _angular_core.WritableSignal<number>;
181
+ /** Inner height (outer height − margin.top − margin.bottom). */
182
+ readonly innerHeight: _angular_core.WritableSignal<number>;
183
+ /** Margins around the plotting area. */
184
+ readonly margin: _angular_core.WritableSignal<ChartMargin>;
185
+ /** Layout orientation (drives which axis holds the band scale). */
186
+ readonly orientation: _angular_core.WritableSignal<ChartOrientation>;
187
+ /** Band (categorical) scale. */
188
+ readonly categoryScale: _angular_core.WritableSignal<CategoryScale | null>;
189
+ /** Linear (numeric) scale. */
190
+ readonly valueScale: _angular_core.WritableSignal<ValueScale | null>;
191
+ /** Ordered category domain (e.g. x labels for vertical, y labels for horizontal). */
192
+ readonly categories: _angular_core.WritableSignal<readonly string[]>;
193
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CartesianContext, never>;
194
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CartesianContext>;
195
+ }
196
+ /** Resolve the scale that maps to the X axis for a given orientation. */
197
+ declare function xScale(ctx: Pick<CartesianContext, 'orientation' | 'categoryScale' | 'valueScale'>): Signal<CategoryScale | ValueScale | null>;
198
+ /** Resolve the scale that maps to the Y axis for a given orientation. */
199
+ declare function yScale(ctx: Pick<CartesianContext, 'orientation' | 'categoryScale' | 'valueScale'>): Signal<CategoryScale | ValueScale | null>;
200
+
201
+ /** A tick descriptor for rendering axes. */
202
+ interface ChartTick {
203
+ readonly value: string | number;
204
+ /** Offset (px) along the axis. For band scales this is the band center. */
205
+ readonly offset: number;
206
+ /** Display label. */
207
+ readonly label: string;
208
+ }
209
+ /** Produce evenly-spaced ticks for a band (categorical) scale. */
210
+ declare function bandTicks(scale: ScaleBand<string>): ChartTick[];
211
+ /**
212
+ * Produce ticks for a linear scale.
213
+ *
214
+ * @param scale The linear scale.
215
+ * @param count Approximate number of ticks (hint, d3 may return fewer/more).
216
+ * @param formatter Label formatter.
217
+ */
218
+ declare function linearTicks(scale: ScaleLinear<number, number>, count?: number, formatter?: (value: number) => string): ChartTick[];
219
+
220
+ interface ChartIndexRange {
221
+ readonly startIndex: number;
222
+ readonly endIndex: number;
223
+ }
224
+ type NumericDomain = readonly [number, number];
225
+ declare function normalizeIndexRange(start: number, end: number, maxCount: number): ChartIndexRange | null;
226
+ declare function effectiveIndexRange(range: ChartIndexRange | null, maxCount: number): ChartIndexRange | null;
227
+ declare function indexRangeSize(range: ChartIndexRange | null, maxCount: number): number;
228
+ declare function sliceByIndexRange<T>(data: readonly T[], range: ChartIndexRange | null): readonly T[];
229
+ declare function zoomIndexRange(current: ChartIndexRange | null, maxCount: number, anchorIndex: number, factor: number): ChartIndexRange | null;
230
+ declare function panIndexRange(current: ChartIndexRange | null, maxCount: number, deltaSteps: number): ChartIndexRange | null;
231
+ declare function normalizeNumericDomain(a: number, b: number): NumericDomain;
232
+ declare function zoomNumericDomain(current: NumericDomain, full: NumericDomain, anchor: number, factor: number): NumericDomain;
233
+ declare function panNumericDomain(current: NumericDomain, full: NumericDomain, delta: number): NumericDomain;
234
+
235
+ /**
236
+ * X axis for a cartesian chart. Reads scales from `CartesianContext`.
237
+ *
238
+ * Renders as `<svg:g>` — must be placed inside the owning chart's SVG.
239
+ */
240
+ declare class ChartAxisX {
241
+ private readonly ctx;
242
+ /** Approximate tick count for linear (value) scales. */
243
+ readonly tickCount: _angular_core.InputSignal<number>;
244
+ /** Show 6-px tick marks between the axis line and the labels. */
245
+ readonly tickLine: _angular_core.InputSignal<boolean>;
246
+ /** Formatter for numeric tick labels. */
247
+ readonly tickFormat: _angular_core.InputSignal<(value: number) => string>;
248
+ protected readonly innerWidth: _angular_core.WritableSignal<number>;
249
+ protected readonly transform: _angular_core.Signal<string>;
250
+ protected readonly ticks: _angular_core.Signal<ChartTick[]>;
251
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartAxisX, never>;
252
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartAxisX, "svg:g[ui-chart-axis-x]", never, { "tickCount": { "alias": "tickCount"; "required": false; "isSignal": true; }; "tickLine": { "alias": "tickLine"; "required": false; "isSignal": true; }; "tickFormat": { "alias": "tickFormat"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
253
+ }
254
+
255
+ /**
256
+ * Y axis for a cartesian chart. Reads scales from `CartesianContext`.
257
+ *
258
+ * Renders as `<svg:g>` — must be placed inside the owning chart's SVG.
259
+ */
260
+ declare class ChartAxisY {
261
+ private readonly ctx;
262
+ readonly tickCount: _angular_core.InputSignal<number>;
263
+ readonly tickLine: _angular_core.InputSignal<boolean>;
264
+ readonly tickFormat: _angular_core.InputSignal<(value: number) => string>;
265
+ protected readonly innerHeight: _angular_core.WritableSignal<number>;
266
+ protected readonly ticks: _angular_core.Signal<ChartTick[]>;
267
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartAxisY, never>;
268
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartAxisY, "svg:g[ui-chart-axis-y]", never, { "tickCount": { "alias": "tickCount"; "required": false; "isSignal": true; }; "tickLine": { "alias": "tickLine"; "required": false; "isSignal": true; }; "tickFormat": { "alias": "tickFormat"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
269
+ }
270
+
271
+ /**
272
+ * Horizontal / vertical grid lines for the cartesian plotting area.
273
+ *
274
+ * Reads tick positions from `CartesianContext.valueScale`. Direction of the
275
+ * grid lines follows `orientation`:
276
+ * - vertical → horizontal grid lines (one per y-tick)
277
+ * - horizontal → vertical grid lines (one per x-tick)
278
+ */
279
+ declare class ChartGrid {
280
+ private readonly ctx;
281
+ readonly tickCount: _angular_core.InputSignal<number>;
282
+ protected readonly ticks: _angular_core.Signal<_ojiepermana_angular_chart.ChartTick[]>;
283
+ protected readonly line: (offset: number) => {
284
+ x1: number;
285
+ x2: number;
286
+ y1: number;
287
+ y2: number;
288
+ };
289
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartGrid, never>;
290
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartGrid, "svg:g[ui-chart-grid]", never, { "tickCount": { "alias": "tickCount"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
291
+ }
292
+
293
+ /**
294
+ * Crosshair primitive — a line drawn through the currently active data point
295
+ * perpendicular to the categorical axis. Reads `activePoint` from
296
+ * `ChartContext` and the scales from `CartesianContext`.
297
+ *
298
+ * Place inside a cartesian chart's SVG inner group.
299
+ */
300
+ declare class ChartCrosshair {
301
+ private readonly root;
302
+ private readonly cart;
303
+ protected readonly line: _angular_core.Signal<{
304
+ x1: number;
305
+ x2: number;
306
+ y1: number;
307
+ y2: number;
308
+ } | null>;
309
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartCrosshair, never>;
310
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartCrosshair, "svg:g[ui-chart-crosshair]", never, {}, {}, never, never, true, never>;
311
+ }
312
+
313
+ declare class ChartBrush {
314
+ private readonly hitbox;
315
+ private readonly cart;
316
+ private readonly categorical;
317
+ private readonly scatter;
318
+ private readonly mode;
319
+ private readonly activePointerId;
320
+ private readonly categoryStartIndex;
321
+ private readonly categoryPanStart;
322
+ private readonly scatterBrush;
323
+ private readonly scatterPan;
324
+ protected readonly width: _angular_core.Signal<number>;
325
+ protected readonly height: _angular_core.Signal<number>;
326
+ protected readonly categoryPreview: _angular_core.Signal<{
327
+ x: number;
328
+ y: number;
329
+ width: number;
330
+ height: number;
331
+ } | null>;
332
+ protected readonly scatterPreviewRect: _angular_core.Signal<{
333
+ x: number;
334
+ y: number;
335
+ width: number;
336
+ height: number;
337
+ } | null>;
338
+ protected onPointerDown(event: PointerEvent): void;
339
+ protected onPointerMove(event: PointerEvent): void;
340
+ protected onPointerUp(event?: PointerEvent): void;
341
+ protected onPointerCancel(event: PointerEvent): void;
342
+ protected onWheel(event: WheelEvent): void;
343
+ protected resetZoom(): void;
344
+ private onScatterPointerDown;
345
+ private localPoint;
346
+ private pointerAxis;
347
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartBrush, never>;
348
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartBrush, "svg:g[ui-chart-brush]", never, {}, {}, never, never, true, never>;
349
+ }
350
+
351
+ /**
352
+ * Attach to a chart's `<svg:svg>` to publish pointer-driven active-point
353
+ * state into the surrounding `ChartContext`.
354
+ *
355
+ * Computes the local (x, y) of the pointer relative to the inner plotting
356
+ * area, resolves the nearest category, and updates
357
+ * `ChartContext.activePoint`. Clears it on `pointerleave`.
358
+ */
359
+ declare class ChartPointerTracker {
360
+ private readonly root;
361
+ private readonly cart;
362
+ private readonly viewport;
363
+ protected onMove(event: PointerEvent): void;
364
+ protected onLeave(): void;
365
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartPointerTracker, never>;
366
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ChartPointerTracker, "svg:svg[uiChartPointerTracker]", never, {}, {}, never, never, true, never>;
367
+ }
368
+
369
+ /** Row of data fed to tooltip templates. */
370
+ interface ChartTooltipRow {
371
+ readonly seriesKey: string;
372
+ readonly label: string;
373
+ readonly value: unknown;
374
+ readonly color: string;
375
+ readonly icon?: Type<unknown>;
376
+ }
377
+ /** Payload available to a user-supplied tooltip template. */
378
+ interface ChartTooltipPayload {
379
+ readonly category: string;
380
+ readonly datum: ChartDatum;
381
+ readonly rows: readonly ChartTooltipRow[];
382
+ }
383
+ /** Indicator rendered beside each tooltip row. */
384
+ type ChartTooltipIndicator = 'dot' | 'line' | 'dashed' | 'none';
385
+ /** Signature for the per-row value formatter (string output). */
386
+ type ChartTooltipValueFormatter = (value: unknown, row: ChartTooltipRow, payload: ChartTooltipPayload) => string;
387
+ /** Signature for the tooltip header (label) formatter. */
388
+ type ChartTooltipLabelFormatter = (label: string, payload: ChartTooltipPayload) => string;
389
+ /**
390
+ * Tooltip overlay — renders the default tooltip card (or a user-supplied
391
+ * template) anchored to the currently active data point.
392
+ *
393
+ * Shadcn-compatible knobs:
394
+ * - `indicator="line"` / `"none"` / `"dashed"` — swap the row glyph
395
+ * - `hideLabel` — drop the header row
396
+ * - `label="Activities"` — override the header text
397
+ * - `labelKey="activities"` — resolve the header from `config[labelKey].label`
398
+ * - `labelFormatter` — transform the header (e.g. ISO date → long date)
399
+ * - `formatter` — format per-row values (e.g. `"380 kcal"`)
400
+ * - `valueKey` — for pie/radial/radar, read row value from a single field
401
+ * - Icons are picked up automatically from `config[key].icon`.
402
+ */
403
+ declare class ChartTooltip {
404
+ private readonly root;
405
+ private readonly host;
406
+ /** Data key on each datum whose value is the category label (x-axis). */
407
+ readonly xKey: _angular_core.InputSignal<string | null>;
408
+ /** Data source (optional — if omitted tooltip reads from chart data via activePoint.datumIndex). */
409
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[] | null>;
410
+ /**
411
+ * Optional key for per-datum value lookup (pie / radial / radar datasets
412
+ * store values on a single field like `visitors` instead of one field per
413
+ * series). When set and `activePoint.seriesKey` is active, the tooltip row
414
+ * reads `datum[valueKey]` for its value.
415
+ */
416
+ readonly valueKey: _angular_core.InputSignal<string | null>;
417
+ /** Indicator variant next to each row. Default `'dot'`. */
418
+ readonly indicator: _angular_core.InputSignal<ChartTooltipIndicator>;
419
+ /** Hide the header label entirely. */
420
+ readonly hideLabel: _angular_core.InputSignal<boolean>;
421
+ /** Override the header label with a fixed string. Takes precedence over `labelKey`. */
422
+ readonly label: _angular_core.InputSignal<string | null>;
423
+ /**
424
+ * Resolve the header label from `config[labelKey].label`. Useful when the
425
+ * header should come from a config entry rather than the datum itself
426
+ * (shadcn's "Custom label" variant).
427
+ */
428
+ readonly labelKey: _angular_core.InputSignal<string | null>;
429
+ /** Transform the final header string (e.g. ISO date → long date). */
430
+ readonly labelFormatter: _angular_core.InputSignal<ChartTooltipLabelFormatter | null>;
431
+ /** Format each row's value (return string — HTML is not interpreted). */
432
+ readonly formatter: _angular_core.InputSignal<ChartTooltipValueFormatter | null>;
433
+ readonly customTpl: _angular_core.Signal<TemplateRef<any> | undefined>;
434
+ protected readonly visible: _angular_core.Signal<boolean>;
435
+ protected readonly payload: _angular_core.Signal<ChartTooltipPayload | null>;
436
+ /** Resolve the header string honoring `label`, `labelKey`, then `labelFormatter`. */
437
+ protected headerText(p: ChartTooltipPayload): string | null;
438
+ /** Apply per-row value formatter (or stringify). */
439
+ protected formatRow(row: ChartTooltipRow, p: ChartTooltipPayload): string;
440
+ protected readonly position: _angular_core.Signal<{
441
+ x: number;
442
+ y: number;
443
+ }>;
444
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartTooltip, never>;
445
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartTooltip, "ui-chart-tooltip", never, { "xKey": { "alias": "xKey"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "valueKey": { "alias": "valueKey"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelKey": { "alias": "labelKey"; "required": false; "isSignal": true; }; "labelFormatter": { "alias": "labelFormatter"; "required": false; "isSignal": true; }; "formatter": { "alias": "formatter"; "required": false; "isSignal": true; }; }, {}, ["customTpl"], never, true, never>;
446
+ }
447
+
448
+ /**
449
+ * Legend — renders a list of series swatches. Clicking an item toggles
450
+ * visibility via `ChartContext.toggleSeries`.
451
+ *
452
+ * Place as a child of `<ui-chart-container>`:
453
+ * ```html
454
+ * <ui-chart-container [config]="cfg">
455
+ * <ui-bar-chart ... />
456
+ * <ui-chart-legend />
457
+ * </ui-chart-container>
458
+ * ```
459
+ */
460
+ declare class ChartLegend {
461
+ private readonly root;
462
+ protected readonly items: _angular_core.Signal<{
463
+ seriesKey: string;
464
+ label: string;
465
+ color: string;
466
+ hidden: boolean;
467
+ }[]>;
468
+ protected toggle(key: string): void;
469
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartLegend, never>;
470
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartLegend, "ui-chart-legend", never, {}, {}, never, never, true, never>;
471
+ }
472
+
473
+ declare class ChartZoomControls {
474
+ private readonly categorical;
475
+ private readonly scatter;
476
+ protected readonly status: _angular_core.Signal<string | null>;
477
+ protected readonly hint: _angular_core.Signal<"Drag to brush a region. Use the wheel to zoom and one-finger touch drag to pan while zoomed." | "Drag to select a category range. Use the wheel to zoom and one-finger touch drag to pan while zoomed.">;
478
+ protected resetZoom(): void;
479
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartZoomControls, never>;
480
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartZoomControls, "ui-chart-zoom-controls", never, {}, {}, never, never, true, never>;
481
+ }
482
+
483
+ declare class PieCenter {
484
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieCenter, never>;
485
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieCenter, "ui-pie-center", never, {}, {}, never, ["*"], true, never>;
486
+ }
487
+
488
+ declare class RadialCenter {
489
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadialCenter, never>;
490
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadialCenter, "ui-radial-center", never, {}, {}, never, ["*"], true, never>;
491
+ }
492
+
493
+ /** Bar-chart layout variant. */
494
+ type BarVariant = 'grouped' | 'stacked';
495
+ /** A single bar rectangle ready to render. */
496
+ interface BarRect {
497
+ readonly key: string;
498
+ readonly seriesKey: string;
499
+ readonly datumIndex: number;
500
+ readonly category: string;
501
+ readonly value: number;
502
+ readonly x: number;
503
+ readonly y: number;
504
+ readonly width: number;
505
+ readonly height: number;
506
+ readonly color: string;
507
+ readonly active: boolean;
508
+ }
509
+ /** Inputs required to compute bar-chart geometry. */
510
+ interface BarLayoutInput {
511
+ readonly data: readonly ChartDatum[];
512
+ readonly xKey: string;
513
+ readonly seriesKeys: readonly string[];
514
+ readonly variant: BarVariant;
515
+ readonly orientation: ChartOrientation;
516
+ readonly innerWidth: number;
517
+ readonly innerHeight: number;
518
+ readonly bandPadding: number;
519
+ readonly groupPadding: number;
520
+ readonly colorKey?: string;
521
+ readonly activeKey?: string;
522
+ readonly activeValue?: string | number;
523
+ }
524
+ /** Computed layout: bars + scales. */
525
+ interface BarLayoutResult {
526
+ readonly bars: readonly BarRect[];
527
+ readonly categoryScale: ReturnType<typeof scaleBand<string>>;
528
+ readonly valueScale: ReturnType<typeof scaleLinear<number, number>>;
529
+ readonly categories: readonly string[];
530
+ }
531
+ /** Build all bar rectangles for the given config. */
532
+ declare function computeBarLayout(input: BarLayoutInput): BarLayoutResult;
533
+
534
+ /** Event emitted when a user clicks a bar. */
535
+ interface BarClickEvent {
536
+ readonly seriesKey: string;
537
+ readonly datumIndex: number;
538
+ readonly category: string;
539
+ readonly value: number;
540
+ readonly datum: ChartDatum;
541
+ }
542
+ /**
543
+ * Bar chart — composable within `<ui-chart-container>`.
544
+ *
545
+ * Layout variants (via inputs):
546
+ * - `orientation`: `'vertical'` (default) or `'horizontal'`
547
+ * - `variant`: `'grouped'` (default) or `'stacked'`
548
+ */
549
+ declare class BarChart {
550
+ private readonly root;
551
+ private readonly cart;
552
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
553
+ readonly xKey: _angular_core.InputSignal<string>;
554
+ readonly orientation: _angular_core.InputSignal<ChartOrientation>;
555
+ readonly variant: _angular_core.InputSignal<BarVariant>;
556
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
557
+ readonly bandPadding: _angular_core.InputSignal<number>;
558
+ readonly groupPadding: _angular_core.InputSignal<number>;
559
+ readonly cornerRadius: _angular_core.InputSignal<number>;
560
+ readonly colorKey: _angular_core.InputSignal<string | undefined>;
561
+ readonly activeKey: _angular_core.InputSignal<string | undefined>;
562
+ readonly activeValue: _angular_core.InputSignal<string | number | undefined>;
563
+ readonly showValueLabels: _angular_core.InputSignal<boolean>;
564
+ readonly valueLabelFormat: _angular_core.InputSignal<(value: number) => string>;
565
+ readonly barClick: _angular_core.OutputEmitterRef<BarClickEvent>;
566
+ protected readonly innerWidth: _angular_core.Signal<number>;
567
+ protected readonly innerHeight: _angular_core.Signal<number>;
568
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.BarLayoutResult>;
569
+ protected readonly bars: _angular_core.Signal<readonly BarRect[]>;
570
+ protected readonly viewBox: _angular_core.Signal<string>;
571
+ protected readonly innerTransform: _angular_core.Signal<string>;
572
+ protected readonly ariaSummary: _angular_core.Signal<string>;
573
+ constructor();
574
+ protected emitClick(bar: BarRect): void;
575
+ protected setActivePoint(event: FocusEvent, bar: BarRect): void;
576
+ protected clearActivePoint(): void;
577
+ protected barOpacity(bar: BarRect): number;
578
+ protected formatValueLabel(bar: BarRect): string;
579
+ protected barLabelX(bar: BarRect): number;
580
+ protected barLabelY(bar: BarRect): number;
581
+ protected barLabelAnchor(bar: BarRect): 'middle' | 'start' | 'end';
582
+ protected barAriaLabel(bar: BarRect): string;
583
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarChart, never>;
584
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarChart, "ui-bar-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "xKey": { "alias": "xKey"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "bandPadding": { "alias": "bandPadding"; "required": false; "isSignal": true; }; "groupPadding": { "alias": "groupPadding"; "required": false; "isSignal": true; }; "cornerRadius": { "alias": "cornerRadius"; "required": false; "isSignal": true; }; "colorKey": { "alias": "colorKey"; "required": false; "isSignal": true; }; "activeKey": { "alias": "activeKey"; "required": false; "isSignal": true; }; "activeValue": { "alias": "activeValue"; "required": false; "isSignal": true; }; "showValueLabels": { "alias": "showValueLabels"; "required": false; "isSignal": true; }; "valueLabelFormat": { "alias": "valueLabelFormat"; "required": false; "isSignal": true; }; }, { "barClick": "barClick"; }, never, ["svg\\:g[ui-chart-grid]", "svg\\:g[ui-chart-axis-x]", "svg\\:g[ui-chart-axis-y]", "svg\\:g[ui-chart-crosshair]", "*", "ui-chart-tooltip", "ui-chart-legend"], true, never>;
585
+ }
586
+
587
+ /** Curve type shared by line & area charts. */
588
+ type LineCurve = 'linear' | 'monotone' | 'step';
589
+ /** A single series ready to render as either a line or an area. */
590
+ interface LineSeriesPath {
591
+ readonly seriesKey: string;
592
+ readonly color: string;
593
+ readonly linePath: string;
594
+ /** Optional area path — only populated when `computeAreaLayout` is used. */
595
+ readonly areaPath?: string;
596
+ /** Raw points for dots / active markers. */
597
+ readonly points: readonly LinePoint[];
598
+ }
599
+ /** One resolved (x, y) point for a series. */
600
+ interface LinePoint {
601
+ readonly seriesKey: string;
602
+ readonly datumIndex: number;
603
+ readonly category: string;
604
+ readonly value: number;
605
+ readonly x: number;
606
+ readonly y: number;
607
+ }
608
+ interface CartesianBase {
609
+ readonly data: readonly ChartDatum[];
610
+ readonly xKey: string;
611
+ readonly seriesKeys: readonly string[];
612
+ readonly orientation: ChartOrientation;
613
+ readonly innerWidth: number;
614
+ readonly innerHeight: number;
615
+ readonly curve: LineCurve;
616
+ }
617
+ interface LineLayoutResult {
618
+ readonly series: readonly LineSeriesPath[];
619
+ readonly points: readonly LinePoint[];
620
+ readonly categoryScale: ReturnType<typeof scalePoint<string>>;
621
+ readonly valueScale: ReturnType<typeof scaleLinear<number, number>>;
622
+ readonly categories: readonly string[];
623
+ }
624
+ interface AreaLayoutResult extends LineLayoutResult {
625
+ readonly stacked: boolean;
626
+ }
627
+ /** Build category + value scales for point-based charts (line / area). */
628
+ declare function buildCartesianScales(input: CartesianBase): {
629
+ categories: readonly string[];
630
+ categoryScale: ReturnType<typeof scalePoint<string>>;
631
+ valueScale: ReturnType<typeof scaleLinear<number, number>>;
632
+ };
633
+ /** Compute line-chart geometry. */
634
+ declare function computeLineLayout(input: CartesianBase): LineLayoutResult;
635
+ interface AreaLayoutInput extends CartesianBase {
636
+ readonly stacked: boolean;
637
+ readonly expanded?: boolean;
638
+ }
639
+ /** Compute area-chart geometry (single or stacked). */
640
+ declare function computeAreaLayout(input: AreaLayoutInput): AreaLayoutResult;
641
+
642
+ /** Emitted when a data point is activated (click or keyboard). */
643
+ interface LinePointClickEvent {
644
+ readonly seriesKey: string;
645
+ readonly datumIndex: number;
646
+ readonly category: string;
647
+ readonly value: number;
648
+ readonly datum: ChartDatum;
649
+ }
650
+ declare class LineChart {
651
+ private readonly root;
652
+ private readonly cart;
653
+ private readonly viewport;
654
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
655
+ readonly xKey: _angular_core.InputSignal<string>;
656
+ readonly orientation: _angular_core.InputSignal<ChartOrientation>;
657
+ readonly curve: _angular_core.InputSignal<LineCurve>;
658
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
659
+ readonly strokeWidth: _angular_core.InputSignal<number>;
660
+ readonly showDots: _angular_core.InputSignal<boolean>;
661
+ readonly dotRadius: _angular_core.InputSignal<number>;
662
+ readonly dotColorKey: _angular_core.InputSignal<string | undefined>;
663
+ readonly dotStrokeColor: _angular_core.InputSignal<string | undefined>;
664
+ readonly dotStrokeWidth: _angular_core.InputSignal<number>;
665
+ readonly showValueLabels: _angular_core.InputSignal<boolean>;
666
+ readonly valueLabelFormat: _angular_core.InputSignal<(value: number) => string>;
667
+ readonly pointClick: _angular_core.OutputEmitterRef<LinePointClickEvent>;
668
+ protected readonly innerWidth: _angular_core.Signal<number>;
669
+ protected readonly innerHeight: _angular_core.Signal<number>;
670
+ protected readonly visibleStartIndex: _angular_core.Signal<number>;
671
+ protected readonly visibleData: _angular_core.Signal<readonly Readonly<Record<string, unknown>>[]>;
672
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.LineLayoutResult>;
673
+ protected readonly series: _angular_core.Signal<readonly LineSeriesPath[]>;
674
+ protected readonly viewBox: _angular_core.Signal<string>;
675
+ protected readonly innerTransform: _angular_core.Signal<string>;
676
+ protected readonly ariaSummary: _angular_core.Signal<string>;
677
+ constructor();
678
+ protected emitClick(p: LinePoint): void;
679
+ protected setActivePoint(event: FocusEvent, p: LinePoint): void;
680
+ protected clearActivePoint(): void;
681
+ protected dotFill(point: LinePoint, fallbackColor: string): string;
682
+ protected formatValueLabel(point: LinePoint): string;
683
+ protected labelX(point: LinePoint): number;
684
+ protected labelY(point: LinePoint): number;
685
+ protected labelAnchor(): 'middle' | 'start';
686
+ protected pointAriaLabel(p: LinePoint): string;
687
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LineChart, never>;
688
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LineChart, "ui-line-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "xKey": { "alias": "xKey"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "dotRadius": { "alias": "dotRadius"; "required": false; "isSignal": true; }; "dotColorKey": { "alias": "dotColorKey"; "required": false; "isSignal": true; }; "dotStrokeColor": { "alias": "dotStrokeColor"; "required": false; "isSignal": true; }; "dotStrokeWidth": { "alias": "dotStrokeWidth"; "required": false; "isSignal": true; }; "showValueLabels": { "alias": "showValueLabels"; "required": false; "isSignal": true; }; "valueLabelFormat": { "alias": "valueLabelFormat"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, never, ["svg\\:g[ui-chart-grid]", "svg\\:g[ui-chart-axis-x]", "svg\\:g[ui-chart-axis-y]", "svg\\:g[ui-chart-crosshair]", "svg:g[ui-chart-brush]", "ui-chart-tooltip", "ui-chart-legend", "ui-chart-zoom-controls"], true, never>;
689
+ }
690
+
691
+ /**
692
+ * Publish a `scalePoint` from line/area layouts to the `CartesianContext`,
693
+ * which expects a `scaleBand`. We adapt by building a band with zero padding
694
+ * centered on the same positions, so axis ticks render at the correct
695
+ * offsets.
696
+ *
697
+ * This keeps axes/grid primitives agnostic to whether the underlying chart
698
+ * uses `scaleBand` (bar) or `scalePoint` (line/area).
699
+ */
700
+ declare function pointToBandAdapter(pointScale: ScalePoint<string>, range: [number, number]): ReturnType<typeof scaleBand<string>>;
701
+ /** Recreate a linear scale with the same domain/range (handy for effects). */
702
+ declare function cloneLinear(scale: ReturnType<typeof scaleLinear<number, number>>): ReturnType<typeof scaleLinear<number, number>>;
703
+ declare function provideCartesianFromLineLayout(ctx: CartesianContext, layout: {
704
+ categoryScale: ScalePoint<string>;
705
+ valueScale: ReturnType<typeof scaleLinear<number, number>>;
706
+ categories: readonly string[];
707
+ }, orientation: 'vertical' | 'horizontal', innerWidth: number, innerHeight: number): void;
708
+
709
+ interface AreaPointClickEvent {
710
+ readonly seriesKey: string;
711
+ readonly datumIndex: number;
712
+ readonly category: string;
713
+ readonly value: number;
714
+ readonly datum: ChartDatum;
715
+ }
716
+ /**
717
+ * Area chart — composable within `<ui-chart-container>`.
718
+ *
719
+ * - `stacked=true` stacks series along the value axis.
720
+ * - `gradient=true` fills each area with a vertical linear-gradient from
721
+ * the series color (top) to transparent (bottom). The gradient is
722
+ * emitted as `<defs><linearGradient>` per series, unique per chart id.
723
+ */
724
+ declare class AreaChart {
725
+ private readonly root;
726
+ private readonly cart;
727
+ private readonly viewport;
728
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
729
+ readonly xKey: _angular_core.InputSignal<string>;
730
+ readonly orientation: _angular_core.InputSignal<ChartOrientation>;
731
+ readonly stacked: _angular_core.InputSignal<boolean>;
732
+ readonly expanded: _angular_core.InputSignal<boolean>;
733
+ readonly gradient: _angular_core.InputSignal<boolean>;
734
+ readonly curve: _angular_core.InputSignal<LineCurve>;
735
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
736
+ readonly strokeWidth: _angular_core.InputSignal<number>;
737
+ readonly showDots: _angular_core.InputSignal<boolean>;
738
+ readonly dotRadius: _angular_core.InputSignal<number>;
739
+ readonly pointClick: _angular_core.OutputEmitterRef<AreaPointClickEvent>;
740
+ protected readonly innerWidth: _angular_core.Signal<number>;
741
+ protected readonly innerHeight: _angular_core.Signal<number>;
742
+ protected readonly visibleStartIndex: _angular_core.Signal<number>;
743
+ protected readonly visibleData: _angular_core.Signal<readonly Readonly<Record<string, unknown>>[]>;
744
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.AreaLayoutResult>;
745
+ protected readonly series: _angular_core.Signal<readonly LineSeriesPath[]>;
746
+ protected readonly viewBox: _angular_core.Signal<string>;
747
+ protected readonly innerTransform: _angular_core.Signal<string>;
748
+ protected readonly ariaSummary: _angular_core.Signal<string>;
749
+ constructor();
750
+ protected gradientId(seriesKey: string): string;
751
+ protected areaFill(seriesKey: string, color: string): string;
752
+ protected emitClick(p: LinePoint): void;
753
+ protected setActivePoint(event: FocusEvent, p: LinePoint): void;
754
+ protected clearActivePoint(): void;
755
+ protected pointAriaLabel(p: LinePoint): string;
756
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AreaChart, never>;
757
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AreaChart, "ui-area-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "xKey": { "alias": "xKey"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "gradient": { "alias": "gradient"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "dotRadius": { "alias": "dotRadius"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, never, ["svg\\:g[ui-chart-grid]", "svg\\:g[ui-chart-axis-x]", "svg\\:g[ui-chart-axis-y]", "svg\\:g[ui-chart-crosshair]", "svg:g[ui-chart-brush]", "ui-chart-tooltip", "ui-chart-legend", "ui-chart-zoom-controls"], true, never>;
758
+ }
759
+
760
+ interface PieLayoutInput {
761
+ readonly data: readonly ChartDatum[];
762
+ /** Field on each datum whose value is the slice's numeric magnitude. */
763
+ readonly valueKey: string;
764
+ /** Field on each datum whose value is the slice's categorical label. */
765
+ readonly nameKey: string;
766
+ /**
767
+ * Ordered series keys used to resolve color (`var(--color-<key>)`).
768
+ * Must have the same length as `data`. If omitted, falls back to
769
+ * `nameKey` values.
770
+ */
771
+ readonly seriesKeys?: readonly string[];
772
+ readonly innerWidth: number;
773
+ readonly innerHeight: number;
774
+ /** Inner radius for donut-style charts (0 = full pie). */
775
+ readonly innerRadius: number;
776
+ /** Gap between slices, in radians. */
777
+ readonly padAngle: number;
778
+ /** Corner radius for slices (px). */
779
+ readonly cornerRadius: number;
780
+ /** Starting angle in radians (default −π/2 = 12 o'clock). */
781
+ readonly startAngle: number;
782
+ /** Ending angle in radians (default 3π/2). */
783
+ readonly endAngle: number;
784
+ readonly activeIndex?: number;
785
+ readonly activeOffset?: number;
786
+ }
787
+ interface PieSliceRect {
788
+ readonly seriesKey: string;
789
+ readonly name: string;
790
+ readonly value: number;
791
+ readonly datumIndex: number;
792
+ readonly color: string;
793
+ readonly arcPath: string;
794
+ readonly centroid: readonly [number, number];
795
+ readonly startAngle: number;
796
+ readonly endAngle: number;
797
+ readonly translateX: number;
798
+ readonly translateY: number;
799
+ }
800
+ interface PieLayout {
801
+ readonly slices: readonly PieSliceRect[];
802
+ readonly centerX: number;
803
+ readonly centerY: number;
804
+ readonly outerRadius: number;
805
+ }
806
+ declare function computePieLayout(input: PieLayoutInput): PieLayout;
807
+
808
+ interface PieSliceClickEvent {
809
+ readonly seriesKey: string;
810
+ readonly name: string;
811
+ readonly value: number;
812
+ readonly datumIndex: number;
813
+ readonly datum: ChartDatum;
814
+ }
815
+ declare class PieChart {
816
+ private readonly root;
817
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
818
+ readonly valueKey: _angular_core.InputSignal<string>;
819
+ readonly nameKey: _angular_core.InputSignal<string>;
820
+ readonly seriesKeys: _angular_core.InputSignal<readonly string[] | undefined>;
821
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
822
+ readonly innerRadius: _angular_core.InputSignal<number>;
823
+ readonly padAngle: _angular_core.InputSignal<number>;
824
+ readonly cornerRadius: _angular_core.InputSignal<number>;
825
+ readonly startAngle: _angular_core.InputSignal<number>;
826
+ readonly endAngle: _angular_core.InputSignal<number>;
827
+ readonly showLabels: _angular_core.InputSignal<boolean>;
828
+ readonly activeIndex: _angular_core.InputSignal<number | undefined>;
829
+ readonly activeOffset: _angular_core.InputSignal<number>;
830
+ readonly sliceClick: _angular_core.OutputEmitterRef<PieSliceClickEvent>;
831
+ protected readonly innerWidth: _angular_core.Signal<number>;
832
+ protected readonly innerHeight: _angular_core.Signal<number>;
833
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.PieLayout>;
834
+ protected readonly viewBox: _angular_core.Signal<string>;
835
+ protected readonly innerTransform: _angular_core.Signal<string>;
836
+ protected readonly ariaSummary: _angular_core.Signal<string>;
837
+ protected sliceAriaLabel(s: PieSliceRect): string;
838
+ protected sliceTransform(s: PieSliceRect): string | null;
839
+ protected emitClick(s: PieSliceRect): void;
840
+ protected setActive(event: PointerEvent | FocusEvent, s: PieSliceRect): void;
841
+ protected clearActive(): void;
842
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieChart, never>;
843
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieChart, "ui-pie-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "valueKey": { "alias": "valueKey"; "required": true; "isSignal": true; }; "nameKey": { "alias": "nameKey"; "required": true; "isSignal": true; }; "seriesKeys": { "alias": "seriesKeys"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "padAngle": { "alias": "padAngle"; "required": false; "isSignal": true; }; "cornerRadius": { "alias": "cornerRadius"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "endAngle": { "alias": "endAngle"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "activeOffset": { "alias": "activeOffset"; "required": false; "isSignal": true; }; }, { "sliceClick": "sliceClick"; }, never, ["ui-pie-center", "ui-chart-tooltip", "ui-chart-legend"], true, never>;
844
+ }
845
+
846
+ type RadarCurve = 'linear' | 'cardinal';
847
+ type RadarGrid = 'polygon' | 'circle' | 'none';
848
+ interface RadarLayoutInput {
849
+ readonly data: readonly ChartDatum[];
850
+ readonly axisKey: string;
851
+ readonly seriesKeys: readonly string[];
852
+ readonly innerWidth: number;
853
+ readonly innerHeight: number;
854
+ readonly maxValue?: number;
855
+ readonly levels: number;
856
+ readonly curve: RadarCurve;
857
+ readonly grid: RadarGrid;
858
+ }
859
+ interface RadarAxisInfo {
860
+ readonly name: string;
861
+ readonly angle: number;
862
+ readonly x: number;
863
+ readonly y: number;
864
+ }
865
+ interface RadarSeries {
866
+ readonly seriesKey: string;
867
+ readonly color: string;
868
+ readonly path: string;
869
+ readonly points: readonly {
870
+ readonly x: number;
871
+ readonly y: number;
872
+ readonly value: number;
873
+ readonly axis: string;
874
+ }[];
875
+ }
876
+ interface RadarLevel {
877
+ readonly value: number;
878
+ readonly radius: number;
879
+ readonly path: string;
880
+ }
881
+ interface RadarLayout {
882
+ readonly centerX: number;
883
+ readonly centerY: number;
884
+ readonly radius: number;
885
+ readonly axes: readonly RadarAxisInfo[];
886
+ readonly levels: readonly RadarLevel[];
887
+ readonly maxValue: number;
888
+ readonly series: readonly RadarSeries[];
889
+ readonly grid: RadarGrid;
890
+ }
891
+ declare function computeRadarLayout(input: RadarLayoutInput): RadarLayout;
892
+
893
+ declare class RadarChart {
894
+ private readonly root;
895
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
896
+ readonly axisKey: _angular_core.InputSignal<string>;
897
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
898
+ readonly curve: _angular_core.InputSignal<RadarCurve>;
899
+ readonly levels: _angular_core.InputSignal<number>;
900
+ readonly maxValue: _angular_core.InputSignal<number | undefined>;
901
+ readonly strokeWidth: _angular_core.InputSignal<number>;
902
+ readonly fillOpacity: _angular_core.InputSignal<number>;
903
+ readonly showLabels: _angular_core.InputSignal<boolean>;
904
+ readonly showDots: _angular_core.InputSignal<boolean>;
905
+ readonly dotRadius: _angular_core.InputSignal<number>;
906
+ readonly grid: _angular_core.InputSignal<RadarGrid>;
907
+ readonly gridFilled: _angular_core.InputSignal<boolean>;
908
+ readonly showAxes: _angular_core.InputSignal<boolean>;
909
+ readonly linesOnly: _angular_core.InputSignal<boolean>;
910
+ protected readonly innerWidth: _angular_core.Signal<number>;
911
+ protected readonly innerHeight: _angular_core.Signal<number>;
912
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.RadarLayout>;
913
+ protected readonly viewBox: _angular_core.Signal<string>;
914
+ protected readonly innerTransform: _angular_core.Signal<string>;
915
+ protected readonly ariaSummary: _angular_core.Signal<string>;
916
+ protected gridFill(): string;
917
+ protected gridFillOpacity(levelIndex: number): number | null;
918
+ protected dotAriaLabel(seriesKey: string, p: {
919
+ axis: string;
920
+ value: number;
921
+ }): string;
922
+ protected setActive(event: PointerEvent | FocusEvent, seriesKey: string, index: number): void;
923
+ protected clearActive(): void;
924
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadarChart, never>;
925
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadarChart, "ui-radar-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "axisKey": { "alias": "axisKey"; "required": true; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "levels": { "alias": "levels"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "fillOpacity": { "alias": "fillOpacity"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "dotRadius": { "alias": "dotRadius"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "gridFilled": { "alias": "gridFilled"; "required": false; "isSignal": true; }; "showAxes": { "alias": "showAxes"; "required": false; "isSignal": true; }; "linesOnly": { "alias": "linesOnly"; "required": false; "isSignal": true; }; }, {}, never, ["*", "ui-chart-tooltip", "ui-chart-legend"], true, never>;
926
+ }
927
+
928
+ interface RadialLayoutInput {
929
+ readonly data: readonly ChartDatum[];
930
+ readonly nameKey: string;
931
+ readonly valueKey: string;
932
+ readonly innerWidth: number;
933
+ readonly innerHeight: number;
934
+ /** Optional explicit series-key list (same length as data). */
935
+ readonly seriesKeys?: readonly string[];
936
+ /** Gap between concentric tracks (px). */
937
+ readonly trackPadding: number;
938
+ /** Start / end angle (radians). */
939
+ readonly startAngle: number;
940
+ readonly endAngle: number;
941
+ readonly cornerRadius: number;
942
+ readonly maxValue?: number;
943
+ }
944
+ interface RadialBarRect {
945
+ readonly seriesKey: string;
946
+ readonly name: string;
947
+ readonly value: number;
948
+ readonly datumIndex: number;
949
+ readonly color: string;
950
+ readonly arcPath: string;
951
+ readonly backgroundPath: string;
952
+ readonly innerRadius: number;
953
+ readonly outerRadius: number;
954
+ readonly endAngle: number;
955
+ }
956
+ interface RadialLayout {
957
+ readonly centerX: number;
958
+ readonly centerY: number;
959
+ readonly outerRadius: number;
960
+ readonly bars: readonly RadialBarRect[];
961
+ readonly maxValue: number;
962
+ }
963
+ declare function computeRadialLayout(input: RadialLayoutInput): RadialLayout;
964
+
965
+ type RadialValueLabelFormatter = (value: number, name: string) => string;
966
+ interface RadialBarClickEvent {
967
+ readonly seriesKey: string;
968
+ readonly name: string;
969
+ readonly value: number;
970
+ readonly datumIndex: number;
971
+ readonly datum: ChartDatum;
972
+ }
973
+ declare class RadialChart {
974
+ private readonly root;
975
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
976
+ readonly nameKey: _angular_core.InputSignal<string>;
977
+ readonly valueKey: _angular_core.InputSignal<string>;
978
+ readonly seriesKeys: _angular_core.InputSignal<readonly string[] | undefined>;
979
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
980
+ readonly trackPadding: _angular_core.InputSignal<number>;
981
+ readonly cornerRadius: _angular_core.InputSignal<number>;
982
+ readonly startAngle: _angular_core.InputSignal<number>;
983
+ readonly endAngle: _angular_core.InputSignal<number>;
984
+ readonly maxValue: _angular_core.InputSignal<number | undefined>;
985
+ readonly showTrack: _angular_core.InputSignal<boolean>;
986
+ readonly showValueLabels: _angular_core.InputSignal<boolean>;
987
+ readonly valueLabelFormat: _angular_core.InputSignal<RadialValueLabelFormatter>;
988
+ readonly barClick: _angular_core.OutputEmitterRef<RadialBarClickEvent>;
989
+ protected readonly innerWidth: _angular_core.Signal<number>;
990
+ protected readonly innerHeight: _angular_core.Signal<number>;
991
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.RadialLayout>;
992
+ protected readonly viewBox: _angular_core.Signal<string>;
993
+ protected readonly innerTransform: _angular_core.Signal<string>;
994
+ protected readonly ariaSummary: _angular_core.Signal<string>;
995
+ protected barAriaLabel(b: RadialBarRect): string;
996
+ protected formatValueLabel(b: RadialBarRect): string;
997
+ protected barLabelX(b: RadialBarRect): number;
998
+ protected barLabelY(b: RadialBarRect): number;
999
+ protected barLabelAnchor(b: RadialBarRect): 'start' | 'end';
1000
+ protected emitClick(b: RadialBarRect): void;
1001
+ protected setActive(event: PointerEvent | FocusEvent, b: RadialBarRect): void;
1002
+ protected clearActive(): void;
1003
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadialChart, never>;
1004
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadialChart, "ui-radial-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "nameKey": { "alias": "nameKey"; "required": true; "isSignal": true; }; "valueKey": { "alias": "valueKey"; "required": true; "isSignal": true; }; "seriesKeys": { "alias": "seriesKeys"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "trackPadding": { "alias": "trackPadding"; "required": false; "isSignal": true; }; "cornerRadius": { "alias": "cornerRadius"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "endAngle": { "alias": "endAngle"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "showTrack": { "alias": "showTrack"; "required": false; "isSignal": true; }; "showValueLabels": { "alias": "showValueLabels"; "required": false; "isSignal": true; }; "valueLabelFormat": { "alias": "valueLabelFormat"; "required": false; "isSignal": true; }; }, { "barClick": "barClick"; }, never, ["ui-radial-center", "ui-chart-tooltip", "ui-chart-legend"], true, never>;
1005
+ }
1006
+
1007
+ interface ScatterLayoutInput {
1008
+ readonly data: readonly ChartDatum[];
1009
+ readonly xKey: string;
1010
+ readonly yKey: string;
1011
+ readonly sizeKey?: string;
1012
+ readonly seriesKey?: string;
1013
+ readonly seriesKeys: readonly string[];
1014
+ readonly innerWidth: number;
1015
+ readonly innerHeight: number;
1016
+ readonly minPointRadius: number;
1017
+ readonly maxPointRadius: number;
1018
+ readonly xDomain?: readonly [number, number];
1019
+ readonly yDomain?: readonly [number, number];
1020
+ }
1021
+ interface ScatterPoint {
1022
+ readonly seriesKey: string;
1023
+ readonly color: string;
1024
+ readonly x: number;
1025
+ readonly y: number;
1026
+ readonly radius: number;
1027
+ readonly datumIndex: number;
1028
+ readonly rawX: number;
1029
+ readonly rawY: number;
1030
+ readonly rawSize: number;
1031
+ }
1032
+ interface ScatterLayout {
1033
+ readonly points: readonly ScatterPoint[];
1034
+ readonly xScale: ScaleLinear<number, number>;
1035
+ readonly yScale: ScaleLinear<number, number>;
1036
+ readonly xDomain: NumericDomain;
1037
+ readonly yDomain: NumericDomain;
1038
+ }
1039
+ declare function resolveScatterDomains(input: Pick<ScatterLayoutInput, 'data' | 'xKey' | 'yKey' | 'xDomain' | 'yDomain'>): {
1040
+ xDomain: NumericDomain;
1041
+ yDomain: NumericDomain;
1042
+ };
1043
+ declare function computeScatterLayout(input: ScatterLayoutInput): ScatterLayout;
1044
+
1045
+ interface ScatterPointClickEvent {
1046
+ readonly seriesKey: string;
1047
+ readonly datumIndex: number;
1048
+ readonly x: number;
1049
+ readonly y: number;
1050
+ readonly datum: ChartDatum;
1051
+ }
1052
+ /**
1053
+ * Scatter chart — one dot per datum. Both axes are linear; color can
1054
+ * come from a fixed series key or per-row via `seriesKey` field. Point
1055
+ * radius optionally scales with `sizeKey`.
1056
+ */
1057
+ declare class ScatterChart {
1058
+ private readonly root;
1059
+ private readonly viewport;
1060
+ readonly data: _angular_core.InputSignal<readonly Readonly<Record<string, unknown>>[]>;
1061
+ readonly xKey: _angular_core.InputSignal<string>;
1062
+ readonly yKey: _angular_core.InputSignal<string>;
1063
+ /** Optional numeric field to drive point radius. */
1064
+ readonly sizeKey: _angular_core.InputSignal<string | undefined>;
1065
+ /** Optional field on each datum used as color key. */
1066
+ readonly seriesKey: _angular_core.InputSignal<string | undefined>;
1067
+ readonly margin: _angular_core.InputSignal<ChartMargin>;
1068
+ readonly minPointRadius: _angular_core.InputSignal<number>;
1069
+ readonly maxPointRadius: _angular_core.InputSignal<number>;
1070
+ readonly xDomain: _angular_core.InputSignal<readonly [number, number] | undefined>;
1071
+ readonly yDomain: _angular_core.InputSignal<readonly [number, number] | undefined>;
1072
+ readonly pointClick: _angular_core.OutputEmitterRef<ScatterPointClickEvent>;
1073
+ protected readonly innerWidth: _angular_core.Signal<number>;
1074
+ protected readonly innerHeight: _angular_core.Signal<number>;
1075
+ protected readonly resolvedDomains: _angular_core.Signal<{
1076
+ xDomain: _ojiepermana_angular_chart.NumericDomain;
1077
+ yDomain: _ojiepermana_angular_chart.NumericDomain;
1078
+ }>;
1079
+ protected readonly currentXDomain: _angular_core.Signal<_ojiepermana_angular_chart.NumericDomain>;
1080
+ protected readonly currentYDomain: _angular_core.Signal<_ojiepermana_angular_chart.NumericDomain>;
1081
+ protected readonly layout: _angular_core.Signal<_ojiepermana_angular_chart.ScatterLayout>;
1082
+ protected readonly viewBox: _angular_core.Signal<string>;
1083
+ protected readonly innerTransform: _angular_core.Signal<string>;
1084
+ protected readonly clipPathId: _angular_core.Signal<string>;
1085
+ protected readonly ariaSummary: _angular_core.Signal<string>;
1086
+ constructor();
1087
+ protected pointAriaLabel(p: ScatterPoint): string;
1088
+ protected emitClick(p: ScatterPoint): void;
1089
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScatterChart, never>;
1090
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScatterChart, "ui-scatter-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "xKey": { "alias": "xKey"; "required": true; "isSignal": true; }; "yKey": { "alias": "yKey"; "required": true; "isSignal": true; }; "sizeKey": { "alias": "sizeKey"; "required": false; "isSignal": true; }; "seriesKey": { "alias": "seriesKey"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "minPointRadius": { "alias": "minPointRadius"; "required": false; "isSignal": true; }; "maxPointRadius": { "alias": "maxPointRadius"; "required": false; "isSignal": true; }; "xDomain": { "alias": "xDomain"; "required": false; "isSignal": true; }; "yDomain": { "alias": "yDomain"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, never, ["svg:g[ui-chart-brush]", "ui-chart-legend", "ui-chart-zoom-controls"], true, never>;
1091
+ }
1092
+
1093
+ export { AreaChart, BarChart, CHART_DATA_ATTRIBUTE, CHART_THEMES, CartesianContext, ChartAxisX, ChartAxisY, ChartBrush, ChartContainer, ChartContext, ChartCrosshair, ChartGrid, ChartLegend, ChartPointerTracker, ChartStyle, ChartTooltip, ChartZoomControls, LineChart, PieCenter, PieChart, RadarChart, RadialCenter, RadialChart, ScatterChart, bandTicks, buildCartesianScales, buildChartCss, cloneLinear, computeAreaLayout, computeBarLayout, computeLineLayout, computePieLayout, computeRadarLayout, computeRadialLayout, computeScatterLayout, effectiveIndexRange, indexRangeSize, linearTicks, normalizeIndexRange, normalizeNumericDomain, panIndexRange, panNumericDomain, pointToBandAdapter, provideCartesianFromLineLayout, resolveScatterDomains, seriesColorVar, sliceByIndexRange, xScale, yScale, zoomIndexRange, zoomNumericDomain };
1094
+ export type { AreaLayoutInput, AreaLayoutResult, AreaPointClickEvent, BarClickEvent, BarLayoutInput, BarLayoutResult, BarRect, BarVariant, CartesianBase, CategoryScale, ChartActivePoint, ChartConfig, ChartDatum, ChartDimensions, ChartIndexRange, ChartMargin, ChartOrientation, ChartSeriesConfig, ChartThemeKey, ChartTick, ChartTooltipIndicator, ChartTooltipLabelFormatter, ChartTooltipPayload, ChartTooltipRow, ChartTooltipValueFormatter, LineCurve, LineLayoutResult, LinePoint, LinePointClickEvent, LineSeriesPath, NumericDomain, PieLayout, PieLayoutInput, PieSliceClickEvent, PieSliceRect, RadarAxisInfo, RadarCurve, RadarGrid, RadarLayout, RadarLayoutInput, RadarLevel, RadarSeries, RadialBarClickEvent, RadialBarRect, RadialLayout, RadialLayoutInput, RadialValueLabelFormatter, ScatterLayout, ScatterLayoutInput, ScatterPoint, ScatterPointClickEvent, ValueScale };