@eric-emg/symphiq-components 1.2.235 → 1.2.237

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.
@@ -2562,14 +2562,27 @@ function isCurrentYearTarget(target) {
2562
2562
  return (targetStart.getTime() === currentYearStart.getTime() &&
2563
2563
  targetEnd.getTime() === currentYearEnd.getTime());
2564
2564
  }
2565
+ function getMinFractionDigitsForSignificantFigures(value, minSigFigs) {
2566
+ if (value === 0)
2567
+ return 0;
2568
+ const absValue = Math.abs(value);
2569
+ if (absValue >= 1) {
2570
+ return 2;
2571
+ }
2572
+ const magnitude = Math.floor(Math.log10(absValue));
2573
+ return Math.max(0, -magnitude + minSigFigs - 1);
2574
+ }
2565
2575
  function formatCurrency(value, currencySymbol = '$') {
2576
+ const fractionDigits = getMinFractionDigitsForSignificantFigures(value, 2);
2566
2577
  return `${currencySymbol}${value.toLocaleString('en-US', {
2567
- minimumFractionDigits: 0,
2568
- maximumFractionDigits: 0
2578
+ minimumFractionDigits: fractionDigits,
2579
+ maximumFractionDigits: fractionDigits
2569
2580
  })}`;
2570
2581
  }
2571
2582
  function formatPercentage(value, decimals = 1) {
2572
- return `${value.toFixed(decimals)}%`;
2583
+ const minDecimals = getMinFractionDigitsForSignificantFigures(value, 2);
2584
+ const finalDecimals = Math.max(decimals, minDecimals);
2585
+ return `${value.toFixed(finalDecimals)}%`;
2573
2586
  }
2574
2587
  function formatNumber(value) {
2575
2588
  return value.toLocaleString('en-US', {
@@ -55112,13 +55125,13 @@ const _forTrack1$3 = ($index, $item) => $item.calc.metric;
55112
55125
  function FunnelMetricsVisualizationComponent_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
55113
55126
  i0.ɵɵelementStart(0, "button", 7);
55114
55127
  i0.ɵɵnamespaceSVG();
55115
- i0.ɵɵelementStart(1, "svg", 13);
55116
- i0.ɵɵelement(2, "path", 14);
55128
+ i0.ɵɵelementStart(1, "svg", 15);
55129
+ i0.ɵɵelement(2, "path", 19);
55117
55130
  i0.ɵɵelementEnd()();
55118
55131
  } if (rf & 2) {
55119
- const stage_r1 = i0.ɵɵnextContext().$implicit;
55120
- const ctx_r1 = i0.ɵɵnextContext();
55121
- i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(stage_r1.stageMetric.description, ctx_r1.getMetricTitle(stage_r1.stageMetric)));
55132
+ const stage_r2 = i0.ɵɵnextContext().$implicit;
55133
+ const ctx_r2 = i0.ɵɵnextContext();
55134
+ i0.ɵɵproperty("ngClass", ctx_r2.infoIconClasses())("libSymphiqTooltip", ctx_r2.getMarkdownTooltipContent(stage_r2.stageMetric.description, ctx_r2.getMetricTitle(stage_r2.stageMetric)));
55122
55135
  } }
