react-semaphor 0.0.37719 → 0.1.1

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.
@@ -1,22 +1,60 @@
1
+ import { ColumnSizingState } from '@tanstack/react-table';
1
2
  import { FontSpec } from 'chart.js';
2
3
  import { JSX as JSX_2 } from 'react/jsx-runtime';
3
4
 
4
5
  export declare type AggregateCalc = 'AVG' | 'MIN' | 'MAX' | 'SUM' | 'COUNT' | 'COUNT_DISTINCT';
5
6
 
7
+ declare type AggregateFunction = 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'MEDIAN' | 'DISTINCT';
8
+
9
+ declare type AIContext = {
10
+ selectedEntities: SelectedEntities;
11
+ fileAttachments?: FileAttachment[];
12
+ };
13
+
6
14
  export declare type AIScopeTable = {
7
15
  connectionId: string;
8
16
  connectionType: string;
9
- databaseName?: string;
10
- schemaName?: string;
11
- tableName?: string;
12
- datamodelName?: string;
17
+ databaseName: string;
18
+ schemaName: string;
19
+ tableName: string;
20
+ datamodelId: string;
21
+ datamodelName: string;
13
22
  };
14
23
 
24
+ export declare type AssistantId = 'dashboard-assistant' | 'editor-assistant';
25
+
15
26
  export declare type AuthToken = {
16
27
  accessToken: string;
17
28
  refreshToken?: string;
18
29
  };
19
30
 
