@eric-emg/symphiq-components 1.2.201 → 1.2.202

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.
@@ -55403,11 +55403,11 @@ class FunnelMetricsVisualizationComponent {
55403
55403
  function StickySubmitBarComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55404
55404
  i0.ɵɵelementStart(0, "div", 4);
55405
55405
  i0.ɵɵnamespaceSVG();
55406
- i0.ɵɵelementStart(1, "svg", 6);
55407
- i0.ɵɵelement(2, "path", 7);
55406
+ i0.ɵɵelementStart(1, "svg", 8);
55407
+ i0.ɵɵelement(2, "path", 9);
55408
55408
  i0.ɵɵelementEnd();
55409
55409
  i0.ɵɵnamespaceHTML();
55410
- i0.ɵɵelementStart(3, "p", 8);
55410
+ i0.ɵɵelementStart(3, "p", 10);
55411
55411
  i0.ɵɵtext(4);
55412
55412
  i0.ɵɵelementEnd()();
55413
55413
  } if (rf & 2) {
@@ -55420,11 +55420,11 @@ function StickySubmitBarComponent_Conditional_4_Template(rf, ctx) { if (rf & 1)
55420
55420
  function StickySubmitBarComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
55421
55421
  i0.ɵɵelementStart(0, "div", 4);
55422
55422
  i0.ɵɵnamespaceSVG();
55423
- i0.ɵɵelementStart(1, "svg", 9);
55424
- i0.ɵɵelement(2, "path", 10);
55423
+ i0.ɵɵelementStart(1, "svg", 11);
55424
+ i0.ɵɵelement(2, "path", 12);
55425
55425
  i0.ɵɵelementEnd();
55426
55426
  i0.ɵɵnamespaceHTML();
55427
- i0.ɵɵelementStart(3, "p", 8);
55427
+ i0.ɵɵelementStart(3, "p", 10);
55428
55428
  i0.ɵɵtext(4, " Ready to set your targets ");
55429
55429
  i0.ɵɵelementEnd()();
55430
55430
  } if (rf & 2) {
@@ -55433,22 +55433,32 @@ function StickySubmitBarComponent_Conditional_5_Template(rf, ctx) { if (rf & 1)
55433
55433
  i0.ɵɵproperty("ngClass", ctx_r0.readyMessageClasses());
55434
55434
  } }
55435
55435
  function StickySubmitBarComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
55436
+ const _r2 = i0.ɵɵgetCurrentView();
55437
+ i0.ɵɵelementStart(0, "button", 13);
55438
+ i0.ɵɵlistener("click", function StickySubmitBarComponent_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.handleCancel()); });
55439
+ i0.ɵɵtext(1, " Cancel ");
55440
+ i0.ɵɵelementEnd();
55441
+ } if (rf & 2) {
55442
+ const ctx_r0 = i0.ɵɵnextContext();
55443
+ i0.ɵɵproperty("ngClass", ctx_r0.cancelButtonClasses());
55444
+ } }
55445
+ function StickySubmitBarComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
55436
55446
  i0.ɵɵnamespaceSVG();
55437
- i0.ɵɵelementStart(0, "svg", 11);
55438
- i0.ɵɵelement(1, "circle", 12)(2, "path", 13);
55447
+ i0.ɵɵelementStart(0, "svg", 14);
55448
+ i0.ɵɵelement(1, "circle", 15)(2, "path", 16);
55439
55449
  i0.ɵɵelementEnd();
55440
55450
  i0.ɵɵnamespaceHTML();
55441
55451
  i0.ɵɵelementStart(3, "span");
55442
55452
  i0.ɵɵtext(4, "Setting Targets...");
55443
55453
  i0.ɵɵelementEnd();
55444
55454
  } }
55445
- function StickySubmitBarComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
55455
+ function StickySubmitBarComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
55446
55456
  i0.ɵɵelementStart(0, "span");
55447
55457
  i0.ɵɵtext(1);
55448
55458
  i0.ɵɵelementEnd();
55449
55459
  i0.ɵɵnamespaceSVG();
55450
- i0.ɵɵelementStart(2, "svg", 14);
55451
- i0.ɵɵelement(3, "path", 15);
55460
+ i0.ɵɵelementStart(2, "svg", 17);
55461
+ i0.ɵɵelement(3, "path", 18);
55452
55462
  i0.ɵɵelementEnd();
55453
55463
  } if (rf & 2) {
55454
55464
  const ctx_r0 = i0.ɵɵnextContext();
@@ -55462,7 +55472,9 @@ class StickySubmitBarComponent {
55462
55472
  this.isSubmitting = input(false, ...(ngDevMode ? [{ debugName: "isSubmitting" }] : []));
55463
55473
  this.validationMessage = input('', ...(ngDevMode ? [{ debugName: "validationMessage" }] : []));
55464
55474
  this.buttonText = input('Set Revenue Targets', ...(ngDevMode ? [{ debugName: "buttonText" }] : []));
55475
+ this.showCancelButton = input(false, ...(ngDevMode ? [{ debugName: "showCancelButton" }] : []));
55465
55476
  this.submitClick = output();
55477
+ this.cancelClick = output();
55466
55478
  }
55467
55479
  containerClasses() {
55468
55480
  return this.viewMode() === ViewModeEnum.DARK
@@ -55490,28 +55502,40 @@ class StickySubmitBarComponent {
55490
55502
  ? 'bg-gradient-to-r from-purple-600 to-indigo-600 text-white shadow-lg shadow-purple-500/30 hover:shadow-purple-500/50'
55491
55503
  : 'bg-gradient-to-r from-purple-600 to-indigo-600 text-white shadow-lg shadow-purple-300/50 hover:shadow-purple-400/60';
55492
55504
  }
55505
+ cancelButtonClasses() {
55506
+ return this.viewMode() === ViewModeEnum.DARK
55507
+ ? 'bg-slate-700 text-slate-300 border-2 border-slate-600 hover:bg-slate-600'
55508
+ : 'bg-slate-100 text-slate-600 border-2 border-slate-300 hover:bg-slate-200';
55509
+ }
55493
55510
  handleSubmit() {
55494
55511
  if (this.isValid() && !this.isSubmitting()) {
55495
55512
  this.submitClick.emit();
55496
55513
  }
55497
55514
  }
55515
+ handleCancel() {
55516
+ this.cancelClick.emit();
55517
+ }
55498
55518
  static { this.ɵfac = function StickySubmitBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || StickySubmitBarComponent)(); }; }
