@eric-emg/symphiq-components 1.2.241 → 1.2.243

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.
@@ -1,4 +1,4 @@
1
- import { ViewModeEnum, MetricStatusEnum, TrendDirectionEnum, CompetitiveScoreEnum, MetricEnum, DimensionEnum, UiDataPeriodEnum, UiDataComparePeriodEnum, ChartTypeEnum, IconSourceEnum, ProfileAnalysisRecommendationPriorityEnum, ProfileItemTypeEnum, PriceVsCompetitorsEnum, DifferentiationStrengthEnum, ThreatLevelEnum, normalizeToV3, FocusAreaDetailStatusEnum, FocusAreaDomainEnumUtil, FocusAreaDomainEnum, ShopDataLoadStatusEnum, MetricEnumUtil, NumberTypeEnum, FunnelMetricTypeEnum, AiDynamicContentStatusEnum, FocusAreaHealthEnum, ProfileAnalysisPriorityEnum, CapabilityStateEnum, QuadrantEnum, AdvantageEnum, OverallGradeEnum, OperationalMaturityEnum, ProfileAnalysisEffortLevelEnum, ProfileAnalysisImpactLevelEnum, ProfileAnalysisTypeEnum, LineChartUseCaseEnum, BarChartUseCaseEnum } from '@jebgem/model';
1
+ import { ViewModeEnum, MetricStatusEnum, TrendDirectionEnum, CompetitiveScoreEnum, MetricEnum, DimensionEnum, UiDataPeriodEnum, UiDataComparePeriodEnum, ChartTypeEnum, IconSourceEnum, ProfileAnalysisRecommendationPriorityEnum, ProfileItemTypeEnum, PriceVsCompetitorsEnum, DifferentiationStrengthEnum, ThreatLevelEnum, normalizeToV3, FocusAreaDetailStatusEnum, FocusAreaDomainEnumUtil, FocusAreaDomainEnum, ShopDataLoadStatusEnum, MetricEnumUtil, NumberTypeEnum, LineChartUseCaseEnum, FunnelMetricTypeEnum, AiDynamicContentStatusEnum, FocusAreaHealthEnum, ProfileAnalysisPriorityEnum, CapabilityStateEnum, QuadrantEnum, AdvantageEnum, OverallGradeEnum, OperationalMaturityEnum, ProfileAnalysisEffortLevelEnum, ProfileAnalysisImpactLevelEnum, ProfileAnalysisTypeEnum, BarChartUseCaseEnum } from '@jebgem/model';
2
2
  export * from '@jebgem/model';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, signal, computed, input, ChangeDetectionStrategy, Component, output, inject, ElementRef, Renderer2, effect, Directive, HostListener, untracked, ViewChild, PLATFORM_ID, Inject, Input } from '@angular/core';
@@ -3878,7 +3878,7 @@ class CompetitiveScoreService {
3878
3878
  }]
3879
3879
  }], null, null); })();
3880
3880
 
3881
- const _forTrack0$P = ($index, $item) => $item.category;
3881
+ const _forTrack0$Q = ($index, $item) => $item.category;
3882
3882
  function CompetitivePositioningSummaryComponent_Conditional_1_For_47_Conditional_12_Template(rf, ctx) { if (rf & 1) {
3883
3883
  i0.ɵɵelementStart(0, "div", 15);
3884
3884
  i0.ɵɵelement(1, "div", 37);
@@ -4037,7 +4037,7 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
4037
4037
  i0.ɵɵelementEnd()();
4038
4038
  i0.ɵɵnamespaceHTML();
4039
4039
  i0.ɵɵelementStart(43, "div", 24)(44, "div", 25)(45, "div", 26);
4040
- i0.ɵɵrepeaterCreate(46, CompetitivePositioningSummaryComponent_Conditional_1_For_47_Template, 15, 12, "div", 27, _forTrack0$P);
4040
+ i0.ɵɵrepeaterCreate(46, CompetitivePositioningSummaryComponent_Conditional_1_For_47_Template, 15, 12, "div", 27, _forTrack0$Q);
4041
4041
  i0.ɵɵelementEnd()()()();
4042
4042
  i0.ɵɵelementStart(48, "div", 28)(49, "button", 29);
4043
4043
  i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_1_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollToCompetitive.emit()); });
@@ -4246,7 +4246,7 @@ function CompetitivePositioningSummaryComponent_Conditional_2_Template(rf, ctx)
4246
4246
  i0.ɵɵelementStart(32, "div", 50)(33, "h4", 51);
4247
4247
  i0.ɵɵtext(34, "By Funnel Stage");
4248
4248
  i0.ɵɵelementEnd();
4249
- i0.ɵɵrepeaterCreate(35, CompetitivePositioningSummaryComponent_Conditional_2_For_36_Template, 12, 11, "div", 52, _forTrack0$P);
4249
+ i0.ɵɵrepeaterCreate(35, CompetitivePositioningSummaryComponent_Conditional_2_For_36_Template, 12, 11, "div", 52, _forTrack0$Q);
4250
4250
  i0.ɵɵelementEnd();
4251
4251
  i0.ɵɵelementStart(37, "div", 28)(38, "button", 53);
4252
4252
  i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_2_Template_button_click_38_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollToCompetitive.emit()); });
@@ -8923,7 +8923,7 @@ class MetricCardComponent {
8923
8923
  const _c0$12 = () => [1, 2, 3];
8924
8924
  const _c1$B = (a0, a1, a2) => [a0, a1, a2];
8925
8925
  const _c2$p = (a0, a1) => [a0, a1];
8926
- const _forTrack0$O = ($index, $item) => $item.metric;
8926
+ const _forTrack0$P = ($index, $item) => $item.metric;
8927
8927
  const _forTrack1$7 = ($index, $item) => $item.dimensionValue;
8928
8928
  function BreakdownSectionComponent_Conditional_0_For_7_For_4_Template(rf, ctx) { if (rf & 1) {
8929
8929
  i0.ɵɵelementStart(0, "div", 7);
@@ -9246,7 +9246,7 @@ function BreakdownSectionComponent_Conditional_1_Template(rf, ctx) { if (rf & 1)
9246
9246
  i0.ɵɵelementEnd()();
9247
9247
  i0.ɵɵconditionalCreate(6, BreakdownSectionComponent_Conditional_1_Conditional_6_Template, 3, 0, "div", 11);
9248
9248
  i0.ɵɵelementStart(7, "div", 12);
9249
- i0.ɵɵrepeaterCreate(8, BreakdownSectionComponent_Conditional_1_For_9_Template, 28, 18, "div", 13, _forTrack0$O);
9249
+ i0.ɵɵrepeaterCreate(8, BreakdownSectionComponent_Conditional_1_For_9_Template, 28, 18, "div", 13, _forTrack0$P);
9250
9250
  i0.ɵɵelementEnd()();
9251
9251
  } if (rf & 2) {
9252
9252
  const ctx_r0 = i0.ɵɵnextContext();
@@ -10644,7 +10644,7 @@ class ChartCardComponent {
10644
10644
  }], null, { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], chartClick: [{ type: i0.Output, args: ["chartClick"] }] }); }); })();
10645
10645
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChartCardComponent, { className: "ChartCardComponent", filePath: "lib/components/shared/chart-card.component.ts", lineNumber: 101 }); })();
10646
10646
 
10647
- const _forTrack0$N = ($index, $item) => $item.id;
10647
+ const _forTrack0$O = ($index, $item) => $item.id;
10648
10648
  function FunnelStrengthsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10649
10649
  i0.ɵɵelementStart(0, "div", 1);
10650
10650
  i0.ɵɵnamespaceSVG();
@@ -10758,7 +10758,7 @@ function FunnelStrengthsListModalContentComponent_Conditional_2_For_2_Template(r
10758
10758
  } }
10759
10759
  function FunnelStrengthsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
10760
10760
  i0.ɵɵelementStart(0, "div", 2);
10761
- i0.ɵɵrepeaterCreate(1, FunnelStrengthsListModalContentComponent_Conditional_2_For_2_Template, 30, 22, "button", 7, _forTrack0$N);
10761
+ i0.ɵɵrepeaterCreate(1, FunnelStrengthsListModalContentComponent_Conditional_2_For_2_Template, 30, 22, "button", 7, _forTrack0$O);
10762
10762
  i0.ɵɵelementEnd();
10763
10763
  } if (rf & 2) {
10764
10764
  const ctx_r0 = i0.ɵɵnextContext();
@@ -10968,7 +10968,7 @@ class FunnelStrengthsListModalContentComponent {
10968
10968
  }], null, { strengths: [{ type: i0.Input, args: [{ isSignal: true, alias: "strengths", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: true }] }] }); })();
10969
10969
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelStrengthsListModalContentComponent, { className: "FunnelStrengthsListModalContentComponent", filePath: "lib/components/funnel-analysis-dashboard/funnel-strengths-list-modal-content.component.ts", lineNumber: 93 }); })();
10970
10970
 
10971
- const _forTrack0$M = ($index, $item) => $item.severity;
10971
+ const _forTrack0$N = ($index, $item) => $item.severity;
10972
10972
  const _forTrack1$6 = ($index, $item) => $item.id;
10973
10973
  function FunnelWeaknessesListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10974
10974
  i0.ɵɵelementStart(0, "div", 1);
@@ -11147,7 +11147,7 @@ function FunnelWeaknessesListModalContentComponent_Conditional_2_For_2_Template(
11147
11147
  } }
11148
11148
  function FunnelWeaknessesListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11149
11149
  i0.ɵɵelementStart(0, "div", 2);
11150
- i0.ɵɵrepeaterCreate(1, FunnelWeaknessesListModalContentComponent_Conditional_2_For_2_Template, 9, 7, "div", null, _forTrack0$M);
11150
+ i0.ɵɵrepeaterCreate(1, FunnelWeaknessesListModalContentComponent_Conditional_2_For_2_Template, 9, 7, "div", null, _forTrack0$N);
11151
11151
  i0.ɵɵelementEnd();
11152
11152
  } if (rf & 2) {
11153
11153
  const ctx_r0 = i0.ɵɵnextContext();
@@ -12922,7 +12922,7 @@ class ProfileItemLookupService {
12922
12922
  }], null, null); })();
12923
12923
 
12924
12924
  const _c0$$ = a0 => ({ name: "chevron-right", source: a0 });
12925
- const _forTrack0$L = ($index, $item) => $item.id;
12925
+ const _forTrack0$M = ($index, $item) => $item.id;
12926
12926
  function RelatedAreaChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
12927
12927
  const _r1 = i0.ɵɵgetCurrentView();
12928
12928
  i0.ɵɵelementStart(0, "button", 2);
@@ -12943,7 +12943,7 @@ function RelatedAreaChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (r
12943
12943
  } }
12944
12944
  function RelatedAreaChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
12945
12945
  i0.ɵɵelementStart(0, "div", 0);
12946
- i0.ɵɵrepeaterCreate(1, RelatedAreaChipsComponent_Conditional_0_For_2_Template, 4, 5, "button", 1, _forTrack0$L);
12946
+ i0.ɵɵrepeaterCreate(1, RelatedAreaChipsComponent_Conditional_0_For_2_Template, 4, 5, "button", 1, _forTrack0$M);
12947
12947
  i0.ɵɵelementEnd();
12948
12948
  } if (rf & 2) {
12949
12949
  const ctx_r2 = i0.ɵɵnextContext();
@@ -13168,7 +13168,7 @@ class CompetitorChipListComponent {
13168
13168
  }], null, { relatedCompetitorIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "relatedCompetitorIds", required: false }] }], competitors: [{ type: i0.Input, args: [{ isSignal: true, alias: "competitors", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isDark: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDark", required: false }] }], inModalContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "inModalContext", required: false }] }] }); })();
13169
13169
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitorChipListComponent, { className: "CompetitorChipListComponent", filePath: "lib/components/business-analysis-dashboard/shared/competitor-chip-list.component.ts", lineNumber: 37 }); })();
13170
13170
 
13171
- const _forTrack0$K = ($index, $item) => $item.id;
13171
+ const _forTrack0$L = ($index, $item) => $item.id;
13172
13172
  function CompetitorContextSectionComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
13173
13173
  const _r1 = i0.ɵɵgetCurrentView();
13174
13174
  i0.ɵɵelementStart(0, "button", 8);
@@ -13251,7 +13251,7 @@ function CompetitorContextSectionComponent_Conditional_0_Template(rf, ctx) { if
13251
13251
  i0.ɵɵconditionalCreate(8, CompetitorContextSectionComponent_Conditional_0_Conditional_8_Template, 5, 4, "button", 4);
13252
13252
  i0.ɵɵelementEnd();
13253
13253
  i0.ɵɵelementStart(9, "div", 5)(10, "div", 6);
13254
- i0.ɵɵrepeaterCreate(11, CompetitorContextSectionComponent_Conditional_0_For_12_Template, 10, 6, "button", 7, _forTrack0$K);
13254
+ i0.ɵɵrepeaterCreate(11, CompetitorContextSectionComponent_Conditional_0_For_12_Template, 10, 6, "button", 7, _forTrack0$L);
13255
13255
  i0.ɵɵelementEnd()()();
13256
13256
  } if (rf & 2) {
13257
13257
  const ctx_r1 = i0.ɵɵnextContext();
@@ -13442,7 +13442,7 @@ class CompetitorContextSectionComponent {
13442
13442
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitorContextSectionComponent, { className: "CompetitorContextSectionComponent", filePath: "lib/components/business-analysis-dashboard/cards/competitor-context-section.component.ts", lineNumber: 86 }); })();
13443
13443
 
13444
13444
  const _c0$Z = a0 => ({ name: "chevron-right", source: a0 });
13445
- const _forTrack0$J = ($index, $item) => $item.id;
13445
+ const _forTrack0$K = ($index, $item) => $item.id;
13446
13446
  function RelatedRecommendationChipsComponent_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
13447
13447
  const _r1 = i0.ɵɵgetCurrentView();
13448
13448
  i0.ɵɵelementStart(0, "button", 4);
@@ -13485,7 +13485,7 @@ function RelatedRecommendationChipsComponent_Conditional_0_Conditional_4_Templat
13485
13485
  } }
13486
13486
  function RelatedRecommendationChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
13487
13487
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
13488
- i0.ɵɵrepeaterCreate(2, RelatedRecommendationChipsComponent_Conditional_0_For_3_Template, 5, 6, "button", 2, _forTrack0$J);
13488
+ i0.ɵɵrepeaterCreate(2, RelatedRecommendationChipsComponent_Conditional_0_For_3_Template, 5, 6, "button", 2, _forTrack0$K);
13489
13489
  i0.ɵɵelementEnd();
13490
13490
  i0.ɵɵconditionalCreate(4, RelatedRecommendationChipsComponent_Conditional_0_Conditional_4_Template, 5, 4, "button", 3);
13491
13491
  i0.ɵɵelementEnd();
@@ -13941,7 +13941,7 @@ class RelatedFunnelInsightsSectionComponent {
13941
13941
  }], null, { insightCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "insightCount", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], insightsClicked: [{ type: i0.Output, args: ["insightsClicked"] }] }); })();
13942
13942
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedFunnelInsightsSectionComponent, { className: "RelatedFunnelInsightsSectionComponent", filePath: "lib/components/business-analysis-dashboard/shared/related-funnel-insights-section.component.ts", lineNumber: 47 }); })();
13943
13943
 
13944
- const _forTrack0$I = ($index, $item) => $item.order;
13944
+ const _forTrack0$J = ($index, $item) => $item.order;
13945
13945
  function RecommendationCardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
13946
13946
  i0.ɵɵelementStart(0, "div", 9);
13947
13947
  i0.ɵɵelement(1, "symphiq-icon", 11);
@@ -14294,7 +14294,7 @@ function RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6
14294
14294
  } }
14295
14295
  function RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6_Template(rf, ctx) { if (rf & 1) {
14296
14296
  i0.ɵɵelementStart(0, "div", 37);
14297
- i0.ɵɵrepeaterCreate(1, RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6_For_2_Template, 13, 9, "div", 41, _forTrack0$I);
14297
+ i0.ɵɵrepeaterCreate(1, RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6_For_2_Template, 13, 9, "div", 41, _forTrack0$J);
14298
14298
  i0.ɵɵelementEnd();
14299
14299
  } if (rf & 2) {
14300
14300
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -15133,7 +15133,7 @@ const ModalComponent_Conditional_0_Conditional_19_Conditional_4_Defer_2_DepsFn =
15133
15133
  const ModalComponent_Conditional_0_Conditional_19_Conditional_5_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return barChart_component; }).then(m => m.BarChartComponent)];
15134
15134
  const ModalComponent_Conditional_0_Conditional_19_Conditional_6_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return pieChart_component; }).then(m => m.PieChartComponent)];
15135
15135
  const ModalComponent_Conditional_0_Conditional_19_Conditional_7_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return areaChart_component; }).then(m => m.AreaChartComponent)];
15136
- const _forTrack0$H = ($index, $item) => $item.id || $index;
15136
+ const _forTrack0$I = ($index, $item) => $item.id || $index;
15137
15137
  function ModalComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
15138
15138
  const _r3 = i0.ɵɵgetCurrentView();
15139
15139
  i0.ɵɵelementStart(0, "button", 13);
@@ -15507,7 +15507,7 @@ function ModalComponent_Conditional_0_Conditional_22_For_3_Template(rf, ctx) { i
15507
15507
  function ModalComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
15508
15508
  i0.ɵɵelementStart(0, "div", 22);
15509
15509
  i0.ɵɵconditionalCreate(1, ModalComponent_Conditional_0_Conditional_22_Conditional_1_Template, 2, 2, "p", 55);
15510
- i0.ɵɵrepeaterCreate(2, ModalComponent_Conditional_0_Conditional_22_For_3_Template, 2, 5, "div", null, _forTrack0$H);
15510
+ i0.ɵɵrepeaterCreate(2, ModalComponent_Conditional_0_Conditional_22_For_3_Template, 2, 5, "div", null, _forTrack0$I);
15511
15511
  i0.ɵɵelementEnd();
15512
15512
  } if (rf & 2) {
15513
15513
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -19744,7 +19744,7 @@ class NarrativeTooltipComponent {
19744
19744
  }], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }] }); })();
19745
19745
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NarrativeTooltipComponent, { className: "NarrativeTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/narrative-tooltip.component.ts", lineNumber: 27 }); })();
19746
19746
 
19747
- const _forTrack0$G = ($index, $item) => $item.name;
19747
+ const _forTrack0$H = ($index, $item) => $item.name;
19748
19748
  function CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template(rf, ctx) { if (rf & 1) {
19749
19749
  i0.ɵɵelementStart(0, "div", 7)(1, "div", 8)(2, "div", 9);
19750
19750
  i0.ɵɵelement(3, "div", 10);
@@ -19788,7 +19788,7 @@ function CompetitiveStatusTooltipComponent_Conditional_6_Template(rf, ctx) { if
19788
19788
  i0.ɵɵtext(3);
19789
19789
  i0.ɵɵelementEnd();
19790
19790
  i0.ɵɵelementStart(4, "div", 5);
19791
- i0.ɵɵrepeaterCreate(5, CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template, 13, 12, "div", 6, _forTrack0$G);
19791
+ i0.ɵɵrepeaterCreate(5, CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template, 13, 12, "div", 6, _forTrack0$H);
19792
19792
  i0.ɵɵelementEnd()();
19793
19793
  } if (rf & 2) {
19794
19794
  const ctx_r1 = i0.ɵɵnextContext();
@@ -20035,7 +20035,7 @@ class CompetitiveStatusTooltipComponent {
20035
20035
  }], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }] }); })();
20036
20036
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitiveStatusTooltipComponent, { className: "CompetitiveStatusTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/competitive-status-tooltip.component.ts", lineNumber: 60 }); })();
20037
20037
 
20038
- const _forTrack0$F = ($index, $item) => $item.name;
20038
+ const _forTrack0$G = ($index, $item) => $item.name;
20039
20039
  function FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template(rf, ctx) { if (rf & 1) {
20040
20040
  i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
20041
20041
  i0.ɵɵtext(3);
@@ -20075,7 +20075,7 @@ function FunnelStageCompetitiveTooltipComponent_Conditional_8_Template(rf, ctx)
20075
20075
  i0.ɵɵtext(4);
20076
20076
  i0.ɵɵelementEnd()();
20077
20077
  i0.ɵɵelementStart(5, "div", 8);
20078
- i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template, 11, 9, "div", 9, _forTrack0$F);
20078
+ i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template, 11, 9, "div", 9, _forTrack0$G);
20079
20079
  i0.ɵɵelementEnd()();
20080
20080
  } if (rf & 2) {
20081
20081
  const ctx_r1 = i0.ɵɵnextContext();
@@ -20125,7 +20125,7 @@ function FunnelStageCompetitiveTooltipComponent_Conditional_9_Template(rf, ctx)
20125
20125
  i0.ɵɵtext(4);
20126
20126
  i0.ɵɵelementEnd()();
20127
20127
  i0.ɵɵelementStart(5, "div", 8);
20128
- i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_9_For_7_Template, 11, 9, "div", 9, _forTrack0$F);
20128
+ i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_9_For_7_Template, 11, 9, "div", 9, _forTrack0$G);
20129
20129
  i0.ɵɵelementEnd()();
20130
20130
  } if (rf & 2) {
20131
20131
  const ctx_r1 = i0.ɵɵnextContext();
@@ -20175,7 +20175,7 @@ function FunnelStageCompetitiveTooltipComponent_Conditional_10_Template(rf, ctx)
20175
20175
  i0.ɵɵtext(4);
20176
20176
  i0.ɵɵelementEnd()();
20177
20177
  i0.ɵɵelementStart(5, "div", 8);
20178
- i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_10_For_7_Template, 11, 9, "div", 9, _forTrack0$F);
20178
+ i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_10_For_7_Template, 11, 9, "div", 9, _forTrack0$G);
20179
20179
  i0.ɵɵelementEnd()();
20180
20180
  } if (rf & 2) {
20181
20181
  const ctx_r1 = i0.ɵɵnextContext();
@@ -21439,7 +21439,7 @@ class MobileFABComponent {
21439
21439
  }], null, { isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], isCompactMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompactMode", required: false }] }], isExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isExpanded", required: false }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }], scrollToTop: [{ type: i0.Output, args: ["scrollToTop"] }], toggleView: [{ type: i0.Output, args: ["toggleView"] }] }); })();
21440
21440
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MobileFABComponent, { className: "MobileFABComponent", filePath: "lib/components/funnel-analysis-dashboard/mobile-fab.component.ts", lineNumber: 75 }); })();
21441
21441
 
21442
- const _forTrack0$E = ($index, $item) => $item.id;
21442
+ const _forTrack0$F = ($index, $item) => $item.id;
21443
21443
  function MobileBottomNavComponent_For_3_Template(rf, ctx) { if (rf & 1) {
21444
21444
  const _r1 = i0.ɵɵgetCurrentView();
21445
21445
  i0.ɵɵelementStart(0, "button", 3);
@@ -21497,7 +21497,7 @@ class MobileBottomNavComponent {
21497
21497
  static { this.ɵfac = function MobileBottomNavComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MobileBottomNavComponent)(); }; }
21498
21498
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MobileBottomNavComponent, selectors: [["symphiq-mobile-bottom-nav"]], inputs: { isLightMode: [1, "isLightMode"], sections: [1, "sections"], activeSection: [1, "activeSection"] }, outputs: { navigate: "navigate" }, decls: 4, vars: 1, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-50", "lg:hidden", "border-t", "backdrop-blur-md", 3, "ngClass"], [1, "flex", "items-center", "justify-around", "px-2", "py-3"], [1, "flex", "flex-col", "items-center", "gap-1", "px-3", "py-2", "rounded-lg", "transition-all", "duration-200", "active:scale-95", "min-w-[64px]", 3, "ngClass"], [1, "flex", "flex-col", "items-center", "gap-1", "px-3", "py-2", "rounded-lg", "transition-all", "duration-200", "active:scale-95", "min-w-[64px]", 3, "click", "ngClass"], [1, "w-6", "h-6", 3, "innerHTML"], [1, "text-xs", "font-medium"]], template: function MobileBottomNavComponent_Template(rf, ctx) { if (rf & 1) {
21499
21499
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
21500
- i0.ɵɵrepeaterCreate(2, MobileBottomNavComponent_For_3_Template, 4, 3, "button", 2, _forTrack0$E);
21500
+ i0.ɵɵrepeaterCreate(2, MobileBottomNavComponent_For_3_Template, 4, 3, "button", 2, _forTrack0$F);
21501
21501
  i0.ɵɵelementEnd()();
21502
21502
  } if (rf & 2) {
21503
21503
  i0.ɵɵproperty("ngClass", ctx.containerClass());
@@ -21702,7 +21702,7 @@ class SearchService {
21702
21702
  }], null, null); })();
21703
21703
 
21704
21704
  const _c0$X = ["searchInput"];
21705
- const _forTrack0$D = ($index, $item) => $item.id;
21705
+ const _forTrack0$E = ($index, $item) => $item.id;
21706
21706
  function SearchBarComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
21707
21707
  const _r3 = i0.ɵɵgetCurrentView();
21708
21708
  i0.ɵɵelementStart(0, "button", 18);
@@ -21795,7 +21795,7 @@ function SearchBarComponent_Conditional_0_Conditional_14_For_2_Template(rf, ctx)
21795
21795
  } }
21796
21796
  function SearchBarComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
21797
21797
  i0.ɵɵelementStart(0, "div", 15);
21798
- i0.ɵɵrepeaterCreate(1, SearchBarComponent_Conditional_0_Conditional_14_For_2_Template, 16, 12, "button", 19, _forTrack0$D);
21798
+ i0.ɵɵrepeaterCreate(1, SearchBarComponent_Conditional_0_Conditional_14_For_2_Template, 16, 12, "button", 19, _forTrack0$E);
21799
21799
  i0.ɵɵelementEnd();
21800
21800
  } if (rf & 2) {
21801
21801
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -22286,7 +22286,7 @@ class SearchHighlightDirective {
22286
22286
  }]
22287
22287
  }], () => [], { symphiqSearchHighlight: [{ type: i0.Input, args: [{ isSignal: true, alias: "libSymphiqSearchHighlight", required: false }] }], highlightId: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightId", required: false }] }] }); })();
22288
22288
 
22289
- const _forTrack0$C = ($index, $item) => $item.value;
22289
+ const _forTrack0$D = ($index, $item) => $item.value;
22290
22290
  const _forTrack1$5 = ($index, $item) => $item.performanceItemId;
22291
22291
  function CompetitiveScorecardComponent_For_12_Template(rf, ctx) { if (rf & 1) {
22292
22292
  i0.ɵɵelementStart(0, "div", 7);
@@ -22661,7 +22661,7 @@ class CompetitiveScorecardComponent {
22661
22661
  i0.ɵɵtext(9);
22662
22662
  i0.ɵɵelementEnd()()();
22663
22663
  i0.ɵɵelementStart(10, "div", 6);
22664
- i0.ɵɵrepeaterCreate(11, CompetitiveScorecardComponent_For_12_Template, 4, 7, "div", 7, _forTrack0$C);
22664
+ i0.ɵɵrepeaterCreate(11, CompetitiveScorecardComponent_For_12_Template, 4, 7, "div", 7, _forTrack0$D);
22665
22665
  i0.ɵɵelementEnd();
22666
22666
  i0.ɵɵelementStart(13, "div", 8)(14, "table", 9)(15, "thead")(16, "tr", 10)(17, "th", 11);
22667
22667
  i0.ɵɵtext(18, "Metric");
@@ -23296,7 +23296,7 @@ class SectionDividerComponent {
23296
23296
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], animationDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDelay", required: false }] }], sectionIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionIcon", required: false }] }], subsections: [{ type: i0.Input, args: [{ isSignal: true, alias: "subsections", required: false }] }] }); })();
23297
23297
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SectionDividerComponent, { className: "SectionDividerComponent", filePath: "lib/components/shared/section-divider.component.ts", lineNumber: 36 }); })();
23298
23298
 
23299
- const _forTrack0$B = ($index, $item) => $item.id;
23299
+ const _forTrack0$C = ($index, $item) => $item.id;
23300
23300
  function FloatingTocComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
23301
23301
  i0.ɵɵnamespaceSVG();
23302
23302
  i0.ɵɵelement(0, "path", 8);
@@ -23348,7 +23348,7 @@ function FloatingTocComponent_For_19_Conditional_7_For_2_Template(rf, ctx) { if
23348
23348
  } }
23349
23349
  function FloatingTocComponent_For_19_Conditional_7_Template(rf, ctx) { if (rf & 1) {
23350
23350
  i0.ɵɵelementStart(0, "div", 17);
23351
- i0.ɵɵrepeaterCreate(1, FloatingTocComponent_For_19_Conditional_7_For_2_Template, 4, 4, "button", 19, _forTrack0$B);
23351
+ i0.ɵɵrepeaterCreate(1, FloatingTocComponent_For_19_Conditional_7_For_2_Template, 4, 4, "button", 19, _forTrack0$C);
23352
23352
  i0.ɵɵelementEnd();
23353
23353
  } if (rf & 2) {
23354
23354
  const section_r2 = i0.ɵɵnextContext().$implicit;
@@ -23738,7 +23738,7 @@ class FloatingTocComponent {
23738
23738
  i0.ɵɵelementEnd()()();
23739
23739
  i0.ɵɵnamespaceHTML();
23740
23740
  i0.ɵɵelementStart(17, "nav", 9);
23741
- i0.ɵɵrepeaterCreate(18, FloatingTocComponent_For_19_Template, 8, 6, "div", 10, _forTrack0$B);
23741
+ i0.ɵɵrepeaterCreate(18, FloatingTocComponent_For_19_Template, 8, 6, "div", 10, _forTrack0$C);
23742
23742
  i0.ɵɵelementEnd();
23743
23743
  i0.ɵɵelementStart(20, "div", 11)(21, "button", 7);
23744
23744
  i0.ɵɵlistener("click", function FloatingTocComponent_Template_button_click_21_listener() { return ctx.scrollToTop(); });
@@ -23892,7 +23892,7 @@ class FloatingTocComponent {
23892
23892
  }], null, { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], containerElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "containerElement", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], parentHeaderOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentHeaderOffset", required: false }] }] }); })();
23893
23893
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FloatingTocComponent, { className: "FloatingTocComponent", filePath: "lib/components/business-analysis-dashboard/floating-toc.component.ts", lineNumber: 125 }); })();
23894
23894
 
23895
- const _forTrack0$A = ($index, $item) => $item.id;
23895
+ const _forTrack0$B = ($index, $item) => $item.id;
23896
23896
  function JourneyProgressIndicatorComponent_For_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
23897
23897
  i0.ɵɵnamespaceSVG();
23898
23898
  i0.ɵɵelementStart(0, "svg", 22);
@@ -24125,7 +24125,7 @@ function JourneyProgressIndicatorComponent_Conditional_23_Template(rf, ctx) { if
24125
24125
  i0.ɵɵtext(2, "Journey Progress");
24126
24126
  i0.ɵɵelementEnd();
24127
24127
  i0.ɵɵelementStart(3, "div", 44);
24128
- i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_Conditional_23_For_5_Template, 14, 8, "div", 45, _forTrack0$A);
24128
+ i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_Conditional_23_For_5_Template, 14, 8, "div", 45, _forTrack0$B);
24129
24129
  i0.ɵɵelementEnd()();
24130
24130
  } if (rf & 2) {
24131
24131
  const ctx_r2 = i0.ɵɵnextContext();
@@ -24574,7 +24574,7 @@ class JourneyProgressIndicatorComponent {
24574
24574
  static { this.ɵfac = function JourneyProgressIndicatorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || JourneyProgressIndicatorComponent)(); }; }
24575
24575
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: JourneyProgressIndicatorComponent, selectors: [["symphiq-journey-progress-indicator"]], inputs: { viewMode: [1, "viewMode"], currentStepId: [1, "currentStepId"], showNextStepAction: [1, "showNextStepAction"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"] }, outputs: { nextStepClick: "nextStepClick", stepClick: "stepClick" }, decls: 25, vars: 12, consts: [[1, "sticky", "top-[60px]", "z-40", "border-b", "pt-8", "pb-6", "px-6", "transition-all", "duration-200", "overflow-visible", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "overflow-visible"], [1, "hidden", "lg:flex", "items-start", "justify-between", "overflow-visible"], [1, "flex-1", "flex", "items-start", "justify-start", "overflow-visible"], ["type", "button", 1, "px-4", "py-2", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-2", "whitespace-nowrap", "ml-4", "mt-0", 3, "disabled", "ngClass", "cursor-pointer", "cursor-not-allowed", "opacity-50", "hover:scale-105"], [1, "lg:hidden"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex-1", "flex", "items-center", "gap-3"], [1, "w-10", "h-10", "min-w-[2.5rem]", "min-h-[2.5rem]", "rounded-full", "flex", "items-center", "justify-center", "flex-shrink-0", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-5", "h-5"], [1, "w-3", "h-3", "min-w-[0.75rem]", "min-h-[0.75rem]", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "text-sm", "font-bold", 3, "ngClass"], [1, "flex-1", "text-left"], [1, "flex", "items-center", "gap-1.5", "relative", 3, "mouseenter", "mouseleave", "click"], [1, "text-xs", "cursor-pointer", 3, "ngClass"], [1, "p-0.5", "rounded-full", "cursor-pointer", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "absolute", "top-full", "left-0", "mt-2", "w-80", "max-w-[calc(100vw-2rem)]", "p-4", "rounded-lg", "shadow-xl", "z-50", 3, "ngClass"], ["type", "button", 1, "px-3", "py-1.5", "rounded-lg", "font-medium", "text-xs", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-1.5", "whitespace-nowrap", 3, "disabled", "ngClass", "cursor-pointer", "cursor-not-allowed", "opacity-50", "hover:scale-105"], [1, "flex", "flex-col", "items-center", "relative", "step-column", "overflow-visible", "flex-shrink-0", 3, "mouseenter", "mouseleave", "click"], [1, "w-8", "h-8", "min-w-[2rem]", "min-h-[2rem]", "rounded-full", "flex", "items-center", "justify-center", "flex-shrink-0", "step-circle", "relative", "z-10", "mb-1.5", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-4", "h-4"], [1, "w-2.5", "h-2.5", "min-w-[0.625rem]", "min-h-[0.625rem]", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "w-2", "h-2", "min-w-[0.5rem]", "min-h-[0.5rem]", "rounded-full", 3, "ngClass"], [1, "text-xs", "font-bold", 3, "ngClass"], [1, "text-[10px]", "text-center", "leading-tight", "whitespace-nowrap", "max-w-[64px]", "overflow-hidden", "text-ellipsis", 3, "ngClass"], [1, "absolute", "rounded-lg", "shadow-2xl", "z-50", "pointer-events-none", 3, "ngClass", "expanded-card-right", "expanded-card-left", "top", "left", "right"], [1, "flex-1", "h-0.5", "transition-all", "duration-200", "mt-[16px]", 3, "ngClass"], ["fill-rule", "evenodd", "d", "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", "clip-rule", "evenodd"], [1, "absolute", "rounded-lg", "shadow-2xl", "z-50", "pointer-events-none", 3, "ngClass"], [1, "flex", "items-start", "px-4", "py-3", "expanded-content"], [1, "flex", "items-start", "gap-2", "w-full"], [1, "text-xs", "font-bold", "flex-shrink-0", "mt-0.5", 3, "ngClass"], [1, "flex", "flex-col", "gap-1", "flex-1"], [1, "text-sm", "font-bold", "leading-tight", 3, "ngClass"], [1, "text-xs", "leading-relaxed", "description-fade", 3, "ngClass"], ["type", "button", 1, "px-4", "py-2", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-2", "whitespace-nowrap", "ml-4", "mt-0", 3, "click", "disabled", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "animate-spin"], ["cx", "12", "cy", "12", "r", "10", "stroke", "currentColor", "stroke-width", "4", 1, "opacity-25"], ["fill", "currentColor", "d", "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", 1, "opacity-75"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], [1, "text-sm", "font-bold", "mb-3", 3, "ngClass"], [1, "space-y-2"], [1, "flex", "items-start", "gap-2"], [1, "w-6", "h-6", "min-w-[1.5rem]", "min-h-[1.5rem]", "rounded-full", "flex", "items-center", "justify-center", "flex-shrink-0", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3", "h-3"], [1, "w-2", "h-2", "min-w-[0.5rem]", "min-h-[0.5rem]", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "w-1.5", "h-1.5", "min-w-[0.375rem]", "min-h-[0.375rem]", "rounded-full", 3, "ngClass"], [1, "text-[10px]", "font-bold", 3, "ngClass"], [1, "flex-1", "min-w-0"], [1, "flex", "items-center", "gap-2"], [1, "text-xs", "font-medium", 3, "ngClass"], [1, "text-[10px]", "mt-0.5", 3, "ngClass"], ["type", "button", 1, "px-3", "py-1.5", "rounded-lg", "font-medium", "text-xs", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-1.5", "whitespace-nowrap", 3, "click", "disabled", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5", "animate-spin"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"]], template: function JourneyProgressIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
24576
24576
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
24577
- i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_For_5_Template, 10, 10, null, null, _forTrack0$A);
24577
+ i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_For_5_Template, 10, 10, null, null, _forTrack0$B);
24578
24578
  i0.ɵɵelementEnd();
