react-semaphor 0.1.376 → 0.1.378

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 (64) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +47 -43
  3. package/dist/brand-studio/index.cjs +4 -4
  4. package/dist/brand-studio/index.js +10 -8
  5. package/dist/chunks/braces-BT-ZyB-g.js +6 -0
  6. package/dist/chunks/braces-DOxxfERN.js +23 -0
  7. package/dist/chunks/calendar-preferences-dialog-CRvQz4TE.js +1 -0
  8. package/dist/chunks/{calendar-preferences-dialog-B6fsethx.js → calendar-preferences-dialog-DZe8Nd-4.js} +14 -14
  9. package/dist/chunks/catalog-field-grounding-8L9I0zdg.js +1 -0
  10. package/dist/chunks/catalog-field-grounding-BK4BX8sZ.js +200 -0
  11. package/dist/chunks/dashboard-briefing-launcher-BWyHpn2M.js +111 -0
  12. package/dist/chunks/{dashboard-briefing-launcher-BKCRO7Qw.js → dashboard-briefing-launcher-DURdx5Ox.js} +3147 -2386
  13. package/dist/chunks/dashboard-controls-D5mjF67R.js +2279 -0
  14. package/dist/chunks/dashboard-controls-J71GLAxt.js +52 -0
  15. package/dist/chunks/{dashboard-json-QT0T2ad_.js → dashboard-json-BumvCRuk.js} +14 -13
  16. package/dist/chunks/dashboard-json-Cv8jXh0X.js +1 -0
  17. package/dist/chunks/{edit-dashboard-visual-DNzPgXMh.js → edit-dashboard-visual-dvhQzG_h.js} +33 -33
  18. package/dist/chunks/{edit-dashboard-visual-kNoMQRmH.js → edit-dashboard-visual-eYJMy7aw.js} +677 -677
  19. package/dist/chunks/{index-CPpqPJba.js → index-c_0nwsOM.js} +199 -194
  20. package/dist/chunks/{index-DX_0OcRv.js → index-hhH5F_tQ.js} +20665 -20527
  21. package/dist/chunks/layout-grid-DTbOIOsE.js +16 -0
  22. package/dist/chunks/layout-grid-DccceHv4.js +6 -0
  23. package/dist/chunks/{palette-2HWSR5wb.js → palette-DCzLwqIw.js} +1 -1
  24. package/dist/chunks/{palette-BcHHAmOU.js → palette-SimHJELn.js} +1 -1
  25. package/dist/chunks/{save-MoF1T13_.js → save-D2O96E5A.js} +1 -1
  26. package/dist/chunks/{save-B-YfAPhu.js → save-zNVYH02T.js} +1 -1
  27. package/dist/chunks/{switch-DmE_MY3L.js → switch-DMPsMpHW.js} +1 -1
  28. package/dist/chunks/{switch-CmHP5dT7.js → switch-Jhyl63RF.js} +1 -1
  29. package/dist/chunks/{use-create-flow-overlay-state-BLPQgGuz.js → use-create-flow-overlay-state-D9UKBuCA.js} +2 -2
  30. package/dist/chunks/{use-create-flow-overlay-state-D_Ntx-_C.js → use-create-flow-overlay-state-hlsTNh2b.js} +113 -112
  31. package/dist/chunks/{validation-DlrTIf1N.js → validation-BM3-ShHV.js} +1 -1
  32. package/dist/chunks/{validation-1V7bWmYw.js → validation-BVpqRFar.js} +1 -1
  33. package/dist/dashboard/index.cjs +1 -1
  34. package/dist/dashboard/index.js +1 -1
  35. package/dist/dashboard-authoring/index.cjs +1 -1
  36. package/dist/dashboard-authoring/index.js +1 -1
  37. package/dist/data-app-builder/index.cjs +1 -1
  38. package/dist/data-app-builder/index.js +3 -3
  39. package/dist/data-app-sdk/index.cjs +1 -1
  40. package/dist/data-app-sdk/index.js +22 -21
  41. package/dist/data-app-sdk-validation/index.cjs +1 -1
  42. package/dist/data-app-sdk-validation/index.js +2 -2
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.js +128 -126
  45. package/dist/style.css +1 -1
  46. package/dist/surfboard/index.cjs +1 -1
  47. package/dist/surfboard/index.js +2 -2
  48. package/dist/types/analytics-protocol.d.ts +128 -0
  49. package/dist/types/dashboard-assistant.d.ts +42 -0
  50. package/dist/types/data-app-sdk-validation.d.ts +42 -0
  51. package/dist/types/data-app-sdk.d.ts +42 -0
  52. package/dist/types/main.d.ts +7 -0
  53. package/package.json +1 -1
  54. package/dist/chunks/calendar-preferences-dialog-Dh1b0ytN.js +0 -1
  55. package/dist/chunks/catalog-field-grounding-DoEBOXQd.js +0 -100
  56. package/dist/chunks/catalog-field-grounding-Du6mKDcF.js +0 -1
  57. package/dist/chunks/chevrons-up-down-D2fZD4N_.js +0 -6
  58. package/dist/chunks/chevrons-up-down-lahj6tQy.js +0 -14
  59. package/dist/chunks/dashboard-briefing-launcher-Gv1cwT0I.js +0 -111
  60. package/dist/chunks/dashboard-controls-BDJZarV7.js +0 -52
  61. package/dist/chunks/dashboard-controls-CchLBVDv.js +0 -3037
  62. package/dist/chunks/dashboard-json-ZhIEMXN0.js +0 -1
  63. package/dist/chunks/layout-grid-BOTLt36V.js +0 -36
  64. package/dist/chunks/layout-grid-CS6BSCJF.js +0 -11
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/index-CPpqPJba.js"),e=require("../chunks/common-types-C73-Ud1-.js"),a=require("../chunks/calendar-preferences-dialog-Dh1b0ytN.js");exports.Surfboard=r.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.CalendarPreferencesDialog=a.CalendarPreferencesDialog;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../chunks/index-c_0nwsOM.js"),e=require("../chunks/common-types-C73-Ud1-.js"),a=require("../chunks/calendar-preferences-dialog-CRvQz4TE.js");exports.Surfboard=r.DashboardPlus;exports.CONTROL_CARD_DEFAULT_VALUE=e.CONTROL_CARD_DEFAULT_VALUE;exports.EMPTY_SELECTION=e.EMPTY_SELECTION;exports.CalendarPreferencesDialog=a.CalendarPreferencesDialog;
@@ -1,6 +1,6 @@
1
- import { a as e } from "../chunks/index-DX_0OcRv.js";
1
+ import { a as e } from "../chunks/index-hhH5F_tQ.js";
2
2
  import { C, E } from "../chunks/common-types-4bjoIgvm.js";
