@eric-emg/symphiq-components 1.2.245 → 1.2.247

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.
@@ -56705,7 +56705,8 @@ class LineChartComponent {
56705
56705
  // Check for explicit keywords
56706
56706
  if (name.includes('last year') ||
56707
56707
  name.includes('prior year') ||
56708
- name.includes('previous year')) {
56708
+ name.includes('previous year') ||
56709
+ name.includes('comparison')) {
56709
56710
  return true;
56710
56711
  }
56711
56712
  // Check for year patterns - extract any 4-digit year and compare to current year
@@ -56716,6 +56717,13 @@ class LineChartComponent {
56716
56717
  }
56717
56718
  return false;
56718
56719
  }
56720
+ isProjectionSeries(seriesData) {
56721
+ if (!seriesData || !seriesData.name) {
56722
+ return false;
56723
+ }
56724
+ const name = seriesData.name.toLowerCase();
56725
+ return name.includes('projection') || name.includes('projected') || name.includes('target');
56726
+ }
56719
56727
  extractMetricName(seriesName) {
56720
56728
  // Extract metric name from series name by removing year patterns
56721
56729
  // e.g., "Purchase Revenue (2025)" -> "Purchase Revenue"
@@ -56916,6 +56924,8 @@ class LineChartComponent {
56916
56924
  const seriesColor = color(seriesColorValue);
56917
56925
  // Check if this is a prior year series for YoY charts
56918
56926
  const isPriorYear = isYoYChart && this.isPriorYearSeries(seriesData);
56927
+ const isProjection = this.isProjectionSeries(seriesData);
56928
+ console.log('[LineChart] Series:', seriesData.name, { isPriorYear, isProjection, isYoYChart, dataPoints: parsedData.length });
56919
56929
  if (!this.chartElement || !this.root)
56920
56930
  return;
56921
56931
  const series = this.chartElement.series.push(LineSeries.new(this.root, {
@@ -56927,23 +56937,32 @@ class LineChartComponent {
56927
56937
  stroke: seriesColor
56928
56938
  }));
56929
56939
  // Store valueFormat and prior year flag in userData for tooltip formatting
56930
- series.set('userData', { valueFormat: seriesData.valueFormat, isPriorYear });
56940
+ series.set('userData', { valueFormat: seriesData.valueFormat, isPriorYear, isProjection });
56931
56941
  // Disable individual series tooltips - use floating tooltip instead
56932
56942
  series.set('tooltip', undefined);
56933
- // Configure stroke styling based on whether it's a prior year series
56943
+ // Configure stroke styling based on series type
56934
56944
  series.strokes.template.setAll({
56935
- strokeWidth: 2
56945
+ strokeWidth: isPriorYear ? 2 : 3
56936
56946
  });
56937
56947
  if (isPriorYear) {
56938
56948
  // Apply dashed line and reduced opacity for prior year data
56939
56949
  series.strokes.template.setAll({
56940
56950
  strokeDasharray: [5, 5],
56941
- strokeOpacity: 0.4
56951
+ strokeOpacity: 0.5
56942
56952
  });
56943
- // Also set on each individual stroke
56944
56953
  series.strokes.each((stroke) => {
56945
56954
  stroke.set('strokeDasharray', [5, 5]);
56946
- stroke.set('strokeOpacity', 0.4);
56955
+ stroke.set('strokeOpacity', 0.5);
56956
+ });
56957
+ }
56958
+ else if (isProjection) {
56959
+ // Apply dotted line for projection data
56960
+ series.strokes.template.setAll({
56961
+ strokeDasharray: [10, 5],
56962
+ strokeWidth: 3
56963
+ });
56964
+ series.strokes.each((stroke) => {
56965
+ stroke.set('strokeDasharray', [10, 5]);
56947
56966
  });
56948
56967
  }
56949
56968
  // Add bullets with larger hit area for better hover detection
@@ -56953,7 +56972,7 @@ class LineChartComponent {
56953
56972
  fill: seriesColor
56954
56973
  };
56955
56974
  if (isPriorYear) {
56956
- bulletConfig['fillOpacity'] = 0.4;
56975
+ bulletConfig['fillOpacity'] = 0.5;
56957
56976
  }
56958
56977
  if (!this.root)
56959
56978
  return Bullet.new({}, { sprite: Circle.new({}, {}) });
@@ -57058,12 +57077,13 @@ class ProgressToTargetChartComponent {
57058
57077
  pinchZoomX: false,
57059
57078
  pinchZoomY: false,
57060
57079
  layout: this.root.verticalLayout,
57061
- paddingTop: 20,
57080
+ paddingTop: 30,
57062
57081
  paddingBottom: 0,
57063
57082
  paddingLeft: 0,
57064
57083
  paddingRight: 0
57065
57084
  }));
57066
57085
  this.chart.zoomOutButton.set('forceHidden', true);
57086
+ this.chart.plotContainer.set('maskContent', false);
57067
57087
  const xRenderer = AxisRendererX.new(this.root, {
57068
57088
  strokeOpacity: 0.1
57069
57089
  });
@@ -57106,7 +57126,7 @@ class ProgressToTargetChartComponent {
57106
57126
  }
57107
57127
  ];