55123
55136
  function FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template(rf, ctx) { if (rf & 1) {
55124
55137
  i0.ɵɵelementStart(0, "div")(1, "p", 9);
@@ -55127,127 +55140,145 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template(rf, c
55127
55140
  i0.ɵɵelementStart(3, "p", 11);
55128
55141
  i0.ɵɵtext(4);
55129
55142
  i0.ɵɵelementEnd();
55130
- i0.ɵɵelement(5, "symphiq-pacing-status-badge", 15);
55143
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 20);
55131
55144
  i0.ɵɵelementEnd();
55132
55145
  } if (rf & 2) {
55133
- const stage_r1 = i0.ɵɵnextContext().$implicit;
55134
- const ctx_r1 = i0.ɵɵnextContext();
55146
+ const stage_r2 = i0.ɵɵnextContext().$implicit;
55147
+ const ctx_r2 = i0.ɵɵnextContext();
55135
55148
  i0.ɵɵadvance();
55136
- i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
55149
+ i0.ɵɵproperty("ngClass", ctx_r2.labelClasses());
55137
55150
  i0.ɵɵadvance();
55138
- i0.ɵɵtextInterpolate1(" Pace for ", ctx_r1.currentYear(), " ");
55151
+ i0.ɵɵtextInterpolate1(" Pace for ", ctx_r2.currentYear(), " ");
55139
55152
  i0.ɵɵadvance();
55140
- i0.ɵɵproperty("ngClass", ctx_r1.projectedValueClasses());
55153
+ i0.ɵɵproperty("ngClass", ctx_r2.projectedValueClasses());
55141
55154
  i0.ɵɵadvance();
55142
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(stage_r1.pacingInfo.projectedValue, stage_r1.stageMetric.metric, false), " ");
55155
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(stage_r2.pacingInfo.projectedValue, stage_r2.stageMetric.metric, false), " ");
55143
55156
  i0.ɵɵadvance();
55144
- i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", stage_r1.pacingInfo.pacingPercentage)("status", stage_r1.pacingInfo.status)("showAsFullText", true)("showEmphasizedPercentage", true);
55157
+ i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("pacingPercentage", stage_r2.pacingInfo.pacingPercentage)("status", stage_r2.pacingInfo.status)("showAsFullText", true)("showEmphasizedPercentage", true);
55145
55158
  } }
55146
- function FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55147
- i0.ɵɵelementStart(0, "button", 23);
55159
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55160
+ i0.ɵɵelementStart(0, "button", 28);
55148
55161
  i0.ɵɵnamespaceSVG();
55149
- i0.ɵɵelementStart(1, "svg", 29);
55150
- i0.ɵɵelement(2, "path", 14);
55162
+ i0.ɵɵelementStart(1, "svg", 36);
55163
+ i0.ɵɵelement(2, "path", 19);
55151
55164
  i0.ɵɵelementEnd()();
55152
55165
  } if (rf & 2) {
55153
- const metric_r3 = i0.ɵɵnextContext().$implicit;
55154
- const ctx_r1 = i0.ɵɵnextContext(3);
55155
- i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r3.calc.description, ctx_r1.getMetricTitle(metric_r3.calc)));
55166
+ const metric_r5 = i0.ɵɵnextContext().$implicit;
55167
+ const ctx_r2 = i0.ɵɵnextContext(3);
55168
+ i0.ɵɵproperty("ngClass", ctx_r2.infoIconClasses())("libSymphiqTooltip", ctx_r2.getMarkdownTooltipContent(metric_r5.calc.description, ctx_r2.getMetricTitle(metric_r5.calc)));
55156
55169
  } }
55157
- function FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
55158
- i0.ɵɵelementStart(0, "div")(1, "p", 25);
55170
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
55171
+ i0.ɵɵelementStart(0, "div")(1, "p", 30);
55159
55172
  i0.ɵɵtext(2);
55160
55173
  i0.ɵɵelementEnd();
55161
- i0.ɵɵelementStart(3, "p", 27);
55174
+ i0.ɵɵelementStart(3, "p", 32);
55162
55175
  i0.ɵɵtext(4);
55163
55176
  i0.ɵɵelementEnd();
55164
- i0.ɵɵelement(5, "symphiq-pacing-status-badge", 30);
55177
+ i0.ɵɵelement(5, "symphiq-pacing-status-badge", 37);
55165
55178
  i0.ɵɵelementEnd();
55166
55179
  } if (rf & 2) {
55167
- const metric_r3 = i0.ɵɵnextContext().$implicit;
55168
- const ctx_r1 = i0.ɵɵnextContext(3);
55180
+ const metric_r5 = i0.ɵɵnextContext().$implicit;
55181
+ const ctx_r2 = i0.ɵɵnextContext(3);
55169
55182
  i0.ɵɵadvance();
55170
- i0.ɵɵproperty("ngClass", ctx_r1.relatedLabelClasses());
55183
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedLabelClasses());
55171
55184
  i0.ɵɵadvance();
