@eric-emg/symphiq-components 1.2.230 → 1.2.231

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,29 +54795,28 @@ 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", 0)(1, "div", 2)(2, "span", 3);
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.ɵɵproperty("ngClass", ctx_r0.containerClasses());
54809
54809
  i0.ɵɵadvance();
54810
54810
  i0.ɵɵproperty("ngClass", ctx_r0.overlayBadgeClasses());
54811
54811
  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
54812
  i0.ɵɵclassMap(ctx_r0.iconSizeClasses());
54818
54813
  i0.ɵɵproperty("ngClass", ctx_r0.iconClasses());
54819
54814
  i0.ɵɵadvance();
54820
54815
  i0.ɵɵtextInterpolate1(" ", ctx_r0.iconSymbol(), " ");
54816
+ i0.ɵɵadvance();
54817
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.extractPercentage(), " ");
54818
+ i0.ɵɵadvance();
54819
+ i0.ɵɵclassMap(ctx_r0.sizeClasses());
54821
54820
  i0.ɵɵadvance(2);
54822
54821
  i0.ɵɵtextInterpolate(ctx_r0.displayTextWithoutPercentage());
54823
54822
  } }
@@ -54830,7 +54829,7 @@ function PacingStatusBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
54830
54829
  i0.ɵɵelementEnd()();
54831
54830
  } if (rf & 2) {
54832
54831
  const ctx_r0 = i0.ɵɵnextContext();
54833
- i0.ɵɵclassMap(ctx_r0.sizeClasses());
54832
+ i0.ɵɵclassMap(ctx_r0.fullBadgeSizeClasses());
54834
54833
  i0.ɵɵproperty("ngClass", ctx_r0.badgeClasses());
54835
54834
  i0.ɵɵadvance();
54836
54835
  i0.ɵɵclassMap(ctx_r0.iconSizeClasses());
@@ -54852,18 +54851,30 @@ class PacingStatusBadgeComponent {
54852
54851
  const isDark = this.viewMode() === ViewModeEnum.DARK;
54853
54852
  return getPacingDisplayInfo(this.pacingPercentage(), this.status(), isDark);
54854
54853
  }, ...(ngDevMode ? [{ debugName: "displayInfo" }] : []));
54854
+ this.containerClasses = computed(() => {
54855
+ const info = this.displayInfo();
54856
+ return `${info.bgClass} ${info.borderClass} border`;
54857
+ }, ...(ngDevMode ? [{ debugName: "containerClasses" }] : []));
54855
54858
  this.badgeClasses = computed(() => {
54856
54859
  const info = this.displayInfo();
54857
54860
  return `${info.bgClass} ${info.colorClass} ${info.borderClass}`;
54858
54861
  }, ...(ngDevMode ? [{ debugName: "badgeClasses" }] : []));
54859
54862
  this.sizeClasses = computed(() => {
54860
54863
  const isCompact = this.isCompact();
54861
- const baseClasses = 'inline-flex items-center gap-1.5 rounded-lg border font-semibold transition-all';
54864
+ const baseClasses = 'inline-flex items-center gap-1.5 font-semibold transition-all';
54862
54865
  if (isCompact) {
54863
54866
  return `${baseClasses} px-2.5 py-1 text-xs`;
54864
54867
  }
54865
54868
  return `${baseClasses} px-3 py-1.5 text-xs`;
54866
54869
  }, ...(ngDevMode ? [{ debugName: "sizeClasses" }] : []));
54870
+ this.fullBadgeSizeClasses = computed(() => {
54871
+ const isCompact = this.isCompact();
54872
+ const baseClasses = 'inline-flex items-center gap-1.5 rounded-lg border font-semibold transition-all';
54873
+ if (isCompact) {
54874
+ return `${baseClasses} px-2.5 py-1 text-xs`;
54875
+ }
54876
+ return `${baseClasses} px-3 py-1.5 text-xs`;
54877
+ }, ...(ngDevMode ? [{ debugName: "fullBadgeSizeClasses" }] : []));
54867
54878
  this.iconClasses = computed(() => {
54868
54879
  return this.displayInfo().colorClass;
54869
54880
  }, ...(ngDevMode ? [{ debugName: "iconClasses" }] : []));
