react-semaphor 0.1.449 → 0.1.453

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 (134) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +115 -109
  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-BHb7sUUW.cjs → analyze-result-contract-Dxw66nUG.cjs} +1 -1
  10. package/dist/chunks/{analyze-result-contract-T-0Ntzys.js → analyze-result-contract-GHKFwThg.js} +1 -1
  11. package/dist/chunks/canonical-result-keys-Drc2x-lf.cjs +1 -0
  12. package/dist/chunks/canonical-result-keys-KLk__J_O.js +466 -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-Ci66eflG.cjs} +1 -1
  16. package/dist/chunks/{common-types-B7Jk3Rtj.js → common-types-F6qk6PPS.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-DCHiEkLE.js → dashboard-briefing-launcher-CFpX0WX3.js} +86 -84
  20. package/dist/chunks/dashboard-briefing-launcher-mUXWuiOZ.cjs +26 -0
  21. package/dist/chunks/{dashboard-controls-DwRFCcHV.js → dashboard-controls-BeYAmOJc.js} +15 -13
  22. package/dist/chunks/{dashboard-controls-CaFioayc.cjs → dashboard-controls-SoNubIu1.cjs} +1 -1
  23. package/dist/chunks/dashboard-json-BublPnQ4.cjs +1 -0
  24. package/dist/chunks/{dashboard-json-WoILbfTe.js → dashboard-json-DeLUagVV.js} +25 -23
  25. package/dist/chunks/edit-dashboard-visual-CrvPcO7A.cjs +172 -0
  26. package/dist/chunks/{edit-dashboard-visual-ciFhxqaI.js → edit-dashboard-visual-Go0h82DR.js} +6925 -6947
  27. package/dist/chunks/editor-action-buttons-1Lo0fIh7.cjs +16 -0
  28. package/dist/chunks/{editor-action-buttons-BPo_45pM.js → editor-action-buttons-BFNtjFzO.js} +41 -39
  29. package/dist/chunks/format-types-CFHQoIuk.js +1350 -0
  30. package/dist/chunks/format-types-PSZZ7hG8.cjs +1 -0
  31. package/dist/chunks/index-B3ZugihZ.js +3713 -0
  32. package/dist/chunks/{index-CPuawpXJ.js → index-BsH32bn1.js} +47472 -47845
  33. package/dist/chunks/index-ByFbacH7.cjs +1 -0
  34. package/dist/chunks/index-CACdoqu3.js +318 -0
  35. package/dist/chunks/index-DSKR3nKn.js +421 -0
  36. package/dist/chunks/index-DjiIh_9n.cjs +4 -0
  37. package/dist/chunks/index-F25jnH0p.cjs +1 -0
  38. package/dist/chunks/index-q12_nNUS.cjs +1392 -0
  39. package/dist/chunks/{metric-comparison-97zHGEx5.js → metric-comparison-D0T0MKRK.js} +1 -1
  40. package/dist/chunks/{metric-comparison-CUAJ8n4y.cjs → metric-comparison-DYR3RXam.cjs} +1 -1
  41. package/dist/chunks/pivot-header-presentation-DcfPaCiy.cjs +4 -0
  42. package/dist/chunks/pivot-header-presentation-nk604qc1.js +557 -0
  43. package/dist/chunks/{pivot-result-identity-CwJWpKI7.js → pivot-result-identity-C43Ai5Kr.js} +1 -1
  44. package/dist/chunks/{pivot-result-identity-CDLRT-YG.cjs → pivot-result-identity-CRUokNgm.cjs} +1 -1
  45. package/dist/chunks/pivot-result-lifecycle-4kSe0Hk1.js +1642 -0
  46. package/dist/chunks/pivot-result-lifecycle-BiJepH5S.cjs +1 -0
  47. package/dist/chunks/raw-temporal-contract-BF7PjBY9.js +64 -0
  48. package/dist/chunks/raw-temporal-contract-CxbRFwnd.cjs +1 -0
  49. package/dist/chunks/report-preferences-dialog-BEVZAE3m.cjs +1 -0
  50. package/dist/chunks/report-preferences-dialog-BNV7qXYH.js +723 -0
  51. package/dist/chunks/{report-runtime-context-bCy3CVzK.js → report-runtime-context-BJQDu2fV.js} +1 -1
  52. package/dist/chunks/{report-runtime-context-C8LZFsqV.cjs → report-runtime-context-DjYqLV-c.cjs} +1 -1
  53. package/dist/chunks/saved-temporal-bucket-format-DiZdQXOL.js +924 -0
  54. package/dist/chunks/saved-temporal-bucket-format-Gfbh4IiP.cjs +1 -0
  55. package/dist/chunks/switch-CjJ6FHYJ.cjs +138 -0
  56. package/dist/chunks/{switch-BXet-Sno.js → switch-DgLwr7O-.js} +4352 -5249
  57. package/dist/chunks/temporal-bucket-Dnj8qT9l.cjs +1 -0
  58. package/dist/chunks/temporal-bucket-FBZGrDCe.js +560 -0
  59. package/dist/chunks/temporal-bucket-authoring-7hv2laOG.cjs +1 -0
  60. package/dist/chunks/temporal-bucket-authoring-FIRnJz0e.js +221 -0
  61. package/dist/chunks/{temporal-bucket-contract-_F6vNhhH.js → temporal-bucket-contract-BQOj6Frl.js} +1 -1
  62. package/dist/chunks/{temporal-bucket-contract-ChDBWX8I.cjs → temporal-bucket-contract-anl4h-vg.cjs} +1 -1
  63. package/dist/chunks/{token-types-BHR58aTy.js → token-types-CRpQJ4kv.js} +1 -1
  64. package/dist/chunks/{token-types-BdQ8kHBm.cjs → token-types-D0i0IUX3.cjs} +1 -1
  65. package/dist/chunks/{update-policy-BxvYMYz0.cjs → update-policy-C1i9bgsy.cjs} +1 -1
  66. package/dist/chunks/{update-policy-g0rCQ9BM.js → update-policy-CaJz9aPG.js} +1 -1
  67. package/dist/chunks/{validators-Cs74WVie.js → validators-DeMXwRON.js} +253 -233
  68. package/dist/chunks/validators-Dm7Kpz6p.cjs +1 -0
  69. package/dist/dashboard/index.cjs +1 -1
  70. package/dist/dashboard/index.js +2 -2
  71. package/dist/dashboard-authoring/index.cjs +3 -3
  72. package/dist/dashboard-authoring/index.js +32 -29
  73. package/dist/data-app-builder/index.cjs +1 -1
  74. package/dist/data-app-builder/index.js +2 -2
  75. package/dist/data-app-codegen/index.cjs +1 -1
  76. package/dist/data-app-codegen/index.js +2 -2
  77. package/dist/data-app-codegen-node/index.cjs +1 -1
  78. package/dist/data-app-codegen-node/index.js +3 -3
  79. package/dist/data-app-sdk/index.cjs +1 -1
  80. package/dist/data-app-sdk/index.js +3 -3
  81. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  82. package/dist/data-app-sdk-adapters/index.js +2 -2
  83. package/dist/data-app-sdk-validation/index.cjs +1 -1
  84. package/dist/data-app-sdk-validation/index.js +3 -3
  85. package/dist/format-utils/index.cjs +3 -3
  86. package/dist/format-utils/index.js +162 -145
  87. package/dist/index.cjs +1 -1
  88. package/dist/index.js +157 -155
  89. package/dist/report-runtime-context/index.cjs +1 -1
  90. package/dist/report-runtime-context/index.js +2 -2
  91. package/dist/style.css +1 -1
  92. package/dist/surfboard/index.cjs +1 -1
  93. package/dist/surfboard/index.js +3 -3
  94. package/dist/types/analytics-protocol.d.ts +37 -0
  95. package/dist/types/briefings.d.ts +718 -7
  96. package/dist/types/dashboard-assistant.d.ts +18 -0
  97. package/dist/types/dashboard-authoring.d.ts +52 -2
  98. package/dist/types/dashboard.d.ts +128 -0
  99. package/dist/types/data-app-sdk-validation.d.ts +13 -0
  100. package/dist/types/data-app-sdk.d.ts +13 -0
  101. package/dist/types/format-utils.d.ts +190 -3
  102. package/dist/types/index.cjs +1 -1
  103. package/dist/types/index.js +4 -4
  104. package/dist/types/main.d.ts +103 -12
  105. package/dist/types/shared.d.ts +5 -0
  106. package/dist/types/surfboard.d.ts +129 -1
  107. package/dist/types/types.d.ts +98 -6
  108. package/dist/types/value-format-preferences.d.ts +3 -0
  109. package/package.json +2 -1
  110. package/dist/chunks/card-config-utils-15sRtebL.cjs +0 -1
  111. package/dist/chunks/card-config-utils-BYZ5MJOh.js +0 -16
  112. package/dist/chunks/dashboard-briefing-launcher-DDgDr2s3.cjs +0 -26
  113. package/dist/chunks/dashboard-json-CYtvwtvj.cjs +0 -1
  114. package/dist/chunks/edit-dashboard-visual-DwKcvlsF.cjs +0 -177
  115. package/dist/chunks/editor-action-buttons-BVmsk0Aj.cjs +0 -16
  116. package/dist/chunks/format-types-CSv0V7mm.cjs +0 -1
  117. package/dist/chunks/format-types-DZGgYj39.js +0 -1663
  118. package/dist/chunks/index-CJdxSyQq.js +0 -2578
  119. package/dist/chunks/index-DPv8_Ild.cjs +0 -1395
  120. package/dist/chunks/index-DRlMUglg.cjs +0 -4
  121. package/dist/chunks/pivot-result-lifecycle-BBabQ_da.js +0 -914
  122. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +0 -4
  123. package/dist/chunks/presentation-execution-BLfPTGX_.js +0 -637
  124. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +0 -1
  125. package/dist/chunks/report-preferences-dialog-D9ZCGh9l.js +0 -691
  126. package/dist/chunks/report-preferences-dialog-DaqTEcac.cjs +0 -1
  127. package/dist/chunks/switch-Cjk6G06r.cjs +0 -138
  128. package/dist/chunks/temporal-bucket-BnPxGrAi.js +0 -446
  129. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +0 -1
  130. package/dist/chunks/temporal-bucket-authoring-CgOuakGW.js +0 -205
  131. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +0 -1
  132. package/dist/chunks/temporal-result-owner-6peubmhU.js +0 -443
  133. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +0 -1
  134. package/dist/chunks/validators-9D4KBqKD.cjs +0 -1