55172
- i0.ɵɵtextInterpolate1(" Pace for ", ctx_r1.currentYear(), " ");
55185
+ i0.ɵɵtextInterpolate1(" Pace for ", ctx_r2.currentYear(), " ");
55173
55186
  i0.ɵɵadvance();
55174
- i0.ɵɵproperty("ngClass", ctx_r1.relatedProjectedValueClasses());
55187
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedProjectedValueClasses());
55175
55188
  i0.ɵɵadvance();
55176
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(metric_r3.pacingInfo.projectedValue, metric_r3.calc.metric, false), " ");
55189
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(metric_r5.pacingInfo.projectedValue, metric_r5.calc.metric, false), " ");
55177
55190
  i0.ɵɵadvance();
55178
- i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", metric_r3.pacingInfo.pacingPercentage)("status", metric_r3.pacingInfo.status)("showAsFullText", true)("isCompact", true)("showEmphasizedPercentage", true);
55191
+ i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("pacingPercentage", metric_r5.pacingInfo.pacingPercentage)("status", metric_r5.pacingInfo.status)("showAsFullText", true)("isCompact", true)("showEmphasizedPercentage", true);
55179
55192
  } }
55180
- function FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Template(rf, ctx) { if (rf & 1) {
55181
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 21)(2, "p", 22);
55193
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Template(rf, ctx) { if (rf & 1) {
55194
+ const _r4 = i0.ɵɵgetCurrentView();
55195
+ i0.ɵɵelementStart(0, "div", 25)(1, "div", 26)(2, "p", 27);
55182
55196
  i0.ɵɵtext(3);
55183
55197
  i0.ɵɵelementEnd();
55184
- i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_4_Template, 3, 2, "button", 23);
55198
+ i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_4_Template, 3, 2, "button", 28);
55185
55199
  i0.ɵɵelementEnd();
55186
- i0.ɵɵelementStart(5, "div", 24)(6, "div")(7, "p", 25);
55200
+ i0.ɵɵelementStart(5, "div", 29)(6, "div")(7, "p", 30);
55187
55201
  i0.ɵɵtext(8);
55188
55202
  i0.ɵɵelementEnd();
55189
- i0.ɵɵelementStart(9, "p", 26);
55203
+ i0.ɵɵelementStart(9, "p", 31);
55190
55204
  i0.ɵɵtext(10);
55191
55205
  i0.ɵɵelementEnd()();
55192
- i0.ɵɵelementStart(11, "div")(12, "p", 25);
55206
+ i0.ɵɵelementStart(11, "div")(12, "p", 30);
55193
55207
  i0.ɵɵtext(13);
55194
55208
  i0.ɵɵelementEnd();
55195
- i0.ɵɵelementStart(14, "p", 27);
55209
+ i0.ɵɵelementStart(14, "p", 32);
55196
55210
  i0.ɵɵtext(15);
55197
55211
  i0.ɵɵelementEnd();
55198
- i0.ɵɵelement(16, "symphiq-target-change-badge", 28);
55212
+ i0.ɵɵelement(16, "symphiq-target-change-badge", 33);
55199
55213
  i0.ɵɵelementEnd();
55200
- i0.ɵɵconditionalCreate(17, FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Conditional_17_Template, 6, 10, "div");
55201
- i0.ɵɵelementEnd()();
55214
+ i0.ɵɵconditionalCreate(17, FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_17_Template, 6, 10, "div");
55215
+ i0.ɵɵelementEnd();
55216
+ i0.ɵɵelementStart(18, "div", 34)(19, "button", 35);
55217
+ i0.ɵɵlistener("click", function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Template_button_click_19_listener() { const metric_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onViewRelatedMetricReport(metric_r5.calc.metric)); });
55218
+ i0.ɵɵnamespaceSVG();
55219
+ i0.ɵɵelementStart(20, "svg", 15);
55220
+ i0.ɵɵelement(21, "path", 16);
55221
+ i0.ɵɵelementEnd();
55222
+ i0.ɵɵnamespaceHTML();
55223
+ i0.ɵɵelementStart(22, "span", 17);
55224
+ i0.ɵɵtext(23, "View Report");
55225
+ i0.ɵɵelementEnd();
55226
+ i0.ɵɵelementStart(24, "span", 18);
55227
+ i0.ɵɵtext(25, "Report");
55228
+ i0.ɵɵelementEnd()()()();
55202
55229
  } if (rf & 2) {
55203
- const metric_r3 = ctx.$implicit;
55204
- const ctx_r1 = i0.ɵɵnextContext(3);
55205
- i0.ɵɵproperty("ngClass", ctx_r1.relatedMetricCardClasses());
55230
+ const metric_r5 = ctx.$implicit;
55231
+ const ctx_r2 = i0.ɵɵnextContext(3);
55232
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedMetricCardClasses());
55206
55233
  i0.ɵɵadvance(2);