55499
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StickySubmitBarComponent, selectors: [["symphiq-sticky-submit-bar"]], inputs: { viewMode: [1, "viewMode"], isValid: [1, "isValid"], isSubmitting: [1, "isSubmitting"], validationMessage: [1, "validationMessage"], buttonText: [1, "buttonText"] }, outputs: { submitClick: "submitClick" }, decls: 9, vars: 5, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-50", "border-t", "backdrop-blur-md", "slide-up", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-4"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex-1"], [1, "flex", "items-center", "gap-2"], [1, "px-8", "py-3", "rounded-xl", "font-bold", "text-base", "transition-all", "duration-200", "flex", "items-center", "gap-2", "submit-button-enabled", 3, "click", "disabled", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-yellow-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"], [1, "text-sm", "font-medium", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-green-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], ["fill", "none", "viewBox", "0 0 24 24", 1, "animate-spin", "h-5", "w-5"], ["cx", "12", "cy", "12", "r", "10", "stroke", "currentColor", "stroke-width", "4", 1, "opacity-25"], ["fill", "currentColor", "d", "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", 1, "opacity-75"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"]], template: function StickySubmitBarComponent_Template(rf, ctx) { if (rf & 1) {
55519
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StickySubmitBarComponent, selectors: [["symphiq-sticky-submit-bar"]], inputs: { viewMode: [1, "viewMode"], isValid: [1, "isValid"], isSubmitting: [1, "isSubmitting"], validationMessage: [1, "validationMessage"], buttonText: [1, "buttonText"], showCancelButton: [1, "showCancelButton"] }, outputs: { submitClick: "submitClick", cancelClick: "cancelClick" }, decls: 11, vars: 6, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-50", "border-t", "backdrop-blur-md", "slide-up", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-4"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex-1"], [1, "flex", "items-center", "gap-2"], [1, "flex", "items-center", "gap-3"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "text-base", "transition-all", "duration-200", 3, "ngClass"], [1, "px-8", "py-3", "rounded-xl", "font-bold", "text-base", "transition-all", "duration-200", "flex", "items-center", "gap-2", "submit-button-enabled", 3, "click", "disabled", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-yellow-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"], [1, "text-sm", "font-medium", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-green-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "text-base", "transition-all", "duration-200", 3, "click", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "animate-spin", "h-5", "w-5"], ["cx", "12", "cy", "12", "r", "10", "stroke", "currentColor", "stroke-width", "4", 1, "opacity-25"], ["fill", "currentColor", "d", "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", 1, "opacity-75"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"]], template: function StickySubmitBarComponent_Template(rf, ctx) { if (rf & 1) {
55500
55520
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
55501
55521
  i0.ɵɵconditionalCreate(4, StickySubmitBarComponent_Conditional_4_Template, 5, 2, "div", 4)(5, StickySubmitBarComponent_Conditional_5_Template, 5, 1, "div", 4);
55502
55522
  i0.ɵɵelementEnd();
55503
- i0.ɵɵelementStart(6, "button", 5);
55504
- i0.ɵɵlistener("click", function StickySubmitBarComponent_Template_button_click_6_listener() { return ctx.handleSubmit(); });
55505
- i0.ɵɵconditionalCreate(7, StickySubmitBarComponent_Conditional_7_Template, 5, 0)(8, StickySubmitBarComponent_Conditional_8_Template, 4, 1);
55506
- i0.ɵɵelementEnd()()()();
55523
+ i0.ɵɵelementStart(6, "div", 5);
55524
+ i0.ɵɵconditionalCreate(7, StickySubmitBarComponent_Conditional_7_Template, 2, 1, "button", 6);
55525
+ i0.ɵɵelementStart(8, "button", 7);
55526
+ i0.ɵɵlistener("click", function StickySubmitBarComponent_Template_button_click_8_listener() { return ctx.handleSubmit(); });
55527
+ i0.ɵɵconditionalCreate(9, StickySubmitBarComponent_Conditional_9_Template, 5, 0)(10, StickySubmitBarComponent_Conditional_10_Template, 4, 1);
55528
+ i0.ɵɵelementEnd()()()()();
55507
55529
  } if (rf & 2) {
55508
55530
  i0.ɵɵproperty("ngClass", ctx.containerClasses());
55509
55531
  i0.ɵɵadvance(4);
55510
55532
  i0.ɵɵconditional(!ctx.isValid() ? 4 : 5);
55511
- i0.ɵɵadvance(2);
55533
+ i0.ɵɵadvance(3);
55534
+ i0.ɵɵconditional(ctx.showCancelButton() ? 7 : -1);
55535
+ i0.ɵɵadvance();
55512
55536
  i0.ɵɵproperty("disabled", !ctx.isValid() || ctx.isSubmitting())("ngClass", ctx.buttonClasses());
55513
55537
  i0.ɵɵadvance();
55514
- i0.ɵɵconditional(ctx.isSubmitting() ? 7 : 8);
55538
+ i0.ɵɵconditional(ctx.isSubmitting() ? 9 : 10);
55515
55539
  } }, dependencies: [CommonModule, i1$1.NgClass], styles: [".slide-up[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slideUp .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.submit-button-enabled[_ngcontent-%COMP%]{transition:all .2s ease-in-out}.submit-button-enabled[_ngcontent-%COMP%]:hover{transform:scale(1.02)}.submit-button-enabled[_ngcontent-%COMP%]:active{transform:scale(.98)}"], changeDetection: 0 }); }
55516
55540
  }
