react-semaphor 0.1.294 → 0.1.296

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 (40) hide show
  1. package/dist/chunks/{braces-DfDQiR3J.js → braces-BNXseceK.js} +1 -1
  2. package/dist/chunks/{braces-DR-GdaLC.js → braces-DVrX_3Q_.js} +1 -1
  3. package/dist/chunks/dashboard-controls-CKKZcVA5.js +2219 -0
  4. package/dist/chunks/dashboard-controls-DS2xJxHU.js +47 -0
  5. package/dist/chunks/dashboard-filter-controls-button-nqfmscB7.js +11 -0
  6. package/dist/chunks/{dashboard-filter-controls-button-DxgGUl00.js → dashboard-filter-controls-button-xPaIlNHP.js} +501 -495
  7. package/dist/chunks/{dashboard-json-BvTeHePu.js → dashboard-json-cuj9vYY9.js} +1 -1
  8. package/dist/chunks/{dashboard-json-DQW8TN0I.js → dashboard-json-ovQyHWw6.js} +1 -1
  9. package/dist/chunks/{dashboard-summary-settings-dialog-BsmKiGud.js → dashboard-summary-settings-dialog-BUg3Qyhh.js} +1 -1
  10. package/dist/chunks/{dashboard-summary-settings-dialog-q7fx3YAK.js → dashboard-summary-settings-dialog-DF076HeJ.js} +1 -1
  11. package/dist/chunks/{edit-dashboard-visual-RVl9nbDZ.js → edit-dashboard-visual-32TAM00c.js} +5373 -5302
  12. package/dist/chunks/edit-dashboard-visual-BtiMcO-L.js +183 -0
  13. package/dist/chunks/{index-DerPpfv0.js → index-BDeJH9hO.js} +103982 -88259
  14. package/dist/chunks/index-Dbrs96G8.js +1533 -0
  15. package/dist/chunks/{resource-management-panel-epydPwyM.js → resource-management-panel-2qcXsKwg.js} +2 -2
  16. package/dist/chunks/{resource-management-panel-DnZ1rw1A.js → resource-management-panel-C4qoxy_g.js} +31 -30
  17. package/dist/chunks/use-create-flow-overlay-state-BMD3YRzU.js +21 -0
  18. package/dist/chunks/{use-create-flow-overlay-state-C5vdfXhM.js → use-create-flow-overlay-state-CHeppRNE.js} +572 -568
  19. package/dist/chunks/{use-visual-utils-D9Kknvjl.js → use-visual-utils-BIHLaVwh.js} +70 -68
  20. package/dist/chunks/use-visual-utils-dOYWf6nM.js +1 -0
  21. package/dist/dashboard/index.cjs +1 -1
  22. package/dist/dashboard/index.js +1 -1
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.js +113 -112
  25. package/dist/style.css +1 -1
  26. package/dist/surfboard/index.cjs +1 -1
  27. package/dist/surfboard/index.js +2 -2
  28. package/dist/types/dashboard.d.ts +271 -0
  29. package/dist/types/main.d.ts +324 -0
  30. package/dist/types/shared.d.ts +240 -0
  31. package/dist/types/surfboard.d.ts +271 -0
  32. package/dist/types/types.d.ts +271 -0
  33. package/package.json +7 -1
  34. package/dist/chunks/dashboard-controls-C3Z9bpYE.js +0 -2014
  35. package/dist/chunks/dashboard-controls-DGEVXgP5.js +0 -47
  36. package/dist/chunks/dashboard-filter-controls-button-BIYT1ucX.js +0 -11
  37. package/dist/chunks/edit-dashboard-visual-ChKj-Lzr.js +0 -183
  38. package/dist/chunks/index-BlspGR07.js +0 -1435
  39. package/dist/chunks/use-create-flow-overlay-state-Bcg4EgoD.js +0 -21
  40. package/dist/chunks/use-visual-utils-Dw_yw9zU.js +0 -1
