react-semaphor 0.1.305 → 0.1.307

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 (46) hide show
  1. package/dist/brand-studio/index.cjs +2 -2
  2. package/dist/brand-studio/index.js +14 -14
  3. package/dist/chunks/braces-CkL8POe0.js +6 -0
  4. package/dist/chunks/braces-e5qkN-I_.js +23 -0
  5. package/dist/chunks/{dashboard-controls-DjOO0fkG.js → dashboard-controls-5bibC_5a.js} +141 -128
  6. package/dist/chunks/dashboard-controls-Dwet_9h0.js +52 -0
  7. package/dist/chunks/{dashboard-filter-controls-button-YvRfoUuN.js → dashboard-filter-controls-button-D0k9NDci.js} +4 -4
  8. package/dist/chunks/{dashboard-filter-controls-button-CR0_duPw.js → dashboard-filter-controls-button-ZeYO5jux.js} +1 -1
  9. package/dist/chunks/{dashboard-json-tOsNVccY.js → dashboard-json-Bi5XdgG5.js} +1 -1
  10. package/dist/chunks/{dashboard-json-BYLaWi0-.js → dashboard-json-CfRKLL7C.js} +2 -2
  11. package/dist/chunks/{dashboard-summary-settings-dialog-CMxi2arh.js → dashboard-summary-settings-dialog-Bj4_wBW9.js} +2 -2
  12. package/dist/chunks/{dashboard-summary-settings-dialog-DioOegLQ.js → dashboard-summary-settings-dialog-DD9Aj2XH.js} +1 -1
  13. package/dist/chunks/{edit-dashboard-visual-ClLcFLD_.js → edit-dashboard-visual-DIuzuJfj.js} +8796 -8713
  14. package/dist/chunks/edit-dashboard-visual-Wfs53Kbn.js +183 -0
  15. package/dist/chunks/{index-DJFckbGE.js → index-DMFCfjgD.js} +52348 -49752
  16. package/dist/chunks/index-DQCMUspd.js +1350 -0
  17. package/dist/chunks/{palette-BqJlrRto.js → palette-D5Lorzf2.js} +2 -7
  18. package/dist/chunks/{palette-DD-i7bNS.js → palette-Oa4O9jWG.js} +3 -23
  19. package/dist/chunks/{resource-management-panel-CoHy6cOi.js → resource-management-panel-CNr6uMMf.js} +1 -1
  20. package/dist/chunks/{resource-management-panel-BS9nfJbb.js → resource-management-panel-Dqc3gfYn.js} +3 -3
  21. package/dist/chunks/{save-j-clxFtx.js → save-CDX2p4v1.js} +1 -1
  22. package/dist/chunks/{save-CFBIhbHD.js → save-zEdICevW.js} +1 -1
  23. package/dist/chunks/{switch-BH17qlxH.js → switch-BPFzGTzF.js} +34 -29
  24. package/dist/chunks/{switch-BFhVVwh9.js → switch-CKiXRRoh.js} +432 -390
  25. package/dist/chunks/{use-create-flow-overlay-state-Lmk-mIkA.js → use-create-flow-overlay-state-CLyv5c2m.js} +4 -4
  26. package/dist/chunks/{use-create-flow-overlay-state-BSUi4chy.js → use-create-flow-overlay-state-CSMe5Ls6.js} +1 -1
  27. package/dist/chunks/{use-visual-utils-CR9nLyEz.js → use-visual-utils-DDAs4dCz.js} +1 -1
  28. package/dist/chunks/{use-visual-utils-CikIkKb2.js → use-visual-utils-Det6M3Wd.js} +2 -2
  29. package/dist/dashboard/index.cjs +1 -1
  30. package/dist/dashboard/index.js +1 -1
  31. package/dist/index.cjs +1 -1
  32. package/dist/index.js +7 -7
  33. package/dist/style.css +1 -1
  34. package/dist/surfboard/index.cjs +1 -1
  35. package/dist/surfboard/index.js +2 -2
  36. package/dist/types/dashboard.d.ts +142 -44
  37. package/dist/types/main.d.ts +144 -46
  38. package/dist/types/shared.d.ts +142 -44
  39. package/dist/types/surfboard.d.ts +142 -44
  40. package/dist/types/types.d.ts +142 -44
  41. package/package.json +4 -4
  42. package/dist/chunks/dashboard-controls-BcwXajYv.js +0 -47
  43. package/dist/chunks/edit-dashboard-visual-331vOmKT.js +0 -183
  44. package/dist/chunks/index-BOGpMmRo.js +0 -1360
  45. package/dist/chunks/rotate-ccw-CdGW8Rxm.js +0 -6
  46. package/dist/chunks/rotate-ccw-X8MbX_hF.js +0 -14
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/index-BOGpMmRo.js"),e=require("../chunks/common-types-nBuCd3u2.js"),r=require("../chunks/dashboard-summary-settings-dialog-DioOegLQ.js");exports.Surfboard=a.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.CalendarPreferencesDialog=r.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=r.DashboardSummarySettingsDialog;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/index-DQCMUspd.js"),e=require("../chunks/common-types-nBuCd3u2.js"),r=require("../chunks/dashboard-summary-settings-dialog-DD9Aj2XH.js");exports.Surfboard=a.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.CalendarPreferencesDialog=r.CalendarPreferencesDialog;exports.DashboardSummarySettingsDialog=r.DashboardSummarySettingsDialog;
@@ -1,6 +1,6 @@
1
- import { a as o } from "../chunks/index-DJFckbGE.js";
1
+ import { a as o } from "../chunks/index-DMFCfjgD.js";
2
2
  import { C as s, E as C } from "../chunks/common-types-C6cAQgyh.js";