55517
55541
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StickySubmitBarComponent, [{
@@ -55544,30 +55568,40 @@ class StickySubmitBarComponent {
55544
55568
  }
55545
55569
  </div>
55546
55570
 
55547
- <button
55548
- (click)="handleSubmit()"
55549
- [disabled]="!isValid() || isSubmitting()"
55550
- [ngClass]="buttonClasses()"
55551
- class="px-8 py-3 rounded-xl font-bold text-base transition-all duration-200 flex items-center gap-2 submit-button-enabled">
55552
- @if (isSubmitting()) {
55553
- <svg class="animate-spin h-5 w-5" fill="none" viewBox="0 0 24 24">
55554
- <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
55555
- <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
55556
- </svg>
55557
- <span>Setting Targets...</span>
55558
- } @else {
55559
- <span>{{ buttonText() }}</span>
55560
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55561
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
55562
- </svg>
55571
+ <div class="flex items-center gap-3">
55572
+ @if (showCancelButton()) {
55573
+ <button
55574
+ (click)="handleCancel()"
55575
+ [ngClass]="cancelButtonClasses()"
55576
+ class="px-6 py-3 rounded-xl font-semibold text-base transition-all duration-200">
55577
+ Cancel
55578
+ </button>
55563
55579
  }
55564
- </button>
55580
+ <button
55581
+ (click)="handleSubmit()"
55582
+ [disabled]="!isValid() || isSubmitting()"
55583
+ [ngClass]="buttonClasses()"
55584
+ class="px-8 py-3 rounded-xl font-bold text-base transition-all duration-200 flex items-center gap-2 submit-button-enabled">
55585
+ @if (isSubmitting()) {
55586
+ <svg class="animate-spin h-5 w-5" fill="none" viewBox="0 0 24 24">
55587
+ <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
55588
+ <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
55589
+ </svg>
55590
+ <span>Setting Targets...</span>
55591
+ } @else {
55592
+ <span>{{ buttonText() }}</span>
55593
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55594
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
55595
+ </svg>
55596
+ }
55597
+ </button>
55598
+ </div>
55565
55599
  </div>
55566
55600
  </div>
55567
55601
  </div>
55568
55602
  `, styles: [".slide-up{animation:slideUp .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.submit-button-enabled{transition:all .2s ease-in-out}.submit-button-enabled:hover{transform:scale(1.02)}.submit-button-enabled:active{transform:scale(.98)}\n"] }]
55569
- }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isValid", required: false }] }], isSubmitting: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSubmitting", required: false }] }], validationMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessage", required: false }] }], buttonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonText", required: false }] }], submitClick: [{ type: i0.Output, args: ["submitClick"] }] }); })();
55570
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StickySubmitBarComponent, { className: "StickySubmitBarComponent", filePath: "lib/components/revenue-calculator-dashboard/sticky-submit-bar.component.ts", lineNumber: 89 }); })();
55603
+ }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isValid", required: false }] }], isSubmitting: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSubmitting", required: false }] }], validationMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessage", required: false }] }], buttonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonText", required: false }] }], showCancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancelButton", required: false }] }], submitClick: [{ type: i0.Output, args: ["submitClick"] }], cancelClick: [{ type: i0.Output, args: ["cancelClick"] }] }); })();
55604
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StickySubmitBarComponent, { className: "StickySubmitBarComponent", filePath: "lib/components/revenue-calculator-dashboard/sticky-submit-bar.component.ts", lineNumber: 99 }); })();
55571
55605
 
55572
55606
  /**
55573
55607
  * Chart Constants
@@ -56202,48 +56236,78 @@ function InitialTargetSettingComponent_Conditional_12_Template(rf, ctx) { if (rf
56202
56236
  i0.ɵɵadvance();
56203
56237
  i0.ɵɵtextInterpolate1(" Current Pace Projection: ", ctx_r0.formatCurrency(ctx_r0.currentPaceProjection()), " ");
56204
56238
  } }
56205
- function InitialTargetSettingComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
56206
- const _r2 = i0.ɵɵgetCurrentView();
56207
- i0.ɵɵelementStart(0, "div", 12)(1, "span", 21);
56239
+ function InitialTargetSettingComponent_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
56240
+ const _r3 = i0.ɵɵgetCurrentView();
56241
+ i0.ɵɵelementStart(0, "div", 18)(1, "span", 19);
56208
56242
  i0.ɵɵtext(2, " $ ");
56209
56243
  i0.ɵɵelementEnd();
56210
- i0.ɵɵelementStart(3, "input", 22, 0);
56211
- i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_18_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.absoluteInput, $event) || (ctx_r0.absoluteInput = $event); return i0.ɵɵresetView($event); });
56212
- i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_18_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onAbsoluteInputChange()); });
56244
+ i0.ɵɵelementStart(3, "input", 20, 0);
56245
+ i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_13_Conditional_5_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.absoluteInput, $event) || (ctx_r0.absoluteInput = $event); return i0.ɵɵresetView($event); });
56246
+ i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_13_Conditional_5_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAbsoluteInputChange()); });
56213
56247
  i0.ɵɵelementEnd()();
56214
56248
  } if (rf & 2) {
56215
- const ctx_r0 = i0.ɵɵnextContext();
56249
+ const ctx_r0 = i0.ɵɵnextContext(2);
56216
56250
  i0.ɵɵadvance();
56217
56251
  i0.ɵɵproperty("ngClass", ctx_r0.inputPrefixClasses());
56218
56252
  i0.ɵɵadvance(2);
56219
56253
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.absoluteInput);
56220
56254
  i0.ɵɵproperty("ngClass", ctx_r0.inputClasses());
56221
56255
  } }
56222
- function InitialTargetSettingComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
56223
- const _r3 = i0.ɵɵgetCurrentView();
56224
- i0.ɵɵelementStart(0, "div", 12)(1, "input", 23, 1);
56225
- i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_19_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.percentageInput, $event) || (ctx_r0.percentageInput = $event); return i0.ɵɵresetView($event); });
56226
- i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_19_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onPercentageInputChange()); });
56256
+ function InitialTargetSettingComponent_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
56257
+ const _r4 = i0.ɵɵgetCurrentView();
56258
+ i0.ɵɵelementStart(0, "div", 18)(1, "input", 21, 1);
56259
+ i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_13_Conditional_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.percentageInput, $event) || (ctx_r0.percentageInput = $event); return i0.ɵɵresetView($event); });
56260
+ i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_13_Conditional_6_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onPercentageInputChange()); });
56227
56261
  i0.ɵɵelementEnd();
56228
- i0.ɵɵelementStart(3, "span", 24);
56262
+ i0.ɵɵelementStart(3, "span", 22);
56229
56263
  i0.ɵɵtext(4, " % ");
56230
56264
  i0.ɵɵelementEnd()();
56231
56265
  } if (rf & 2) {
56232
- const ctx_r0 = i0.ɵɵnextContext();
56266
+ const ctx_r0 = i0.ɵɵnextContext(2);
56233
56267
  i0.ɵɵadvance();
56234
56268
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.percentageInput);
56235
56269
  i0.ɵɵproperty("ngClass", ctx_r0.inputClasses());
56236
56270
  i0.ɵɵadvance(2);
56237
56271
  i0.ɵɵproperty("ngClass", ctx_r0.inputSuffixClasses());
56238
56272
  } }
56239
- function InitialTargetSettingComponent_Conditional_20_Conditional_18_Template(rf, ctx) { if (rf & 1) {
56240
- i0.ɵɵelementStart(0, "div", 28)(1, "div")(2, "p", 26);
56273
+ function InitialTargetSettingComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
56274
+ const _r2 = i0.ɵɵgetCurrentView();
56275
+ i0.ɵɵelementStart(0, "div", 16)(1, "button", 17);
56276
+ i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_13_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("absolute")); });
56277
+ i0.ɵɵtext(2, " Absolute Amount ");
56278
+ i0.ɵɵelementEnd();
56279
+ i0.ɵɵelementStart(3, "button", 17);
56280
+ i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_13_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("percentage")); });
56281
+ i0.ɵɵtext(4, " % Increase ");
56282
+ i0.ɵɵelementEnd()();
56283
+ i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_13_Conditional_5_Template, 5, 3, "div", 18)(6, InitialTargetSettingComponent_Conditional_13_Conditional_6_Template, 5, 3, "div", 18);
56284
+ } if (rf & 2) {
56285
+ const ctx_r0 = i0.ɵɵnextContext();
56286
+ i0.ɵɵadvance();
56287
+ i0.ɵɵproperty("ngClass", ctx_r0.inputModeButtonClasses("absolute"));
56288
+ i0.ɵɵadvance(2);
56289
+ i0.ɵɵproperty("ngClass", ctx_r0.inputModeButtonClasses("percentage"));
56290
+ i0.ɵɵadvance(2);
56291
+ i0.ɵɵconditional(ctx_r0.inputMode() === "absolute" ? 5 : 6);
56292
+ } }
56293
+ function InitialTargetSettingComponent_Conditional_14_Conditional_8_Template(rf, ctx) { if (rf & 1) {
56294
+ const _r5 = i0.ɵɵgetCurrentView();
56295
+ i0.ɵɵelementStart(0, "button", 30);
56296
+ i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_14_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.handleAdjustTarget()); });
56297
+ i0.ɵɵtext(1, " Adjust Revenue Target ");
56298
+ i0.ɵɵelementEnd();
56299
+ } if (rf & 2) {
56300
+ const ctx_r0 = i0.ɵɵnextContext(2);
56301
+ i0.ɵɵproperty("ngClass", ctx_r0.secondaryButtonClasses());
56302
+ } }
56303
+ function InitialTargetSettingComponent_Conditional_14_Conditional_20_Template(rf, ctx) { if (rf & 1) {
56304
+ i0.ɵɵelementStart(0, "div", 28)(1, "div")(2, "p", 25);
56241
56305
  i0.ɵɵtext(3, " Gap to Close ");
56242
56306
  i0.ɵɵelementEnd();
56243
56307
  i0.ɵɵelementStart(4, "p", 29);
56244
56308
  i0.ɵɵtext(5);
56245
56309
  i0.ɵɵelementEnd()();
56246
- i0.ɵɵelementStart(6, "div")(7, "p", 26);
56310
+ i0.ɵɵelementStart(6, "div")(7, "p", 25);
56247
56311
  i0.ɵɵtext(8, " Additional Growth Needed ");
56248
56312
  i0.ɵɵelementEnd();
56249
56313
  i0.ɵɵelementStart(9, "p", 29);
@@ -56265,38 +56329,42 @@ function InitialTargetSettingComponent_Conditional_20_Conditional_18_Template(rf
56265
56329
  i0.ɵɵadvance();
56266
56330
  i0.ɵɵtextInterpolate2(" ", ctx_r0.gapToClose().amount > 0 ? "+" : "", "", ctx_r0.formatPercentage(ctx_r0.gapToClose().percentage, 1), " ");
56267
56331
  } }
56268
- function InitialTargetSettingComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
56269
- i0.ɵɵelementStart(0, "div", 13)(1, "div", 25)(2, "div")(3, "p", 26);
56270
- i0.ɵɵtext(4);
56332
+ function InitialTargetSettingComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
56333
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 23)(2, "div", 24)(3, "div")(4, "p", 25);
56334
+ i0.ɵɵtext(5);
56271
56335
  i0.ɵɵelementEnd();
56272
- i0.ɵɵelementStart(5, "p", 27);
56273
- i0.ɵɵtext(6);
56336
+ i0.ɵɵelementStart(6, "p", 26);
56337
+ i0.ɵɵtext(7);
56274
56338
  i0.ɵɵelementEnd()();
56275
- i0.ɵɵelementStart(7, "div", 28)(8, "div")(9, "p", 26);
56276
- i0.ɵɵtext(10, " Increase Amount ");
56339
+ i0.ɵɵconditionalCreate(8, InitialTargetSettingComponent_Conditional_14_Conditional_8_Template, 2, 1, "button", 27);
56277
56340
  i0.ɵɵelementEnd();
56278
- i0.ɵɵelementStart(11, "p", 29);
56279
- i0.ɵɵtext(12);
56341
+ i0.ɵɵelementStart(9, "div", 28)(10, "div")(11, "p", 25);
56342
+ i0.ɵɵtext(12, " Increase Amount ");
56343
+ i0.ɵɵelementEnd();
56344
+ i0.ɵɵelementStart(13, "p", 29);
56345
+ i0.ɵɵtext(14);
56280
56346
  i0.ɵɵelementEnd()();
56281
- i0.ɵɵelementStart(13, "div")(14, "p", 26);
56282
- i0.ɵɵtext(15, " % Growth ");
56347
+ i0.ɵɵelementStart(15, "div")(16, "p", 25);
56348
+ i0.ɵɵtext(17, " % Growth ");
56283
56349
  i0.ɵɵelementEnd();
56284
- i0.ɵɵelementStart(16, "p", 29);
56285
- i0.ɵɵtext(17);
56350
+ i0.ɵɵelementStart(18, "p", 29);
56351
+ i0.ɵɵtext(19);
56286
56352
  i0.ɵɵelementEnd()()();
56287
- i0.ɵɵconditionalCreate(18, InitialTargetSettingComponent_Conditional_20_Conditional_18_Template, 11, 8, "div", 28);
56353
+ i0.ɵɵconditionalCreate(20, InitialTargetSettingComponent_Conditional_14_Conditional_20_Template, 11, 8, "div", 28);
56288
56354
  i0.ɵɵelementEnd()();
56289
56355
  } if (rf & 2) {
56290
56356
  const ctx_r0 = i0.ɵɵnextContext();
56291
56357
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedValuesCardClasses());
56292
- i0.ɵɵadvance(3);
56358
+ i0.ɵɵadvance(4);
56293
56359
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
56294
56360
  i0.ɵɵadvance();
56295
56361
  i0.ɵɵtextInterpolate1(" ", ctx_r0.currentYear(), " Revenue Target ");
56296
56362
  i0.ɵɵadvance();
56297
56363
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedValueClasses());
56298
56364
  i0.ɵɵadvance();
56299
- i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.calculatedRevenue()), " ");
56365
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.displayedTargetRevenue()), " ");
56366
+ i0.ɵɵadvance();
56367
+ i0.ɵɵconditional(ctx_r0.calculationState() === "results" ? 8 : -1);
56300
56368
  i0.ɵɵadvance();
56301
56369
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedDividerClasses());
56302
56370
  i0.ɵɵadvance(2);
@@ -56312,16 +56380,16 @@ function InitialTargetSettingComponent_Conditional_20_Template(rf, ctx) { if (rf
56312
56380
  i0.ɵɵadvance();
56313
56381
  i0.ɵɵtextInterpolate1(" +", ctx_r0.formatPercentage(ctx_r0.percentageIncrease(), 1), " ");
56314
56382
  i0.ɵɵadvance();
56315
- i0.ɵɵconditional(ctx_r0.currentPaceProjection() > 0 && ctx_r0.gapToClose().amount !== 0 ? 18 : -1);
56383
+ i0.ɵɵconditional(ctx_r0.currentPaceProjection() > 0 && ctx_r0.gapToClose().amount !== 0 ? 20 : -1);
56316
56384
  } }
56317
- function InitialTargetSettingComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
56318
- i0.ɵɵelement(0, "symphiq-area-chart", 16);
56385
+ function InitialTargetSettingComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
56386
+ i0.ɵɵelement(0, "symphiq-area-chart", 13);
56319
56387
  } if (rf & 2) {
56320
56388
  const ctx_r0 = i0.ɵɵnextContext();
56321
56389
  i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "320px");
56322
56390
  } }
56323
- function InitialTargetSettingComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
56324
- i0.ɵɵelementStart(0, "div", 17)(1, "p", 30);
56391
+ function InitialTargetSettingComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
56392
+ i0.ɵɵelementStart(0, "div", 14)(1, "p", 31);
56325
56393
  i0.ɵɵtext(2, " No revenue data available ");
56326
56394
  i0.ɵɵelementEnd()();
56327
56395
  } if (rf & 2) {
@@ -56329,14 +56397,14 @@ function InitialTargetSettingComponent_Conditional_26_Template(rf, ctx) { if (rf
56329
56397
  i0.ɵɵadvance();
56330
56398
  i0.ɵɵproperty("ngClass", ctx_r0.noDataClasses());
56331
56399
  } }
56332
- function InitialTargetSettingComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
56333
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 31)(2, "h2", 32);
56400
+ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
56401
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 32)(2, "h2", 33);
56334
56402
  i0.ɵɵtext(3, " Contributing Metrics ");
56335
56403
  i0.ɵɵelementEnd();
56336
- i0.ɵɵelementStart(4, "p", 30);
56404
+ i0.ɵɵelementStart(4, "p", 31);
56337
56405
  i0.ɵɵtext(5);
56338
56406
  i0.ɵɵelementEnd()();
56339
- i0.ɵɵelement(6, "symphiq-funnel-metrics-visualization", 33);
56407
+ i0.ɵɵelement(6, "symphiq-funnel-metrics-visualization", 34);
56340
56408
  i0.ɵɵelementEnd();
56341
56409
  } if (rf & 2) {
56342
56410
  const ctx_r0 = i0.ɵɵnextContext();
@@ -56350,28 +56418,6 @@ function InitialTargetSettingComponent_Conditional_27_Template(rf, ctx) { if (rf
56350
56418
  i0.ɵɵadvance();
56351
56419
  i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("calculations", ctx_r0.displayedMetricCalculations())("pacingMetrics", ctx_r0.pacingMetrics());
56352
56420
  } }
56353
- function InitialTargetSettingComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
56354
- const _r4 = i0.ɵɵgetCurrentView();
56355
- i0.ɵɵelementStart(0, "div", 19)(1, "div", 34)(2, "button", 35);
56356
- i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_29_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.handleAdjustTarget()); });
56357
- i0.ɵɵtext(3, " Adjust Revenue Target ");
56358
- i0.ɵɵelementEnd()()();
56359
- } if (rf & 2) {
56360
- const ctx_r0 = i0.ɵɵnextContext();
56361
- i0.ɵɵadvance(2);
56362
- i0.ɵɵproperty("ngClass", ctx_r0.secondaryButtonClasses());
56363
- } }
56364
- function InitialTargetSettingComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
56365
- const _r5 = i0.ɵɵgetCurrentView();
56366
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 34)(2, "button", 35);
56367
- i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_30_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.handleCancel()); });
56368
- i0.ɵɵtext(3, " Cancel ");
56369
- i0.ɵɵelementEnd()()();
56370
- } if (rf & 2) {
56371
- const ctx_r0 = i0.ɵɵnextContext();
56372
- i0.ɵɵadvance(2);
56373
- i0.ɵɵproperty("ngClass", ctx_r0.cancelButtonClasses());
56374
- } }
56375
56421
  class InitialTargetSettingComponent {
56376
56422
  constructor() {
56377
56423
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
@@ -56756,7 +56802,7 @@ class InitialTargetSettingComponent {
56756
56802
  let _t;
56757
56803
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.absoluteInputRef = _t.first);
56758
56804
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.percentageInputRef = _t.first);
56759
- } }, inputs: { viewMode: [1, "viewMode"], funnelMetrics: [1, "funnelMetrics"], mainUiData: [1, "mainUiData"], trendUiData: [1, "trendUiData"], shopId: [1, "shopId"], pacingMetrics: [1, "pacingMetrics"], dataResults: [1, "dataResults"], reverseCalculationResponse: [1, "reverseCalculationResponse"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls: 31, vars: 23, consts: [["absoluteInputRef", ""], ["percentageInputRef", ""], [1, "space-y-8", "pb-32"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-6", 3, "ngClass"], [1, "grid", "lg:grid-cols-2", "gap-8"], [1, "space-y-6"], [1, "block", "text-sm", "font-semibold", "mb-2", 3, "ngClass"], [1, "space-y-1", "mb-4"], [1, "text-xs", 3, "ngClass"], [1, "flex", "gap-2", "mb-4"], [1, "flex-1", "py-2", "px-4", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "relative"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass"], [1, "text-sm", "font-semibold", "mb-3", 3, "ngClass"], [1, "rounded-xl", "border", "p-4", 3, "ngClass"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol", "height"], [1, "h-64", "flex", "items-center", "justify-center"], [3, "submitClick", "viewMode", "isValid", "isSubmitting", "validationMessage", "buttonText"], [1, "fixed", "bottom-24", "left-0", "right-0", "z-40", "pb-4", "px-4"], [1, "fixed", "bottom-32", "left-0", "right-0", "z-40", "pb-4", "px-4"], [1, "absolute", "left-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "step", "1000", 1, "w-full", "pl-10", "pr-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "max", "1000", "step", "0.1", 1, "w-full", "pr-10", "pl-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], [1, "absolute", "right-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], [1, "space-y-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-3xl", "font-bold", 3, "ngClass"], [1, "grid", "grid-cols-2", "gap-4", "pt-4", 3, "ngClass"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "mb-6"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "calculations", "pacingMetrics"], [1, "max-w-7xl", "mx-auto", "flex", "gap-4", "justify-center"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "transition-all", "shadow-lg", 3, "click", "ngClass"]], template: function InitialTargetSettingComponent_Template(rf, ctx) { if (rf & 1) {
56805
+ } }, inputs: { viewMode: [1, "viewMode"], funnelMetrics: [1, "funnelMetrics"], mainUiData: [1, "mainUiData"], trendUiData: [1, "trendUiData"], shopId: [1, "shopId"], pacingMetrics: [1, "pacingMetrics"], dataResults: [1, "dataResults"], reverseCalculationResponse: [1, "reverseCalculationResponse"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls: 23, vars: 20, consts: [["absoluteInputRef", ""], ["percentageInputRef", ""], [1, "space-y-8", "pb-32"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-6", 3, "ngClass"], [1, "grid", "lg:grid-cols-2", "gap-8"], [1, "space-y-6"], [1, "block", "text-sm", "font-semibold", "mb-2", 3, "ngClass"], [1, "space-y-1", "mb-4"], [1, "text-xs", 3, "ngClass"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass"], [1, "text-sm", "font-semibold", "mb-3", 3, "ngClass"], [1, "rounded-xl", "border", "p-4", 3, "ngClass"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol", "height"], [1, "h-64", "flex", "items-center", "justify-center"], [3, "submitClick", "cancelClick", "viewMode", "isValid", "isSubmitting", "validationMessage", "buttonText", "showCancelButton"], [1, "flex", "gap-2", "mb-4"], [1, "flex-1", "py-2", "px-4", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "relative"], [1, "absolute", "left-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "step", "1000", 1, "w-full", "pl-10", "pr-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "max", "1000", "step", "0.1", 1, "w-full", "pr-10", "pl-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], [1, "absolute", "right-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], [1, "space-y-4"], [1, "flex", "items-center", "justify-between"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-3xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "ngClass"], [1, "grid", "grid-cols-2", "gap-4", "pt-4", 3, "ngClass"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "click", "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "mb-6"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "calculations", "pacingMetrics"]], template: function InitialTargetSettingComponent_Template(rf, ctx) { if (rf & 1) {
56760
56806
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "h2", 4);
56761
56807
  i0.ɵɵtext(3, " Calculate Your Revenue Target ");
56762
56808
  i0.ɵɵelementEnd();
@@ -56768,31 +56814,20 @@ class InitialTargetSettingComponent {
56768
56814
  i0.ɵɵelementEnd();
56769
56815
  i0.ɵɵconditionalCreate(12, InitialTargetSettingComponent_Conditional_12_Template, 2, 2, "p", 9);
56770
56816
  i0.ɵɵelementEnd();
56771
- i0.ɵɵelementStart(13, "div", 10)(14, "button", 11);
56772
- i0.ɵɵlistener("click", function InitialTargetSettingComponent_Template_button_click_14_listener() { return ctx.setInputMode("absolute"); });
56773
- i0.ɵɵtext(15, " Absolute Amount ");
56817
+ i0.ɵɵconditionalCreate(13, InitialTargetSettingComponent_Conditional_13_Template, 7, 3);
56774
56818
  i0.ɵɵelementEnd();
56775
- i0.ɵɵelementStart(16, "button", 11);
56776
- i0.ɵɵlistener("click", function InitialTargetSettingComponent_Template_button_click_16_listener() { return ctx.setInputMode("percentage"); });
56777
- i0.ɵɵtext(17, " % Increase ");
56778
- i0.ɵɵelementEnd()();
56779
- i0.ɵɵconditionalCreate(18, InitialTargetSettingComponent_Conditional_18_Template, 5, 3, "div", 12)(19, InitialTargetSettingComponent_Conditional_19_Template, 5, 3, "div", 12);
56780
- i0.ɵɵelementEnd();
56781
- i0.ɵɵconditionalCreate(20, InitialTargetSettingComponent_Conditional_20_Template, 19, 13, "div", 13);
56819
+ i0.ɵɵconditionalCreate(14, InitialTargetSettingComponent_Conditional_14_Template, 21, 14, "div", 10);
56782
56820
  i0.ɵɵelementEnd();
56783
- i0.ɵɵelementStart(21, "div")(22, "p", 14);
56784
- i0.ɵɵtext(23, " Year-over-Year Revenue Trend ");
56821
+ i0.ɵɵelementStart(15, "div")(16, "p", 11);
56822
+ i0.ɵɵtext(17, " Year-over-Year Revenue Trend ");
56785
56823
  i0.ɵɵelementEnd();
56786
- i0.ɵɵelementStart(24, "div", 15);
56787
- i0.ɵɵconditionalCreate(25, InitialTargetSettingComponent_Conditional_25_Template, 1, 5, "symphiq-area-chart", 16)(26, InitialTargetSettingComponent_Conditional_26_Template, 3, 1, "div", 17);
56824
+ i0.ɵɵelementStart(18, "div", 12);
56825
+ i0.ɵɵconditionalCreate(19, InitialTargetSettingComponent_Conditional_19_Template, 1, 5, "symphiq-area-chart", 13)(20, InitialTargetSettingComponent_Conditional_20_Template, 3, 1, "div", 14);
56788
56826
  i0.ɵɵelementEnd()()()();
56789
- i0.ɵɵconditionalCreate(27, InitialTargetSettingComponent_Conditional_27_Template, 7, 7, "div", 3);
56790
- i0.ɵɵelementStart(28, "symphiq-sticky-submit-bar", 18);
56791
- i0.ɵɵlistener("submitClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_submitClick_28_listener() { return ctx.handleSubmitClick(); });
56792
- i0.ɵɵelementEnd();
56793
- i0.ɵɵconditionalCreate(29, InitialTargetSettingComponent_Conditional_29_Template, 4, 1, "div", 19);
56794
- i0.ɵɵconditionalCreate(30, InitialTargetSettingComponent_Conditional_30_Template, 4, 1, "div", 20);
56795
- i0.ɵɵelementEnd();
56827
+ i0.ɵɵconditionalCreate(21, InitialTargetSettingComponent_Conditional_21_Template, 7, 7, "div", 3);
56828
+ i0.ɵɵelementStart(22, "symphiq-sticky-submit-bar", 15);
56829
+ i0.ɵɵlistener("submitClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_submitClick_22_listener() { return ctx.handleSubmitClick(); })("cancelClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_cancelClick_22_listener() { return ctx.handleCancel(); });
56830
+ i0.ɵɵelementEnd()();
56796
56831
  } if (rf & 2) {
56797
56832
  i0.ɵɵadvance();
56798
56833
  i0.ɵɵproperty("ngClass", ctx.sectionCardClasses());
@@ -56808,28 +56843,20 @@ class InitialTargetSettingComponent {
56808
56843
  i0.ɵɵtextInterpolate2(" ", ctx.priorYear(), " Revenue: ", ctx.formatCurrency(ctx.priorYearRevenue()), " ");
56809
56844
  i0.ɵɵadvance();
56810
56845
  i0.ɵɵconditional(ctx.currentPaceProjection() > 0 ? 12 : -1);
56811
- i0.ɵɵadvance(2);
56812
- i0.ɵɵproperty("ngClass", ctx.inputModeButtonClasses("absolute"));
56813
- i0.ɵɵadvance(2);
56814
- i0.ɵɵproperty("ngClass", ctx.inputModeButtonClasses("percentage"));
56815
- i0.ɵɵadvance(2);
56816
- i0.ɵɵconditional(ctx.inputMode() === "absolute" ? 18 : 19);
56817
- i0.ɵɵadvance(2);
56818
- i0.ɵɵconditional(ctx.calculatedRevenue() > 0 ? 20 : -1);
56846
+ i0.ɵɵadvance();
56847
+ i0.ɵɵconditional(ctx.calculationState() !== "results" ? 13 : -1);
56848
+ i0.ɵɵadvance();
56849
+ i0.ɵɵconditional(ctx.calculatedRevenue() > 0 ? 14 : -1);
56819
56850
  i0.ɵɵadvance(2);
56820
56851
  i0.ɵɵproperty("ngClass", ctx.chartTitleClasses());
56821
56852
  i0.ɵɵadvance(2);
56822
56853
  i0.ɵɵproperty("ngClass", ctx.chartContainerClasses());
56823
56854
  i0.ɵɵadvance();
56824
- i0.ɵɵconditional(ctx.revenueChartData() ? 25 : 26);
56855
+ i0.ɵɵconditional(ctx.revenueChartData() ? 19 : 20);
56825
56856
  i0.ɵɵadvance(2);
56826
- i0.ɵɵconditional(ctx.showMetricsVisualization() ? 27 : -1);
56827
- i0.ɵɵadvance();
56828
- i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText());
56857
+ i0.ɵɵconditional(ctx.showMetricsVisualization() ? 21 : -1);
56829
56858
  i0.ɵɵadvance();
56830
- i0.ɵɵconditional(ctx.calculationState() === "results" ? 29 : -1);
56831
- i0.ɵɵadvance();
56832
- i0.ɵɵconditional(ctx.calculationState() === "input" && ctx.hasStoredResponse() ? 30 : -1);
56859
+ i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText())("showCancelButton", ctx.calculationState() === "input" && ctx.hasStoredResponse());
56833
56860
  } }, dependencies: [CommonModule, i1$1.NgClass, FormsModule, i2$1.DefaultValueAccessor, i2$1.NumberValueAccessor, i2$1.NgControlStatus, i2$1.MinValidator, i2$1.MaxValidator, i2$1.NgModel, FunnelMetricsVisualizationComponent,
56834
56861
  StickySubmitBarComponent,
56835
56862
  AreaChartComponent], encapsulation: 2, changeDetection: 0 }); }
@@ -56847,214 +56874,202 @@ class InitialTargetSettingComponent {
56847
56874
  AreaChartComponent
56848
56875
  ],
56849
56876
  changeDetection: ChangeDetectionStrategy.OnPush,
56850
- template: `
56851
- <div class="space-y-8 pb-32">
56852
- <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
56853
- <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-6">
56854
- Calculate Your Revenue Target
56855
- </h2>
56856
-
56857
- <div class="grid lg:grid-cols-2 gap-8">
56858
- <div class="space-y-6">
56859
- <div>
56860
- <label [ngClass]="labelClasses()" class="block text-sm font-semibold mb-2">
56861
- {{ currentYear() }} Revenue
56862
- </label>
56863
- <div class="space-y-1 mb-4">
56864
- <p [ngClass]="priorYearLabelClasses()" class="text-xs">
56865
- {{ priorYear() }} Revenue: {{ formatCurrency(priorYearRevenue()) }}
56866
- </p>
56867
- @if (currentPaceProjection() > 0) {
56868
- <p [ngClass]="priorYearLabelClasses()" class="text-xs">
56869
- Current Pace Projection: {{ formatCurrency(currentPaceProjection()) }}
56870
- </p>
56871
- }
56872
- </div>
56873
-
56874
- <div class="flex gap-2 mb-4">
56875
- <button
56876
- (click)="setInputMode('absolute')"
56877
- [ngClass]="inputModeButtonClasses('absolute')"
56878
- class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
56879
- Absolute Amount
56880
- </button>
56881
- <button
56882
- (click)="setInputMode('percentage')"
56883
- [ngClass]="inputModeButtonClasses('percentage')"
56884
- class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
56885
- % Increase
56886
- </button>
56887
- </div>
56888
-
56889
- @if (inputMode() === 'absolute') {
56890
- <div class="relative">
56891
- <span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
56892
- $
56893
- </span>
56894
- <input
56895
- #absoluteInputRef
56896
- type="number"
56897
- [(ngModel)]="absoluteInput"
56898
- (ngModelChange)="onAbsoluteInputChange()"
56899
- [ngClass]="inputClasses()"
56900
- class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
56901
- placeholder="0"
56902
- min="0"
56903
- step="1000">
56904
- </div>
56905
- } @else {
56906
- <div class="relative">
56907
- <input
56908
- #percentageInputRef
56909
- type="number"
56910
- [(ngModel)]="percentageInput"
56911
- (ngModelChange)="onPercentageInputChange()"
56912
- [ngClass]="inputClasses()"
56913
- class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
56914
- placeholder="0"
56915
- min="0"
56916
- max="1000"
56917
- step="0.1">
56918
- <span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
56919
- %
56920
- </span>
56921
- </div>
56922
- }
56923
- </div>
56924
-
56925
- @if (calculatedRevenue() > 0) {
56926
- <div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2">
56927
- <div class="space-y-4">
56928
- <div>
56929
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56930
- {{ currentYear() }} Revenue Target
56931
- </p>
56932
- <p [ngClass]="calculatedValueClasses()" class="text-3xl font-bold">
56933
- {{ formatCurrency(calculatedRevenue()) }}
56934
- </p>
56935
- </div>
56936
- <div class="grid grid-cols-2 gap-4 pt-4" [ngClass]="calculatedDividerClasses()">
56937
- <div>
56938
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56939
- Increase Amount
56940
- </p>
56941
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
56942
- {{ formatCurrency(calculatedRevenue() - priorYearRevenue()) }}
56943
- </p>
56944
- </div>
56945
- <div>
56946
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56947
- % Growth
56948
- </p>
56949
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
56950
- +{{ formatPercentage(percentageIncrease(), 1) }}
56951
- </p>
56952
- </div>
56953
- </div>
56954
- @if (currentPaceProjection() > 0 && gapToClose().amount !== 0) {
56955
- <div class="grid grid-cols-2 gap-4 pt-4" [ngClass]="calculatedDividerClasses()">
56956
- <div>
56957
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56958
- Gap to Close
56959
- </p>
56960
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
56961
- {{ formatCurrency(absValue(gapToClose().amount)) }}
56962
- </p>
56963
- </div>
56964
- <div>
56965
- <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56966
- Additional Growth Needed
56967
- </p>
56968
- <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
56969
- {{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(gapToClose().percentage, 1) }}
56970
- </p>
56971
- </div>
56972
- </div>
56973
- }
56974
- </div>
56975
- </div>
56976
- }
56977
- </div>
56978
-
56979
- <div>
56980
- <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
56981
- Year-over-Year Revenue Trend
56982
- </p>
56983
- <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
56984
- @if (revenueChartData()) {
56985
- <symphiq-area-chart
56986
- [chart]="revenueChartData()!"
56987
- [showAxisLabels]="true"
56988
- [viewMode]="viewMode()"
56989
- [currencySymbol]="'$'"
56990
- [height]="'320px'"
56991
- />
56992
- } @else {
56993
- <div class="h-64 flex items-center justify-center">
56994
- <p [ngClass]="noDataClasses()" class="text-sm">
56995
- No revenue data available
56996
- </p>
56997
- </div>
56998
- }
56999
- </div>
57000
- </div>
57001
- </div>
57002
- </div>
57003
-
57004
- @if (showMetricsVisualization()) {
57005
- <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
57006
- <div class="mb-6">
57007
- <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
57008
- Contributing Metrics
57009
- </h2>
57010
- <p [ngClass]="sectionDescriptionClasses()" class="text-sm">
57011
- To achieve your revenue target of {{ formatCurrency(displayedTargetRevenue()) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
57012
- </p>
57013
- </div>
57014
-
57015
- <symphiq-funnel-metrics-visualization
57016
- [viewMode]="viewMode()"
57017
- [calculations]="displayedMetricCalculations()"
57018
- [pacingMetrics]="pacingMetrics()"
57019
- />
57020
- </div>
57021
- }
57022
-
57023
- <symphiq-sticky-submit-bar
57024
- [viewMode]="viewMode()"
57025
- [isValid]="isValid()"
57026
- [isSubmitting]="isCalculating()"
57027
- [validationMessage]="validationMessage()"
57028
- [buttonText]="submitButtonText()"
57029
- (submitClick)="handleSubmitClick()"
57030
- />
57031
-
57032
- @if (calculationState() === 'results') {
57033
- <div class="fixed bottom-24 left-0 right-0 z-40 pb-4 px-4">
57034
- <div class="max-w-7xl mx-auto flex gap-4 justify-center">
57035
- <button
57036
- (click)="handleAdjustTarget()"
57037
- [ngClass]="secondaryButtonClasses()"
57038
- class="px-6 py-3 rounded-xl font-semibold transition-all shadow-lg">
57039
- Adjust Revenue Target
57040
- </button>
57041
- </div>
57042
- </div>
57043
- }
57044
-
57045
- @if (calculationState() === 'input' && hasStoredResponse()) {
57046
- <div class="fixed bottom-32 left-0 right-0 z-40 pb-4 px-4">
57047
- <div class="max-w-7xl mx-auto flex gap-4 justify-center">
57048
- <button
57049
- (click)="handleCancel()"
57050
- [ngClass]="cancelButtonClasses()"
57051
- class="px-6 py-3 rounded-xl font-semibold transition-all shadow-lg">
57052
- Cancel
57053
- </button>
57054
- </div>
57055
- </div>
57056
- }
57057
- </div>
56877
+ template: `
56878
+ <div class="space-y-8 pb-32">
56879
+ <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
56880
+ <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-6">
56881
+ Calculate Your Revenue Target
56882
+ </h2>
56883
+
56884
+ <div class="grid lg:grid-cols-2 gap-8">
56885
+ <div class="space-y-6">
56886
+ <div>
56887
+ <label [ngClass]="labelClasses()" class="block text-sm font-semibold mb-2">
56888
+ {{ currentYear() }} Revenue
56889
+ </label>
56890
+ <div class="space-y-1 mb-4">
56891
+ <p [ngClass]="priorYearLabelClasses()" class="text-xs">
56892
+ {{ priorYear() }} Revenue: {{ formatCurrency(priorYearRevenue()) }}
56893
+ </p>
56894
+ @if (currentPaceProjection() > 0) {
56895
+ <p [ngClass]="priorYearLabelClasses()" class="text-xs">
56896
+ Current Pace Projection: {{ formatCurrency(currentPaceProjection()) }}
56897
+ </p>
56898
+ }
56899
+ </div>
56900
+
56901
+ @if (calculationState() !== 'results') {
56902
+ <div class="flex gap-2 mb-4">
56903
+ <button
56904
+ (click)="setInputMode('absolute')"
56905
+ [ngClass]="inputModeButtonClasses('absolute')"
56906
+ class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
56907
+ Absolute Amount
56908
+ </button>
56909
+ <button
56910
+ (click)="setInputMode('percentage')"
56911
+ [ngClass]="inputModeButtonClasses('percentage')"
56912
+ class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
56913
+ % Increase
56914
+ </button>
56915
+ </div>
56916
+
56917
+ @if (inputMode() === 'absolute') {
56918
+ <div class="relative">
56919
+ <span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
56920
+ $
56921
+ </span>
56922
+ <input
56923
+ #absoluteInputRef
56924
+ type="number"
56925
+ [(ngModel)]="absoluteInput"
56926
+ (ngModelChange)="onAbsoluteInputChange()"
56927
+ [ngClass]="inputClasses()"
56928
+ class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
56929
+ placeholder="0"
56930
+ min="0"
56931
+ step="1000">
56932
+ </div>
56933
+ } @else {
56934
+ <div class="relative">
56935
+ <input
56936
+ #percentageInputRef
56937
+ type="number"
56938
+ [(ngModel)]="percentageInput"
56939
+ (ngModelChange)="onPercentageInputChange()"
56940
+ [ngClass]="inputClasses()"
56941
+ class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
56942
+ placeholder="0"
56943
+ min="0"
56944
+ max="1000"
56945
+ step="0.1">
56946
+ <span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
56947
+ %
56948
+ </span>
56949
+ </div>
56950
+ }
56951
+ }
56952
+ </div>
56953
+
56954
+ @if (calculatedRevenue() > 0) {
56955
+ <div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2">
56956
+ <div class="space-y-4">
56957
+ <div class="flex items-center justify-between">
56958
+ <div>
56959
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56960
+ {{ currentYear() }} Revenue Target
56961
+ </p>
56962
+ <p [ngClass]="calculatedValueClasses()" class="text-3xl font-bold">
56963
+ {{ formatCurrency(displayedTargetRevenue()) }}
56964
+ </p>
56965
+ </div>
56966
+ @if (calculationState() === 'results') {
56967
+ <button
56968
+ (click)="handleAdjustTarget()"
56969
+ [ngClass]="secondaryButtonClasses()"
56970
+ class="px-4 py-2 rounded-lg text-sm font-semibold transition-all whitespace-nowrap">
56971
+ Adjust Revenue Target
56972
+ </button>
56973
+ }
56974
+ </div>
56975
+ <div class="grid grid-cols-2 gap-4 pt-4" [ngClass]="calculatedDividerClasses()">
56976
+ <div>
56977
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56978
+ Increase Amount
56979
+ </p>
56980
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
56981
+ {{ formatCurrency(calculatedRevenue() - priorYearRevenue()) }}
56982
+ </p>
56983
+ </div>
56984
+ <div>
56985
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56986
+ % Growth
56987
+ </p>
56988
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
56989
+ +{{ formatPercentage(percentageIncrease(), 1) }}
56990
+ </p>
56991
+ </div>
56992
+ </div>
56993
+ @if (currentPaceProjection() > 0 && gapToClose().amount !== 0) {
56994
+ <div class="grid grid-cols-2 gap-4 pt-4" [ngClass]="calculatedDividerClasses()">
56995
+ <div>
56996
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
56997
+ Gap to Close
56998
+ </p>
56999
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57000
+ {{ formatCurrency(absValue(gapToClose().amount)) }}
57001
+ </p>
57002
+ </div>
57003
+ <div>
57004
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57005
+ Additional Growth Needed
57006
+ </p>
57007
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57008
+ {{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(gapToClose().percentage, 1) }}
57009
+ </p>
57010
+ </div>
57011
+ </div>
57012
+ }
57013
+ </div>
57014
+ </div>
57015
+ }
57016
+ </div>
57017
+
57018
+ <div>
57019
+ <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
57020
+ Year-over-Year Revenue Trend
57021
+ </p>
57022
+ <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
57023
+ @if (revenueChartData()) {
57024
+ <symphiq-area-chart
57025
+ [chart]="revenueChartData()!"
57026
+ [showAxisLabels]="true"
57027
+ [viewMode]="viewMode()"
57028
+ [currencySymbol]="'$'"
57029
+ [height]="'320px'"
57030
+ />
57031
+ } @else {
57032
+ <div class="h-64 flex items-center justify-center">
57033
+ <p [ngClass]="noDataClasses()" class="text-sm">
57034
+ No revenue data available
57035
+ </p>
57036
+ </div>
57037
+ }
57038
+ </div>
57039
+ </div>
57040
+ </div>
57041
+ </div>
57042
+
57043
+ @if (showMetricsVisualization()) {
57044
+ <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
57045
+ <div class="mb-6">
57046
+ <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
57047
+ Contributing Metrics
57048
+ </h2>
57049
+ <p [ngClass]="sectionDescriptionClasses()" class="text-sm">
57050
+ To achieve your revenue target of {{ formatCurrency(displayedTargetRevenue()) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
57051
+ </p>
57052
+ </div>
57053
+
57054
+ <symphiq-funnel-metrics-visualization
57055
+ [viewMode]="viewMode()"
57056
+ [calculations]="displayedMetricCalculations()"
57057
+ [pacingMetrics]="pacingMetrics()"
57058
+ />
57059
+ </div>
57060
+ }
57061
+
57062
+ <symphiq-sticky-submit-bar
57063
+ [viewMode]="viewMode()"
57064
+ [isValid]="isValid()"
57065
+ [isSubmitting]="isCalculating()"
57066
+ [validationMessage]="validationMessage()"
57067
+ [buttonText]="submitButtonText()"
57068
+ [showCancelButton]="calculationState() === 'input' && hasStoredResponse()"
57069
+ (submitClick)="handleSubmitClick()"
57070
+ (cancelClick)="handleCancel()"
57071
+ />
57072
+ </div>
57058
57073
  `
57059
57074
  }]
57060
57075
  }], () => [], { absoluteInputRef: [{
@@ -57064,7 +57079,7 @@ class InitialTargetSettingComponent {
57064
57079
  type: ViewChild,
57065
57080
  args: ['percentageInputRef']
57066
57081
  }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], funnelMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelMetrics", required: false }] }], mainUiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainUiData", required: false }] }], trendUiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendUiData", required: false }] }], shopId: [{ type: i0.Input, args: [{ isSignal: true, alias: "shopId", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], dataResults: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataResults", required: false }] }], reverseCalculationResponse: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverseCalculationResponse", required: false }] }], targetsCreated: [{ type: i0.Output, args: ["targetsCreated"] }], calculateRevenueRequest: [{ type: i0.Output, args: ["calculateRevenueRequest"] }] }); })();
57067
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 259 }); })();
57082
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 247 }); })();
57068
57083
 
57069
57084
  function IndeterminateSpinnerComponent_For_5_Template(rf, ctx) { if (rf & 1) {
57070
57085
  i0.ɵɵelement(0, "div", 5);