24579
24579
  i0.ɵɵconditionalCreate(6, JourneyProgressIndicatorComponent_Conditional_6_Template, 3, 11, "button", 4);
24580
24580
  i0.ɵɵelementEnd();
@@ -26725,7 +26725,7 @@ class ViewModeSwitcherModalComponent {
26725
26725
  const _c0$V = a0 => ({ name: "check-badge", source: a0 });
26726
26726
  const _c1$z = a0 => ({ name: "check-circle", source: a0 });
26727
26727
  const _c2$o = a0 => ({ name: "chevron-right", source: a0 });
26728
- const _forTrack0$z = ($index, $item) => $item.area;
26728
+ const _forTrack0$A = ($index, $item) => $item.area;
26729
26729
  function KeyStrengthsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
26730
26730
  i0.ɵɵelementStart(0, "div", 1);
26731
26731
  i0.ɵɵelement(1, "symphiq-icon", 3);
@@ -26794,7 +26794,7 @@ function KeyStrengthsListModalContentComponent_Conditional_2_For_2_Template(rf,
26794
26794
  } }
26795
26795
  function KeyStrengthsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
26796
26796
  i0.ɵɵelementStart(0, "div", 2);
26797
- i0.ɵɵrepeaterCreate(1, KeyStrengthsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$z);
26797
+ i0.ɵɵrepeaterCreate(1, KeyStrengthsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$A);
26798
26798
  i0.ɵɵelementEnd();
26799
26799
  } if (rf & 2) {
26800
26800
  const ctx_r0 = i0.ɵɵnextContext();
@@ -26958,7 +26958,7 @@ const _c0$U = a0 => ({ name: "shield-check", source: a0 });
26958
26958
  const _c1$y = a0 => ({ name: "exclamation-triangle", source: a0 });
26959
26959
  const _c2$n = a0 => ({ name: "document-text", source: a0 });
26960
26960
  const _c3$h = a0 => ({ name: "chevron-right", source: a0 });
26961
- const _forTrack0$y = ($index, $item) => $item.area;
26961
+ const _forTrack0$z = ($index, $item) => $item.area;
26962
26962
  function CriticalGapsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
26963
26963
  i0.ɵɵelementStart(0, "div", 1);
26964
26964
  i0.ɵɵelement(1, "symphiq-icon", 3);
@@ -27043,7 +27043,7 @@ function CriticalGapsListModalContentComponent_Conditional_2_For_2_Template(rf,
27043
27043
  } }
27044
27044
  function CriticalGapsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
27045
27045
  i0.ɵɵelementStart(0, "div", 2);
27046
- i0.ɵɵrepeaterCreate(1, CriticalGapsListModalContentComponent_Conditional_2_For_2_Template, 23, 25, "button", 6, _forTrack0$y);
27046
+ i0.ɵɵrepeaterCreate(1, CriticalGapsListModalContentComponent_Conditional_2_For_2_Template, 23, 25, "button", 6, _forTrack0$z);
27047
27047
  i0.ɵɵelementEnd();
27048
27048
  } if (rf & 2) {
27049
27049
  const ctx_r0 = i0.ɵɵnextContext();
@@ -27272,7 +27272,7 @@ class CriticalGapsListModalContentComponent {
27272
27272
 
27273
27273
  const _c0$T = a0 => ({ name: "check-circle", source: a0 });
27274
27274
  const _c1$x = a0 => ({ name: "chat-bubble-left-right", source: a0 });
27275
- const _forTrack0$x = ($index, $item) => $item.questionId;
27275
+ const _forTrack0$y = ($index, $item) => $item.questionId;
27276
27276
  function KeyStrengthDetailModalContentComponent_Conditional_13_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
27277
27277
  i0.ɵɵelementStart(0, "div", 19)(1, "span", 20);
27278
27278
  i0.ɵɵtext(2);
@@ -27319,7 +27319,7 @@ function KeyStrengthDetailModalContentComponent_Conditional_13_Template(rf, ctx)
27319
27319
  i0.ɵɵtext(3, " Supporting Evidence ");
27320
27320
  i0.ɵɵelementEnd();
27321
27321
  i0.ɵɵelementStart(4, "div", 12);
27322
- i0.ɵɵrepeaterCreate(5, KeyStrengthDetailModalContentComponent_Conditional_13_For_6_Template, 9, 10, "div", 13, _forTrack0$x);
27322
+ i0.ɵɵrepeaterCreate(5, KeyStrengthDetailModalContentComponent_Conditional_13_For_6_Template, 9, 10, "div", 13, _forTrack0$y);
27323
27323
  i0.ɵɵelementEnd()();
27324
27324
  } if (rf & 2) {
27325
27325
  const ctx_r1 = i0.ɵɵnextContext();
@@ -27514,7 +27514,7 @@ class KeyStrengthDetailModalContentComponent {
27514
27514
  const _c0$S = a0 => ({ name: "exclamation-triangle", source: a0 });
27515
27515
  const _c1$w = a0 => ({ name: "document-text", source: a0 });
27516
27516
  const _c2$m = a0 => ({ name: "chat-bubble-left-right", source: a0 });
27517
- const _forTrack0$w = ($index, $item) => $item.questionId;
27517
+ const _forTrack0$x = ($index, $item) => $item.questionId;
27518
27518
  function CriticalGapDetailModalContentComponent_Conditional_20_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
27519
27519
  i0.ɵɵelementStart(0, "div", 23)(1, "p", 25);
27520
27520
  i0.ɵɵtext(2, " Gap Identified: ");
@@ -27582,7 +27582,7 @@ function CriticalGapDetailModalContentComponent_Conditional_20_Template(rf, ctx)
27582
27582
  i0.ɵɵtext(3, " Supporting Evidence ");
27583
27583
  i0.ɵɵelementEnd();
27584
27584
  i0.ɵɵelementStart(4, "div", 17);
27585
- i0.ɵɵrepeaterCreate(5, CriticalGapDetailModalContentComponent_Conditional_20_For_6_Template, 10, 11, "div", 18, _forTrack0$w);
27585
+ i0.ɵɵrepeaterCreate(5, CriticalGapDetailModalContentComponent_Conditional_20_For_6_Template, 10, 11, "div", 18, _forTrack0$x);
27586
27586
  i0.ɵɵelementEnd()();
27587
27587
  } if (rf & 2) {
27588
27588
  const ctx_r1 = i0.ɵɵnextContext();
@@ -29378,7 +29378,7 @@ const _c0$R = a0 => ({ name: "check-badge", source: a0 });
29378
29378
  const _c1$v = a0 => ({ name: "check-circle", source: a0 });
29379
29379
  const _c2$l = a0 => ({ name: "chevron-right", source: a0 });
29380
29380
  const _c3$g = a0 => ({ name: "chart-bar", source: a0 });
29381
- const _forTrack0$v = ($index, $item) => $item.capability;
29381
+ const _forTrack0$w = ($index, $item) => $item.capability;
29382
29382
  function FocusAreaStrengthsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
29383
29383
  i0.ɵɵelementStart(0, "div", 1);
29384
29384
  i0.ɵɵelement(1, "symphiq-icon", 3);
@@ -29493,7 +29493,7 @@ function FocusAreaStrengthsListModalContentComponent_Conditional_2_For_2_Templat
29493
29493
  } }
29494
29494
  function FocusAreaStrengthsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
29495
29495
  i0.ɵɵelementStart(0, "div", 2);
29496
- i0.ɵɵrepeaterCreate(1, FocusAreaStrengthsListModalContentComponent_Conditional_2_For_2_Template, 16, 18, "button", 6, _forTrack0$v);
29496
+ i0.ɵɵrepeaterCreate(1, FocusAreaStrengthsListModalContentComponent_Conditional_2_For_2_Template, 16, 18, "button", 6, _forTrack0$w);
29497
29497
  i0.ɵɵelementEnd();
29498
29498
  } if (rf & 2) {
29499
29499
  const ctx_r0 = i0.ɵɵnextContext();
@@ -29700,7 +29700,7 @@ class FocusAreaStrengthsListModalContentComponent {
29700
29700
  const _c0$Q = a0 => ({ name: "exclamation-triangle", source: a0 });
29701
29701
  const _c1$u = a0 => ({ name: "exclamation-circle", source: a0 });
29702
29702
  const _c2$k = a0 => ({ name: "chevron-right", source: a0 });
29703
- function _forTrack0$u($index, $item) { return this.getGapTitle($item); }
29703
+ function _forTrack0$v($index, $item) { return this.getGapTitle($item); }
29704
29704
  function FocusAreaGapsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
29705
29705
  i0.ɵɵelementStart(0, "div", 1);
29706
29706
  i0.ɵɵelement(1, "symphiq-icon", 3);
@@ -29817,7 +29817,7 @@ function FocusAreaGapsListModalContentComponent_Conditional_2_For_2_Template(rf,
29817
29817
  } }
29818
29818
  function FocusAreaGapsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
29819
29819
  i0.ɵɵelementStart(0, "div", 2);
29820
- i0.ɵɵrepeaterCreate(1, FocusAreaGapsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$u, true);
29820
+ i0.ɵɵrepeaterCreate(1, FocusAreaGapsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$v, true);
29821
29821
  i0.ɵɵelementEnd();
29822
29822
  } if (rf & 2) {
29823
29823
  const ctx_r0 = i0.ɵɵnextContext();
@@ -30094,7 +30094,7 @@ class FocusAreaGapsListModalContentComponent {
30094
30094
  const _c0$P = a0 => ({ name: "light-bulb", source: a0 });
30095
30095
  const _c1$t = a0 => ({ name: "chevron-right", source: a0 });
30096
30096
  const _c2$j = a0 => ({ name: "chart-bar", source: a0 });
30097
- const _forTrack0$t = ($index, $item) => $item.opportunity;
30097
+ const _forTrack0$u = ($index, $item) => $item.opportunity;
30098
30098
  function FocusAreaOpportunitiesListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
30099
30099
  i0.ɵɵelementStart(0, "div", 1);
30100
30100
  i0.ɵɵelement(1, "symphiq-icon", 3);
@@ -30185,7 +30185,7 @@ function FocusAreaOpportunitiesListModalContentComponent_Conditional_2_For_2_Tem
30185
30185
  } }
30186
30186
  function FocusAreaOpportunitiesListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
30187
30187
  i0.ɵɵelementStart(0, "div", 2);
30188
- i0.ɵɵrepeaterCreate(1, FocusAreaOpportunitiesListModalContentComponent_Conditional_2_For_2_Template, 11, 11, "button", 6, _forTrack0$t);
30188
+ i0.ɵɵrepeaterCreate(1, FocusAreaOpportunitiesListModalContentComponent_Conditional_2_For_2_Template, 11, 11, "button", 6, _forTrack0$u);
30189
30189
  i0.ɵɵelementEnd();
30190
30190
  } if (rf & 2) {
30191
30191
  const ctx_r0 = i0.ɵɵnextContext();
@@ -30362,7 +30362,7 @@ class FocusAreaOpportunitiesListModalContentComponent {
30362
30362
 
30363
30363
  const _c0$O = a0 => ({ name: "chevron-right", source: a0 });
30364
30364
  const _c1$s = a0 => ({ name: "chat-bubble-left-right", source: a0 });
30365
- const _forTrack0$s = ($index, $item) => $item.performanceItemId;
30365
+ const _forTrack0$t = ($index, $item) => $item.performanceItemId;
30366
30366
  function FocusAreaStrengthDetailModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
30367
30367
  i0.ɵɵelementStart(0, "div")(1, "p", 2);
30368
30368
  i0.ɵɵtext(2);
@@ -30432,7 +30432,7 @@ function FocusAreaStrengthDetailModalContentComponent_Conditional_4_Template(rf,
30432
30432
  i0.ɵɵtext(2);
30433
30433
  i0.ɵɵelementEnd();
30434
30434
  i0.ɵɵelementStart(3, "div", 9);
30435
- i0.ɵɵrepeaterCreate(4, FocusAreaStrengthDetailModalContentComponent_Conditional_4_For_5_Template, 4, 5, "button", 10, _forTrack0$s);
30435
+ i0.ɵɵrepeaterCreate(4, FocusAreaStrengthDetailModalContentComponent_Conditional_4_For_5_Template, 4, 5, "button", 10, _forTrack0$t);
30436
30436
  i0.ɵɵelementEnd()();
30437
30437
  } if (rf & 2) {
30438
30438
  const ctx_r0 = i0.ɵɵnextContext();
@@ -31083,7 +31083,7 @@ class FocusAreaGapDetailModalContentComponent {
31083
31083
 
31084
31084
  const _c0$M = a0 => ({ name: "chevron-right", source: a0 });
31085
31085
  const _c1$r = () => [];
31086
- const _forTrack0$r = ($index, $item) => $item.performanceItemId;
31086
+ const _forTrack0$s = ($index, $item) => $item.performanceItemId;
31087
31087
  function FocusAreaOpportunityDetailModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
31088
31088
  i0.ɵɵelementStart(0, "div")(1, "p", 2);
31089
31089
  i0.ɵɵtext(2);
@@ -31135,7 +31135,7 @@ function FocusAreaOpportunityDetailModalContentComponent_Conditional_3_Template(
31135
31135
  i0.ɵɵtext(2);
31136
31136
  i0.ɵɵelementEnd();
31137
31137
  i0.ɵɵelementStart(3, "div", 6);
31138
- i0.ɵɵrepeaterCreate(4, FocusAreaOpportunityDetailModalContentComponent_Conditional_3_For_5_Template, 4, 5, "button", 7, _forTrack0$r);
31138
+ i0.ɵɵrepeaterCreate(4, FocusAreaOpportunityDetailModalContentComponent_Conditional_3_For_5_Template, 4, 5, "button", 7, _forTrack0$s);
31139
31139
  i0.ɵɵelementEnd()();
31140
31140
  } if (rf & 2) {
31141
31141
  const ctx_r0 = i0.ɵɵnextContext();
@@ -32218,7 +32218,7 @@ class ShadowElevationDirective {
32218
32218
  selector: '[symphiqShadowElevation]',
32219
32219
  standalone: true
32220
32220
  }]
32221
- }], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ScrollDepthService }, { type: Object, decorators: [{
32221
+ }], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ScrollDepthService }, { type: undefined, decorators: [{
32222
32222
  type: Inject,
32223
32223
  args: [PLATFORM_ID]
32224
32224
  }] }], { scrollContainer: [{
@@ -36278,7 +36278,7 @@ const _c4$7 = a0 => ({ name: "academic-cap", source: a0 });
36278
36278
  const _c5$5 = a0 => ({ name: "information-circle", source: a0 });
36279
36279
  const _c6$2 = a0 => ({ name: "signal", source: a0 });
36280
36280
  const _c7$1 = a0 => ({ name: "wrench-screwdriver", source: a0 });
36281
- const _forTrack0$q = ($index, $item) => $item.name;
36281
+ const _forTrack0$r = ($index, $item) => $item.name;
36282
36282
  function ProductCategoryCardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
36283
36283
  i0.ɵɵelementStart(0, "p", 8);
36284
36284
  i0.ɵɵtext(1);
@@ -36409,7 +36409,7 @@ function ProductCategoryCardComponent_Conditional_16_Template(rf, ctx) { if (rf
36409
36409
  i0.ɵɵelementStart(6, "symphiq-visualization-container", 21);
36410
36410
  i0.ɵɵlistener("visualizationClick", function ProductCategoryCardComponent_Conditional_16_Template_symphiq_visualization_container_visualizationClick_6_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openHorizontalBarModal($event)); });
36411
36411
  i0.ɵɵelementStart(7, "div", 22);
36412
- i0.ɵɵrepeaterCreate(8, ProductCategoryCardComponent_Conditional_16_For_9_Template, 2, 5, "div", 23, _forTrack0$q);
36412
+ i0.ɵɵrepeaterCreate(8, ProductCategoryCardComponent_Conditional_16_For_9_Template, 2, 5, "div", 23, _forTrack0$r);
36413
36413
  i0.ɵɵelementEnd()()()();
36414
36414
  } if (rf & 2) {
36415
36415
  const ctx_r0 = i0.ɵɵnextContext();
@@ -41398,7 +41398,7 @@ const ProfileAnalysisModalComponent_Conditional_0_Conditional_31_Conditional_5_D
41398
41398
  const ProfileAnalysisModalComponent_Conditional_0_Conditional_31_Conditional_6_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return areaChart_component; }).then(m => m.AreaChartComponent)];
41399
41399
  const _c3$8 = a0 => ({ name: "arrow-left", source: a0 });
41400
41400
  const _c4$5 = a0 => ({ name: "chevron-right", source: a0 });
41401
- const _forTrack0$p = ($index, $item) => $item.performanceItemId || $index;
41401
+ const _forTrack0$q = ($index, $item) => $item.performanceItemId || $index;
41402
41402
  const _forTrack1$4 = ($index, $item) => $item.id || $index;
41403
41403
  function ProfileAnalysisModalComponent_Conditional_0_Conditional_10_For_5_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
41404
41404
  const _r4 = i0.ɵɵgetCurrentView();
@@ -41609,7 +41609,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_21_For_3_Templa
41609
41609
  function ProfileAnalysisModalComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
41610
41610
  i0.ɵɵelementStart(0, "div", 20);
41611
41611
  i0.ɵɵconditionalCreate(1, ProfileAnalysisModalComponent_Conditional_0_Conditional_21_Conditional_1_Template, 2, 2, "p", 52);
41612
- i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_21_For_3_Template, 13, 10, "div", 53, _forTrack0$p);
41612
+ i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_21_For_3_Template, 13, 10, "div", 53, _forTrack0$q);
41613
41613
  i0.ɵɵelementEnd();
41614
41614
  } if (rf & 2) {
41615
41615
  const data_r11 = ctx;
@@ -41689,7 +41689,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_22_For_3_Templa
41689
41689
  function ProfileAnalysisModalComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
41690
41690
  i0.ɵɵelementStart(0, "div", 20);
41691
41691
  i0.ɵɵconditionalCreate(1, ProfileAnalysisModalComponent_Conditional_0_Conditional_22_Conditional_1_Template, 2, 2, "p", 52);
41692
- i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_22_For_3_Template, 13, 10, "div", 53, _forTrack0$p);
41692
+ i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_22_For_3_Template, 13, 10, "div", 53, _forTrack0$q);
41693
41693
  i0.ɵɵelementEnd();
41694
41694
  } if (rf & 2) {
41695
41695
  const data_r14 = ctx;
@@ -41808,7 +41808,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_
41808
41808
  i0.ɵɵelementStart(0, "div", 69)(1, "h3", 70);
41809
41809
  i0.ɵɵtext(2, " Directly Affected Metric ");
41810
41810
  i0.ɵɵelementEnd();
41811
- i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_0_For_4_Template, 1, 1, null, null, _forTrack0$p);
41811
+ i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_0_For_4_Template, 1, 1, null, null, _forTrack0$q);
41812
41812
  i0.ɵɵelementEnd();
41813
41813
  } if (rf & 2) {
41814
41814
  const data_r32 = i0.ɵɵnextContext(2);
@@ -41842,7 +41842,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_
41842
41842
  i0.ɵɵelementStart(0, "div", 69)(1, "h3", 70);
41843
41843
  i0.ɵɵtext(2, " Indirectly Affected Metrics ");
41844
41844
  i0.ɵɵelementEnd();
41845
- i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_1_For_4_Template, 1, 1, null, null, _forTrack0$p);
41845
+ i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_1_For_4_Template, 1, 1, null, null, _forTrack0$q);
41846
41846
  i0.ɵɵelementEnd();
41847
41847
  } if (rf & 2) {
41848
41848
  const data_r32 = i0.ɵɵnextContext(2);
@@ -41874,7 +41874,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_
41874
41874
  i0.ɵɵproperty("metric", metric_r38)("isLightMode", ctx_r1.isLightMode())("animationKey", $index_r39);
41875
41875
  } }
41876
41876
  function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_2_Template(rf, ctx) { if (rf & 1) {
41877
- i0.ɵɵrepeaterCreate(0, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_2_For_1_Template, 2, 3, "div", null, _forTrack0$p);
41877
+ i0.ɵɵrepeaterCreate(0, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_2_For_1_Template, 2, 3, "div", null, _forTrack0$q);
41878
41878
  } if (rf & 2) {
41879
41879
  const data_r32 = i0.ɵɵnextContext();
41880
41880
  i0.ɵɵrepeater(data_r32.metrics);
@@ -44528,7 +44528,7 @@ const _c0$w = a0 => ({ name: "list-bullet", source: a0 });
44528
44528
  const _c1$e = a0 => ({ name: "arrow-right", source: a0 });
44529
44529
  const _c2$9 = a0 => ({ name: "check-circle", source: a0 });
44530
44530
  const _c3$6 = a0 => ({ name: "exclamation-circle", source: a0 });
44531
- const _forTrack0$o = ($index, $item) => $item.order;
44531
+ const _forTrack0$p = ($index, $item) => $item.order;
44532
44532
  function RecommendationActionStepsModalComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
44533
44533
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 5);
44534
44534
  i0.ɵɵelement(2, "symphiq-icon", 6);
@@ -44682,7 +44682,7 @@ class RecommendationActionStepsModalComponent {
44682
44682
  i0.ɵɵelementStart(0, "div", 0);
44683
44683
  i0.ɵɵconditionalCreate(1, RecommendationActionStepsModalComponent_Conditional_1_Template, 8, 7, "div", 1);
44684
44684
  i0.ɵɵelementStart(2, "div", 2);
44685
- i0.ɵɵrepeaterCreate(3, RecommendationActionStepsModalComponent_For_4_Template, 13, 11, "div", 3, _forTrack0$o);
44685
+ i0.ɵɵrepeaterCreate(3, RecommendationActionStepsModalComponent_For_4_Template, 13, 11, "div", 3, _forTrack0$p);
44686
44686
  i0.ɵɵelementEnd();
44687
44687
  i0.ɵɵconditionalCreate(5, RecommendationActionStepsModalComponent_Conditional_5_Template, 4, 5, "div", 4);
44688
44688
  i0.ɵɵelementEnd();
@@ -45478,7 +45478,7 @@ const _c2$8 = () => [1, 2, 3, 4, 5, 6];
45478
45478
  const _c3$5 = () => [1, 2, 3];
45479
45479
  const _c4$3 = () => [1, 2, 3, 4];
45480
45480
  const _c5$2 = () => [1, 2];
45481
- const _forTrack0$n = ($index, $item) => $item.value;
45481
+ const _forTrack0$o = ($index, $item) => $item.value;
45482
45482
  function SymphiqFunnelAnalysisDashboardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
45483
45483
  i0.ɵɵelement(0, "div", 11);
45484
45484
  } }
@@ -45517,7 +45517,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template(rf, ctx
45517
45517
  i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_div_click_3_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_div_mousedown_3_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_div_pointerdown_3_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); });
45518
45518
  i0.ɵɵelementStart(4, "select", 48);
45519
45519
  i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeSectionFilter($event)); });
45520
- i0.ɵɵrepeaterCreate(5, SymphiqFunnelAnalysisDashboardComponent_Conditional_25_For_6_Template, 2, 2, "option", 49, _forTrack0$n);
45520
+ i0.ɵɵrepeaterCreate(5, SymphiqFunnelAnalysisDashboardComponent_Conditional_25_For_6_Template, 2, 2, "option", 49, _forTrack0$o);
45521
45521
  i0.ɵɵelementEnd()()();
45522
45522
  } if (rf & 2) {
45523
45523
  const ctx_r2 = i0.ɵɵnextContext();
@@ -45597,7 +45597,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template(rf, ctx
45597
45597
  i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); });
45598
45598
  i0.ɵɵelementStart(1, "select", 54);
45599
45599
  i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeSectionFilter($event)); });
45600
- i0.ɵɵrepeaterCreate(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_46_For_3_Template, 2, 2, "option", 49, _forTrack0$n);
45600
+ i0.ɵɵrepeaterCreate(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_46_For_3_Template, 2, 2, "option", 49, _forTrack0$o);
45601
45601
  i0.ɵɵelementEnd()();
45602
45602
  } if (rf & 2) {
45603
45603
  const ctx_r2 = i0.ɵɵnextContext();
@@ -46343,7 +46343,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Te
46343
46343
  i0.ɵɵconditionalCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Conditional_14_Template, 2, 0, "div", 122);
46344
46344
  i0.ɵɵelementStart(15, "select", 123);
46345
46345
  i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Template_select_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeCategoryFilter($event)); });
46346
- i0.ɵɵrepeaterCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_17_Template, 2, 1, null, null, _forTrack0$n);
46346
+ i0.ɵɵrepeaterCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_17_Template, 2, 1, null, null, _forTrack0$o);
46347
46347
  i0.ɵɵelementEnd();
46348
46348
  i0.ɵɵelementStart(18, "button", 124);
46349
46349
  i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleSortOrder()); });
@@ -46357,7 +46357,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Te
46357
46357
  i0.ɵɵtext(23, "Sort");
46358
46358
  i0.ɵɵelementEnd()()()();
46359
46359
  i0.ɵɵelementStart(24, "div", 127)(25, "div", 128);
46360
- i0.ɵɵrepeaterCreate(26, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_27_Template, 1, 1, null, null, _forTrack0$n);
46360
+ i0.ɵɵrepeaterCreate(26, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_27_Template, 1, 1, null, null, _forTrack0$o);
46361
46361
  i0.ɵɵelementEnd()()();
46362
46362
  i0.ɵɵconditionalCreate(28, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Conditional_28_Template, 3, 1, "div", 129)(29, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Conditional_29_Template, 4, 5, "div", 130);
46363
46363
  i0.ɵɵelementEnd()();
@@ -46534,7 +46534,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Te
46534
46534
  i0.ɵɵconditionalCreate(12, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Conditional_12_Template, 2, 0, "div", 122);
46535
46535
  i0.ɵɵelementStart(13, "select", 164);
46536
46536
  i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Template_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeBreakdownFilter($event)); });
46537
- i0.ɵɵrepeaterCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_For_15_Template, 2, 1, null, null, _forTrack0$n);
46537
+ i0.ɵɵrepeaterCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_For_15_Template, 2, 1, null, null, _forTrack0$o);
46538
46538
  i0.ɵɵelementEnd()()();
46539
46539
  i0.ɵɵconditionalCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Conditional_16_Template, 3, 1, "div", 95)(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Conditional_17_Template, 4, 5, "div", 165);
46540
46540
  i0.ɵɵelementEnd()();
@@ -46645,7 +46645,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Te
46645
46645
  i0.ɵɵconditionalCreate(13, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Conditional_13_Template, 2, 0, "div", 122);
46646
46646
  i0.ɵɵelementStart(14, "select", 123);
46647
46647
  i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Template_select_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeCompetitiveFilter($event)); });
46648
- i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_For_16_Template, 2, 1, null, null, _forTrack0$n);
46648
+ i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_For_16_Template, 2, 1, null, null, _forTrack0$o);
46649
46649
  i0.ɵɵelementEnd()()();
46650
46650
  i0.ɵɵconditionalCreate(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Conditional_17_Template, 6, 5, "div", 95)(18, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Conditional_18_Template, 1, 6, "symphiq-competitive-intelligence-view", 92);
46651
46651
  i0.ɵɵelementEnd()();
@@ -47226,7 +47226,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
47226
47226
  // Get the scrollable element once for all features
47227
47227
  // Priority 1: Use the scrollElement passed directly from parent (preferred method)
47228
47228
  // Priority 2: Fall back to querying by scrollContainerId (legacy method)
47229
- let scrollElement = this.scrollElement() || null;
47229
+ const scrollElement = this.scrollElement() || null;
47230
47230
  let elementSource = 'none';
47231
47231
  if (scrollElement) {
47232
47232
  elementSource = 'passed-from-parent';
@@ -49212,7 +49212,7 @@ function getTrendClasses(trendPercent, viewMode) {
49212
49212
  }
49213
49213
  }
49214
49214
 
49215
- const _forTrack0$m = ($index, $item) => $item.performanceItemId;
49215
+ const _forTrack0$n = ($index, $item) => $item.performanceItemId;
49216
49216
  function SymphiqFunnelAnalysisPreviewComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
49217
49217
  i0.ɵɵelementStart(0, "div", 17)(1, "p", 18);
49218
49218
  i0.ɵɵtext(2);
@@ -49831,7 +49831,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
49831
49831
  i0.ɵɵconditionalCreate(12, SymphiqFunnelAnalysisPreviewComponent_Conditional_12_Template, 3, 7, "div", 9);
49832
49832
  i0.ɵɵconditionalCreate(13, SymphiqFunnelAnalysisPreviewComponent_Conditional_13_Template, 18, 23, "div", 10);
49833
49833
  i0.ɵɵelementStart(14, "div", 11);
49834
- i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisPreviewComponent_For_16_Template, 10, 17, "div", 12, _forTrack0$m);
49834
+ i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisPreviewComponent_For_16_Template, 10, 17, "div", 12, _forTrack0$n);
49835
49835
  i0.ɵɵelementEnd();
49836
49836
  i0.ɵɵconditionalCreate(17, SymphiqFunnelAnalysisPreviewComponent_Conditional_17_Template, 9, 11, "div", 9);
49837
49837
  i0.ɵɵconditionalCreate(18, SymphiqFunnelAnalysisPreviewComponent_Conditional_18_Template, 14, 19, "div", 9);
@@ -50074,7 +50074,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
50074
50074
  }], () => [], { analysisInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], onViewAnalysis: [{ type: i0.Output, args: ["onViewAnalysis"] }] }); })();
50075
50075
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisPreviewComponent, { className: "SymphiqFunnelAnalysisPreviewComponent", filePath: "lib/components/funnel-analysis-preview/symphiq-funnel-analysis-preview.component.ts", lineNumber: 228 }); })();
50076
50076
 
50077
- const _forTrack0$l = ($index, $item) => $item.id;
50077
+ const _forTrack0$m = ($index, $item) => $item.id;
50078
50078
  function SymphiqWelcomeDashboardComponent_For_65_Template(rf, ctx) { if (rf & 1) {
50079
50079
  i0.ɵɵelementStart(0, "div", 31)(1, "div", 36)(2, "div", 37)(3, "span", 38);
50080
50080
  i0.ɵɵtext(4);
@@ -50369,7 +50369,7 @@ class SymphiqWelcomeDashboardComponent {
50369
50369
  i0.ɵɵtext(62, " Your Onboarding Journey ");
50370
50370
  i0.ɵɵelementEnd();
50371
50371
  i0.ɵɵelementStart(63, "div", 30);
50372
- i0.ɵɵrepeaterCreate(64, SymphiqWelcomeDashboardComponent_For_65_Template, 9, 3, "div", 31, _forTrack0$l);
50372
+ i0.ɵɵrepeaterCreate(64, SymphiqWelcomeDashboardComponent_For_65_Template, 9, 3, "div", 31, _forTrack0$m);
50373
50373
  i0.ɵɵelementEnd()()();
50374
50374
  i0.ɵɵelementStart(66, "div", 32);
50375
50375
  i0.ɵɵnamespaceSVG();
@@ -51408,7 +51408,7 @@ class FocusAreaToolsModalComponent {
51408
51408
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaToolsModalComponent, { className: "FocusAreaToolsModalComponent", filePath: "lib/components/create-account-dashboard/focus-area-tools-modal.component.ts", lineNumber: 149 }); })();
51409
51409
 
51410
51410
  const _c0$t = ["shopNameInput"];
51411
- const _forTrack0$k = ($index, $item) => $item.focusAreaDomain;
51411
+ const _forTrack0$l = ($index, $item) => $item.focusAreaDomain;
51412
51412
  function SymphiqCreateAccountDashboardComponent_Conditional_23_Conditional_27_Template(rf, ctx) { if (rf & 1) {
51413
51413
  i0.ɵɵtext(0, " Shopify ");
51414
51414
  } }
@@ -51735,7 +51735,7 @@ function SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_12_Te
51735
51735
  i0.ɵɵtext(3);
51736
51736
  i0.ɵɵelementEnd();
51737
51737
  i0.ɵɵelementStart(4, "div", 55);
51738
- i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_12_For_6_Template, 7, 5, "div", 56, _forTrack0$k);
51738
+ i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_12_For_6_Template, 7, 5, "div", 56, _forTrack0$l);
51739
51739
  i0.ɵɵelementEnd()();
51740
51740
  } if (rf & 2) {
51741
51741
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -51765,7 +51765,7 @@ function SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_13_Te
51765
51765
  i0.ɵɵtext(3);
51766
51766
  i0.ɵɵelementEnd();
51767
51767
  i0.ɵɵelementStart(4, "div", 65);
51768
- i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_13_For_6_Template, 3, 3, "div", 66, _forTrack0$k);
51768
+ i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_13_For_6_Template, 3, 3, "div", 66, _forTrack0$l);
51769
51769
  i0.ɵɵelementEnd()();
