@eric-emg/symphiq-components 1.2.230 → 1.2.232

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.
@@ -54795,34 +54795,35 @@ function extractProjectedValue(pacingResponse, metricEnum) {
54795
54795
  }
54796
54796
 
54797
54797
  function PacingStatusBadgeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
54798
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 2);
54799
- i0.ɵɵtext(2);
54798
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 1)(2, "span", 1);
54799
+ i0.ɵɵtext(3);
54800
54800
  i0.ɵɵelementEnd();
54801
- i0.ɵɵelementStart(3, "div", 3)(4, "span", 3);
54802
- i0.ɵɵtext(5);
54801
+ i0.ɵɵtext(4);
54803
54802
  i0.ɵɵelementEnd();
54804
- i0.ɵɵelementStart(6, "span");
54803
+ i0.ɵɵelementStart(5, "div")(6, "span");
54805
54804
  i0.ɵɵtext(7);
54806
54805
  i0.ɵɵelementEnd()()();
54807
54806
  } if (rf & 2) {
54808
54807
  const ctx_r0 = i0.ɵɵnextContext();
54808
+ i0.ɵɵclassMap(ctx_r0.containerSizeClasses());
54809
+ i0.ɵɵproperty("ngClass", ctx_r0.containerClasses());
54809
54810
  i0.ɵɵadvance();
54811
+ i0.ɵɵclassMap(ctx_r0.overlaySizeClasses());
54810
54812
  i0.ɵɵproperty("ngClass", ctx_r0.overlayBadgeClasses());
54811
54813
  i0.ɵɵadvance();
54812
- i0.ɵɵtextInterpolate1(" ", ctx_r0.extractPercentage(), " ");
54813
- i0.ɵɵadvance();
54814
- i0.ɵɵclassMap(ctx_r0.sizeClasses());
54815
- i0.ɵɵproperty("ngClass", ctx_r0.badgeClasses());
54816
- i0.ɵɵadvance();
54817
54814
  i0.ɵɵclassMap(ctx_r0.iconSizeClasses());
54818
54815
  i0.ɵɵproperty("ngClass", ctx_r0.iconClasses());
54819
54816
  i0.ɵɵadvance();
54820
54817
  i0.ɵɵtextInterpolate1(" ", ctx_r0.iconSymbol(), " ");
54818
+ i0.ɵɵadvance();
54819
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.extractPercentage(), " ");
54820
+ i0.ɵɵadvance();
54821
+ i0.ɵɵclassMap(ctx_r0.sizeClasses());
54821
54822
  i0.ɵɵadvance(2);
54822
54823
  i0.ɵɵtextInterpolate(ctx_r0.displayTextWithoutPercentage());
54823
54824
  } }
54824
54825
  function PacingStatusBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
54825
- i0.ɵɵelementStart(0, "div", 3)(1, "span", 3);
54826
+ i0.ɵɵelementStart(0, "div", 1)(1, "span", 1);
54826
54827
  i0.ɵɵtext(2);
54827
54828
  i0.ɵɵelementEnd();
54828
54829
  i0.ɵɵelementStart(3, "span");
@@ -54830,7 +54831,7 @@ function PacingStatusBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
54830
54831
  i0.ɵɵelementEnd()();
54831
54832
  } if (rf & 2) {
54832
54833
  const ctx_r0 = i0.ɵɵnextContext();
54833
- i0.ɵɵclassMap(ctx_r0.sizeClasses());
54834
+ i0.ɵɵclassMap(ctx_r0.fullBadgeSizeClasses());
54834
54835
  i0.ɵɵproperty("ngClass", ctx_r0.badgeClasses());
54835
54836
  i0.ɵɵadvance();
54836
54837
  i0.ɵɵclassMap(ctx_r0.iconSizeClasses());
@@ -54852,18 +54853,36 @@ class PacingStatusBadgeComponent {
54852
54853
  const isDark = this.viewMode() === ViewModeEnum.DARK;
54853
54854
  return getPacingDisplayInfo(this.pacingPercentage(), this.status(), isDark);
54854
54855
  }, ...(ngDevMode ? [{ debugName: "displayInfo" }] : []));
54856
+ this.containerClasses = computed(() => {
54857
+ const info = this.displayInfo();
54858
+ return `${info.bgClass} ${info.borderClass} border`;
54859
+ }, ...(ngDevMode ? [{ debugName: "containerClasses" }] : []));
54860
+ this.containerSizeClasses = computed(() => {
54861
+ const compact = this.isCompact();
54862
+ return compact
54863
+ ? 'inline-flex flex-row items-center rounded-full pl-1.5 overflow-visible'
54864
+ : 'inline-flex flex-row items-center rounded-full pl-2 overflow-visible';
54865
+ }, ...(ngDevMode ? [{ debugName: "containerSizeClasses" }] : []));
54855
54866
  this.badgeClasses = computed(() => {
54856
54867
  const info = this.displayInfo();
54857
54868
  return `${info.bgClass} ${info.colorClass} ${info.borderClass}`;
54858
54869
  }, ...(ngDevMode ? [{ debugName: "badgeClasses" }] : []));
54859
54870
  this.sizeClasses = computed(() => {
54871
+ const isCompact = this.isCompact();
54872
+ const baseClasses = 'inline-flex items-center gap-1.5 font-semibold transition-all';
54873
+ if (isCompact) {
54874
+ return `${baseClasses} px-2.5 py-0.5 text-xs`;
54875
+ }
54876
+ return `${baseClasses} px-3 py-0.5 text-xs`;
54877
+ }, ...(ngDevMode ? [{ debugName: "sizeClasses" }] : []));
54878
+ this.fullBadgeSizeClasses = computed(() => {
54860
54879
  const isCompact = this.isCompact();
54861
54880
  const baseClasses = 'inline-flex items-center gap-1.5 rounded-lg border font-semibold transition-all';
54862
54881
  if (isCompact) {
54863
54882
  return `${baseClasses} px-2.5 py-1 text-xs`;
54864
54883
  }
54865
54884
  return `${baseClasses} px-3 py-1.5 text-xs`;
54866
- }, ...(ngDevMode ? [{ debugName: "sizeClasses" }] : []));
54885
+ }, ...(ngDevMode ? [{ debugName: "fullBadgeSizeClasses" }] : []));
54867
54886
  this.iconClasses = computed(() => {
54868
54887
  return this.displayInfo().colorClass;
54869
54888
  }, ...(ngDevMode ? [{ debugName: "iconClasses" }] : []));
@@ -54905,15 +54924,32 @@ class PacingStatusBadgeComponent {
54905
54924
  return textWithoutPercentage;
54906
54925
  }, ...(ngDevMode ? [{ debugName: "displayTextWithoutPercentage" }] : []));
