react-semaphor 0.1.459 → 0.1.460

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 (114) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +32 -32
  3. package/dist/brand-studio/index.cjs +1 -1
  4. package/dist/brand-studio/index.js +4 -4
  5. package/dist/briefings/index.cjs +1 -1
  6. package/dist/briefings/index.js +4 -4
  7. package/dist/chunks/{analyze-result-contract-BbRJ-C06.js → analyze-result-contract-DROq4vgY.js} +1 -1
  8. package/dist/chunks/{analyze-result-contract-LPDNldic.cjs → analyze-result-contract-DSGoFuXQ.cjs} +1 -1
  9. package/dist/chunks/canonical-result-keys-CEQefvdO.js +33 -0
  10. package/dist/chunks/canonical-result-keys-Cb96edol.cjs +1 -0
  11. package/dist/chunks/{common-types-H51FLKB7.js → common-types-BHVKgxRR.js} +1 -1
  12. package/dist/chunks/{common-types-C57kJ59w.cjs → common-types-BcV9PD9D.cjs} +1 -1
  13. package/dist/chunks/{dashboard-briefing-launcher-ClCj98sq.js → dashboard-briefing-launcher-B07JnyCb.js} +60 -61
  14. package/dist/chunks/{dashboard-briefing-launcher-DHtEouuH.cjs → dashboard-briefing-launcher-BCkOKkCv.cjs} +2 -2
  15. package/dist/chunks/{dashboard-controls-VRShl9J0.cjs → dashboard-controls-BpxouYOZ.cjs} +1 -1
  16. package/dist/chunks/{dashboard-controls-B8gsKlxc.js → dashboard-controls-C8OxHQV6.js} +44 -45
  17. package/dist/chunks/dashboard-filter-value-compatibility-KXIyvbhc.js +677 -0
  18. package/dist/chunks/dashboard-filter-value-compatibility-UapptYnn.cjs +1 -0
  19. package/dist/chunks/dashboard-input-contract-BkRFQ7Tq.cjs +1 -0
  20. package/dist/chunks/{dashboard-date-comparison-definition-DC3ekV2S.js → dashboard-input-contract-D5dxTWJ5.js} +41 -25
  21. package/dist/chunks/dashboard-json-Bc-iIwxF.cjs +1 -0
  22. package/dist/chunks/{dashboard-json-i_Auue_K.js → dashboard-json-CecgbGtq.js} +13 -14
  23. package/dist/chunks/{edit-dashboard-visual-B3JF0fe4.js → edit-dashboard-visual-CpJKJaER.js} +880 -894
  24. package/dist/chunks/{edit-dashboard-visual-DWWyT55u.cjs → edit-dashboard-visual-xacUS2i5.cjs} +28 -28
  25. package/dist/chunks/{editor-action-buttons-BTlCsP63.cjs → editor-action-buttons-23Wf8EMx.cjs} +2 -2
  26. package/dist/chunks/{editor-action-buttons-C9x3nGnb.js → editor-action-buttons-DEoieV2G.js} +28 -28
  27. package/dist/chunks/index-B9c22LmC.cjs +1392 -0
  28. package/dist/chunks/{index-BS2-ZZGf.js → index-DDoyXYWM.js} +43665 -41560
  29. package/dist/chunks/{index-BIFLI8ul.js → index-De_7nrwb.js} +10 -10
  30. package/dist/chunks/index-DjjKJPDy.cjs +4 -0
  31. package/dist/chunks/{matrix-result-contract-CofATICL.js → matrix-result-contract-BTpPuHOc.js} +88 -104
  32. package/dist/chunks/matrix-result-contract-ZRNfeIbI.cjs +1 -0
  33. package/dist/chunks/{pivot-header-presentation-B9nXXKlW.cjs → pivot-header-presentation-BijPbP33.cjs} +1 -1
  34. package/dist/chunks/{pivot-header-presentation-D-0jvUwn.js → pivot-header-presentation-DW0gKG8g.js} +2 -2
  35. package/dist/chunks/{pivot-result-identity-Bb4EixVN.cjs → pivot-result-identity-DxHtiKVj.cjs} +1 -1
  36. package/dist/chunks/{pivot-result-identity-DU1v-5Xk.js → pivot-result-identity-Z9tN2tEV.js} +1 -1
  37. package/dist/chunks/{pivot-result-lifecycle-DTLRuDEW.cjs → pivot-result-lifecycle-BXzIlQVu.cjs} +1 -1
  38. package/dist/chunks/{pivot-result-lifecycle-CHWEGU2o.js → pivot-result-lifecycle-g2U-vzQb.js} +7 -7
  39. package/dist/chunks/{raw-temporal-contract-BtjH_G-d.cjs → raw-temporal-contract-DfAvqNMo.cjs} +1 -1
  40. package/dist/chunks/{raw-temporal-contract-CxncLze5.js → raw-temporal-contract-UtAqoOZO.js} +1 -1
  41. package/dist/chunks/{report-preferences-dialog-BDpkcUtz.js → report-preferences-dialog-CZiNX1Ri.js} +6 -6
  42. package/dist/chunks/{report-preferences-dialog-BK0yAJnQ.cjs → report-preferences-dialog-D_N6NXnq.cjs} +1 -1
  43. package/dist/chunks/{report-runtime-context-DqxS4wbi.cjs → report-runtime-context-C0NfLPfc.cjs} +1 -1
  44. package/dist/chunks/{report-runtime-context-SM6YO61_.js → report-runtime-context-CNncA3VD.js} +11 -11
  45. package/dist/chunks/{saved-temporal-bucket-format-CFfWXRl9.cjs → saved-temporal-bucket-format-3QKveR3v.cjs} +1 -1
  46. package/dist/chunks/{saved-temporal-bucket-format-SGAV0ivR.js → saved-temporal-bucket-format-Dd2eixTH.js} +11 -11
  47. package/dist/chunks/switch-DNFbgZz4.cjs +138 -0
  48. package/dist/chunks/{switch-DQR-Va05.js → switch-DSZobe8w.js} +6542 -5189
  49. package/dist/chunks/{temporal-bucket-5UYEotyQ.js → temporal-bucket-C85rmFmC.js} +4 -4
  50. package/dist/chunks/temporal-bucket-authoring-1fZuPAVb.js +653 -0
  51. package/dist/chunks/temporal-bucket-authoring-BK1UhYpD.cjs +1 -0
  52. package/dist/chunks/{temporal-bucket-contract-D5d-xEl3.js → temporal-bucket-contract-DXXNZssK.js} +1 -1
  53. package/dist/chunks/{temporal-bucket-contract-D2-93DGr.cjs → temporal-bucket-contract-xFkvboaw.cjs} +1 -1
  54. package/dist/chunks/{temporal-bucket-DHY1y9lq.cjs → temporal-bucket-pMfghsLX.cjs} +1 -1
  55. package/dist/chunks/{token-types-GbxRUozo.js → token-types-BLxc7UwR.js} +1 -1
  56. package/dist/chunks/{token-types-D7CaaI80.cjs → token-types-BYYO109W.cjs} +1 -1
  57. package/dist/chunks/{update-policy-hednMF-0.js → update-policy-CB8XJIoY.js} +1 -1
  58. package/dist/chunks/{update-policy-BmiOd0PB.cjs → update-policy-DMjjGjQY.cjs} +1 -1
  59. package/dist/chunks/{validators-DEmd8Sin.js → validators-DVd8s3qY.js} +416 -350
  60. package/dist/chunks/validators-dJlwubP4.cjs +1 -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 +328 -311
  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 +1 -1
  72. package/dist/data-app-sdk/index.js +55 -55
  73. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  74. package/dist/data-app-sdk-adapters/index.js +61 -56
  75. package/dist/data-app-sdk-validation/index.cjs +1 -1
  76. package/dist/data-app-sdk-validation/index.js +9 -9
  77. package/dist/format-utils/index.cjs +1 -1
  78. package/dist/format-utils/index.js +15 -15
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +154 -155
  81. package/dist/report-runtime-context/index.cjs +1 -1
  82. package/dist/report-runtime-context/index.js +2 -2
  83. package/dist/style.css +1 -1
  84. package/dist/surfboard/index.cjs +1 -1
  85. package/dist/surfboard/index.js +3 -3
  86. package/dist/types/analytics-protocol.d.ts +16 -8
  87. package/dist/types/briefings.d.ts +80 -9
  88. package/dist/types/dashboard-assistant.d.ts +11 -6
  89. package/dist/types/dashboard-authoring.d.ts +242 -15
  90. package/dist/types/dashboard.d.ts +94 -10
  91. package/dist/types/data-app-builder.d.ts +11 -6
  92. package/dist/types/data-app-codegen-node.d.ts +16 -8
  93. package/dist/types/data-app-codegen.d.ts +16 -8
  94. package/dist/types/data-app-sdk-adapters.d.ts +17 -11
  95. package/dist/types/data-app-sdk-validation.d.ts +17 -11
  96. package/dist/types/data-app-sdk.d.ts +17 -11
  97. package/dist/types/index.cjs +1 -1
  98. package/dist/types/index.js +4 -4
  99. package/dist/types/main.d.ts +210 -16
  100. package/dist/types/shared.d.ts +80 -9
  101. package/dist/types/surfboard.d.ts +94 -10
  102. package/dist/types/types.d.ts +94 -10
  103. package/package.json +1 -1
  104. package/dist/chunks/canonical-result-keys-BA0HCP4e.cjs +0 -1
  105. package/dist/chunks/canonical-result-keys-D6avdjpA.js +0 -467
  106. package/dist/chunks/dashboard-date-comparison-definition-Ces4alFm.cjs +0 -1
  107. package/dist/chunks/dashboard-json-BhvPMpZA.cjs +0 -1
  108. package/dist/chunks/index-DHF-2AqS.cjs +0 -1392
  109. package/dist/chunks/index-k8tEp0ys.cjs +0 -4
  110. package/dist/chunks/matrix-result-contract-zamd9euI.cjs +0 -1
  111. package/dist/chunks/switch-f3TuZNLr.cjs +0 -138
  112. package/dist/chunks/temporal-bucket-authoring-K1kE6R_z.js +0 -222
  113. package/dist/chunks/temporal-bucket-authoring-o3Emn05L.cjs +0 -1
  114. package/dist/chunks/validators-BDYprKI9.cjs +0 -1
