@eric-emg/symphiq-components 1.2.201 → 1.2.203

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
@@ -56192,67 +56226,118 @@ var areaChart_component = /*#__PURE__*/Object.freeze({
56192
56226
 
56193
56227
  const _c0$r = ["absoluteInputRef"];
56194
56228
  const _c1$b = ["percentageInputRef"];
56195
- function InitialTargetSettingComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
56196
- i0.ɵɵelementStart(0, "p", 9);
56197
- i0.ɵɵtext(1);
56229
+ function InitialTargetSettingComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
56230
+ i0.ɵɵelementStart(0, "div", 8);
56231
+ i0.ɵɵnamespaceSVG();
56232
+ i0.ɵɵelementStart(1, "svg", 9);
56233
+ i0.ɵɵelement(2, "path", 21);
56234
+ i0.ɵɵelementEnd();
56235
+ i0.ɵɵnamespaceHTML();
56236
+ i0.ɵɵelementStart(3, "p", 11);
56237
+ i0.ɵɵtext(4, " Current Pace Projection: ");
56198
56238
  i0.ɵɵelementEnd();
56239
+ i0.ɵɵelementStart(5, "p", 12);
56240
+ i0.ɵɵtext(6);
56241
+ i0.ɵɵelementEnd()();
56199
56242
  } if (rf & 2) {
56200
56243
  const ctx_r0 = i0.ɵɵnextContext();
56201
- i0.ɵɵproperty("ngClass", ctx_r0.priorYearLabelClasses());
56202
56244
  i0.ɵɵadvance();
56203
- i0.ɵɵtextInterpolate1(" Current Pace Projection: ", ctx_r0.formatCurrency(ctx_r0.currentPaceProjection()), " ");
56245
+ i0.ɵɵproperty("ngClass", ctx_r0.projectionIconClasses());
56246
+ i0.ɵɵadvance(2);
56247
+ i0.ɵɵproperty("ngClass", ctx_r0.projectionLabelClasses());
56248
+ i0.ɵɵadvance(2);
56249
+ i0.ɵɵproperty("ngClass", ctx_r0.projectionValueClasses());
56250
+ i0.ɵɵadvance();
56251
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.currentPaceProjection()), " ");
56204
56252
  } }
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);
56253
+ function InitialTargetSettingComponent_Conditional_16_Conditional_5_Template(rf, ctx) { if (rf & 1) {
56254
+ const _r3 = i0.ɵɵgetCurrentView();
56255
+ i0.ɵɵelementStart(0, "div", 24)(1, "span", 25);
56208
56256
  i0.ɵɵtext(2, " $ ");
56209
56257
  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()); });
56258
+ i0.ɵɵelementStart(3, "input", 26, 0);
56259
+ i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_16_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); });
56260
+ i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_16_Conditional_5_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAbsoluteInputChange()); });
56213
56261
  i0.ɵɵelementEnd()();
56214
56262
  } if (rf & 2) {
56215
- const ctx_r0 = i0.ɵɵnextContext();
56263
+ const ctx_r0 = i0.ɵɵnextContext(2);
56216
56264
  i0.ɵɵadvance();
56217
56265
  i0.ɵɵproperty("ngClass", ctx_r0.inputPrefixClasses());
56218
56266
  i0.ɵɵadvance(2);
56219
56267
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.absoluteInput);
56220
56268
  i0.ɵɵproperty("ngClass", ctx_r0.inputClasses());
56221
56269
  } }
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()); });
56270
+ function InitialTargetSettingComponent_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
56271
+ const _r4 = i0.ɵɵgetCurrentView();
56272
+ i0.ɵɵelementStart(0, "div", 24)(1, "input", 27, 1);
56273
+ i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_16_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); });
56274
+ i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_16_Conditional_6_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onPercentageInputChange()); });
56227
56275
  i0.ɵɵelementEnd();
56228
- i0.ɵɵelementStart(3, "span", 24);
56276
+ i0.ɵɵelementStart(3, "span", 28);
56229
56277
  i0.ɵɵtext(4, " % ");
56230
56278
  i0.ɵɵelementEnd()();
56231
56279
  } if (rf & 2) {
56232
- const ctx_r0 = i0.ɵɵnextContext();
56280
+ const ctx_r0 = i0.ɵɵnextContext(2);
56233
56281
  i0.ɵɵadvance();
56234
56282
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.percentageInput);
56235
56283
  i0.ɵɵproperty("ngClass", ctx_r0.inputClasses());
56236
56284
  i0.ɵɵadvance(2);
56237
56285
  i0.ɵɵproperty("ngClass", ctx_r0.inputSuffixClasses());
56238
56286
  } }