51770
51770
  } if (rf & 2) {
51771
51771
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -51795,7 +51795,7 @@ function SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_14_Te
51795
51795
  i0.ɵɵtext(3);
51796
51796
  i0.ɵɵelementEnd();
51797
51797
  i0.ɵɵelementStart(4, "div", 68);
51798
- i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_14_For_6_Template, 3, 3, "div", 69, _forTrack0$k);
51798
+ i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_14_For_6_Template, 3, 3, "div", 69, _forTrack0$l);
51799
51799
  i0.ɵɵelementEnd()();
51800
51800
  } if (rf & 2) {
51801
51801
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -53183,7 +53183,7 @@ class SymphiqCreateAccountDashboardComponent {
53183
53183
  }] }); })();
53184
53184
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqCreateAccountDashboardComponent, { className: "SymphiqCreateAccountDashboardComponent", filePath: "lib/components/create-account-dashboard/symphiq-create-account-dashboard.component.ts", lineNumber: 625 }); })();
53185
53185
 
53186
- const _forTrack0$j = ($index, $item) => $item.id;
53186
+ const _forTrack0$k = ($index, $item) => $item.id;
53187
53187
  function SymphiqConnectGaDashboardComponent_Conditional_21_Conditional_9_Template(rf, ctx) { if (rf & 1) {
53188
53188
  i0.ɵɵtext(0, " Change Google Account ");
53189
53189
  } }
@@ -53390,7 +53390,7 @@ function SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_For_2_
53390
53390
  } }
53391
53391
  function SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_Template(rf, ctx) { if (rf & 1) {
53392
53392
  i0.ɵɵelementStart(0, "div", 50);
53393
- i0.ɵɵrepeaterCreate(1, SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_For_2_Template, 11, 8, "label", 52, _forTrack0$j);
53393
+ i0.ɵɵrepeaterCreate(1, SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_For_2_Template, 11, 8, "label", 52, _forTrack0$k);
53394
53394
  i0.ɵɵelementEnd();
53395
53395
  } if (rf & 2) {
53396
53396
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -55120,7 +55120,7 @@ class TargetChangeBadgeComponent {
55120
55120
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], percentageChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "percentageChange", required: false }] }], metric: [{ type: i0.Input, args: [{ isSignal: true, alias: "metric", required: false }] }], priorYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "priorYear", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }] }); })();
55121
55121
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TargetChangeBadgeComponent, { className: "TargetChangeBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/target-change-badge.component.ts", lineNumber: 23 }); })();
55122
55122
 
55123
- const _forTrack0$i = ($index, $item) => $item.stageMetric.metric;
55123
+ const _forTrack0$j = ($index, $item) => $item.stageMetric.metric;
55124
55124
  const _forTrack1$3 = ($index, $item) => $item.calc.metric;
55125
55125
  function FunnelMetricsVisualizationComponent_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
55126
55126
  i0.ɵɵelementStart(0, "button", 7);
@@ -55531,7 +55531,7 @@ class FunnelMetricsVisualizationComponent {
55531
55531
  i0.ɵɵelementStart(0, "div", 0);
55532
55532
  i0.ɵɵelement(1, "symphiq-tooltip-container");
55533
55533
  i0.ɵɵelementStart(2, "div", 1);
55534
- i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 29, 20, "div", 2, _forTrack0$i);
55534
+ i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 29, 20, "div", 2, _forTrack0$j);
55535
55535
  i0.ɵɵelementEnd()();