@@ -54912,7 +54923,7 @@ class PacingStatusBadgeComponent {
54912
54923
  }, ...(ngDevMode ? [{ debugName: "overlayBadgeClasses" }] : []));
54913
54924
  }
54914
54925
  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) {
54926
+ 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", "rounded-lg", 3, "ngClass"], [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", "inline-flex", "items-center", "gap-1", 3, "ngClass"], [3, "ngClass"]], template: function PacingStatusBadgeComponent_Template(rf, ctx) { if (rf & 1) {
54916
54927
  i0.ɵɵconditionalCreate(0, PacingStatusBadgeComponent_Conditional_0_Template, 8, 10, "div", 0)(1, PacingStatusBadgeComponent_Conditional_1_Template, 5, 8, "div", 1);
54917
54928
  } if (rf & 2) {
54918
54929
  i0.ɵɵconditional(ctx.showEmphasizedPercentage() && ctx.hasPercentage() ? 0 : 1);
@@ -54927,25 +54938,24 @@ class PacingStatusBadgeComponent {
54927
54938
  changeDetection: ChangeDetectionStrategy.OnPush,
54928
54939
  template: `
54929
54940
  @if (showEmphasizedPercentage() && hasPercentage()) {
54930
- <div class="inline-flex flex-row items-center">
54941
+ <div [ngClass]="containerClasses()" class="inline-flex flex-row items-center rounded-lg">
54931
54942
  <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">
54943
+ 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 inline-flex items-center gap-1">
54944
+ <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54945
+ {{ iconSymbol() }}
54946
+ </span>
54933
54947
  {{ extractPercentage() }}
54934
54948
  </div>
54935
54949
  <div
54936
- [ngClass]="badgeClasses()"
54937
54950
  [class]="sizeClasses()"
54938
54951
  >
54939
- <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54940
- {{ iconSymbol() }}
54941
- </span>
54942
54952
  <span>{{ displayTextWithoutPercentage() }}</span>
54943
54953
  </div>
54944
54954
  </div>
54945
54955
  } @else {
54946
54956
  <div
54947
54957
  [ngClass]="badgeClasses()"
54948
- [class]="sizeClasses()"
54958
+ [class]="fullBadgeSizeClasses()"
54949
54959
  >
54950
54960
  <span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
54951
54961
  {{ iconSymbol() }}
@@ -54956,29 +54966,29 @@ class PacingStatusBadgeComponent {
54956
54966
  `
54957
54967
  }]
54958
54968
  }], 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 }); })();
54969
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PacingStatusBadgeComponent, { className: "PacingStatusBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/pacing-status-badge.component.ts", lineNumber: 40 }); })();
54960
54970
 
54961
54971
  const _forTrack0$i = ($index, $item) => $item.stageMetric.metric;
54962
54972
  const _forTrack1$3 = ($index, $item) => $item.calc.metric;
54963
54973
  function FunnelMetricsVisualizationComponent_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
54964
54974
  i0.ɵɵelementStart(0, "button", 7);
54965
54975
  i0.ɵɵnamespaceSVG();
54966
- i0.ɵɵelementStart(1, "svg", 15);
54967
- i0.ɵɵelement(2, "path", 16);
54976
+ i0.ɵɵelementStart(1, "svg", 16);
54977
+ i0.ɵɵelement(2, "path", 17);
54968
54978
  i0.ɵɵelementEnd()();
54969
54979
  } if (rf & 2) {
54970
54980
  const stage_r1 = i0.ɵɵnextContext().$implicit;
54971
54981
  const ctx_r1 = i0.ɵɵnextContext();
54972
54982
  i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(stage_r1.stageMetric.description, ctx_r1.getMetricTitle(stage_r1.stageMetric)));
54973
54983
  } }