56239
- function InitialTargetSettingComponent_Conditional_20_Conditional_18_Template(rf, ctx) { if (rf & 1) {
56240
- i0.ɵɵelementStart(0, "div", 28)(1, "div")(2, "p", 26);
56241
- i0.ɵɵtext(3, " Gap to Close ");
56287
+ function InitialTargetSettingComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
56288
+ const _r2 = i0.ɵɵgetCurrentView();
56289
+ i0.ɵɵelementStart(0, "div", 22)(1, "button", 23);
56290
+ i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_16_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("absolute")); });
56291
+ i0.ɵɵtext(2, " Absolute Amount ");
56242
56292
  i0.ɵɵelementEnd();
56243
- i0.ɵɵelementStart(4, "p", 29);
56244
- i0.ɵɵtext(5);
56293
+ i0.ɵɵelementStart(3, "button", 23);
56294
+ i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("percentage")); });
56295
+ i0.ɵɵtext(4, " % Increase ");
56245
56296
  i0.ɵɵelementEnd()();
56246
- i0.ɵɵelementStart(6, "div")(7, "p", 26);
56247
- i0.ɵɵtext(8, " Additional Growth Needed ");
56297
+ i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_16_Conditional_5_Template, 5, 3, "div", 24)(6, InitialTargetSettingComponent_Conditional_16_Conditional_6_Template, 5, 3, "div", 24);
56298
+ } if (rf & 2) {
56299
+ const ctx_r0 = i0.ɵɵnextContext();
56300
+ i0.ɵɵadvance();
56301
+ i0.ɵɵproperty("ngClass", ctx_r0.inputModeButtonClasses("absolute"));
56302
+ i0.ɵɵadvance(2);
56303
+ i0.ɵɵproperty("ngClass", ctx_r0.inputModeButtonClasses("percentage"));
56304
+ i0.ɵɵadvance(2);
56305
+ i0.ɵɵconditional(ctx_r0.inputMode() === "absolute" ? 5 : 6);
56306
+ } }
56307
+ function InitialTargetSettingComponent_Conditional_19_Conditional_8_Template(rf, ctx) { if (rf & 1) {
56308
+ const _r5 = i0.ɵɵgetCurrentView();
56309
+ i0.ɵɵelementStart(0, "button", 39);
56310
+ i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_19_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.handleAdjustTarget()); });
56311
+ i0.ɵɵtext(1, " Adjust Revenue Target ");
56248
56312
  i0.ɵɵelementEnd();
56249
- i0.ɵɵelementStart(9, "p", 29);
56250
- i0.ɵɵtext(10);
56251
- i0.ɵɵelementEnd()()();
56313
+ } if (rf & 2) {
56314
+ const ctx_r0 = i0.ɵɵnextContext(2);
56315
+ i0.ɵɵproperty("ngClass", ctx_r0.secondaryButtonClasses());
56316
+ } }
56317
+ function InitialTargetSettingComponent_Conditional_19_Conditional_24_Template(rf, ctx) { if (rf & 1) {
56318
+ i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "span", 36);
56319
+ i0.ɵɵtext(3);
56320
+ i0.ɵɵelementEnd()();
56321
+ i0.ɵɵelementStart(4, "div", 37)(5, "div")(6, "p", 31);
56322
+ i0.ɵɵtext(7, " Gap to Close ");
56323
+ i0.ɵɵelementEnd();
56324
+ i0.ɵɵelementStart(8, "p", 38);
56325
+ i0.ɵɵtext(9);
56326
+ i0.ɵɵelementEnd()();
56327
+ i0.ɵɵelementStart(10, "div")(11, "p", 31);
56328
+ i0.ɵɵtext(12, " Additional Growth Needed ");
56329
+ i0.ɵɵelementEnd();
56330
+ i0.ɵɵelementStart(13, "p", 38);
56331
+ i0.ɵɵtext(14);
56332
+ i0.ɵɵelementEnd()()()();
56252
56333
  } if (rf & 2) {
56253
56334
  const ctx_r0 = i0.ɵɵnextContext(2);
56254
56335
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedDividerClasses());
56255
56336
  i0.ɵɵadvance(2);
56337
+ i0.ɵɵproperty("ngClass", ctx_r0.dividerLabelClasses());
56338
+ i0.ɵɵadvance();
56339
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.currentYear(), " YTD Gap ");
56340
+ i0.ɵɵadvance(3);
56256
56341
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
56257
56342
  i0.ɵɵadvance(2);
56258
56343
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedSecondaryClasses());
@@ -56265,41 +56350,52 @@ function InitialTargetSettingComponent_Conditional_20_Conditional_18_Template(rf
56265
56350
  i0.ɵɵadvance();
56266
56351
  i0.ɵɵtextInterpolate2(" ", ctx_r0.gapToClose().amount > 0 ? "+" : "", "", ctx_r0.formatPercentage(ctx_r0.gapToClose().percentage, 1), " ");
56267
56352
  } }
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);
56353
+ function InitialTargetSettingComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
56354
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 29)(2, "div", 30)(3, "div")(4, "p", 31);
56355
+ i0.ɵɵtext(5);
56271
56356
  i0.ɵɵelementEnd();
