@opendata-ai/openchart-vue 2.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.
package/README.md ADDED
@@ -0,0 +1,98 @@
1
+ # @opendata-ai/openchart-vue
2
+
3
+ Vue 3 components for OpenChart. Renders chart specs as SVG and table specs as DOM, with Vue reactivity and lifecycle management.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @opendata-ai/openchart-vue @opendata-ai/openchart-core
9
+ ```
10
+
11
+ ## Quick start
12
+
13
+ ```vue
14
+ <script setup lang="ts">
15
+ import { Chart } from '@opendata-ai/openchart-vue';
16
+ import { lineChart } from '@opendata-ai/openchart-core';
17
+
18
+ const data = [
19
+ { date: '2024-01', value: 100 },
20
+ { date: '2024-02', value: 150 },
21
+ { date: '2024-03', value: 130 },
22
+ ];
23
+
24
+ const spec = lineChart(data, 'date', 'value');
25
+ </script>
26
+
27
+ <template>
28
+ <Chart :spec="spec" />
29
+ </template>
30
+ ```
31
+
32
+ See the [core README](../core/README.md) for all available spec builders.
33
+
34
+ ## Components
35
+
36
+ | Component | Purpose |
37
+ |-----------|---------|
38
+ | `Chart` | Renders any chart spec (line, bar, column, pie, scatter, etc.) |
39
+ | `DataTable` | Renders table specs with sorting, search, and pagination |
40
+ | `Graph` | Renders network graph specs with force-directed layout |
41
+ | `Visualization` | Routes to the correct component based on spec type |
42
+ | `VizThemeProvider` | Provides theme and dark mode context to child components |
43
+
44
+ ## Visualization
45
+
46
+ When you're rendering arbitrary `VizSpec` values and don't know the type ahead of time, `Visualization` inspects the spec and routes to the correct component.
47
+
48
+ ```vue
49
+ <script setup lang="ts">
50
+ import { Visualization } from '@opendata-ai/openchart-vue';
51
+ import type { VizSpec } from '@opendata-ai/openchart-core';
52
+
53
+ const props = defineProps<{ spec: VizSpec }>();
54
+ </script>
55
+
56
+ <template>
57
+ <!-- Renders Chart, DataTable, or Graph based on spec.type -->
58
+ <Visualization :spec="props.spec" />
59
+ </template>
60
+ ```
61
+
62
+ If you need event handlers or component-specific props, use the specific component directly instead.
63
+
64
+ ## Dark mode and theming
65
+
66
+ Wrap components with `VizThemeProvider` to set theme and dark mode for all child visualizations. It uses Vue's `provide`/`inject` under the hood, so all `Chart`, `DataTable`, and `Graph` components inside the provider inherit its values.
67
+
68
+ ```vue
69
+ <script setup lang="ts">
70
+ import { VizThemeProvider, Chart } from '@opendata-ai/openchart-vue';
71
+ </script>
72
+
73
+ <template>
74
+ <VizThemeProvider :theme="myTheme" dark-mode="auto">
75
+ <Chart :spec="spec1" />
76
+ <Chart :spec="spec2" />
77
+ </VizThemeProvider>
78
+ </template>
79
+ ```
80
+
81
+ `darkMode` accepts `"auto"` (follows system preference), `"force"` (always dark), or `"off"` (always light).
82
+
83
+ For one-off overrides, pass `dark-mode` or `theme` directly on an individual component. Component-level props take priority over the provider.
84
+
85
+ ## Composables
86
+
87
+ For lower-level control or custom rendering:
88
+
89
+ - `useChart(spec, options?)` - Returns `{ containerRef, chart, layout }`. Bind `containerRef` via `ref`
90
+ - `useGraph()` - Returns `{ componentRef, search, zoomToFit, ... }`. Bind to `<Graph>` via `ref`
91
+ - `useTable(spec, options?)` - Returns `{ containerRef, table, layout }`. Bind `containerRef` via `ref`
92
+ - `useTableState(options?)` - Manages table sorting, pagination, and search state
93
+ - `useDarkMode(preference?)` - Resolves dark mode preference against system settings
94
+
95
+ Context composables for reading provider values directly:
96
+
97
+ - `useVizTheme()` - Returns the theme from the nearest `VizThemeProvider`
98
+ - `useVizDarkMode()` - Returns the dark mode preference from the nearest provider
@@ -0,0 +1,521 @@
1
+ export { ChartLayout, ChartSpec, CompileOptions, TableLayout, TableSpec, VizSpec } from '@opendata-ai/openchart-engine';
2
+ import * as vue from 'vue';
3
+ import { PropType, CSSProperties, Ref, ShallowRef, InjectionKey, ComputedRef } from 'vue';
4
+ import { ChartSpec, GraphSpec, ThemeConfig, DarkMode, MarkEvent, Annotation, TextAnnotation, AnnotationOffset, ElementEdit, ChartLayout, TableSpec, SortState, VizSpec } from '@opendata-ai/openchart-core';
5
+ import { MountOptions, ChartInstance, GraphInstance, TableInstance, TableState, TableMountOptions } from '@opendata-ai/openchart-vanilla';
6
+
7
+ interface ChartProps {
8
+ spec: ChartSpec | GraphSpec;
9
+ theme?: ThemeConfig;
10
+ darkMode?: DarkMode;
11
+ class?: string;
12
+ style?: string | CSSProperties;
13
+ }
14
+ declare const Chart: vue.DefineComponent<vue.ExtractPropTypes<{
15
+ spec: {
16
+ type: PropType<ChartSpec | GraphSpec>;
17
+ required: true;
18
+ };
19
+ theme: {
20
+ type: PropType<ThemeConfig>;
21
+ default: undefined;
22
+ };
23
+ darkMode: {
24
+ type: PropType<DarkMode>;
25
+ default: undefined;
26
+ };
27
+ class: {
28
+ type: StringConstructor;
29
+ default: undefined;
30
+ };
31
+ style: {
32
+ type: PropType<string | CSSProperties>;
33
+ default: undefined;
34
+ };
35
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
36
+ [key: string]: any;
37
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
38
+ 'mark-click': (_event: MarkEvent) => true;
39
+ 'mark-hover': (_event: MarkEvent) => true;
40
+ 'mark-leave': () => true;
41
+ 'legend-toggle': (_series: string, _visible: boolean) => true;
42
+ 'annotation-click': (_annotation: Annotation, _event: MouseEvent) => true;
43
+ 'annotation-edit': (_annotation: TextAnnotation, _updatedOffset: AnnotationOffset) => true;
44
+ edit: (_edit: ElementEdit) => true;
45
+ 'data-point-click': (_data: Record<string, unknown>) => true;
46
+ }, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
47
+ spec: {
48
+ type: PropType<ChartSpec | GraphSpec>;
49
+ required: true;
50
+ };
51
+ theme: {
52
+ type: PropType<ThemeConfig>;
53
+ default: undefined;
54
+ };
55
+ darkMode: {
56
+ type: PropType<DarkMode>;
57
+ default: undefined;
58
+ };
59
+ class: {
60
+ type: StringConstructor;
61
+ default: undefined;
62
+ };
63
+ style: {
64
+ type: PropType<string | CSSProperties>;
65
+ default: undefined;
66
+ };
67
+ }>> & Readonly<{
68
+ "onMark-click"?: ((_event: MarkEvent) => any) | undefined;
69
+ "onMark-hover"?: ((_event: MarkEvent) => any) | undefined;
70
+ "onMark-leave"?: (() => any) | undefined;
71
+ "onLegend-toggle"?: ((_series: string, _visible: boolean) => any) | undefined;
72
+ "onAnnotation-click"?: ((_annotation: Annotation, _event: MouseEvent) => any) | undefined;
73
+ "onAnnotation-edit"?: ((_annotation: TextAnnotation, _updatedOffset: AnnotationOffset) => any) | undefined;
74
+ onEdit?: ((_edit: ElementEdit) => any) | undefined;
75
+ "onData-point-click"?: ((_data: Record<string, unknown>) => any) | undefined;
76
+ }>, {
77
+ theme: ThemeConfig;
78
+ darkMode: DarkMode;
79
+ class: string;
80
+ style: string | CSSProperties;
81
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
82
+
83
+ /**
84
+ * useChart: composable for manual chart lifecycle control.
85
+ *
86
+ * Provides a template ref to attach to a container div. The chart
87
+ * mounts automatically and updates when the spec changes.
88
+ */
89
+
90
+ interface UseChartOptions {
91
+ /** Theme overrides. */
92
+ theme?: ThemeConfig;
93
+ /** Dark mode setting. */
94
+ darkMode?: DarkMode;
95
+ /** Data point click handler. */
96
+ onDataPointClick?: MountOptions['onDataPointClick'];
97
+ /** Enable responsive resizing. Defaults to true. */
98
+ responsive?: boolean;
99
+ }
100
+ interface UseChartReturn {
101
+ /** Template ref to attach to the container div. */
102
+ containerRef: Ref<HTMLDivElement | null>;
103
+ /** The chart instance (null until mounted). */
104
+ chart: ShallowRef<ChartInstance | null>;
105
+ /** The current compiled layout (null until mounted). */
106
+ layout: ShallowRef<ChartLayout | null>;
107
+ }
108
+ /**
109
+ * Composable for manual chart lifecycle control.
110
+ *
111
+ * Attach the returned containerRef to a container div via `ref="containerRef"`.
112
+ * The chart mounts automatically and updates when the spec changes.
113
+ */
114
+ declare function useChart(spec: Ref<ChartSpec | GraphSpec>, options?: UseChartOptions): UseChartReturn;
115
+
116
+ /**
117
+ * useDarkMode: composable that resolves a DarkMode preference to a boolean.
118
+ *
119
+ * - "force" -> true
120
+ * - "off" -> false
121
+ * - "auto" -> matches system preference (reactive to changes)
122
+ */
123
+
124
+ /**
125
+ * Resolve a DarkMode preference to a reactive boolean.
126
+ *
127
+ * For "auto" mode, watches the system `prefers-color-scheme` media query
128
+ * and updates reactively when the user changes their OS theme.
129
+ */
130
+ declare function useDarkMode(mode: Ref<DarkMode | undefined>): Ref<boolean>;
131
+
132
+ /**
133
+ * useGraph: composable for imperative graph control.
134
+ *
135
+ * Provides a template ref to pass to <Graph /> and exposes graph methods
136
+ * (search, zoom, select) for programmatic control of the graph instance.
137
+ */
138
+
139
+ /** Handle exposed by Graph component via expose(). */
140
+ interface GraphHandle {
141
+ search: (query: string) => void;
142
+ clearSearch: () => void;
143
+ zoomToFit: () => void;
144
+ zoomToNode: (nodeId: string) => void;
145
+ selectNode: (nodeId: string) => void;
146
+ getSelectedNodes: () => string[];
147
+ /** The underlying GraphInstance from the vanilla adapter. */
148
+ instance: GraphInstance | null;
149
+ }
150
+ interface UseGraphReturn {
151
+ /** Template ref to pass to <Graph ref={graphRef} />. */
152
+ graphRef: Ref<GraphHandle | null>;
153
+ /** Search for nodes matching a query string. */
154
+ search: (query: string) => void;
155
+ /** Clear the current search. */
156
+ clearSearch: () => void;
157
+ /** Zoom to fit all nodes in view. */
158
+ zoomToFit: () => void;
159
+ /** Zoom and center on a specific node. */
160
+ zoomToNode: (nodeId: string) => void;
161
+ /** Select a node by id. */
162
+ selectNode: (nodeId: string) => void;
163
+ /** Get the currently selected node ids. */
164
+ getSelectedNodes: () => string[];
165
+ }
166
+ /**
167
+ * Composable for imperative graph control.
168
+ *
169
+ * Usage:
170
+ * ```vue
171
+ * <script setup>
172
+ * const { graphRef, search, zoomToFit } = useGraph();
173
+ * </script>
174
+ * <template>
175
+ * <Graph ref="graphRef" :spec="spec" />
176
+ * </template>
177
+ * ```
178
+ */
179
+ declare function useGraph(): UseGraphReturn;
180
+
181
+ /**
182
+ * useTable: composable for manual table lifecycle control.
183
+ *
184
+ * Attaches to a container ref, mounts a vanilla table instance,
185
+ * and exposes the instance and current state.
186
+ */
187
+
188
+ interface UseTableReturn {
189
+ /** Template ref to attach to the container div. */
190
+ containerRef: Ref<HTMLDivElement | null>;
191
+ /** The table instance (null until mounted). */
192
+ table: ShallowRef<TableInstance | null>;
193
+ /** The current table state (sort, search, page). */
194
+ state: Ref<TableState>;
195
+ }
196
+ /**
197
+ * Composable for manual table lifecycle control.
198
+ *
199
+ * Attach the returned containerRef to a container div via `ref="containerRef"`.
200
+ * The table mounts automatically and updates when the spec changes.
201
+ */
202
+ declare function useTable(spec: Ref<TableSpec>, options?: TableMountOptions): UseTableReturn;
203
+
204
+ /**
205
+ * useTableState: managed state composable for controlled table usage.
206
+ *
207
+ * Provides individual sort/search/page state with setters and a
208
+ * resetState function to return to initial values.
209
+ */
210
+
211
+ interface UseTableStateReturn {
212
+ sort: Ref<SortState | null>;
213
+ setSort: (sort: SortState | null) => void;
214
+ search: Ref<string>;
215
+ setSearch: (query: string) => void;
216
+ page: Ref<number>;
217
+ setPage: (page: number) => void;
218
+ resetState: () => void;
219
+ }
220
+ interface UseTableStateOptions {
221
+ sort?: SortState | null;
222
+ search?: string;
223
+ page?: number;
224
+ }
225
+ /**
226
+ * Composable for managing table state (sort, search, page).
227
+ *
228
+ * Use with the DataTable component's controlled props:
229
+ * ```vue
230
+ * <script setup>
231
+ * const { sort, search, page, setSort, setSearch, setPage } = useTableState();
232
+ * </script>
233
+ * <template>
234
+ * <DataTable
235
+ * :spec="spec"
236
+ * :sort="sort"
237
+ * :search="search"
238
+ * :page="page"
239
+ * @update:sort="setSort"
240
+ * @update:search="setSearch"
241
+ * @update:page="setPage"
242
+ * />
243
+ * </template>
244
+ * ```
245
+ */
246
+ declare function useTableState(initialState?: UseTableStateOptions): UseTableStateReturn;
247
+
248
+ /**
249
+ * Theme injection context for Vue.
250
+ *
251
+ * Provides typed injection keys and composables for accessing theme
252
+ * and dark mode from any descendant component within a VizThemeProvider.
253
+ */
254
+
255
+ /** Injection key for the theme config ref. */
256
+ declare const VizThemeKey: InjectionKey<Ref<ThemeConfig | undefined>>;
257
+ /** Injection key for the dark mode ref. */
258
+ declare const VizDarkModeKey: InjectionKey<Ref<DarkMode | undefined>>;
259
+ /**
260
+ * Read the current theme from the nearest VizThemeProvider.
261
+ * Returns a computed ref that stays reactive to provider changes.
262
+ */
263
+ declare function useVizTheme(): ComputedRef<ThemeConfig | undefined>;
264
+ /**
265
+ * Read the current dark mode preference from the nearest VizThemeProvider.
266
+ * Returns a computed ref that stays reactive to provider changes.
267
+ */
268
+ declare function useVizDarkMode(): ComputedRef<DarkMode | undefined>;
269
+
270
+ interface DataTableProps {
271
+ spec: TableSpec;
272
+ theme?: ThemeConfig;
273
+ darkMode?: DarkMode;
274
+ class?: string;
275
+ style?: string | CSSProperties;
276
+ sort?: SortState | null;
277
+ search?: string;
278
+ page?: number;
279
+ }
280
+ declare const DataTable: vue.DefineComponent<vue.ExtractPropTypes<{
281
+ spec: {
282
+ type: PropType<TableSpec>;
283
+ required: true;
284
+ };
285
+ theme: {
286
+ type: PropType<ThemeConfig>;
287
+ default: undefined;
288
+ };
289
+ darkMode: {
290
+ type: PropType<DarkMode>;
291
+ default: undefined;
292
+ };
293
+ class: {
294
+ type: StringConstructor;
295
+ default: undefined;
296
+ };
297
+ style: {
298
+ type: PropType<string | CSSProperties>;
299
+ default: undefined;
300
+ };
301
+ sort: {
302
+ type: PropType<SortState | null>;
303
+ default: undefined;
304
+ };
305
+ search: {
306
+ type: StringConstructor;
307
+ default: undefined;
308
+ };
309
+ page: {
310
+ type: NumberConstructor;
311
+ default: undefined;
312
+ };
313
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
314
+ [key: string]: any;
315
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
316
+ 'row-click': (_row: Record<string, unknown>) => true;
317
+ 'update:sort': (_sort: SortState | null) => true;
318
+ 'update:search': (_query: string) => true;
319
+ 'update:page': (_page: number) => true;
320
+ }, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
321
+ spec: {
322
+ type: PropType<TableSpec>;
323
+ required: true;
324
+ };
325
+ theme: {
326
+ type: PropType<ThemeConfig>;
327
+ default: undefined;
328
+ };
329
+ darkMode: {
330
+ type: PropType<DarkMode>;
331
+ default: undefined;
332
+ };
333
+ class: {
334
+ type: StringConstructor;
335
+ default: undefined;
336
+ };
337
+ style: {
338
+ type: PropType<string | CSSProperties>;
339
+ default: undefined;
340
+ };
341
+ sort: {
342
+ type: PropType<SortState | null>;
343
+ default: undefined;
344
+ };
345
+ search: {
346
+ type: StringConstructor;
347
+ default: undefined;
348
+ };
349
+ page: {
350
+ type: NumberConstructor;
351
+ default: undefined;
352
+ };
353
+ }>> & Readonly<{
354
+ "onRow-click"?: ((_row: Record<string, unknown>) => any) | undefined;
355
+ "onUpdate:sort"?: ((_sort: SortState | null) => any) | undefined;
356
+ "onUpdate:search"?: ((_query: string) => any) | undefined;
357
+ "onUpdate:page"?: ((_page: number) => any) | undefined;
358
+ }>, {
359
+ theme: ThemeConfig;
360
+ darkMode: DarkMode;
361
+ class: string;
362
+ style: string | CSSProperties;
363
+ sort: SortState | null;
364
+ search: string;
365
+ page: number;
366
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
367
+
368
+ interface GraphProps {
369
+ spec: GraphSpec;
370
+ theme?: ThemeConfig;
371
+ darkMode?: DarkMode;
372
+ class?: string;
373
+ style?: string | CSSProperties;
374
+ }
375
+ declare const Graph: vue.DefineComponent<vue.ExtractPropTypes<{
376
+ spec: {
377
+ type: PropType<GraphSpec>;
378
+ required: true;
379
+ };
380
+ theme: {
381
+ type: PropType<ThemeConfig>;
382
+ default: undefined;
383
+ };
384
+ darkMode: {
385
+ type: PropType<DarkMode>;
386
+ default: undefined;
387
+ };
388
+ class: {
389
+ type: StringConstructor;
390
+ default: undefined;
391
+ };
392
+ style: {
393
+ type: PropType<string | CSSProperties>;
394
+ default: undefined;
395
+ };
396
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
397
+ [key: string]: any;
398
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
399
+ 'node-click': (_node: Record<string, unknown>) => true;
400
+ 'node-double-click': (_node: Record<string, unknown>) => true;
401
+ 'selection-change': (_nodeIds: string[]) => true;
402
+ }, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
403
+ spec: {
404
+ type: PropType<GraphSpec>;
405
+ required: true;
406
+ };
407
+ theme: {
408
+ type: PropType<ThemeConfig>;
409
+ default: undefined;
410
+ };
411
+ darkMode: {
412
+ type: PropType<DarkMode>;
413
+ default: undefined;
414
+ };
415
+ class: {
416
+ type: StringConstructor;
417
+ default: undefined;
418
+ };
419
+ style: {
420
+ type: PropType<string | CSSProperties>;
421
+ default: undefined;
422
+ };
423
+ }>> & Readonly<{
424
+ "onNode-click"?: ((_node: Record<string, unknown>) => any) | undefined;
425
+ "onNode-double-click"?: ((_node: Record<string, unknown>) => any) | undefined;
426
+ "onSelection-change"?: ((_nodeIds: string[]) => any) | undefined;
427
+ }>, {
428
+ theme: ThemeConfig;
429
+ darkMode: DarkMode;
430
+ class: string;
431
+ style: string | CSSProperties;
432
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
433
+
434
+ interface VizThemeProviderProps {
435
+ theme: ThemeConfig | undefined;
436
+ darkMode?: DarkMode;
437
+ }
438
+ declare const VizThemeProvider: vue.DefineComponent<vue.ExtractPropTypes<{
439
+ theme: {
440
+ type: PropType<ThemeConfig | undefined>;
441
+ default: undefined;
442
+ };
443
+ darkMode: {
444
+ type: PropType<DarkMode>;
445
+ default: undefined;
446
+ };
447
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
448
+ [key: string]: any;
449
+ }>[] | undefined, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
450
+ theme: {
451
+ type: PropType<ThemeConfig | undefined>;
452
+ default: undefined;
453
+ };
454
+ darkMode: {
455
+ type: PropType<DarkMode>;
456
+ default: undefined;
457
+ };
458
+ }>> & Readonly<{}>, {
459
+ theme: ThemeConfig | undefined;
460
+ darkMode: DarkMode;
461
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
462
+
463
+ interface VisualizationProps {
464
+ spec: VizSpec;
465
+ theme?: ThemeConfig;
466
+ darkMode?: DarkMode;
467
+ class?: string;
468
+ style?: string | CSSProperties;
469
+ }
470
+ declare const Visualization: vue.DefineComponent<vue.ExtractPropTypes<{
471
+ spec: {
472
+ type: PropType<VizSpec>;
473
+ required: true;
474
+ };
475
+ theme: {
476
+ type: PropType<ThemeConfig>;
477
+ default: undefined;
478
+ };
479
+ darkMode: {
480
+ type: PropType<DarkMode>;
481
+ default: undefined;
482
+ };
483
+ class: {
484
+ type: StringConstructor;
485
+ default: undefined;
486
+ };
487
+ style: {
488
+ type: PropType<string | CSSProperties>;
489
+ default: undefined;
490
+ };
491
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
492
+ [key: string]: any;
493
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
494
+ spec: {
495
+ type: PropType<VizSpec>;
496
+ required: true;
497
+ };
498
+ theme: {
499
+ type: PropType<ThemeConfig>;
500
+ default: undefined;
501
+ };
502
+ darkMode: {
503
+ type: PropType<DarkMode>;
504
+ default: undefined;
505
+ };
506
+ class: {
507
+ type: StringConstructor;
508
+ default: undefined;
509
+ };
510
+ style: {
511
+ type: PropType<string | CSSProperties>;
512
+ default: undefined;
513
+ };
514
+ }>> & Readonly<{}>, {
515
+ theme: ThemeConfig;
516
+ darkMode: DarkMode;
517
+ class: string;
518
+ style: string | CSSProperties;
519
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
520
+
521
+ export { Chart, type ChartProps, DataTable, type DataTableProps, Graph, type GraphHandle, type GraphProps, type UseChartOptions, type UseChartReturn, type UseGraphReturn, type UseTableReturn, type UseTableStateOptions, type UseTableStateReturn, Visualization, type VisualizationProps, VizDarkModeKey, VizThemeKey, VizThemeProvider, type VizThemeProviderProps, useChart, useDarkMode, useGraph, useTable, useTableState, useVizDarkMode, useVizTheme };