54974
- function FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template(rf, ctx) { if (rf & 1) {
54984
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_25_Template(rf, ctx) { if (rf & 1) {
54975
54985
  i0.ɵɵelementStart(0, "div")(1, "p", 9);
54976
54986
  i0.ɵɵtext(2);
54977
54987
  i0.ɵɵelementEnd();
54978
54988
  i0.ɵɵelementStart(3, "p", 11);
54979
54989
  i0.ɵɵtext(4);
54980
54990
  i0.ɵɵelementEnd();
54981
- i0.ɵɵelement(5, "symphiq-pacing-status-badge", 17);
54991
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 18);
54982
54992
  i0.ɵɵelementEnd();
54983
54993
  } if (rf & 2) {
54984
54994
  const stage_r1 = i0.ɵɵnextContext().$implicit;
@@ -54994,25 +55004,25 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template(rf, c
54994
55004
  i0.ɵɵadvance();
54995
55005
  i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", stage_r1.pacingInfo.pacingPercentage)("status", stage_r1.pacingInfo.status)("showAsFullText", true)("showEmphasizedPercentage", true);
54996
55006
  } }
54997
- function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
54998
- i0.ɵɵelementStart(0, "button", 25);
55007
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_26_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55008
+ i0.ɵɵelementStart(0, "button", 26);
54999
55009
  i0.ɵɵnamespaceSVG();
55000
- i0.ɵɵelementStart(1, "svg", 32);
55001
- i0.ɵɵelement(2, "path", 16);
55010
+ i0.ɵɵelementStart(1, "svg", 35);
55011
+ i0.ɵɵelement(2, "path", 17);
55002
55012
  i0.ɵɵelementEnd()();
55003
55013
  } if (rf & 2) {
55004
55014
  const metric_r3 = i0.ɵɵnextContext().$implicit;
55005
55015
  const ctx_r1 = i0.ɵɵnextContext(3);
55006
55016
  i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r3.calc.description, ctx_r1.getMetricTitle(metric_r3.calc)));
55007
55017
  } }
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);
55018
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_26_For_6_Conditional_23_Template(rf, ctx) { if (rf & 1) {
55019
+ i0.ɵɵelementStart(0, "div")(1, "p", 28);
55010
55020
  i0.ɵɵtext(2);
55011
55021
  i0.ɵɵelementEnd();
55012
- i0.ɵɵelementStart(3, "p", 29);
55022
+ i0.ɵɵelementStart(3, "p", 30);
55013
55023
  i0.ɵɵtext(4);
55014
55024
  i0.ɵɵelementEnd();
55015
- i0.ɵɵelement(5, "symphiq-pacing-status-badge", 33);
55025
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 36);
55016
55026
  i0.ɵɵelementEnd();
55017
55027
  } if (rf & 2) {
55018
55028
  const metric_r3 = i0.ɵɵnextContext().$implicit;
@@ -55028,31 +55038,33 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditio
55028
55038
  i0.ɵɵadvance();
55029
55039
  i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", metric_r3.pacingInfo.pacingPercentage)("status", metric_r3.pacingInfo.status)("showAsFullText", true)("isCompact", true)("showEmphasizedPercentage", true);
55030
55040
  } }
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);
55041
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_26_For_6_Template(rf, ctx) { if (rf & 1) {
55042
+ i0.ɵɵelementStart(0, "div", 23)(1, "div", 24)(2, "p", 25);
55033
55043
  i0.ɵɵtext(3);
55034
55044
  i0.ɵɵelementEnd();
55035
- i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_4_Template, 3, 2, "button", 25);
55045
+ i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_26_For_6_Conditional_4_Template, 3, 2, "button", 26);
55036
55046
  i0.ɵɵelementEnd();
55037
- i0.ɵɵelementStart(5, "div", 26)(6, "div")(7, "p", 27);
55047
+ i0.ɵɵelementStart(5, "div", 27)(6, "div")(7, "p", 28);
55038
55048
  i0.ɵɵtext(8);
55039
55049
  i0.ɵɵelementEnd();
55040
- i0.ɵɵelementStart(9, "p", 28);
55050
+ i0.ɵɵelementStart(9, "p", 29);
55041
55051
  i0.ɵɵtext(10);
55042
55052
  i0.ɵɵelementEnd()();
55043
- i0.ɵɵelementStart(11, "div")(12, "p", 27);
55053
+ i0.ɵɵelementStart(11, "div")(12, "p", 28);
55044
55054
  i0.ɵɵtext(13);
55045
55055
  i0.ɵɵelementEnd();
55046
- i0.ɵɵelementStart(14, "p", 29);
55056
+ i0.ɵɵelementStart(14, "p", 30);
55047
55057
  i0.ɵɵtext(15);