55207
- i0.ɵɵproperty("ngClass", ctx_r1.relatedMetricNameClasses());
55234
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedMetricNameClasses());
55208
55235
  i0.ɵɵadvance();
55209
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getMetricTitle(metric_r3.calc), " ");
55236
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.getMetricTitle(metric_r5.calc), " ");
55210
55237
  i0.ɵɵadvance();
55211
- i0.ɵɵconditional(metric_r3.calc.description ? 4 : -1);
55238
+ i0.ɵɵconditional(metric_r5.calc.description ? 4 : -1);
55212
55239
  i0.ɵɵadvance(3);
55213
- i0.ɵɵproperty("ngClass", ctx_r1.relatedLabelClasses());
55240
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedLabelClasses());
55214
55241
  i0.ɵɵadvance();
55215
- i0.ɵɵtextInterpolate1(" ", ctx_r1.priorYear(), " Actual ");
55242
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.priorYear(), " Actual ");
55216
55243
  i0.ɵɵadvance();
55217
- i0.ɵɵproperty("ngClass", ctx_r1.relatedValueClasses());
55244
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedValueClasses());
55218
55245
  i0.ɵɵadvance();
55219
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(metric_r3.calc.currentValue, metric_r3.calc.metric), " ");
55246
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(metric_r5.calc.currentValue, metric_r5.calc.metric), " ");
55220
55247
  i0.ɵɵadvance(2);
55221
- i0.ɵɵproperty("ngClass", ctx_r1.relatedLabelClasses());
55248
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedLabelClasses());
55249
+ i0.ɵɵadvance();
55250
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.currentYear(), " Target ");
55222
55251
  i0.ɵɵadvance();
55223
- i0.ɵɵtextInterpolate1(" ", ctx_r1.currentYear(), " Target ");
55252
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedTargetValueClasses());
55224
55253
  i0.ɵɵadvance();
55225
- i0.ɵɵproperty("ngClass", ctx_r1.relatedTargetValueClasses());
55254
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(metric_r5.calc.targetValue, metric_r5.calc.metric, false), " ");
55226
55255
  i0.ɵɵadvance();
55227
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(metric_r3.calc.targetValue, metric_r3.calc.metric, false), " ");
55256
+ i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("percentageChange", metric_r5.calc.percentageIncrease)("metric", metric_r5.calc.metric)("priorYear", ctx_r2.priorYear())("isCompact", true);
55228
55257
  i0.ɵɵadvance();
55229
- i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", metric_r3.calc.percentageIncrease)("metric", metric_r3.calc.metric)("priorYear", ctx_r1.priorYear())("isCompact", true);
55258
+ i0.ɵɵconditional(metric_r5.pacingInfo ? 17 : -1);
55230
55259
  i0.ɵɵadvance();
55231
- i0.ɵɵconditional(metric_r3.pacingInfo ? 17 : -1);
55260
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedActionBarClasses());
55261
+ i0.ɵɵadvance();
55262
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedActionButtonClasses());
55232
55263
  } }