54907
54926
  this.overlayBadgeClasses = computed(() => {
54908
- const info = this.displayInfo();
54909
- const isCompact = this.isCompact();
54910
- const sizeClass = isCompact ? 'text-xs' : 'text-sm';
54911
- return `${info.bgClass} ${info.colorClass} ${info.borderClass} ${sizeClass}`;
54927
+ const status = this.status();
54928
+ const isDark = this.viewMode() === ViewModeEnum.DARK;
54929
+ if (status === 'ahead') {
54930
+ return isDark
54931
+ ? 'bg-gradient-to-r from-emerald-700 to-emerald-600 text-emerald-100 border-emerald-500'
54932
+ : 'bg-gradient-to-r from-emerald-600 to-emerald-500 text-white border-emerald-400';
54933
+ }
54934
+ if (status === 'on-pace') {
54935
+ return isDark
54936
+ ? 'bg-gradient-to-r from-amber-700 to-amber-600 text-amber-100 border-amber-500'
54937
+ : 'bg-gradient-to-r from-amber-600 to-amber-500 text-white border-amber-400';
54938
+ }
54939
+ return isDark
54940
+ ? 'bg-gradient-to-r from-red-700 to-red-600 text-red-100 border-red-500'
54941
+ : 'bg-gradient-to-r from-red-600 to-red-500 text-white border-red-400';
54912
54942
  }, ...(ngDevMode ? [{ debugName: "overlayBadgeClasses" }] : []));
54943
+ this.overlaySizeClasses = computed(() => {
54944
+ const compact = this.isCompact();
54945
+ return compact
54946
+ ? 'px-2 py-1.5 rounded text-sm font-extrabold tracking-tight border shadow-md transition-all duration-200 -my-1 -mr-1 z-10 inline-flex items-center gap-0.5'
54947
+ : 'px-2.5 py-2 rounded-md text-sm font-extrabold tracking-tight border-2 shadow-lg transition-all duration-200 -my-1.5 -mr-1 z-10 inline-flex items-center gap-1';
54948
+ }, ...(ngDevMode ? [{ debugName: "overlaySizeClasses" }] : []));
54913
54949
  }
54914
54950
  static { this.ɵfac = function PacingStatusBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PacingStatusBadgeComponent)(); }; }
54915
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PacingStatusBadgeComponent, selectors: [["symphiq-pacing-status-badge"]], inputs: { viewMode: [1, "viewMode"], pacingPercentage: [1, "pacingPercentage"], status: [1, "status"], showAsFullText: [1, "showAsFullText"], isCompact: [1, "isCompact"], showEmphasizedPercentage: [1, "showEmphasizedPercentage"] }, decls: 2, vars: 1, consts: [[1, "inline-flex", "flex-row", "items-center"], [3, "ngClass", "class"], [1, "px-2.5", "py-0.5", "rounded-md", "font-extrabold", "tracking-tight", "border-2", "shadow-lg", "transition-all", "duration-200", "-my-1", "-mr-1", "z-10", 3, "ngClass"], [3, "ngClass"]], template: function PacingStatusBadgeComponent_Template(rf, ctx) { if (rf & 1) {
54916
- i0.ɵɵconditionalCreate(0, PacingStatusBadgeComponent_Conditional_0_Template, 8, 10, "div", 0)(1, PacingStatusBadgeComponent_Conditional_1_Template, 5, 8, "div", 1);
54951
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PacingStatusBadgeComponent, selectors: [["symphiq-pacing-status-badge"]], inputs: { viewMode: [1, "viewMode"], pacingPercentage: [1, "pacingPercentage"], status: [1, "status"], showAsFullText: [1, "showAsFullText"], isCompact: [1, "isCompact"], showEmphasizedPercentage: [1, "showEmphasizedPercentage"] }, decls: 2, vars: 1, consts: [[3, "ngClass", "class"], [3, "ngClass"]], template: function PacingStatusBadgeComponent_Template(rf, ctx) { if (rf & 1) {
54952
+ i0.ɵɵconditionalCreate(0, PacingStatusBadgeComponent_Conditional_0_Template, 8, 14, "div", 0)(1, PacingStatusBadgeComponent_Conditional_1_Template, 5, 8, "div", 0);
54917
54953
  } if (rf & 2) {
54918
54954
  i0.ɵɵconditional(ctx.showEmphasizedPercentage() && ctx.hasPercentage() ? 0 : 1);
54919
54955
  } }, dependencies: [CommonModule, i1$1.NgClass], encapsulation: 2, changeDetection: 0 }); }
