@eric-emg/symphiq-components 1.2.202 → 1.2.204

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