55536
55536
  } if (rf & 2) {
55537
55537
  i0.ɵɵadvance(3);
@@ -56553,7 +56553,1519 @@ var areaChart_component = /*#__PURE__*/Object.freeze({
56553
56553
  AreaChartComponent: AreaChartComponent
56554
56554
  });
56555
56555
 
56556
- const _c0$r = ["absoluteInputRef"];
56556
+ const _c0$r = ["chartdiv"];
56557
+ class LineChartComponent {
56558
+ constructor() {
56559
+ this.chart = input({}, ...(ngDevMode ? [{ debugName: "chart" }] : []));
56560
+ this.showAxisLabels = input(false, ...(ngDevMode ? [{ debugName: "showAxisLabels" }] : []));
56561
+ this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
56562
+ this.currencySymbol = input('$', ...(ngDevMode ? [{ debugName: "currencySymbol" }] : []));
56563
+ // Memoized computed signals to avoid recalculation on every change detection
56564
+ this.chartHeight = computed(() => this.showAxisLabels() ? '500px' : '133px', ...(ngDevMode ? [{ debugName: "chartHeight" }] : []));
56565
+ this.cursorColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x94a3b8, ...(ngDevMode ? [{ debugName: "cursorColor" }] : []));
56566
+ this.tooltipTextColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x000000, ...(ngDevMode ? [{ debugName: "tooltipTextColor" }] : []));
56567
+ this.chartHash = computed(() => this.generateChartHash(this.chart()), ...(ngDevMode ? [{ debugName: "chartHash" }] : []));
56568
+ this.lastChartHash = '';
56569
+ this.chartNeedsRender = false;
56570
+ this.isVisible = false;
56571
+ this.animationsEnabled = false;
56572
+ // Monitor for actual data changes using memoized hash
56573
+ effect(() => {
56574
+ const newHash = this.chartHash();
56575
+ if (newHash !== this.lastChartHash) {
56576
+ this.lastChartHash = newHash;
56577
+ this.chartNeedsRender = true;
56578
+ }
56579
+ });
56580
+ }
56581
+ ngOnInit() {
56582
+ }
56583
+ /**
56584
+ * Generate a hash of the chart data to detect actual changes
56585
+ * This prevents unnecessary re-renders when data hasn't truly changed
56586
+ */
56587
+ generateChartHash(chart) {
56588
+ const data = chart.lineChartData;
56589
+ if (!data)
56590
+ return 'empty';
56591
+ const seriesCount = data.series?.length ?? 0;
56592
+ const dataPoints = data.series?.reduce((sum, s) => sum + (s.data?.length ?? 0), 0) ?? 0;
56593
+ return `${chart.title}-${seriesCount}-${dataPoints}-${chart.lineChartUseCase}`;
56594
+ }
56595
+ ngAfterViewInit() {
56596
+ this.setupIntersectionObserver();
56597
+ this.setupResizeObserver();
56598
+ }
56599
+ ngOnDestroy() {
56600
+ this.cleanupIntersectionObserver();
56601
+ this.cleanupResizeObserver();
56602
+ if (this.chartElement) {
56603
+ this.chartElement.series.clear();
56604
+ this.chartElement.xAxes.clear();
56605
+ this.chartElement.yAxes.clear();
56606
+ }
56607
+ if (this.root) {
56608
+ this.root.dispose();
56609
+ }
56610
+ this.chartElement = undefined;
56611
+ this.root = undefined;
56612
+ }
56613
+ setupResizeObserver() {
56614
+ if (!this.chartDiv?.nativeElement || typeof ResizeObserver === 'undefined') {
56615
+ return;
56616
+ }
56617
+ this.resizeObserver = new ResizeObserver(() => {
56618
+ if (this.resizeTimeout) {
56619
+ clearTimeout(this.resizeTimeout);
56620
+ }
56621
+ this.resizeTimeout = window.setTimeout(() => {
56622
+ // AmCharts handles resize automatically, but we debounce to prevent
56623
+ // excessive Angular change detection cycles during window resize
56624
+ if (this.root && !this.root.isDisposed()) {
56625
+ // Force a single layout recalculation after resize settles
56626
+ this.root.resize();
56627
+ }
56628
+ }, 150);
56629
+ });
56630
+ this.resizeObserver.observe(this.chartDiv.nativeElement);
56631
+ }
56632
+ cleanupResizeObserver() {
56633
+ if (this.resizeTimeout) {
56634
+ clearTimeout(this.resizeTimeout);
56635
+ this.resizeTimeout = undefined;
56636
+ }
56637
+ if (this.resizeObserver) {
56638
+ this.resizeObserver.disconnect();
56639
+ this.resizeObserver = undefined;
56640
+ }
56641
+ }
56642
+ setupIntersectionObserver() {
56643
+ if (!this.chartDiv?.nativeElement || typeof IntersectionObserver === 'undefined') {
56644
+ // Fallback: render immediately if IntersectionObserver not supported
56645
+ this.isVisible = true;
56646
+ this.animationsEnabled = true;
56647
+ if (this.chartNeedsRender || !this.root) {
56648
+ this.createChart();
56649
+ this.chartNeedsRender = false;
56650
+ }
56651
+ return;
56652
+ }
56653
+ // Use IntersectionObserver to detect when chart enters viewport
56654
+ this.intersectionObserver = new IntersectionObserver((entries) => {
56655
+ entries.forEach((entry) => {
56656
+ if (entry.isIntersecting && !this.isVisible) {
56657
+ this.isVisible = true;
56658
+ // Create chart without animations initially for faster rendering
56659
+ if (this.chartNeedsRender || !this.root) {
56660
+ this.createChart();
56661
+ this.chartNeedsRender = false;
56662
+ }
56663
+ // Enable animations after initial render completes
56664
+ setTimeout(() => {
56665
+ this.animationsEnabled = true;
56666
+ }, 100);
56667
+ // Stop observing once visible (one-time initialization)
56668
+ this.intersectionObserver?.disconnect();
56669
+ }
56670
+ });
56671
+ }, {
56672
+ // Trigger when 10% of the chart is visible
56673
+ threshold: 0.1,
56674
+ // Start observing slightly before element enters viewport
56675
+ rootMargin: '50px'
56676
+ });
56677
+ this.intersectionObserver.observe(this.chartDiv.nativeElement);
56678
+ }
56679
+ cleanupIntersectionObserver() {
56680
+ if (this.intersectionObserver) {
56681
+ this.intersectionObserver.disconnect();
56682
+ this.intersectionObserver = undefined;
56683
+ }
56684
+ }
56685
+ /**
56686
+ * Create chart with early exit optimization
56687
+ * Prevents unnecessary re-initialization if no data changes detected
56688
+ */
56689
+ formatValue(value, valueFormat) {
56690
+ const formattedNumber = value.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
56691
+ if (valueFormat === 'CURRENCY') {
56692
+ return `${this.currencySymbol()}${formattedNumber}`;
56693
+ }
56694
+ else if (valueFormat === 'PERCENTAGE') {
56695
+ return `${formattedNumber}%`;
56696
+ }
56697
+ return formattedNumber;
56698
+ }
56699
+ isPriorYearSeries(seriesData) {
56700
+ if (!seriesData || !seriesData.name) {
56701
+ return false;
56702
+ }
56703
+ // Check if series name indicates it's a prior year series
56704
+ const name = seriesData.name.toLowerCase();
56705
+ const currentYear = new Date().getFullYear();
56706
+ // Check for explicit keywords
56707
+ if (name.includes('last year') ||
56708
+ name.includes('prior year') ||
56709
+ name.includes('previous year')) {
56710
+ return true;
56711
+ }
56712
+ // Check for year patterns - extract any 4-digit year and compare to current year
56713
+ const yearMatch = seriesData.name.match(/\b(20\d{2})\b/);
56714
+ if (yearMatch) {
56715
+ const year = parseInt(yearMatch[1], 10);
56716
+ return year < currentYear;
56717
+ }
56718
+ return false;
56719
+ }
56720
+ extractMetricName(seriesName) {
56721
+ // Extract metric name from series name by removing year patterns
56722
+ // e.g., "Purchase Revenue (2025)" -> "Purchase Revenue"
56723
+ // "Revenue 2024" -> "Revenue"
56724
+ // "Sessions (2024)" -> "Sessions"
56725
+ if (!seriesName)
56726
+ return '';
56727
+ return seriesName.replace(/\s*\(?\s*20\d{2}\s*\)?/g, '').trim();
56728
+ }
56729
+ createChart() {
56730
+ const chartData = this.chart().lineChartData;
56731
+ if (!chartData || !this.chartDiv)
56732
+ return;
56733
+ // Check if this is a YoY chart from the chart configuration
56734
+ const isYoYChart = this.chart().lineChartUseCase === LineChartUseCaseEnum.THIS_YEAR_VS_LAST_YEAR;
56735
+ this.root = Root.new(this.chartDiv.nativeElement);
56736
+ // Only enable animations if chart is visible to improve initial load performance
56737
+ if (this.animationsEnabled) {
56738
+ this.root.setThemes([am5themes_Animated.new(this.root)]);
56739
+ }
56740
+ this.chartElement = this.root.container.children.push(XYChart.new(this.root, {
56741
+ panX: false,
56742
+ panY: false,
56743
+ wheelX: 'none',
56744
+ wheelY: 'none',
56745
+ paddingLeft: 0,
56746
+ paddingRight: 0,
56747
+ paddingTop: 0,
56748
+ paddingBottom: 0,
56749
+ maxTooltipDistance: -1
56750
+ }));
56751
+ const dateAxis = this.chartElement.xAxes.push(DateAxis.new(this.root, {
56752
+ baseInterval: { timeUnit: 'month', count: 1 },
56753
+ renderer: AxisRendererX.new(this.root, {}),
56754
+ tooltip: Tooltip.new(this.root, {})
56755
+ }));
56756
+ dateAxis.get('renderer').labels.template.setAll({
56757
+ fontSize: 12,
56758
+ fill: color(0x94a3b8),
56759
+ visible: this.showAxisLabels(),
56760
+ paddingTop: 0,
56761
+ paddingBottom: 0,
56762
+ marginTop: 0,
56763
+ marginBottom: 0
56764
+ });
56765
+ // Create Y-axes based on yaxisLabels if provided
56766
+ const yaxisLabels = chartData.yaxisLabels || ['Value'];
56767
+ const yAxesMap = new Map();
56768
+ const axisColors = {};
56769
+ const axisColorPalette = [
56770
+ 0x4A90E2, // Blue
56771
+ 0x10b981, // Green
56772
+ 0xf59e0b, // Amber
56773
+ 0xef4444, // Red
56774
+ 0x8b5cf6, // Purple
56775
+ 0x06b6d4 // Cyan
56776
+ ];
56777
+ yaxisLabels.forEach((label, index) => {
56778
+ const isRightAxis = index % 2 === 1;
56779
+ const colorValue = axisColorPalette[index % axisColorPalette.length];
56780
+ axisColors[label] = colorValue;
56781
+ if (!this.chartElement || !this.root)
56782
+ return;
56783
+ const yAxis = this.chartElement.yAxes.push(ValueAxis.new(this.root, {
56784
+ renderer: AxisRendererY.new(this.root, {
56785
+ opposite: isRightAxis
56786
+ })
56787
+ }));
56788
+ // Only show axis labels when there's a single Y-axis
56789
+ if (yaxisLabels.length === 1) {
56790
+ yAxis.get('renderer').labels.template.setAll({
56791
+ fontSize: 12,
56792
+ fill: color(colorValue),
56793
+ visible: this.showAxisLabels(),
56794
+ paddingLeft: 0,
56795
+ paddingRight: 0,
56796
+ marginLeft: 0,
56797
+ marginRight: 0
56798
+ });
56799
+ // Don't show axis title/name for single Y-axis, only values
56800
+ }
56801
+ else {
56802
+ // Hide labels when multiple axes
56803
+ yAxis.get('renderer').labels.template.setAll({
56804
+ visible: false
56805
+ });
56806
+ }
56807
+ yAxesMap.set(label, yAxis);
56808
+ });
56809
+ // Create cursor for mouse tracking - use memoized cursorColor
56810
+ const cursor = XYCursor.new(this.root, {
56811
+ behavior: 'zoomX'
56812
+ });
56813
+ this.chartElement.set('cursor', cursor);
56814
+ cursor.lineY.set('visible', false);
56815
+ cursor.lineX.set('visible', true);
56816
+ cursor.lineX.set('stroke', color(this.cursorColor()));
56817
+ cursor.set('xAxis', dateAxis);
56818
+ // Create free-floating tooltip for the chart
56819
+ const tooltip = Tooltip.new(this.root, {});
56820
+ this.chartElement.plotContainer.set('tooltipPosition', 'pointer');
56821
+ this.chartElement.plotContainer.set('tooltip', tooltip);
56822
+ this.chartElement.plotContainer.set('tooltipText', '{name}'); // Enable tooltip trigger
56823
+ // Make tooltip background transparent with white border
56824
+ const tooltipBg = tooltip.get('background');
56825
+ if (tooltipBg) {
56826
+ tooltipBg.setAll({
56827
+ fill: color(0x000000),
56828
+ fillOpacity: 0,
56829
+ stroke: color(0xffffff),
56830
+ strokeOpacity: 1,
56831
+ strokeWidth: 2
56832
+ });
56833
+ }
56834
+ // Style the tooltip label - white text for dark mode, black for light mode - use memoized color
56835
+ tooltip.label.setAll({
56836
+ fontSize: 12,
56837
+ fill: color(this.tooltipTextColor()),
56838
+ paddingTop: 8,
56839
+ paddingBottom: 8,
56840
+ paddingLeft: 10,
56841
+ paddingRight: 10
56842
+ });
56843
+ // Add tooltip text adapter to format values from all series with colored dots
56844
+ tooltip.label.adapters.add('text', () => {
56845
+ let text = '';
56846
+ let count = 0;
56847
+ let monthText = '';
56848
+ this.chartElement?.series.each((series) => {
56849
+ const dataItem = series.get('tooltipDataItem');
56850
+ if (dataItem) {
56851
+ // Extract month and year from the first series that has a dataItem
56852
+ if (monthText === '') {
56853
+ const valueX = dataItem.get('valueX');
56854
+ if (valueX) {
56855
+ const date = new Date(valueX);
56856
+ const month = date.toLocaleString('default', { month: 'long', timeZone: 'UTC' });
56857
+ const year = date.toLocaleString('default', { year: 'numeric', timeZone: 'UTC' });
56858
+ monthText = `${month} ${year}`;
56859
+ }
56860
+ }
56861
+ if (count > 0)
56862
+ text += '\n';
56863
+ const name = series.get('name');
56864
+ const value = dataItem.get('valueY');
56865
+ const seriesFormat = series.get('userData')?.valueFormat;
56866
+ const formattedValue = seriesFormat === 'CURRENCY'
56867
+ ? ChartValueFormatter.formatValue(value, seriesFormat, this.currencySymbol())
56868
+ : this.formatValue(value, seriesFormat);
56869
+ // Get the series color (stroke color)
56870
+ const stroke = series.get('stroke');
56871
+ let colorHex = 'FFFFFF'; // Default white
56872
+ if (stroke) {
56873
+ colorHex = stroke.toString().substring(1).toUpperCase(); // Remove '#' and convert to uppercase
56874
+ }
56875
+ // Format with colored bullet: [color]●[/] SeriesName: Value
56876
+ text += `[fontSize: 24px][${colorHex}]●[/][/] [bold]${name}:[/] ${formattedValue}`;
56877
+ count++;
56878
+ }
56879
+ });
56880
+ // Prepend month to the text if available
56881
+ if (monthText) {
56882
+ text = `[bold]${monthText}[/]\n${text}`;
56883
+ }
56884
+ return text;
56885
+ });
56886
+ // For YoY charts, build a metric-to-color map to ensure both years of the same metric have the same color
56887
+ const metricColorMap = new Map();
56888
+ if (isYoYChart && chartData.series) {
56889
+ const uniqueMetrics = new Set();
56890
+ chartData.series.forEach(seriesData => {
56891
+ const metricName = this.extractMetricName(seriesData.name);
56892
+ uniqueMetrics.add(metricName);
56893
+ });
56894
+ let colorIndex = 0;
56895
+ uniqueMetrics.forEach(metricName => {
56896
+ metricColorMap.set(metricName, axisColorPalette[colorIndex % axisColorPalette.length]);
56897
+ colorIndex++;
56898
+ });
56899
+ }
56900
+ chartData.series?.forEach((seriesData, index) => {
56901
+ const parsedData = (seriesData.data || []).map(d => ({
56902
+ date: new Date(`${d.date}T00:00:00Z`).getTime(),
56903
+ value: d.value
56904
+ }));
56905
+ // Get the Y-axis for this series, or use the first one as default
56906
+ const yaxisLabel = seriesData.yaxisLabel || yaxisLabels[0];
56907
+ const yAxis = yAxesMap.get(yaxisLabel) || Array.from(yAxesMap.values())[0];
56908
+ // Determine series color: for YoY charts use metric-based colors, otherwise use axis-based colors
56909
+ let seriesColorValue;
56910
+ if (isYoYChart) {
56911
+ const metricName = this.extractMetricName(seriesData.name);
56912
+ seriesColorValue = metricColorMap.get(metricName) || axisColorPalette[index % axisColorPalette.length];
56913
+ }
56914
+ else {
56915
+ seriesColorValue = axisColors[yaxisLabel] || axisColorPalette[index % axisColorPalette.length];
56916
+ }
56917
+ const seriesColor = color(seriesColorValue);
56918
+ // Check if this is a prior year series for YoY charts
56919
+ const isPriorYear = isYoYChart && this.isPriorYearSeries(seriesData);
56920
+ if (!this.chartElement || !this.root)
56921
+ return;
56922
+ const series = this.chartElement.series.push(LineSeries.new(this.root, {
56923
+ name: seriesData.name,
56924
+ xAxis: dateAxis,
56925
+ yAxis: yAxis,
56926
+ valueYField: 'value',
56927
+ valueXField: 'date',
56928
+ stroke: seriesColor
56929
+ }));
56930
+ // Store valueFormat and prior year flag in userData for tooltip formatting
56931
+ series.set('userData', { valueFormat: seriesData.valueFormat, isPriorYear });
56932
+ // Disable individual series tooltips - use floating tooltip instead
56933
+ series.set('tooltip', undefined);
56934
+ // Configure stroke styling based on whether it's a prior year series
56935
+ series.strokes.template.setAll({
56936
+ strokeWidth: 2
56937
+ });
56938
+ if (isPriorYear) {
56939
+ // Apply dashed line and reduced opacity for prior year data
56940
+ series.strokes.template.setAll({
56941
+ strokeDasharray: [5, 5],
56942
+ strokeOpacity: 0.4
56943
+ });
56944
+ // Also set on each individual stroke
56945
+ series.strokes.each((stroke) => {
56946
+ stroke.set('strokeDasharray', [5, 5]);
56947
+ stroke.set('strokeOpacity', 0.4);
56948
+ });
56949
+ }
56950
+ // Add bullets with larger hit area for better hover detection
56951
+ series.bullets.push(() => {
56952
+ const bulletConfig = {
56953
+ radius: 5,
56954
+ fill: seriesColor
56955
+ };
56956
+ if (isPriorYear) {
56957
+ bulletConfig['fillOpacity'] = 0.4;
56958
+ }
56959
+ if (!this.root)
56960
+ return Bullet.new({}, { sprite: Circle.new({}, {}) });
56961
+ const circle = Circle.new(this.root, bulletConfig);
56962
+ return Bullet.new(this.root, {
56963
+ sprite: circle
56964
+ });
56965
+ });
56966
+ series.data.setAll(parsedData);
56967
+ series.appear(1000);
56968
+ });
56969
+ // Only show legend in modal view (when showAxisLabels is true)
56970
+ if (this.showAxisLabels()) {
56971
+ const legend = this.chartElement.children.push(Legend.new(this.root, {
56972
+ centerX: percent(50),
56973
+ x: percent(50)
56974
+ }));
56975
+ legend.labels.template.setAll({
56976
+ fontSize: 12,
56977
+ fill: color(0x94a3b8)
56978
+ });
56979
+ // Reverse the series order in the legend so 2025 series appear on the right
56980
+ const reversedSeries = Array.from(this.chartElement.series.values).reverse();
56981
+ legend.data.setAll(reversedSeries);
56982
+ }
56983
+ this.chartElement.appear(1000, 100);
56984
+ }
56985
+ static { this.ɵfac = function LineChartComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LineChartComponent)(); }; }
56986
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [["symphiq-line-chart"]], viewQuery: function LineChartComponent_Query(rf, ctx) { if (rf & 1) {
56987
+ i0.ɵɵviewQuery(_c0$r, 7);
56988
+ } if (rf & 2) {
56989
+ let _t;
56990
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartDiv = _t.first);
56991
+ } }, inputs: { chart: [1, "chart"], showAxisLabels: [1, "showAxisLabels"], viewMode: [1, "viewMode"], currencySymbol: [1, "currencySymbol"] }, decls: 3, vars: 4, consts: [["chartdiv", ""], [1, "chart-container"], [1, "chart", 2, "width", "100%"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {
56992
+ i0.ɵɵdomElementStart(0, "div", 1);
56993
+ i0.ɵɵdomElement(1, "div", 2, 0);
56994
+ i0.ɵɵdomElementEnd();
56995
+ } if (rf & 2) {
56996
+ i0.ɵɵclassProp("mini-mode", !ctx.showAxisLabels());
56997
+ i0.ɵɵadvance();
56998
+ i0.ɵɵstyleProp("height", ctx.chartHeight());
56999
+ } }, styles: [".chart-container[_ngcontent-%COMP%]{width:100%;padding:1rem}.chart-container.mini-mode[_ngcontent-%COMP%]{padding:.25rem}"], changeDetection: 0 }); }
57000
+ }
57001
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LineChartComponent, [{
57002
+ type: Component,
57003
+ args: [{ selector: 'symphiq-line-chart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
57004
+ <div class="chart-container" [class.mini-mode]="!showAxisLabels()">
57005
+ <div #chartdiv class="chart" [style.height]="chartHeight()" style="width: 100%;"></div>
57006
+ </div>
57007
+ `, styles: [".chart-container{width:100%;padding:1rem}.chart-container.mini-mode{padding:.25rem}\n"] }]
57008
+ }], () => [], { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: false }] }], showAxisLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAxisLabels", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }], chartDiv: [{
57009
+ type: ViewChild,
57010
+ args: ['chartdiv', { static: true }]
57011
+ }] }); })();
57012
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LineChartComponent, { className: "LineChartComponent", filePath: "lib/components/funnel-analysis-dashboard/charts/line-chart.component.ts", lineNumber: 38 }); })();
57013
+
57014
+ var lineChart_component = /*#__PURE__*/Object.freeze({
57015
+ __proto__: null,
57016
+ LineChartComponent: LineChartComponent
57017
+ });
57018
+
57019
+ const _forTrack0$i = ($index, $item) => $item.metric;
57020
+ function MetricReportModalComponent_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
57021
+ const _r3 = i0.ɵɵgetCurrentView();
57022
+ i0.ɵɵelementStart(0, "button", 29);
57023
+ i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleDefinition()); });
57024
+ i0.ɵɵnamespaceSVG();
57025
+ i0.ɵɵelementStart(1, "svg", 30);
57026
+ i0.ɵɵelement(2, "path", 31);
57027
+ i0.ɵɵelementEnd();
57028
+ i0.ɵɵnamespaceHTML();
57029
+ i0.ɵɵelementStart(3, "span");
57030
+ i0.ɵɵtext(4);
57031
+ i0.ɵɵelementEnd();
57032
+ i0.ɵɵnamespaceSVG();
57033
+ i0.ɵɵelementStart(5, "svg", 32);
57034
+ i0.ɵɵelement(6, "path", 33);
57035
+ i0.ɵɵelementEnd()();
57036
+ } if (rf & 2) {
57037
+ const ctx_r1 = i0.ɵɵnextContext(2);
57038
+ i0.ɵɵproperty("ngClass", ctx_r1.definitionToggleClasses());
57039
+ i0.ɵɵadvance(4);
57040
+ i0.ɵɵtextInterpolate1("What is ", ctx_r1.metricTitle(), "?");
57041
+ i0.ɵɵadvance();
57042
+ i0.ɵɵclassProp("rotate-180", ctx_r1.showDefinition());
57043
+ } }
57044
+ function MetricReportModalComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
57045
+ i0.ɵɵelementStart(0, "div", 11);
57046
+ i0.ɵɵtext(1);
57047
+ i0.ɵɵelementEnd();
57048
+ } if (rf & 2) {
57049
+ let tmp_3_0;
57050
+ const ctx_r1 = i0.ɵɵnextContext(2);
57051
+ i0.ɵɵproperty("ngClass", ctx_r1.definitionBoxClasses());
57052
+ i0.ɵɵadvance();
57053
+ i0.ɵɵtextInterpolate1(" ", (tmp_3_0 = ctx_r1.metricData()) == null ? null : tmp_3_0.description, " ");
57054
+ } }
57055
+ function MetricReportModalComponent_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
57056
+ i0.ɵɵelement(0, "symphiq-target-change-badge", 20);
57057
+ } if (rf & 2) {
57058
+ let tmp_4_0;
57059
+ const ctx_r1 = i0.ɵɵnextContext(2);
57060
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", ctx_r1.ytdChangePercentage())("metric", ((tmp_4_0 = ctx_r1.metricData()) == null ? null : tmp_4_0.metric) || "")("priorYear", ctx_r1.priorYear())("isCompact", true);
57061
+ } }
57062
+ function MetricReportModalComponent_Conditional_0_Conditional_38_Template(rf, ctx) { if (rf & 1) {
57063
+ i0.ɵɵelementStart(0, "div")(1, "p", 19);
57064
+ i0.ɵɵtext(2);
57065
+ i0.ɵɵelementEnd();
57066
+ i0.ɵɵelementStart(3, "p", 9);
57067
+ i0.ɵɵtext(4);
57068
+ i0.ɵɵelementEnd();
57069
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 34);
57070
+ i0.ɵɵelementEnd();
57071
+ } if (rf & 2) {
57072
+ let tmp_5_0;
57073
+ const ctx_r1 = i0.ɵɵnextContext(2);
57074
+ i0.ɵɵadvance();
57075
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57076
+ i0.ɵɵadvance();
57077
+ i0.ɵɵtextInterpolate1(" Pace for ", ctx_r1.currentYear(), " ");
57078
+ i0.ɵɵadvance();
57079
+ i0.ɵɵproperty("ngClass", ctx_r1.projectedValueClasses());
57080
+ i0.ɵɵadvance();
57081
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.pacingInfo().projectedValue, ((tmp_5_0 = ctx_r1.metricData()) == null ? null : tmp_5_0.metric) || "", false), " ");
57082
+ i0.ɵɵadvance();
57083
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", ctx_r1.pacingInfo().pacingPercentage)("status", ctx_r1.pacingInfo().status)("showAsFullText", false)("isCompact", true)("showEmphasizedPercentage", true);
57084
+ } }
57085
+ function MetricReportModalComponent_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
57086
+ i0.ɵɵelementStart(0, "div", 22);
57087
+ i0.ɵɵelement(1, "symphiq-pacing-status-badge", 34);
57088
+ i0.ɵɵelementEnd();
57089
+ i0.ɵɵelementStart(2, "div", 22)(3, "p", 25);
57090
+ i0.ɵɵtext(4);
57091
+ i0.ɵɵelementEnd()();
57092
+ i0.ɵɵelementStart(5, "div", 35)(6, "div", 36)(7, "span");
57093
+ i0.ɵɵtext(8, "Progress to Target");
57094
+ i0.ɵɵelementEnd();
57095
+ i0.ɵɵelementStart(9, "span");
57096
+ i0.ɵɵtext(10);
57097
+ i0.ɵɵelementEnd()();
57098
+ i0.ɵɵelementStart(11, "div", 37);
57099
+ i0.ɵɵelement(12, "div", 38);
57100
+ i0.ɵɵelementEnd()();
57101
+ } if (rf & 2) {
57102
+ const ctx_r1 = i0.ɵɵnextContext(2);
57103
+ i0.ɵɵadvance();
57104
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", ctx_r1.pacingInfo().pacingPercentage)("status", ctx_r1.pacingInfo().status)("showAsFullText", true)("isCompact", false)("showEmphasizedPercentage", true);
57105
+ i0.ɵɵadvance(2);
57106
+ i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
57107
+ i0.ɵɵadvance();
57108
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.gapAnalysisText(), " ");
57109
+ i0.ɵɵadvance(2);
57110
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57111
+ i0.ɵɵadvance(4);
57112
+ i0.ɵɵtextInterpolate(ctx_r1.formatPercentage(ctx_r1.progressToTarget(), 1));
57113
+ i0.ɵɵadvance();
57114
+ i0.ɵɵproperty("ngClass", ctx_r1.progressBarBgClasses());
57115
+ i0.ɵɵadvance();
57116
+ i0.ɵɵstyleProp("width", ctx_r1.Math.min(ctx_r1.progressToTarget(), 100), "%");
57117
+ i0.ɵɵproperty("ngClass", ctx_r1.progressBarFillClasses());
57118
+ } }
57119
+ function MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
57120
+ i0.ɵɵelementStart(0, "button", 48);
57121
+ i0.ɵɵnamespaceSVG();
57122
+ i0.ɵɵelementStart(1, "svg", 54);
57123
+ i0.ɵɵelement(2, "path", 31);
57124
+ i0.ɵɵelementEnd()();
57125
+ } if (rf & 2) {
57126
+ const metric_r4 = i0.ɵɵnextContext().$implicit;
57127
+ const ctx_r1 = i0.ɵɵnextContext(3);
57128
+ i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r4.description, ctx_r1.getMetricTitle(metric_r4)));
57129
+ } }
57130
+ function MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Template(rf, ctx) { if (rf & 1) {
57131
+ i0.ɵɵelementStart(0, "tr", 44)(1, "td", 45)(2, "div", 46)(3, "span", 47);
57132
+ i0.ɵɵtext(4);
57133
+ i0.ɵɵelementEnd();
57134
+ i0.ɵɵconditionalCreate(5, MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Conditional_5_Template, 3, 2, "button", 48);
57135
+ i0.ɵɵelementEnd()();
57136
+ i0.ɵɵelementStart(6, "td", 49)(7, "span", 50);
57137
+ i0.ɵɵtext(8);
57138
+ i0.ɵɵelementEnd()();
57139
+ i0.ɵɵelementStart(9, "td", 49)(10, "div", 51)(11, "span", 47);
57140
+ i0.ɵɵtext(12);
57141
+ i0.ɵɵelementEnd();
57142
+ i0.ɵɵnamespaceSVG();
57143
+ i0.ɵɵelementStart(13, "svg", 52);
57144
+ i0.ɵɵelement(14, "path", 53);
57145
+ i0.ɵɵelementEnd()()()();
57146
+ } if (rf & 2) {
57147
+ const metric_r4 = ctx.$implicit;
57148
+ const ctx_r1 = i0.ɵɵnextContext(3);
57149
+ i0.ɵɵproperty("ngClass", ctx_r1.tableRowClasses());
57150
+ i0.ɵɵadvance(4);
57151
+ i0.ɵɵtextInterpolate(ctx_r1.getMetricTitle(metric_r4));
57152
+ i0.ɵɵadvance();
57153
+ i0.ɵɵconditional(metric_r4.description ? 5 : -1);
57154
+ i0.ɵɵadvance(2);
57155
+ i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
57156
+ i0.ɵɵadvance();
57157
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(metric_r4.targetValue, metric_r4.metric, false), " ");
57158
+ i0.ɵɵadvance(4);
57159
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatPercentage(ctx_r1.Math.abs(metric_r4.percentageIncrease), 1), " ");
57160
+ i0.ɵɵadvance(2);
57161
+ i0.ɵɵattribute("d", metric_r4.percentageIncrease >= 0 ? "M5 10l7-7m0 0l7 7m-7-7v18" : "M19 14l-7 7m0 0l-7-7m7 7V3");
57162
+ } }
57163
+ function MetricReportModalComponent_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
57164
+ i0.ɵɵelementStart(0, "div", 16)(1, "h4", 17);
57165
+ i0.ɵɵtext(2, " Contributing Metrics ");
57166
+ i0.ɵɵelementEnd();
57167
+ i0.ɵɵelementStart(3, "div", 39)(4, "table", 40)(5, "thead")(6, "tr", 41)(7, "th", 42);
57168
+ i0.ɵɵtext(8, "Metric");
57169
+ i0.ɵɵelementEnd();
57170
+ i0.ɵɵelementStart(9, "th", 43);
57171
+ i0.ɵɵtext(10, "Target");
57172
+ i0.ɵɵelementEnd();
57173
+ i0.ɵɵelementStart(11, "th", 43);
57174
+ i0.ɵɵtext(12, "Improve by");
57175
+ i0.ɵɵelementEnd()()();
57176
+ i0.ɵɵelementStart(13, "tbody");
57177
+ i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Template, 15, 7, "tr", 44, _forTrack0$i);
57178
+ i0.ɵɵelementEnd()()()();
57179
+ } if (rf & 2) {
57180
+ const ctx_r1 = i0.ɵɵnextContext(2);
57181
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
57182
+ i0.ɵɵadvance();
57183
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
57184
+ i0.ɵɵadvance(5);
57185
+ i0.ɵɵproperty("ngClass", ctx_r1.tableHeaderClasses());
57186
+ i0.ɵɵadvance(8);
57187
+ i0.ɵɵrepeater(ctx_r1.contributingMetrics());
57188
+ } }
57189
+ function MetricReportModalComponent_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
57190
+ i0.ɵɵelementStart(0, "div", 26)(1, "h4", 17);
57191
+ i0.ɵɵtext(2, " Pace ");
57192
+ i0.ɵɵelementEnd();
57193
+ i0.ɵɵelementStart(3, "div", 55);
57194
+ i0.ɵɵelement(4, "symphiq-line-chart", 56);
57195
+ i0.ɵɵelementEnd();
57196
+ i0.ɵɵelementStart(5, "p", 57);
57197
+ i0.ɵɵtext(6);
57198
+ i0.ɵɵelementEnd()();
57199
+ } if (rf & 2) {
57200
+ const ctx_r1 = i0.ɵɵnextContext(2);
57201
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
57202
+ i0.ɵɵadvance();
57203
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
57204
+ i0.ɵɵadvance(3);
57205
+ i0.ɵɵproperty("chart", ctx_r1.pacingChartData())("showAxisLabels", true)("viewMode", ctx_r1.viewMode())("currencySymbol", "$");
57206
+ i0.ɵɵadvance();
57207
+ i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
57208
+ i0.ɵɵadvance();
57209
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.chartDescriptionText(), " ");
57210
+ } }
57211
+ function MetricReportModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
57212
+ const _r1 = i0.ɵɵgetCurrentView();
57213
+ i0.ɵɵelementStart(0, "div", 1);
57214
+ i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
57215
+ i0.ɵɵelementStart(1, "div", 2);
57216
+ i0.ɵɵelement(2, "div", 3);
57217
+ i0.ɵɵelementStart(3, "span", 4);
57218
+ i0.ɵɵtext(4, "\u200B");
57219
+ i0.ɵɵelementEnd();
57220
+ i0.ɵɵelementStart(5, "div", 5);
57221
+ i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_div_click_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
57222
+ i0.ɵɵelementStart(6, "div", 6)(7, "div", 7)(8, "div", 8)(9, "h3", 9);
57223
+ i0.ɵɵtext(10);
57224
+ i0.ɵɵelementEnd();
57225
+ i0.ɵɵconditionalCreate(11, MetricReportModalComponent_Conditional_0_Conditional_11_Template, 7, 4, "button", 10);
57226
+ i0.ɵɵconditionalCreate(12, MetricReportModalComponent_Conditional_0_Conditional_12_Template, 2, 2, "div", 11);
57227
+ i0.ɵɵelementEnd();
57228
+ i0.ɵɵelementStart(13, "button", 12);
57229
+ i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
57230
+ i0.ɵɵnamespaceSVG();
57231
+ i0.ɵɵelementStart(14, "svg", 13);
57232
+ i0.ɵɵelement(15, "path", 14);
57233
+ i0.ɵɵelementEnd()()()();
57234
+ i0.ɵɵnamespaceHTML();
57235
+ i0.ɵɵelementStart(16, "div", 15);
57236
+ i0.ɵɵelement(17, "symphiq-tooltip-container");
57237
+ i0.ɵɵelementStart(18, "div", 16)(19, "h4", 17);
57238
+ i0.ɵɵtext(20, " At a Glance ");
57239
+ i0.ɵɵelementEnd();
57240
+ i0.ɵɵelementStart(21, "div", 18)(22, "div")(23, "p", 19);
57241
+ i0.ɵɵtext(24);
57242
+ i0.ɵɵelementEnd();
57243
+ i0.ɵɵelementStart(25, "p", 9);
57244
+ i0.ɵɵtext(26);
57245
+ i0.ɵɵelementEnd();
57246
+ i0.ɵɵconditionalCreate(27, MetricReportModalComponent_Conditional_0_Conditional_27_Template, 1, 5, "symphiq-target-change-badge", 20);
57247
+ i0.ɵɵelementEnd();
57248
+ i0.ɵɵelementStart(28, "div")(29, "p", 19);
57249
+ i0.ɵɵtext(30);
57250
+ i0.ɵɵelementEnd();
57251
+ i0.ɵɵelementStart(31, "p", 21);
57252
+ i0.ɵɵtext(32);
57253
+ i0.ɵɵelementEnd()();
57254
+ i0.ɵɵelementStart(33, "div")(34, "p", 19);
57255
+ i0.ɵɵtext(35);
57256
+ i0.ɵɵelementEnd();
57257
+ i0.ɵɵelementStart(36, "p", 21);
57258
+ i0.ɵɵtext(37);
57259
+ i0.ɵɵelementEnd()();
57260
+ i0.ɵɵconditionalCreate(38, MetricReportModalComponent_Conditional_0_Conditional_38_Template, 6, 10, "div");
57261
+ i0.ɵɵelementStart(39, "div")(40, "p", 19);
57262
+ i0.ɵɵtext(41);
57263
+ i0.ɵɵelementEnd();
57264
+ i0.ɵɵelementStart(42, "p", 21);
57265
+ i0.ɵɵtext(43);
57266
+ i0.ɵɵelementEnd()()()();
57267
+ i0.ɵɵelementStart(44, "div", 16)(45, "h4", 17);
57268
+ i0.ɵɵtext(46, " Target Analysis ");
57269
+ i0.ɵɵelementEnd();
57270
+ i0.ɵɵelementStart(47, "div", 22)(48, "p", 23);
57271
+ i0.ɵɵtext(49, " Your Target ");
57272
+ i0.ɵɵelementEnd();
57273
+ i0.ɵɵelementStart(50, "p", 24);
57274
+ i0.ɵɵtext(51);
57275
+ i0.ɵɵelementEnd();
57276
+ i0.ɵɵelementStart(52, "p", 25);
57277
+ i0.ɵɵtext(53);
57278
+ i0.ɵɵelementEnd()();
57279
+ i0.ɵɵconditionalCreate(54, MetricReportModalComponent_Conditional_0_Conditional_54_Template, 13, 14);
57280
+ i0.ɵɵelementEnd();
57281
+ i0.ɵɵconditionalCreate(55, MetricReportModalComponent_Conditional_0_Conditional_55_Template, 16, 3, "div", 16);
57282
+ i0.ɵɵconditionalCreate(56, MetricReportModalComponent_Conditional_0_Conditional_56_Template, 7, 8, "div", 26);
57283
+ i0.ɵɵelementEnd();
57284
+ i0.ɵɵelementStart(57, "div", 27)(58, "button", 28);
57285
+ i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_button_click_58_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
57286
+ i0.ɵɵtext(59, " Close ");
57287
+ i0.ɵɵelementEnd()()()()();
57288
+ } if (rf & 2) {
57289
+ let tmp_8_0;
57290
+ let tmp_9_0;
57291
+ let tmp_17_0;
57292
+ let tmp_22_0;
57293
+ let tmp_26_0;
57294
+ let tmp_31_0;
57295
+ let tmp_36_0;
57296
+ let tmp_38_0;
57297
+ const ctx_r1 = i0.ɵɵnextContext();
57298
+ i0.ɵɵadvance(2);
57299
+ i0.ɵɵproperty("ngClass", ctx_r1.backdropClasses())("@fadeIn", undefined);
57300
+ i0.ɵɵadvance(3);
57301
+ i0.ɵɵproperty("ngClass", ctx_r1.modalContainerClasses())("@slideUpFade", undefined);
57302
+ i0.ɵɵadvance();
57303
+ i0.ɵɵproperty("ngClass", ctx_r1.headerClasses());
57304
+ i0.ɵɵadvance(3);
57305
+ i0.ɵɵproperty("ngClass", ctx_r1.titleClasses());
57306
+ i0.ɵɵadvance();
57307
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.metricTitle(), " ");
57308
+ i0.ɵɵadvance();
57309
+ i0.ɵɵconditional(((tmp_8_0 = ctx_r1.metricData()) == null ? null : tmp_8_0.description) ? 11 : -1);
57310
+ i0.ɵɵadvance();
57311
+ i0.ɵɵconditional(ctx_r1.showDefinition() && ((tmp_9_0 = ctx_r1.metricData()) == null ? null : tmp_9_0.description) ? 12 : -1);
57312
+ i0.ɵɵadvance();
57313
+ i0.ɵɵproperty("ngClass", ctx_r1.closeButtonClasses());
57314
+ i0.ɵɵadvance(3);
57315
+ i0.ɵɵproperty("ngClass", ctx_r1.contentClasses());
57316
+ i0.ɵɵadvance(2);
57317
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
57318
+ i0.ɵɵadvance();
57319
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
57320
+ i0.ɵɵadvance(4);
57321
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57322
+ i0.ɵɵadvance();
57323
+ i0.ɵɵtextInterpolate1(" Year to Date (", ctx_r1.ytdDateRangeWithYear(), ") ");
57324
+ i0.ɵɵadvance();
57325
+ i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
57326
+ i0.ɵɵadvance();
57327
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.ytdValue(), ((tmp_17_0 = ctx_r1.metricData()) == null ? null : tmp_17_0.metric) || ""), " ");
57328
+ i0.ɵɵadvance();
57329
+ i0.ɵɵconditional(ctx_r1.ytdChangePercentage() !== null ? 27 : -1);
57330
+ i0.ɵɵadvance(2);
57331
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57332
+ i0.ɵɵadvance();
57333
+ i0.ɵɵtextInterpolate1(" Same Period Last Year (", ctx_r1.priorYearDateRange(), ") ");
57334
+ i0.ɵɵadvance();
57335
+ i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
57336
+ i0.ɵɵadvance();
57337
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.samePeriodLastYearValue(), ((tmp_22_0 = ctx_r1.metricData()) == null ? null : tmp_22_0.metric) || ""), " ");
57338
+ i0.ɵɵadvance(2);
57339
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57340
+ i0.ɵɵadvance();
57341
+ i0.ɵɵtextInterpolate1(" Full ", ctx_r1.priorYear(), " Actual ");
57342
+ i0.ɵɵadvance();
57343
+ i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
57344
+ i0.ɵɵadvance();
57345
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(((tmp_26_0 = ctx_r1.metricData()) == null ? null : tmp_26_0.currentValue) || 0, ((tmp_26_0 = ctx_r1.metricData()) == null ? null : tmp_26_0.metric) || ""), " ");
57346
+ i0.ɵɵadvance();
57347
+ i0.ɵɵconditional(ctx_r1.pacingInfo() ? 38 : -1);
57348
+ i0.ɵɵadvance(2);
57349
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57350
+ i0.ɵɵadvance();
57351
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.currentYear(), " Target ");
57352
+ i0.ɵɵadvance();
57353
+ i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
57354
+ i0.ɵɵadvance();
57355
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(((tmp_31_0 = ctx_r1.metricData()) == null ? null : tmp_31_0.targetValue) || 0, ((tmp_31_0 = ctx_r1.metricData()) == null ? null : tmp_31_0.metric) || "", false), " ");
57356
+ i0.ɵɵadvance();
57357
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
57358
+ i0.ɵɵadvance();
57359
+ i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
57360
+ i0.ɵɵadvance(3);
57361
+ i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57362
+ i0.ɵɵadvance(2);
57363
+ i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
57364
+ i0.ɵɵadvance();
57365
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(((tmp_36_0 = ctx_r1.metricData()) == null ? null : tmp_36_0.targetValue) || 0, ((tmp_36_0 = ctx_r1.metricData()) == null ? null : tmp_36_0.metric) || "", false), " ");
57366
+ i0.ɵɵadvance();
57367
+ i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
57368
+ i0.ɵɵadvance();
57369
+ i0.ɵɵtextInterpolate4(" Your target represents a ", ctx_r1.formatPercentage(ctx_r1.Math.abs(((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.percentageIncrease) || 0), 1), " ", (((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.percentageIncrease) || 0) >= 0 ? "increase" : "decrease", " from your ", ctx_r1.priorYear(), " actual of ", ctx_r1.formatMetricValue(((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.currentValue) || 0, ((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.metric) || ""), ". ");
57370
+ i0.ɵɵadvance();
57371
+ i0.ɵɵconditional(ctx_r1.pacingInfo() ? 54 : -1);
57372
+ i0.ɵɵadvance();
57373
+ i0.ɵɵconditional(ctx_r1.contributingMetrics().length > 0 ? 55 : -1);
57374
+ i0.ɵɵadvance();
57375
+ i0.ɵɵconditional(ctx_r1.pacingChartData() ? 56 : -1);
57376
+ i0.ɵɵadvance();
57377
+ i0.ɵɵproperty("ngClass", ctx_r1.footerClasses());
57378
+ i0.ɵɵadvance();
57379
+ i0.ɵɵproperty("ngClass", ctx_r1.closeFooterButtonClasses());
57380
+ } }
57381
+ class MetricReportModalComponent {
57382
+ constructor() {
57383
+ this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
57384
+ this.metricEnum = input('', ...(ngDevMode ? [{ debugName: "metricEnum" }] : []));
57385
+ this.metricData = input(undefined, ...(ngDevMode ? [{ debugName: "metricData" }] : []));
57386
+ this.contributingMetrics = input([], ...(ngDevMode ? [{ debugName: "contributingMetrics" }] : []));
57387
+ this.pacingMetrics = input(undefined, ...(ngDevMode ? [{ debugName: "pacingMetrics" }] : []));
57388
+ this.isOpen = input(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
57389
+ this.closed = output();
57390
+ this.showDefinition = signal(false, ...(ngDevMode ? [{ debugName: "showDefinition" }] : []));
57391
+ this.Math = Math;
57392
+ this.currentYear = computed(() => new Date().getFullYear(), ...(ngDevMode ? [{ debugName: "currentYear" }] : []));
57393
+ this.priorYear = computed(() => new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
57394
+ this.metricTitle = computed(() => {
57395
+ const metric = this.metricData();
57396
+ if (!metric)
57397
+ return '';
57398
+ return metric.metric
57399
+ .split('_')
57400
+ .map(word => word.charAt(0) + word.slice(1).toLowerCase())
57401
+ .join(' ');
57402
+ }, ...(ngDevMode ? [{ debugName: "metricTitle" }] : []));
57403
+ this.pacingInfo = computed(() => {
57404
+ const metric = this.metricData();
57405
+ const pacingResponse = this.pacingMetrics();
57406
+ if (!metric || !pacingResponse)
57407
+ return null;
57408
+ const projectedValue = extractProjectedValue(pacingResponse, metric.metric);
57409
+ if (projectedValue === null)
57410
+ return null;
57411
+ const increaseBad = MetricEnumUtil.increaseBad(metric.metric);
57412
+ return calculateMetricPacing(projectedValue, metric.targetValue, increaseBad);
57413
+ }, ...(ngDevMode ? [{ debugName: "pacingInfo" }] : []));
57414
+ this.ytdValue = computed(() => {
57415
+ const pacingResponse = this.pacingMetrics();
57416
+ const metric = this.metricData();
57417
+ if (!pacingResponse || !metric)
57418
+ return 0;
57419
+ const resp = pacingResponse;
57420
+ const soFarMetric = resp.soFarMetricValues?.find((m) => m.metric === metric.metric);
57421
+ if (soFarMetric?.value) {
57422
+ return parseFloat(soFarMetric.value);
57423
+ }
57424
+ return 0;
57425
+ }, ...(ngDevMode ? [{ debugName: "ytdValue" }] : []));
57426
+ this.samePeriodLastYearValue = computed(() => {
57427
+ const pacingResponse = this.pacingMetrics();
57428
+ const metric = this.metricData();
57429
+ if (!pacingResponse || !metric)
57430
+ return 0;
57431
+ const resp = pacingResponse;
57432
+ const lastYearMetric = resp.lastYearMetricValuesMonthly?.find((m) => m.metric === metric.metric);
57433
+ if (lastYearMetric?.value) {
57434
+ return parseFloat(lastYearMetric.value);
57435
+ }
57436
+ return 0;
57437
+ }, ...(ngDevMode ? [{ debugName: "samePeriodLastYearValue" }] : []));
57438
+ this.ytdChangePercentage = computed(() => {
57439
+ const current = this.ytdValue();
57440
+ const lastYear = this.samePeriodLastYearValue();
57441
+ if (lastYear === 0)
57442
+ return null;
57443
+ return ((current - lastYear) / lastYear) * 100;
57444
+ }, ...(ngDevMode ? [{ debugName: "ytdChangePercentage" }] : []));
57445
+ this.ytdDateRange = computed(() => {
57446
+ const now = new Date();
57447
+ const yesterday = new Date(now);
57448
+ yesterday.setDate(yesterday.getDate() - 1);
57449
+ const startMonth = 'Jan';
57450
+ const startDay = 1;
57451
+ const endMonth = yesterday.toLocaleDateString('en-US', { month: 'short' });
57452
+ const endDay = yesterday.getDate();
57453
+ return `${startMonth} ${startDay} - ${endMonth} ${endDay}`;
57454
+ }, ...(ngDevMode ? [{ debugName: "ytdDateRange" }] : []));
57455
+ this.ytdDateRangeWithYear = computed(() => {
57456
+ const now = new Date();
57457
+ const yesterday = new Date(now);
57458
+ yesterday.setDate(yesterday.getDate() - 1);
57459
+ const year = this.currentYear();
57460
+ return `Jan 1, ${year} - ${yesterday.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}, ${year}`;
57461
+ }, ...(ngDevMode ? [{ debugName: "ytdDateRangeWithYear" }] : []));
57462
+ this.priorYearDateRange = computed(() => {
57463
+ const now = new Date();
57464
+ const yesterday = new Date(now);
57465
+ yesterday.setDate(yesterday.getDate() - 1);
57466
+ const priorYear = this.priorYear();
57467
+ return `Jan 1, ${priorYear} - ${yesterday.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}, ${priorYear}`;
57468
+ }, ...(ngDevMode ? [{ debugName: "priorYearDateRange" }] : []));
57469
+ this.gapAnalysisText = computed(() => {
57470
+ const pacing = this.pacingInfo();
57471
+ const metric = this.metricData();
57472
+ if (!pacing || !metric)
57473
+ return '';
57474
+ const gap = Math.abs(pacing.pacingPercentage);
57475
+ const gapFormatted = formatPercentage(gap, 1);
57476
+ if (pacing.status === 'ahead') {
57477
+ return `Based on current pacing, you are on track to exceed your target by ${gapFormatted}.`;
57478
+ }
57479
+ else if (pacing.status === 'on-pace') {
57480
+ return `Based on current pacing, you are on track to meet your target.`;
57481
+ }
57482
+ else {
57483
+ return `Based on current pacing, you are pacing to fall short of your target by ${gapFormatted}.`;
57484
+ }
57485
+ }, ...(ngDevMode ? [{ debugName: "gapAnalysisText" }] : []));
57486
+ this.progressToTarget = computed(() => {
57487
+ const pacing = this.pacingInfo();
57488
+ const metric = this.metricData();
57489
+ if (!pacing || !metric)
57490
+ return 0;
57491
+ const target = metric.targetValue;
57492
+ const projected = pacing.projectedValue;
57493
+ if (target === 0)
57494
+ return 0;
57495
+ return (projected / target) * 100;
57496
+ }, ...(ngDevMode ? [{ debugName: "progressToTarget" }] : []));
57497
+ this.chartDescriptionText = computed(() => {
57498
+ const metric = this.metricTitle();
57499
+ const currentYear = this.currentYear();
57500
+ const priorYear = this.priorYear();
57501
+ return `This chart shows the ${metric} performance trend for ${currentYear} (solid line), compared to ${priorYear} (dashed line), with the target projection (dotted line) for the remainder of the year.`;
57502
+ }, ...(ngDevMode ? [{ debugName: "chartDescriptionText" }] : []));
57503
+ this.pacingChartData = computed(() => {
57504
+ const metric = this.metricData();
57505
+ if (!metric)
57506
+ return null;
57507
+ return {
57508
+ chartType: 'LINE',
57509
+ title: 'Pace',
57510
+ description: '',
57511
+ lineChartData: {
57512
+ series: [
57513
+ {
57514
+ name: `${this.currentYear()} Actual`,
57515
+ data: this.generateMockCurrentYearData()
57516
+ },
57517
+ {
57518
+ name: `${this.priorYear()} Comparison`,
57519
+ data: this.generateMockLastYearData()
57520
+ },
57521
+ {
57522
+ name: 'Target Projection',
57523
+ data: this.generateMockTargetData()
57524
+ }
57525
+ ]
57526
+ }
57527
+ };
57528
+ }, ...(ngDevMode ? [{ debugName: "pacingChartData" }] : []));
57529
+ }
57530
+ generateMockCurrentYearData() {
57531
+ const baseValue = this.metricData()?.currentValue || 1000;
57532
+ const data = [];
57533
+ const now = new Date();
57534
+ const currentMonth = now.getMonth();
57535
+ for (let i = 0; i <= currentMonth; i++) {
57536
+ const date = new Date(this.currentYear(), i, 15);
57537
+ const variance = (Math.random() - 0.5) * 0.1;
57538
+ const value = baseValue * (1 + variance) * ((i + 1) / 12);
57539
+ data.push({
57540
+ date: date.toISOString(),
57541
+ value: Math.round(value * 100) / 100
57542
+ });
57543
+ }
57544
+ return data;
57545
+ }
57546
+ generateMockLastYearData() {
57547
+ const baseValue = this.metricData()?.currentValue || 1000;
57548
+ const data = [];
57549
+ for (let i = 0; i < 12; i++) {
57550
+ const date = new Date(this.priorYear(), i, 15);
57551
+ const variance = (Math.random() - 0.5) * 0.08;
57552
+ const value = baseValue * (1 + variance) * ((i + 1) / 12);
57553
+ data.push({
57554
+ date: date.toISOString(),
57555
+ value: Math.round(value * 100) / 100
57556
+ });
57557
+ }
57558
+ return data;
57559
+ }
57560
+ generateMockTargetData() {
57561
+ const targetValue = this.metricData()?.targetValue || 1200;
57562
+ const data = [];
57563
+ const now = new Date();
57564
+ const currentMonth = now.getMonth();
57565
+ for (let i = currentMonth; i < 12; i++) {
57566
+ const date = new Date(this.currentYear(), i, 15);
57567
+ const value = targetValue * ((i + 1) / 12);
57568
+ data.push({
57569
+ date: date.toISOString(),
57570
+ value: Math.round(value * 100) / 100
57571
+ });
57572
+ }
57573
+ return data;
57574
+ }
57575
+ formatMetricValue(value, metric, fromUiData = true) {
57576
+ if (metric.includes('REVENUE')) {
57577
+ return formatCurrency(value);
57578
+ }
57579
+ const numberType = MetricEnumUtil.numberType(metric);
57580
+ if (numberType === NumberTypeEnum.PERCENTAGE) {
57581
+ const displayValue = fromUiData ? value * 100 : value;
57582
+ return formatPercentage(displayValue, 2);
57583
+ }
57584
+ return formatNumber(value);
57585
+ }
57586
+ getMetricTitle(metric) {
57587
+ return metric.metric
57588
+ .split('_')
57589
+ .map(word => word.charAt(0) + word.slice(1).toLowerCase())
57590
+ .join(' ');
57591
+ }
57592
+ formatPercentage(value, decimals) {
57593
+ return formatPercentage(value, decimals);
57594
+ }
57595
+ getMarkdownTooltipContent(markdown, title) {
57596
+ return { title, markdown };
57597
+ }
57598
+ toggleDefinition() {
57599
+ this.showDefinition.update(v => !v);
57600
+ }
57601
+ close() {
57602
+ this.closed.emit();
57603
+ }
57604
+ isLightMode() {
57605
+ return this.viewMode() === ViewModeEnum.LIGHT;
57606
+ }
57607
+ backdropClasses() {
57608
+ return this.isLightMode() ? 'bg-slate-900/60' : 'bg-slate-950/80';
57609
+ }
57610
+ modalContainerClasses() {
57611
+ return this.isLightMode()
57612
+ ? 'bg-white/90 border-slate-200/50'
57613
+ : 'bg-slate-800/90 border-slate-700/50';
57614
+ }
57615
+ headerClasses() {
57616
+ return this.isLightMode()
57617
+ ? 'bg-white/50 border-slate-200/50'
57618
+ : 'bg-slate-800/50 border-slate-700/50';
57619
+ }
57620
+ titleClasses() {
57621
+ return this.isLightMode() ? 'text-slate-900' : 'text-white';
57622
+ }
57623
+ definitionToggleClasses() {
57624
+ return this.isLightMode()
57625
+ ? 'text-blue-600 hover:text-blue-700'
57626
+ : 'text-blue-400 hover:text-blue-300';
57627
+ }
57628
+ definitionBoxClasses() {
57629
+ return this.isLightMode()
57630
+ ? 'bg-blue-50/50 border-blue-200/50 text-slate-700'
57631
+ : 'bg-blue-900/20 border-blue-700/30 text-slate-300';
57632
+ }
57633
+ closeButtonClasses() {
57634
+ return this.isLightMode()
57635
+ ? 'text-slate-600 hover:text-slate-900 hover:bg-slate-100'
57636
+ : 'text-slate-400 hover:text-white hover:bg-slate-700';
57637
+ }
57638
+ contentClasses() {
57639
+ return this.isLightMode() ? 'bg-white/30' : 'bg-slate-800/30';
57640
+ }
57641
+ sectionCardClasses() {
57642
+ return this.isLightMode()
57643
+ ? 'bg-gradient-to-br from-slate-50 via-white to-slate-50 border border-slate-200'
57644
+ : 'bg-gradient-to-br from-slate-800/40 via-slate-800/20 to-slate-800/40 border border-slate-700/50';
57645
+ }
57646
+ sectionTitleClasses() {
57647
+ return this.isLightMode() ? 'text-slate-600' : 'text-slate-400';
57648
+ }
57649
+ labelClasses() {
57650
+ return this.isLightMode() ? 'text-slate-500' : 'text-slate-400';
57651
+ }
57652
+ valueClasses() {
57653
+ return this.isLightMode() ? 'text-slate-900' : 'text-white';
57654
+ }
57655
+ targetValueClasses() {
57656
+ return this.isLightMode() ? 'text-purple-700' : 'text-purple-300';
57657
+ }
57658
+ projectedValueClasses() {
57659
+ return this.isLightMode() ? 'text-amber-700' : 'text-amber-300';
57660
+ }
57661
+ descriptionClasses() {
57662
+ return this.isLightMode() ? 'text-slate-600' : 'text-slate-300';
57663
+ }
57664
+ progressBarBgClasses() {
57665
+ return this.isLightMode() ? 'bg-slate-200' : 'bg-slate-700';
57666
+ }
57667
+ progressBarFillClasses() {
57668
+ const pacing = this.pacingInfo();
57669
+ if (!pacing)
57670
+ return 'bg-blue-500';
57671
+ if (pacing.status === 'ahead') {
57672
+ return this.isLightMode()
57673
+ ? 'bg-gradient-to-r from-emerald-500 to-emerald-600'
57674
+ : 'bg-gradient-to-r from-emerald-400 to-emerald-500';
57675
+ }
57676
+ else if (pacing.status === 'on-pace') {
57677
+ return this.isLightMode()
57678
+ ? 'bg-gradient-to-r from-amber-500 to-amber-600'
57679
+ : 'bg-gradient-to-r from-amber-400 to-amber-500';
57680
+ }
57681
+ else {
57682
+ return this.isLightMode()
57683
+ ? 'bg-gradient-to-r from-red-500 to-red-600'
57684
+ : 'bg-gradient-to-r from-red-400 to-red-500';
57685
+ }
57686
+ }
57687
+ tableHeaderClasses() {
57688
+ return this.isLightMode() ? 'text-slate-700 border-slate-200' : 'text-slate-300 border-slate-700';
57689
+ }
57690
+ tableRowClasses() {
57691
+ return this.isLightMode()
57692
+ ? 'hover:bg-slate-50 border-slate-200'
57693
+ : 'hover:bg-slate-700/30 border-slate-700/50';
57694
+ }
57695
+ infoIconClasses() {
57696
+ return this.isLightMode()
57697
+ ? 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700'
57698
+ : 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300';
57699
+ }
57700
+ footerClasses() {
57701
+ return this.isLightMode()
57702
+ ? 'bg-slate-50 border-slate-200'
57703
+ : 'bg-slate-900/50 border-slate-700';
57704
+ }
57705
+ closeFooterButtonClasses() {
57706
+ return this.isLightMode()
57707
+ ? 'bg-slate-200 hover:bg-slate-300 text-slate-900'
57708
+ : 'bg-slate-700 hover:bg-slate-600 text-white';
57709
+ }
57710
+ static { this.ɵfac = function MetricReportModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MetricReportModalComponent)(); }; }
57711
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetricReportModalComponent, selectors: [["symphiq-metric-report-modal"]], inputs: { viewMode: [1, "viewMode"], metricEnum: [1, "metricEnum"], metricData: [1, "metricData"], contributingMetrics: [1, "contributingMetrics"], pacingMetrics: [1, "pacingMetrics"], isOpen: [1, "isOpen"] }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "fixed", "inset-0", "overflow-y-auto", "z-50"], [1, "fixed", "inset-0", "overflow-y-auto", "z-50", 3, "click"], [1, "flex", "items-center", "justify-center", "min-h-screen", "px-4", "pt-4", "pb-20", "text-center", "sm:block", "sm:p-0"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-md", 3, "ngClass"], ["aria-hidden", "true", 1, "hidden", "sm:inline-block", "sm:align-middle", "sm:h-screen"], [1, "relative", "inline-block", "align-bottom", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "sm:my-8", "sm:align-middle", "sm:w-full", "sm:max-w-4xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", "sticky", "top-0", "z-10", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex-1"], [1, "text-xl", "font-bold", "mb-2", 3, "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "text-sm", "font-medium", "transition-colors", 3, "ngClass"], [1, "mt-3", "p-4", "rounded-lg", "border", "text-sm", "leading-relaxed", 3, "ngClass"], [1, "ml-4", "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-6", "max-h-[70vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [1, "rounded-xl", "p-6", "mb-6", 3, "ngClass"], [1, "text-sm", "font-semibold", "uppercase", "tracking-wider", "mb-4", 3, "ngClass"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-3xl", "font-extrabold", "mb-3", 3, "ngClass"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "rounded-xl", "p-6", 3, "ngClass"], [1, "px-6", "py-4", "border-t", 3, "ngClass"], [1, "w-full", "px-4", "py-2", "rounded-lg", "transition-all", "font-medium", "hover:scale-[1.02]", "active:scale-[0.98]", 3, "click", "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "text-sm", "font-medium", "transition-colors", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "transition-transform"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"], [1, "space-y-2"], [1, "flex", "justify-between", "text-xs", 3, "ngClass"], [1, "h-3", "rounded-full", "overflow-hidden", 3, "ngClass"], [1, "h-full", "transition-all", "duration-500", 3, "ngClass"], [1, "overflow-x-auto"], [1, "w-full"], [1, "border-b", 3, "ngClass"], [1, "text-left", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "text-right", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "border-b", "transition-colors", 3, "ngClass"], [1, "py-3", "px-4"], [1, "flex", "items-center", "gap-2"], [1, "text-sm", "font-medium"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-5", "h-5", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "py-3", "px-4", "text-right"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "justify-end", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "text-emerald-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], [1, "min-h-[400px]"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol"], [1, "text-sm", "leading-relaxed", "mt-4", 3, "ngClass"]], template: function MetricReportModalComponent_Template(rf, ctx) { if (rf & 1) {
57712
+ i0.ɵɵconditionalCreate(0, MetricReportModalComponent_Conditional_0_Template, 60, 46, "div", 0);
57713
+ } if (rf & 2) {
57714
+ i0.ɵɵconditional(ctx.isOpen() ? 0 : -1);
57715
+ } }, dependencies: [CommonModule, i1$1.NgClass, PacingStatusBadgeComponent,
57716
+ TargetChangeBadgeComponent,
57717
+ TooltipDirective,
57718
+ TooltipContainerComponent,
57719
+ LineChartComponent], encapsulation: 2, data: { animation: [
57720
+ trigger('fadeIn', [
57721
+ transition(':enter', [
57722
+ style({ opacity: 0 }),
57723
+ animate('200ms ease-out', style({ opacity: 1 }))
57724
+ ])
57725
+ ]),
57726
+ trigger('slideUpFade', [
57727
+ transition(':enter', [
57728
+ style({ opacity: 0, transform: 'translateY(30px) scale(0.95)' }),
57729
+ animate('400ms 50ms cubic-bezier(0.16, 1, 0.3, 1)', style({ opacity: 1, transform: 'translateY(0) scale(1)' }))
57730
+ ])
57731
+ ])
57732
+ ] }, changeDetection: 0 }); }
57733
+ }
57734
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetricReportModalComponent, [{
57735
+ type: Component,
57736
+ args: [{
57737
+ selector: 'symphiq-metric-report-modal',
57738
+ standalone: true,
57739
+ imports: [
57740
+ CommonModule,
57741
+ PacingStatusBadgeComponent,
57742
+ TargetChangeBadgeComponent,
57743
+ TooltipDirective,
57744
+ TooltipContainerComponent,
57745
+ LineChartComponent
57746
+ ],
57747
+ changeDetection: ChangeDetectionStrategy.OnPush,
57748
+ animations: [
57749
+ trigger('fadeIn', [
57750
+ transition(':enter', [
57751
+ style({ opacity: 0 }),
57752
+ animate('200ms ease-out', style({ opacity: 1 }))
57753
+ ])
57754
+ ]),
57755
+ trigger('slideUpFade', [
57756
+ transition(':enter', [
57757
+ style({ opacity: 0, transform: 'translateY(30px) scale(0.95)' }),
57758
+ animate('400ms 50ms cubic-bezier(0.16, 1, 0.3, 1)', style({ opacity: 1, transform: 'translateY(0) scale(1)' }))
57759
+ ])
57760
+ ])
57761
+ ],
57762
+ template: `
57763
+ @if (isOpen()) {
57764
+ <div class="fixed inset-0 overflow-y-auto z-50" (click)="close()">
57765
+ <div class="flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:block sm:p-0">
57766
+ <div
57767
+ [ngClass]="backdropClasses()"
57768
+ class="fixed inset-0 backdrop-blur-md"
57769
+ aria-hidden="true"
57770
+ @fadeIn>
57771
+ </div>
57772
+
57773
+ <span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span>
57774
+
57775
+ <div
57776
+ (click)="$event.stopPropagation()"
57777
+ [ngClass]="modalContainerClasses()"
57778
+ class="relative inline-block align-bottom rounded-2xl text-left overflow-hidden shadow-xl sm:my-8 sm:align-middle sm:w-full sm:max-w-4xl border backdrop-blur-xl"
57779
+ @slideUpFade>
57780
+
57781
+ <!-- Header -->
57782
+ <div [ngClass]="headerClasses()" class="px-6 py-5 border-b backdrop-blur-sm sticky top-0 z-10">
57783
+ <div class="flex items-start justify-between">
57784
+ <div class="flex-1">
57785
+ <h3 [ngClass]="titleClasses()" class="text-xl font-bold mb-2">
57786
+ {{ metricTitle() }}
57787
+ </h3>
57788
+ @if (metricData()?.description) {
57789
+ <button
57790
+ type="button"
57791
+ (click)="toggleDefinition()"
57792
+ [ngClass]="definitionToggleClasses()"
57793
+ class="inline-flex items-center gap-2 text-sm font-medium transition-colors">
57794
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57795
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
57796
+ </svg>
57797
+ <span>What is {{ metricTitle() }}?</span>
57798
+ <svg
57799
+ [class.rotate-180]="showDefinition()"
57800
+ class="w-4 h-4 transition-transform"
57801
+ fill="none"
57802
+ stroke="currentColor"
57803
+ viewBox="0 0 24 24">
57804
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
57805
+ </svg>
57806
+ </button>
57807
+ }
57808
+ @if (showDefinition() && metricData()?.description) {
57809
+ <div [ngClass]="definitionBoxClasses()" class="mt-3 p-4 rounded-lg border text-sm leading-relaxed">
57810
+ {{ metricData()?.description }}
57811
+ </div>
57812
+ }
57813
+ </div>
57814
+ <button
57815
+ (click)="close()"
57816
+ [ngClass]="closeButtonClasses()"
57817
+ class="ml-4 transition-all rounded-lg p-1 hover:scale-110 active:scale-90">
57818
+ <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57819
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
57820
+ </svg>
57821
+ </button>
57822
+ </div>
57823
+ </div>
57824
+
57825
+ <!-- Content -->
57826
+ <div [ngClass]="contentClasses()" class="px-6 py-6 max-h-[70vh] overflow-y-auto backdrop-blur-sm">
57827
+ <symphiq-tooltip-container />
57828
+
57829
+ <!-- At a Glance Summary -->
57830
+ <div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
57831
+ <h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
57832
+ At a Glance
57833
+ </h4>
57834
+ <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
57835
+ <!-- YTD Value -->
57836
+ <div>
57837
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
57838
+ Year to Date ({{ ytdDateRangeWithYear() }})
57839
+ </p>
57840
+ <p [ngClass]="valueClasses()" class="text-xl font-bold mb-2">
57841
+ {{ formatMetricValue(ytdValue(), metricData()?.metric || '') }}
57842
+ </p>
57843
+ @if (ytdChangePercentage() !== null) {
57844
+ <symphiq-target-change-badge
57845
+ [viewMode]="viewMode()"
57846
+ [percentageChange]="ytdChangePercentage()!"
57847
+ [metric]="metricData()?.metric || ''"
57848
+ [priorYear]="priorYear()"
57849
+ [isCompact]="true"
57850
+ />
57851
+ }
57852
+ </div>
57853
+
57854
+ <!-- Same Period Last Year -->
57855
+ <div>
57856
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
57857
+ Same Period Last Year ({{ priorYearDateRange() }})
57858
+ </p>
57859
+ <p [ngClass]="valueClasses()" class="text-xl font-bold">
57860
+ {{ formatMetricValue(samePeriodLastYearValue(), metricData()?.metric || '') }}
57861
+ </p>
57862
+ </div>
57863
+
57864
+ <!-- Full Last Year -->
57865
+ <div>
57866
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
57867
+ Full {{ priorYear() }} Actual
57868
+ </p>
57869
+ <p [ngClass]="valueClasses()" class="text-xl font-bold">
57870
+ {{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}
57871
+ </p>
57872
+ </div>
57873
+
57874
+ <!-- Current Pace -->
57875
+ @if (pacingInfo()) {
57876
+ <div>
57877
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
57878
+ Pace for {{ currentYear() }}
57879
+ </p>
57880
+ <p [ngClass]="projectedValueClasses()" class="text-xl font-bold mb-2">
57881
+ {{ formatMetricValue(pacingInfo()!.projectedValue, metricData()?.metric || '', false) }}
57882
+ </p>
57883
+ <symphiq-pacing-status-badge
57884
+ [viewMode]="viewMode()"
57885
+ [pacingPercentage]="pacingInfo()!.pacingPercentage"
57886
+ [status]="pacingInfo()!.status"
57887
+ [showAsFullText]="false"
57888
+ [isCompact]="true"
57889
+ [showEmphasizedPercentage]="true"
57890
+ />
57891
+ </div>
57892
+ }
57893
+
57894
+ <!-- Current Target -->
57895
+ <div>
57896
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
57897
+ {{ currentYear() }} Target
57898
+ </p>
57899
+ <p [ngClass]="targetValueClasses()" class="text-xl font-bold">
57900
+ {{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
57901
+ </p>
57902
+ </div>
57903
+ </div>
57904
+ </div>
57905
+
57906
+ <!-- Target Analysis -->
57907
+ <div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
57908
+ <h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
57909
+ Target Analysis
57910
+ </h4>
57911
+
57912
+ <div class="mb-4">
57913
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
57914
+ Your Target
57915
+ </p>
57916
+ <p [ngClass]="targetValueClasses()" class="text-3xl font-extrabold mb-3">
57917
+ {{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
57918
+ </p>
57919
+ <p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
57920
+ Your target represents a {{ formatPercentage(Math.abs(metricData()?.percentageIncrease || 0), 1) }}
57921
+ {{ (metricData()?.percentageIncrease || 0) >= 0 ? 'increase' : 'decrease' }}
57922
+ from your {{ priorYear() }} actual of
57923
+ {{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}.
57924
+ </p>
57925
+ </div>
57926
+
57927
+ @if (pacingInfo()) {
57928
+ <div class="mb-4">
57929
+ <symphiq-pacing-status-badge
57930
+ [viewMode]="viewMode()"
57931
+ [pacingPercentage]="pacingInfo()!.pacingPercentage"
57932
+ [status]="pacingInfo()!.status"
57933
+ [showAsFullText]="true"
57934
+ [isCompact]="false"
57935
+ [showEmphasizedPercentage]="true"
57936
+ />
57937
+ </div>
57938
+
57939
+ <div class="mb-4">
57940
+ <p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
57941
+ {{ gapAnalysisText() }}
57942
+ </p>
57943
+ </div>
57944
+
57945
+ <!-- Progress Bar -->
57946
+ <div class="space-y-2">
57947
+ <div class="flex justify-between text-xs" [ngClass]="labelClasses()">
57948
+ <span>Progress to Target</span>
57949
+ <span>{{ formatPercentage(progressToTarget(), 1) }}</span>
57950
+ </div>
57951
+ <div [ngClass]="progressBarBgClasses()" class="h-3 rounded-full overflow-hidden">
57952
+ <div
57953
+ [ngClass]="progressBarFillClasses()"
57954
+ [style.width.%]="Math.min(progressToTarget(), 100)"
57955
+ class="h-full transition-all duration-500">
57956
+ </div>
57957
+ </div>
57958
+ </div>
57959
+ }
57960
+ </div>
57961
+
57962
+ <!-- Contributing Metrics Table (only for funnel stage metrics) -->
57963
+ @if (contributingMetrics().length > 0) {
57964
+ <div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
57965
+ <h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
57966
+ Contributing Metrics
57967
+ </h4>
57968
+ <div class="overflow-x-auto">
57969
+ <table class="w-full">
57970
+ <thead>
57971
+ <tr [ngClass]="tableHeaderClasses()" class="border-b">
57972
+ <th class="text-left py-3 px-4 text-xs font-semibold uppercase tracking-wider">Metric</th>
57973
+ <th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Target</th>
57974
+ <th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Improve by</th>
57975
+ </tr>
57976
+ </thead>
57977
+ <tbody>
57978
+ @for (metric of contributingMetrics(); track metric.metric) {
57979
+ <tr [ngClass]="tableRowClasses()" class="border-b transition-colors">
57980
+ <td class="py-3 px-4">
57981
+ <div class="flex items-center gap-2">
57982
+ <span class="text-sm font-medium">{{ getMetricTitle(metric) }}</span>
57983
+ @if (metric.description) {
57984
+ <button
57985
+ type="button"
57986
+ [ngClass]="infoIconClasses()"
57987
+ class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
57988
+ [libSymphiqTooltip]="getMarkdownTooltipContent(metric.description, getMetricTitle(metric))"
57989
+ tooltipType="markdown"
57990
+ tooltipPosition="right">
57991
+ <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57992
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
57993
+ </svg>
57994
+ </button>
57995
+ }
57996
+ </div>
57997
+ </td>
57998
+ <td class="py-3 px-4 text-right">
57999
+ <span [ngClass]="targetValueClasses()" class="text-sm font-semibold">
58000
+ {{ formatMetricValue(metric.targetValue, metric.metric, false) }}
58001
+ </span>
58002
+ </td>
58003
+ <td class="py-3 px-4 text-right">
58004
+ <div class="flex items-center justify-end gap-2">
58005
+ <span class="text-sm font-medium">
58006
+ {{ formatPercentage(Math.abs(metric.percentageIncrease), 1) }}
58007
+ </span>
58008
+ <svg
58009
+ class="w-4 h-4 text-emerald-500"
58010
+ fill="none"
58011
+ stroke="currentColor"
58012
+ viewBox="0 0 24 24">
58013
+ <path
58014
+ stroke-linecap="round"
58015
+ stroke-linejoin="round"
58016
+ stroke-width="2"
58017
+ [attr.d]="metric.percentageIncrease >= 0 ? 'M5 10l7-7m0 0l7 7m-7-7v18' : 'M19 14l-7 7m0 0l-7-7m7 7V3'" />
58018
+ </svg>
58019
+ </div>
58020
+ </td>
58021
+ </tr>
58022
+ }
58023
+ </tbody>
58024
+ </table>
58025
+ </div>
58026
+ </div>
58027
+ }
58028
+
58029
+ <!-- Pacing Chart -->
58030
+ @if (pacingChartData()) {
58031
+ <div [ngClass]="sectionCardClasses()" class="rounded-xl p-6">
58032
+ <h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
58033
+ Pace
58034
+ </h4>
58035
+ <div class="min-h-[400px]">
58036
+ <symphiq-line-chart
58037
+ [chart]="pacingChartData()!"
58038
+ [showAxisLabels]="true"
58039
+ [viewMode]="viewMode()"
58040
+ [currencySymbol]="'$'"
58041
+ />
58042
+ </div>
58043
+ <p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-4">
58044
+ {{ chartDescriptionText() }}
58045
+ </p>
58046
+ </div>
58047
+ }
58048
+ </div>
58049
+
58050
+ <!-- Footer -->
58051
+ <div [ngClass]="footerClasses()" class="px-6 py-4 border-t">
58052
+ <button
58053
+ (click)="close()"
58054
+ [ngClass]="closeFooterButtonClasses()"
58055
+ class="w-full px-4 py-2 rounded-lg transition-all font-medium hover:scale-[1.02] active:scale-[0.98]">
58056
+ Close
58057
+ </button>
58058
+ </div>
58059
+ </div>
58060
+ </div>
58061
+ </div>
58062
+ }
58063
+ `
58064
+ }]
58065
+ }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], metricEnum: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricEnum", required: false }] }], metricData: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricData", required: false }] }], contributingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "contributingMetrics", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] }); })();
58066
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricReportModalComponent, { className: "MetricReportModalComponent", filePath: "lib/components/revenue-calculator-dashboard/metric-report-modal.component.ts", lineNumber: 344 }); })();
58067
+
58068
+ const _c0$q = ["absoluteInputRef"];
56557
58069
  const _c1$b = ["percentageInputRef"];
56558
58070
  function InitialTargetSettingComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
56559
58071
  i0.ɵɵtext(0);
@@ -56569,8 +58081,8 @@ function InitialTargetSettingComponent_Conditional_6_Template(rf, ctx) { if (rf
56569
58081
  } }
56570
58082
  function InitialTargetSettingComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
56571
58083
  i0.ɵɵnamespaceSVG();
56572
- i0.ɵɵelementStart(0, "svg", 33);
56573
- i0.ɵɵelement(1, "path", 34);
58084
+ i0.ɵɵelementStart(0, "svg", 34);
58085
+ i0.ɵɵelement(1, "path", 35);
56574
58086
  i0.ɵɵelementEnd();
56575
58087
  } if (rf & 2) {
56576
58088
  const ctx_r0 = i0.ɵɵnextContext();
@@ -56582,17 +58094,17 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
56582
58094
  i0.ɵɵelementStart(0, "div", 11);
56583
58095
  i0.ɵɵnamespaceSVG();
56584
58096
  i0.ɵɵelementStart(1, "svg", 12);
56585
- i0.ɵɵelement(2, "path", 35);
58097
+ i0.ɵɵelement(2, "path", 36);
56586
58098
  i0.ɵɵelementEnd();
56587
58099
  i0.ɵɵnamespaceHTML();
56588
- i0.ɵɵelementStart(3, "div")(4, "div", 36)(5, "p", 14);
58100
+ i0.ɵɵelementStart(3, "div")(4, "div", 37)(5, "p", 14);
56589
58101
  i0.ɵɵtext(6, " Current Pace Projection ");
56590
58102
  i0.ɵɵelementEnd();
56591
- i0.ɵɵelementStart(7, "button", 37);
58103
+ i0.ɵɵelementStart(7, "button", 38);
56592
58104
  i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_21_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r2); return i0.ɵɵresetView($event.stopPropagation()); });
56593
58105
  i0.ɵɵnamespaceSVG();
56594
- i0.ɵɵelementStart(8, "svg", 38);
56595
- i0.ɵɵelement(9, "path", 39);
58106
+ i0.ɵɵelementStart(8, "svg", 39);
58107
+ i0.ɵɵelement(9, "path", 40);
56596
58108
  i0.ɵɵelementEnd()()();
56597
58109
  i0.ɵɵnamespaceHTML();
56598
58110
  i0.ɵɵelementStart(10, "p", 15);
@@ -56613,10 +58125,10 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
56613
58125
  } }
56614
58126
  function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template(rf, ctx) { if (rf & 1) {
56615
58127
  const _r4 = i0.ɵɵgetCurrentView();
56616
- i0.ɵɵelementStart(0, "div", 42)(1, "span", 44);
58128
+ i0.ɵɵelementStart(0, "div", 43)(1, "span", 45);
56617
58129
  i0.ɵɵtext(2, " $ ");
56618
58130
  i0.ɵɵelementEnd();
56619
- i0.ɵɵelementStart(3, "input", 45, 0);
58131
+ i0.ɵɵelementStart(3, "input", 46, 0);
56620
58132
  i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.absoluteInput, $event) || (ctx_r0.absoluteInput = $event); return i0.ɵɵresetView($event); });
56621
58133
  i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAbsoluteInputChange()); });
56622
58134
  i0.ɵɵelementEnd()();
@@ -56630,11 +58142,11 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template(rf,
56630
58142
  } }
56631
58143
  function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template(rf, ctx) { if (rf & 1) {
56632
58144
  const _r5 = i0.ɵɵgetCurrentView();
56633
- i0.ɵɵelementStart(0, "div", 42)(1, "input", 46, 1);
58145
+ i0.ɵɵelementStart(0, "div", 43)(1, "input", 47, 1);
56634
58146
  i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.percentageInput, $event) || (ctx_r0.percentageInput = $event); return i0.ɵɵresetView($event); });
56635
58147
  i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onPercentageInputChange()); });
56636
58148
  i0.ɵɵelementEnd();
56637
- i0.ɵɵelementStart(3, "span", 47);
58149
+ i0.ɵɵelementStart(3, "span", 48);
56638
58150
  i0.ɵɵtext(4, " % ");
56639
58151
  i0.ɵɵelementEnd()();
56640
58152
  } if (rf & 2) {
@@ -56647,7 +58159,7 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template(rf,
56647
58159
  } }
56648
58160
  function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template(rf, ctx) { if (rf & 1) {
56649
58161
  const _r6 = i0.ɵɵgetCurrentView();
56650
- i0.ɵɵelementStart(0, "div", 43)(1, "button", 48);
58162
+ i0.ɵɵelementStart(0, "div", 44)(1, "button", 49);
56651
58163
  i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.handleCancel()); });
56652
58164
  i0.ɵɵtext(2, " Cancel ");
56653
58165
  i0.ɵɵelementEnd()();
@@ -56658,16 +58170,16 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template(rf,
56658
58170
  } }
56659
58171
  function InitialTargetSettingComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
56660
58172
  const _r3 = i0.ɵɵgetCurrentView();
56661
- i0.ɵɵelementStart(0, "div", 40)(1, "button", 41);
58173
+ i0.ɵɵelementStart(0, "div", 41)(1, "button", 42);
56662
58174
  i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_25_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("absolute")); });
56663
58175
  i0.ɵɵtext(2, " Absolute Amount ");
56664
58176
  i0.ɵɵelementEnd();
56665
- i0.ɵɵelementStart(3, "button", 41);
58177
+ i0.ɵɵelementStart(3, "button", 42);
56666
58178
  i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_25_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("percentage")); });
56667
58179
  i0.ɵɵtext(4, " % Increase ");
56668
58180
  i0.ɵɵelementEnd()();
56669
- i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_25_Conditional_5_Template, 5, 3, "div", 42)(6, InitialTargetSettingComponent_Conditional_25_Conditional_6_Template, 5, 3, "div", 42);
56670
- i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_25_Conditional_7_Template, 3, 1, "div", 43);
58181
+ i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_25_Conditional_5_Template, 5, 3, "div", 43)(6, InitialTargetSettingComponent_Conditional_25_Conditional_6_Template, 5, 3, "div", 43);
58182
+ i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_25_Conditional_7_Template, 3, 1, "div", 44);
56671
58183
  } if (rf & 2) {
56672
58184
  const ctx_r0 = i0.ɵɵnextContext();
56673
58185
  i0.ɵɵadvance();
@@ -56686,7 +58198,7 @@ function InitialTargetSettingComponent_Conditional_32_Template(rf, ctx) { if (rf
56686
58198
  i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "108px");
56687
58199
  } }
56688
58200
  function InitialTargetSettingComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
56689
- i0.ɵɵelementStart(0, "div", 24)(1, "p", 49);
58201
+ i0.ɵɵelementStart(0, "div", 24)(1, "p", 50);
56690
58202
  i0.ɵɵtext(2, " No revenue data available ");
56691
58203
  i0.ɵɵelementEnd()();
56692
58204
  } if (rf & 2) {
@@ -56708,7 +58220,7 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_8_Template(rf,
56708
58220
  } }
56709
58221
  function InitialTargetSettingComponent_Conditional_36_Conditional_9_Template(rf, ctx) { if (rf & 1) {
56710
58222
  const _r7 = i0.ɵɵgetCurrentView();
56711
- i0.ɵɵelementStart(0, "button", 63);
58223
+ i0.ɵɵelementStart(0, "button", 64);
56712
58224
  i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_36_Conditional_9_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.handleAdjustTarget(); return i0.ɵɵresetView($event.stopPropagation()); });
56713
58225
  i0.ɵɵtext(1, " Adjust Revenue Target ");
56714
58226
  i0.ɵɵelementEnd();
@@ -56754,30 +58266,30 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional
56754
58266
  } }
56755
58267
  function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template(rf, ctx) { if (rf & 1) {
56756
58268
  const _r8 = i0.ɵɵgetCurrentView();
56757
- i0.ɵɵelementStart(0, "div", 56)(1, "div", 57);
56758
- i0.ɵɵelement(2, "div", 58);
56759
- i0.ɵɵelementStart(3, "span", 59);
58269
+ i0.ɵɵelementStart(0, "div", 57)(1, "div", 58);
58270
+ i0.ɵɵelement(2, "div", 59);
58271
+ i0.ɵɵelementStart(3, "span", 60);
56760
58272
  i0.ɵɵtext(4);
56761
58273
  i0.ɵɵelementEnd();
56762
- i0.ɵɵelement(5, "div", 58);
58274
+ i0.ɵɵelement(5, "div", 59);
56763
58275
  i0.ɵɵelementEnd();
56764
- i0.ɵɵelementStart(6, "div", 60)(7, "div")(8, "p", 61);
58276
+ i0.ɵɵelementStart(6, "div", 61)(7, "div")(8, "p", 62);
56765
58277
  i0.ɵɵtext(9, " Gap to Close ");
56766
58278
  i0.ɵɵelementEnd();
56767
- i0.ɵɵelementStart(10, "p", 62);
58279
+ i0.ɵɵelementStart(10, "p", 63);
56768
58280
  i0.ɵɵconditionalCreate(11, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_11_Template, 1, 1)(12, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_12_Template, 1, 0);
56769
58281
  i0.ɵɵelementEnd()();
56770
- i0.ɵɵelementStart(13, "div")(14, "div", 64)(15, "p", 14);
58282
+ i0.ɵɵelementStart(13, "div")(14, "div", 65)(15, "p", 14);
56771
58283
  i0.ɵɵtext(16, " Additional Growth Needed ");
56772
58284
  i0.ɵɵelementEnd();
56773
- i0.ɵɵelementStart(17, "button", 37);
58285
+ i0.ɵɵelementStart(17, "button", 38);
56774
58286
  i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template_button_click_17_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
56775
58287
  i0.ɵɵnamespaceSVG();
56776
- i0.ɵɵelementStart(18, "svg", 38);
56777
- i0.ɵɵelement(19, "path", 39);
58288
+ i0.ɵɵelementStart(18, "svg", 39);
58289
+ i0.ɵɵelement(19, "path", 40);
56778
58290
  i0.ɵɵelementEnd()()();
56779
58291
  i0.ɵɵnamespaceHTML();
56780
- i0.ɵɵelementStart(20, "p", 62);
58292
+ i0.ɵɵelementStart(20, "p", 63);
56781
58293
  i0.ɵɵconditionalCreate(21, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_21_Template, 1, 2)(22, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_22_Template, 1, 0);
56782
58294
  i0.ɵɵelementEnd()()()();
56783
58295
  } if (rf & 2) {
@@ -56806,34 +58318,34 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template(rf
56806
58318
  i0.ɵɵconditional(ctx_r0.isTargetValid() ? 21 : 22);
56807
58319
  } }
56808
58320
  function InitialTargetSettingComponent_Conditional_36_Template(rf, ctx) { if (rf & 1) {
56809
- i0.ɵɵelementStart(0, "div", 50)(1, "div")(2, "div", 51)(3, "div")(4, "p", 14);
58321
+ i0.ɵɵelementStart(0, "div", 51)(1, "div")(2, "div", 52)(3, "div")(4, "p", 14);
56810
58322
  i0.ɵɵtext(5);
56811
58323
  i0.ɵɵelementEnd();
56812
- i0.ɵɵelementStart(6, "p", 52);
58324
+ i0.ɵɵelementStart(6, "p", 53);
56813
58325
  i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_36_Conditional_7_Template, 1, 1)(8, InitialTargetSettingComponent_Conditional_36_Conditional_8_Template, 1, 1);
56814
58326
  i0.ɵɵelementEnd()();
56815
- i0.ɵɵconditionalCreate(9, InitialTargetSettingComponent_Conditional_36_Conditional_9_Template, 2, 1, "button", 53);
58327
+ i0.ɵɵconditionalCreate(9, InitialTargetSettingComponent_Conditional_36_Conditional_9_Template, 2, 1, "button", 54);
56816
58328
  i0.ɵɵelementEnd();
56817
- i0.ɵɵelementStart(10, "div", 54)(11, "div", 55)(12, "div", 56)(13, "div", 57);
56818
- i0.ɵɵelement(14, "div", 58);
56819
- i0.ɵɵelementStart(15, "span", 59);
58329
+ i0.ɵɵelementStart(10, "div", 55)(11, "div", 56)(12, "div", 57)(13, "div", 58);
58330
+ i0.ɵɵelement(14, "div", 59);
58331
+ i0.ɵɵelementStart(15, "span", 60);
56820
58332
  i0.ɵɵtext(16);
56821
58333
  i0.ɵɵelementEnd();
56822
- i0.ɵɵelement(17, "div", 58);
58334
+ i0.ɵɵelement(17, "div", 59);
56823
58335
  i0.ɵɵelementEnd();
56824
- i0.ɵɵelementStart(18, "div", 60)(19, "div")(20, "p", 61);
58336
+ i0.ɵɵelementStart(18, "div", 61)(19, "div")(20, "p", 62);
56825
58337
  i0.ɵɵtext(21, " Increase Amount ");
56826
58338
  i0.ɵɵelementEnd();
56827
- i0.ɵɵelementStart(22, "p", 62);
58339
+ i0.ɵɵelementStart(22, "p", 63);
56828
58340
  i0.ɵɵconditionalCreate(23, InitialTargetSettingComponent_Conditional_36_Conditional_23_Template, 1, 1)(24, InitialTargetSettingComponent_Conditional_36_Conditional_24_Template, 1, 0);
56829
58341
  i0.ɵɵelementEnd()();
56830
- i0.ɵɵelementStart(25, "div")(26, "p", 61);
58342
+ i0.ɵɵelementStart(25, "div")(26, "p", 62);
56831
58343
  i0.ɵɵtext(27, " % Growth ");
56832
58344
  i0.ɵɵelementEnd();
56833
- i0.ɵɵelementStart(28, "p", 62);
58345
+ i0.ɵɵelementStart(28, "p", 63);
56834
58346
  i0.ɵɵconditionalCreate(29, InitialTargetSettingComponent_Conditional_36_Conditional_29_Template, 1, 1)(30, InitialTargetSettingComponent_Conditional_36_Conditional_30_Template, 1, 0);
56835
58347
  i0.ɵɵelementEnd()()()();
56836
- i0.ɵɵconditionalCreate(31, InitialTargetSettingComponent_Conditional_36_Conditional_31_Template, 23, 12, "div", 56);
58348
+ i0.ɵɵconditionalCreate(31, InitialTargetSettingComponent_Conditional_36_Conditional_31_Template, 23, 12, "div", 57);
56837
58349
  i0.ɵɵelementEnd()()()();
56838
58350
  } if (rf & 2) {
56839
58351
  const ctx_r0 = i0.ɵɵnextContext();
@@ -56882,7 +58394,7 @@ function InitialTargetSettingComponent_Conditional_37_Conditional_4_Template(rf,
56882
58394
  i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "320px");
56883
58395
  } }
56884
58396
  function InitialTargetSettingComponent_Conditional_37_Conditional_5_Template(rf, ctx) { if (rf & 1) {
56885
- i0.ɵɵelementStart(0, "div", 24)(1, "p", 49);
58397
+ i0.ɵɵelementStart(0, "div", 24)(1, "p", 50);
56886
58398
  i0.ɵɵtext(2, " No revenue data available ");
56887
58399
  i0.ɵɵelementEnd()();
56888
58400
  } if (rf & 2) {
@@ -56919,14 +58431,16 @@ function InitialTargetSettingComponent_Conditional_40_Conditional_6_Template(rf,
56919
58431
  i0.ɵɵtextInterpolate1(" To achieve your revenue target of ", ctx_r0.formatCurrency(ctx_r0.displayedTargetRevenue()), ", the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth. ");
56920
58432
  } }
56921
58433
  function InitialTargetSettingComponent_Conditional_40_Template(rf, ctx) { if (rf & 1) {
56922
- i0.ɵɵelementStart(0, "div", 31)(1, "div", 65)(2, "h2", 66);
58434
+ const _r9 = i0.ɵɵgetCurrentView();
58435
+ i0.ɵɵelementStart(0, "div", 31)(1, "div", 66)(2, "h2", 67);
56923
58436
  i0.ɵɵtext(3, " Contributing Metrics ");
56924
58437
  i0.ɵɵelementEnd();
56925
- i0.ɵɵelementStart(4, "p", 49);
58438
+ i0.ɵɵelementStart(4, "p", 50);
56926
58439
  i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_40_Conditional_5_Template, 1, 1)(6, InitialTargetSettingComponent_Conditional_40_Conditional_6_Template, 1, 1);
56927
58440
  i0.ɵɵelementEnd()();
56928
- i0.ɵɵelement(7, "symphiq-funnel-metrics-visualization", 67);
56929
- i0.ɵɵelementEnd();
58441
+ i0.ɵɵelementStart(7, "symphiq-funnel-metrics-visualization", 68);
58442
+ i0.ɵɵlistener("viewStageReport", function InitialTargetSettingComponent_Conditional_40_Template_symphiq_funnel_metrics_visualization_viewStageReport_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openMetricReport($event)); })("viewRelatedMetricReport", function InitialTargetSettingComponent_Conditional_40_Template_symphiq_funnel_metrics_visualization_viewRelatedMetricReport_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openMetricReport($event)); });
58443
+ i0.ɵɵelementEnd()();
56930
58444
  } if (rf & 2) {
56931
58445
  const ctx_r0 = i0.ɵɵnextContext();
56932
58446
  i0.ɵɵproperty("ngClass", ctx_r0.sectionCardClasses());
@@ -56959,6 +58473,23 @@ class InitialTargetSettingComponent {
56959
58473
  this.storedResponse = signal(null, ...(ngDevMode ? [{ debugName: "storedResponse" }] : []));
56960
58474
  this.submittedAbsoluteInput = signal(null, ...(ngDevMode ? [{ debugName: "submittedAbsoluteInput" }] : []));
56961
58475
  this.detailsExpanded = signal(false, ...(ngDevMode ? [{ debugName: "detailsExpanded" }] : []));
58476
+ this.isMetricReportOpen = signal(false, ...(ngDevMode ? [{ debugName: "isMetricReportOpen" }] : []));
58477
+ this.selectedMetricEnum = signal('', ...(ngDevMode ? [{ debugName: "selectedMetricEnum" }] : []));
58478
+ this.selectedMetricData = computed(() => {
58479
+ const metricEnum = this.selectedMetricEnum();
58480
+ const calcs = this.displayedMetricCalculations();
58481
+ return calcs.find(c => c.metric === metricEnum);
58482
+ }, ...(ngDevMode ? [{ debugName: "selectedMetricData" }] : []));
58483
+ this.selectedContributingMetrics = computed(() => {
58484
+ const metricEnum = this.selectedMetricEnum();
58485
+ const calcs = this.displayedMetricCalculations();
58486
+ const selectedMetric = calcs.find(c => c.metric === metricEnum);
58487
+ if (!selectedMetric || !selectedMetric.isFunnelStage) {
58488
+ return [];
58489
+ }
58490
+ return calcs.filter(c => !c.isFunnelStage && c.funnelMetric === metricEnum)
58491
+ .sort((a, b) => (a.relatedInd ?? 0) - (b.relatedInd ?? 0));
58492
+ }, ...(ngDevMode ? [{ debugName: "selectedContributingMetrics" }] : []));
56962
58493
  this.animatedIncreaseAmount = signal(0, ...(ngDevMode ? [{ debugName: "animatedIncreaseAmount" }] : []));
56963
58494
  this.animatedPercentageGrowth = signal(0, ...(ngDevMode ? [{ debugName: "animatedPercentageGrowth" }] : []));
56964
58495
  this.animatedGapAmount = signal(0, ...(ngDevMode ? [{ debugName: "animatedGapAmount" }] : []));
@@ -57466,15 +58997,23 @@ class InitialTargetSettingComponent {
57466
58997
  ? 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300'
57467
58998
  : 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700';
57468
58999
  }
59000
+ openMetricReport(metricEnum) {
59001
+ this.selectedMetricEnum.set(metricEnum);
59002
+ this.isMetricReportOpen.set(true);
59003
+ }
59004
+ closeMetricReport() {
59005
+ this.isMetricReportOpen.set(false);
59006
+ this.selectedMetricEnum.set('');
59007
+ }
57469
59008
  static { this.ɵfac = function InitialTargetSettingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InitialTargetSettingComponent)(); }; }
57470
59009
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InitialTargetSettingComponent, selectors: [["symphiq-initial-target-setting"]], viewQuery: function InitialTargetSettingComponent_Query(rf, ctx) { if (rf & 1) {
57471
- i0.ɵɵviewQuery(_c0$r, 5);
59010
+ i0.ɵɵviewQuery(_c0$q, 5);
57472
59011
  i0.ɵɵviewQuery(_c1$b, 5);
57473
59012
  } if (rf & 2) {
57474
59013
  let _t;
57475
59014
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.absoluteInputRef = _t.first);
57476
59015
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.percentageInputRef = _t.first);
57477
- } }, inputs: { viewMode: [1, "viewMode"], funnelMetrics: [1, "funnelMetrics"], mainUiData: [1, "mainUiData"], trendUiData: [1, "trendUiData"], shopId: [1, "shopId"], pacingMetrics: [1, "pacingMetrics"], dataResults: [1, "dataResults"], reverseCalculationResponse: [1, "reverseCalculationResponse"], targets: [1, "targets"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls: 42, vars: 44, consts: [["absoluteInputRef", ""], ["percentageInputRef", ""], [1, "space-y-8", "pb-32"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "click", "ngClass"], [1, "flex", "items-center", "justify-between", "mb-6"], [1, "text-2xl", "font-bold", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "chevron-rotate", 3, "chevron-rotate-expanded", "ngClass"], [1, "flex", "flex-col", "gap-4"], [1, "grid", "lg:grid-cols-2", "gap-4"], [1, "p-6", "rounded-xl", "border-2", 3, "click", "ngClass"], [1, "flex", "flex-wrap", "gap-4", "place-content-between"], [1, "flex", "items-center", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "form-area-collapse"], [1, "form-area-content"], [1, "space-y-6"], [1, "chart-in-column"], [1, "chart-in-column-content"], [1, "text-sm", "font-semibold", "mb-3", 3, "ngClass"], [1, "rounded-xl", "border", "p-4", 3, "ngClass"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol", "height"], [1, "h-64", "flex", "items-center", "justify-center"], [1, "calculated-card-enter", "order-first", "lg:order-last"], [1, "calculated-card-content"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass", "h-full"], [1, "w-full"], [1, "metrics-section-enter"], [1, "metrics-section-content"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "ngClass"], [3, "submitClick", "cancelClick", "viewMode", "isValid", "isSubmitting", "validationMessage", "buttonText", "showCancelButton"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "chevron-rotate", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"], [1, "flex", "items-center", "gap-1"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "top", 1, "flex-shrink-0", "w-4", "h-4", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "click", "ngClass", "libSymphiqTooltip"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex", "gap-2"], [1, "flex-1", "py-2", "px-4", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "relative"], [1, "flex", "justify-end"], [1, "absolute", "left-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "step", "1000", 1, "w-full", "pl-10", "pr-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "max", "1000", "step", "0.1", 1, "w-full", "pr-10", "pl-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], [1, "absolute", "right-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass"], [1, "flex", "items-center", "justify-between"], [1, "font-bold", "transition-all", "duration-300", "text-lg", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "ngClass"], [1, "details-collapse"], [1, "details-collapse-content"], [1, "relative", "pt-6", "mt-6"], [1, "absolute", "top-0", "left-0", "right-0", "flex", "items-center", "-translate-y-1/2"], [1, "flex-1", "h-px", 3, "ngClass"], [1, "px-3", "py-1", "rounded-full", "text-xs", "font-semibold", "whitespace-nowrap", 3, "ngClass"], [1, "grid", "grid-cols-2", "gap-4", "pt-2"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "click", "ngClass"], [1, "flex", "items-center", "gap-1", "mb-1"], [1, "mb-6"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "calculations", "pacingMetrics"]], template: function InitialTargetSettingComponent_Template(rf, ctx) { if (rf & 1) {
59016
+ } }, inputs: { viewMode: [1, "viewMode"], funnelMetrics: [1, "funnelMetrics"], mainUiData: [1, "mainUiData"], trendUiData: [1, "trendUiData"], shopId: [1, "shopId"], pacingMetrics: [1, "pacingMetrics"], dataResults: [1, "dataResults"], reverseCalculationResponse: [1, "reverseCalculationResponse"], targets: [1, "targets"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls: 43, vars: 50, consts: [["absoluteInputRef", ""], ["percentageInputRef", ""], [1, "space-y-8", "pb-32"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "click", "ngClass"], [1, "flex", "items-center", "justify-between", "mb-6"], [1, "text-2xl", "font-bold", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "chevron-rotate", 3, "chevron-rotate-expanded", "ngClass"], [1, "flex", "flex-col", "gap-4"], [1, "grid", "lg:grid-cols-2", "gap-4"], [1, "p-6", "rounded-xl", "border-2", 3, "click", "ngClass"], [1, "flex", "flex-wrap", "gap-4", "place-content-between"], [1, "flex", "items-center", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "form-area-collapse"], [1, "form-area-content"], [1, "space-y-6"], [1, "chart-in-column"], [1, "chart-in-column-content"], [1, "text-sm", "font-semibold", "mb-3", 3, "ngClass"], [1, "rounded-xl", "border", "p-4", 3, "ngClass"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol", "height"], [1, "h-64", "flex", "items-center", "justify-center"], [1, "calculated-card-enter", "order-first", "lg:order-last"], [1, "calculated-card-content"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass", "h-full"], [1, "w-full"], [1, "metrics-section-enter"], [1, "metrics-section-content"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "ngClass"], [3, "submitClick", "cancelClick", "viewMode", "isValid", "isSubmitting", "validationMessage", "buttonText", "showCancelButton"], [3, "closed", "viewMode", "metricEnum", "metricData", "contributingMetrics", "pacingMetrics", "isOpen"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "chevron-rotate", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"], [1, "flex", "items-center", "gap-1"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "top", 1, "flex-shrink-0", "w-4", "h-4", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "click", "ngClass", "libSymphiqTooltip"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex", "gap-2"], [1, "flex-1", "py-2", "px-4", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "relative"], [1, "flex", "justify-end"], [1, "absolute", "left-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "step", "1000", 1, "w-full", "pl-10", "pr-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "max", "1000", "step", "0.1", 1, "w-full", "pr-10", "pl-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], [1, "absolute", "right-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass"], [1, "flex", "items-center", "justify-between"], [1, "font-bold", "transition-all", "duration-300", "text-lg", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "ngClass"], [1, "details-collapse"], [1, "details-collapse-content"], [1, "relative", "pt-6", "mt-6"], [1, "absolute", "top-0", "left-0", "right-0", "flex", "items-center", "-translate-y-1/2"], [1, "flex-1", "h-px", 3, "ngClass"], [1, "px-3", "py-1", "rounded-full", "text-xs", "font-semibold", "whitespace-nowrap", 3, "ngClass"], [1, "grid", "grid-cols-2", "gap-4", "pt-2"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "click", "ngClass"], [1, "flex", "items-center", "gap-1", "mb-1"], [1, "mb-6"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewStageReport", "viewRelatedMetricReport", "viewMode", "calculations", "pacingMetrics"]], template: function InitialTargetSettingComponent_Template(rf, ctx) { if (rf & 1) {
57478
59017
  i0.ɵɵelementStart(0, "div", 2);
57479
59018
  i0.ɵɵelement(1, "symphiq-tooltip-container");
57480
59019
  i0.ɵɵelementStart(2, "div", 3);
@@ -57519,6 +59058,9 @@ class InitialTargetSettingComponent {
57519
59058
  i0.ɵɵelementEnd()();
57520
59059
  i0.ɵɵelementStart(41, "symphiq-sticky-submit-bar", 32);
57521
59060
  i0.ɵɵlistener("submitClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_submitClick_41_listener() { return ctx.handleSubmitClick(); })("cancelClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_cancelClick_41_listener() { return ctx.handleCancel(); });
59061
+ i0.ɵɵelementEnd();
59062
+ i0.ɵɵelementStart(42, "symphiq-metric-report-modal", 33);
59063
+ i0.ɵɵlistener("closed", function InitialTargetSettingComponent_Template_symphiq_metric_report_modal_closed_42_listener() { return ctx.closeMetricReport(); });
57522
59064
  i0.ɵɵelementEnd()();
57523
59065
  } if (rf & 2) {
57524
59066
  i0.ɵɵadvance(2);
@@ -57570,11 +59112,14 @@ class InitialTargetSettingComponent {
57570
59112
  i0.ɵɵconditional(ctx.showMetricsVisualization() ? 40 : -1);
57571
59113
  i0.ɵɵadvance();
57572
59114
  i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText())("showCancelButton", ctx.calculationState() === "input" && ctx.hasStoredResponse());
59115
+ i0.ɵɵadvance();
59116
+ i0.ɵɵproperty("viewMode", ctx.viewMode())("metricEnum", ctx.selectedMetricEnum())("metricData", ctx.selectedMetricData())("contributingMetrics", ctx.selectedContributingMetrics())("pacingMetrics", ctx.pacingMetrics())("isOpen", ctx.isMetricReportOpen());
57573
59117
  } }, dependencies: [CommonModule, i1$1.NgClass, FormsModule, i2$1.DefaultValueAccessor, i2$1.NumberValueAccessor, i2$1.NgControlStatus, i2$1.MinValidator, i2$1.MaxValidator, i2$1.NgModel, FunnelMetricsVisualizationComponent,
57574
59118
  StickySubmitBarComponent,
57575
59119
  AreaChartComponent,
57576
59120
  TooltipDirective,
57577
- TooltipContainerComponent], styles: [".calculated-card-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.calculated-card-content[_ngcontent-%COMP%]{overflow:hidden}.form-area-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.form-area-collapse-hidden[_ngcontent-%COMP%]{grid-template-rows:0fr}.form-area-content[_ngcontent-%COMP%]{overflow:hidden}.chart-section-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.chart-section-collapse-hidden[_ngcontent-%COMP%]{grid-template-rows:0fr}.chart-section-content[_ngcontent-%COMP%]{overflow:hidden}.chart-in-column[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.chart-in-column-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.chart-in-column-content[_ngcontent-%COMP%]{overflow:hidden}.metrics-section-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s ease-out}.metrics-section-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.metrics-section-content[_ngcontent-%COMP%]{overflow:hidden}.details-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.details-collapse-expanded[_ngcontent-%COMP%]{grid-template-rows:1fr}.details-collapse-content[_ngcontent-%COMP%]{overflow:hidden}.chevron-rotate[_ngcontent-%COMP%]{transition:transform .3s ease-out}.chevron-rotate-expanded[_ngcontent-%COMP%]{transform:rotate(180deg)}"], changeDetection: 0 }); }
59121
+ TooltipContainerComponent,
59122
+ MetricReportModalComponent], styles: [".calculated-card-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.calculated-card-content[_ngcontent-%COMP%]{overflow:hidden}.form-area-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.form-area-collapse-hidden[_ngcontent-%COMP%]{grid-template-rows:0fr}.form-area-content[_ngcontent-%COMP%]{overflow:hidden}.chart-section-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.chart-section-collapse-hidden[_ngcontent-%COMP%]{grid-template-rows:0fr}.chart-section-content[_ngcontent-%COMP%]{overflow:hidden}.chart-in-column[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.chart-in-column-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.chart-in-column-content[_ngcontent-%COMP%]{overflow:hidden}.metrics-section-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s ease-out}.metrics-section-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.metrics-section-content[_ngcontent-%COMP%]{overflow:hidden}.details-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.details-collapse-expanded[_ngcontent-%COMP%]{grid-template-rows:1fr}.details-collapse-content[_ngcontent-%COMP%]{overflow:hidden}.chevron-rotate[_ngcontent-%COMP%]{transition:transform .3s ease-out}.chevron-rotate-expanded[_ngcontent-%COMP%]{transform:rotate(180deg)}"], changeDetection: 0 }); }
57578
59123
  }
57579
59124
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InitialTargetSettingComponent, [{
57580
59125
  type: Component,
@@ -57585,378 +59130,392 @@ class InitialTargetSettingComponent {
57585
59130
  StickySubmitBarComponent,
57586
59131
  AreaChartComponent,
57587
59132
  TooltipDirective,
57588
- TooltipContainerComponent
57589
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
57590
- <div class="space-y-8 pb-32">
57591
- <symphiq-tooltip-container />
57592
- <div [ngClass]="sectionCardClasses(true)" class="rounded-2xl border shadow-lg p-8"
57593
- [class.cursor-pointer]="calculationState() === 'results'"
57594
- [class.lg:sticky]="calculationState() === 'results'"
57595
- [style.top]="calculationState() === 'results' ? '148px' : 'auto'"
57596
- [class.z-30]="calculationState() === 'results'"
57597
- (click)="onCardClick()">
57598
- <div class="flex items-center justify-between mb-6">
57599
- <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold">
57600
- @if (calculationState() === 'results') {
57601
- Your {{ currentYear() }} Revenue Target
57602
- } @else {
57603
- Calculate Your {{ currentYear() }} Revenue Target
57604
- }
57605
- </h2>
57606
- @if (calculationState() === 'results') {
57607
- <svg
57608
- class="w-6 h-6 chevron-rotate"
57609
- [class.chevron-rotate-expanded]="detailsExpanded()"
57610
- [ngClass]="chevronClasses()"
57611
- fill="none"
57612
- stroke="currentColor"
57613
- viewBox="0 0 24 24">
57614
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
57615
- </svg>
57616
- }
57617
- </div>
57618
-
57619
- <div class="flex flex-col gap-4">
57620
- <div class="grid lg:grid-cols-2 gap-4">
57621
- <div class="flex flex-col gap-4">
57622
- <div [ngClass]="formAreaClasses()" class="p-6 rounded-xl border-2" [class.cursor-pointer]="calculationState() === 'results'" (click)="onCardClick(); $event.stopPropagation()">
57623
- <div class="flex flex-wrap gap-4 place-content-between">
57624
- <div class="flex items-center gap-2">
57625
- <svg class="w-4 h-4" [ngClass]="baselineIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57626
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
57627
- </svg>
57628
- <div>
57629
- <p [ngClass]="baselineLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
57630
- {{ priorYear() }} Revenue
57631
- </p>
57632
- <p [ngClass]="baselineValueClasses()" class="text-lg font-bold">
57633
- {{ formatCurrency(priorYearRevenue()) }}
57634
- </p>
57635
- </div>
57636
- </div>
57637
- @if (currentPaceProjection() > 0) {
57638
- <div class="flex items-center gap-2">
57639
- <svg class="w-4 h-4" [ngClass]="projectionIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57640
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
57641
- </svg>
57642
- <div>
57643
- <div class="flex items-center gap-1">
57644
- <p [ngClass]="projectionLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
57645
- Current Pace Projection
57646
- </p>
57647
- <button
57648
- type="button"
57649
- [ngClass]="infoIconClasses()"
57650
- class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
57651
- [libSymphiqTooltip]="currentPaceProjectionTooltip"
57652
- tooltipType="markdown"
57653
- tooltipPosition="top"
57654
- (click)="$event.stopPropagation()">
57655
- <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57656
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
57657
- </svg>
57658
- </button>
57659
- </div>
57660
- <p [ngClass]="projectionValueClasses()" class="text-lg font-bold">
57661
- {{ formatCurrency(currentPaceProjection()) }}
57662
- </p>
57663
- </div>
57664
- </div>
57665
- }
57666
- </div>
57667
-
57668
- <div class="form-area-collapse" [class.form-area-collapse-hidden]="calculationState() === 'results'" [class.mt-6]="calculationState() !== 'results'">
57669
- <div class="form-area-content">
57670
- <div class="space-y-6">
57671
- @if (calculationState() !== 'results') {
57672
- <div class="flex gap-2">
57673
- <button
57674
- (click)="setInputMode('absolute')"
57675
- [ngClass]="inputModeButtonClasses('absolute')"
57676
- class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
57677
- Absolute Amount
57678
- </button>
57679
- <button
57680
- (click)="setInputMode('percentage')"
57681
- [ngClass]="inputModeButtonClasses('percentage')"
57682
- class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
57683
- % Increase
57684
- </button>
57685
- </div>
57686
-
57687
- @if (inputMode() === 'absolute') {
57688
- <div class="relative">
57689
- <span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
57690
- $
57691
- </span>
57692
- <input
57693
- #absoluteInputRef
57694
- type="number"
57695
- [(ngModel)]="absoluteInput"
57696
- (ngModelChange)="onAbsoluteInputChange()"
57697
- [ngClass]="inputClasses()"
57698
- class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
57699
- placeholder="0"
57700
- min="0"
57701
- step="1000">
57702
- </div>
57703
- } @else {
57704
- <div class="relative">
57705
- <input
57706
- #percentageInputRef
57707
- type="number"
57708
- [(ngModel)]="percentageInput"
57709
- (ngModelChange)="onPercentageInputChange()"
57710
- [ngClass]="inputClasses()"
57711
- class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
57712
- placeholder="0"
57713
- min="0"
57714
- max="1000"
57715
- step="0.1">
57716
- <span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
57717
- %
57718
- </span>
57719
- </div>
57720
- }
57721
-
57722
- @if (hasStoredResponse()) {
57723
- <div class="flex justify-end">
57724
- <button
57725
- (click)="handleCancel()"
57726
- [ngClass]="cancelButtonClasses()"
57727
- class="px-4 py-2 rounded-lg text-sm font-semibold transition-all">
57728
- Cancel
57729
- </button>
57730
- </div>
57731
- }
57732
- }
57733
- </div>
57734
- </div>
57735
- </div>
57736
- </div>
57737
-
57738
- <div class="chart-in-column" [class.chart-in-column-active]="calculationState() === 'results' && detailsExpanded()">
57739
- <div class="chart-in-column-content">
57740
- <div>
57741
- <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
57742
- Year-over-Year Revenue Trend
57743
- </p>
57744
- <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
57745
- @if (revenueChartData()) {
57746
- <symphiq-area-chart
57747
- [chart]="revenueChartData()!"
57748
- [showAxisLabels]="true"
57749
- [viewMode]="viewMode()"
57750
- [currencySymbol]="'$'"
57751
- [height]="'108px'"
57752
- />
57753
- } @else {
57754
- <div class="h-64 flex items-center justify-center">
57755
- <p [ngClass]="noDataClasses()" class="text-sm">
57756
- No revenue data available
57757
- </p>
57758
- </div>
57759
- }
57760
- </div>
57761
- </div>
57762
- </div>
57763
- </div>
57764
- </div>
57765
-
57766
- <div class="calculated-card-enter order-first lg:order-last" [class.calculated-card-enter-active]="calculatedRevenue() > 0">
57767
- <div class="calculated-card-content">
57768
- @if (calculatedRevenue() > 0) {
57769
- <div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2"
57770
- [class.h-full]="calculationState() !== 'results' || detailsExpanded()">
57771
- <div>
57772
- <div class="flex items-center justify-between">
57773
- <div>
57774
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
57775
- {{ currentYear() }} Revenue Target
57776
- </p>
57777
- <p [ngClass]="calculatedValueClasses()" class="font-bold transition-all duration-300 text-lg"
57778
- [class.lg:text-3xl]="calculationState() !== 'results' || detailsExpanded()">
57779
- @if (calculationState() === 'results' && targets() === undefined && submittedAbsoluteInput() !== null) {
57780
- > {{ formatCurrency(submittedAbsoluteInput()!) }}
57781
- } @else {
57782
- {{ formatCurrency(displayedTargetRevenue()) }}
57783
- }
57784
- </p>
57785
- </div>
57786
- @if (calculationState() === 'results' && targets() === undefined) {
57787
- <button
57788
- (click)="handleAdjustTarget(); $event.stopPropagation()"
57789
- [ngClass]="secondaryButtonClasses()"
57790
- class="px-4 py-2 rounded-lg text-sm font-semibold transition-all whitespace-nowrap">
57791
- Adjust Revenue Target
57792
- </button>
57793
- }
57794
- </div>
57795
-
57796
- <div class="details-collapse" [class.details-collapse-expanded]="calculationState() !== 'results' || detailsExpanded()">
57797
- <div class="details-collapse-content">
57798
- <div class="relative pt-6 mt-6">
57799
- <div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
57800
- <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
57801
- <span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
57802
- vs. {{ priorYear() }}
57803
- </span>
57804
- <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
57805
- </div>
57806
- <div class="grid grid-cols-2 gap-4 pt-2">
57807
- <div>
57808
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57809
- Increase Amount
57810
- </p>
57811
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57812
- @if (isTargetValid()) {
57813
- {{ formatCurrency(animatedIncreaseAmount()) }}
57814
- } @else {
57815
- --
57816
- }
57817
- </p>
57818
- </div>
57819
- <div>
57820
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57821
- % Growth
57822
- </p>
57823
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57824
- @if (isTargetValid()) {
57825
- +{{ formatPercentage(animatedPercentageGrowth(), 1) }}
57826
- } @else {
57827
- --
57828
- }
57829
- </p>
57830
- </div>
57831
- </div>
57832
- </div>
57833
-
57834
- @if (currentPaceProjection() > 0) {
57835
- <div class="relative pt-6 mt-6">
57836
- <div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
57837
- <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
57838
- <span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
57839
- {{ currentYear() }} YTD Gap
57840
- </span>
57841
- <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
57842
- </div>
57843
- <div class="grid grid-cols-2 gap-4 pt-2">
57844
- <div>
57845
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57846
- Gap to Close
57847
- </p>
57848
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57849
- @if (isTargetValid()) {
57850
- {{ formatCurrency(animatedGapAmount()) }}
57851
- } @else {
57852
- --
57853
- }
57854
- </p>
57855
- </div>
57856
- <div>
57857
- <div class="flex items-center gap-1 mb-1">
57858
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
57859
- Additional Growth Needed
57860
- </p>
57861
- <button
57862
- type="button"
57863
- [ngClass]="infoIconClasses()"
57864
- class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
57865
- [libSymphiqTooltip]="additionalGrowthTooltip"
57866
- tooltipType="markdown"
57867
- tooltipPosition="top"
57868
- (click)="$event.stopPropagation()">
57869
- <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57870
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
57871
- </svg>
57872
- </button>
57873
- </div>
57874
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57875
- @if (isTargetValid()) {
57876
- {{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(animatedGapPercentage(), 1) }}
57877
- } @else {
57878
- --
57879
- }
57880
- </p>
57881
- </div>
57882
- </div>
57883
- </div>
57884
- }
57885
-
57886
- </div>
57887
- </div>
57888
- </div>
57889
- </div>
57890
- }
57891
- </div>
57892
- </div>
57893
- </div>
57894
-
57895
- @if (calculationState() !== 'results') {
57896
- <div class="w-full">
57897
- <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
57898
- Year-over-Year Revenue Trend
57899
- </p>
57900
- <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
57901
- @if (revenueChartData()) {
57902
- <symphiq-area-chart
57903
- [chart]="revenueChartData()!"
57904
- [showAxisLabels]="true"
57905
- [viewMode]="viewMode()"
57906
- [currencySymbol]="'$'"
57907
- [height]="'320px'"
57908
- />
57909
- } @else {
57910
- <div class="h-64 flex items-center justify-center">
57911
- <p [ngClass]="noDataClasses()" class="text-sm">
57912
- No revenue data available
57913
- </p>
57914
- </div>
57915
- }
57916
- </div>
57917
- </div>
57918
- }
57919
- </div>
57920
- </div>
57921
-
57922
- <div class="metrics-section-enter" [class.metrics-section-enter-active]="showMetricsVisualization()">
57923
- <div class="metrics-section-content">
57924
- @if (showMetricsVisualization()) {
57925
- <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
57926
- <div class="mb-6">
57927
- <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
57928
- Contributing Metrics
57929
- </h2>
57930
- <p [ngClass]="sectionDescriptionClasses()" class="text-sm">
57931
- @if (targets() === undefined && submittedAbsoluteInput() !== null) {
57932
- To achieve your revenue target of over {{ formatCurrency(submittedAbsoluteInput()!) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
57933
- } @else {
57934
- To achieve your revenue target of {{ formatCurrency(displayedTargetRevenue()) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
57935
- }
57936
- </p>
57937
- </div>
57938
-
57939
- <symphiq-funnel-metrics-visualization
57940
- [viewMode]="viewMode()"
57941
- [calculations]="displayedMetricCalculations()"
57942
- [pacingMetrics]="pacingMetrics()"
57943
- />
57944
- </div>
57945
- }
57946
- </div>
57947
- </div>
57948
-
57949
- <symphiq-sticky-submit-bar
57950
- [viewMode]="viewMode()"
57951
- [isValid]="isValid()"
57952
- [isSubmitting]="isCalculating()"
57953
- [validationMessage]="validationMessage()"
57954
- [buttonText]="submitButtonText()"
57955
- [showCancelButton]="calculationState() === 'input' && hasStoredResponse()"
57956
- (submitClick)="handleSubmitClick()"
57957
- (cancelClick)="handleCancel()"
57958
- />
57959
- </div>
59133
+ TooltipContainerComponent,
59134
+ MetricReportModalComponent
59135
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
59136
+ <div class="space-y-8 pb-32">
59137
+ <symphiq-tooltip-container />
59138
+ <div [ngClass]="sectionCardClasses(true)" class="rounded-2xl border shadow-lg p-8"
59139
+ [class.cursor-pointer]="calculationState() === 'results'"
59140
+ [class.lg:sticky]="calculationState() === 'results'"
59141
+ [style.top]="calculationState() === 'results' ? '148px' : 'auto'"
59142
+ [class.z-30]="calculationState() === 'results'"
59143
+ (click)="onCardClick()">
59144
+ <div class="flex items-center justify-between mb-6">
59145
+ <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold">
59146
+ @if (calculationState() === 'results') {
59147
+ Your {{ currentYear() }} Revenue Target
59148
+ } @else {
59149
+ Calculate Your {{ currentYear() }} Revenue Target
59150
+ }
59151
+ </h2>
59152
+ @if (calculationState() === 'results') {
59153
+ <svg
59154
+ class="w-6 h-6 chevron-rotate"
59155
+ [class.chevron-rotate-expanded]="detailsExpanded()"
59156
+ [ngClass]="chevronClasses()"
59157
+ fill="none"
59158
+ stroke="currentColor"
59159
+ viewBox="0 0 24 24">
59160
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
59161
+ </svg>
59162
+ }
59163
+ </div>
59164
+
59165
+ <div class="flex flex-col gap-4">
59166
+ <div class="grid lg:grid-cols-2 gap-4">
59167
+ <div class="flex flex-col gap-4">
59168
+ <div [ngClass]="formAreaClasses()" class="p-6 rounded-xl border-2" [class.cursor-pointer]="calculationState() === 'results'" (click)="onCardClick(); $event.stopPropagation()">
59169
+ <div class="flex flex-wrap gap-4 place-content-between">
59170
+ <div class="flex items-center gap-2">
59171
+ <svg class="w-4 h-4" [ngClass]="baselineIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
59172
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
59173
+ </svg>
59174
+ <div>
59175
+ <p [ngClass]="baselineLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
59176
+ {{ priorYear() }} Revenue
59177
+ </p>
59178
+ <p [ngClass]="baselineValueClasses()" class="text-lg font-bold">
59179
+ {{ formatCurrency(priorYearRevenue()) }}
59180
+ </p>
59181
+ </div>
59182
+ </div>
59183
+ @if (currentPaceProjection() > 0) {
59184
+ <div class="flex items-center gap-2">
59185
+ <svg class="w-4 h-4" [ngClass]="projectionIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
59186
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
59187
+ </svg>
59188
+ <div>
59189
+ <div class="flex items-center gap-1">
59190
+ <p [ngClass]="projectionLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
59191
+ Current Pace Projection
59192
+ </p>
59193
+ <button
59194
+ type="button"
59195
+ [ngClass]="infoIconClasses()"
59196
+ class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
59197
+ [libSymphiqTooltip]="currentPaceProjectionTooltip"
59198
+ tooltipType="markdown"
59199
+ tooltipPosition="top"
59200
+ (click)="$event.stopPropagation()">
59201
+ <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
59202
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
59203
+ </svg>
59204
+ </button>
59205
+ </div>
59206
+ <p [ngClass]="projectionValueClasses()" class="text-lg font-bold">
59207
+ {{ formatCurrency(currentPaceProjection()) }}
59208
+ </p>
59209
+ </div>
59210
+ </div>
59211
+ }
59212
+ </div>
59213
+
59214
+ <div class="form-area-collapse" [class.form-area-collapse-hidden]="calculationState() === 'results'" [class.mt-6]="calculationState() !== 'results'">
59215
+ <div class="form-area-content">
59216
+ <div class="space-y-6">
59217
+ @if (calculationState() !== 'results') {
59218
+ <div class="flex gap-2">
59219
+ <button
59220
+ (click)="setInputMode('absolute')"
59221
+ [ngClass]="inputModeButtonClasses('absolute')"
59222
+ class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
59223
+ Absolute Amount
59224
+ </button>
59225
+ <button
59226
+ (click)="setInputMode('percentage')"
59227
+ [ngClass]="inputModeButtonClasses('percentage')"
59228
+ class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
59229
+ % Increase
59230
+ </button>
59231
+ </div>
59232
+
59233
+ @if (inputMode() === 'absolute') {
59234
+ <div class="relative">
59235
+ <span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
59236
+ $
59237
+ </span>
59238
+ <input
59239
+ #absoluteInputRef
59240
+ type="number"
59241
+ [(ngModel)]="absoluteInput"
59242
+ (ngModelChange)="onAbsoluteInputChange()"
59243
+ [ngClass]="inputClasses()"
59244
+ class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
59245
+ placeholder="0"
59246
+ min="0"
59247
+ step="1000">
59248
+ </div>
59249
+ } @else {
59250
+ <div class="relative">
59251
+ <input
59252
+ #percentageInputRef
59253
+ type="number"
59254
+ [(ngModel)]="percentageInput"
59255
+ (ngModelChange)="onPercentageInputChange()"
59256
+ [ngClass]="inputClasses()"
59257
+ class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
59258
+ placeholder="0"
59259
+ min="0"
59260
+ max="1000"
59261
+ step="0.1">
59262
+ <span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
59263
+ %
59264
+ </span>
59265
+ </div>
59266
+ }
59267
+
59268
+ @if (hasStoredResponse()) {
59269
+ <div class="flex justify-end">
59270
+ <button
59271
+ (click)="handleCancel()"
59272
+ [ngClass]="cancelButtonClasses()"
59273
+ class="px-4 py-2 rounded-lg text-sm font-semibold transition-all">
59274
+ Cancel
59275
+ </button>
59276
+ </div>
59277
+ }
59278
+ }
59279
+ </div>
59280
+ </div>
59281
+ </div>
59282
+ </div>
59283
+
59284
+ <div class="chart-in-column" [class.chart-in-column-active]="calculationState() === 'results' && detailsExpanded()">
59285
+ <div class="chart-in-column-content">
59286
+ <div>
59287
+ <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
59288
+ Year-over-Year Revenue Trend
59289
+ </p>
59290
+ <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
59291
+ @if (revenueChartData()) {
59292
+ <symphiq-area-chart
59293
+ [chart]="revenueChartData()!"
59294
+ [showAxisLabels]="true"
59295
+ [viewMode]="viewMode()"
59296
+ [currencySymbol]="'$'"
59297
+ [height]="'108px'"
59298
+ />
59299
+ } @else {
59300
+ <div class="h-64 flex items-center justify-center">
59301
+ <p [ngClass]="noDataClasses()" class="text-sm">
59302
+ No revenue data available
59303
+ </p>
59304
+ </div>
59305
+ }
59306
+ </div>
59307
+ </div>
59308
+ </div>
59309
+ </div>
59310
+ </div>
59311
+
59312
+ <div class="calculated-card-enter order-first lg:order-last" [class.calculated-card-enter-active]="calculatedRevenue() > 0">
59313
+ <div class="calculated-card-content">
59314
+ @if (calculatedRevenue() > 0) {
59315
+ <div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2"
59316
+ [class.h-full]="calculationState() !== 'results' || detailsExpanded()">
59317
+ <div>
59318
+ <div class="flex items-center justify-between">
59319
+ <div>
59320
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
59321
+ {{ currentYear() }} Revenue Target
59322
+ </p>
59323
+ <p [ngClass]="calculatedValueClasses()" class="font-bold transition-all duration-300 text-lg"
59324
+ [class.lg:text-3xl]="calculationState() !== 'results' || detailsExpanded()">
59325
+ @if (calculationState() === 'results' && targets() === undefined && submittedAbsoluteInput() !== null) {
59326
+ > {{ formatCurrency(submittedAbsoluteInput()!) }}
59327
+ } @else {
59328
+ {{ formatCurrency(displayedTargetRevenue()) }}
59329
+ }
59330
+ </p>
59331
+ </div>
59332
+ @if (calculationState() === 'results' && targets() === undefined) {
59333
+ <button
59334
+ (click)="handleAdjustTarget(); $event.stopPropagation()"
59335
+ [ngClass]="secondaryButtonClasses()"
59336
+ class="px-4 py-2 rounded-lg text-sm font-semibold transition-all whitespace-nowrap">
59337
+ Adjust Revenue Target
59338
+ </button>
59339
+ }
59340
+ </div>
59341
+
59342
+ <div class="details-collapse" [class.details-collapse-expanded]="calculationState() !== 'results' || detailsExpanded()">
59343
+ <div class="details-collapse-content">
59344
+ <div class="relative pt-6 mt-6">
59345
+ <div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
59346
+ <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
59347
+ <span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
59348
+ vs. {{ priorYear() }}
59349
+ </span>
59350
+ <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
59351
+ </div>
59352
+ <div class="grid grid-cols-2 gap-4 pt-2">
59353
+ <div>
59354
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
59355
+ Increase Amount
59356
+ </p>
59357
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
59358
+ @if (isTargetValid()) {
59359
+ {{ formatCurrency(animatedIncreaseAmount()) }}
59360
+ } @else {
59361
+ --
59362
+ }
59363
+ </p>
59364
+ </div>
59365
+ <div>
59366
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
59367
+ % Growth
59368
+ </p>
59369
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
59370
+ @if (isTargetValid()) {
59371
+ +{{ formatPercentage(animatedPercentageGrowth(), 1) }}
59372
+ } @else {
59373
+ --
59374
+ }
59375
+ </p>
59376
+ </div>
59377
+ </div>
59378
+ </div>
59379
+
59380
+ @if (currentPaceProjection() > 0) {
59381
+ <div class="relative pt-6 mt-6">
59382
+ <div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
59383
+ <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
59384
+ <span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
59385
+ {{ currentYear() }} YTD Gap
59386
+ </span>
59387
+ <div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
59388
+ </div>
59389
+ <div class="grid grid-cols-2 gap-4 pt-2">
59390
+ <div>
59391
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
59392
+ Gap to Close
59393
+ </p>
59394
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
59395
+ @if (isTargetValid()) {
59396
+ {{ formatCurrency(animatedGapAmount()) }}
59397
+ } @else {
59398
+ --
59399
+ }
59400
+ </p>
59401
+ </div>
59402
+ <div>
59403
+ <div class="flex items-center gap-1 mb-1">
59404
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
59405
+ Additional Growth Needed
59406
+ </p>
59407
+ <button
59408
+ type="button"
59409
+ [ngClass]="infoIconClasses()"
59410
+ class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
59411
+ [libSymphiqTooltip]="additionalGrowthTooltip"
59412
+ tooltipType="markdown"
59413
+ tooltipPosition="top"
59414
+ (click)="$event.stopPropagation()">
59415
+ <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
59416
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
59417
+ </svg>
59418
+ </button>
59419
+ </div>
59420
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
59421
+ @if (isTargetValid()) {
59422
+ {{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(animatedGapPercentage(), 1) }}
59423
+ } @else {
59424
+ --
59425
+ }
59426
+ </p>
59427
+ </div>
59428
+ </div>
59429
+ </div>
59430
+ }
59431
+
59432
+ </div>
59433
+ </div>
59434
+ </div>
59435
+ </div>
59436
+ }
59437
+ </div>
59438
+ </div>
59439
+ </div>
59440
+
59441
+ @if (calculationState() !== 'results') {
59442
+ <div class="w-full">
59443
+ <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
59444
+ Year-over-Year Revenue Trend
59445
+ </p>
59446
+ <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
59447
+ @if (revenueChartData()) {
59448
+ <symphiq-area-chart
59449
+ [chart]="revenueChartData()!"
59450
+ [showAxisLabels]="true"
59451
+ [viewMode]="viewMode()"
59452
+ [currencySymbol]="'$'"
59453
+ [height]="'320px'"
59454
+ />
59455
+ } @else {
59456
+ <div class="h-64 flex items-center justify-center">
59457
+ <p [ngClass]="noDataClasses()" class="text-sm">
59458
+ No revenue data available
59459
+ </p>
59460
+ </div>
59461
+ }
59462
+ </div>
59463
+ </div>
59464
+ }
59465
+ </div>
59466
+ </div>
59467
+
59468
+ <div class="metrics-section-enter" [class.metrics-section-enter-active]="showMetricsVisualization()">
59469
+ <div class="metrics-section-content">
59470
+ @if (showMetricsVisualization()) {
59471
+ <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
59472
+ <div class="mb-6">
59473
+ <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
59474
+ Contributing Metrics
59475
+ </h2>
59476
+ <p [ngClass]="sectionDescriptionClasses()" class="text-sm">
59477
+ @if (targets() === undefined && submittedAbsoluteInput() !== null) {
59478
+ To achieve your revenue target of over {{ formatCurrency(submittedAbsoluteInput()!) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
59479
+ } @else {
59480
+ To achieve your revenue target of {{ formatCurrency(displayedTargetRevenue()) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
59481
+ }
59482
+ </p>
59483
+ </div>
59484
+
59485
+ <symphiq-funnel-metrics-visualization
59486
+ [viewMode]="viewMode()"
59487
+ [calculations]="displayedMetricCalculations()"
59488
+ [pacingMetrics]="pacingMetrics()"
59489
+ (viewStageReport)="openMetricReport($event)"
59490
+ (viewRelatedMetricReport)="openMetricReport($event)"
59491
+ />
59492
+ </div>
59493
+ }
59494
+ </div>
59495
+ </div>
59496
+
59497
+ <symphiq-sticky-submit-bar
59498
+ [viewMode]="viewMode()"
59499
+ [isValid]="isValid()"
59500
+ [isSubmitting]="isCalculating()"
59501
+ [validationMessage]="validationMessage()"
59502
+ [buttonText]="submitButtonText()"
59503
+ [showCancelButton]="calculationState() === 'input' && hasStoredResponse()"
59504
+ (submitClick)="handleSubmitClick()"
59505
+ (cancelClick)="handleCancel()"
59506
+ />
59507
+
59508
+ <!-- Metric Report Modal -->
59509
+ <symphiq-metric-report-modal
59510
+ [viewMode]="viewMode()"
59511
+ [metricEnum]="selectedMetricEnum()"
59512
+ [metricData]="selectedMetricData()"
59513
+ [contributingMetrics]="selectedContributingMetrics()"
59514
+ [pacingMetrics]="pacingMetrics()"
59515
+ [isOpen]="isMetricReportOpen()"
59516
+ (closed)="closeMetricReport()"
59517
+ />
59518
+ </div>
57960
59519
  `, styles: [".calculated-card-enter{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active{grid-template-rows:1fr}.calculated-card-content{overflow:hidden}.form-area-collapse{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.form-area-collapse-hidden{grid-template-rows:0fr}.form-area-content{overflow:hidden}.chart-section-collapse{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.chart-section-collapse-hidden{grid-template-rows:0fr}.chart-section-content{overflow:hidden}.chart-in-column{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.chart-in-column-active{grid-template-rows:1fr}.chart-in-column-content{overflow:hidden}.metrics-section-enter{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s ease-out}.metrics-section-enter-active{grid-template-rows:1fr}.metrics-section-content{overflow:hidden}.details-collapse{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.details-collapse-expanded{grid-template-rows:1fr}.details-collapse-content{overflow:hidden}.chevron-rotate{transition:transform .3s ease-out}.chevron-rotate-expanded{transform:rotate(180deg)}\n"] }]
57961
59520
  }], () => [], { absoluteInputRef: [{
57962
59521
  type: ViewChild,
@@ -57965,7 +59524,7 @@ class InitialTargetSettingComponent {
57965
59524
  type: ViewChild,
57966
59525
  args: ['percentageInputRef']
57967
59526
  }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], funnelMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelMetrics", required: false }] }], mainUiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainUiData", required: false }] }], trendUiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendUiData", required: false }] }], shopId: [{ type: i0.Input, args: [{ isSignal: true, alias: "shopId", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], dataResults: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataResults", required: false }] }], reverseCalculationResponse: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverseCalculationResponse", required: false }] }], targets: [{ type: i0.Input, args: [{ isSignal: true, alias: "targets", required: false }] }], targetsCreated: [{ type: i0.Output, args: ["targetsCreated"] }], calculateRevenueRequest: [{ type: i0.Output, args: ["calculateRevenueRequest"] }] }); })();
