react-semaphor 0.1.305 → 0.1.306

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 (45) 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-CuiOenEA.js +6 -0
  4. package/dist/chunks/braces-DZxcgUvn.js +23 -0
  5. package/dist/chunks/{dashboard-controls-BcwXajYv.js → dashboard-controls-BpgZjEDy.js} +9 -9
  6. package/dist/chunks/{dashboard-controls-DjOO0fkG.js → dashboard-controls-CuQH4inS.js} +10 -9
  7. package/dist/chunks/{dashboard-filter-controls-button-CR0_duPw.js → dashboard-filter-controls-button-Bu90ytxy.js} +1 -1
  8. package/dist/chunks/{dashboard-filter-controls-button-YvRfoUuN.js → dashboard-filter-controls-button-NiAIAD1P.js} +4 -4
  9. package/dist/chunks/{dashboard-json-tOsNVccY.js → dashboard-json-Bk13vadr.js} +1 -1
  10. package/dist/chunks/{dashboard-json-BYLaWi0-.js → dashboard-json-DzVn9KAU.js} +2 -2
  11. package/dist/chunks/{dashboard-summary-settings-dialog-DioOegLQ.js → dashboard-summary-settings-dialog-8vZtKUjh.js} +1 -1
  12. package/dist/chunks/{dashboard-summary-settings-dialog-CMxi2arh.js → dashboard-summary-settings-dialog-dt20G_7d.js} +2 -2
  13. package/dist/chunks/{edit-dashboard-visual-ClLcFLD_.js → edit-dashboard-visual-BIuWXuCC.js} +8796 -8713
  14. package/dist/chunks/edit-dashboard-visual-DGhTFzSF.js +183 -0
  15. package/dist/chunks/index-CwzM5Lxh.js +1360 -0
  16. package/dist/chunks/{index-DJFckbGE.js → index-DQApwxKL.js} +50852 -48379
  17. package/dist/chunks/{palette-BqJlrRto.js → palette-BwGE32UR.js} +2 -7
  18. package/dist/chunks/{palette-DD-i7bNS.js → palette-DFjOzeAG.js} +3 -23
  19. package/dist/chunks/{resource-management-panel-CoHy6cOi.js → resource-management-panel-BqJAVm7E.js} +1 -1
  20. package/dist/chunks/{resource-management-panel-BS9nfJbb.js → resource-management-panel-CD_TQoTn.js} +3 -3
  21. package/dist/chunks/{save-CFBIhbHD.js → save-B3tqymYm.js} +1 -1
  22. package/dist/chunks/{save-j-clxFtx.js → save-QktcpXPy.js} +1 -1
  23. package/dist/chunks/{switch-BH17qlxH.js → switch-B72T1Hf_.js} +27 -22
  24. package/dist/chunks/{switch-BFhVVwh9.js → switch-BuZXNXQV.js} +431 -390
  25. package/dist/chunks/{use-create-flow-overlay-state-Lmk-mIkA.js → use-create-flow-overlay-state-Bg-LkLP7.js} +4 -4
  26. package/dist/chunks/{use-create-flow-overlay-state-BSUi4chy.js → use-create-flow-overlay-state-iUCs5ZgT.js} +1 -1
  27. package/dist/chunks/{use-visual-utils-CikIkKb2.js → use-visual-utils-D_2r0Fmm.js} +2 -2
  28. package/dist/chunks/{use-visual-utils-CR9nLyEz.js → use-visual-utils-DqVxN0_F.js} +1 -1
  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 -44
  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/edit-dashboard-visual-331vOmKT.js +0 -183
  43. package/dist/chunks/index-BOGpMmRo.js +0 -1360
  44. package/dist/chunks/rotate-ccw-CdGW8Rxm.js +0 -6
  45. package/dist/chunks/rotate-ccw-X8MbX_hF.js +0 -14
