react-semaphor 0.1.449 → 0.1.454

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 (147) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +119 -112
  3. package/dist/appearance/index.cjs +1 -1
  4. package/dist/appearance/index.js +1 -1
  5. package/dist/brand-studio/index.cjs +4 -4
  6. package/dist/brand-studio/index.js +15 -13
  7. package/dist/briefings/index.cjs +1 -1
  8. package/dist/briefings/index.js +39 -2131
  9. package/dist/chunks/{analyze-result-contract-T-0Ntzys.js → analyze-result-contract-BbRJ-C06.js} +1 -1
  10. package/dist/chunks/{analyze-result-contract-BHb7sUUW.cjs → analyze-result-contract-LPDNldic.cjs} +1 -1
  11. package/dist/chunks/canonical-result-keys-BA0HCP4e.cjs +1 -0
  12. package/dist/chunks/canonical-result-keys-D6avdjpA.js +467 -0
  13. package/dist/chunks/color-CJvdlFM_.js +2162 -0
  14. package/dist/chunks/color-CyB5o13F.cjs +4 -0
  15. package/dist/chunks/{common-types-CQ6SHfLk.cjs → common-types-C57kJ59w.cjs} +1 -1
  16. package/dist/chunks/{common-types-B7Jk3Rtj.js → common-types-H51FLKB7.js} +1 -1
  17. package/dist/chunks/contracts-CoCOpd_i.js +11 -0
  18. package/dist/chunks/contracts-CtB2VONT.cjs +1 -0
  19. package/dist/chunks/dashboard-briefing-launcher-Dwj1i7lr.cjs +26 -0
  20. package/dist/chunks/{dashboard-briefing-launcher-DCHiEkLE.js → dashboard-briefing-launcher-SYroFdae.js} +86 -84
  21. package/dist/chunks/{dashboard-controls-DwRFCcHV.js → dashboard-controls-1LpeU2sz.js} +15 -13
  22. package/dist/chunks/{dashboard-controls-CaFioayc.cjs → dashboard-controls-CpFoh7-A.cjs} +1 -1
  23. package/dist/chunks/dashboard-date-comparison-definition-Ces4alFm.cjs +1 -0
  24. package/dist/chunks/{dashboard-date-comparison-definition-Ba-clViK.js → dashboard-date-comparison-definition-DC3ekV2S.js} +1 -1
  25. package/dist/chunks/{dashboard-json-WoILbfTe.js → dashboard-json-D-T-sQxU.js} +25 -23
  26. package/dist/chunks/dashboard-json-DwSQopc_.cjs +1 -0
  27. package/dist/chunks/edit-dashboard-visual-BEmoQAET.cjs +172 -0
  28. package/dist/chunks/{edit-dashboard-visual-ciFhxqaI.js → edit-dashboard-visual-DqxUq4Bs.js} +6925 -6947
  29. package/dist/chunks/editor-action-buttons-18r2xwei.cjs +16 -0
  30. package/dist/chunks/{editor-action-buttons-BPo_45pM.js → editor-action-buttons-B2l3WIRC.js} +41 -39
  31. package/dist/chunks/format-types-CFHQoIuk.js +1350 -0
  32. package/dist/chunks/format-types-PSZZ7hG8.cjs +1 -0
  33. package/dist/chunks/index-Bn5wlkHt.cjs +4 -0
  34. package/dist/chunks/index-ByFbacH7.cjs +1 -0
  35. package/dist/chunks/index-CACdoqu3.js +318 -0
  36. package/dist/chunks/index-CLB_NGZ8.cjs +1392 -0
  37. package/dist/chunks/index-Ca784dpx.js +3714 -0
  38. package/dist/chunks/{index-CPuawpXJ.js → index-DAoS4BNU.js} +48514 -48484
  39. package/dist/chunks/index-DSKR3nKn.js +421 -0
  40. package/dist/chunks/index-F25jnH0p.cjs +1 -0
  41. package/dist/chunks/matrix-result-contract-CofATICL.js +437 -0
  42. package/dist/chunks/matrix-result-contract-zamd9euI.cjs +1 -0
  43. package/dist/chunks/pivot-header-presentation-DhyQXxKq.cjs +4 -0
  44. package/dist/chunks/pivot-header-presentation-ckYOQ4aZ.js +557 -0
  45. package/dist/chunks/{pivot-result-identity-CDLRT-YG.cjs → pivot-result-identity-Bb4EixVN.cjs} +1 -1
  46. package/dist/chunks/{pivot-result-identity-CwJWpKI7.js → pivot-result-identity-DU1v-5Xk.js} +1 -1
  47. package/dist/chunks/pivot-result-lifecycle-DmcF1ris.cjs +1 -0
  48. package/dist/chunks/pivot-result-lifecycle-sjzIOpvp.js +1641 -0
  49. package/dist/chunks/raw-temporal-contract-BtjH_G-d.cjs +1 -0
  50. package/dist/chunks/raw-temporal-contract-CxncLze5.js +64 -0
  51. package/dist/chunks/report-preferences-dialog-BgSvlDXa.cjs +1 -0
  52. package/dist/chunks/report-preferences-dialog-DDc2WUa0.js +723 -0
  53. package/dist/chunks/{report-runtime-context-C8LZFsqV.cjs → report-runtime-context-DqxS4wbi.cjs} +1 -1
  54. package/dist/chunks/{report-runtime-context-bCy3CVzK.js → report-runtime-context-SM6YO61_.js} +5 -5
  55. package/dist/chunks/saved-temporal-bucket-format-CFfWXRl9.cjs +1 -0
  56. package/dist/chunks/saved-temporal-bucket-format-SGAV0ivR.js +922 -0
  57. package/dist/chunks/{switch-BXet-Sno.js → switch-BeZW-HnS.js} +4350 -5249
  58. package/dist/chunks/switch-D-CCcfhc.cjs +138 -0
  59. package/dist/chunks/temporal-bucket-5UYEotyQ.js +810 -0
  60. package/dist/chunks/temporal-bucket-DHY1y9lq.cjs +1 -0
  61. package/dist/chunks/temporal-bucket-authoring-K1kE6R_z.js +222 -0
  62. package/dist/chunks/temporal-bucket-authoring-o3Emn05L.cjs +1 -0
  63. package/dist/chunks/{temporal-bucket-contract-ChDBWX8I.cjs → temporal-bucket-contract-D2-93DGr.cjs} +1 -1
  64. package/dist/chunks/{temporal-bucket-contract-_F6vNhhH.js → temporal-bucket-contract-D5d-xEl3.js} +1 -1
  65. package/dist/chunks/{token-types-BdQ8kHBm.cjs → token-types-D7CaaI80.cjs} +1 -1
  66. package/dist/chunks/{token-types-BHR58aTy.js → token-types-GbxRUozo.js} +1 -1
  67. package/dist/chunks/{update-policy-BxvYMYz0.cjs → update-policy-BmiOd0PB.cjs} +1 -1
  68. package/dist/chunks/{update-policy-g0rCQ9BM.js → update-policy-hednMF-0.js} +1 -1
  69. package/dist/chunks/validators-BDYprKI9.cjs +1 -0
  70. package/dist/chunks/{validators-Cs74WVie.js → validators-DEmd8Sin.js} +1561 -1197
  71. package/dist/dashboard/index.cjs +1 -1
  72. package/dist/dashboard/index.js +2 -2
  73. package/dist/dashboard-authoring/index.cjs +3 -3
  74. package/dist/dashboard-authoring/index.js +35 -32
  75. package/dist/data-app-builder/index.cjs +1 -1
  76. package/dist/data-app-builder/index.js +2 -2
  77. package/dist/data-app-codegen/index.cjs +1 -1
  78. package/dist/data-app-codegen/index.js +2 -2
  79. package/dist/data-app-codegen-node/index.cjs +1 -1
  80. package/dist/data-app-codegen-node/index.js +3 -3
  81. package/dist/data-app-sdk/index.cjs +1 -1
  82. package/dist/data-app-sdk/index.js +78 -77
  83. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  84. package/dist/data-app-sdk-adapters/index.js +29 -30
  85. package/dist/data-app-sdk-validation/index.cjs +1 -1
  86. package/dist/data-app-sdk-validation/index.js +21 -21
  87. package/dist/format-utils/index.cjs +3 -3
  88. package/dist/format-utils/index.js +156 -140
  89. package/dist/index.cjs +1 -1
  90. package/dist/index.js +157 -155
  91. package/dist/report-runtime-context/index.cjs +1 -1
  92. package/dist/report-runtime-context/index.js +2 -2
  93. package/dist/style.css +1 -1
  94. package/dist/surfboard/index.cjs +1 -1
  95. package/dist/surfboard/index.js +3 -3
  96. package/dist/types/analytics-protocol.d.ts +81 -11
  97. package/dist/types/briefings.d.ts +727 -19
  98. package/dist/types/dashboard-assistant.d.ts +37 -17
  99. package/dist/types/dashboard-authoring.d.ts +61 -14
  100. package/dist/types/dashboard.d.ts +137 -12
  101. package/dist/types/data-app-builder.d.ts +28 -2
  102. package/dist/types/data-app-codegen-node.d.ts +29 -3
  103. package/dist/types/data-app-codegen.d.ts +29 -3
  104. package/dist/types/data-app-sdk-adapters.d.ts +28 -2
  105. package/dist/types/data-app-sdk-validation.d.ts +51 -7
  106. package/dist/types/data-app-sdk.d.ts +55 -10
  107. package/dist/types/format-utils.d.ts +190 -3
  108. package/dist/types/index.cjs +1 -1
  109. package/dist/types/index.js +4 -4
  110. package/dist/types/main.d.ts +128 -33
  111. package/dist/types/shared.d.ts +14 -12
  112. package/dist/types/surfboard.d.ts +138 -13
  113. package/dist/types/types.d.ts +117 -23
  114. package/dist/types/value-format-preferences.d.ts +3 -0
  115. package/package.json +2 -1
  116. package/dist/chunks/card-config-utils-15sRtebL.cjs +0 -1
  117. package/dist/chunks/card-config-utils-BYZ5MJOh.js +0 -16
  118. package/dist/chunks/catalog-field-grounding-Bnx-3tE0.cjs +0 -1
  119. package/dist/chunks/catalog-field-grounding-S2jKwKGD.js +0 -100
  120. package/dist/chunks/dashboard-briefing-launcher-DDgDr2s3.cjs +0 -26
  121. package/dist/chunks/dashboard-date-comparison-definition-DZq0htjG.cjs +0 -1
  122. package/dist/chunks/dashboard-input-contract-DSt8dGzP.js +0 -18
  123. package/dist/chunks/dashboard-input-contract-DV3cshjz.cjs +0 -1
  124. package/dist/chunks/dashboard-json-CYtvwtvj.cjs +0 -1
  125. package/dist/chunks/edit-dashboard-visual-DwKcvlsF.cjs +0 -177
  126. package/dist/chunks/editor-action-buttons-BVmsk0Aj.cjs +0 -16
  127. package/dist/chunks/format-types-CSv0V7mm.cjs +0 -1
  128. package/dist/chunks/format-types-DZGgYj39.js +0 -1663
  129. package/dist/chunks/index-CJdxSyQq.js +0 -2578
  130. package/dist/chunks/index-DPv8_Ild.cjs +0 -1395
  131. package/dist/chunks/index-DRlMUglg.cjs +0 -4
  132. package/dist/chunks/metric-comparison-97zHGEx5.js +0 -387
  133. package/dist/chunks/metric-comparison-CUAJ8n4y.cjs +0 -1
  134. package/dist/chunks/pivot-result-lifecycle-BBabQ_da.js +0 -914
  135. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +0 -4
  136. package/dist/chunks/presentation-execution-BLfPTGX_.js +0 -637
  137. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +0 -1
  138. package/dist/chunks/report-preferences-dialog-D9ZCGh9l.js +0 -691
  139. package/dist/chunks/report-preferences-dialog-DaqTEcac.cjs +0 -1
  140. package/dist/chunks/switch-Cjk6G06r.cjs +0 -138
  141. package/dist/chunks/temporal-bucket-BnPxGrAi.js +0 -446
  142. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +0 -1
  143. package/dist/chunks/temporal-bucket-authoring-CgOuakGW.js +0 -205
  144. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +0 -1
  145. package/dist/chunks/temporal-result-owner-6peubmhU.js +0 -443
  146. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +0 -1
  147. package/dist/chunks/validators-9D4KBqKD.cjs +0 -1