56272
- i0.ɵɵelementStart(5, "p", 27);
56273
- i0.ɵɵtext(6);
56357
+ i0.ɵɵelementStart(6, "p", 32);
56358
+ i0.ɵɵtext(7);
56274
56359
  i0.ɵɵelementEnd()();
56275
- i0.ɵɵelementStart(7, "div", 28)(8, "div")(9, "p", 26);
56276
- i0.ɵɵtext(10, " Increase Amount ");
56360
+ i0.ɵɵconditionalCreate(8, InitialTargetSettingComponent_Conditional_19_Conditional_8_Template, 2, 1, "button", 33);
56277
56361
  i0.ɵɵelementEnd();
56278
- i0.ɵɵelementStart(11, "p", 29);
56362
+ i0.ɵɵelementStart(9, "div", 34)(10, "div", 35)(11, "span", 36);
56279
56363
  i0.ɵɵtext(12);
56280
56364
  i0.ɵɵelementEnd()();
56281
- i0.ɵɵelementStart(13, "div")(14, "p", 26);
56282
- i0.ɵɵtext(15, " % Growth ");
56365
+ i0.ɵɵelementStart(13, "div", 37)(14, "div")(15, "p", 31);
56366
+ i0.ɵɵtext(16, " Increase Amount ");
56283
56367
  i0.ɵɵelementEnd();
56284
- i0.ɵɵelementStart(16, "p", 29);
56285
- i0.ɵɵtext(17);
56286
- i0.ɵɵelementEnd()()();
56287
- i0.ɵɵconditionalCreate(18, InitialTargetSettingComponent_Conditional_20_Conditional_18_Template, 11, 8, "div", 28);
56368
+ i0.ɵɵelementStart(17, "p", 38);
56369
+ i0.ɵɵtext(18);
56370
+ i0.ɵɵelementEnd()();
56371
+ i0.ɵɵelementStart(19, "div")(20, "p", 31);
56372
+ i0.ɵɵtext(21, " % Growth ");
56373
+ i0.ɵɵelementEnd();
56374
+ i0.ɵɵelementStart(22, "p", 38);
56375
+ i0.ɵɵtext(23);
56376
+ i0.ɵɵelementEnd()()()();
56377
+ i0.ɵɵconditionalCreate(24, InitialTargetSettingComponent_Conditional_19_Conditional_24_Template, 15, 10, "div", 34);
56288
56378
  i0.ɵɵelementEnd()();
56289
56379
  } if (rf & 2) {
56290
56380
  const ctx_r0 = i0.ɵɵnextContext();
56291
56381
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedValuesCardClasses());
56292
- i0.ɵɵadvance(3);
56382
+ i0.ɵɵadvance(4);
56293
56383
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
56294
56384
  i0.ɵɵadvance();
56295
56385
  i0.ɵɵtextInterpolate1(" ", ctx_r0.currentYear(), " Revenue Target ");
56296
56386
  i0.ɵɵadvance();
56297
56387
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedValueClasses());
56298
56388
  i0.ɵɵadvance();
56299
- i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.calculatedRevenue()), " ");
56389
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.displayedTargetRevenue()), " ");
56390
+ i0.ɵɵadvance();
56391
+ i0.ɵɵconditional(ctx_r0.calculationState() === "results" ? 8 : -1);
56300
56392
  i0.ɵɵadvance();
56301
56393
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedDividerClasses());
56302
56394
  i0.ɵɵadvance(2);
56395
+ i0.ɵɵproperty("ngClass", ctx_r0.dividerLabelClasses());
56396
+ i0.ɵɵadvance();
56397
+ i0.ɵɵtextInterpolate1(" vs. ", ctx_r0.priorYear(), " ");
56398
+ i0.ɵɵadvance(3);
56303
56399
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
56304
56400
  i0.ɵɵadvance(2);
56305
56401
  i0.ɵɵproperty("ngClass", ctx_r0.calculatedSecondaryClasses());
@@ -56312,16 +56408,16 @@ function InitialTargetSettingComponent_Conditional_20_Template(rf, ctx) { if (rf
56312
56408
  i0.ɵɵadvance();
56313
56409
  i0.ɵɵtextInterpolate1(" +", ctx_r0.formatPercentage(ctx_r0.percentageIncrease(), 1), " ");
56314
56410
  i0.ɵɵadvance();
56315
- i0.ɵɵconditional(ctx_r0.currentPaceProjection() > 0 && ctx_r0.gapToClose().amount !== 0 ? 18 : -1);
56411
+ i0.ɵɵconditional(ctx_r0.currentPaceProjection() > 0 && ctx_r0.gapToClose().amount !== 0 ? 24 : -1);
56316
56412
  } }
