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
@@ -303,7 +303,7 @@ declare type SemaphorDataAppCodegenMatrixIntent = {
303
303
 
304
304
  declare type SemaphorDataAppCodegenMatrixSortRule = Omit<SemaphorMatrixSortRule, 'by'> & {
305
305
  by: {
306
- kind: 'label';
306
+ kind: 'member';
307
307
  } | {
308
308
  kind: 'field';
309
309
  field: SemaphorDataAppCodegenFieldRef;
@@ -797,6 +797,8 @@ declare type SemaphorMatrixAxisLevel = {
797
797
  id?: string;
798
798
  field: SemaphorFieldRef;
799
799
  grain?: SemaphorMatrixTimeGrain;
800
+ format?: TemporalBucketFormat;
801
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
800
802
  label?: string;
801
803
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
802
804
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -805,7 +807,7 @@ declare type SemaphorMatrixAxisLevel = {
805
807
  declare type SemaphorMatrixAxisSortRule = {
806
808
  direction: 'asc' | 'desc';
807
809
  by: {
808
- kind: 'label';
810
+ kind: 'member';
809
811
  } | {
810
812
  kind: 'field';
811
813
  field: SemaphorFieldRef;
@@ -860,12 +862,17 @@ declare type SemaphorMatrixMemberPathSegment = {
860
862
  value: unknown;
861
863
  };
862
864
 
865
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
866
+ granularity: SemaphorMatrixTimeGrain;
867
+ format: TemporalBucketFormat;
868
+ };
869
+
863
870
  declare type SemaphorMatrixSortRule = {
864
871
  axis: 'row' | 'column';
865
872
  targetId?: string;
866
873
  direction: 'asc' | 'desc';
867
874
  by: {
868
- kind: 'label';
875
+ kind: 'member';
869
876
  } | {
870
877
  kind: 'field';
871
878
  field: SemaphorFieldRef;
@@ -1114,6 +1121,25 @@ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
1114
1121
 
1115
1122
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
1116
1123
 
1124
+ declare const TEMPORAL_BUCKET_PRESETS: readonly ["week_of_short", "week_of_long", "quarter_short", "quarter_long", "fiscal_quarter_short", "fiscal_year"];
1125
+
1126
+ declare type TemporalBucketFormat = {
1127
+ type: 'temporal_bucket';
1128
+ presentation: TemporalBucketPresentation;
1129
+ };
1130
+
1131
+ declare type TemporalBucketPresentation = {
1132
+ mode: 'auto';
1133
+ } | {
1134
+ mode: 'preset';
1135
+ preset: TemporalBucketPreset;
1136
+ } | {
1137
+ mode: 'pattern';
1138
+ pattern: string;
1139
+ };
1140
+
1141
+ declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
1142
+
1117
1143
  export declare function validateCodegenSummary(value: unknown): string[];
1118
1144
 
1119
1145
  export declare function validateSemaphorDataAppCodegenSummary(value: unknown): {
@@ -264,6 +264,8 @@ declare type SemaphorMatrixAxisLevel = {
264
264
  id?: string;
265
265
  field: SemaphorFieldRef;
266
266
  grain?: SemaphorMatrixTimeGrain;
267
+ format?: TemporalBucketFormat;
268
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
267
269
  label?: string;
268
270
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
269
271
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -274,7 +276,7 @@ declare type SemaphorMatrixAxisLevelInput = SemaphorQueryField | SemaphorMatrixA
274
276
  declare type SemaphorMatrixAxisSortRule = {
275
277
  direction: 'asc' | 'desc';
276
278
  by: {
277
- kind: 'label';
279
+ kind: 'member';
278
280
  } | {
279
281
  kind: 'field';
280
282
  field: SemaphorFieldRef;
@@ -342,12 +344,17 @@ declare type SemaphorMatrixQuerySpec = Omit<SemaphorMatrixIntent, 'kind' | 'vers
342
344
  displayLimits?: SemaphorMatrixDisplayLimitOptions;
343
345
  };
344
346
 
347
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
348
+ granularity: SemaphorMatrixTimeGrain;
349
+ format: TemporalBucketFormat;
350
+ };
351
+
345
352
  declare type SemaphorMatrixSortRule = {
346
353
  axis: 'row' | 'column';
347
354
  targetId?: string;
348
355
  direction: 'asc' | 'desc';
349
356
  by: {
350
- kind: 'label';
357
+ kind: 'member';
351
358
  } | {
352
359
  kind: 'field';
353
360
  field: SemaphorFieldRef;
@@ -682,6 +689,25 @@ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
682
689
 
683
690
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
684
691
 
692
+ declare const TEMPORAL_BUCKET_PRESETS: readonly ["week_of_short", "week_of_long", "quarter_short", "quarter_long", "fiscal_quarter_short", "fiscal_year"];
693
+
694
+ declare type TemporalBucketFormat = {
695
+ type: 'temporal_bucket';
696
+ presentation: TemporalBucketPresentation;
697
+ };
698
+
699
+ declare type TemporalBucketPresentation = {
700
+ mode: 'auto';
701
+ } | {
702
+ mode: 'preset';
703
+ preset: TemporalBucketPreset;
704
+ } | {
705
+ mode: 'pattern';
706
+ pattern: string;
707
+ };
708
+
709
+ declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
710
+
685
711
  export declare function toSemaphorActiveInputSnapshots(inputs: SemaphorInputReference[] | undefined): SemaphorActiveInput[];
686
712
 
687
713
  export declare function toSemaphorAnalysisIntent(spec: SemaphorAnalysisQuerySpec): SemaphorMetricIntent;
@@ -21,6 +21,7 @@ declare type MatrixAxisLevelDescriptor = {
21
21
  label: string;
22
22
  field: SemaphorFieldRef;
23
23
  grain?: SemaphorMatrixTimeGrain;
24
+ temporalBucket?: TemporalBucketMetadata;
24
25
  subtotal?: SemaphorMatrixSubtotalOptions;
25
26
  };
26
27
 
@@ -95,7 +96,8 @@ declare type MatrixFormattingContext = {
95
96
 
96
97
  declare type MatrixGridColumn = {
97
98
  id: string;
98
- label: string;
99
+ /** Present only for measure and explicit total headings. */
100
+ label?: string;
99
101
  columnNodeId?: string;
100
102
  columnPath: MatrixMemberPathSegment[];
101
103
  measureInstanceId: string;
@@ -104,7 +106,8 @@ declare type MatrixGridColumn = {
104
106
 
105
107
  declare type MatrixGridHeaderCell = {
106
108
  id: string;
107
- label: string;
109
+ /** Present only for non-member headings and explicit total labels. */
110
+ label?: string;
108
111
  role: 'rowHeader' | 'columnHeader' | 'measureHeader' | 'subtotal' | 'grandTotal';
109
112
  colSpan: number;
110
113
  rowSpan: number;
@@ -166,7 +169,8 @@ declare type MatrixMemberPathSegment = {
166
169
  instanceId: string;
167
170
  fieldKey: string;
168
171
  value: unknown;
169
- label: string;
172
+ /** Display-only source label for non-temporal members. */
173
+ label?: string;
170
174
  };
171
175
 
172
176
  declare type MatrixNode = {
@@ -174,7 +178,8 @@ declare type MatrixNode = {
174
178
  axis: 'row' | 'column';
175
179
  path: MatrixMemberPathSegment[];
176
180
  level: number;
177
- label: string;
181
+ /** Present only for non-temporal members and explicit total labels. */
182
+ label?: string;
178
183
  value: unknown;
179
184
  parentId?: string;
180
185
  hasChildren: boolean;
@@ -246,6 +251,18 @@ export declare function normalizeSemaphorAnalysisQueryOptions(value: unknown, op
246
251
 
247
252
  export declare function normalizeSemaphorFieldRole(field: SemaphorFieldRef): SemaphorFieldRef['role'] | undefined;
248
253
 
254
+ /** Authoritative meaning of one ungrouped temporal result column. */
255
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
256
+
257
+ /**
258
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
259
+ * mutually exclusive with grouped `temporalBucket` metadata.
260
+ */
261
+ declare type RawTemporalValueMetadata = {
262
+ kind: 'raw_temporal';
263
+ valueKind: RawTemporalValueKind;
264
+ };
265
+
249
266
  export declare function relatedProjectionFieldCandidatesForIntent(intent: RelationshipAwareProjectionIntent): SemaphorRelatedProjectionFieldCandidate[];
250
267
 
251
268
  declare type RelationshipAwareProjectionIntent = SemaphorRecordsIntent | SemaphorMetricIntent | SemaphorMatrixIntent;
@@ -705,6 +722,8 @@ declare type SemaphorMatrixAxisLevel = {
705
722
  id?: string;
706
723
  field: SemaphorFieldRef;
707
724
  grain?: SemaphorMatrixTimeGrain;
725
+ format?: TemporalBucketFormat;
726
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
708
727
  label?: string;
709
728
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
710
729
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -715,7 +734,7 @@ declare type SemaphorMatrixAxisLevelInput = SemaphorQueryField | SemaphorMatrixA
715
734
  declare type SemaphorMatrixAxisSortRule = {
716
735
  direction: 'asc' | 'desc';
717
736
  by: {
718
- kind: 'label';
737
+ kind: 'member';
719
738
  } | {
720
739
  kind: 'field';
721
740
  field: SemaphorFieldRef;
@@ -789,7 +808,7 @@ declare type SemaphorMatrixQuerySpec = Omit<SemaphorMatrixIntent, 'kind' | 'vers
789
808
 
790
809
  declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
791
810
  kind: 'matrix';
792
- schemaVersion: 1;
811
+ schemaVersion: 2;
793
812
  intent?: SemaphorMatrixIntent;
794
813
  shape: MatrixShape;
795
814
  capabilities: MatrixCapability[];
@@ -811,12 +830,17 @@ declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
811
830
  expansion?: MatrixExpansionResponseHints;
812
831
  };
813
832
 
833
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
834
+ granularity: SemaphorMatrixTimeGrain;
835
+ format: TemporalBucketFormat;
836
+ };
837
+
814
838
  declare type SemaphorMatrixSortRule = {
815
839
  axis: 'row' | 'column';
816
840
  targetId?: string;
817
841
  direction: 'asc' | 'desc';
818
842
  by: {
819
- kind: 'label';
843
+ kind: 'member';
820
844
  } | {
821
845
  kind: 'field';
822
846
  field: SemaphorFieldRef;
@@ -1169,6 +1193,7 @@ declare type SemaphorResultColumn = {
1169
1193
  source?: SemaphorFieldRef['source'];
1170
1194
  derivedField?: SemaphorDerivedFieldDefinition;
1171
1195
  temporalBucket?: TemporalBucketMetadata;
1196
+ rawTemporal?: RawTemporalValueMetadata;
1172
1197
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
1173
1198
  };
1174
1199
 
@@ -1296,12 +1321,31 @@ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
1296
1321
 
1297
1322
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
1298
1323
 
1324
+ declare const TEMPORAL_BUCKET_PRESETS: readonly ["week_of_short", "week_of_long", "quarter_short", "quarter_long", "fiscal_quarter_short", "fiscal_year"];
1325
+
1326
+ declare type TemporalBucketFormat = {
1327
+ type: 'temporal_bucket';
1328
+ presentation: TemporalBucketPresentation;
1329
+ };
1330
+
1299
1331
  declare type TemporalBucketMetadata = {
1300
1332
  kind: 'temporal_bucket';
1301
1333
  granularity: SemaphorTimeGrain;
1302
1334
  calendar: Pick<CalendarContext, 'tz' | 'weekStart' | 'fiscalCalendar'>;
1303
1335
  };
1304
1336
 
1337
+ declare type TemporalBucketPresentation = {
1338
+ mode: 'auto';
1339
+ } | {
1340
+ mode: 'preset';
1341
+ preset: TemporalBucketPreset;
1342
+ } | {
1343
+ mode: 'pattern';
1344
+ pattern: string;
1345
+ };
1346
+
1347
+ declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
1348
+
1305
1349
  export declare function validateSemaphorDataAppQuerySpecs(input: {
1306
1350
  queries: SemaphorDataAppQuerySpecEnvelope[];
1307
1351
  fieldCatalogs?: SemaphorDataAppFieldCatalog[];
@@ -26,6 +26,7 @@ declare type MatrixAxisLevelDescriptor = {
26
26
  label: string;
27
27
  field: SemaphorFieldRef;
28
28
  grain?: SemaphorMatrixTimeGrain;
29
+ temporalBucket?: TemporalBucketMetadata;
29
30
  subtotal?: SemaphorMatrixSubtotalOptions;
30
31
  };
31
32
 
@@ -146,7 +147,8 @@ declare type MatrixGridCell = {
146
147
 
147
148
  declare type MatrixGridColumn = {
148
149
  id: string;
149
- label: string;
150
+ /** Present only for measure and explicit total headings. */
151
+ label?: string;
150
152
  columnNodeId?: string;
151
153
  columnPath: MatrixMemberPathSegment[];
152
154
  measureInstanceId: string;
@@ -155,7 +157,8 @@ declare type MatrixGridColumn = {
155
157
 
156
158
  declare type MatrixGridHeaderCell = {
157
159
  id: string;
158
- label: string;
160
+ /** Present only for non-member headings and explicit total labels. */
161
+ label?: string;
159
162
  role: 'rowHeader' | 'columnHeader' | 'measureHeader' | 'subtotal' | 'grandTotal';
160
163
  colSpan: number;
161
164
  rowSpan: number;
@@ -169,7 +172,7 @@ declare type MatrixGridHeaderRow = {
169
172
  };
170
173
 
171
174
  export declare type MatrixGridProjection = {
172
- schemaVersion: 1;
175
+ schemaVersion: 2;
173
176
  shape: MatrixShape;
174
177
  rowHeaderLevels: MatrixGridRowHeaderLevel[];
175
178
  columnHeaderRows: MatrixGridHeaderRow[];
@@ -182,7 +185,8 @@ declare type MatrixGridRow = {
182
185
  rowNodeId: string;
183
186
  rowPath: MatrixMemberPathSegment[];
184
187
  depth: number;
185
- label: string;
188
+ /** Present only for non-temporal members and explicit total labels. */
189
+ label?: string;
186
190
  role: 'value' | 'rowSubtotal' | 'rowGrandTotal';
187
191
  isExpanded?: boolean;
188
192
  hasChildren?: boolean;
@@ -238,7 +242,8 @@ declare type MatrixMemberPathSegment = {
238
242
  instanceId: string;
239
243
  fieldKey: string;
240
244
  value: unknown;
241
- label: string;
245
+ /** Display-only source label for non-temporal members. */
246
+ label?: string;
242
247
  };
243
248
 
244
249
  declare type MatrixNode = {
@@ -246,7 +251,8 @@ declare type MatrixNode = {
246
251
  axis: 'row' | 'column';
247
252
  path: MatrixMemberPathSegment[];
248
253
  level: number;
249
- label: string;
254
+ /** Present only for non-temporal members and explicit total labels. */
255
+ label?: string;
250
256
  value: unknown;
251
257
  parentId?: string;
252
258
  hasChildren: boolean;
@@ -275,7 +281,7 @@ declare type MatrixPageInfo = {
275
281
 
276
282
  export declare type MatrixPayload = {
277
283
  kind: 'matrixPayload';
278
- schemaVersion: 1;
284
+ schemaVersion: 2;
279
285
  shape: MatrixShape;
280
286
  capabilities: MatrixCapability[];
281
287
  executionMetadata: MatrixExecutionMetadata;
@@ -341,6 +347,18 @@ declare type MonthAlignedFiscalCalendar = {
341
347
  yearStartMonth: number;
342
348
  };
343
349
 
350
+ /** Authoritative meaning of one ungrouped temporal result column. */
351
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
352
+
353
+ /**
354
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
355
+ * mutually exclusive with grouped `temporalBucket` metadata.
356
+ */
357
+ declare type RawTemporalValueMetadata = {
358
+ kind: 'raw_temporal';
359
+ valueKind: RawTemporalValueKind;
360
+ };
361
+
344
362
  export declare const semaphor: {
345
363
  source: {
346
364
  semantic(spec: SemaphorSemanticSourceBuilderSpec): SemaphorSemanticSourceRef;
@@ -1059,6 +1077,8 @@ export declare type SemaphorMatrixAxisLevel = {
1059
1077
  id?: string;
1060
1078
  field: SemaphorFieldRef;
1061
1079
  grain?: SemaphorMatrixTimeGrain;
1080
+ format?: TemporalBucketFormat;
1081
+ semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
1062
1082
  label?: string;
1063
1083
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
1064
1084
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -1069,7 +1089,7 @@ export declare type SemaphorMatrixAxisLevelInput = SemaphorQueryField | Semaphor
1069
1089
  declare type SemaphorMatrixAxisSortRule = {
1070
1090
  direction: 'asc' | 'desc';
1071
1091
  by: {
1072
- kind: 'label';
1092
+ kind: 'member';
1073
1093
  } | {
1074
1094
  kind: 'field';
1075
1095
  field: SemaphorFieldRef;
@@ -1159,7 +1179,7 @@ export declare type SemaphorMatrixQuerySpec = Omit<SemaphorMatrixIntent, 'kind'
1159
1179
 
1160
1180
  declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
1161
1181
  kind: 'matrix';
1162
- schemaVersion: 1;
1182
+ schemaVersion: 2;
1163
1183
  intent?: SemaphorMatrixIntent;
1164
1184
  shape: MatrixShape;
1165
1185
  capabilities: MatrixCapability[];
@@ -1181,12 +1201,17 @@ declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
1181
1201
  expansion?: MatrixExpansionResponseHints;
1182
1202
  };
1183
1203
 
1204
+ declare type SemaphorMatrixSemanticTemporalPresentation = {
1205
+ granularity: SemaphorMatrixTimeGrain;
1206
+ format: TemporalBucketFormat;
1207
+ };
1208
+
1184
1209
  export declare type SemaphorMatrixSortRule = {
1185
1210
  axis: 'row' | 'column';
1186
1211
  targetId?: string;
1187
1212
  direction: 'asc' | 'desc';
1188
1213
  by: {
1189
- kind: 'label';
1214
+ kind: 'member';
1190
1215
  } | {
1191
1216
  kind: 'field';
1192
1217
  field: SemaphorFieldRef;
@@ -1624,6 +1649,7 @@ export declare type SemaphorResultColumn = {
1624
1649
  source?: SemaphorFieldRef['source'];
1625
1650
  derivedField?: SemaphorDerivedFieldDefinition;
1626
1651
  temporalBucket?: TemporalBucketMetadata;
1652
+ rawTemporal?: RawTemporalValueMetadata;
1627
1653
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
1628
1654
  };
1629
1655
 
@@ -1790,12 +1816,31 @@ export declare function SemaphorViewBoundary({ id, title, children, }: {
1790
1816
  children: ReactNode;
1791
1817
  }): ReactElement;
1792
1818
 
1819
+ declare const TEMPORAL_BUCKET_PRESETS: readonly ["week_of_short", "week_of_long", "quarter_short", "quarter_long", "fiscal_quarter_short", "fiscal_year"];
1820
+
1821
+ declare type TemporalBucketFormat = {
1822
+ type: 'temporal_bucket';
1823
+ presentation: TemporalBucketPresentation;
1824
+ };
1825
+
1793
1826
  declare type TemporalBucketMetadata = {
1794
1827
  kind: 'temporal_bucket';
1795
1828
  granularity: SemaphorTimeGrain;
1796
1829
  calendar: Pick<CalendarContext, 'tz' | 'weekStart' | 'fiscalCalendar'>;
1797
1830
  };
1798
1831
 
1832
+ declare type TemporalBucketPresentation = {
1833
+ mode: 'auto';
1834
+ } | {
1835
+ mode: 'preset';
1836
+ preset: TemporalBucketPreset;
1837
+ } | {
1838
+ mode: 'pattern';
1839
+ pattern: string;
1840
+ };
1841
+
1842
+ declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
1843
+
1799
1844
  export declare function useClearInvalidSemaphorInputValue(input: SemaphorInputHandle, optionsResult: Pick<SemaphorInputOptionsQueryResult, 'options' | 'status'> | undefined): void;
1800
1845
 
1801
1846
  export declare function useSemaphorDevtools(): SemaphorDataAppDevtoolsState;