@@ -259,6 +259,12 @@ declare interface ColumnSettings {
259
259
  maxWidth?: number;
260
260
  textOverflow?: 'ellipsis' | 'wrap' | 'clip';
261
261
  textWrap: 'wrap' | 'nowrap';
262
+ /**
263
+ * Totals-row behavior for this column. Undefined = 'none'. The footer
264
+ * renders only when at least one visible column has a non-'none' behavior.
265
+ */
266
+ totalsBehavior?: TotalsBehavior;
267
+ totalsLabel?: string;
262
268
  numberFormat: {
263
269
  style: 'decimal' | 'currency' | 'percent' | 'scientific';
264
270
  currency: string;
@@ -271,6 +277,14 @@ declare interface ColumnSettings {
271
277
  dataBarColor: string;
272
278
  dataBarMinValue?: number;
273
279
  dataBarMaxValue?: number;
280
+ /**
281
+ * When true, render the cell bg with a heatmap intensity tint scaled
282
+ * across the column's value range. Composes with the existing text
283
+ * color/color-range logic (tint is bg only). `showDataBar` takes
284
+ * precedence when both are set — per the canonical design, a cell is
285
+ * either a data-bar or a heatmap, never both.
286
+ */
287
+ showHeatmap?: boolean;
274
288
  };
275
289
  dateFormat: {
276
290
  format: string;
@@ -469,6 +483,206 @@ declare type Dialect = 'mysql' | 'postgres' | 'bigquery' | 'redshift' | 'snowfla
469
483
 
470
484
  declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
471
485
 
486
+ declare type DocumentChartSection = {
487
+ id: string;
488
+ type: 'chart';
489
+ title?: string;
490
+ card: TCard;
491
+ heightPx: number;
492
+ };
493
+
494
+ declare type DocumentControlInputDefinition = DocumentInputBase & {
495
+ kind: 'control';
496
+ control: ControlDefinition;
497
+ exports?: DocumentInputExportKey[];
498
+ };
499
+
500
+ declare type DocumentDefinition = {
501
+ version: 1;
502
+ page: DocumentPageSetup;
503
+ runtime?: DocumentRuntimeSettings;
504
+ inputs?: DocumentInputDefinition[];
505
+ defaultInputValues?: Record<string, unknown>;
506
+ header?: DocumentHeaderRegion;
507
+ footer?: DocumentFooterRegion;
508
+ sections: DocumentSection[];
509
+ theme?: DocumentTheme;
510
+ };
511
+
512
+ declare type DocumentFilterInputDefinition = DocumentInputBase & {
513
+ kind: 'filter';
514
+ filter: TFilter;
515
+ exports?: DocumentInputExportKey[];
516
+ };
517
+
518
+ declare type DocumentFooterRegion = DocumentRegionBase & {
519
+ region: 'footer';
520
+ layout: {
521
+ type: 'preset';
522
+ preset: 'mvp_footer';
523
+ };
524
+ };
525
+
526
+ declare type DocumentHeaderRegion = DocumentRegionBase & {
527
+ region: 'header';
528
+ layout: {
529
+ type: 'preset';
530
+ preset: 'mvp_header';
531
+ };
532
+ };
533
+
534
+ declare type DocumentImageRegionBlock = DocumentRegionBlockBase & {
535
+ type: 'image';
536
+ role?: 'logo';
537
+ src: string;
538
+ alt?: string;
539
+ widthPx?: number;
540
+ };
541
+
542
+ declare type DocumentInputBase = {
543
+ id: string;
544
+ label: string;
545
+ variableName: string;
546
+ requiredAtExecution: boolean;
547
+ documentPlacement?: 'input_bar';
548
+ description?: string;
549
+ };
550
+
551
+ declare type DocumentInputDefinition = DocumentFilterInputDefinition | DocumentControlInputDefinition;
552
+
553
+ declare type DocumentInputExportKey = 'label' | 'value' | 'start' | 'end' | 'range';
554
+
555
+ declare type DocumentPageBreakSection = {
556
+ id: string;
557
+ type: 'page_break';
558
+ };
559
+
560
+ declare type DocumentPageSetup = {
561
+ size: 'letter' | 'a4';
562
+ orientation: 'portrait' | 'landscape';
563
+ margins: {
564
+ top: number;
565
+ right: number;
566
+ bottom: number;
567
+ left: number;
568
+ unit: 'in' | 'mm';
569
+ };
570
+ };
571
+
572
+ declare type DocumentRegionBase = {
573
+ enabled: boolean;
574
+ heightPx?: number;
575
+ layout: DocumentRegionLayout;
576
+ blocks: DocumentRegionBlock[];
577
+ };
578
+
579
+ declare type DocumentRegionBlock = DocumentTextRegionBlock | DocumentImageRegionBlock;
580
+
581
+ declare type DocumentRegionBlockBase = {
582
+ id: string;
583
+ area?: 'left' | 'center' | 'right' | 'title' | 'metadata' | 'note' | 'pageInfo';
584
+ };
585
+
586
+ declare type DocumentRegionLayout = {
587
+ type: 'preset';
588
+ preset: 'mvp_header' | 'mvp_footer';
589
+ };
590
+
591
+ declare type DocumentRuntimeSettings = {
592
+ generatedAtFormat?: string;
593
+ };
594
+
595
+ declare type DocumentSection = DocumentTextSection | DocumentTableSection | DocumentChartSection | DocumentSpacerSection | DocumentPageBreakSection;
596
+
597
+ declare type DocumentSpacerSection = {
598
+ id: string;
599
+ type: 'spacer';
600
+ heightPx: number;
601
+ };
602
+
603
+ declare type DocumentTableDensity = 'comfortable' | 'standard' | 'compact' | 'dense';
604
+
605
+ declare type DocumentTableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
606
+
607
+ declare type DocumentTableHeaderStyle = 'plain' | 'filled' | 'accent';
608
+
609
+ declare type DocumentTableSection = {
610
+ id: string;
611
+ type: 'table';
612
+ title?: string;
613
+ card: TCard;
614
+ table: {
615
+ totalsRow?: boolean;
616
+ columnFormatting?: Record<string, unknown>;
617
+ repeatHeaderOnPageBreak?: boolean;
618
+ rowHeightPx?: number;
619
+ style?: DocumentTableStyle;
620
+ };
621
+ };
622
+
623
+ declare type DocumentTableStyle = {
624
+ density?: DocumentTableDensity;
625
+ headerStyle?: DocumentTableHeaderStyle;
626
+ headerBackgroundColor?: string;
627
+ headerTextColor?: string;
628
+ stripedRows?: boolean;
629
+ gridLines?: DocumentTableGridLines;
630
+ wrapText?: boolean;
631
+ };
632
+
633
+ declare type DocumentTextContent = DocumentTextNode[];
634
+
635
+ declare type DocumentTextInlineFormat = {
636
+ bold?: boolean;
637
+ italic?: boolean;
638
+ underline?: boolean;
639
+ };
640
+
641
+ declare type DocumentTextNode = {
642
+ type: 'text';
643
+ value: string;
644
+ format?: DocumentTextInlineFormat;
645
+ } | {
646
+ type: 'variable';
647
+ ref: DocumentVariableRef;
648
+ format?: DocumentTextInlineFormat;
649
+ };
650
+
651
+ declare type DocumentTextRegionBlock = DocumentRegionBlockBase & {
652
+ type: 'text';
653
+ role?: 'title' | 'metadata' | 'note' | 'pageInfo';
654
+ content: DocumentTextContent;
655
+ style?: DocumentTextStyle;
656
+ };
657
+
658
+ declare type DocumentTextSection = {
659
+ id: string;
660
+ type: 'text';
661
+ content: DocumentTextContent;
662
+ style?: DocumentTextStyle;
663
+ };
664
+
665
+ declare type DocumentTextStyle = {
666
+ fontSize?: number;
667
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
668
+ color?: string;
669
+ align?: 'left' | 'center' | 'right';
670
+ };
671
+
672
+ declare type DocumentTheme = {
673
+ fontFamily?: string;
674
+ primaryColor?: string;
675
+ };
676
+
677
+ declare type DocumentVariableRef = {
678
+ source: 'input';
679
+ inputId: string;
680
+ export: DocumentInputExportKey;
681
+ } | {
682
+ source: 'documentMeta';
683
+ key: 'generatedAt' | 'pageNumber' | 'pageCount';
684
+ };
685
+
472
686
  declare interface DrillDownInteraction {
473
687
  mode: 'drillDown';
474
688
  /**
@@ -1204,6 +1418,14 @@ declare type StyleProps = {
1204
1418
  };
1205
1419
  };
1206
1420
 
1421
+ /**
1422
+ * Row rhythm for the whole table. Authors pick one per card; undefined
1423
+ * falls back to 'compact' (the canonical default — dense scanning, matches
1424
+ * the Linear-style spec). Drives row padding, cell font size, and header
1425
+ * font size via a shared density spec in DataTable.
1426
+ */
1427
+ declare type TableDensity = 'dense' | 'compact' | 'standard' | 'comfortable' | 'spacious';
1428
+
1207
1429
  declare type TablePreferences = {
1208
1430
  columnSettingsMap?: ColumnSettingsMap;
1209
1431
  selectColumnVisible?: boolean;
@@ -1212,6 +1434,8 @@ declare type TablePreferences = {
1212
1434
  pageSize?: number;
1213
1435
  enableDevModePagination?: boolean;
1214
1436
  forceClientPagination?: boolean;
1437
+ density?: TableDensity;
1438
+ documentWrapText?: boolean;
1215
1439
  };
1216
1440
 
1217
1441
  /**
@@ -1891,11 +2115,26 @@ declare type TLegendOptions = {
1891
2115
  /** Line dash style options */
1892
2116
  declare type TLineStyle = 'solid' | 'dashed' | 'dotted' | 'dash-dot';
1893
2117
 
2118
+ /**
2119
+ * Per-column contribution to the table-level totals row (`<tfoot>`).
2120
+ * Additive and optional — omitting it keeps the cell empty in the footer,
2121
+ * matching existing behavior when a totals row is not needed.
2122
+ *
2123
+ * - 'sum' → aggregate the column across the full dataset
2124
+ * - 'avg' → arithmetic mean across the full dataset
2125
+ * - 'count' → non-null count across the full dataset
2126
+ * - 'label' → render `totalsLabel` (or 'Total') as static text — typically
2127
+ * on the first column so the footer reads as a labeled row
2128
+ * - 'none' → blank cell in the footer
2129
+ */
2130
+ declare type TotalsBehavior = 'sum' | 'avg' | 'count' | 'label' | 'none';
2131
+
1894
2132
  /** Point style options supported by Chart.js */
1895
2133
  declare type TPointStyle = 'circle' | 'cross' | 'crossRot' | 'dash' | 'line' | 'rect' | 'rectRounded' | 'rectRot' | 'star' | 'triangle';
1896
2134
 
1897
2135
  declare type TSheet = {
1898
2136
  id: string;
2137
+ kind?: 'dashboard' | 'document';
1899
2138
  title?: string;
1900
2139
  description?: string;
1901
2140
  layout?: ReactGridLayout.Layout[];
@@ -1903,6 +2142,7 @@ declare type TSheet = {
1903
2142
  cards?: TCard[];
1904
2143
  frames?: TFrame[];
1905
2144
  calculatedFields?: Field[];
2145
+ document?: DocumentDefinition;
1906
2146
  };
1907
2147
 
1908
2148
  /**
@@ -279,6 +279,12 @@ declare interface ColumnSettings {
279
279
  maxWidth?: number;
280
280
  textOverflow?: 'ellipsis' | 'wrap' | 'clip';
281
281
  textWrap: 'wrap' | 'nowrap';
282
+ /**
283
+ * Totals-row behavior for this column. Undefined = 'none'. The footer
284
+ * renders only when at least one visible column has a non-'none' behavior.
285
+ */
286
+ totalsBehavior?: TotalsBehavior;
287
+ totalsLabel?: string;
282
288
  numberFormat: {
283
289
  style: 'decimal' | 'currency' | 'percent' | 'scientific';
284
290
  currency: string;
@@ -291,6 +297,14 @@ declare interface ColumnSettings {
291
297
  dataBarColor: string;
292
298
  dataBarMinValue?: number;
293
299
  dataBarMaxValue?: number;
300
+ /**
301
+ * When true, render the cell bg with a heatmap intensity tint scaled
302
+ * across the column's value range. Composes with the existing text
303
+ * color/color-range logic (tint is bg only). `showDataBar` takes
304
+ * precedence when both are set — per the canonical design, a cell is
305
+ * either a data-bar or a heatmap, never both.
306
+ */
307
+ showHeatmap?: boolean;
294
308
  };
295
309
  dateFormat: {
296
310
  format: string;
@@ -456,6 +470,18 @@ export declare type DashboardProps = {
456
470
  cardControlDefinitions?: ControlDefinition[];
457
471
  controlBindings?: ControlBinding[];
458
472
  };
473
+ /**
474
+ * Document-local runtime values for print/render entry points. Values are
475
+ * keyed by document input id and are intentionally separate from dashboard
476
+ * filters/controls.
477
+ */
478
+ documentInputValues?: DocumentInputRuntimeValues;
479
+ /**
480
+ * Render target for print entry points. Generic dashboard PDF exports also
481
+ * use cardDisplay.mode="print"; document-specific print handling must only
482
+ * run when this is explicitly "document".
483
+ */
484
+ renderMode?: 'dashboard' | 'document';
459
485
  customStyle?: TStyle;
460
486
  currentTheme?: Theme;
461
487
  version?: string;
@@ -594,6 +620,215 @@ declare type Dialect = 'mysql' | 'postgres' | 'bigquery' | 'redshift' | 'snowfla
594
620
 
595
621
  export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
596
622
 
623
+ export declare type DocumentChartSection = {
624
+ id: string;
625
+ type: 'chart';
626
+ title?: string;
627
+ card: TCard;
628
+ heightPx: number;
629
+ };
630
+
631
+ export declare type DocumentControlInputDefinition = DocumentInputBase & {
632
+ kind: 'control';
633
+ control: ControlDefinition;
634
+ exports?: DocumentInputExportKey[];
635
+ };
636
+
637
+ export declare type DocumentDefinition = {
638
+ version: 1;
639
+ page: DocumentPageSetup;
640
+ runtime?: DocumentRuntimeSettings;
641
+ inputs?: DocumentInputDefinition[];
642
+ defaultInputValues?: Record<string, unknown>;
643
+ header?: DocumentHeaderRegion;
644
+ footer?: DocumentFooterRegion;
645
+ sections: DocumentSection[];
646
+ theme?: DocumentTheme;
647
+ };
648
+
649
+ export declare type DocumentFilterInputDefinition = DocumentInputBase & {
650
+ kind: 'filter';
651
+ filter: TFilter;
652
+ exports?: DocumentInputExportKey[];
653
+ };
654
+
655
+ export declare type DocumentFooterRegion = DocumentRegionBase & {
656
+ region: 'footer';
657
+ layout: {
658
+ type: 'preset';
659
+ preset: 'mvp_footer';
660
+ };
661
+ };
662
+
663
+ export declare type DocumentHeaderRegion = DocumentRegionBase & {
664
+ region: 'header';
665
+ layout: {
666
+ type: 'preset';
667
+ preset: 'mvp_header';
668
+ };
669
+ };
670
+
671
+ export declare type DocumentImageRegionBlock = DocumentRegionBlockBase & {
672
+ type: 'image';
673
+ role?: 'logo';
674
+ src: string;
675
+ alt?: string;
676
+ widthPx?: number;
677
+ };
678
+
679
+ export declare type DocumentInputBase = {
680
+ id: string;
681
+ label: string;
682
+ variableName: string;
683
+ requiredAtExecution: boolean;
684
+ documentPlacement?: 'input_bar';
685
+ description?: string;
686
+ };
687
+
688
+ export declare type DocumentInputDefinition = DocumentFilterInputDefinition | DocumentControlInputDefinition;
689
+
690
+ export declare type DocumentInputExportKey = 'label' | 'value' | 'start' | 'end' | 'range';
691
+
692
+ export declare type DocumentInputRuntimeValues = {
693
+ sheetId?: string;
694
+ filterValuesByInputId?: Record<string, TFilterValue | undefined>;
695
+ controlValuesByInputId?: Record<string, unknown>;
696
+ generatedAt?: string;
697
+ };
698
+
699
+ export declare type DocumentPageBreakSection = {
700
+ id: string;
701
+ type: 'page_break';
702
+ };
703
+
704
+ export declare type DocumentPageSetup = {
705
+ size: 'letter' | 'a4';
706
+ orientation: 'portrait' | 'landscape';
707
+ margins: {
708
+ top: number;
709
+ right: number;
710
+ bottom: number;
711
+ left: number;
712
+ unit: 'in' | 'mm';
713
+ };
714
+ };
715
+
716
+ export declare type DocumentRegion = DocumentHeaderRegion | DocumentFooterRegion;
717
+
718
+ export declare type DocumentRegionBase = {
719
+ enabled: boolean;
720
+ heightPx?: number;
721
+ layout: DocumentRegionLayout;
722
+ blocks: DocumentRegionBlock[];
723
+ };
724
+
725
+ export declare type DocumentRegionBlock = DocumentTextRegionBlock | DocumentImageRegionBlock;
726
+
727
+ export declare type DocumentRegionBlockBase = {
728
+ id: string;
729
+ area?: 'left' | 'center' | 'right' | 'title' | 'metadata' | 'note' | 'pageInfo';
730
+ };
731
+
732
+ export declare type DocumentRegionLayout = {
733
+ type: 'preset';
734
+ preset: 'mvp_header' | 'mvp_footer';
735
+ };
736
+
737
+ export declare type DocumentRuntimeSettings = {
738
+ generatedAtFormat?: string;
739
+ };
740
+
741
+ export declare type DocumentSection = DocumentTextSection | DocumentTableSection | DocumentChartSection | DocumentSpacerSection | DocumentPageBreakSection;
742
+
743
+ export declare type DocumentSpacerSection = {
744
+ id: string;
745
+ type: 'spacer';
746
+ heightPx: number;
747
+ };
748
+
749
+ export declare type DocumentTableDensity = 'comfortable' | 'standard' | 'compact' | 'dense';
750
+
751
+ export declare type DocumentTableGridLines = 'none' | 'outer' | 'inner' | 'horizontal' | 'vertical' | 'top' | 'right' | 'bottom' | 'left' | 'full';
752
+
753
+ export declare type DocumentTableHeaderStyle = 'plain' | 'filled' | 'accent';
754
+
755
+ export declare type DocumentTableSection = {
756
+ id: string;
757
+ type: 'table';
758
+ title?: string;
759
+ card: TCard;
760
+ table: {
761
+ totalsRow?: boolean;
762
+ columnFormatting?: Record<string, unknown>;
763
+ repeatHeaderOnPageBreak?: boolean;
764
+ rowHeightPx?: number;
765
+ style?: DocumentTableStyle;
766
+ };
767
+ };
768
+
769
+ export declare type DocumentTableStyle = {
770
+ density?: DocumentTableDensity;
771
+ headerStyle?: DocumentTableHeaderStyle;
772
+ headerBackgroundColor?: string;
773
+ headerTextColor?: string;
774
+ stripedRows?: boolean;
775
+ gridLines?: DocumentTableGridLines;
776
+ wrapText?: boolean;
777
+ };
778
+
779
+ export declare type DocumentTextContent = DocumentTextNode[];
780
+
781
+ export declare type DocumentTextInlineFormat = {
782
+ bold?: boolean;
783
+ italic?: boolean;
784
+ underline?: boolean;
785
+ };
786
+
787
+ export declare type DocumentTextNode = {
788
+ type: 'text';
789
+ value: string;
790
+ format?: DocumentTextInlineFormat;
791
+ } | {
792
+ type: 'variable';
793
+ ref: DocumentVariableRef;
794
+ format?: DocumentTextInlineFormat;
795
+ };
796
+
797
+ export declare type DocumentTextRegionBlock = DocumentRegionBlockBase & {
798
+ type: 'text';
799
+ role?: 'title' | 'metadata' | 'note' | 'pageInfo';
800
+ content: DocumentTextContent;
801
+ style?: DocumentTextStyle;
802
+ };
803
+
804
+ export declare type DocumentTextSection = {
805
+ id: string;
806
+ type: 'text';
807
+ content: DocumentTextContent;
808
+ style?: DocumentTextStyle;
809
+ };
810
+
811
+ export declare type DocumentTextStyle = {
812
+ fontSize?: number;
813
+ fontWeight?: 'normal' | 'medium' | 'semibold' | 'bold';
814
+ color?: string;
815
+ align?: 'left' | 'center' | 'right';
816
+ };
817
+
818
+ export declare type DocumentTheme = {
819
+ fontFamily?: string;
820
+ primaryColor?: string;
821
+ };
822
+
823
+ export declare type DocumentVariableRef = {
824
+ source: 'input';
825
+ inputId: string;
826
+ export: DocumentInputExportKey;
827
+ } | {
828
+ source: 'documentMeta';
829
+ key: 'generatedAt' | 'pageNumber' | 'pageCount';
830
+ };
831
+
597
832
  declare interface DrillDownInteraction {
598
833
  mode: 'drillDown';
599
834
  /**
@@ -1309,6 +1544,16 @@ declare type RelativeDateFilter = {
1309
1544
  to: number;
1310
1545
  };
1311
1546
 
1547
+ export declare type ResolvedDocumentInput = {
1548
+ inputId: string;
1549
+ variableName: string;
1550
+ rawValue: unknown;
1551
+ displayValue: string;
1552
+ filterValues?: TFilterValue[];
1553
+ controlValue?: unknown;
1554
+ exports: Record<string, string | number | boolean | null>;
1555
+ };
1556
+
1312
1557
  declare type ResolvedPrimaryDateField = {
1313
1558
  sourceDataset: string;
1314
1559
  sourceField: string;
@@ -1409,6 +1654,14 @@ export declare type StyleProps = {
1409
1654
 
1410
1655
  export declare function Surfboard({ showControls, showFooter, ...rest }: DashboardPlusProps): JSX.Element;
1411
1656
 
1657
+ /**
1658
+ * Row rhythm for the whole table. Authors pick one per card; undefined
1659
+ * falls back to 'compact' (the canonical default — dense scanning, matches
1660
+ * the Linear-style spec). Drives row padding, cell font size, and header
1661
+ * font size via a shared density spec in DataTable.
1662
+ */
1663
+ declare type TableDensity = 'dense' | 'compact' | 'standard' | 'comfortable' | 'spacious';
1664
+
1412
1665
  declare type TablePreferences = {
1413
1666
  columnSettingsMap?: ColumnSettingsMap;
1414
1667
  selectColumnVisible?: boolean;
@@ -1417,6 +1670,8 @@ declare type TablePreferences = {
1417
1670
  pageSize?: number;
1418
1671
  enableDevModePagination?: boolean;
1419
1672
  forceClientPagination?: boolean;
1673
+ density?: TableDensity;
1674
+ documentWrapText?: boolean;
1420
1675
  };
1421
1676
 
1422
1677
  /**
@@ -2141,11 +2396,26 @@ export declare type TLens = {
2141
2396
  /** Line dash style options */
2142
2397
  export declare type TLineStyle = 'solid' | 'dashed' | 'dotted' | 'dash-dot';
2143
2398
 
2399
+ /**
2400
+ * Per-column contribution to the table-level totals row (`<tfoot>`).
2401
+ * Additive and optional — omitting it keeps the cell empty in the footer,
2402
+ * matching existing behavior when a totals row is not needed.
2403
+ *
2404
+ * - 'sum' → aggregate the column across the full dataset
2405
+ * - 'avg' → arithmetic mean across the full dataset
2406
+ * - 'count' → non-null count across the full dataset
2407
+ * - 'label' → render `totalsLabel` (or 'Total') as static text — typically
2408
+ * on the first column so the footer reads as a labeled row
2409
+ * - 'none' → blank cell in the footer
2410
+ */
2411
+ declare type TotalsBehavior = 'sum' | 'avg' | 'count' | 'label' | 'none';
2412
+
2144
2413
  /** Point style options supported by Chart.js */
2145
2414
  export declare type TPointStyle = 'circle' | 'cross' | 'crossRot' | 'dash' | 'line' | 'rect' | 'rectRounded' | 'rectRot' | 'star' | 'triangle';
2146
2415
 
2147
2416
  export declare type TSheet = {
2148
2417
  id: string;
2418
+ kind?: 'dashboard' | 'document';
2149
2419
  title?: string;
2150
2420
  description?: string;
2151
2421
  layout?: ReactGridLayout.Layout[];
@@ -2153,6 +2423,7 @@ export declare type TSheet = {
2153
2423
  cards?: TCard[];
2154
2424
  frames?: TFrame[];
2155
2425
  calculatedFields?: Field[];
2426
+ document?: DocumentDefinition;
2156
2427
  };
2157
2428
 
2158
2429
  /**