57968
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 520 }); })();
59527
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 535 }); })();
57969
59528
 
57970
59529
  function IndeterminateSpinnerComponent_For_5_Template(rf, ctx) { if (rf & 1) {
57971
59530
  i0.ɵɵelement(0, "div", 5);
@@ -58101,7 +59660,7 @@ class IndeterminateSpinnerComponent {
58101
59660
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] }); })();
58102
59661
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(IndeterminateSpinnerComponent, { className: "IndeterminateSpinnerComponent", filePath: "lib/components/shared/indeterminate-spinner.component.ts", lineNumber: 94 }); })();
58103
59662
 
58104
- const _c0$q = () => [];
59663
+ const _c0$p = () => [];
58105
59664
  function SymphiqRevenueCalculatorDashboardComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
58106
59665
  i0.ɵɵelementStart(0, "div", 12);
58107
59666
  i0.ɵɵelement(1, "symphiq-indeterminate-spinner", 13);
@@ -58145,7 +59704,7 @@ function SymphiqRevenueCalculatorDashboardComponent_Conditional_25_Template(rf,
58145
59704
  const ctx_r0 = i0.ɵɵnextContext();
58146
59705
  i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("dataLoadStatus", ctx_r0.dataLoadStatus() ?? ctx_r0.ShopDataLoadStatusEnum.NOT_LOADED)("hasTargets", false);
58147
59706
  i0.ɵɵadvance(2);
58148
- i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("funnelMetrics", ctx_r0.funnelMetrics() ?? i0.ɵɵpureFunction0(12, _c0$q))("mainUiData", ctx_r0.mainUiData())("trendUiData", ctx_r0.trendUiData())("shopId", ctx_r0.shopId())("pacingMetrics", ctx_r0.pacingResponse())("dataResults", ctx_r0.dataResults())("reverseCalculationResponse", ctx_r0.reverseCalculationResponse())("targets", ctx_r0.targets());
59707
+ i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("funnelMetrics", ctx_r0.funnelMetrics() ?? i0.ɵɵpureFunction0(12, _c0$p))("mainUiData", ctx_r0.mainUiData())("trendUiData", ctx_r0.trendUiData())("shopId", ctx_r0.shopId())("pacingMetrics", ctx_r0.pacingResponse())("dataResults", ctx_r0.dataResults())("reverseCalculationResponse", ctx_r0.reverseCalculationResponse())("targets", ctx_r0.targets());
58149
59708
  } }