3
- import { C as s } from "../chunks/calendar-preferences-dialog-B6fsethx.js";
3
+ import { C as s } from "../chunks/calendar-preferences-dialog-DZe8Nd-4.js";
4
4
  export {
5
5
  C as CONTROL_CARD_DEFAULT_VALUE,
6
6
  s as CalendarPreferencesDialog,
@@ -58,6 +58,8 @@ export declare function getAnalyticsCatalogFieldCandidates(field: AnalyticsCatal
58
58
 
59
59
  export declare function getAnalyticsCatalogFieldName(field: AnalyticsCatalogField): string;
60
60
 
61
+ export declare function getSemaphorAnalyzeResultFieldNames(): SemaphorAnalyzeResultFieldName[];
62
+
61
63
  export declare function getSemaphorConnectionCapabilities(connectionType: string | undefined, options?: {
62
64
  connectionId?: string;
63
65
  }): SemaphorConnectionCapabilities;
@@ -76,6 +78,8 @@ export declare function isAnalyticsMetricIdentifierField(field: AnalyticsCatalog
76
78
 
77
79
  export declare function isAnalyticsTechnicalIdentifierField(field: AnalyticsCatalogField): boolean;
78
80
 
81
+ export declare function isSemaphorAnalyzeResultFieldName(value: string): value is SemaphorAnalyzeResultFieldName;
82
+
79
83
  export declare type MatrixAxisLevelDescriptor = {
80
84
  instanceId: string;
81
85
  fieldKey: string;
@@ -405,6 +409,8 @@ export declare function normalizeSemaphorDialect(input: string | undefined): Sem
405
409
 
406
410
  export declare function normalizeSemaphorInputOperator(value: SemaphorInputOperatorInput | string | null | undefined): SemaphorInputOperator | undefined;
407
411
 
412
+ export declare function parseSemaphorAnalyzeResult(value: unknown): SemaphorAnalyzeResult;
413
+
408
414
  export declare function parseSemaphorIsoTimeWindowBoundary(value: unknown): Date | null;
409
415
 
410
416
  export declare function preferSemaphorFieldRefMetadata(current: SemaphorFieldRef, next: SemaphorFieldRef): SemaphorFieldRef;
@@ -619,6 +625,43 @@ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
619
625
  };
620
626
  };
621
627
 
628
+ export declare const SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT: {
629
+ readonly answerSummary: "string";
630
+ readonly responseDetail: "responseDetail";
631
+ readonly mode: "string";
632
+ readonly comparisonType: "string";
633
+ readonly executionResult: "unknown";
634
+ readonly compiledQuery: "unknown";
635
+ readonly data: "unknown";
636
+ readonly resultSets: "record";
637
+ readonly columns: "unknownArray";
638
+ readonly records: "recordArray";
639
+ readonly rowCount: "number";
640
+ readonly rowLimitExceeded: "boolean";
641
+ readonly output: "string";
642
+ readonly querySpec: "unknown";
643
+ readonly metadata: "record";
644
+ readonly validation: "unknown";
645
+ readonly coverage: "unknown";
646
+ readonly diagnosticFeedback: "unknown";
647
+ readonly missingFields: "stringArray";
648
+ readonly warnings: "unknownArray";
649
+ readonly comparison: "unknown";
650
+ readonly population: "unknown";
651
+ readonly comparisons: "recordArray";
652
+ readonly fieldsUsed: "unknown";
653
+ readonly changes: "recordArray";
654
+ readonly largestNegativeChanges: "recordArray";
655
+ readonly largestPositiveChanges: "recordArray";
656
+ readonly drivers: "recordArray";
657
+ readonly absoluteDeltaDrivers: "recordArray";
658
+ readonly largestNegativeDrivers: "recordArray";
659
+ readonly largestPositiveDrivers: "recordArray";
660
+ readonly periodRows: "recordArray";
661
+ readonly sql: "unknown";
662
+ readonly omitted: "stringArray";
663
+ };
664
+
622
665
  export declare type SemaphorAbsoluteTimeWindow = {
623
666
  kind: 'absolute';
624
667
  start: string;
@@ -627,6 +670,47 @@ export declare type SemaphorAbsoluteTimeWindow = {
627
670
 
628
671
  export declare type SemaphorAggregateFunction = 'SUM' | 'COUNT' | 'AVG' | 'MIN' | 'MAX' | 'MEDIAN' | 'DISTINCT';
629
672
 
673
+ export declare type SemaphorAnalyticsDiagnosticAnsweredItem = {
674
+ slotId?: string;
675
+ queryId?: string;
676
+ summary: string;
677
+ evidenceIds?: string[];
678
+ fieldsUsed?: SemaphorExecutionFieldRef[];
679
+ };
680
+
681
+ export declare type SemaphorAnalyticsDiagnosticBlockedItem = {
682
+ slotId?: string;
683
+ queryId?: string;
684
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
685
+ message: string;
686
+ missingFields?: string[];
687
+ availableFields?: string[];
688
+ ambiguousFields?: string[];
689
+ missingRelationships?: string[];
690
+ evidenceIds?: string[];
691
+ neededFromUser?: string[];
692
+ recommendedNextStep?: string;
693
+ };
694
+
695
+ export declare type SemaphorAnalyticsDiagnosticFeedback = {
696
+ version: 1;
697
+ status: SemaphorAnalyticsDiagnosticStatus;
698
+ summary: string;
699
+ answered: SemaphorAnalyticsDiagnosticAnsweredItem[];
700
+ blocked: SemaphorAnalyticsDiagnosticBlockedItem[];
701
+ semanticModelRecommendations?: SemaphorAnalyticsDiagnosticRecommendation[];
702
+ };
703
+
704
+ export declare type SemaphorAnalyticsDiagnosticReasonCode = 'ambiguous_fields' | 'empty_result' | 'missing_grounded_fields' | 'missing_relationship' | 'no_grounded_query' | 'partial_result' | 'presentation_incomplete' | 'query_validation_failed' | 'unsafe_join';
705
+
706
+ export declare type SemaphorAnalyticsDiagnosticRecommendation = {
707
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
708
+ message: string;
709
+ recommendedNextStep?: string;
710
+ };
711
+
712
+ export declare type SemaphorAnalyticsDiagnosticStatus = 'answered' | 'partial' | 'blocked';
713
+
630
714
  export declare type SemaphorAnalyticsExecutionResult = {
631
715
  intentId?: string;
632
716
  queryId?: string;
@@ -645,6 +729,7 @@ export declare type SemaphorAnalyticsExecutionResult = {
645
729
  missingFields?: string[];
646
730
  warnings?: string[];
647
731
  relationshipDiagnostics?: SemaphorRelationshipDiagnostics;
732
+ diagnosticFeedback?: SemaphorAnalyticsDiagnosticFeedback;
648
733
  population?: SemaphorAnalyticsPopulation;
649
734
  metadata?: Record<string, unknown>;
650
735
  };
@@ -763,6 +848,49 @@ export declare type SemaphorAnalyticsValueFilter = SemaphorAnalyticsFilterBase &
763
848
 
764
849
  export declare type SemaphorAnalyticsValueFilterOperator = Exclude<SemaphorAnalyticsFilterOperator, 'is_null' | 'is_not_null'>;
765
850
 
851
+ export declare type SemaphorAnalyzeResponseDetail = 'compact' | 'standard' | 'debug';
852
+
853
+ export declare type SemaphorAnalyzeResult = Partial<Record<SemaphorAnalyzeResultFieldName, unknown>> & {
854
+ answerSummary?: string;
855
+ responseDetail?: SemaphorAnalyzeResponseDetail;
856
+ mode?: string;
857
+ comparisonType?: string;
858
+ executionResult?: SemaphorAnalyticsExecutionResult;
859
+ compiledQuery?: SemaphorCompiledQuery;
860
+ data?: unknown;
861
+ resultSets?: Record<string, unknown>;
862
+ columns?: unknown[];
863
+ records?: Record<string, unknown>[];
864
+ rowCount?: number;
865
+ rowLimitExceeded?: boolean;
866
+ output?: string;
867
+ querySpec?: unknown;
868
+ metadata?: Record<string, unknown>;
869
+ validation?: unknown;
870
+ coverage?: unknown;
871
+ diagnosticFeedback?: SemaphorAnalyticsExecutionResult['diagnosticFeedback'];
872
+ missingFields?: string[];
873
+ warnings?: unknown[];
874
+ comparison?: unknown;
875
+ population?: unknown;
876
+ comparisons?: Record<string, unknown>[];
877
+ fieldsUsed?: unknown;
878
+ changes?: Record<string, unknown>[];
879
+ largestNegativeChanges?: Record<string, unknown>[];
880
+ largestPositiveChanges?: Record<string, unknown>[];
881
+ drivers?: Record<string, unknown>[];
882
+ absoluteDeltaDrivers?: Record<string, unknown>[];
883
+ largestNegativeDrivers?: Record<string, unknown>[];
884
+ largestPositiveDrivers?: Record<string, unknown>[];
885
+ periodRows?: Record<string, unknown>[];
886
+ sql?: unknown;
887
+ omitted?: string[];
888
+ };
889
+
890
+ export declare type SemaphorAnalyzeResultFieldKind = 'boolean' | 'number' | 'record' | 'recordArray' | 'responseDetail' | 'string' | 'stringArray' | 'unknown' | 'unknownArray';
891
+
892
+ export declare type SemaphorAnalyzeResultFieldName = keyof typeof SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT;
893
+
766
894
  export declare type SemaphorCompiledQuery = {
767
895
  kind: 'config';
768
896
  queryId: string;
@@ -862,6 +862,47 @@ declare type SemaphorAbsoluteTimeWindow = {
862
862
 
863
863
  declare type SemaphorAggregateFunction = 'SUM' | 'COUNT' | 'AVG' | 'MIN' | 'MAX' | 'MEDIAN' | 'DISTINCT';
864
864
 
865
+ declare type SemaphorAnalyticsDiagnosticAnsweredItem = {
866
+ slotId?: string;
867
+ queryId?: string;
868
+ summary: string;
869
+ evidenceIds?: string[];
870
+ fieldsUsed?: SemaphorExecutionFieldRef[];
871
+ };
872
+
873
+ declare type SemaphorAnalyticsDiagnosticBlockedItem = {
874
+ slotId?: string;
875
+ queryId?: string;
876
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
877
+ message: string;
878
+ missingFields?: string[];
879
+ availableFields?: string[];
880
+ ambiguousFields?: string[];
881
+ missingRelationships?: string[];
882
+ evidenceIds?: string[];
883
+ neededFromUser?: string[];
884
+ recommendedNextStep?: string;
885
+ };
886
+
887
+ declare type SemaphorAnalyticsDiagnosticFeedback = {
888
+ version: 1;
889
+ status: SemaphorAnalyticsDiagnosticStatus;
890
+ summary: string;
891
+ answered: SemaphorAnalyticsDiagnosticAnsweredItem[];
892
+ blocked: SemaphorAnalyticsDiagnosticBlockedItem[];
893
+ semanticModelRecommendations?: SemaphorAnalyticsDiagnosticRecommendation[];
894
+ };
895
+
896
+ declare type SemaphorAnalyticsDiagnosticReasonCode = 'ambiguous_fields' | 'empty_result' | 'missing_grounded_fields' | 'missing_relationship' | 'no_grounded_query' | 'partial_result' | 'presentation_incomplete' | 'query_validation_failed' | 'unsafe_join';
897
+
898
+ declare type SemaphorAnalyticsDiagnosticRecommendation = {
899
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
900
+ message: string;
901
+ recommendedNextStep?: string;
902
+ };
903
+
904
+ declare type SemaphorAnalyticsDiagnosticStatus = 'answered' | 'partial' | 'blocked';
905
+
865
906
  declare type SemaphorAnalyticsExecutionResult = {
866
907
  intentId?: string;
867
908
  queryId?: string;
@@ -880,6 +921,7 @@ declare type SemaphorAnalyticsExecutionResult = {
880
921
  missingFields?: string[];
881
922
  warnings?: string[];
882
923
  relationshipDiagnostics?: SemaphorRelationshipDiagnostics;
924
+ diagnosticFeedback?: SemaphorAnalyticsDiagnosticFeedback;
883
925
  population?: SemaphorAnalyticsPopulation;
884
926
  metadata?: Record<string, unknown>;
885
927
  };
@@ -305,6 +305,47 @@ declare type SemaphorAnalysisQuerySpec = SemaphorMetricQuerySpec & SemaphorAnaly
305
305
 
306
306
  export declare type SemaphorAnalysisTimezoneValidator = (tz: string) => string | null;
307
307
 
308
+ declare type SemaphorAnalyticsDiagnosticAnsweredItem = {
309
+ slotId?: string;
310
+ queryId?: string;
311
+ summary: string;
312
+ evidenceIds?: string[];
313
+ fieldsUsed?: SemaphorExecutionFieldRef[];
314
+ };
315
+
316
+ declare type SemaphorAnalyticsDiagnosticBlockedItem = {
317
+ slotId?: string;
318
+ queryId?: string;
319
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
320
+ message: string;
321
+ missingFields?: string[];
322
+ availableFields?: string[];
323
+ ambiguousFields?: string[];
324
+ missingRelationships?: string[];
325
+ evidenceIds?: string[];
326
+ neededFromUser?: string[];
327
+ recommendedNextStep?: string;
328
+ };
329
+
330
+ declare type SemaphorAnalyticsDiagnosticFeedback = {
331
+ version: 1;
332
+ status: SemaphorAnalyticsDiagnosticStatus;
333
+ summary: string;
334
+ answered: SemaphorAnalyticsDiagnosticAnsweredItem[];
335
+ blocked: SemaphorAnalyticsDiagnosticBlockedItem[];
336
+ semanticModelRecommendations?: SemaphorAnalyticsDiagnosticRecommendation[];
337
+ };
338
+
339
+ declare type SemaphorAnalyticsDiagnosticReasonCode = 'ambiguous_fields' | 'empty_result' | 'missing_grounded_fields' | 'missing_relationship' | 'no_grounded_query' | 'partial_result' | 'presentation_incomplete' | 'query_validation_failed' | 'unsafe_join';
340
+
341
+ declare type SemaphorAnalyticsDiagnosticRecommendation = {
342
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
343
+ message: string;
344
+ recommendedNextStep?: string;
345
+ };
346
+
347
+ declare type SemaphorAnalyticsDiagnosticStatus = 'answered' | 'partial' | 'blocked';
348
+
308
349
  declare type SemaphorAnalyticsExecutionResult = {
309
350
  intentId?: string;
310
351
  queryId?: string;
@@ -323,6 +364,7 @@ declare type SemaphorAnalyticsExecutionResult = {
323
364
  missingFields?: string[];
324
365
  warnings?: string[];
325
366
  relationshipDiagnostics?: SemaphorRelationshipDiagnostics;
367
+ diagnosticFeedback?: SemaphorAnalyticsDiagnosticFeedback;
326
368
  population?: SemaphorAnalyticsPopulation;
327
369
  metadata?: Record<string, unknown>;
328
370
  };
@@ -477,6 +477,47 @@ export declare type SemaphorAnalysisResultSet = {
477
477
 
478
478
  export declare type SemaphorAnalysisTimezoneValidator = (tz: string) => string | null;
479
479
 
480
+ declare type SemaphorAnalyticsDiagnosticAnsweredItem = {
481
+ slotId?: string;
482
+ queryId?: string;
483
+ summary: string;
484
+ evidenceIds?: string[];
485
+ fieldsUsed?: SemaphorExecutionFieldRef[];
486
+ };
487
+
488
+ declare type SemaphorAnalyticsDiagnosticBlockedItem = {
489
+ slotId?: string;
490
+ queryId?: string;
491
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
492
+ message: string;
493
+ missingFields?: string[];
494
+ availableFields?: string[];
495
+ ambiguousFields?: string[];
496
+ missingRelationships?: string[];
497
+ evidenceIds?: string[];
498
+ neededFromUser?: string[];
499
+ recommendedNextStep?: string;
500
+ };
501
+
502
+ declare type SemaphorAnalyticsDiagnosticFeedback = {
503
+ version: 1;
504
+ status: SemaphorAnalyticsDiagnosticStatus;
505
+ summary: string;
506
+ answered: SemaphorAnalyticsDiagnosticAnsweredItem[];
507
+ blocked: SemaphorAnalyticsDiagnosticBlockedItem[];
508
+ semanticModelRecommendations?: SemaphorAnalyticsDiagnosticRecommendation[];
509
+ };
510
+
511
+ declare type SemaphorAnalyticsDiagnosticReasonCode = 'ambiguous_fields' | 'empty_result' | 'missing_grounded_fields' | 'missing_relationship' | 'no_grounded_query' | 'partial_result' | 'presentation_incomplete' | 'query_validation_failed' | 'unsafe_join';
512
+
513
+ declare type SemaphorAnalyticsDiagnosticRecommendation = {
514
+ reasonCode: SemaphorAnalyticsDiagnosticReasonCode;
515
+ message: string;
516
+ recommendedNextStep?: string;
517
+ };
518
+
519
+ declare type SemaphorAnalyticsDiagnosticStatus = 'answered' | 'partial' | 'blocked';
520
+
480
521
  declare type SemaphorAnalyticsExecutionResult = {
481
522
  intentId?: string;
482
523
  queryId?: string;
@@ -495,6 +536,7 @@ declare type SemaphorAnalyticsExecutionResult = {
495
536
  missingFields?: string[];
496
537
  warnings?: string[];
497
538
  relationshipDiagnostics?: SemaphorRelationshipDiagnostics;
539
+ diagnosticFeedback?: SemaphorAnalyticsDiagnosticFeedback;
498
540
  population?: SemaphorAnalyticsPopulation;
499
541
  metadata?: Record<string, unknown>;
500
542
  };
@@ -7186,6 +7186,13 @@ declare type VisualProps = DashboardProps & {
7186
7186
  displayPreferences?: VisualDisplayPreferences;
7187
7187
  };
7188
7188
 
7189
+ export declare function VisualsLibraryDialog({ open, onOpenChange, }: VisualsLibraryDialogProps): JSX.Element;
7190
+
7191
+ declare interface VisualsLibraryDialogProps {
7192
+ open: boolean;
7193
+ onOpenChange: (open: boolean) => void;
7194
+ }
7195
+
7189
7196
  export declare function WatchDashboardButton({ disabled, briefingCount, className, onClick, }: WatchDashboardButtonProps): JSX.Element;
7190
7197
 
7191
7198
  export declare type WatchDashboardButtonProps = {
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.376",
8
+ "version": "0.1.378",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",
@@ -1 +0,0 @@
1
- "use strict";const e=require("react/jsx-runtime"),l=require("react"),t=require("./index-CPpqPJba.js"),i=require("./switch-CmHP5dT7.js");require("./index-BxM99sFL.js");const G=require("./chevrons-up-down-D2fZD4N_.js");function W(n={}){var y,P,z,A;const{authToken:d,tokenProps:a}=t.useSemaphorContext(),x=n.enabled??!0,m=(d==null?void 0:d.accessToken)??null,f=(a==null?void 0:a.apiServiceUrl)??null,[L,C]=l.useState(!1),[j,b]=l.useState(!1),[h,g]=l.useState(!1),[N,c]=l.useState(null),[v,S]=l.useState(null),k=v||{tz:((P=(y=a==null?void 0:a.params)==null?void 0:y.calendarContext)==null?void 0:P.tz)||null,weekStart:((A=(z=a==null?void 0:a.params)==null?void 0:z.calendarContext)==null?void 0:A.weekStart)??null},p=l.useCallback(async()=>{if(!(!x||!m||!f)){C(!0),c(null);try{const o=await fetch(`${f}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${m}`}});if(!o.ok){const u=await o.json().catch(()=>({}));throw new Error(u.error||"Failed to fetch preferences")}const r=await o.json();S({tz:r.tz,weekStart:r.weekStart,source:r.source,isInherited:r.isInherited,userHasPrefs:r.userHasPrefs,inherited:r.inherited})}catch(o){const r=o instanceof Error?o.message:"Unknown error";c(r)}finally{C(!1)}}},[m,f,x]);l.useEffect(()=>{x&&p()},[x,p]);const T=l.useCallback(async o=>{if(!m||!f)return c("Not authenticated"),!1;b(!0),c(null);try{const r=await fetch(`${f}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`},body:JSON.stringify(o)});if(!r.ok){const u=await r.json().catch(()=>({}));throw new Error(u.error||"Failed to update preferences")}return await p(),!0}catch(r){const u=r instanceof Error?r.message:"Unknown error";return c(u),!1}finally{b(!1)}},[m,f,p]),w=l.useCallback(async()=>{if(!m||!f)return c("Not authenticated"),!1;g(!0),c(null);try{const o=await fetch(`${f}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${m}`}});if(!o.ok){const u=await o.json().catch(()=>({}));throw new Error(u.error||"Failed to clear preferences")}const r=await o.text();if(r)try{const u=JSON.parse(r);return S({tz:u.tz,weekStart:u.weekStart,source:u.source,isInherited:u.isInherited??!0,userHasPrefs:!1,inherited:u.inherited}),!0}catch{}return await p(),!0}catch(o){const r=o instanceof Error?o.message:"Unknown error";return c(r),!1}finally{g(!1)}},[m,f,p]);return{preferences:k,isLoading:L,isSaving:j,isClearing:h,error:N,updatePreferences:T,clearPreferences:w,refetch:p}}const E=[{value:"America/New_York",label:"Eastern Time (US & Canada)"},{value:"America/Chicago",label:"Central Time (US & Canada)"},{value:"America/Denver",label:"Mountain Time (US & Canada)"},{value:"America/Los_Angeles",label:"Pacific Time (US & Canada)"},{value:"America/Phoenix",label:"Arizona"},{value:"America/Anchorage",label:"Alaska"},{value:"Pacific/Honolulu",label:"Hawaii"},{value:"Europe/London",label:"London"},{value:"Europe/Paris",label:"Paris, Berlin, Rome"},{value:"Asia/Tokyo",label:"Tokyo"},{value:"Asia/Shanghai",label:"Beijing, Shanghai"},{value:"Asia/Kolkata",label:"Mumbai, New Delhi"},{value:"Australia/Sydney",label:"Sydney"},{value:"UTC",label:"UTC"}],M=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:6,label:"Saturday"}],H="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function _(){try{const n=Intl;if(n.supportedValuesOf)return n.supportedValuesOf("timeZone")}catch{}return E.map(n=>n.value)}function q(n){switch(n){case"tenant":return"tenant";case"organization":return"organization";case"system":return"system";default:return"default"}}function O(n){const d=E.find(a=>a.value===n);return d?d.label:n}function V(n){const d=M.find(a=>a.value===n);return d?d.label:String(n)}function Z({open:n,onOpenChange:d}){var D,U,F;const{preferences:a,isLoading:x,isSaving:m,isClearing:f,updatePreferences:L,clearPreferences:C}=W({enabled:n}),j=a.tz||((D=a.inherited)==null?void 0:D.tz)||Intl.DateTimeFormat().resolvedOptions().timeZone,b=a.weekStart??((U=a.inherited)==null?void 0:U.weekStart)??1,[h,g]=l.useState(!a.userHasPrefs),[N,c]=l.useState(!1),[v,S]=l.useState(j),[k,p]=l.useState(b),[T,w]=l.useState(!1),y=l.useMemo(()=>_(),[]),P=l.useMemo(()=>y.filter(s=>!E.some(R=>R.value===s)),[y]),z=l.useMemo(()=>O(v),[v]),A=a.inherited?O(a.inherited.tz):"UTC",o=a.inherited?V(a.inherited.weekStart):"Monday",r=q((F=a.inherited)==null?void 0:F.source);l.useEffect(()=>{if(!n){c(!1);return}N||(a.userHasPrefs!==void 0&&g(!a.userHasPrefs),S(j),p(b))},[n,N,a.userHasPrefs,j,b]);const u=async()=>{if(x){t.ue.error("Preferences are still loading. Please try again.");return}h?await C()?(t.ue.success("Now using default settings. Please refresh the page to apply changes.",{duration:5e3}),d(!1)):t.ue.error("Failed to save preferences. Please try again."):await L({tz:v,weekStart:k})?(t.ue.success("Preferences saved. Please refresh the page to apply changes.",{duration:5e3}),d(!1)):t.ue.error("Failed to save preferences. Please try again.")},$=()=>{d(!1)},I=m||f,B=I||x;return e.jsx(t.Dialog,{open:n,onOpenChange:d,children:e.jsxs(t.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(t.DialogHeader,{children:[e.jsx(t.DialogTitle,{className:"text-[15px]",children:"Calendar preferences"}),e.jsx(t.DialogDescription,{className:"text-[13px] leading-5",children:"Set your timezone and week-start for date calculations and displays."})]}),e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(t.RadioGroup,{value:h?"defaults":"custom",onValueChange:s=>{c(!0),g(s==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:i.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",h&&"bg-muted/50"),onClick:()=>{c(!0),g(!0)},children:[e.jsx(t.RadioGroupItem,{value:"defaults",id:"mode-defaults",className:"mt-0.5"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-[13px] font-medium text-foreground",children:["Use ",r," defaults"]}),e.jsxs("p",{className:"text-[12px] text-muted-foreground",children:[A,", week starts ",o]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:i.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",!h&&"bg-muted/50"),onClick:()=>{c(!0),g(!1)},children:[e.jsx(t.RadioGroupItem,{value:"custom",id:"mode-custom",className:"mt-0.5"}),e.jsx("p",{className:"flex-1 text-[13px] font-medium text-foreground",children:"Use custom settings"})]})]}),e.jsxs("div",{className:i.cn("space-y-4 border-t border-border/60 pt-4 transition-opacity",h&&"pointer-events-none opacity-50"),children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i.Label,{className:H,children:"Timezone"}),e.jsxs(i.Popover,{open:T,onOpenChange:w,modal:!0,children:[e.jsx(i.PopoverTrigger,{asChild:!0,children:e.jsxs(i.Button,{variant:"outline",size:"xs",role:"combobox","aria-expanded":T,className:"w-full justify-between text-[12px] font-normal",disabled:h,children:[e.jsx("span",{className:"truncate",children:z}),e.jsx(G.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(i.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(t.Command,{className:"overflow-visible",children:[e.jsx(t.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(t.CommandList,{children:[e.jsx(t.CommandEmpty,{children:"No timezone found."}),e.jsx(t.CommandGroup,{heading:"Common",children:E.map(s=>e.jsxs(t.CommandItem,{value:`${s.value} ${s.label}`,onSelect:()=>{c(!0),S(s.value),w(!1)},children:[e.jsx(i.Check,{className:i.cn("h-3.5 w-3.5",v===s.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:s.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:s.value})]},s.value))}),e.jsx(t.CommandSeparator,{}),e.jsx(t.CommandGroup,{heading:"All timezones",children:P.map(s=>e.jsxs(t.CommandItem,{value:s,onSelect:()=>{c(!0),S(s),w(!1)},children:[e.jsx(i.Check,{className:i.cn("h-3.5 w-3.5",v===s?"opacity-100":"opacity-0")}),s]},s))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i.Label,{className:H,children:"Week starts on"}),e.jsx(t.RadioGroup,{value:String(k),onValueChange:s=>{c(!0),p(Number(s))},className:"flex gap-4",disabled:h,children:M.map(s=>e.jsxs("label",{htmlFor:`week-start-${s.value}`,className:i.cn("flex cursor-pointer items-center gap-2 text-[13px]",h&&"cursor-not-allowed"),children:[e.jsx(t.RadioGroupItem,{value:String(s.value),id:`week-start-${s.value}`,disabled:h}),s.label]},s.value))})]})]})]}),e.jsxs(t.DialogFooter,{children:[e.jsx(i.Button,{variant:"outline",size:"xs",onClick:$,disabled:I,children:"Cancel"}),e.jsx(i.Button,{size:"xs",onClick:u,disabled:B,children:I?e.jsxs(e.Fragment,{children:[e.jsx(i.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})})}exports.CalendarPreferencesDialog=Z;
@@ -1,100 +0,0 @@
1
- function c(n) {
2
- return typeof n == "string" ? n.trim().toLowerCase() : "";
3
- }
4
- function g(n) {
5
- return String(n.column_name || n.name || n.qualifiedFieldName || "");
6
- }
7
- function p(n) {
8
- return Array.from(
9
- new Set(
10
- [
11
- n.column_name,
12
- n.name,
13
- n.qualifiedFieldName,
14
- n.alias
15
- ].filter(
16
- (e) => typeof e == "string" && e.trim().length > 0
17
- ).map((e) => e.trim())
18
- )
19
- );
20
- }
21
- function o(n) {
22
- const e = C(n);
23
- return e ? e.includes("int") || e.includes("uint") || e.includes("bigint") || e.includes("smallint") || e.includes("tinyint") || e.includes("numeric") || e.includes("decimal") || e.includes("double") || e.includes("float") || e.includes("number") || e.includes("real") || e.includes("money") || e.includes("currency") || e.includes("percent") ? "number" : e.includes("timestamp") || e.includes("datetime") || e.startsWith("time") ? "datetime" : e.includes("date") ? "date" : e.includes("bool") ? "boolean" : "string" : "unknown";
24
- }
25
- function C(n) {
26
- let e = c(n), t = "";
27
- for (; e && e !== t; )
28
- t = e, e = d(e, "nullable"), e = d(e, "lowcardinality");
29
- return e;
30
- }
31
- function d(n, e) {
32
- const t = `${e}(`;
33
- return !n.startsWith(t) || !n.endsWith(")") ? n : n.slice(t.length, -1).trim();
34
- }
35
- function A(n) {
36
- const e = o(n);
37
- return e === "date" || e === "datetime";
38
- }
39
- function u(n) {
40
- return A(n.dataType || n.data_type);
41
- }
42
- function m(n) {
43
- const e = f(n);
44
- return e === "id" || e === "row_id";
45
- }
46
- function l(n) {
47
- const e = f(n);
48
- return m(n) || e.endsWith("_id") || e.endsWith("_key") || e.endsWith("_number");
49
- }
50
- function f(n) {
51
- return c(
52
- g(n) || n.name || n.alias
53
- ).replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
54
- }
55
- function y(n, e = {}) {
56
- const t = c(n.role);
57
- return t === "metric" || t === "measure" ? !e.excludeIdentifiers || !l(n) : t === "groupby" || t === "dimension" || t === "date" || t === "id" ? !1 : o(
58
- n.dataType || n.data_type
59
- ) === "number" && (!e.excludeIdentifiers || !l(n));
60
- }
61
- function h(n) {
62
- return !y(n) && !u(n);
63
- }
64
- function D(n) {
65
- const e = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set(), s = /* @__PURE__ */ new Set();
66
- for (const a of n) {
67
- if (m(a))
68
- continue;
69
- const r = p(a);
70
- if (r.length !== 0) {
71
- if (u(a)) {
72
- r.forEach((i) => t.add(i));
73
- continue;
74
- }
75
- if (y(a, { excludeIdentifiers: !0 })) {
76
- r.forEach((i) => e.add(i));
77
- continue;
78
- }
79
- r.forEach((i) => s.add(i));
80
- }
81
- }
82
- return {
83
- validMetricCandidates: Array.from(e).sort(),
84
- validDateCandidates: Array.from(t).sort(),
85
- validDimensionCandidates: Array.from(s).sort()
86
- };
87
- }
88
- export {
89
- p as a,
90
- o as b,
91
- u as c,
92
- m as d,
93
- l as e,
94
- y as f,
95
- g,
96
- h,
97
- A as i,
98
- D as j,
99
- c as n
100
- };
@@ -1 +0,0 @@
1
- "use strict";function l(t){return typeof t=="string"?t.trim().toLowerCase():""}function f(t){return String(t.column_name||t.name||t.qualifiedFieldName||"")}function g(t){return Array.from(new Set([t.column_name,t.name,t.qualifiedFieldName,t.alias].filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim())))}function d(t){const e=p(t);return e?e.includes("int")||e.includes("uint")||e.includes("bigint")||e.includes("smallint")||e.includes("tinyint")||e.includes("numeric")||e.includes("decimal")||e.includes("double")||e.includes("float")||e.includes("number")||e.includes("real")||e.includes("money")||e.includes("currency")||e.includes("percent")?"number":e.includes("timestamp")||e.includes("datetime")||e.startsWith("time")?"datetime":e.includes("date")?"date":e.includes("bool")?"boolean":"string":"unknown"}function p(t){let e=l(t),i="";for(;e&&e!==i;)i=e,e=y(e,"nullable"),e=y(e,"lowcardinality");return e}function y(t,e){const i=`${e}(`;return!t.startsWith(i)||!t.endsWith(")")?t:t.slice(i.length,-1).trim()}function A(t){const e=d(t);return e==="date"||e==="datetime"}function o(t){return A(t.dataType||t.data_type)}function u(t){const e=C(t);return e==="id"||e==="row_id"}function c(t){const e=C(t);return u(t)||e.endsWith("_id")||e.endsWith("_key")||e.endsWith("_number")}function C(t){return l(f(t)||t.name||t.alias).replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")}function m(t,e={}){const i=l(t.role);return i==="metric"||i==="measure"?!e.excludeIdentifiers||!c(t):i==="groupby"||i==="dimension"||i==="date"||i==="id"?!1:d(t.dataType||t.data_type)==="number"&&(!e.excludeIdentifiers||!c(t))}function D(t){return!m(t)&&!o(t)}function F(t){const e=new Set,i=new Set,s=new Set;for(const a of t){if(u(a))continue;const r=g(a);if(r.length!==0){if(o(a)){r.forEach(n=>i.add(n));continue}if(m(a,{excludeIdentifiers:!0})){r.forEach(n=>e.add(n));continue}r.forEach(n=>s.add(n))}}return{validMetricCandidates:Array.from(e).sort(),validDateCandidates:Array.from(i).sort(),validDimensionCandidates:Array.from(s).sort()}}exports.buildAnalyticsCatalogFieldSummary=F;exports.getAnalyticsCatalogFieldCandidates=g;exports.getAnalyticsCatalogFieldName=f;exports.isAnalyticsCatalogDateField=o;exports.isAnalyticsCatalogDimensionField=D;exports.isAnalyticsCatalogMetricField=m;exports.isAnalyticsDateLikeDataType=A;exports.isAnalyticsMetricIdentifierField=c;exports.isAnalyticsTechnicalIdentifierField=u;exports.normalizeAnalyticsCatalogDataType=d;exports.normalizeAnalyticsCatalogName=l;
@@ -1,6 +0,0 @@
1
- "use strict";const e=require("./switch-CmHP5dT7.js");/**
2
- * @license lucide-react v0.453.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const t=e.createLucideIcon("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);exports.ChevronsUpDown=t;
@@ -1,14 +0,0 @@
1
- import { c as o } from "./switch-DmE_MY3L.js";
2
- /**
3
- * @license lucide-react v0.453.0 - ISC
4
- *
5
- * This source code is licensed under the ISC license.
6
- * See the LICENSE file in the root directory of this source tree.
7
- */
8
- const t = o("ChevronsUpDown", [
9
- ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
10
- ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
11
- ]);
12
- export {
13
- t as C
14
- };