31
+ export declare type AxisConfig = {
32
+ enabled?: boolean;
33
+ name?: {
34
+ enabled: boolean;
35
+ text?: string;
36
+ };
37
+ position?: 'auto' | 'top' | 'bottom' | 'left' | 'right';
38
+ labels?: {
39
+ enabled: boolean;
40
+ rotation?: 'auto' | 0 | 45 | 90 | -45 | -90;
41
+ };
42
+ formatOptions?: TFormatOptions;
43
+ scale?: {
44
+ min?: number | 'auto';
45
+ max?: number | 'auto';
46
+ stepSize?: number | 'auto';
47
+ };
48
+ };
49
+
50
+ declare interface BaseColumn {
51
+ id: string;
52
+ name: string;
53
+ label?: string;
54
+ type: ColumnType;
55
+ table?: string;
56
+ }
57
+
20
58
  declare type BaseCustomCard = {
21
59
  cardId: string;
22
60
  replaceDefault?: boolean;
@@ -37,6 +75,59 @@ export declare type CacheConfig = {
37
75
  status: 'on' | 'on-refresh' | 'off';
38
76
  };
39
77
 
78
+ declare interface CardConfig {
79
+ groupByColumns?: GroupByField[];
80
+ metricColumns?: MetricField[];
81
+ pivotByColumns?: PivotByField[];
82
+ sortByColumns?: SortByField[];
83
+ filters?: FilterGroup;
84
+ joinPlan?: JoinPlan;
85
+ rowLimit?: number;
86
+ /**
87
+ * One or more hierarchies that define drillable paths through dimensions.
88
+ */
89
+ drillHierarchies?: DrillHierarchy[];
90
+ /**
91
+ * Optional list of dimensions allowed for dynamic drill-down across this card.
92
+ * Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
93
+ */
94
+ allowedDrillTargets?: Field[];
95
+ /**
96
+ * NOT UOptional preload settings for inline drill previews
97
+ */
98
+ inlineDrillPreview?: {
99
+ enabled: boolean;
100
+ limit: number;
101
+ mode: 'lazy' | 'preloaded';
102
+ };
103
+ /**
104
+ * Configuration for on-click dashboard filters triggered by this card.
105
+ */
106
+ clickFilterInteractions?: ClickFilterInteraction[];
107
+ comparisonType?: 'none' | 'previous_period' | 'same_period_last_year' | 'target';
108
+ targetValue?: number;
109
+ showTrendline?: boolean;
110
+ trendlineWindow?: number;
111
+ trendlineGranularity?: 'day' | 'week' | 'month';
112
+ rowAggregates?: Array<{
113
+ label?: string;
114
+ function: AggregateFunction;
115
+ groupLevel: string | 'ALL';
116
+ }>;
117
+ columnAggregates?: Array<{
118
+ label?: string;
119
+ function: AggregateFunction;
120
+ pivotLevel: string | 'ALL';
121
+ }>;
122
+ }
123
+
124
+ declare interface CardInteractionConfig {
125
+ allowedDrillTargets?: Field[];
126
+ drillHierarchies?: DrillHierarchy[];
127
+ drillInteractions?: DrillInteraction[];
128
+ clickFilterInteractions?: ClickFilterInteraction[];
129
+ }
130
+
40
131
  declare type CardWithContent = BaseCustomCard & {
41
132
  content: React.FC<{
42
133
  card: TCard;
@@ -55,25 +146,130 @@ declare type CardWithFooter = BaseCustomCard & {
55
146
  }>;
56
147
  };
57
148
 
149
+ declare interface ClickFilterInteraction {
150
+ mode: 'clickFilter';
151
+ /**
152
+ * Fields from the chart element that should be used as filters.
153
+ * e.g., [region, ship_mode] from a stacked bar chart
154
+ */
155
+ filterFields: Field[];
156
+ /**
157
+ * Should this card visually highlight when clicked?
158
+ */
159
+ highlightSelf?: boolean;
160
+ /**
161
+ * Cards this filter applies to (inclusive).
162
+ * If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
163
+ */
164
+ applyToCardIds?: string[];
165
+ /**
166
+ * Cards to explicitly exclude from receiving this filter.
167
+ * Takes effect only if `applyToCardIds` is undefined (acts as override).
168
+ */
169
+ excludeCardIds?: string[];
170
+ /**
171
+ * Optional UI label or tooltip.
172
+ */
173
+ label?: string;
174
+ }
175
+
176
+ export declare type ColorConfig = {
177
+ segments: Record<string, string>;
178
+ };
179
+
58
180
  export declare type ColorRange = {
59
181
  start: number;
60
182
  end: number;
61
183
  color: string;
62
184
  };
63
185
 
186
+ declare interface ColorRange_2 {
187
+ min: number;
188
+ max: number;
189
+ color: string;
190
+ applyTo: 'cell' | 'row';
191
+ }
192
+
193
+ declare interface ColumnSettings {
194
+ type: 'none' | 'text' | 'number' | 'date' | 'badge' | 'link' | 'progress';
195
+ textAlign: 'left' | 'center' | 'right';
196
+ width: number;
197
+ minWidth?: number;
198
+ maxWidth?: number;
199
+ textOverflow?: 'ellipsis' | 'wrap' | 'clip';
200
+ textWrap: 'wrap' | 'nowrap';
201
+ numberFormat: {
202
+ style: 'decimal' | 'currency' | 'percent';
203
+ currency: string;
204
+ locale: string;
205
+ minimumFractionDigits: number;
206
+ maximumFractionDigits: number;
207
+ showDataBar: boolean;
208
+ dataBarColor: string;
209
+ dataBarMinValue?: number;
210
+ dataBarMaxValue?: number;
211
+ };
212
+ dateFormat: {
213
+ format: string;
214
+ useCustomFormat: boolean;
215
+ customFormat: string;
216
+ useRelativeTime: boolean;
217
+ timezone?: string;
218
+ sourceTimezone?: string;
219
+ };
220
+ colorRanges: ColorRange_2[];
221
+ }
222
+
223
+ declare type ColumnSettingsMap = Record<string, ColumnSettings>;
224
+
225
+ declare type ColumnType = 'string' | 'number' | 'date';
226
+
64
227
  export declare type ConnectionPolicy = {
65
228
  connectionId?: string;
66
229
  name: string;
67
230
  params: Params;
68
231
  };
69
232
 
233
+ declare type ConnectionType = 'GoogleSheets' | 'MySQL' | 'MSSQL' | 'PostgreSQL' | 'BigQuery' | 'Redshift' | 'Snowflake' | 'S3' | 'clickhouse' | 'S3Tables' | 'API' | 'none';
234
+
70
235
  export declare type CustomCard = CardWithContent | CardWithFooter;
71
236
 
237
+ export declare type DashboardEventHandlers = {
238
+ onExportData?: (payload: ExportDataPayload) => void;
239
+ };
240
+
72
241
  declare type DashboardPlusProps = {
73
242
  showControls?: boolean;
74
243
  showFooter?: boolean;
75
244
  } & DashboardProps;
76
245
 
246
+ /**
247
+ * Unified dashboard preferences for both card display and UI modes
248
+ */
249
+ export declare type DashboardPreferences = {
250
+ /**
251
+ * Visual display preferences for cards
252
+ * Controls how card content is rendered (headers, footers, etc.)
253
+ */
254
+ cardDisplay?: VisualDisplayPreferences;
255
+ /**
256
+ * UI modes for developer and debug features
257
+ * Controls what developer tools and debug panels are available
258
+ */
259
+ uiMode?: {
260
+ /**
261
+ * Enable developer mode
262
+ * Shows additional controls and debug information
263
+ */
264
+ developer?: boolean;
265
+ /**
266
+ * Enable console mode
267
+ * Shows console panel for debugging
268
+ */
269
+ console?: boolean;
270
+ };
271
+ };
272
+
77
273
  export declare type DashboardProps = {
78
274
  id?: string;
79
275
  /**
@@ -83,10 +279,7 @@ export declare type DashboardProps = {
83
279
  /**
84
280
  * Default filter values for the dashboard. The dashboard will be filtered by these values when the user loads the dashboard.
85
281
  */
86
- defaultFilterValues?: {
87
- filterId: string;
88
- values: string[] | number[];
89
- }[] | TFilterValue[];
282
+ defaultFilterValues?: TFilterValue[];
90
283
  customStyle?: TStyle;
91
284
  currentTheme?: Theme;
92
285
  version?: string;
@@ -98,6 +291,7 @@ export declare type DashboardProps = {
98
291
  onFilterValuesChange?: (filterValues: TFilterValue[]) => void;
99
292
  LoadingComponent?: (props: LoadingProps) => React.ReactNode;
100
293
  ErrorComponent?: (props: ErrorProps) => React.ReactNode;
294
+ eventHandlers?: DashboardEventHandlers;
101
295
  /**
102
296
  * Placeholders for the dashboard.
103
297
  */
@@ -106,20 +300,201 @@ export declare type DashboardProps = {
106
300
  * The id of the sheet to be selected when the dashboard is loaded.
107
301
  */
108
302
  selectedSheetId?: string;
303
+ /**
304
+ * Unified preferences for dashboard configuration
305
+ * Includes both card display preferences and UI mode settings
306
+ */
307
+ preferences?: DashboardPreferences;
109
308
  };
110
309
 
310
+ declare interface DatabaseEntityReference {
311
+ connectionId: string;
312
+ connectionType: ConnectionType;
313
+ type: EntityType;
314
+ dbObjectType?: string;
315
+ dialect?: Dialect;
316
+ database?: string;
317
+ schema?: string;
318
+ name: string;
319
+ }
320
+
321
+ declare type DatabaseEntityType = 'table' | 'view';
322
+
323
+ declare interface DataModelEntityReference extends DatabaseEntityReference {
324
+ type: 'model';
325
+ id: string;
326
+ label: string;
327
+ description: string;
328
+ }
329
+
330
+ declare interface DataSource {
331
+ connectionId: string;
332
+ semanticDomainId?: string;
333
+ connectionType: string;
334
+ mode: 'database' | 'upload' | 'url' | 'semanticDomain';
335
+ dbSelection?: {
336
+ database: string;
337
+ schema: string;
338
+ entityType: DatabaseEntityType;
339
+ };
340
+ selectedEntities: SelectedEntities;
341
+ }
342
+
343
+ declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "Week of MMM DD, YYYY", "Week of MMMM DD, YYYY", "YYYY-WW", "MMM YYYY", "MMMM YYYY", "YYYY-MM", "MM/YYYY", "YYYY MMM", "Q1 YYYY", "YYYY Q1", "1st Quarter YYYY", "YYYY-Q1", "Quarter 1, YYYY", "YYYY", "YY", "custom"];
344
+
345
+ declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
346
+
111
347
  export declare type DateOptions = {
112
348
  locale: string;
113
349
  format: string;
114
350
  options: Intl.DateTimeFormatOptions;
115
351
  };
116
352
 
353
+ declare type Dialect = 'mysql' | 'postgres' | 'bigquery' | 'redshift' | 'snowflake' | 'clickhouse' | 'duckdb';
354
+
117
355
  export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
118
356
 
357
+ declare interface DrillHierarchy {
358
+ id: string;
359
+ label?: string;
360
+ type: 'static';
361
+ steps: DrillHierarchyStep[];
362
+ default?: boolean;
363
+ }
364
+
365
+ declare interface DrillHierarchyStep {
366
+ field: Field;
367
+ mode: 'drillDown';
368
+ preferredChartType?: TChartType;
369
+ breadcrumbLabelTemplate?: string;
370
+ retainFilters?: boolean;
371
+ label?: string;
372
+ linkedInsightId?: string;
373
+ }
374
+
375
+ declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
376
+
377
+ declare interface DrillThroughInteraction {
378
+ mode: 'drillThrough';
379
+ filterFields: Field[];
380
+ targetSheetId: string;
381
+ label?: string;
382
+ }
383
+
384
+ declare interface DrillToDetailInteraction {
385
+ mode: 'drillToDetail';
386
+ filterFields: Field[];
387
+ detailFields?: Field[];
388
+ sortBy?: SortByField[];
389
+ limit?: number;
390
+ detailTitle?: string;
391
+ label?: string;
392
+ }
393
+
394
+ declare interface DrillToURLInteraction {
395
+ mode: 'drillToURL';
396
+ filterFields: Field[];
397
+ urlTemplate: string;
398
+ label?: string;
399
+ }
400
+
401
+ export declare type DroppableId = 'droppable-group-by' | 'droppable-metric';
402
+
403
+ export declare type EmailSettings = {
404
+ companyName: string;
405
+ dashboardUrl: string;
406
+ supportEmail: string;
407
+ senderTitle: string;
408
+ };
409
+
410
+ export declare const EMPTY_SELECTION: SelectionState;
411
+
412
+ declare type EntityType = 'table' | 'view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
413
+
119
414
  export declare type ErrorProps = {
120
415
  message?: string;
121
416
  };
122
417
 
418
+ export declare type ExportDataPayload = {
419
+ cardId: string;
420
+ title: string;
421
+ data: Record<string, any>[];
422
+ sql: string;
423
+ };
424
+
425
+ declare interface Field {
426
+ /**
427
+ * Unique identifier for this field instance (for joins, UI state, etc.).
428
+ * Should be unique within the context of the query or data model.
429
+ * Example: 'orders.customer_id', 'expr_12345', etc.
430
+ */
431
+ id: string;
432
+ /**
433
+ * The physical/source column name in the database or data source.
434
+ * Used for mapping to the underlying data model and SQL generation (unless overridden by expression).
435
+ */
436
+ name: string;
437
+ /**
438
+ * Human-friendly, localizable display name for the UI (table headers, chart axes, etc.).
439
+ */
440
+ label: string;
441
+ /**
442
+ * Unique, stable, machine-friendly reference name for SQL (AS alias), exports, and scripting.
443
+ * If not provided, should be auto-generated from label or name.
444
+ */
445
+ alias?: string;
446
+ qualifiedFieldName: string;
447
+ dataType: string;
448
+ description?: string;
449
+ qualifiedEntityName?: string;
450
+ dateFormat?: DateFormatValue;
451
+ customFormat?: string;
452
+ granularity?: TimeGranularity;
453
+ entityId: string;
454
+ entityName: string;
455
+ entityType: EntityType;
456
+ role?: 'groupby' | 'metric' | 'sortby' | 'pivotby';
457
+ }
458
+
459
+ declare type FileAttachment = {
460
+ id: string;
461
+ name: string;
462
+ size: number;
463
+ type: string;
464
+ data?: string;
465
+ url?: string;
466
+ preview?: string;
467
+ uploadProgress?: number;
468
+ };
469
+
470
+ declare interface FileEntityReference extends DatabaseEntityReference {
471
+ id: string;
472
+ type: 'file' | 'url' | 'upload';
473
+ label: string;
474
+ description: string;
475
+ originalName: string;
476
+ file?: File;
477
+ url?: string;
478
+ }
479
+
480
+ declare interface FilterByColumn extends BaseColumn {
481
+ role: 'filter';
482
+ operators?: string[];
483
+ mode?: 'include' | 'exclude';
484
+ sql?: string;
485
+ fetchValues?: boolean;
486
+ fetchLimit?: number;
487
+ valueSource?: 'distinct' | 'static' | 'range';
488
+ staticValues?: string[];
489
+ }
490
+
491
+ declare interface FilterCondition {
492
+ id: string;
493
+ field: Field;
494
+ operator: Operator;
495
+ value: FilterValue;
496
+ }
497
+
123
498
  declare type FilterForBetween = BaseFilter & {
124
499
  operation: 'between' | 'not between';
125
500
  values: [number, number];
@@ -150,6 +525,14 @@ declare type FilterForString = BaseFilter & {
150
525
  values: [string];
151
526
  };
152
527
 
528
+ declare interface FilterGroup {
529
+ id: string;
530
+ logicalOperator: LogicalOperator;
531
+ negate: boolean;
532
+ conditions: FilterCondition[];
533
+ groups: FilterGroup[];
534
+ }
535
+
153
536
  declare type FilterLocation = 'dashboard' | 'frame' | undefined;
154
537
 
155
538
  declare type FilterOnClick = {
@@ -157,6 +540,8 @@ declare type FilterOnClick = {
157
540
  columnIndex: number;
158
541
  };
159
542
 
543
+ declare type FilterValue = string | number | boolean | Date | null | [number, number] | [string, string] | string[] | number[];
544
+
160
545
  export declare type GetDashboardResponse = {
161
546
  dashboard: TDashboard;
162
547
  lenses: TLens[];
@@ -168,23 +553,122 @@ export declare type GetPluginsResponse = {
168
553
  plugins: {
169
554
  label: string;
170
555
  value: string;
556
+ type: PluginType;
171
557
  }[];
172
558
  };
173
559
 
560
+ declare type Granularity = 'day' | 'week' | 'month' | 'year';
561
+
562
+ declare interface GroupByColumn extends BaseColumn {
563
+ role: 'groupby';
564
+ granularity?: Granularity;
565
+ format?: string;
566
+ }
567
+
568
+ declare interface GroupByField extends Field {
569
+ role: 'groupby';
570
+ granularity?: 'day' | 'week' | 'month' | 'quarter' | 'year';
571
+ /**
572
+ * Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
573
+ * If present, used in SELECT and GROUP BY instead of just the column name.
574
+ */
575
+ expression?: string;
576
+ timeDrillPath?: TimeDrillStep[];
577
+ }
578
+
174
579
  export declare type HtmlOptions = {
175
580
  html: string;
176
581
  };
177
582
 
583
+ declare interface InlineDrillInteraction {
584
+ mode: 'inlineDrill';
585
+ filterFields: Field[];
586
+ fetchMode?: 'lazy' | 'preloaded';
587
+ inlineLimit?: number;
588
+ label?: string;
589
+ }
590
+
591
+ declare interface Join {
592
+ id: string;
593
+ source: DatabaseEntityReference;
594
+ target: DatabaseEntityReference;
595
+ joinType: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
596
+ joinKeyGroups: JoinKeyGroup[];
597
+ sequence: number;
598
+ }
599
+
600
+ declare interface JoinKey {
601
+ id?: string;
602
+ source: Field;
603
+ target: Field;
604
+ operator: string;
605
+ }
606
+
607
+ declare interface JoinKeyGroup {
608
+ id: string;
609
+ operator: string;
610
+ keys: JoinKey[];
611
+ }
612
+
613
+ declare interface JoinPlan {
614
+ baseEntity: DatabaseEntityReference;
615
+ joins: Join[];
616
+ }
617
+
178
618
  export declare type KPICardProps = {
179
619
  card: TCard;
180
620
  isLoading?: boolean;
181
621
  renderFilterInfo?: () => JSX.Element | null;
182
622
  };
183
623
 
624
+ export declare type Level = 'database' | 'schema' | 'table';
625
+
184
626
  export declare type LoadingProps = {
185
627
  message?: string;
186
628
  };
187
629
 
630
+ declare type LogicalOperator = 'AND' | 'OR';
631
+
632
+ declare interface MetricColumn extends BaseColumn {
633
+ role: 'metric';
634
+ aggregate: AggregateFunction;
635
+ aliasTemplate?: string;
636
+ }
637
+
638
+ declare interface MetricField extends Field {
639
+ role: 'metric';
640
+ aggregate: AggregateFunction;
641
+ /**
642
+ * Optional SQL expression for the metric (e.g., ship_date - order_date).
643
+ * If present, used as aggregate(expression) instead of aggregate(name).
644
+ */
645
+ expression?: string;
646
+ /**
647
+ * Optional parameters for future extensibility (e.g., window functions).
648
+ * * Example:
649
+ * {
650
+ aggregate: "SUM",
651
+ name: "sales",
652
+ parameters: {
653
+ window: "PARTITION BY region ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW"
654
+ }
655
+ }
656
+
657
+ {
658
+ aggregate: "COUNT",
659
+ name: "order_id",
660
+ parameters: {
661
+ filter: "status = 'Active'"
662
+ }
663
+ }
664
+ */
665
+ parameters?: {
666
+ filters?: FilterGroup;
667
+ };
668
+ aliasTemplate?: string;
669
+ valueAliases?: Record<string, string>;
670
+ }
671
+
188
672
  declare type NoneOptions = {};
189
673
 
190
674
  export declare type NumberAxisFormat = {
@@ -201,8 +685,12 @@ export declare type NumberOptions = {
201
685
  colorRanges?: ColorRange[];
202
686
  };
203
687
 
688
+ declare type OldFilterValue = string | number | null | (string | number)[] | RangeValue;
689
+
204
690
  declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
205
691
 
692
+ declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between' | 'isNull' | 'isNotNull';
693
+
206
694
  declare type OptionsMap = {
207
695
  number: NumberOptions;
208
696
  string: StringOptions;
@@ -211,10 +699,27 @@ declare type OptionsMap = {
211
699
  none: NoneOptions;
212
700
  };
213
701
 
702
+ declare interface OrderBy {
703
+ columnId: string;
704
+ direction: 'asc' | 'desc';
705
+ }
706
+
707
+ /**
708
+ * Pagination configuration for table queries
709
+ */
710
+ declare interface PaginationConfig {
711
+ page: number;
712
+ pageSize: number;
713
+ }
714
+
214
715
  declare type Params = {
215
716
  [key: string]: string | number | string[] | number[];
216
717
  };
217
718
 
719
+ declare interface PivotByField extends Field {
720
+ role: 'pivotby';
721
+ }
722
+
218
723
  export declare type Placeholders = {
219
724
  /**
220
725
  * Placeholder for the card when there are no records to display.
@@ -226,6 +731,39 @@ export declare type Placeholders = {
226
731
  SessionExpired?: React.ReactNode;
227
732
  };
228
733
 
734
+ export declare type PluginType = 'custom' | 'standard';
735
+
736
+ declare interface QueryConfig {
737
+ groupByColumns?: GroupByColumn[];
738
+ pivotColumns?: GroupByColumn[];
739
+ metricColumns?: MetricColumn[];
740
+ filterColumns?: FilterByColumn[];
741
+ filters?: QueryFilter[];
742
+ limit?: number;
743
+ orderBy?: OrderBy[];
744
+ }
745
+
746
+ declare type QueryFilter = {
747
+ filterColumnName: string;
748
+ filterValue: OldFilterValue;
749
+ };
750
+
751
+ declare type RangeValue = {
752
+ gte?: string | number;
753
+ lte?: string | number;
754
+ lt?: string | number;
755
+ gt?: string | number;
756
+ };
757
+
758
+ declare type SelectedEntities = DatabaseEntityReference[] | DataModelEntityReference[] | FileEntityReference[];
759
+
760
+ export declare type SelectionState = Record<Level, string | null>;
761
+
762
+ declare interface SortByField extends Field {
763
+ role: 'sortby';
764
+ direction: 'asc' | 'desc';
765
+ }
766
+
229
767
  export declare type SqlGen = {
230
768
  measures?: {
231
769
  name: string;
@@ -253,6 +791,14 @@ export declare type StyleProps = {
253
791
  dashboardCardContainer?: string;
254
792
  dashboardCard?: string;
255
793
  /** grid-layout config */
794
+ /**
795
+ * Border radius for the control inputs such as filter input, tabs, date picker, etc.
796
+ */
797
+ controlInputRadius?: number;
798
+ /**
799
+ * Border radius for the cards
800
+ */
801
+ cardBorderRadius?: number;
256
802
  gridLayout?: {
257
803
  /** css class for `react-grid-layout` */
258
804
  className?: string;
@@ -273,6 +819,15 @@ export declare type StyleProps = {
273
819
 
274
820
  export declare function Surfboard({ showControls, showFooter, ...rest }: DashboardPlusProps): JSX_2.Element;
275
821
 
822
+ declare type TablePreferences = {
823
+ columnSettingsMap?: ColumnSettingsMap;
824
+ selectColumnVisible?: boolean;
825
+ columnVisibility?: Record<string, boolean>;
826
+ columnSizing?: ColumnSizingState;
827
+ pageSize?: number;
828
+ enableDevModePagination?: boolean;
829
+ };
830
+
276
831
  export declare type TBaseQuery = {
277
832
  id: string;
278
833
  name: string;
@@ -294,7 +849,11 @@ export declare type TCard = {
294
849
  type: TChartType;
295
850
  sql?: string;
296
851
  python?: string;
297
- cfg?: any;
852
+ dataSource?: DataSource;
853
+ config?: CardConfig;
854
+ interactionConfig?: CardInteractionConfig;
855
+ paginationConfig?: PaginationConfig;
856
+ queryConfig?: QueryConfig;
298
857
  customCfg?: any;
299
858
  preferences?: TCardPreferences;
300
859
  customCardPreferences?: TCustomCardPreferences;
@@ -303,6 +862,11 @@ export declare type TCard = {
303
862
  lastSelectedSchema?: string;
304
863
  lastSelectedTable?: string;
305
864
  refreshInterval?: string;
865
+ /**
866
+ * Card-specific display preferences that override dashboard-level preferences.
867
+ * If not specified, the card will use the dashboard's display preferences.
868
+ */
869
+ displayPreferences?: VisualDisplayPreferences;
306
870
  };
307
871
 
308
872
  export declare type TCardContext = {
@@ -330,6 +894,11 @@ export declare type TCardPreferences = {
330
894
  datasetOptions?: TDatasetOptions[];
331
895
  chartOptions?: TChartOptions;
332
896
  columnSettings?: TColumnSetting<DisplayDataType>[];
897
+ colorConfig?: ColorConfig;
898
+ xAxisConfig?: AxisConfig;
899
+ yAxisConfig?: AxisConfig;
900
+ dataLabelsConfig?: TDataLabelsConfig;
901
+ tablePrefs?: TablePreferences;
333
902
  allowDownload?: boolean;
334
903
  customVisualCode?: string;
335
904
  textVisualOptions?: {
@@ -345,32 +914,83 @@ export declare type TCardPreferences = {
345
914
  projectionOffset?: [number, number];
346
915
  colorScale?: string;
347
916
  };
917
+ kpiVisualOptions?: {
918
+ lowerIsBetter?: boolean;
919
+ countryLogoId?: string;
920
+ valueAlignment?: 'left' | 'center';
921
+ formatOptions?: TFormatOptions;
922
+ metricComparison?: {
923
+ enabled?: boolean;
924
+ calculationType?: 'difference' | 'change' | 'change_difference' | 'ratio';
925
+ formatOptions?: TFormatOptions;
926
+ showArrow?: boolean;
927
+ showColor?: boolean;
928
+ conditionalLabel?: boolean;
929
+ labelName?: string;
930
+ position?: 'left' | 'right' | 'top';
931
+ conditionalLabels?: {
932
+ increase?: string;
933
+ decrease?: string;
934
+ noChange?: string;
935
+ };
936
+ colorConfig?: {
937
+ increase?: 'green' | 'red' | 'neutral' | string;
938
+ decrease?: 'green' | 'red' | 'neutral' | string;
939
+ noChange?: 'green' | 'red' | 'neutral' | string;
940
+ };
941
+ };
942
+ };
943
+ pivotTableOptions?: {
944
+ showRowTotals?: boolean;
945
+ showColumnTotals?: boolean;
946
+ showGrandTotal?: boolean;
947
+ sortRowsBy?: 'label' | 'total' | 'metric';
948
+ sortColumnsBy?: 'label' | 'total' | 'metric';
949
+ };
950
+ displayOptions?: {
951
+ showFilterInfo?: boolean;
952
+ showCardToolbar?: boolean;
953
+ showChrome?: boolean;
954
+ allowScroll?: boolean;
955
+ };
348
956
  };
349
957
 
350
958
  export declare type TChartOptions = {
351
959
  type?: TChartType;
352
960
  scales?: {
353
961
  y?: {
354
- type: 'linear' | 'logarithmic';
355
- min: number;
356
- max: number;
357
- ticks: {
358
- stepSize: number;
962
+ type?: 'linear' | 'logarithmic';
963
+ min?: number;
964
+ max?: number;
965
+ ticks?: {
966
+ stepSize?: number;
967
+ };
968
+ grid?: {
969
+ display?: boolean;
359
970
  };
360
971
  };
361
972
  x?: {
362
- type: 'linear' | 'logarithmic';
363
- min: number;
364
- max: number;
365
- ticks: {
366
- stepSize: number;
973
+ type?: 'linear' | 'logarithmic';
974
+ min?: number;
975
+ max?: number;
976
+ ticks?: {
977
+ stepSize?: number;
978
+ };
979
+ grid?: {
980
+ display?: boolean;
367
981
  };
368
982
  };
369
983
  };
370
984
  indexAxis?: 'x' | 'y' | undefined;
985
+ plugins?: {
986
+ legend?: TLegendOptions;
987
+ datalabels?: {
988
+ anchor?: string;
989
+ };
990
+ };
371
991
  };
372
992
 
373
- declare type TChartType = 'bar' | 'horizontalBar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'bubble' | 'scatter' | 'stackedBar' | 'stackedLine' | 'table' | 'kpi' | 'pyramid' | 'range' | 'text' | 'map' | 'custom';
993
+ declare type TChartType = 'bar' | 'horizontalBar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'bubble' | 'scatter' | 'stackedBar' | 'stackedLine' | 'table' | 'pivotTable' | 'aggregateTable' | 'kpi' | 'pyramid' | 'tornado' | 'range' | 'text' | 'map' | 'funnel' | 'custom';
374
994
 
375
995
  export declare type TColumnSetting<T extends DisplayDataType> = {
376
996
  columnIdx: number;
@@ -385,6 +1005,7 @@ export declare type TCustomCardPreferences = {
385
1005
  url: string;
386
1006
  componentName: string;
387
1007
  icon?: string;
1008
+ pluginChartType?: string;
388
1009
  type?: 'iframe' | 'component';
389
1010
  visualType?: 'single' | 'multiple';
390
1011
  settings?: any;
@@ -402,6 +1023,7 @@ export declare type TCustomCardPreferences = {
402
1023
  export declare type TDashboard = {
403
1024
  id: string;
404
1025
  title?: string;
1026
+ aiContext?: AIContext;
405
1027
  description?: string;
406
1028
  sheets?: TSheet[];
407
1029
  style?: TStyle;
@@ -411,12 +1033,36 @@ export declare type TDashboard = {
411
1033
  aiScopeTables?: AIScopeTable[];
412
1034
  globalStyle?: TStyle;
413
1035
  globalCacheConfig?: CacheConfig;
1036
+ emailSettings?: EmailSettings;
1037
+ defaultFilterValues?: TFilterValue[];
414
1038
  };
415
1039
 
416
1040
  export declare type TDataColumn = {
417
1041
  column_name: string;
418
1042
  data_type: string;
419
1043
  is_nullable?: string;
1044
+ label?: string;
1045
+ description?: string;
1046
+ qualifiedFieldName?: string;
1047
+ };
1048
+
1049
+ export declare type TDataLabelsConfig = {
1050
+ enabled?: boolean;
1051
+ position?: 'center' | 'top' | 'bottom' | 'left' | 'right' | 'auto' | 'custom';
1052
+ anchor?: 'center' | 'start' | 'end';
1053
+ align?: 'center' | 'start' | 'end' | 'top' | 'bottom' | number;
1054
+ display?: 'auto' | boolean;
1055
+ format?: 'auto' | 'number' | 'currency' | 'percent' | 'none';
1056
+ formatOptions?: TFormatOptions;
1057
+ font?: {
1058
+ size?: number;
1059
+ weight?: 'normal' | 'bold';
1060
+ };
1061
+ color?: 'auto' | string;
1062
+ clamp?: boolean;
1063
+ clip?: boolean;
1064
+ rotation?: number;
1065
+ showTotal?: boolean;
420
1066
  };
421
1067
 
422
1068
  export declare type TDatasetOptions = {
@@ -432,6 +1078,11 @@ export declare type TDatasetOptions = {
432
1078
  };
433
1079
  };
434
1080
 
1081
+ export declare type TDbCapabilities = {
1082
+ path: Level[];
1083
+ labels?: Partial<Record<Level, string>>;
1084
+ };
1085
+
435
1086
  export declare type TEvent = {
436
1087
  type: 'success' | 'error' | 'info' | 'warning';
437
1088
  message: any;
@@ -452,12 +1103,30 @@ declare type TFilter = {
452
1103
  database: string;
453
1104
  sql: string;
454
1105
  operation: Operation;
1106
+ applyToSheetIds?: string[];
1107
+ excludeSheetIds?: string[];
1108
+ applyToCardIds?: string[];
1109
+ excludeCardIds?: string[];
455
1110
  };
456
1111
 
457
1112
  declare type TFilterValue = FilterForString | FilterForEqual | FilterForCompare | FilterForBetween | FilterForIn | FilterForDate;
458
1113
 
1114
+ export declare type TFormatOptions = {
1115
+ type?: 'auto' | 'number' | 'currency' | 'percent' | 'scientific' | 'date';
1116
+ decimalPlaces?: number;
1117
+ currency?: string;
1118
+ locale?: string;
1119
+ prefix?: string;
1120
+ suffix?: string;
1121
+ useSuffix?: boolean;
1122
+ negativeInParentheses?: boolean;
1123
+ multiplyBy?: number;
1124
+ dateFormat?: string;
1125
+ };
1126
+
459
1127
  export declare type TFrame = {
460
1128
  id: string;
1129
+ visualId?: string;
461
1130
  filterId?: string;
462
1131
  cards: TCard[];
463
1132
  activeCardId: string;
@@ -465,6 +1134,21 @@ export declare type TFrame = {
465
1134
 
466
1135
  export declare type Theme = 'dark' | 'light' | 'system';
467
1136
 
1137
+ declare interface TimeDrillStep {
1138
+ granularity: TimeGranularity;
1139
+ next?: TimeGranularity;
1140
+ comparison?: 'previous_year' | 'previous_period';
1141
+ rollingWindow?: number;
1142
+ }
1143
+
1144
+ declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
1145
+
1146
+ export declare type TLegendOptions = {
1147
+ display?: boolean;
1148
+ position?: 'top' | 'left' | 'bottom' | 'right';
1149
+ align?: 'start' | 'center' | 'end';
1150
+ };
1151
+
468
1152
  export declare type TLens = {
469
1153
  id: string;
470
1154
  name: string;
@@ -492,4 +1176,41 @@ export declare type TStyle = {
492
1176
  dark?: StyleProps;
493
1177
  };
494
1178
 
1179
+ /**
1180
+ * Display mode for visual components - controls which UI elements are shown
1181
+ */
1182
+ export declare type VisualDisplayMode = 'full' | 'content-only' | 'print' | 'embed' | 'table-print';
1183
+
1184
+ /**
1185
+ * Display preferences for controlling visual component rendering
1186
+ */
1187
+ export declare type VisualDisplayPreferences = {
1188
+ /**
1189
+ * Predefined display mode
1190
+ * - 'full': All UI elements (default)
1191
+ * - 'content-only': Just the visualization/table content
1192
+ * - 'print': Optimized for printing (shows title and description, hides interactive elements)
1193
+ * - 'embed': Minimal chrome for embedding in other contexts
1194
+ */
1195
+ mode?: VisualDisplayMode;
1196
+ /**
1197
+ * Override specific UI elements visibility
1198
+ * These overrides take precedence over the mode presets
1199
+ */
1200
+ overrides?: {
1201
+ showHeader?: boolean;
1202
+ showTitle?: boolean;
1203
+ showDescription?: boolean;
1204
+ showTabs?: boolean;
1205
+ showFooter?: boolean;
1206
+ showFilters?: boolean;
1207
+ showBreadcrumbs?: boolean;
1208
+ showRefreshIndicator?: boolean;
1209
+ showFilterInfo?: boolean;
1210
+ showPagination?: boolean;
1211
+ showTableToolbar?: boolean;
1212
+ showColumnSettings?: boolean;
1213
+ };
1214
+ };
1215
+
495
1216
  export { }