58150
59709
  function SymphiqRevenueCalculatorDashboardComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
58151
59710
  i0.ɵɵelement(0, "symphiq-revenue-calculator-welcome-banner", 14);
@@ -58950,7 +60509,7 @@ class HierarchyDisplayComponent {
58950
60509
  }], null, { hierarchyData: [{ type: i0.Input, args: [{ isSignal: true, alias: "hierarchyData", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
58951
60510
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HierarchyDisplayComponent, { className: "HierarchyDisplayComponent", filePath: "lib/components/business-analysis-dashboard/hierarchy-display.component.ts", lineNumber: 119 }); })();
58952
60511
 
58953
- const _c0$p = a0 => ({ name: "chart-bar", source: a0 });
60512
+ const _c0$o = a0 => ({ name: "chart-bar", source: a0 });
58954
60513
  const _c1$a = a0 => ({ name: "light-bulb", source: a0 });
58955
60514
  function CompetitiveBenchmarkCardComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
58956
60515
  const _r1 = i0.ɵɵgetCurrentView();
@@ -59146,7 +60705,7 @@ class CompetitiveBenchmarkCardComponent {
59146
60705
  i0.ɵɵadvance();
59147
60706
  i0.ɵɵproperty("ngClass", ctx.getSectionClasses());
59148
60707
  i0.ɵɵadvance(2);
59149
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$p, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getSectionIconClasses());
60708
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$o, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getSectionIconClasses());
59150
60709
  i0.ɵɵadvance();
59151
60710
  i0.ɵɵproperty("ngClass", ctx.getSectionTitleClasses());
59152
60711
  i0.ɵɵadvance(2);
@@ -59993,7 +61552,7 @@ class SearchButtonComponent {
59993
61552
  }], null, { isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], minimized: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimized", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], searchClick: [{ type: i0.Output, args: ["searchClick"] }] }); })();