3
- import { C as E, D as f } from "../chunks/dashboard-summary-settings-dialog-CMxi2arh.js";
3
+ import { C as E, D as f } from "../chunks/dashboard-summary-settings-dialog-Bj4_wBW9.js";
4
4
  export {
5
5
  s as CONTROL_CARD_DEFAULT_VALUE,
6
6
  E as CalendarPreferencesDialog,
@@ -352,10 +352,7 @@ declare interface ColumnSettings {
352
352
  maxWidth?: number;
353
353
  textOverflow?: 'ellipsis' | 'wrap' | 'clip';
354
354
  textWrap: 'wrap' | 'nowrap';
355
- /**
356
- * Totals-row behavior for this column. Undefined = 'none'. The footer
357
- * renders only when at least one visible column has a non-'none' behavior.
358
- */
355
+ /** Deprecated/inert. Totals are controlled by tablePrefs.tableStyle.totals. */
359
356
  totalsBehavior?: TotalsBehavior;
360
357
  totalsLabel?: string;
361
358
  numberFormat: {
@@ -395,6 +392,90 @@ declare type ColumnSettingsMap = Record<string, ColumnSettings>;
395
392
 
396
393
  declare type ColumnType = 'string' | 'number' | 'date';
397
394
 
395
+ declare type ComparisonOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte';
396
+
397
+ declare type ConditionalFormatCondition = {
398
+ kind: 'comparison';
399
+ columnId: string;
400
+ operator: ComparisonOperator;
401
+ value: unknown;
402
+ } | {
403
+ kind: 'between';
404
+ columnId: string;
405
+ min: unknown;
406
+ max: unknown;
407
+ inclusive?: boolean;
408
+ } | {
409
+ kind: 'blank';
410
+ columnId: string;
411
+ isBlank: boolean;
412
+ } | {
413
+ kind: 'contains';
414
+ columnId: string;
415
+ value: string;
416
+ caseSensitive?: boolean;
417
+ exact?: boolean;
418
+ } | {
419
+ kind: 'topBottom';
420
+ columnId: string;
421
+ direction: 'top' | 'bottom';
422
+ count: number;
423
+ } | {
424
+ kind: 'colorScale';
425
+ columnId: string;
426
+ range: 'auto' | 'manual';
427
+ min?: number;
428
+ mid?: number;
429
+ max?: number;
430
+ colors: {
431
+ min: string;
432
+ mid?: string;
433
+ max: string;
434
+ };
435
+ } | {
436
+ kind: 'dataBar';
437
+ columnId: string;
438
+ range: 'auto' | 'manual';
439
+ min?: number;
440
+ max?: number;
441
+ color: string;
442
+ showValue?: boolean;
443
+ };
444
+
445
+ declare type ConditionalFormatRule = {
446
+ id: string;
447
+ name?: string;
448
+ enabled?: boolean;
449
+ target: ConditionalFormatTarget;
450
+ condition: ConditionalFormatCondition;
451
+ style?: ConditionalFormatStyle;
452
+ };
453
+
454
+ declare type ConditionalFormatStyle = {
455
+ backgroundColor?: string;
456
+ textColor?: string;
457
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
458
+ italic?: boolean;
459
+ textDecoration?: 'none' | 'underline' | 'line-through';
460
+ icon?: 'arrowUp' | 'arrowDown' | 'warning' | 'check' | 'x';
461
+ dataBar?: {
462
+ color: string;
463
+ showValue: boolean;
464
+ };
465
+ };
466
+
467
+ declare type ConditionalFormatTarget = {
468
+ level: 'cell' | 'row';
469
+ columnIds?: string[];
470
+ conditionColumnId?: string;
471
+ applyToColumnIds?: string[];
472
+ tableParts?: TablePart[];
473
+ rowRoles?: string[];
474
+ depth?: number;
475
+ includeTotals?: boolean;
476
+ includeSubtotals?: boolean;
477
+ };
478
+
398
479
  export declare type ConnectionPolicy = {
399
480
  connectionId?: string;
400
481
  name: string;
@@ -933,12 +1014,6 @@ export declare type DocumentSpacerSection = {
933
1014
  heightPx: number;
934
1015
  };
935
1016
 
936
- export declare type DocumentTableDensity = 'comfortable' | 'standard' | 'compact' | 'dense';
937
-
938
- export declare type DocumentTableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
939
-
940
- export declare type DocumentTableHeaderStyle = 'plain' | 'filled' | 'accent';
941
-
942
1017
  export declare type DocumentTableSection = {
943
1018
  id: string;
944
1019
  type: 'table';
@@ -949,30 +1024,9 @@ export declare type DocumentTableSection = {
949
1024
  columnFormatting?: Record<string, unknown>;
950
1025
  repeatHeaderOnPageBreak?: boolean;
951
1026
  rowHeightPx?: number;
952
- style?: DocumentTableStyle;
953
- totalsStyle?: DocumentTableTotalsStyle;
954
1027
  };
955
1028
  };
956
1029
 
957
- export declare type DocumentTableStyle = {
958
- density?: DocumentTableDensity;
959
- headerStyle?: DocumentTableHeaderStyle;
960
- headerBackgroundColor?: string;
961
- headerTextColor?: string;
962
- stripedRows?: boolean;
963
- gridLines?: DocumentTableGridLines;
964
- wrapText?: boolean;
965
- };
966
-
967
- export declare type DocumentTableTotalsFontWeight = 'normal' | 'medium' | 'semibold' | 'bold';
968
-
969
- export declare type DocumentTableTotalsStyle = {
970
- backgroundColor?: string;
971
- textColor?: string;
972
- fontWeight?: DocumentTableTotalsFontWeight;
973
- borderTop?: boolean;
974
- };
975
-
976
1030
  export declare type DocumentTextContent = DocumentTextNode[];
977
1031
 
978
1032
  export declare type DocumentTextInlineFormat = {
@@ -1937,6 +1991,29 @@ declare type TableAppearance = {
1937
1991
  };
1938
1992
  };
1939
1993
 
1994
+ declare type TableBaseFormatting = {
1995
+ version: TableFormattingVersion;
1996
+ tableParts?: Partial<Record<TablePart, TableBaseStyle>>;
1997
+ columns?: Record<string, {
1998
+ body?: TableBaseStyle;
1999
+ header?: TableBaseStyle;
2000
+ footer?: TableBaseStyle;
2001
+ }>;
2002
+ };
2003
+
2004
+ declare type TableBaseStyle = {
2005
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
2006
+ italic?: boolean;
2007
+ textColor?: string;
2008
+ backgroundColor?: string;
2009
+ textDecoration?: 'none' | 'underline' | 'line-through';
2010
+ };
2011
+
2012
+ declare type TableConditionalFormatting = {
2013
+ version: TableFormattingVersion;
2014
+ rules: ConditionalFormatRule[];
2015
+ };
2016
+
1940
2017
  /**
1941
2018
  * Row rhythm for the whole table. Authors pick one per card; undefined
1942
2019
  * falls back to 'compact' (the canonical default — dense scanning, matches
@@ -1945,8 +2022,18 @@ declare type TableAppearance = {
1945
2022
  */
1946
2023
  declare type TableDensity = 'dense' | 'compact' | 'standard' | 'comfortable' | 'spacious';
1947
2024
 
2025
+ declare type TableFormattingVersion = 1;
2026
+
2027
+ declare type TableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
2028
+
2029
+ declare type TableHeaderStyle = 'plain' | 'filled' | 'accent';
2030
+
2031
+ declare type TablePart = 'body' | 'header' | 'footer' | 'subtotal' | 'grandTotal';
2032
+
1948
2033
  declare type TablePreferences = {
1949
2034
  columnSettingsMap?: ColumnSettingsMap;
2035
+ baseFormatting?: TableBaseFormatting;
2036
+ conditionalFormatting?: TableConditionalFormatting;
1950
2037
  selectColumnVisible?: boolean;
1951
2038
  columnVisibility?: Record<string, boolean>;
1952
2039
  columnSizing?: ColumnSizingState;
@@ -1954,7 +2041,29 @@ declare type TablePreferences = {
1954
2041
  enableDevModePagination?: boolean;
1955
2042
  forceClientPagination?: boolean;
1956
2043
  density?: TableDensity;
1957
- documentWrapText?: boolean;
2044
+ tableStyle?: TableStylePreferences;
2045
+ };
2046
+
2047
+ declare type TableStylePreferences = {
2048
+ headerStyle?: TableHeaderStyle;
2049
+ headerBackgroundColor?: string;
2050
+ headerTextColor?: string;
2051
+ stripedRows?: boolean;
2052
+ gridLines?: TableGridLines;
2053
+ wrapText?: boolean;
2054
+ totals?: TableTotalsStylePreferences;
2055
+ };
2056
+
2057
+ declare type TableTotalsFontWeight = 'normal' | 'medium' | 'semibold' | 'bold';
2058
+
2059
+ declare type TableTotalsStylePreferences = {
2060
+ enabled?: boolean;
2061
+ backgroundColor?: string;
2062
+ textColor?: string;
2063
+ fontWeight?: TableTotalsFontWeight;
2064
+ borderTop?: boolean;
2065
+ borderTopStyle?: 'solid' | 'dashed' | 'dotted' | 'double';
2066
+ borderTopColor?: string;
1958
2067
  };
1959
2068
 
1960
2069
  /**
@@ -2686,18 +2795,7 @@ export declare type TLens = {
2686
2795
  /** Line dash style options */
2687
2796
  export declare type TLineStyle = 'solid' | 'dashed' | 'dotted' | 'dash-dot';
2688
2797
 
2689
- /**
2690
- * Per-column contribution to the table-level totals row (`<tfoot>`).
2691
- * Additive and optional — omitting it keeps the cell empty in the footer,
2692
- * matching existing behavior when a totals row is not needed.
2693
- *
2694
- * - 'sum' → aggregate the column across the full dataset
2695
- * - 'avg' → arithmetic mean across the full dataset
2696
- * - 'count' → non-null count across the full dataset
2697
- * - 'label' → render `totalsLabel` (or 'Total') as static text — typically
2698
- * on the first column so the footer reads as a labeled row
2699
- * - 'none' → blank cell in the footer
2700
- */
2798
+ /** Historical per-column totals shape. Runtime totals are table-level now. */
2701
2799
  declare type TotalsBehavior = 'sum' | 'avg' | 'count' | 'label' | 'none';
2702
2800
 
2703
2801
  /** Point style options supported by Chart.js */
@@ -1177,10 +1177,7 @@ declare interface ColumnSettings {
1177
1177
  maxWidth?: number;
1178
1178
  textOverflow?: 'ellipsis' | 'wrap' | 'clip';
1179
1179
  textWrap: 'wrap' | 'nowrap';
1180
- /**
1181
- * Totals-row behavior for this column. Undefined = 'none'. The footer
1182
- * renders only when at least one visible column has a non-'none' behavior.
1183
- */
1180
+ /** Deprecated/inert. Totals are controlled by tablePrefs.tableStyle.totals. */
1184
1181
  totalsBehavior?: TotalsBehavior;
1185
1182
  totalsLabel?: string;
1186
1183
  numberFormat: {
@@ -1267,6 +1264,90 @@ export declare interface ComparisonMetadataEntry {
1267
1264
 
1268
1265
  export declare type ComparisonMetadataMap = Record<string, ComparisonMetadataEntry>;
1269
1266
 
1267
+ declare type ComparisonOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte';
1268
+
1269
+ declare type ConditionalFormatCondition = {
1270
+ kind: 'comparison';
1271
+ columnId: string;
1272
+ operator: ComparisonOperator;
1273
+ value: unknown;
1274
+ } | {
1275
+ kind: 'between';
1276
+ columnId: string;
1277
+ min: unknown;
1278
+ max: unknown;
1279
+ inclusive?: boolean;
1280
+ } | {
1281
+ kind: 'blank';
1282
+ columnId: string;
1283
+ isBlank: boolean;
1284
+ } | {
1285
+ kind: 'contains';
1286
+ columnId: string;
1287
+ value: string;
1288
+ caseSensitive?: boolean;
1289
+ exact?: boolean;
1290
+ } | {
1291
+ kind: 'topBottom';
1292
+ columnId: string;
1293
+ direction: 'top' | 'bottom';
1294
+ count: number;
1295
+ } | {
1296
+ kind: 'colorScale';
1297
+ columnId: string;
1298
+ range: 'auto' | 'manual';
1299
+ min?: number;
1300
+ mid?: number;
1301
+ max?: number;
1302
+ colors: {
1303
+ min: string;
1304
+ mid?: string;
1305
+ max: string;
1306
+ };
1307
+ } | {
1308
+ kind: 'dataBar';
1309
+ columnId: string;
1310
+ range: 'auto' | 'manual';
1311
+ min?: number;
1312
+ max?: number;
1313
+ color: string;
1314
+ showValue?: boolean;
1315
+ };
1316
+
1317
+ declare type ConditionalFormatRule = {
1318
+ id: string;
1319
+ name?: string;
1320
+ enabled?: boolean;
1321
+ target: ConditionalFormatTarget;
1322
+ condition: ConditionalFormatCondition;
1323
+ style?: ConditionalFormatStyle;
1324
+ };
1325
+
1326
+ declare type ConditionalFormatStyle = {
1327
+ backgroundColor?: string;
1328
+ textColor?: string;
1329
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
1330
+ italic?: boolean;
1331
+ textDecoration?: 'none' | 'underline' | 'line-through';
1332
+ icon?: 'arrowUp' | 'arrowDown' | 'warning' | 'check' | 'x';
1333
+ dataBar?: {
1334
+ color: string;
1335
+ showValue: boolean;
1336
+ };
1337
+ };
1338
+
1339
+ declare type ConditionalFormatTarget = {
1340
+ level: 'cell' | 'row';
1341
+ columnIds?: string[];
1342
+ conditionColumnId?: string;
1343
+ applyToColumnIds?: string[];
1344
+ tableParts?: TablePart[];
1345
+ rowRoles?: string[];
1346
+ depth?: number;
1347
+ includeTotals?: boolean;
1348
+ includeSubtotals?: boolean;
1349
+ };
1350
+
1270
1351
  export declare type ConnectionItem = DropdownItem & {
1271
1352
  type: string;
1272
1353
  };
@@ -2097,12 +2178,6 @@ export declare type DocumentSpacerSection = {
2097
2178
  heightPx: number;
2098
2179
  };
2099
2180
 
2100
- export declare type DocumentTableDensity = 'comfortable' | 'standard' | 'compact' | 'dense';
2101
-
2102
- export declare type DocumentTableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
2103
-
2104
- export declare type DocumentTableHeaderStyle = 'plain' | 'filled' | 'accent';
2105
-
2106
2181
  export declare type DocumentTableSection = {
2107
2182
  id: string;
2108
2183
  type: 'table';
@@ -2113,30 +2188,9 @@ export declare type DocumentTableSection = {
2113
2188
  columnFormatting?: Record<string, unknown>;
2114
2189
  repeatHeaderOnPageBreak?: boolean;
2115
2190
  rowHeightPx?: number;
2116
- style?: DocumentTableStyle;
2117
- totalsStyle?: DocumentTableTotalsStyle;
2118
2191
  };
2119
2192
  };
2120
2193
 
2121
- export declare type DocumentTableStyle = {
2122
- density?: DocumentTableDensity;
2123
- headerStyle?: DocumentTableHeaderStyle;
2124
- headerBackgroundColor?: string;
2125
- headerTextColor?: string;
2126
- stripedRows?: boolean;
2127
- gridLines?: DocumentTableGridLines;
2128
- wrapText?: boolean;
2129
- };
2130
-
2131
- export declare type DocumentTableTotalsFontWeight = 'normal' | 'medium' | 'semibold' | 'bold';
2132
-
2133
- export declare type DocumentTableTotalsStyle = {
2134
- backgroundColor?: string;
2135
- textColor?: string;
2136
- fontWeight?: DocumentTableTotalsFontWeight;
2137
- borderTop?: boolean;
2138
- };
2139
-
2140
2194
  export declare type DocumentTextContent = DocumentTextNode[];
2141
2195
 
2142
2196
  export declare type DocumentTextInlineFormat = {
@@ -4105,6 +4159,8 @@ export declare function Surfboard({ showControls, showFooter, ...rest }: Dashboa
4105
4159
 
4106
4160
  declare interface TableActions {
4107
4161
  updateColumnSettingsMap: (columnSettings: ColumnSettingsMap) => void;
4162
+ updateTableBaseFormatting: (baseFormatting: TableBaseFormatting) => void;
4163
+ updateTableConditionalFormatting: (conditionalFormatting: TableConditionalFormatting) => void;
4108
4164
  updateColumnVisibility: (columnId: string, isVisible: boolean) => void;
4109
4165
  updateColumnSizing: (sizing: ColumnSizingState) => void;
4110
4166
  updatePageSize: (pageSize: number) => void;
@@ -4163,6 +4219,29 @@ declare type TableAppearance = {
4163
4219
  };
4164
4220
  };
4165
4221
 
4222
+ declare type TableBaseFormatting = {
4223
+ version: TableFormattingVersion;
4224
+ tableParts?: Partial<Record<TablePart, TableBaseStyle>>;
4225
+ columns?: Record<string, {
4226
+ body?: TableBaseStyle;
4227
+ header?: TableBaseStyle;
4228
+ footer?: TableBaseStyle;
4229
+ }>;
4230
+ };
4231
+
4232
+ declare type TableBaseStyle = {
4233
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
4234
+ italic?: boolean;
4235
+ textColor?: string;
4236
+ backgroundColor?: string;
4237
+ textDecoration?: 'none' | 'underline' | 'line-through';
4238
+ };
4239
+
4240
+ declare type TableConditionalFormatting = {
4241
+ version: TableFormattingVersion;
4242
+ rules: ConditionalFormatRule[];
4243
+ };
4244
+
4166
4245
  export declare type TableConfig = {
4167
4246
  databaseName: string;
4168
4247
  schemaName: string;
@@ -4178,10 +4257,20 @@ export declare type TableConfig = {
4178
4257
  */
4179
4258
  declare type TableDensity = 'dense' | 'compact' | 'standard' | 'comfortable' | 'spacious';
4180
4259
 
4260
+ declare type TableFormattingVersion = 1;
4261
+
4262
+ declare type TableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
4263
+
4264
+ declare type TableHeaderStyle = 'plain' | 'filled' | 'accent';
4265
+
4181
4266
  export declare type TableItem = DropdownItem;
4182
4267
 
4268
+ declare type TablePart = 'body' | 'header' | 'footer' | 'subtotal' | 'grandTotal';
4269
+
4183
4270
  declare type TablePreferences = {
4184
4271
  columnSettingsMap?: ColumnSettingsMap;
4272
+ baseFormatting?: TableBaseFormatting;
4273
+ conditionalFormatting?: TableConditionalFormatting;
4185
4274
  selectColumnVisible?: boolean;
4186
4275
  columnVisibility?: Record<string, boolean>;
4187
4276
  columnSizing?: ColumnSizingState;
@@ -4189,9 +4278,21 @@ declare type TablePreferences = {
4189
4278
  enableDevModePagination?: boolean;
4190
4279
  forceClientPagination?: boolean;
4191
4280
  density?: TableDensity;
4192
- documentWrapText?: boolean;
4281
+ tableStyle?: TableStylePreferences;
4282
+ };
4283
+
4284
+ declare type TableStylePreferences = {
4285
+ headerStyle?: TableHeaderStyle;
4286
+ headerBackgroundColor?: string;
4287
+ headerTextColor?: string;
4288
+ stripedRows?: boolean;
4289
+ gridLines?: TableGridLines;
4290
+ wrapText?: boolean;
4291
+ totals?: TableTotalsStylePreferences;
4193
4292
  };
4194
4293
 
4294
+ declare type TableTotalsFontWeight = 'normal' | 'medium' | 'semibold' | 'bold';
4295
+
4195
4296
  export declare type TableTotalsRequest = {
4196
4297
  source: 'documentFlatTable';
4197
4298
  columns: Array<{
@@ -4202,6 +4303,16 @@ export declare type TableTotalsRequest = {
4202
4303
  }>;
4203
4304
  };
4204
4305
 
4306
+ declare type TableTotalsStylePreferences = {
4307
+ enabled?: boolean;
4308
+ backgroundColor?: string;
4309
+ textColor?: string;
4310
+ fontWeight?: TableTotalsFontWeight;
4311
+ borderTop?: boolean;
4312
+ borderTopStyle?: 'solid' | 'dashed' | 'dotted' | 'double';
4313
+ borderTopColor?: string;
4314
+ };
4315
+
4205
4316
  /**
4206
4317
  * Target column configuration for multi-field filters.
4207
4318
  * Allows a single filter to target multiple columns from the SAME table,
@@ -5170,18 +5281,7 @@ export declare type TokenSecurityPolicy = {
5170
5281
  };
5171
5282
  };
5172
5283
 
5173
- /**
5174
- * Per-column contribution to the table-level totals row (`<tfoot>`).
5175
- * Additive and optional — omitting it keeps the cell empty in the footer,
5176
- * matching existing behavior when a totals row is not needed.
5177
- *
5178
- * - 'sum' → aggregate the column across the full dataset
5179
- * - 'avg' → arithmetic mean across the full dataset
5180
- * - 'count' → non-null count across the full dataset
5181
- * - 'label' → render `totalsLabel` (or 'Total') as static text — typically
5182
- * on the first column so the footer reads as a labeled row
5183
- * - 'none' → blank cell in the footer
5184
- */
5284
+ /** Historical per-column totals shape. Runtime totals are table-level now. */
5185
5285
  declare type TotalsBehavior = 'sum' | 'avg' | 'count' | 'label' | 'none';
5186
5286
 
5187
5287
  /** Point style options supported by Chart.js */
@@ -6133,9 +6233,7 @@ declare interface VisualAttachment {
6133
6233
  currentSheetId?: string;
6134
6234
  currentSheetName?: string;
6135
6235
  tablePreferences?: TablePreferences;
6136
- /** Inline filter values for card-specific filtering in scheduled exports */
6137
6236
  inlineFilterValues?: TFilterValue[];
6138
- /** Dashboard-level sheet filter values, merged at schedule creation time */
6139
6237
  sheetFilterValues?: TFilterValue[];
6140
6238
  };
6141
6239
  }