56317
- function InitialTargetSettingComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
56318
- i0.ɵɵelement(0, "symphiq-area-chart", 16);
56413
+ function InitialTargetSettingComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
56414
+ i0.ɵɵelement(0, "symphiq-area-chart", 18);
56319
56415
  } if (rf & 2) {
56320
56416
  const ctx_r0 = i0.ɵɵnextContext();
56321
56417
  i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "320px");
56322
56418
  } }
56323
- function InitialTargetSettingComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
56324
- i0.ɵɵelementStart(0, "div", 17)(1, "p", 30);
56419
+ function InitialTargetSettingComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
56420
+ i0.ɵɵelementStart(0, "div", 19)(1, "p", 40);
56325
56421
  i0.ɵɵtext(2, " No revenue data available ");
56326
56422
  i0.ɵɵelementEnd()();
56327
56423
  } if (rf & 2) {
@@ -56329,14 +56425,14 @@ function InitialTargetSettingComponent_Conditional_26_Template(rf, ctx) { if (rf
56329
56425
  i0.ɵɵadvance();
56330
56426
  i0.ɵɵproperty("ngClass", ctx_r0.noDataClasses());
56331
56427
  } }
56332
- function InitialTargetSettingComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
56333
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 31)(2, "h2", 32);
56428
+ function InitialTargetSettingComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
56429
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 41)(2, "h2", 42);
56334
56430
  i0.ɵɵtext(3, " Contributing Metrics ");
56335
56431
  i0.ɵɵelementEnd();
56336
- i0.ɵɵelementStart(4, "p", 30);
56432
+ i0.ɵɵelementStart(4, "p", 40);
56337
56433
  i0.ɵɵtext(5);
56338
56434
  i0.ɵɵelementEnd()();
56339
- i0.ɵɵelement(6, "symphiq-funnel-metrics-visualization", 33);
56435
+ i0.ɵɵelement(6, "symphiq-funnel-metrics-visualization", 43);
56340
56436
  i0.ɵɵelementEnd();
56341
56437
  } if (rf & 2) {
56342
56438
  const ctx_r0 = i0.ɵɵnextContext();
@@ -56350,28 +56446,6 @@ function InitialTargetSettingComponent_Conditional_27_Template(rf, ctx) { if (rf
56350
56446
  i0.ɵɵadvance();
56351
56447
  i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("calculations", ctx_r0.displayedMetricCalculations())("pacingMetrics", ctx_r0.pacingMetrics());
56352
56448
  } }
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
56449
  class InitialTargetSettingComponent {
56376
56450
  constructor() {
56377
56451
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
@@ -56748,6 +56822,46 @@ class InitialTargetSettingComponent {
56748
56822
  ? 'bg-slate-700 text-slate-300 border-2 border-slate-600 hover:bg-slate-600'
56749
56823
  : 'bg-slate-100 text-slate-600 border-2 border-slate-300 hover:bg-slate-200';
56750
56824
  }
56825
+ baselineMetricsCardClasses() {
56826
+ return this.viewMode() === ViewModeEnum.DARK
56827
+ ? 'bg-slate-800/60 border border-slate-700'
56828
+ : 'bg-slate-50 border border-slate-200';
56829
+ }
56830
+ baselineIconClasses() {
56831
+ return this.viewMode() === ViewModeEnum.DARK
56832
+ ? 'text-blue-400'
56833
+ : 'text-blue-600';
56834
+ }
56835
+ baselineLabelClasses() {
56836
+ return this.viewMode() === ViewModeEnum.DARK
56837
+ ? 'text-slate-300'
56838
+ : 'text-slate-700';
56839
+ }
56840
+ baselineValueClasses() {
56841
+ return this.viewMode() === ViewModeEnum.DARK
56842
+ ? 'text-blue-300'
56843
+ : 'text-blue-700';
56844
+ }
56845
+ projectionIconClasses() {
56846
+ return this.viewMode() === ViewModeEnum.DARK
56847
+ ? 'text-emerald-400'
56848
+ : 'text-emerald-600';
56849
+ }
56850
+ projectionLabelClasses() {
56851
+ return this.viewMode() === ViewModeEnum.DARK
56852
+ ? 'text-slate-300'
56853
+ : 'text-slate-700';
56854
+ }
56855
+ projectionValueClasses() {
56856
+ return this.viewMode() === ViewModeEnum.DARK
56857
+ ? 'text-emerald-300'
56858
+ : 'text-emerald-700';
56859
+ }
56860
+ dividerLabelClasses() {
56861
+ return this.viewMode() === ViewModeEnum.DARK
56862
+ ? 'bg-purple-900/60 text-purple-300 border border-purple-500/30'
56863
+ : 'bg-purple-100 text-purple-700 border border-purple-300';
56864
+ }
56751
56865
  static { this.ɵfac = function InitialTargetSettingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InitialTargetSettingComponent)(); }; }
56752
56866
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InitialTargetSettingComponent, selectors: [["symphiq-initial-target-setting"]], viewQuery: function InitialTargetSettingComponent_Query(rf, ctx) { if (rf & 1) {
56753
56867
  i0.ɵɵviewQuery(_c0$r, 5);
@@ -56756,307 +56870,318 @@ class InitialTargetSettingComponent {
56756
56870
  let _t;
56757
56871
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.absoluteInputRef = _t.first);
56758
56872
  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) {
56873
+ } }, 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: 28, vars: 24, 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, "p-4", "rounded-lg", "mb-4", "space-y-2", 3, "ngClass"], [1, "flex", "items-center", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "text-sm", "font-bold", "ml-auto", 3, "ngClass"], [1, "calculated-card-enter"], [1, "calculated-card-content"], [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"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"], [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, "relative", "pt-4", 3, "ngClass"], [1, "absolute", "top-0", "left-1/2", "-translate-x-1/2", "-translate-y-1/2"], [1, "px-3", "py-1", "rounded-full", "text-xs", "font-semibold", "whitespace-nowrap", 3, "ngClass"], [1, "grid", "grid-cols-2", "gap-4"], [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
56874
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "h2", 4);
56761
- i0.ɵɵtext(3, " Calculate Your Revenue Target ");
56762
- i0.ɵɵelementEnd();
56763
- i0.ɵɵelementStart(4, "div", 5)(5, "div", 6)(6, "div")(7, "label", 7);
56764
- i0.ɵɵtext(8);
56765
- i0.ɵɵelementEnd();
56766
- i0.ɵɵelementStart(9, "div", 8)(10, "p", 9);
56767
- i0.ɵɵtext(11);
56875
+ i0.ɵɵtext(3);
56768
56876
  i0.ɵɵelementEnd();