55233
- function FunnelMetricsVisualizationComponent_For_4_Conditional_20_Template(rf, ctx) { if (rf & 1) {
55234
- i0.ɵɵelement(0, "div", 16);
55235
- i0.ɵɵelementStart(1, "div", 17)(2, "p", 18);
55264
+ function FunnelMetricsVisualizationComponent_For_4_Conditional_28_Template(rf, ctx) { if (rf & 1) {
55265
+ i0.ɵɵelement(0, "div", 21);
55266
+ i0.ɵɵelementStart(1, "div", 22)(2, "p", 23);
55236
55267
  i0.ɵɵtext(3, " Related Metrics ");
55237
55268
  i0.ɵɵelementEnd();
55238
- i0.ɵɵelementStart(4, "div", 19);
55239
- i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_20_For_6_Template, 18, 18, "div", 20, _forTrack1$3);
55269
+ i0.ɵɵelementStart(4, "div", 24);
55270
+ i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Template, 26, 20, "div", 25, _forTrack1$3);
55240
55271
  i0.ɵɵelementEnd()();
55241
55272
  } if (rf & 2) {
55242
- const stage_r1 = i0.ɵɵnextContext().$implicit;
55243
- const ctx_r1 = i0.ɵɵnextContext();
55244
- i0.ɵɵproperty("ngClass", ctx_r1.dividerClasses());
55273
+ const stage_r2 = i0.ɵɵnextContext().$implicit;
55274
+ const ctx_r2 = i0.ɵɵnextContext();
55245
55275
  i0.ɵɵadvance(2);
55246
- i0.ɵɵproperty("ngClass", ctx_r1.relatedTitleClasses());
55276
+ i0.ɵɵproperty("ngClass", ctx_r2.relatedTitleClasses());
55247
55277
  i0.ɵɵadvance(3);
55248
- i0.ɵɵrepeater(stage_r1.relatedMetrics);
55278
+ i0.ɵɵrepeater(stage_r2.relatedMetrics);
55249
55279
  } }
55250
55280
  function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf & 1) {
55281
+ const _r1 = i0.ɵɵgetCurrentView();
55251
55282
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "h3", 6);
55252
55283
  i0.ɵɵtext(5);
55253
55284
  i0.ɵɵelementEnd();
@@ -55269,46 +55300,65 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
55269
55300
  i0.ɵɵelementEnd();
55270
55301
  i0.ɵɵconditionalCreate(19, FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template, 6, 9, "div");
55271
55302
  i0.ɵɵelementEnd();
55272
- i0.ɵɵconditionalCreate(20, FunnelMetricsVisualizationComponent_For_4_Conditional_20_Template, 7, 2);
55303
+ i0.ɵɵelementStart(20, "div", 13)(21, "button", 14);
55304
+ i0.ɵɵlistener("click", function FunnelMetricsVisualizationComponent_For_4_Template_button_click_21_listener() { const stage_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onViewStageReport(stage_r2.stageMetric.metric)); });
55305
+ i0.ɵɵnamespaceSVG();
55306
+ i0.ɵɵelementStart(22, "svg", 15);
55307
+ i0.ɵɵelement(23, "path", 16);
55308
+ i0.ɵɵelementEnd();
55309
+ i0.ɵɵnamespaceHTML();
55310
+ i0.ɵɵelementStart(24, "span", 17);
55311
+ i0.ɵɵtext(25, "View Report");
55312
+ i0.ɵɵelementEnd();
55313
+ i0.ɵɵelementStart(26, "span", 18);
55314
+ i0.ɵɵtext(27, "Report");
55315
+ i0.ɵɵelementEnd()()();
55316
+ i0.ɵɵconditionalCreate(28, FunnelMetricsVisualizationComponent_For_4_Conditional_28_Template, 7, 1);
55273
55317
  i0.ɵɵelementEnd();