@@ -43,6 +43,15 @@ declare type Actions_2 = {
43
43
  setDefaultControlValues: (controlValues: Record<string, unknown> | undefined) => void;
44
44
  setDashboardInputs: (inputs: DashboardInput[]) => void;
45
45
  upsertDashboardInput: (input: DashboardInput) => void;
46
+ updateFilterDashboardInputDefinition: (inputId: string, filter: TFilter, metadata?: {
47
+ variableName?: string;
48
+ label?: string;
49
+ }) => void;
50
+ acceptDashboardFilterOptionSource: (updatedFilter: TFilter, optionSource: DashboardFilterOptionSource, settings?: DashboardFilterAuthoringSettingsUpdate, inputMetadata?: {
51
+ variableName?: string;
52
+ }) => DashboardFilterOptionSourceAcceptanceResult;
53
+ acceptDashboardFilterMapping: (request: DashboardFilterMappingAuthoringRequest, updatedFilter?: TFilter, settings?: DashboardFilterAuthoringSettingsUpdate) => DashboardFilterMappingAcceptanceResult;
54
+ disableDashboardFilterMapping: (filterId: string, updatedFilter?: TFilter, settings?: DashboardFilterAuthoringSettingsUpdate) => DashboardFilterMappingDisableResult;
46
55
  removeDashboardInput: (inputId: string) => void;
47
56
  setDefaultDashboardInputValues: (values: DashboardInputValues | undefined) => void;
48
57
  setDefaultDashboardInputComparisonSelection: (input: Pick<DashboardInput, 'id' | 'runtimeScope'>, target: DashboardInputRuntimeTarget, selection: GlobalDateComparisonSelection | undefined) => void;
@@ -2041,6 +2050,37 @@ declare interface DashboardExportDialogProps {
2041
2050
  onOpenChange: (open: boolean) => void;
2042
2051
  }
2043
2052
 
2053
+ export declare type DashboardFilterApplication = {
2054
+ kind: 'cardMappings';
2055
+ /**
2056
+ * Sparse grounded bindings and explicit exclusions. A missing config card
2057
+ * may reuse a proven Option Value target on an executable source; it is not
2058
+ * an implicit exclusion, and source identity alone is not field evidence.
2059
+ */
2060
+ cards: DashboardFilterCardApplication[];
2061
+ };
2062
+
2063
+ declare type DashboardFilterAuthoringSettingsUpdate = {
2064
+ defaultValueChanged: boolean;
2065
+ defaultFilterValue?: TFilterValue;
2066
+ defaultComparisonChanged: boolean;
2067
+ defaultComparisonSelection?: GlobalDateComparisonSelection;
2068
+ target: DashboardInputRuntimeTarget;
2069
+ optionSourceChanged?: boolean;
2070
+ optionSource?: DashboardFilterOptionSource;
2071
+ /** Raw selection identity changed; the previous runtime value is invalid. */
2072
+ selectionIdentityChanged?: boolean;
2073
+ };
2074
+
2075
+ export declare type DashboardFilterBoundCardApplication = {
2076
+ kind: 'bound';
2077
+ cardId: string;
2078
+ bindingId: string;
2079
+ target: DashboardFilterTarget;
2080
+ };
2081
+
2082
+ export declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
2083
+
2044
2084
  export declare function DashboardFilterControlsButton({ showFilters, onShowFiltersChange, pickerContent, settingsContent, size, className, primaryButtonClassName, secondaryButtonClassName, pickerContentClassName, settingsContentClassName, }: DashboardFilterControlsButtonProps): JSX.Element;
2045
2085
 
2046
2086
  /**
@@ -2102,6 +2142,126 @@ declare type DashboardFilterControlsLauncherProps = {
2102
2142
  settingsContentClassName?: string;
2103
2143
  };
2104
2144
 
2145
+ export declare type DashboardFilterExcludedCardApplication = {
2146
+ kind: 'excluded';
2147
+ cardId: string;
2148
+ };
2149
+
2150
+ declare type DashboardFilterMappingAcceptanceResult = {
2151
+ ok: true;
2152
+ draft: DashboardFilterMappingDraft;
2153
+ input: ReferencedFilterDashboardInput;
2154
+ } | {
2155
+ ok: false;
2156
+ draft?: DashboardFilterMappingDraft;
2157
+ issues: DashboardFilterMappingAuthoringIssue[];
2158
+ };
2159
+
2160
+ declare type DashboardFilterMappingAuthoringIssue = {
2161
+ code: DashboardFilterMappingAuthoringIssueCode;
2162
+ message: string;
2163
+ filterId: string;
2164
+ cardId?: string;
2165
+ };
2166
+
2167
+ declare type DashboardFilterMappingAuthoringIssueCode = 'filterNotFound' | 'mappingNotFound' | 'globalDateUnsupported' | 'conflictingDashboardInput' | 'unsupportedOuterScope' | 'unsupportedRuntimeScope' | 'missingDecision' | 'invalidTarget' | 'metadataUnavailable';
2168
+
2169
+ declare type DashboardFilterMappingAuthoringRequest = {
2170
+ filterId: string;
2171
+ candidatesByCardId: Record<string, DashboardFilterMappingCandidateCatalog | undefined>;
2172
+ /** Grounded field that supplies the current filter value. */
2173
+ selectionField?: Pick<DashboardFilterTargetField, 'name' | 'sourceField'> & Partial<Pick<DashboardFilterTargetField, 'source'>>;
2174
+ /** Datatype of the raw selection value, which may differ from the label. */
2175
+ selectionDataType?: string;
2176
+ /**
2177
+ * Re-check saved targets against selectionField after the author changes
2178
+ * the raw Option Value identity. Explicit draft decisions still win.
2179
+ */
2180
+ revalidatePersistedTargets?: boolean;
2181
+ decisionsByCardId?: Record<string, DashboardFilterMappingDraftDecision | undefined>;
2182
+ /** Staged outer sheet scope. Omit when the author did not edit Scope. */
2183
+ outerScope?: DashboardFilterMappingDraft['outerScope'];
2184
+ /** Test seam; production callers use opaque random UUIDs. */
2185
+ createId?: () => string;
2186
+ };
2187
+
2188
+ declare type DashboardFilterMappingCandidateCatalog = {
2189
+ status: 'ready';
2190
+ targets: DashboardFilterTarget[];
2191
+ } | {
2192
+ status: 'metadataUnavailable';
2193
+ message?: string;
2194
+ };
2195
+
2196
+ declare type DashboardFilterMappingDisableResult = {
2197
+ ok: true;
2198
+ inputId: string;
2199
+ } | {
2200
+ ok: false;
2201
+ issues: DashboardFilterMappingAuthoringIssue[];
2202
+ };
2203
+
2204
+ declare type DashboardFilterMappingDraft = {
2205
+ filterId: string;
2206
+ existingInputId?: string;
2207
+ outerScope: Extract<DashboardInputScope, {
2208
+ kind: 'allSheets' | 'sheets';
2209
+ }>;
2210
+ rows: DashboardFilterMappingDraftRow[];
2211
+ };
2212
+
2213
+ declare type DashboardFilterMappingDraftDecision = {
2214
+ kind: 'bound';
2215
+ target: DashboardFilterTarget;
2216
+ } | {
2217
+ kind: 'excluded';
2218
+ };
2219
+
2220
+ declare type DashboardFilterMappingDraftRow = {
2221
+ cardId: string;
2222
+ sheetId: string;
2223
+ executionKind: 'config' | 'sql' | 'unconfigured';
2224
+ status: DashboardFilterMappingDraftStatus;
2225
+ candidates: DashboardFilterTarget[];
2226
+ selectedTarget?: DashboardFilterTarget;
2227
+ persistedApplication?: DashboardFilterCardApplication;
2228
+ metadataMessage?: string;
2229
+ guidanceMessage?: string;
2230
+ automaticFieldName?: string;
2231
+ };
2232
+
2233
+ declare type DashboardFilterMappingDraftStatus = 'pendingSource' | 'suggested' | 'needsMapping' | 'mapped' | 'notApplicable' | 'excluded' | 'invalidMapping' | 'metadataUnavailable';
2234
+
2235
+ /** Persisted label/value option definition for a mapped dashboard filter. */
2236
+ export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
2237
+
2238
+ declare type DashboardFilterOptionSourceAcceptanceResult = {
2239
+ ok: true;
2240
+ input: ReferencedFilterDashboardInput;
2241
+ created: boolean;
2242
+ } | {
2243
+ ok: false;
2244
+ issues: DashboardFilterMappingAuthoringIssue[];
2245
+ };
2246
+
2247
+ export declare type DashboardFilterTarget = {
2248
+ kind: 'field';
2249
+ field: DashboardFilterTargetField;
2250
+ };
2251
+
2252
+ /** Persisted, source-qualified field that a mapped filter targets. */
2253
+ export declare type DashboardFilterTargetField = {
2254
+ name: string;
2255
+ source: DashboardFilterTargetSource;
2256
+ dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
2257
+ /** Catalog-grounded physical column used when it differs from the semantic name. */
2258
+ sourceField?: string;
2259
+ };
2260
+
2261
+ export declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
2262
+ kind: 'semantic' | 'physical';
2263
+ }>;
2264
+
2105
2265
  export declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