56769
- i0.ɵɵconditionalCreate(12, InitialTargetSettingComponent_Conditional_12_Template, 2, 2, "p", 9);
56877
+ i0.ɵɵelementStart(4, "div", 5)(5, "div", 6)(6, "div")(7, "div", 7)(8, "div", 8);
56878
+ i0.ɵɵnamespaceSVG();
56879
+ i0.ɵɵelementStart(9, "svg", 9);
56880
+ i0.ɵɵelement(10, "path", 10);
56770
56881
  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 ");
56882
+ i0.ɵɵnamespaceHTML();
56883
+ i0.ɵɵelementStart(11, "p", 11);
56884
+ i0.ɵɵtext(12);
56774
56885
  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 ");
56886
+ i0.ɵɵelementStart(13, "p", 12);
56887
+ i0.ɵɵtext(14);
56778
56888
  i0.ɵɵelementEnd()();
56779
- i0.ɵɵconditionalCreate(18, InitialTargetSettingComponent_Conditional_18_Template, 5, 3, "div", 12)(19, InitialTargetSettingComponent_Conditional_19_Template, 5, 3, "div", 12);
56889
+ i0.ɵɵconditionalCreate(15, InitialTargetSettingComponent_Conditional_15_Template, 7, 4, "div", 8);
56780
56890
  i0.ɵɵelementEnd();
56781
- i0.ɵɵconditionalCreate(20, InitialTargetSettingComponent_Conditional_20_Template, 19, 13, "div", 13);
56891
+ i0.ɵɵconditionalCreate(16, InitialTargetSettingComponent_Conditional_16_Template, 7, 3);
56782
56892
  i0.ɵɵelementEnd();
56783
- i0.ɵɵelementStart(21, "div")(22, "p", 14);
56784
- i0.ɵɵtext(23, " Year-over-Year Revenue Trend ");
56893
+ i0.ɵɵelementStart(17, "div", 13)(18, "div", 14);
56894
+ i0.ɵɵconditionalCreate(19, InitialTargetSettingComponent_Conditional_19_Template, 25, 16, "div", 15);
56895
+ i0.ɵɵelementEnd()()();
56896
+ i0.ɵɵelementStart(20, "div")(21, "p", 16);
56897
+ i0.ɵɵtext(22, " Year-over-Year Revenue Trend ");
56785
56898
  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);
56899
+ i0.ɵɵelementStart(23, "div", 17);
56900
+ i0.ɵɵconditionalCreate(24, InitialTargetSettingComponent_Conditional_24_Template, 1, 5, "symphiq-area-chart", 18)(25, InitialTargetSettingComponent_Conditional_25_Template, 3, 1, "div", 19);
56788
56901
  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();