55274
55318
  } if (rf & 2) {
55275
- const stage_r1 = ctx.$implicit;
55276
- const ctx_r1 = i0.ɵɵnextContext();
55277
- i0.ɵɵproperty("ngClass", ctx_r1.stageCardClasses());
55319
+ const stage_r2 = ctx.$implicit;
55320
+ const ctx_r2 = i0.ɵɵnextContext();
55321
+ i0.ɵɵproperty("ngClass", ctx_r2.stageCardClasses());
55278
55322
  i0.ɵɵadvance(4);
55279
- i0.ɵɵproperty("ngClass", ctx_r1.stageTitleClasses());
55323
+ i0.ɵɵproperty("ngClass", ctx_r2.stageTitleClasses());
55280
55324
  i0.ɵɵadvance();
55281
- i0.ɵɵtextInterpolate1(" ", ctx_r1.getMetricTitle(stage_r1.stageMetric), " ");
55325
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.getMetricTitle(stage_r2.stageMetric), " ");
55282
55326
  i0.ɵɵadvance();
55283
- i0.ɵɵconditional(stage_r1.stageMetric.description ? 6 : -1);
55327
+ i0.ɵɵconditional(stage_r2.stageMetric.description ? 6 : -1);
55284
55328
  i0.ɵɵadvance(3);
55285
- i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
55329
+ i0.ɵɵproperty("ngClass", ctx_r2.labelClasses());
55286
55330
  i0.ɵɵadvance();
55287
- i0.ɵɵtextInterpolate1(" ", ctx_r1.priorYear(), " Actual ");
55331
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.priorYear(), " Actual ");
55288
55332
  i0.ɵɵadvance();
55289
- i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
55333
+ i0.ɵɵproperty("ngClass", ctx_r2.valueClasses());
55290
55334
  i0.ɵɵadvance();
55291
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(stage_r1.stageMetric.currentValue, stage_r1.stageMetric.metric), " ");
55335
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(stage_r2.stageMetric.currentValue, stage_r2.stageMetric.metric), " ");
55292
55336
  i0.ɵɵadvance(2);
55293
- i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
55337
+ i0.ɵɵproperty("ngClass", ctx_r2.labelClasses());
55294
55338
  i0.ɵɵadvance();
55295
- i0.ɵɵtextInterpolate1(" ", ctx_r1.currentYear(), " Target ");
55339
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.currentYear(), " Target ");
55296
55340
  i0.ɵɵadvance();
55297
- i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
55341
+ i0.ɵɵproperty("ngClass", ctx_r2.targetValueClasses());
55298
55342
  i0.ɵɵadvance();
55299
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(stage_r1.stageMetric.targetValue, stage_r1.stageMetric.metric, false), " ");
55343
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(stage_r2.stageMetric.targetValue, stage_r2.stageMetric.metric, false), " ");
55300
55344
  i0.ɵɵadvance();
55301
- i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", stage_r1.stageMetric.percentageIncrease)("metric", stage_r1.stageMetric.metric)("priorYear", ctx_r1.priorYear());
55345
+ i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("percentageChange", stage_r2.stageMetric.percentageIncrease)("metric", stage_r2.stageMetric.metric)("priorYear", ctx_r2.priorYear());
55302
55346
  i0.ɵɵadvance();
55303
- i0.ɵɵconditional(stage_r1.pacingInfo ? 19 : -1);
55347
+ i0.ɵɵconditional(stage_r2.pacingInfo ? 19 : -1);
55304
55348
  i0.ɵɵadvance();
55305
- i0.ɵɵconditional(stage_r1.relatedMetrics.length > 0 ? 20 : -1);
55349
+ i0.ɵɵproperty("ngClass", ctx_r2.stageActionBarClasses());
55350
+ i0.ɵɵadvance();
55351
+ i0.ɵɵproperty("ngClass", ctx_r2.actionButtonClasses());
55352
+ i0.ɵɵadvance(7);
55353
+ i0.ɵɵconditional(stage_r2.relatedMetrics.length > 0 ? 28 : -1);
55306
55354
  } }