@@ -351,6 +351,11 @@ declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
351
351
  */
352
352
  declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
353
353
  role: 'detail';
354
+ /**
355
+ * Query transport policy for ungrouped temporal values. This marker is
356
+ * projected into executable config and is never persisted authoring state.
357
+ */
358
+ dateValueMode?: 'canonical' | 'formatted';
354
359
  dateFormat?: DateFormatValue;
355
360
  customFormat?: string;
356
361
  /**
@@ -973,6 +978,18 @@ declare interface QueryColumnKeyMapEntry {
973
978
 
974
979
  declare type QueryColumnKeyRole = 'groupby' | 'metric' | 'pivotby' | 'detail';
975
980
 
981
+ /** Authoritative meaning of one ungrouped temporal result column. */
982
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
983
+
984
+ /**
985
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
986
+ * mutually exclusive with grouped `temporalBucket` metadata.
987
+ */
988
+ declare type RawTemporalValueMetadata = {
989
+ kind: 'raw_temporal';
990
+ valueKind: RawTemporalValueKind;
991
+ };
992
+
976
993
  declare type SelectedEntities = SelectedEntity[];
977
994
 
978
995
  declare type SelectedEntity = DatabaseEntityReference | DataModelEntityReference | DatasetEntityReference | FileEntityReference;
@@ -1633,6 +1650,7 @@ declare type SemaphorResultColumn = {
1633
1650
  source?: SemaphorFieldRef['source'];
1634
1651
  derivedField?: SemaphorDerivedFieldDefinition;
1635
1652
  temporalBucket?: TemporalBucketMetadata;
1653
+ rawTemporal?: RawTemporalValueMetadata;
1636
1654
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
1637
1655
  };
1638
1656
 
@@ -140,6 +140,18 @@ declare type CalendarContext = {
140
140
  fiscalCalendar?: MonthAlignedFiscalCalendar;
141
141
  };
142
142
 
143
+ export declare type CanonicalDetailResultFieldIdentity = {
144
+ name: string;
145
+ label?: string;
146
+ alias?: string;
147
+ entityName?: string;
148
+ role?: string;
149
+ aggregate?: string;
150
+ expression?: string;
151
+ };
152
+
153
+ export declare type CanonicalResultFieldRole = 'groupby' | 'metric' | 'pivotby' | 'detail';
154
+
143
155
  declare interface CardConfig {
144
156
  /**
145
157
  * Matrix table is the shared analytics-spine successor for pivot and
@@ -974,6 +986,11 @@ declare type DefaultDateFilter = RelativeDateFilter | FixedMonthDefaultDateFilte
974
986
  */
975
987
  declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
976
988
  role: 'detail';
989
+ /**
990
+ * Query transport policy for ungrouped temporal values. This marker is
991
+ * projected into executable config and is never persisted authoring state.
992
+ */
993
+ dateValueMode?: 'canonical' | 'formatted';
977
994
  dateFormat?: DateFormatValue;
978
995
  customFormat?: string;
979
996
  /**
@@ -1611,7 +1628,7 @@ export declare type GeneratedDashboardCardArtifact = {
1611
1628
 
1612
1629
  export declare function getDashboardAuthoringCardSource(card: Pick<DashboardPlanCard, 'analyticsIntent'>): SemaphorSourceRef | undefined;
1613
1630
 
1614
- export declare function getTemporalBucketAuthoringOptions(granularity: SemaphorTimeGrain, preservedFormat?: TemporalBucketFormat): readonly TemporalBucketAuthoringOption[];
1631
+ export declare function getTemporalBucketAuthoringOptions(granularity: SemaphorTimeGrain, preservedFormat?: TemporalBucketFormat, preferences?: ResolvedTemporalValueFormatPreferences): readonly TemporalBucketAuthoringOption[];
1615
1632
 
1616
1633
  export declare function getTemporalBucketAuthoringSelection(format: TemporalBucketFormat, granularity: SemaphorTimeGrain): TemporalBucketAuthoringSelection;
1617
1634
 
@@ -1769,6 +1786,8 @@ declare interface LinkFormat {
1769
1786
  openInNewTab: boolean;
1770
1787
  }
1771
1788
 
1789
+ declare type LocaleStyle = 'short' | 'medium' | 'long';
1790
+
1772
1791
  declare type LogicalOperator = 'AND' | 'OR';
1773
1792
 
1774
1793
  export declare type MaterializableDashboardAuthoringSource = Extract<SemaphorSourceRef, {
@@ -1967,7 +1986,7 @@ export declare function preferDashboardAuthoringSourceMetadata(current: Semaphor
1967
1986
 
1968
1987
  export declare function preferredDashboardAuthoringSource(sources: readonly SemaphorSourceRef[]): SemaphorSourceRef | undefined;
1969
1988
 
1970
- export declare function previewTemporalBucketAuthoringFormat(format: TemporalBucketFormat, granularity: SemaphorTimeGrain): string;
1989
+ export declare function previewTemporalBucketAuthoringFormat(format: TemporalBucketFormat, granularity: SemaphorTimeGrain, preferences?: ResolvedTemporalValueFormatPreferences): string;
1971
1990
 
1972
1991
  declare interface QueryConfig {
1973
1992
  groupByColumns?: GroupByColumn[];
@@ -2017,6 +2036,24 @@ declare type RelativeDateFilter = {
2017
2036
  to: number;
2018
2037
  };
2019
2038
 
2039
+ /** Physical SQL/result alias used by config-owned detail projections. */
2040
+ export declare function resolveCanonicalDetailResultRawKey(field: CanonicalDetailResultFieldIdentity): string;
2041
+
2042
+ /**
2043
+ * Deterministic canonical response-key policy shared by the query producer and
2044
+ * recurring snapshot capture. A unique display label may become the physical
2045
+ * output key only when it cannot hide another raw result key.
2046
+ */
2047
+ export declare function resolveCanonicalResultOutputKey(input: {
2048
+ label?: string;
2049
+ labelCount: number;
2050
+ rawKey: string;
2051
+ rawKeys: ReadonlySet<string>;
2052
+ }): string;
2053
+
2054
+ /** Role-aware physical key policy used by the canonical query key map. */
2055
+ export declare function resolveCanonicalResultRawKey(field: CanonicalDetailResultFieldIdentity, role: CanonicalResultFieldRole, emittedAliasOverride?: string): string;
2056
+
2020
2057
  export declare function resolveDashboardAuthoringSource({ explicitSource, field, defaultSource, fallbackSources, }: {
2021
2058
  explicitSource?: unknown;
2022
2059
  field?: SemaphorFieldRef;
@@ -2024,6 +2061,19 @@ export declare function resolveDashboardAuthoringSource({ explicitSource, field,
2024
2061
  fallbackSources?: readonly SemaphorSourceRef[];
2025
2062
  }): MaterializableDashboardAuthoringSource | undefined;
2026
2063
 
2064
+ /** Viewer preferences that affect temporal presentation without numeric currency policy. */
2065
+ declare type ResolvedTemporalValueFormatPreferences = Pick<ResolvedValueFormatPreferences, 'locale' | 'dateStyle' | 'dateTime'>;
2066
+
2067
+ declare type ResolvedValueFormatPreferences = {
2068
+ locale: string;
2069
+ dateStyle: LocaleStyle;
2070
+ dateTime: {
2071
+ dateStyle: LocaleStyle;
2072
+ timeStyle: LocaleStyle;
2073
+ };
2074
+ defaultCurrency: string;
2075
+ };
2076
+
2027
2077
  export declare function resolveTemporalBucketAuthoringFormat(granularity: SemaphorTimeGrain, value: string, customPattern?: string): TemporalBucketFormat;
2028
2078
 
2029
2079
  /**
@@ -898,6 +898,8 @@ export declare type DashboardProps = {
898
898
  * points. Ordinary dashboard consumers should leave this unset.
899
899
  */
900
900
  interactionExecutionSnapshot?: Record<string, InteractionState>;
901
+ /** Server-resolved immutable presentation snapshot for internal print views. */
902
+ presentationExecutionSnapshot?: PresentationExecutionSnapshot;
901
903
  /**
902
904
  * Render target for print entry points. Generic dashboard PDF exports also
903
905
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -1001,6 +1003,11 @@ declare type DefaultDateFilter = RelativeDateFilter | FixedMonthDefaultDateFilte
1001
1003
  */
1002
1004
  declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
1003
1005
  role: 'detail';
1006
+ /**
1007
+ * Query transport policy for ungrouped temporal values. This marker is
1008
+ * projected into executable config and is never persisted authoring state.
1009
+ */
1010
+ dateValueMode?: 'canonical' | 'formatted';
1004
1011
  dateFormat?: DateFormatValue;
1005
1012
  customFormat?: string;
1006
1013
  /**
@@ -2088,6 +2095,32 @@ export declare type NumberOptions = {
2088
2095
  colorRanges?: ColorRange[];
2089
2096
  };
2090
2097
 
2098
+ declare type NumericCanonicalFormat = {
2099
+ type: 'number' | 'currency' | 'percent' | 'scientific';
2100
+ locale?: string;
2101
+ minimumFractionDigits?: number;
2102
+ maximumFractionDigits?: number;
2103
+ useGrouping?: boolean;
2104
+ prefix?: string;
2105
+ suffix?: string;
2106
+ negativeStyle?: 'minus' | 'parentheses';
2107
+ compact?: boolean;
2108
+ scale?: number;
2109
+ currency?: string;
2110
+ percentValueMode?: 'fraction' | 'whole';
2111
+ };
2112
+
2113
+ declare type NumericPresentationTarget = {
2114
+ kind: 'metric';
2115
+ metricId: string;
2116
+ } | {
2117
+ kind: 'column';
2118
+ columnKey: string;
2119
+ } | {
2120
+ kind: 'matrix_measure';
2121
+ measureId: string;
2122
+ };
2123
+
2091
2124
  declare type OldFilterValue = string | number | null | (string | number)[] | RangeValue;
2092
2125
 
2093
2126
  declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
@@ -2165,6 +2198,18 @@ export declare type Placeholders = {
2165
2198
 
2166
2199
  export declare type PluginType = 'custom' | 'standard';
2167
2200
 
2201
+ declare type PresentationExecutionSnapshot = {
2202
+ version: 1;
2203
+ reportContext: ReportRuntimeContext;
2204
+ resolvedFormats: ResolvedPresentationEntry[];
2205
+ };
2206
+
2207
+ declare type PresentationScope = {
2208
+ dashboardId: string;
2209
+ cardId?: string;
2210
+ attachmentIndex?: number;
2211
+ };
2212
+
2168
2213
  declare interface QueryConfig {
2169
2214
  groupByColumns?: GroupByColumn[];
2170
2215
  pivotColumns?: GroupByColumn[];
@@ -2187,6 +2232,13 @@ declare type RangeValue = {
2187
2232
  gt?: string | number;
2188
2233
  };
2189
2234
 
2235
+ declare type RawTemporalPatternDialect = 'semaphor_tokens' | 'date_fns';
2236
+
2237
+ declare type RawTemporalPresentationTarget = {
2238
+ kind: 'column';
2239
+ columnKey: string;
2240
+ };
2241
+
2190
2242
  declare type RelativeDateFilter = {
2191
2243
  mode: 'last';
2192
2244
  n: number;
@@ -2288,6 +2340,14 @@ export declare type ResolvedDocumentInput = {
2288
2340
  exports: Record<string, string | number | boolean | null>;
2289
2341
  };
2290
2342
 
2343
+ declare type ResolvedNumericPresentationEntry = {
2344
+ scope: PresentationScope;
2345
+ target: NumericPresentationTarget;
2346
+ format: NumericCanonicalFormat;
2347
+ };
2348
+
2349
+ declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry | ResolvedRawTemporalPresentationEntry;
2350
+
2291
2351
  declare type ResolvedPrimaryDateField = (ResolvedPrimaryDateFieldBase & ({
2292
2352
  defaultGranularity?: SemaphorTimeGrain;
2293
2353
  format?: undefined;
@@ -2311,6 +2371,61 @@ declare type ResolvedPrimaryDateFieldBase = {
2311
2371
  supportedGranularities?: SemaphorTimeGrain[];
2312
2372
  };
2313
2373
 
2374
+ declare type ResolvedRawTemporalFormat = {
2375
+ type: 'raw_temporal';
2376
+ locale: string;
2377
+ calendarTimezone: string;
2378
+ /** Resolved source timezone for timezone-less wall datetimes, when authored. */
2379
+ sourceTimezone?: string;
2380
+ presentation: {
2381
+ mode: 'auto';
2382
+ styles: ResolvedTemporalStyleSet;
2383
+ } | {
2384
+ mode: 'pattern';
2385
+ dialect: RawTemporalPatternDialect;
2386
+ pattern: string;
2387
+ };
2388
+ };
2389
+
2390
+ declare type ResolvedRawTemporalPresentationEntry = {
2391
+ scope: PresentationScope;
2392
+ target: RawTemporalPresentationTarget;
2393
+ format: ResolvedRawTemporalFormat;
2394
+ };
2395
+
2396
+ declare type ResolvedTemporalBucketFormat = {
2397
+ type: 'temporal_bucket';
2398
+ locale: string;
2399
+ presentation: {
2400
+ mode: 'auto';
2401
+ styles: ResolvedTemporalStyleSet;
2402
+ };
2403
+ } | {
2404
+ type: 'temporal_bucket';
2405
+ locale: string;
2406
+ presentation: {
2407
+ mode: 'preset';
2408
+ preset: TemporalBucketPreset;
2409
+ } | {
2410
+ mode: 'pattern';
2411
+ pattern: string;
2412
+ };
2413
+ };
2414
+
2415
+ declare type ResolvedTemporalBucketPresentationEntry = {
2416
+ scope: PresentationScope;
2417
+ target: TemporalBucketPresentationTarget;
2418
+ format: ResolvedTemporalBucketFormat;
2419
+ };
2420
+
2421
+ declare type ResolvedTemporalStyleSet = {
2422
+ dateStyle: LocaleStyle;
2423
+ dateTime: {
2424
+ dateStyle: LocaleStyle;
2425
+ timeStyle: LocaleStyle;
2426
+ };
2427
+ };
2428
+
2314
2429
  declare type ResolvedValueFormatPreferences = {
2315
2430
  locale: string;
2316
2431
  dateStyle: LocaleStyle;
@@ -3403,6 +3518,19 @@ declare type TemporalBucketPresentation = {
3403
3518
  pattern: string;
3404
3519
  };
3405
3520
 
3521
+ declare type TemporalBucketPresentationTarget = {
3522
+ kind: 'field';
3523
+ fieldId: string;
3524
+ /** Distinguishes one semantic field used on both pivot axes. */
3525
+ role?: 'groupby' | 'pivotby';
3526
+ } | {
3527
+ kind: 'column';
3528
+ columnKey: string;
3529
+ } | {
3530
+ kind: 'matrix_axis';
3531
+ axisInstanceId: string;
3532
+ };
3533
+
3406
3534
  declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
3407
3535
 
3408
3536
  declare type TemporalPrecision = 'minute';
@@ -246,6 +246,18 @@ export declare function normalizeSemaphorAnalysisQueryOptions(value: unknown, op
246
246
 
247
247
  export declare function normalizeSemaphorFieldRole(field: SemaphorFieldRef): SemaphorFieldRef['role'] | undefined;
248
248
 
249
+ /** Authoritative meaning of one ungrouped temporal result column. */
250
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
251
+
252
+ /**
253
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
254
+ * mutually exclusive with grouped `temporalBucket` metadata.
255
+ */
256
+ declare type RawTemporalValueMetadata = {
257
+ kind: 'raw_temporal';
258
+ valueKind: RawTemporalValueKind;
259
+ };
260
+
249
261
  export declare function relatedProjectionFieldCandidatesForIntent(intent: RelationshipAwareProjectionIntent): SemaphorRelatedProjectionFieldCandidate[];
250
262
 
251
263
  declare type RelationshipAwareProjectionIntent = SemaphorRecordsIntent | SemaphorMetricIntent | SemaphorMatrixIntent;
@@ -1169,6 +1181,7 @@ declare type SemaphorResultColumn = {
1169
1181
  source?: SemaphorFieldRef['source'];
1170
1182
  derivedField?: SemaphorDerivedFieldDefinition;
1171
1183
  temporalBucket?: TemporalBucketMetadata;
1184
+ rawTemporal?: RawTemporalValueMetadata;
1172
1185
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
1173
1186
  };
1174
1187
 
@@ -341,6 +341,18 @@ declare type MonthAlignedFiscalCalendar = {
341
341
  yearStartMonth: number;
342
342
  };
343
343
 
344
+ /** Authoritative meaning of one ungrouped temporal result column. */
345
+ declare type RawTemporalValueKind = 'date' | 'wall_datetime' | 'instant';
346
+
347
+ /**
348
+ * Result-column metadata for an ungrouped temporal value. This descriptor is
349
+ * mutually exclusive with grouped `temporalBucket` metadata.
350
+ */
351
+ declare type RawTemporalValueMetadata = {
352
+ kind: 'raw_temporal';
353
+ valueKind: RawTemporalValueKind;
354
+ };
355
+
344
356
  export declare const semaphor: {
345
357
  source: {
346
358
  semantic(spec: SemaphorSemanticSourceBuilderSpec): SemaphorSemanticSourceRef;
@@ -1624,6 +1636,7 @@ export declare type SemaphorResultColumn = {
1624
1636
  source?: SemaphorFieldRef['source'];
1625
1637
  derivedField?: SemaphorDerivedFieldDefinition;
1626
1638
  temporalBucket?: TemporalBucketMetadata;
1639
+ rawTemporal?: RawTemporalValueMetadata;
1627
1640
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
1628
1641
  };
1629
1642