@@ -54925,60 +54961,173 @@ class PacingStatusBadgeComponent {
54925
54961
  standalone: true,
54926
54962
  imports: [CommonModule],
54927
54963
  changeDetection: ChangeDetectionStrategy.OnPush,
54928
- template: `
54929
- @if (showEmphasizedPercentage() && hasPercentage()) {
54930
- <div class="inline-flex flex-row items-center">
54931
- <div [ngClass]="overlayBadgeClasses()"
54932
- class="px-2.5 py-0.5 rounded-md font-extrabold tracking-tight border-2 shadow-lg transition-all duration-200 -my-1 -mr-1 z-10">
54933
- {{ extractPercentage() }}
54934
- </div>
54935
- <div
54936
- [ngClass]="badgeClasses()"
54937
- [class]="sizeClasses()"
54938
- >
54939
- <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54940
- {{ iconSymbol() }}
54941
- </span>
54942
- <span>{{ displayTextWithoutPercentage() }}</span>
54943
- </div>
54944
- </div>
54945
- } @else {
54946
- <div
54947
- [ngClass]="badgeClasses()"
54948
- [class]="sizeClasses()"
54949
- >
54950
- <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54951
- {{ iconSymbol() }}
54952
- </span>
54953
- <span>{{ displayText() }}</span>
54954
- </div>
54955
- }
54964
+ template: `
54965
+ @if (showEmphasizedPercentage() && hasPercentage()) {
54966
+ <div [ngClass]="containerClasses()" [class]="containerSizeClasses()">
54967
+ <div [ngClass]="overlayBadgeClasses()" [class]="overlaySizeClasses()">
54968
+ <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54969
+ {{ iconSymbol() }}
54970
+ </span>
54971
+ {{ extractPercentage() }}
54972
+ </div>
54973
+ <div
54974
+ [class]="sizeClasses()"
54975
+ >
54976
+ <span>{{ displayTextWithoutPercentage() }}</span>
54977
+ </div>
54978
+ </div>
54979
+ } @else {
54980
+ <div
54981
+ [ngClass]="badgeClasses()"
54982
+ [class]="fullBadgeSizeClasses()"
54983
+ >
54984
+ <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54985
+ {{ iconSymbol() }}
54986
+ </span>
54987
+ <span>{{ displayText() }}</span>
54988
+ </div>
54989
+ }
54956
54990
  `
54957
54991
  }]
54958
54992
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], pacingPercentage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingPercentage", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], showAsFullText: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAsFullText", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }], showEmphasizedPercentage: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEmphasizedPercentage", required: false }] }] }); })();
54959
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PacingStatusBadgeComponent, { className: "PacingStatusBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/pacing-status-badge.component.ts", lineNumber: 41 }); })();
54993
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PacingStatusBadgeComponent, { className: "PacingStatusBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/pacing-status-badge.component.ts", lineNumber: 39 }); })();
54994
+
54995
+ class TargetChangeBadgeComponent {
54996
+ constructor() {
54997
+ this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
54998
+ this.percentageChange = input(0, ...(ngDevMode ? [{ debugName: "percentageChange" }] : []));
54999
+ this.metric = input('', ...(ngDevMode ? [{ debugName: "metric" }] : []));
55000
+ this.priorYear = input(new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
55001
+ this.isCompact = input(false, ...(ngDevMode ? [{ debugName: "isCompact" }] : []));
55002
+ this.isDark = computed(() => this.viewMode() === ViewModeEnum.DARK, ...(ngDevMode ? [{ debugName: "isDark" }] : []));
55003
+ this.isIncreaseBad = computed(() => {
55004
+ const metricStr = this.metric();
55005
+ if (!metricStr)
55006
+ return false;
55007
+ return MetricEnumUtil.increaseBad(metricStr);
55008
+ }, ...(ngDevMode ? [{ debugName: "isIncreaseBad" }] : []));
55009
+ this.iconSymbol = computed(() => {
55010
+ const change = this.percentageChange();
55011
+ if (change > 0)
55012
+ return '↗';
55013
+ if (change < 0)
55014
+ return '↘';
55015
+ return '→';
55016
+ }, ...(ngDevMode ? [{ debugName: "iconSymbol" }] : []));
55017
+ this.percentageText = computed(() => {
55018
+ const sign = this.isIncreaseBad() ? '' : '+';
55019
+ const absValue = Math.abs(this.percentageChange());
55020
+ return `${sign}${formatPercentage(absValue, 1)}`;
55021
+ }, ...(ngDevMode ? [{ debugName: "percentageText" }] : []));
55022
+ this.descriptionText = computed(() => {
55023
+ const action = this.isIncreaseBad() ? 'decrease from' : 'increase over';
55024
+ return `${action} ${this.priorYear()}`;
55025
+ }, ...(ngDevMode ? [{ debugName: "descriptionText" }] : []));
55026
+ this.containerClasses = computed(() => {
55027
+ const dark = this.isDark();
55028
+ return dark
55029
+ ? 'bg-purple-500/30 border-purple-400/30'
55030
+ : 'bg-purple-100 border-purple-300';
55031
+ }, ...(ngDevMode ? [{ debugName: "containerClasses" }] : []));
55032
+ this.containerSizeClasses = computed(() => {
55033
+ const compact = this.isCompact();
55034
+ return compact
55035
+ ? 'inline-flex flex-row items-center rounded-full border pl-1.5 overflow-visible'
55036
+ : 'inline-flex flex-row items-center rounded-full border pl-2 overflow-visible';
55037
+ }, ...(ngDevMode ? [{ debugName: "containerSizeClasses" }] : []));
55038
+ this.overlayClasses = computed(() => {
55039
+ const dark = this.isDark();
55040
+ return dark
55041
+ ? 'bg-gradient-to-r from-purple-700 to-purple-600 text-purple-100 border-purple-500'
55042
+ : 'bg-gradient-to-r from-purple-600 to-purple-500 text-white border-purple-400';
55043
+ }, ...(ngDevMode ? [{ debugName: "overlayClasses" }] : []));
55044
+ this.overlaySizeClasses = computed(() => {
55045
+ const compact = this.isCompact();
55046
+ return compact
55047
+ ? 'px-2 py-1.5 rounded text-sm font-extrabold tracking-tight border shadow-md transition-all duration-200 -my-1 -mr-1 z-10 inline-flex items-center gap-0.5'
55048
+ : 'px-2.5 py-2 rounded-md font-extrabold text-base tracking-tight border-2 shadow-lg transition-all duration-200 -my-1.5 -mr-1 z-10 inline-flex items-center gap-1';
55049
+ }, ...(ngDevMode ? [{ debugName: "overlaySizeClasses" }] : []));
55050
+ this.iconSizeClass = computed(() => {
55051
+ return this.isCompact() ? 'text-sm' : 'text-base';
55052
+ }, ...(ngDevMode ? [{ debugName: "iconSizeClass" }] : []));
55053
+ this.descriptionSizeClasses = computed(() => {
55054
+ const compact = this.isCompact();
55055
+ return compact
55056
+ ? 'px-2.5 py-0.5 text-xs font-semibold inline-block'
55057
+ : 'px-3 py-0.5 font-semibold text-xs inline-block';
55058
+ }, ...(ngDevMode ? [{ debugName: "descriptionSizeClasses" }] : []));
55059
+ }
55060
+ static { this.ɵfac = function TargetChangeBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TargetChangeBadgeComponent)(); }; }
55061
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TargetChangeBadgeComponent, selectors: [["symphiq-target-change-badge"]], inputs: { viewMode: [1, "viewMode"], percentageChange: [1, "percentageChange"], metric: [1, "metric"], priorYear: [1, "priorYear"], isCompact: [1, "isCompact"] }, decls: 7, vars: 13, consts: [[3, "ngClass"]], template: function TargetChangeBadgeComponent_Template(rf, ctx) { if (rf & 1) {
55062
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 0)(2, "span");
55063
+ i0.ɵɵtext(3);
55064
+ i0.ɵɵelementEnd();
55065
+ i0.ɵɵtext(4);
55066
+ i0.ɵɵelementEnd();
55067
+ i0.ɵɵelementStart(5, "div");
55068
+ i0.ɵɵtext(6);
55069
+ i0.ɵɵelementEnd()();
55070
+ } if (rf & 2) {
55071
+ i0.ɵɵclassMap(ctx.containerSizeClasses());
55072
+ i0.ɵɵproperty("ngClass", ctx.containerClasses());
55073
+ i0.ɵɵadvance();
55074
+ i0.ɵɵclassMap(ctx.overlaySizeClasses());
55075
+ i0.ɵɵproperty("ngClass", ctx.overlayClasses());
55076
+ i0.ɵɵadvance();
55077
+ i0.ɵɵclassMap(ctx.iconSizeClass());
55078
+ i0.ɵɵadvance();
55079
+ i0.ɵɵtextInterpolate(ctx.iconSymbol());
55080
+ i0.ɵɵadvance();
55081
+ i0.ɵɵtextInterpolate1(" ", ctx.percentageText(), " ");
55082
+ i0.ɵɵadvance();
55083
+ i0.ɵɵclassMap(ctx.descriptionSizeClasses());
55084
+ i0.ɵɵadvance();
55085
+ i0.ɵɵtextInterpolate1(" ", ctx.descriptionText(), " ");
55086
+ } }, dependencies: [CommonModule, i1$1.NgClass], encapsulation: 2, changeDetection: 0 }); }
55087
+ }
55088
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TargetChangeBadgeComponent, [{
55089
+ type: Component,
55090
+ args: [{
55091
+ selector: 'symphiq-target-change-badge',
55092
+ standalone: true,
55093
+ imports: [CommonModule],
55094
+ changeDetection: ChangeDetectionStrategy.OnPush,
55095
+ template: `
55096
+ <div [ngClass]="containerClasses()" [class]="containerSizeClasses()">
55097
+ <div [ngClass]="overlayClasses()" [class]="overlaySizeClasses()">
55098
+ <span [class]="iconSizeClass()">{{ iconSymbol() }}</span>
55099
+ {{ percentageText() }}
55100
+ </div>
55101
+ <div [class]="descriptionSizeClasses()">
55102
+ {{ descriptionText() }}
55103
+ </div>
55104
+ </div>
55105
+ `
55106
+ }]
55107
+ }], 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 }] }] }); })();
55108
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TargetChangeBadgeComponent, { className: "TargetChangeBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/target-change-badge.component.ts", lineNumber: 23 }); })();
54960
55109
 
54961
55110
  const _forTrack0$i = ($index, $item) => $item.stageMetric.metric;
54962
55111
  const _forTrack1$3 = ($index, $item) => $item.calc.metric;
54963
55112
  function FunnelMetricsVisualizationComponent_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
54964
55113
  i0.ɵɵelementStart(0, "button", 7);
54965
55114
  i0.ɵɵnamespaceSVG();
54966
- i0.ɵɵelementStart(1, "svg", 15);
54967
- i0.ɵɵelement(2, "path", 16);
55115
+ i0.ɵɵelementStart(1, "svg", 13);
55116
+ i0.ɵɵelement(2, "path", 14);
54968
55117
  i0.ɵɵelementEnd()();
54969
55118
  } if (rf & 2) {
54970
55119
  const stage_r1 = i0.ɵɵnextContext().$implicit;
54971
55120
  const ctx_r1 = i0.ɵɵnextContext();
54972
55121
  i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(stage_r1.stageMetric.description, ctx_r1.getMetricTitle(stage_r1.stageMetric)));
54973
55122
  } }
54974
- function FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template(rf, ctx) { if (rf & 1) {
55123
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template(rf, ctx) { if (rf & 1) {
54975
55124
  i0.ɵɵelementStart(0, "div")(1, "p", 9);
54976
55125
  i0.ɵɵtext(2);
54977
55126
  i0.ɵɵelementEnd();
54978
55127
  i0.ɵɵelementStart(3, "p", 11);
54979
55128
  i0.ɵɵtext(4);
54980
55129
  i0.ɵɵelementEnd();
54981
- i0.ɵɵelement(5, "symphiq-pacing-status-badge", 17);
55130
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 15);
54982
55131
  i0.ɵɵelementEnd();
54983
55132
  } if (rf & 2) {
54984
55133
  const stage_r1 = i0.ɵɵnextContext().$implicit;
@@ -54994,25 +55143,25 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template(rf, c
54994
55143
  i0.ɵɵadvance();
54995
55144
  i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", stage_r1.pacingInfo.pacingPercentage)("status", stage_r1.pacingInfo.status)("showAsFullText", true)("showEmphasizedPercentage", true);
54996
55145
  } }
54997
- function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
54998
- i0.ɵɵelementStart(0, "button", 25);
55146
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55147
+ i0.ɵɵelementStart(0, "button", 23);
54999
55148
  i0.ɵɵnamespaceSVG();
55000
- i0.ɵɵelementStart(1, "svg", 32);
55001
- i0.ɵɵelement(2, "path", 16);
55149
+ i0.ɵɵelementStart(1, "svg", 29);
55150
+ i0.ɵɵelement(2, "path", 14);
55002
55151
  i0.ɵɵelementEnd()();
55003
55152
  } if (rf & 2) {
55004
55153
  const metric_r3 = i0.ɵɵnextContext().$implicit;
55005
55154
  const ctx_r1 = i0.ɵɵnextContext(3);
55006
55155
  i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r3.calc.description, ctx_r1.getMetricTitle(metric_r3.calc)));
55007
55156
  } }
55008
- function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_21_Template(rf, ctx) { if (rf & 1) {
55009
- i0.ɵɵelementStart(0, "div")(1, "p", 27);
55157
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
55158
+ i0.ɵɵelementStart(0, "div")(1, "p", 25);
55010
55159
  i0.ɵɵtext(2);
55011
55160
  i0.ɵɵelementEnd();
55012
- i0.ɵɵelementStart(3, "p", 29);
55161
+ i0.ɵɵelementStart(3, "p", 27);
55013
55162
  i0.ɵɵtext(4);
55014
55163
  i0.ɵɵelementEnd();
55015
- i0.ɵɵelement(5, "symphiq-pacing-status-badge", 33);
55164
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 30);
55016
55165
  i0.ɵɵelementEnd();
55017
55166
  } if (rf & 2) {
55018
55167
  const metric_r3 = i0.ɵɵnextContext().$implicit;
@@ -55028,31 +55177,27 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditio
55028
55177
  i0.ɵɵadvance();
55029
55178
  i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", metric_r3.pacingInfo.pacingPercentage)("status", metric_r3.pacingInfo.status)("showAsFullText", true)("isCompact", true)("showEmphasizedPercentage", true);
55030
55179
  } }
55031
- function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Template(rf, ctx) { if (rf & 1) {
55032
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 23)(2, "p", 24);
55180
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Template(rf, ctx) { if (rf & 1) {
55181
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 21)(2, "p", 22);
55033
55182
  i0.ɵɵtext(3);
55034
55183
  i0.ɵɵelementEnd();
55035
- i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_4_Template, 3, 2, "button", 25);
55184
+ i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_4_Template, 3, 2, "button", 23);
55036
55185
  i0.ɵɵelementEnd();
55037
- i0.ɵɵelementStart(5, "div", 26)(6, "div")(7, "p", 27);
55186
+ i0.ɵɵelementStart(5, "div", 24)(6, "div")(7, "p", 25);
55038
55187
  i0.ɵɵtext(8);
55039
55188
  i0.ɵɵelementEnd();
55040
- i0.ɵɵelementStart(9, "p", 28);
55189
+ i0.ɵɵelementStart(9, "p", 26);
55041
55190
  i0.ɵɵtext(10);
55042
55191
  i0.ɵɵelementEnd()();
55043
- i0.ɵɵelementStart(11, "div")(12, "p", 27);
55192
+ i0.ɵɵelementStart(11, "div")(12, "p", 25);
55044
55193
  i0.ɵɵtext(13);
55045
55194
  i0.ɵɵelementEnd();
55046
- i0.ɵɵelementStart(14, "p", 29);
55195
+ i0.ɵɵelementStart(14, "p", 27);
55047
55196
  i0.ɵɵtext(15);
55048
55197
  i0.ɵɵelementEnd();
55049
- i0.ɵɵelementStart(16, "div", 12)(17, "div", 30);
55050
- i0.ɵɵtext(18);
55198
+ i0.ɵɵelement(16, "symphiq-target-change-badge", 28);
55051
55199
  i0.ɵɵelementEnd();
55052
- i0.ɵɵelementStart(19, "div", 31);
55053
- i0.ɵɵtext(20);
55054
- i0.ɵɵelementEnd()()();
55055
- i0.ɵɵconditionalCreate(21, FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_21_Template, 6, 10, "div");
55200
+ i0.ɵɵconditionalCreate(17, FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_17_Template, 6, 10, "div");
55056
55201
  i0.ɵɵelementEnd()();
55057
55202
  } if (rf & 2) {
55058
55203
  const metric_r3 = ctx.$implicit;
@@ -55080,24 +55225,18 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Template
55080
55225
  i0.ɵɵproperty("ngClass", ctx_r1.relatedTargetValueClasses());
55081
55226
  i0.ɵɵadvance();
55082
55227
  i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(metric_r3.calc.targetValue, metric_r3.calc.metric, false), " ");
55083
- i0.ɵɵadvance(2);
55084
- i0.ɵɵproperty("ngClass", ctx_r1.overlayBadgeClasses(metric_r3.calc.percentageIncrease, metric_r3.calc.metric, true));
55085
- i0.ɵɵadvance();
55086
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getPercentageOnly(metric_r3.calc.percentageIncrease, metric_r3.calc.metric), " ");
55087
55228
  i0.ɵɵadvance();
55088
- i0.ɵɵproperty("ngClass", ctx_r1.relatedPercentageBadgeClasses());
55229
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", metric_r3.calc.percentageIncrease)("metric", metric_r3.calc.metric)("priorYear", ctx_r1.priorYear())("isCompact", true);
55089
55230
  i0.ɵɵadvance();
55090
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getDescriptionOnly(metric_r3.calc.percentageIncrease, metric_r3.calc.metric), " ");
55091
- i0.ɵɵadvance();
55092
- i0.ɵɵconditional(metric_r3.pacingInfo ? 21 : -1);
55231
+ i0.ɵɵconditional(metric_r3.pacingInfo ? 17 : -1);
55093
55232
  } }
55094
- function FunnelMetricsVisualizationComponent_For_4_Conditional_24_Template(rf, ctx) { if (rf & 1) {
55095
- i0.ɵɵelement(0, "div", 18);
55096
- i0.ɵɵelementStart(1, "div", 19)(2, "p", 20);
55233
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_20_Template(rf, ctx) { if (rf & 1) {
55234
+ i0.ɵɵelement(0, "div", 16);
55235
+ i0.ɵɵelementStart(1, "div", 17)(2, "p", 18);
55097
55236
  i0.ɵɵtext(3, " Related Metrics ");
55098
55237
  i0.ɵɵelementEnd();
55099
- i0.ɵɵelementStart(4, "div", 21);
55100
- i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Template, 22, 17, "div", 22, _forTrack1$3);
55238
+ i0.ɵɵelementStart(4, "div", 19);
55239
+ i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Template, 18, 18, "div", 20, _forTrack1$3);
55101
55240
  i0.ɵɵelementEnd()();
55102
55241
  } if (rf & 2) {
55103
55242
  const stage_r1 = i0.ɵɵnextContext().$implicit;
@@ -55126,15 +55265,11 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
55126
55265
  i0.ɵɵelementStart(16, "p", 11);
55127
55266
  i0.ɵɵtext(17);
55128
55267
  i0.ɵɵelementEnd();
55129
- i0.ɵɵelementStart(18, "div", 12)(19, "div", 13);
55130
- i0.ɵɵtext(20);
55268
+ i0.ɵɵelement(18, "symphiq-target-change-badge", 12);
55131
55269
  i0.ɵɵelementEnd();
55132
- i0.ɵɵelementStart(21, "div", 14);
55133
- i0.ɵɵtext(22);
55134
- i0.ɵɵelementEnd()()();
55135
- i0.ɵɵconditionalCreate(23, FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template, 6, 9, "div");
55270
+ i0.ɵɵconditionalCreate(19, FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template, 6, 9, "div");
55136
55271
  i0.ɵɵelementEnd();
55137
- i0.ɵɵconditionalCreate(24, FunnelMetricsVisualizationComponent_For_4_Conditional_24_Template, 7, 2);
55272
+ i0.ɵɵconditionalCreate(20, FunnelMetricsVisualizationComponent_For_4_Conditional_20_Template, 7, 2);
55138
55273
  i0.ɵɵelementEnd();
55139
55274
  } if (rf & 2) {
55140
55275
  const stage_r1 = ctx.$implicit;
@@ -55162,18 +55297,12 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
55162
55297
  i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
55163
55298
  i0.ɵɵadvance();
55164
55299
  i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(stage_r1.stageMetric.targetValue, stage_r1.stageMetric.metric, false), " ");
55165
- i0.ɵɵadvance(2);
55166
- i0.ɵɵproperty("ngClass", ctx_r1.overlayBadgeClasses(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric));
55167
- i0.ɵɵadvance();
55168
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getPercentageOnly(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric), " ");
55169
55300
  i0.ɵɵadvance();
55170
- i0.ɵɵproperty("ngClass", ctx_r1.percentageBadgeClasses());
55301
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", stage_r1.stageMetric.percentageIncrease)("metric", stage_r1.stageMetric.metric)("priorYear", ctx_r1.priorYear());
55171
55302
  i0.ɵɵadvance();
55172
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getDescriptionOnly(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric), " ");
55303
+ i0.ɵɵconditional(stage_r1.pacingInfo ? 19 : -1);
55173
55304
  i0.ɵɵadvance();
55174
- i0.ɵɵconditional(stage_r1.pacingInfo ? 23 : -1);
55175
- i0.ɵɵadvance();
55176
- i0.ɵɵconditional(stage_r1.relatedMetrics.length > 0 ? 24 : -1);
55305
+ i0.ɵɵconditional(stage_r1.relatedMetrics.length > 0 ? 20 : -1);
55177
55306
  } }
55178
55307
  class FunnelMetricsVisualizationComponent {
55179
55308
  constructor() {
@@ -55233,11 +55362,6 @@ class FunnelMetricsVisualizationComponent {
55233
55362
  ? 'text-slate-300'
55234
55363
  : 'text-slate-600';
55235
55364
  }
55236
- percentageBadgeClasses() {
55237
- return this.viewMode() === ViewModeEnum.DARK
55238
- ? 'bg-purple-500/30 text-purple-200 border border-purple-400/30'
55239
- : 'bg-purple-100 text-purple-700 border border-purple-300';
55240
- }
55241
55365
  labelClasses() {
55242
55366
  return this.viewMode() === ViewModeEnum.DARK
55243
55367
  ? 'text-slate-400'
@@ -55278,11 +55402,6 @@ class FunnelMetricsVisualizationComponent {
55278
55402
  ? 'text-slate-200'
55279
55403
  : 'text-slate-800';
55280
55404
  }
55281
- relatedPercentageBadgeClasses() {
55282
- return this.viewMode() === ViewModeEnum.DARK
55283
- ? 'bg-purple-800/60 text-purple-200'
55284
- : 'bg-purple-50 text-purple-800 border border-purple-200';
55285
- }
55286
55405
  relatedLabelClasses() {
55287
55406
  return this.viewMode() === ViewModeEnum.DARK
55288
55407
  ? 'text-slate-300'
@@ -55306,28 +55425,6 @@ class FunnelMetricsVisualizationComponent {
55306
55425
  formatPercentage(value, decimals) {
55307
55426
  return formatPercentage(value, decimals);
55308
55427
  }
55309
- getTargetIncreaseText(percentageIncrease, metric) {
55310
- const sign = MetricEnumUtil.increaseBad(metric) ? '' : '+';
55311
- const absValue = Math.abs(percentageIncrease);
55312
- return `${sign}${formatPercentage(absValue, 1)} increase over ${this.priorYear()}`;
55313
- }
55314
- getPercentageOnly(percentageIncrease, metric) {
55315
- const sign = MetricEnumUtil.increaseBad(metric) ? '' : '+';
55316
- const absValue = Math.abs(percentageIncrease);
55317
- return `${sign}${formatPercentage(absValue, 1)}`;
55318
- }
55319
- getDescriptionOnly(percentageIncrease, metric) {
55320
- return `increase over ${this.priorYear()}`;
55321
- }
55322
- overlayBadgeClasses(percentageIncrease, metric, isCompact = false) {
55323
- const isDark = this.viewMode() === ViewModeEnum.DARK;
55324
- if (isDark) {
55325
- return 'bg-purple-500/30 text-purple-200 border-purple-400/30';
55326
- }
55327
- else {
55328
- return 'bg-purple-100 text-purple-700 border-purple-300';
55329
- }
55330
- }
55331
55428
  formatMetricValue(value, metric, fromUiData = true) {
55332
55429
  if (metric.includes('REVENUE')) {
55333
55430
  return formatCurrency(value);
@@ -55353,188 +55450,180 @@ class FunnelMetricsVisualizationComponent {
55353
55450
  getMarkdownTooltipContent(markdown, title) {
55354
55451
  return { title, markdown };
55355
55452
  }
55356
- getGrowthSign(metric) {
55357
- return MetricEnumUtil.increaseBad(metric) ? '-' : '+';
55358
- }
55359
55453
  static { this.ɵfac = function FunnelMetricsVisualizationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FunnelMetricsVisualizationComponent)(); }; }
55360
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelMetricsVisualizationComponent, selectors: [["symphiq-funnel-metrics-visualization"]], inputs: { viewMode: [1, "viewMode"], calculations: [1, "calculations"], pacingMetrics: [1, "pacingMetrics"] }, decls: 5, vars: 0, consts: [[1, "space-y-6"], [1, "space-y-8"], [1, "rounded-xl", "p-6", "border-2", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "mb-6"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "font-bold", "leading-tight", "m-0", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-6", "h-6", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "grid", "grid-cols-2", "lg:grid-cols-3", "gap-6", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [1, "inline-flex", "flex-row", "items-center"], [1, "px-2.5", "py-0.5", "rounded-md", "font-extrabold", "text-sm", "tracking-tight", "border-2", "shadow-lg", "transition-all", "duration-200", "-my-1", "-mr-1", "z-10", 3, "ngClass"], [1, "px-3", "py-1.5", "rounded-lg", "font-semibold", "text-xs", "inline-block", 3, "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"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "showEmphasizedPercentage"], [1, "my-4", 3, "ngClass"], [1, "space-y-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-3"], [1, "p-4", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "mb-4"], [1, "text-xs", "font-semibold", "leading-tight", 3, "ngClass"], ["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, "grid", "grid-cols-2", "lg:grid-cols-3", "gap-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "text-lg", "font-bold", "mb-2", 3, "ngClass"], [1, "px-2", "py-0.5", "rounded", "text-xs", "font-extrabold", "tracking-tight", "border", "shadow-md", "transition-all", "duration-200", "-my-0.5", "-mr-1", "z-10", 3, "ngClass"], [1, "px-2.5", "py-1", "rounded", "text-xs", "font-semibold", "inline-block", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
55454
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelMetricsVisualizationComponent, selectors: [["symphiq-funnel-metrics-visualization"]], inputs: { viewMode: [1, "viewMode"], calculations: [1, "calculations"], pacingMetrics: [1, "pacingMetrics"] }, decls: 5, vars: 0, consts: [[1, "space-y-6"], [1, "space-y-8"], [1, "rounded-xl", "p-6", "border-2", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "mb-6"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "font-bold", "leading-tight", "m-0", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-6", "h-6", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "grid", "grid-cols-2", "lg:grid-cols-3", "gap-6", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear"], ["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"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "showEmphasizedPercentage"], [1, "my-4", 3, "ngClass"], [1, "space-y-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-3"], [1, "p-4", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "mb-4"], [1, "text-xs", "font-semibold", "leading-tight", 3, "ngClass"], ["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, "grid", "grid-cols-2", "lg:grid-cols-3", "gap-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "text-lg", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
55361
55455
  i0.ɵɵelementStart(0, "div", 0);
55362
55456
  i0.ɵɵelement(1, "symphiq-tooltip-container");
55363
55457
  i0.ɵɵelementStart(2, "div", 1);
55364
- i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 25, 18, "div", 2, _forTrack0$i);
55458
+ i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 21, 18, "div", 2, _forTrack0$i);
55365
55459
  i0.ɵɵelementEnd()();
55366
55460
  } if (rf & 2) {
55367
55461
  i0.ɵɵadvance(3);
55368
55462
  i0.ɵɵrepeater(ctx.funnelStages());
55369
- } }, dependencies: [CommonModule, i1$1.NgClass, PacingStatusBadgeComponent, TooltipDirective, TooltipContainerComponent], encapsulation: 2, changeDetection: 0 }); }
55463
+ } }, dependencies: [CommonModule, i1$1.NgClass, PacingStatusBadgeComponent, TargetChangeBadgeComponent, TooltipDirective, TooltipContainerComponent], encapsulation: 2, changeDetection: 0 }); }
55370
55464
  }
55371
55465
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FunnelMetricsVisualizationComponent, [{
55372
55466
  type: Component,
55373
55467
  args: [{
55374
55468
  selector: 'symphiq-funnel-metrics-visualization',
55375
55469
  standalone: true,
55376
- imports: [CommonModule, PacingStatusBadgeComponent, TooltipDirective, TooltipContainerComponent],
55470
+ imports: [CommonModule, PacingStatusBadgeComponent, TargetChangeBadgeComponent, TooltipDirective, TooltipContainerComponent],
55377
55471
  changeDetection: ChangeDetectionStrategy.OnPush,
55378
- template: `
55379
- <div class="space-y-6">
55380
- <symphiq-tooltip-container />
55381
- <div class="space-y-8">
55382
- @for (stage of funnelStages(); track stage.stageMetric.metric) {
55383
- <div [ngClass]="stageCardClasses()" class="rounded-xl p-6 border-2 transition-all duration-200">
55384
- <div class="flex items-start justify-between mb-6">
55385
- <div class="flex-1">
55386
- <div class="flex items-center gap-2 mb-1">
55387
- <h3 [ngClass]="stageTitleClasses()" class="text-lg font-bold leading-tight m-0">
55388
- {{ getMetricTitle(stage.stageMetric) }}
55389
- </h3>
55390
- @if (stage.stageMetric.description) {
55391
- <button
55392
- type="button"
55393
- [ngClass]="infoIconClasses()"
55394
- class="flex-shrink-0 w-6 h-6 rounded-full inline-flex items-center justify-center transition-colors"
55395
- [libSymphiqTooltip]="getMarkdownTooltipContent(stage.stageMetric.description, getMetricTitle(stage.stageMetric))"
55396
- tooltipType="markdown"
55397
- tooltipPosition="right">
55398
- <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55399
- <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" />
55400
- </svg>
55401
- </button>
55402
- }
55403
- </div>
55404
- </div>
55405
- </div>
55406
-
55407
- <div class="grid grid-cols-2 lg:grid-cols-3 gap-6 mb-4">
55408
- <div>
55409
- <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
55410
- {{ priorYear() }} Actual
55411
- </p>
55412
- <p [ngClass]="valueClasses()" class="text-2xl font-bold">
55413
- {{ formatMetricValue(stage.stageMetric.currentValue, stage.stageMetric.metric) }}
55414
- </p>
55415
- </div>
55416
- <div>
55417
- <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
55418
- {{ currentYear() }} Target
55419
- </p>
55420
- <p [ngClass]="targetValueClasses()" class="text-2xl font-bold mb-3">
55421
- {{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric, false) }}
55422
- </p>
55423
- <div class="inline-flex flex-row items-center">
55424
- <div [ngClass]="overlayBadgeClasses(stage.stageMetric.percentageIncrease, stage.stageMetric.metric)"
55425
- class="px-2.5 py-0.5 rounded-md font-extrabold text-sm tracking-tight border-2 shadow-lg transition-all duration-200 -my-1 -mr-1 z-10">
55426
- {{ getPercentageOnly(stage.stageMetric.percentageIncrease, stage.stageMetric.metric) }}
55427
- </div>
55428
- <div [ngClass]="percentageBadgeClasses()" class="px-3 py-1.5 rounded-lg font-semibold text-xs inline-block">
55429
- {{ getDescriptionOnly(stage.stageMetric.percentageIncrease, stage.stageMetric.metric) }}
55430
- </div>
55431
- </div>
55432
- </div>
55433
- @if (stage.pacingInfo) {
55434
- <div>
55435
- <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
55436
- Pace for {{ currentYear() }}
55437
- </p>
55438
- <p [ngClass]="projectedValueClasses()" class="text-2xl font-bold mb-3">
55439
- {{ formatMetricValue(stage.pacingInfo.projectedValue, stage.stageMetric.metric, false) }}
55440
- </p>
55441
- <symphiq-pacing-status-badge
55442
- [viewMode]="viewMode()"
55443
- [pacingPercentage]="stage.pacingInfo.pacingPercentage"
55444
- [status]="stage.pacingInfo.status"
55445
- [showAsFullText]="true"
55446
- [showEmphasizedPercentage]="true"
55447
- />
55448
- </div>
55449
- }
55450
- </div>
55451
-
55452
- @if (stage.relatedMetrics.length > 0) {
55453
- <div [ngClass]="dividerClasses()" class="my-4"></div>
55454
-
55455
- <div class="space-y-3">
55456
- <p [ngClass]="relatedTitleClasses()" class="text-xs font-semibold uppercase tracking-wider mb-3">
55457
- Related Metrics
55458
- </p>
55459
- <div class="grid gap-3">
55460
- @for (metric of stage.relatedMetrics; track metric.calc.metric) {
55461
- <div [ngClass]="relatedMetricCardClasses()" class="p-4 rounded-lg">
55462
- <div class="flex items-center gap-2 mb-4">
55463
- <p [ngClass]="relatedMetricNameClasses()" class="text-xs font-semibold leading-tight">
55464
- {{ getMetricTitle(metric.calc) }}
55465
- </p>
55466
- @if (metric.calc.description) {
55467
- <button
55468
- type="button"
55469
- [ngClass]="infoIconClasses()"
55470
- class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
55471
- [libSymphiqTooltip]="getMarkdownTooltipContent(metric.calc.description, getMetricTitle(metric.calc))"
55472
- tooltipType="markdown"
55473
- tooltipPosition="right">
55474
- <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55475
- <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" />
55476
- </svg>
55477
- </button>
55478
- }
55479
- </div>
55480
- <div class="grid grid-cols-2 lg:grid-cols-3 gap-4">
55481
- <div>
55482
- <p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
55483
- {{ priorYear() }} Actual
55484
- </p>
55485
- <p [ngClass]="relatedValueClasses()" class="text-lg font-bold">
55486
- {{ formatMetricValue(metric.calc.currentValue, metric.calc.metric) }}
55487
- </p>
55488
- </div>
55489
- <div>
55490
- <p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
55491
- {{ currentYear() }} Target
55492
- </p>
55493
- <p [ngClass]="relatedTargetValueClasses()" class="text-lg font-bold mb-2">
55494
- {{ formatMetricValue(metric.calc.targetValue, metric.calc.metric, false) }}
55495
- </p>
55496
- <div class="inline-flex flex-row items-center">
55497
- <div [ngClass]="overlayBadgeClasses(metric.calc.percentageIncrease, metric.calc.metric, true)"
55498
- class="px-2 py-0.5 rounded text-xs font-extrabold tracking-tight border shadow-md transition-all duration-200 -my-0.5 -mr-1 z-10">
55499
- {{ getPercentageOnly(metric.calc.percentageIncrease, metric.calc.metric) }}
55500
- </div>
55501
- <div [ngClass]="relatedPercentageBadgeClasses()" class="px-2.5 py-1 rounded text-xs font-semibold inline-block">
55502
- {{ getDescriptionOnly(metric.calc.percentageIncrease, metric.calc.metric) }}
55503
- </div>
55504
- </div>
55505
- </div>
55506
- @if (metric.pacingInfo) {
55507
- <div>
55508
- <p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
55509
- Pace for {{ currentYear() }}
55510
- </p>
55511
- <p [ngClass]="relatedProjectedValueClasses()" class="text-lg font-bold mb-2">
55512
- {{ formatMetricValue(metric.pacingInfo.projectedValue, metric.calc.metric, false) }}
55513
- </p>
55514
- <symphiq-pacing-status-badge
55515
- [viewMode]="viewMode()"
55516
- [pacingPercentage]="metric.pacingInfo.pacingPercentage"
55517
- [status]="metric.pacingInfo.status"
55518
- [showAsFullText]="true"
55519
- [isCompact]="true"
55520
- [showEmphasizedPercentage]="true"
55521
- />
55522
- </div>
55523
- }
55524
- </div>
55525
- </div>
55526
- }
55527
- </div>
55528
- </div>
55529
- }
55530
- </div>
55531
- }
55532
- </div>
55533
- </div>
55472
+ template: `
55473
+ <div class="space-y-6">
55474
+ <symphiq-tooltip-container />
55475
+ <div class="space-y-8">
55476
+ @for (stage of funnelStages(); track stage.stageMetric.metric) {
55477
+ <div [ngClass]="stageCardClasses()" class="rounded-xl p-6 border-2 transition-all duration-200">
55478
+ <div class="flex items-start justify-between mb-6">
55479
+ <div class="flex-1">
55480
+ <div class="flex items-center gap-2 mb-1">
55481
+ <h3 [ngClass]="stageTitleClasses()" class="text-lg font-bold leading-tight m-0">
55482
+ {{ getMetricTitle(stage.stageMetric) }}
55483
+ </h3>
55484
+ @if (stage.stageMetric.description) {
55485
+ <button
55486
+ type="button"
55487
+ [ngClass]="infoIconClasses()"
55488
+ class="flex-shrink-0 w-6 h-6 rounded-full inline-flex items-center justify-center transition-colors"
55489
+ [libSymphiqTooltip]="getMarkdownTooltipContent(stage.stageMetric.description, getMetricTitle(stage.stageMetric))"
55490
+ tooltipType="markdown"
55491
+ tooltipPosition="right">
55492
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55493
+ <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" />
55494
+ </svg>
55495
+ </button>
55496
+ }
55497
+ </div>
55498
+ </div>
55499
+ </div>
55500
+
55501
+ <div class="grid grid-cols-2 lg:grid-cols-3 gap-6 mb-4">
55502
+ <div>
55503
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
55504
+ {{ priorYear() }} Actual
55505
+ </p>
55506
+ <p [ngClass]="valueClasses()" class="text-2xl font-bold">
55507
+ {{ formatMetricValue(stage.stageMetric.currentValue, stage.stageMetric.metric) }}
55508
+ </p>
55509
+ </div>
55510
+ <div>
55511
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
55512
+ {{ currentYear() }} Target
55513
+ </p>
55514
+ <p [ngClass]="targetValueClasses()" class="text-2xl font-bold mb-3">
55515
+ {{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric, false) }}
55516
+ </p>
55517
+ <symphiq-target-change-badge
55518
+ [viewMode]="viewMode()"
55519
+ [percentageChange]="stage.stageMetric.percentageIncrease"
55520
+ [metric]="stage.stageMetric.metric"
55521
+ [priorYear]="priorYear()"
55522
+ />
55523
+ </div>
55524
+ @if (stage.pacingInfo) {
55525
+ <div>
55526
+ <p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
55527
+ Pace for {{ currentYear() }}
55528
+ </p>
55529
+ <p [ngClass]="projectedValueClasses()" class="text-2xl font-bold mb-3">
55530
+ {{ formatMetricValue(stage.pacingInfo.projectedValue, stage.stageMetric.metric, false) }}
55531
+ </p>
55532
+ <symphiq-pacing-status-badge
55533
+ [viewMode]="viewMode()"
55534
+ [pacingPercentage]="stage.pacingInfo.pacingPercentage"
55535
+ [status]="stage.pacingInfo.status"
55536
+ [showAsFullText]="true"
55537
+ [showEmphasizedPercentage]="true"
55538
+ />
55539
+ </div>
55540
+ }
55541
+ </div>
55542
+
55543
+ @if (stage.relatedMetrics.length > 0) {
55544
+ <div [ngClass]="dividerClasses()" class="my-4"></div>
55545
+
55546
+ <div class="space-y-3">
55547
+ <p [ngClass]="relatedTitleClasses()" class="text-xs font-semibold uppercase tracking-wider mb-3">
55548
+ Related Metrics
55549
+ </p>
55550
+ <div class="grid gap-3">
55551
+ @for (metric of stage.relatedMetrics; track metric.calc.metric) {
55552
+ <div [ngClass]="relatedMetricCardClasses()" class="p-4 rounded-lg">
55553
+ <div class="flex items-center gap-2 mb-4">
55554
+ <p [ngClass]="relatedMetricNameClasses()" class="text-xs font-semibold leading-tight">
55555
+ {{ getMetricTitle(metric.calc) }}
55556
+ </p>
55557
+ @if (metric.calc.description) {
55558
+ <button
55559
+ type="button"
55560
+ [ngClass]="infoIconClasses()"
55561
+ class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
55562
+ [libSymphiqTooltip]="getMarkdownTooltipContent(metric.calc.description, getMetricTitle(metric.calc))"
55563
+ tooltipType="markdown"
55564
+ tooltipPosition="right">
55565
+ <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55566
+ <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" />
55567
+ </svg>
55568
+ </button>
55569
+ }
55570
+ </div>
55571
+ <div class="grid grid-cols-2 lg:grid-cols-3 gap-4">
55572
+ <div>
55573
+ <p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
55574
+ {{ priorYear() }} Actual
55575
+ </p>
55576
+ <p [ngClass]="relatedValueClasses()" class="text-lg font-bold">
55577
+ {{ formatMetricValue(metric.calc.currentValue, metric.calc.metric) }}
55578
+ </p>
55579
+ </div>
55580
+ <div>
55581
+ <p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
55582
+ {{ currentYear() }} Target
55583
+ </p>
55584
+ <p [ngClass]="relatedTargetValueClasses()" class="text-lg font-bold mb-2">
55585
+ {{ formatMetricValue(metric.calc.targetValue, metric.calc.metric, false) }}
55586
+ </p>
55587
+ <symphiq-target-change-badge
55588
+ [viewMode]="viewMode()"
55589
+ [percentageChange]="metric.calc.percentageIncrease"
55590
+ [metric]="metric.calc.metric"
55591
+ [priorYear]="priorYear()"
55592
+ [isCompact]="true"
55593
+ />
55594
+ </div>
55595
+ @if (metric.pacingInfo) {
55596
+ <div>
55597
+ <p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
55598
+ Pace for {{ currentYear() }}
55599
+ </p>
55600
+ <p [ngClass]="relatedProjectedValueClasses()" class="text-lg font-bold mb-2">
55601
+ {{ formatMetricValue(metric.pacingInfo.projectedValue, metric.calc.metric, false) }}
55602
+ </p>
55603
+ <symphiq-pacing-status-badge
55604
+ [viewMode]="viewMode()"
55605
+ [pacingPercentage]="metric.pacingInfo.pacingPercentage"
55606
+ [status]="metric.pacingInfo.status"
55607
+ [showAsFullText]="true"
55608
+ [isCompact]="true"
55609
+ [showEmphasizedPercentage]="true"
55610
+ />
55611
+ </div>
55612
+ }
55613
+ </div>
55614
+ </div>
55615
+ }
55616
+ </div>
55617
+ </div>
55618
+ }
55619
+ </div>
55620
+ }
55621
+ </div>
55622
+ </div>
55534
55623
  `
55535
55624
  }]
55536
55625
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], calculations: [{ type: i0.Input, args: [{ isSignal: true, alias: "calculations", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }] }); })();
55537
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber: 174 }); })();
55626
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber: 170 }); })();
55538
55627
 
55539
55628
  function StickySubmitBarComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55540
55629
  i0.ɵɵelementStart(0, "div", 4);
@@ -84441,5 +84530,5 @@ var pieChart_component = /*#__PURE__*/Object.freeze({
84441
84530
  * Generated bundle index. Do not edit.
84442
84531
  */
84443
84532
 
84444
- 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, 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, 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 };
84533
+ 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 };
84445
84534
  //# sourceMappingURL=symphiq-components.mjs.map