@@ -471,7 +471,7 @@ declare type AsyncMutation<TInput, TOutput> = {
471
471
 
472
472
  export declare type AuthoritativeExportFormattingConfig = ExportFormattingConfig & {
473
473
  comparisonPresentation: ComparisonPresentationSpec;
474
- resolvedFormats: ResolvedPresentationEntry[];
474
+ presentationExecutionSnapshot: PresentationExecutionSnapshot;
475
475
  };
476
476
 
477
477
  export declare type AuthToken = {
@@ -851,9 +851,9 @@ export declare type BriefingFormDraft = {
851
851
  limits: BriefingLimits;
852
852
  };
853
853
 
854
- export declare function briefingFormDraftToCreateRequest(draft: BriefingFormDraft, resolvedFormats?: ResolvedPresentationEntry[]): CreateBriefingRequest;
854
+ export declare function briefingFormDraftToCreateRequest(draft: BriefingFormDraft): CreateBriefingRequest;
855
855
 
856
- export declare function briefingFormDraftToUpdateRequest(draft: BriefingFormDraft, resolvedFormats?: ResolvedPresentationEntry[]): UpdateBriefingRequest;
856
+ export declare function briefingFormDraftToUpdateRequest(draft: BriefingFormDraft): UpdateBriefingRequest;
857
857
 
858
858
  export declare type BriefingFormOutputDraft = {
859
859
  artifactFormats: BriefingArtifactFormat[];
@@ -899,8 +899,7 @@ declare type BriefingFragments = {
899
899
 
900
900
  export declare type BriefingJobConfig = {
901
901
  kind: BriefingKind;
902
- reportContext: ReportRuntimeContext;
903
- resolvedFormats?: ResolvedPresentationEntry[];
902
+ presentationExecutionSnapshot: PresentationExecutionSnapshot;
904
903
  source: BriefingSource;
905
904
  body: BriefingBody;
906
905
  attachments: BriefingAttachment[];
@@ -1302,7 +1301,7 @@ export declare function cancelExport(apiServiceUrl: string, token: string, expor
1302
1301
 
1303
1302
  declare type CanonicalDurationUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1304
1303
 
1305
- export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
1304
+ export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | RawTemporalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
1306
1305
 
1307
1306
  declare type CanonicalPivotResultContract = {
1308
1307
  version: 1;
@@ -1845,7 +1844,6 @@ export declare type CreateBriefingRequest = {
1845
1844
  presentation: BriefingPresentation;
1846
1845
  limits?: BriefingLimits;
1847
1846
  deliveryConfig: BriefingDeliveryConfig | null;
1848
- resolvedFormats?: ResolvedPresentationEntry[];
1849
1847
  };
1850
1848
 
1851
1849
  /**
@@ -1881,7 +1879,6 @@ export declare interface CreateExportRequest {
1881
1879
  controlBindings?: ControlBinding[];
1882
1880
  resolvedPrimaryDateField?: ResolvedPrimaryDateField;
1883
1881
  globalDateComparison?: GlobalDateComparisonContext;
1884
- reportContext: ReportRuntimeContext;
1885
1882
  tableTotalsRequest?: TableTotalsRequest;
1886
1883
  totalRows: number;
1887
1884
  format: ExportFormat;
@@ -2379,6 +2376,8 @@ export declare type DashboardProps = {
2379
2376
  * points. Ordinary dashboard consumers should leave this unset.
2380
2377
  */
2381
2378
  interactionExecutionSnapshot?: Record<string, InteractionState>;
2379
+ /** Server-resolved immutable presentation snapshot for internal print views. */
2380
+ presentationExecutionSnapshot?: PresentationExecutionSnapshot;
2382
2381
  /**
2383
2382
  * Render target for print entry points. Generic dashboard PDF exports also
2384
2383
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -2634,6 +2633,11 @@ export declare type DeleteBriefingRunResponse = {
2634
2633
  */
2635
2634
  export declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
2636
2635
  role: 'detail';
2636
+ /**
2637
+ * Query transport policy for ungrouped temporal values. This marker is
2638
+ * projected into executable config and is never persisted authoring state.
2639
+ */
2640
+ dateValueMode?: 'canonical' | 'formatted';
2637
2641
  dateFormat?: DateFormatValue;
2638
2642
  customFormat?: string;
2639
2643
  /**
@@ -2679,7 +2683,7 @@ export declare function DisplayFormatPreferencesFields({ value, inherited, inher
2679
2683
  export declare type DisplayFormatPreferencesFieldsProps = {
2680
2684
  value: ValueFormatPreferences;
2681
2685
  inherited: ResolvedValueFormatPreferences;
2682
- inheritedSources: Pick<ResolvedValueFormatPreferenceSources, 'locale' | 'defaultCurrency'>;
2686
+ inheritedSources: Pick<ResolvedValueFormatPreferenceSources, 'locale' | 'dateStyle' | 'dateTime' | 'defaultCurrency'>;
2683
2687
  onChange: (value: ValueFormatPreferences) => void;
2684
2688
  disabled?: boolean;
2685
2689
  };
@@ -3381,7 +3385,7 @@ export declare interface ExportFormattingConfig {
3381
3385
  visibleColumns?: string[];
3382
3386
  columnLabels?: Record<string, string>;
3383
3387
  tableTotalsLabelColumnKey?: string;
3384
- resolvedFormats?: ResolvedPresentationEntry[];
3388
+ presentationExecutionSnapshot?: PresentationExecutionSnapshot;
3385
3389
  comparisonPresentation?: ComparisonPresentationSpec;
3386
3390
  }
3387
3391
 
@@ -3859,11 +3863,6 @@ export declare interface GroupByColumn extends BaseColumn {
3859
3863
  export declare interface GroupByField extends Field {
3860
3864
  role: 'groupby';
3861
3865
  granularity?: TimeGranularity;
3862
- /**
3863
- * Query transport policy for grouped temporal values. This is projected
3864
- * into executable card config and is not persisted authoring state.
3865
- */
3866
- dateValueMode?: 'canonical' | 'formatted';
3867
3866
  /**
3868
3867
  * Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
3869
3868
  * If present, used in SELECT and GROUP BY instead of just the column name.
@@ -4198,6 +4197,7 @@ declare type MatrixAxisLevelDescriptor = {
4198
4197
  label: string;
4199
4198
  field: SemaphorFieldRef;
4200
4199
  grain?: SemaphorMatrixTimeGrain;
4200
+ temporalBucket?: TemporalBucketMetadata;
4201
4201
  subtotal?: SemaphorMatrixSubtotalOptions;
4202
4202
  };
4203
4203
 
@@ -4348,7 +4348,8 @@ declare type MatrixGridCell = {
4348
4348
 
4349
4349
  declare type MatrixGridColumn = {
4350
4350
  id: string;
4351
- label: string;
4351
+ /** Present only for measure and explicit total headings. */
4352
+ label?: string;
4352
4353
  columnNodeId?: string;
4353
4354
  columnPath: MatrixMemberPathSegment[];
4354
4355
  measureInstanceId: string;
@@ -4357,7 +4358,8 @@ declare type MatrixGridColumn = {
4357
4358
 
4358
4359
  declare type MatrixGridHeaderCell = {
4359
4360
  id: string;
4360
- label: string;
4361
+ /** Present only for non-member headings and explicit total labels. */
4362
+ label?: string;
4361
4363
  role: 'rowHeader' | 'columnHeader' | 'measureHeader' | 'subtotal' | 'grandTotal';
4362
4364
  colSpan: number;
4363
4365
  rowSpan: number;
@@ -4371,7 +4373,7 @@ declare type MatrixGridHeaderRow = {
4371
4373
  };
4372
4374
 
4373
4375
  declare type MatrixGridProjection = {
4374
- schemaVersion: 1;
4376
+ schemaVersion: 2;
4375
4377
  shape: MatrixShape;
4376
4378
  rowHeaderLevels: MatrixGridRowHeaderLevel[];
4377
4379
  columnHeaderRows: MatrixGridHeaderRow[];
@@ -4384,7 +4386,8 @@ declare type MatrixGridRow = {
4384
4386
  rowNodeId: string;
4385
4387
  rowPath: MatrixMemberPathSegment[];
4386
4388
  depth: number;
4387
- label: string;
4389
+ /** Present only for non-temporal members and explicit total labels. */
4390
+ label?: string;
4388
4391
  role: 'value' | 'rowSubtotal' | 'rowGrandTotal';
4389
4392
  isExpanded?: boolean;
4390
4393
  hasChildren?: boolean;
@@ -4440,7 +4443,8 @@ declare type MatrixMemberPathSegment = {
4440
4443
  instanceId: string;
4441
4444
  fieldKey: string;
4442
4445
  value: unknown;
4443
- label: string;
4446
+ /** Display-only source label for non-temporal members. */
4447
+ label?: string;
4444
4448
  };
4445
4449
 
4446
4450
  declare type MatrixNode = {
@@ -4448,7 +4452,8 @@ declare type MatrixNode = {
4448
4452
  axis: 'row' | 'column';
4449
4453
  path: MatrixMemberPathSegment[];
4450
4454
  level: number;
4451
- label: string;
4455
+ /** Present only for non-temporal members and explicit total labels. */
4456
+ label?: string;
4452
4457
  value: unknown;
4453
4458
  parentId?: string;
4454
4459
  hasChildren: boolean;
@@ -4477,7 +4482,7 @@ declare type MatrixPageInfo = {
4477
4482
 
4478
4483
  declare type MatrixPayload = {
4479
4484
  kind: 'matrixPayload';
4480
- schemaVersion: 1;
4485
+ schemaVersion: 2;
4481
4486
  shape: MatrixShape;
4482
4487
  capabilities: MatrixCapability[];
4483
4488
  executionMetadata: MatrixExecutionMetadata;
@@ -4522,7 +4527,7 @@ declare type MatrixResultCell = {
4522
4527
 
4523
4528
  declare type MatrixShape = 'hierarchical' | 'pivot';
4524
4529
 
4525
- export declare function MatrixTableVisual({ card, result, grid, payload, isLoading, expansionState, onExpansionChange, loadingRowPathKeys, onSortChange, onLoadMoreRows, }: MatrixTableVisualProps): JSX.Element;
4530
+ export declare function MatrixTableVisual({ card, result, grid, payload, isLoading, expansionState, onExpansionChange, loadingRowPathKeys, branchError, onSortChange, onLoadMoreRows, }: MatrixTableVisualProps): JSX.Element;
4526
4531
 
4527
4532
  export declare type MatrixTableVisualProps = {
4528
4533
  card?: TCard;
@@ -4533,6 +4538,7 @@ export declare type MatrixTableVisualProps = {
4533
4538
  expansionState?: MatrixExpansionState;
4534
4539
  onExpansionChange?: (update: MatrixExpansionStateUpdate | MatrixColumnExpansionStateUpdate | MatrixBulkColumnExpansionStateUpdate | MatrixBulkRowExpansionStateUpdate) => void;
4535
4540
  loadingRowPathKeys?: Set<string>;
4541
+ branchError?: string;
4536
4542
  onSortChange?: (sortRules: SemaphorMatrixSortRule[]) => void;
4537
4543
  onLoadMoreRows?: (rowPath: MatrixMemberPathSegment[]) => void;
4538
4544
  };
@@ -4846,11 +4852,6 @@ export declare interface PivotByField extends Field {
4846
4852
  * so existing cards need no migration.
4847
4853
  */
4848
4854
  memberOrder?: PivotMemberOrder;
4849
- /**
4850
- * Query transport policy for grouped temporal pivot members. This is
4851
- * projected into executable config and is never persisted authoring state.
4852
- */
4853
- dateValueMode?: 'canonical' | 'formatted';
4854
4855
  }
4855
4856
 
4856
4857
  export declare interface PivotColumnSchema {
@@ -4927,6 +4928,12 @@ export declare type PluginType = 'custom' | 'standard';
4927
4928
 
4928
4929
  export declare function polishBriefingText(apiServiceUrl: string, token: string, text: string): Promise<string>;
4929
4930
 
4931
+ declare type PresentationExecutionSnapshot = {
4932
+ version: 1;
4933
+ reportContext: ReportRuntimeContext;
4934
+ resolvedFormats: ResolvedPresentationEntry[];
4935
+ };
4936
+
4930
4937
  declare type PresentationScope = {
4931
4938
  dashboardId: string;
4932
4939
  cardId?: string;
@@ -5015,6 +5022,41 @@ export declare type RangeValue = {
5015
5022
  gt?: string | number;
5016
5023
  };
5017
5024
 
5025
+ /** Normalized authored input for an ungrouped temporal result column. */
5026
+ declare type RawTemporalFormat = {
5027
+ type: 'raw_temporal';
5028
+ /** Authored display timezone; `auto` uses the resolved calendar timezone. */
5029
+ timezone?: string;
5030
+ /** Authored source timezone; `auto` means UTC for timezone-less values. */
5031
+ sourceTimezone?: string;
5032
+ presentation: {
5033
+ mode: 'auto';
5034
+ } | {
5035
+ mode: 'pattern';
5036
+ dialect: RawTemporalPatternDialect;
5037
+ pattern: string;
5038
+ };
5039
+ };
5040
+
5041
+ declare type RawTemporalPatternDialect = 'semaphor_tokens' | 'date_fns';
5042
+
5043
+ declare type RawTemporalPresentationTarget = {
5044
+ kind: 'column';
5045
+ columnKey: string;
5046
+ };
5047
+
5048
+ /** Authoritative meaning of one ungrouped temporal result column. */
5049
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
5050
+
5051
+ /**
5052
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
5053
+ * mutually exclusive with grouped `temporalBucket` metadata.
5054
+ */
5055
+ declare type RawTemporalValueMetadata = {
5056
+ kind: 'raw_temporal';
5057
+ valueKind: RawTemporalValueKind;
5058
+ };
5059
+
5018
5060
  declare type RelativeDateFilter = {
5019
5061
  mode: 'last';
5020
5062
  n: number;
@@ -5153,7 +5195,7 @@ declare type ResolvedNumericPresentationEntry = {
5153
5195
  format: NumericCanonicalFormat;
5154
5196
  };
5155
5197
 
5156
- declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry;
5198
+ declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry | ResolvedRawTemporalPresentationEntry;
5157
5199
 
5158
5200
  declare type ResolvedPrimaryDateField = (ResolvedPrimaryDateFieldBase & ({
5159
5201
  defaultGranularity?: SemaphorTimeGrain;
@@ -5178,8 +5220,45 @@ declare type ResolvedPrimaryDateFieldBase = {
5178
5220
  supportedGranularities?: SemaphorTimeGrain[];
5179
5221
  };
5180
5222
 
5181
- declare type ResolvedTemporalBucketFormat = TemporalBucketFormat & {
5223
+ declare type ResolvedRawTemporalFormat = {
5224
+ type: 'raw_temporal';
5225
+ locale: string;
5226
+ calendarTimezone: string;
5227
+ /** Resolved source timezone for timezone-less wall datetimes, when authored. */
5228
+ sourceTimezone?: string;
5229
+ presentation: {
5230
+ mode: 'auto';
5231
+ styles: ResolvedTemporalStyleSet;
5232
+ } | {
5233
+ mode: 'pattern';
5234
+ dialect: RawTemporalPatternDialect;
5235
+ pattern: string;
5236
+ };
5237
+ };
5238
+
5239
+ declare type ResolvedRawTemporalPresentationEntry = {
5240
+ scope: PresentationScope;
5241
+ target: RawTemporalPresentationTarget;
5242
+ format: ResolvedRawTemporalFormat;
5243
+ };
5244
+
5245
+ declare type ResolvedTemporalBucketFormat = {
5246
+ type: 'temporal_bucket';
5247
+ locale: string;
5248
+ presentation: {
5249
+ mode: 'auto';
5250
+ styles: ResolvedTemporalStyleSet;
5251
+ };
5252
+ } | {
5253
+ type: 'temporal_bucket';
5182
5254
  locale: string;
5255
+ presentation: {
5256
+ mode: 'preset';
5257
+ preset: TemporalBucketPreset;
5258
+ } | {
5259
+ mode: 'pattern';
5260
+ pattern: string;
5261
+ };
5183
5262
  };
5184
5263
 
5185
5264
  declare type ResolvedTemporalBucketPresentationEntry = {
@@ -5188,6 +5267,14 @@ declare type ResolvedTemporalBucketPresentationEntry = {
5188
5267
  format: ResolvedTemporalBucketFormat;
5189
5268
  };
5190
5269
 
5270
+ declare type ResolvedTemporalStyleSet = {
5271
+ dateStyle: LocaleStyle;
5272
+ dateTime: {
5273
+ dateStyle: LocaleStyle;
5274
+ timeStyle: LocaleStyle;
5275
+ };
5276
+ };
5277
+
5191
5278
  declare type ResolvedValueFormatPreferences = {
5192
5279
  locale: string;
5193
5280
  dateStyle: LocaleStyle;
@@ -5491,6 +5578,8 @@ declare type SemaphorMatrixAxisLevel = {
5491
5578
  id?: string;
5492
5579
  field: SemaphorFieldRef;
5493
5580
  grain?: SemaphorMatrixTimeGrain;
5581
+ format?: TemporalBucketFormat;
5582
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
5494
5583
  label?: string;
5495
5584
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
5496
5585
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -5499,7 +5588,7 @@ declare type SemaphorMatrixAxisLevel = {
5499
5588
  declare type SemaphorMatrixAxisSortRule = {
5500
5589
  direction: 'asc' | 'desc';
5501
5590
  by: {
5502
- kind: 'label';
5591
+ kind: 'member';
5503
5592
  } | {
5504
5593
  kind: 'field';
5505
5594
  field: SemaphorFieldRef;
@@ -5556,7 +5645,7 @@ declare type SemaphorMatrixMemberPathSegment = {
5556
5645
 
5557
5646
  declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
5558
5647
  kind: 'matrix';
5559
- schemaVersion: 1;
5648
+ schemaVersion: 2;
5560
5649
  intent?: SemaphorMatrixIntent;
5561
5650
  shape: MatrixShape;
5562
5651
  capabilities: MatrixCapability[];
@@ -5578,12 +5667,17 @@ declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
5578
5667
  expansion?: MatrixExpansionResponseHints;
5579
5668
  };
5580
5669
 
5670
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
5671
+ granularity: SemaphorMatrixTimeGrain;
5672
+ format: TemporalBucketFormat;
5673
+ };
5674
+
5581
5675
  declare type SemaphorMatrixSortRule = {
5582
5676
  axis: 'row' | 'column';
5583
5677
  targetId?: string;
5584
5678
  direction: 'asc' | 'desc';
5585
5679
  by: {
5586
- kind: 'label';
5680
+ kind: 'member';
5587
5681
  } | {
5588
5682
  kind: 'field';
5589
5683
  field: SemaphorFieldRef;
@@ -5805,6 +5899,7 @@ declare type SemaphorResultColumn = {
5805
5899
  source?: SemaphorFieldRef['source'];
5806
5900
  derivedField?: SemaphorDerivedFieldDefinition;
5807
5901
  temporalBucket?: TemporalBucketMetadata;
5902
+ rawTemporal?: RawTemporalValueMetadata;
5808
5903
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
5809
5904
  };
5810
5905
 
@@ -736,6 +736,11 @@ declare type DefaultDateFilter = RelativeDateFilter | FixedMonthDefaultDateFilte
736
736
  */
737
737
  declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
738
738
  role: 'detail';
739
+ /**
740
+ * Query transport policy for ungrouped temporal values. This marker is
741
+ * projected into executable config and is never persisted authoring state.
742
+ */
743
+ dateValueMode?: 'canonical' | 'formatted';
739
744
  dateFormat?: DateFormatValue;
740
745
  customFormat?: string;
741
746
  /**
@@ -1379,11 +1384,6 @@ declare interface GroupByColumn extends BaseColumn {
1379
1384
  declare interface GroupByField extends Field {
1380
1385
  role: 'groupby';
1381
1386
  granularity?: TimeGranularity;
1382
- /**
1383
- * Query transport policy for grouped temporal values. This is projected
1384
- * into executable card config and is not persisted authoring state.
1385
- */
1386
- dateValueMode?: 'canonical' | 'formatted';
1387
1387
  /**
1388
1388
  * Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
1389
1389
  * If present, used in SELECT and GROUP BY instead of just the column name.
@@ -1672,11 +1672,6 @@ declare interface PivotByField extends Field {
1672
1672
  * so existing cards need no migration.
1673
1673
  */
1674
1674
  memberOrder?: PivotMemberOrder;
1675
- /**
1676
- * Query transport policy for grouped temporal pivot members. This is
1677
- * projected into executable config and is never persisted authoring state.
1678
- */
1679
- dateValueMode?: 'canonical' | 'formatted';
1680
1675
  }
1681
1676
 
1682
1677
  /**
@@ -1852,6 +1847,8 @@ declare type SemaphorMatrixAxisLevel = {
1852
1847
  id?: string;
1853
1848
  field: SemaphorFieldRef;
1854
1849
  grain?: SemaphorMatrixTimeGrain;
1850
+ format?: TemporalBucketFormat;
1851
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
1855
1852
  label?: string;
1856
1853
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
1857
1854
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -1860,7 +1857,7 @@ declare type SemaphorMatrixAxisLevel = {
1860
1857
  declare type SemaphorMatrixAxisSortRule = {
1861
1858
  direction: 'asc' | 'desc';
1862
1859
  by: {
1863
- kind: 'label';
1860
+ kind: 'member';
1864
1861
  } | {
1865
1862
  kind: 'field';
1866
1863
  field: SemaphorFieldRef;
@@ -1915,12 +1912,17 @@ declare type SemaphorMatrixMemberPathSegment = {
1915
1912
  value: unknown;
1916
1913
  };
1917
1914
 
1915
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
1916
+ granularity: SemaphorMatrixTimeGrain;
1917
+ format: TemporalBucketFormat;
1918
+ };
1919
+
1918
1920
  declare type SemaphorMatrixSortRule = {
1919
1921
  axis: 'row' | 'column';
1920
1922
  targetId?: string;
1921
1923
  direction: 'asc' | 'desc';
1922
1924
  by: {
1923
- kind: 'label';
1925
+ kind: 'member';
1924
1926
  } | {
1925
1927
  kind: 'field';
1926
1928
  field: SemaphorFieldRef;
@@ -901,6 +901,8 @@ export declare type DashboardProps = {
901
901
  * points. Ordinary dashboard consumers should leave this unset.
902
902
  */
903
903
  interactionExecutionSnapshot?: Record<string, InteractionState>;
904
+ /** Server-resolved immutable presentation snapshot for internal print views. */
905
+ presentationExecutionSnapshot?: PresentationExecutionSnapshot;
904
906
  /**
905
907
  * Render target for print entry points. Generic dashboard PDF exports also
906
908
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -1004,6 +1006,11 @@ declare type DefaultDateFilter = RelativeDateFilter | FixedMonthDefaultDateFilte
1004
1006
  */
1005
1007
  declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
1006
1008
  role: 'detail';
1009
+ /**
1010
+ * Query transport policy for ungrouped temporal values. This marker is
1011
+ * projected into executable config and is never persisted authoring state.
1012
+ */
1013
+ dateValueMode?: 'canonical' | 'formatted';
1007
1014
  dateFormat?: DateFormatValue;
1008
1015
  customFormat?: string;
1009
1016
  /**
@@ -1042,7 +1049,7 @@ export declare function DisplayFormatPreferencesFields({ value, inherited, inher
1042
1049
  export declare type DisplayFormatPreferencesFieldsProps = {
1043
1050
  value: ValueFormatPreferences;
1044
1051
  inherited: ResolvedValueFormatPreferences;
1045
- inheritedSources: Pick<ResolvedValueFormatPreferenceSources, 'locale' | 'defaultCurrency'>;
1052
+ inheritedSources: Pick<ResolvedValueFormatPreferenceSources, 'locale' | 'dateStyle' | 'dateTime' | 'defaultCurrency'>;
1046
1053
  onChange: (value: ValueFormatPreferences) => void;
1047
1054
  disabled?: boolean;
1048
1055
  };
@@ -1769,11 +1776,6 @@ declare interface GroupByColumn extends BaseColumn {
1769
1776
  declare interface GroupByField extends Field {
1770
1777
  role: 'groupby';
1771
1778
  granularity?: TimeGranularity;
1772
- /**
1773
- * Query transport policy for grouped temporal values. This is projected
1774
- * into executable card config and is not persisted authoring state.
1775
- */
1776
- dateValueMode?: 'canonical' | 'formatted';
1777
1779
  /**
1778
1780
  * Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
1779
1781
  * If present, used in SELECT and GROUP BY instead of just the column name.
@@ -2101,6 +2103,32 @@ export declare type NumberOptions = {
2101
2103
  colorRanges?: ColorRange[];
2102
2104
  };
2103
2105
 
2106
+ declare type NumericCanonicalFormat = {
2107
+ type: 'number' | 'currency' | 'percent' | 'scientific';
2108
+ locale?: string;
2109
+ minimumFractionDigits?: number;
2110
+ maximumFractionDigits?: number;
2111
+ useGrouping?: boolean;
2112
+ prefix?: string;
2113
+ suffix?: string;
2114
+ negativeStyle?: 'minus' | 'parentheses';
2115
+ compact?: boolean;
2116
+ scale?: number;
2117
+ currency?: string;
2118
+ percentValueMode?: 'fraction' | 'whole';
2119
+ };
2120
+
2121
+ declare type NumericPresentationTarget = {
2122
+ kind: 'metric';
2123
+ metricId: string;
2124
+ } | {
2125
+ kind: 'column';
2126
+ columnKey: string;
2127
+ } | {
2128
+ kind: 'matrix_measure';
2129
+ measureId: string;
2130
+ };
2131
+
2104
2132
  declare type OldFilterValue = string | number | null | (string | number)[] | RangeValue;
2105
2133
 
2106
2134
  declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
@@ -2149,11 +2177,6 @@ declare interface PivotByField extends Field {
2149
2177
  * so existing cards need no migration.
2150
2178
  */
2151
2179
  memberOrder?: PivotMemberOrder;
2152
- /**
2153
- * Query transport policy for grouped temporal pivot members. This is
2154
- * projected into executable config and is never persisted authoring state.
2155
- */
2156
- dateValueMode?: 'canonical' | 'formatted';
2157
2180
  }
2158
2181
 
2159
2182
  /**
@@ -2178,6 +2201,18 @@ export declare type Placeholders = {
2178
2201
 
2179
2202
  export declare type PluginType = 'custom' | 'standard';
2180
2203
 
2204
+ declare type PresentationExecutionSnapshot = {
2205
+ version: 1;
2206
+ reportContext: ReportRuntimeContext;
2207
+ resolvedFormats: ResolvedPresentationEntry[];
2208
+ };
2209
+
2210
+ declare type PresentationScope = {
2211
+ dashboardId: string;
2212
+ cardId?: string;
2213
+ attachmentIndex?: number;
2214
+ };
2215
+
2181
2216
  declare interface QueryConfig {
2182
2217
  groupByColumns?: GroupByColumn[];
2183
2218
  pivotColumns?: GroupByColumn[];
@@ -2200,6 +2235,13 @@ declare type RangeValue = {
2200
2235
  gt?: string | number;
2201
2236
  };
2202
2237
 
2238
+ declare type RawTemporalPatternDialect = 'semaphor_tokens' | 'date_fns';
2239
+
2240
+ declare type RawTemporalPresentationTarget = {
2241
+ kind: 'column';
2242
+ columnKey: string;
2243
+ };
2244
+
2203
2245
  declare type RelativeDateFilter = {
2204
2246
  mode: 'last';
2205
2247
  n: number;
@@ -2308,6 +2350,14 @@ export declare type ResolvedDocumentInput = {
2308
2350
  exports: Record<string, string | number | boolean | null>;
2309
2351
  };
2310
2352
 
2353
+ declare type ResolvedNumericPresentationEntry = {
2354
+ scope: PresentationScope;
2355
+ target: NumericPresentationTarget;
2356
+ format: NumericCanonicalFormat;
2357
+ };
2358
+
2359
+ declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry | ResolvedRawTemporalPresentationEntry;
2360
+
2311
2361
  declare type ResolvedPrimaryDateField = (ResolvedPrimaryDateFieldBase & ({
2312
2362
  defaultGranularity?: SemaphorTimeGrain;
2313
2363
  format?: undefined;
@@ -2331,6 +2381,61 @@ declare type ResolvedPrimaryDateFieldBase = {
2331
2381
  supportedGranularities?: SemaphorTimeGrain[];
2332
2382
  };
2333
2383
 
2384
+ declare type ResolvedRawTemporalFormat = {
2385
+ type: 'raw_temporal';
2386
+ locale: string;
2387
+ calendarTimezone: string;
2388
+ /** Resolved source timezone for timezone-less wall datetimes, when authored. */
2389
+ sourceTimezone?: string;
2390
+ presentation: {
2391
+ mode: 'auto';
2392
+ styles: ResolvedTemporalStyleSet;
2393
+ } | {
2394
+ mode: 'pattern';
2395
+ dialect: RawTemporalPatternDialect;
2396
+ pattern: string;
2397
+ };
2398
+ };
2399
+
2400
+ declare type ResolvedRawTemporalPresentationEntry = {
2401
+ scope: PresentationScope;
2402
+ target: RawTemporalPresentationTarget;
2403
+ format: ResolvedRawTemporalFormat;
2404
+ };
2405
+
2406
+ declare type ResolvedTemporalBucketFormat = {
2407
+ type: 'temporal_bucket';
2408
+ locale: string;
2409
+ presentation: {
2410
+ mode: 'auto';
2411
+ styles: ResolvedTemporalStyleSet;
2412
+ };
2413
+ } | {
2414
+ type: 'temporal_bucket';
2415
+ locale: string;
2416
+ presentation: {
2417
+ mode: 'preset';
2418
+ preset: TemporalBucketPreset;
2419
+ } | {
2420
+ mode: 'pattern';
2421
+ pattern: string;
2422
+ };
2423
+ };
2424
+
2425
+ declare type ResolvedTemporalBucketPresentationEntry = {
2426
+ scope: PresentationScope;
2427
+ target: TemporalBucketPresentationTarget;
2428
+ format: ResolvedTemporalBucketFormat;
2429
+ };
2430
+
2431
+ declare type ResolvedTemporalStyleSet = {
2432
+ dateStyle: LocaleStyle;
2433
+ dateTime: {
2434
+ dateStyle: LocaleStyle;
2435
+ timeStyle: LocaleStyle;
2436
+ };
2437
+ };
2438
+
2334
2439
  declare type ResolvedValueFormatPreferences = {
2335
2440
  locale: string;
2336
2441
  dateStyle: LocaleStyle;
@@ -2479,6 +2584,8 @@ declare type SemaphorMatrixAxisLevel = {
2479
2584
  id?: string;
2480
2585
  field: SemaphorFieldRef;
2481
2586
  grain?: SemaphorMatrixTimeGrain;
2587
+ format?: TemporalBucketFormat;
2588
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
2482
2589
  label?: string;
2483
2590
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
2484
2591
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -2487,7 +2594,7 @@ declare type SemaphorMatrixAxisLevel = {
2487
2594
  declare type SemaphorMatrixAxisSortRule = {
2488
2595
  direction: 'asc' | 'desc';
2489
2596
  by: {
2490
- kind: 'label';
2597
+ kind: 'member';
2491
2598
  } | {
2492
2599
  kind: 'field';
2493
2600
  field: SemaphorFieldRef;
@@ -2542,12 +2649,17 @@ declare type SemaphorMatrixMemberPathSegment = {
2542
2649
  value: unknown;
2543
2650
  };
2544
2651
 
2652
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
2653
+ granularity: SemaphorMatrixTimeGrain;
2654
+ format: TemporalBucketFormat;
2655
+ };
2656
+
2545
2657
  declare type SemaphorMatrixSortRule = {
2546
2658
  axis: 'row' | 'column';
2547
2659
  targetId?: string;
2548
2660
  direction: 'asc' | 'desc';
2549
2661
  by: {
2550
- kind: 'label';
2662
+ kind: 'member';
2551
2663
  } | {
2552
2664
  kind: 'field';
2553
2665
  field: SemaphorFieldRef;
@@ -3425,6 +3537,19 @@ declare type TemporalBucketPresentation = {
3425
3537
  pattern: string;
3426
3538
  };
3427
3539
 
3540
+ declare type TemporalBucketPresentationTarget = {
3541
+ kind: 'field';
3542
+ fieldId: string;
3543
+ /** Distinguishes one semantic field used on both pivot axes. */
3544
+ role?: 'groupby' | 'pivotby';
3545
+ } | {
3546
+ kind: 'column';
3547
+ columnKey: string;
3548
+ } | {
3549
+ kind: 'matrix_axis';
3550
+ axisInstanceId: string;
3551
+ };
3552
+
3428
3553
  declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
3429
3554
 
3430
3555
  declare type TemporalPrecision = 'minute';