56902
+ i0.ɵɵconditionalCreate(26, InitialTargetSettingComponent_Conditional_26_Template, 7, 7, "div", 3);
56903
+ i0.ɵɵelementStart(27, "symphiq-sticky-submit-bar", 20);
56904
+ i0.ɵɵlistener("submitClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_submitClick_27_listener() { return ctx.handleSubmitClick(); })("cancelClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_cancelClick_27_listener() { return ctx.handleCancel(); });
56905
+ i0.ɵɵelementEnd()();
56796
56906
  } if (rf & 2) {
56797
56907
  i0.ɵɵadvance();
56798
56908
  i0.ɵɵproperty("ngClass", ctx.sectionCardClasses());
56799
56909
  i0.ɵɵadvance();
56800
56910
  i0.ɵɵproperty("ngClass", ctx.sectionTitleClasses());
56801
- i0.ɵɵadvance(5);
56802
- i0.ɵɵproperty("ngClass", ctx.labelClasses());
56803
56911
  i0.ɵɵadvance();
56804
- i0.ɵɵtextInterpolate1(" ", ctx.currentYear(), " Revenue ");
56912
+ i0.ɵɵtextInterpolate1(" Calculate Your ", ctx.currentYear(), " Revenue Target ");
56913
+ i0.ɵɵadvance(4);
56914
+ i0.ɵɵproperty("ngClass", ctx.baselineMetricsCardClasses());
56915
+ i0.ɵɵadvance(2);
56916
+ i0.ɵɵproperty("ngClass", ctx.baselineIconClasses());
56805
56917
  i0.ɵɵadvance(2);
56806
- i0.ɵɵproperty("ngClass", ctx.priorYearLabelClasses());
56918
+ i0.ɵɵproperty("ngClass", ctx.baselineLabelClasses());
56807
56919
  i0.ɵɵadvance();
56808
- i0.ɵɵtextInterpolate2(" ", ctx.priorYear(), " Revenue: ", ctx.formatCurrency(ctx.priorYearRevenue()), " ");
56920
+ i0.ɵɵtextInterpolate1(" ", ctx.priorYear(), " Revenue: ");
56809
56921
  i0.ɵɵadvance();
56810
- 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);
56922
+ i0.ɵɵproperty("ngClass", ctx.baselineValueClasses());
56923
+ i0.ɵɵadvance();
56924
+ i0.ɵɵtextInterpolate1(" ", ctx.formatCurrency(ctx.priorYearRevenue()), " ");
56925
+ i0.ɵɵadvance();
56926
+ i0.ɵɵconditional(ctx.currentPaceProjection() > 0 ? 15 : -1);
56927
+ i0.ɵɵadvance();
56928
+ i0.ɵɵconditional(ctx.calculationState() !== "results" ? 16 : -1);
56929
+ i0.ɵɵadvance();
56930
+ i0.ɵɵclassProp("calculated-card-enter-active", ctx.calculatedRevenue() > 0);
56817
56931
  i0.ɵɵadvance(2);
56818
- i0.ɵɵconditional(ctx.calculatedRevenue() > 0 ? 20 : -1);
56932
+ i0.ɵɵconditional(ctx.calculatedRevenue() > 0 ? 19 : -1);
56819
56933
  i0.ɵɵadvance(2);
56820
56934
  i0.ɵɵproperty("ngClass", ctx.chartTitleClasses());
56821
56935
  i0.ɵɵadvance(2);
56822
56936
  i0.ɵɵproperty("ngClass", ctx.chartContainerClasses());
56823
56937
  i0.ɵɵadvance();
56824
- i0.ɵɵconditional(ctx.revenueChartData() ? 25 : 26);
56938
+ i0.ɵɵconditional(ctx.revenueChartData() ? 24 : 25);
56825
56939
  i0.ɵɵadvance(2);
56826
- i0.ɵɵconditional(ctx.showMetricsVisualization() ? 27 : -1);
56940
+ i0.ɵɵconditional(ctx.showMetricsVisualization() ? 26 : -1);
56827
56941
  i0.ɵɵadvance();
56828
- i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText());
56829
- i0.ɵɵadvance();
56830
- i0.ɵɵconditional(ctx.calculationState() === "results" ? 29 : -1);
56831
- i0.ɵɵadvance();
56832
- i0.ɵɵconditional(ctx.calculationState() === "input" && ctx.hasStoredResponse() ? 30 : -1);
56942
+ i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText())("showCancelButton", ctx.calculationState() === "input" && ctx.hasStoredResponse());
56833
56943
  } }, 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
56944
  StickySubmitBarComponent,
56835
- AreaChartComponent], encapsulation: 2, changeDetection: 0 }); }
56945
+ AreaChartComponent], styles: [".calculated-card-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.calculated-card-content[_ngcontent-%COMP%]{overflow:hidden}"], changeDetection: 0 }); }
56836
56946
  }
