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.
- package/dist/chunks/{braces-DfDQiR3J.js → braces-BNXseceK.js} +1 -1
- package/dist/chunks/{braces-DR-GdaLC.js → braces-DVrX_3Q_.js} +1 -1
- package/dist/chunks/dashboard-controls-CKKZcVA5.js +2219 -0
- package/dist/chunks/dashboard-controls-DS2xJxHU.js +47 -0
- package/dist/chunks/dashboard-filter-controls-button-nqfmscB7.js +11 -0
- package/dist/chunks/{dashboard-filter-controls-button-DxgGUl00.js → dashboard-filter-controls-button-xPaIlNHP.js} +501 -495
- package/dist/chunks/{dashboard-json-BvTeHePu.js → dashboard-json-cuj9vYY9.js} +1 -1
- package/dist/chunks/{dashboard-json-DQW8TN0I.js → dashboard-json-ovQyHWw6.js} +1 -1
- package/dist/chunks/{dashboard-summary-settings-dialog-BsmKiGud.js → dashboard-summary-settings-dialog-BUg3Qyhh.js} +1 -1
- package/dist/chunks/{dashboard-summary-settings-dialog-q7fx3YAK.js → dashboard-summary-settings-dialog-DF076HeJ.js} +1 -1
- package/dist/chunks/{edit-dashboard-visual-RVl9nbDZ.js → edit-dashboard-visual-32TAM00c.js} +5373 -5302
- package/dist/chunks/edit-dashboard-visual-BtiMcO-L.js +183 -0
- package/dist/chunks/{index-DerPpfv0.js → index-BDeJH9hO.js} +103982 -88259
- package/dist/chunks/index-Dbrs96G8.js +1533 -0
- package/dist/chunks/{resource-management-panel-epydPwyM.js → resource-management-panel-2qcXsKwg.js} +2 -2
- package/dist/chunks/{resource-management-panel-DnZ1rw1A.js → resource-management-panel-C4qoxy_g.js} +31 -30
- package/dist/chunks/use-create-flow-overlay-state-BMD3YRzU.js +21 -0
- package/dist/chunks/{use-create-flow-overlay-state-C5vdfXhM.js → use-create-flow-overlay-state-CHeppRNE.js} +572 -568
- package/dist/chunks/{use-visual-utils-D9Kknvjl.js → use-visual-utils-BIHLaVwh.js} +70 -68
- package/dist/chunks/use-visual-utils-dOYWf6nM.js +1 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +113 -112
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/dashboard.d.ts +271 -0
- package/dist/types/main.d.ts +324 -0
- package/dist/types/shared.d.ts +240 -0
- package/dist/types/surfboard.d.ts +271 -0
- package/dist/types/types.d.ts +271 -0
- package/package.json +7 -1
- package/dist/chunks/dashboard-controls-C3Z9bpYE.js +0 -2014
- package/dist/chunks/dashboard-controls-DGEVXgP5.js +0 -47
- package/dist/chunks/dashboard-filter-controls-button-BIYT1ucX.js +0 -11
- package/dist/chunks/edit-dashboard-visual-ChKj-Lzr.js +0 -183
- package/dist/chunks/index-BlspGR07.js +0 -1435
- package/dist/chunks/use-create-flow-overlay-state-Bcg4EgoD.js +0 -21
- package/dist/chunks/use-visual-utils-Dw_yw9zU.js +0 -1
package/dist/types/shared.d.ts
CHANGED
|
@@ -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
|
/**
|