55048
55058
  i0.ɵɵelementEnd();
55049
- i0.ɵɵelementStart(16, "div", 12)(17, "div", 30);
55050
- i0.ɵɵtext(18);
55059
+ i0.ɵɵelementStart(16, "div", 31)(17, "div", 32)(18, "span", 33);
55060
+ i0.ɵɵtext(19);
55051
55061
  i0.ɵɵelementEnd();
55052
- i0.ɵɵelementStart(19, "div", 31);
55053
55062
  i0.ɵɵtext(20);
55063
+ i0.ɵɵelementEnd();
55064
+ i0.ɵɵelementStart(21, "div", 34);
55065
+ i0.ɵɵtext(22);
55054
55066
  i0.ɵɵelementEnd()()();
55055
- i0.ɵɵconditionalCreate(21, FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Conditional_21_Template, 6, 10, "div");
55067
+ i0.ɵɵconditionalCreate(23, FunnelMetricsVisualizationComponent_For_4_Conditional_26_For_6_Conditional_23_Template, 6, 10, "div");
55056
55068
  i0.ɵɵelementEnd()();
55057
55069
  } if (rf & 2) {
55058
55070
  const metric_r3 = ctx.$implicit;
@@ -55080,24 +55092,26 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_24_For_6_Template
55080
55092
  i0.ɵɵproperty("ngClass", ctx_r1.relatedTargetValueClasses());
55081
55093
  i0.ɵɵadvance();
55082
55094
  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
55095
  i0.ɵɵadvance();
55086
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getPercentageOnly(metric_r3.calc.percentageIncrease, metric_r3.calc.metric), " ");
55096
+ i0.ɵɵproperty("ngClass", ctx_r1.relatedContainerBadgeClasses());
55087
55097
  i0.ɵɵadvance();
55088
- i0.ɵɵproperty("ngClass", ctx_r1.relatedPercentageBadgeClasses());
55098
+ i0.ɵɵproperty("ngClass", ctx_r1.overlayBadgeClasses(metric_r3.calc.percentageIncrease, metric_r3.calc.metric, true));
55099
+ i0.ɵɵadvance(2);
55100
+ i0.ɵɵtextInterpolate(ctx_r1.getGrowthIconSymbol(metric_r3.calc.percentageIncrease));
55089
55101
  i0.ɵɵadvance();
55102
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getPercentageOnly(metric_r3.calc.percentageIncrease, metric_r3.calc.metric), " ");
55103
+ i0.ɵɵadvance(2);
55090
55104
  i0.ɵɵtextInterpolate1(" ", ctx_r1.getDescriptionOnly(metric_r3.calc.percentageIncrease, metric_r3.calc.metric), " ");
55091
55105
  i0.ɵɵadvance();
55092
- i0.ɵɵconditional(metric_r3.pacingInfo ? 21 : -1);
55106
+ i0.ɵɵconditional(metric_r3.pacingInfo ? 23 : -1);
55093
55107
  } }
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);
55108
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_26_Template(rf, ctx) { if (rf & 1) {
55109
+ i0.ɵɵelement(0, "div", 19);
55110
+ i0.ɵɵelementStart(1, "div", 20)(2, "p", 21);
55097
55111
  i0.ɵɵtext(3, " Related Metrics ");
55098
55112
  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);
55113
+ i0.ɵɵelementStart(4, "div", 22);
55114
+ i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_26_For_6_Template, 24, 18, "div", 23, _forTrack1$3);
55101
55115
  i0.ɵɵelementEnd()();