59994
61553
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchButtonComponent, { className: "SearchButtonComponent", filePath: "lib/components/shared/search-button.component.ts", lineNumber: 30 }); })();
59995
61554
 
59996
- const _c0$o = ["searchInput"];
61555
+ const _c0$n = ["searchInput"];
59997
61556
  const _forTrack0$h = ($index, $item) => $item.id;
59998
61557
  function SearchModalComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
59999
61558
  const _r3 = i0.ɵɵgetCurrentView();
@@ -60358,7 +61917,7 @@ class SearchModalComponent {
60358
61917
  }
60359
61918
  static { this.ɵfac = function SearchModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchModalComponent)(); }; }
60360
61919
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchModalComponent, selectors: [["symphiq-search-modal"]], viewQuery: function SearchModalComponent_Query(rf, ctx) { if (rf & 1) {
60361
- i0.ɵɵviewQuery(_c0$o, 5);
61920
+ i0.ɵɵviewQuery(_c0$n, 5);
60362
61921
  } if (rf & 2) {
60363
61922
  let _t;
60364
61923
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);
@@ -61255,7 +62814,7 @@ class SimplifiedRecommendationCardComponent {
61255
62814
  }], null, { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], animationIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationIndex", required: false }] }], viewMoreClick: [{ type: i0.Output, args: ["viewMoreClick"] }] }); })();
61256
62815
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SimplifiedRecommendationCardComponent, { className: "SimplifiedRecommendationCardComponent", filePath: "lib/components/business-analysis-dashboard/simplified-recommendation-card.component.ts", lineNumber: 121 }); })();
61257
62816
 
61258
- const _c0$n = () => [0, 1, 2];
62817
+ const _c0$m = () => [0, 1, 2];
61259
62818
  const _forTrack0$g = ($index, $item) => $item.id;
61260
62819
  function RecommendationsTiledGridComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
61261
62820
  i0.ɵɵelementStart(0, "div", 9);
@@ -61325,7 +62884,7 @@ function RecommendationsTiledGridComponent_Conditional_15_Template(rf, ctx) { if
61325
62884
  i0.ɵɵelementEnd();
61326
62885
  } if (rf & 2) {
61327
62886
  i0.ɵɵadvance();
61328
- i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0$n));
62887
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0$m));
61329
62888
  } }
61330
62889
  function RecommendationsTiledGridComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
61331
62890
  i0.ɵɵelementStart(0, "div", 12)(1, "div", 27);
@@ -62243,7 +63802,7 @@ class ContentGenerationProgressWithConfettiComponent {
62243
63802
  }], () => [], { itemStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatus", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], profile: [{ type: i0.Input, args: [{ isSignal: true, alias: "profile", required: false }] }], confettiIntensity: [{ type: i0.Input, args: [{ isSignal: true, alias: "confettiIntensity", required: false }] }], enableConfetti: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableConfetti", required: false }] }], confettiDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "confettiDelay", required: false }] }] }); })();
62244
63803
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContentGenerationProgressWithConfettiComponent, { className: "ContentGenerationProgressWithConfettiComponent", filePath: "lib/components/shared/content-generation-progress-with-confetti.component.ts", lineNumber: 29 }); })();
62245
63804
 
62246
- const _c0$m = () => [];
63805
+ const _c0$l = () => [];
62247
63806
  function SymphiqBusinessAnalysisDashboardComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
62248
63807
  const _r1 = i0.ɵɵgetCurrentView();
62249
63808
  i0.ɵɵelementStart(0, "div", 8)(1, "symphiq-search-button", 19);
@@ -62377,7 +63936,7 @@ function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_1_
62377
63936
  const ɵ$index_108_r7 = i0.ɵɵnextContext().$index;
62378
63937
  const ctx_r1 = i0.ɵɵnextContext(3);
62379
63938
  i0.ɵɵadvance();
62380
- i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("subsections", ctx_r1.sections()[ɵ$index_108_r7 + 1].subsections || i0.ɵɵpureFunction0(2, _c0$m));
63939
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("subsections", ctx_r1.sections()[ɵ$index_108_r7 + 1].subsections || i0.ɵɵpureFunction0(2, _c0$l));
62381
63940
  } }
62382
63941
  function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
62383
63942
  i0.ɵɵelement(0, "symphiq-profile-section", 34);
@@ -65053,7 +66612,7 @@ class FocusAreaHealthIndicatorComponent {
65053
66612
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], health: [{ type: i0.Input, args: [{ isSignal: true, alias: "health", required: false }] }] }); })();
65054
66613
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaHealthIndicatorComponent, { className: "FocusAreaHealthIndicatorComponent", filePath: "lib/components/profile-analysis-dashboard/focus-area-health-indicator.component.ts", lineNumber: 46 }); })();
65055
66614
 
65056
- const _c0$l = a0 => ({ name: "chevron-right", source: a0 });
66615
+ const _c0$k = a0 => ({ name: "chevron-right", source: a0 });
65057
66616
  const _forTrack0$e = ($index, $item) => $item.id;
65058
66617
  function RelatedGoalChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
65059
66618
  const _r1 = i0.ɵɵgetCurrentView();
@@ -65071,7 +66630,7 @@ function RelatedGoalChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (r
65071
66630
  i0.ɵɵadvance(2);
65072
66631
  i0.ɵɵtextInterpolate(goal_r2.title);
65073
66632
  i0.ɵɵadvance();
65074
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$l, ctx_r2.IconSourceEnum.HEROICONS));
66633
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$k, ctx_r2.IconSourceEnum.HEROICONS));
65075
66634
  } }
65076
66635
  function RelatedGoalChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
65077
66636
  i0.ɵɵelementStart(0, "div", 0);
@@ -65144,7 +66703,7 @@ class RelatedGoalChipsComponent {
65144
66703
  }], null, { relatedGoalIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "relatedGoalIds", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
65145
66704
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedGoalChipsComponent, { className: "RelatedGoalChipsComponent", filePath: "lib/components/profile-analysis-dashboard/shared/related-goal-chips.component.ts", lineNumber: 31 }); })();
65146
66705
 
65147
- const _c0$k = a0 => ({ name: "chevron-right", source: a0 });
66706
+ const _c0$j = a0 => ({ name: "chevron-right", source: a0 });
65148
66707
  const _c1$9 = a0 => ({ name: "chevron-down", source: a0 });
65149
66708
  const _c2$7 = a0 => [a0];
65150
66709
  function FocusAreaExecutiveSummaryComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
@@ -65473,7 +67032,7 @@ class FocusAreaExecutiveSummaryComponent {
65473
67032
  i0.ɵɵadvance(2);
65474
67033
  i0.ɵɵproperty("ngClass", ctx.getTopPrioritiesButtonTextClasses());
65475
67034
  i0.ɵɵadvance(2);
65476
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(22, _c0$k, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getTopPrioritiesButtonTextClasses());
67035
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(22, _c0$j, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getTopPrioritiesButtonTextClasses());
65477
67036
  i0.ɵɵadvance();
65478
67037
  i0.ɵɵproperty("ngClass", ctx.getQuickWinsStatCardClasses());
65479
67038
  i0.ɵɵadvance();
@@ -65684,7 +67243,7 @@ class FocusAreaExecutiveSummaryComponent {
65684
67243
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], topPrioritiesClick: [{ type: i0.Output, args: ["topPrioritiesClick"] }], priorityDetailClick: [{ type: i0.Output, args: ["priorityDetailClick"] }] }); })();
65685
67244
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaExecutiveSummaryComponent, { className: "FocusAreaExecutiveSummaryComponent", filePath: "lib/components/profile-analysis-dashboard/focus-area-executive-summary.component.ts", lineNumber: 195 }); })();
65686
67245
 
65687
- const _c0$j = a0 => ({ name: "chart-bar", source: a0 });
67246
+ const _c0$i = a0 => ({ name: "chart-bar", source: a0 });
65688
67247
  const _c1$8 = a0 => ({ name: "signal", source: a0 });
65689
67248
  const _c2$6 = (a0, a1) => ({ name: a0, source: a1 });
65690
67249
  const _c3$4 = a0 => ({ name: "flag", source: a0 });
@@ -66220,7 +67779,7 @@ class MetricExecutiveSummaryComponent {
66220
67779
  i0.ɵɵadvance();
66221
67780
  i0.ɵɵproperty("ngClass", ctx.bannerClasses());
66222
67781
  i0.ɵɵadvance(5);
66223
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(19, _c0$j, ctx.iconSource))("size", "w-8 h-8")("ngClass", ctx.iconClasses());
67782
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(19, _c0$i, ctx.iconSource))("size", "w-8 h-8")("ngClass", ctx.iconClasses());
66224
67783
  i0.ɵɵadvance();
66225
67784
  i0.ɵɵproperty("ngClass", ctx.titleClasses());
66226
67785
  i0.ɵɵadvance();
@@ -66539,7 +68098,7 @@ class MetricExecutiveSummaryComponent {
66539
68098
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: true }] }], metricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricName", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], topPrioritiesClick: [{ type: i0.Output, args: ["topPrioritiesClick"] }], priorityDetailClick: [{ type: i0.Output, args: ["priorityDetailClick"] }] }); })();
66540
68099
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricExecutiveSummaryComponent, { className: "MetricExecutiveSummaryComponent", filePath: "lib/components/profile-analysis-dashboard/metric-executive-summary.component.ts", lineNumber: 287 }); })();
66541
68100
 
66542
- const _c0$i = a0 => ({ name: "chevron-right", source: a0 });
68101
+ const _c0$h = a0 => ({ name: "chevron-right", source: a0 });
66543
68102
  function GoalCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
66544
68103
  i0.ɵɵelementStart(0, "span", 12);
66545
68104
  i0.ɵɵtext(1);
@@ -66824,7 +68383,7 @@ function GoalCardComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
66824
68383
  i0.ɵɵadvance();
66825
68384
  i0.ɵɵtextInterpolate1(" ", ctx_r0.goal().objectives.length, " ");
66826
68385
  i0.ɵɵadvance();
66827
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(5, _c0$i, ctx_r0.IconSourceEnum.HEROICONS));
68386
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(5, _c0$h, ctx_r0.IconSourceEnum.HEROICONS));
66828
68387
  } }
66829
68388
  function GoalCardComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
66830
68389
  const _r6 = i0.ɵɵgetCurrentView();
@@ -67446,7 +69005,7 @@ class GoalCardComponent {
67446
69005
  }], () => [], { goal: [{ type: i0.Input, args: [{ isSignal: true, alias: "goal", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goalIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalIndex", required: false }] }], sectionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionIndex", required: false }] }], isInModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInModal", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }], businessProfile: [{ type: i0.Input, args: [{ isSignal: true, alias: "businessProfile", required: false }] }] }); })();
67447
69006
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalCardComponent, { className: "GoalCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/goal-card.component.ts", lineNumber: 239 }); })();
67448
69007
 
67449
- const _c0$h = a0 => ({ name: "link", source: a0 });
69008
+ const _c0$g = a0 => ({ name: "link", source: a0 });
67450
69009
  function CapabilityMatrixCardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
67451
69010
  i0.ɵɵelementStart(0, "p", 4);
67452
69011
  i0.ɵɵtext(1);
@@ -67509,7 +69068,7 @@ function CapabilityMatrixCardComponent_Conditional_29_Template(rf, ctx) { if (rf
67509
69068
  } if (rf & 2) {
67510
69069
  const ctx_r0 = i0.ɵɵnextContext();
67511
69070
  i0.ɵɵadvance(2);
67512
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$h, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.relatedGoalsIconClasses());
69071
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$g, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.relatedGoalsIconClasses());
67513
69072
  i0.ɵɵadvance();
67514
69073
  i0.ɵɵproperty("ngClass", ctx_r0.relatedGoalsTitleClasses());
67515
69074
  i0.ɵɵadvance(2);
@@ -68428,7 +69987,7 @@ class CompetitiveComparisonCardComponent {
68428
69987
  }], () => [], { comparison: [{ type: i0.Input, args: [{ isSignal: true, alias: "comparison", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
68429
69988
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitiveComparisonCardComponent, { className: "CompetitiveComparisonCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/competitive-comparison-card.component.ts", lineNumber: 125 }); })();
68430
69989
 
68431
- const _c0$g = a0 => ({ name: "chevron-right", source: a0 });
69990
+ const _c0$f = a0 => ({ name: "chevron-right", source: a0 });
68432
69991
  const _forTrack0$c = ($index, $item) => $item.id;
68433
69992
  function PhaseTimelineCardComponent_Conditional_8_For_7_Template(rf, ctx) { if (rf & 1) {
68434
69993
  const _r1 = i0.ɵɵgetCurrentView();
@@ -68446,7 +70005,7 @@ function PhaseTimelineCardComponent_Conditional_8_For_7_Template(rf, ctx) { if (
68446
70005
  i0.ɵɵadvance(2);
68447
70006
  i0.ɵɵtextInterpolate(goal_r2.title);
68448
70007
  i0.ɵɵadvance();
68449
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$g, ctx_r2.IconSourceEnum.HEROICONS));
70008
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$f, ctx_r2.IconSourceEnum.HEROICONS));
68450
70009
  } }
68451
70010
  function PhaseTimelineCardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
68452
70011
  i0.ɵɵelementStart(0, "div", 7)(1, "h6", 10);
@@ -68854,7 +70413,7 @@ class PhaseTimelineCardComponent {
68854
70413
  }], () => [], { phase: [{ type: i0.Input, args: [{ isSignal: true, alias: "phase", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isLast: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLast", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }] }); })();
68855
70414
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PhaseTimelineCardComponent, { className: "PhaseTimelineCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/phase-timeline-card.component.ts", lineNumber: 123 }); })();
68856
70415
 
68857
- const _c0$f = a0 => ({ name: "chevron-right", source: a0 });
70416
+ const _c0$e = a0 => ({ name: "chevron-right", source: a0 });
68858
70417
  function OperationalCategoryCardComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
68859
70418
  i0.ɵɵelementStart(0, "div", 13)(1, "div", 19)(2, "span", 20);
68860
70419
  i0.ɵɵtext(3, "Industry Benchmark");
@@ -68900,7 +70459,7 @@ function OperationalCategoryCardComponent_Conditional_20_Template(rf, ctx) { if
68900
70459
  i0.ɵɵadvance(4);
68901
70460
  i0.ɵɵtextInterpolate2("", (tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.strengths == null ? null : tmp_2_0.strengths.length, " Strength", ((tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.strengths == null ? null : tmp_2_0.strengths.length) !== 1 ? "s" : "");
68902
70461
  i0.ɵɵadvance();
68903
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$f, ctx_r0.IconSourceEnum.HEROICONS));
70462
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
68904
70463
  } }
68905
70464
  function OperationalCategoryCardComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
68906
70465
  const _r3 = i0.ɵɵgetCurrentView();
@@ -68923,7 +70482,7 @@ function OperationalCategoryCardComponent_Conditional_21_Template(rf, ctx) { if
68923
70482
  i0.ɵɵadvance(4);
68924
70483
  i0.ɵɵtextInterpolate2("", (tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.gaps == null ? null : tmp_2_0.gaps.length, " Gap", ((tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.gaps == null ? null : tmp_2_0.gaps.length) !== 1 ? "s" : "");
68925
70484
  i0.ɵɵadvance();
68926
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$f, ctx_r0.IconSourceEnum.HEROICONS));
70485
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
68927
70486
  } }
68928
70487
  function OperationalCategoryCardComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
68929
70488
  const _r4 = i0.ɵɵgetCurrentView();
@@ -68946,7 +70505,7 @@ function OperationalCategoryCardComponent_Conditional_22_Template(rf, ctx) { if
68946
70505
  i0.ɵɵadvance(4);
68947
70506
  i0.ɵɵtextInterpolate2("", (tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.opportunities == null ? null : tmp_2_0.opportunities.length, " Opportunit", ((tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.opportunities == null ? null : tmp_2_0.opportunities.length) !== 1 ? "ies" : "y");
68948
70507
  i0.ɵɵadvance();
68949
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$f, ctx_r0.IconSourceEnum.HEROICONS));
70508
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
68950
70509
  } }
68951
70510
  function OperationalCategoryCardComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
68952
70511
  const _r5 = i0.ɵɵgetCurrentView();
@@ -69453,7 +71012,7 @@ class OperationalCategoryCardComponent {
69453
71012
  }], () => [], { category: [{ type: i0.Input, args: [{ isSignal: true, alias: "category", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], categoryClick: [{ type: i0.Output, args: ["categoryClick"] }] }); })();
69454
71013
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OperationalCategoryCardComponent, { className: "OperationalCategoryCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/operational-category-card.component.ts", lineNumber: 164 }); })();
69455
71014
 
69456
- const _c0$e = a0 => ({ name: "arrow-trending-up", source: a0 });
71015
+ const _c0$d = a0 => ({ name: "arrow-trending-up", source: a0 });
69457
71016
  const _c1$7 = a0 => ({ name: "chat-bubble-left-right", source: a0 });
69458
71017
  const _forTrack0$b = ($index, $item) => $item.questionId;
69459
71018
  function KeyDriverCardComponent_Conditional_12_For_6_Template(rf, ctx) { if (rf & 1) {
@@ -69587,7 +71146,7 @@ class KeyDriverCardComponent {
69587
71146
  i0.ɵɵadvance(3);
69588
71147
  i0.ɵɵproperty("ngClass", ctx.iconClasses());
69589
71148
  i0.ɵɵadvance();
69590
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(10, _c0$e, ctx.iconSource));
71149
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(10, _c0$d, ctx.iconSource));
69591
71150
  i0.ɵɵadvance(2);
69592
71151
  i0.ɵɵproperty("ngClass", ctx.titleClasses());
69593
71152
  i0.ɵɵadvance();
@@ -69663,7 +71222,7 @@ class KeyDriverCardComponent {
69663
71222
  }], null, { driver: [{ type: i0.Input, args: [{ isSignal: true, alias: "driver", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
69664
71223
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyDriverCardComponent, { className: "KeyDriverCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/key-driver-card.component.ts", lineNumber: 73 }); })();
69665
71224
 
69666
- const _c0$d = a0 => ({ name: "exclamation-triangle", source: a0 });
71225
+ const _c0$c = a0 => ({ name: "exclamation-triangle", source: a0 });
69667
71226
  const _c1$6 = a0 => ({ name: "chat-bubble-left-right", source: a0 });
69668
71227
  const _forTrack0$a = ($index, $item) => $item.questionId;
69669
71228
  function BottleneckCardComponent_Conditional_12_For_6_Template(rf, ctx) { if (rf & 1) {
@@ -69819,7 +71378,7 @@ class BottleneckCardComponent {
69819
71378
  i0.ɵɵadvance(3);
69820
71379
  i0.ɵɵproperty("ngClass", ctx.iconClasses());
69821
71380
  i0.ɵɵadvance();
69822
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(14, _c0$d, ctx.iconSource));
71381
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(14, _c0$c, ctx.iconSource));
69823
71382
  i0.ɵɵadvance(2);
69824
71383
  i0.ɵɵproperty("ngClass", ctx.titleClasses());
69825
71384
  i0.ɵɵadvance();
@@ -69890,7 +71449,7 @@ class BottleneckCardComponent {
69890
71449
  }], null, { bottleneck: [{ type: i0.Input, args: [{ isSignal: true, alias: "bottleneck", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
69891
71450
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BottleneckCardComponent, { className: "BottleneckCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/bottleneck-card.component.ts", lineNumber: 104 }); })();
69892
71451
 
69893
- const _c0$c = a0 => ({ name: "arrow-right", source: a0 });
71452
+ const _c0$b = a0 => ({ name: "arrow-right", source: a0 });
69894
71453
  const _c1$5 = a0 => ({ name: "arrow-left", source: a0 });
69895
71454
  const _c2$5 = a0 => ({ name: "arrows-right-left", source: a0 });
69896
71455
  const _c3$3 = a0 => ({ name: "scale", source: a0 });
@@ -69922,7 +71481,7 @@ function MetricRelationshipsCardComponent_Conditional_1_Template(rf, ctx) { if (
69922
71481
  i0.ɵɵadvance(2);
69923
71482
  i0.ɵɵproperty("ngClass", ctx_r1.getIconClasses("influences"));
69924
71483
  i0.ɵɵadvance();
69925
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$c, ctx_r1.iconSource));
71484
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$b, ctx_r1.iconSource));
69926
71485
  i0.ɵɵadvance();
69927
71486
  i0.ɵɵproperty("ngClass", ctx_r1.titleClasses());
69928
71487
  i0.ɵɵadvance(3);
@@ -70192,7 +71751,7 @@ class MetricRelationshipsCardComponent {
70192
71751
  }], null, { relationships: [{ type: i0.Input, args: [{ isSignal: true, alias: "relationships", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
70193
71752
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricRelationshipsCardComponent, { className: "MetricRelationshipsCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/metric-relationships-card.component.ts", lineNumber: 105 }); })();
70194
71753
 
70195
- const _c0$b = a0 => ({ name: "link", source: a0 });
71754
+ const _c0$a = a0 => ({ name: "link", source: a0 });
70196
71755
  function RelatedMetricCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
70197
71756
  i0.ɵɵelementStart(0, "div", 9);
70198
71757
  i0.ɵɵelement(1, "symphiq-icon", 10);
@@ -70203,7 +71762,7 @@ function RelatedMetricCardComponent_Conditional_13_Template(rf, ctx) { if (rf &
70203
71762
  const ctx_r0 = i0.ɵɵnextContext();
70204
71763
  i0.ɵɵproperty("ngClass", ctx_r0.borderClasses());
70205
71764
  i0.ɵɵadvance();
70206
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$b, ctx_r0.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r0.sharedGoalsIconClasses());
71765
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$a, ctx_r0.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r0.sharedGoalsIconClasses());
70207
71766
  i0.ɵɵadvance();
70208
71767
  i0.ɵɵproperty("ngClass", ctx_r0.sharedGoalsTextClasses());
70209
71768
  i0.ɵɵadvance();
@@ -70872,7 +72431,7 @@ class RelatedMetricsListComponent {
70872
72431
  }], null, { relatedMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "relatedMetrics", required: true }] }], currentMetricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentMetricName", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], metricClicked: [{ type: i0.Output, args: ["metricClicked"] }] }); })();
70873
72432
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedMetricsListComponent, { className: "RelatedMetricsListComponent", filePath: "lib/components/profile-analysis-dashboard/cards/related-metrics-list.component.ts", lineNumber: 170 }); })();
70874
72433
 
70875
- const _c0$a = (a0, a1) => ({ name: a0, source: a1 });
72434
+ const _c0$9 = (a0, a1) => ({ name: a0, source: a1 });
70876
72435
  const _c1$4 = a0 => ({ name: "signal", source: a0 });
70877
72436
  const _c2$4 = a0 => ({ name: "calendar", source: a0 });
70878
72437
  const _c3$2 = a0 => ({ name: "flag", source: a0 });
@@ -71082,7 +72641,7 @@ class PerformanceMetricsCardComponent {
71082
72641
  i0.ɵɵadvance();
71083
72642
  i0.ɵɵproperty("ngClass", ctx.trendBadgeClasses());
71084
72643
  i0.ɵɵadvance();
71085
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(32, _c0$a, ctx.trendIcon(), ctx.iconSource));
72644
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(32, _c0$9, ctx.trendIcon(), ctx.iconSource));
71086
72645
  i0.ɵɵadvance();
71087
72646
  i0.ɵɵtextInterpolate1(" ", ctx.metrics().trendDirection, " ");
71088
72647
  i0.ɵɵadvance(2);
@@ -71230,7 +72789,7 @@ class PerformanceMetricsCardComponent {
71230
72789
  }], () => [], { performanceMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "performanceMetrics", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] }); })();
71231
72790
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PerformanceMetricsCardComponent, { className: "PerformanceMetricsCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/performance-metrics-card.component.ts", lineNumber: 144 }); })();
71232
72791
 
71233
- const _c0$9 = a0 => ({ name: "funnel", source: a0 });
72792
+ const _c0$8 = a0 => ({ name: "funnel", source: a0 });
71234
72793
  const _c1$3 = a0 => ({ name: "chart-bar-square", source: a0 });
71235
72794
  const _c2$3 = a0 => ({ name: "chevron-right", source: a0 });
71236
72795
  const _c3$1 = a0 => ({ name: "arrow-left", source: a0 });
@@ -71421,7 +72980,7 @@ class FunnelContextCardComponent {
71421
72980
  } if (rf & 2) {
71422
72981
  i0.ɵɵproperty("ngClass", ctx.cardClasses());
71423
72982
  i0.ɵɵadvance(2);
71424
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(13, _c0$9, ctx.iconSource))("ngClass", ctx.iconClasses());
72983
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(13, _c0$8, ctx.iconSource))("ngClass", ctx.iconClasses());
71425
72984
  i0.ɵɵadvance();
71426
72985
  i0.ɵɵproperty("ngClass", ctx.headerClasses());
71427
72986
  i0.ɵɵadvance(3);
@@ -71557,7 +73116,7 @@ class FunnelContextCardComponent {
71557
73116
  }], () => [], { funnelContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelContext", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], metricClick: [{ type: i0.Output, args: ["metricClick"] }] }); })();
71558
73117
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelContextCardComponent, { className: "FunnelContextCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/funnel-context-card.component.ts", lineNumber: 125 }); })();
71559
73118
 
71560
- const _c0$8 = (a0, a1) => ({ name: a0, source: a1 });
73119
+ const _c0$7 = (a0, a1) => ({ name: a0, source: a1 });
71561
73120
  const _c1$2 = a0 => ({ name: "target", source: a0 });
71562
73121
  const _c2$2 = a0 => ({ name: "star", source: a0 });
71563
73122
  class MetricComparisonStatsComponent {
@@ -71768,7 +73327,7 @@ class MetricComparisonStatsComponent {
71768
73327
  i0.ɵɵadvance();
71769
73328
  i0.ɵɵproperty("ngClass", ctx.statCardClasses());
71770
73329
  i0.ɵɵadvance(2);
71771
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(24, _c0$8, ctx.yoyIcon(), ctx.iconSource))("ngClass", ctx.yoyIconClasses());
73330
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(24, _c0$7, ctx.yoyIcon(), ctx.iconSource))("ngClass", ctx.yoyIconClasses());
71772
73331
  i0.ɵɵadvance();
71773
73332
  i0.ɵɵproperty("ngClass", ctx.labelClasses());
71774
73333
  i0.ɵɵadvance(2);
@@ -72000,7 +73559,7 @@ class PerformanceOverviewContainerComponent {
72000
73559
  }], () => [], { performanceOverviewData: [{ type: i0.Input, args: [{ isSignal: true, alias: "performanceOverviewData", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], metricClick: [{ type: i0.Output, args: ["metricClick"] }] }); })();
72001
73560
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PerformanceOverviewContainerComponent, { className: "PerformanceOverviewContainerComponent", filePath: "lib/components/profile-analysis-dashboard/cards/performance-overview-container.component.ts", lineNumber: 58 }); })();
72002
73561
 
72003
- const _c0$7 = a0 => ({ name: "chevron-right", source: a0 });
73562
+ const _c0$6 = a0 => ({ name: "chevron-right", source: a0 });
72004
73563
  const _c1$1 = a0 => ({ name: "chevron-down", source: a0 });
72005
73564
  const _c2$1 = a0 => ({ name: "clock", source: a0 });
72006
73565
  const _c3 = a0 => [a0];
