react-semaphor 0.1.302 → 0.1.304

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 (56) hide show
  1. package/dist/appearance/index.cjs +1 -1
  2. package/dist/appearance/index.js +1 -1
  3. package/dist/brand-studio/index.cjs +5 -5
  4. package/dist/brand-studio/index.js +334 -385
  5. package/dist/chunks/common-types-C6cAQgyh.js +9 -0
  6. package/dist/chunks/common-types-nBuCd3u2.js +1 -0
  7. package/dist/chunks/{dashboard-controls-CZuC_QjN.js → dashboard-controls-CyFZfGaN.js} +800 -776
  8. package/dist/chunks/dashboard-controls-DCZnUFI0.js +47 -0
  9. package/dist/chunks/{dashboard-filter-controls-button-kfb_T18o.js → dashboard-filter-controls-button-DI7XUgZK.js} +142 -142
  10. package/dist/chunks/{dashboard-filter-controls-button-2I1ltWQ9.js → dashboard-filter-controls-button-YQZ-oeN5.js} +3 -3
  11. package/dist/chunks/{dashboard-json-Df6v2Jem.js → dashboard-json-C6R2qixD.js} +3 -3
  12. package/dist/chunks/{dashboard-json-C3v6rBdp.js → dashboard-json-Z8jz16Yj.js} +1 -1
  13. package/dist/chunks/{dashboard-summary-settings-dialog-DKAaWq-G.js → dashboard-summary-settings-dialog-BlD77h63.js} +2 -2
  14. package/dist/chunks/{dashboard-summary-settings-dialog-BBALEHJQ.js → dashboard-summary-settings-dialog-DJyY-PB9.js} +1 -1
  15. package/dist/chunks/{edit-dashboard-visual-CGBYahAK.js → edit-dashboard-visual-CNGc1zcN.js} +33 -33
  16. package/dist/chunks/{edit-dashboard-visual-D8L0cl_U.js → edit-dashboard-visual-CfRJXwDR.js} +167 -168
  17. package/dist/chunks/{index-uRJmUpof.js → index-CJdxSyQq.js} +679 -656
  18. package/dist/chunks/index-D2vz3gvd.js +1360 -0
  19. package/dist/chunks/index-DRlMUglg.js +4 -0
  20. package/dist/chunks/{index-BmoR3VQT.js → index-GHhvGdF9.js} +42745 -40322
  21. package/dist/chunks/{palette-326-dgn0.js → palette-BqJlrRto.js} +7 -2
  22. package/dist/chunks/{palette-jd7xiGTg.js → palette-DD-i7bNS.js} +23 -3
  23. package/dist/chunks/{resource-management-panel-C_c-BwrC.js → resource-management-panel-7Y4ITzGH.js} +65 -65
  24. package/dist/chunks/{resource-management-panel-DrcEEARD.js → resource-management-panel-Bdus73Iu.js} +1 -1
  25. package/dist/chunks/{rotate-ccw-BugHcM1w.js → rotate-ccw-CdGW8Rxm.js} +1 -1
  26. package/dist/chunks/{rotate-ccw-yFwqBFJZ.js → rotate-ccw-X8MbX_hF.js} +1 -1
  27. package/dist/chunks/{save-CaybXtdd.js → save-CFBIhbHD.js} +1 -1
  28. package/dist/chunks/{save-DU0FXUlM.js → save-j-clxFtx.js} +1 -1
  29. package/dist/chunks/{switch-CZtMtqEj.js → switch-BFhVVwh9.js} +4285 -3275
  30. package/dist/chunks/switch-BH17qlxH.js +163 -0
  31. package/dist/chunks/use-create-flow-overlay-state-CSytlf2H.js +16 -0
  32. package/dist/chunks/{use-create-flow-overlay-state-84Xe8VrP.js → use-create-flow-overlay-state-CllZvyvE.js} +318 -316
  33. package/dist/chunks/{use-visual-utils-lp5DfmvL.js → use-visual-utils-CDO4kVX5.js} +1 -1
  34. package/dist/chunks/{use-visual-utils-z3ifg6Fd.js → use-visual-utils-CyjLzcDG.js} +2 -2
  35. package/dist/dashboard/index.cjs +1 -1
  36. package/dist/dashboard/index.js +5 -5
  37. package/dist/index.cjs +1 -1
  38. package/dist/index.js +61 -60
  39. package/dist/style.css +1 -1
  40. package/dist/surfboard/index.cjs +1 -1
  41. package/dist/surfboard/index.js +6 -6
  42. package/dist/types/dashboard.d.ts +168 -0
  43. package/dist/types/index.cjs +1 -1
  44. package/dist/types/index.js +8 -11
  45. package/dist/types/main.d.ts +195 -2
  46. package/dist/types/shared.d.ts +120 -0
  47. package/dist/types/surfboard.d.ts +168 -0
  48. package/dist/types/types.d.ts +168 -0
  49. package/package.json +1 -1
  50. package/dist/chunks/braces-CpOcaBNm.js +0 -6
  51. package/dist/chunks/braces-TYclg8Hl.js +0 -23
  52. package/dist/chunks/dashboard-controls-BkuB9TQX.js +0 -47
  53. package/dist/chunks/index-Cxb9UUro.js +0 -4
  54. package/dist/chunks/index-eM6MU4q_.js +0 -1361
  55. package/dist/chunks/switch-AmoR1YIA.js +0 -163
  56. package/dist/chunks/use-create-flow-overlay-state-CiKVJGWF.js +0 -16
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../chunks/index-eM6MU4q_.js"),e=require("../types/index.cjs"),r=require("../chunks/dashboard-summary-settings-dialog-BBALEHJQ.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-D2vz3gvd.js"),e=require("../chunks/common-types-nBuCd3u2.js"),r=require("../chunks/dashboard-summary-settings-dialog-DJyY-PB9.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,10 +1,10 @@
1
- import { a as o } from "../chunks/index-BmoR3VQT.js";
2
- import { CONTROL_CARD_DEFAULT_VALUE as s, EMPTY_SELECTION as D } from "../types/index.js";
3
- import { C as m, D as t } from "../chunks/dashboard-summary-settings-dialog-DKAaWq-G.js";
1
+ import { a as o } from "../chunks/index-GHhvGdF9.js";
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-BlD77h63.js";
4
4
  export {
5
5
  s as CONTROL_CARD_DEFAULT_VALUE,
6
- m as CalendarPreferencesDialog,
7
- t as DashboardSummarySettingsDialog,
8
- D as EMPTY_SELECTION,
6
+ E as CalendarPreferencesDialog,
7
+ f as DashboardSummarySettingsDialog,
8
+ C as EMPTY_SELECTION,
9
9
  o as Surfboard
10
10
  };