@@ -590,10 +590,7 @@ declare interface ColumnSettings {
590
590
  maxWidth?: number;
591
591
  textOverflow?: 'ellipsis' | 'wrap' | 'clip';
592
592
  textWrap: 'wrap' | 'nowrap';
593
- /**
594
- * Totals-row behavior for this column. Undefined = 'none'. The footer
595
- * renders only when at least one visible column has a non-'none' behavior.
596
- */
593
+ /** Deprecated/inert. Totals are controlled by tablePrefs.tableStyle.totals. */
597
594
  totalsBehavior?: TotalsBehavior;
598
595
  totalsLabel?: string;
599
596
  numberFormat: {
@@ -633,6 +630,90 @@ declare type ColumnSettingsMap = Record<string, ColumnSettings>;
633
630
 
634
631
  declare type ColumnType = 'string' | 'number' | 'date';
635
632
 
633
+ declare type ComparisonOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte';
634
+
635
+ declare type ConditionalFormatCondition = {
636
+ kind: 'comparison';
637
+ columnId: string;
638
+ operator: ComparisonOperator;
639
+ value: unknown;
640
+ } | {
641
+ kind: 'between';
642
+ columnId: string;
643
+ min: unknown;
644
+ max: unknown;
645
+ inclusive?: boolean;
646
+ } | {
647
+ kind: 'blank';
648
+ columnId: string;
649
+ isBlank: boolean;
650
+ } | {
651
+ kind: 'contains';
652
+ columnId: string;
653
+ value: string;
654
+ caseSensitive?: boolean;
655
+ exact?: boolean;
656
+ } | {
657
+ kind: 'topBottom';
658
+ columnId: string;
659
+ direction: 'top' | 'bottom';
660
+ count: number;
661
+ } | {
662
+ kind: 'colorScale';
663
+ columnId: string;
664
+ range: 'auto' | 'manual';
665
+ min?: number;
666
+ mid?: number;
667
+ max?: number;
668
+ colors: {
669
+ min: string;
670
+ mid?: string;
671
+ max: string;
672
+ };
673
+ } | {
674
+ kind: 'dataBar';
675
+ columnId: string;
676
+ range: 'auto' | 'manual';
677
+ min?: number;
678
+ max?: number;
679
+ color: string;
680
+ showValue?: boolean;
681
+ };
682
+
683
+ declare type ConditionalFormatRule = {
684
+ id: string;
685
+ name?: string;
686
+ enabled?: boolean;
687
+ target: ConditionalFormatTarget;
688
+ condition: ConditionalFormatCondition;
689
+ style?: ConditionalFormatStyle;
690
+ };
691
+
692
+ declare type ConditionalFormatStyle = {
693
+ backgroundColor?: string;
694
+ textColor?: string;
695
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
696
+ italic?: boolean;
697
+ textDecoration?: 'none' | 'underline' | 'line-through';
698
+ icon?: 'arrowUp' | 'arrowDown' | 'warning' | 'check' | 'x';
699
+ dataBar?: {
700
+ color: string;
701
+ showValue: boolean;
702
+ };
703
+ };
704
+
705
+ declare type ConditionalFormatTarget = {
706
+ level: 'cell' | 'row';
707
+ columnIds?: string[];
708
+ conditionColumnId?: string;
709
+ applyToColumnIds?: string[];
710
+ tableParts?: TablePart[];
711
+ rowRoles?: string[];
712
+ depth?: number;
713
+ includeTotals?: boolean;
714
+ includeSubtotals?: boolean;
715
+ };
716
+
636
717
  export declare type ConnectionPolicy = {
637
718
  connectionId?: string;
638
719
  name: string;
@@ -1222,12 +1303,6 @@ export declare type DocumentSpacerSection = {
1222
1303
  heightPx: number;
1223
1304
  };
1224
1305
 
1225
- export declare type DocumentTableDensity = 'comfortable' | 'standard' | 'compact' | 'dense';
1226
-
1227
- export declare type DocumentTableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
1228
-
1229
- export declare type DocumentTableHeaderStyle = 'plain' | 'filled' | 'accent';
1230
-
1231
1306
  export declare type DocumentTableSection = {
1232
1307
  id: string;
1233
1308
  type: 'table';
@@ -1238,30 +1313,9 @@ export declare type DocumentTableSection = {
1238
1313
  columnFormatting?: Record<string, unknown>;
1239
1314
  repeatHeaderOnPageBreak?: boolean;
1240
1315
  rowHeightPx?: number;
1241
- style?: DocumentTableStyle;
1242
- totalsStyle?: DocumentTableTotalsStyle;
1243
1316
  };
1244
1317
  };
1245
1318
 
1246
- export declare type DocumentTableStyle = {
1247
- density?: DocumentTableDensity;
1248
- headerStyle?: DocumentTableHeaderStyle;
1249
- headerBackgroundColor?: string;
1250
- headerTextColor?: string;
1251
- stripedRows?: boolean;
1252
- gridLines?: DocumentTableGridLines;
1253
- wrapText?: boolean;
1254
- };
1255
-
1256
- export declare type DocumentTableTotalsFontWeight = 'normal' | 'medium' | 'semibold' | 'bold';
1257
-
1258
- export declare type DocumentTableTotalsStyle = {
1259
- backgroundColor?: string;
1260
- textColor?: string;
1261
- fontWeight?: DocumentTableTotalsFontWeight;
1262
- borderTop?: boolean;
1263
- };
1264
-
1265
1319
  export declare type DocumentTextContent = DocumentTextNode[];
1266
1320
 
1267
1321
  export declare type DocumentTextInlineFormat = {
@@ -2287,6 +2341,29 @@ declare type TableAppearance = {
2287
2341
  };
2288
2342
  };
2289
2343
 
2344
+ declare type TableBaseFormatting = {
2345
+ version: TableFormattingVersion;
2346
+ tableParts?: Partial<Record<TablePart, TableBaseStyle>>;
2347
+ columns?: Record<string, {
2348
+ body?: TableBaseStyle;
2349
+ header?: TableBaseStyle;
2350
+ footer?: TableBaseStyle;
2351
+ }>;
2352
+ };
2353
+
2354
+ declare type TableBaseStyle = {
2355
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
2356
+ italic?: boolean;
2357
+ textColor?: string;
2358
+ backgroundColor?: string;
2359
+ textDecoration?: 'none' | 'underline' | 'line-through';
2360
+ };
2361
+
2362
+ declare type TableConditionalFormatting = {
2363
+ version: TableFormattingVersion;
2364
+ rules: ConditionalFormatRule[];
2365
+ };
2366
+
2290
2367
  /**
2291
2368
  * Row rhythm for the whole table. Authors pick one per card; undefined
2292
2369
  * falls back to 'compact' (the canonical default — dense scanning, matches
@@ -2295,8 +2372,18 @@ declare type TableAppearance = {
2295
2372
  */
2296
2373
  declare type TableDensity = 'dense' | 'compact' | 'standard' | 'comfortable' | 'spacious';
2297
2374
 
2375
+ declare type TableFormattingVersion = 1;
2376
+
2377
+ declare type TableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
2378
+
2379
+ declare type TableHeaderStyle = 'plain' | 'filled' | 'accent';
2380
+
2381
+ declare type TablePart = 'body' | 'header' | 'footer' | 'subtotal' | 'grandTotal';
2382
+
2298
2383
  declare type TablePreferences = {
2299
2384
  columnSettingsMap?: ColumnSettingsMap;
2385
+ baseFormatting?: TableBaseFormatting;
2386
+ conditionalFormatting?: TableConditionalFormatting;
2300
2387
  selectColumnVisible?: boolean;
2301
2388
  columnVisibility?: Record<string, boolean>;
2302
2389
  columnSizing?: ColumnSizingState;
@@ -2304,7 +2391,29 @@ declare type TablePreferences = {
2304
2391
  enableDevModePagination?: boolean;
2305
2392
  forceClientPagination?: boolean;
2306
2393
  density?: TableDensity;
2307
- documentWrapText?: boolean;
2394
+ tableStyle?: TableStylePreferences;
2395
+ };
2396
+
2397
+ declare type TableStylePreferences = {
2398
+ headerStyle?: TableHeaderStyle;
2399
+ headerBackgroundColor?: string;
2400
+ headerTextColor?: string;
2401
+ stripedRows?: boolean;
2402
+ gridLines?: TableGridLines;
2403
+ wrapText?: boolean;
2404
+ totals?: TableTotalsStylePreferences;
2405
+ };
2406
+
2407
+ declare type TableTotalsFontWeight = 'normal' | 'medium' | 'semibold' | 'bold';
2408
+
2409
+ declare type TableTotalsStylePreferences = {
2410
+ enabled?: boolean;
2411
+ backgroundColor?: string;
2412
+ textColor?: string;
2413
+ fontWeight?: TableTotalsFontWeight;
2414
+ borderTop?: boolean;
2415
+ borderTopStyle?: 'solid' | 'dashed' | 'dotted' | 'double';
2416
+ borderTopColor?: string;
2308
2417
  };
2309
2418
 
2310
2419
  /**
@@ -3265,18 +3374,7 @@ export declare type TokenSecurityPolicy = {
3265
3374
  };
3266
3375
  };
3267
3376
 
3268
- /**
3269
- * Per-column contribution to the table-level totals row (`<tfoot>`).
3270
- * Additive and optional — omitting it keeps the cell empty in the footer,
3271
- * matching existing behavior when a totals row is not needed.
3272
- *
3273
- * - 'sum' → aggregate the column across the full dataset
3274
- * - 'avg' → arithmetic mean across the full dataset
3275
- * - 'count' → non-null count across the full dataset
3276
- * - 'label' → render `totalsLabel` (or 'Total') as static text — typically
3277
- * on the first column so the footer reads as a labeled row
3278
- * - 'none' → blank cell in the footer
3279
- */
3377
+ /** Historical per-column totals shape. Runtime totals are table-level now. */
3280
3378
  declare type TotalsBehavior = 'sum' | 'avg' | 'count' | 'label' | 'none';
3281
3379
 
3282
3380
  /** Point style options supported by Chart.js */
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.305",
8
+ "version": "0.1.306",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",
@@ -140,7 +140,7 @@
140
140
  "culori": "^4.0.2",
141
141
  "date-fns": "^3.6.0",
142
142
  "date-fns-tz": "^3.2.0",
143
- "dompurify": "^3.3.1",
143
+ "dompurify": "^3.4.2",
144
144
  "fast-deep-equal": "^3.1.3",
145
145
  "immer": "^10.0.3",
146
146
  "jwt-decode": "^4.0.0",
@@ -183,7 +183,7 @@
183
183
  "react-dom": "$react-dom"
184
184
  },
185
185
  "devDependencies": {
186
- "@microsoft/api-extractor": "^7.52.1",
186
+ "@microsoft/api-extractor": "^7.58.7",
187
187
  "@tanstack/react-query-devtools": "^5.62.15",
188
188
  "@testing-library/jest-dom": "^6.9.1",
189
189
  "@testing-library/react": "^16.3.0",
@@ -214,7 +214,7 @@
214
214
  "eslint-plugin-react-refresh": "^0.4.5",
215
215
  "jsdom": "^26.1.0",
216
216
  "path": "^0.12.7",
217
- "postcss": "^8.4.35",
217
+ "postcss": "^8.5.13",
218
218
  "postcss-prefix-selector": "^2.1.0",
219
219
  "postcss-preset-env": "^10.0.9",
220
220
  "prettier-plugin-tailwindcss": "^0.6.1",