55307
55355
  class FunnelMetricsVisualizationComponent {
55308
55356
  constructor() {
55309
55357
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
55310
55358
  this.calculations = input([], ...(ngDevMode ? [{ debugName: "calculations" }] : []));
55311
55359
  this.pacingMetrics = input(undefined, ...(ngDevMode ? [{ debugName: "pacingMetrics" }] : []));
55360
+ this.viewStageReport = output();
55361
+ this.viewRelatedMetricReport = output();
55312
55362
  this.Math = Math;
55313
55363
  this.currentYear = computed(() => new Date().getFullYear(), ...(ngDevMode ? [{ debugName: "currentYear" }] : []));
55314
55364
  this.priorYear = computed(() => new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
@@ -55450,12 +55500,38 @@ class FunnelMetricsVisualizationComponent {
55450
55500
  getMarkdownTooltipContent(markdown, title) {
55451
55501
  return { title, markdown };
55452
55502
  }
55503
+ stageActionBarClasses() {
55504
+ return this.viewMode() === ViewModeEnum.DARK
55505
+ ? 'border-purple-500/20'
55506
+ : 'border-purple-200/50';
55507
+ }
55508
+ actionButtonClasses() {
55509
+ return this.viewMode() === ViewModeEnum.DARK
55510
+ ? 'bg-purple-500/20 text-purple-300 hover:bg-purple-500/30 hover:text-purple-200 border border-purple-400/30 hover:border-purple-400/50'
55511
+ : 'bg-purple-50 text-purple-700 hover:bg-purple-100 hover:text-purple-800 border border-purple-200 hover:border-purple-300';
55512
+ }
55513
+ relatedActionBarClasses() {
55514
+ return this.viewMode() === ViewModeEnum.DARK
55515
+ ? 'border-slate-700/50'
55516
+ : 'border-slate-200';
55517
+ }
55518
+ relatedActionButtonClasses() {
55519
+ return this.viewMode() === ViewModeEnum.DARK
55520
+ ? 'bg-slate-700/50 text-slate-300 hover:bg-slate-600/50 hover:text-slate-200 border border-slate-600/50 hover:border-slate-500/50'
55521
+ : 'bg-slate-50 text-slate-700 hover:bg-slate-100 hover:text-slate-800 border border-slate-200 hover:border-slate-300';
55522
+ }
55523
+ onViewStageReport(metric) {
55524
+ this.viewStageReport.emit(metric);
55525
+ }
55526
+ onViewRelatedMetricReport(metric) {
55527
+ this.viewRelatedMetricReport.emit(metric);
55528
+ }
55453
55529
  static { this.ɵfac = function FunnelMetricsVisualizationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FunnelMetricsVisualizationComponent)(); }; }
55454
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelMetricsVisualizationComponent, selectors: [["symphiq-funnel-metrics-visualization"]], inputs: { viewMode: [1, "viewMode"], calculations: [1, "calculations"], pacingMetrics: [1, "pacingMetrics"] }, decls: 5, vars: 0, consts: [[1, "space-y-6"], [1, "space-y-8"], [1, "rounded-xl", "p-6", "border-2", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "mb-6"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "sm:text-xl", "font-bold", "leading-tight", "m-0", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-6", "h-6", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "showEmphasizedPercentage"], [1, "my-4", 3, "ngClass"], [1, "space-y-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-3"], [1, "p-4", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "mb-4"], [1, "text-sm", "sm:text-base", "font-semibold", "leading-tight", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-5", "h-5", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "text-lg", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
55530
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelMetricsVisualizationComponent, selectors: [["symphiq-funnel-metrics-visualization"]], inputs: { viewMode: [1, "viewMode"], calculations: [1, "calculations"], pacingMetrics: [1, "pacingMetrics"] }, outputs: { viewStageReport: "viewStageReport", viewRelatedMetricReport: "viewRelatedMetricReport" }, decls: 5, vars: 0, consts: [[1, "space-y-6"], [1, "space-y-8"], [1, "rounded-xl", "p-6", "border-2", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "mb-6"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "sm:text-xl", "font-bold", "leading-tight", "m-0", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-6", "h-6", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear"], [1, "mt-4", "pt-6", "border-t", "flex", "justify-start", 3, "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-4", "py-2.5", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"], [1, "hidden", "sm:inline"], [1, "sm:hidden"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "showEmphasizedPercentage"], [1, "my-4"], [1, "space-y-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-3"], [1, "p-4", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "mb-4"], [1, "text-sm", "sm:text-base", "font-semibold", "leading-tight", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-5", "h-5", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "text-lg", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "mt-3", "pt-6", "border-t", "flex", "justify-start", 3, "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-3", "py-2", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
55455
55531
  i0.ɵɵelementStart(0, "div", 0);
55456
55532
  i0.ɵɵelement(1, "symphiq-tooltip-container");
55457
55533
  i0.ɵɵelementStart(2, "div", 1);
55458
- i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 21, 18, "div", 2, _forTrack0$i);
55534
+ i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 29, 20, "div", 2, _forTrack0$i);
55459
55535
  i0.ɵɵelementEnd()();
55460
55536
  } if (rf & 2) {
55461
55537
  i0.ɵɵadvance(3);
@@ -55540,8 +55616,22 @@ class FunnelMetricsVisualizationComponent {
55540
55616
  }
55541
55617
  </div>
55542
55618
 
55619
+ <div [ngClass]="stageActionBarClasses()" class="mt-4 pt-6 border-t flex justify-start">
55620
+ <button
55621
+ type="button"
55622
+ (click)="onViewStageReport(stage.stageMetric.metric)"
55623
+ [ngClass]="actionButtonClasses()"
55624
+ class="inline-flex items-center gap-2 px-4 py-2.5 rounded-lg font-medium text-sm transition-all duration-200">
55625
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55626
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
55627
+ </svg>
55628
+ <span class="hidden sm:inline">View Report</span>
55629
+ <span class="sm:hidden">Report</span>
55630
+ </button>
55631
+ </div>
55632
+
55543
55633
  @if (stage.relatedMetrics.length > 0) {
55544
- <div [ngClass]="dividerClasses()" class="my-4"></div>
55634
+ <div class="my-4"></div>
55545
55635
 
55546
55636
  <div class="space-y-3">
55547
55637
  <p [ngClass]="relatedTitleClasses()" class="text-xs font-semibold uppercase tracking-wider mb-3">
@@ -55611,6 +55701,20 @@ class FunnelMetricsVisualizationComponent {
55611
55701
  </div>
55612
55702
  }
55613
55703
  </div>
55704
+
55705
+ <div [ngClass]="relatedActionBarClasses()" class="mt-3 pt-6 border-t flex justify-start">
55706
+ <button
55707
+ type="button"
55708
+ (click)="onViewRelatedMetricReport(metric.calc.metric)"
55709
+ [ngClass]="relatedActionButtonClasses()"
55710
+ class="inline-flex items-center gap-2 px-3 py-2 rounded-lg font-medium text-sm transition-all duration-200">
55711
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55712
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
55713
+ </svg>
55714
+ <span class="hidden sm:inline">View Report</span>
55715
+ <span class="sm:hidden">Report</span>
55716
+ </button>
55717
+ </div>
55614
55718
  </div>
55615
55719
  }
55616
55720
  </div>
@@ -55622,8 +55726,8 @@ class FunnelMetricsVisualizationComponent {
55622
55726
  </div>
55623
55727
  `
55624
55728
  }]
55625
- }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], calculations: [{ type: i0.Input, args: [{ isSignal: true, alias: "calculations", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }] }); })();
55626
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber: 170 }); })();
55729
+ }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], calculations: [{ type: i0.Input, args: [{ isSignal: true, alias: "calculations", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], viewStageReport: [{ type: i0.Output, args: ["viewStageReport"] }], viewRelatedMetricReport: [{ type: i0.Output, args: ["viewRelatedMetricReport"] }] }); })();
55730
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber: 198 }); })();
55627
55731
 
55628
55732
  function StickySubmitBarComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
55629
55733
  i0.ɵɵelementStart(0, "div", 4);