@@ -72203,7 +73762,7 @@ function ProfileSectionContentComponent_Conditional_1_Template(rf, ctx) { if (rf
72203
73762
  i0.ɵɵadvance(2);
72204
73763
  i0.ɵɵproperty("ngClass", ctx_r1.keyStrengthsButtonClasses());
72205
73764
  i0.ɵɵadvance(2);
72206
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(26, _c0$7, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.keyStrengthsButtonClasses());
73765
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(26, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.keyStrengthsButtonClasses());
72207
73766
  i0.ɵɵadvance();
72208
73767
  i0.ɵɵproperty("ngClass", ctx_r1.criticalGapsCardClasses());
72209
73768
  i0.ɵɵadvance();
@@ -72215,7 +73774,7 @@ function ProfileSectionContentComponent_Conditional_1_Template(rf, ctx) { if (rf
72215
73774
  i0.ɵɵadvance(2);
72216
73775
  i0.ɵɵproperty("ngClass", ctx_r1.criticalGapsButtonClasses());
72217
73776
  i0.ɵɵadvance(2);
72218
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$7, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.criticalGapsButtonClasses());
73777
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.criticalGapsButtonClasses());
72219
73778
  i0.ɵɵadvance();
72220
73779
  i0.ɵɵproperty("ngClass", ctx_r1.quickWinsCardClasses());
72221
73780
  i0.ɵɵadvance();
@@ -72294,7 +73853,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
72294
73853
  i0.ɵɵadvance(2);
72295
73854
  i0.ɵɵproperty("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
72296
73855
  i0.ɵɵadvance(2);
72297
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$7, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
73856
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
72298
73857
  i0.ɵɵadvance();
72299
73858
  i0.ɵɵproperty("ngClass", ctx_r1.focusAreaGapsStatCardClasses());
72300
73859
  i0.ɵɵadvance();
@@ -72306,7 +73865,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
72306
73865
  i0.ɵɵadvance(2);
72307
73866
  i0.ɵɵproperty("ngClass", ctx_r1.focusAreaGapsButtonClasses());
72308
73867
  i0.ɵɵadvance(2);
72309
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(23, _c0$7, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaGapsButtonClasses());
73868
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(23, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaGapsButtonClasses());
72310
73869
  i0.ɵɵadvance();
72311
73870
  i0.ɵɵproperty("ngClass", ctx_r1.focusAreaOpportunitiesStatCardClasses());
72312
73871
  i0.ɵɵadvance();
@@ -72318,7 +73877,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
72318
73877
  i0.ɵɵadvance(2);
72319
73878
  i0.ɵɵproperty("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
72320
73879
  i0.ɵɵadvance(2);
72321
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(25, _c0$7, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
73880
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(25, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
72322
73881
  } }
72323
73882
  function ProfileSectionContentComponent_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
72324
73883
  i0.ɵɵelementStart(0, "div");
@@ -72665,7 +74224,7 @@ function ProfileSectionContentComponent_Conditional_11_Conditional_2_For_5_Condi
72665
74224
  i0.ɵɵadvance(2);
72666
74225
  i0.ɵɵtextInterpolate1("", ctx_r1.getTacticalRecRelatedMetricsCount(recommendation_r19), " Related Metrics");
72667
74226
  i0.ɵɵadvance();
72668
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$7, ctx_r1.IconSourceEnumValue.HEROICONS));
74227
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS));
72669
74228
  } }
72670
74229
  function ProfileSectionContentComponent_Conditional_11_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
72671
74230
  i0.ɵɵelementStart(0, "div", 16)(1, "div", 69)(2, "h4", 75);
@@ -78080,7 +79639,7 @@ class StrategyRecommendationsModalContentComponent {
78080
79639
  }], null, { strategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "strategy", required: false }] }], objectiveTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "objectiveTitle", required: false }] }], goalTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalTitle", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], allBusinessInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allBusinessInsights", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }] }); })();
78081
79640
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StrategyRecommendationsModalContentComponent, { className: "StrategyRecommendationsModalContentComponent", filePath: "lib/components/profile-analysis-dashboard/modals/strategy-recommendations-modal-content.component.ts", lineNumber: 489 }); })();
78082
79641
 
78083
- const _c0$6 = a0 => ({ name: "chevron-right", source: a0 });
79642
+ const _c0$5 = a0 => ({ name: "chevron-right", source: a0 });
78084
79643
  function CategoryDetailModalContentComponent_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
78085
79644
  i0.ɵɵelementStart(0, "div")(1, "span", 19);
78086
79645
  i0.ɵɵtext(2, "Industry:");
@@ -78193,7 +79752,7 @@ function CategoryDetailModalContentComponent_Conditional_17_For_7_Template(rf, c
78193
79752
  i0.ɵɵadvance();
78194
79753
  i0.ɵɵtextInterpolate1(" ", strength_r3 == null ? null : strength_r3.description, " ");
78195
79754
  i0.ɵɵadvance();
78196
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(7, _c0$6, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
79755
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(7, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
78197
79756
  } }
78198
79757
  function CategoryDetailModalContentComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
78199
79758
  i0.ɵɵelementStart(0, "div", 27)(1, "h4", 15);
@@ -78260,7 +79819,7 @@ function CategoryDetailModalContentComponent_Conditional_18_For_7_Template(rf, c
78260
79819
  i0.ɵɵadvance();
78261
79820
  i0.ɵɵtextInterpolate1(" ", gap_r5 == null ? null : gap_r5.description, " ");
78262
79821
  i0.ɵɵadvance();
78263
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$6, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
79822
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
78264
79823
  } }
78265
79824
  function CategoryDetailModalContentComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
78266
79825
  i0.ɵɵelementStart(0, "div", 38)(1, "h4", 15);
@@ -78327,7 +79886,7 @@ function CategoryDetailModalContentComponent_Conditional_19_For_7_Template(rf, c
78327
79886
  i0.ɵɵadvance();
78328
79887
  i0.ɵɵconditional((opportunity_r7 == null ? null : opportunity_r7.potentialImpact) ? 7 : -1);
78329
79888
  i0.ɵɵadvance();
78330
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$6, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
79889
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
78331
79890
  } }
78332
79891
  function CategoryDetailModalContentComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
78333
79892
  i0.ɵɵelementStart(0, "div", 44)(1, "h4", 15);
@@ -79209,7 +80768,7 @@ class StrengthDetailModalContentComponent {
79209
80768
  }], null, { strength: [{ type: i0.Input, args: [{ isSignal: true, alias: "strength", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], allFunnelStrengths: [{ type: i0.Input, args: [{ isSignal: true, alias: "allFunnelStrengths", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }] }); })();
79210
80769
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StrengthDetailModalContentComponent, { className: "StrengthDetailModalContentComponent", filePath: "lib/components/profile-analysis-dashboard/modals/strength-detail-modal-content.component.ts", lineNumber: 124 }); })();
79211
80770
 
79212
- const _c0$5 = () => [];
80771
+ const _c0$4 = () => [];
79213
80772
  function GapDetailModalContentComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
79214
80773
  i0.ɵɵelementStart(0, "span", 9);
79215
80774
  i0.ɵɵtext(1);
@@ -79322,7 +80881,7 @@ function GapDetailModalContentComponent_Conditional_16_Template(rf, ctx) { if (r
79322
80881
  i0.ɵɵclassMap(ctx_r0.isDark() ? "border-slate-700" : "border-slate-200");
79323
80882
  i0.ɵɵproperty("ngClass", ctx_r0.sectionTitleClasses());
79324
80883
  i0.ɵɵadvance(2);
79325
- i0.ɵɵproperty("relatedGoalIds", ((tmp_4_0 = ctx_r0.gap()) == null ? null : tmp_4_0.linkedGoalIds) ?? i0.ɵɵpureFunction0(7, _c0$5))("allGoals", ctx_r0.allGoals())("viewMode", ctx_r0.viewMode());
80884
+ i0.ɵɵproperty("relatedGoalIds", ((tmp_4_0 = ctx_r0.gap()) == null ? null : tmp_4_0.linkedGoalIds) ?? i0.ɵɵpureFunction0(7, _c0$4))("allGoals", ctx_r0.allGoals())("viewMode", ctx_r0.viewMode());
79326
80885
  } }
79327
80886
  function GapDetailModalContentComponent_Conditional_17_For_5_Template(rf, ctx) { if (rf & 1) {
79328
80887
  i0.ɵɵelementStart(0, "div", 25);
@@ -79606,7 +81165,7 @@ class GapDetailModalContentComponent {
79606
81165
  }], null, { gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], allWeaknesses: [{ type: i0.Input, args: [{ isSignal: true, alias: "allWeaknesses", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }] }); })();
79607
81166
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GapDetailModalContentComponent, { className: "GapDetailModalContentComponent", filePath: "lib/components/profile-analysis-dashboard/modals/gap-detail-modal-content.component.ts", lineNumber: 129 }); })();
79608
81167
 
79609
- const _c0$4 = a0 => ({ name: "chevron-right", source: a0 });
81168
+ const _c0$3 = a0 => ({ name: "chevron-right", source: a0 });
79610
81169
  const _forTrack0$3 = ($index, $item) => $item.id || $index;
79611
81170
  function OpportunityDetailModalContentComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
79612
81171
  i0.ɵɵelementStart(0, "div", 9)(1, "h4", 10);
@@ -79711,7 +81270,7 @@ function OpportunityDetailModalContentComponent_Conditional_14_Conditional_0_For
79711
81270
  i0.ɵɵadvance(2);
79712
81271
  i0.ɵɵtextInterpolate(goal_r5.title || goal_r5.id);
79713
81272
  i0.ɵɵadvance();
79714
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$4, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
81273
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$3, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
79715
81274
  } }
79716
81275
  function OpportunityDetailModalContentComponent_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
79717
81276
  i0.ɵɵelementStart(0, "div", 9)(1, "h4", 24);
@@ -81313,7 +82872,7 @@ class CollapsibleAnalysisSectionGroupComponent {
81313
82872
  }], null, { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], executiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "executiveSummary", required: false }] }], focusAreaExecutiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaExecutiveSummary", required: false }] }], metricExecutiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricExecutiveSummary", required: false }] }], metricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricName", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], businessProfile: [{ type: i0.Input, args: [{ isSignal: true, alias: "businessProfile", required: false }] }] }); })();
81314
82873
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollapsibleAnalysisSectionGroupComponent, { className: "CollapsibleAnalysisSectionGroupComponent", filePath: "lib/components/profile-analysis-dashboard/cards/collapsible-analysis-section-group.component.ts", lineNumber: 172 }); })();
81315
82874
 
81316
- const _c0$3 = a0 => ({ name: "chevron-right", source: a0 });
82875
+ const _c0$2 = a0 => ({ name: "chevron-right", source: a0 });
81317
82876
  const _c1 = a0 => ({ name: "chevron-down", source: a0 });
81318
82877
  const _c2 = a0 => [a0];
81319
82878
  const _forTrack0 = ($index, $item) => $item.id;
@@ -81590,7 +83149,7 @@ function SymphiqProfileAnalysisDashboardComponent_Conditional_10_Conditional_0_T
81590
83149
  i0.ɵɵadvance(2);
81591
83150
  i0.ɵɵproperty("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
81592
83151
  i0.ɵɵadvance(2);
81593
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$3, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
83152
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$2, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
81594
83153
  i0.ɵɵadvance();
81595
83154
  i0.ɵɵproperty("ngClass", ctx_r1.getCriticalGapsStatCardClasses());
81596
83155
  i0.ɵɵadvance();
@@ -81602,7 +83161,7 @@ function SymphiqProfileAnalysisDashboardComponent_Conditional_10_Conditional_0_T
81602
83161
  i0.ɵɵadvance(2);
81603
83162
  i0.ɵɵproperty("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
81604
83163
  i0.ɵɵadvance(2);
81605
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(30, _c0$3, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
83164
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(30, _c0$2, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
81606
83165
  i0.ɵɵadvance();
81607
83166
  i0.ɵɵproperty("ngClass", ctx_r1.getQuickWinsStatCardClasses());
81608
83167
  i0.ɵɵadvance();
@@ -83233,469 +84792,6 @@ class ScrollProgressBarComponent {
83233
84792
  }], null, { progress: [{ type: i0.Input, args: [{ isSignal: true, alias: "progress", required: false }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }] }); })();
83234
84793
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ScrollProgressBarComponent, { className: "ScrollProgressBarComponent", filePath: "lib/components/shared/scroll-progress-bar.component.ts", lineNumber: 23 }); })();
83235
84794
 
83236
- const _c0$2 = ["chartdiv"];
83237
- class LineChartComponent {
83238
- constructor() {
83239
- this.chart = input({}, ...(ngDevMode ? [{ debugName: "chart" }] : []));
83240
- this.showAxisLabels = input(false, ...(ngDevMode ? [{ debugName: "showAxisLabels" }] : []));
83241
- this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
83242
- this.currencySymbol = input('$', ...(ngDevMode ? [{ debugName: "currencySymbol" }] : []));
83243
- // Memoized computed signals to avoid recalculation on every change detection
83244
- this.chartHeight = computed(() => this.showAxisLabels() ? '500px' : '133px', ...(ngDevMode ? [{ debugName: "chartHeight" }] : []));
83245
- this.cursorColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x94a3b8, ...(ngDevMode ? [{ debugName: "cursorColor" }] : []));
83246
- this.tooltipTextColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x000000, ...(ngDevMode ? [{ debugName: "tooltipTextColor" }] : []));
83247
- this.chartHash = computed(() => this.generateChartHash(this.chart()), ...(ngDevMode ? [{ debugName: "chartHash" }] : []));
83248
- this.lastChartHash = '';
83249
- this.chartNeedsRender = false;
83250
- this.isVisible = false;
83251
- this.animationsEnabled = false;
83252
- // Monitor for actual data changes using memoized hash
83253
- effect(() => {
83254
- const newHash = this.chartHash();
83255
- if (newHash !== this.lastChartHash) {
83256
- this.lastChartHash = newHash;
83257
- this.chartNeedsRender = true;
83258
- }
83259
- });
83260
- }
83261
- ngOnInit() {
83262
- }
83263
- /**
83264
- * Generate a hash of the chart data to detect actual changes
83265
- * This prevents unnecessary re-renders when data hasn't truly changed
83266
- */
83267
- generateChartHash(chart) {
83268
- const data = chart.lineChartData;
83269
- if (!data)
83270
- return 'empty';
83271
- const seriesCount = data.series?.length ?? 0;
83272
- const dataPoints = data.series?.reduce((sum, s) => sum + (s.data?.length ?? 0), 0) ?? 0;
83273
- return `${chart.title}-${seriesCount}-${dataPoints}-${chart.lineChartUseCase}`;
83274
- }
83275
- ngAfterViewInit() {
83276
- this.setupIntersectionObserver();
83277
- this.setupResizeObserver();
83278
- }
83279
- ngOnDestroy() {
83280
- this.cleanupIntersectionObserver();
83281
- this.cleanupResizeObserver();
83282
- if (this.chartElement) {
83283
- this.chartElement.series.clear();
83284
- this.chartElement.xAxes.clear();
83285
- this.chartElement.yAxes.clear();
83286
- }
83287
- if (this.root) {
83288
- this.root.dispose();
83289
- }
83290
- this.chartElement = undefined;
83291
- this.root = undefined;
83292
- }
83293
- setupResizeObserver() {
83294
- if (!this.chartDiv?.nativeElement || typeof ResizeObserver === 'undefined') {
83295
- return;
83296
- }
83297
- this.resizeObserver = new ResizeObserver(() => {
83298
- if (this.resizeTimeout) {
83299
- clearTimeout(this.resizeTimeout);
83300
- }
83301
- this.resizeTimeout = window.setTimeout(() => {
83302
- // AmCharts handles resize automatically, but we debounce to prevent
83303
- // excessive Angular change detection cycles during window resize
83304
- if (this.root && !this.root.isDisposed()) {
83305
- // Force a single layout recalculation after resize settles
83306
- this.root.resize();
83307
- }
83308
- }, 150);
83309
- });
83310
- this.resizeObserver.observe(this.chartDiv.nativeElement);
83311
- }
83312
- cleanupResizeObserver() {
83313
- if (this.resizeTimeout) {
83314
- clearTimeout(this.resizeTimeout);
83315
- this.resizeTimeout = undefined;
83316
- }
83317
- if (this.resizeObserver) {
83318
- this.resizeObserver.disconnect();
83319
- this.resizeObserver = undefined;
83320
- }
83321
- }
83322
- setupIntersectionObserver() {
83323
- if (!this.chartDiv?.nativeElement || typeof IntersectionObserver === 'undefined') {
83324
- // Fallback: render immediately if IntersectionObserver not supported
83325
- this.isVisible = true;
83326
- this.animationsEnabled = true;
83327
- if (this.chartNeedsRender || !this.root) {
83328
- this.createChart();
83329
- this.chartNeedsRender = false;
83330
- }
83331
- return;
83332
- }
83333
- // Use IntersectionObserver to detect when chart enters viewport
83334
- this.intersectionObserver = new IntersectionObserver((entries) => {
83335
- entries.forEach((entry) => {
83336
- if (entry.isIntersecting && !this.isVisible) {
83337
- this.isVisible = true;
83338
- // Create chart without animations initially for faster rendering
83339
- if (this.chartNeedsRender || !this.root) {
83340
- this.createChart();
83341
- this.chartNeedsRender = false;
83342
- }
83343
- // Enable animations after initial render completes
83344
- setTimeout(() => {
83345
- this.animationsEnabled = true;
83346
- }, 100);
83347
- // Stop observing once visible (one-time initialization)
83348
- this.intersectionObserver?.disconnect();
83349
- }
83350
- });
83351
- }, {
83352
- // Trigger when 10% of the chart is visible
83353
- threshold: 0.1,
83354
- // Start observing slightly before element enters viewport
83355
- rootMargin: '50px'
83356
- });
83357
- this.intersectionObserver.observe(this.chartDiv.nativeElement);
83358
- }
83359
- cleanupIntersectionObserver() {
83360
- if (this.intersectionObserver) {
83361
- this.intersectionObserver.disconnect();
83362
- this.intersectionObserver = undefined;
83363
- }
83364
- }
83365
- /**
83366
- * Create chart with early exit optimization
83367
- * Prevents unnecessary re-initialization if no data changes detected
83368
- */
83369
- formatValue(value, valueFormat) {
83370
- const formattedNumber = value.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
83371
- if (valueFormat === 'CURRENCY') {
83372
- return `${this.currencySymbol()}${formattedNumber}`;
83373
- }
83374
- else if (valueFormat === 'PERCENTAGE') {
83375
- return `${formattedNumber}%`;
83376
- }
83377
- return formattedNumber;
83378
- }
83379
- isPriorYearSeries(seriesData) {
83380
- if (!seriesData || !seriesData.name) {
83381
- return false;
83382
- }
83383
- // Check if series name indicates it's a prior year series
83384
- const name = seriesData.name.toLowerCase();
83385
- const currentYear = new Date().getFullYear();
83386
- // Check for explicit keywords
83387
- if (name.includes('last year') ||
83388
- name.includes('prior year') ||
83389
- name.includes('previous year')) {
83390
- return true;
83391
- }
83392
- // Check for year patterns - extract any 4-digit year and compare to current year
83393
- const yearMatch = seriesData.name.match(/\b(20\d{2})\b/);
83394
- if (yearMatch) {
83395
- const year = parseInt(yearMatch[1], 10);
83396
- return year < currentYear;
83397
- }
83398
- return false;
83399
- }
83400
- extractMetricName(seriesName) {
83401
- // Extract metric name from series name by removing year patterns
83402
- // e.g., "Purchase Revenue (2025)" -> "Purchase Revenue"
83403
- // "Revenue 2024" -> "Revenue"
83404
- // "Sessions (2024)" -> "Sessions"
83405
- if (!seriesName)
83406
- return '';
83407
- return seriesName.replace(/\s*\(?\s*20\d{2}\s*\)?/g, '').trim();
83408
- }
83409
- createChart() {
83410
- const chartData = this.chart().lineChartData;
83411
- if (!chartData || !this.chartDiv)
83412
- return;
83413
- // Check if this is a YoY chart from the chart configuration
83414
- const isYoYChart = this.chart().lineChartUseCase === LineChartUseCaseEnum.THIS_YEAR_VS_LAST_YEAR;
83415
- this.root = Root.new(this.chartDiv.nativeElement);
83416
- // Only enable animations if chart is visible to improve initial load performance
83417
- if (this.animationsEnabled) {
83418
- this.root.setThemes([am5themes_Animated.new(this.root)]);
83419
- }
83420
- this.chartElement = this.root.container.children.push(XYChart.new(this.root, {
83421
- panX: false,
83422
- panY: false,
83423
- wheelX: 'none',
83424
- wheelY: 'none',
83425
- paddingLeft: 0,
83426
- paddingRight: 0,
83427
- paddingTop: 0,
83428
- paddingBottom: 0,
83429
- maxTooltipDistance: -1
83430
- }));
83431
- const dateAxis = this.chartElement.xAxes.push(DateAxis.new(this.root, {
83432
- baseInterval: { timeUnit: 'month', count: 1 },
83433
- renderer: AxisRendererX.new(this.root, {}),
83434
- tooltip: Tooltip.new(this.root, {})
83435
- }));
83436
- dateAxis.get('renderer').labels.template.setAll({
83437
- fontSize: 12,
83438
- fill: color(0x94a3b8),
83439
- visible: this.showAxisLabels(),
83440
- paddingTop: 0,
83441
- paddingBottom: 0,
83442
- marginTop: 0,
83443
- marginBottom: 0
83444
- });
83445
- // Create Y-axes based on yaxisLabels if provided
83446
- const yaxisLabels = chartData.yaxisLabels || ['Value'];
83447
- const yAxesMap = new Map();
83448
- const axisColors = {};
83449
- const axisColorPalette = [
83450
- 0x4A90E2, // Blue
83451
- 0x10b981, // Green
83452
- 0xf59e0b, // Amber
83453
- 0xef4444, // Red
83454
- 0x8b5cf6, // Purple
83455
- 0x06b6d4 // Cyan
83456
- ];
83457
- yaxisLabels.forEach((label, index) => {
83458
- const isRightAxis = index % 2 === 1;
83459
- const colorValue = axisColorPalette[index % axisColorPalette.length];
83460
- axisColors[label] = colorValue;
83461
- if (!this.chartElement || !this.root)
83462
- return;
83463
- const yAxis = this.chartElement.yAxes.push(ValueAxis.new(this.root, {
83464
- renderer: AxisRendererY.new(this.root, {
83465
- opposite: isRightAxis
83466
- })
83467
- }));
83468
- // Only show axis labels when there's a single Y-axis
83469
- if (yaxisLabels.length === 1) {
83470
- yAxis.get('renderer').labels.template.setAll({
83471
- fontSize: 12,
83472
- fill: color(colorValue),
83473
- visible: this.showAxisLabels(),
83474
- paddingLeft: 0,
83475
- paddingRight: 0,
83476
- marginLeft: 0,
83477
- marginRight: 0
83478
- });
83479
- // Don't show axis title/name for single Y-axis, only values
83480
- }
83481
- else {
83482
- // Hide labels when multiple axes
83483
- yAxis.get('renderer').labels.template.setAll({
83484
- visible: false
83485
- });
83486
- }
83487
- yAxesMap.set(label, yAxis);
83488
- });
83489
- // Create cursor for mouse tracking - use memoized cursorColor
83490
- const cursor = XYCursor.new(this.root, {
83491
- behavior: 'zoomX'
83492
- });
83493
- this.chartElement.set('cursor', cursor);
83494
- cursor.lineY.set('visible', false);
83495
- cursor.lineX.set('visible', true);
83496
- cursor.lineX.set('stroke', color(this.cursorColor()));
83497
- cursor.set('xAxis', dateAxis);
83498
- // Create free-floating tooltip for the chart
83499
- const tooltip = Tooltip.new(this.root, {});
83500
- this.chartElement.plotContainer.set('tooltipPosition', 'pointer');
83501
- this.chartElement.plotContainer.set('tooltip', tooltip);
83502
- this.chartElement.plotContainer.set('tooltipText', '{name}'); // Enable tooltip trigger
83503
- // Make tooltip background transparent with white border
83504
- const tooltipBg = tooltip.get('background');
83505
- if (tooltipBg) {
83506
- tooltipBg.setAll({
83507
- fill: color(0x000000),
83508
- fillOpacity: 0,
83509
- stroke: color(0xffffff),
83510
- strokeOpacity: 1,
83511
- strokeWidth: 2
83512
- });
83513
- }
83514
- // Style the tooltip label - white text for dark mode, black for light mode - use memoized color
83515
- tooltip.label.setAll({
83516
- fontSize: 12,
83517
- fill: color(this.tooltipTextColor()),
83518
- paddingTop: 8,
83519
- paddingBottom: 8,
83520
- paddingLeft: 10,
83521
- paddingRight: 10
83522
- });
83523
- // Add tooltip text adapter to format values from all series with colored dots
83524
- tooltip.label.adapters.add('text', () => {
83525
- let text = '';
83526
- let count = 0;
83527
- let monthText = '';
83528
- this.chartElement?.series.each((series) => {
83529
- const dataItem = series.get('tooltipDataItem');
83530
- if (dataItem) {
83531
- // Extract month and year from the first series that has a dataItem
83532
- if (monthText === '') {
83533
- const valueX = dataItem.get('valueX');
83534
- if (valueX) {
83535
- const date = new Date(valueX);
83536
- const month = date.toLocaleString('default', { month: 'long', timeZone: 'UTC' });
83537
- const year = date.toLocaleString('default', { year: 'numeric', timeZone: 'UTC' });
83538
- monthText = `${month} ${year}`;
83539
- }
83540
- }
83541
- if (count > 0)
83542
- text += '\n';
83543
- const name = series.get('name');
83544
- const value = dataItem.get('valueY');
83545
- const seriesFormat = series.get('userData')?.valueFormat;
83546
- const formattedValue = seriesFormat === 'CURRENCY'
83547
- ? ChartValueFormatter.formatValue(value, seriesFormat, this.currencySymbol())
83548
- : this.formatValue(value, seriesFormat);
83549
- // Get the series color (stroke color)
83550
- const stroke = series.get('stroke');
83551
- let colorHex = 'FFFFFF'; // Default white
83552
- if (stroke) {
83553
- colorHex = stroke.toString().substring(1).toUpperCase(); // Remove '#' and convert to uppercase
83554
- }
83555
- // Format with colored bullet: [color]●[/] SeriesName: Value
83556
- text += `[fontSize: 24px][${colorHex}]●[/][/] [bold]${name}:[/] ${formattedValue}`;
83557
- count++;
83558
- }
83559
- });
83560
- // Prepend month to the text if available
83561
- if (monthText) {
83562
- text = `[bold]${monthText}[/]\n${text}`;
83563
- }
83564
- return text;
83565
- });
83566
- // For YoY charts, build a metric-to-color map to ensure both years of the same metric have the same color
83567
- const metricColorMap = new Map();
83568
- if (isYoYChart && chartData.series) {
83569
- const uniqueMetrics = new Set();
83570
- chartData.series.forEach(seriesData => {
83571
- const metricName = this.extractMetricName(seriesData.name);
83572
- uniqueMetrics.add(metricName);
83573
- });
83574
- let colorIndex = 0;
83575
- uniqueMetrics.forEach(metricName => {
83576
- metricColorMap.set(metricName, axisColorPalette[colorIndex % axisColorPalette.length]);
83577
- colorIndex++;
83578
- });
83579
- }
83580
- chartData.series?.forEach((seriesData, index) => {
83581
- const parsedData = (seriesData.data || []).map(d => ({
83582
- date: new Date(`${d.date}T00:00:00Z`).getTime(),
83583
- value: d.value
83584
- }));
83585
- // Get the Y-axis for this series, or use the first one as default
83586
- const yaxisLabel = seriesData.yaxisLabel || yaxisLabels[0];
83587
- const yAxis = yAxesMap.get(yaxisLabel) || Array.from(yAxesMap.values())[0];
83588
- // Determine series color: for YoY charts use metric-based colors, otherwise use axis-based colors
83589
- let seriesColorValue;
83590
- if (isYoYChart) {
83591
- const metricName = this.extractMetricName(seriesData.name);
83592
- seriesColorValue = metricColorMap.get(metricName) || axisColorPalette[index % axisColorPalette.length];
83593
- }
83594
- else {
83595
- seriesColorValue = axisColors[yaxisLabel] || axisColorPalette[index % axisColorPalette.length];
83596
- }
83597
- const seriesColor = color(seriesColorValue);
83598
- // Check if this is a prior year series for YoY charts
83599
- const isPriorYear = isYoYChart && this.isPriorYearSeries(seriesData);
83600
- if (!this.chartElement || !this.root)
83601
- return;
83602
- const series = this.chartElement.series.push(LineSeries.new(this.root, {
83603
- name: seriesData.name,
83604
- xAxis: dateAxis,
83605
- yAxis: yAxis,
83606
- valueYField: 'value',
83607
- valueXField: 'date',
83608
- stroke: seriesColor
83609
- }));
83610
- // Store valueFormat and prior year flag in userData for tooltip formatting
83611
- series.set('userData', { valueFormat: seriesData.valueFormat, isPriorYear });
83612
- // Disable individual series tooltips - use floating tooltip instead
83613
- series.set('tooltip', undefined);
83614
- // Configure stroke styling based on whether it's a prior year series
83615
- series.strokes.template.setAll({
83616
- strokeWidth: 2
83617
- });
83618
- if (isPriorYear) {
83619
- // Apply dashed line and reduced opacity for prior year data
83620
- series.strokes.template.setAll({
83621
- strokeDasharray: [5, 5],
83622
- strokeOpacity: 0.4
83623
- });
83624
- // Also set on each individual stroke
83625
- series.strokes.each((stroke) => {
83626
- stroke.set('strokeDasharray', [5, 5]);
83627
- stroke.set('strokeOpacity', 0.4);
83628
- });
83629
- }
83630
- // Add bullets with larger hit area for better hover detection
83631
- series.bullets.push(() => {
83632
- const bulletConfig = {
83633
- radius: 5,
83634
- fill: seriesColor
83635
- };
83636
- if (isPriorYear) {
83637
- bulletConfig['fillOpacity'] = 0.4;
83638
- }
83639
- if (!this.root)
83640
- return Bullet.new({}, { sprite: Circle.new({}, {}) });
83641
- const circle = Circle.new(this.root, bulletConfig);
83642
- return Bullet.new(this.root, {
83643
- sprite: circle
83644
- });
83645
- });
83646
- series.data.setAll(parsedData);
83647
- series.appear(1000);
83648
- });
83649
- // Only show legend in modal view (when showAxisLabels is true)
83650
- if (this.showAxisLabels()) {
83651
- const legend = this.chartElement.children.push(Legend.new(this.root, {
83652
- centerX: percent(50),
83653
- x: percent(50)
83654
- }));
83655
- legend.labels.template.setAll({
83656
- fontSize: 12,
83657
- fill: color(0x94a3b8)
83658
- });
83659
- // Reverse the series order in the legend so 2025 series appear on the right
83660
- const reversedSeries = Array.from(this.chartElement.series.values).reverse();
83661
- legend.data.setAll(reversedSeries);
83662
- }
83663
- this.chartElement.appear(1000, 100);
83664
- }
83665
- static { this.ɵfac = function LineChartComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LineChartComponent)(); }; }
83666
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [["symphiq-line-chart"]], viewQuery: function LineChartComponent_Query(rf, ctx) { if (rf & 1) {
83667
- i0.ɵɵviewQuery(_c0$2, 7);
83668
- } if (rf & 2) {
83669
- let _t;
83670
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartDiv = _t.first);
83671
- } }, inputs: { chart: [1, "chart"], showAxisLabels: [1, "showAxisLabels"], viewMode: [1, "viewMode"], currencySymbol: [1, "currencySymbol"] }, decls: 3, vars: 4, consts: [["chartdiv", ""], [1, "chart-container"], [1, "chart", 2, "width", "100%"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {
83672
- i0.ɵɵdomElementStart(0, "div", 1);
83673
- i0.ɵɵdomElement(1, "div", 2, 0);
83674
- i0.ɵɵdomElementEnd();
83675
- } if (rf & 2) {
83676
- i0.ɵɵclassProp("mini-mode", !ctx.showAxisLabels());
83677
- i0.ɵɵadvance();
83678
- i0.ɵɵstyleProp("height", ctx.chartHeight());
83679
- } }, styles: [".chart-container[_ngcontent-%COMP%]{width:100%;padding:1rem}.chart-container.mini-mode[_ngcontent-%COMP%]{padding:.25rem}"], changeDetection: 0 }); }
83680
- }
83681
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LineChartComponent, [{
83682
- type: Component,
83683
- args: [{ selector: 'symphiq-line-chart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
83684
- <div class="chart-container" [class.mini-mode]="!showAxisLabels()">
83685
- <div #chartdiv class="chart" [style.height]="chartHeight()" style="width: 100%;"></div>
83686
- </div>
83687
- `, styles: [".chart-container{width:100%;padding:1rem}.chart-container.mini-mode{padding:.25rem}\n"] }]
83688
- }], () => [], { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: false }] }], showAxisLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAxisLabels", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }], chartDiv: [{
83689
- type: ViewChild,
83690
- args: ['chartdiv', { static: true }]
83691
- }] }); })();
83692
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LineChartComponent, { className: "LineChartComponent", filePath: "lib/components/funnel-analysis-dashboard/charts/line-chart.component.ts", lineNumber: 38 }); })();
83693
-
83694
- var lineChart_component = /*#__PURE__*/Object.freeze({
83695
- __proto__: null,
83696
- LineChartComponent: LineChartComponent
83697
- });
83698
-
83699
84795
  const _c0$1 = ["chartdiv"];
83700
84796
  class BarChartComponent {
83701
84797
  constructor() {
@@ -84634,5 +85730,5 @@ var pieChart_component = /*#__PURE__*/Object.freeze({
84634
85730
  * Generated bundle index. Do not edit.
84635
85731
  */
84636
85732
 
84637
- export { AreaChartComponent, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, DataLoaderService, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaToolsModalComponent, FunnelOrderService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, IndeterminateSpinnerComponent, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PacingStatusBadgeComponent, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, RevenueCalculatorService, RevenueCalculatorWelcomeBannerComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisDashboardComponent, SymphiqRevenueCalculatorDashboardComponent, SymphiqWelcomeDashboardComponent, TargetChangeBadgeComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, ViewModeService, ViewportAnimationDirective, VisualizationContainerComponent, calculateFunnelRatios, calculateMetricTargetsFromRevenue, calculateMetricTargetsFromRevenueReverse, calculateRelatedMetricRatios, generateTargetsFromCalculations, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getFunnelStageMetrics, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, groupMetricsByFunnelStage, isLightMode, validateRevenueTarget };
85733
+ export { AreaChartComponent, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, DataLoaderService, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaToolsModalComponent, FunnelOrderService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, IndeterminateSpinnerComponent, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricReportModalComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PacingStatusBadgeComponent, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, RevenueCalculatorService, RevenueCalculatorWelcomeBannerComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisDashboardComponent, SymphiqRevenueCalculatorDashboardComponent, SymphiqWelcomeDashboardComponent, TargetChangeBadgeComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, ViewModeService, ViewportAnimationDirective, VisualizationContainerComponent, calculateFunnelRatios, calculateMetricTargetsFromRevenue, calculateMetricTargetsFromRevenueReverse, calculateRelatedMetricRatios, generateTargetsFromCalculations, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getFunnelStageMetrics, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, groupMetricsByFunnelStage, isLightMode, validateRevenueTarget };
84638
85734
  //# sourceMappingURL=symphiq-components.mjs.map