55102
55116
  } if (rf & 2) {
55103
55117
  const stage_r1 = i0.ɵɵnextContext().$implicit;
@@ -55126,15 +55140,17 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
55126
55140
  i0.ɵɵelementStart(16, "p", 11);
55127
55141
  i0.ɵɵtext(17);
55128
55142
  i0.ɵɵelementEnd();
55129
- i0.ɵɵelementStart(18, "div", 12)(19, "div", 13);
55130
- i0.ɵɵtext(20);
55143
+ i0.ɵɵelementStart(18, "div", 12)(19, "div", 13)(20, "span", 14);
55144
+ i0.ɵɵtext(21);
55131
55145
  i0.ɵɵelementEnd();
55132
- i0.ɵɵelementStart(21, "div", 14);
55133
55146
  i0.ɵɵtext(22);
55147
+ i0.ɵɵelementEnd();
55148
+ i0.ɵɵelementStart(23, "div", 15);
55149
+ i0.ɵɵtext(24);
55134
55150
  i0.ɵɵelementEnd()()();
55135
- i0.ɵɵconditionalCreate(23, FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template, 6, 9, "div");
55151
+ i0.ɵɵconditionalCreate(25, FunnelMetricsVisualizationComponent_For_4_Conditional_25_Template, 6, 9, "div");
55136
55152
  i0.ɵɵelementEnd();
55137
- i0.ɵɵconditionalCreate(24, FunnelMetricsVisualizationComponent_For_4_Conditional_24_Template, 7, 2);
55153
+ i0.ɵɵconditionalCreate(26, FunnelMetricsVisualizationComponent_For_4_Conditional_26_Template, 7, 2);
55138
55154
  i0.ɵɵelementEnd();
55139
55155
  } if (rf & 2) {
55140
55156
  const stage_r1 = ctx.$implicit;
@@ -55162,18 +55178,20 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
55162
55178
  i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
55163
55179
  i0.ɵɵadvance();
55164
55180
  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
55181
  i0.ɵɵadvance();
55168
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getPercentageOnly(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric), " ");
55182
+ i0.ɵɵproperty("ngClass", ctx_r1.containerBadgeClasses());
55169
55183
  i0.ɵɵadvance();
55170
- i0.ɵɵproperty("ngClass", ctx_r1.percentageBadgeClasses());
55184
+ i0.ɵɵproperty("ngClass", ctx_r1.overlayBadgeClasses(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric));
55185
+ i0.ɵɵadvance(2);
55186
+ i0.ɵɵtextInterpolate(ctx_r1.getGrowthIconSymbol(stage_r1.stageMetric.percentageIncrease));
55171
55187
  i0.ɵɵadvance();
55188
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getPercentageOnly(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric), " ");
55189
+ i0.ɵɵadvance(2);
55172
55190
  i0.ɵɵtextInterpolate1(" ", ctx_r1.getDescriptionOnly(stage_r1.stageMetric.percentageIncrease, stage_r1.stageMetric.metric), " ");
55173
55191
  i0.ɵɵadvance();
55174
- i0.ɵɵconditional(stage_r1.pacingInfo ? 23 : -1);
55192
+ i0.ɵɵconditional(stage_r1.pacingInfo ? 25 : -1);
55175
55193
  i0.ɵɵadvance();
55176
- i0.ɵɵconditional(stage_r1.relatedMetrics.length > 0 ? 24 : -1);
55194
+ i0.ɵɵconditional(stage_r1.relatedMetrics.length > 0 ? 26 : -1);
55177
55195
  } }