@@ -427,6 +427,11 @@ export declare type ControlBinding = {
427
427
  mapping: Record<string, string>;
428
428
  };
429
429
 
430
+ export declare type ControlDashboardInput = DashboardInputBase & {
431
+ kind: 'control';
432
+ control: ControlDefinition;
433
+ };
434
+
430
435
  export declare type ControlDefinition = {
431
436
  id: string;
432
437
  label: string;
@@ -489,6 +494,118 @@ export declare type DashboardEventHandlers = {
489
494
  onExportData?: (payload: ExportDataPayload) => void;
490
495
  };
491
496
 
497
+ export declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
498
+
499
+ export declare type DashboardInputBase = {
500
+ id: string;
501
+ label: string;
502
+ variableName: string;
503
+ description?: string;
504
+ requiredAtExecution?: boolean;
505
+ scope: DashboardInputScope;
506
+ runtimeScope: DashboardInputRuntimeScope;
507
+ presentation?: DashboardInputPresentation;
508
+ exports?: DashboardInputExportKey[];
509
+ compatibility?: DashboardInputCompatibilityMetadata;
510
+ };
511
+
512
+ export declare type DashboardInputCompatibilityMetadata = {
513
+ source: 'dashboardFilter';
514
+ filterId: string;
515
+ } | {
516
+ source: 'dashboardControl';
517
+ controlId: string;
518
+ } | {
519
+ source: 'cardInlineFilter';
520
+ cardId: string;
521
+ filterId: string;
522
+ } | {
523
+ source: 'cardControl';
524
+ cardId: string;
525
+ controlId: string;
526
+ } | {
527
+ source: 'documentInput';
528
+ sheetId: string;
529
+ inputId: string;
530
+ };
531
+
532
+ export declare type DashboardInputExecutionSnapshot = {
533
+ sheetId?: string;
534
+ cardId?: string;
535
+ mode: 'dashboard' | 'document' | 'visual';
536
+ dashboardInputValues: DashboardInputValues;
537
+ generatedAt?: string;
538
+ timezone?: string;
539
+ };
540
+
541
+ export declare type DashboardInputExportKey = 'label' | 'value' | 'start' | 'end' | 'range';
542
+
543
+ export declare type DashboardInputPresentation = {
544
+ placement?: 'toolbar' | 'card_header' | 'advanced' | 'hidden';
545
+ widthPx?: number;
546
+ order?: number;
547
+ };
548
+
549
+ export declare type DashboardInputRuntimeScope = 'shared' | 'perSheet' | 'perCard' | 'perDocumentSection';
550
+
551
+ export declare type DashboardInputScope = {
552
+ kind: 'allSheets';
553
+ sheetKinds?: Array<'dashboard' | 'document'>;
554
+ } | {
555
+ kind: 'sheets';
556
+ sheetIds: string[];
557
+ } | {
558
+ kind: 'cards';
559
+ cardIds: string[];
560
+ } | {
561
+ kind: 'documentSections';
562
+ sheetId: string;
563
+ sectionIds: string[];
564
+ };
565
+
566
+ export declare type DashboardInputSlot = {
567
+ status: 'set';
568
+ value: DashboardInputValue;
569
+ } | {
570
+ status: 'cleared';
571
+ };
572
+
573
+ export declare type DashboardInputTextContent = Array<{
574
+ type: 'text';
575
+ value: string;
576
+ } | {
577
+ type: 'variable';
578
+ ref: DashboardInputVariableRef;
579
+ }>;
580
+
581
+ export declare type DashboardInputValue = {
582
+ kind: 'filter';
583
+ filterValue: TFilterValue;
584
+ } | {
585
+ kind: 'control';
586
+ value: unknown;
587
+ };
588
+
589
+ export declare type DashboardInputValues = {
590
+ shared?: Record<string, DashboardInputSlot>;
591
+ bySheetId?: Record<string, Record<string, DashboardInputSlot>>;
592
+ byCardId?: Record<string, Record<string, DashboardInputSlot>>;
593
+ byDocumentSectionId?: Record<string, Record<string, DashboardInputSlot>>;
594
+ };
595
+
596
+ export declare type DashboardInputVariableRef = {
597
+ source: 'dashboardInput';
598
+ inputId: string;
599
+ export: DashboardInputExportKey;
600
+ } | {
601
+ source: 'dashboardInputAlias';
602
+ variableName: string;
603
+ export?: DashboardInputExportKey;
604
+ } | {
605
+ source: 'documentMeta';
606
+ key: 'generatedAt' | 'pageNumber' | 'pageCount';
607
+ };
608
+
492
609
  /**
493
610
  * Unified dashboard preferences for both card display and UI modes
494
611
  */
@@ -544,8 +661,17 @@ export declare type DashboardProps = {
544
661
  * Document-local runtime values for print/render entry points. Values are
545
662
  * keyed by document input id and are intentionally separate from dashboard
546
663
  * filters/controls.
664
+ *
665
+ * @deprecated Use dashboardInputExecutionSnapshot for document print/export
666
+ * entry points backed by DashboardInput.
547
667
  */
548
668
  documentInputValues?: DocumentInputRuntimeValues;
669
+ /**
670
+ * Authoritative dashboard input runtime snapshot for print/render entry
671
+ * points. Document print/export should use this for DashboardInput-backed
672
+ * inputs instead of documentInputValues.
673
+ */
674
+ dashboardInputExecutionSnapshot?: DashboardInputExecutionSnapshot;
549
675
  /**
550
676
  * Render target for print entry points. Generic dashboard PDF exports also
551
677
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -1142,6 +1268,11 @@ declare interface FilterCondition {
1142
1268
  value: FilterValue;
1143
1269
  }
1144
1270
 
1271
+ export declare type FilterDashboardInput = DashboardInputBase & {
1272
+ kind: 'filter';
1273
+ filter: TFilter;
1274
+ };
1275
+
1145
1276
  /**
1146
1277
  * Display mode for individual filters
1147
1278
  * - 'canvas': Filter displayed as a draggable card on the dashboard canvas
@@ -1620,6 +1751,36 @@ declare type RelativeDateFilter = {
1620
1751
  to: number;
1621
1752
  };
1622
1753
 
1754
+ export declare type ResolvedDashboardInput = {
1755
+ id: string;
1756
+ kind: 'filter' | 'control';
1757
+ label: string;
1758
+ variableName: string;
1759
+ requiredAtExecution: boolean;
1760
+ slot?: DashboardInputSlot;
1761
+ rawValue?: unknown;
1762
+ displayValue: string;
1763
+ exports: Partial<Record<DashboardInputExportKey, string | number | boolean | null>>;
1764
+ filter?: TFilter;
1765
+ filterValue?: TFilterValue;
1766
+ control?: ControlDefinition;
1767
+ controlValue?: unknown;
1768
+ missingRequiredValue?: boolean;
1769
+ };
1770
+
1771
+ export declare type ResolvedDashboardInputContext = {
1772
+ inputs: DashboardInput[];
1773
+ resolvedInputs: ResolvedDashboardInput[];
1774
+ activeFilters: TFilterValue[];
1775
+ controlDefinitions: ControlDefinition[];
1776
+ cardControlDefinitions: ControlDefinition[];
1777
+ controlBindings: ControlBinding[];
1778
+ controlValues: Record<string, unknown>;
1779
+ variablesByName: Record<string, ResolvedDashboardInput>;
1780
+ variablesById: Record<string, ResolvedDashboardInput>;
1781
+ missingRequiredInputs: ResolvedDashboardInput[];
1782
+ };
1783
+
1623
1784
  export declare type ResolvedDocumentInput = {
1624
1785
  inputId: string;
1625
1786
  variableName: string;
@@ -2038,6 +2199,7 @@ export declare type TCardPreferences = {
2038
2199
  customVisualCode?: string;
2039
2200
  textVisualOptions?: {
2040
2201
  isDynamicText?: boolean;
2202
+ content?: DashboardInputTextContent;
2041
2203
  };
2042
2204
  mapVisualOptions?: {
2043
2205
  topoJsonUrl?: string;
@@ -2201,6 +2363,8 @@ export declare type TDashboard = {
2201
2363
  defaultFilterValues?: TFilterValue[];
2202
2364
  controls?: ControlDefinition[];
2203
2365
  defaultControlValues?: Record<string, unknown>;
2366
+ inputs?: DashboardInput[];
2367
+ defaultInputValues?: DashboardInputValues;
2204
2368
  filterLayout?: FilterLayoutSettings;
2205
2369
  };
2206
2370
 
@@ -2332,6 +2496,8 @@ declare type TFilter = {
2332
2496
  location?: FilterLocation;
2333
2497
  hide?: boolean;
2334
2498
  id: string;
2499
+ /** Alias exposed to document/text variables, for example {{region}}. */
2500
+ variableName?: string;
2335
2501
  connectionId: string;
2336
2502
  title: string;
2337
2503
  column: string;
@@ -2465,6 +2631,8 @@ declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year' | '
2465
2631
  */
2466
2632
  export declare type TInlineFilter = {
2467
2633
  id: string;
2634
+ /** Alias exposed to document/text variables, for example {{region}}. */
2635
+ variableName?: string;
2468
2636
  column: string;
2469
2637
  title: string;
2470
2638
  dataType: string;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _={mode:"all"},E={tz:"UTC",weekStart:1,anchor:"now"},A={database:null,schema:null,table:null},T="__card_default__";exports.CONTROL_CARD_DEFAULT_VALUE=T;exports.DEFAULT_CALENDAR_CONTEXT=E;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=_;exports.EMPTY_SELECTION=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../chunks/common-types-nBuCd3u2.js"),T={mode:"all"},A={tz:"UTC",weekStart:1,anchor:"now"};exports.CONTROL_CARD_DEFAULT_VALUE=E.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=E.EMPTY_SELECTION;exports.DEFAULT_CALENDAR_CONTEXT=A;exports.DEFAULT_SEMANTIC_DOMAIN_ACCESS=T;
@@ -1,18 +1,15 @@
1
- const _ = {
1
+ import { C as _, E as o } from "../chunks/common-types-C6cAQgyh.js";
2
+ const E = {
2
3
  mode: "all"
3
- }, t = {
4
+ }, A = {
4
5
  tz: "UTC",
5
6
  weekStart: 1,
6
7
  // Monday (ISO standard)
7
8
  anchor: "now"
8
- }, E = {
9
- database: null,
10
- schema: null,
11
- table: null
12
- }, a = "__card_default__";
9
+ };
13
10
  export {
14
- a as CONTROL_CARD_DEFAULT_VALUE,
15
- t as DEFAULT_CALENDAR_CONTEXT,
16
- _ as DEFAULT_SEMANTIC_DOMAIN_ACCESS,
17
- E as EMPTY_SELECTION
11
+ _ as CONTROL_CARD_DEFAULT_VALUE,
12
+ A as DEFAULT_CALENDAR_CONTEXT,
13
+ E as DEFAULT_SEMANTIC_DOMAIN_ACCESS,
14
+ o as EMPTY_SELECTION
18
15
  };
@@ -41,6 +41,15 @@ declare type Actions_2 = {
41
41
  setGlobalStyle: (style: TStyle) => void;
42
42
  setDefaultFilterValues: (filterValues: TFilterValue[] | undefined) => void;
43
43
  setDefaultControlValues: (controlValues: Record<string, unknown> | undefined) => void;
44
+ setDashboardInputs: (inputs: DashboardInput[]) => void;
45
+ upsertDashboardInput: (input: DashboardInput) => void;
46
+ removeDashboardInput: (inputId: string) => void;
47
+ setDefaultDashboardInputValues: (values: DashboardInputValues | undefined) => void;
48
+ setDashboardInputValues: (values: DashboardInputValues) => void;
49
+ setDashboardInputValuesAreAuthoritative: (isAuthoritative: boolean) => void;
50
+ setDashboardInputSlot: (input: Pick<DashboardInput, 'id' | 'runtimeScope'>, target: DashboardInputRuntimeTarget, slot: DashboardInputSlot) => void;
51
+ clearDashboardInputSlot: (input: Pick<DashboardInput, 'id' | 'runtimeScope'>, target: DashboardInputRuntimeTarget) => void;
52
+ removeDashboardInputSlot: (input: Pick<DashboardInput, 'id' | 'runtimeScope'>, target: DashboardInputRuntimeTarget) => void;
44
53
  setDashboardControlsModel: (controls: ControlDefinition[], defaultValues?: Record<string, unknown>, options?: DashboardControlsModelOptions) => void;
45
54
  updateDashboardControl: (controlId: string, updates: Partial<ControlDefinition>) => void;
46
55
  reorderDashboardControls: (orderedControlIds: string[]) => void;
@@ -62,10 +71,14 @@ declare type Actions_2 = {
62
71
  setThemeStyle: (themeStyle: StyleProps) => void;
63
72
  setDashboard: (dashboard: TDashboard, options?: {
64
73
  semanticExecutionPayload?: SemanticExecutionPayload;
74
+ dashboardInputValues?: DashboardInputValues;
75
+ dashboardInputValuesAreAuthoritative?: boolean;
65
76
  }) => void;
66
77
  setDashboardWithFilterValues: (dashboard: TDashboard, filterValues: TFilterValue[], runtimeOverrides?: Record<string, unknown>, options?: {
67
78
  selectedSheetId?: string | null;
68
79
  semanticExecutionPayload?: SemanticExecutionPayload;
80
+ dashboardInputValues?: DashboardInputValues;
81
+ dashboardInputValuesAreAuthoritative?: boolean;
69
82
  }) => void;
70
83
  hydrateRuntimeControlValues: (dashboard: TDashboard, runtimeOverrides?: Record<string, unknown>) => void;
71
84
  mergeSemanticExecutionPayload: (semanticExecutionPayload: SemanticExecutionPayload) => void;
@@ -100,7 +113,7 @@ declare type Actions_2 = {
100
113
  setCardInfo: (cardId: string, info: string) => void;
101
114
  setCardSql: (sheetId: string, cardId: string, sql: string) => void;
102
115
  setCardPython: (cardId: string, pythonCode: string) => void;
103
- setCardDescription: (sheetId: string, cardId: string, description: string) => void;
116
+ setCardDescription: (sheetId: string, cardId: string, description: string, preferences?: TCard['preferences']) => void;
104
117
  setCardKpiOptions: (sheetId: string, cardId: string, kpiOptions: Record<string, any>) => void;
105
118
  updateCardFilters: (cardId: string, filters: FilterGroup | undefined) => void;
106
119
  clearCardFilters: (cardId: string) => void;
@@ -1300,6 +1313,11 @@ export declare type ControlBinding = {
1300
1313
 
1301
1314
  declare type ControlBindingsByCardId = Record<string, ControlBinding[] | undefined>;
1302
1315
 
1316
+ export declare type ControlDashboardInput = DashboardInputBase & {
1317
+ kind: 'control';
1318
+ control: ControlDefinition;
1319
+ };
1320
+
1303
1321
  export declare type ControlDefinition = {
1304
1322
  id: string;
1305
1323
  label: string;
@@ -1483,6 +1501,124 @@ declare type DashboardFilterControlsButtonProps = {
1483
1501
  dropdownContentClassName?: string;
1484
1502
  };
1485
1503
 
1504
+ export declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
1505
+
1506
+ export declare type DashboardInputBase = {
1507
+ id: string;
1508
+ label: string;
1509
+ variableName: string;
1510
+ description?: string;
1511
+ requiredAtExecution?: boolean;
1512
+ scope: DashboardInputScope;
1513
+ runtimeScope: DashboardInputRuntimeScope;
1514
+ presentation?: DashboardInputPresentation;
1515
+ exports?: DashboardInputExportKey[];
1516
+ compatibility?: DashboardInputCompatibilityMetadata;
1517
+ };
1518
+
1519
+ export declare type DashboardInputCompatibilityMetadata = {
1520
+ source: 'dashboardFilter';
1521
+ filterId: string;
1522
+ } | {
1523
+ source: 'dashboardControl';
1524
+ controlId: string;
1525
+ } | {
1526
+ source: 'cardInlineFilter';
1527
+ cardId: string;
1528
+ filterId: string;
1529
+ } | {
1530
+ source: 'cardControl';
1531
+ cardId: string;
1532
+ controlId: string;
1533
+ } | {
1534
+ source: 'documentInput';
1535
+ sheetId: string;
1536
+ inputId: string;
1537
+ };
1538
+
1539
+ export declare type DashboardInputExecutionSnapshot = {
1540
+ sheetId?: string;
1541
+ cardId?: string;
1542
+ mode: 'dashboard' | 'document' | 'visual';
1543
+ dashboardInputValues: DashboardInputValues;
1544
+ generatedAt?: string;
1545
+ timezone?: string;
1546
+ };
1547
+
1548
+ export declare type DashboardInputExportKey = 'label' | 'value' | 'start' | 'end' | 'range';
1549
+
1550
+ export declare type DashboardInputPresentation = {
1551
+ placement?: 'toolbar' | 'card_header' | 'advanced' | 'hidden';
1552
+ widthPx?: number;
1553
+ order?: number;
1554
+ };
1555
+
1556
+ export declare type DashboardInputRuntimeScope = 'shared' | 'perSheet' | 'perCard' | 'perDocumentSection';
1557
+
1558
+ declare type DashboardInputRuntimeTarget = {
1559
+ sheetId?: string | null;
1560
+ cardId?: string | null;
1561
+ sectionId?: string | null;
1562
+ };
1563
+
1564
+ export declare type DashboardInputScope = {
1565
+ kind: 'allSheets';
1566
+ sheetKinds?: Array<'dashboard' | 'document'>;
1567
+ } | {
1568
+ kind: 'sheets';
1569
+ sheetIds: string[];
1570
+ } | {
1571
+ kind: 'cards';
1572
+ cardIds: string[];
1573
+ } | {
1574
+ kind: 'documentSections';
1575
+ sheetId: string;
1576
+ sectionIds: string[];
1577
+ };
1578
+
1579
+ export declare type DashboardInputSlot = {
1580
+ status: 'set';
1581
+ value: DashboardInputValue;
1582
+ } | {
1583
+ status: 'cleared';
1584
+ };
1585
+
1586
+ export declare type DashboardInputTextContent = Array<{
1587
+ type: 'text';
1588
+ value: string;
1589
+ } | {
1590
+ type: 'variable';
1591
+ ref: DashboardInputVariableRef;
1592
+ }>;
1593
+
1594
+ export declare type DashboardInputValue = {
1595
+ kind: 'filter';
1596
+ filterValue: TFilterValue;
1597
+ } | {
1598
+ kind: 'control';
1599
+ value: unknown;
1600
+ };
1601
+
1602
+ export declare type DashboardInputValues = {
1603
+ shared?: Record<string, DashboardInputSlot>;
1604
+ bySheetId?: Record<string, Record<string, DashboardInputSlot>>;
1605
+ byCardId?: Record<string, Record<string, DashboardInputSlot>>;
1606
+ byDocumentSectionId?: Record<string, Record<string, DashboardInputSlot>>;
1607
+ };
1608
+
1609
+ export declare type DashboardInputVariableRef = {
1610
+ source: 'dashboardInput';
1611
+ inputId: string;
1612
+ export: DashboardInputExportKey;
1613
+ } | {
1614
+ source: 'dashboardInputAlias';
1615
+ variableName: string;
1616
+ export?: DashboardInputExportKey;
1617
+ } | {
1618
+ source: 'documentMeta';
1619
+ key: 'generatedAt' | 'pageNumber' | 'pageCount';
1620
+ };
1621
+
1486
1622
  declare type DashboardPlusProps = {
1487
1623
  showControls?: boolean;
1488
1624
  showFooter?: boolean;
@@ -1543,8 +1679,17 @@ export declare type DashboardProps = {
1543
1679
  * Document-local runtime values for print/render entry points. Values are
1544
1680
  * keyed by document input id and are intentionally separate from dashboard
1545
1681
  * filters/controls.
1682
+ *
1683
+ * @deprecated Use dashboardInputExecutionSnapshot for document print/export
1684
+ * entry points backed by DashboardInput.
1546
1685
  */
1547
1686
  documentInputValues?: DocumentInputRuntimeValues;
1687
+ /**
1688
+ * Authoritative dashboard input runtime snapshot for print/render entry
1689
+ * points. Document print/export should use this for DashboardInput-backed
1690
+ * inputs instead of documentInputValues.
1691
+ */
1692
+ dashboardInputExecutionSnapshot?: DashboardInputExecutionSnapshot;
1548
1693
  /**
1549
1694
  * Render target for print entry points. Generic dashboard PDF exports also
1550
1695
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -1622,6 +1767,10 @@ export declare type DashboardStore = {
1622
1767
  controlValues: Record<string, unknown>;
1623
1768
  /** Runtime-only card-scoped control values, keyed by cardId then controlId. */
1624
1769
  cardControlValuesMap: Record<string, Record<string, unknown>>;
1770
+ /** Runtime-only dashboard input values keyed by input runtime scope. */
1771
+ dashboardInputValues: DashboardInputValues;
1772
+ /** True when dashboardInputValues came from a strict execution snapshot. */
1773
+ dashboardInputValuesAreAuthoritative: boolean;
1625
1774
  semanticExecutionPayload: SemanticExecutionPayload;
1626
1775
  isDashboardPanelOpen: boolean;
1627
1776
  drillHistory: Array<{
@@ -2069,7 +2218,8 @@ export declare function downloadDocumentPdf(apiServiceUrl: string, authToken: Au
2069
2218
  title: string;
2070
2219
  pageSize: string;
2071
2220
  orientation: string;
2072
- inputValues: DocumentInputRuntimeValues;
2221
+ inputSnapshot?: DashboardInputExecutionSnapshot;
2222
+ inputValues?: DocumentInputRuntimeValues;
2073
2223
  timezone?: string;
2074
2224
  password?: string;
2075
2225
  }): Promise<void>;
@@ -2721,6 +2871,11 @@ export declare interface FilterCondition {
2721
2871
  value: FilterValue;
2722
2872
  }
2723
2873
 
2874
+ export declare type FilterDashboardInput = DashboardInputBase & {
2875
+ kind: 'filter';
2876
+ filter: TFilter;
2877
+ };
2878
+
2724
2879
  /**
2725
2880
  * Display mode for individual filters
2726
2881
  * - 'canvas': Filter displayed as a draggable card on the dashboard canvas
@@ -3584,6 +3739,36 @@ export declare function resolveDatamodelName(datamodelName: string): string;
3584
3739
 
3585
3740
  export declare const resolveDataType: (value: any) => string;
3586
3741
 
3742
+ export declare type ResolvedDashboardInput = {
3743
+ id: string;
3744
+ kind: 'filter' | 'control';
3745
+ label: string;
3746
+ variableName: string;
3747
+ requiredAtExecution: boolean;
3748
+ slot?: DashboardInputSlot;
3749
+ rawValue?: unknown;
3750
+ displayValue: string;
3751
+ exports: Partial<Record<DashboardInputExportKey, string | number | boolean | null>>;
3752
+ filter?: TFilter;
3753
+ filterValue?: TFilterValue;
3754
+ control?: ControlDefinition;
3755
+ controlValue?: unknown;
3756
+ missingRequiredValue?: boolean;
3757
+ };
3758
+
3759
+ export declare type ResolvedDashboardInputContext = {
3760
+ inputs: DashboardInput[];
3761
+ resolvedInputs: ResolvedDashboardInput[];
3762
+ activeFilters: TFilterValue[];
3763
+ controlDefinitions: ControlDefinition[];
3764
+ cardControlDefinitions: ControlDefinition[];
3765
+ controlBindings: ControlBinding[];
3766
+ controlValues: Record<string, unknown>;
3767
+ variablesByName: Record<string, ResolvedDashboardInput>;
3768
+ variablesById: Record<string, ResolvedDashboardInput>;
3769
+ missingRequiredInputs: ResolvedDashboardInput[];
3770
+ };
3771
+
3587
3772
  export declare type ResolvedDocumentInput = {
3588
3773
  inputId: string;
3589
3774
  variableName: string;
@@ -4259,6 +4444,7 @@ export declare type TCardPreferences = {
4259
4444
  customVisualCode?: string;
4260
4445
  textVisualOptions?: {
4261
4446
  isDynamicText?: boolean;
4447
+ content?: DashboardInputTextContent;
4262
4448
  };
4263
4449
  mapVisualOptions?: {
4264
4450
  topoJsonUrl?: string;
@@ -4424,6 +4610,8 @@ export declare type TDashboard = {
4424
4610
  defaultFilterValues?: TFilterValue[];
4425
4611
  controls?: ControlDefinition[];
4426
4612
  defaultControlValues?: Record<string, unknown>;
4613
+ inputs?: DashboardInput[];
4614
+ defaultInputValues?: DashboardInputValues;
4427
4615
  filterLayout?: FilterLayoutSettings;
4428
4616
  };
4429
4617
 
@@ -4557,6 +4745,8 @@ export declare type TFilter = {
4557
4745
  location?: FilterLocation;
4558
4746
  hide?: boolean;
4559
4747
  id: string;
4748
+ /** Alias exposed to document/text variables, for example {{region}}. */
4749
+ variableName?: string;
4560
4750
  connectionId: string;
4561
4751
  title: string;
4562
4752
  column: string;
@@ -4696,6 +4886,8 @@ export declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'ye
4696
4886
  */
4697
4887
  export declare type TInlineFilter = {
4698
4888
  id: string;
4889
+ /** Alias exposed to document/text variables, for example {{region}}. */
4890
+ variableName?: string;
4699
4891
  column: string;
4700
4892
  title: string;
4701
4893
  dataType: string;
@@ -5851,6 +6043,7 @@ export declare function usePristineSnapshotInitializer(isDashboardEditing: boole
5851
6043
 
5852
6044
  export declare function useResourceManagement(resourceType: ResourceType, onDeleteSuccess?: () => void, onCreateSuccess?: (data?: any) => void): {
5853
6045
  resources: any;
6046
+ organizationAppearance: AppearanceSpec | null;
5854
6047
  isLoading: boolean;
5855
6048
  isError: boolean;
5856
6049
  isFetching: boolean;