56837
56947
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InitialTargetSettingComponent, [{
56838
56948
  type: Component,
56839
- args: [{
56840
- selector: 'symphiq-initial-target-setting',
56841
- standalone: true,
56842
- imports: [
56949
+ args: [{ selector: 'symphiq-initial-target-setting', standalone: true, imports: [
56843
56950
  CommonModule,
56844
56951
  FormsModule,
56845
56952
  FunnelMetricsVisualizationComponent,
56846
56953
  StickySubmitBarComponent,
56847
56954
  AreaChartComponent
56848
- ],
56849
- 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>
57058
- `
57059
- }]
56955
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
56956
+ <div class="space-y-8 pb-32">
56957
+ <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
56958
+ <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-6">
56959
+ Calculate Your {{ currentYear() }} Revenue Target
56960
+ </h2>
56961
+
56962
+ <div class="grid lg:grid-cols-2 gap-8">
56963
+ <div class="space-y-6">
56964
+ <div>
56965
+ <div [ngClass]="baselineMetricsCardClasses()" class="p-4 rounded-lg mb-4 space-y-2">
56966
+ <div class="flex items-center gap-2">
56967
+ <svg class="w-4 h-4" [ngClass]="baselineIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
56968
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
56969
+ </svg>
56970
+ <p [ngClass]="baselineLabelClasses()" class="text-sm font-semibold">
56971
+ {{ priorYear() }} Revenue:
56972
+ </p>
56973
+ <p [ngClass]="baselineValueClasses()" class="text-sm font-bold ml-auto">
56974
+ {{ formatCurrency(priorYearRevenue()) }}
56975
+ </p>
56976
+ </div>
56977
+ @if (currentPaceProjection() > 0) {
56978
+ <div class="flex items-center gap-2">
56979
+ <svg class="w-4 h-4" [ngClass]="projectionIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
56980
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
56981
+ </svg>
56982
+ <p [ngClass]="projectionLabelClasses()" class="text-sm font-semibold">
56983
+ Current Pace Projection:
56984
+ </p>
56985
+ <p [ngClass]="projectionValueClasses()" class="text-sm font-bold ml-auto">
56986
+ {{ formatCurrency(currentPaceProjection()) }}
56987
+ </p>
56988
+ </div>
56989
+ }
56990
+ </div>
56991
+
56992
+ @if (calculationState() !== 'results') {
56993
+ <div class="flex gap-2 mb-4">
56994
+ <button
56995
+ (click)="setInputMode('absolute')"
56996
+ [ngClass]="inputModeButtonClasses('absolute')"
56997
+ class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
56998
+ Absolute Amount
56999
+ </button>
57000
+ <button
57001
+ (click)="setInputMode('percentage')"
57002
+ [ngClass]="inputModeButtonClasses('percentage')"
57003
+ class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
57004
+ % Increase
57005
+ </button>
57006
+ </div>
57007
+
57008
+ @if (inputMode() === 'absolute') {
57009
+ <div class="relative">
57010
+ <span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
57011
+ $
57012
+ </span>
57013
+ <input
57014
+ #absoluteInputRef
57015
+ type="number"
57016
+ [(ngModel)]="absoluteInput"
57017
+ (ngModelChange)="onAbsoluteInputChange()"
57018
+ [ngClass]="inputClasses()"
57019
+ class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
57020
+ placeholder="0"
57021
+ min="0"
57022
+ step="1000">
57023
+ </div>
57024
+ } @else {
57025
+ <div class="relative">
57026
+ <input
57027
+ #percentageInputRef
57028
+ type="number"
57029
+ [(ngModel)]="percentageInput"
57030
+ (ngModelChange)="onPercentageInputChange()"
57031
+ [ngClass]="inputClasses()"
57032
+ class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
57033
+ placeholder="0"
57034
+ min="0"
57035
+ max="1000"
57036
+ step="0.1">
57037
+ <span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
57038
+ %
57039
+ </span>
57040
+ </div>
57041
+ }
57042
+ }
57043
+ </div>
57044
+
57045
+ <div class="calculated-card-enter" [class.calculated-card-enter-active]="calculatedRevenue() > 0">
57046
+ <div class="calculated-card-content">
57047
+ @if (calculatedRevenue() > 0) {
57048
+ <div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2">
57049
+ <div class="space-y-4">
57050
+ <div class="flex items-center justify-between">
57051
+ <div>
57052
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57053
+ {{ currentYear() }} Revenue Target
57054
+ </p>
57055
+ <p [ngClass]="calculatedValueClasses()" class="text-3xl font-bold">
57056
+ {{ formatCurrency(displayedTargetRevenue()) }}
57057
+ </p>
57058
+ </div>
57059
+ @if (calculationState() === 'results') {
57060
+ <button
57061
+ (click)="handleAdjustTarget()"
57062
+ [ngClass]="secondaryButtonClasses()"
57063
+ class="px-4 py-2 rounded-lg text-sm font-semibold transition-all whitespace-nowrap">
57064
+ Adjust Revenue Target
57065
+ </button>
57066
+ }
57067
+ </div>
57068
+
57069
+ <div class="relative pt-4" [ngClass]="calculatedDividerClasses()">
57070
+ <div class="absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2">
57071
+ <span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
57072
+ vs. {{ priorYear() }}
57073
+ </span>
57074
+ </div>
57075
+ <div class="grid grid-cols-2 gap-4">
57076
+ <div>
57077
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57078
+ Increase Amount
57079
+ </p>
57080
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57081
+ {{ formatCurrency(calculatedRevenue() - priorYearRevenue()) }}
57082
+ </p>
57083
+ </div>
57084
+ <div>
57085
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57086
+ % Growth
57087
+ </p>
57088
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57089
+ +{{ formatPercentage(percentageIncrease(), 1) }}
57090
+ </p>
57091
+ </div>
57092
+ </div>
57093
+ </div>
57094
+
57095
+ @if (currentPaceProjection() > 0 && gapToClose().amount !== 0) {
57096
+ <div class="relative pt-4" [ngClass]="calculatedDividerClasses()">
57097
+ <div class="absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2">
57098
+ <span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
57099
+ {{ currentYear() }} YTD Gap
57100
+ </span>
57101
+ </div>
57102
+ <div class="grid grid-cols-2 gap-4">
57103
+ <div>
57104
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57105
+ Gap to Close
57106
+ </p>
57107
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57108
+ {{ formatCurrency(absValue(gapToClose().amount)) }}
57109
+ </p>
57110
+ </div>
57111
+ <div>
57112
+ <p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
57113
+ Additional Growth Needed
57114
+ </p>
57115
+ <p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
57116
+ {{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(gapToClose().percentage, 1) }}
57117
+ </p>
57118
+ </div>
57119
+ </div>
57120
+ </div>
57121
+ }
57122
+ </div>
57123
+ </div>
57124
+ }
57125
+ </div>
57126
+ </div>
57127
+ </div>
57128
+
57129
+ <div>
57130
+ <p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
57131
+ Year-over-Year Revenue Trend
57132
+ </p>
57133
+ <div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
57134
+ @if (revenueChartData()) {
57135
+ <symphiq-area-chart
57136
+ [chart]="revenueChartData()!"
57137
+ [showAxisLabels]="true"
57138
+ [viewMode]="viewMode()"
57139
+ [currencySymbol]="'$'"
57140
+ [height]="'320px'"
57141
+ />
57142
+ } @else {
57143
+ <div class="h-64 flex items-center justify-center">
57144
+ <p [ngClass]="noDataClasses()" class="text-sm">
57145
+ No revenue data available
57146
+ </p>
57147
+ </div>
57148
+ }
57149
+ </div>
57150
+ </div>
57151
+ </div>
57152
+ </div>
57153
+
57154
+ @if (showMetricsVisualization()) {
57155
+ <div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
57156
+ <div class="mb-6">
57157
+ <h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
57158
+ Contributing Metrics
57159
+ </h2>
57160
+ <p [ngClass]="sectionDescriptionClasses()" class="text-sm">
57161
+ 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.
57162
+ </p>
57163
+ </div>
57164
+
57165
+ <symphiq-funnel-metrics-visualization
57166
+ [viewMode]="viewMode()"
57167
+ [calculations]="displayedMetricCalculations()"
57168
+ [pacingMetrics]="pacingMetrics()"
57169
+ />
57170
+ </div>
57171
+ }
57172
+
57173
+ <symphiq-sticky-submit-bar
57174
+ [viewMode]="viewMode()"
57175
+ [isValid]="isValid()"
57176
+ [isSubmitting]="isCalculating()"
57177
+ [validationMessage]="validationMessage()"
57178
+ [buttonText]="submitButtonText()"
57179
+ [showCancelButton]="calculationState() === 'input' && hasStoredResponse()"
57180
+ (submitClick)="handleSubmitClick()"
57181
+ (cancelClick)="handleCancel()"
57182
+ />
57183
+ </div>
57184
+ `, styles: [".calculated-card-enter{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active{grid-template-rows:1fr}.calculated-card-content{overflow:hidden}\n"] }]
57060
57185
  }], () => [], { absoluteInputRef: [{
57061
57186
  type: ViewChild,
57062
57187
  args: ['absoluteInputRef']
@@ -57064,7 +57189,7 @@ class InitialTargetSettingComponent {
57064
57189
  type: ViewChild,
57065
57190
  args: ['percentageInputRef']
57066
57191
  }], 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 }); })();
57192
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 295 }); })();
57068
57193
 
57069
57194
  function IndeterminateSpinnerComponent_For_5_Template(rf, ctx) { if (rf & 1) {
57070
57195
  i0.ɵɵelement(0, "div", 5);