55178
55196
  class FunnelMetricsVisualizationComponent {
55179
55197
  constructor() {
@@ -55233,6 +55251,16 @@ class FunnelMetricsVisualizationComponent {
55233
55251
  ? 'text-slate-300'
55234
55252
  : 'text-slate-600';
55235
55253
  }
55254
+ containerBadgeClasses() {
55255
+ return this.viewMode() === ViewModeEnum.DARK
55256
+ ? 'bg-purple-500/30 border-purple-400/30'
55257
+ : 'bg-purple-100 border-purple-300';
55258
+ }
55259
+ relatedContainerBadgeClasses() {
55260
+ return this.viewMode() === ViewModeEnum.DARK
55261
+ ? 'bg-purple-800/60 border-purple-700/50'
55262
+ : 'bg-purple-50 border-purple-200';
55263
+ }
55236
55264
  percentageBadgeClasses() {
55237
55265
  return this.viewMode() === ViewModeEnum.DARK
55238
55266
  ? 'bg-purple-500/30 text-purple-200 border border-purple-400/30'
@@ -55356,12 +55384,19 @@ class FunnelMetricsVisualizationComponent {
55356
55384
  getGrowthSign(metric) {
55357
55385
  return MetricEnumUtil.increaseBad(metric) ? '-' : '+';
55358
55386
  }
55387
+ getGrowthIconSymbol(percentageIncrease) {
55388
+ if (percentageIncrease > 0)
55389
+ return '↗';
55390
+ if (percentageIncrease < 0)
55391
+ return '↘';
55392
+ return '→';
55393
+ }
55359
55394
  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) {
55395
+ 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", "rounded-lg", "border", 3, "ngClass"], [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", "inline-flex", "items-center", "gap-1", 3, "ngClass"], [1, "text-sm"], [1, "px-3", "py-1.5", "font-semibold", "text-xs", "inline-block"], ["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, "inline-flex", "flex-row", "items-center", "rounded", "border", 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", "inline-flex", "items-center", "gap-0.5", 3, "ngClass"], [1, "text-xs"], [1, "px-2.5", "py-1", "text-xs", "font-semibold", "inline-block"], ["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
55396
  i0.ɵɵelementStart(0, "div", 0);
55362
55397
  i0.ɵɵelement(1, "symphiq-tooltip-container");
55363
55398
  i0.ɵɵelementStart(2, "div", 1);
55364
- i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 25, 18, "div", 2, _forTrack0$i);
55399
+ i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 27, 19, "div", 2, _forTrack0$i);
55365
55400
  i0.ɵɵelementEnd()();
55366
55401
  } if (rf & 2) {
55367
55402
  i0.ɵɵadvance(3);
@@ -55420,12 +55455,13 @@ class FunnelMetricsVisualizationComponent {
55420
55455
  <p [ngClass]="targetValueClasses()" class="text-2xl font-bold mb-3">
55421
55456
  {{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric, false) }}
55422
55457
  </p>
55423
- <div class="inline-flex flex-row items-center">
55458
+ <div [ngClass]="containerBadgeClasses()" class="inline-flex flex-row items-center rounded-lg border">
55424
55459
  <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">
55460
+ 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 inline-flex items-center gap-1">
55461
+ <span class="text-sm">{{ getGrowthIconSymbol(stage.stageMetric.percentageIncrease) }}</span>
55426
55462
  {{ getPercentageOnly(stage.stageMetric.percentageIncrease, stage.stageMetric.metric) }}
55427
55463
  </div>
55428
- <div [ngClass]="percentageBadgeClasses()" class="px-3 py-1.5 rounded-lg font-semibold text-xs inline-block">
55464
+ <div class="px-3 py-1.5 font-semibold text-xs inline-block">
55429
55465
  {{ getDescriptionOnly(stage.stageMetric.percentageIncrease, stage.stageMetric.metric) }}
55430
55466
  </div>
55431
55467
  </div>
@@ -55493,12 +55529,13 @@ class FunnelMetricsVisualizationComponent {
55493
55529
  <p [ngClass]="relatedTargetValueClasses()" class="text-lg font-bold mb-2">
55494
55530
  {{ formatMetricValue(metric.calc.targetValue, metric.calc.metric, false) }}
55495
55531
  </p>
55496
- <div class="inline-flex flex-row items-center">
55532
+ <div [ngClass]="relatedContainerBadgeClasses()" class="inline-flex flex-row items-center rounded border">
55497
55533
  <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">
55534
+ 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 inline-flex items-center gap-0.5">
55535
+ <span class="text-xs">{{ getGrowthIconSymbol(metric.calc.percentageIncrease) }}</span>
55499
55536
  {{ getPercentageOnly(metric.calc.percentageIncrease, metric.calc.metric) }}
55500
55537
  </div>
55501
- <div [ngClass]="relatedPercentageBadgeClasses()" class="px-2.5 py-1 rounded text-xs font-semibold inline-block">
55538
+ <div class="px-2.5 py-1 text-xs font-semibold inline-block">
55502
55539
  {{ getDescriptionOnly(metric.calc.percentageIncrease, metric.calc.metric) }}
55503
55540
  </div>
55504
55541
  </div>
@@ -55534,7 +55571,7 @@ class FunnelMetricsVisualizationComponent {
55534
55571
  `
55535
55572
  }]
55536
55573
  }], 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 }); })();
55574
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber: 176 }); })();
55538
55575
 
55539
55576
  function StickySubmitBarComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55540
55577
  i0.ɵɵelementStart(0, "div", 4);