57108
57128
  this.yAxis.data.setAll(categoryDataItems);
57109
- const paceColors = this.getPaceColors();
57129
+ const paceColors = this.getPaceColors(status);
57110
57130
  const currentColors = this.getCurrentColors(status);
57111
57131
  const paceSeries = this.chart.series.push(ColumnSeries.new(this.root, {
57112
57132
  name: 'Pace',
@@ -57219,11 +57239,25 @@ class ProgressToTargetChartComponent {
57219
57239
  }
57220
57240
  return max * 1.1;
57221
57241
  }
57222
- getPaceColors() {
57223
- return {
57224
- color1: color(0x0BA5EC),
57225
- color2: color(0x0284C7)
57226
- };
57242
+ getPaceColors(status) {
57243
+ switch (status) {
57244
+ case 'ahead':
57245
+ return {
57246
+ color1: color(0x17B26A),
57247
+ color2: color(0x10b981)
57248
+ };
57249
+ case 'on-pace':
57250
+ return {
57251
+ color1: color(0x0BA5EC),
57252
+ color2: color(0x0284C7)
57253
+ };
57254
+ case 'behind':
57255
+ default:
57256
+ return {
57257
+ color1: color(0xF04438),
57258
+ color2: color(0xdc2626)
57259
+ };
57260
+ }
57227
57261
  }
57228
57262
  getCurrentColors(status) {
57229
57263
  switch (status) {
@@ -57251,7 +57285,7 @@ class ProgressToTargetChartComponent {
57251
57285
  } if (rf & 2) {
57252
57286
  let _t;
57253
57287
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartDiv = _t.first);
57254
- } }, inputs: { data: [1, "data"], viewMode: [1, "viewMode"] }, decls: 3, vars: 0, consts: [["chartdiv", ""], [1, "progress-chart-container"], [1, "chart", 2, "width", "100%", "height", "120px"]], template: function ProgressToTargetChartComponent_Template(rf, ctx) { if (rf & 1) {
57288
+ } }, inputs: { data: [1, "data"], viewMode: [1, "viewMode"] }, decls: 3, vars: 0, consts: [["chartdiv", ""], [1, "progress-chart-container"], [1, "chart", 2, "width", "100%", "height", "160px"]], template: function ProgressToTargetChartComponent_Template(rf, ctx) { if (rf & 1) {
57255
57289
  i0.ɵɵdomElementStart(0, "div", 1);
57256
57290
  i0.ɵɵdomElement(1, "div", 2, 0);
57257
57291
  i0.ɵɵdomElementEnd();
@@ -57261,7 +57295,7 @@ class ProgressToTargetChartComponent {
57261
57295
  type: Component,
57262
57296
  args: [{ selector: 'symphiq-progress-to-target-chart', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
57263
57297
  <div class="progress-chart-container">
57264
- <div #chartdiv class="chart" style="width: 100%; height: 120px;"></div>
57298
+ <div #chartdiv class="chart" style="width: 100%; height: 160px;"></div>
57265
57299
  </div>
57266
57300
  `, styles: [".progress-chart-container{width:100%}\n"] }]
57267
57301
  }], () => [], { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], chartDiv: [{
@@ -57318,14 +57352,7 @@ function MetricReportModalComponent_Conditional_0_Conditional_64_Template(rf, ct
57318
57352
  i0.ɵɵelementStart(2, "div", 25)(3, "p", 28);
57319
57353
  i0.ɵɵtext(4);
57320
57354
  i0.ɵɵelementEnd()();
57321
- i0.ɵɵelementStart(5, "div", 35)(6, "div", 36)(7, "span");
57322
- i0.ɵɵtext(8, "Progress to Target");
57323
- i0.ɵɵelementEnd();
57324
- i0.ɵɵelementStart(9, "span");
57325
- i0.ɵɵtext(10);
57326
- i0.ɵɵelementEnd()();
57327
- i0.ɵɵelement(11, "symphiq-progress-to-target-chart", 37);
57328
- i0.ɵɵelementEnd();
57355
+ i0.ɵɵelement(5, "symphiq-progress-to-target-chart", 35);
57329
57356
  } if (rf & 2) {
57330
57357
  const ctx_r1 = i0.ɵɵnextContext(2);
57331
57358
  i0.ɵɵadvance();
@@ -57334,17 +57361,13 @@ function MetricReportModalComponent_Conditional_0_Conditional_64_Template(rf, ct
57334
57361
  i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
57335
57362
  i0.ɵɵadvance();
57336
57363
  i0.ɵɵtextInterpolate1(" ", ctx_r1.gapAnalysisText(), " ");
57337
- i0.ɵɵadvance(2);
57338
- i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
57339
- i0.ɵɵadvance(4);
57340
- i0.ɵɵtextInterpolate(ctx_r1.formatPercentage(ctx_r1.progressToTarget(), 1));
57341
57364
  i0.ɵɵadvance();
57342
57365
  i0.ɵɵproperty("data", ctx_r1.progressToTargetData())("viewMode", ctx_r1.viewMode());
57343
57366
  } }
57344
57367
  function MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
57345
- i0.ɵɵelementStart(0, "button", 47);
57368
+ i0.ɵɵelementStart(0, "button", 45);
57346
57369
  i0.ɵɵnamespaceSVG();
57347
- i0.ɵɵelementStart(1, "svg", 53);
57370
+ i0.ɵɵelementStart(1, "svg", 51);
57348
57371
  i0.ɵɵelement(2, "path", 33);
57349
57372
  i0.ɵɵelementEnd()();
57350
57373
  } if (rf & 2) {
@@ -57353,20 +57376,20 @@ function MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditio
57353
57376
  i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r3.description, ctx_r1.getMetricTitle(metric_r3)));
57354
57377
  } }
57355
57378
  function MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Template(rf, ctx) { if (rf & 1) {
57356
- i0.ɵɵelementStart(0, "tr", 43)(1, "td", 44)(2, "div", 45)(3, "span", 46);
57379
+ i0.ɵɵelementStart(0, "tr", 41)(1, "td", 42)(2, "div", 43)(3, "span", 44);
57357
57380
  i0.ɵɵtext(4);
57358
57381
  i0.ɵɵelementEnd();
57359
- i0.ɵɵconditionalCreate(5, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditional_5_Template, 3, 2, "button", 47);
57382
+ i0.ɵɵconditionalCreate(5, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditional_5_Template, 3, 2, "button", 45);
57360
57383
  i0.ɵɵelementEnd()();
57361
- i0.ɵɵelementStart(6, "td", 48)(7, "span", 49);
57384
+ i0.ɵɵelementStart(6, "td", 46)(7, "span", 47);
57362
57385
  i0.ɵɵtext(8);
57363
57386
  i0.ɵɵelementEnd()();
57364
- i0.ɵɵelementStart(9, "td", 48)(10, "div", 50)(11, "span", 46);
57387
+ i0.ɵɵelementStart(9, "td", 46)(10, "div", 48)(11, "span", 44);
57365
57388
  i0.ɵɵtext(12);
57366
57389
  i0.ɵɵelementEnd();
57367
57390
  i0.ɵɵnamespaceSVG();
57368
- i0.ɵɵelementStart(13, "svg", 51);
57369
- i0.ɵɵelement(14, "path", 52);
57391
+ i0.ɵɵelementStart(13, "svg", 49);
57392
+ i0.ɵɵelement(14, "path", 50);
57370
57393
  i0.ɵɵelementEnd()()()();
57371
57394
  } if (rf & 2) {
57372
57395
  const metric_r3 = ctx.$implicit;
@@ -57389,17 +57412,17 @@ function MetricReportModalComponent_Conditional_0_Conditional_65_Template(rf, ct
57389
57412
  i0.ɵɵelementStart(0, "div", 16)(1, "h4", 17);
57390
57413
  i0.ɵɵtext(2, " Contributing Metrics ");
57391
57414
  i0.ɵɵelementEnd();
57392
- i0.ɵɵelementStart(3, "div", 38)(4, "table", 39)(5, "thead")(6, "tr", 40)(7, "th", 41);
57415
+ i0.ɵɵelementStart(3, "div", 36)(4, "table", 37)(5, "thead")(6, "tr", 38)(7, "th", 39);
57393
57416
  i0.ɵɵtext(8, "Metric");
57394
57417
  i0.ɵɵelementEnd();
57395
- i0.ɵɵelementStart(9, "th", 42);
57418
+ i0.ɵɵelementStart(9, "th", 40);
57396
57419
  i0.ɵɵtext(10, "Target");
57397
57420
  i0.ɵɵelementEnd();
57398
- i0.ɵɵelementStart(11, "th", 42);
57421
+ i0.ɵɵelementStart(11, "th", 40);
57399
57422
  i0.ɵɵtext(12, "Improve by");
57400
57423
  i0.ɵɵelementEnd()()();
57401
57424
  i0.ɵɵelementStart(13, "tbody");
57402
- i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Template, 15, 7, "tr", 43, _forTrack0$i);
57425
+ i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Template, 15, 7, "tr", 41, _forTrack0$i);
57403
57426
  i0.ɵɵelementEnd()()()();
57404
57427
  } if (rf & 2) {
57405
57428
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -57415,10 +57438,10 @@ function MetricReportModalComponent_Conditional_0_Conditional_66_Template(rf, ct
57415
57438
  i0.ɵɵelementStart(0, "div", 29)(1, "h4", 17);
57416
57439
  i0.ɵɵtext(2, " Pace ");
57417
57440
  i0.ɵɵelementEnd();
57418
- i0.ɵɵelementStart(3, "div", 54);
57419
- i0.ɵɵelement(4, "symphiq-line-chart", 55);
57441
+ i0.ɵɵelementStart(3, "div", 52);
57442
+ i0.ɵɵelement(4, "symphiq-line-chart", 53);
57420
57443
  i0.ɵɵelementEnd();
57421
- i0.ɵɵelementStart(5, "p", 56);
57444
+ i0.ɵɵelementStart(5, "p", 54);
57422
57445
  i0.ɵɵtext(6);
57423
57446
  i0.ɵɵelementEnd()();
57424
57447
  } if (rf & 2) {
@@ -57512,7 +57535,7 @@ function MetricReportModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
57512
57535
  i0.ɵɵelementStart(62, "p", 28);
57513
57536
  i0.ɵɵtext(63);
57514
57537
  i0.ɵɵelementEnd()();
57515
- i0.ɵɵconditionalCreate(64, MetricReportModalComponent_Conditional_0_Conditional_64_Template, 12, 12);
57538
+ i0.ɵɵconditionalCreate(64, MetricReportModalComponent_Conditional_0_Conditional_64_Template, 6, 10);
57516
57539
  i0.ɵɵelementEnd();
57517
57540
  i0.ɵɵconditionalCreate(65, MetricReportModalComponent_Conditional_0_Conditional_65_Template, 16, 3, "div", 16);
57518
57541
  i0.ɵɵconditionalCreate(66, MetricReportModalComponent_Conditional_0_Conditional_66_Template, 7, 8, "div", 29);
@@ -57785,6 +57808,11 @@ class MetricReportModalComponent {
57785
57808
  const currentYearData = this.generateCurrentYearData(pacingResponse, metric.metric);
57786
57809
  const priorYearData = this.generatePriorYearData(pacingResponse, metric.metric);
57787
57810
  const projectionData = this.generateProjectionData(pacingResponse, metric.metric);
57811
+ console.log('[PaceChart] Metric:', metric.metric);
57812
+ console.log('[PaceChart] Current Year Data:', currentYearData);
57813
+ console.log('[PaceChart] Prior Year Data:', priorYearData);
57814
+ console.log('[PaceChart] Projection Data:', projectionData);
57815
+ console.log('[PaceChart] Pacing Response:', pacingResponse);
57788
57816
  return {
57789
57817
  chartType: 'LINE',
57790
57818
  title: 'Pace',
@@ -57809,6 +57837,11 @@ class MetricReportModalComponent {
57809
57837
  };
57810
57838
  }, ...(ngDevMode ? [{ debugName: "pacingChartData" }] : []));
57811
57839
  }
57840
+ formatDateForChart(year, month, day) {
57841
+ const m = String(month + 1).padStart(2, '0');
57842
+ const d = String(day).padStart(2, '0');
57843
+ return `${year}-${m}-${d}`;
57844
+ }
57812
57845
  generateCurrentYearData(pacingResponse, metricEnum) {
57813
57846
  const data = [];
57814
57847
  const currentYear = this.currentYear();
@@ -57817,9 +57850,8 @@ class MetricReportModalComponent {
57817
57850
  metricValues.forEach(mv => {
57818
57851
  if (mv.date && mv.value) {
57819
57852
  const originalDate = new Date(mv.date);
57820
- const date = new Date(currentYear, originalDate.getMonth(), 15);
57821
57853
  data.push({
57822
- date: date.toISOString(),
57854
+ date: this.formatDateForChart(currentYear, originalDate.getMonth(), 15),
57823
57855
  value: parseFloat(mv.value)
57824
57856
  });
57825
57857
  }
@@ -57830,10 +57862,9 @@ class MetricReportModalComponent {
57830
57862
  const now = new Date();
57831
57863
  const currentMonth = now.getMonth();
57832
57864
  for (let i = 0; i <= currentMonth; i++) {
57833
- const date = new Date(currentYear, i, 15);
57834
57865
  const value = baseValue * ((i + 1) / 12);
57835
57866
  data.push({
57836
- date: date.toISOString(),
57867
+ date: this.formatDateForChart(currentYear, i, 15),
57837
57868
  value: Math.round(value * 100) / 100
57838
57869
  });
57839
57870
  }
@@ -57848,9 +57879,8 @@ class MetricReportModalComponent {
57848
57879
  metricValues.forEach(mv => {
57849
57880
  if (mv.date && mv.value) {
57850
57881
  const originalDate = new Date(mv.date);
57851
- const date = new Date(currentYear, originalDate.getMonth(), 15);
57852
57882
  data.push({
57853
- date: date.toISOString(),
57883
+ date: this.formatDateForChart(currentYear, originalDate.getMonth(), 15),
57854
57884
  value: parseFloat(mv.value)
57855
57885
  });
57856
57886
  }
@@ -57859,10 +57889,9 @@ class MetricReportModalComponent {
57859
57889
  if (data.length === 0) {
57860
57890
  const baseValue = this.metricData()?.currentValue || 1000;
57861
57891
  for (let i = 0; i < 12; i++) {
57862
- const date = new Date(currentYear, i, 15);
57863
57892
  const value = baseValue * ((i + 1) / 12) * 0.9;
57864
57893
  data.push({
57865
- date: date.toISOString(),
57894
+ date: this.formatDateForChart(currentYear, i, 15),
57866
57895
  value: Math.round(value * 100) / 100
57867
57896
  });
57868
57897
  }
@@ -57877,9 +57906,8 @@ class MetricReportModalComponent {
57877
57906
  metricValues.forEach(mv => {
57878
57907
  if (mv.date && mv.value) {
57879
57908
  const originalDate = new Date(mv.date);
57880
- const date = new Date(currentYear, originalDate.getMonth(), 15);
57881
57909
  data.push({
57882
- date: date.toISOString(),
57910
+ date: this.formatDateForChart(currentYear, originalDate.getMonth(), 15),
57883
57911
  value: parseFloat(mv.value)
57884
57912
  });
57885
57913
  }
@@ -57890,10 +57918,9 @@ class MetricReportModalComponent {
57890
57918
  const now = new Date();
57891
57919
  const currentMonth = now.getMonth();
57892
57920
  for (let i = currentMonth; i < 12; i++) {
57893
- const date = new Date(currentYear, i, 15);
57894
57921
  const value = targetValue * ((i + 1) / 12);
57895
57922
  data.push({
57896
- date: date.toISOString(),
57923
+ date: this.formatDateForChart(currentYear, i, 15),
57897
57924
  value: Math.round(value * 100) / 100
57898
57925
  });
57899
57926
  }
@@ -58044,7 +58071,7 @@ class MetricReportModalComponent {
58044
58071
  : 'bg-slate-700 hover:bg-slate-600 text-white';
58045
58072
  }
58046
58073
  static { this.ɵfac = function MetricReportModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MetricReportModalComponent)(); }; }
58047
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetricReportModalComponent, selectors: [["symphiq-metric-report-modal"]], inputs: { viewMode: [1, "viewMode"], metricEnum: [1, "metricEnum"], metricData: [1, "metricData"], contributingMetrics: [1, "contributingMetrics"], pacingMetrics: [1, "pacingMetrics"], isOpen: [1, "isOpen"] }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "fixed", "inset-0", "overflow-y-auto", "z-50"], [1, "fixed", "inset-0", "overflow-y-auto", "z-50", 3, "click"], [1, "flex", "items-center", "justify-center", "min-h-screen", "px-4", "pt-4", "pb-20", "text-center", "sm:block", "sm:p-0"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-md", 3, "ngClass"], ["aria-hidden", "true", 1, "hidden", "sm:inline-block", "sm:align-middle", "sm:h-screen"], [1, "relative", "inline-block", "align-bottom", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "sm:my-8", "sm:align-middle", "sm:w-full", "sm:max-w-4xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", "sticky", "top-0", "z-10", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex-1"], [1, "flex", "items-center", "gap-3", "mb-2"], [1, "text-xl", "font-bold", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-7", "h-7", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", "self-center", 3, "ngClass", "libSymphiqTooltip"], [1, "ml-4", "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-6", "max-h-[70vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [1, "rounded-xl", "p-6", "mb-6", 3, "ngClass"], [1, "text-sm", "font-semibold", "uppercase", "tracking-wider", "mb-4", 3, "ngClass"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6"], [1, "mb-1.5"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", 3, "ngClass"], [1, "text-xs", 3, "ngClass"], [1, "text-xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-3xl", "font-extrabold", "mb-3", 3, "ngClass"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "rounded-xl", "p-6", 3, "ngClass"], [1, "px-6", "py-4", "border-t", 3, "ngClass"], [1, "w-full", "px-4", "py-2", "rounded-lg", "transition-all", "font-medium", "hover:scale-[1.02]", "active:scale-[0.98]", 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", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"], [1, "space-y-2"], [1, "flex", "justify-between", "text-xs", 3, "ngClass"], [3, "data", "viewMode"], [1, "overflow-x-auto"], [1, "w-full"], [1, "border-b", 3, "ngClass"], [1, "text-left", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "text-right", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "border-b", "transition-colors", 3, "ngClass"], [1, "py-3", "px-4"], [1, "flex", "items-center", "gap-2"], [1, "text-sm", "font-medium"], ["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, "py-3", "px-4", "text-right"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "justify-end", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "text-emerald-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], [1, "min-h-[400px]"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol"], [1, "text-sm", "leading-relaxed", "mt-4", 3, "ngClass"]], template: function MetricReportModalComponent_Template(rf, ctx) { if (rf & 1) {
58074
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetricReportModalComponent, selectors: [["symphiq-metric-report-modal"]], inputs: { viewMode: [1, "viewMode"], metricEnum: [1, "metricEnum"], metricData: [1, "metricData"], contributingMetrics: [1, "contributingMetrics"], pacingMetrics: [1, "pacingMetrics"], isOpen: [1, "isOpen"] }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "fixed", "inset-0", "overflow-y-auto", "z-50"], [1, "fixed", "inset-0", "overflow-y-auto", "z-50", 3, "click"], [1, "flex", "items-center", "justify-center", "min-h-screen", "px-4", "pt-4", "pb-20", "text-center", "sm:block", "sm:p-0"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-md", 3, "ngClass"], ["aria-hidden", "true", 1, "hidden", "sm:inline-block", "sm:align-middle", "sm:h-screen"], [1, "relative", "inline-block", "align-bottom", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "sm:my-8", "sm:align-middle", "sm:w-full", "sm:max-w-4xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", "sticky", "top-0", "z-10", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex-1"], [1, "flex", "items-center", "gap-3", "mb-2"], [1, "text-xl", "font-bold", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-7", "h-7", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", "self-center", 3, "ngClass", "libSymphiqTooltip"], [1, "ml-4", "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-6", "max-h-[70vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [1, "rounded-xl", "p-6", "mb-6", 3, "ngClass"], [1, "text-sm", "font-semibold", "uppercase", "tracking-wider", "mb-4", 3, "ngClass"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6"], [1, "mb-1.5"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", 3, "ngClass"], [1, "text-xs", 3, "ngClass"], [1, "text-xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-3xl", "font-extrabold", "mb-3", 3, "ngClass"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "rounded-xl", "p-6", 3, "ngClass"], [1, "px-6", "py-4", "border-t", 3, "ngClass"], [1, "w-full", "px-4", "py-2", "rounded-lg", "transition-all", "font-medium", "hover:scale-[1.02]", "active:scale-[0.98]", 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", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"], [3, "data", "viewMode"], [1, "overflow-x-auto"], [1, "w-full"], [1, "border-b", 3, "ngClass"], [1, "text-left", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "text-right", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "border-b", "transition-colors", 3, "ngClass"], [1, "py-3", "px-4"], [1, "flex", "items-center", "gap-2"], [1, "text-sm", "font-medium"], ["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, "py-3", "px-4", "text-right"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "justify-end", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "text-emerald-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], [1, "min-h-[400px]"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol"], [1, "text-sm", "leading-relaxed", "mt-4", 3, "ngClass"]], template: function MetricReportModalComponent_Template(rf, ctx) { if (rf & 1) {
58048
58075
  i0.ɵɵconditionalCreate(0, MetricReportModalComponent_Conditional_0_Template, 70, 51, "div", 0);
58049
58076
  } if (rf & 2) {
58050
58077
  i0.ɵɵconditional(ctx.isOpen() ? 0 : -1);
@@ -58287,16 +58314,10 @@ class MetricReportModalComponent {
58287
58314
  </div>
58288
58315
 
58289
58316
  <!-- Progress to Target Chart -->
58290
- <div class="space-y-2">
58291
- <div class="flex justify-between text-xs" [ngClass]="labelClasses()">
58292
- <span>Progress to Target</span>
58293
- <span>{{ formatPercentage(progressToTarget(), 1) }}</span>
58294
- </div>
58295
- <symphiq-progress-to-target-chart
58296
- [data]="progressToTargetData()"
58297
- [viewMode]="viewMode()"
58298
- />
58299
- </div>
58317
+ <symphiq-progress-to-target-chart
58318
+ [data]="progressToTargetData()"
58319
+ [viewMode]="viewMode()"
58320
+ />
58300
58321
  }
58301
58322
  </div>
58302
58323
 
@@ -58404,7 +58425,7 @@ class MetricReportModalComponent {
58404
58425
  `
58405
58426
  }]
58406
58427
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], metricEnum: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricEnum", required: false }] }], metricData: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricData", required: false }] }], contributingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "contributingMetrics", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] }); })();
58407
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricReportModalComponent, { className: "MetricReportModalComponent", filePath: "lib/components/revenue-calculator-dashboard/metric-report-modal.component.ts", lineNumber: 349 }); })();
58428
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricReportModalComponent, { className: "MetricReportModalComponent", filePath: "lib/components/revenue-calculator-dashboard/metric-report-modal.component.ts", lineNumber: 343 }); })();
58408
58429
 
58409
58430
  const _c0$q = ["absoluteInputRef"];
58410
58431
  const _c1$b = ["percentageInputRef"];