2106
2266
 
2107
2267
  export declare type DashboardInputBase = {
@@ -2177,14 +2337,14 @@ export declare type DashboardInputScope = {
2177
2337
  sectionIds: string[];
2178
2338
  };
2179
2339
 
2180
- export declare type DashboardInputSlot = ({
2340
+ export declare type DashboardInputSlot = {
2181
2341
  status: 'set';
2182
2342
  value: DashboardInputValue;
2183
2343
  comparisonSelection?: GlobalDateComparisonSelection;
2184
- }) | ({
2344
+ } | {
2185
2345
  status: 'cleared';
2186
2346
  comparisonSelection?: GlobalDateComparisonSelection;
2187
- }) | {
2347
+ } | {
2188
2348
  status?: never;
2189
2349
  value?: never;
2190
2350
  comparisonSelection: GlobalDateComparisonSelection;
@@ -3282,6 +3442,14 @@ export declare type EmailSettings = {
3282
3442
  senderTitle: string;
3283
3443
  };
3284
3444
 
3445
+ export declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
3446
+ kind: 'filter';
3447
+ filter: TFilter;
3448
+ filterReference?: never;
3449
+ optionSource?: DashboardFilterOptionSource;
3450
+ application?: DashboardFilterApplication;
3451
+ };
3452
+
3285
3453
  export declare const emitDashboardLoad: () => void;
3286
3454
 
3287
3455
  export declare const emitDashboardUnload: () => void;
@@ -3571,10 +3739,7 @@ export declare interface FilterCondition {
3571
3739
  temporalBucket?: TemporalBucketMetadata;
3572
3740
  }
3573
3741
 
3574
- export declare type FilterDashboardInput = DashboardInputBase & {
3575
- kind: 'filter';
3576
- filter: TFilter;
3577
- };
3742
+ export declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
3578
3743
 
3579
3744
  /**
3580
3745
  * Display mode for individual filters
@@ -4726,6 +4891,17 @@ declare type NoneOptions = {};
4726
4891
  */
4727
4892
  export declare function normalizeDashboardForDirtyCheck(dashboard: TDashboard | null): TDashboard | null;
4728
4893
 
4894
+ export declare type NormalizedDashboardInput = NormalizedFilterDashboardInput | ControlDashboardInput;
4895
+
4896
+ /** Runtime form after dashboard-filter references are resolved once. */
4897
+ export declare type NormalizedFilterDashboardInput = DashboardInputBase & {
4898
+ kind: 'filter';
4899
+ filter: TFilter;
4900
+ optionSource?: DashboardFilterOptionSource;
4901
+ application?: DashboardFilterApplication;
4902
+ definitionOrigin: 'embedded' | 'dashboardFilter';
4903
+ };
4904
+
4729
4905
  /**
4730
4906
  * Notification bell icon with badge.
4731
4907
  *
@@ -5052,6 +5228,17 @@ declare type RawTemporalValueMetadata = {
5052
5228
  valueKind: RawTemporalValueKind;
5053
5229
  };
5054
5230
 
5231
+ export declare type ReferencedFilterDashboardInput = DashboardInputBase & {
5232
+ kind: 'filter';
5233
+ filter?: never;
5234
+ filterReference: {
5235
+ kind: 'dashboardFilter';
5236
+ filterId: string;
5237
+ };
5238
+ optionSource?: DashboardFilterOptionSource;
5239
+ application?: DashboardFilterApplication;
5240
+ };
5241
+
5055
5242
  declare type RelativeDateFilter = {
5056
5243
  mode: 'last';
5057
5244
  n: number;
@@ -5140,6 +5327,8 @@ export declare type ResolvedDashboardInput = {
5140
5327
  exports: Partial<Record<DashboardInputExportKey, string | number | boolean | null>>;
5141
5328
  filter?: TFilter;
5142
5329
  filterValue?: TFilterValue;
5330
+ /** Present when a set filter slot cannot be used with its current definition. */
5331
+ invalidFilterSelection?: boolean;
5143
5332
  control?: ControlDefinition;
5144
5333
  controlValue?: unknown;
5145
5334
  missingRequiredValue?: boolean;
@@ -5147,7 +5336,7 @@ export declare type ResolvedDashboardInput = {
5147
5336
  };
5148
5337
 
5149
5338
  export declare type ResolvedDashboardInputContext = {
5150
- inputs: DashboardInput[];
5339
+ inputs: NormalizedDashboardInput[];
5151
5340
  resolvedInputs: ResolvedDashboardInput[];
5152
5341
  activeFilters: TFilterValue[];
5153
5342
  controlDefinitions: ControlDefinition[];
@@ -5546,17 +5735,12 @@ declare type SemaphorInputBinding = {
5546
5735
 
5547
5736
  declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
5548
5737
 
5549
- declare type SemaphorInputOptionsIntent = {
5738
+ declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
5550
5739
  kind: 'inputOptions';
5551
5740
  version?: SemaphorProtocolVersion;
5552
5741
  id?: string;
5553
5742
  label?: string;
5554
5743
  inputId: string;
5555
- source: SemaphorSourceRef;
5556
- labelField: SemaphorFieldRef;
5557
- valueField: SemaphorFieldRef;
5558
- searchField?: SemaphorFieldRef;
5559
- disambiguationFields?: SemaphorFieldRef[];
5560
5744
  population?: SemaphorOptionPopulation;
5561
5745
  dependencies?: SemaphorOptionDependencies;
5562
5746
  search?: string;
@@ -5565,6 +5749,16 @@ declare type SemaphorInputOptionsIntent = {
5565
5749
  derivedFields?: SemaphorDerivedFieldDefinition[];
5566
5750
  };
5567
5751
 
5752
+ declare type SemaphorInputOptionSource = {
5753
+ source: Extract<SemaphorSourceRef, {
5754
+ kind: 'semantic' | 'physical';
5755
+ }>;
5756
+ labelField: SemaphorFieldRef;
5757
+ valueField: SemaphorFieldRef;
5758
+ searchField?: SemaphorFieldRef;
5759
+ disambiguationFields?: SemaphorFieldRef[];
5760
+ };
5761
+
5568
5762
  declare type SemaphorMatrixAxisExpansionOptions = {
5569
5763
  defaultDepth?: number;
5570
5764
  lazy?: boolean;
@@ -6947,7 +7141,7 @@ export declare type TFilter = {
6947
7141
  type?: 'single' | 'multiple';
6948
7142
  uiType?: 'radio' | 'dropdown' | 'tabs';
6949
7143
  dateSelectionMode?: DateSelectionMode;
6950
- defaultValues?: (string | number)[];
7144
+ defaultValues?: (string | number | boolean)[];
6951
7145
  defaultDateFilter?: DefaultDateFilter;
6952
7146
  sheetId?: string;
6953
7147
  location?: FilterLocation;
@@ -7119,7 +7313,7 @@ export declare type TInlineFilter = {
7119
7313
  /** Date picker type: 'range' for full calendar, 'months' for month picker */
7120
7314
  dateSelectionMode?: DateSelectionMode;
7121
7315
  /** Default values applied when the dashboard first loads */
7122
- defaultValues?: (string | number)[];
7316
+ defaultValues?: (string | number | boolean)[];
7123
7317
  /** Default date filter applied on dashboard load (relative or fixed month/year) */
7124
7318
  defaultDateFilter?: DefaultDateFilter;
7125
7319
  /** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
@@ -559,6 +559,51 @@ declare type DashboardAIContext = AIContext & {
559
559
 
560
560
  declare type DashboardAIContextMode = 'auto' | 'fixed';
561
561
 
562
+ declare type DashboardFilterApplication = {
563
+ kind: 'cardMappings';
564
+ /**
565
+ * Sparse grounded bindings and explicit exclusions. A missing config card
566
+ * may reuse a proven Option Value target on an executable source; it is not
567
+ * an implicit exclusion, and source identity alone is not field evidence.
568
+ */
569
+ cards: DashboardFilterCardApplication[];
570
+ };
571
+
572
+ declare type DashboardFilterBoundCardApplication = {
573
+ kind: 'bound';
574
+ cardId: string;
575
+ bindingId: string;
576
+ target: DashboardFilterTarget;
577
+ };
578
+
579
+ declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
580
+
581
+ declare type DashboardFilterExcludedCardApplication = {
582
+ kind: 'excluded';
583
+ cardId: string;
584
+ };
585
+
586
+ /** Persisted label/value option definition for a mapped dashboard filter. */
587
+ declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
588
+
589
+ declare type DashboardFilterTarget = {
590
+ kind: 'field';
591
+ field: DashboardFilterTargetField;
592
+ };
593
+
594
+ /** Persisted, source-qualified field that a mapped filter targets. */
595
+ declare type DashboardFilterTargetField = {
596
+ name: string;
597
+ source: DashboardFilterTargetSource;
598
+ dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
599
+ /** Catalog-grounded physical column used when it differs from the semantic name. */
600
+ sourceField?: string;
601
+ };
602
+
603
+ declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
604
+ kind: 'semantic' | 'physical';
605
+ }>;
606
+
562
607
  declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
563
608
 
564
609
  declare type DashboardInputBase = {
@@ -619,14 +664,14 @@ declare type DashboardInputScope = {
619
664
  sectionIds: string[];
620
665
  };
621
666
 
622
- declare type DashboardInputSlot = ({
667
+ declare type DashboardInputSlot = {
623
668
  status: 'set';
624
669
  value: DashboardInputValue;
625
670
  comparisonSelection?: GlobalDateComparisonSelection;
626
- }) | ({
671
+ } | {
627
672
  status: 'cleared';
628
673
  comparisonSelection?: GlobalDateComparisonSelection;
629
- }) | {
674
+ } | {
630
675
  status?: never;
631
676
  value?: never;
632
677
  comparisonSelection: GlobalDateComparisonSelection;
@@ -1098,6 +1143,14 @@ declare type EmailSettings = {
1098
1143
  senderTitle: string;
1099
1144
  };
1100
1145
 
1146
+ declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
1147
+ kind: 'filter';
1148
+ filter: TFilter;
1149
+ filterReference?: never;
1150
+ optionSource?: DashboardFilterOptionSource;
1151
+ application?: DashboardFilterApplication;
1152
+ };
1153
+
1101
1154
  declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
1102
1155
 
1103
1156
  declare interface Field {
@@ -1201,10 +1254,7 @@ declare interface FilterCondition {
1201
1254
  temporalBucket?: TemporalBucketMetadata;
1202
1255
  }
1203
1256
 
1204
- declare type FilterDashboardInput = DashboardInputBase & {
1205
- kind: 'filter';
1206
- filter: TFilter;
1207
- };
1257
+ declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
1208
1258
 
1209
1259
  /**
1210
1260
  * Display mode for individual filters
@@ -1700,6 +1750,17 @@ declare type RangeValue = {
1700
1750
  gt?: string | number;
1701
1751
  };
1702
1752
 
1753
+ declare type ReferencedFilterDashboardInput = DashboardInputBase & {
1754
+ kind: 'filter';
1755
+ filter?: never;
1756
+ filterReference: {
1757
+ kind: 'dashboardFilter';
1758
+ filterId: string;
1759
+ };
1760
+ optionSource?: DashboardFilterOptionSource;
1761
+ application?: DashboardFilterApplication;
1762
+ };
1763
+
1703
1764
  declare type RelativeDateFilter = {
1704
1765
  mode: 'last';
1705
1766
  n: number;
@@ -1834,6 +1895,16 @@ declare type SemaphorInputBinding = {
1834
1895
 
1835
1896
  declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
1836
1897
 
1898
+ declare type SemaphorInputOptionSource = {
1899
+ source: Extract<SemaphorSourceRef, {
1900
+ kind: 'semantic' | 'physical';
1901
+ }>;
1902
+ labelField: SemaphorFieldRef;
1903
+ valueField: SemaphorFieldRef;
1904
+ searchField?: SemaphorFieldRef;
1905
+ disambiguationFields?: SemaphorFieldRef[];
1906
+ };
1907
+
1837
1908
  declare type SemaphorMatrixAxisExpansionOptions = {
1838
1909
  defaultDepth?: number;
1839
1910
  lazy?: boolean;
@@ -2766,7 +2837,7 @@ declare type TFilter = {
2766
2837
  type?: 'single' | 'multiple';
2767
2838
  uiType?: 'radio' | 'dropdown' | 'tabs';
2768
2839
  dateSelectionMode?: DateSelectionMode;
2769
- defaultValues?: (string | number)[];
2840
+ defaultValues?: (string | number | boolean)[];
2770
2841
  defaultDateFilter?: DefaultDateFilter;
2771
2842
  sheetId?: string;
2772
2843
  location?: FilterLocation;
@@ -2930,7 +3001,7 @@ declare type TInlineFilter = {
2930
3001
  /** Date picker type: 'range' for full calendar, 'months' for month picker */
2931
3002
  dateSelectionMode?: DateSelectionMode;
2932
3003
  /** Default values applied when the dashboard first loads */
2933
- defaultValues?: (string | number)[];
3004
+ defaultValues?: (string | number | boolean)[];
2934
3005
  /** Default date filter applied on dashboard load (relative or fixed month/year) */
2935
3006
  defaultDateFilter?: DefaultDateFilter;
2936
3007
  /** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
@@ -702,6 +702,51 @@ export declare type DashboardEventHandlers = {
702
702
  onExportData?: (payload: ExportDataPayload) => void;
703
703
  };
704
704
 
705
+ export declare type DashboardFilterApplication = {
706
+ kind: 'cardMappings';
707
+ /**
708
+ * Sparse grounded bindings and explicit exclusions. A missing config card
709
+ * may reuse a proven Option Value target on an executable source; it is not
710
+ * an implicit exclusion, and source identity alone is not field evidence.
711
+ */
712
+ cards: DashboardFilterCardApplication[];
713
+ };
714
+
715
+ export declare type DashboardFilterBoundCardApplication = {
716
+ kind: 'bound';
717
+ cardId: string;
718
+ bindingId: string;
719
+ target: DashboardFilterTarget;
720
+ };
721
+
722
+ export declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
723
+
724
+ export declare type DashboardFilterExcludedCardApplication = {
725
+ kind: 'excluded';
726
+ cardId: string;
727
+ };
728
+
729
+ /** Persisted label/value option definition for a mapped dashboard filter. */
730
+ export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
731
+
732
+ export declare type DashboardFilterTarget = {
733
+ kind: 'field';
734
+ field: DashboardFilterTargetField;
735
+ };
736
+
737
+ /** Persisted, source-qualified field that a mapped filter targets. */
738
+ export declare type DashboardFilterTargetField = {
739
+ name: string;
740
+ source: DashboardFilterTargetSource;
741
+ dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
742
+ /** Catalog-grounded physical column used when it differs from the semantic name. */
743
+ sourceField?: string;
744
+ };
745
+
746
+ export declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
747
+ kind: 'semantic' | 'physical';
748
+ }>;
749
+
705
750
  export declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
706
751
 
707
752
  export declare type DashboardInputBase = {
@@ -771,14 +816,14 @@ export declare type DashboardInputScope = {
771
816
  sectionIds: string[];
772
817
  };
773
818
 
774
- export declare type DashboardInputSlot = ({
819
+ export declare type DashboardInputSlot = {
775
820
  status: 'set';
776
821
  value: DashboardInputValue;
777
822
  comparisonSelection?: GlobalDateComparisonSelection;
778
- }) | ({
823
+ } | {
779
824
  status: 'cleared';
780
825
  comparisonSelection?: GlobalDateComparisonSelection;
781
- }) | {
826
+ } | {
782
827
  status?: never;
783
828
  value?: never;
784
829
  comparisonSelection: GlobalDateComparisonSelection;
@@ -1457,6 +1502,14 @@ export declare type EmailSettings = {
1457
1502
  senderTitle: string;
1458
1503
  };
1459
1504
 
1505
+ export declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
1506
+ kind: 'filter';
1507
+ filter: TFilter;
1508
+ filterReference?: never;
1509
+ optionSource?: DashboardFilterOptionSource;
1510
+ application?: DashboardFilterApplication;
1511
+ };
1512
+
1460
1513
  export declare const EMPTY_SELECTION: SelectionState;
1461
1514
 
1462
1515
  declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
@@ -1573,10 +1626,7 @@ declare interface FilterCondition {
1573
1626
  temporalBucket?: TemporalBucketMetadata;
1574
1627
  }
1575
1628
 
1576
- export declare type FilterDashboardInput = DashboardInputBase & {
1577
- kind: 'filter';
1578
- filter: TFilter;
1579
- };
1629
+ export declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
1580
1630
 
1581
1631
  /**
1582
1632
  * Display mode for individual filters
@@ -2080,6 +2130,17 @@ declare type MonthAlignedFiscalCalendar = {
2080
2130
 
2081
2131
  declare type NoneOptions = {};
2082
2132
 
2133
+ export declare type NormalizedDashboardInput = NormalizedFilterDashboardInput | ControlDashboardInput;
2134
+
2135
+ /** Runtime form after dashboard-filter references are resolved once. */
2136
+ export declare type NormalizedFilterDashboardInput = DashboardInputBase & {
2137
+ kind: 'filter';
2138
+ filter: TFilter;
2139
+ optionSource?: DashboardFilterOptionSource;
2140
+ application?: DashboardFilterApplication;
2141
+ definitionOrigin: 'embedded' | 'dashboardFilter';
2142
+ };
2143
+
2083
2144
  export declare type NumberAxisFormat = {
2084
2145
  decimalPlaces?: number;
2085
2146
  minimumFractionDigits?: number;
@@ -2237,6 +2298,17 @@ declare type RawTemporalPresentationTarget = {
2237
2298
  columnKey: string;
2238
2299
  };
2239
2300
 
2301
+ export declare type ReferencedFilterDashboardInput = DashboardInputBase & {
2302
+ kind: 'filter';
2303
+ filter?: never;
2304
+ filterReference: {
2305
+ kind: 'dashboardFilter';
2306
+ filterId: string;
2307
+ };
2308
+ optionSource?: DashboardFilterOptionSource;
2309
+ application?: DashboardFilterApplication;
2310
+ };
2311
+
2240
2312
  declare type RelativeDateFilter = {
2241
2313
  mode: 'last';
2242
2314
  n: number;
@@ -2316,6 +2388,8 @@ export declare type ResolvedDashboardInput = {
2316
2388
  exports: Partial<Record<DashboardInputExportKey, string | number | boolean | null>>;
2317
2389
  filter?: TFilter;
2318
2390
  filterValue?: TFilterValue;
2391
+ /** Present when a set filter slot cannot be used with its current definition. */
2392
+ invalidFilterSelection?: boolean;
2319
2393
  control?: ControlDefinition;
2320
2394
  controlValue?: unknown;
2321
2395
  missingRequiredValue?: boolean;
@@ -2323,7 +2397,7 @@ export declare type ResolvedDashboardInput = {
2323
2397
  };
2324
2398
 
2325
2399
  export declare type ResolvedDashboardInputContext = {
2326
- inputs: DashboardInput[];
2400
+ inputs: NormalizedDashboardInput[];
2327
2401
  resolvedInputs: ResolvedDashboardInput[];
2328
2402
  activeFilters: TFilterValue[];
2329
2403
  controlDefinitions: ControlDefinition[];
@@ -2571,6 +2645,16 @@ declare type SemaphorInputBinding = {
2571
2645
 
2572
2646
  declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
2573
2647
 
2648
+ declare type SemaphorInputOptionSource = {
2649
+ source: Extract<SemaphorSourceRef, {
2650
+ kind: 'semantic' | 'physical';
2651
+ }>;
2652
+ labelField: SemaphorFieldRef;
2653
+ valueField: SemaphorFieldRef;
2654
+ searchField?: SemaphorFieldRef;
2655
+ disambiguationFields?: SemaphorFieldRef[];
2656
+ };
2657
+
2574
2658
  declare type SemaphorMatrixAxisExpansionOptions = {
2575
2659
  defaultDepth?: number;
2576
2660
  lazy?: boolean;
@@ -3606,7 +3690,7 @@ declare type TFilter = {
3606
3690
  type?: 'single' | 'multiple';
3607
3691
  uiType?: 'radio' | 'dropdown' | 'tabs';
3608
3692
  dateSelectionMode?: DateSelectionMode;
3609
- defaultValues?: (string | number)[];
3693
+ defaultValues?: (string | number | boolean)[];
3610
3694
  defaultDateFilter?: DefaultDateFilter;
3611
3695
  sheetId?: string;
3612
3696
  location?: FilterLocation;
@@ -3778,7 +3862,7 @@ export declare type TInlineFilter = {
3778
3862
  /** Date picker type: 'range' for full calendar, 'months' for month picker */
3779
3863
  dateSelectionMode?: DateSelectionMode;
3780
3864
  /** Default values applied when the dashboard first loads */
3781
- defaultValues?: (string | number)[];
3865
+ defaultValues?: (string | number | boolean)[];
3782
3866
  /** Default date filter applied on dashboard load (relative or fixed month/year) */
3783
3867
  defaultDateFilter?: DefaultDateFilter;
3784
3868
  /** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */