react-semaphor 0.1.443 → 0.1.445

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 (133) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/analytics-protocol/index.cjs +1 -1
  3. package/dist/analytics-protocol/index.js +123 -107
  4. package/dist/appearance/index.cjs +1 -1
  5. package/dist/brand-studio/index.cjs +2 -2
  6. package/dist/brand-studio/index.js +5 -4
  7. package/dist/briefings/index.cjs +1 -1
  8. package/dist/briefings/index.js +526 -457
  9. package/dist/chunks/analyze-result-contract-BHb7sUUW.cjs +1 -0
  10. package/dist/chunks/analyze-result-contract-DUv3QnMl.js +29 -0
  11. package/dist/chunks/{braces-CbO-aIwH.js → braces-BKimshER.cjs} +1 -1
  12. package/dist/chunks/{code-editor-BpADiIlq.js → code-editor-B4gTfvc5.js} +6800 -6560
  13. package/dist/chunks/code-editor-BYVorgOf.cjs +138 -0
  14. package/dist/chunks/common-types-CQ6SHfLk.cjs +1 -0
  15. package/dist/chunks/{common-types-ClkOI-3O.js → common-types-DFsDdpH7.js} +22 -21
  16. package/dist/chunks/dashboard-CAiwJW3L.cjs +1397 -0
  17. package/dist/chunks/{dashboard-briefing-launcher-C60n8LqW.js → dashboard-briefing-launcher-2SLNOaTg.js} +26 -24
  18. package/dist/chunks/{dashboard-briefing-launcher-BYMLjZxG.js → dashboard-briefing-launcher-CHwjpUYz.cjs} +2 -2
  19. package/dist/chunks/{dashboard-controls-ti9Rcel2.js → dashboard-controls-BfL14aqO.js} +11 -9
  20. package/dist/chunks/{dashboard-controls-BH_fZYDU.js → dashboard-controls-BgGTg4yw.cjs} +2 -2
  21. package/dist/chunks/dashboard-date-comparison-definition-DZq0htjG.cjs +1 -0
  22. package/dist/chunks/dashboard-json-BOv8tCa9.cjs +1 -0
  23. package/dist/chunks/{dashboard-json-Bturr634.js → dashboard-json-BZwq3EcS.js} +14 -12
  24. package/dist/chunks/{dashboard-Bd1Quco-.js → dashboard-u61yfU6u.js} +50081 -47351
  25. package/dist/chunks/edit-dashboard-visual-BdVCH0DJ.cjs +182 -0
  26. package/dist/chunks/{edit-dashboard-visual-DglMds57.js → edit-dashboard-visual-njLPYip3.js} +6825 -6656
  27. package/dist/chunks/{editor-action-buttons-CRi0fhVW.js → editor-action-buttons-BhLX5Q6m.js} +24 -23
  28. package/dist/chunks/{editor-action-buttons-Cxo7_tNG.js → editor-action-buttons-CBVMFipA.cjs} +1 -1
  29. package/dist/chunks/{index-D7KJindZ.js → format-types-CSv0V7mm.cjs} +1 -1
  30. package/dist/chunks/{index-CnujJ3fa.js → format-types-CZH5w1lo.js} +23 -17
  31. package/dist/chunks/{layout-grid-B08pP7v6.js → layout-grid-3-HWzEwU.cjs} +1 -1
  32. package/dist/chunks/{metric-comparison-CPoDx56y.js → metric-comparison-BJ_Qu1ZF.js} +1 -1
  33. package/dist/chunks/metric-comparison-CUAJ8n4y.cjs +1 -0
  34. package/dist/chunks/{palette-C0yjT5Tv.js → palette-DW_l7Jr0.cjs} +1 -1
  35. package/dist/chunks/pivot-result-identity-B6QCWOSi.js +94 -0
  36. package/dist/chunks/pivot-result-identity-CDLRT-YG.cjs +1 -0
  37. package/dist/chunks/pivot-result-lifecycle-BM3Pl-D1.js +914 -0
  38. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +4 -0
  39. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +1 -0
  40. package/dist/chunks/presentation-execution-CGlb7YZ6.js +637 -0
  41. package/dist/chunks/{report-preferences-dialog-TtwdAuNn.js → report-preferences-dialog-D_NJu2wU.js} +7 -6
  42. package/dist/chunks/report-preferences-dialog-r8QzOSFb.cjs +1 -0
  43. package/dist/chunks/report-runtime-context-C8LZFsqV.cjs +1 -0
  44. package/dist/chunks/report-runtime-context-Qzn11HQe.js +387 -0
  45. package/dist/chunks/{save-Xdc4pnys.js → save-4_uMnE6s.cjs} +1 -1
  46. package/dist/chunks/{search-Dcud9ajy.js → search-6ZmeMq55.cjs} +1 -1
  47. package/dist/chunks/temporal-bucket-BnPxGrAi.js +446 -0
  48. package/dist/chunks/temporal-bucket-authoring-BUZMuVca.js +205 -0
  49. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +1 -0
  50. package/dist/chunks/temporal-bucket-contract-B2bJ1oe4.js +108 -0
  51. package/dist/chunks/temporal-bucket-contract-ChDBWX8I.cjs +1 -0
  52. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +1 -0
  53. package/dist/chunks/{comparison-document-migration-Dj6xZMCb.js → temporal-result-owner-Cb27SSG9.js} +152 -123
  54. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +1 -0
  55. package/dist/chunks/token-types-BdQ8kHBm.cjs +1 -0
  56. package/dist/chunks/token-types-DLo91nOf.js +8 -0
  57. package/dist/chunks/{update-policy-DnF_74zC.js → update-policy-BxvYMYz0.cjs} +1 -1
  58. package/dist/chunks/{update-policy-De2NswtM.js → update-policy-eg59mQqv.js} +1 -1
  59. package/dist/chunks/validators-9D4KBqKD.cjs +1 -0
  60. package/dist/chunks/validators-wZ2WlNHc.js +4640 -0
  61. package/dist/dashboard/index.cjs +1 -1
  62. package/dist/dashboard/index.js +2 -2
  63. package/dist/dashboard-authoring/index.cjs +3 -3
  64. package/dist/dashboard-authoring/index.js +136 -126
  65. package/dist/data-app-builder/index.cjs +1 -1
  66. package/dist/data-app-builder/index.js +2 -2
  67. package/dist/data-app-codegen/index.cjs +1 -1
  68. package/dist/data-app-codegen/index.js +2 -2
  69. package/dist/data-app-codegen-node/index.cjs +1 -1
  70. package/dist/data-app-codegen-node/index.js +3 -3
  71. package/dist/data-app-sdk/index.cjs +2 -2
  72. package/dist/data-app-sdk/index.js +34 -35
  73. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  74. package/dist/data-app-sdk-adapters/index.js +5 -5
  75. package/dist/data-app-sdk-validation/index.cjs +1 -1
  76. package/dist/data-app-sdk-validation/index.js +9 -10
  77. package/dist/format-utils/index.cjs +3 -3
  78. package/dist/format-utils/index.js +155 -176
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +180 -174
  81. package/dist/report-runtime-context/index.cjs +1 -1
  82. package/dist/report-runtime-context/index.js +7 -392
  83. package/dist/shared/index.cjs +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/surfboard/index.cjs +1 -1
  86. package/dist/surfboard/index.js +3 -3
  87. package/dist/types/analytics-protocol.d.ts +257 -48
  88. package/dist/types/briefings.d.ts +138 -50
  89. package/dist/types/dashboard-assistant.d.ts +207 -52
  90. package/dist/types/dashboard-authoring.d.ts +182 -50
  91. package/dist/types/dashboard.d.ts +290 -48
  92. package/dist/types/data-app-builder.d.ts +48 -42
  93. package/dist/types/data-app-codegen-node.d.ts +50 -44
  94. package/dist/types/data-app-codegen.d.ts +50 -44
  95. package/dist/types/data-app-sdk-adapters.d.ts +48 -42
  96. package/dist/types/data-app-sdk-validation.d.ts +81 -43
  97. package/dist/types/data-app-sdk.d.ts +83 -45
  98. package/dist/types/format-utils.d.ts +645 -67
  99. package/dist/types/index.cjs +1 -1
  100. package/dist/types/index.js +19 -19
  101. package/dist/types/main.d.ts +298 -94
  102. package/dist/types/report-runtime-context.d.ts +3 -0
  103. package/dist/types/shared.d.ts +116 -41
  104. package/dist/types/surfboard.d.ts +290 -48
  105. package/dist/types/types.d.ts +455 -65
  106. package/package.json +3 -1
  107. package/dist/chunks/analyze-result-contract-BswhsmWT.js +0 -1
  108. package/dist/chunks/analyze-result-contract-CfOBEwaC.js +0 -1998
  109. package/dist/chunks/code-editor-M7HTUhdF.js +0 -138
  110. package/dist/chunks/common-types-C73-Ud1-.js +0 -1
  111. package/dist/chunks/comparison-document-migration-DbU_BTxR.js +0 -1
  112. package/dist/chunks/csv-utils-BZDvO2Fw.js +0 -376
  113. package/dist/chunks/csv-utils-Co0WxHke.js +0 -4
  114. package/dist/chunks/dashboard-cB3xmTNn.js +0 -1402
  115. package/dist/chunks/dashboard-date-comparison-definition-DGZr3m-b.js +0 -1
  116. package/dist/chunks/dashboard-json-Dw_55vSZ.js +0 -1
  117. package/dist/chunks/edit-dashboard-visual-BUc3NBQ4.js +0 -182
  118. package/dist/chunks/metric-comparison-DVy3fll_.js +0 -1
  119. package/dist/chunks/numeric-presentation-BJs5lSar.js +0 -517
  120. package/dist/chunks/numeric-presentation-Dlb-Dk4c.js +0 -1
  121. package/dist/chunks/report-preferences-dialog-CCvFqH4Q.js +0 -1
  122. package/dist/chunks/source-identity-5OPV4gvg.js +0 -92
  123. package/dist/chunks/source-identity-Cbo2LOHQ.js +0 -1
  124. package/dist/chunks/validators-B2vUAqTf.js +0 -1
  125. package/dist/chunks/validators-Bce_J7Vd.js +0 -2448
  126. /package/dist/chunks/{card-config-utils-15sRtebL.js → card-config-utils-15sRtebL.cjs} +0 -0
  127. /package/dist/chunks/{catalog-field-grounding-Bnx-3tE0.js → catalog-field-grounding-Bnx-3tE0.cjs} +0 -0
  128. /package/dist/chunks/{dashboard-input-contract-DV3cshjz.js → dashboard-input-contract-DV3cshjz.cjs} +0 -0
  129. /package/dist/chunks/{index-Dpm_VET4.js → index-Dpm_VET4.cjs} +0 -0
  130. /package/dist/chunks/{index-jSrCwPQz.js → index-jSrCwPQz.cjs} +0 -0
  131. /package/dist/chunks/{normalize-dashboard-for-dirty-check-BXRUMVb2.js → normalize-dashboard-for-dirty-check-BXRUMVb2.cjs} +0 -0
  132. /package/dist/chunks/{operators-DrTQsJXv.js → operators-DrTQsJXv.cjs} +0 -0
  133. /package/dist/chunks/{use-debounced-dirty-check-XHSwAefL.js → use-debounced-dirty-check-XHSwAefL.cjs} +0 -0
@@ -22,6 +22,9 @@ export declare type CalendarPreferencesResponse = {
22
22
 
23
23
  export declare const DEFAULT_CALENDAR_CONTEXT: CalendarContext;
24
24
 
25
+ /** React-free validation shared by Calendar and temporal-result boundaries. */
26
+ export declare function isValidIanaTimeZone(value: string): boolean;
27
+
25
28
  declare type LocaleStyle = 'short' | 'medium' | 'long';
26
29
 
27
30
  export declare type MonthAlignedFiscalCalendar = {
@@ -64,6 +64,8 @@ declare type BaseFilter = {
64
64
  dataType?: string;
65
65
  fieldMeta?: FilterFieldMeta;
66
66
  semanticContext?: FilterSemanticContext;
67
+ /** Governed meaning for canonical grouped-temporal filter values. */
68
+ temporalBucket?: TemporalBucketMetadata;
67
69
  };
68
70
 
69
71
  declare type CacheConfig = {
@@ -119,6 +121,15 @@ declare interface CalculatedFieldFormula {
119
121
  */
120
122
  declare type CalculatedFieldOperation = 'sum' | 'difference' | 'product' | 'ratio' | 'change' | 'percentage' | 'scale' | 'custom';
121
123
 
124
+ declare type CalendarContext = {
125
+ tz: string;
126
+ weekStart: WeekStart;
127
+ anchor: 'now' | {
128
+ iso: string;
129
+ };
130
+ fiscalCalendar?: MonthAlignedFiscalCalendar;
131
+ };
132
+
122
133
  declare interface CardConfig {
123
134
  /**
124
135
  * Matrix table is the shared analytics-spine successor for pivot and
@@ -180,9 +191,6 @@ declare interface CardConfig {
180
191
  * Configuration for on-click dashboard filters triggered by this card.
181
192
  */
182
193
  clickFilterInteractions?: ClickFilterInteraction[];
183
- showTrendline?: boolean;
184
- trendlineWindow?: number;
185
- trendlineGranularity?: 'day' | 'week' | 'month';
186
194
  summary?: {
187
195
  enabled?: boolean;
188
196
  showOnCard?: boolean;
@@ -499,7 +507,10 @@ declare type ControlOption = {
499
507
  label: string;
500
508
  presentation?: {
501
509
  granularity?: TimeGranularity;
510
+ format?: TemporalBucketFormat;
511
+ /** Saved-dashboard compatibility only. New authoring writes `format`. */
502
512
  dateFormat?: DateFormatValue;
513
+ /** Saved-dashboard compatibility only. New authoring writes `format`. */
503
514
  customFormat?: string;
504
515
  };
505
516
  };
@@ -1091,8 +1102,9 @@ declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'fi
1091
1102
 
1092
1103
  declare interface Field {
1093
1104
  /**
1094
- * Unique identifier for this field instance (for joins, UI state, etc.).
1095
- * Should be unique within the context of the query or data model.
1105
+ * Stable authored/semantic field identifier (for joins, UI state, etc.).
1106
+ * It is normally unique within a role, but one saved query may reuse it in
1107
+ * different roles; result bindings must therefore include the role.
1096
1108
  * Example: 'orders.customer_id', 'expr_12345', etc.
1097
1109
  */
1098
1110
  id: string;
@@ -1134,6 +1146,12 @@ declare interface Field {
1134
1146
  */
1135
1147
  derivedField?: SemaphorDerivedFieldDefinition;
1136
1148
  format?: FormatSpec;
1149
+ /**
1150
+ * Source-level temporal presentation keeps the semantic grain that authored
1151
+ * the format. The card's mutable `granularity` remains the active query
1152
+ * grain, so changing it cannot accidentally retarget a semantic default.
1153
+ */
1154
+ semanticTemporalPresentation?: SemanticTemporalPresentation;
1137
1155
  aggregate?: AggregateFunction;
1138
1156
  fieldScope?: FieldScope;
1139
1157
  }
@@ -1177,6 +1195,10 @@ declare interface FilterCondition {
1177
1195
  field: Field;
1178
1196
  operator: Operator;
1179
1197
  value: FilterValue;
1198
+ /** Display-only label for canonical grouped-temporal values. */
1199
+ label?: string;
1200
+ /** Governed meaning for a canonical grouped-temporal scalar. */
1201
+ temporalBucket?: TemporalBucketMetadata;
1180
1202
  }
1181
1203
 
1182
1204
  declare type FilterDashboardInput = DashboardInputBase & {
@@ -1337,7 +1359,7 @@ declare type FormatSpec = {
1337
1359
  type: 'string';
1338
1360
  prefix?: string;
1339
1361
  suffix?: string;
1340
- };
1362
+ } | TemporalBucketFormat;
1341
1363
 
1342
1364
  declare type GlobalDateComparisonSelection = {
1343
1365
  mode: 'off';
@@ -1346,7 +1368,7 @@ declare type GlobalDateComparisonSelection = {
1346
1368
  spec: ViewerPeriodComparisonSpec;
1347
1369
  };
1348
1370
 
1349
- declare type Granularity = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'hour' | 'minute' | 'second';
1371
+ declare type Granularity = SemaphorTimeGrain;
1350
1372
 
1351
1373
  declare interface GroupByColumn extends BaseColumn {
1352
1374
  role: 'groupby';
@@ -1357,6 +1379,11 @@ declare interface GroupByColumn extends BaseColumn {
1357
1379
  declare interface GroupByField extends Field {
1358
1380
  role: 'groupby';
1359
1381
  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';
1360
1387
  /**
1361
1388
  * Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
1362
1389
  * If present, used in SELECT and GROUP BY instead of just the column name.
@@ -1568,6 +1595,11 @@ declare interface MetricField extends Field {
1568
1595
  semanticComparisonPolarity?: MetricComparisonPolarity;
1569
1596
  }
1570
1597
 
1598
+ declare type MonthAlignedFiscalCalendar = {
1599
+ kind: 'month_aligned';
1600
+ yearStartMonth: number;
1601
+ };
1602
+
1571
1603
  declare type NoneOptions = {};
1572
1604
 
1573
1605
  /**
@@ -1635,6 +1667,11 @@ declare type PersistedInteraction = Interaction & {
1635
1667
 
1636
1668
  declare interface PivotByField extends Field {
1637
1669
  role: 'pivotby';
1670
+ /**
1671
+ * Query transport policy for grouped temporal pivot members. This is
1672
+ * projected into executable config and is never persisted authoring state.
1673
+ */
1674
+ dateValueMode?: 'canonical' | 'formatted';
1638
1675
  }
1639
1676
 
1640
1677
  declare interface QueryConfig {
@@ -1687,6 +1724,15 @@ declare type SelectedEntities = SelectedEntity[];
1687
1724
 
1688
1725
  declare type SelectedEntity = DatabaseEntityReference | DataModelEntityReference | DatasetEntityReference | FileEntityReference;
1689
1726
 
1727
+ declare type SemanticTemporalPresentation = {
1728
+ granularity: SemaphorTimeGrain;
1729
+ format: TemporalBucketFormat;
1730
+ };
1731
+
1732
+ declare const SEMAPHOR_MATRIX_TIME_GRAINS: ["hour", "day", "week", "month", "quarter", "year"];
1733
+
1734
+ declare const SEMAPHOR_TIME_GRAINS: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
1735
+
1690
1736
  declare type SemaphorAggregateFunction = 'SUM' | 'COUNT' | 'AVG' | 'MIN' | 'MAX' | 'MEDIAN' | 'DISTINCT';
1691
1737
 
1692
1738
  declare type SemaphorAnalyticsFilter = SemaphorAnalyticsValueFilter | SemaphorAnalyticsNullFilter;
@@ -1740,7 +1786,7 @@ declare type SemaphorDerivedFieldDefinition = {
1740
1786
  defaultAggregate?: SemaphorAggregateFunction;
1741
1787
  aggregationBehavior?: SemaphorDerivedFieldAggregationBehavior;
1742
1788
  aggregationStrategy?: SemaphorDerivedFieldAggregationStrategy;
1743
- format?: SemaphorValueFormat;
1789
+ format?: SemaphorScalarValueFormat;
1744
1790
  tags?: string[];
1745
1791
  };
1746
1792
 
@@ -1791,7 +1837,7 @@ declare type SemaphorMatrixAxisExpansionOptions = {
1791
1837
  declare type SemaphorMatrixAxisLevel = {
1792
1838
  id?: string;
1793
1839
  field: SemaphorFieldRef;
1794
- grain?: SemaphorTimeGrain;
1840
+ grain?: SemaphorMatrixTimeGrain;
1795
1841
  label?: string;
1796
1842
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
1797
1843
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -1883,6 +1929,8 @@ declare type SemaphorMatrixSubtotalOptions = {
1883
1929
  label?: string;
1884
1930
  };
1885
1931
 
1932
+ declare type SemaphorMatrixTimeGrain = (typeof SEMAPHOR_MATRIX_TIME_GRAINS)[number];
1933
+
1886
1934
  declare type SemaphorMatrixTotalCalculation = {
1887
1935
  kind: 'defaultAggregate';
1888
1936
  } | {
@@ -1918,7 +1966,7 @@ declare type SemaphorMatrixValueField = {
1918
1966
  field: SemaphorFieldRef;
1919
1967
  aggregate?: SemaphorAggregateFunction;
1920
1968
  label?: string;
1921
- format?: SemaphorValueFormat;
1969
+ format?: SemaphorScalarValueFormat;
1922
1970
  totalBehavior?: SemaphorMatrixTotalCalculation;
1923
1971
  };
1924
1972
 
@@ -1928,36 +1976,7 @@ declare type SemaphorRelationshipHint = {
1928
1976
  relationshipIds?: string[];
1929
1977
  };
1930
1978
 
1931
- declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
1932
- kind: 'semantic';
1933
- }>;
1934
-
1935
- declare type SemaphorSourceRef = {
1936
- kind: 'semantic';
1937
- domainId: string;
1938
- datasetName: string;
1939
- datasetId?: string;
1940
- label?: string;
1941
- connectionId?: string;
1942
- } | {
1943
- kind: 'physical';
1944
- connectionId: string;
1945
- connectionType?: string;
1946
- tableName: string;
1947
- databaseName?: string;
1948
- schemaName?: string;
1949
- label?: string;
1950
- dialect?: SemaphorDialect;
1951
- } | {
1952
- kind: 'sql';
1953
- connectionId: string;
1954
- dialect?: SemaphorDialect;
1955
- label?: string;
1956
- };
1957
-
1958
- declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
1959
-
1960
- declare type SemaphorValueFormat = {
1979
+ declare type SemaphorScalarValueFormat = {
1961
1980
  type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
1962
1981
  minimumFractionDigits?: number;
1963
1982
  maximumFractionDigits?: number;
@@ -1994,6 +2013,35 @@ declare type SemaphorValueFormat = {
1994
2013
  suffix?: string;
1995
2014
  };
1996
2015
 
2016
+ declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
2017
+ kind: 'semantic';
2018
+ }>;
2019
+
2020
+ declare type SemaphorSourceRef = {
2021
+ kind: 'semantic';
2022
+ domainId: string;
2023
+ datasetName: string;
2024
+ datasetId?: string;
2025
+ label?: string;
2026
+ connectionId?: string;
2027
+ } | {
2028
+ kind: 'physical';
2029
+ connectionId: string;
2030
+ connectionType?: string;
2031
+ tableName: string;
2032
+ databaseName?: string;
2033
+ schemaName?: string;
2034
+ label?: string;
2035
+ dialect?: SemaphorDialect;
2036
+ } | {
2037
+ kind: 'sql';
2038
+ connectionId: string;
2039
+ dialect?: SemaphorDialect;
2040
+ label?: string;
2041
+ };
2042
+
2043
+ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
2044
+
1997
2045
  /**
1998
2046
  * Stable serializer for dashboard dirty checks.
1999
2047
  * This consolidates normalization + serialization into one call site, so
@@ -2628,6 +2676,31 @@ declare type TDynamicVisualIntent = {
2628
2676
  includesKpis: boolean;
2629
2677
  };
2630
2678
 
2679
+ declare const TEMPORAL_BUCKET_PRESETS: readonly ["week_of_short", "week_of_long", "quarter_short", "quarter_long", "fiscal_quarter_short", "fiscal_year"];
2680
+
2681
+ declare type TemporalBucketFormat = {
2682
+ type: 'temporal_bucket';
2683
+ presentation: TemporalBucketPresentation;
2684
+ };
2685
+
2686
+ declare type TemporalBucketMetadata = {
2687
+ kind: 'temporal_bucket';
2688
+ granularity: SemaphorTimeGrain;
2689
+ calendar: Pick<CalendarContext, 'tz' | 'weekStart' | 'fiscalCalendar'>;
2690
+ };
2691
+
2692
+ declare type TemporalBucketPresentation = {
2693
+ mode: 'auto';
2694
+ } | {
2695
+ mode: 'preset';
2696
+ preset: TemporalBucketPreset;
2697
+ } | {
2698
+ mode: 'pattern';
2699
+ pattern: string;
2700
+ };
2701
+
2702
+ declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
2703
+
2631
2704
  declare type TemporalPrecision = 'minute';
2632
2705
 
2633
2706
  declare type TextCardInlineFormat = {
@@ -2815,7 +2888,7 @@ declare interface TimeDrillStep {
2815
2888
  rollingWindow?: number;
2816
2889
  }
2817
2890
 
2818
- declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'hour' | 'minute' | 'second';
2891
+ declare type TimeGranularity = SemaphorTimeGrain;
2819
2892
 
2820
2893
  /**
2821
2894
  * Inline filter definition stored on a card.
@@ -2989,6 +3062,8 @@ declare type VisualDisplayPreferences = {
2989
3062
  };
2990
3063
  };
2991
3064
 
3065
+ declare type WeekStart = 0 | 1 | 2 | 3 | 4 | 5 | 6;
3066
+
2992
3067
  declare type WindowFunction = 'running_total' | 'moving_average' | 'previous_period_delta' | 'percent_of_total';
2993
3068
 
2994
3069
  declare interface WindowTransform {